diff options
Diffstat (limited to 'src/VBox/Devices/PC/BIOS')
54 files changed, 77366 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..38e4e208 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/Makefile.kmk @@ -0,0 +1,214 @@ +# $Id: Makefile.kmk $ +## @file +# Sub-Makefile for the New BIOS ROM. +# + +# +# Copyright (C) 2012-2022 Oracle and/or its affiliates. +# +# This file is part of VirtualBox base platform packages, as +# available from https://www.virtualbox.org. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation, in version 3 of the +# License. +# +# This program 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see <https://www.gnu.org/licenses>. +# +# SPDX-License-Identifier: GPL-3.0-only +# + +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_WITH_VIRTIO_SCSI \ + 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 \ + virtio.c \ + buslogic.c \ + lsilogic.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)$$(TOOL_YASM_AS) -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)$$(TOOL_YASM_AS) -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..91723be0 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm @@ -0,0 +1,19366 @@ +; $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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: bios.c +; +; $Id: VBoxBiosAlternative286.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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 - ATA disk support. +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: eltorito.c +; +; $Id: VBoxBiosAlternative286.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: timepci.c +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: scsi.c +; +; $Id: VBoxBiosAlternative286.asm $ +; SCSI host adapter driver to boot from SCSI disks +; +; +; +; Copyright (C) 2004-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: ahci.c +; +; $Id: VBoxBiosAlternative286.asm $ +; AHCI host adapter driver to boot from SATA disks. +; +; +; +; Copyright (C) 2011-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: virtio.c +; +; $Id: VBoxBiosAlternative286.asm $ +; VirtIO-SCSI host adapter driver to boot from disks. +; +; +; +; Copyright (C) 2019-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: buslogic.c +; +; $Id: VBoxBiosAlternative286.asm $ +; BusLogic SCSI host adapter driver to boot from disks. +; +; +; +; Copyright (C) 2021-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: lsilogic.c +; +; $Id: VBoxBiosAlternative286.asm $ +; LsiLogic SCSI host adapter driver to boot from disks. +; +; +; +; Copyright (C) 2021-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: apm.c +; +; $Id: VBoxBiosAlternative286.asm $ +; APM BIOS support. Implements APM version 1.2. +; +; +; +; Copyright (C) 2004-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: pcibios.c +; +; $Id: VBoxBiosAlternative286.asm $ +; PCI BIOS support. +; +; +; +; Copyright (C) 2004-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: pciutil.c +; +; $Id: VBoxBiosAlternative286.asm $ +; Utility routines for calling the PCI BIOS. +; +; +; +; Copyright (C) 2011-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: vds.c +; +; $Id: VBoxBiosAlternative286.asm $ +; Utility routines for calling the Virtual DMA Services. +; +; +; +; Copyright (C) 2011-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: __U4M.asm +; +; $Id: VBoxBiosAlternative286.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: __U4D.asm +; +; $Id: VBoxBiosAlternative286.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: __U8RS.asm +; +; $Id: VBoxBiosAlternative286.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: __U8LS.asm +; +; $Id: VBoxBiosAlternative286.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: fmemset.asm +; +; $Id: VBoxBiosAlternative286.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: fmemcpy.asm +; +; $Id: VBoxBiosAlternative286.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: pcibio32.asm +; +; $Id: VBoxBiosAlternative286.asm $ +; BIOS32 service directory and 32-bit PCI BIOS entry point +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- + +; +; Source file: apm_pm.asm +; +; $Id: +; Protected-mode APM implementation. +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: orgs.asm +; +; $Id: VBoxBiosAlternative286.asm $ +; ??? +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: ASMBitLastSetU16.asm +; +; $Id: VBoxBiosAlternative286.asm $ +; BiosCommonCode - ASMBitLastSetU16() - borrowed from IPRT. +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: pci32.c +; +; $Id: VBoxBiosAlternative286.asm $ +; 32-bit PCI BIOS wrapper. +; +; +; +; Copyright (C) 2004-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + + + + +section _DATA progbits vstart=0x0 align=1 ; size=0xe0 class=DATA group=DGROUP + ; disGetNextSymbol 0xf0000 LB 0xe0 -> 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 0x85 -> 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 0x76 -> off=0x0 cb=000000000000000c uValue=00000000000f006a '_pktacc' +_pktacc: ; 0xf006a LB 0xc + db 000h, 000h, 000h, 000h, 000h, 000h, 030h, 02bh, 0c1h, 079h, 096h, 088h + ; disGetNextSymbol 0xf0076 LB 0x6a -> off=0x0 cb=000000000000000c uValue=00000000000f0076 '_softrst' +_softrst: ; 0xf0076 LB 0xc + db 000h, 000h, 000h, 000h, 000h, 000h, 03fh, 02dh, 001h, 03bh, 001h, 03bh + ; disGetNextSymbol 0xf0082 LB 0x5e -> off=0x0 cb=0000000000000018 uValue=00000000000f0082 '_dskacc' +_dskacc: ; 0xf0082 LB 0x18 + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 020h, 02ah, 0d5h, 02ah, 000h, 000h, 000h, 000h + db 0b5h, 077h, 0bbh, 078h, 068h, 087h, 010h, 088h + ; disGetNextSymbol 0xf009a LB 0x46 -> off=0x0 cb=0000000000000046 uValue=00000000000f009a '_hbaacc' +_hbaacc: ; 0xf009a LB 0x46 + db 000h, 010h, 030h, 000h, 003h, 0a3h, 052h, 0a0h, 032h, 0a1h, 000h, 010h, 054h, 000h, 003h, 0a3h + db 052h, 0a0h, 032h, 0a1h, 04bh, 010h, 040h, 010h, 00fh, 09eh, 089h, 09ch, 03bh, 09dh, 0f4h, 01ah + db 048h, 010h, 0eeh, 09ah, 0d5h, 094h, 047h, 096h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h, 032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h + db 0f3h, 000h, 000h, 000h, 000h, 000h + +section CONST progbits vstart=0xe0 align=1 ; size=0xcda class=DATA group=DGROUP + ; disGetNextSymbol 0xf00e0 LB 0xcda -> off=0xcda cb=0000000000000000 uValue=00000000000f0dba 'bios_cvs_version_string' + db 'NMI Handler called', 00ah, 000h + db 'INT18: BOOT FAILURE', 00ah, 000h + db 'Bootfail', 000h + db '%s', 00ah, 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!', 00ah, 000h + db 'Could not read from the boot medium!', 00ah, 000h + db 'Please insert a bootable medium and reboot.', 00ah, 000h + db 'CDROM boot failure code : %04x', 00ah, 000h + db 'Boot : bseqnr=%d, bootseq=%x', 00dh, 00ah, 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_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 + 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=0xdba align=1 ; size=0x3fa class=DATA group=DGROUP + ; disGetNextSymbol 0xf0dba LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0dba 'bios_cvs_version_string' +bios_cvs_version_string: ; 0xf0dba LB 0x12 + db 'VirtualBox 7.0.6', 000h, 000h + ; disGetNextSymbol 0xf0dcc LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0dcc '_bios_prefix_string' +_bios_prefix_string: ; 0xf0dcc LB 0x8 + db 'BIOS: ', 000h, 000h + ; disGetNextSymbol 0xf0dd4 LB 0x3e0 -> off=0x0 cb=0000000000000006 uValue=00000000000f0dd4 'isotag' +isotag: ; 0xf0dd4 LB 0x6 + db 'CD001', 000h + ; disGetNextSymbol 0xf0dda LB 0x3da -> off=0x0 cb=0000000000000018 uValue=00000000000f0dda 'eltorito' +eltorito: ; 0xf0dda LB 0x18 + db 'EL TORITO SPECIFICATION', 000h + ; disGetNextSymbol 0xf0df2 LB 0x3c2 -> off=0x0 cb=0000000000000028 uValue=00000000000f0df2 'drivetypes' +drivetypes: ; 0xf0df2 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 0xf0e1a LB 0x39a -> off=0x0 cb=000000000000037a uValue=00000000000f0e1a 'scan_to_scanascii' +scan_to_scanascii: ; 0xf0e1a 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 0xf1194 LB 0x20 -> off=0x0 cb=0000000000000020 uValue=00000000000f1194 'panic_msg_keyb_buffer_full' +panic_msg_keyb_buffer_full: ; 0xf1194 LB 0x20 + db '%s: keyboard input buffer full', 00ah, 000h + + ; Padding 0x44c bytes at 0xf11b4 + times 1100 db 0 + +section _TEXT progbits vstart=0x1600 align=1 ; size=0x9758 class=CODE group=AUTO + ; disGetNextSymbol 0xf1600 LB 0x9758 -> off=0x0 cb=0000000000000064 uValue=00000000000f0000 'rom_scan' +rom_scan: ; 0xf1600 LB 0x64 + push bp ; 55 ; 0xf1600 post.c:106 + mov bp, sp ; 89 e5 ; 0xf1601 + push bx ; 53 ; 0xf1603 + push cx ; 51 ; 0xf1604 + push si ; 56 ; 0xf1605 + push di ; 57 ; 0xf1606 + sub sp, strict byte 00008h ; 83 ec 08 ; 0xf1607 + push ax ; 50 ; 0xf160a + push dx ; 52 ; 0xf160b + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf160c post.c:113 + cmp ax, word [bp-014h] ; 3b 46 ec ; 0xf160f + jnc short 0165bh ; 73 47 ; 0xf1612 + mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf1614 post.c:114 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1619 + mov es, ax ; 8e c0 ; 0xf161c post.c:116 + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf161e + cmp word [es:bx], 0aa55h ; 26 81 3f 55 aa ; 0xf1621 + jne short 01654h ; 75 2c ; 0xf1626 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1628 post.c:122 + mov word [bp-010h], strict word 00003h ; c7 46 f0 03 00 ; 0xf162b + call far [bp-010h] ; ff 5e f0 ; 0xf1630 post.c:123 + cli ; fa ; 0xf1633 post.c:124 + mov ax, 0f000h ; b8 00 f0 ; 0xf1634 post.c:125 + mov ds, ax ; 8e d8 ; 0xf1637 + les bx, [bp-00ch] ; c4 5e f4 ; 0xf1639 post.c:130 + mov al, byte [es:bx+002h] ; 26 8a 47 02 ; 0xf163c + add AL, strict byte 003h ; 04 03 ; 0xf1640 + and AL, strict byte 0fch ; 24 fc ; 0xf1642 + xor ah, ah ; 30 e4 ; 0xf1644 post.c:131 + cwd ; 99 ; 0xf1646 + sal dx, 002h ; c1 e2 02 ; 0xf1647 + db 01bh, 0c2h + ; sbb ax, dx ; 1b c2 ; 0xf164a + sar ax, 002h ; c1 f8 02 ; 0xf164c + add word [bp-012h], ax ; 01 46 ee ; 0xf164f + jmp short 0160ch ; eb b8 ; 0xf1652 post.c:133 + add word [bp-012h], 00080h ; 81 46 ee 80 00 ; 0xf1654 post.c:135 + jmp short 0160ch ; eb b1 ; 0xf1659 post.c:137 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf165b post.c:138 + pop di ; 5f ; 0xf165e + pop si ; 5e ; 0xf165f + pop cx ; 59 ; 0xf1660 + pop bx ; 5b ; 0xf1661 + pop bp ; 5d ; 0xf1662 + retn ; c3 ; 0xf1663 + ; disGetNextSymbol 0xf1664 LB 0x96f4 -> off=0x0 cb=000000000000001b uValue=00000000000f0064 'inb_cmos' +inb_cmos: ; 0xf1664 LB 0x1b + push bp ; 55 ; 0xf1664 bios.c:76 + mov bp, sp ; 89 e5 ; 0xf1665 + push dx ; 52 ; 0xf1667 + mov AH, strict byte 070h ; b4 70 ; 0xf1668 bios.c:78 + cmp AL, strict byte 080h ; 3c 80 ; 0xf166a bios.c:80 + jc short 01670h ; 72 02 ; 0xf166c + mov AH, strict byte 072h ; b4 72 ; 0xf166e bios.c:81 + mov dl, ah ; 88 e2 ; 0xf1670 bios.c:82 + xor dh, dh ; 30 f6 ; 0xf1672 + out DX, AL ; ee ; 0xf1674 + inc dx ; 42 ; 0xf1675 bios.c:83 + in AL, DX ; ec ; 0xf1676 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1677 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf1679 bios.c:84 + pop dx ; 5a ; 0xf167c + pop bp ; 5d ; 0xf167d + retn ; c3 ; 0xf167e + ; disGetNextSymbol 0xf167f LB 0x96d9 -> off=0x0 cb=000000000000001d uValue=00000000000f007f 'outb_cmos' +outb_cmos: ; 0xf167f LB 0x1d + push bp ; 55 ; 0xf167f bios.c:86 + mov bp, sp ; 89 e5 ; 0xf1680 + push bx ; 53 ; 0xf1682 + mov bl, dl ; 88 d3 ; 0xf1683 + mov AH, strict byte 070h ; b4 70 ; 0xf1685 bios.c:88 + cmp AL, strict byte 080h ; 3c 80 ; 0xf1687 bios.c:90 + jc short 0168dh ; 72 02 ; 0xf1689 + mov AH, strict byte 072h ; b4 72 ; 0xf168b bios.c:91 + mov dl, ah ; 88 e2 ; 0xf168d bios.c:92 + xor dh, dh ; 30 f6 ; 0xf168f + out DX, AL ; ee ; 0xf1691 + inc dx ; 42 ; 0xf1692 bios.c:93 + mov al, bl ; 88 d8 ; 0xf1693 + out DX, AL ; ee ; 0xf1695 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf1696 bios.c:94 + pop bx ; 5b ; 0xf1699 + pop bp ; 5d ; 0xf169a + retn ; c3 ; 0xf169b + ; disGetNextSymbol 0xf169c LB 0x96bc -> off=0x0 cb=0000000000000025 uValue=00000000000f009c 'get_cmos_word' +get_cmos_word: ; 0xf169c LB 0x25 + push bp ; 55 ; 0xf169c bios.c:99 + mov bp, sp ; 89 e5 ; 0xf169d + push bx ; 53 ; 0xf169f + push dx ; 52 ; 0xf16a0 + mov dl, al ; 88 c2 ; 0xf16a1 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf16a3 bios.c:101 + xor ah, ah ; 30 e4 ; 0xf16a5 + call 01664h ; e8 ba ff ; 0xf16a7 + xor ah, ah ; 30 e4 ; 0xf16aa + mov bx, ax ; 89 c3 ; 0xf16ac + sal bx, 008h ; c1 e3 08 ; 0xf16ae + mov al, dl ; 88 d0 ; 0xf16b1 + call 01664h ; e8 ae ff ; 0xf16b3 + xor ah, ah ; 30 e4 ; 0xf16b6 + or ax, bx ; 09 d8 ; 0xf16b8 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf16ba bios.c:103 + pop dx ; 5a ; 0xf16bd + pop bx ; 5b ; 0xf16be + pop bp ; 5d ; 0xf16bf + retn ; c3 ; 0xf16c0 + ; disGetNextSymbol 0xf16c1 LB 0x9697 -> off=0x0 cb=0000000000000061 uValue=00000000000f00c1 'dummy_isr_function' +dummy_isr_function: ; 0xf16c1 LB 0x61 + push bp ; 55 ; 0xf16c1 bios.c:105 + mov bp, sp ; 89 e5 ; 0xf16c2 + push ax ; 50 ; 0xf16c4 + mov CL, strict byte 0ffh ; b1 ff ; 0xf16c5 bios.c:113 + mov AL, strict byte 00bh ; b0 0b ; 0xf16c7 bios.c:115 + mov dx, strict word 00020h ; ba 20 00 ; 0xf16c9 + out DX, AL ; ee ; 0xf16cc + in AL, DX ; ec ; 0xf16cd bios.c:116 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf16ce + mov bx, ax ; 89 c3 ; 0xf16d0 + mov byte [bp-002h], al ; 88 46 fe ; 0xf16d2 + test al, al ; 84 c0 ; 0xf16d5 bios.c:117 + je short 01713h ; 74 3a ; 0xf16d7 + mov AL, strict byte 00bh ; b0 0b ; 0xf16d9 bios.c:118 + mov dx, 000a0h ; ba a0 00 ; 0xf16db + out DX, AL ; ee ; 0xf16de + in AL, DX ; ec ; 0xf16df bios.c:119 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf16e0 + mov cx, ax ; 89 c1 ; 0xf16e2 + test al, al ; 84 c0 ; 0xf16e4 bios.c:120 + je short 016fbh ; 74 13 ; 0xf16e6 + mov dx, 000a1h ; ba a1 00 ; 0xf16e8 bios.c:121 + in AL, DX ; ec ; 0xf16eb + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf16ec + mov bl, cl ; 88 cb ; 0xf16ee bios.c:122 + or al, bl ; 08 d8 ; 0xf16f0 + out DX, AL ; ee ; 0xf16f2 + mov AL, strict byte 020h ; b0 20 ; 0xf16f3 bios.c:123 + mov dx, 000a0h ; ba a0 00 ; 0xf16f5 + out DX, AL ; ee ; 0xf16f8 + jmp short 0170ah ; eb 0f ; 0xf16f9 bios.c:124 + mov dx, strict word 00021h ; ba 21 00 ; 0xf16fb bios.c:125 + in AL, DX ; ec ; 0xf16fe + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf16ff + and bl, 0fbh ; 80 e3 fb ; 0xf1701 bios.c:126 + mov byte [bp-002h], bl ; 88 5e fe ; 0xf1704 + or al, bl ; 08 d8 ; 0xf1707 bios.c:127 + out DX, AL ; ee ; 0xf1709 + mov AL, strict byte 020h ; b0 20 ; 0xf170a bios.c:129 + mov dx, strict word 00020h ; ba 20 00 ; 0xf170c + out DX, AL ; ee ; 0xf170f + mov cl, byte [bp-002h] ; 8a 4e fe ; 0xf1710 bios.c:130 + mov bx, strict word 0006bh ; bb 6b 00 ; 0xf1713 bios.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf1716 + mov es, ax ; 8e c0 ; 0xf1719 + mov byte [es:bx], cl ; 26 88 0f ; 0xf171b + mov sp, bp ; 89 ec ; 0xf171e bios.c:133 + pop bp ; 5d ; 0xf1720 + retn ; c3 ; 0xf1721 + ; disGetNextSymbol 0xf1722 LB 0x9636 -> off=0x0 cb=0000000000000012 uValue=00000000000f0122 'nmi_handler_msg' +nmi_handler_msg: ; 0xf1722 LB 0x12 + push bp ; 55 ; 0xf1722 bios.c:136 + mov bp, sp ; 89 e5 ; 0xf1723 + push 000e0h ; 68 e0 00 ; 0xf1725 bios.c:138 + push strict byte 00007h ; 6a 07 ; 0xf1728 + call 01953h ; e8 26 02 ; 0xf172a + add sp, strict byte 00004h ; 83 c4 04 ; 0xf172d + mov sp, bp ; 89 ec ; 0xf1730 bios.c:139 + pop bp ; 5d ; 0xf1732 + retn ; c3 ; 0xf1733 + ; disGetNextSymbol 0xf1734 LB 0x9624 -> off=0x0 cb=000000000000002d uValue=00000000000f0134 'int18_panic_msg' +int18_panic_msg: ; 0xf1734 LB 0x2d + push bp ; 55 ; 0xf1734 bios.c:141 + mov bp, sp ; 89 e5 ; 0xf1735 + mov bx, 00dcch ; bb cc 0d ; 0xf1737 bios.c:143 + mov cx, ds ; 8c d9 ; 0xf173a + mov ax, strict word 00004h ; b8 04 00 ; 0xf173c + call 01910h ; e8 ce 01 ; 0xf173f + push 000f4h ; 68 f4 00 ; 0xf1742 + push strict byte 00004h ; 6a 04 ; 0xf1745 + call 01953h ; e8 09 02 ; 0xf1747 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf174a + mov bx, 00109h ; bb 09 01 ; 0xf174d bios.c:144 + mov dx, 0040fh ; ba 0f 04 ; 0xf1750 + mov al, byte [bx] ; 8a 07 ; 0xf1753 + out DX, AL ; ee ; 0xf1755 + inc bx ; 43 ; 0xf1756 + mov al, byte [bx] ; 8a 07 ; 0xf1757 + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xf1759 + jne short 01755h ; 75 f8 ; 0xf175b + mov sp, bp ; 89 ec ; 0xf175d bios.c:145 + pop bp ; 5d ; 0xf175f + retn ; c3 ; 0xf1760 + ; disGetNextSymbol 0xf1761 LB 0x95f7 -> off=0x0 cb=0000000000000020 uValue=00000000000f0161 'log_bios_start' +log_bios_start: ; 0xf1761 LB 0x20 + push bp ; 55 ; 0xf1761 bios.c:147 + mov bp, sp ; 89 e5 ; 0xf1762 + mov bx, 00dcch ; bb cc 0d ; 0xf1764 bios.c:152 + mov cx, ds ; 8c d9 ; 0xf1767 + mov ax, strict word 00004h ; b8 04 00 ; 0xf1769 + call 01910h ; e8 a1 01 ; 0xf176c + push 00dbah ; 68 ba 0d ; 0xf176f + push 00112h ; 68 12 01 ; 0xf1772 + push strict byte 00004h ; 6a 04 ; 0xf1775 + call 01953h ; e8 d9 01 ; 0xf1777 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf177a + mov sp, bp ; 89 ec ; 0xf177d bios.c:153 + pop bp ; 5d ; 0xf177f + retn ; c3 ; 0xf1780 + ; disGetNextSymbol 0xf1781 LB 0x95d7 -> off=0x0 cb=0000000000000027 uValue=00000000000f0181 'print_bios_banner' +print_bios_banner: ; 0xf1781 LB 0x27 + push bp ; 55 ; 0xf1781 bios.c:172 + mov bp, sp ; 89 e5 ; 0xf1782 + mov bx, strict word 00072h ; bb 72 00 ; 0xf1784 bios.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf1787 + mov es, ax ; 8e c0 ; 0xf178a + mov ax, word [es:bx] ; 26 8b 07 ; 0xf178c + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf178f bios.c:63 + cmp ax, 01234h ; 3d 34 12 ; 0xf1794 bios.c:178 + jne short 017a1h ; 75 08 ; 0xf1797 + mov AL, strict byte 003h ; b0 03 ; 0xf1799 bios.c:181 + mov AH, strict byte 000h ; b4 00 ; 0xf179b + int 010h ; cd 10 ; 0xf179d + jmp short 017a4h ; eb 03 ; 0xf179f bios.c:182 + call 074beh ; e8 1a 5d ; 0xf17a1 bios.c:185 + mov sp, bp ; 89 ec ; 0xf17a4 bios.c:212 + pop bp ; 5d ; 0xf17a6 + retn ; c3 ; 0xf17a7 + ; disGetNextSymbol 0xf17a8 LB 0x95b0 -> off=0x0 cb=000000000000003b uValue=00000000000f01a8 'send' +send: ; 0xf17a8 LB 0x3b + push bp ; 55 ; 0xf17a8 print.c:82 + mov bp, sp ; 89 e5 ; 0xf17a9 + push bx ; 53 ; 0xf17ab + push cx ; 51 ; 0xf17ac + mov bx, ax ; 89 c3 ; 0xf17ad + mov cl, dl ; 88 d1 ; 0xf17af + test AL, strict byte 008h ; a8 08 ; 0xf17b1 print.c:90 + je short 017bbh ; 74 06 ; 0xf17b3 + mov al, dl ; 88 d0 ; 0xf17b5 print.c:91 + mov dx, 00403h ; ba 03 04 ; 0xf17b7 + out DX, AL ; ee ; 0xf17ba + test bl, 004h ; f6 c3 04 ; 0xf17bb print.c:92 + je short 017c6h ; 74 06 ; 0xf17be + mov al, cl ; 88 c8 ; 0xf17c0 print.c:93 + mov dx, 00504h ; ba 04 05 ; 0xf17c2 + out DX, AL ; ee ; 0xf17c5 + test bl, 002h ; f6 c3 02 ; 0xf17c6 print.c:95 + je short 017dch ; 74 11 ; 0xf17c9 + cmp cl, 00ah ; 80 f9 0a ; 0xf17cb print.c:96 + jne short 017d6h ; 75 06 ; 0xf17ce + mov AL, strict byte 00dh ; b0 0d ; 0xf17d0 print.c:97 + mov AH, strict byte 00eh ; b4 0e ; 0xf17d2 + int 010h ; cd 10 ; 0xf17d4 + mov al, cl ; 88 c8 ; 0xf17d6 print.c:98 + mov AH, strict byte 00eh ; b4 0e ; 0xf17d8 + int 010h ; cd 10 ; 0xf17da + lea sp, [bp-004h] ; 8d 66 fc ; 0xf17dc print.c:100 + pop cx ; 59 ; 0xf17df + pop bx ; 5b ; 0xf17e0 + pop bp ; 5d ; 0xf17e1 + retn ; c3 ; 0xf17e2 + ; disGetNextSymbol 0xf17e3 LB 0x9575 -> off=0x0 cb=000000000000005f uValue=00000000000f01e3 'put_int' +put_int: ; 0xf17e3 LB 0x5f + push bp ; 55 ; 0xf17e3 print.c:102 + mov bp, sp ; 89 e5 ; 0xf17e4 + push si ; 56 ; 0xf17e6 + push di ; 57 ; 0xf17e7 + push ax ; 50 ; 0xf17e8 + push ax ; 50 ; 0xf17e9 + mov si, ax ; 89 c6 ; 0xf17ea + mov word [bp-008h], dx ; 89 56 f8 ; 0xf17ec + mov di, strict word 0000ah ; bf 0a 00 ; 0xf17ef print.c:104 + mov ax, dx ; 89 d0 ; 0xf17f2 + cwd ; 99 ; 0xf17f4 + idiv di ; f7 ff ; 0xf17f5 + mov word [bp-006h], ax ; 89 46 fa ; 0xf17f7 + test ax, ax ; 85 c0 ; 0xf17fa print.c:105 + je short 01808h ; 74 0a ; 0xf17fc + dec bx ; 4b ; 0xf17fe print.c:106 + mov dx, ax ; 89 c2 ; 0xf17ff + mov ax, si ; 89 f0 ; 0xf1801 + call 017e3h ; e8 dd ff ; 0xf1803 + jmp short 01823h ; eb 1b ; 0xf1806 print.c:107 + dec bx ; 4b ; 0xf1808 print.c:108 + test bx, bx ; 85 db ; 0xf1809 + jle short 01817h ; 7e 0a ; 0xf180b + mov dx, strict word 00020h ; ba 20 00 ; 0xf180d print.c:109 + mov ax, si ; 89 f0 ; 0xf1810 + call 017a8h ; e8 93 ff ; 0xf1812 + jmp short 01808h ; eb f1 ; 0xf1815 + test cx, cx ; 85 c9 ; 0xf1817 print.c:110 + je short 01823h ; 74 08 ; 0xf1819 + mov dx, strict word 0002dh ; ba 2d 00 ; 0xf181b print.c:111 + mov ax, si ; 89 f0 ; 0xf181e + call 017a8h ; e8 85 ff ; 0xf1820 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1823 print.c:113 + mov BL, strict byte 00ah ; b3 0a ; 0xf1826 + mul bl ; f6 e3 ; 0xf1828 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf182a + sub bl, al ; 28 c3 ; 0xf182d + add bl, 030h ; 80 c3 30 ; 0xf182f + xor bh, bh ; 30 ff ; 0xf1832 + mov dx, bx ; 89 da ; 0xf1834 + mov ax, si ; 89 f0 ; 0xf1836 + call 017a8h ; e8 6d ff ; 0xf1838 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf183b print.c:114 + pop di ; 5f ; 0xf183e + pop si ; 5e ; 0xf183f + pop bp ; 5d ; 0xf1840 + retn ; c3 ; 0xf1841 + ; disGetNextSymbol 0xf1842 LB 0x9516 -> off=0x0 cb=000000000000005e uValue=00000000000f0242 'put_uint' +put_uint: ; 0xf1842 LB 0x5e + push bp ; 55 ; 0xf1842 print.c:116 + mov bp, sp ; 89 e5 ; 0xf1843 + push si ; 56 ; 0xf1845 + push di ; 57 ; 0xf1846 + push ax ; 50 ; 0xf1847 + push ax ; 50 ; 0xf1848 + mov si, ax ; 89 c6 ; 0xf1849 + mov word [bp-008h], dx ; 89 56 f8 ; 0xf184b + mov ax, dx ; 89 d0 ; 0xf184e print.c:118 + xor dx, dx ; 31 d2 ; 0xf1850 + mov di, strict word 0000ah ; bf 0a 00 ; 0xf1852 + div di ; f7 f7 ; 0xf1855 + mov word [bp-006h], ax ; 89 46 fa ; 0xf1857 + test ax, ax ; 85 c0 ; 0xf185a print.c:119 + je short 01868h ; 74 0a ; 0xf185c + dec bx ; 4b ; 0xf185e print.c:120 + mov dx, ax ; 89 c2 ; 0xf185f + mov ax, si ; 89 f0 ; 0xf1861 + call 01842h ; e8 dc ff ; 0xf1863 + jmp short 01883h ; eb 1b ; 0xf1866 print.c:121 + dec bx ; 4b ; 0xf1868 print.c:122 + test bx, bx ; 85 db ; 0xf1869 + jle short 01877h ; 7e 0a ; 0xf186b + mov dx, strict word 00020h ; ba 20 00 ; 0xf186d print.c:123 + mov ax, si ; 89 f0 ; 0xf1870 + call 017a8h ; e8 33 ff ; 0xf1872 + jmp short 01868h ; eb f1 ; 0xf1875 + test cx, cx ; 85 c9 ; 0xf1877 print.c:124 + je short 01883h ; 74 08 ; 0xf1879 + mov dx, strict word 0002dh ; ba 2d 00 ; 0xf187b print.c:125 + mov ax, si ; 89 f0 ; 0xf187e + call 017a8h ; e8 25 ff ; 0xf1880 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1883 print.c:127 + mov DL, strict byte 00ah ; b2 0a ; 0xf1886 + mul dl ; f6 e2 ; 0xf1888 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf188a + sub dl, al ; 28 c2 ; 0xf188d + add dl, 030h ; 80 c2 30 ; 0xf188f + xor dh, dh ; 30 f6 ; 0xf1892 + mov ax, si ; 89 f0 ; 0xf1894 + call 017a8h ; e8 0f ff ; 0xf1896 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf1899 print.c:128 + pop di ; 5f ; 0xf189c + pop si ; 5e ; 0xf189d + pop bp ; 5d ; 0xf189e + retn ; c3 ; 0xf189f + ; disGetNextSymbol 0xf18a0 LB 0x94b8 -> off=0x0 cb=0000000000000070 uValue=00000000000f02a0 'put_luint' +put_luint: ; 0xf18a0 LB 0x70 + push bp ; 55 ; 0xf18a0 print.c:130 + mov bp, sp ; 89 e5 ; 0xf18a1 + push si ; 56 ; 0xf18a3 + push di ; 57 ; 0xf18a4 + push ax ; 50 ; 0xf18a5 + push ax ; 50 ; 0xf18a6 + mov si, ax ; 89 c6 ; 0xf18a7 + mov word [bp-006h], bx ; 89 5e fa ; 0xf18a9 + mov di, dx ; 89 d7 ; 0xf18ac + mov ax, bx ; 89 d8 ; 0xf18ae print.c:132 + mov dx, cx ; 89 ca ; 0xf18b0 + mov bx, strict word 0000ah ; bb 0a 00 ; 0xf18b2 + xor cx, cx ; 31 c9 ; 0xf18b5 + call 0a9e0h ; e8 26 91 ; 0xf18b7 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf18ba + mov cx, dx ; 89 d1 ; 0xf18bd + mov dx, ax ; 89 c2 ; 0xf18bf print.c:133 + or dx, cx ; 09 ca ; 0xf18c1 + je short 018d4h ; 74 0f ; 0xf18c3 + push word [bp+004h] ; ff 76 04 ; 0xf18c5 print.c:134 + lea dx, [di-001h] ; 8d 55 ff ; 0xf18c8 + mov bx, ax ; 89 c3 ; 0xf18cb + mov ax, si ; 89 f0 ; 0xf18cd + call 018a0h ; e8 ce ff ; 0xf18cf + jmp short 018f1h ; eb 1d ; 0xf18d2 print.c:135 + dec di ; 4f ; 0xf18d4 print.c:136 + test di, di ; 85 ff ; 0xf18d5 + jle short 018e3h ; 7e 0a ; 0xf18d7 + mov dx, strict word 00020h ; ba 20 00 ; 0xf18d9 print.c:137 + mov ax, si ; 89 f0 ; 0xf18dc + call 017a8h ; e8 c7 fe ; 0xf18de + jmp short 018d4h ; eb f1 ; 0xf18e1 + cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xf18e3 print.c:138 + je short 018f1h ; 74 08 ; 0xf18e7 + mov dx, strict word 0002dh ; ba 2d 00 ; 0xf18e9 print.c:139 + mov ax, si ; 89 f0 ; 0xf18ec + call 017a8h ; e8 b7 fe ; 0xf18ee + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf18f1 print.c:141 + mov DL, strict byte 00ah ; b2 0a ; 0xf18f4 + mul dl ; f6 e2 ; 0xf18f6 + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf18f8 + sub dl, al ; 28 c2 ; 0xf18fb + add dl, 030h ; 80 c2 30 ; 0xf18fd + xor dh, dh ; 30 f6 ; 0xf1900 + mov ax, si ; 89 f0 ; 0xf1902 + call 017a8h ; e8 a1 fe ; 0xf1904 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf1907 print.c:142 + pop di ; 5f ; 0xf190a + pop si ; 5e ; 0xf190b + pop bp ; 5d ; 0xf190c + retn 00002h ; c2 02 00 ; 0xf190d + ; disGetNextSymbol 0xf1910 LB 0x9448 -> off=0x0 cb=0000000000000021 uValue=00000000000f0310 'put_str' +put_str: ; 0xf1910 LB 0x21 + push bp ; 55 ; 0xf1910 print.c:144 + mov bp, sp ; 89 e5 ; 0xf1911 + push dx ; 52 ; 0xf1913 + push si ; 56 ; 0xf1914 + mov si, ax ; 89 c6 ; 0xf1915 + mov es, cx ; 8e c1 ; 0xf1917 print.c:148 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf1919 + test dl, dl ; 84 d2 ; 0xf191c + je short 0192ah ; 74 0a ; 0xf191e + xor dh, dh ; 30 f6 ; 0xf1920 print.c:149 + mov ax, si ; 89 f0 ; 0xf1922 + call 017a8h ; e8 81 fe ; 0xf1924 + inc bx ; 43 ; 0xf1927 print.c:150 + jmp short 01917h ; eb ed ; 0xf1928 print.c:151 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf192a print.c:152 + pop si ; 5e ; 0xf192d + pop dx ; 5a ; 0xf192e + pop bp ; 5d ; 0xf192f + retn ; c3 ; 0xf1930 + ; disGetNextSymbol 0xf1931 LB 0x9427 -> off=0x0 cb=0000000000000022 uValue=00000000000f0331 'put_str_near' +put_str_near: ; 0xf1931 LB 0x22 + push bp ; 55 ; 0xf1931 print.c:154 + mov bp, sp ; 89 e5 ; 0xf1932 + push bx ; 53 ; 0xf1934 + push cx ; 51 ; 0xf1935 + mov cx, ax ; 89 c1 ; 0xf1936 + mov bx, dx ; 89 d3 ; 0xf1938 + mov al, byte [bx] ; 8a 07 ; 0xf193a print.c:158 + test al, al ; 84 c0 ; 0xf193c + je short 0194ch ; 74 0c ; 0xf193e + xor ah, ah ; 30 e4 ; 0xf1940 print.c:159 + mov dx, ax ; 89 c2 ; 0xf1942 + mov ax, cx ; 89 c8 ; 0xf1944 + call 017a8h ; e8 5f fe ; 0xf1946 + inc bx ; 43 ; 0xf1949 print.c:160 + jmp short 0193ah ; eb ee ; 0xf194a print.c:161 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf194c print.c:162 + pop cx ; 59 ; 0xf194f + pop bx ; 5b ; 0xf1950 + pop bp ; 5d ; 0xf1951 + retn ; c3 ; 0xf1952 + ; disGetNextSymbol 0xf1953 LB 0x9405 -> off=0x0 cb=0000000000000339 uValue=00000000000f0353 'bios_printf' +bios_printf: ; 0xf1953 LB 0x339 + push bp ; 55 ; 0xf1953 print.c:175 + mov bp, sp ; 89 e5 ; 0xf1954 + push bx ; 53 ; 0xf1956 + push cx ; 51 ; 0xf1957 + push dx ; 52 ; 0xf1958 + push si ; 56 ; 0xf1959 + push di ; 57 ; 0xf195a + sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf195b + lea bx, [bp+008h] ; 8d 5e 08 ; 0xf195e print.c:183 + mov word [bp-016h], bx ; 89 5e ea ; 0xf1961 + mov [bp-014h], ss ; 8c 56 ec ; 0xf1964 + xor cx, cx ; 31 c9 ; 0xf1967 print.c:185 + xor di, di ; 31 ff ; 0xf1969 print.c:186 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf196b print.c:188 + and ax, strict word 00007h ; 25 07 00 ; 0xf196e + cmp ax, strict word 00007h ; 3d 07 00 ; 0xf1971 + jne short 01981h ; 75 0b ; 0xf1974 + push 00116h ; 68 16 01 ; 0xf1976 print.c:189 + push strict byte 00002h ; 6a 02 ; 0xf1979 + call 01953h ; e8 d5 ff ; 0xf197b + add sp, strict byte 00004h ; 83 c4 04 ; 0xf197e + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1981 print.c:192 + mov dl, byte [bx] ; 8a 17 ; 0xf1984 + test dl, dl ; 84 d2 ; 0xf1986 + je short 019e5h ; 74 5b ; 0xf1988 + cmp dl, 025h ; 80 fa 25 ; 0xf198a print.c:193 + jne short 01997h ; 75 08 ; 0xf198d + mov cx, strict word 00001h ; b9 01 00 ; 0xf198f print.c:194 + xor di, di ; 31 ff ; 0xf1992 print.c:195 + jmp near 01c6ah ; e9 d3 02 ; 0xf1994 print.c:197 + test cx, cx ; 85 c9 ; 0xf1997 + je short 019e8h ; 74 4d ; 0xf1999 + cmp dl, 030h ; 80 fa 30 ; 0xf199b print.c:198 + jc short 019b4h ; 72 14 ; 0xf199e + cmp dl, 039h ; 80 fa 39 ; 0xf19a0 + jnbe short 019b4h ; 77 0f ; 0xf19a3 + mov al, dl ; 88 d0 ; 0xf19a5 print.c:199 + xor ah, ah ; 30 e4 ; 0xf19a7 + imul di, di, strict byte 0000ah ; 6b ff 0a ; 0xf19a9 + sub ax, strict word 00030h ; 2d 30 00 ; 0xf19ac + add di, ax ; 01 c7 ; 0xf19af + jmp near 01c6ah ; e9 b6 02 ; 0xf19b1 print.c:201 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf19b4 print.c:202 + mov word [bp-014h], ax ; 89 46 ec ; 0xf19b7 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf19ba + les bx, [bp-016h] ; c4 5e ea ; 0xf19be + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf19c1 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf19c5 + cmp dl, 078h ; 80 fa 78 ; 0xf19c8 print.c:203 + je short 019d2h ; 74 05 ; 0xf19cb + cmp dl, 058h ; 80 fa 58 ; 0xf19cd + jne short 01a2ch ; 75 5a ; 0xf19d0 + test di, di ; 85 ff ; 0xf19d2 print.c:204 + jne short 019d9h ; 75 03 ; 0xf19d4 + mov di, strict word 00004h ; bf 04 00 ; 0xf19d6 print.c:205 + cmp dl, 078h ; 80 fa 78 ; 0xf19d9 print.c:206 + jne short 019ebh ; 75 0d ; 0xf19dc + mov word [bp-012h], strict word 00061h ; c7 46 ee 61 00 ; 0xf19de print.c:207 + jmp short 019f0h ; eb 0b ; 0xf19e3 print.c:208 + jmp near 01c70h ; e9 88 02 ; 0xf19e5 + jmp near 01c62h ; e9 77 02 ; 0xf19e8 + mov word [bp-012h], strict word 00041h ; c7 46 ee 41 00 ; 0xf19eb print.c:209 + lea ax, [di-001h] ; 8d 45 ff ; 0xf19f0 print.c:210 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf19f3 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf19f6 + test ax, ax ; 85 c0 ; 0xf19f9 + jl short 01a3dh ; 7c 40 ; 0xf19fb + mov cx, ax ; 89 c1 ; 0xf19fd print.c:211 + sal cx, 002h ; c1 e1 02 ; 0xf19ff + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1a02 + shr ax, CL ; d3 e8 ; 0xf1a05 + xor ah, ah ; 30 e4 ; 0xf1a07 + and AL, strict byte 00fh ; 24 0f ; 0xf1a09 + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1a0b print.c:212 + jnbe short 01a17h ; 77 07 ; 0xf1a0e + mov dx, ax ; 89 c2 ; 0xf1a10 + add dx, strict byte 00030h ; 83 c2 30 ; 0xf1a12 + jmp short 01a1fh ; eb 08 ; 0xf1a15 + sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1a17 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1a1a + add dx, ax ; 01 c2 ; 0xf1a1d + xor dh, dh ; 30 f6 ; 0xf1a1f + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1a21 + call 017a8h ; e8 81 fd ; 0xf1a24 + dec word [bp-00ch] ; ff 4e f4 ; 0xf1a27 print.c:213 + jmp short 019f6h ; eb ca ; 0xf1a2a + cmp dl, 075h ; 80 fa 75 ; 0xf1a2c print.c:215 + jne short 01a40h ; 75 0f ; 0xf1a2f + xor cx, cx ; 31 c9 ; 0xf1a31 print.c:216 + mov bx, di ; 89 fb ; 0xf1a33 + mov dx, ax ; 89 c2 ; 0xf1a35 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1a37 + call 01842h ; e8 05 fe ; 0xf1a3a + jmp near 01c5eh ; e9 1e 02 ; 0xf1a3d print.c:218 + cmp dl, 06ch ; 80 fa 6c ; 0xf1a40 + jne short 01a4dh ; 75 08 ; 0xf1a43 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1a45 + cmp dl, byte [bx+001h] ; 3a 57 01 ; 0xf1a48 + je short 01a50h ; 74 03 ; 0xf1a4b + jmp near 01b21h ; e9 d1 00 ; 0xf1a4d + add word [bp+006h], strict byte 00002h ; 83 46 06 02 ; 0xf1a50 print.c:222 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1a54 print.c:223 + mov dl, byte [bx] ; 8a 17 ; 0xf1a57 + mov word [bp-026h], ax ; 89 46 da ; 0xf1a59 print.c:225 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a5c print.c:226 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1a5f + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a62 + les bx, [bp-016h] ; c4 5e ea ; 0xf1a66 + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a69 + mov word [bp-024h], ax ; 89 46 dc ; 0xf1a6d + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a70 print.c:227 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1a73 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a76 + les bx, [bp-016h] ; c4 5e ea ; 0xf1a7a + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a7d + mov word [bp-022h], ax ; 89 46 de ; 0xf1a81 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a84 print.c:228 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1a87 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a8a + les bx, [bp-016h] ; c4 5e ea ; 0xf1a8e + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a91 + mov word [bp-020h], ax ; 89 46 e0 ; 0xf1a95 + cmp dl, 078h ; 80 fa 78 ; 0xf1a98 print.c:229 + je short 01aa2h ; 74 05 ; 0xf1a9b + cmp dl, 058h ; 80 fa 58 ; 0xf1a9d + jne short 01afch ; 75 5a ; 0xf1aa0 + test di, di ; 85 ff ; 0xf1aa2 print.c:230 + jne short 01aa9h ; 75 03 ; 0xf1aa4 + mov di, strict word 00010h ; bf 10 00 ; 0xf1aa6 print.c:231 + cmp dl, 078h ; 80 fa 78 ; 0xf1aa9 print.c:232 + jne short 01ab5h ; 75 07 ; 0xf1aac + mov word [bp-012h], strict word 00061h ; c7 46 ee 61 00 ; 0xf1aae print.c:233 + jmp short 01abah ; eb 05 ; 0xf1ab3 print.c:234 + mov word [bp-012h], strict word 00041h ; c7 46 ee 41 00 ; 0xf1ab5 print.c:235 + lea ax, [di-001h] ; 8d 45 ff ; 0xf1aba print.c:236 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1abd + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1ac0 + test ax, ax ; 85 c0 ; 0xf1ac3 + jl short 01b1eh ; 7c 57 ; 0xf1ac5 + sal ax, 002h ; c1 e0 02 ; 0xf1ac7 print.c:237 + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf1aca + xor ax, ax ; 31 c0 ; 0xf1acd + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf1acf + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf1ad2 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf1ad5 + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf1ad8 + mov bx, word [bp-022h] ; 8b 5e de ; 0xf1adb + mov cx, word [bp-024h] ; 8b 4e dc ; 0xf1ade + mov dx, word [bp-026h] ; 8b 56 da ; 0xf1ae1 + mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf1ae4 + call 0aa10h ; e8 26 8f ; 0xf1ae7 + mov ax, dx ; 89 d0 ; 0xf1aea + xor ah, dh ; 30 f4 ; 0xf1aec + and AL, strict byte 00fh ; 24 0f ; 0xf1aee + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1af0 print.c:238 + jnbe short 01afeh ; 77 09 ; 0xf1af3 + mov dx, ax ; 89 c2 ; 0xf1af5 + add dx, strict byte 00030h ; 83 c2 30 ; 0xf1af7 + jmp short 01b06h ; eb 0a ; 0xf1afa + jmp short 01b13h ; eb 15 ; 0xf1afc + sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1afe + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1b01 + add dx, ax ; 01 c2 ; 0xf1b04 + xor dh, dh ; 30 f6 ; 0xf1b06 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b08 + call 017a8h ; e8 9a fc ; 0xf1b0b + dec word [bp-00ch] ; ff 4e f4 ; 0xf1b0e print.c:239 + jmp short 01ac0h ; eb ad ; 0xf1b11 + push 0011eh ; 68 1e 01 ; 0xf1b13 print.c:241 + push strict byte 00007h ; 6a 07 ; 0xf1b16 + call 01953h ; e8 38 fe ; 0xf1b18 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf1b1b + jmp near 01c5eh ; e9 3d 01 ; 0xf1b1e print.c:244 + lea bx, [di-001h] ; 8d 5d ff ; 0xf1b21 + cmp dl, 06ch ; 80 fa 6c ; 0xf1b24 + jne short 01b7dh ; 75 54 ; 0xf1b27 + inc word [bp+006h] ; ff 46 06 ; 0xf1b29 print.c:245 + mov si, word [bp+006h] ; 8b 76 06 ; 0xf1b2c print.c:246 + mov dl, byte [si] ; 8a 14 ; 0xf1b2f + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b31 print.c:247 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1b34 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b37 + les si, [bp-016h] ; c4 76 ea ; 0xf1b3b + mov ax, word [es:si-002h] ; 26 8b 44 fe ; 0xf1b3e + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1b42 + cmp dl, 064h ; 80 fa 64 ; 0xf1b45 print.c:248 + jne short 01b76h ; 75 2c ; 0xf1b48 + test byte [bp-00dh], 080h ; f6 46 f3 80 ; 0xf1b4a print.c:249 + je short 01b65h ; 74 15 ; 0xf1b4e + push strict byte 00001h ; 6a 01 ; 0xf1b50 print.c:250 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1b52 + mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf1b55 + neg cx ; f7 d9 ; 0xf1b58 + neg ax ; f7 d8 ; 0xf1b5a + sbb cx, strict byte 00000h ; 83 d9 00 ; 0xf1b5c + mov dx, bx ; 89 da ; 0xf1b5f + mov bx, ax ; 89 c3 ; 0xf1b61 + jmp short 01b6eh ; eb 09 ; 0xf1b63 print.c:251 + push strict byte 00000h ; 6a 00 ; 0xf1b65 print.c:252 + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf1b67 + mov dx, di ; 89 fa ; 0xf1b6a + mov cx, ax ; 89 c1 ; 0xf1b6c + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b6e + call 018a0h ; e8 2c fd ; 0xf1b71 + jmp short 01b1eh ; eb a8 ; 0xf1b74 print.c:254 + cmp dl, 075h ; 80 fa 75 ; 0xf1b76 + jne short 01b7fh ; 75 04 ; 0xf1b79 + jmp short 01b65h ; eb e8 ; 0xf1b7b + jmp short 01be5h ; eb 66 ; 0xf1b7d + cmp dl, 078h ; 80 fa 78 ; 0xf1b7f print.c:257 + je short 01b89h ; 74 05 ; 0xf1b82 + cmp dl, 058h ; 80 fa 58 ; 0xf1b84 + jne short 01b1eh ; 75 95 ; 0xf1b87 + test di, di ; 85 ff ; 0xf1b89 print.c:259 + jne short 01b90h ; 75 03 ; 0xf1b8b + mov di, strict word 00008h ; bf 08 00 ; 0xf1b8d print.c:260 + cmp dl, 078h ; 80 fa 78 ; 0xf1b90 print.c:261 + jne short 01b9ch ; 75 07 ; 0xf1b93 + mov word [bp-012h], strict word 00061h ; c7 46 ee 61 00 ; 0xf1b95 print.c:262 + jmp short 01ba1h ; eb 05 ; 0xf1b9a print.c:263 + mov word [bp-012h], strict word 00041h ; c7 46 ee 41 00 ; 0xf1b9c print.c:264 + lea ax, [di-001h] ; 8d 45 ff ; 0xf1ba1 print.c:265 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1ba4 + cmp word [bp-00ch], strict byte 00000h ; 83 7e f4 00 ; 0xf1ba7 + jl short 01c07h ; 7c 5a ; 0xf1bab + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1bad print.c:266 + mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf1bb0 + sal cx, 002h ; c1 e1 02 ; 0xf1bb3 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1bb6 + jcxz 01bc1h ; e3 06 ; 0xf1bb9 + shr dx, 1 ; d1 ea ; 0xf1bbb + rcr ax, 1 ; d1 d8 ; 0xf1bbd + loop 01bbbh ; e2 fa ; 0xf1bbf + and ax, strict word 0000fh ; 25 0f 00 ; 0xf1bc1 + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1bc4 print.c:267 + jnbe short 01bd0h ; 77 07 ; 0xf1bc7 + mov dx, ax ; 89 c2 ; 0xf1bc9 + add dx, strict byte 00030h ; 83 c2 30 ; 0xf1bcb + jmp short 01bd8h ; eb 08 ; 0xf1bce + sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1bd0 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1bd3 + add dx, ax ; 01 c2 ; 0xf1bd6 + xor dh, dh ; 30 f6 ; 0xf1bd8 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bda + call 017a8h ; e8 c8 fb ; 0xf1bdd + dec word [bp-00ch] ; ff 4e f4 ; 0xf1be0 print.c:268 + jmp short 01ba7h ; eb c2 ; 0xf1be3 + cmp dl, 064h ; 80 fa 64 ; 0xf1be5 print.c:271 + jne short 01c09h ; 75 1f ; 0xf1be8 + test byte [bp-00fh], 080h ; f6 46 f1 80 ; 0xf1bea print.c:272 + je short 01bfah ; 74 0a ; 0xf1bee + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1bf0 print.c:273 + neg dx ; f7 da ; 0xf1bf3 + mov cx, strict word 00001h ; b9 01 00 ; 0xf1bf5 + jmp short 01c01h ; eb 07 ; 0xf1bf8 print.c:274 + xor cx, cx ; 31 c9 ; 0xf1bfa print.c:275 + mov bx, di ; 89 fb ; 0xf1bfc + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1bfe + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c01 + call 017e3h ; e8 dc fb ; 0xf1c04 + jmp short 01c5eh ; eb 55 ; 0xf1c07 print.c:277 + cmp dl, 073h ; 80 fa 73 ; 0xf1c09 + jne short 01c1bh ; 75 0d ; 0xf1c0c + mov cx, ds ; 8c d9 ; 0xf1c0e print.c:278 + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf1c10 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c13 + call 01910h ; e8 f7 fc ; 0xf1c16 + jmp short 01c5eh ; eb 43 ; 0xf1c19 print.c:280 + cmp dl, 053h ; 80 fa 53 ; 0xf1c1b + jne short 01c41h ; 75 21 ; 0xf1c1e + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1c20 print.c:281 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1c23 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1c26 print.c:282 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1c29 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1c2c + les bx, [bp-016h] ; c4 5e ea ; 0xf1c30 + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1c33 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf1c37 + mov bx, ax ; 89 c3 ; 0xf1c3a print.c:283 + mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf1c3c + jmp short 01c13h ; eb d2 ; 0xf1c3f + cmp dl, 063h ; 80 fa 63 ; 0xf1c41 print.c:285 + jne short 01c53h ; 75 0d ; 0xf1c44 + mov dl, byte [bp-010h] ; 8a 56 f0 ; 0xf1c46 print.c:286 + xor dh, dh ; 30 f6 ; 0xf1c49 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c4b + call 017a8h ; e8 57 fb ; 0xf1c4e + jmp short 01c5eh ; eb 0b ; 0xf1c51 print.c:288 + push 0013fh ; 68 3f 01 ; 0xf1c53 print.c:289 + push strict byte 00007h ; 6a 07 ; 0xf1c56 + call 01953h ; e8 f8 fc ; 0xf1c58 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf1c5b + xor cx, cx ; 31 c9 ; 0xf1c5e print.c:290 + jmp short 01c6ah ; eb 08 ; 0xf1c60 print.c:293 + xor dh, dh ; 30 f6 ; 0xf1c62 print.c:294 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c64 + call 017a8h ; e8 3e fb ; 0xf1c67 + inc word [bp+006h] ; ff 46 06 ; 0xf1c6a print.c:296 + jmp near 01981h ; e9 11 fd ; 0xf1c6d print.c:297 + xor ax, ax ; 31 c0 ; 0xf1c70 print.c:298 + mov word [bp-016h], ax ; 89 46 ea ; 0xf1c72 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1c75 + test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf1c78 print.c:299 + je short 01c82h ; 74 04 ; 0xf1c7c + cli ; fa ; 0xf1c7e print.c:301 + hlt ; f4 ; 0xf1c7f print.c:302 + jmp short 01c7fh ; eb fd ; 0xf1c80 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1c82 print.c:304 + pop di ; 5f ; 0xf1c85 + pop si ; 5e ; 0xf1c86 + pop dx ; 5a ; 0xf1c87 + pop cx ; 59 ; 0xf1c88 + pop bx ; 5b ; 0xf1c89 + pop bp ; 5d ; 0xf1c8a + retn ; c3 ; 0xf1c8b + ; disGetNextSymbol 0xf1c8c LB 0x90cc -> off=0x0 cb=00000000000000e5 uValue=00000000000f068c 'ata_init' +ata_init: ; 0xf1c8c LB 0xe5 + push si ; 56 ; 0xf1c8c ata.c:89 + push bp ; 55 ; 0xf1c8d + mov bp, sp ; 89 e5 ; 0xf1c8e + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1c90 ata.c:58 + mov si, strict word 00040h ; be 40 00 ; 0xf1c93 + mov es, si ; 8e c6 ; 0xf1c96 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf1c98 + mov si, strict word 0005eh ; be 5e 00 ; 0xf1c9b ata.c:59 + mov dx, bx ; 89 da ; 0xf1c9e + xor al, al ; 30 c0 ; 0xf1ca0 ata.c:97 + jmp short 01ca8h ; eb 04 ; 0xf1ca2 + cmp AL, strict byte 004h ; 3c 04 ; 0xf1ca4 + jnc short 01cd1h ; 73 29 ; 0xf1ca6 + mov bl, al ; 88 c3 ; 0xf1ca8 ata.c:98 + xor bh, bh ; 30 ff ; 0xf1caa + imul bx, bx, strict byte 00006h ; 6b db 06 ; 0xf1cac + mov es, dx ; 8e c2 ; 0xf1caf + add bx, si ; 01 f3 ; 0xf1cb1 + mov byte [es:bx+00278h], 000h ; 26 c6 87 78 02 00 ; 0xf1cb3 + mov word [es:bx+0027ah], strict word 00000h ; 26 c7 87 7a 02 00 00 ; 0xf1cb9 ata.c:99 + mov word [es:bx+0027ch], strict word 00000h ; 26 c7 87 7c 02 00 00 ; 0xf1cc0 ata.c:100 + mov byte [es:bx+00279h], 000h ; 26 c6 87 79 02 00 ; 0xf1cc7 ata.c:101 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf1ccd ata.c:102 + jmp short 01ca4h ; eb d3 ; 0xf1ccf + xor al, al ; 30 c0 ; 0xf1cd1 ata.c:105 + jmp short 01cd9h ; eb 04 ; 0xf1cd3 + cmp AL, strict byte 008h ; 3c 08 ; 0xf1cd5 + jnc short 01d40h ; 73 67 ; 0xf1cd7 + mov bl, al ; 88 c3 ; 0xf1cd9 ata.c:106 + xor bh, bh ; 30 ff ; 0xf1cdb + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1cdd + mov es, dx ; 8e c2 ; 0xf1ce0 + add bx, si ; 01 f3 ; 0xf1ce2 + mov word [es:bx+01eh], strict word 00000h ; 26 c7 47 1e 00 00 ; 0xf1ce4 + mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00 ; 0xf1cea ata.c:108 + mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf1cf0 ata.c:110 + mov word [es:bx+024h], 00200h ; 26 c7 47 24 00 02 ; 0xf1cf5 ata.c:111 + mov byte [es:bx+023h], 000h ; 26 c6 47 23 00 ; 0xf1cfb ata.c:112 + mov word [es:bx+026h], strict word 00000h ; 26 c7 47 26 00 00 ; 0xf1d00 ata.c:113 + mov word [es:bx+028h], strict word 00000h ; 26 c7 47 28 00 00 ; 0xf1d06 ata.c:114 + mov word [es:bx+02ah], strict word 00000h ; 26 c7 47 2a 00 00 ; 0xf1d0c ata.c:115 + mov word [es:bx+02ch], strict word 00000h ; 26 c7 47 2c 00 00 ; 0xf1d12 ata.c:116 + mov word [es:bx+02eh], strict word 00000h ; 26 c7 47 2e 00 00 ; 0xf1d18 ata.c:117 + mov word [es:bx+030h], strict word 00000h ; 26 c7 47 30 00 00 ; 0xf1d1e ata.c:118 + mov word [es:bx+038h], strict word 00000h ; 26 c7 47 38 00 00 ; 0xf1d24 ata.c:119 + mov word [es:bx+036h], strict word 00000h ; 26 c7 47 36 00 00 ; 0xf1d2a + mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf1d30 + mov word [es:bx+032h], strict word 00000h ; 26 c7 47 32 00 00 ; 0xf1d36 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf1d3c ata.c:120 + jmp short 01cd5h ; eb 95 ; 0xf1d3e + xor al, al ; 30 c0 ; 0xf1d40 ata.c:123 + jmp short 01d48h ; eb 04 ; 0xf1d42 + cmp AL, strict byte 014h ; 3c 14 ; 0xf1d44 + jnc short 01d60h ; 73 18 ; 0xf1d46 + mov bl, al ; 88 c3 ; 0xf1d48 ata.c:124 + xor bh, bh ; 30 ff ; 0xf1d4a + mov es, dx ; 8e c2 ; 0xf1d4c + add bx, si ; 01 f3 ; 0xf1d4e + mov byte [es:bx+0024fh], 014h ; 26 c6 87 4f 02 14 ; 0xf1d50 + mov byte [es:bx+00264h], 014h ; 26 c6 87 64 02 14 ; 0xf1d56 ata.c:125 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf1d5c ata.c:126 + jmp short 01d44h ; eb e4 ; 0xf1d5e + mov es, dx ; 8e c2 ; 0xf1d60 ata.c:128 + mov byte [es:si+0024eh], 000h ; 26 c6 84 4e 02 00 ; 0xf1d62 + mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf1d68 ata.c:129 + pop bp ; 5d ; 0xf1d6e ata.c:130 + pop si ; 5e ; 0xf1d6f + retn ; c3 ; 0xf1d70 + ; disGetNextSymbol 0xf1d71 LB 0x8fe7 -> off=0x0 cb=00000000000000dd uValue=00000000000f0771 'ata_reset' +ata_reset: ; 0xf1d71 LB 0xdd + push bp ; 55 ; 0xf1d71 ata.c:138 + mov bp, sp ; 89 e5 ; 0xf1d72 + push bx ; 53 ; 0xf1d74 + push cx ; 51 ; 0xf1d75 + push dx ; 52 ; 0xf1d76 + push si ; 56 ; 0xf1d77 + push di ; 57 ; 0xf1d78 + push ax ; 50 ; 0xf1d79 + push ax ; 50 ; 0xf1d7a + push ax ; 50 ; 0xf1d7b + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1d7c ata.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf1d7f + mov es, ax ; 8e c0 ; 0xf1d82 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf1d84 + mov di, strict word 0005eh ; bf 5e 00 ; 0xf1d87 ata.c:59 + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf1d8a + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1d8d ata.c:147 + shr ax, 1 ; d1 e8 ; 0xf1d90 + mov ah, byte [bp-010h] ; 8a 66 f0 ; 0xf1d92 ata.c:148 + and ah, 001h ; 80 e4 01 ; 0xf1d95 + mov byte [bp-00ch], ah ; 88 66 f4 ; 0xf1d98 + xor ah, ah ; 30 e4 ; 0xf1d9b ata.c:150 + imul bx, ax, strict byte 00006h ; 6b d8 06 ; 0xf1d9d + mov es, dx ; 8e c2 ; 0xf1da0 + add bx, di ; 01 fb ; 0xf1da2 + mov cx, word [es:bx+0027ah] ; 26 8b 8f 7a 02 ; 0xf1da4 + mov si, word [es:bx+0027ch] ; 26 8b b7 7c 02 ; 0xf1da9 ata.c:151 + lea dx, [si+006h] ; 8d 54 06 ; 0xf1dae ata.c:156 + mov AL, strict byte 00eh ; b0 0e ; 0xf1db1 + out DX, AL ; ee ; 0xf1db3 + mov bx, 000ffh ; bb ff 00 ; 0xf1db4 ata.c:159 + dec bx ; 4b ; 0xf1db7 ata.c:160 + test bx, bx ; 85 db ; 0xf1db8 + jbe short 01dc8h ; 76 0c ; 0xf1dba + mov dx, cx ; 89 ca ; 0xf1dbc ata.c:161 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1dbe + in AL, DX ; ec ; 0xf1dc1 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1dc2 + test AL, strict byte 080h ; a8 80 ; 0xf1dc4 ata.c:162 + je short 01db7h ; 74 ef ; 0xf1dc6 + lea dx, [si+006h] ; 8d 54 06 ; 0xf1dc8 ata.c:167 + mov AL, strict byte 00ah ; b0 0a ; 0xf1dcb + out DX, AL ; ee ; 0xf1dcd + mov bx, strict word 0ffffh ; bb ff ff ; 0xf1dce ata.c:170 + dec bx ; 4b ; 0xf1dd1 ata.c:171 + test bx, bx ; 85 db ; 0xf1dd2 + jbe short 01dech ; 76 16 ; 0xf1dd4 + mov dx, cx ; 89 ca ; 0xf1dd6 ata.c:172 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1dd8 + in AL, DX ; ec ; 0xf1ddb + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1ddc + test AL, strict byte 080h ; a8 80 ; 0xf1dde ata.c:173 + je short 01dech ; 74 0a ; 0xf1de0 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf1de2 ata.c:175 + dec ax ; 48 ; 0xf1de5 ata.c:176 + test ax, ax ; 85 c0 ; 0xf1de6 + jnbe short 01de5h ; 77 fb ; 0xf1de8 + jmp short 01dd1h ; eb e5 ; 0xf1dea ata.c:179 + imul bx, word [bp-010h], strict byte 0001ch ; 6b 5e f0 1c ; 0xf1dec ata.c:181 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf1df0 + add bx, di ; 01 fb ; 0xf1df3 + cmp byte [es:bx+01eh], 000h ; 26 80 7f 1e 00 ; 0xf1df5 + je short 01e3eh ; 74 42 ; 0xf1dfa + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf1dfc ata.c:184 + je short 01e07h ; 74 05 ; 0xf1e00 + mov ax, 000b0h ; b8 b0 00 ; 0xf1e02 + jmp short 01e0ah ; eb 03 ; 0xf1e05 + mov ax, 000a0h ; b8 a0 00 ; 0xf1e07 + mov dx, cx ; 89 ca ; 0xf1e0a + add dx, strict byte 00006h ; 83 c2 06 ; 0xf1e0c + out DX, AL ; ee ; 0xf1e0f + mov dx, cx ; 89 ca ; 0xf1e10 ata.c:185 + inc dx ; 42 ; 0xf1e12 + inc dx ; 42 ; 0xf1e13 + in AL, DX ; ec ; 0xf1e14 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1e15 + mov bx, ax ; 89 c3 ; 0xf1e17 + mov dx, cx ; 89 ca ; 0xf1e19 ata.c:186 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf1e1b + in AL, DX ; ec ; 0xf1e1e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1e1f + cmp bl, 001h ; 80 fb 01 ; 0xf1e21 ata.c:188 + jne short 01e3eh ; 75 18 ; 0xf1e24 + cmp al, bl ; 38 d8 ; 0xf1e26 + jne short 01e3eh ; 75 14 ; 0xf1e28 + mov bx, strict word 00010h ; bb 10 00 ; 0xf1e2a ata.c:190 + dec bx ; 4b ; 0xf1e2d ata.c:191 + test bx, bx ; 85 db ; 0xf1e2e + jbe short 01e3eh ; 76 0c ; 0xf1e30 + mov dx, cx ; 89 ca ; 0xf1e32 ata.c:192 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1e34 + in AL, DX ; ec ; 0xf1e37 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1e38 + test AL, strict byte 040h ; a8 40 ; 0xf1e3a ata.c:193 + je short 01e2dh ; 74 ef ; 0xf1e3c + lea dx, [si+006h] ; 8d 54 06 ; 0xf1e3e ata.c:200 + mov AL, strict byte 008h ; b0 08 ; 0xf1e41 + out DX, AL ; ee ; 0xf1e43 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1e44 ata.c:201 + pop di ; 5f ; 0xf1e47 + pop si ; 5e ; 0xf1e48 + pop dx ; 5a ; 0xf1e49 + pop cx ; 59 ; 0xf1e4a + pop bx ; 5b ; 0xf1e4b + pop bp ; 5d ; 0xf1e4c + retn ; c3 ; 0xf1e4d + ; disGetNextSymbol 0xf1e4e LB 0x8f0a -> off=0x0 cb=00000000000002b5 uValue=00000000000f084e 'ata_cmd_data_in' +ata_cmd_data_in: ; 0xf1e4e LB 0x2b5 + push bp ; 55 ; 0xf1e4e ata.c:215 + mov bp, sp ; 89 e5 ; 0xf1e4f + push si ; 56 ; 0xf1e51 + push di ; 57 ; 0xf1e52 + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf1e53 + push ax ; 50 ; 0xf1e56 + push dx ; 52 ; 0xf1e57 + push bx ; 53 ; 0xf1e58 + push cx ; 51 ; 0xf1e59 + mov es, dx ; 8e c2 ; 0xf1e5a ata.c:225 + mov bx, ax ; 89 c3 ; 0xf1e5c + mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf1e5e + mov byte [bp-008h], al ; 88 46 f8 ; 0xf1e62 + mov bl, al ; 88 c3 ; 0xf1e65 ata.c:227 + xor bh, ah ; 30 e7 ; 0xf1e67 + mov ax, bx ; 89 d8 ; 0xf1e69 + cwd ; 99 ; 0xf1e6b + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf1e6c + sar ax, 1 ; d1 f8 ; 0xf1e6e + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf1e70 + mov di, word [bp-016h] ; 8b 7e ea ; 0xf1e73 + add di, ax ; 01 c7 ; 0xf1e76 + mov ax, word [es:di+0027ah] ; 26 8b 85 7a 02 ; 0xf1e78 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1e7d + mov ax, word [es:di+0027ch] ; 26 8b 85 7c 02 ; 0xf1e80 ata.c:228 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1e85 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1e88 ata.c:230 + add bx, word [bp-016h] ; 03 5e ea ; 0xf1e8b + mov ax, word [es:bx+024h] ; 26 8b 47 24 ; 0xf1e8e + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1e92 + test ax, ax ; 85 c0 ; 0xf1e95 ata.c:231 + jne short 01ea0h ; 75 07 ; 0xf1e97 + mov word [bp-00eh], 08000h ; c7 46 f2 00 80 ; 0xf1e99 ata.c:237 + jmp short 01ea3h ; eb 03 ; 0xf1e9e ata.c:238 + shr word [bp-00eh], 1 ; d1 6e f2 ; 0xf1ea0 ata.c:244 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1ea3 ata.c:247 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1ea6 + in AL, DX ; ec ; 0xf1ea9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1eaa + test AL, strict byte 080h ; a8 80 ; 0xf1eac ata.c:248 + je short 01ebfh ; 74 0f ; 0xf1eae + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1eb0 ata.c:252 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf1eb3 + mov AL, strict byte 008h ; b0 08 ; 0xf1eb6 + out DX, AL ; ee ; 0xf1eb8 + mov ax, strict word 00001h ; b8 01 00 ; 0xf1eb9 ata.c:253 + jmp near 020fch ; e9 3d 02 ; 0xf1ebc + mov es, [bp-018h] ; 8e 46 e8 ; 0xf1ebf ata.c:256 + mov di, word [bp-016h] ; 8b 7e ea ; 0xf1ec2 + mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf1ec5 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1ec9 + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf1ecc + mov word [bp-010h], ax ; 89 46 f0 ; 0xf1ed0 + mov al, byte [es:bx+016h] ; 26 8a 47 16 ; 0xf1ed3 ata.c:257 + mov byte [bp-006h], al ; 88 46 fa ; 0xf1ed7 + mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf1eda ata.c:258 + mov word [bp-012h], ax ; 89 46 ee ; 0xf1ede + mov ah, byte [es:bx+014h] ; 26 8a 67 14 ; 0xf1ee1 ata.c:259 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1ee5 ata.c:262 + test al, al ; 84 c0 ; 0xf1ee8 + je short 01eefh ; 74 03 ; 0xf1eea + jmp near 01fd2h ; e9 e3 00 ; 0xf1eec + xor bx, bx ; 31 db ; 0xf1eef ata.c:263 + xor dx, dx ; 31 d2 ; 0xf1ef1 + xor ah, ah ; 30 e4 ; 0xf1ef3 + mov si, word [bp-016h] ; 8b 76 ea ; 0xf1ef5 + mov cx, word [es:si] ; 26 8b 0c ; 0xf1ef8 + add cx, word [bp-01ch] ; 03 4e e4 ; 0xf1efb + mov word [bp-014h], cx ; 89 4e ec ; 0xf1efe + adc bx, word [es:si+002h] ; 26 13 5c 02 ; 0xf1f01 + adc dx, word [es:si+004h] ; 26 13 54 04 ; 0xf1f05 + adc ax, word [es:si+006h] ; 26 13 44 06 ; 0xf1f09 + test ax, ax ; 85 c0 ; 0xf1f0d + jnbe short 01f24h ; 77 13 ; 0xf1f0f + je short 01f16h ; 74 03 ; 0xf1f11 + jmp near 01f88h ; e9 72 00 ; 0xf1f13 + test dx, dx ; 85 d2 ; 0xf1f16 + jnbe short 01f24h ; 77 0a ; 0xf1f18 + jne short 01f88h ; 75 6c ; 0xf1f1a + cmp bx, 01000h ; 81 fb 00 10 ; 0xf1f1c + jnbe short 01f24h ; 77 02 ; 0xf1f20 + jne short 01f88h ; 75 64 ; 0xf1f22 + mov bx, si ; 89 f3 ; 0xf1f24 ata.c:265 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f26 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f2a + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f2e + mov dx, word [es:si] ; 26 8b 14 ; 0xf1f32 + mov si, strict word 00018h ; be 18 00 ; 0xf1f35 + call 0aa10h ; e8 d5 8a ; 0xf1f38 + xor dh, dh ; 30 f6 ; 0xf1f3b + mov word [bp-014h], dx ; 89 56 ec ; 0xf1f3d + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f40 ata.c:266 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f43 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f47 + mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f4b + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f4e + mov dx, word [es:si] ; 26 8b 14 ; 0xf1f52 + mov si, strict word 00020h ; be 20 00 ; 0xf1f55 + call 0aa10h ; e8 b5 8a ; 0xf1f58 + mov bx, dx ; 89 d3 ; 0xf1f5b + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf1f5d ata.c:267 + xor al, al ; 30 c0 ; 0xf1f60 + shr ax, 008h ; c1 e8 08 ; 0xf1f62 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f65 + inc dx ; 42 ; 0xf1f68 + inc dx ; 42 ; 0xf1f69 + out DX, AL ; ee ; 0xf1f6a + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f6b ata.c:268 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf1f6e + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf1f71 + out DX, AL ; ee ; 0xf1f74 + mov ax, bx ; 89 d8 ; 0xf1f75 ata.c:269 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f77 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf1f7a + out DX, AL ; ee ; 0xf1f7d + shr ax, 008h ; c1 e8 08 ; 0xf1f7e ata.c:270 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f81 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf1f84 + out DX, AL ; ee ; 0xf1f87 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf1f88 ata.c:274 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f8b + mov ax, word [es:bx] ; 26 8b 07 ; 0xf1f8e + mov byte [bp-006h], al ; 88 46 fa ; 0xf1f91 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f94 ata.c:275 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f98 + mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f9c + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f9f + mov dx, word [es:si] ; 26 8b 14 ; 0xf1fa3 + mov si, strict word 00008h ; be 08 00 ; 0xf1fa6 + call 0aa10h ; e8 64 8a ; 0xf1fa9 + mov word [bp-012h], dx ; 89 56 ee ; 0xf1fac + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1faf ata.c:276 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1fb2 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1fb6 + mov si, word [bp-016h] ; 8b 76 ea ; 0xf1fba + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1fbd + mov dx, word [es:si] ; 26 8b 14 ; 0xf1fc1 + mov si, strict word 00018h ; be 18 00 ; 0xf1fc4 + call 0aa10h ; e8 46 8a ; 0xf1fc7 + mov ah, dl ; 88 d4 ; 0xf1fca + and ah, 00fh ; 80 e4 0f ; 0xf1fcc + or ah, 040h ; 80 cc 40 ; 0xf1fcf + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1fd2 ata.c:279 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf1fd5 + mov AL, strict byte 00ah ; b0 0a ; 0xf1fd8 + out DX, AL ; ee ; 0xf1fda + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fdb ata.c:280 + inc dx ; 42 ; 0xf1fde + xor al, al ; 30 c0 ; 0xf1fdf + out DX, AL ; ee ; 0xf1fe1 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fe2 ata.c:281 + inc dx ; 42 ; 0xf1fe5 + inc dx ; 42 ; 0xf1fe6 + mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf1fe7 + out DX, AL ; ee ; 0xf1fea + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1feb ata.c:282 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf1fee + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1ff1 + out DX, AL ; ee ; 0xf1ff4 + mov bx, word [bp-012h] ; 8b 5e ee ; 0xf1ff5 ata.c:283 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1ff8 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf1ffb + mov al, bl ; 88 d8 ; 0xf1ffe + out DX, AL ; ee ; 0xf2000 + mov dx, bx ; 89 da ; 0xf2001 ata.c:284 + shr dx, 008h ; c1 ea 08 ; 0xf2003 + mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf2006 + add bx, strict byte 00005h ; 83 c3 05 ; 0xf2009 + mov al, dl ; 88 d0 ; 0xf200c + mov dx, bx ; 89 da ; 0xf200e + out DX, AL ; ee ; 0xf2010 + test byte [bp-008h], 001h ; f6 46 f8 01 ; 0xf2011 ata.c:285 + je short 0201ch ; 74 05 ; 0xf2015 + mov dx, 000b0h ; ba b0 00 ; 0xf2017 + jmp short 0201fh ; eb 03 ; 0xf201a + mov dx, 000a0h ; ba a0 00 ; 0xf201c + mov al, ah ; 88 e0 ; 0xf201f + xor ah, ah ; 30 e4 ; 0xf2021 + or ax, dx ; 09 d0 ; 0xf2023 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2025 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2028 + out DX, AL ; ee ; 0xf202b + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf202c ata.c:286 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf202f + mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf2032 + out DX, AL ; ee ; 0xf2035 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf2036 ata.c:288 + cmp ax, 000c4h ; 3d c4 00 ; 0xf2039 + je short 02043h ; 74 05 ; 0xf203c + cmp ax, strict word 00029h ; 3d 29 00 ; 0xf203e + jne short 0204dh ; 75 0a ; 0xf2041 + mov si, word [bp-01ch] ; 8b 76 e4 ; 0xf2043 ata.c:289 + mov word [bp-01ch], strict word 00001h ; c7 46 e4 01 00 ; 0xf2046 ata.c:290 + jmp short 02050h ; eb 03 ; 0xf204b ata.c:291 + mov si, strict word 00001h ; be 01 00 ; 0xf204d ata.c:292 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2050 ata.c:296 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2053 + in AL, DX ; ec ; 0xf2056 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2057 + mov bl, al ; 88 c3 ; 0xf2059 + test AL, strict byte 080h ; a8 80 ; 0xf205b ata.c:297 + jne short 02050h ; 75 f1 ; 0xf205d + test AL, strict byte 001h ; a8 01 ; 0xf205f ata.c:301 + je short 02072h ; 74 0f ; 0xf2061 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2063 ata.c:304 + 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 00002h ; b8 02 00 ; 0xf206c ata.c:305 + jmp near 020fch ; e9 8a 00 ; 0xf206f + test bl, 008h ; f6 c3 08 ; 0xf2072 ata.c:306 + jne short 02086h ; 75 0f ; 0xf2075 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2077 ata.c:309 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf207a + mov AL, strict byte 008h ; b0 08 ; 0xf207d + out DX, AL ; ee ; 0xf207f + mov ax, strict word 00003h ; b8 03 00 ; 0xf2080 ata.c:310 + jmp near 020fch ; e9 76 00 ; 0xf2083 + sti ; fb ; 0xf2086 ata.c:315 + cmp di, 0f800h ; 81 ff 00 f8 ; 0xf2087 ata.c:320 + jc short 0209ah ; 72 0d ; 0xf208b + sub di, 00800h ; 81 ef 00 08 ; 0xf208d ata.c:321 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf2091 + add ax, 00080h ; 05 80 00 ; 0xf2094 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf2097 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf209a ata.c:328 + mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf209d + mov es, [bp-010h] ; 8e 46 f0 ; 0xf20a0 + rep insw ; f3 6d ; 0xf20a3 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf20a5 ata.c:329 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf20a8 + add word [es:bx+018h], si ; 26 01 77 18 ; 0xf20ab + dec word [bp-01ch] ; ff 4e e4 ; 0xf20af ata.c:330 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf20b2 ata.c:332 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf20b5 + in AL, DX ; ec ; 0xf20b8 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf20b9 + mov bl, al ; 88 c3 ; 0xf20bb + test AL, strict byte 080h ; a8 80 ; 0xf20bd ata.c:333 + jne short 020b2h ; 75 f1 ; 0xf20bf + cmp word [bp-01ch], strict byte 00000h ; 83 7e e4 00 ; 0xf20c1 ata.c:336 + jne short 020dbh ; 75 14 ; 0xf20c5 + and AL, strict byte 0c9h ; 24 c9 ; 0xf20c7 ata.c:337 + cmp AL, strict byte 040h ; 3c 40 ; 0xf20c9 + je short 020f1h ; 74 24 ; 0xf20cb + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20cd ata.c:341 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf20d0 + mov AL, strict byte 008h ; b0 08 ; 0xf20d3 + out DX, AL ; ee ; 0xf20d5 + mov ax, strict word 00004h ; b8 04 00 ; 0xf20d6 ata.c:342 + jmp short 020fch ; eb 21 ; 0xf20d9 + mov al, bl ; 88 d8 ; 0xf20db ata.c:347 + and AL, strict byte 0c9h ; 24 c9 ; 0xf20dd + cmp AL, strict byte 048h ; 3c 48 ; 0xf20df + je short 02087h ; 74 a4 ; 0xf20e1 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20e3 ata.c:351 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf20e6 + mov AL, strict byte 008h ; b0 08 ; 0xf20e9 + out DX, AL ; ee ; 0xf20eb + mov ax, strict word 00005h ; b8 05 00 ; 0xf20ec ata.c:352 + jmp short 020fch ; eb 0b ; 0xf20ef + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20f1 ata.c:358 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf20f4 + mov AL, strict byte 008h ; b0 08 ; 0xf20f7 + out DX, AL ; ee ; 0xf20f9 + xor ax, ax ; 31 c0 ; 0xf20fa ata.c:359 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf20fc ata.c:360 + pop di ; 5f ; 0xf20ff + pop si ; 5e ; 0xf2100 + pop bp ; 5d ; 0xf2101 + retn ; c3 ; 0xf2102 + ; disGetNextSymbol 0xf2103 LB 0x8c55 -> off=0x0 cb=0000000000000094 uValue=00000000000f0b03 'ata_signature' +ata_signature: ; 0xf2103 LB 0x94 + push bp ; 55 ; 0xf2103 ata.c:366 + mov bp, sp ; 89 e5 ; 0xf2104 + push cx ; 51 ; 0xf2106 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf2107 + mov cx, ax ; 89 c1 ; 0xf210a + mov al, bl ; 88 d8 ; 0xf210c + xor bx, bx ; 31 db ; 0xf210e ata.c:368 + test al, al ; 84 c0 ; 0xf2110 ata.c:376 + je short 02119h ; 74 05 ; 0xf2112 + mov ax, 000b0h ; b8 b0 00 ; 0xf2114 + jmp short 0211ch ; eb 03 ; 0xf2117 + mov ax, 000a0h ; b8 a0 00 ; 0xf2119 + mov dx, cx ; 89 ca ; 0xf211c + add dx, strict byte 00006h ; 83 c2 06 ; 0xf211e + out DX, AL ; ee ; 0xf2121 + mov dx, cx ; 89 ca ; 0xf2122 ata.c:378 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2124 + in AL, DX ; ec ; 0xf2127 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2128 + mov byte [bp-006h], al ; 88 46 fa ; 0xf212a + test AL, strict byte 080h ; a8 80 ; 0xf212d ata.c:379 + jne short 02122h ; 75 f1 ; 0xf212f + mov dx, cx ; 89 ca ; 0xf2131 ata.c:387 + inc dx ; 42 ; 0xf2133 + inc dx ; 42 ; 0xf2134 + in AL, DX ; ec ; 0xf2135 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2136 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf2138 + mov dx, cx ; 89 ca ; 0xf213b ata.c:388 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf213d + in AL, DX ; ec ; 0xf2140 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2141 + cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf2143 ata.c:389 + jne short 0218fh ; 75 46 ; 0xf2147 + cmp AL, strict byte 001h ; 3c 01 ; 0xf2149 + jne short 0218fh ; 75 42 ; 0xf214b + mov dx, cx ; 89 ca ; 0xf214d ata.c:390 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf214f + in AL, DX ; ec ; 0xf2152 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2153 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf2155 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2158 + mov byte [bp-004h], al ; 88 46 fc ; 0xf215b + mov dx, cx ; 89 ca ; 0xf215e ata.c:391 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2160 + in AL, DX ; ec ; 0xf2163 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2164 + mov dl, al ; 88 c2 ; 0xf2166 + cmp byte [bp-008h], 014h ; 80 7e f8 14 ; 0xf2168 ata.c:398 + jne short 02177h ; 75 09 ; 0xf216c + cmp AL, strict byte 0ebh ; 3c eb ; 0xf216e + jne short 02177h ; 75 05 ; 0xf2170 + mov bx, strict word 00003h ; bb 03 00 ; 0xf2172 ata.c:399 + jmp short 0218fh ; eb 18 ; 0xf2175 ata.c:401 + cmp byte [bp-004h], 000h ; 80 7e fc 00 ; 0xf2177 + jne short 0218ch ; 75 0f ; 0xf217b + test dl, dl ; 84 d2 ; 0xf217d + jne short 0218ch ; 75 0b ; 0xf217f + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2181 ata.c:402 + je short 0218fh ; 74 08 ; 0xf2185 + mov bx, strict word 00002h ; bb 02 00 ; 0xf2187 ata.c:403 + jmp short 0218fh ; eb 03 ; 0xf218a ata.c:408 + mov bx, strict word 00001h ; bb 01 00 ; 0xf218c ata.c:409 + mov ax, bx ; 89 d8 ; 0xf218f ata.c:416 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf2191 + pop cx ; 59 ; 0xf2194 + pop bp ; 5d ; 0xf2195 + retn ; c3 ; 0xf2196 + ; disGetNextSymbol 0xf2197 LB 0x8bc1 -> off=0x0 cb=00000000000005ff uValue=00000000000f0b97 'ata_detect' +ata_detect: ; 0xf2197 LB 0x5ff + push bp ; 55 ; 0xf2197 ata.c:418 + mov bp, sp ; 89 e5 ; 0xf2198 + push si ; 56 ; 0xf219a + push di ; 57 ; 0xf219b + sub sp, 0025ch ; 81 ec 5c 02 ; 0xf219c + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf21a0 ata.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf21a3 + mov es, ax ; 8e c0 ; 0xf21a6 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf21a8 + mov word [bp-02ch], ax ; 89 46 d4 ; 0xf21ab ata.c:59 + mov bx, strict word 0005eh ; bb 5e 00 ; 0xf21ae ata.c:441 + mov es, ax ; 8e c0 ; 0xf21b1 + mov word [bp-028h], bx ; 89 5e d8 ; 0xf21b3 + mov word [bp-026h], ax ; 89 46 da ; 0xf21b6 + mov byte [es:bx+00278h], 000h ; 26 c6 87 78 02 00 ; 0xf21b9 ata.c:444 + mov word [es:bx+0027ah], 001f0h ; 26 c7 87 7a 02 f0 01 ; 0xf21bf ata.c:445 + mov word [es:bx+0027ch], 003f0h ; 26 c7 87 7c 02 f0 03 ; 0xf21c6 ata.c:446 + mov byte [es:bx+00279h], 00eh ; 26 c6 87 79 02 0e ; 0xf21cd ata.c:447 + mov byte [es:bx+0027eh], 000h ; 26 c6 87 7e 02 00 ; 0xf21d3 ata.c:450 + mov word [es:bx+00280h], 00170h ; 26 c7 87 80 02 70 01 ; 0xf21d9 ata.c:451 + mov word [es:bx+00282h], 00370h ; 26 c7 87 82 02 70 03 ; 0xf21e0 ata.c:452 + mov byte [es:bx+0027fh], 00fh ; 26 c6 87 7f 02 0f ; 0xf21e7 ata.c:453 + mov byte [es:bx+00284h], 000h ; 26 c6 87 84 02 00 ; 0xf21ed ata.c:456 + mov word [es:bx+00286h], 001e8h ; 26 c7 87 86 02 e8 01 ; 0xf21f3 ata.c:457 + mov word [es:bx+00288h], 003e0h ; 26 c7 87 88 02 e0 03 ; 0xf21fa ata.c:458 + mov byte [es:bx+00285h], 00ch ; 26 c6 87 85 02 0c ; 0xf2201 ata.c:459 + mov byte [es:bx+0028ah], 000h ; 26 c6 87 8a 02 00 ; 0xf2207 ata.c:462 + mov word [es:bx+0028ch], 00168h ; 26 c7 87 8c 02 68 01 ; 0xf220d ata.c:463 + mov word [es:bx+0028eh], 00360h ; 26 c7 87 8e 02 60 03 ; 0xf2214 ata.c:464 + mov byte [es:bx+0028bh], 00bh ; 26 c6 87 8b 02 0b ; 0xf221b ata.c:465 + xor al, al ; 30 c0 ; 0xf2221 ata.c:472 + mov byte [bp-012h], al ; 88 46 ee ; 0xf2223 + mov byte [bp-010h], al ; 88 46 f0 ; 0xf2226 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf2229 ata.c:474 + jmp near 02726h ; e9 f7 04 ; 0xf222c + test cl, cl ; 84 c9 ; 0xf222f ata.c:519 + jne short 02290h ; 75 5d ; 0xf2231 + lea dx, [di+006h] ; 8d 55 06 ; 0xf2233 ata.c:520 + mov AL, strict byte 00eh ; b0 0e ; 0xf2236 + out DX, AL ; ee ; 0xf2238 + mov bx, strict word 00020h ; bb 20 00 ; 0xf2239 ata.c:526 + dec bx ; 4b ; 0xf223c ata.c:527 + test bx, bx ; 85 db ; 0xf223d + jbe short 0224bh ; 76 0a ; 0xf223f + lea dx, [si+007h] ; 8d 54 07 ; 0xf2241 ata.c:528 + in AL, DX ; ec ; 0xf2244 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2245 + test AL, strict byte 080h ; a8 80 ; 0xf2247 ata.c:529 + je short 0223ch ; 74 f1 ; 0xf2249 + lea dx, [di+006h] ; 8d 55 06 ; 0xf224b ata.c:533 + mov AL, strict byte 00ah ; b0 0a ; 0xf224e + out DX, AL ; ee ; 0xf2250 + mov cl, byte [bp-00ah] ; 8a 4e f6 ; 0xf2251 ata.c:540 + xor ch, ch ; 30 ed ; 0xf2254 + xor bx, bx ; 31 db ; 0xf2256 + mov dx, cx ; 89 ca ; 0xf2258 + mov ax, si ; 89 f0 ; 0xf225a + call 02103h ; e8 a4 fe ; 0xf225c + mov ah, byte [bp-008h] ; 8a 66 f8 ; 0xf225f + mov byte [bp-02eh], ah ; 88 66 d2 ; 0xf2262 + mov byte [bp-02dh], ch ; 88 6e d3 ; 0xf2265 + imul bx, word [bp-02eh], strict byte 0001ch ; 6b 5e d2 1c ; 0xf2268 + mov es, [bp-026h] ; 8e 46 da ; 0xf226c + add bx, word [bp-028h] ; 03 5e d8 ; 0xf226f + mov byte [es:bx+01eh], al ; 26 88 47 1e ; 0xf2272 + mov bx, strict word 00001h ; bb 01 00 ; 0xf2276 ata.c:541 + mov dx, cx ; 89 ca ; 0xf2279 + mov ax, si ; 89 f0 ; 0xf227b + call 02103h ; e8 83 fe ; 0xf227d + mov dx, word [bp-02eh] ; 8b 56 d2 ; 0xf2280 + inc dx ; 42 ; 0xf2283 + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf2284 + les bx, [bp-028h] ; c4 5e d8 ; 0xf2287 + add bx, dx ; 01 d3 ; 0xf228a + mov byte [es:bx+01eh], al ; 26 88 47 1e ; 0xf228c + lea dx, [di+006h] ; 8d 55 06 ; 0xf2290 ata.c:545 + mov AL, strict byte 008h ; b0 08 ; 0xf2293 + out DX, AL ; ee ; 0xf2295 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2296 ata.c:547 + xor ah, ah ; 30 e4 ; 0xf2299 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf229b + les bx, [bp-028h] ; c4 5e d8 ; 0xf229e + add bx, ax ; 01 c3 ; 0xf22a1 + mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf22a3 + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf22a7 + cmp AL, strict byte 002h ; 3c 02 ; 0xf22aa ata.c:550 + jne short 022f7h ; 75 49 ; 0xf22ac + mov byte [es:bx+01fh], 0ffh ; 26 c6 47 1f ff ; 0xf22ae ata.c:558 + mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf22b3 ata.c:559 + lea dx, [bp-00260h] ; 8d 96 a0 fd ; 0xf22b8 ata.c:560 + mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf22bc + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf22bf + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf22c3 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf22c7 ata.c:561 + mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf22ca + mov cx, strict word 00001h ; b9 01 00 ; 0xf22ce ata.c:563 + mov bx, 000ech ; bb ec 00 ; 0xf22d1 + mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf22d4 + mov dx, es ; 8c c2 ; 0xf22d7 + call 01e4eh ; e8 72 fb ; 0xf22d9 + test ax, ax ; 85 c0 ; 0xf22dc + je short 022ebh ; 74 0b ; 0xf22de + push 0015ch ; 68 5c 01 ; 0xf22e0 ata.c:564 + push strict byte 00007h ; 6a 07 ; 0xf22e3 + call 01953h ; e8 6b f6 ; 0xf22e5 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf22e8 + test byte [bp-00260h], 080h ; f6 86 a0 fd 80 ; 0xf22eb ata.c:566 + je short 022fah ; 74 08 ; 0xf22f0 + mov ax, strict word 00001h ; b8 01 00 ; 0xf22f2 + jmp short 022fch ; eb 05 ; 0xf22f5 + jmp near 024f9h ; e9 ff 01 ; 0xf22f7 + xor ax, ax ; 31 c0 ; 0xf22fa + mov byte [bp-016h], al ; 88 46 ea ; 0xf22fc + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf22ff ata.c:570 + mov word [bp-030h], 00200h ; c7 46 d0 00 02 ; 0xf2303 ata.c:572 + mov ax, word [bp-0025eh] ; 8b 86 a2 fd ; 0xf2308 ata.c:574 + mov word [bp-022h], ax ; 89 46 de ; 0xf230c + mov ax, word [bp-0025ah] ; 8b 86 a6 fd ; 0xf230f ata.c:575 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf2313 + mov ax, word [bp-00254h] ; 8b 86 ac fd ; 0xf2316 ata.c:576 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf231a + mov si, word [bp-001e8h] ; 8b b6 18 fe ; 0xf231d ata.c:578 + mov ax, word [bp-001e6h] ; 8b 86 1a fe ; 0xf2321 + mov word [bp-02ah], ax ; 89 46 d6 ; 0xf2325 + xor ax, ax ; 31 c0 ; 0xf2328 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf232a + mov word [bp-020h], ax ; 89 46 e0 ; 0xf232d + cmp word [bp-02ah], 00fffh ; 81 7e d6 ff 0f ; 0xf2330 ata.c:579 + jne short 02355h ; 75 1e ; 0xf2335 + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf2337 + jne short 02355h ; 75 19 ; 0xf233a + mov ax, word [bp-00192h] ; 8b 86 6e fe ; 0xf233c ata.c:580 + mov word [bp-020h], ax ; 89 46 e0 ; 0xf2340 + mov ax, word [bp-00194h] ; 8b 86 6c fe ; 0xf2343 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf2347 + mov ax, word [bp-00196h] ; 8b 86 6a fe ; 0xf234a + mov word [bp-02ah], ax ; 89 46 d6 ; 0xf234e + mov si, word [bp-00198h] ; 8b b6 68 fe ; 0xf2351 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2355 ata.c:581 + cmp AL, strict byte 001h ; 3c 01 ; 0xf2358 + jc short 02368h ; 72 0c ; 0xf235a + jbe short 02370h ; 76 12 ; 0xf235c + cmp AL, strict byte 003h ; 3c 03 ; 0xf235e + je short 02378h ; 74 16 ; 0xf2360 + cmp AL, strict byte 002h ; 3c 02 ; 0xf2362 + je short 02374h ; 74 0e ; 0xf2364 + jmp short 023a0h ; eb 38 ; 0xf2366 + test al, al ; 84 c0 ; 0xf2368 + jne short 023a0h ; 75 34 ; 0xf236a + mov BL, strict byte 01eh ; b3 1e ; 0xf236c ata.c:584 + jmp short 0237ah ; eb 0a ; 0xf236e ata.c:585 + mov BL, strict byte 026h ; b3 26 ; 0xf2370 ata.c:587 + jmp short 0237ah ; eb 06 ; 0xf2372 ata.c:588 + mov BL, strict byte 067h ; b3 67 ; 0xf2374 ata.c:590 + jmp short 0237ah ; eb 02 ; 0xf2376 ata.c:591 + mov BL, strict byte 070h ; b3 70 ; 0xf2378 ata.c:593 + mov al, bl ; 88 d8 ; 0xf237a ata.c:600 + xor ah, ah ; 30 e4 ; 0xf237c + call 0169ch ; e8 1b f3 ; 0xf237e + mov word [bp-034h], ax ; 89 46 cc ; 0xf2381 + mov al, bl ; 88 d8 ; 0xf2384 ata.c:601 + add AL, strict byte 002h ; 04 02 ; 0xf2386 + xor ah, ah ; 30 e4 ; 0xf2388 + call 01664h ; e8 d7 f2 ; 0xf238a + xor ah, ah ; 30 e4 ; 0xf238d + mov word [bp-036h], ax ; 89 46 ca ; 0xf238f + mov al, bl ; 88 d8 ; 0xf2392 ata.c:602 + add AL, strict byte 007h ; 04 07 ; 0xf2394 + call 01664h ; e8 cb f2 ; 0xf2396 + xor ah, ah ; 30 e4 ; 0xf2399 + mov word [bp-032h], ax ; 89 46 ce ; 0xf239b + jmp short 023b2h ; eb 12 ; 0xf239e ata.c:604 + push word [bp-020h] ; ff 76 e0 ; 0xf23a0 ata.c:605 + push word [bp-01ch] ; ff 76 e4 ; 0xf23a3 + push word [bp-02ah] ; ff 76 d6 ; 0xf23a6 + push si ; 56 ; 0xf23a9 + mov dx, ss ; 8c d2 ; 0xf23aa + lea ax, [bp-036h] ; 8d 46 ca ; 0xf23ac + call 05746h ; e8 94 33 ; 0xf23af + mov bx, 00dcch ; bb cc 0d ; 0xf23b2 ata.c:608 + mov cx, ds ; 8c d9 ; 0xf23b5 + mov ax, strict word 00004h ; b8 04 00 ; 0xf23b7 + call 01910h ; e8 53 f5 ; 0xf23ba + mov ax, word [bp-032h] ; 8b 46 ce ; 0xf23bd + push ax ; 50 ; 0xf23c0 + mov ax, word [bp-036h] ; 8b 46 ca ; 0xf23c1 + push ax ; 50 ; 0xf23c4 + mov ax, word [bp-034h] ; 8b 46 cc ; 0xf23c5 + push ax ; 50 ; 0xf23c8 + push word [bp-01ah] ; ff 76 e6 ; 0xf23c9 + push word [bp-018h] ; ff 76 e8 ; 0xf23cc + push word [bp-022h] ; ff 76 de ; 0xf23cf + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf23d2 + xor ah, ah ; 30 e4 ; 0xf23d5 + push ax ; 50 ; 0xf23d7 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf23d8 + push ax ; 50 ; 0xf23db + push 00185h ; 68 85 01 ; 0xf23dc + push strict byte 00004h ; 6a 04 ; 0xf23df + call 01953h ; e8 6f f5 ; 0xf23e1 + add sp, strict byte 00014h ; 83 c4 14 ; 0xf23e4 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf23e7 ata.c:610 + xor ah, ah ; 30 e4 ; 0xf23ea + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf23ec + les di, [bp-028h] ; c4 7e d8 ; 0xf23ef + add di, ax ; 01 c7 ; 0xf23f2 + mov byte [es:di+01fh], 0ffh ; 26 c6 45 1f ff ; 0xf23f4 + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf23f9 ata.c:611 + mov byte [es:di+020h], al ; 26 88 45 20 ; 0xf23fc + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2400 ata.c:612 + mov byte [es:di+022h], al ; 26 88 45 22 ; 0xf2403 + mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf2407 ata.c:613 + mov word [es:di+024h], ax ; 26 89 45 24 ; 0xf240a + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf240e ata.c:614 + mov word [es:di+02ch], ax ; 26 89 45 2c ; 0xf2411 + mov ax, word [bp-022h] ; 8b 46 de ; 0xf2415 ata.c:615 + mov word [es:di+02eh], ax ; 26 89 45 2e ; 0xf2418 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf241c ata.c:616 + mov word [es:di+030h], ax ; 26 89 45 30 ; 0xf241f + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf2423 ata.c:617 + mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf2426 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf242a + mov word [es:di+036h], ax ; 26 89 45 36 ; 0xf242d + mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf2431 + mov word [es:di+034h], ax ; 26 89 45 34 ; 0xf2434 + mov word [es:di+032h], si ; 26 89 75 32 ; 0xf2438 + lea di, [di+026h] ; 8d 7d 26 ; 0xf243c ata.c:618 + push DS ; 1e ; 0xf243f + push SS ; 16 ; 0xf2440 + pop DS ; 1f ; 0xf2441 + lea si, [bp-036h] ; 8d 76 ca ; 0xf2442 + movsw ; a5 ; 0xf2445 + movsw ; a5 ; 0xf2446 + movsw ; a5 ; 0xf2447 + pop DS ; 1f ; 0xf2448 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2449 ata.c:619 + cmp AL, strict byte 002h ; 3c 02 ; 0xf244c + jnc short 024c3h ; 73 73 ; 0xf244e + test al, al ; 84 c0 ; 0xf2450 ata.c:625 + jne short 02459h ; 75 05 ; 0xf2452 + mov bx, strict word 0003dh ; bb 3d 00 ; 0xf2454 ata.c:626 + jmp short 0245ch ; eb 03 ; 0xf2457 ata.c:627 + mov bx, strict word 0004dh ; bb 4d 00 ; 0xf2459 ata.c:628 + mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xf245c + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf245f ata.c:640 + xor ah, ah ; 30 e4 ; 0xf2462 + imul si, ax, strict byte 00005h ; 6b f0 05 ; 0xf2464 + sal si, 002h ; c1 e6 02 ; 0xf2467 + add si, 00104h ; 81 c6 04 01 ; 0xf246a + xor al, al ; 30 c0 ; 0xf246e + mov es, ax ; 8e c0 ; 0xf2470 + mov word [es:si], bx ; 26 89 1c ; 0xf2472 ata.c:641 + mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf2475 + mov es, cx ; 8e c1 ; 0xf2479 ata.c:647 + mov word [es:bx+00ch], strict word 00000h ; 26 c7 47 0c 00 00 ; 0xf247b + mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf2481 + mov word [es:bx+005h], ax ; 26 89 47 05 ; 0xf2485 + mov word [es:bx+007h], strict word 00000h ; 26 c7 47 07 00 00 ; 0xf2489 + mov ax, word [bp-034h] ; 8b 46 cc ; 0xf248f ata.c:649 + mov word [es:bx], ax ; 26 89 07 ; 0xf2492 + mov al, byte [bp-036h] ; 8a 46 ca ; 0xf2495 ata.c:650 + mov byte [es:bx+002h], al ; 26 88 47 02 ; 0xf2498 + mov byte [es:bx+003h], 0a0h ; 26 c6 47 03 a0 ; 0xf249c ata.c:651 + mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf24a1 ata.c:652 + mov byte [es:bx+004h], al ; 26 88 47 04 ; 0xf24a4 + mov ax, word [bp-022h] ; 8b 46 de ; 0xf24a8 ata.c:653 + mov word [es:bx+009h], ax ; 26 89 47 09 ; 0xf24ab + mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf24af ata.c:654 + mov byte [es:bx+00bh], al ; 26 88 47 0b ; 0xf24b2 + mov al, byte [bp-032h] ; 8a 46 ce ; 0xf24b6 ata.c:655 + mov byte [es:bx+00eh], al ; 26 88 47 0e ; 0xf24b9 + xor al, al ; 30 c0 ; 0xf24bd ata.c:656 + xor ah, ah ; 30 e4 ; 0xf24bf ata.c:657 + jmp short 024cah ; eb 07 ; 0xf24c1 + jmp short 024e3h ; eb 1e ; 0xf24c3 + cmp ah, 00fh ; 80 fc 0f ; 0xf24c5 + jnc short 024dbh ; 73 11 ; 0xf24c8 + mov dl, ah ; 88 e2 ; 0xf24ca ata.c:658 + xor dh, dh ; 30 f6 ; 0xf24cc + mov es, cx ; 8e c1 ; 0xf24ce + mov si, bx ; 89 de ; 0xf24d0 + add si, dx ; 01 d6 ; 0xf24d2 + add al, byte [es:si] ; 26 02 04 ; 0xf24d4 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf24d7 + jmp short 024c5h ; eb ea ; 0xf24d9 + neg al ; f6 d8 ; 0xf24db ata.c:659 + mov es, cx ; 8e c1 ; 0xf24dd ata.c:660 + mov byte [es:bx+00fh], al ; 26 88 47 0f ; 0xf24df + mov bl, byte [bp-010h] ; 8a 5e f0 ; 0xf24e3 ata.c:664 + xor bh, bh ; 30 ff ; 0xf24e6 + mov es, [bp-026h] ; 8e 46 da ; 0xf24e8 + add bx, word [bp-028h] ; 03 5e d8 ; 0xf24eb + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf24ee + mov byte [es:bx+0024fh], al ; 26 88 87 4f 02 ; 0xf24f1 + inc byte [bp-010h] ; fe 46 f0 ; 0xf24f6 ata.c:665 + cmp byte [bp-00eh], 003h ; 80 7e f2 03 ; 0xf24f9 ata.c:669 + jne short 0255ch ; 75 5d ; 0xf24fd + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf24ff ata.c:674 + xor ah, ah ; 30 e4 ; 0xf2502 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2504 + les bx, [bp-028h] ; c4 5e d8 ; 0xf2507 + add bx, ax ; 01 c3 ; 0xf250a + mov byte [es:bx+01fh], 005h ; 26 c6 47 1f 05 ; 0xf250c + mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf2511 ata.c:675 + lea dx, [bp-00260h] ; 8d 96 a0 fd ; 0xf2516 ata.c:676 + mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf251a + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf251d + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf2521 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2525 ata.c:677 + mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf2528 + mov cx, strict word 00001h ; b9 01 00 ; 0xf252c ata.c:679 + mov bx, 000a1h ; bb a1 00 ; 0xf252f + mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf2532 + mov dx, es ; 8c c2 ; 0xf2535 + call 01e4eh ; e8 14 f9 ; 0xf2537 + test ax, ax ; 85 c0 ; 0xf253a + je short 02549h ; 74 0b ; 0xf253c + push 001ach ; 68 ac 01 ; 0xf253e ata.c:680 + push strict byte 00007h ; 6a 07 ; 0xf2541 + call 01953h ; e8 0d f4 ; 0xf2543 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf2546 + mov cl, byte [bp-0025fh] ; 8a 8e a1 fd ; 0xf2549 ata.c:682 + and cl, 01fh ; 80 e1 1f ; 0xf254d + test byte [bp-00260h], 080h ; f6 86 a0 fd 80 ; 0xf2550 ata.c:683 + je short 0255eh ; 74 07 ; 0xf2555 + mov ax, strict word 00001h ; b8 01 00 ; 0xf2557 + jmp short 02560h ; eb 04 ; 0xf255a + jmp short 02593h ; eb 35 ; 0xf255c + xor ax, ax ; 31 c0 ; 0xf255e + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf2560 ata.c:691 + xor dh, dh ; 30 f6 ; 0xf2563 + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf2565 + les bx, [bp-028h] ; c4 5e d8 ; 0xf2568 + add bx, dx ; 01 d3 ; 0xf256b + mov byte [es:bx+01fh], cl ; 26 88 4f 1f ; 0xf256d + mov byte [es:bx+020h], al ; 26 88 47 20 ; 0xf2571 ata.c:692 + mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf2575 ata.c:693 + mov word [es:bx+024h], 00800h ; 26 c7 47 24 00 08 ; 0xf257a ata.c:694 + mov bl, byte [bp-012h] ; 8a 5e ee ; 0xf2580 ata.c:697 + xor bh, bh ; 30 ff ; 0xf2583 + add bx, word [bp-028h] ; 03 5e d8 ; 0xf2585 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2588 + mov byte [es:bx+00264h], al ; 26 88 87 64 02 ; 0xf258b + inc byte [bp-012h] ; fe 46 ee ; 0xf2590 ata.c:698 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2593 ata.c:707 + cmp AL, strict byte 003h ; 3c 03 ; 0xf2596 + je short 025c7h ; 74 2d ; 0xf2598 + cmp AL, strict byte 002h ; 3c 02 ; 0xf259a + jne short 025f7h ; 75 59 ; 0xf259c + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf259e ata.c:709 + xor ah, ah ; 30 e4 ; 0xf25a1 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf25a3 + les di, [bp-028h] ; c4 7e d8 ; 0xf25a6 + add di, ax ; 01 c7 ; 0xf25a9 + mov ax, word [es:di+038h] ; 26 8b 45 38 ; 0xf25ab + mov bx, word [es:di+036h] ; 26 8b 5d 36 ; 0xf25af + mov cx, word [es:di+034h] ; 26 8b 4d 34 ; 0xf25b3 + mov dx, word [es:di+032h] ; 26 8b 55 32 ; 0xf25b7 + mov si, strict word 0000bh ; be 0b 00 ; 0xf25bb + call 0aa10h ; e8 4f 84 ; 0xf25be + mov word [bp-01eh], dx ; 89 56 e2 ; 0xf25c1 + mov word [bp-024h], cx ; 89 4e dc ; 0xf25c4 + mov al, byte [bp-001bfh] ; 8a 86 41 fe ; 0xf25c7 ata.c:712 + xor ah, ah ; 30 e4 ; 0xf25cb + mov dx, ax ; 89 c2 ; 0xf25cd + sal dx, 008h ; c1 e2 08 ; 0xf25cf + mov al, byte [bp-001c0h] ; 8a 86 40 fe ; 0xf25d2 + or dx, ax ; 09 c2 ; 0xf25d6 + mov byte [bp-00ch], 00fh ; c6 46 f4 0f ; 0xf25d8 ata.c:713 + jmp short 025e7h ; eb 09 ; 0xf25dc + dec byte [bp-00ch] ; fe 4e f4 ; 0xf25de ata.c:716 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf25e1 + jbe short 025f3h ; 76 0c ; 0xf25e5 + mov cl, byte [bp-00ch] ; 8a 4e f4 ; 0xf25e7 + mov ax, strict word 00001h ; b8 01 00 ; 0xf25ea + sal ax, CL ; d3 e0 ; 0xf25ed + test dx, ax ; 85 c2 ; 0xf25ef + je short 025deh ; 74 eb ; 0xf25f1 + xor di, di ; 31 ff ; 0xf25f3 ata.c:719 + jmp short 025feh ; eb 07 ; 0xf25f5 + jmp short 0262dh ; eb 34 ; 0xf25f7 + cmp di, strict byte 00014h ; 83 ff 14 ; 0xf25f9 + jnl short 02613h ; 7d 15 ; 0xf25fc + mov si, di ; 89 fe ; 0xf25fe ata.c:720 + add si, di ; 01 fe ; 0xf2600 + mov al, byte [bp+si-00229h] ; 8a 82 d7 fd ; 0xf2602 + mov byte [bp+si-060h], al ; 88 42 a0 ; 0xf2606 + mov al, byte [bp+si-0022ah] ; 8a 82 d6 fd ; 0xf2609 ata.c:721 + mov byte [bp+si-05fh], al ; 88 42 a1 ; 0xf260d + inc di ; 47 ; 0xf2610 ata.c:722 + jmp short 025f9h ; eb e6 ; 0xf2611 + mov byte [bp-038h], 000h ; c6 46 c8 00 ; 0xf2613 ata.c:725 + mov di, strict word 00027h ; bf 27 00 ; 0xf2617 ata.c:726 + jmp short 02621h ; eb 05 ; 0xf261a + dec di ; 4f ; 0xf261c ata.c:731 + test di, di ; 85 ff ; 0xf261d + jle short 0262dh ; 7e 0c ; 0xf261f + cmp byte [bp+di-060h], 020h ; 80 7b a0 20 ; 0xf2621 + jne short 0262dh ; 75 06 ; 0xf2625 + mov byte [bp+di-060h], 000h ; c6 43 a0 00 ; 0xf2627 + jmp short 0261ch ; eb ef ; 0xf262b + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf262d ata.c:738 + cmp AL, strict byte 003h ; 3c 03 ; 0xf2630 + je short 02691h ; 74 5d ; 0xf2632 + cmp AL, strict byte 002h ; 3c 02 ; 0xf2634 + je short 0263fh ; 74 07 ; 0xf2636 + cmp AL, strict byte 001h ; 3c 01 ; 0xf2638 + je short 0269ch ; 74 60 ; 0xf263a + jmp near 0271dh ; e9 de 00 ; 0xf263c + cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf263f ata.c:741 + je short 0264ah ; 74 05 ; 0xf2643 + mov ax, 001d7h ; b8 d7 01 ; 0xf2645 + jmp short 0264dh ; eb 03 ; 0xf2648 + mov ax, 001deh ; b8 de 01 ; 0xf264a + push ax ; 50 ; 0xf264d + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf264e + xor ah, ah ; 30 e4 ; 0xf2651 + push ax ; 50 ; 0xf2653 + push 001e5h ; 68 e5 01 ; 0xf2654 + push strict byte 00002h ; 6a 02 ; 0xf2657 + call 01953h ; e8 f7 f2 ; 0xf2659 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf265c + xor di, di ; 31 ff ; 0xf265f ata.c:742 + mov al, byte [bp+di-060h] ; 8a 43 a0 ; 0xf2661 ata.c:743 + xor ah, ah ; 30 e4 ; 0xf2664 + inc di ; 47 ; 0xf2666 + test ax, ax ; 85 c0 ; 0xf2667 + je short 02679h ; 74 0e ; 0xf2669 + push ax ; 50 ; 0xf266b ata.c:744 + push 001f0h ; 68 f0 01 ; 0xf266c + push strict byte 00002h ; 6a 02 ; 0xf266f + call 01953h ; e8 df f2 ; 0xf2671 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf2674 + jmp short 02661h ; eb e8 ; 0xf2677 + push word [bp-024h] ; ff 76 dc ; 0xf2679 ata.c:745 + push word [bp-01eh] ; ff 76 e2 ; 0xf267c + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf267f + push ax ; 50 ; 0xf2682 + push 001f3h ; 68 f3 01 ; 0xf2683 + push strict byte 00002h ; 6a 02 ; 0xf2686 + call 01953h ; e8 c8 f2 ; 0xf2688 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf268b + jmp near 0271dh ; e9 8c 00 ; 0xf268e ata.c:746 + cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf2691 ata.c:748 + je short 0269eh ; 74 07 ; 0xf2695 + mov ax, 001d7h ; b8 d7 01 ; 0xf2697 + jmp short 026a1h ; eb 05 ; 0xf269a + jmp short 026fdh ; eb 5f ; 0xf269c + mov ax, 001deh ; b8 de 01 ; 0xf269e + push ax ; 50 ; 0xf26a1 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf26a2 + xor ah, ah ; 30 e4 ; 0xf26a5 + push ax ; 50 ; 0xf26a7 + push 001e5h ; 68 e5 01 ; 0xf26a8 + push strict byte 00002h ; 6a 02 ; 0xf26ab + call 01953h ; e8 a3 f2 ; 0xf26ad + add sp, strict byte 00008h ; 83 c4 08 ; 0xf26b0 + xor di, di ; 31 ff ; 0xf26b3 ata.c:749 + mov al, byte [bp+di-060h] ; 8a 43 a0 ; 0xf26b5 ata.c:750 + xor ah, ah ; 30 e4 ; 0xf26b8 + inc di ; 47 ; 0xf26ba + test ax, ax ; 85 c0 ; 0xf26bb + je short 026cdh ; 74 0e ; 0xf26bd + push ax ; 50 ; 0xf26bf ata.c:751 + push 001f0h ; 68 f0 01 ; 0xf26c0 + push strict byte 00002h ; 6a 02 ; 0xf26c3 + call 01953h ; e8 8b f2 ; 0xf26c5 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf26c8 + jmp short 026b5h ; eb e8 ; 0xf26cb + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf26cd ata.c:752 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf26d0 + les bx, [bp-028h] ; c4 5e d8 ; 0xf26d3 + add bx, ax ; 01 c3 ; 0xf26d6 + cmp byte [es:bx+01fh], 005h ; 26 80 7f 1f 05 ; 0xf26d8 + jne short 026eah ; 75 0b ; 0xf26dd + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf26df ata.c:753 + xor ah, ah ; 30 e4 ; 0xf26e2 + push ax ; 50 ; 0xf26e4 + push 00213h ; 68 13 02 ; 0xf26e5 + jmp short 026f3h ; eb 09 ; 0xf26e8 ata.c:754 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf26ea ata.c:755 + xor ah, ah ; 30 e4 ; 0xf26ed + push ax ; 50 ; 0xf26ef + push 0022dh ; 68 2d 02 ; 0xf26f0 + push strict byte 00002h ; 6a 02 ; 0xf26f3 + call 01953h ; e8 5b f2 ; 0xf26f5 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf26f8 + jmp short 0271dh ; eb 20 ; 0xf26fb ata.c:756 + cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf26fd ata.c:758 + je short 02708h ; 74 05 ; 0xf2701 + mov ax, 001d7h ; b8 d7 01 ; 0xf2703 + jmp short 0270bh ; eb 03 ; 0xf2706 + mov ax, 001deh ; b8 de 01 ; 0xf2708 + push ax ; 50 ; 0xf270b + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf270c + xor ah, ah ; 30 e4 ; 0xf270f + push ax ; 50 ; 0xf2711 + push 0023fh ; 68 3f 02 ; 0xf2712 + push strict byte 00002h ; 6a 02 ; 0xf2715 + call 01953h ; e8 39 f2 ; 0xf2717 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf271a + inc byte [bp-008h] ; fe 46 f8 ; 0xf271d ata.c:763 + cmp byte [bp-008h], 008h ; 80 7e f8 08 ; 0xf2720 + jnc short 0276eh ; 73 48 ; 0xf2724 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf2726 + xor bh, bh ; 30 ff ; 0xf2729 + mov ax, bx ; 89 d8 ; 0xf272b + cwd ; 99 ; 0xf272d + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf272e + sar ax, 1 ; d1 f8 ; 0xf2730 + mov word [bp-02eh], ax ; 89 46 d2 ; 0xf2732 + mov al, byte [bp-02eh] ; 8a 46 d2 ; 0xf2735 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf2738 + mov ax, bx ; 89 d8 ; 0xf273b + cwd ; 99 ; 0xf273d + mov bx, strict word 00002h ; bb 02 00 ; 0xf273e + idiv bx ; f7 fb ; 0xf2741 + mov cx, dx ; 89 d1 ; 0xf2743 + mov byte [bp-014h], dl ; 88 56 ec ; 0xf2745 + mov al, byte [bp-02eh] ; 8a 46 d2 ; 0xf2748 + xor ah, ah ; 30 e4 ; 0xf274b + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf274d + les bx, [bp-028h] ; c4 5e d8 ; 0xf2750 + add bx, ax ; 01 c3 ; 0xf2753 + mov si, word [es:bx+0027ah] ; 26 8b b7 7a 02 ; 0xf2755 + mov di, word [es:bx+0027ch] ; 26 8b bf 7c 02 ; 0xf275a + lea dx, [si+007h] ; 8d 54 07 ; 0xf275f + in AL, DX ; ec ; 0xf2762 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2763 + cmp AL, strict byte 0ffh ; 3c ff ; 0xf2765 + je short 0276ch ; 74 03 ; 0xf2767 + jmp near 0222fh ; e9 c3 fa ; 0xf2769 + jmp short 0271dh ; eb af ; 0xf276c + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf276e ata.c:766 + les bx, [bp-028h] ; c4 5e d8 ; 0xf2771 + mov byte [es:bx+0024eh], al ; 26 88 87 4e 02 ; 0xf2774 + mov al, byte [bp-012h] ; 8a 46 ee ; 0xf2779 ata.c:767 + mov byte [es:bx+00263h], al ; 26 88 87 63 02 ; 0xf277c + mov bx, strict word 00075h ; bb 75 00 ; 0xf2781 ata.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2784 + mov es, ax ; 8e c0 ; 0xf2787 + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf2789 + mov byte [es:bx], al ; 26 88 07 ; 0xf278c + lea sp, [bp-004h] ; 8d 66 fc ; 0xf278f ata.c:780 + pop di ; 5f ; 0xf2792 + pop si ; 5e ; 0xf2793 + pop bp ; 5d ; 0xf2794 + retn ; c3 ; 0xf2795 + ; disGetNextSymbol 0xf2796 LB 0x85c2 -> off=0x0 cb=000000000000028a uValue=00000000000f1196 'ata_cmd_data_out' +ata_cmd_data_out: ; 0xf2796 LB 0x28a + push bp ; 55 ; 0xf2796 ata.c:794 + mov bp, sp ; 89 e5 ; 0xf2797 + push si ; 56 ; 0xf2799 + push di ; 57 ; 0xf279a + sub sp, strict byte 00020h ; 83 ec 20 ; 0xf279b + mov di, ax ; 89 c7 ; 0xf279e + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf27a0 + mov word [bp-01eh], bx ; 89 5e e2 ; 0xf27a3 + mov word [bp-022h], cx ; 89 4e de ; 0xf27a6 + mov es, dx ; 8e c2 ; 0xf27a9 ata.c:806 + mov al, byte [es:di+00ch] ; 26 8a 45 0c ; 0xf27ab + xor ah, ah ; 30 e4 ; 0xf27af + mov dx, ax ; 89 c2 ; 0xf27b1 + shr ax, 1 ; d1 e8 ; 0xf27b3 ata.c:807 + and dl, 001h ; 80 e2 01 ; 0xf27b5 ata.c:808 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf27b8 + xor ah, ah ; 30 e4 ; 0xf27bb ata.c:810 + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf27bd + mov bx, di ; 89 fb ; 0xf27c0 + add bx, ax ; 01 c3 ; 0xf27c2 + mov ax, word [es:bx+0027ah] ; 26 8b 87 7a 02 ; 0xf27c4 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf27c9 + mov ax, word [es:bx+0027ch] ; 26 8b 87 7c 02 ; 0xf27cc ata.c:811 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf27d1 + mov word [bp-020h], 00100h ; c7 46 e0 00 01 ; 0xf27d4 ata.c:819 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf27d9 ata.c:821 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf27dc + in AL, DX ; ec ; 0xf27df + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf27e0 + test AL, strict byte 080h ; a8 80 ; 0xf27e2 ata.c:822 + je short 027f5h ; 74 0f ; 0xf27e4 + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf27e6 ata.c:825 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf27e9 + mov AL, strict byte 008h ; b0 08 ; 0xf27ec + out DX, AL ; ee ; 0xf27ee + mov ax, strict word 00001h ; b8 01 00 ; 0xf27ef ata.c:826 + jmp near 02a19h ; e9 24 02 ; 0xf27f2 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf27f5 ata.c:829 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf27f8 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf27fc + mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf27ff + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2803 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf2806 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf280a + mov ax, word [es:di] ; 26 8b 05 ; 0xf280d + mov word [bp-024h], ax ; 89 46 dc ; 0xf2810 + mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf2813 ata.c:830 + mov word [bp-016h], ax ; 89 46 ea ; 0xf2817 + mov ax, word [es:di+00ah] ; 26 8b 45 0a ; 0xf281a + mov word [bp-012h], ax ; 89 46 ee ; 0xf281e + mov ax, word [es:di+016h] ; 26 8b 45 16 ; 0xf2821 ata.c:831 + mov word [bp-014h], ax ; 89 46 ec ; 0xf2825 + mov ax, word [es:di+012h] ; 26 8b 45 12 ; 0xf2828 ata.c:832 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf282c + mov ax, word [es:di+014h] ; 26 8b 45 14 ; 0xf282f ata.c:833 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf2833 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf2836 ata.c:836 + test ax, ax ; 85 c0 ; 0xf2839 + je short 02840h ; 74 03 ; 0xf283b + jmp near 02907h ; e9 c7 00 ; 0xf283d + xor bx, bx ; 31 db ; 0xf2840 ata.c:837 + xor dx, dx ; 31 d2 ; 0xf2842 + mov si, word [bp-024h] ; 8b 76 dc ; 0xf2844 + add si, word [bp-022h] ; 03 76 de ; 0xf2847 + adc bx, word [bp-010h] ; 13 5e f0 ; 0xf284a + adc ax, word [bp-00eh] ; 13 46 f2 ; 0xf284d + adc dx, word [bp-00ch] ; 13 56 f4 ; 0xf2850 + test dx, dx ; 85 d2 ; 0xf2853 + jnbe short 02867h ; 77 10 ; 0xf2855 + jne short 028cah ; 75 71 ; 0xf2857 + test ax, ax ; 85 c0 ; 0xf2859 + jnbe short 02867h ; 77 0a ; 0xf285b + jne short 028cah ; 75 6b ; 0xf285d + cmp bx, 01000h ; 81 fb 00 10 ; 0xf285f + jnbe short 02867h ; 77 02 ; 0xf2863 + jne short 028cah ; 75 63 ; 0xf2865 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2867 ata.c:839 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf286a + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf286d + mov dx, word [bp-024h] ; 8b 56 dc ; 0xf2870 + mov si, strict word 00018h ; be 18 00 ; 0xf2873 + call 0aa10h ; e8 97 81 ; 0xf2876 + xor dh, dh ; 30 f6 ; 0xf2879 + mov word [bp-014h], dx ; 89 56 ec ; 0xf287b + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf287e ata.c:840 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf2881 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf2884 + mov dx, word [bp-024h] ; 8b 56 dc ; 0xf2887 + mov si, strict word 00020h ; be 20 00 ; 0xf288a + call 0aa10h ; e8 80 81 ; 0xf288d + mov bx, dx ; 89 d3 ; 0xf2890 + mov ax, word [bp-022h] ; 8b 46 de ; 0xf2892 ata.c:841 + xor al, al ; 30 c0 ; 0xf2895 + shr ax, 008h ; c1 e8 08 ; 0xf2897 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf289a + inc dx ; 42 ; 0xf289d + inc dx ; 42 ; 0xf289e + out DX, AL ; ee ; 0xf289f + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28a0 ata.c:842 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf28a3 + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf28a6 + out DX, AL ; ee ; 0xf28a9 + mov ax, bx ; 89 d8 ; 0xf28aa ata.c:843 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28ac + add dx, strict byte 00004h ; 83 c2 04 ; 0xf28af + out DX, AL ; ee ; 0xf28b2 + shr ax, 008h ; c1 e8 08 ; 0xf28b3 ata.c:844 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28b6 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf28b9 + out DX, AL ; ee ; 0xf28bc + xor al, al ; 30 c0 ; 0xf28bd ata.c:847 + mov byte [bp-00fh], al ; 88 46 f1 ; 0xf28bf + xor ah, ah ; 30 e4 ; 0xf28c2 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf28c4 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf28c7 + mov ax, word [bp-024h] ; 8b 46 dc ; 0xf28ca ata.c:849 + xor ah, ah ; 30 e4 ; 0xf28cd + mov word [bp-014h], ax ; 89 46 ec ; 0xf28cf + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf28d2 ata.c:850 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf28d5 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf28d8 + mov dx, word [bp-024h] ; 8b 56 dc ; 0xf28db + mov si, strict word 00008h ; be 08 00 ; 0xf28de + call 0aa10h ; e8 2c 81 ; 0xf28e1 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf28e4 + mov word [bp-00eh], bx ; 89 5e f2 ; 0xf28e7 + mov word [bp-010h], cx ; 89 4e f0 ; 0xf28ea + mov word [bp-024h], dx ; 89 56 dc ; 0xf28ed + mov word [bp-018h], dx ; 89 56 e8 ; 0xf28f0 ata.c:851 + mov si, strict word 00010h ; be 10 00 ; 0xf28f3 ata.c:852 + call 0aa10h ; e8 17 81 ; 0xf28f6 + mov word [bp-024h], dx ; 89 56 dc ; 0xf28f9 + mov ax, dx ; 89 d0 ; 0xf28fc ata.c:853 + xor ah, dh ; 30 f4 ; 0xf28fe + and AL, strict byte 00fh ; 24 0f ; 0xf2900 + or AL, strict byte 040h ; 0c 40 ; 0xf2902 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf2904 + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf2907 ata.c:856 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf290a + mov AL, strict byte 00ah ; b0 0a ; 0xf290d + out DX, AL ; ee ; 0xf290f + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2910 ata.c:857 + inc dx ; 42 ; 0xf2913 + xor al, al ; 30 c0 ; 0xf2914 + out DX, AL ; ee ; 0xf2916 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2917 ata.c:858 + inc dx ; 42 ; 0xf291a + inc dx ; 42 ; 0xf291b + mov al, byte [bp-022h] ; 8a 46 de ; 0xf291c + out DX, AL ; ee ; 0xf291f + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2920 ata.c:859 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf2923 + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2926 + out DX, AL ; ee ; 0xf2929 + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf292a ata.c:860 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf292d + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2930 + out DX, AL ; ee ; 0xf2933 + shr ax, 008h ; c1 e8 08 ; 0xf2934 ata.c:861 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2937 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf293a + out DX, AL ; ee ; 0xf293d + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf293e ata.c:862 + je short 02949h ; 74 05 ; 0xf2942 + mov ax, 000b0h ; b8 b0 00 ; 0xf2944 + jmp short 0294ch ; eb 03 ; 0xf2947 + mov ax, 000a0h ; b8 a0 00 ; 0xf2949 + mov dl, byte [bp-01ch] ; 8a 56 e4 ; 0xf294c + xor dh, dh ; 30 f6 ; 0xf294f + or ax, dx ; 09 d0 ; 0xf2951 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2953 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2956 + out DX, AL ; ee ; 0xf2959 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf295a ata.c:863 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf295d + mov al, byte [bp-01eh] ; 8a 46 e2 ; 0xf2960 + out DX, AL ; ee ; 0xf2963 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2964 ata.c:866 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2967 + in AL, DX ; ec ; 0xf296a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf296b + mov bl, al ; 88 c3 ; 0xf296d + test AL, strict byte 080h ; a8 80 ; 0xf296f ata.c:867 + jne short 02964h ; 75 f1 ; 0xf2971 + test AL, strict byte 001h ; a8 01 ; 0xf2973 ata.c:871 + je short 02986h ; 74 0f ; 0xf2975 + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf2977 ata.c:874 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf297a + mov AL, strict byte 008h ; b0 08 ; 0xf297d + out DX, AL ; ee ; 0xf297f + mov ax, strict word 00002h ; b8 02 00 ; 0xf2980 ata.c:875 + jmp near 02a19h ; e9 93 00 ; 0xf2983 + test bl, 008h ; f6 c3 08 ; 0xf2986 ata.c:876 + jne short 0299ah ; 75 0f ; 0xf2989 + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf298b ata.c:879 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf298e + mov AL, strict byte 008h ; b0 08 ; 0xf2991 + out DX, AL ; ee ; 0xf2993 + mov ax, strict word 00003h ; b8 03 00 ; 0xf2994 ata.c:880 + jmp near 02a19h ; e9 7f 00 ; 0xf2997 + sti ; fb ; 0xf299a ata.c:885 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf299b ata.c:890 + cmp ax, 0f800h ; 3d 00 f8 ; 0xf299e + jc short 029b3h ; 72 10 ; 0xf29a1 + sub ax, 00800h ; 2d 00 08 ; 0xf29a3 ata.c:891 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf29a6 + add dx, 00080h ; 81 c2 80 00 ; 0xf29a9 + mov word [bp-016h], ax ; 89 46 ea ; 0xf29ad + mov word [bp-012h], dx ; 89 56 ee ; 0xf29b0 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf29b3 ata.c:898 + mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf29b6 + mov si, word [bp-016h] ; 8b 76 ea ; 0xf29b9 + mov es, [bp-012h] ; 8e 46 ee ; 0xf29bc + db 0f3h, 026h, 06fh + ; rep es outsw ; f3 26 6f ; 0xf29bf + mov word [bp-016h], si ; 89 76 ea ; 0xf29c2 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf29c5 ata.c:900 + inc word [es:di+018h] ; 26 ff 45 18 ; 0xf29c8 + dec word [bp-022h] ; ff 4e de ; 0xf29cc ata.c:901 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf29cf ata.c:903 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf29d2 + in AL, DX ; ec ; 0xf29d5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf29d6 + mov bl, al ; 88 c3 ; 0xf29d8 + test AL, strict byte 080h ; a8 80 ; 0xf29da ata.c:904 + jne short 029cfh ; 75 f1 ; 0xf29dc + cmp word [bp-022h], strict byte 00000h ; 83 7e de 00 ; 0xf29de ata.c:907 + jne short 029f8h ; 75 14 ; 0xf29e2 + and AL, strict byte 0e9h ; 24 e9 ; 0xf29e4 ata.c:908 + cmp AL, strict byte 040h ; 3c 40 ; 0xf29e6 + je short 02a0eh ; 74 24 ; 0xf29e8 + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf29ea ata.c:912 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf29ed + mov AL, strict byte 008h ; b0 08 ; 0xf29f0 + out DX, AL ; ee ; 0xf29f2 + mov ax, strict word 00006h ; b8 06 00 ; 0xf29f3 ata.c:913 + jmp short 02a19h ; eb 21 ; 0xf29f6 + mov al, bl ; 88 d8 ; 0xf29f8 ata.c:918 + and AL, strict byte 0c9h ; 24 c9 ; 0xf29fa + cmp AL, strict byte 048h ; 3c 48 ; 0xf29fc + je short 0299bh ; 74 9b ; 0xf29fe + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf2a00 ata.c:922 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a03 + mov AL, strict byte 008h ; b0 08 ; 0xf2a06 + out DX, AL ; ee ; 0xf2a08 + mov ax, strict word 00007h ; b8 07 00 ; 0xf2a09 ata.c:923 + jmp short 02a19h ; eb 0b ; 0xf2a0c + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf2a0e ata.c:929 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a11 + mov AL, strict byte 008h ; b0 08 ; 0xf2a14 + out DX, AL ; ee ; 0xf2a16 + xor ax, ax ; 31 c0 ; 0xf2a17 ata.c:930 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2a19 ata.c:931 + pop di ; 5f ; 0xf2a1c + pop si ; 5e ; 0xf2a1d + pop bp ; 5d ; 0xf2a1e + retn ; c3 ; 0xf2a1f + ; disGetNextSymbol 0xf2a20 LB 0x8338 -> off=0x0 cb=00000000000000b5 uValue=00000000000f1420 'ata_read_sectors' +ata_read_sectors: ; 0xf2a20 LB 0xb5 + push bp ; 55 ; 0xf2a20 ata.c:941 + mov bp, sp ; 89 e5 ; 0xf2a21 + push si ; 56 ; 0xf2a23 + push di ; 57 ; 0xf2a24 + sub sp, strict byte 00008h ; 83 ec 08 ; 0xf2a25 + mov si, word [bp+004h] ; 8b 76 04 ; 0xf2a28 + mov es, [bp+006h] ; 8e 46 06 ; 0xf2a2b ata.c:947 + mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf2a2e + mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2a32 ata.c:948 + mov dx, cx ; 89 ca ; 0xf2a36 + sal dx, 009h ; c1 e2 09 ; 0xf2a38 + cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2a3b ata.c:950 + je short 02a61h ; 74 1f ; 0xf2a40 + xor ah, ah ; 30 e4 ; 0xf2a42 ata.c:952 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2a44 + mov [bp-00ch], es ; 8c 46 f4 ; 0xf2a47 + mov di, si ; 89 f7 ; 0xf2a4a + add di, ax ; 01 c7 ; 0xf2a4c + mov word [es:di+024h], dx ; 26 89 55 24 ; 0xf2a4e + mov bx, 000c4h ; bb c4 00 ; 0xf2a52 ata.c:954 + mov ax, si ; 89 f0 ; 0xf2a55 + mov dx, es ; 8c c2 ; 0xf2a57 + call 01e4eh ; e8 f2 f3 ; 0xf2a59 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf2a5c ata.c:955 + jmp short 02ac6h ; eb 65 ; 0xf2a5f ata.c:956 + xor bx, bx ; 31 db ; 0xf2a61 ata.c:958 + mov word [bp-00ch], bx ; 89 5e f4 ; 0xf2a63 + mov word [bp-006h], bx ; 89 5e fa ; 0xf2a66 + mov di, word [es:si] ; 26 8b 3c ; 0xf2a69 + add di, cx ; 01 cf ; 0xf2a6c + mov word [bp-00ah], di ; 89 7e f6 ; 0xf2a6e + mov di, word [es:si+002h] ; 26 8b 7c 02 ; 0xf2a71 + adc di, bx ; 11 df ; 0xf2a75 + mov word [bp-008h], di ; 89 7e f8 ; 0xf2a77 + mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf2a7a + adc bx, word [bp-00ch] ; 13 5e f4 ; 0xf2a7e + mov di, word [es:si+006h] ; 26 8b 7c 06 ; 0xf2a81 + adc di, word [bp-006h] ; 13 7e fa ; 0xf2a85 + test di, di ; 85 ff ; 0xf2a88 + jnbe short 02a9dh ; 77 11 ; 0xf2a8a + jne short 02aa9h ; 75 1b ; 0xf2a8c + test bx, bx ; 85 db ; 0xf2a8e + jnbe short 02a9dh ; 77 0b ; 0xf2a90 + jne short 02aa9h ; 75 15 ; 0xf2a92 + cmp word [bp-008h], 01000h ; 81 7e f8 00 10 ; 0xf2a94 + jnbe short 02a9dh ; 77 02 ; 0xf2a99 + jne short 02aa9h ; 75 0c ; 0xf2a9b + mov bx, strict word 00024h ; bb 24 00 ; 0xf2a9d ata.c:960 + mov ax, si ; 89 f0 ; 0xf2aa0 + mov dx, es ; 8c c2 ; 0xf2aa2 + call 01e4eh ; e8 a7 f3 ; 0xf2aa4 + jmp short 02acch ; eb 23 ; 0xf2aa7 ata.c:961 + xor ah, ah ; 30 e4 ; 0xf2aa9 ata.c:962 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2aab + mov [bp-006h], es ; 8c 46 fa ; 0xf2aae + mov di, si ; 89 f7 ; 0xf2ab1 + add di, ax ; 01 c7 ; 0xf2ab3 + mov word [es:di+024h], dx ; 26 89 55 24 ; 0xf2ab5 + mov bx, 000c4h ; bb c4 00 ; 0xf2ab9 ata.c:964 + mov ax, si ; 89 f0 ; 0xf2abc + mov dx, es ; 8c c2 ; 0xf2abe + call 01e4eh ; e8 8b f3 ; 0xf2ac0 + mov es, [bp-006h] ; 8e 46 fa ; 0xf2ac3 ata.c:965 + mov word [es:di+024h], 00200h ; 26 c7 45 24 00 02 ; 0xf2ac6 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2acc ata.c:969 + pop di ; 5f ; 0xf2acf + pop si ; 5e ; 0xf2ad0 + pop bp ; 5d ; 0xf2ad1 + retn 00004h ; c2 04 00 ; 0xf2ad2 + ; disGetNextSymbol 0xf2ad5 LB 0x8283 -> off=0x0 cb=000000000000005b uValue=00000000000f14d5 'ata_write_sectors' +ata_write_sectors: ; 0xf2ad5 LB 0x5b + push bp ; 55 ; 0xf2ad5 ata.c:978 + mov bp, sp ; 89 e5 ; 0xf2ad6 + push si ; 56 ; 0xf2ad8 + push di ; 57 ; 0xf2ad9 + push ax ; 50 ; 0xf2ada + les si, [bp+004h] ; c4 76 04 ; 0xf2adb + mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2ade ata.c:982 + cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2ae2 ata.c:984 + je short 02af5h ; 74 0c ; 0xf2ae7 + mov bx, strict word 00030h ; bb 30 00 ; 0xf2ae9 ata.c:986 + mov ax, si ; 89 f0 ; 0xf2aec + mov dx, es ; 8c c2 ; 0xf2aee + call 02796h ; e8 a3 fc ; 0xf2af0 + jmp short 02b27h ; eb 32 ; 0xf2af3 + xor ax, ax ; 31 c0 ; 0xf2af5 ata.c:989 + xor bx, bx ; 31 db ; 0xf2af7 + xor dx, dx ; 31 d2 ; 0xf2af9 + mov di, word [es:si] ; 26 8b 3c ; 0xf2afb + add di, cx ; 01 cf ; 0xf2afe + mov word [bp-006h], di ; 89 7e fa ; 0xf2b00 + adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf2b03 + adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf2b07 + adc dx, word [es:si+006h] ; 26 13 54 06 ; 0xf2b0b + test dx, dx ; 85 d2 ; 0xf2b0f + jnbe short 02b22h ; 77 0f ; 0xf2b11 + jne short 02ae9h ; 75 d4 ; 0xf2b13 + test bx, bx ; 85 db ; 0xf2b15 + jnbe short 02b22h ; 77 09 ; 0xf2b17 + jne short 02ae9h ; 75 ce ; 0xf2b19 + cmp ax, 01000h ; 3d 00 10 ; 0xf2b1b + jnbe short 02b22h ; 77 02 ; 0xf2b1e + jne short 02ae9h ; 75 c7 ; 0xf2b20 + mov bx, strict word 00034h ; bb 34 00 ; 0xf2b22 ata.c:990 + jmp short 02aech ; eb c5 ; 0xf2b25 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2b27 ata.c:994 + pop di ; 5f ; 0xf2b2a + pop si ; 5e ; 0xf2b2b + pop bp ; 5d ; 0xf2b2c + retn 00004h ; c2 04 00 ; 0xf2b2d + ; disGetNextSymbol 0xf2b30 LB 0x8228 -> off=0x0 cb=000000000000020f uValue=00000000000f1530 'ata_cmd_packet' +ata_cmd_packet: ; 0xf2b30 LB 0x20f + push bp ; 55 ; 0xf2b30 ata.c:1006 + mov bp, sp ; 89 e5 ; 0xf2b31 + push si ; 56 ; 0xf2b33 + push di ; 57 ; 0xf2b34 + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf2b35 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf2b38 + mov di, bx ; 89 df ; 0xf2b3b + mov word [bp-012h], cx ; 89 4e ee ; 0xf2b3d + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2b40 ata.c:58 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2b43 + mov es, dx ; 8e c2 ; 0xf2b46 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf2b48 + mov bx, strict word 0005eh ; bb 5e 00 ; 0xf2b4b ata.c:59 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf2b4e + mov dx, ax ; 89 c2 ; 0xf2b51 ata.c:1018 + shr dx, 1 ; d1 ea ; 0xf2b53 + mov ah, dl ; 88 d4 ; 0xf2b55 + mov cl, al ; 88 c1 ; 0xf2b57 ata.c:1019 + and cl, 001h ; 80 e1 01 ; 0xf2b59 + cmp byte [bp+008h], 002h ; 80 7e 08 02 ; 0xf2b5c ata.c:1022 + jne short 02b81h ; 75 1f ; 0xf2b60 + mov bx, 00dcch ; bb cc 0d ; 0xf2b62 ata.c:1023 + mov cx, ds ; 8c d9 ; 0xf2b65 + mov ax, strict word 00004h ; b8 04 00 ; 0xf2b67 + call 01910h ; e8 a3 ed ; 0xf2b6a + push 00259h ; 68 59 02 ; 0xf2b6d + push 00268h ; 68 68 02 ; 0xf2b70 + push strict byte 00004h ; 6a 04 ; 0xf2b73 + call 01953h ; e8 db ed ; 0xf2b75 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf2b78 + mov ax, strict word 00001h ; b8 01 00 ; 0xf2b7b ata.c:1024 + jmp near 02d36h ; e9 b5 01 ; 0xf2b7e + mov al, ah ; 88 e0 ; 0xf2b81 ata.c:1027 + xor ah, ah ; 30 e4 ; 0xf2b83 + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf2b85 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2b88 + mov si, bx ; 89 de ; 0xf2b8b + add si, ax ; 01 c6 ; 0xf2b8d + mov ax, word [es:si+0027ah] ; 26 8b 84 7a 02 ; 0xf2b8f + mov word [bp-008h], ax ; 89 46 f8 ; 0xf2b94 + mov ax, word [es:si+0027ch] ; 26 8b 84 7c 02 ; 0xf2b97 ata.c:1028 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2b9c + xor ax, ax ; 31 c0 ; 0xf2b9f ata.c:1030 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf2ba1 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2ba4 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2ba7 ata.c:1032 + cmp AL, strict byte 00ch ; 3c 0c ; 0xf2baa + jnc short 02bb4h ; 73 06 ; 0xf2bac + mov byte [bp-006h], 00ch ; c6 46 fa 0c ; 0xf2bae ata.c:1033 + jmp short 02bbah ; eb 06 ; 0xf2bb2 + jbe short 02bbah ; 76 04 ; 0xf2bb4 ata.c:1034 + mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf2bb6 ata.c:1035 + shr byte [bp-006h], 1 ; d0 6e fa ; 0xf2bba ata.c:1036 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2bbd ata.c:1040 + mov word [es:bx+018h], strict word 00000h ; 26 c7 47 18 00 00 ; 0xf2bc0 + mov word [es:bx+01ah], strict word 00000h ; 26 c7 47 1a 00 00 ; 0xf2bc6 ata.c:1041 + mov word [es:bx+01ch], strict word 00000h ; 26 c7 47 1c 00 00 ; 0xf2bcc + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2bd2 ata.c:1043 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2bd5 + in AL, DX ; ec ; 0xf2bd8 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2bd9 + test AL, strict byte 080h ; a8 80 ; 0xf2bdb ata.c:1044 + je short 02be5h ; 74 06 ; 0xf2bdd + mov ax, strict word 00002h ; b8 02 00 ; 0xf2bdf ata.c:1045 + jmp near 02d36h ; e9 51 01 ; 0xf2be2 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2be5 ata.c:1047 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2be8 + mov AL, strict byte 00ah ; b0 0a ; 0xf2beb + out DX, AL ; ee ; 0xf2bed + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2bee ata.c:1051 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2bf1 + mov AL, strict byte 0f0h ; b0 f0 ; 0xf2bf4 + out DX, AL ; ee ; 0xf2bf6 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2bf7 ata.c:1052 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2bfa + mov AL, strict byte 0ffh ; b0 ff ; 0xf2bfd + out DX, AL ; ee ; 0xf2bff + test cl, cl ; 84 c9 ; 0xf2c00 ata.c:1053 + je short 02c09h ; 74 05 ; 0xf2c02 + mov ax, 000b0h ; b8 b0 00 ; 0xf2c04 + jmp short 02c0ch ; eb 03 ; 0xf2c07 + mov ax, 000a0h ; b8 a0 00 ; 0xf2c09 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c0c + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c0f + out DX, AL ; ee ; 0xf2c12 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c13 ata.c:1054 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c16 + mov AL, strict byte 0a0h ; b0 a0 ; 0xf2c19 + out DX, AL ; ee ; 0xf2c1b + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c1c ata.c:1058 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c1f + in AL, DX ; ec ; 0xf2c22 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2c23 + mov cl, al ; 88 c1 ; 0xf2c25 + test AL, strict byte 080h ; a8 80 ; 0xf2c27 ata.c:1059 + jne short 02c1ch ; 75 f1 ; 0xf2c29 + test AL, strict byte 001h ; a8 01 ; 0xf2c2b ata.c:1062 + je short 02c3eh ; 74 0f ; 0xf2c2d + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2c2f ata.c:1065 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c32 + mov AL, strict byte 008h ; b0 08 ; 0xf2c35 + out DX, AL ; ee ; 0xf2c37 + mov ax, strict word 00003h ; b8 03 00 ; 0xf2c38 ata.c:1066 + jmp near 02d36h ; e9 f8 00 ; 0xf2c3b + test cl, 008h ; f6 c1 08 ; 0xf2c3e ata.c:1067 + jne short 02c52h ; 75 0f ; 0xf2c41 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2c43 ata.c:1070 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c46 + mov AL, strict byte 008h ; b0 08 ; 0xf2c49 + out DX, AL ; ee ; 0xf2c4b + mov ax, strict word 00004h ; b8 04 00 ; 0xf2c4c ata.c:1071 + jmp near 02d36h ; e9 e4 00 ; 0xf2c4f + sti ; fb ; 0xf2c52 ata.c:1074 + mov ax, di ; 89 f8 ; 0xf2c53 ata.c:1078 + shr ax, 004h ; c1 e8 04 ; 0xf2c55 + add ax, word [bp-012h] ; 03 46 ee ; 0xf2c58 + mov si, di ; 89 fe ; 0xf2c5b + and si, strict byte 0000fh ; 83 e6 0f ; 0xf2c5d + mov cl, byte [bp-006h] ; 8a 4e fa ; 0xf2c60 ata.c:1083 + xor ch, ch ; 30 ed ; 0xf2c63 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c65 + mov es, ax ; 8e c0 ; 0xf2c68 + db 0f3h, 026h, 06fh + ; rep es outsw ; f3 26 6f ; 0xf2c6a + cmp byte [bp+008h], 000h ; 80 7e 08 00 ; 0xf2c6d ata.c:1085 + jne short 02c7eh ; 75 0b ; 0xf2c71 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c73 ata.c:1086 + in AL, DX ; ec ; 0xf2c76 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2c77 + mov cl, al ; 88 c1 ; 0xf2c79 + jmp near 02d17h ; e9 99 00 ; 0xf2c7b ata.c:1088 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c7e ata.c:1092 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c81 + in AL, DX ; ec ; 0xf2c84 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2c85 + mov cl, al ; 88 c1 ; 0xf2c87 + test AL, strict byte 080h ; a8 80 ; 0xf2c89 ata.c:1093 + jne short 02c7eh ; 75 f1 ; 0xf2c8b + test AL, strict byte 088h ; a8 88 ; 0xf2c8d ata.c:1098 + je short 02cb3h ; 74 22 ; 0xf2c8f + test AL, strict byte 001h ; a8 01 ; 0xf2c91 ata.c:1101 + je short 02ca0h ; 74 0b ; 0xf2c93 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2c95 ata.c:1104 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c98 + mov AL, strict byte 008h ; b0 08 ; 0xf2c9b + out DX, AL ; ee ; 0xf2c9d + jmp short 02c38h ; eb 98 ; 0xf2c9e + mov al, cl ; 88 c8 ; 0xf2ca0 ata.c:1109 + and AL, strict byte 0c9h ; 24 c9 ; 0xf2ca2 + cmp AL, strict byte 048h ; 3c 48 ; 0xf2ca4 + je short 02cb5h ; 74 0d ; 0xf2ca6 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2ca8 ata.c:1113 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2cab + mov AL, strict byte 008h ; b0 08 ; 0xf2cae + out DX, AL ; ee ; 0xf2cb0 + jmp short 02c4ch ; eb 99 ; 0xf2cb1 + jmp short 02d17h ; eb 62 ; 0xf2cb3 + mov dx, word [bp+00ah] ; 8b 56 0a ; 0xf2cb5 ata.c:1119 + shr dx, 004h ; c1 ea 04 ; 0xf2cb8 + add dx, word [bp+00ch] ; 03 56 0c ; 0xf2cbb + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf2cbe + and ax, strict word 0000fh ; 25 0f 00 ; 0xf2cc1 + mov word [bp+00ah], ax ; 89 46 0a ; 0xf2cc4 + mov word [bp+00ch], dx ; 89 56 0c ; 0xf2cc7 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2cca ata.c:1124 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2ccd + in AL, DX ; ec ; 0xf2cd0 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2cd1 + mov cx, ax ; 89 c1 ; 0xf2cd3 + sal cx, 008h ; c1 e1 08 ; 0xf2cd5 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2cd8 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2cdb + in AL, DX ; ec ; 0xf2cde + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2cdf + add cx, ax ; 01 c1 ; 0xf2ce1 + mov ax, cx ; 89 c8 ; 0xf2ce3 ata.c:1127 + test cl, 003h ; f6 c1 03 ; 0xf2ce5 ata.c:1134 + test cl, 001h ; f6 c1 01 ; 0xf2ce8 ata.c:1138 + je short 02ceeh ; 74 01 ; 0xf2ceb + inc cx ; 41 ; 0xf2ced ata.c:1139 + shr cx, 1 ; d1 e9 ; 0xf2cee ata.c:1148 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2cf0 ata.c:1157 + les di, [bp+00ah] ; c4 7e 0a ; 0xf2cf3 + rep insw ; f3 6d ; 0xf2cf6 + add word [bp+00ah], ax ; 01 46 0a ; 0xf2cf8 ata.c:1162 + xor dx, dx ; 31 d2 ; 0xf2cfb ata.c:1165 + add word [bp-010h], ax ; 01 46 f0 ; 0xf2cfd + adc word [bp-00ch], dx ; 11 56 f4 ; 0xf2d00 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf2d03 ata.c:1166 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2d06 + mov word [es:bx+01ah], ax ; 26 89 47 1a ; 0xf2d09 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2d0d + mov word [es:bx+01ch], ax ; 26 89 47 1c ; 0xf2d10 + jmp near 02c7eh ; e9 67 ff ; 0xf2d14 ata.c:1167 + mov al, cl ; 88 c8 ; 0xf2d17 ata.c:1171 + and AL, strict byte 0e9h ; 24 e9 ; 0xf2d19 + cmp AL, strict byte 040h ; 3c 40 ; 0xf2d1b + je short 02d2bh ; 74 0c ; 0xf2d1d + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2d1f ata.c:1175 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d22 + mov AL, strict byte 008h ; b0 08 ; 0xf2d25 + out DX, AL ; ee ; 0xf2d27 + jmp near 02c4ch ; e9 21 ff ; 0xf2d28 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2d2b ata.c:1180 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d2e + mov AL, strict byte 008h ; b0 08 ; 0xf2d31 + out DX, AL ; ee ; 0xf2d33 + xor ax, ax ; 31 c0 ; 0xf2d34 ata.c:1181 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2d36 ata.c:1182 + pop di ; 5f ; 0xf2d39 + pop si ; 5e ; 0xf2d3a + pop bp ; 5d ; 0xf2d3b + retn 0000ah ; c2 0a 00 ; 0xf2d3c + ; disGetNextSymbol 0xf2d3f LB 0x8019 -> off=0x0 cb=000000000000007e uValue=00000000000f173f 'ata_soft_reset' +ata_soft_reset: ; 0xf2d3f LB 0x7e + push bp ; 55 ; 0xf2d3f ata.c:1190 + mov bp, sp ; 89 e5 ; 0xf2d40 + push bx ; 53 ; 0xf2d42 + push cx ; 51 ; 0xf2d43 + push dx ; 52 ; 0xf2d44 + push ax ; 50 ; 0xf2d45 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2d46 ata.c:58 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2d49 + mov es, dx ; 8e c2 ; 0xf2d4c + mov es, [es:bx] ; 26 8e 07 ; 0xf2d4e + mov dx, ax ; 89 c2 ; 0xf2d51 ata.c:1199 + shr dx, 1 ; d1 ea ; 0xf2d53 + and AL, strict byte 001h ; 24 01 ; 0xf2d55 ata.c:1200 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf2d57 + mov al, dl ; 88 d0 ; 0xf2d5a ata.c:1202 + xor ah, ah ; 30 e4 ; 0xf2d5c + imul bx, ax, strict byte 00006h ; 6b d8 06 ; 0xf2d5e + add bx, strict byte 0005eh ; 83 c3 5e ; 0xf2d61 + mov cx, word [es:bx+0027ah] ; 26 8b 8f 7a 02 ; 0xf2d64 + mov bx, word [es:bx+0027ch] ; 26 8b 9f 7c 02 ; 0xf2d69 ata.c:1203 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2d6e ata.c:1206 + mov AL, strict byte 00ah ; b0 0a ; 0xf2d71 + out DX, AL ; ee ; 0xf2d73 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2d74 ata.c:1207 + je short 02d7fh ; 74 05 ; 0xf2d78 + mov ax, 000b0h ; b8 b0 00 ; 0xf2d7a + jmp short 02d82h ; eb 03 ; 0xf2d7d + mov ax, 000a0h ; b8 a0 00 ; 0xf2d7f + mov dx, cx ; 89 ca ; 0xf2d82 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d84 + out DX, AL ; ee ; 0xf2d87 + mov dx, cx ; 89 ca ; 0xf2d88 ata.c:1208 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2d8a + mov AL, strict byte 008h ; b0 08 ; 0xf2d8d + out DX, AL ; ee ; 0xf2d8f + mov dx, cx ; 89 ca ; 0xf2d90 ata.c:1212 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2d92 + in AL, DX ; ec ; 0xf2d95 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2d96 + test AL, strict byte 080h ; a8 80 ; 0xf2d98 ata.c:1213 + jne short 02d90h ; 75 f4 ; 0xf2d9a + and AL, strict byte 0e9h ; 24 e9 ; 0xf2d9c ata.c:1217 + cmp AL, strict byte 040h ; 3c 40 ; 0xf2d9e + je short 02dadh ; 74 0b ; 0xf2da0 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2da2 ata.c:1221 + mov AL, strict byte 008h ; b0 08 ; 0xf2da5 + out DX, AL ; ee ; 0xf2da7 + mov ax, strict word 00001h ; b8 01 00 ; 0xf2da8 ata.c:1222 + jmp short 02db5h ; eb 08 ; 0xf2dab + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2dad ata.c:1226 + mov AL, strict byte 008h ; b0 08 ; 0xf2db0 + out DX, AL ; ee ; 0xf2db2 + xor ax, ax ; 31 c0 ; 0xf2db3 ata.c:1227 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf2db5 ata.c:1228 + pop dx ; 5a ; 0xf2db8 + pop cx ; 59 ; 0xf2db9 + pop bx ; 5b ; 0xf2dba + pop bp ; 5d ; 0xf2dbb + retn ; c3 ; 0xf2dbc + ; disGetNextSymbol 0xf2dbd LB 0x7f9b -> off=0x0 cb=000000000000002b uValue=00000000000f17bd 'set_diskette_current_cyl' +set_diskette_current_cyl: ; 0xf2dbd LB 0x2b + push bp ; 55 ; 0xf2dbd floppy.c:81 + mov bp, sp ; 89 e5 ; 0xf2dbe + push bx ; 53 ; 0xf2dc0 + mov dh, al ; 88 c6 ; 0xf2dc1 + cmp AL, strict byte 001h ; 3c 01 ; 0xf2dc3 floppy.c:83 + jbe short 02dd2h ; 76 0b ; 0xf2dc5 + push 00288h ; 68 88 02 ; 0xf2dc7 floppy.c:84 + push strict byte 00007h ; 6a 07 ; 0xf2dca + call 01953h ; e8 84 eb ; 0xf2dcc + add sp, strict byte 00004h ; 83 c4 04 ; 0xf2dcf + mov bl, dh ; 88 f3 ; 0xf2dd2 floppy.c:85 + xor bh, bh ; 30 ff ; 0xf2dd4 + add bx, 00094h ; 81 c3 94 00 ; 0xf2dd6 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2dda floppy.c:53 + mov es, ax ; 8e c0 ; 0xf2ddd + mov byte [es:bx], dl ; 26 88 17 ; 0xf2ddf + lea sp, [bp-002h] ; 8d 66 fe ; 0xf2de2 floppy.c:86 + pop bx ; 5b ; 0xf2de5 + pop bp ; 5d ; 0xf2de6 + retn ; c3 ; 0xf2de7 + ; disGetNextSymbol 0xf2de8 LB 0x7f70 -> off=0x0 cb=0000000000000023 uValue=00000000000f17e8 'floppy_wait_for_interrupt' +floppy_wait_for_interrupt: ; 0xf2de8 LB 0x23 + push bp ; 55 ; 0xf2de8 floppy.c:106 + mov bp, sp ; 89 e5 ; 0xf2de9 + push bx ; 53 ; 0xf2deb + cli ; fa ; 0xf2dec floppy.c:108 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2ded floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2df0 + mov es, ax ; 8e c0 ; 0xf2df3 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2df5 + test AL, strict byte 080h ; a8 80 ; 0xf2df8 floppy.c:112 + je short 02e00h ; 74 04 ; 0xf2dfa + and AL, strict byte 080h ; 24 80 ; 0xf2dfc floppy.c:113 + jmp short 02e05h ; eb 05 ; 0xf2dfe + sti ; fb ; 0xf2e00 floppy.c:114 + hlt ; f4 ; 0xf2e01 + cli ; fa ; 0xf2e02 + jmp short 02dedh ; eb e8 ; 0xf2e03 floppy.c:115 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e05 floppy.c:116 + pop bx ; 5b ; 0xf2e08 + pop bp ; 5d ; 0xf2e09 + retn ; c3 ; 0xf2e0a + ; disGetNextSymbol 0xf2e0b LB 0x7f4d -> off=0x0 cb=0000000000000038 uValue=00000000000f180b 'floppy_wait_for_interrupt_or_timeout' +floppy_wait_for_interrupt_or_timeout: ; 0xf2e0b LB 0x38 + push bp ; 55 ; 0xf2e0b floppy.c:126 + mov bp, sp ; 89 e5 ; 0xf2e0c + push bx ; 53 ; 0xf2e0e + cli ; fa ; 0xf2e0f floppy.c:128 + mov bx, strict word 00040h ; bb 40 00 ; 0xf2e10 floppy.c:48 + mov es, bx ; 8e c3 ; 0xf2e13 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e15 + test al, al ; 84 c0 ; 0xf2e18 floppy.c:132 + jne short 02e1fh ; 75 03 ; 0xf2e1a + sti ; fb ; 0xf2e1c floppy.c:133 + jmp short 02e3dh ; eb 1e ; 0xf2e1d floppy.c:134 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2e1f floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2e22 + mov es, ax ; 8e c0 ; 0xf2e25 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e27 + test AL, strict byte 080h ; a8 80 ; 0xf2e2a floppy.c:138 + je short 02e38h ; 74 0a ; 0xf2e2c + mov ah, al ; 88 c4 ; 0xf2e2e floppy.c:139 + and ah, 07fh ; 80 e4 7f ; 0xf2e30 + mov byte [es:bx], ah ; 26 88 27 ; 0xf2e33 floppy.c:53 + jmp short 02e3dh ; eb 05 ; 0xf2e36 floppy.c:140 + sti ; fb ; 0xf2e38 floppy.c:142 + hlt ; f4 ; 0xf2e39 + cli ; fa ; 0xf2e3a + jmp short 02e10h ; eb d3 ; 0xf2e3b floppy.c:143 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e3d floppy.c:144 + pop bx ; 5b ; 0xf2e40 + pop bp ; 5d ; 0xf2e41 + retn ; c3 ; 0xf2e42 + ; disGetNextSymbol 0xf2e43 LB 0x7f15 -> off=0x0 cb=000000000000003f uValue=00000000000f1843 'floppy_reset_controller' +floppy_reset_controller: ; 0xf2e43 LB 0x3f + push bp ; 55 ; 0xf2e43 floppy.c:148 + mov bp, sp ; 89 e5 ; 0xf2e44 + push bx ; 53 ; 0xf2e46 + push cx ; 51 ; 0xf2e47 + push dx ; 52 ; 0xf2e48 + mov cx, ax ; 89 c1 ; 0xf2e49 + mov dx, 003f2h ; ba f2 03 ; 0xf2e4b floppy.c:153 + in AL, DX ; ec ; 0xf2e4e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2e4f + mov bx, ax ; 89 c3 ; 0xf2e51 + and AL, strict byte 0fbh ; 24 fb ; 0xf2e53 floppy.c:154 + out DX, AL ; ee ; 0xf2e55 + mov al, bl ; 88 d8 ; 0xf2e56 floppy.c:155 + or AL, strict byte 004h ; 0c 04 ; 0xf2e58 + out DX, AL ; ee ; 0xf2e5a + mov dx, 003f4h ; ba f4 03 ; 0xf2e5b floppy.c:159 + in AL, DX ; ec ; 0xf2e5e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2e5f + and AL, strict byte 0c0h ; 24 c0 ; 0xf2e61 floppy.c:160 + cmp AL, strict byte 080h ; 3c 80 ; 0xf2e63 + jne short 02e5bh ; 75 f4 ; 0xf2e65 + mov bx, cx ; 89 cb ; 0xf2e67 floppy.c:163 + add bx, 00090h ; 81 c3 90 00 ; 0xf2e69 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2e6d floppy.c:48 + mov es, ax ; 8e c0 ; 0xf2e70 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e72 + and AL, strict byte 0efh ; 24 ef ; 0xf2e75 floppy.c:164 + mov byte [es:bx], al ; 26 88 07 ; 0xf2e77 floppy.c:53 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf2e7a floppy.c:167 + pop dx ; 5a ; 0xf2e7d + pop cx ; 59 ; 0xf2e7e + pop bx ; 5b ; 0xf2e7f + pop bp ; 5d ; 0xf2e80 + retn ; c3 ; 0xf2e81 + ; disGetNextSymbol 0xf2e82 LB 0x7ed6 -> off=0x0 cb=0000000000000074 uValue=00000000000f1882 'floppy_prepare_controller' +floppy_prepare_controller: ; 0xf2e82 LB 0x74 + push bp ; 55 ; 0xf2e82 floppy.c:169 + mov bp, sp ; 89 e5 ; 0xf2e83 + push bx ; 53 ; 0xf2e85 + push cx ; 51 ; 0xf2e86 + push dx ; 52 ; 0xf2e87 + push ax ; 50 ; 0xf2e88 + mov cx, ax ; 89 c1 ; 0xf2e89 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2e8b floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2e8e + mov es, ax ; 8e c0 ; 0xf2e91 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e93 + and AL, strict byte 07fh ; 24 7f ; 0xf2e96 floppy.c:175 + mov byte [es:bx], al ; 26 88 07 ; 0xf2e98 floppy.c:53 + mov dx, 003f2h ; ba f2 03 ; 0xf2e9b floppy.c:179 + in AL, DX ; ec ; 0xf2e9e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2e9f + and AL, strict byte 004h ; 24 04 ; 0xf2ea1 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf2ea3 + test cx, cx ; 85 c9 ; 0xf2ea6 floppy.c:180 + je short 02eaeh ; 74 04 ; 0xf2ea8 + mov AL, strict byte 020h ; b0 20 ; 0xf2eaa floppy.c:181 + jmp short 02eb0h ; eb 02 ; 0xf2eac floppy.c:182 + mov AL, strict byte 010h ; b0 10 ; 0xf2eae floppy.c:183 + or AL, strict byte 00ch ; 0c 0c ; 0xf2eb0 floppy.c:184 + or al, cl ; 08 c8 ; 0xf2eb2 floppy.c:185 + mov dx, 003f2h ; ba f2 03 ; 0xf2eb4 floppy.c:186 + out DX, AL ; ee ; 0xf2eb7 + mov bx, strict word 00040h ; bb 40 00 ; 0xf2eb8 floppy.c:53 + mov es, bx ; 8e c3 ; 0xf2ebb + mov byte [es:bx], 025h ; 26 c6 07 25 ; 0xf2ebd + mov bx, 0008bh ; bb 8b 00 ; 0xf2ec1 floppy.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2ec4 + shr al, 006h ; c0 e8 06 ; 0xf2ec7 floppy.c:193 + mov dx, 003f7h ; ba f7 03 ; 0xf2eca floppy.c:194 + out DX, AL ; ee ; 0xf2ecd + mov dx, 003f4h ; ba f4 03 ; 0xf2ece floppy.c:198 + in AL, DX ; ec ; 0xf2ed1 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2ed2 + and AL, strict byte 0c0h ; 24 c0 ; 0xf2ed4 floppy.c:199 + cmp AL, strict byte 080h ; 3c 80 ; 0xf2ed6 + jne short 02eceh ; 75 f4 ; 0xf2ed8 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2eda floppy.c:201 + jne short 02eeeh ; 75 0e ; 0xf2ede + call 02de8h ; e8 05 ff ; 0xf2ee0 floppy.c:212 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2ee3 floppy.c:53 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2ee6 + mov es, dx ; 8e c2 ; 0xf2ee9 + mov byte [es:bx], al ; 26 88 07 ; 0xf2eeb + lea sp, [bp-006h] ; 8d 66 fa ; 0xf2eee floppy.c:216 + pop dx ; 5a ; 0xf2ef1 + pop cx ; 59 ; 0xf2ef2 + pop bx ; 5b ; 0xf2ef3 + pop bp ; 5d ; 0xf2ef4 + retn ; c3 ; 0xf2ef5 + ; disGetNextSymbol 0xf2ef6 LB 0x7e62 -> off=0x0 cb=0000000000000049 uValue=00000000000f18f6 'floppy_media_known' +floppy_media_known: ; 0xf2ef6 LB 0x49 + push bx ; 53 ; 0xf2ef6 floppy.c:218 + push dx ; 52 ; 0xf2ef7 + push bp ; 55 ; 0xf2ef8 + mov bp, sp ; 89 e5 ; 0xf2ef9 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2efb floppy.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2efe + mov es, dx ; 8e c2 ; 0xf2f01 + mov bh, byte [es:bx] ; 26 8a 3f ; 0xf2f03 + mov bl, bh ; 88 fb ; 0xf2f06 floppy.c:49 + test ax, ax ; 85 c0 ; 0xf2f08 floppy.c:224 + je short 02f0eh ; 74 02 ; 0xf2f0a + shr bl, 1 ; d0 eb ; 0xf2f0c floppy.c:225 + and bl, 001h ; 80 e3 01 ; 0xf2f0e floppy.c:226 + jne short 02f17h ; 75 04 ; 0xf2f11 floppy.c:227 + xor bh, bh ; 30 ff ; 0xf2f13 floppy.c:228 + jmp short 02f39h ; eb 22 ; 0xf2f15 + mov bx, 00090h ; bb 90 00 ; 0xf2f17 floppy.c:230 + test ax, ax ; 85 c0 ; 0xf2f1a floppy.c:231 + je short 02f21h ; 74 03 ; 0xf2f1c + mov bx, 00091h ; bb 91 00 ; 0xf2f1e floppy.c:232 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2f21 floppy.c:48 + mov es, ax ; 8e c0 ; 0xf2f24 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f26 + xor ah, ah ; 30 e4 ; 0xf2f29 floppy.c:235 + sar ax, 004h ; c1 f8 04 ; 0xf2f2b + and AL, strict byte 001h ; 24 01 ; 0xf2f2e + jne short 02f36h ; 75 04 ; 0xf2f30 floppy.c:236 + xor bx, bx ; 31 db ; 0xf2f32 floppy.c:237 + jmp short 02f39h ; eb 03 ; 0xf2f34 + mov bx, strict word 00001h ; bb 01 00 ; 0xf2f36 floppy.c:240 + mov ax, bx ; 89 d8 ; 0xf2f39 floppy.c:241 + pop bp ; 5d ; 0xf2f3b + pop dx ; 5a ; 0xf2f3c + pop bx ; 5b ; 0xf2f3d + retn ; c3 ; 0xf2f3e + ; disGetNextSymbol 0xf2f3f LB 0x7e19 -> off=0x0 cb=0000000000000052 uValue=00000000000f193f 'floppy_read_id' +floppy_read_id: ; 0xf2f3f LB 0x52 + push bp ; 55 ; 0xf2f3f floppy.c:243 + mov bp, sp ; 89 e5 ; 0xf2f40 + push bx ; 53 ; 0xf2f42 + push dx ; 52 ; 0xf2f43 + push si ; 56 ; 0xf2f44 + mov bx, ax ; 89 c3 ; 0xf2f45 + call 02e82h ; e8 38 ff ; 0xf2f47 floppy.c:250 + mov AL, strict byte 04ah ; b0 4a ; 0xf2f4a floppy.c:253 + mov dx, 003f5h ; ba f5 03 ; 0xf2f4c + out DX, AL ; ee ; 0xf2f4f + mov al, bl ; 88 d8 ; 0xf2f50 floppy.c:254 + out DX, AL ; ee ; 0xf2f52 + call 02de8h ; e8 92 fe ; 0xf2f53 floppy.c:269 + xor bx, bx ; 31 db ; 0xf2f56 floppy.c:273 + jmp short 02f5fh ; eb 05 ; 0xf2f58 + cmp bx, strict byte 00007h ; 83 fb 07 ; 0xf2f5a + jnl short 02f73h ; 7d 14 ; 0xf2f5d + mov dx, 003f5h ; ba f5 03 ; 0xf2f5f floppy.c:274 + in AL, DX ; ec ; 0xf2f62 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2f63 + lea si, [bx+042h] ; 8d 77 42 ; 0xf2f65 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2f68 floppy.c:53 + mov es, dx ; 8e c2 ; 0xf2f6b + mov byte [es:si], al ; 26 88 04 ; 0xf2f6d + inc bx ; 43 ; 0xf2f70 floppy.c:274 + jmp short 02f5ah ; eb e7 ; 0xf2f71 + mov bx, strict word 00042h ; bb 42 00 ; 0xf2f73 floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2f76 + mov es, ax ; 8e c0 ; 0xf2f79 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f7b + test AL, strict byte 0c0h ; a8 c0 ; 0xf2f7e floppy.c:49 + je short 02f86h ; 74 04 ; 0xf2f80 + xor ax, ax ; 31 c0 ; 0xf2f82 floppy.c:277 + jmp short 02f89h ; eb 03 ; 0xf2f84 + mov ax, strict word 00001h ; b8 01 00 ; 0xf2f86 floppy.c:279 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf2f89 floppy.c:280 + pop si ; 5e ; 0xf2f8c + pop dx ; 5a ; 0xf2f8d + pop bx ; 5b ; 0xf2f8e + pop bp ; 5d ; 0xf2f8f + retn ; c3 ; 0xf2f90 + ; disGetNextSymbol 0xf2f91 LB 0x7dc7 -> off=0x0 cb=0000000000000041 uValue=00000000000f1991 'floppy_drive_recal' +floppy_drive_recal: ; 0xf2f91 LB 0x41 + push bp ; 55 ; 0xf2f91 floppy.c:282 + mov bp, sp ; 89 e5 ; 0xf2f92 + push bx ; 53 ; 0xf2f94 + push dx ; 52 ; 0xf2f95 + push si ; 56 ; 0xf2f96 + mov bx, ax ; 89 c3 ; 0xf2f97 + call 02e82h ; e8 e6 fe ; 0xf2f99 floppy.c:287 + mov AL, strict byte 007h ; b0 07 ; 0xf2f9c floppy.c:290 + mov dx, 003f5h ; ba f5 03 ; 0xf2f9e + out DX, AL ; ee ; 0xf2fa1 + mov al, bl ; 88 d8 ; 0xf2fa2 floppy.c:291 + out DX, AL ; ee ; 0xf2fa4 + call 02de8h ; e8 40 fe ; 0xf2fa5 floppy.c:310 + test bx, bx ; 85 db ; 0xf2fa8 floppy.c:314 + je short 02fb3h ; 74 07 ; 0xf2faa + or AL, strict byte 002h ; 0c 02 ; 0xf2fac floppy.c:315 + mov bx, 00095h ; bb 95 00 ; 0xf2fae floppy.c:316 + jmp short 02fb8h ; eb 05 ; 0xf2fb1 floppy.c:317 + or AL, strict byte 001h ; 0c 01 ; 0xf2fb3 floppy.c:318 + mov bx, 00094h ; bb 94 00 ; 0xf2fb5 floppy.c:319 + mov si, strict word 0003eh ; be 3e 00 ; 0xf2fb8 floppy.c:53 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2fbb + mov es, dx ; 8e c2 ; 0xf2fbe + mov byte [es:si], al ; 26 88 04 ; 0xf2fc0 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf2fc3 floppy.c:53 + mov ax, strict word 00001h ; b8 01 00 ; 0xf2fc7 floppy.c:325 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf2fca + pop si ; 5e ; 0xf2fcd + pop dx ; 5a ; 0xf2fce + pop bx ; 5b ; 0xf2fcf + pop bp ; 5d ; 0xf2fd0 + retn ; c3 ; 0xf2fd1 + ; disGetNextSymbol 0xf2fd2 LB 0x7d86 -> off=0x0 cb=00000000000000e6 uValue=00000000000f19d2 'floppy_media_sense' +floppy_media_sense: ; 0xf2fd2 LB 0xe6 + push bp ; 55 ; 0xf2fd2 floppy.c:328 + mov bp, sp ; 89 e5 ; 0xf2fd3 + push bx ; 53 ; 0xf2fd5 + push cx ; 51 ; 0xf2fd6 + push dx ; 52 ; 0xf2fd7 + push si ; 56 ; 0xf2fd8 + push di ; 57 ; 0xf2fd9 + mov cx, ax ; 89 c1 ; 0xf2fda + call 02f91h ; e8 b2 ff ; 0xf2fdc floppy.c:334 + test ax, ax ; 85 c0 ; 0xf2fdf + jne short 02fe8h ; 75 05 ; 0xf2fe1 + xor dx, dx ; 31 d2 ; 0xf2fe3 floppy.c:335 + jmp near 030ach ; e9 c4 00 ; 0xf2fe5 + mov ax, strict word 00010h ; b8 10 00 ; 0xf2fe8 floppy.c:370 + call 01664h ; e8 76 e6 ; 0xf2feb + test cx, cx ; 85 c9 ; 0xf2fee floppy.c:371 + jne short 02ff9h ; 75 07 ; 0xf2ff0 + mov dl, al ; 88 c2 ; 0xf2ff2 floppy.c:372 + shr dl, 004h ; c0 ea 04 ; 0xf2ff4 + jmp short 02ffeh ; eb 05 ; 0xf2ff7 floppy.c:373 + mov dl, al ; 88 c2 ; 0xf2ff9 floppy.c:374 + and dl, 00fh ; 80 e2 0f ; 0xf2ffb + cmp dl, 001h ; 80 fa 01 ; 0xf2ffe floppy.c:375 + jne short 0300ch ; 75 09 ; 0xf3001 + xor dl, dl ; 30 d2 ; 0xf3003 floppy.c:377 + mov DH, strict byte 015h ; b6 15 ; 0xf3005 floppy.c:378 + mov bx, strict word 00001h ; bb 01 00 ; 0xf3007 floppy.c:379 + jmp short 0304ah ; eb 3e ; 0xf300a floppy.c:381 + cmp dl, 002h ; 80 fa 02 ; 0xf300c + jne short 03017h ; 75 06 ; 0xf300f + xor dl, dl ; 30 d2 ; 0xf3011 floppy.c:383 + mov DH, strict byte 035h ; b6 35 ; 0xf3013 floppy.c:384 + jmp short 03007h ; eb f0 ; 0xf3015 + cmp dl, 003h ; 80 fa 03 ; 0xf3017 floppy.c:387 + jne short 03022h ; 75 06 ; 0xf301a + xor dl, dl ; 30 d2 ; 0xf301c floppy.c:389 + mov DH, strict byte 017h ; b6 17 ; 0xf301e floppy.c:390 + jmp short 03007h ; eb e5 ; 0xf3020 + cmp dl, 004h ; 80 fa 04 ; 0xf3022 floppy.c:393 + jne short 0302dh ; 75 06 ; 0xf3025 + xor dl, dl ; 30 d2 ; 0xf3027 floppy.c:395 + mov DH, strict byte 017h ; b6 17 ; 0xf3029 floppy.c:396 + jmp short 03007h ; eb da ; 0xf302b + cmp dl, 005h ; 80 fa 05 ; 0xf302d floppy.c:399 + jne short 03038h ; 75 06 ; 0xf3030 + mov DL, strict byte 0cch ; b2 cc ; 0xf3032 floppy.c:401 + mov DH, strict byte 0d7h ; b6 d7 ; 0xf3034 floppy.c:402 + jmp short 03007h ; eb cf ; 0xf3036 + cmp dl, 00eh ; 80 fa 0e ; 0xf3038 floppy.c:406 + je short 03042h ; 74 05 ; 0xf303b + cmp dl, 00fh ; 80 fa 0f ; 0xf303d + jne short 03044h ; 75 02 ; 0xf3040 + jmp short 03032h ; eb ee ; 0xf3042 + xor dl, dl ; 30 d2 ; 0xf3044 floppy.c:414 + xor dh, dh ; 30 f6 ; 0xf3046 floppy.c:415 + xor bx, bx ; 31 db ; 0xf3048 floppy.c:416 + mov si, 0008bh ; be 8b 00 ; 0xf304a floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf304d + mov es, ax ; 8e c0 ; 0xf3050 + mov byte [es:si], dl ; 26 88 14 ; 0xf3052 + mov ax, cx ; 89 c8 ; 0xf3055 floppy.c:420 + call 02f3fh ; e8 e5 fe ; 0xf3057 + test ax, ax ; 85 c0 ; 0xf305a + jne short 03090h ; 75 32 ; 0xf305c + mov al, dl ; 88 d0 ; 0xf305e floppy.c:421 + and AL, strict byte 0c0h ; 24 c0 ; 0xf3060 + cmp AL, strict byte 080h ; 3c 80 ; 0xf3062 + je short 03090h ; 74 2a ; 0xf3064 + mov al, dl ; 88 d0 ; 0xf3066 floppy.c:425 + and AL, strict byte 0c0h ; 24 c0 ; 0xf3068 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf306a + je short 0307dh ; 74 0f ; 0xf306c + mov ah, dl ; 88 d4 ; 0xf306e + and ah, 03fh ; 80 e4 3f ; 0xf3070 + cmp AL, strict byte 040h ; 3c 40 ; 0xf3073 + je short 03089h ; 74 12 ; 0xf3075 + test al, al ; 84 c0 ; 0xf3077 + je short 03082h ; 74 07 ; 0xf3079 + jmp short 0304ah ; eb cd ; 0xf307b + and dl, 03fh ; 80 e2 3f ; 0xf307d floppy.c:427 + jmp short 0304ah ; eb c8 ; 0xf3080 floppy.c:428 + mov dl, ah ; 88 e2 ; 0xf3082 floppy.c:430 + or dl, 040h ; 80 ca 40 ; 0xf3084 + jmp short 0304ah ; eb c1 ; 0xf3087 floppy.c:431 + mov dl, ah ; 88 e2 ; 0xf3089 floppy.c:433 + or dl, 080h ; 80 ca 80 ; 0xf308b + jmp short 0304ah ; eb ba ; 0xf308e floppy.c:437 + test cx, cx ; 85 c9 ; 0xf3090 floppy.c:439 + jne short 03099h ; 75 05 ; 0xf3092 + mov si, 00090h ; be 90 00 ; 0xf3094 floppy.c:440 + jmp short 0309ch ; eb 03 ; 0xf3097 floppy.c:441 + mov si, 00091h ; be 91 00 ; 0xf3099 floppy.c:442 + mov di, 0008bh ; bf 8b 00 ; 0xf309c floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf309f + mov es, ax ; 8e c0 ; 0xf30a2 + mov byte [es:di], dl ; 26 88 15 ; 0xf30a4 + mov byte [es:si], dh ; 26 88 34 ; 0xf30a7 floppy.c:53 + mov dx, bx ; 89 da ; 0xf30aa floppy.c:446 + mov ax, dx ; 89 d0 ; 0xf30ac floppy.c:447 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf30ae + pop di ; 5f ; 0xf30b1 + pop si ; 5e ; 0xf30b2 + pop dx ; 5a ; 0xf30b3 + pop cx ; 59 ; 0xf30b4 + pop bx ; 5b ; 0xf30b5 + pop bp ; 5d ; 0xf30b6 + retn ; c3 ; 0xf30b7 + ; disGetNextSymbol 0xf30b8 LB 0x7ca0 -> off=0x0 cb=0000000000000028 uValue=00000000000f1ab8 'floppy_drive_exists' +floppy_drive_exists: ; 0xf30b8 LB 0x28 + push bp ; 55 ; 0xf30b8 floppy.c:450 + mov bp, sp ; 89 e5 ; 0xf30b9 + push dx ; 52 ; 0xf30bb + mov dx, ax ; 89 c2 ; 0xf30bc + mov ax, strict word 00010h ; b8 10 00 ; 0xf30be floppy.c:456 + call 01664h ; e8 a0 e5 ; 0xf30c1 + test dx, dx ; 85 d2 ; 0xf30c4 floppy.c:457 + jne short 030cdh ; 75 05 ; 0xf30c6 + shr al, 004h ; c0 e8 04 ; 0xf30c8 floppy.c:458 + jmp short 030cfh ; eb 02 ; 0xf30cb floppy.c:459 + and AL, strict byte 00fh ; 24 0f ; 0xf30cd floppy.c:460 + test al, al ; 84 c0 ; 0xf30cf floppy.c:461 + je short 030d8h ; 74 05 ; 0xf30d1 + mov ax, strict word 00001h ; b8 01 00 ; 0xf30d3 + jmp short 030dah ; eb 02 ; 0xf30d6 + xor ah, ah ; 30 e4 ; 0xf30d8 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf30da floppy.c:462 + pop dx ; 5a ; 0xf30dd + pop bp ; 5d ; 0xf30de + retn ; c3 ; 0xf30df + ; disGetNextSymbol 0xf30e0 LB 0x7c78 -> off=0x23 cb=00000000000009ce uValue=00000000000f1b03 'int13_diskette_function' + db 018h, 017h, 016h, 015h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 0aeh, 03ah, 041h, 031h, 0c2h + db 031h, 0e3h, 031h, 0e3h, 031h, 0e3h, 031h, 097h, 035h, 061h, 037h, 04fh, 038h, 091h, 038h, 0c5h + db 038h, 039h, 039h +int13_diskette_function: ; 0xf3103 LB 0x9ce + push bp ; 55 ; 0xf3103 floppy.c:477 + mov bp, sp ; 89 e5 ; 0xf3104 + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf3106 + or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf3109 floppy.c:488 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf310d floppy.c:490 + shr ax, 008h ; c1 e8 08 ; 0xf3110 + cmp ax, strict word 00018h ; 3d 18 00 ; 0xf3113 + jnbe short 03174h ; 77 5c ; 0xf3116 + push CS ; 0e ; 0xf3118 + pop ES ; 07 ; 0xf3119 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf311a + mov di, 030e0h ; bf e0 30 ; 0xf311d + repne scasb ; f2 ae ; 0xf3120 + sal cx, 1 ; d1 e1 ; 0xf3122 + mov di, cx ; 89 cf ; 0xf3124 + mov di, word [cs:di+030ebh] ; 2e 8b bd eb 30 ; 0xf3126 + mov dx, word [bp+016h] ; 8b 56 16 ; 0xf312b + xor dh, dh ; 30 f6 ; 0xf312e + mov ah, byte [bp+00eh] ; 8a 66 0e ; 0xf3130 + mov cx, word [bp+01ch] ; 8b 4e 1c ; 0xf3133 + or cl, 001h ; 80 c9 01 ; 0xf3136 + mov si, dx ; 89 d6 ; 0xf3139 + or si, 00100h ; 81 ce 00 01 ; 0xf313b + jmp di ; ff e7 ; 0xf313f + mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf3141 floppy.c:493 + cmp bl, 001h ; 80 fb 01 ; 0xf3144 floppy.c:494 + jbe short 03163h ; 76 1a ; 0xf3147 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3149 floppy.c:495 + xor ah, ah ; 30 e4 ; 0xf314c + or ah, 001h ; 80 cc 01 ; 0xf314e + mov word [bp+016h], ax ; 89 46 16 ; 0xf3151 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3154 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3157 + mov es, ax ; 8e c0 ; 0xf315a + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf315c + jmp near 0399bh ; e9 38 08 ; 0xf3160 + mov ax, strict word 00010h ; b8 10 00 ; 0xf3163 floppy.c:501 + call 01664h ; e8 fb e4 ; 0xf3166 + test bl, bl ; 84 db ; 0xf3169 floppy.c:502 + jne short 03177h ; 75 0a ; 0xf316b + mov dl, al ; 88 c2 ; 0xf316d floppy.c:503 + shr dl, 004h ; c0 ea 04 ; 0xf316f + jmp short 0317ch ; eb 08 ; 0xf3172 floppy.c:504 + jmp near 03aaeh ; e9 37 09 ; 0xf3174 + mov dl, al ; 88 c2 ; 0xf3177 floppy.c:505 + and dl, 00fh ; 80 e2 0f ; 0xf3179 + test dl, dl ; 84 d2 ; 0xf317c floppy.c:506 + jne short 0319ah ; 75 1a ; 0xf317e + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3180 floppy.c:507 + xor ah, ah ; 30 e4 ; 0xf3183 + or ah, 080h ; 80 cc 80 ; 0xf3185 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3188 + mov bx, strict word 00041h ; bb 41 00 ; 0xf318b floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf318e + mov es, ax ; 8e c0 ; 0xf3191 + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3193 + jmp near 0399bh ; e9 01 08 ; 0xf3197 + mov si, strict word 0003eh ; be 3e 00 ; 0xf319a floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf319d + mov es, ax ; 8e c0 ; 0xf31a0 + mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf31a2 + xor al, al ; 30 c0 ; 0xf31a6 floppy.c:516 + mov byte [bp+017h], al ; 88 46 17 ; 0xf31a8 + mov si, strict word 00041h ; be 41 00 ; 0xf31ab floppy.c:53 + mov byte [es:si], al ; 26 88 04 ; 0xf31ae + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf31b1 floppy.c:518 + mov al, bl ; 88 d8 ; 0xf31b5 floppy.c:519 + xor ah, ah ; 30 e4 ; 0xf31b7 + xor dx, dx ; 31 d2 ; 0xf31b9 + call 02dbdh ; e8 ff fb ; 0xf31bb + mov sp, bp ; 89 ec ; 0xf31be floppy.c:520 + pop bp ; 5d ; 0xf31c0 + retn ; c3 ; 0xf31c1 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf31c2 floppy.c:523 + mov bx, 00441h ; bb 41 04 ; 0xf31c6 floppy.c:48 + xor ax, ax ; 31 c0 ; 0xf31c9 + mov es, ax ; 8e c0 ; 0xf31cb + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf31cd + mov al, bl ; 88 d8 ; 0xf31d0 floppy.c:525 + xor ah, ah ; 30 e4 ; 0xf31d2 + sal ax, 008h ; c1 e0 08 ; 0xf31d4 + or dx, ax ; 09 c2 ; 0xf31d7 + mov word [bp+016h], dx ; 89 56 16 ; 0xf31d9 + test bl, bl ; 84 db ; 0xf31dc floppy.c:526 + je short 031beh ; 74 de ; 0xf31de + jmp near 0399bh ; e9 b8 07 ; 0xf31e0 + mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf31e3 floppy.c:534 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf31e6 floppy.c:535 + shr ax, 008h ; c1 e8 08 ; 0xf31e9 + mov byte [bp-004h], al ; 88 46 fc ; 0xf31ec + mov al, byte [bp+014h] ; 8a 46 14 ; 0xf31ef floppy.c:536 + mov byte [bp-002h], al ; 88 46 fe ; 0xf31f2 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf31f5 floppy.c:537 + shr ax, 008h ; c1 e8 08 ; 0xf31f8 + mov byte [bp-006h], al ; 88 46 fa ; 0xf31fb + mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf31fe floppy.c:538 + cmp bl, 001h ; 80 fb 01 ; 0xf3201 floppy.c:540 + jnbe short 03213h ; 77 0d ; 0xf3204 + cmp AL, strict byte 001h ; 3c 01 ; 0xf3206 + jnbe short 03213h ; 77 09 ; 0xf3208 + test bh, bh ; 84 ff ; 0xf320a + je short 03213h ; 74 05 ; 0xf320c + cmp bh, 048h ; 80 ff 48 ; 0xf320e + jbe short 03246h ; 76 33 ; 0xf3211 + mov bx, 00dcch ; bb cc 0d ; 0xf3213 floppy.c:542 + mov cx, ds ; 8c d9 ; 0xf3216 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3218 + call 01910h ; e8 f2 e6 ; 0xf321b + push 002adh ; 68 ad 02 ; 0xf321e + push 002c5h ; 68 c5 02 ; 0xf3221 + push strict byte 00004h ; 6a 04 ; 0xf3224 + call 01953h ; e8 2a e7 ; 0xf3226 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf3229 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf322c floppy.c:543 + xor ah, ah ; 30 e4 ; 0xf322f + or ah, 001h ; 80 cc 01 ; 0xf3231 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3234 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3237 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf323a + mov es, ax ; 8e c0 ; 0xf323d + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf323f + jmp near 032f0h ; e9 aa 00 ; 0xf3243 + mov al, bl ; 88 d8 ; 0xf3246 floppy.c:545 + xor ah, ah ; 30 e4 ; 0xf3248 + call 030b8h ; e8 6b fe ; 0xf324a + test ax, ax ; 85 c0 ; 0xf324d + jne short 0326bh ; 75 1a ; 0xf324f + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3251 floppy.c:553 + xor ah, ah ; 30 e4 ; 0xf3254 + or ah, 080h ; 80 cc 80 ; 0xf3256 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3259 + mov bx, strict word 00041h ; bb 41 00 ; 0xf325c floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf325f + mov es, ax ; 8e c0 ; 0xf3262 + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3264 + jmp near 032f0h ; e9 85 00 ; 0xf3268 + mov cl, bl ; 88 d9 ; 0xf326b floppy.c:561 + xor ch, ch ; 30 ed ; 0xf326d + mov ax, cx ; 89 c8 ; 0xf326f + call 02ef6h ; e8 82 fc ; 0xf3271 + test ax, ax ; 85 c0 ; 0xf3274 + jne short 0329eh ; 75 26 ; 0xf3276 + mov ax, cx ; 89 c8 ; 0xf3278 floppy.c:562 + call 02fd2h ; e8 55 fd ; 0xf327a + test ax, ax ; 85 c0 ; 0xf327d + jne short 0329eh ; 75 1d ; 0xf327f + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3281 floppy.c:564 + xor ah, ah ; 30 e4 ; 0xf3284 + or ah, 00ch ; 80 cc 0c ; 0xf3286 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3289 + mov bx, strict word 00041h ; bb 41 00 ; 0xf328c floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf328f + mov es, ax ; 8e c0 ; 0xf3292 + mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3294 + mov byte [bp+016h], ch ; 88 6e 16 ; 0xf3298 + jmp near 0399bh ; e9 fd 06 ; 0xf329b + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf329e floppy.c:566 + shr ax, 008h ; c1 e8 08 ; 0xf32a1 + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf32a4 + jne short 032f7h ; 75 4e ; 0xf32a7 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf32a9 floppy.c:583 + shr dx, 00ch ; c1 ea 0c ; 0xf32ac + mov ah, dl ; 88 d4 ; 0xf32af + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf32b1 floppy.c:584 + sal cx, 004h ; c1 e1 04 ; 0xf32b4 + mov si, word [bp+010h] ; 8b 76 10 ; 0xf32b7 floppy.c:585 + add si, cx ; 01 ce ; 0xf32ba + mov word [bp-008h], si ; 89 76 f8 ; 0xf32bc + cmp cx, si ; 39 f1 ; 0xf32bf floppy.c:587 + jbe short 032c5h ; 76 02 ; 0xf32c1 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf32c3 floppy.c:589 + mov dl, bh ; 88 fa ; 0xf32c5 floppy.c:591 + xor dh, dh ; 30 f6 ; 0xf32c7 + mov cx, dx ; 89 d1 ; 0xf32c9 + sal cx, 009h ; c1 e1 09 ; 0xf32cb + dec cx ; 49 ; 0xf32ce + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf32cf floppy.c:594 + add dx, cx ; 01 ca ; 0xf32d2 + cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf32d4 floppy.c:595 + jnc short 032fah ; 73 21 ; 0xf32d7 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32d9 floppy.c:596 + xor ah, ah ; 30 e4 ; 0xf32dc + or ah, 009h ; 80 cc 09 ; 0xf32de + mov word [bp+016h], ax ; 89 46 16 ; 0xf32e1 + mov bx, strict word 00041h ; bb 41 00 ; 0xf32e4 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf32e7 + mov es, ax ; 8e c0 ; 0xf32ea + mov byte [es:bx], 009h ; 26 c6 07 09 ; 0xf32ec + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf32f0 + jmp near 0399bh ; e9 a4 06 ; 0xf32f4 + jmp near 03447h ; e9 4d 01 ; 0xf32f7 + mov AL, strict byte 006h ; b0 06 ; 0xf32fa floppy.c:604 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf32fc + out DX, AL ; ee ; 0xf32ff + xor al, al ; 30 c0 ; 0xf3300 floppy.c:607 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3302 + out DX, AL ; ee ; 0xf3305 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3306 floppy.c:608 + mov dx, strict word 00004h ; ba 04 00 ; 0xf3309 + out DX, AL ; ee ; 0xf330c + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf330d floppy.c:609 + shr dx, 008h ; c1 ea 08 ; 0xf3310 + mov al, dl ; 88 d0 ; 0xf3313 + mov dx, strict word 00004h ; ba 04 00 ; 0xf3315 + out DX, AL ; ee ; 0xf3318 + xor al, al ; 30 c0 ; 0xf3319 floppy.c:611 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf331b + out DX, AL ; ee ; 0xf331e + mov al, cl ; 88 c8 ; 0xf331f floppy.c:612 + mov dx, strict word 00005h ; ba 05 00 ; 0xf3321 + out DX, AL ; ee ; 0xf3324 + shr cx, 008h ; c1 e9 08 ; 0xf3325 floppy.c:613 + mov al, cl ; 88 c8 ; 0xf3328 + out DX, AL ; ee ; 0xf332a + mov AL, strict byte 046h ; b0 46 ; 0xf332b floppy.c:621 + mov dx, strict word 0000bh ; ba 0b 00 ; 0xf332d + out DX, AL ; ee ; 0xf3330 + mov al, ah ; 88 e0 ; 0xf3331 floppy.c:625 + mov dx, 00081h ; ba 81 00 ; 0xf3333 + out DX, AL ; ee ; 0xf3336 + mov AL, strict byte 002h ; b0 02 ; 0xf3337 floppy.c:628 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3339 + out DX, AL ; ee ; 0xf333c + mov cl, bl ; 88 d9 ; 0xf333d floppy.c:633 + xor ch, ch ; 30 ed ; 0xf333f + mov ax, cx ; 89 c8 ; 0xf3341 + call 02e82h ; e8 3c fb ; 0xf3343 + mov AL, strict byte 0e6h ; b0 e6 ; 0xf3346 floppy.c:636 + mov dx, 003f5h ; ba f5 03 ; 0xf3348 + out DX, AL ; ee ; 0xf334b + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf334c floppy.c:637 + xor ah, ah ; 30 e4 ; 0xf334f + mov dx, ax ; 89 c2 ; 0xf3351 + sal dx, 002h ; c1 e2 02 ; 0xf3353 + mov al, bl ; 88 d8 ; 0xf3356 + or ax, dx ; 09 d0 ; 0xf3358 + mov dx, 003f5h ; ba f5 03 ; 0xf335a + out DX, AL ; ee ; 0xf335d + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf335e floppy.c:638 + out DX, AL ; ee ; 0xf3361 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3362 floppy.c:639 + out DX, AL ; ee ; 0xf3365 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf3366 floppy.c:640 + out DX, AL ; ee ; 0xf3369 + mov AL, strict byte 002h ; b0 02 ; 0xf336a floppy.c:641 + out DX, AL ; ee ; 0xf336c + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf336d floppy.c:642 + xor ah, ah ; 30 e4 ; 0xf3370 + mov dl, bh ; 88 fa ; 0xf3372 + xor dh, dh ; 30 f6 ; 0xf3374 + add ax, dx ; 01 d0 ; 0xf3376 + dec ax ; 48 ; 0xf3378 + mov dx, 003f5h ; ba f5 03 ; 0xf3379 + out DX, AL ; ee ; 0xf337c + xor al, al ; 30 c0 ; 0xf337d floppy.c:643 + out DX, AL ; ee ; 0xf337f + mov AL, strict byte 0ffh ; b0 ff ; 0xf3380 floppy.c:644 + out DX, AL ; ee ; 0xf3382 + call 02e0bh ; e8 85 fa ; 0xf3383 floppy.c:676 + test al, al ; 84 c0 ; 0xf3386 floppy.c:677 + jne short 033a9h ; 75 1f ; 0xf3388 + mov ax, cx ; 89 c8 ; 0xf338a floppy.c:679 + call 02e43h ; e8 b4 fa ; 0xf338c + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf338f floppy.c:680 + xor ah, ah ; 30 e4 ; 0xf3392 + or ah, 080h ; 80 cc 80 ; 0xf3394 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3397 + mov bx, strict word 00041h ; bb 41 00 ; 0xf339a floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf339d + mov es, ax ; 8e c0 ; 0xf33a0 + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf33a2 + jmp near 03298h ; e9 ef fe ; 0xf33a6 + mov dx, 003f4h ; ba f4 03 ; 0xf33a9 floppy.c:689 + in AL, DX ; ec ; 0xf33ac + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf33ad + and AL, strict byte 0c0h ; 24 c0 ; 0xf33af floppy.c:690 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf33b1 + je short 033c3h ; 74 0e ; 0xf33b3 + push 002adh ; 68 ad 02 ; 0xf33b5 floppy.c:691 + push 002e0h ; 68 e0 02 ; 0xf33b8 + push strict byte 00007h ; 6a 07 ; 0xf33bb + call 01953h ; e8 93 e5 ; 0xf33bd + add sp, strict byte 00006h ; 83 c4 06 ; 0xf33c0 + xor cx, cx ; 31 c9 ; 0xf33c3 floppy.c:694 + jmp short 033cch ; eb 05 ; 0xf33c5 + cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf33c7 + jnl short 033e2h ; 7d 16 ; 0xf33ca + mov dx, 003f5h ; ba f5 03 ; 0xf33cc floppy.c:695 + in AL, DX ; ec ; 0xf33cf + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf33d0 + mov si, cx ; 89 ce ; 0xf33d2 + add si, strict byte 00042h ; 83 c6 42 ; 0xf33d4 + mov dx, strict word 00040h ; ba 40 00 ; 0xf33d7 floppy.c:53 + mov es, dx ; 8e c2 ; 0xf33da + mov byte [es:si], al ; 26 88 04 ; 0xf33dc + inc cx ; 41 ; 0xf33df floppy.c:695 + jmp short 033c7h ; eb e5 ; 0xf33e0 + mov si, strict word 00042h ; be 42 00 ; 0xf33e2 floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf33e5 + mov es, ax ; 8e c0 ; 0xf33e8 + mov al, byte [es:si] ; 26 8a 04 ; 0xf33ea + test AL, strict byte 0c0h ; a8 c0 ; 0xf33ed floppy.c:49 + je short 03412h ; 74 21 ; 0xf33ef + mov al, bl ; 88 d8 ; 0xf33f1 floppy.c:699 + xor ah, ah ; 30 e4 ; 0xf33f3 + call 02e43h ; e8 4b fa ; 0xf33f5 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf33f8 floppy.c:700 + xor ah, ah ; 30 e4 ; 0xf33fb + or ah, 020h ; 80 cc 20 ; 0xf33fd + mov word [bp+016h], ax ; 89 46 16 ; 0xf3400 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3403 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3406 + mov es, ax ; 8e c0 ; 0xf3409 + mov byte [es:bx], 020h ; 26 c6 07 20 ; 0xf340b + jmp near 032f0h ; e9 de fe ; 0xf340f + mov al, bh ; 88 f8 ; 0xf3412 floppy.c:708 + xor ah, ah ; 30 e4 ; 0xf3414 + sal ax, 009h ; c1 e0 09 ; 0xf3416 + cwd ; 99 ; 0xf3419 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf341a + sar ax, 1 ; d1 f8 ; 0xf341c + mov si, word [bp+010h] ; 8b 76 10 ; 0xf341e + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3421 + mov di, si ; 89 f7 ; 0xf3424 + mov cx, ax ; 89 c1 ; 0xf3426 + mov es, dx ; 8e c2 ; 0xf3428 + push DS ; 1e ; 0xf342a + mov ds, dx ; 8e da ; 0xf342b + rep movsw ; f3 a5 ; 0xf342d + pop DS ; 1f ; 0xf342f + mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf3430 floppy.c:712 + xor dh, dh ; 30 f6 ; 0xf3433 + mov al, bl ; 88 d8 ; 0xf3435 + xor ah, ah ; 30 e4 ; 0xf3437 + call 02dbdh ; e8 81 f9 ; 0xf3439 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf343c floppy.c:714 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3440 floppy.c:715 + jmp near 031beh ; e9 77 fd ; 0xf3444 floppy.c:716 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3447 floppy.c:717 + shr ax, 008h ; c1 e8 08 ; 0xf344a + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf344d + je short 03455h ; 74 03 ; 0xf3450 + jmp near 03580h ; e9 2b 01 ; 0xf3452 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf3455 floppy.c:728 + shr cx, 00ch ; c1 e9 0c ; 0xf3458 + mov ah, cl ; 88 cc ; 0xf345b + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf345d floppy.c:729 + sal dx, 004h ; c1 e2 04 ; 0xf3460 + mov si, word [bp+010h] ; 8b 76 10 ; 0xf3463 floppy.c:730 + add si, dx ; 01 d6 ; 0xf3466 + mov word [bp-008h], si ; 89 76 f8 ; 0xf3468 + cmp dx, si ; 39 f2 ; 0xf346b floppy.c:732 + jbe short 03471h ; 76 02 ; 0xf346d + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf346f floppy.c:734 + mov dl, bh ; 88 fa ; 0xf3471 floppy.c:736 + xor dh, dh ; 30 f6 ; 0xf3473 + mov cx, dx ; 89 d1 ; 0xf3475 + sal cx, 009h ; c1 e1 09 ; 0xf3477 + dec cx ; 49 ; 0xf347a + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf347b floppy.c:739 + add dx, cx ; 01 ca ; 0xf347e + cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf3480 floppy.c:740 + jnc short 03488h ; 73 03 ; 0xf3483 + jmp near 032d9h ; e9 51 fe ; 0xf3485 + mov AL, strict byte 006h ; b0 06 ; 0xf3488 floppy.c:749 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf348a + out DX, AL ; ee ; 0xf348d + xor al, al ; 30 c0 ; 0xf348e floppy.c:751 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3490 + out DX, AL ; ee ; 0xf3493 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3494 floppy.c:752 + mov dx, strict word 00004h ; ba 04 00 ; 0xf3497 + out DX, AL ; ee ; 0xf349a + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf349b floppy.c:753 + shr dx, 008h ; c1 ea 08 ; 0xf349e + mov al, dl ; 88 d0 ; 0xf34a1 + mov dx, strict word 00004h ; ba 04 00 ; 0xf34a3 + out DX, AL ; ee ; 0xf34a6 + xor al, al ; 30 c0 ; 0xf34a7 floppy.c:754 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf34a9 + out DX, AL ; ee ; 0xf34ac + mov al, cl ; 88 c8 ; 0xf34ad floppy.c:755 + mov dx, strict word 00005h ; ba 05 00 ; 0xf34af + out DX, AL ; ee ; 0xf34b2 + shr cx, 008h ; c1 e9 08 ; 0xf34b3 floppy.c:756 + mov al, cl ; 88 c8 ; 0xf34b6 + out DX, AL ; ee ; 0xf34b8 + mov AL, strict byte 04ah ; b0 4a ; 0xf34b9 floppy.c:763 + mov dx, strict word 0000bh ; ba 0b 00 ; 0xf34bb + out DX, AL ; ee ; 0xf34be + mov al, ah ; 88 e0 ; 0xf34bf floppy.c:766 + mov dx, 00081h ; ba 81 00 ; 0xf34c1 + out DX, AL ; ee ; 0xf34c4 + mov AL, strict byte 002h ; b0 02 ; 0xf34c5 floppy.c:769 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf34c7 + out DX, AL ; ee ; 0xf34ca + mov cl, bl ; 88 d9 ; 0xf34cb floppy.c:774 + xor ch, ch ; 30 ed ; 0xf34cd + mov ax, cx ; 89 c8 ; 0xf34cf + call 02e82h ; e8 ae f9 ; 0xf34d1 + mov AL, strict byte 0c5h ; b0 c5 ; 0xf34d4 floppy.c:777 + mov dx, 003f5h ; ba f5 03 ; 0xf34d6 + out DX, AL ; ee ; 0xf34d9 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf34da floppy.c:778 + xor ah, ah ; 30 e4 ; 0xf34dd + mov dx, ax ; 89 c2 ; 0xf34df + sal dx, 002h ; c1 e2 02 ; 0xf34e1 + mov al, bl ; 88 d8 ; 0xf34e4 + or ax, dx ; 09 d0 ; 0xf34e6 + mov dx, 003f5h ; ba f5 03 ; 0xf34e8 + out DX, AL ; ee ; 0xf34eb + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf34ec floppy.c:779 + out DX, AL ; ee ; 0xf34ef + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf34f0 floppy.c:780 + out DX, AL ; ee ; 0xf34f3 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf34f4 floppy.c:781 + out DX, AL ; ee ; 0xf34f7 + mov AL, strict byte 002h ; b0 02 ; 0xf34f8 floppy.c:782 + out DX, AL ; ee ; 0xf34fa + mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf34fb floppy.c:783 + xor dh, dh ; 30 f6 ; 0xf34fe + mov al, bh ; 88 f8 ; 0xf3500 + xor ah, ah ; 30 e4 ; 0xf3502 + add ax, dx ; 01 d0 ; 0xf3504 + dec ax ; 48 ; 0xf3506 + mov dx, 003f5h ; ba f5 03 ; 0xf3507 + out DX, AL ; ee ; 0xf350a + xor al, al ; 30 c0 ; 0xf350b floppy.c:784 + out DX, AL ; ee ; 0xf350d + mov AL, strict byte 0ffh ; b0 ff ; 0xf350e floppy.c:785 + out DX, AL ; ee ; 0xf3510 + call 02e0bh ; e8 f7 f8 ; 0xf3511 floppy.c:814 + test al, al ; 84 c0 ; 0xf3514 floppy.c:815 + jne short 0351bh ; 75 03 ; 0xf3516 + jmp near 0338ah ; e9 6f fe ; 0xf3518 + mov dx, 003f4h ; ba f4 03 ; 0xf351b floppy.c:826 + in AL, DX ; ec ; 0xf351e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf351f + and AL, strict byte 0c0h ; 24 c0 ; 0xf3521 floppy.c:827 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3523 + je short 03535h ; 74 0e ; 0xf3525 + push 002adh ; 68 ad 02 ; 0xf3527 floppy.c:828 + push 002e0h ; 68 e0 02 ; 0xf352a + push strict byte 00007h ; 6a 07 ; 0xf352d + call 01953h ; e8 21 e4 ; 0xf352f + add sp, strict byte 00006h ; 83 c4 06 ; 0xf3532 + xor cx, cx ; 31 c9 ; 0xf3535 floppy.c:831 + jmp short 0353eh ; eb 05 ; 0xf3537 + cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3539 + jnl short 03554h ; 7d 16 ; 0xf353c + mov dx, 003f5h ; ba f5 03 ; 0xf353e floppy.c:832 + in AL, DX ; ec ; 0xf3541 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3542 + mov si, cx ; 89 ce ; 0xf3544 + add si, strict byte 00042h ; 83 c6 42 ; 0xf3546 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3549 floppy.c:53 + mov es, dx ; 8e c2 ; 0xf354c + mov byte [es:si], al ; 26 88 04 ; 0xf354e + inc cx ; 41 ; 0xf3551 floppy.c:832 + jmp short 03539h ; eb e5 ; 0xf3552 + mov si, strict word 00042h ; be 42 00 ; 0xf3554 floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3557 + mov es, ax ; 8e c0 ; 0xf355a + mov al, byte [es:si] ; 26 8a 04 ; 0xf355c + test AL, strict byte 0c0h ; a8 c0 ; 0xf355f floppy.c:49 + jne short 03566h ; 75 03 ; 0xf3561 + jmp near 03430h ; e9 ca fe ; 0xf3563 + mov bx, strict word 00043h ; bb 43 00 ; 0xf3566 floppy.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3569 + test AL, strict byte 002h ; a8 02 ; 0xf356c floppy.c:49 + je short 03578h ; 74 08 ; 0xf356e + mov word [bp+016h], 00300h ; c7 46 16 00 03 ; 0xf3570 floppy.c:839 + jmp near 0399bh ; e9 23 04 ; 0xf3575 + mov word [bp+016h], 00100h ; c7 46 16 00 01 ; 0xf3578 floppy.c:842 + jmp near 0399bh ; e9 1b 04 ; 0xf357d floppy.c:843 + mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf3580 floppy.c:858 + xor dh, dh ; 30 f6 ; 0xf3583 + mov al, bl ; 88 d8 ; 0xf3585 + xor ah, ah ; 30 e4 ; 0xf3587 + call 02dbdh ; e8 31 f8 ; 0xf3589 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf358c floppy.c:860 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3590 floppy.c:861 + jmp near 031beh ; e9 27 fc ; 0xf3594 floppy.c:862 + mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf3597 floppy.c:869 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf359a floppy.c:870 + shr ax, 008h ; c1 e8 08 ; 0xf359d + mov byte [bp-004h], al ; 88 46 fc ; 0xf35a0 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf35a3 floppy.c:871 + shr dx, 008h ; c1 ea 08 ; 0xf35a6 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf35a9 + mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf35ac floppy.c:872 + cmp bl, 001h ; 80 fb 01 ; 0xf35af floppy.c:874 + jnbe short 035c6h ; 77 12 ; 0xf35b2 + cmp dl, 001h ; 80 fa 01 ; 0xf35b4 + jnbe short 035c6h ; 77 0d ; 0xf35b7 + cmp AL, strict byte 04fh ; 3c 4f ; 0xf35b9 + jnbe short 035c6h ; 77 09 ; 0xf35bb + test bh, bh ; 84 ff ; 0xf35bd + je short 035c6h ; 74 05 ; 0xf35bf + cmp bh, 012h ; 80 ff 12 ; 0xf35c1 + jbe short 035e1h ; 76 1b ; 0xf35c4 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf35c6 floppy.c:876 + xor ah, ah ; 30 e4 ; 0xf35c9 + or ah, 001h ; 80 cc 01 ; 0xf35cb + mov word [bp+016h], ax ; 89 46 16 ; 0xf35ce + mov si, strict word 00041h ; be 41 00 ; 0xf35d1 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf35d4 + mov es, ax ; 8e c0 ; 0xf35d7 + mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf35d9 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf35dd floppy.c:878 + mov al, bl ; 88 d8 ; 0xf35e1 floppy.c:882 + xor ah, ah ; 30 e4 ; 0xf35e3 + call 030b8h ; e8 d0 fa ; 0xf35e5 + test ax, ax ; 85 c0 ; 0xf35e8 + jne short 03606h ; 75 1a ; 0xf35ea + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf35ec floppy.c:883 + xor ah, ah ; 30 e4 ; 0xf35ef + or ah, 080h ; 80 cc 80 ; 0xf35f1 + mov word [bp+016h], ax ; 89 46 16 ; 0xf35f4 + mov bx, strict word 00041h ; bb 41 00 ; 0xf35f7 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf35fa + mov es, ax ; 8e c0 ; 0xf35fd + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf35ff + jmp near 0399bh ; e9 95 03 ; 0xf3603 + mov cl, bl ; 88 d9 ; 0xf3606 floppy.c:890 + xor ch, ch ; 30 ed ; 0xf3608 + mov ax, cx ; 89 c8 ; 0xf360a + call 02ef6h ; e8 e7 f8 ; 0xf360c + test ax, ax ; 85 c0 ; 0xf360f + jne short 0361fh ; 75 0c ; 0xf3611 + mov ax, cx ; 89 c8 ; 0xf3613 floppy.c:891 + call 02fd2h ; e8 ba f9 ; 0xf3615 + test ax, ax ; 85 c0 ; 0xf3618 + jne short 0361fh ; 75 03 ; 0xf361a + jmp near 03281h ; e9 62 fc ; 0xf361c + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf361f floppy.c:902 + shr cx, 00ch ; c1 e9 0c ; 0xf3622 + mov ah, cl ; 88 cc ; 0xf3625 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3627 floppy.c:903 + sal dx, 004h ; c1 e2 04 ; 0xf362a + mov si, word [bp+010h] ; 8b 76 10 ; 0xf362d floppy.c:904 + add si, dx ; 01 d6 ; 0xf3630 + mov word [bp-008h], si ; 89 76 f8 ; 0xf3632 + cmp dx, si ; 39 f2 ; 0xf3635 floppy.c:906 + jbe short 0363bh ; 76 02 ; 0xf3637 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf3639 floppy.c:908 + mov dl, bh ; 88 fa ; 0xf363b floppy.c:910 + xor dh, dh ; 30 f6 ; 0xf363d + mov cx, dx ; 89 d1 ; 0xf363f + sal cx, 002h ; c1 e1 02 ; 0xf3641 + dec cx ; 49 ; 0xf3644 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3645 floppy.c:913 + add dx, cx ; 01 ca ; 0xf3648 + cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf364a floppy.c:914 + jnc short 03652h ; 73 03 ; 0xf364d + jmp near 032d9h ; e9 87 fc ; 0xf364f + mov AL, strict byte 006h ; b0 06 ; 0xf3652 floppy.c:922 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3654 + out DX, AL ; ee ; 0xf3657 + xor al, al ; 30 c0 ; 0xf3658 floppy.c:923 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf365a + out DX, AL ; ee ; 0xf365d + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf365e floppy.c:924 + mov dx, strict word 00004h ; ba 04 00 ; 0xf3661 + out DX, AL ; ee ; 0xf3664 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3665 floppy.c:925 + shr dx, 008h ; c1 ea 08 ; 0xf3668 + mov al, dl ; 88 d0 ; 0xf366b + mov dx, strict word 00004h ; ba 04 00 ; 0xf366d + out DX, AL ; ee ; 0xf3670 + xor al, al ; 30 c0 ; 0xf3671 floppy.c:926 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3673 + out DX, AL ; ee ; 0xf3676 + mov al, cl ; 88 c8 ; 0xf3677 floppy.c:927 + mov dx, strict word 00005h ; ba 05 00 ; 0xf3679 + out DX, AL ; ee ; 0xf367c + shr cx, 008h ; c1 e9 08 ; 0xf367d floppy.c:928 + mov al, cl ; 88 c8 ; 0xf3680 + out DX, AL ; ee ; 0xf3682 + mov AL, strict byte 04ah ; b0 4a ; 0xf3683 floppy.c:931 + mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3685 + out DX, AL ; ee ; 0xf3688 + mov al, ah ; 88 e0 ; 0xf3689 floppy.c:933 + mov dx, 00081h ; ba 81 00 ; 0xf368b + out DX, AL ; ee ; 0xf368e + mov AL, strict byte 002h ; b0 02 ; 0xf368f floppy.c:934 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3691 + out DX, AL ; ee ; 0xf3694 + mov cl, bl ; 88 d9 ; 0xf3695 floppy.c:937 + xor ch, ch ; 30 ed ; 0xf3697 + mov ax, cx ; 89 c8 ; 0xf3699 + call 02e82h ; e8 e4 f7 ; 0xf369b + mov AL, strict byte 00fh ; b0 0f ; 0xf369e floppy.c:940 + mov dx, 003f5h ; ba f5 03 ; 0xf36a0 + out DX, AL ; ee ; 0xf36a3 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf36a4 floppy.c:941 + xor ah, ah ; 30 e4 ; 0xf36a7 + mov dx, ax ; 89 c2 ; 0xf36a9 + sal dx, 002h ; c1 e2 02 ; 0xf36ab + mov al, bl ; 88 d8 ; 0xf36ae + or dx, ax ; 09 c2 ; 0xf36b0 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf36b2 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf36b5 + mov dx, 003f5h ; ba f5 03 ; 0xf36b8 + out DX, AL ; ee ; 0xf36bb + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf36bc floppy.c:942 + out DX, AL ; ee ; 0xf36bf + mov AL, strict byte 04dh ; b0 4d ; 0xf36c0 floppy.c:945 + out DX, AL ; ee ; 0xf36c2 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf36c3 floppy.c:946 + out DX, AL ; ee ; 0xf36c6 + mov AL, strict byte 002h ; b0 02 ; 0xf36c7 floppy.c:947 + out DX, AL ; ee ; 0xf36c9 + mov al, bh ; 88 f8 ; 0xf36ca floppy.c:948 + out DX, AL ; ee ; 0xf36cc + xor al, bh ; 30 f8 ; 0xf36cd floppy.c:949 + out DX, AL ; ee ; 0xf36cf + mov AL, strict byte 0f6h ; b0 f6 ; 0xf36d0 floppy.c:950 + out DX, AL ; ee ; 0xf36d2 + call 02e0bh ; e8 35 f7 ; 0xf36d3 floppy.c:978 + test al, al ; 84 c0 ; 0xf36d6 floppy.c:979 + jne short 036e2h ; 75 08 ; 0xf36d8 + mov ax, cx ; 89 c8 ; 0xf36da floppy.c:980 + call 02e43h ; e8 64 f7 ; 0xf36dc + jmp near 035ech ; e9 0a ff ; 0xf36df floppy.c:78 + mov dx, 003f4h ; ba f4 03 ; 0xf36e2 floppy.c:989 + in AL, DX ; ec ; 0xf36e5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf36e6 + and AL, strict byte 0c0h ; 24 c0 ; 0xf36e8 floppy.c:990 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf36ea + je short 036fch ; 74 0e ; 0xf36ec + push 002adh ; 68 ad 02 ; 0xf36ee floppy.c:991 + push 002e0h ; 68 e0 02 ; 0xf36f1 + push strict byte 00007h ; 6a 07 ; 0xf36f4 + call 01953h ; e8 5a e2 ; 0xf36f6 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf36f9 + xor cx, cx ; 31 c9 ; 0xf36fc floppy.c:994 + jmp short 03705h ; eb 05 ; 0xf36fe + cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3700 + jnl short 0371bh ; 7d 16 ; 0xf3703 + mov dx, 003f5h ; ba f5 03 ; 0xf3705 floppy.c:995 + in AL, DX ; ec ; 0xf3708 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3709 + mov si, cx ; 89 ce ; 0xf370b + add si, strict byte 00042h ; 83 c6 42 ; 0xf370d + mov dx, strict word 00040h ; ba 40 00 ; 0xf3710 floppy.c:53 + mov es, dx ; 8e c2 ; 0xf3713 + mov byte [es:si], al ; 26 88 04 ; 0xf3715 + inc cx ; 41 ; 0xf3718 floppy.c:995 + jmp short 03700h ; eb e5 ; 0xf3719 + mov si, strict word 00042h ; be 42 00 ; 0xf371b floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf371e + mov es, ax ; 8e c0 ; 0xf3721 + mov al, byte [es:si] ; 26 8a 04 ; 0xf3723 + test AL, strict byte 0c0h ; a8 c0 ; 0xf3726 floppy.c:49 + je short 03745h ; 74 1b ; 0xf3728 + mov si, strict word 00043h ; be 43 00 ; 0xf372a floppy.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf372d + test AL, strict byte 002h ; a8 02 ; 0xf3730 floppy.c:49 + je short 03737h ; 74 03 ; 0xf3732 + jmp near 03570h ; e9 39 fe ; 0xf3734 + push 002adh ; 68 ad 02 ; 0xf3737 floppy.c:1006 + push 002f4h ; 68 f4 02 ; 0xf373a + push strict byte 00007h ; 6a 07 ; 0xf373d + call 01953h ; e8 11 e2 ; 0xf373f + add sp, strict byte 00006h ; 83 c4 06 ; 0xf3742 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3745 floppy.c:1010 + mov si, strict word 00041h ; be 41 00 ; 0xf3749 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf374c + mov es, ax ; 8e c0 ; 0xf374f + mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf3751 + mov al, bl ; 88 d8 ; 0xf3755 floppy.c:1012 + xor ah, ah ; 30 e4 ; 0xf3757 + xor dx, dx ; 31 d2 ; 0xf3759 + call 02dbdh ; e8 5f f6 ; 0xf375b + jmp near 03440h ; e9 df fc ; 0xf375e + mov bl, ah ; 88 e3 ; 0xf3761 floppy.c:1019 + cmp ah, 001h ; 80 fc 01 ; 0xf3763 floppy.c:1021 + jbe short 03786h ; 76 1e ; 0xf3766 + xor ax, ax ; 31 c0 ; 0xf3768 floppy.c:1022 + mov word [bp+016h], ax ; 89 46 16 ; 0xf376a + mov word [bp+010h], ax ; 89 46 10 ; 0xf376d floppy.c:1023 + mov word [bp+014h], ax ; 89 46 14 ; 0xf3770 floppy.c:1024 + mov word [bp+012h], ax ; 89 46 12 ; 0xf3773 floppy.c:1025 + mov word [bp+006h], ax ; 89 46 06 ; 0xf3776 floppy.c:1026 + mov word [bp+008h], ax ; 89 46 08 ; 0xf3779 floppy.c:1027 + mov al, bh ; 88 f8 ; 0xf377c floppy.c:1028 + xor ah, ah ; 30 e4 ; 0xf377e + mov word [bp+012h], ax ; 89 46 12 ; 0xf3780 + jmp near 038a5h ; e9 1f 01 ; 0xf3783 + mov ax, strict word 00010h ; b8 10 00 ; 0xf3786 floppy.c:1029 + call 01664h ; e8 d8 de ; 0xf3789 + mov dl, al ; 88 c2 ; 0xf378c + xor bh, bh ; 30 ff ; 0xf378e floppy.c:1035 + test AL, strict byte 0f0h ; a8 f0 ; 0xf3790 floppy.c:1036 + je short 03796h ; 74 02 ; 0xf3792 + mov BH, strict byte 001h ; b7 01 ; 0xf3794 floppy.c:1037 + test dl, 00fh ; f6 c2 0f ; 0xf3796 floppy.c:1038 + je short 0379dh ; 74 02 ; 0xf3799 + db 0feh, 0c7h + ; inc bh ; fe c7 ; 0xf379b floppy.c:1039 + test bl, bl ; 84 db ; 0xf379d floppy.c:1041 + jne short 037a6h ; 75 05 ; 0xf379f + shr dl, 004h ; c0 ea 04 ; 0xf37a1 floppy.c:1042 + jmp short 037a9h ; eb 03 ; 0xf37a4 floppy.c:1043 + and dl, 00fh ; 80 e2 0f ; 0xf37a6 floppy.c:1044 + mov byte [bp+011h], 000h ; c6 46 11 00 ; 0xf37a9 floppy.c:1047 + mov al, dl ; 88 d0 ; 0xf37ad + xor ah, ah ; 30 e4 ; 0xf37af + mov word [bp+010h], ax ; 89 46 10 ; 0xf37b1 + xor al, dl ; 30 d0 ; 0xf37b4 floppy.c:1048 + mov word [bp+016h], ax ; 89 46 16 ; 0xf37b6 + mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf37b9 floppy.c:1050 + mov cl, bh ; 88 f9 ; 0xf37bc + mov word [bp+012h], cx ; 89 4e 12 ; 0xf37be + mov ax, cx ; 89 c8 ; 0xf37c1 floppy.c:1051 + xor ah, ch ; 30 ec ; 0xf37c3 + or ah, 001h ; 80 cc 01 ; 0xf37c5 + mov word [bp+012h], ax ; 89 46 12 ; 0xf37c8 + cmp dl, 003h ; 80 fa 03 ; 0xf37cb floppy.c:1053 + jc short 037e5h ; 72 15 ; 0xf37ce + jbe short 0380ch ; 76 3a ; 0xf37d0 + cmp dl, 005h ; 80 fa 05 ; 0xf37d2 + jc short 03813h ; 72 3c ; 0xf37d5 + jbe short 0381ah ; 76 41 ; 0xf37d7 + cmp dl, 00fh ; 80 fa 0f ; 0xf37d9 + je short 03828h ; 74 4a ; 0xf37dc + cmp dl, 00eh ; 80 fa 0e ; 0xf37de + je short 03821h ; 74 3e ; 0xf37e1 + jmp short 0382fh ; eb 4a ; 0xf37e3 + cmp dl, 002h ; 80 fa 02 ; 0xf37e5 + je short 03805h ; 74 1b ; 0xf37e8 + cmp dl, 001h ; 80 fa 01 ; 0xf37ea + je short 037feh ; 74 0f ; 0xf37ed + test dl, dl ; 84 d2 ; 0xf37ef + jne short 0382fh ; 75 3c ; 0xf37f1 + mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf37f3 floppy.c:1055 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf37f8 floppy.c:1056 + jmp short 0383dh ; eb 3f ; 0xf37fc floppy.c:1057 + mov word [bp+014h], 02709h ; c7 46 14 09 27 ; 0xf37fe floppy.c:1060 + jmp short 0383dh ; eb 38 ; 0xf3803 floppy.c:1061 + mov word [bp+014h], 04f0fh ; c7 46 14 0f 4f ; 0xf3805 floppy.c:1064 + jmp short 0383dh ; eb 31 ; 0xf380a floppy.c:1065 + mov word [bp+014h], 04f09h ; c7 46 14 09 4f ; 0xf380c floppy.c:1068 + jmp short 0383dh ; eb 2a ; 0xf3811 floppy.c:1069 + mov word [bp+014h], 04f12h ; c7 46 14 12 4f ; 0xf3813 floppy.c:1072 + jmp short 0383dh ; eb 23 ; 0xf3818 floppy.c:1073 + mov word [bp+014h], 04f24h ; c7 46 14 24 4f ; 0xf381a floppy.c:1076 + jmp short 0383dh ; eb 1c ; 0xf381f floppy.c:1077 + mov word [bp+014h], 0fe3fh ; c7 46 14 3f fe ; 0xf3821 floppy.c:1080 + jmp short 0383dh ; eb 15 ; 0xf3826 floppy.c:1081 + mov word [bp+014h], 0feffh ; c7 46 14 ff fe ; 0xf3828 floppy.c:1084 + jmp short 0383dh ; eb 0e ; 0xf382d floppy.c:1085 + push 002adh ; 68 ad 02 ; 0xf382f floppy.c:1089 + push 00305h ; 68 05 03 ; 0xf3832 + push strict byte 00007h ; 6a 07 ; 0xf3835 + call 01953h ; e8 19 e1 ; 0xf3837 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf383a + mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf383d floppy.c:1093 + mov al, dl ; 88 d0 ; 0xf3842 floppy.c:1094 + xor ah, ah ; 30 e4 ; 0xf3844 + call 03ad1h ; e8 88 02 ; 0xf3846 + mov word [bp+008h], ax ; 89 46 08 ; 0xf3849 + jmp near 03440h ; e9 f1 fb ; 0xf384c + mov bl, ah ; 88 e3 ; 0xf384f floppy.c:1101 + cmp ah, 001h ; 80 fc 01 ; 0xf3851 floppy.c:1102 + jbe short 0385bh ; 76 05 ; 0xf3854 + mov word [bp+016h], dx ; 89 56 16 ; 0xf3856 floppy.c:1103 + jmp short 038a5h ; eb 4a ; 0xf3859 + mov ax, strict word 00010h ; b8 10 00 ; 0xf385b floppy.c:1109 + call 01664h ; e8 03 de ; 0xf385e + test bl, bl ; 84 db ; 0xf3861 floppy.c:1110 + jne short 0386ch ; 75 07 ; 0xf3863 + mov dl, al ; 88 c2 ; 0xf3865 floppy.c:1111 + shr dl, 004h ; c0 ea 04 ; 0xf3867 + jmp short 03871h ; eb 05 ; 0xf386a floppy.c:1112 + mov dl, al ; 88 c2 ; 0xf386c floppy.c:1113 + and dl, 00fh ; 80 e2 0f ; 0xf386e + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3871 floppy.c:1114 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3875 + xor ah, ah ; 30 e4 ; 0xf3878 + test dl, dl ; 84 d2 ; 0xf387a floppy.c:1115 + je short 0388bh ; 74 0d ; 0xf387c + cmp dl, 001h ; 80 fa 01 ; 0xf387e floppy.c:1116 + jbe short 03888h ; 76 05 ; 0xf3881 + or ah, 002h ; 80 cc 02 ; 0xf3883 floppy.c:1118 + jmp short 0388bh ; eb 03 ; 0xf3886 floppy.c:1119 + or ah, 001h ; 80 cc 01 ; 0xf3888 floppy.c:1120 + mov word [bp+016h], ax ; 89 46 16 ; 0xf388b + jmp near 031beh ; e9 2d f9 ; 0xf388e floppy.c:1123 + cmp ah, 001h ; 80 fc 01 ; 0xf3891 floppy.c:1128 + jbe short 038abh ; 76 15 ; 0xf3894 + mov word [bp+016h], si ; 89 76 16 ; 0xf3896 floppy.c:1129 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3899 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf389c + mov es, ax ; 8e c0 ; 0xf389f + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf38a1 + mov word [bp+01ch], cx ; 89 4e 1c ; 0xf38a5 + jmp near 031beh ; e9 13 f9 ; 0xf38a8 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf38ab floppy.c:1135 + xor ah, ah ; 30 e4 ; 0xf38ae + or ah, 006h ; 80 cc 06 ; 0xf38b0 + mov word [bp+016h], ax ; 89 46 16 ; 0xf38b3 + mov bx, strict word 00041h ; bb 41 00 ; 0xf38b6 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf38b9 + mov es, ax ; 8e c0 ; 0xf38bc + mov byte [es:bx], 006h ; 26 c6 07 06 ; 0xf38be + jmp near 0399bh ; e9 d6 00 ; 0xf38c2 + mov bl, ah ; 88 e3 ; 0xf38c5 floppy.c:1144 + mov dl, byte [bp+016h] ; 8a 56 16 ; 0xf38c7 floppy.c:1152 + cmp ah, 001h ; 80 fc 01 ; 0xf38ca floppy.c:1156 + jnbe short 03896h ; 77 c7 ; 0xf38cd + mov al, bl ; 88 d8 ; 0xf38cf floppy.c:1164 + xor ah, ah ; 30 e4 ; 0xf38d1 + call 030b8h ; e8 e2 f7 ; 0xf38d3 + test ax, ax ; 85 c0 ; 0xf38d6 + jne short 038ddh ; 75 03 ; 0xf38d8 + jmp near 035ech ; e9 0f fd ; 0xf38da + test bl, bl ; 84 db ; 0xf38dd floppy.c:1172 + je short 038e6h ; 74 05 ; 0xf38df + mov bx, 00091h ; bb 91 00 ; 0xf38e1 + jmp short 038e9h ; eb 03 ; 0xf38e4 + mov bx, 00090h ; bb 90 00 ; 0xf38e6 + mov word [bp-008h], bx ; 89 5e f8 ; 0xf38e9 + mov ax, strict word 00040h ; b8 40 00 ; 0xf38ec floppy.c:48 + mov es, ax ; 8e c0 ; 0xf38ef + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf38f1 + and bl, 00fh ; 80 e3 0f ; 0xf38f4 floppy.c:1176 + cmp dl, 002h ; 80 fa 02 ; 0xf38f7 floppy.c:1178 + jc short 0390bh ; 72 0f ; 0xf38fa + jbe short 03918h ; 76 1a ; 0xf38fc + cmp dl, 004h ; 80 fa 04 ; 0xf38fe + je short 03913h ; 74 10 ; 0xf3901 + cmp dl, 003h ; 80 fa 03 ; 0xf3903 + je short 0391dh ; 74 15 ; 0xf3906 + jmp near 03149h ; e9 3e f8 ; 0xf3908 + cmp dl, 001h ; 80 fa 01 ; 0xf390b + je short 03913h ; 74 03 ; 0xf390e + jmp near 03149h ; e9 36 f8 ; 0xf3910 + or bl, 090h ; 80 cb 90 ; 0xf3913 floppy.c:1181 + jmp short 03920h ; eb 08 ; 0xf3916 floppy.c:1182 + or bl, 070h ; 80 cb 70 ; 0xf3918 floppy.c:1185 + jmp short 03920h ; eb 03 ; 0xf391b floppy.c:1186 + or bl, 010h ; 80 cb 10 ; 0xf391d floppy.c:1189 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3920 floppy.c:53 + mov es, ax ; 8e c0 ; 0xf3923 + mov si, word [bp-008h] ; 8b 76 f8 ; 0xf3925 + mov byte [es:si], bl ; 26 88 1c ; 0xf3928 + xor al, al ; 30 c0 ; 0xf392b floppy.c:1208 + mov byte [bp+017h], al ; 88 46 17 ; 0xf392d + mov bx, strict word 00041h ; bb 41 00 ; 0xf3930 floppy.c:53 + mov byte [es:bx], al ; 26 88 07 ; 0xf3933 + jmp near 03440h ; e9 07 fb ; 0xf3936 + mov bl, ah ; 88 e3 ; 0xf3939 floppy.c:1218 + mov dl, byte [bp+014h] ; 8a 56 14 ; 0xf393b floppy.c:1220 + mov bh, dl ; 88 d7 ; 0xf393e floppy.c:1221 + and bh, 03fh ; 80 e7 3f ; 0xf3940 + sar dx, 006h ; c1 fa 06 ; 0xf3943 floppy.c:1222 + sal dx, 008h ; c1 e2 08 ; 0xf3946 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf3949 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf394c + shr dx, 008h ; c1 ea 08 ; 0xf394f + add dx, word [bp-00ch] ; 03 56 f4 ; 0xf3952 + mov byte [bp-004h], dl ; 88 56 fc ; 0xf3955 + cmp ah, 001h ; 80 fc 01 ; 0xf3958 floppy.c:1227 + jbe short 03960h ; 76 03 ; 0xf395b + jmp near 03896h ; e9 36 ff ; 0xf395d + mov al, bl ; 88 d8 ; 0xf3960 floppy.c:1235 + xor ah, ah ; 30 e4 ; 0xf3962 + call 030b8h ; e8 51 f7 ; 0xf3964 + test ax, ax ; 85 c0 ; 0xf3967 + jne short 0396eh ; 75 03 ; 0xf3969 + jmp near 035ech ; e9 7e fc ; 0xf396b + mov cl, bl ; 88 d9 ; 0xf396e floppy.c:1243 + xor ch, ch ; 30 ed ; 0xf3970 + mov ax, cx ; 89 c8 ; 0xf3972 + call 02ef6h ; e8 7f f5 ; 0xf3974 + test ax, ax ; 85 c0 ; 0xf3977 + jne short 039a2h ; 75 27 ; 0xf3979 + mov ax, cx ; 89 c8 ; 0xf397b floppy.c:1244 + call 02fd2h ; e8 52 f6 ; 0xf397d + test ax, ax ; 85 c0 ; 0xf3980 + jne short 039a2h ; 75 1e ; 0xf3982 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3984 floppy.c:1245 + xor ah, ah ; 30 e4 ; 0xf3987 + or ah, 00ch ; 80 cc 0c ; 0xf3989 + mov word [bp+016h], ax ; 89 46 16 ; 0xf398c + mov bx, strict word 00041h ; bb 41 00 ; 0xf398f floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3992 + mov es, ax ; 8e c0 ; 0xf3995 + mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3997 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf399b + jmp near 031beh ; e9 1c f8 ; 0xf399f + mov ax, strict word 00010h ; b8 10 00 ; 0xf39a2 floppy.c:1253 + call 01664h ; e8 bc dc ; 0xf39a5 + test bl, bl ; 84 db ; 0xf39a8 floppy.c:1254 + jne short 039b3h ; 75 07 ; 0xf39aa + mov dl, al ; 88 c2 ; 0xf39ac floppy.c:1255 + shr dl, 004h ; c0 ea 04 ; 0xf39ae + jmp short 039b8h ; eb 05 ; 0xf39b1 floppy.c:1256 + mov dl, al ; 88 c2 ; 0xf39b3 floppy.c:1257 + and dl, 00fh ; 80 e2 0f ; 0xf39b5 + test bl, bl ; 84 db ; 0xf39b8 floppy.c:1260 + je short 039c1h ; 74 05 ; 0xf39ba + mov si, 00091h ; be 91 00 ; 0xf39bc + jmp short 039c4h ; eb 03 ; 0xf39bf + mov si, 00090h ; be 90 00 ; 0xf39c1 + mov word [bp-008h], si ; 89 76 f8 ; 0xf39c4 + mov ax, strict word 00040h ; b8 40 00 ; 0xf39c7 floppy.c:48 + mov es, ax ; 8e c0 ; 0xf39ca + mov bl, byte [es:si] ; 26 8a 1c ; 0xf39cc + and bl, 00fh ; 80 e3 0f ; 0xf39cf floppy.c:49 + cmp dl, 003h ; 80 fa 03 ; 0xf39d2 floppy.c:1266 + jc short 039f2h ; 72 1b ; 0xf39d5 + mov al, bl ; 88 d8 ; 0xf39d7 + or AL, strict byte 090h ; 0c 90 ; 0xf39d9 + cmp dl, 003h ; 80 fa 03 ; 0xf39db + jbe short 03a2eh ; 76 4e ; 0xf39de + mov ah, bl ; 88 dc ; 0xf39e0 + or ah, 010h ; 80 cc 10 ; 0xf39e2 + cmp dl, 005h ; 80 fa 05 ; 0xf39e5 + je short 03a2ch ; 74 42 ; 0xf39e8 + cmp dl, 004h ; 80 fa 04 ; 0xf39ea + je short 03a3bh ; 74 4c ; 0xf39ed + jmp near 03a73h ; e9 81 00 ; 0xf39ef + cmp dl, 002h ; 80 fa 02 ; 0xf39f2 + je short 03a0ch ; 74 15 ; 0xf39f5 + cmp dl, 001h ; 80 fa 01 ; 0xf39f7 + jne short 03a3fh ; 75 43 ; 0xf39fa + cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf39fc floppy.c:1268 + jne short 03a3fh ; 75 3d ; 0xf3a00 + cmp bh, 009h ; 80 ff 09 ; 0xf3a02 + jne short 03a55h ; 75 4e ; 0xf3a05 + or bl, 090h ; 80 cb 90 ; 0xf3a07 floppy.c:1269 + jmp short 03a55h ; eb 49 ; 0xf3a0a floppy.c:1271 + cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf3a0c floppy.c:1273 + jne short 03a1ch ; 75 0a ; 0xf3a10 + cmp bh, 009h ; 80 ff 09 ; 0xf3a12 + jne short 03a1ch ; 75 05 ; 0xf3a15 + or bl, 070h ; 80 cb 70 ; 0xf3a17 floppy.c:1274 + jmp short 03a55h ; eb 39 ; 0xf3a1a floppy.c:1275 + cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a1c + jne short 03a73h ; 75 51 ; 0xf3a20 + cmp bh, 00fh ; 80 ff 0f ; 0xf3a22 + jne short 03a73h ; 75 4c ; 0xf3a25 + or bl, 010h ; 80 cb 10 ; 0xf3a27 floppy.c:1276 + jmp short 03a73h ; eb 47 ; 0xf3a2a floppy.c:1278 + jmp short 03a57h ; eb 29 ; 0xf3a2c + cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a2e floppy.c:1280 + jne short 03a73h ; 75 3f ; 0xf3a32 + cmp bh, 009h ; 80 ff 09 ; 0xf3a34 + je short 03a3dh ; 74 04 ; 0xf3a37 + jmp short 03a73h ; eb 38 ; 0xf3a39 + jmp short 03a41h ; eb 04 ; 0xf3a3b + mov bl, al ; 88 c3 ; 0xf3a3d floppy.c:1281 + jmp short 03a73h ; eb 32 ; 0xf3a3f floppy.c:1283 + cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a41 floppy.c:1285 + jne short 03a73h ; 75 2c ; 0xf3a45 + cmp bh, 009h ; 80 ff 09 ; 0xf3a47 floppy.c:1286 + jne short 03a4eh ; 75 02 ; 0xf3a4a + jmp short 03a3dh ; eb ef ; 0xf3a4c + cmp bh, 012h ; 80 ff 12 ; 0xf3a4e floppy.c:1287 + jne short 03a73h ; 75 20 ; 0xf3a51 + mov bl, ah ; 88 e3 ; 0xf3a53 floppy.c:1289 + jmp short 03a73h ; eb 1c ; 0xf3a55 floppy.c:1292 + cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a57 floppy.c:1294 + jne short 03a73h ; 75 16 ; 0xf3a5b + cmp bh, 009h ; 80 ff 09 ; 0xf3a5d floppy.c:1295 + jne short 03a64h ; 75 02 ; 0xf3a60 + jmp short 03a3dh ; eb d9 ; 0xf3a62 + cmp bh, 012h ; 80 ff 12 ; 0xf3a64 floppy.c:1296 + jne short 03a6bh ; 75 02 ; 0xf3a67 + jmp short 03a53h ; eb e8 ; 0xf3a69 + cmp bh, 024h ; 80 ff 24 ; 0xf3a6b floppy.c:1298 + jne short 03a73h ; 75 03 ; 0xf3a6e + or bl, 0d0h ; 80 cb d0 ; 0xf3a70 floppy.c:1300 + mov al, bl ; 88 d8 ; 0xf3a73 floppy.c:1309 + xor ah, ah ; 30 e4 ; 0xf3a75 + sar ax, 004h ; c1 f8 04 ; 0xf3a77 + test AL, strict byte 001h ; a8 01 ; 0xf3a7a + jne short 03a81h ; 75 03 ; 0xf3a7c + jmp near 03984h ; e9 03 ff ; 0xf3a7e + mov ax, strict word 00040h ; b8 40 00 ; 0xf3a81 floppy.c:53 + mov es, ax ; 8e c0 ; 0xf3a84 + mov si, word [bp-008h] ; 8b 76 f8 ; 0xf3a86 + mov byte [es:si], bl ; 26 88 1c ; 0xf3a89 + mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3a8c floppy.c:1322 + mov al, dl ; 88 d0 ; 0xf3a91 floppy.c:1323 + xor ah, ah ; 30 e4 ; 0xf3a93 + call 03ad1h ; e8 39 00 ; 0xf3a95 + mov word [bp+008h], ax ; 89 46 08 ; 0xf3a98 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3a9b floppy.c:1326 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3a9f floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3aa2 + mov es, ax ; 8e c0 ; 0xf3aa5 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3aa7 + jmp near 03440h ; e9 92 f9 ; 0xf3aab + mov bx, 00dcch ; bb cc 0d ; 0xf3aae floppy.c:1332 + mov cx, ds ; 8c d9 ; 0xf3ab1 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3ab3 + call 01910h ; e8 57 de ; 0xf3ab6 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3ab9 + shr ax, 008h ; c1 e8 08 ; 0xf3abc + push ax ; 50 ; 0xf3abf + push 002adh ; 68 ad 02 ; 0xf3ac0 + push 0031ah ; 68 1a 03 ; 0xf3ac3 + push strict byte 00004h ; 6a 04 ; 0xf3ac6 + call 01953h ; e8 88 de ; 0xf3ac8 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf3acb + jmp near 03149h ; e9 78 f6 ; 0xf3ace floppy.c:78 + ; disGetNextSymbol 0xf3ad1 LB 0x7287 -> off=0x0 cb=0000000000000030 uValue=00000000000f24d1 'get_floppy_dpt' +get_floppy_dpt: ; 0xf3ad1 LB 0x30 + push bx ; 53 ; 0xf3ad1 floppyt.c:104 + push dx ; 52 ; 0xf3ad2 + push bp ; 55 ; 0xf3ad3 + mov bp, sp ; 89 e5 ; 0xf3ad4 + mov dl, al ; 88 c2 ; 0xf3ad6 + xor ax, ax ; 31 c0 ; 0xf3ad8 floppyt.c:108 + jmp short 03ae2h ; eb 06 ; 0xf3ada + inc ax ; 40 ; 0xf3adc floppyt.c:110 + cmp ax, strict word 00007h ; 3d 07 00 ; 0xf3add + jnc short 03afah ; 73 18 ; 0xf3ae0 + mov bx, ax ; 89 c3 ; 0xf3ae2 + add bx, ax ; 01 c3 ; 0xf3ae4 + cmp dl, byte [word bx+0005bh] ; 3a 97 5b 00 ; 0xf3ae6 + jne short 03adch ; 75 f0 ; 0xf3aea + mov al, byte [word bx+0005ch] ; 8a 87 5c 00 ; 0xf3aec + xor ah, ah ; 30 e4 ; 0xf3af0 + imul ax, ax, strict byte 0000dh ; 6b c0 0d ; 0xf3af2 + add ax, strict word 00000h ; 05 00 00 ; 0xf3af5 + jmp short 03afdh ; eb 03 ; 0xf3af8 + mov ax, strict word 00041h ; b8 41 00 ; 0xf3afa floppyt.c:113 + pop bp ; 5d ; 0xf3afd floppyt.c:114 + pop dx ; 5a ; 0xf3afe + pop bx ; 5b ; 0xf3aff + retn ; c3 ; 0xf3b00 + ; disGetNextSymbol 0xf3b01 LB 0x7257 -> off=0x0 cb=0000000000000007 uValue=00000000000f2501 'dummy_soft_reset' +dummy_soft_reset: ; 0xf3b01 LB 0x7 + push bp ; 55 ; 0xf3b01 eltorito.c:137 + mov bp, sp ; 89 e5 ; 0xf3b02 + xor ax, ax ; 31 c0 ; 0xf3b04 eltorito.c:140 + pop bp ; 5d ; 0xf3b06 + retn ; c3 ; 0xf3b07 + ; disGetNextSymbol 0xf3b08 LB 0x7250 -> off=0x0 cb=000000000000003b uValue=00000000000f2508 'cdemu_bounce_buf_alloc' +cdemu_bounce_buf_alloc: ; 0xf3b08 LB 0x3b + push bx ; 53 ; 0xf3b08 eltorito.c:169 + push cx ; 51 ; 0xf3b09 + push dx ; 52 ; 0xf3b0a + push di ; 57 ; 0xf3b0b + push bp ; 55 ; 0xf3b0c + mov bp, sp ; 89 e5 ; 0xf3b0d + mov di, 00413h ; bf 13 04 ; 0xf3b0f eltorito.c:58 + xor ax, ax ; 31 c0 ; 0xf3b12 + mov es, ax ; 8e c0 ; 0xf3b14 + mov ax, word [es:di] ; 26 8b 05 ; 0xf3b16 + test ax, ax ; 85 c0 ; 0xf3b19 eltorito.c:175 + je short 03b3dh ; 74 20 ; 0xf3b1b + dec ax ; 48 ; 0xf3b1d eltorito.c:176 + dec ax ; 48 ; 0xf3b1e + mov bx, ax ; 89 c3 ; 0xf3b1f + xor dx, dx ; 31 d2 ; 0xf3b21 eltorito.c:179 + mov cx, strict word 0000ah ; b9 0a 00 ; 0xf3b23 + sal ax, 1 ; d1 e0 ; 0xf3b26 + rcl dx, 1 ; d1 d2 ; 0xf3b28 + loop 03b26h ; e2 fa ; 0xf3b2a + mov di, dx ; 89 d7 ; 0xf3b2c + mov cx, strict word 00004h ; b9 04 00 ; 0xf3b2e + shr di, 1 ; d1 ef ; 0xf3b31 + rcr ax, 1 ; d1 d8 ; 0xf3b33 + loop 03b31h ; e2 fa ; 0xf3b35 + mov di, 00413h ; bf 13 04 ; 0xf3b37 eltorito.c:63 + mov word [es:di], bx ; 26 89 1d ; 0xf3b3a + pop bp ; 5d ; 0xf3b3d eltorito.c:184 + pop di ; 5f ; 0xf3b3e + pop dx ; 5a ; 0xf3b3f + pop cx ; 59 ; 0xf3b40 + pop bx ; 5b ; 0xf3b41 + retn ; c3 ; 0xf3b42 + ; disGetNextSymbol 0xf3b43 LB 0x7215 -> off=0x0 cb=0000000000000017 uValue=00000000000f2543 'cdemu_init' +cdemu_init: ; 0xf3b43 LB 0x17 + push bp ; 55 ; 0xf3b43 eltorito.c:186 + mov bp, sp ; 89 e5 ; 0xf3b44 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b46 eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3b49 + mov es, ax ; 8e c0 ; 0xf3b4c + mov es, [es:bx] ; 26 8e 07 ; 0xf3b4e + mov bx, 00316h ; bb 16 03 ; 0xf3b51 eltorito.c:190 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3b54 eltorito.c:193 + pop bp ; 5d ; 0xf3b58 eltorito.c:194 + retn ; c3 ; 0xf3b59 + ; disGetNextSymbol 0xf3b5a LB 0x71fe -> off=0x0 cb=0000000000000016 uValue=00000000000f255a 'cdemu_isactive' +cdemu_isactive: ; 0xf3b5a LB 0x16 + push bp ; 55 ; 0xf3b5a eltorito.c:196 + mov bp, sp ; 89 e5 ; 0xf3b5b + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b5d eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3b60 + mov es, ax ; 8e c0 ; 0xf3b63 + mov es, [es:bx] ; 26 8e 07 ; 0xf3b65 + mov bx, 00316h ; bb 16 03 ; 0xf3b68 eltorito.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3b6b + pop bp ; 5d ; 0xf3b6e eltorito.c:202 + retn ; c3 ; 0xf3b6f + ; disGetNextSymbol 0xf3b70 LB 0x71e8 -> off=0x0 cb=0000000000000016 uValue=00000000000f2570 'cdemu_emulated_drive' +cdemu_emulated_drive: ; 0xf3b70 LB 0x16 + push bp ; 55 ; 0xf3b70 eltorito.c:204 + mov bp, sp ; 89 e5 ; 0xf3b71 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b73 eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3b76 + mov es, ax ; 8e c0 ; 0xf3b79 + mov es, [es:bx] ; 26 8e 07 ; 0xf3b7b + mov bx, 00318h ; bb 18 03 ; 0xf3b7e eltorito.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3b81 + pop bp ; 5d ; 0xf3b84 eltorito.c:210 + retn ; c3 ; 0xf3b85 + ; disGetNextSymbol 0xf3b86 LB 0x71d2 -> off=0x0 cb=000000000000017b uValue=00000000000f2586 'int13_eltorito' +int13_eltorito: ; 0xf3b86 LB 0x17b + push bp ; 55 ; 0xf3b86 eltorito.c:216 + mov bp, sp ; 89 e5 ; 0xf3b87 + push si ; 56 ; 0xf3b89 + push di ; 57 ; 0xf3b8a + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b8b eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3b8e + mov es, ax ; 8e c0 ; 0xf3b91 + mov di, word [es:bx] ; 26 8b 3f ; 0xf3b93 + mov bx, 00316h ; bb 16 03 ; 0xf3b96 eltorito.c:222 + mov si, word [bp+016h] ; 8b 76 16 ; 0xf3b99 eltorito.c:228 + shr si, 008h ; c1 ee 08 ; 0xf3b9c + cmp si, strict byte 0004bh ; 83 fe 4b ; 0xf3b9f + jc short 03baeh ; 72 0a ; 0xf3ba2 + jbe short 03bd5h ; 76 2f ; 0xf3ba4 + cmp si, strict byte 0004dh ; 83 fe 4d ; 0xf3ba6 + jbe short 03bb3h ; 76 08 ; 0xf3ba9 + jmp near 03cc7h ; e9 19 01 ; 0xf3bab + cmp si, strict byte 0004ah ; 83 fe 4a ; 0xf3bae + jne short 03bd2h ; 75 1f ; 0xf3bb1 + mov bx, 00dcch ; bb cc 0d ; 0xf3bb3 eltorito.c:234 + mov cx, ds ; 8c d9 ; 0xf3bb6 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3bb8 + call 01910h ; e8 52 dd ; 0xf3bbb + push word [bp+016h] ; ff 76 16 ; 0xf3bbe + push 00334h ; 68 34 03 ; 0xf3bc1 + push 00343h ; 68 43 03 ; 0xf3bc4 + push strict byte 00004h ; 6a 04 ; 0xf3bc7 + call 01953h ; e8 87 dd ; 0xf3bc9 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf3bcc + jmp near 03ce2h ; e9 10 01 ; 0xf3bcf eltorito.c:235 + jmp near 03cc7h ; e9 f2 00 ; 0xf3bd2 + mov es, [bp+004h] ; 8e 46 04 ; 0xf3bd5 eltorito.c:51 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3bd8 + mov byte [es:si], 013h ; 26 c6 04 13 ; 0xf3bdb + inc si ; 46 ; 0xf3bdf eltorito.c:242 + mov ax, es ; 8c c0 ; 0xf3be0 eltorito.c:51 + mov es, di ; 8e c7 ; 0xf3be2 + mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf3be4 + mov es, ax ; 8e c0 ; 0xf3be8 eltorito.c:53 + mov byte [es:si], dl ; 26 88 14 ; 0xf3bea + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3bed eltorito.c:243 + inc si ; 46 ; 0xf3bf0 + inc si ; 46 ; 0xf3bf1 + mov es, di ; 8e c7 ; 0xf3bf2 eltorito.c:51 + mov dl, byte [es:bx+002h] ; 26 8a 57 02 ; 0xf3bf4 + mov es, ax ; 8e c0 ; 0xf3bf8 eltorito.c:53 + mov byte [es:si], dl ; 26 88 14 ; 0xf3bfa + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3bfd eltorito.c:244 + add si, strict byte 00003h ; 83 c6 03 ; 0xf3c00 + mov es, di ; 8e c7 ; 0xf3c03 eltorito.c:51 + mov dl, byte [es:bx+003h] ; 26 8a 57 03 ; 0xf3c05 + mov es, ax ; 8e c0 ; 0xf3c09 eltorito.c:53 + mov byte [es:si], dl ; 26 88 14 ; 0xf3c0b + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c0e eltorito.c:245 + add si, strict byte 00004h ; 83 c6 04 ; 0xf3c11 + mov es, di ; 8e c7 ; 0xf3c14 eltorito.c:71 + mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf3c16 + mov cx, word [es:bx+00ah] ; 26 8b 4f 0a ; 0xf3c1a + mov es, ax ; 8e c0 ; 0xf3c1e eltorito.c:73 + mov word [es:si], dx ; 26 89 14 ; 0xf3c20 + mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf3c23 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c27 eltorito.c:246 + add si, strict byte 00008h ; 83 c6 08 ; 0xf3c2a + mov es, di ; 8e c7 ; 0xf3c2d eltorito.c:61 + mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf3c2f + mov es, ax ; 8e c0 ; 0xf3c33 eltorito.c:63 + mov word [es:si], dx ; 26 89 14 ; 0xf3c35 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c38 eltorito.c:247 + add si, strict byte 0000ah ; 83 c6 0a ; 0xf3c3b + mov es, di ; 8e c7 ; 0xf3c3e eltorito.c:61 + mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf3c40 + mov es, ax ; 8e c0 ; 0xf3c44 eltorito.c:63 + mov word [es:si], dx ; 26 89 14 ; 0xf3c46 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c49 eltorito.c:248 + add si, strict byte 0000ch ; 83 c6 0c ; 0xf3c4c + mov es, di ; 8e c7 ; 0xf3c4f eltorito.c:61 + mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf3c51 + mov es, ax ; 8e c0 ; 0xf3c55 eltorito.c:63 + mov word [es:si], dx ; 26 89 14 ; 0xf3c57 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c5a eltorito.c:249 + add si, strict byte 0000eh ; 83 c6 0e ; 0xf3c5d + mov es, di ; 8e c7 ; 0xf3c60 eltorito.c:61 + mov dx, word [es:bx+00eh] ; 26 8b 57 0e ; 0xf3c62 + mov es, ax ; 8e c0 ; 0xf3c66 eltorito.c:63 + mov word [es:si], dx ; 26 89 14 ; 0xf3c68 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c6b eltorito.c:250 + add si, strict byte 00010h ; 83 c6 10 ; 0xf3c6e + mov es, di ; 8e c7 ; 0xf3c71 eltorito.c:51 + mov dl, byte [es:bx+012h] ; 26 8a 57 12 ; 0xf3c73 + mov es, ax ; 8e c0 ; 0xf3c77 eltorito.c:53 + mov byte [es:si], dl ; 26 88 14 ; 0xf3c79 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c7c eltorito.c:251 + add si, strict byte 00011h ; 83 c6 11 ; 0xf3c7f + mov es, di ; 8e c7 ; 0xf3c82 eltorito.c:51 + mov dl, byte [es:bx+014h] ; 26 8a 57 14 ; 0xf3c84 + mov es, ax ; 8e c0 ; 0xf3c88 eltorito.c:53 + mov byte [es:si], dl ; 26 88 14 ; 0xf3c8a + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c8d eltorito.c:252 + add si, strict byte 00012h ; 83 c6 12 ; 0xf3c90 + mov dx, ax ; 89 c2 ; 0xf3c93 eltorito.c:51 + mov es, di ; 8e c7 ; 0xf3c95 + mov al, byte [es:bx+010h] ; 26 8a 47 10 ; 0xf3c97 + mov es, dx ; 8e c2 ; 0xf3c9b eltorito.c:53 + mov byte [es:si], al ; 26 88 04 ; 0xf3c9d + test byte [bp+016h], 0ffh ; f6 46 16 ff ; 0xf3ca0 eltorito.c:255 + jne short 03cach ; 75 06 ; 0xf3ca4 + mov es, di ; 8e c7 ; 0xf3ca6 eltorito.c:257 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3ca8 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3cac eltorito.c:260 + mov bx, strict word 00074h ; bb 74 00 ; 0xf3cb0 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3cb3 + mov es, ax ; 8e c0 ; 0xf3cb6 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3cb8 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3cbc + lea sp, [bp-004h] ; 8d 66 fc ; 0xf3cc0 + pop di ; 5f ; 0xf3cc3 + pop si ; 5e ; 0xf3cc4 + pop bp ; 5d ; 0xf3cc5 + retn ; c3 ; 0xf3cc6 + mov bx, 00dcch ; bb cc 0d ; 0xf3cc7 eltorito.c:264 + mov cx, ds ; 8c d9 ; 0xf3cca + mov ax, strict word 00004h ; b8 04 00 ; 0xf3ccc + call 01910h ; e8 3e dc ; 0xf3ccf + mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf3cd2 + shr bx, 008h ; c1 eb 08 ; 0xf3cd5 + push bx ; 53 ; 0xf3cd8 + push 00334h ; 68 34 03 ; 0xf3cd9 + push 0036bh ; 68 6b 03 ; 0xf3cdc + jmp near 03bc7h ; e9 e5 fe ; 0xf3cdf + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3ce2 eltorito.c:270 + xor ah, ah ; 30 e4 ; 0xf3ce5 + or ah, 001h ; 80 cc 01 ; 0xf3ce7 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3cea + shr ax, 008h ; c1 e8 08 ; 0xf3ced eltorito.c:271 + mov bx, strict word 00074h ; bb 74 00 ; 0xf3cf0 eltorito.c:53 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3cf3 + mov es, dx ; 8e c2 ; 0xf3cf6 + mov byte [es:bx], al ; 26 88 07 ; 0xf3cf8 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3cfb eltorito.c:272 + jmp short 03cc0h ; eb bf ; 0xf3cff eltorito.c:273 + ; disGetNextSymbol 0xf3d01 LB 0x7057 -> off=0x0 cb=0000000000000032 uValue=00000000000f2701 'device_is_cdrom' +device_is_cdrom: ; 0xf3d01 LB 0x32 + push bx ; 53 ; 0xf3d01 eltorito.c:288 + push dx ; 52 ; 0xf3d02 + push bp ; 55 ; 0xf3d03 + mov bp, sp ; 89 e5 ; 0xf3d04 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3d06 eltorito.c:58 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3d09 + mov es, dx ; 8e c2 ; 0xf3d0c + mov bx, word [es:bx] ; 26 8b 1f ; 0xf3d0e + cmp AL, strict byte 014h ; 3c 14 ; 0xf3d11 eltorito.c:294 + jc short 03d19h ; 72 04 ; 0xf3d13 + xor ax, ax ; 31 c0 ; 0xf3d15 eltorito.c:295 + jmp short 03d2fh ; eb 16 ; 0xf3d17 + xor ah, ah ; 30 e4 ; 0xf3d19 eltorito.c:300 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3d1b + mov es, bx ; 8e c3 ; 0xf3d1e + mov bx, ax ; 89 c3 ; 0xf3d20 + add bx, strict byte 0005eh ; 83 c3 5e ; 0xf3d22 + cmp byte [es:bx+01fh], 005h ; 26 80 7f 1f 05 ; 0xf3d25 + jne short 03d15h ; 75 e9 ; 0xf3d2a + mov ax, strict word 00001h ; b8 01 00 ; 0xf3d2c eltorito.c:301 + pop bp ; 5d ; 0xf3d2f eltorito.c:304 + pop dx ; 5a ; 0xf3d30 + pop bx ; 5b ; 0xf3d31 + retn ; c3 ; 0xf3d32 + ; disGetNextSymbol 0xf3d33 LB 0x7025 -> off=0x0 cb=0000000000000084 uValue=00000000000f2733 'cdrom_read' +cdrom_read: ; 0xf3d33 LB 0x84 + push bp ; 55 ; 0xf3d33 eltorito.c:306 + mov bp, sp ; 89 e5 ; 0xf3d34 + push si ; 56 ; 0xf3d36 + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf3d37 + mov byte [bp-004h], al ; 88 46 fc ; 0xf3d3a + mov ax, bx ; 89 d8 ; 0xf3d3d + mov si, cx ; 89 ce ; 0xf3d3f + mov cx, dx ; 89 d1 ; 0xf3d41 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3d43 eltorito.c:58 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3d46 + mov es, dx ; 8e c2 ; 0xf3d49 + mov es, [es:bx] ; 26 8e 07 ; 0xf3d4b + mov bx, strict word 0005eh ; bb 5e 00 ; 0xf3d4e eltorito.c:310 + mov word [bp-010h], strict word 00028h ; c7 46 f0 28 00 ; 0xf3d51 eltorito.c:312 + mov dx, si ; 89 f2 ; 0xf3d56 eltorito.c:313 + xchg ah, al ; 86 c4 ; 0xf3d58 + xchg dh, dl ; 86 d6 ; 0xf3d5a + xchg dx, ax ; 92 ; 0xf3d5c + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf3d5d + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf3d60 + mov ax, cx ; 89 c8 ; 0xf3d63 eltorito.c:314 + xchg ah, al ; 86 c4 ; 0xf3d65 + mov word [bp-009h], ax ; 89 46 f7 ; 0xf3d67 + mov word [es:bx+00eh], cx ; 26 89 4f 0e ; 0xf3d6a eltorito.c:316 + mov word [es:bx+010h], 00800h ; 26 c7 47 10 00 08 ; 0xf3d6e eltorito.c:317 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3d74 eltorito.c:319 + xor ah, ah ; 30 e4 ; 0xf3d77 + imul bx, ax, strict byte 0001ch ; 6b d8 1c ; 0xf3d79 + add bx, strict byte 0005eh ; 83 c3 5e ; 0xf3d7c + mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf3d7f + mov si, ax ; 89 c6 ; 0xf3d83 + add si, ax ; 01 c6 ; 0xf3d85 + push word [bp+006h] ; ff 76 06 ; 0xf3d87 + push word [bp+004h] ; ff 76 04 ; 0xf3d8a + push strict byte 00001h ; 6a 01 ; 0xf3d8d + mov ax, cx ; 89 c8 ; 0xf3d8f + xor dx, dx ; 31 d2 ; 0xf3d91 + mov cx, strict word 0000bh ; b9 0b 00 ; 0xf3d93 + sal ax, 1 ; d1 e0 ; 0xf3d96 + rcl dx, 1 ; d1 d2 ; 0xf3d98 + loop 03d96h ; e2 fa ; 0xf3d9a + push dx ; 52 ; 0xf3d9c + push ax ; 50 ; 0xf3d9d + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3d9e + xor ah, ah ; 30 e4 ; 0xf3da1 + mov cx, ss ; 8c d1 ; 0xf3da3 + lea bx, [bp-010h] ; 8d 5e f0 ; 0xf3da5 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3da8 + call word [word si+0006ah] ; ff 94 6a 00 ; 0xf3dab + lea sp, [bp-002h] ; 8d 66 fe ; 0xf3daf eltorito.c:320 + pop si ; 5e ; 0xf3db2 + pop bp ; 5d ; 0xf3db3 + retn 00004h ; c2 04 00 ; 0xf3db4 + ; disGetNextSymbol 0xf3db7 LB 0x6fa1 -> off=0x0 cb=0000000000000170 uValue=00000000000f27b7 'cdemu_read' +cdemu_read: ; 0xf3db7 LB 0x170 + push bp ; 55 ; 0xf3db7 eltorito.c:322 + mov bp, sp ; 89 e5 ; 0xf3db8 + push si ; 56 ; 0xf3dba + push di ; 57 ; 0xf3dbb + sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf3dbc + mov byte [bp-006h], al ; 88 46 fa ; 0xf3dbf + mov word [bp-01eh], bx ; 89 5e e2 ; 0xf3dc2 + mov di, dx ; 89 d7 ; 0xf3dc5 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3dc7 eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3dca + mov es, ax ; 8e c0 ; 0xf3dcd + mov ax, word [es:bx] ; 26 8b 07 ; 0xf3dcf + mov bx, 00316h ; bb 16 03 ; 0xf3dd2 eltorito.c:326 + mov es, ax ; 8e c0 ; 0xf3dd5 + mov si, bx ; 89 de ; 0xf3dd7 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf3dd9 + mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf3ddc eltorito.c:327 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf3de0 + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf3de3 + mov word [bp-016h], ax ; 89 46 ea ; 0xf3de7 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf3dea eltorito.c:330 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf3ded + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf3df0 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf3df3 + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf3df6 eltorito.c:335 + mov dx, cx ; 89 ca ; 0xf3df9 + shr dx, 1 ; d1 ea ; 0xf3dfb + rcr ax, 1 ; d1 d8 ; 0xf3dfd + shr dx, 1 ; d1 ea ; 0xf3dff + rcr ax, 1 ; d1 d8 ; 0xf3e01 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf3e03 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf3e06 + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf3e09 eltorito.c:336 + and ax, strict word 00003h ; 25 03 00 ; 0xf3e0c + mov word [bp-012h], ax ; 89 46 ee ; 0xf3e0f + test ax, ax ; 85 c0 ; 0xf3e12 eltorito.c:339 + je short 03e88h ; 74 72 ; 0xf3e14 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3e16 eltorito.c:341 + sub ax, word [bp-012h] ; 2b 46 ee ; 0xf3e19 + cmp di, ax ; 39 c7 ; 0xf3e1c + jnc short 03e25h ; 73 05 ; 0xf3e1e + mov word [bp-01ch], di ; 89 7e e4 ; 0xf3e20 + jmp short 03e28h ; eb 03 ; 0xf3e23 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf3e25 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf3e28 eltorito.c:343 + push word [es:si+018h] ; 26 ff 74 18 ; 0xf3e2b + push word [es:si+016h] ; 26 ff 74 16 ; 0xf3e2f + mov bx, word [bp-01ah] ; 8b 5e e6 ; 0xf3e33 + add bx, word [bp-00ch] ; 03 5e f4 ; 0xf3e36 + mov cx, word [bp-016h] ; 8b 4e ea ; 0xf3e39 + adc cx, word [bp-00ah] ; 13 4e f6 ; 0xf3e3c + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3e3f + xor ah, ah ; 30 e4 ; 0xf3e42 + mov dx, strict word 00001h ; ba 01 00 ; 0xf3e44 + call 03d33h ; e8 e9 fe ; 0xf3e47 + mov word [bp-014h], ax ; 89 46 ec ; 0xf3e4a + test ax, ax ; 85 c0 ; 0xf3e4d eltorito.c:344 + jne short 03eb8h ; 75 67 ; 0xf3e4f + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf3e51 eltorito.c:345 + sal ax, 009h ; c1 e0 09 ; 0xf3e54 + mov word [bp-020h], ax ; 89 46 e0 ; 0xf3e57 + push ax ; 50 ; 0xf3e5a + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf3e5b + sal ax, 009h ; c1 e0 09 ; 0xf3e5e + mov es, [bp-008h] ; 8e 46 f8 ; 0xf3e61 + mov bx, word [es:si+016h] ; 26 8b 5c 16 ; 0xf3e64 + mov cx, word [es:si+018h] ; 26 8b 4c 18 ; 0xf3e68 + add bx, ax ; 01 c3 ; 0xf3e6c + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf3e6e + mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf3e71 + call 0aa40h ; e8 c9 6b ; 0xf3e74 + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf3e77 eltorito.c:348 + add word [bp-00eh], ax ; 01 46 f2 ; 0xf3e7a + sub di, word [bp-01ch] ; 2b 7e e4 ; 0xf3e7d eltorito.c:349 + add word [bp-00ch], strict byte 00001h ; 83 46 f4 01 ; 0xf3e80 eltorito.c:350 + adc word [bp-00ah], strict byte 00000h ; 83 56 f6 00 ; 0xf3e84 + mov ax, di ; 89 f8 ; 0xf3e88 eltorito.c:354 + shr ax, 002h ; c1 e8 02 ; 0xf3e8a + mov word [bp-010h], ax ; 89 46 f0 ; 0xf3e8d + test ax, ax ; 85 c0 ; 0xf3e90 + je short 03ed6h ; 74 42 ; 0xf3e92 + push word [bp-018h] ; ff 76 e8 ; 0xf3e94 eltorito.c:358 + push word [bp-00eh] ; ff 76 f2 ; 0xf3e97 + mov bx, word [bp-01ah] ; 8b 5e e6 ; 0xf3e9a + add bx, word [bp-00ch] ; 03 5e f4 ; 0xf3e9d + mov cx, word [bp-016h] ; 8b 4e ea ; 0xf3ea0 + adc cx, word [bp-00ah] ; 13 4e f6 ; 0xf3ea3 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3ea6 + xor ah, ah ; 30 e4 ; 0xf3ea9 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf3eab + call 03d33h ; e8 82 fe ; 0xf3eae + mov word [bp-014h], ax ; 89 46 ec ; 0xf3eb1 + test ax, ax ; 85 c0 ; 0xf3eb4 eltorito.c:359 + je short 03ebah ; 74 02 ; 0xf3eb6 + jmp short 03f1eh ; eb 64 ; 0xf3eb8 eltorito.c:360 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf3eba eltorito.c:361 + sal ax, 00bh ; c1 e0 0b ; 0xf3ebd + add word [bp-00eh], ax ; 01 46 f2 ; 0xf3ec0 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf3ec3 eltorito.c:362 + sal ax, 002h ; c1 e0 02 ; 0xf3ec6 + sub di, ax ; 29 c7 ; 0xf3ec9 + xor ax, ax ; 31 c0 ; 0xf3ecb eltorito.c:363 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf3ecd + add word [bp-00ch], dx ; 01 56 f4 ; 0xf3ed0 + adc word [bp-00ah], ax ; 11 46 f6 ; 0xf3ed3 + test di, di ; 85 ff ; 0xf3ed6 eltorito.c:367 + je short 03f1bh ; 74 41 ; 0xf3ed8 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf3eda eltorito.c:369 + push word [es:si+018h] ; 26 ff 74 18 ; 0xf3edd + push word [es:si+016h] ; 26 ff 74 16 ; 0xf3ee1 + mov bx, word [bp-01ah] ; 8b 5e e6 ; 0xf3ee5 + add bx, word [bp-00ch] ; 03 5e f4 ; 0xf3ee8 + mov cx, word [bp-016h] ; 8b 4e ea ; 0xf3eeb + adc cx, word [bp-00ah] ; 13 4e f6 ; 0xf3eee + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3ef1 + xor ah, ah ; 30 e4 ; 0xf3ef4 + mov dx, strict word 00001h ; ba 01 00 ; 0xf3ef6 + call 03d33h ; e8 37 fe ; 0xf3ef9 + mov word [bp-014h], ax ; 89 46 ec ; 0xf3efc + test ax, ax ; 85 c0 ; 0xf3eff eltorito.c:370 + jne short 03f1eh ; 75 1b ; 0xf3f01 + sal di, 009h ; c1 e7 09 ; 0xf3f03 eltorito.c:371 + push di ; 57 ; 0xf3f06 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf3f07 + mov bx, word [es:si+016h] ; 26 8b 5c 16 ; 0xf3f0a + mov cx, word [es:si+018h] ; 26 8b 4c 18 ; 0xf3f0e + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf3f12 + mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf3f15 + call 0aa40h ; e8 25 6b ; 0xf3f18 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf3f1b eltorito.c:376 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf3f1e eltorito.c:377 + pop di ; 5f ; 0xf3f21 + pop si ; 5e ; 0xf3f22 + pop bp ; 5d ; 0xf3f23 + retn 00004h ; c2 04 00 ; 0xf3f24 + ; disGetNextSymbol 0xf3f27 LB 0x6e31 -> off=0x0 cb=00000000000002b8 uValue=00000000000f2927 'cdrom_boot' +cdrom_boot: ; 0xf3f27 LB 0x2b8 + push bp ; 55 ; 0xf3f27 eltorito.c:387 + mov bp, sp ; 89 e5 ; 0xf3f28 + push bx ; 53 ; 0xf3f2a + push cx ; 51 ; 0xf3f2b + push dx ; 52 ; 0xf3f2c + push si ; 56 ; 0xf3f2d + push di ; 57 ; 0xf3f2e + sub sp, 00808h ; 81 ec 08 08 ; 0xf3f2f + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3f33 eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3f36 + mov es, ax ; 8e c0 ; 0xf3f39 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf3f3b + mov word [bp-010h], ax ; 89 46 f0 ; 0xf3f3e eltorito.c:59 + mov si, 00316h ; be 16 03 ; 0xf3f41 eltorito.c:399 + mov word [bp-012h], ax ; 89 46 ee ; 0xf3f44 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf3f47 eltorito.c:403 + jmp short 03f56h ; eb 09 ; 0xf3f4b + inc byte [bp-00ch] ; fe 46 f4 ; 0xf3f4d eltorito.c:406 + cmp byte [bp-00ch], 014h ; 80 7e f4 14 ; 0xf3f50 + jnc short 03f62h ; 73 0c ; 0xf3f54 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3f56 + xor ah, ah ; 30 e4 ; 0xf3f59 + call 03d01h ; e8 a3 fd ; 0xf3f5b + test ax, ax ; 85 c0 ; 0xf3f5e + je short 03f4dh ; 74 eb ; 0xf3f60 + cmp byte [bp-00ch], 014h ; 80 7e f4 14 ; 0xf3f62 eltorito.c:409 + jc short 03f6eh ; 72 06 ; 0xf3f66 + mov ax, strict word 00002h ; b8 02 00 ; 0xf3f68 eltorito.c:410 + jmp near 041d5h ; e9 67 02 ; 0xf3f6b + mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf3f6e eltorito.c:413 + jmp short 03f7dh ; eb 09 ; 0xf3f72 + inc byte [bp-00eh] ; fe 46 f2 ; 0xf3f74 eltorito.c:418 + cmp byte [bp-00eh], 004h ; 80 7e f2 04 ; 0xf3f77 + jnbe short 03f97h ; 77 1a ; 0xf3f7b + lea dx, [bp-00812h] ; 8d 96 ee f7 ; 0xf3f7d + push SS ; 16 ; 0xf3f81 + push dx ; 52 ; 0xf3f82 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3f83 + xor ah, ah ; 30 e4 ; 0xf3f86 + mov dx, strict word 00001h ; ba 01 00 ; 0xf3f88 + mov bx, strict word 00011h ; bb 11 00 ; 0xf3f8b + xor cx, cx ; 31 c9 ; 0xf3f8e + call 03d33h ; e8 a0 fd ; 0xf3f90 + test ax, ax ; 85 c0 ; 0xf3f93 + jne short 03f74h ; 75 dd ; 0xf3f95 + test ax, ax ; 85 c0 ; 0xf3f97 eltorito.c:419 + je short 03fa1h ; 74 06 ; 0xf3f99 + mov ax, strict word 00003h ; b8 03 00 ; 0xf3f9b eltorito.c:420 + jmp near 041d5h ; e9 34 02 ; 0xf3f9e + cmp byte [bp-00812h], 000h ; 80 be ee f7 00 ; 0xf3fa1 eltorito.c:423 + je short 03faeh ; 74 06 ; 0xf3fa6 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3fa8 eltorito.c:424 + jmp near 041d5h ; e9 27 02 ; 0xf3fab + xor di, di ; 31 ff ; 0xf3fae eltorito.c:426 + jmp short 03fb8h ; eb 06 ; 0xf3fb0 + inc di ; 47 ; 0xf3fb2 eltorito.c:428 + cmp di, strict byte 00005h ; 83 ff 05 ; 0xf3fb3 + jnc short 03fc8h ; 73 10 ; 0xf3fb6 + mov al, byte [bp+di-00811h] ; 8a 83 ef f7 ; 0xf3fb8 + cmp al, byte [di+00dd4h] ; 3a 85 d4 0d ; 0xf3fbc + je short 03fb2h ; 74 f0 ; 0xf3fc0 + mov ax, strict word 00005h ; b8 05 00 ; 0xf3fc2 + jmp near 041d5h ; e9 0d 02 ; 0xf3fc5 + xor di, di ; 31 ff ; 0xf3fc8 eltorito.c:430 + jmp short 03fd2h ; eb 06 ; 0xf3fca + inc di ; 47 ; 0xf3fcc eltorito.c:432 + cmp di, strict byte 00017h ; 83 ff 17 ; 0xf3fcd + jnc short 03fe2h ; 73 10 ; 0xf3fd0 + mov al, byte [bp+di-0080bh] ; 8a 83 f5 f7 ; 0xf3fd2 + cmp al, byte [di+00ddah] ; 3a 85 da 0d ; 0xf3fd6 + je short 03fcch ; 74 f0 ; 0xf3fda + mov ax, strict word 00006h ; b8 06 00 ; 0xf3fdc + jmp near 041d5h ; e9 f3 01 ; 0xf3fdf + mov bx, word [bp-007cbh] ; 8b 9e 35 f8 ; 0xf3fe2 eltorito.c:435 + mov cx, word [bp-007c9h] ; 8b 8e 37 f8 ; 0xf3fe6 + lea dx, [bp-00812h] ; 8d 96 ee f7 ; 0xf3fea eltorito.c:439 + push SS ; 16 ; 0xf3fee + push dx ; 52 ; 0xf3fef + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3ff0 + xor ah, ah ; 30 e4 ; 0xf3ff3 + mov dx, strict word 00001h ; ba 01 00 ; 0xf3ff5 + call 03d33h ; e8 38 fd ; 0xf3ff8 + test ax, ax ; 85 c0 ; 0xf3ffb eltorito.c:440 + je short 04005h ; 74 06 ; 0xf3ffd + mov ax, strict word 00007h ; b8 07 00 ; 0xf3fff eltorito.c:441 + jmp near 041d5h ; e9 d0 01 ; 0xf4002 + cmp byte [bp-00812h], 001h ; 80 be ee f7 01 ; 0xf4005 eltorito.c:446 + je short 04012h ; 74 06 ; 0xf400a + mov ax, strict word 00008h ; b8 08 00 ; 0xf400c eltorito.c:447 + jmp near 041d5h ; e9 c3 01 ; 0xf400f + cmp byte [bp-00811h], 000h ; 80 be ef f7 00 ; 0xf4012 eltorito.c:448 + je short 0401fh ; 74 06 ; 0xf4017 + mov ax, strict word 00009h ; b8 09 00 ; 0xf4019 eltorito.c:449 + jmp near 041d5h ; e9 b6 01 ; 0xf401c + cmp byte [bp-007f4h], 055h ; 80 be 0c f8 55 ; 0xf401f eltorito.c:450 + je short 0402ch ; 74 06 ; 0xf4024 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4026 eltorito.c:451 + jmp near 041d5h ; e9 a9 01 ; 0xf4029 + cmp byte [bp-007f3h], 0aah ; 80 be 0d f8 aa ; 0xf402c eltorito.c:452 + jne short 04026h ; 75 f3 ; 0xf4031 + cmp byte [bp-007f2h], 088h ; 80 be 0e f8 88 ; 0xf4033 eltorito.c:453 + je short 04040h ; 74 06 ; 0xf4038 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf403a eltorito.c:457 + jmp near 041d5h ; e9 95 01 ; 0xf403d + mov al, byte [bp-007f1h] ; 8a 86 0f f8 ; 0xf4040 eltorito.c:459 + mov es, [bp-012h] ; 8e 46 ee ; 0xf4044 + mov byte [es:si+001h], al ; 26 88 44 01 ; 0xf4047 + cmp byte [bp-007f1h], 000h ; 80 be 0f f8 00 ; 0xf404b eltorito.c:460 + jne short 04059h ; 75 07 ; 0xf4050 + mov byte [es:si+002h], 0e0h ; 26 c6 44 02 e0 ; 0xf4052 eltorito.c:463 + jmp short 0406ch ; eb 13 ; 0xf4057 eltorito.c:465 + cmp byte [bp-007f1h], 004h ; 80 be 0f f8 04 ; 0xf4059 + jnc short 04067h ; 73 07 ; 0xf405e + mov byte [es:si+002h], 000h ; 26 c6 44 02 00 ; 0xf4060 eltorito.c:466 + jmp short 0406ch ; eb 05 ; 0xf4065 eltorito.c:467 + mov byte [es:si+002h], 080h ; 26 c6 44 02 80 ; 0xf4067 eltorito.c:468 + mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf406c eltorito.c:470 + xor bh, bh ; 30 ff ; 0xf406f + mov ax, bx ; 89 d8 ; 0xf4071 + cwd ; 99 ; 0xf4073 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf4074 + sar ax, 1 ; d1 f8 ; 0xf4076 + mov es, [bp-012h] ; 8e 46 ee ; 0xf4078 + mov byte [es:si+003h], al ; 26 88 44 03 ; 0xf407b + mov ax, bx ; 89 d8 ; 0xf407f eltorito.c:471 + cwd ; 99 ; 0xf4081 + mov bx, strict word 00002h ; bb 02 00 ; 0xf4082 + idiv bx ; f7 fb ; 0xf4085 + mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf4087 + mov di, word [bp-007f0h] ; 8b be 10 f8 ; 0xf408b eltorito.c:473 + test di, di ; 85 ff ; 0xf408f eltorito.c:474 + jne short 04096h ; 75 03 ; 0xf4091 + mov di, 007c0h ; bf c0 07 ; 0xf4093 eltorito.c:475 + mov es, [bp-012h] ; 8e 46 ee ; 0xf4096 eltorito.c:477 + mov word [es:si+00ch], di ; 26 89 7c 0c ; 0xf4099 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf409d eltorito.c:478 + mov dx, word [bp-007ech] ; 8b 96 14 f8 ; 0xf40a3 eltorito.c:480 + mov word [es:si+00eh], dx ; 26 89 54 0e ; 0xf40a7 eltorito.c:481 + test dx, dx ; 85 d2 ; 0xf40ab eltorito.c:486 + je short 040b5h ; 74 06 ; 0xf40ad + cmp dx, 00400h ; 81 fa 00 04 ; 0xf40af + jbe short 040bbh ; 76 06 ; 0xf40b3 + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf40b5 eltorito.c:487 + jmp near 041d5h ; e9 1a 01 ; 0xf40b8 + mov ax, word [bp-007eah] ; 8b 86 16 f8 ; 0xf40bb eltorito.c:489 + mov bx, word [bp-007e8h] ; 8b 9e 18 f8 ; 0xf40bf + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf40c3 eltorito.c:490 + mov word [es:si+00ah], bx ; 26 89 5c 0a ; 0xf40c7 + call 03b08h ; e8 3a fa ; 0xf40cb eltorito.c:496 + mov es, [bp-012h] ; 8e 46 ee ; 0xf40ce + mov word [es:si+016h], strict word 00000h ; 26 c7 44 16 00 00 ; 0xf40d1 + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf40d7 + mov ax, word [es:si+016h] ; 26 8b 44 16 ; 0xf40db eltorito.c:497 + mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf40df + test bx, bx ; 85 db ; 0xf40e3 + jne short 040f1h ; 75 0a ; 0xf40e5 + test ax, ax ; 85 c0 ; 0xf40e7 + jne short 040f1h ; 75 06 ; 0xf40e9 + mov ax, strict word 0000dh ; b8 0d 00 ; 0xf40eb eltorito.c:498 + jmp near 041d5h ; e9 e4 00 ; 0xf40ee + push di ; 57 ; 0xf40f1 eltorito.c:501 + push strict byte 00000h ; 6a 00 ; 0xf40f2 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf40f4 + xor ah, ah ; 30 e4 ; 0xf40f7 + xor bx, bx ; 31 db ; 0xf40f9 + xor cx, cx ; 31 c9 ; 0xf40fb + call 03db7h ; e8 b7 fc ; 0xf40fd + test ax, ax ; 85 c0 ; 0xf4100 eltorito.c:502 + je short 0410ah ; 74 06 ; 0xf4102 + mov ax, strict word 0000eh ; b8 0e 00 ; 0xf4104 eltorito.c:503 + jmp near 041d5h ; e9 cb 00 ; 0xf4107 + mov es, [bp-012h] ; 8e 46 ee ; 0xf410a eltorito.c:508 + mov al, byte [es:si+001h] ; 26 8a 44 01 ; 0xf410d + cmp AL, strict byte 002h ; 3c 02 ; 0xf4111 + jc short 04121h ; 72 0c ; 0xf4113 + jbe short 0413ch ; 76 25 ; 0xf4115 + cmp AL, strict byte 004h ; 3c 04 ; 0xf4117 + je short 0414ch ; 74 31 ; 0xf4119 + cmp AL, strict byte 003h ; 3c 03 ; 0xf411b + je short 04144h ; 74 25 ; 0xf411d + jmp short 0418dh ; eb 6c ; 0xf411f + cmp AL, strict byte 001h ; 3c 01 ; 0xf4121 + jne short 0418dh ; 75 68 ; 0xf4123 + mov es, [bp-012h] ; 8e 46 ee ; 0xf4125 eltorito.c:510 + mov word [es:si+014h], strict word 0000fh ; 26 c7 44 14 0f 00 ; 0xf4128 + mov word [es:si+012h], strict word 00050h ; 26 c7 44 12 50 00 ; 0xf412e eltorito.c:511 + mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00 ; 0xf4134 eltorito.c:512 + jmp short 0418dh ; eb 51 ; 0xf413a eltorito.c:513 + mov word [es:si+014h], strict word 00012h ; 26 c7 44 14 12 00 ; 0xf413c eltorito.c:515 + jmp short 0412eh ; eb ea ; 0xf4142 + mov word [es:si+014h], strict word 00024h ; 26 c7 44 14 24 00 ; 0xf4144 eltorito.c:520 + jmp short 0412eh ; eb e2 ; 0xf414a + mov bx, 001c4h ; bb c4 01 ; 0xf414c eltorito.c:48 + mov es, di ; 8e c7 ; 0xf414f + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4151 + and AL, strict byte 03fh ; 24 3f ; 0xf4154 eltorito.c:49 + xor ah, ah ; 30 e4 ; 0xf4156 + mov es, [bp-012h] ; 8e 46 ee ; 0xf4158 + mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf415b + mov es, di ; 8e c7 ; 0xf415f eltorito.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4161 + and AL, strict byte 0c0h ; 24 c0 ; 0xf4164 eltorito.c:49 + mov dx, ax ; 89 c2 ; 0xf4166 + sal dx, 002h ; c1 e2 02 ; 0xf4168 + mov bx, 001c5h ; bb c5 01 ; 0xf416b eltorito.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf416e + add ax, dx ; 01 d0 ; 0xf4171 eltorito.c:49 + inc ax ; 40 ; 0xf4173 + mov es, [bp-012h] ; 8e 46 ee ; 0xf4174 + mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf4177 + mov bx, 001c3h ; bb c3 01 ; 0xf417b eltorito.c:48 + mov es, di ; 8e c7 ; 0xf417e + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4180 + xor ah, ah ; 30 e4 ; 0xf4183 eltorito.c:49 + inc ax ; 40 ; 0xf4185 + mov es, [bp-012h] ; 8e 46 ee ; 0xf4186 + mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf4189 + mov es, [bp-012h] ; 8e 46 ee ; 0xf418d eltorito.c:533 + cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf4190 + je short 041bbh ; 74 24 ; 0xf4195 + cmp byte [es:si+002h], 000h ; 26 80 7c 02 00 ; 0xf4197 eltorito.c:535 + jne short 041adh ; 75 0f ; 0xf419c + mov bx, strict word 00010h ; bb 10 00 ; 0xf419e eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf41a1 + mov es, ax ; 8e c0 ; 0xf41a4 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf41a6 + or AL, strict byte 041h ; 0c 41 ; 0xf41a9 eltorito.c:49 + jmp short 041b8h ; eb 0b ; 0xf41ab eltorito.c:537 + mov bx, 002ach ; bb ac 02 ; 0xf41ad eltorito.c:48 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf41b0 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf41b3 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf41b6 eltorito.c:49 + mov byte [es:bx], al ; 26 88 07 ; 0xf41b8 eltorito.c:53 + mov es, [bp-012h] ; 8e 46 ee ; 0xf41bb eltorito.c:542 + cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf41be + je short 041c9h ; 74 04 ; 0xf41c3 + mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf41c5 eltorito.c:543 + mov es, [bp-012h] ; 8e 46 ee ; 0xf41c9 eltorito.c:546 + mov al, byte [es:si+002h] ; 26 8a 44 02 ; 0xf41cc + xor ah, ah ; 30 e4 ; 0xf41d0 + sal ax, 008h ; c1 e0 08 ; 0xf41d2 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf41d5 eltorito.c:547 + pop di ; 5f ; 0xf41d8 + pop si ; 5e ; 0xf41d9 + pop dx ; 5a ; 0xf41da + pop cx ; 59 ; 0xf41db + pop bx ; 5b ; 0xf41dc + pop bp ; 5d ; 0xf41dd + retn ; c3 ; 0xf41de + ; disGetNextSymbol 0xf41df LB 0x6b79 -> off=0x59 cb=00000000000003e6 uValue=00000000000f2c38 '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, 001h, 046h, 0e0h + db 042h, 013h, 043h, 038h, 043h, 008h, 043h, 038h, 043h, 008h, 043h, 026h, 044h, 0c8h, 044h, 001h + db 046h, 001h, 046h, 0c8h, 044h, 0c8h, 044h, 0c8h, 044h, 0c8h, 044h, 0c8h, 044h, 0e3h, 044h, 0c8h + db 044h, 001h, 046h, 0ebh, 044h, 0fdh, 044h, 001h, 046h, 0fdh, 044h, 001h, 046h, 001h, 046h, 0fdh + db 044h, 0c4h, 045h, 001h, 046h, 001h, 046h, 001h, 046h +int13_cdemu: ; 0xf4238 LB 0x3e6 + push bp ; 55 ; 0xf4238 eltorito.c:557 + mov bp, sp ; 89 e5 ; 0xf4239 + push si ; 56 ; 0xf423b + push di ; 57 ; 0xf423c + sub sp, strict byte 00018h ; 83 ec 18 ; 0xf423d + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4240 eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4243 + mov es, ax ; 8e c0 ; 0xf4246 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf4248 + mov si, 00316h ; be 16 03 ; 0xf424b eltorito.c:572 + mov dx, ax ; 89 c2 ; 0xf424e + mov bx, si ; 89 f3 ; 0xf4250 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf4252 + mov word [bp-00ch], strict word 0005eh ; c7 46 f4 5e 00 ; 0xf4255 eltorito.c:573 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf425a + mov es, ax ; 8e c0 ; 0xf425d eltorito.c:580 + mov al, byte [es:si+003h] ; 26 8a 44 03 ; 0xf425f + add al, al ; 00 c0 ; 0xf4263 + mov byte [bp-006h], al ; 88 46 fa ; 0xf4265 + mov al, byte [es:si+004h] ; 26 8a 44 04 ; 0xf4268 eltorito.c:581 + add byte [bp-006h], al ; 00 46 fa ; 0xf426c + mov di, strict word 00074h ; bf 74 00 ; 0xf426f eltorito.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4272 + mov es, ax ; 8e c0 ; 0xf4275 + mov byte [es:di], 000h ; 26 c6 05 00 ; 0xf4277 + mov es, dx ; 8e c2 ; 0xf427b eltorito.c:586 + cmp byte [es:si], 000h ; 26 80 3c 00 ; 0xf427d + je short 04292h ; 74 0f ; 0xf4281 + mov al, byte [es:si+002h] ; 26 8a 44 02 ; 0xf4283 + xor ah, ah ; 30 e4 ; 0xf4287 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf4289 + xor dh, dh ; 30 f6 ; 0xf428c + cmp ax, dx ; 39 d0 ; 0xf428e + je short 042bbh ; 74 29 ; 0xf4290 + mov bx, 00dcch ; bb cc 0d ; 0xf4292 eltorito.c:587 + mov cx, ds ; 8c d9 ; 0xf4295 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4297 + call 01910h ; e8 73 d6 ; 0xf429a + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf429d + xor ah, ah ; 30 e4 ; 0xf42a0 + push ax ; 50 ; 0xf42a2 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf42a3 + shr ax, 008h ; c1 e8 08 ; 0xf42a6 + push ax ; 50 ; 0xf42a9 + push 00384h ; 68 84 03 ; 0xf42aa + push 00390h ; 68 90 03 ; 0xf42ad + push strict byte 00004h ; 6a 04 ; 0xf42b0 + call 01953h ; e8 9e d6 ; 0xf42b2 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf42b5 + jmp near 045deh ; e9 23 03 ; 0xf42b8 eltorito.c:588 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf42bb eltorito.c:591 + shr ax, 008h ; c1 e8 08 ; 0xf42be + cmp ax, strict word 00050h ; 3d 50 00 ; 0xf42c1 + jnbe short 04335h ; 77 6f ; 0xf42c4 + push CS ; 0e ; 0xf42c6 + pop ES ; 07 ; 0xf42c7 + mov cx, strict word 0001eh ; b9 1e 00 ; 0xf42c8 + mov di, 041dfh ; bf df 41 ; 0xf42cb + repne scasb ; f2 ae ; 0xf42ce + sal cx, 1 ; d1 e1 ; 0xf42d0 + mov di, cx ; 89 cf ; 0xf42d2 + mov dx, word [cs:di+041fch] ; 2e 8b 95 fc 41 ; 0xf42d4 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf42d9 + xor ah, ah ; 30 e4 ; 0xf42dc + jmp dx ; ff e2 ; 0xf42de + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf42e0 eltorito.c:594 + xor ah, ah ; 30 e4 ; 0xf42e3 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf42e5 + les bx, [bp-00ch] ; c4 5e f4 ; 0xf42e8 + add bx, ax ; 01 c3 ; 0xf42eb + mov bl, byte [es:bx+01eh] ; 26 8a 5f 1e ; 0xf42ed + xor bh, bh ; 30 ff ; 0xf42f1 + add bx, bx ; 01 db ; 0xf42f3 + cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00 ; 0xf42f5 + je short 04305h ; 74 09 ; 0xf42fa + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf42fc eltorito.c:596 + xor ah, ah ; 30 e4 ; 0xf42ff + call word [word bx+00076h] ; ff 97 76 00 ; 0xf4301 + jmp near 044c8h ; e9 c0 01 ; 0xf4305 eltorito.c:598 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4308 eltorito.c:614 + xor ah, ah ; 30 e4 ; 0xf430b + or ah, 003h ; 80 cc 03 ; 0xf430d + jmp near 045e6h ; e9 d3 02 ; 0xf4310 eltorito.c:615 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4313 eltorito.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf4316 + mov es, dx ; 8e c2 ; 0xf4319 + mov cl, byte [es:bx] ; 26 8a 0f ; 0xf431b + mov dl, cl ; 88 ca ; 0xf431e eltorito.c:620 + xor dh, dh ; 30 f6 ; 0xf4320 + sal dx, 008h ; c1 e2 08 ; 0xf4322 + or ax, dx ; 09 d0 ; 0xf4325 + mov word [bp+016h], ax ; 89 46 16 ; 0xf4327 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf432a eltorito.c:53 + test cl, cl ; 84 c9 ; 0xf432e eltorito.c:624 + je short 04392h ; 74 60 ; 0xf4330 + jmp near 045fah ; e9 c5 02 ; 0xf4332 eltorito.c:625 + jmp near 04601h ; e9 c9 02 ; 0xf4335 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4338 eltorito.c:632 + mov si, word [es:bx+014h] ; 26 8b 77 14 ; 0xf433b + mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf433f eltorito.c:633 + mov cx, word [es:bx+010h] ; 26 8b 4f 10 ; 0xf4343 eltorito.c:634 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf4347 eltorito.c:636 + and dx, strict byte 0003fh ; 83 e2 3f ; 0xf434a + mov word [bp-018h], dx ; 89 56 e8 ; 0xf434d + mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf4350 eltorito.c:637 + and bx, 000c0h ; 81 e3 c0 00 ; 0xf4353 + sal bx, 002h ; c1 e3 02 ; 0xf4357 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf435a + shr dx, 008h ; c1 ea 08 ; 0xf435d + or dx, bx ; 09 da ; 0xf4360 + mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf4362 eltorito.c:638 + shr bx, 008h ; c1 eb 08 ; 0xf4365 + mov word [bp-014h], bx ; 89 5e ec ; 0xf4368 + mov di, word [bp+016h] ; 8b 7e 16 ; 0xf436b eltorito.c:639 + and di, 000ffh ; 81 e7 ff 00 ; 0xf436e + je short 0438fh ; 74 1b ; 0xf4372 eltorito.c:647 + cmp si, word [bp-018h] ; 3b 76 e8 ; 0xf4374 eltorito.c:651 + jc short 04381h ; 72 08 ; 0xf4377 + cmp dx, ax ; 39 c2 ; 0xf4379 + jnc short 04381h ; 73 04 ; 0xf437b + cmp cx, bx ; 39 d9 ; 0xf437d + jnbe short 04384h ; 77 03 ; 0xf437f + jmp near 045deh ; e9 5a 02 ; 0xf4381 eltorito.c:654 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4384 eltorito.c:658 + shr ax, 008h ; c1 e8 08 ; 0xf4387 + cmp ax, strict word 00004h ; 3d 04 00 ; 0xf438a + jne short 04395h ; 75 06 ; 0xf438d + jmp near 044c8h ; e9 36 01 ; 0xf438f eltorito.c:659 + jmp near 044cch ; e9 37 01 ; 0xf4392 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4395 eltorito.c:661 + shr ax, 004h ; c1 e8 04 ; 0xf4398 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf439b + add bx, ax ; 01 c3 ; 0xf439e + mov word [bp-00eh], bx ; 89 5e f2 ; 0xf43a0 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf43a3 eltorito.c:662 + and ax, strict word 0000fh ; 25 0f 00 ; 0xf43a6 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf43a9 + mov ax, dx ; 89 d0 ; 0xf43ac eltorito.c:665 + xor dx, dx ; 31 d2 ; 0xf43ae + mov bx, cx ; 89 cb ; 0xf43b0 + xor cx, cx ; 31 c9 ; 0xf43b2 + call 0a9c0h ; e8 09 66 ; 0xf43b4 + xor bx, bx ; 31 db ; 0xf43b7 + add ax, word [bp-014h] ; 03 46 ec ; 0xf43b9 + adc dx, bx ; 11 da ; 0xf43bc + mov bx, si ; 89 f3 ; 0xf43be + xor cx, cx ; 31 c9 ; 0xf43c0 + call 0a9c0h ; e8 fb 65 ; 0xf43c2 + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf43c5 + dec bx ; 4b ; 0xf43c8 + xor cx, cx ; 31 c9 ; 0xf43c9 + add bx, ax ; 01 c3 ; 0xf43cb + adc cx, dx ; 11 d1 ; 0xf43cd + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf43cf eltorito.c:668 + xor al, al ; 30 c0 ; 0xf43d2 + or ax, di ; 09 f8 ; 0xf43d4 + mov word [bp+016h], ax ; 89 46 16 ; 0xf43d6 + push word [bp-00eh] ; ff 76 f2 ; 0xf43d9 eltorito.c:670 + push word [bp-010h] ; ff 76 f0 ; 0xf43dc + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf43df + xor ah, ah ; 30 e4 ; 0xf43e2 + mov dx, di ; 89 fa ; 0xf43e4 + call 03db7h ; e8 ce f9 ; 0xf43e6 + mov dx, ax ; 89 c2 ; 0xf43e9 + test al, al ; 84 c0 ; 0xf43eb eltorito.c:671 + je short 0438fh ; 74 a0 ; 0xf43ed + mov bx, 00dcch ; bb cc 0d ; 0xf43ef eltorito.c:672 + mov cx, ds ; 8c d9 ; 0xf43f2 + mov ax, strict word 00004h ; b8 04 00 ; 0xf43f4 + call 01910h ; e8 16 d5 ; 0xf43f7 + mov al, dl ; 88 d0 ; 0xf43fa + xor ah, ah ; 30 e4 ; 0xf43fc + push ax ; 50 ; 0xf43fe + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf43ff + shr ax, 008h ; c1 e8 08 ; 0xf4402 + push ax ; 50 ; 0xf4405 + push 00384h ; 68 84 03 ; 0xf4406 + push 003c6h ; 68 c6 03 ; 0xf4409 + push strict byte 00004h ; 6a 04 ; 0xf440c + call 01953h ; e8 42 d5 ; 0xf440e + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4411 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4414 eltorito.c:673 + xor ah, ah ; 30 e4 ; 0xf4417 + or ah, 002h ; 80 cc 02 ; 0xf4419 + mov word [bp+016h], ax ; 89 46 16 ; 0xf441c + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf441f eltorito.c:674 + jmp near 045e9h ; e9 c3 01 ; 0xf4423 eltorito.c:675 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4426 eltorito.c:682 + mov si, word [es:bx+014h] ; 26 8b 77 14 ; 0xf4429 + mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf442d eltorito.c:683 + dec ax ; 48 ; 0xf4431 + mov cx, word [es:bx+010h] ; 26 8b 4f 10 ; 0xf4432 eltorito.c:684 + dec cx ; 49 ; 0xf4436 + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf4437 eltorito.c:686 + mov dx, word [bp+010h] ; 8b 56 10 ; 0xf443b eltorito.c:687 + xor dl, dl ; 30 d2 ; 0xf443e + mov di, word [bp+014h] ; 8b 7e 14 ; 0xf4440 eltorito.c:688 + and di, 000ffh ; 81 e7 ff 00 ; 0xf4443 + mov word [bp-01ch], di ; 89 7e e4 ; 0xf4447 + mov di, ax ; 89 c7 ; 0xf444a + and di, 000ffh ; 81 e7 ff 00 ; 0xf444c + sal di, 008h ; c1 e7 08 ; 0xf4450 + mov word [bp-01ah], di ; 89 7e e6 ; 0xf4453 + mov di, word [bp-01ch] ; 8b 7e e4 ; 0xf4456 + or di, word [bp-01ah] ; 0b 7e e6 ; 0xf4459 + mov word [bp+014h], di ; 89 7e 14 ; 0xf445c + shr ax, 002h ; c1 e8 02 ; 0xf445f eltorito.c:689 + xor ah, ah ; 30 e4 ; 0xf4462 + and AL, strict byte 0c0h ; 24 c0 ; 0xf4464 + and si, strict byte 0003fh ; 83 e6 3f ; 0xf4466 + or si, ax ; 09 c6 ; 0xf4469 + mov ax, di ; 89 f8 ; 0xf446b + xor al, al ; 30 c0 ; 0xf446d + or ax, si ; 09 f0 ; 0xf446f + mov word [bp+014h], ax ; 89 46 14 ; 0xf4471 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf4474 eltorito.c:690 + xor ah, ah ; 30 e4 ; 0xf4477 + sal cx, 008h ; c1 e1 08 ; 0xf4479 + or ax, cx ; 09 c8 ; 0xf447c + mov word [bp+012h], ax ; 89 46 12 ; 0xf447e + xor al, al ; 30 c0 ; 0xf4481 eltorito.c:691 + or AL, strict byte 002h ; 0c 02 ; 0xf4483 + mov word [bp+012h], ax ; 89 46 12 ; 0xf4485 + mov al, byte [es:bx+001h] ; 26 8a 47 01 ; 0xf4488 eltorito.c:694 + mov word [bp+010h], dx ; 89 56 10 ; 0xf448c + cmp AL, strict byte 003h ; 3c 03 ; 0xf448f + je short 044afh ; 74 1c ; 0xf4491 + cmp AL, strict byte 002h ; 3c 02 ; 0xf4493 + je short 044a7h ; 74 10 ; 0xf4495 + cmp AL, strict byte 001h ; 3c 01 ; 0xf4497 + jne short 044b4h ; 75 19 ; 0xf4499 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf449b eltorito.c:695 + xor al, al ; 30 c0 ; 0xf449e + or AL, strict byte 002h ; 0c 02 ; 0xf44a0 + mov word [bp+010h], ax ; 89 46 10 ; 0xf44a2 + jmp short 044b4h ; eb 0d ; 0xf44a5 + or dl, 004h ; 80 ca 04 ; 0xf44a7 eltorito.c:696 + mov word [bp+010h], dx ; 89 56 10 ; 0xf44aa + jmp short 044b4h ; eb 05 ; 0xf44ad + or dl, 005h ; 80 ca 05 ; 0xf44af eltorito.c:697 + jmp short 044aah ; eb f6 ; 0xf44b2 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf44b4 eltorito.c:701 + cmp byte [es:bx+001h], 004h ; 26 80 7f 01 04 ; 0xf44b7 + jnc short 044c8h ; 73 0a ; 0xf44bc + mov word [bp+008h], 0efc7h ; c7 46 08 c7 ef ; 0xf44be eltorito.c:702 + mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf44c3 eltorito.c:703 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf44c8 eltorito.c:705 + mov bx, strict word 00074h ; bb 74 00 ; 0xf44cc + mov ax, strict word 00040h ; b8 40 00 ; 0xf44cf + mov es, ax ; 8e c0 ; 0xf44d2 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf44d4 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf44d8 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf44dc + pop di ; 5f ; 0xf44df + pop si ; 5e ; 0xf44e0 + pop bp ; 5d ; 0xf44e1 + retn ; c3 ; 0xf44e2 + or ah, 003h ; 80 cc 03 ; 0xf44e3 eltorito.c:710 + mov word [bp+016h], ax ; 89 46 16 ; 0xf44e6 + jmp short 044cch ; eb e1 ; 0xf44e9 eltorito.c:711 + mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf44eb eltorito.c:715 + or ah, 030h ; 80 cc 30 ; 0xf44f0 eltorito.c:716 + mov word [bp+016h], ax ; 89 46 16 ; 0xf44f3 + mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf44f6 eltorito.c:717 + jmp short 044cch ; eb cf ; 0xf44fb eltorito.c:718 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf44fd eltorito.c:726 + mov es, [bp+004h] ; 8e 46 04 ; 0xf4500 + mov si, bx ; 89 de ; 0xf4503 + mov [bp-012h], es ; 8c 46 ee ; 0xf4505 + mov dx, word [es:bx+002h] ; 26 8b 57 02 ; 0xf4508 eltorito.c:728 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf450c eltorito.c:729 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf4510 + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf4513 eltorito.c:730 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf4517 + mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf451a eltorito.c:733 + mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf451e + or ax, cx ; 09 c8 ; 0xf4522 eltorito.c:734 + je short 0453eh ; 74 18 ; 0xf4524 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4526 eltorito.c:735 + shr ax, 008h ; c1 e8 08 ; 0xf4529 + push ax ; 50 ; 0xf452c + push 00384h ; 68 84 03 ; 0xf452d + push 003e7h ; 68 e7 03 ; 0xf4530 + push strict byte 00007h ; 6a 07 ; 0xf4533 + call 01953h ; e8 1b d4 ; 0xf4535 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf4538 + jmp near 045deh ; e9 a0 00 ; 0xf453b eltorito.c:736 + mov es, [bp-012h] ; 8e 46 ee ; 0xf453e eltorito.c:740 + mov ax, word [es:si+008h] ; 26 8b 44 08 ; 0xf4541 + mov cx, word [es:si+00ah] ; 26 8b 4c 0a ; 0xf4545 + mov di, word [bp+016h] ; 8b 7e 16 ; 0xf4549 eltorito.c:743 + shr di, 008h ; c1 ef 08 ; 0xf454c + cmp di, strict byte 00044h ; 83 ff 44 ; 0xf454f + jne short 04557h ; 75 03 ; 0xf4552 + jmp near 044c8h ; e9 71 ff ; 0xf4554 + cmp di, strict byte 00047h ; 83 ff 47 ; 0xf4557 + jne short 0455eh ; 75 02 ; 0xf455a + jmp short 04554h ; eb f6 ; 0xf455c eltorito.c:744 + push word [bp-00eh] ; ff 76 f2 ; 0xf455e eltorito.c:749 + push word [bp-010h] ; ff 76 f0 ; 0xf4561 + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4564 + mov byte [bp-01ah], bl ; 88 5e e6 ; 0xf4567 + mov byte [bp-019h], 000h ; c6 46 e7 00 ; 0xf456a + mov bx, ax ; 89 c3 ; 0xf456e + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf4570 + call 03db7h ; e8 41 f8 ; 0xf4573 + mov word [bp-016h], ax ; 89 46 ea ; 0xf4576 + les bx, [bp-00ch] ; c4 5e f4 ; 0xf4579 eltorito.c:750 + mov ax, word [es:bx+01ah] ; 26 8b 47 1a ; 0xf457c + mov dx, word [es:bx+01ch] ; 26 8b 57 1c ; 0xf4580 + mov cx, strict word 00009h ; b9 09 00 ; 0xf4584 + shr dx, 1 ; d1 ea ; 0xf4587 + rcr ax, 1 ; d1 d8 ; 0xf4589 + loop 04587h ; e2 fa ; 0xf458b + mov es, [bp-012h] ; 8e 46 ee ; 0xf458d eltorito.c:751 + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf4590 + cmp byte [bp-016h], 000h ; 80 7e ea 00 ; 0xf4594 eltorito.c:753 + je short 04554h ; 74 ba ; 0xf4598 + mov bx, 00dcch ; bb cc 0d ; 0xf459a eltorito.c:754 + mov cx, ds ; 8c d9 ; 0xf459d + mov ax, strict word 00004h ; b8 04 00 ; 0xf459f + call 01910h ; e8 6b d3 ; 0xf45a2 + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf45a5 + xor ah, ah ; 30 e4 ; 0xf45a8 + push ax ; 50 ; 0xf45aa + push di ; 57 ; 0xf45ab + push 00384h ; 68 84 03 ; 0xf45ac + push 00410h ; 68 10 04 ; 0xf45af + push strict byte 00004h ; 6a 04 ; 0xf45b2 + call 01953h ; e8 9c d3 ; 0xf45b4 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf45b7 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf45ba eltorito.c:755 + xor ah, ah ; 30 e4 ; 0xf45bd + or ah, 00ch ; 80 cc 0c ; 0xf45bf + jmp short 045e6h ; eb 22 ; 0xf45c2 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf45c4 eltorito.c:763 + push ax ; 50 ; 0xf45c7 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf45c8 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf45cb + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf45ce + mov cx, word [bp-00ah] ; 8b 4e f6 ; 0xf45d1 + call 057fbh ; e8 24 12 ; 0xf45d4 + test ax, ax ; 85 c0 ; 0xf45d7 + jne short 045deh ; 75 03 ; 0xf45d9 + jmp near 044c8h ; e9 ea fe ; 0xf45db + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf45de eltorito.c:764 + xor ah, ah ; 30 e4 ; 0xf45e1 + or ah, 001h ; 80 cc 01 ; 0xf45e3 + mov word [bp+016h], ax ; 89 46 16 ; 0xf45e6 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf45e9 + shr ax, 008h ; c1 e8 08 ; 0xf45ec + mov bx, strict word 00074h ; bb 74 00 ; 0xf45ef + mov dx, strict word 00040h ; ba 40 00 ; 0xf45f2 + mov es, dx ; 8e c2 ; 0xf45f5 + mov byte [es:bx], al ; 26 88 07 ; 0xf45f7 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf45fa + jmp near 044dch ; e9 db fe ; 0xf45fe + mov bx, 00dcch ; bb cc 0d ; 0xf4601 eltorito.c:780 + mov cx, ds ; 8c d9 ; 0xf4604 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4606 + call 01910h ; e8 04 d3 ; 0xf4609 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf460c + shr ax, 008h ; c1 e8 08 ; 0xf460f + push ax ; 50 ; 0xf4612 + push 00384h ; 68 84 03 ; 0xf4613 + push 00432h ; 68 32 04 ; 0xf4616 + push strict byte 00004h ; 6a 04 ; 0xf4619 + jmp near 04535h ; e9 17 ff ; 0xf461b + ; disGetNextSymbol 0xf461e LB 0x673a -> off=0x59 cb=00000000000002fa uValue=00000000000f3077 '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, 058h, 047h, 056h + db 049h, 01ah, 047h, 058h, 047h, 00fh, 047h, 058h, 047h, 00fh, 047h, 058h, 047h, 056h, 049h, 058h + db 047h, 058h, 047h, 056h, 049h, 056h, 049h, 056h, 049h, 056h, 049h, 056h, 049h, 03fh, 047h, 056h + db 049h, 058h, 047h, 045h, 047h, 074h, 047h, 00fh, 047h, 074h, 047h, 03eh, 048h, 0ddh, 048h, 074h + db 047h, 0ffh, 048h, 016h, 049h, 01eh, 049h, 058h, 047h +int13_cdrom: ; 0xf4677 LB 0x2fa + push bp ; 55 ; 0xf4677 eltorito.c:805 + mov bp, sp ; 89 e5 ; 0xf4678 + push si ; 56 ; 0xf467a + push di ; 57 ; 0xf467b + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf467c + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf467f eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4682 + mov es, ax ; 8e c0 ; 0xf4685 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf4687 + mov si, strict word 0005eh ; be 5e 00 ; 0xf468a eltorito.c:814 + mov word [bp-006h], ax ; 89 46 fa ; 0xf468d + mov bx, strict word 00074h ; bb 74 00 ; 0xf4690 eltorito.c:53 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4693 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4697 eltorito.c:821 + xor ah, ah ; 30 e4 ; 0xf469a + cmp ax, 000e0h ; 3d e0 00 ; 0xf469c + jc short 046a6h ; 72 05 ; 0xf469f + cmp ax, 000f4h ; 3d f4 00 ; 0xf46a1 + jc short 046c4h ; 72 1e ; 0xf46a4 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf46a6 eltorito.c:822 + xor ah, ah ; 30 e4 ; 0xf46a9 + push ax ; 50 ; 0xf46ab + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf46ac + shr ax, 008h ; c1 e8 08 ; 0xf46af + push ax ; 50 ; 0xf46b2 + push 00462h ; 68 62 04 ; 0xf46b3 + push 0046eh ; 68 6e 04 ; 0xf46b6 + push strict byte 00004h ; 6a 04 ; 0xf46b9 + call 01953h ; e8 95 d2 ; 0xf46bb + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf46be + jmp near 04934h ; e9 70 02 ; 0xf46c1 eltorito.c:823 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf46c4 eltorito.c:827 + xor ah, ah ; 30 e4 ; 0xf46c7 + mov es, [bp-006h] ; 8e 46 fa ; 0xf46c9 + mov bx, si ; 89 f3 ; 0xf46cc + add bx, ax ; 01 c3 ; 0xf46ce + mov dl, byte [es:bx+00184h] ; 26 8a 97 84 01 ; 0xf46d0 + cmp dl, 014h ; 80 fa 14 ; 0xf46d5 eltorito.c:830 + jc short 046eah ; 72 10 ; 0xf46d8 + push ax ; 50 ; 0xf46da eltorito.c:831 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf46db + shr ax, 008h ; c1 e8 08 ; 0xf46de + push ax ; 50 ; 0xf46e1 + push 00462h ; 68 62 04 ; 0xf46e2 + push 00499h ; 68 99 04 ; 0xf46e5 + jmp short 046b9h ; eb cf ; 0xf46e8 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf46ea eltorito.c:835 + shr ax, 008h ; c1 e8 08 ; 0xf46ed + cmp ax, strict word 00050h ; 3d 50 00 ; 0xf46f0 + jnbe short 04758h ; 77 63 ; 0xf46f3 + push CS ; 0e ; 0xf46f5 + pop ES ; 07 ; 0xf46f6 + mov cx, strict word 0001eh ; b9 1e 00 ; 0xf46f7 + mov di, 0461eh ; bf 1e 46 ; 0xf46fa + repne scasb ; f2 ae ; 0xf46fd + sal cx, 1 ; d1 e1 ; 0xf46ff + mov di, cx ; 89 cf ; 0xf4701 + mov bx, word [cs:di+0463bh] ; 2e 8b 9d 3b 46 ; 0xf4703 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4708 + xor ah, ah ; 30 e4 ; 0xf470b + jmp bx ; ff e3 ; 0xf470d + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf470f eltorito.c:853 + xor ah, ah ; 30 e4 ; 0xf4712 + or ah, 003h ; 80 cc 03 ; 0xf4714 + jmp near 0493ch ; e9 22 02 ; 0xf4717 + mov bx, strict word 00074h ; bb 74 00 ; 0xf471a eltorito.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf471d + mov es, dx ; 8e c2 ; 0xf4720 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf4722 + mov bl, dl ; 88 d3 ; 0xf4725 eltorito.c:859 + xor bh, bh ; 30 ff ; 0xf4727 + sal bx, 008h ; c1 e3 08 ; 0xf4729 + or ax, bx ; 09 d8 ; 0xf472c + mov word [bp+018h], ax ; 89 46 18 ; 0xf472e + mov bx, strict word 00074h ; bb 74 00 ; 0xf4731 eltorito.c:53 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4734 + test dl, dl ; 84 d2 ; 0xf4738 eltorito.c:863 + je short 04755h ; 74 19 ; 0xf473a + jmp near 04950h ; e9 11 02 ; 0xf473c eltorito.c:864 + or ah, 002h ; 80 cc 02 ; 0xf473f eltorito.c:870 + jmp near 0493ch ; e9 f7 01 ; 0xf4742 + mov word [bp+012h], 0aa55h ; c7 46 12 55 aa ; 0xf4745 eltorito.c:875 + or ah, 030h ; 80 cc 30 ; 0xf474a eltorito.c:876 + mov word [bp+018h], ax ; 89 46 18 ; 0xf474d + mov word [bp+016h], strict word 00007h ; c7 46 16 07 00 ; 0xf4750 eltorito.c:877 + jmp near 0495ah ; e9 02 02 ; 0xf4755 eltorito.c:878 + mov bx, 00dcch ; bb cc 0d ; 0xf4758 + mov cx, ds ; 8c d9 ; 0xf475b + mov ax, strict word 00004h ; b8 04 00 ; 0xf475d + call 01910h ; e8 ad d1 ; 0xf4760 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4763 + shr ax, 008h ; c1 e8 08 ; 0xf4766 + push ax ; 50 ; 0xf4769 + push 00462h ; 68 62 04 ; 0xf476a + push 0036bh ; 68 6b 03 ; 0xf476d + push strict byte 00004h ; 6a 04 ; 0xf4770 + jmp short 047afh ; eb 3b ; 0xf4772 + mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf4774 eltorito.c:886 + mov es, [bp+006h] ; 8e 46 06 ; 0xf4777 + mov di, bx ; 89 df ; 0xf477a + mov [bp-008h], es ; 8c 46 f8 ; 0xf477c + mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf477f eltorito.c:888 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf4783 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf4786 eltorito.c:889 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf478a + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf478d eltorito.c:890 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf4791 + mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf4794 eltorito.c:893 + mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf4798 + or ax, cx ; 09 c8 ; 0xf479c eltorito.c:894 + je short 047b8h ; 74 18 ; 0xf479e + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf47a0 eltorito.c:895 + shr ax, 008h ; c1 e8 08 ; 0xf47a3 + push ax ; 50 ; 0xf47a6 + push 00462h ; 68 62 04 ; 0xf47a7 + push 003e7h ; 68 e7 03 ; 0xf47aa + push strict byte 00007h ; 6a 07 ; 0xf47ad + call 01953h ; e8 a1 d1 ; 0xf47af + add sp, strict byte 00008h ; 83 c4 08 ; 0xf47b2 + jmp near 04934h ; e9 7c 01 ; 0xf47b5 eltorito.c:896 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf47b8 eltorito.c:900 + mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf47bb + mov cx, word [es:di+00ah] ; 26 8b 4d 0a ; 0xf47bf + mov bx, word [bp+018h] ; 8b 5e 18 ; 0xf47c3 eltorito.c:903 + shr bx, 008h ; c1 eb 08 ; 0xf47c6 + mov word [bp-00ah], bx ; 89 5e f6 ; 0xf47c9 + cmp bx, strict byte 00044h ; 83 fb 44 ; 0xf47cc + je short 047d6h ; 74 05 ; 0xf47cf + cmp bx, strict byte 00047h ; 83 fb 47 ; 0xf47d1 + jne short 047d9h ; 75 03 ; 0xf47d4 + jmp near 04956h ; e9 7d 01 ; 0xf47d6 eltorito.c:904 + push word [bp-010h] ; ff 76 f0 ; 0xf47d9 eltorito.c:909 + push word [bp-00ch] ; ff 76 f4 ; 0xf47dc + mov byte [bp-012h], dl ; 88 56 ee ; 0xf47df + mov byte [bp-011h], 000h ; c6 46 ef 00 ; 0xf47e2 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf47e6 + mov bx, ax ; 89 c3 ; 0xf47e9 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf47eb + call 03d33h ; e8 42 f5 ; 0xf47ee + mov dx, ax ; 89 c2 ; 0xf47f1 + mov es, [bp-006h] ; 8e 46 fa ; 0xf47f3 eltorito.c:910 + mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf47f6 + mov bx, word [es:si+01ch] ; 26 8b 5c 1c ; 0xf47fa + mov cx, strict word 0000bh ; b9 0b 00 ; 0xf47fe + shr bx, 1 ; d1 eb ; 0xf4801 + rcr ax, 1 ; d1 d8 ; 0xf4803 + loop 04801h ; e2 fa ; 0xf4805 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4807 eltorito.c:911 + mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf480a + test dl, dl ; 84 d2 ; 0xf480e eltorito.c:913 + je short 047d6h ; 74 c4 ; 0xf4810 + mov bx, 00dcch ; bb cc 0d ; 0xf4812 eltorito.c:914 + mov cx, ds ; 8c d9 ; 0xf4815 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4817 + call 01910h ; e8 f3 d0 ; 0xf481a + mov al, dl ; 88 d0 ; 0xf481d + xor ah, ah ; 30 e4 ; 0xf481f + push ax ; 50 ; 0xf4821 + push word [bp-00ah] ; ff 76 f6 ; 0xf4822 + push 00462h ; 68 62 04 ; 0xf4825 + push 00410h ; 68 10 04 ; 0xf4828 + push strict byte 00004h ; 6a 04 ; 0xf482b + call 01953h ; e8 23 d1 ; 0xf482d + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4830 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4833 eltorito.c:915 + xor ah, ah ; 30 e4 ; 0xf4836 + or ah, 00ch ; 80 cc 0c ; 0xf4838 + jmp near 0493ch ; e9 fe 00 ; 0xf483b + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf483e eltorito.c:923 + jnbe short 048a7h ; 77 64 ; 0xf4841 + mov bl, dl ; 88 d3 ; 0xf4843 eltorito.c:926 + xor bh, bh ; 30 ff ; 0xf4845 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf4847 + mov es, [bp-006h] ; 8e 46 fa ; 0xf484a + add bx, si ; 01 f3 ; 0xf484d + mov bl, byte [es:bx+021h] ; 26 8a 5f 21 ; 0xf484f + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf4853 eltorito.c:928 + je short 048c4h ; 74 6c ; 0xf4856 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf4858 + je short 04897h ; 74 3a ; 0xf485b + test ax, ax ; 85 c0 ; 0xf485d + jne short 04894h ; 75 33 ; 0xf485f + cmp bl, 0ffh ; 80 fb ff ; 0xf4861 eltorito.c:930 + jne short 04878h ; 75 12 ; 0xf4864 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4866 eltorito.c:931 + xor ah, ah ; 30 e4 ; 0xf4869 + or ah, 0b4h ; 80 cc b4 ; 0xf486b + mov word [bp+018h], ax ; 89 46 18 ; 0xf486e + xor al, al ; 30 c0 ; 0xf4871 eltorito.c:932 + or AL, strict byte 001h ; 0c 01 ; 0xf4873 + jmp near 0493ch ; e9 c4 00 ; 0xf4875 + mov al, dl ; 88 d0 ; 0xf4878 eltorito.c:934 + xor ah, ah ; 30 e4 ; 0xf487a + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf487c + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf487f eltorito.c:935 + mov es, [bp-006h] ; 8e 46 fa ; 0xf4881 + add si, ax ; 01 c6 ; 0xf4884 + mov byte [es:si+021h], bl ; 26 88 5c 21 ; 0xf4886 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf488a eltorito.c:936 + xor al, al ; 30 c0 ; 0xf488d + or AL, strict byte 001h ; 0c 01 ; 0xf488f + mov word [bp+018h], ax ; 89 46 18 ; 0xf4891 + jmp near 04956h ; e9 bf 00 ; 0xf4894 eltorito.c:937 + test bl, bl ; 84 db ; 0xf4897 eltorito.c:939 + jne short 048aah ; 75 0f ; 0xf4899 + or ah, 0b0h ; 80 cc b0 ; 0xf489b eltorito.c:940 + mov word [bp+018h], ax ; 89 46 18 ; 0xf489e + mov byte [bp+018h], bl ; 88 5e 18 ; 0xf48a1 eltorito.c:941 + jmp near 0493fh ; e9 98 00 ; 0xf48a4 eltorito.c:942 + jmp near 04934h ; e9 8a 00 ; 0xf48a7 + mov al, dl ; 88 d0 ; 0xf48aa eltorito.c:943 + xor ah, ah ; 30 e4 ; 0xf48ac + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf48ae + db 0feh, 0cbh + ; dec bl ; fe cb ; 0xf48b1 eltorito.c:944 + mov es, [bp-006h] ; 8e 46 fa ; 0xf48b3 + add si, ax ; 01 c6 ; 0xf48b6 + mov byte [es:si+021h], bl ; 26 88 5c 21 ; 0xf48b8 + test bl, bl ; 84 db ; 0xf48bc eltorito.c:945 + jne short 048c6h ; 75 06 ; 0xf48be + xor ax, ax ; 31 c0 ; 0xf48c0 + jmp short 048c9h ; eb 05 ; 0xf48c2 + jmp short 048d5h ; eb 0f ; 0xf48c4 + mov ax, strict word 00001h ; b8 01 00 ; 0xf48c6 + mov dx, word [bp+018h] ; 8b 56 18 ; 0xf48c9 + xor dl, dl ; 30 d2 ; 0xf48cc + or dx, ax ; 09 c2 ; 0xf48ce + mov word [bp+018h], dx ; 89 56 18 ; 0xf48d0 + jmp short 04894h ; eb bf ; 0xf48d3 eltorito.c:946 + test bl, bl ; 84 db ; 0xf48d5 eltorito.c:948 + jne short 048c6h ; 75 ed ; 0xf48d7 + xor al, al ; 30 c0 ; 0xf48d9 + jmp short 048c9h ; eb ec ; 0xf48db + xor dh, dh ; 30 f6 ; 0xf48dd eltorito.c:955 + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf48df + mov es, [bp-006h] ; 8e 46 fa ; 0xf48e2 + mov bx, si ; 89 f3 ; 0xf48e5 + add bx, dx ; 01 d3 ; 0xf48e7 + mov bl, byte [es:bx+021h] ; 26 8a 5f 21 ; 0xf48e9 + test bl, bl ; 84 db ; 0xf48ed eltorito.c:957 + je short 048f6h ; 74 05 ; 0xf48ef + or ah, 0b1h ; 80 cc b1 ; 0xf48f1 eltorito.c:958 + jmp short 0493ch ; eb 46 ; 0xf48f4 + je short 04956h ; 74 5e ; 0xf48f6 eltorito.c:980 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf48f8 eltorito.c:981 + xor ah, ah ; 30 e4 ; 0xf48fb + jmp short 048f1h ; eb f2 ; 0xf48fd + mov al, dl ; 88 d0 ; 0xf48ff eltorito.c:989 + push ax ; 50 ; 0xf4901 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf4902 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf4905 + mov bx, si ; 89 f3 ; 0xf4908 + mov cx, word [bp-006h] ; 8b 4e fa ; 0xf490a + call 057fbh ; e8 eb 0e ; 0xf490d + test ax, ax ; 85 c0 ; 0xf4910 + je short 04956h ; 74 42 ; 0xf4912 + jmp short 04934h ; eb 1e ; 0xf4914 eltorito.c:990 + or ah, 006h ; 80 cc 06 ; 0xf4916 eltorito.c:997 + mov word [bp+018h], ax ; 89 46 18 ; 0xf4919 + jmp short 04950h ; eb 32 ; 0xf491c eltorito.c:998 + cmp ax, strict word 00006h ; 3d 06 00 ; 0xf491e eltorito.c:1003 + je short 04956h ; 74 33 ; 0xf4921 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf4923 + jc short 04934h ; 72 0c ; 0xf4926 + jbe short 04956h ; 76 2c ; 0xf4928 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf492a + jc short 04934h ; 72 05 ; 0xf492d + cmp ax, strict word 00004h ; 3d 04 00 ; 0xf492f + jbe short 04956h ; 76 22 ; 0xf4932 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4934 eltorito.c:1030 + xor ah, ah ; 30 e4 ; 0xf4937 + or ah, 001h ; 80 cc 01 ; 0xf4939 + mov word [bp+018h], ax ; 89 46 18 ; 0xf493c + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf493f eltorito.c:1032 + shr ax, 008h ; c1 e8 08 ; 0xf4942 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4945 eltorito.c:53 + mov dx, strict word 00040h ; ba 40 00 ; 0xf4948 + mov es, dx ; 8e c2 ; 0xf494b + mov byte [es:bx], al ; 26 88 07 ; 0xf494d + or byte [bp+01eh], 001h ; 80 4e 1e 01 ; 0xf4950 eltorito.c:1034 + jmp short 0496ah ; eb 14 ; 0xf4954 eltorito.c:1035 + mov byte [bp+019h], 000h ; c6 46 19 00 ; 0xf4956 eltorito.c:1038 + mov bx, strict word 00074h ; bb 74 00 ; 0xf495a eltorito.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf495d + mov es, ax ; 8e c0 ; 0xf4960 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4962 + and byte [bp+01eh], 0feh ; 80 66 1e fe ; 0xf4966 eltorito.c:1041 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf496a eltorito.c:1043 + pop di ; 5f ; 0xf496d + pop si ; 5e ; 0xf496e + pop bp ; 5d ; 0xf496f + retn ; c3 ; 0xf4970 + ; disGetNextSymbol 0xf4971 LB 0x63e7 -> off=0x0 cb=000000000000004b uValue=00000000000f3371 'print_boot_device' +print_boot_device: ; 0xf4971 LB 0x4b + push bp ; 55 ; 0xf4971 boot.c:119 + mov bp, sp ; 89 e5 ; 0xf4972 + push cx ; 51 ; 0xf4974 + test al, al ; 84 c0 ; 0xf4975 boot.c:127 + je short 0497eh ; 74 05 ; 0xf4977 + mov dx, strict word 00002h ; ba 02 00 ; 0xf4979 + jmp short 04998h ; eb 1a ; 0xf497c boot.c:128 + test dl, dl ; 84 d2 ; 0xf497e + je short 04987h ; 74 05 ; 0xf4980 + mov dx, strict word 00003h ; ba 03 00 ; 0xf4982 + jmp short 04998h ; eb 11 ; 0xf4985 boot.c:129 + test bl, 080h ; f6 c3 80 ; 0xf4987 + jne short 04990h ; 75 04 ; 0xf498a + xor dh, dh ; 30 f6 ; 0xf498c + jmp short 04998h ; eb 08 ; 0xf498e boot.c:130 + test bl, 080h ; f6 c3 80 ; 0xf4990 + je short 049b6h ; 74 21 ; 0xf4993 + mov dx, strict word 00001h ; ba 01 00 ; 0xf4995 + mov bx, 00dcch ; bb cc 0d ; 0xf4998 boot.c:133 + mov cx, ds ; 8c d9 ; 0xf499b + mov ax, strict word 00004h ; b8 04 00 ; 0xf499d + call 01910h ; e8 6d cf ; 0xf49a0 + imul dx, dx, strict byte 0000ah ; 6b d2 0a ; 0xf49a3 + add dx, 00df2h ; 81 c2 f2 0d ; 0xf49a6 + push dx ; 52 ; 0xf49aa + push 004cch ; 68 cc 04 ; 0xf49ab + push strict byte 00004h ; 6a 04 ; 0xf49ae + call 01953h ; e8 a0 cf ; 0xf49b0 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf49b3 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf49b6 boot.c:134 + pop cx ; 59 ; 0xf49b9 + pop bp ; 5d ; 0xf49ba + retn ; c3 ; 0xf49bb + ; disGetNextSymbol 0xf49bc LB 0x639c -> off=0x0 cb=00000000000000c2 uValue=00000000000f33bc 'print_boot_failure' +print_boot_failure: ; 0xf49bc LB 0xc2 + push bp ; 55 ; 0xf49bc boot.c:141 + mov bp, sp ; 89 e5 ; 0xf49bd + push si ; 56 ; 0xf49bf + mov ah, dl ; 88 d4 ; 0xf49c0 + mov dl, cl ; 88 ca ; 0xf49c2 + mov cl, bl ; 88 d9 ; 0xf49c4 boot.c:144 + and cl, 07fh ; 80 e1 7f ; 0xf49c6 + xor ch, ch ; 30 ed ; 0xf49c9 + mov si, cx ; 89 ce ; 0xf49cb + test al, al ; 84 c0 ; 0xf49cd boot.c:152 + je short 049ech ; 74 1b ; 0xf49cf + mov bx, 00dcch ; bb cc 0d ; 0xf49d1 boot.c:153 + mov cx, ds ; 8c d9 ; 0xf49d4 + mov ax, strict word 00004h ; b8 04 00 ; 0xf49d6 + call 01910h ; e8 34 cf ; 0xf49d9 + push 00e06h ; 68 06 0e ; 0xf49dc + push 004e0h ; 68 e0 04 ; 0xf49df + push strict byte 00004h ; 6a 04 ; 0xf49e2 + call 01953h ; e8 6c cf ; 0xf49e4 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf49e7 + jmp short 04a30h ; eb 44 ; 0xf49ea boot.c:154 + test ah, ah ; 84 e4 ; 0xf49ec + je short 04a00h ; 74 10 ; 0xf49ee + mov bx, 00dcch ; bb cc 0d ; 0xf49f0 boot.c:155 + mov cx, ds ; 8c d9 ; 0xf49f3 + mov ax, strict word 00004h ; b8 04 00 ; 0xf49f5 + call 01910h ; e8 15 cf ; 0xf49f8 + push 00e10h ; 68 10 0e ; 0xf49fb + jmp short 049dfh ; eb df ; 0xf49fe + test bl, 080h ; f6 c3 80 ; 0xf4a00 boot.c:156 + je short 04a16h ; 74 11 ; 0xf4a03 + mov bx, 00dcch ; bb cc 0d ; 0xf4a05 boot.c:157 + mov cx, ds ; 8c d9 ; 0xf4a08 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4a0a + call 01910h ; e8 00 cf ; 0xf4a0d + push si ; 56 ; 0xf4a10 + push 00dfch ; 68 fc 0d ; 0xf4a11 + jmp short 04a25h ; eb 0f ; 0xf4a14 boot.c:158 + mov bx, 00dcch ; bb cc 0d ; 0xf4a16 boot.c:159 + mov cx, ds ; 8c d9 ; 0xf4a19 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4a1b + call 01910h ; e8 ef ce ; 0xf4a1e + push si ; 56 ; 0xf4a21 + push 00df2h ; 68 f2 0d ; 0xf4a22 + push 004f5h ; 68 f5 04 ; 0xf4a25 + push strict byte 00004h ; 6a 04 ; 0xf4a28 + call 01953h ; e8 26 cf ; 0xf4a2a + add sp, strict byte 00008h ; 83 c4 08 ; 0xf4a2d + cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4a30 boot.c:161 + jne short 04a76h ; 75 40 ; 0xf4a34 + test dl, dl ; 84 d2 ; 0xf4a36 boot.c:162 + jne short 04a4ah ; 75 10 ; 0xf4a38 + mov bx, 00dcch ; bb cc 0d ; 0xf4a3a boot.c:163 + mov cx, ds ; 8c d9 ; 0xf4a3d + mov ax, strict word 00004h ; b8 04 00 ; 0xf4a3f + call 01910h ; e8 cb ce ; 0xf4a42 + push 0050dh ; 68 0d 05 ; 0xf4a45 + jmp short 04a58h ; eb 0e ; 0xf4a48 boot.c:164 + mov bx, 00dcch ; bb cc 0d ; 0xf4a4a boot.c:165 + mov cx, ds ; 8c d9 ; 0xf4a4d + mov ax, strict word 00004h ; b8 04 00 ; 0xf4a4f + call 01910h ; e8 bb ce ; 0xf4a52 + push 00528h ; 68 28 05 ; 0xf4a55 + push strict byte 00006h ; 6a 06 ; 0xf4a58 + call 01953h ; e8 f6 ce ; 0xf4a5a + add sp, strict byte 00004h ; 83 c4 04 ; 0xf4a5d + mov bx, 00dcch ; bb cc 0d ; 0xf4a60 boot.c:166 + mov cx, ds ; 8c d9 ; 0xf4a63 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4a65 + call 01910h ; e8 a5 ce ; 0xf4a68 + push 0054eh ; 68 4e 05 ; 0xf4a6b + push strict byte 00006h ; 6a 06 ; 0xf4a6e + call 01953h ; e8 e0 ce ; 0xf4a70 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf4a73 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf4a76 boot.c:168 + pop si ; 5e ; 0xf4a79 + pop bp ; 5d ; 0xf4a7a + retn 00002h ; c2 02 00 ; 0xf4a7b + ; disGetNextSymbol 0xf4a7e LB 0x62da -> off=0x0 cb=0000000000000027 uValue=00000000000f347e 'print_cdromboot_failure' +print_cdromboot_failure: ; 0xf4a7e LB 0x27 + push bp ; 55 ; 0xf4a7e boot.c:174 + mov bp, sp ; 89 e5 ; 0xf4a7f + push bx ; 53 ; 0xf4a81 + push cx ; 51 ; 0xf4a82 + push dx ; 52 ; 0xf4a83 + mov dx, ax ; 89 c2 ; 0xf4a84 + mov bx, 00dcch ; bb cc 0d ; 0xf4a86 boot.c:176 + mov cx, ds ; 8c d9 ; 0xf4a89 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4a8b + call 01910h ; e8 7f ce ; 0xf4a8e + push dx ; 52 ; 0xf4a91 + push 0057bh ; 68 7b 05 ; 0xf4a92 + push strict byte 00004h ; 6a 04 ; 0xf4a95 + call 01953h ; e8 b9 ce ; 0xf4a97 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4a9a + lea sp, [bp-006h] ; 8d 66 fa ; 0xf4a9d boot.c:178 + pop dx ; 5a ; 0xf4aa0 + pop cx ; 59 ; 0xf4aa1 + pop bx ; 5b ; 0xf4aa2 + pop bp ; 5d ; 0xf4aa3 + retn ; c3 ; 0xf4aa4 + ; disGetNextSymbol 0xf4aa5 LB 0x62b3 -> off=0x0 cb=000000000000025b uValue=00000000000f34a5 'int19_function' +int19_function: ; 0xf4aa5 LB 0x25b + push bp ; 55 ; 0xf4aa5 boot.c:181 + mov bp, sp ; 89 e5 ; 0xf4aa6 + push si ; 56 ; 0xf4aa8 + push di ; 57 ; 0xf4aa9 + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf4aaa + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4aad boot.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4ab0 + mov es, ax ; 8e c0 ; 0xf4ab3 + mov cx, word [es:bx] ; 26 8b 0f ; 0xf4ab5 + mov di, cx ; 89 cf ; 0xf4ab8 boot.c:59 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf4aba boot.c:192 + mov ax, strict word 0003dh ; b8 3d 00 ; 0xf4abe boot.c:215 + call 01664h ; e8 a0 cb ; 0xf4ac1 + mov dl, al ; 88 c2 ; 0xf4ac4 + xor dh, dh ; 30 f6 ; 0xf4ac6 + mov ax, strict word 00038h ; b8 38 00 ; 0xf4ac8 boot.c:216 + call 01664h ; e8 96 cb ; 0xf4acb + and AL, strict byte 0f0h ; 24 f0 ; 0xf4ace + xor ah, ah ; 30 e4 ; 0xf4ad0 + sal ax, 004h ; c1 e0 04 ; 0xf4ad2 + or dx, ax ; 09 c2 ; 0xf4ad5 + mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4ad7 boot.c:217 + call 01664h ; e8 87 cb ; 0xf4ada + and AL, strict byte 00fh ; 24 0f ; 0xf4add + xor ah, ah ; 30 e4 ; 0xf4adf + sal ax, 00ch ; c1 e0 0c ; 0xf4ae1 + or dx, ax ; 09 c2 ; 0xf4ae4 + mov bx, 00331h ; bb 31 03 ; 0xf4ae6 boot.c:48 + mov es, cx ; 8e c1 ; 0xf4ae9 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4aeb + test al, al ; 84 c0 ; 0xf4aee boot.c:49 + je short 04af6h ; 74 04 ; 0xf4af0 + mov dl, al ; 88 c2 ; 0xf4af2 boot.c:48 + xor dh, dh ; 30 f6 ; 0xf4af4 boot.c:49 + cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4af6 boot.c:221 + jne short 04b0ch ; 75 10 ; 0xf4afa + mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4afc boot.c:222 + call 01664h ; e8 62 cb ; 0xf4aff + and AL, strict byte 0f0h ; 24 f0 ; 0xf4b02 + xor ah, ah ; 30 e4 ; 0xf4b04 + sar ax, 004h ; c1 f8 04 ; 0xf4b06 + call 07710h ; e8 04 2c ; 0xf4b09 + cmp byte [bp+004h], 002h ; 80 7e 04 02 ; 0xf4b0c boot.c:224 + jne short 04b15h ; 75 03 ; 0xf4b10 + shr dx, 004h ; c1 ea 04 ; 0xf4b12 + cmp byte [bp+004h], 003h ; 80 7e 04 03 ; 0xf4b15 boot.c:225 + jne short 04b1eh ; 75 03 ; 0xf4b19 + shr dx, 008h ; c1 ea 08 ; 0xf4b1b + cmp byte [bp+004h], 004h ; 80 7e 04 04 ; 0xf4b1e boot.c:226 + jne short 04b27h ; 75 03 ; 0xf4b22 + shr dx, 00ch ; c1 ea 0c ; 0xf4b24 + cmp dx, strict byte 00010h ; 83 fa 10 ; 0xf4b27 boot.c:227 + jnc short 04b30h ; 73 04 ; 0xf4b2a + mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf4b2c + xor al, al ; 30 c0 ; 0xf4b30 boot.c:228 + mov byte [bp-006h], al ; 88 46 fa ; 0xf4b32 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf4b35 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4b38 boot.c:229 + mov bx, 00dcch ; bb cc 0d ; 0xf4b3b boot.c:230 + mov cx, ds ; 8c d9 ; 0xf4b3e + mov ax, strict word 00004h ; b8 04 00 ; 0xf4b40 + call 01910h ; e8 ca cd ; 0xf4b43 + push dx ; 52 ; 0xf4b46 + mov al, byte [bp+004h] ; 8a 46 04 ; 0xf4b47 + xor ah, ah ; 30 e4 ; 0xf4b4a + push ax ; 50 ; 0xf4b4c + push 0059bh ; 68 9b 05 ; 0xf4b4d + push strict byte 00004h ; 6a 04 ; 0xf4b50 + call 01953h ; e8 fe cd ; 0xf4b52 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf4b55 + and dx, strict byte 0000fh ; 83 e2 0f ; 0xf4b58 boot.c:232 + cmp dx, strict byte 00002h ; 83 fa 02 ; 0xf4b5b + jc short 04b6eh ; 72 0e ; 0xf4b5e + jbe short 04b7dh ; 76 1b ; 0xf4b60 + cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4b62 + je short 04b99h ; 74 32 ; 0xf4b65 + cmp dx, strict byte 00003h ; 83 fa 03 ; 0xf4b67 + je short 04b8fh ; 74 23 ; 0xf4b6a + jmp short 04bc8h ; eb 5a ; 0xf4b6c + cmp dx, strict byte 00001h ; 83 fa 01 ; 0xf4b6e + jne short 04bc8h ; 75 55 ; 0xf4b71 + xor al, al ; 30 c0 ; 0xf4b73 boot.c:234 + mov byte [bp-006h], al ; 88 46 fa ; 0xf4b75 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf4b78 boot.c:235 + jmp short 04bddh ; eb 60 ; 0xf4b7b boot.c:236 + mov bx, 00330h ; bb 30 03 ; 0xf4b7d boot.c:48 + mov es, di ; 8e c7 ; 0xf4b80 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4b82 + add AL, strict byte 080h ; 04 80 ; 0xf4b85 boot.c:242 + mov byte [bp-006h], al ; 88 46 fa ; 0xf4b87 + mov byte [bp-008h], dh ; 88 76 f8 ; 0xf4b8a boot.c:243 + jmp short 04bddh ; eb 4e ; 0xf4b8d boot.c:244 + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf4b8f boot.c:247 + mov byte [bp-008h], 001h ; c6 46 f8 01 ; 0xf4b93 boot.c:248 + jmp short 04ba3h ; eb 0a ; 0xf4b97 boot.c:249 + mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf4b99 boot.c:250 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4b9d boot.c:266 + je short 04bddh ; 74 3a ; 0xf4ba1 + call 03f27h ; e8 81 f3 ; 0xf4ba3 boot.c:267 + mov dx, ax ; 89 c2 ; 0xf4ba6 + test AL, strict byte 0ffh ; a8 ff ; 0xf4ba8 boot.c:270 + je short 04bcfh ; 74 23 ; 0xf4baa + call 04a7eh ; e8 cf fe ; 0xf4bac boot.c:271 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4baf boot.c:272 + xor ah, ah ; 30 e4 ; 0xf4bb2 + push ax ; 50 ; 0xf4bb4 + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4bb5 + xor bh, bh ; 30 ff ; 0xf4bb8 + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4bba + xor dh, dh ; 30 f6 ; 0xf4bbd + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4bbf + mov cx, strict word 00001h ; b9 01 00 ; 0xf4bc2 + call 049bch ; e8 f4 fd ; 0xf4bc5 + xor ax, ax ; 31 c0 ; 0xf4bc8 + xor dx, dx ; 31 d2 ; 0xf4bca + jmp near 04cf9h ; e9 2a 01 ; 0xf4bcc + mov bx, 00322h ; bb 22 03 ; 0xf4bcf boot.c:58 + mov es, di ; 8e c7 ; 0xf4bd2 + mov si, word [es:bx] ; 26 8b 37 ; 0xf4bd4 + shr dx, 008h ; c1 ea 08 ; 0xf4bd7 boot.c:277 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf4bda + cmp byte [bp-00ah], 001h ; 80 7e f6 01 ; 0xf4bdd boot.c:283 + jne short 04c38h ; 75 55 ; 0xf4be1 + xor si, si ; 31 f6 ; 0xf4be3 boot.c:286 + mov ax, 0e200h ; b8 00 e2 ; 0xf4be5 + mov es, ax ; 8e c0 ; 0xf4be8 + cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf4bea boot.c:287 + jne short 04bafh ; 75 be ; 0xf4bef + mov cx, ax ; 89 c1 ; 0xf4bf1 boot.c:293 + mov si, word [es:si+01ah] ; 26 8b 74 1a ; 0xf4bf3 + cmp word [es:si+002h], 0506eh ; 26 81 7c 02 6e 50 ; 0xf4bf7 boot.c:294 + jne short 04bafh ; 75 b0 ; 0xf4bfd + cmp word [es:si], 05024h ; 26 81 3c 24 50 ; 0xf4bff + jne short 04bafh ; 75 a9 ; 0xf4c04 + mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf4c06 boot.c:296 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf4c0a + mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf4c0d + cmp ax, 06568h ; 3d 68 65 ; 0xf4c11 boot.c:297 + jne short 04c3ah ; 75 24 ; 0xf4c14 + cmp dx, 07445h ; 81 fa 45 74 ; 0xf4c16 + jne short 04c3ah ; 75 1e ; 0xf4c1a + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4c1c boot.c:299 + xor bh, bh ; 30 ff ; 0xf4c1f + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4c21 + xor dh, dh ; 30 f6 ; 0xf4c24 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4c26 + xor ah, ah ; 30 e4 ; 0xf4c29 + call 04971h ; e8 43 fd ; 0xf4c2b + mov word [bp-010h], strict word 00006h ; c7 46 f0 06 00 ; 0xf4c2e boot.c:300 + mov word [bp-00eh], cx ; 89 4e f2 ; 0xf4c33 + jmp short 04c59h ; eb 21 ; 0xf4c36 boot.c:303 + jmp short 04c5fh ; eb 25 ; 0xf4c38 + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4c3a boot.c:306 + xor bh, bh ; 30 ff ; 0xf4c3d + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4c3f + xor dh, dh ; 30 f6 ; 0xf4c42 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4c44 + xor ah, ah ; 30 e4 ; 0xf4c47 + call 04971h ; e8 25 fd ; 0xf4c49 + sti ; fb ; 0xf4c4c boot.c:307 + mov word [bp-00eh], cx ; 89 4e f2 ; 0xf4c4d boot.c:308 + mov es, cx ; 8e c1 ; 0xf4c50 + mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4c52 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf4c56 + call far [bp-010h] ; ff 5e f0 ; 0xf4c59 boot.c:309 + jmp near 04bafh ; e9 50 ff ; 0xf4c5c boot.c:312 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4c5f boot.c:320 + jne short 04c8ch ; 75 27 ; 0xf4c63 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4c65 + jne short 04c8ch ; 75 21 ; 0xf4c69 + mov si, 007c0h ; be c0 07 ; 0xf4c6b boot.c:321 + mov es, si ; 8e c6 ; 0xf4c6e boot.c:323 + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf4c70 + mov ax, 00201h ; b8 01 02 ; 0xf4c73 + mov DH, strict byte 000h ; b6 00 ; 0xf4c76 + mov cx, strict word 00001h ; b9 01 00 ; 0xf4c78 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xf4c7b + int 013h ; cd 13 ; 0xf4c7d + mov ax, strict word 00000h ; b8 00 00 ; 0xf4c7f + sbb ax, strict byte 00000h ; 83 d8 00 ; 0xf4c82 + test ax, ax ; 85 c0 ; 0xf4c85 boot.c:324 + je short 04c8ch ; 74 03 ; 0xf4c87 + jmp near 04bafh ; e9 23 ff ; 0xf4c89 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf4c8c boot.c:339 + je short 04c96h ; 74 04 ; 0xf4c90 + xor al, al ; 30 c0 ; 0xf4c92 + jmp short 04c98h ; eb 02 ; 0xf4c94 boot.c:340 + mov AL, strict byte 001h ; b0 01 ; 0xf4c96 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4c98 boot.c:344 + je short 04ca0h ; 74 02 ; 0xf4c9c + mov AL, strict byte 001h ; b0 01 ; 0xf4c9e boot.c:345 + xor bx, bx ; 31 db ; 0xf4ca0 boot.c:58 + mov es, si ; 8e c6 ; 0xf4ca2 + mov cx, word [es:bx] ; 26 8b 0f ; 0xf4ca4 + mov bx, strict word 00004h ; bb 04 00 ; 0xf4ca7 boot.c:58 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf4caa + cmp cx, dx ; 39 d1 ; 0xf4cad boot.c:59 + je short 04cc0h ; 74 0f ; 0xf4caf + test al, al ; 84 c0 ; 0xf4cb1 + jne short 04cd8h ; 75 23 ; 0xf4cb3 + mov bx, 001feh ; bb fe 01 ; 0xf4cb5 boot.c:58 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf4cb8 + cmp ax, 0aa55h ; 3d 55 aa ; 0xf4cbb boot.c:59 + je short 04cd8h ; 74 18 ; 0xf4cbe + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4cc0 boot.c:351 + xor ah, ah ; 30 e4 ; 0xf4cc3 + push ax ; 50 ; 0xf4cc5 + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4cc6 + xor bh, bh ; 30 ff ; 0xf4cc9 + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4ccb + xor dh, dh ; 30 f6 ; 0xf4cce + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4cd0 + xor cx, cx ; 31 c9 ; 0xf4cd3 + jmp near 04bc5h ; e9 ed fe ; 0xf4cd5 + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4cd8 boot.c:357 + xor bh, bh ; 30 ff ; 0xf4cdb + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4cdd + xor dh, dh ; 30 f6 ; 0xf4ce0 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4ce2 + xor ah, ah ; 30 e4 ; 0xf4ce5 + call 04971h ; e8 87 fc ; 0xf4ce7 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4cea boot.c:363 + xor ah, ah ; 30 e4 ; 0xf4ced + mov bx, ax ; 89 c3 ; 0xf4cef + xor dx, dx ; 31 d2 ; 0xf4cf1 + xor al, al ; 30 c0 ; 0xf4cf3 + add ax, si ; 01 f0 ; 0xf4cf5 + adc dx, bx ; 11 da ; 0xf4cf7 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf4cf9 boot.c:364 + pop di ; 5f ; 0xf4cfc + pop si ; 5e ; 0xf4cfd + pop bp ; 5d ; 0xf4cfe + retn ; c3 ; 0xf4cff + ; disGetNextSymbol 0xf4d00 LB 0x6058 -> off=0x0 cb=0000000000000013 uValue=00000000000f3700 'keyboard_panic' +keyboard_panic: ; 0xf4d00 LB 0x13 + push bp ; 55 ; 0xf4d00 keyboard.c:204 + mov bp, sp ; 89 e5 ; 0xf4d01 + push ax ; 50 ; 0xf4d03 keyboard.c:209 + push 005bah ; 68 ba 05 ; 0xf4d04 + push strict byte 00007h ; 6a 07 ; 0xf4d07 + call 01953h ; e8 47 cc ; 0xf4d09 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4d0c + mov sp, bp ; 89 ec ; 0xf4d0f keyboard.c:210 + pop bp ; 5d ; 0xf4d11 + retn ; c3 ; 0xf4d12 + ; disGetNextSymbol 0xf4d13 LB 0x6045 -> off=0x0 cb=000000000000026a uValue=00000000000f3713 'keyboard_init' +keyboard_init: ; 0xf4d13 LB 0x26a + push bp ; 55 ; 0xf4d13 keyboard.c:218 + mov bp, sp ; 89 e5 ; 0xf4d14 + mov AL, strict byte 0aah ; b0 aa ; 0xf4d16 keyboard.c:224 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4d18 + out DX, AL ; ee ; 0xf4d1b + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4d1c keyboard.c:227 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4d1f keyboard.c:228 + in AL, DX ; ec ; 0xf4d22 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4d23 + test AL, strict byte 002h ; a8 02 ; 0xf4d25 + je short 04d36h ; 74 0d ; 0xf4d27 + dec bx ; 4b ; 0xf4d29 + test bx, bx ; 85 db ; 0xf4d2a + jbe short 04d36h ; 76 08 ; 0xf4d2c + xor al, al ; 30 c0 ; 0xf4d2e + mov dx, 00080h ; ba 80 00 ; 0xf4d30 + out DX, AL ; ee ; 0xf4d33 + jmp short 04d1fh ; eb e9 ; 0xf4d34 + test bx, bx ; 85 db ; 0xf4d36 keyboard.c:229 + jne short 04d3fh ; 75 05 ; 0xf4d38 + xor ax, ax ; 31 c0 ; 0xf4d3a + call 04d00h ; e8 c1 ff ; 0xf4d3c + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4d3f keyboard.c:232 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4d42 keyboard.c:233 + in AL, DX ; ec ; 0xf4d45 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4d46 + test AL, strict byte 001h ; a8 01 ; 0xf4d48 + jne short 04d59h ; 75 0d ; 0xf4d4a + dec bx ; 4b ; 0xf4d4c + test bx, bx ; 85 db ; 0xf4d4d + jbe short 04d59h ; 76 08 ; 0xf4d4f + mov AL, strict byte 001h ; b0 01 ; 0xf4d51 + mov dx, 00080h ; ba 80 00 ; 0xf4d53 + out DX, AL ; ee ; 0xf4d56 + jmp short 04d42h ; eb e9 ; 0xf4d57 + test bx, bx ; 85 db ; 0xf4d59 keyboard.c:234 + jne short 04d63h ; 75 06 ; 0xf4d5b + mov ax, strict word 00001h ; b8 01 00 ; 0xf4d5d + call 04d00h ; e8 9d ff ; 0xf4d60 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4d63 keyboard.c:237 + in AL, DX ; ec ; 0xf4d66 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4d67 + cmp ax, strict word 00055h ; 3d 55 00 ; 0xf4d69 + je short 04d74h ; 74 06 ; 0xf4d6c + mov ax, 003dfh ; b8 df 03 ; 0xf4d6e keyboard.c:238 + call 04d00h ; e8 8c ff ; 0xf4d71 + mov AL, strict byte 0abh ; b0 ab ; 0xf4d74 keyboard.c:242 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4d76 + out DX, AL ; ee ; 0xf4d79 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4d7a keyboard.c:245 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4d7d keyboard.c:246 + in AL, DX ; ec ; 0xf4d80 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4d81 + test AL, strict byte 002h ; a8 02 ; 0xf4d83 + je short 04d94h ; 74 0d ; 0xf4d85 + dec bx ; 4b ; 0xf4d87 + test bx, bx ; 85 db ; 0xf4d88 + jbe short 04d94h ; 76 08 ; 0xf4d8a + mov AL, strict byte 010h ; b0 10 ; 0xf4d8c + mov dx, 00080h ; ba 80 00 ; 0xf4d8e + out DX, AL ; ee ; 0xf4d91 + jmp short 04d7dh ; eb e9 ; 0xf4d92 + test bx, bx ; 85 db ; 0xf4d94 keyboard.c:247 + jne short 04d9eh ; 75 06 ; 0xf4d96 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4d98 + call 04d00h ; e8 62 ff ; 0xf4d9b + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4d9e keyboard.c:250 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4da1 keyboard.c:251 + in AL, DX ; ec ; 0xf4da4 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4da5 + test AL, strict byte 001h ; a8 01 ; 0xf4da7 + jne short 04db8h ; 75 0d ; 0xf4da9 + dec bx ; 4b ; 0xf4dab + test bx, bx ; 85 db ; 0xf4dac + jbe short 04db8h ; 76 08 ; 0xf4dae + mov AL, strict byte 011h ; b0 11 ; 0xf4db0 + mov dx, 00080h ; ba 80 00 ; 0xf4db2 + out DX, AL ; ee ; 0xf4db5 + jmp short 04da1h ; eb e9 ; 0xf4db6 + test bx, bx ; 85 db ; 0xf4db8 keyboard.c:252 + jne short 04dc2h ; 75 06 ; 0xf4dba + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf4dbc + call 04d00h ; e8 3e ff ; 0xf4dbf + mov dx, strict word 00060h ; ba 60 00 ; 0xf4dc2 keyboard.c:256 + in AL, DX ; ec ; 0xf4dc5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4dc6 + test ax, ax ; 85 c0 ; 0xf4dc8 + je short 04dd2h ; 74 06 ; 0xf4dca + mov ax, 003e0h ; b8 e0 03 ; 0xf4dcc keyboard.c:257 + call 04d00h ; e8 2e ff ; 0xf4dcf + mov AL, strict byte 0ffh ; b0 ff ; 0xf4dd2 keyboard.c:263 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4dd4 + out DX, AL ; ee ; 0xf4dd7 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4dd8 keyboard.c:266 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4ddb keyboard.c:267 + in AL, DX ; ec ; 0xf4dde + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4ddf + test AL, strict byte 002h ; a8 02 ; 0xf4de1 + je short 04df2h ; 74 0d ; 0xf4de3 + dec bx ; 4b ; 0xf4de5 + test bx, bx ; 85 db ; 0xf4de6 + jbe short 04df2h ; 76 08 ; 0xf4de8 + mov AL, strict byte 020h ; b0 20 ; 0xf4dea + mov dx, 00080h ; ba 80 00 ; 0xf4dec + out DX, AL ; ee ; 0xf4def + jmp short 04ddbh ; eb e9 ; 0xf4df0 + test bx, bx ; 85 db ; 0xf4df2 keyboard.c:268 + jne short 04dfch ; 75 06 ; 0xf4df4 + mov ax, strict word 00014h ; b8 14 00 ; 0xf4df6 + call 04d00h ; e8 04 ff ; 0xf4df9 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4dfc keyboard.c:271 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4dff keyboard.c:272 + in AL, DX ; ec ; 0xf4e02 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4e03 + test AL, strict byte 001h ; a8 01 ; 0xf4e05 + jne short 04e16h ; 75 0d ; 0xf4e07 + dec bx ; 4b ; 0xf4e09 + test bx, bx ; 85 db ; 0xf4e0a + jbe short 04e16h ; 76 08 ; 0xf4e0c + mov AL, strict byte 021h ; b0 21 ; 0xf4e0e + mov dx, 00080h ; ba 80 00 ; 0xf4e10 + out DX, AL ; ee ; 0xf4e13 + jmp short 04dffh ; eb e9 ; 0xf4e14 + test bx, bx ; 85 db ; 0xf4e16 keyboard.c:273 + jne short 04e20h ; 75 06 ; 0xf4e18 + mov ax, strict word 00015h ; b8 15 00 ; 0xf4e1a + call 04d00h ; e8 e0 fe ; 0xf4e1d + mov dx, strict word 00060h ; ba 60 00 ; 0xf4e20 keyboard.c:276 + in AL, DX ; ec ; 0xf4e23 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4e24 + cmp ax, 000fah ; 3d fa 00 ; 0xf4e26 + je short 04e31h ; 74 06 ; 0xf4e29 + mov ax, 003e1h ; b8 e1 03 ; 0xf4e2b keyboard.c:277 + call 04d00h ; e8 cf fe ; 0xf4e2e + mov dx, strict word 00064h ; ba 64 00 ; 0xf4e31 keyboard.c:281 + in AL, DX ; ec ; 0xf4e34 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4e35 + test AL, strict byte 001h ; a8 01 ; 0xf4e37 + jne short 04e43h ; 75 08 ; 0xf4e39 + mov AL, strict byte 031h ; b0 31 ; 0xf4e3b + mov dx, 00080h ; ba 80 00 ; 0xf4e3d + out DX, AL ; ee ; 0xf4e40 + jmp short 04e31h ; eb ee ; 0xf4e41 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4e43 keyboard.c:283 + in AL, DX ; ec ; 0xf4e46 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4e47 + cmp ax, 000aah ; 3d aa 00 ; 0xf4e49 + je short 04e5ch ; 74 0e ; 0xf4e4c + in AL, DX ; ec ; 0xf4e4e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4e4f + cmp ax, 000aah ; 3d aa 00 ; 0xf4e51 + je short 04e5ch ; 74 06 ; 0xf4e54 + mov ax, 003e2h ; b8 e2 03 ; 0xf4e56 keyboard.c:284 + call 04d00h ; e8 a4 fe ; 0xf4e59 + mov AL, strict byte 0f5h ; b0 f5 ; 0xf4e5c keyboard.c:288 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4e5e + out DX, AL ; ee ; 0xf4e61 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4e62 keyboard.c:291 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4e65 keyboard.c:292 + in AL, DX ; ec ; 0xf4e68 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4e69 + test AL, strict byte 002h ; a8 02 ; 0xf4e6b + je short 04e7ch ; 74 0d ; 0xf4e6d + dec bx ; 4b ; 0xf4e6f + test bx, bx ; 85 db ; 0xf4e70 + jbe short 04e7ch ; 76 08 ; 0xf4e72 + mov AL, strict byte 040h ; b0 40 ; 0xf4e74 + mov dx, 00080h ; ba 80 00 ; 0xf4e76 + out DX, AL ; ee ; 0xf4e79 + jmp short 04e65h ; eb e9 ; 0xf4e7a + test bx, bx ; 85 db ; 0xf4e7c keyboard.c:293 + jne short 04e86h ; 75 06 ; 0xf4e7e + mov ax, strict word 00028h ; b8 28 00 ; 0xf4e80 + call 04d00h ; e8 7a fe ; 0xf4e83 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4e86 keyboard.c:296 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4e89 keyboard.c:297 + in AL, DX ; ec ; 0xf4e8c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4e8d + test AL, strict byte 001h ; a8 01 ; 0xf4e8f + jne short 04ea0h ; 75 0d ; 0xf4e91 + dec bx ; 4b ; 0xf4e93 + test bx, bx ; 85 db ; 0xf4e94 + jbe short 04ea0h ; 76 08 ; 0xf4e96 + mov AL, strict byte 041h ; b0 41 ; 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:298 + jne short 04eaah ; 75 06 ; 0xf4ea2 + mov ax, strict word 00029h ; b8 29 00 ; 0xf4ea4 + call 04d00h ; e8 56 fe ; 0xf4ea7 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4eaa keyboard.c:301 + in AL, DX ; ec ; 0xf4ead + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4eae + cmp ax, 000fah ; 3d fa 00 ; 0xf4eb0 + je short 04ebbh ; 74 06 ; 0xf4eb3 + mov ax, 003e3h ; b8 e3 03 ; 0xf4eb5 keyboard.c:302 + call 04d00h ; e8 45 fe ; 0xf4eb8 + mov AL, strict byte 060h ; b0 60 ; 0xf4ebb keyboard.c:306 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4ebd + out DX, AL ; ee ; 0xf4ec0 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4ec1 keyboard.c:309 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4ec4 keyboard.c:310 + in AL, DX ; ec ; 0xf4ec7 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4ec8 + test AL, strict byte 002h ; a8 02 ; 0xf4eca + je short 04edbh ; 74 0d ; 0xf4ecc + dec bx ; 4b ; 0xf4ece + test bx, bx ; 85 db ; 0xf4ecf + jbe short 04edbh ; 76 08 ; 0xf4ed1 + mov AL, strict byte 050h ; b0 50 ; 0xf4ed3 + mov dx, 00080h ; ba 80 00 ; 0xf4ed5 + out DX, AL ; ee ; 0xf4ed8 + jmp short 04ec4h ; eb e9 ; 0xf4ed9 + test bx, bx ; 85 db ; 0xf4edb keyboard.c:311 + jne short 04ee5h ; 75 06 ; 0xf4edd + mov ax, strict word 00032h ; b8 32 00 ; 0xf4edf + call 04d00h ; e8 1b fe ; 0xf4ee2 + mov AL, strict byte 065h ; b0 65 ; 0xf4ee5 keyboard.c:314 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4ee7 + out DX, AL ; ee ; 0xf4eea + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4eeb keyboard.c:317 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4eee keyboard.c:318 + in AL, DX ; ec ; 0xf4ef1 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4ef2 + test AL, strict byte 002h ; a8 02 ; 0xf4ef4 + je short 04f05h ; 74 0d ; 0xf4ef6 + dec bx ; 4b ; 0xf4ef8 + test bx, bx ; 85 db ; 0xf4ef9 + jbe short 04f05h ; 76 08 ; 0xf4efb + mov AL, strict byte 060h ; b0 60 ; 0xf4efd + mov dx, 00080h ; ba 80 00 ; 0xf4eff + out DX, AL ; ee ; 0xf4f02 + jmp short 04eeeh ; eb e9 ; 0xf4f03 + test bx, bx ; 85 db ; 0xf4f05 keyboard.c:319 + jne short 04f0fh ; 75 06 ; 0xf4f07 + mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4f09 + call 04d00h ; e8 f1 fd ; 0xf4f0c + mov AL, strict byte 0f4h ; b0 f4 ; 0xf4f0f keyboard.c:322 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4f11 + out DX, AL ; ee ; 0xf4f14 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f15 keyboard.c:325 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f18 keyboard.c:326 + in AL, DX ; ec ; 0xf4f1b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f1c + test AL, strict byte 002h ; a8 02 ; 0xf4f1e + je short 04f2fh ; 74 0d ; 0xf4f20 + dec bx ; 4b ; 0xf4f22 + test bx, bx ; 85 db ; 0xf4f23 + jbe short 04f2fh ; 76 08 ; 0xf4f25 + mov AL, strict byte 070h ; b0 70 ; 0xf4f27 + mov dx, 00080h ; ba 80 00 ; 0xf4f29 + out DX, AL ; ee ; 0xf4f2c + jmp short 04f18h ; eb e9 ; 0xf4f2d + test bx, bx ; 85 db ; 0xf4f2f keyboard.c:327 + jne short 04f39h ; 75 06 ; 0xf4f31 + mov ax, strict word 00046h ; b8 46 00 ; 0xf4f33 + call 04d00h ; e8 c7 fd ; 0xf4f36 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f39 keyboard.c:330 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f3c keyboard.c:331 + in AL, DX ; ec ; 0xf4f3f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f40 + test AL, strict byte 001h ; a8 01 ; 0xf4f42 + jne short 04f53h ; 75 0d ; 0xf4f44 + dec bx ; 4b ; 0xf4f46 + test bx, bx ; 85 db ; 0xf4f47 + jbe short 04f53h ; 76 08 ; 0xf4f49 + mov AL, strict byte 071h ; b0 71 ; 0xf4f4b + mov dx, 00080h ; ba 80 00 ; 0xf4f4d + out DX, AL ; ee ; 0xf4f50 + jmp short 04f3ch ; eb e9 ; 0xf4f51 + test bx, bx ; 85 db ; 0xf4f53 keyboard.c:332 + jne short 04f5dh ; 75 06 ; 0xf4f55 + mov ax, strict word 00046h ; b8 46 00 ; 0xf4f57 + call 04d00h ; e8 a3 fd ; 0xf4f5a + mov dx, strict word 00060h ; ba 60 00 ; 0xf4f5d keyboard.c:335 + in AL, DX ; ec ; 0xf4f60 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f61 + cmp ax, 000fah ; 3d fa 00 ; 0xf4f63 + je short 04f6eh ; 74 06 ; 0xf4f66 + mov ax, 003e4h ; b8 e4 03 ; 0xf4f68 keyboard.c:336 + call 04d00h ; e8 92 fd ; 0xf4f6b + mov AL, strict byte 0a8h ; b0 a8 ; 0xf4f6e keyboard.c:340 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f70 + out DX, AL ; ee ; 0xf4f73 + xor ax, ax ; 31 c0 ; 0xf4f74 keyboard.c:345 + call 0636ch ; e8 f3 13 ; 0xf4f76 + mov sp, bp ; 89 ec ; 0xf4f79 keyboard.c:346 + pop bp ; 5d ; 0xf4f7b + retn ; c3 ; 0xf4f7c + ; disGetNextSymbol 0xf4f7d LB 0x5ddb -> off=0x0 cb=0000000000000053 uValue=00000000000f397d 'enqueue_key' +enqueue_key: ; 0xf4f7d LB 0x53 + push bx ; 53 ; 0xf4f7d keyboard.c:349 + push cx ; 51 ; 0xf4f7e + push si ; 56 ; 0xf4f7f + push di ; 57 ; 0xf4f80 + push bp ; 55 ; 0xf4f81 + mov bp, sp ; 89 e5 ; 0xf4f82 + mov dh, al ; 88 c6 ; 0xf4f84 + mov bx, 00080h ; bb 80 00 ; 0xf4f86 keyboard.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4f89 + mov es, ax ; 8e c0 ; 0xf4f8c + mov di, word [es:bx] ; 26 8b 3f ; 0xf4f8e + mov bx, 00082h ; bb 82 00 ; 0xf4f91 keyboard.c:58 + mov si, word [es:bx] ; 26 8b 37 ; 0xf4f94 + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf4f97 keyboard.c:58 + mov cx, word [es:bx] ; 26 8b 0f ; 0xf4f9a + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf4f9d keyboard.c:58 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf4fa0 + mov bx, ax ; 89 c3 ; 0xf4fa3 keyboard.c:364 + inc ax ; 40 ; 0xf4fa5 keyboard.c:365 + inc ax ; 40 ; 0xf4fa6 + cmp ax, si ; 39 f0 ; 0xf4fa7 keyboard.c:366 + jc short 04fadh ; 72 02 ; 0xf4fa9 + mov ax, di ; 89 f8 ; 0xf4fab keyboard.c:367 + cmp ax, cx ; 39 c8 ; 0xf4fad keyboard.c:369 + jne short 04fb5h ; 75 04 ; 0xf4faf + xor ax, cx ; 31 c8 ; 0xf4fb1 keyboard.c:370 + jmp short 04fcah ; eb 15 ; 0xf4fb3 + mov cx, strict word 00040h ; b9 40 00 ; 0xf4fb5 keyboard.c:53 + mov es, cx ; 8e c1 ; 0xf4fb8 + mov byte [es:bx], dl ; 26 88 17 ; 0xf4fba + inc bx ; 43 ; 0xf4fbd keyboard.c:373 + mov byte [es:bx], dh ; 26 88 37 ; 0xf4fbe keyboard.c:53 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf4fc1 keyboard.c:63 + mov word [es:bx], ax ; 26 89 07 ; 0xf4fc4 + mov ax, strict word 00001h ; b8 01 00 ; 0xf4fc7 keyboard.c:375 + pop bp ; 5d ; 0xf4fca keyboard.c:376 + pop di ; 5f ; 0xf4fcb + pop si ; 5e ; 0xf4fcc + pop cx ; 59 ; 0xf4fcd + pop bx ; 5b ; 0xf4fce + retn ; c3 ; 0xf4fcf + ; disGetNextSymbol 0xf4fd0 LB 0x5d88 -> off=0x35 cb=00000000000003c4 uValue=00000000000f3a05 'int09_function' + db 0d4h, 0c6h, 0c5h, 0bah, 0b8h, 0b6h, 0aah, 09dh, 054h, 053h, 046h, 045h, 03ah, 038h, 036h, 02ah + db 01dh, 07dh, 052h, 0bch, 050h, 08ah, 050h, 08ah, 050h, 01ch, 051h, 065h, 050h, 08dh, 051h, 0e8h + db 051h, 062h, 052h, 047h, 052h, 0ebh, 050h, 08ah, 050h, 08ah, 050h, 06ah, 051h, 07ch, 050h, 0d0h + db 051h, 032h, 052h, 05dh, 052h +int09_function: ; 0xf5005 LB 0x3c4 + push bp ; 55 ; 0xf5005 keyboard.c:381 + mov bp, sp ; 89 e5 ; 0xf5006 + push si ; 56 ; 0xf5008 + push di ; 57 ; 0xf5009 + push ax ; 50 ; 0xf500a + push ax ; 50 ; 0xf500b + mov al, byte [bp+014h] ; 8a 46 14 ; 0xf500c keyboard.c:392 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf500f + test al, al ; 84 c0 ; 0xf5012 keyboard.c:394 + jne short 0502fh ; 75 19 ; 0xf5014 + mov bx, 00dcch ; bb cc 0d ; 0xf5016 keyboard.c:395 + mov cx, ds ; 8c d9 ; 0xf5019 + mov ax, strict word 00004h ; b8 04 00 ; 0xf501b + call 01910h ; e8 ef c8 ; 0xf501e + push 005cdh ; 68 cd 05 ; 0xf5021 + push strict byte 00004h ; 6a 04 ; 0xf5024 + call 01953h ; e8 2a c9 ; 0xf5026 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf5029 + jmp near 05163h ; e9 34 01 ; 0xf502c keyboard.c:396 + mov bx, strict word 00018h ; bb 18 00 ; 0xf502f keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5032 + mov es, ax ; 8e c0 ; 0xf5035 + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf5037 + mov dl, bl ; 88 da ; 0xf503a keyboard.c:49 + mov si, 00096h ; be 96 00 ; 0xf503c keyboard.c:48 + mov bh, byte [es:si] ; 26 8a 3c ; 0xf503f + mov byte [bp-006h], bh ; 88 7e fa ; 0xf5042 keyboard.c:49 + mov si, strict word 00017h ; be 17 00 ; 0xf5045 keyboard.c:48 + mov ah, byte [es:si] ; 26 8a 24 ; 0xf5048 + mov dh, ah ; 88 e6 ; 0xf504b keyboard.c:49 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf504d keyboard.c:404 + push CS ; 0e ; 0xf5050 + pop ES ; 07 ; 0xf5051 + mov cx, strict word 00012h ; b9 12 00 ; 0xf5052 + mov di, 04fd0h ; bf d0 4f ; 0xf5055 + repne scasb ; f2 ae ; 0xf5058 + sal cx, 1 ; d1 e1 ; 0xf505a + mov di, cx ; 89 cf ; 0xf505c + mov cx, word [cs:di+04fe1h] ; 2e 8b 8d e1 4f ; 0xf505e + jmp cx ; ff e1 ; 0xf5063 + xor dh, 040h ; 80 f6 40 ; 0xf5065 keyboard.c:406 + mov bx, strict word 00017h ; bb 17 00 ; 0xf5068 keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf506b + mov es, ax ; 8e c0 ; 0xf506e + mov byte [es:bx], dh ; 26 88 37 ; 0xf5070 + or dl, 040h ; 80 ca 40 ; 0xf5073 keyboard.c:408 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5076 keyboard.c:53 + jmp near 05257h ; e9 db 01 ; 0xf5079 + and dl, 0bfh ; 80 e2 bf ; 0xf507c keyboard.c:412 + mov bx, strict word 00018h ; bb 18 00 ; 0xf507f keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5082 + mov es, ax ; 8e c0 ; 0xf5085 + jmp near 05257h ; e9 cd 01 ; 0xf5087 + test byte [bp-006h], 002h ; f6 46 fa 02 ; 0xf508a keyboard.c:421 + jne short 050e9h ; 75 59 ; 0xf508e + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5090 keyboard.c:422 + and AL, strict byte 07fh ; 24 7f ; 0xf5093 + cmp AL, strict byte 02ah ; 3c 2a ; 0xf5095 + jne short 0509eh ; 75 05 ; 0xf5097 + mov ax, strict word 00002h ; b8 02 00 ; 0xf5099 + jmp short 050a1h ; eb 03 ; 0xf509c + mov ax, strict word 00001h ; b8 01 00 ; 0xf509e + test byte [bp-008h], 080h ; f6 46 f8 80 ; 0xf50a1 keyboard.c:423 + je short 050adh ; 74 06 ; 0xf50a5 + not al ; f6 d0 ; 0xf50a7 keyboard.c:424 + and dh, al ; 20 c6 ; 0xf50a9 + jmp short 050afh ; eb 02 ; 0xf50ab keyboard.c:425 + or dh, al ; 08 c6 ; 0xf50ad keyboard.c:426 + mov bx, strict word 00017h ; bb 17 00 ; 0xf50af keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf50b2 + mov es, ax ; 8e c0 ; 0xf50b5 + mov byte [es:bx], dh ; 26 88 37 ; 0xf50b7 + jmp short 050e9h ; eb 2d ; 0xf50ba keyboard.c:429 + test bh, 001h ; f6 c7 01 ; 0xf50bc keyboard.c:432 + jne short 0511ah ; 75 59 ; 0xf50bf + or dh, 004h ; 80 ce 04 ; 0xf50c1 keyboard.c:433 + mov ax, strict word 00040h ; b8 40 00 ; 0xf50c4 keyboard.c:51 + mov bx, si ; 89 f3 ; 0xf50c7 + mov es, ax ; 8e c0 ; 0xf50c9 keyboard.c:53 + mov byte [es:bx], dh ; 26 88 37 ; 0xf50cb + test byte [bp-006h], 002h ; f6 46 fa 02 ; 0xf50ce keyboard.c:435 + je short 050e0h ; 74 0c ; 0xf50d2 + or byte [bp-006h], 004h ; 80 4e fa 04 ; 0xf50d4 keyboard.c:436 + mov bx, 00096h ; bb 96 00 ; 0xf50d8 keyboard.c:51 + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf50db + jmp short 050e6h ; eb 06 ; 0xf50de keyboard.c:438 + or dl, 001h ; 80 ca 01 ; 0xf50e0 keyboard.c:439 + mov bx, strict word 00018h ; bb 18 00 ; 0xf50e3 keyboard.c:51 + mov byte [es:bx], dl ; 26 88 17 ; 0xf50e6 keyboard.c:53 + jmp short 0511ah ; eb 2f ; 0xf50e9 keyboard.c:443 + test bh, 001h ; f6 c7 01 ; 0xf50eb keyboard.c:445 + jne short 05144h ; 75 54 ; 0xf50ee + and dh, 0fbh ; 80 e6 fb ; 0xf50f0 keyboard.c:446 + mov ax, strict word 00040h ; b8 40 00 ; 0xf50f3 keyboard.c:53 + mov es, ax ; 8e c0 ; 0xf50f6 + mov byte [es:si], dh ; 26 88 34 ; 0xf50f8 + test bh, 002h ; f6 c7 02 ; 0xf50fb keyboard.c:448 + je short 05111h ; 74 11 ; 0xf50fe + and bh, 0fbh ; 80 e7 fb ; 0xf5100 keyboard.c:449 + mov byte [bp-006h], bh ; 88 7e fa ; 0xf5103 + mov bx, 00096h ; bb 96 00 ; 0xf5106 keyboard.c:53 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5109 + mov byte [es:bx], al ; 26 88 07 ; 0xf510c + jmp short 05144h ; eb 33 ; 0xf510f keyboard.c:451 + and dl, 0feh ; 80 e2 fe ; 0xf5111 keyboard.c:452 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5114 keyboard.c:53 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5117 + jmp short 05144h ; eb 28 ; 0xf511a keyboard.c:456 + or dh, 008h ; 80 ce 08 ; 0xf511c keyboard.c:459 + mov ax, strict word 00040h ; b8 40 00 ; 0xf511f keyboard.c:51 + mov bx, si ; 89 f3 ; 0xf5122 + mov es, ax ; 8e c0 ; 0xf5124 keyboard.c:53 + mov byte [es:bx], dh ; 26 88 37 ; 0xf5126 + test byte [bp-006h], 002h ; f6 46 fa 02 ; 0xf5129 keyboard.c:461 + je short 0513bh ; 74 0c ; 0xf512d + or byte [bp-006h], 008h ; 80 4e fa 08 ; 0xf512f keyboard.c:462 + mov bx, 00096h ; bb 96 00 ; 0xf5133 keyboard.c:51 + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf5136 + jmp short 05141h ; eb 06 ; 0xf5139 keyboard.c:464 + or dl, 002h ; 80 ca 02 ; 0xf513b keyboard.c:465 + mov bx, strict word 00018h ; bb 18 00 ; 0xf513e keyboard.c:51 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5141 keyboard.c:53 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5144 keyboard.c:468 + and AL, strict byte 07fh ; 24 7f ; 0xf5147 + cmp AL, strict byte 01dh ; 3c 1d ; 0xf5149 + je short 05151h ; 74 04 ; 0xf514b + and byte [bp-006h], 0feh ; 80 66 fa fe ; 0xf514d + and byte [bp-006h], 0fdh ; 80 66 fa fd ; 0xf5151 + mov bx, 00096h ; bb 96 00 ; 0xf5155 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5158 + mov es, ax ; 8e c0 ; 0xf515b + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf515d + mov byte [es:bx], al ; 26 88 07 ; 0xf5160 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf5163 + pop di ; 5f ; 0xf5166 + pop si ; 5e ; 0xf5167 + pop bp ; 5d ; 0xf5168 + retn ; c3 ; 0xf5169 + and dh, 0f7h ; 80 e6 f7 ; 0xf516a keyboard.c:470 + mov ax, strict word 00040h ; b8 40 00 ; 0xf516d keyboard.c:53 + mov es, ax ; 8e c0 ; 0xf5170 + mov byte [es:si], dh ; 26 88 34 ; 0xf5172 + test bh, 002h ; f6 c7 02 ; 0xf5175 keyboard.c:472 + je short 05182h ; 74 08 ; 0xf5178 + and bh, 0f7h ; 80 e7 f7 ; 0xf517a keyboard.c:473 + mov byte [bp-006h], bh ; 88 7e fa ; 0xf517d + jmp short 05106h ; eb 84 ; 0xf5180 keyboard.c:474 + and dl, 0fdh ; 80 e2 fd ; 0xf5182 keyboard.c:476 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5185 keyboard.c:53 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5188 + jmp short 05144h ; eb b7 ; 0xf518b keyboard.c:479 + test bh, 003h ; f6 c7 03 ; 0xf518d keyboard.c:482 + jne short 051a6h ; 75 14 ; 0xf5190 + or dl, 020h ; 80 ca 20 ; 0xf5192 keyboard.c:484 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5195 keyboard.c:51 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5198 + mov es, ax ; 8e c0 ; 0xf519b keyboard.c:53 + mov byte [es:bx], dl ; 26 88 17 ; 0xf519d + xor dh, 020h ; 80 f6 20 ; 0xf51a0 keyboard.c:486 + jmp near 0522bh ; e9 85 00 ; 0xf51a3 keyboard.c:487 + or dl, 008h ; 80 ca 08 ; 0xf51a6 keyboard.c:490 + mov ax, strict word 00040h ; b8 40 00 ; 0xf51a9 keyboard.c:51 + mov es, ax ; 8e c0 ; 0xf51ac + mov bx, strict word 00018h ; bb 18 00 ; 0xf51ae + mov byte [es:bx], dl ; 26 88 17 ; 0xf51b1 keyboard.c:53 + mov ax, 000aeh ; b8 ae 00 ; 0xf51b4 keyboard.c:494 + mov dx, strict word 00064h ; ba 64 00 ; 0xf51b7 + out DX, AL ; ee ; 0xf51ba + call 0e034h ; e8 76 8e ; 0xf51bb keyboard.c:495 + mov bx, strict word 00018h ; bb 18 00 ; 0xf51be keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf51c1 + mov es, ax ; 8e c0 ; 0xf51c4 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf51c6 + test AL, strict byte 008h ; a8 08 ; 0xf51c9 keyboard.c:49 + jne short 051beh ; 75 f1 ; 0xf51cb + jmp near 05144h ; e9 74 ff ; 0xf51cd keyboard.c:502 + test bh, 003h ; f6 c7 03 ; 0xf51d0 keyboard.c:504 + je short 051d8h ; 74 03 ; 0xf51d3 + jmp near 05144h ; e9 6c ff ; 0xf51d5 + and dl, 0dfh ; 80 e2 df ; 0xf51d8 keyboard.c:505 + mov bx, strict word 00018h ; bb 18 00 ; 0xf51db keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf51de + mov es, ax ; 8e c0 ; 0xf51e1 + mov byte [es:bx], dl ; 26 88 17 ; 0xf51e3 + jmp short 051d5h ; eb ed ; 0xf51e6 keyboard.c:508 + test bh, 002h ; f6 c7 02 ; 0xf51e8 keyboard.c:511 + je short 0521ah ; 74 2d ; 0xf51eb + mov ax, strict word 00040h ; b8 40 00 ; 0xf51ed keyboard.c:56 + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf51f0 + mov es, ax ; 8e c0 ; 0xf51f3 keyboard.c:58 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf51f5 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf51f8 keyboard.c:61 + mov word [es:bx], ax ; 26 89 07 ; 0xf51fb keyboard.c:63 + mov bx, strict word 00071h ; bb 71 00 ; 0xf51fe keyboard.c:51 + mov AL, strict byte 080h ; b0 80 ; 0xf5201 + mov byte [es:bx], al ; 26 88 07 ; 0xf5203 keyboard.c:53 + mov ax, 000aeh ; b8 ae 00 ; 0xf5206 keyboard.c:516 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5209 + out DX, AL ; ee ; 0xf520c + push bp ; 55 ; 0xf520d keyboard.c:517 + int 01bh ; cd 1b ; 0xf520e + pop bp ; 5d ; 0xf5210 + xor dx, dx ; 31 d2 ; 0xf5211 keyboard.c:518 + xor ax, ax ; 31 c0 ; 0xf5213 + call 04f7dh ; e8 65 fd ; 0xf5215 + jmp short 051d5h ; eb bb ; 0xf5218 keyboard.c:519 + or dl, 010h ; 80 ca 10 ; 0xf521a keyboard.c:520 + mov ax, strict word 00040h ; b8 40 00 ; 0xf521d keyboard.c:51 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5220 + mov es, ax ; 8e c0 ; 0xf5223 keyboard.c:53 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5225 + xor dh, 010h ; 80 f6 10 ; 0xf5228 keyboard.c:522 + mov bx, si ; 89 f3 ; 0xf522b keyboard.c:51 + mov byte [es:bx], dh ; 26 88 37 ; 0xf522d keyboard.c:53 + jmp short 051d5h ; eb a3 ; 0xf5230 keyboard.c:525 + test bh, 002h ; f6 c7 02 ; 0xf5232 keyboard.c:528 + jne short 051d5h ; 75 9e ; 0xf5235 + and dl, 0efh ; 80 e2 ef ; 0xf5237 keyboard.c:529 + mov bx, strict word 00018h ; bb 18 00 ; 0xf523a keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf523d + mov es, ax ; 8e c0 ; 0xf5240 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5242 + jmp short 051d5h ; eb 8e ; 0xf5245 keyboard.c:532 + test bl, 004h ; f6 c3 04 ; 0xf5247 keyboard.c:535 + jne short 051d5h ; 75 89 ; 0xf524a + or dl, 004h ; 80 ca 04 ; 0xf524c keyboard.c:536 + mov bx, strict word 00018h ; bb 18 00 ; 0xf524f keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5252 + mov es, ax ; 8e c0 ; 0xf5255 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5257 + jmp near 05144h ; e9 e7 fe ; 0xf525a keyboard.c:540 + and dl, 0fbh ; 80 e2 fb ; 0xf525d keyboard.c:543 + jmp short 0524fh ; eb ed ; 0xf5260 keyboard.c:544 + mov al, ah ; 88 e0 ; 0xf5262 keyboard.c:549 + and AL, strict byte 00ch ; 24 0c ; 0xf5264 + cmp AL, strict byte 00ch ; 3c 0c ; 0xf5266 + jne short 0527dh ; 75 13 ; 0xf5268 + mov ax, strict word 00040h ; b8 40 00 ; 0xf526a keyboard.c:61 + mov bx, strict word 00072h ; bb 72 00 ; 0xf526d + mov cx, 01234h ; b9 34 12 ; 0xf5270 + mov es, ax ; 8e c0 ; 0xf5273 keyboard.c:63 + mov word [es:bx], cx ; 26 89 0f ; 0xf5275 + jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xf5278 keyboard.c:552 + test dl, 008h ; f6 c2 08 ; 0xf527d keyboard.c:558 + je short 05293h ; 74 11 ; 0xf5280 + and dl, 0f7h ; 80 e2 f7 ; 0xf5282 keyboard.c:560 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5285 keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5288 + mov es, ax ; 8e c0 ; 0xf528b + mov byte [es:bx], dl ; 26 88 17 ; 0xf528d + jmp near 05163h ; e9 d0 fe ; 0xf5290 keyboard.c:562 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5293 keyboard.c:565 + test AL, strict byte 080h ; a8 80 ; 0xf5296 + je short 052c8h ; 74 2e ; 0xf5298 + cmp AL, strict byte 0fah ; 3c fa ; 0xf529a keyboard.c:567 + jne short 052aeh ; 75 10 ; 0xf529c + mov bx, 00097h ; bb 97 00 ; 0xf529e keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf52a1 + mov es, ax ; 8e c0 ; 0xf52a4 + mov ah, byte [es:bx] ; 26 8a 27 ; 0xf52a6 + or ah, 010h ; 80 cc 10 ; 0xf52a9 keyboard.c:49 + jmp short 052c3h ; eb 15 ; 0xf52ac keyboard.c:570 + cmp AL, strict byte 0feh ; 3c fe ; 0xf52ae + je short 052b5h ; 74 03 ; 0xf52b0 + jmp near 05144h ; e9 8f fe ; 0xf52b2 + mov bx, 00097h ; bb 97 00 ; 0xf52b5 keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf52b8 + mov es, ax ; 8e c0 ; 0xf52bb + mov ah, byte [es:bx] ; 26 8a 27 ; 0xf52bd + or ah, 020h ; 80 cc 20 ; 0xf52c0 keyboard.c:49 + mov byte [es:bx], ah ; 26 88 27 ; 0xf52c3 keyboard.c:53 + jmp short 052b2h ; eb ea ; 0xf52c6 keyboard.c:574 + cmp byte [bp-008h], 058h ; 80 7e f8 58 ; 0xf52c8 keyboard.c:576 + jbe short 052edh ; 76 1f ; 0xf52cc + mov bx, 00dcch ; bb cc 0d ; 0xf52ce keyboard.c:577 + mov cx, ds ; 8c d9 ; 0xf52d1 + mov ax, strict word 00004h ; b8 04 00 ; 0xf52d3 + call 01910h ; e8 37 c6 ; 0xf52d6 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf52d9 + xor ah, ah ; 30 e4 ; 0xf52dc + push ax ; 50 ; 0xf52de + push 005e7h ; 68 e7 05 ; 0xf52df + push strict byte 00004h ; 6a 04 ; 0xf52e2 + call 01953h ; e8 6c c6 ; 0xf52e4 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf52e7 + jmp near 05163h ; e9 76 fe ; 0xf52ea keyboard.c:578 + test dh, 008h ; f6 c6 08 ; 0xf52ed keyboard.c:580 + je short 05305h ; 74 13 ; 0xf52f0 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf52f2 keyboard.c:581 + xor bh, bh ; 30 ff ; 0xf52f5 + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf52f7 + mov dl, byte [bx+00e20h] ; 8a 97 20 0e ; 0xf52fa + mov ax, word [bx+00e20h] ; 8b 87 20 0e ; 0xf52fe keyboard.c:582 + jmp near 05399h ; e9 94 00 ; 0xf5302 keyboard.c:583 + test dh, 004h ; f6 c6 04 ; 0xf5305 + je short 0531dh ; 74 13 ; 0xf5308 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf530a keyboard.c:584 + xor bh, bh ; 30 ff ; 0xf530d + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf530f + mov dl, byte [bx+00e1eh] ; 8a 97 1e 0e ; 0xf5312 + mov ax, word [bx+00e1eh] ; 8b 87 1e 0e ; 0xf5316 keyboard.c:585 + jmp near 05399h ; e9 7c 00 ; 0xf531a keyboard.c:586 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf531d + and AL, strict byte 002h ; 24 02 ; 0xf5320 + test al, al ; 84 c0 ; 0xf5322 + jbe short 0533ch ; 76 16 ; 0xf5324 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5326 + cmp AL, strict byte 047h ; 3c 47 ; 0xf5329 + jc short 0533ch ; 72 0f ; 0xf532b + cmp AL, strict byte 053h ; 3c 53 ; 0xf532d + jnbe short 0533ch ; 77 0b ; 0xf532f + mov DL, strict byte 0e0h ; b2 e0 ; 0xf5331 keyboard.c:588 + mov bl, al ; 88 c3 ; 0xf5333 keyboard.c:589 + xor bh, bh ; 30 ff ; 0xf5335 + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf5337 + jmp short 05395h ; eb 59 ; 0xf533a keyboard.c:590 + test dh, 003h ; f6 c6 03 ; 0xf533c + je short 05371h ; 74 30 ; 0xf533f + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf5341 keyboard.c:594 + xor bh, bh ; 30 ff ; 0xf5344 + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf5346 + mov cl, byte [bx+00e22h] ; 8a 8f 22 0e ; 0xf5349 + xor ch, ch ; 30 ed ; 0xf534d + mov al, dh ; 88 f0 ; 0xf534f + xor ah, ah ; 30 e4 ; 0xf5351 + test ax, cx ; 85 c8 ; 0xf5353 + je short 05361h ; 74 0a ; 0xf5355 + mov dl, byte [bx+00e1ah] ; 8a 97 1a 0e ; 0xf5357 keyboard.c:595 + mov ax, word [bx+00e1ah] ; 8b 87 1a 0e ; 0xf535b keyboard.c:596 + jmp short 05369h ; eb 08 ; 0xf535f keyboard.c:597 + mov dl, byte [bx+00e1ch] ; 8a 97 1c 0e ; 0xf5361 keyboard.c:598 + mov ax, word [bx+00e1ch] ; 8b 87 1c 0e ; 0xf5365 keyboard.c:599 + shr ax, 008h ; c1 e8 08 ; 0xf5369 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf536c + jmp short 0539fh ; eb 2e ; 0xf536f keyboard.c:601 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf5371 keyboard.c:603 + xor bh, bh ; 30 ff ; 0xf5374 + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf5376 + mov al, byte [bx+00e22h] ; 8a 87 22 0e ; 0xf5379 + xor ah, ah ; 30 e4 ; 0xf537d + mov dl, dh ; 88 f2 ; 0xf537f + xor dh, dh ; 30 f6 ; 0xf5381 + test dx, ax ; 85 c2 ; 0xf5383 + je short 05391h ; 74 0a ; 0xf5385 + mov dl, byte [bx+00e1ch] ; 8a 97 1c 0e ; 0xf5387 keyboard.c:604 + mov ax, word [bx+00e1ch] ; 8b 87 1c 0e ; 0xf538b keyboard.c:605 + jmp short 05399h ; eb 08 ; 0xf538f keyboard.c:606 + mov dl, byte [bx+00e1ah] ; 8a 97 1a 0e ; 0xf5391 keyboard.c:607 + mov ax, word [bx+00e1ah] ; 8b 87 1a 0e ; 0xf5395 keyboard.c:608 + shr ax, 008h ; c1 e8 08 ; 0xf5399 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf539c + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf539f keyboard.c:611 + jne short 053bfh ; 75 1a ; 0xf53a3 + test dl, dl ; 84 d2 ; 0xf53a5 + jne short 053bfh ; 75 16 ; 0xf53a7 + mov bx, 00dcch ; bb cc 0d ; 0xf53a9 keyboard.c:612 + mov cx, ds ; 8c d9 ; 0xf53ac + mov ax, strict word 00004h ; b8 04 00 ; 0xf53ae + call 01910h ; e8 5c c5 ; 0xf53b1 + push 0061eh ; 68 1e 06 ; 0xf53b4 + push strict byte 00004h ; 6a 04 ; 0xf53b7 + call 01953h ; e8 97 c5 ; 0xf53b9 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf53bc + xor dh, dh ; 30 f6 ; 0xf53bf keyboard.c:614 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf53c1 + xor ah, ah ; 30 e4 ; 0xf53c4 + jmp near 05215h ; e9 4c fe ; 0xf53c6 + ; disGetNextSymbol 0xf53c9 LB 0x598f -> off=0x0 cb=000000000000006c uValue=00000000000f3dc9 'dequeue_key' +dequeue_key: ; 0xf53c9 LB 0x6c + push si ; 56 ; 0xf53c9 keyboard.c:624 + push di ; 57 ; 0xf53ca + enter 00002h, 000h ; c8 02 00 00 ; 0xf53cb + push ax ; 50 ; 0xf53cf + push dx ; 52 ; 0xf53d0 + mov si, bx ; 89 de ; 0xf53d1 + mov bx, 00080h ; bb 80 00 ; 0xf53d3 keyboard.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf53d6 + mov es, ax ; 8e c0 ; 0xf53d9 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf53db + mov word [bp-002h], ax ; 89 46 fe ; 0xf53de + mov bx, 00082h ; bb 82 00 ; 0xf53e1 keyboard.c:58 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf53e4 + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf53e7 keyboard.c:58 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf53ea + mov di, strict word 0001ch ; bf 1c 00 ; 0xf53ed keyboard.c:58 + mov ax, word [es:di] ; 26 8b 05 ; 0xf53f0 + cmp bx, ax ; 39 c3 ; 0xf53f3 keyboard.c:640 + je short 0542dh ; 74 36 ; 0xf53f5 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf53f7 keyboard.c:48 + lea di, [bx+001h] ; 8d 7f 01 ; 0xf53fa keyboard.c:642 + mov ah, byte [es:di] ; 26 8a 25 ; 0xf53fd keyboard.c:48 + mov es, cx ; 8e c1 ; 0xf5400 keyboard.c:643 + mov byte [es:si], al ; 26 88 04 ; 0xf5402 + mov es, [bp-006h] ; 8e 46 fa ; 0xf5405 keyboard.c:644 + mov si, word [bp-004h] ; 8b 76 fc ; 0xf5408 + mov byte [es:si], ah ; 26 88 24 ; 0xf540b + cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf540e keyboard.c:647 + je short 05428h ; 74 14 ; 0xf5412 + inc bx ; 43 ; 0xf5414 keyboard.c:648 + inc bx ; 43 ; 0xf5415 + cmp bx, dx ; 39 d3 ; 0xf5416 keyboard.c:649 + jc short 0541dh ; 72 03 ; 0xf5418 + mov bx, word [bp-002h] ; 8b 5e fe ; 0xf541a keyboard.c:650 + mov si, strict word 0001ah ; be 1a 00 ; 0xf541d keyboard.c:63 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5420 + mov es, ax ; 8e c0 ; 0xf5423 + mov word [es:si], bx ; 26 89 1c ; 0xf5425 + mov ax, strict word 00001h ; b8 01 00 ; 0xf5428 keyboard.c:653 + jmp short 0542fh ; eb 02 ; 0xf542b + xor ax, ax ; 31 c0 ; 0xf542d keyboard.c:656 + leave ; c9 ; 0xf542f keyboard.c:658 + pop di ; 5f ; 0xf5430 + pop si ; 5e ; 0xf5431 + retn 00002h ; c2 02 00 ; 0xf5432 + ; disGetNextSymbol 0xf5435 LB 0x5923 -> off=0x23 cb=00000000000002ee uValue=00000000000f3e58 'int16_function' + db 0a2h, 092h, 012h, 011h, 010h, 00ah, 009h, 005h, 002h, 001h, 000h, 059h, 055h, 010h, 055h, 0a3h + db 055h, 0f0h, 055h, 003h, 056h, 02ch, 056h, 035h, 056h, 0a6h, 056h, 0d8h, 056h, 008h, 057h, 03bh + db 057h, 09ch, 055h +int16_function: ; 0xf5458 LB 0x2ee + push bp ; 55 ; 0xf5458 keyboard.c:675 + mov bp, sp ; 89 e5 ; 0xf5459 + push si ; 56 ; 0xf545b + push di ; 57 ; 0xf545c + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf545d + mov bx, strict word 00017h ; bb 17 00 ; 0xf5460 keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5463 + mov es, ax ; 8e c0 ; 0xf5466 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf5468 + mov bl, al ; 88 c3 ; 0xf546b keyboard.c:49 + mov si, 00097h ; be 97 00 ; 0xf546d keyboard.c:48 + mov dl, byte [es:si] ; 26 8a 14 ; 0xf5470 + mov bh, dl ; 88 d7 ; 0xf5473 keyboard.c:49 + xor ah, ah ; 30 e4 ; 0xf5475 keyboard.c:684 + mov cx, ax ; 89 c1 ; 0xf5477 + sar cx, 004h ; c1 f9 04 ; 0xf5479 + and cl, 007h ; 80 e1 07 ; 0xf547c + mov al, dl ; 88 d0 ; 0xf547f + and AL, strict byte 007h ; 24 07 ; 0xf5481 + xor al, cl ; 30 c8 ; 0xf5483 + test ax, ax ; 85 c0 ; 0xf5485 + je short 054f0h ; 74 67 ; 0xf5487 + cli ; fa ; 0xf5489 keyboard.c:685 + mov AL, strict byte 0edh ; b0 ed ; 0xf548a keyboard.c:686 + mov dx, strict word 00060h ; ba 60 00 ; 0xf548c + out DX, AL ; ee ; 0xf548f + mov dx, strict word 00064h ; ba 64 00 ; 0xf5490 keyboard.c:687 + in AL, DX ; ec ; 0xf5493 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5494 + test AL, strict byte 001h ; a8 01 ; 0xf5496 + jne short 054a2h ; 75 08 ; 0xf5498 + mov AL, strict byte 021h ; b0 21 ; 0xf549a + mov dx, 00080h ; ba 80 00 ; 0xf549c + out DX, AL ; ee ; 0xf549f + jmp short 05490h ; eb ee ; 0xf54a0 + mov dx, strict word 00060h ; ba 60 00 ; 0xf54a2 keyboard.c:688 + in AL, DX ; ec ; 0xf54a5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf54a6 + cmp ax, 000fah ; 3d fa 00 ; 0xf54a8 + jne short 054efh ; 75 42 ; 0xf54ab + mov dl, bh ; 88 fa ; 0xf54ad keyboard.c:689 + and dl, 0c8h ; 80 e2 c8 ; 0xf54af + mov al, bl ; 88 d8 ; 0xf54b2 keyboard.c:690 + xor ah, ah ; 30 e4 ; 0xf54b4 + mov cx, ax ; 89 c1 ; 0xf54b6 + sar cx, 004h ; c1 f9 04 ; 0xf54b8 + and cl, 007h ; 80 e1 07 ; 0xf54bb + xor dh, dh ; 30 f6 ; 0xf54be + mov ax, dx ; 89 d0 ; 0xf54c0 + or al, cl ; 08 c8 ; 0xf54c2 + mov bh, al ; 88 c7 ; 0xf54c4 + and AL, strict byte 007h ; 24 07 ; 0xf54c6 keyboard.c:691 + mov dx, strict word 00060h ; ba 60 00 ; 0xf54c8 + out DX, AL ; ee ; 0xf54cb + mov dx, strict word 00064h ; ba 64 00 ; 0xf54cc keyboard.c:692 + in AL, DX ; ec ; 0xf54cf + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf54d0 + test AL, strict byte 001h ; a8 01 ; 0xf54d2 + jne short 054deh ; 75 08 ; 0xf54d4 + mov AL, strict byte 021h ; b0 21 ; 0xf54d6 keyboard.c:693 + mov dx, 00080h ; ba 80 00 ; 0xf54d8 + out DX, AL ; ee ; 0xf54db + jmp short 054cch ; eb ee ; 0xf54dc + mov dx, strict word 00060h ; ba 60 00 ; 0xf54de keyboard.c:694 + in AL, DX ; ec ; 0xf54e1 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf54e2 + mov si, 00097h ; be 97 00 ; 0xf54e4 keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf54e7 + mov es, ax ; 8e c0 ; 0xf54ea + mov byte [es:si], bh ; 26 88 3c ; 0xf54ec + sti ; fb ; 0xf54ef keyboard.c:697 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf54f0 keyboard.c:700 + shr ax, 008h ; c1 e8 08 ; 0xf54f3 + cmp ax, 000a2h ; 3d a2 00 ; 0xf54f6 + jnbe short 05559h ; 77 5e ; 0xf54f9 + push CS ; 0e ; 0xf54fb + pop ES ; 07 ; 0xf54fc + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf54fd + mov di, 05435h ; bf 35 54 ; 0xf5500 + repne scasb ; f2 ae ; 0xf5503 + sal cx, 1 ; d1 e1 ; 0xf5505 + mov di, cx ; 89 cf ; 0xf5507 + mov ax, word [cs:di+05440h] ; 2e 8b 85 40 54 ; 0xf5509 + jmp ax ; ff e0 ; 0xf550e + push strict byte 00001h ; 6a 01 ; 0xf5510 keyboard.c:702 + mov cx, ss ; 8c d1 ; 0xf5512 + lea bx, [bp-006h] ; 8d 5e fa ; 0xf5514 + mov dx, ss ; 8c d2 ; 0xf5517 + lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5519 + call 053c9h ; e8 aa fe ; 0xf551c + test ax, ax ; 85 c0 ; 0xf551f + jne short 0552eh ; 75 0b ; 0xf5521 + push 00655h ; 68 55 06 ; 0xf5523 keyboard.c:703 + push strict byte 00007h ; 6a 07 ; 0xf5526 + call 01953h ; e8 28 c4 ; 0xf5528 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf552b + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf552e keyboard.c:705 + je short 0553ah ; 74 06 ; 0xf5532 + cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf5534 + je short 05540h ; 74 06 ; 0xf5538 + cmp byte [bp-006h], 0e0h ; 80 7e fa e0 ; 0xf553a keyboard.c:707 + jne short 05544h ; 75 04 ; 0xf553e + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf5540 keyboard.c:708 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf5544 keyboard.c:709 + xor ah, ah ; 30 e4 ; 0xf5547 + mov dx, ax ; 89 c2 ; 0xf5549 + sal dx, 008h ; c1 e2 08 ; 0xf554b + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf554e + or dx, ax ; 09 c2 ; 0xf5551 + mov word [bp+012h], dx ; 89 56 12 ; 0xf5553 + jmp near 0559ch ; e9 43 00 ; 0xf5556 keyboard.c:710 + mov bx, 00dcch ; bb cc 0d ; 0xf5559 + mov cx, ds ; 8c d9 ; 0xf555c + mov ax, strict word 00004h ; b8 04 00 ; 0xf555e + call 01910h ; e8 ac c3 ; 0xf5561 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5564 + shr ax, 008h ; c1 e8 08 ; 0xf5567 + push ax ; 50 ; 0xf556a + push 00679h ; 68 79 06 ; 0xf556b + push strict byte 00004h ; 6a 04 ; 0xf556e + call 01953h ; e8 e0 c3 ; 0xf5570 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf5573 + mov bx, 00dcch ; bb cc 0d ; 0xf5576 + mov cx, ds ; 8c d9 ; 0xf5579 + mov ax, strict word 00004h ; b8 04 00 ; 0xf557b + call 01910h ; e8 8f c3 ; 0xf557e + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5581 + push ax ; 50 ; 0xf5584 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5585 + push ax ; 50 ; 0xf5588 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf5589 + push ax ; 50 ; 0xf558c + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf558d + push ax ; 50 ; 0xf5590 + push 006a1h ; 68 a1 06 ; 0xf5591 + push strict byte 00004h ; 6a 04 ; 0xf5594 + call 01953h ; e8 ba c3 ; 0xf5596 + add sp, strict byte 0000ch ; 83 c4 0c ; 0xf5599 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf559c + pop di ; 5f ; 0xf559f + pop si ; 5e ; 0xf55a0 + pop bp ; 5d ; 0xf55a1 + retn ; c3 ; 0xf55a2 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf55a3 keyboard.c:714 + mov word [bp+01eh], ax ; 89 46 1e ; 0xf55a6 + push strict byte 00000h ; 6a 00 ; 0xf55a9 keyboard.c:715 + mov cx, ss ; 8c d1 ; 0xf55ab + lea bx, [bp-006h] ; 8d 5e fa ; 0xf55ad + mov dx, ss ; 8c d2 ; 0xf55b0 + lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf55b2 + call 053c9h ; e8 11 fe ; 0xf55b5 + test ax, ax ; 85 c0 ; 0xf55b8 + jne short 055c2h ; 75 06 ; 0xf55ba + or word [bp+01eh], strict byte 00040h ; 83 4e 1e 40 ; 0xf55bc keyboard.c:716 + jmp short 0559ch ; eb da ; 0xf55c0 keyboard.c:717 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf55c2 keyboard.c:719 + je short 055ceh ; 74 06 ; 0xf55c6 + cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf55c8 + je short 055d4h ; 74 06 ; 0xf55cc + cmp byte [bp-006h], 0e0h ; 80 7e fa e0 ; 0xf55ce keyboard.c:721 + jne short 055d8h ; 75 04 ; 0xf55d2 + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf55d4 keyboard.c:722 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf55d8 keyboard.c:723 + xor ah, ah ; 30 e4 ; 0xf55db + mov dx, ax ; 89 c2 ; 0xf55dd + sal dx, 008h ; c1 e2 08 ; 0xf55df + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf55e2 + or dx, ax ; 09 c2 ; 0xf55e5 + mov word [bp+012h], dx ; 89 56 12 ; 0xf55e7 + and word [bp+01eh], strict byte 0ffbfh ; 83 66 1e bf ; 0xf55ea keyboard.c:724 + jmp short 0559ch ; eb ac ; 0xf55ee keyboard.c:725 + mov bx, strict word 00017h ; bb 17 00 ; 0xf55f0 keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf55f3 + mov es, ax ; 8e c0 ; 0xf55f6 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf55f8 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf55fb keyboard.c:729 + mov dl, al ; 88 c2 ; 0xf55fe + jmp near 05553h ; e9 50 ff ; 0xf5600 + mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf5603 keyboard.c:733 + xor dh, dh ; 30 f6 ; 0xf5606 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5608 + shr ax, 008h ; c1 e8 08 ; 0xf560b + xor ah, ah ; 30 e4 ; 0xf560e + call 04f7dh ; e8 6a f9 ; 0xf5610 + test ax, ax ; 85 c0 ; 0xf5613 + jne short 05624h ; 75 0d ; 0xf5615 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5617 keyboard.c:734 + xor al, al ; 30 c0 ; 0xf561a + or AL, strict byte 001h ; 0c 01 ; 0xf561c + mov word [bp+012h], ax ; 89 46 12 ; 0xf561e + jmp near 0559ch ; e9 78 ff ; 0xf5621 keyboard.c:736 + and word [bp+012h], 0ff00h ; 81 66 12 00 ff ; 0xf5624 keyboard.c:737 + jmp near 0559ch ; e9 70 ff ; 0xf5629 keyboard.c:739 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf562c keyboard.c:752 + xor al, al ; 30 c0 ; 0xf562f + or AL, strict byte 030h ; 0c 30 ; 0xf5631 + jmp short 0561eh ; eb e9 ; 0xf5633 + mov byte [bp-008h], 002h ; c6 46 f8 02 ; 0xf5635 keyboard.c:756 + xor cx, cx ; 31 c9 ; 0xf5639 keyboard.c:757 + cli ; fa ; 0xf563b keyboard.c:759 + mov AL, strict byte 0f2h ; b0 f2 ; 0xf563c keyboard.c:760 + mov dx, strict word 00060h ; ba 60 00 ; 0xf563e + out DX, AL ; ee ; 0xf5641 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf5642 keyboard.c:762 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5645 keyboard.c:763 + in AL, DX ; ec ; 0xf5648 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5649 + test AL, strict byte 001h ; a8 01 ; 0xf564b + jne short 0565ch ; 75 0d ; 0xf564d + dec bx ; 4b ; 0xf564f + test bx, bx ; 85 db ; 0xf5650 + jbe short 0565ch ; 76 08 ; 0xf5652 + mov dx, 00080h ; ba 80 00 ; 0xf5654 keyboard.c:764 + in AL, DX ; ec ; 0xf5657 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5658 + jmp short 05645h ; eb e9 ; 0xf565a + test bx, bx ; 85 db ; 0xf565c keyboard.c:765 + jbe short 056a0h ; 76 40 ; 0xf565e + mov dx, strict word 00060h ; ba 60 00 ; 0xf5660 keyboard.c:766 + in AL, DX ; ec ; 0xf5663 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5664 + cmp ax, 000fah ; 3d fa 00 ; 0xf5666 + jne short 056a0h ; 75 35 ; 0xf5669 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf566b keyboard.c:768 + mov dx, strict word 00064h ; ba 64 00 ; 0xf566e keyboard.c:769 + in AL, DX ; ec ; 0xf5671 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5672 + test AL, strict byte 001h ; a8 01 ; 0xf5674 + jne short 05685h ; 75 0d ; 0xf5676 + dec bx ; 4b ; 0xf5678 + test bx, bx ; 85 db ; 0xf5679 + jbe short 05685h ; 76 08 ; 0xf567b + mov dx, 00080h ; ba 80 00 ; 0xf567d keyboard.c:770 + in AL, DX ; ec ; 0xf5680 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5681 + jmp short 0566eh ; eb e9 ; 0xf5683 + test bx, bx ; 85 db ; 0xf5685 keyboard.c:771 + jbe short 05697h ; 76 0e ; 0xf5687 + shr cx, 008h ; c1 e9 08 ; 0xf5689 keyboard.c:772 + mov dx, strict word 00060h ; ba 60 00 ; 0xf568c keyboard.c:773 + in AL, DX ; ec ; 0xf568f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5690 + sal ax, 008h ; c1 e0 08 ; 0xf5692 + or cx, ax ; 09 c1 ; 0xf5695 + dec byte [bp-008h] ; fe 4e f8 ; 0xf5697 keyboard.c:775 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf569a + jnbe short 0566bh ; 77 cb ; 0xf569e + mov word [bp+00ch], cx ; 89 4e 0c ; 0xf56a0 keyboard.c:778 + jmp near 0559ch ; e9 f6 fe ; 0xf56a3 keyboard.c:779 + push strict byte 00001h ; 6a 01 ; 0xf56a6 keyboard.c:782 + mov cx, ss ; 8c d1 ; 0xf56a8 + lea bx, [bp-006h] ; 8d 5e fa ; 0xf56aa + mov dx, ss ; 8c d2 ; 0xf56ad + lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf56af + call 053c9h ; e8 14 fd ; 0xf56b2 + test ax, ax ; 85 c0 ; 0xf56b5 + jne short 056c4h ; 75 0b ; 0xf56b7 + push 00655h ; 68 55 06 ; 0xf56b9 keyboard.c:783 + push strict byte 00007h ; 6a 07 ; 0xf56bc + call 01953h ; e8 92 c2 ; 0xf56be + add sp, strict byte 00004h ; 83 c4 04 ; 0xf56c1 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf56c4 keyboard.c:785 + jne short 056cdh ; 75 03 ; 0xf56c8 + jmp near 05544h ; e9 77 fe ; 0xf56ca + cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf56cd + jne short 056d6h ; 75 03 ; 0xf56d1 + jmp near 05540h ; e9 6a fe ; 0xf56d3 + jmp short 056cah ; eb f2 ; 0xf56d6 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf56d8 keyboard.c:792 + mov word [bp+01eh], ax ; 89 46 1e ; 0xf56db + push strict byte 00000h ; 6a 00 ; 0xf56de keyboard.c:793 + mov cx, ss ; 8c d1 ; 0xf56e0 + lea bx, [bp-006h] ; 8d 5e fa ; 0xf56e2 + mov dx, ss ; 8c d2 ; 0xf56e5 + lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf56e7 + call 053c9h ; e8 dc fc ; 0xf56ea + test ax, ax ; 85 c0 ; 0xf56ed + jne short 056f4h ; 75 03 ; 0xf56ef + jmp near 055bch ; e9 c8 fe ; 0xf56f1 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf56f4 keyboard.c:797 + jne short 056fdh ; 75 03 ; 0xf56f8 + jmp near 055d8h ; e9 db fe ; 0xf56fa + cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf56fd + jne short 05706h ; 75 03 ; 0xf5701 + jmp near 055d4h ; e9 ce fe ; 0xf5703 + jmp short 056fah ; eb f2 ; 0xf5706 + mov bx, strict word 00017h ; bb 17 00 ; 0xf5708 keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf570b + mov es, ax ; 8e c0 ; 0xf570e + mov al, byte [es:bx] ; 26 8a 07 ; 0xf5710 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5713 keyboard.c:805 + mov dl, al ; 88 c2 ; 0xf5716 + mov word [bp+012h], dx ; 89 56 12 ; 0xf5718 + mov bx, strict word 00018h ; bb 18 00 ; 0xf571b keyboard.c:48 + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf571e + and bl, 073h ; 80 e3 73 ; 0xf5721 keyboard.c:49 + mov si, 00096h ; be 96 00 ; 0xf5724 keyboard.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf5727 + and AL, strict byte 00ch ; 24 0c ; 0xf572a keyboard.c:49 + or al, bl ; 08 d8 ; 0xf572c + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf572e keyboard.c:808 + xor dh, dh ; 30 f6 ; 0xf5731 + xor ah, ah ; 30 e4 ; 0xf5733 + sal ax, 008h ; c1 e0 08 ; 0xf5735 + jmp near 05551h ; e9 16 fe ; 0xf5738 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf573b keyboard.c:813 + xor ah, ah ; 30 e4 ; 0xf573e + or ah, 080h ; 80 cc 80 ; 0xf5740 + jmp near 0561eh ; e9 d8 fe ; 0xf5743 + ; disGetNextSymbol 0xf5746 LB 0x5612 -> off=0x0 cb=00000000000000b5 uValue=00000000000f4146 'set_geom_lba' +set_geom_lba: ; 0xf5746 LB 0xb5 + push bx ; 53 ; 0xf5746 disk.c:125 + push cx ; 51 ; 0xf5747 + push si ; 56 ; 0xf5748 + push di ; 57 ; 0xf5749 + enter 00008h, 000h ; c8 08 00 00 ; 0xf574a + mov di, ax ; 89 c7 ; 0xf574e + mov es, dx ; 8e c2 ; 0xf5750 + mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf5752 disk.c:127 + mov word [bp-006h], strict word 0007eh ; c7 46 fa 7e 00 ; 0xf5757 + mov word [bp-002h], 000ffh ; c7 46 fe ff 00 ; 0xf575c disk.c:129 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5761 disk.c:132 + mov bx, word [bp+010h] ; 8b 5e 10 ; 0xf5764 + mov cx, word [bp+00eh] ; 8b 4e 0e ; 0xf5767 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf576a + mov si, strict word 00020h ; be 20 00 ; 0xf576d + call 0aa10h ; e8 9d 52 ; 0xf5770 + test ax, ax ; 85 c0 ; 0xf5773 + jne short 05783h ; 75 0c ; 0xf5775 + test bx, bx ; 85 db ; 0xf5777 + jne short 05783h ; 75 08 ; 0xf5779 + test cx, cx ; 85 c9 ; 0xf577b + jne short 05783h ; 75 04 ; 0xf577d + test dx, dx ; 85 d2 ; 0xf577f + je short 0578ah ; 74 07 ; 0xf5781 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf5783 + mov si, bx ; 89 de ; 0xf5786 + jmp short 05790h ; eb 06 ; 0xf5788 + mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf578a + mov si, word [bp+00eh] ; 8b 76 0e ; 0xf578d + mov word [bp-004h], bx ; 89 5e fc ; 0xf5790 + xor bx, bx ; 31 db ; 0xf5793 disk.c:134 + jmp short 0579ch ; eb 05 ; 0xf5795 + cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf5797 + jnl short 057bfh ; 7d 23 ; 0xf579a + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf579c disk.c:135 + cmp si, ax ; 39 c6 ; 0xf579f + jc short 057adh ; 72 0a ; 0xf57a1 + jne short 057b6h ; 75 11 ; 0xf57a3 + mov ax, word [bp-004h] ; 8b 46 fc ; 0xf57a5 + cmp ax, word [bp-008h] ; 3b 46 f8 ; 0xf57a8 + jnbe short 057b6h ; 77 09 ; 0xf57ab + mov ax, word [bp-002h] ; 8b 46 fe ; 0xf57ad disk.c:136 + inc ax ; 40 ; 0xf57b0 + shr ax, 1 ; d1 e8 ; 0xf57b1 + mov word [bp-002h], ax ; 89 46 fe ; 0xf57b3 + shr word [bp-006h], 1 ; d1 6e fa ; 0xf57b6 disk.c:137 + rcr word [bp-008h], 1 ; d1 5e f8 ; 0xf57b9 + inc bx ; 43 ; 0xf57bc disk.c:138 + jmp short 05797h ; eb d8 ; 0xf57bd + mov ax, word [bp-002h] ; 8b 46 fe ; 0xf57bf disk.c:140 + xor dx, dx ; 31 d2 ; 0xf57c2 + mov bx, strict word 0003fh ; bb 3f 00 ; 0xf57c4 + xor cx, cx ; 31 c9 ; 0xf57c7 + call 0a9c0h ; e8 f4 51 ; 0xf57c9 + mov bx, ax ; 89 c3 ; 0xf57cc + mov cx, dx ; 89 d1 ; 0xf57ce + mov ax, word [bp-004h] ; 8b 46 fc ; 0xf57d0 + mov dx, si ; 89 f2 ; 0xf57d3 + call 0a9e0h ; e8 08 52 ; 0xf57d5 + mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf57d8 + cmp ax, 00400h ; 3d 00 04 ; 0xf57dc disk.c:141 + jbe short 057e7h ; 76 06 ; 0xf57df + mov word [es:di+002h], 00400h ; 26 c7 45 02 00 04 ; 0xf57e1 disk.c:142 + mov ax, word [bp-002h] ; 8b 46 fe ; 0xf57e7 disk.c:143 + mov word [es:di], ax ; 26 89 05 ; 0xf57ea + mov word [es:di+004h], strict word 0003fh ; 26 c7 45 04 3f 00 ; 0xf57ed disk.c:144 + leave ; c9 ; 0xf57f3 disk.c:145 + pop di ; 5f ; 0xf57f4 + pop si ; 5e ; 0xf57f5 + pop cx ; 59 ; 0xf57f6 + pop bx ; 5b ; 0xf57f7 + retn 00008h ; c2 08 00 ; 0xf57f8 + ; disGetNextSymbol 0xf57fb LB 0x555d -> off=0x0 cb=00000000000002fc uValue=00000000000f41fb 'edd_fill_dpt' +edd_fill_dpt: ; 0xf57fb LB 0x2fc + push si ; 56 ; 0xf57fb disk.c:147 + push di ; 57 ; 0xf57fc + enter 0000ch, 000h ; c8 0c 00 00 ; 0xf57fd + mov di, ax ; 89 c7 ; 0xf5801 + mov word [bp-004h], dx ; 89 56 fc ; 0xf5803 + mov word [bp-008h], bx ; 89 5e f8 ; 0xf5806 + mov word [bp-006h], cx ; 89 4e fa ; 0xf5809 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf580c disk.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf580f + mov es, ax ; 8e c0 ; 0xf5812 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf5814 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5817 disk.c:59 + mov es, dx ; 8e c2 ; 0xf581a disk.c:152 + mov ax, word [es:di] ; 26 8b 05 ; 0xf581c + cmp ax, strict word 0001ah ; 3d 1a 00 ; 0xf581f + jnc short 0582ah ; 73 06 ; 0xf5822 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf5824 disk.c:153 + jmp near 05af1h ; e9 c7 02 ; 0xf5827 + jc short 0589bh ; 72 6f ; 0xf582a disk.c:156 + mov word [es:di], strict word 0001ah ; 26 c7 05 1a 00 ; 0xf582c disk.c:159 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5831 disk.c:160 + xor ah, ah ; 30 e4 ; 0xf5834 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5836 + mov dx, cx ; 89 ca ; 0xf5839 + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf583b + add bx, ax ; 01 c3 ; 0xf583e + mov es, cx ; 8e c1 ; 0xf5840 + mov ax, word [es:bx+024h] ; 26 8b 47 24 ; 0xf5842 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5846 + mov word [es:di+018h], ax ; 26 89 45 18 ; 0xf5849 + mov es, cx ; 8e c1 ; 0xf584d disk.c:162 + cmp byte [es:bx+01fh], 005h ; 26 80 7f 1f 05 ; 0xf584f + jne short 0589dh ; 75 47 ; 0xf5854 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5856 disk.c:163 + mov word [es:di+002h], strict word 00074h ; 26 c7 45 02 74 00 ; 0xf5859 + mov word [es:di+004h], strict word 0ffffh ; 26 c7 45 04 ff ff ; 0xf585f disk.c:164 + mov word [es:di+006h], strict word 0ffffh ; 26 c7 45 06 ff ff ; 0xf5865 + mov word [es:di+008h], strict word 0ffffh ; 26 c7 45 08 ff ff ; 0xf586b disk.c:165 + mov word [es:di+00ah], strict word 0ffffh ; 26 c7 45 0a ff ff ; 0xf5871 + mov word [es:di+00ch], strict word 0ffffh ; 26 c7 45 0c ff ff ; 0xf5877 disk.c:166 + mov word [es:di+00eh], strict word 0ffffh ; 26 c7 45 0e ff ff ; 0xf587d + mov word [es:di+010h], strict word 0ffffh ; 26 c7 45 10 ff ff ; 0xf5883 disk.c:167 + mov word [es:di+012h], strict word 0ffffh ; 26 c7 45 12 ff ff ; 0xf5889 + mov word [es:di+014h], strict word 0ffffh ; 26 c7 45 14 ff ff ; 0xf588f disk.c:168 + mov word [es:di+016h], strict word 0ffffh ; 26 c7 45 16 ff ff ; 0xf5895 + jmp short 0590ch ; eb 6f ; 0xf589b disk.c:169 + mov es, [bp-004h] ; 8e 46 fc ; 0xf589d disk.c:170 + mov word [es:di+002h], strict word 00002h ; 26 c7 45 02 02 00 ; 0xf58a0 + mov es, cx ; 8e c1 ; 0xf58a6 disk.c:171 + mov ax, word [es:bx+02eh] ; 26 8b 47 2e ; 0xf58a8 + mov es, [bp-004h] ; 8e 46 fc ; 0xf58ac + mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf58af + mov word [es:di+006h], strict word 00000h ; 26 c7 45 06 00 00 ; 0xf58b3 + mov es, cx ; 8e c1 ; 0xf58b9 disk.c:172 + mov ax, word [es:bx+02ch] ; 26 8b 47 2c ; 0xf58bb + mov es, [bp-004h] ; 8e 46 fc ; 0xf58bf + mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf58c2 + mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xf58c6 + mov es, cx ; 8e c1 ; 0xf58cc disk.c:173 + mov ax, word [es:bx+030h] ; 26 8b 47 30 ; 0xf58ce + mov es, [bp-004h] ; 8e 46 fc ; 0xf58d2 + mov word [es:di+00ch], ax ; 26 89 45 0c ; 0xf58d5 + mov word [es:di+00eh], strict word 00000h ; 26 c7 45 0e 00 00 ; 0xf58d9 + mov es, cx ; 8e c1 ; 0xf58df disk.c:174 + mov ax, word [es:bx+038h] ; 26 8b 47 38 ; 0xf58e1 + mov si, word [es:bx+036h] ; 26 8b 77 36 ; 0xf58e5 + mov cx, word [es:bx+034h] ; 26 8b 4f 34 ; 0xf58e9 + mov dx, word [es:bx+032h] ; 26 8b 57 32 ; 0xf58ed + mov es, [bp-004h] ; 8e 46 fc ; 0xf58f1 disk.c:175 + mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf58f4 + mov word [es:di+012h], cx ; 26 89 4d 12 ; 0xf58f8 + mov bx, si ; 89 f3 ; 0xf58fc disk.c:176 + mov si, strict word 00020h ; be 20 00 ; 0xf58fe + call 0aa10h ; e8 0c 51 ; 0xf5901 + mov word [es:di+014h], dx ; 26 89 55 14 ; 0xf5904 + mov word [es:di+016h], cx ; 26 89 4d 16 ; 0xf5908 + mov es, [bp-004h] ; 8e 46 fc ; 0xf590c disk.c:181 + cmp word [es:di], strict byte 0001eh ; 26 83 3d 1e ; 0xf590f + jc short 05964h ; 72 4f ; 0xf5913 + mov word [es:di], strict word 0001eh ; 26 c7 05 1e 00 ; 0xf5915 disk.c:185 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf591a disk.c:186 + mov word [es:di+01ch], ax ; 26 89 45 1c ; 0xf591d + mov word [es:di+01ah], 00306h ; 26 c7 45 1a 06 03 ; 0xf5921 disk.c:187 + mov cl, byte [bp+008h] ; 8a 4e 08 ; 0xf5927 disk.c:190 + xor ch, ch ; 30 ed ; 0xf592a + mov ax, cx ; 89 c8 ; 0xf592c + cwd ; 99 ; 0xf592e + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf592f + sar ax, 1 ; d1 f8 ; 0xf5931 + xor ah, ah ; 30 e4 ; 0xf5933 disk.c:191 + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5935 + les bx, [bp-008h] ; c4 5e f8 ; 0xf5938 + add bx, ax ; 01 c3 ; 0xf593b + mov dx, word [es:bx+0027ah] ; 26 8b 97 7a 02 ; 0xf593d + mov ax, word [es:bx+0027ch] ; 26 8b 87 7c 02 ; 0xf5942 disk.c:192 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5947 + mov al, byte [es:bx+00279h] ; 26 8a 87 79 02 ; 0xf594a disk.c:193 + mov byte [bp-002h], al ; 88 46 fe ; 0xf594f + imul bx, cx, strict byte 0001ch ; 6b d9 1c ; 0xf5952 disk.c:195 + add bx, word [bp-008h] ; 03 5e f8 ; 0xf5955 + mov cl, byte [es:bx+023h] ; 26 8a 4f 23 ; 0xf5958 + test cl, cl ; 84 c9 ; 0xf595c disk.c:197 + jne short 05967h ; 75 07 ; 0xf595e + xor bx, bx ; 31 db ; 0xf5960 + jmp short 0596ah ; eb 06 ; 0xf5962 + jmp near 05a20h ; e9 b9 00 ; 0xf5964 + mov bx, strict word 00008h ; bb 08 00 ; 0xf5967 + or bl, 010h ; 80 cb 10 ; 0xf596a disk.c:198 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf596d disk.c:199 + xor ah, ah ; 30 e4 ; 0xf5970 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5972 + les si, [bp-008h] ; c4 76 f8 ; 0xf5975 + add si, ax ; 01 c6 ; 0xf5978 + cmp byte [es:si+01fh], 005h ; 26 80 7c 1f 05 ; 0xf597a + jne short 05984h ; 75 03 ; 0xf597f + or bl, 060h ; 80 cb 60 ; 0xf5981 disk.c:200 + cmp cl, 001h ; 80 f9 01 ; 0xf5984 disk.c:206 + jne short 0598eh ; 75 05 ; 0xf5987 + mov ax, strict word 00001h ; b8 01 00 ; 0xf5989 + jmp short 05990h ; eb 02 ; 0xf598c + xor ax, ax ; 31 c0 ; 0xf598e + or bx, ax ; 09 c3 ; 0xf5990 + cmp cl, 003h ; 80 f9 03 ; 0xf5992 disk.c:207 + jne short 0599ch ; 75 05 ; 0xf5995 + mov ax, strict word 00003h ; b8 03 00 ; 0xf5997 + jmp short 0599eh ; eb 02 ; 0xf599a + xor ax, ax ; 31 c0 ; 0xf599c + or bx, ax ; 09 c3 ; 0xf599e + les si, [bp-008h] ; c4 76 f8 ; 0xf59a0 disk.c:209 + mov word [es:si+002a8h], dx ; 26 89 94 a8 02 ; 0xf59a3 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf59a8 disk.c:210 + mov word [es:si+002aah], ax ; 26 89 84 aa 02 ; 0xf59ab + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf59b0 disk.c:211 + xor ah, ah ; 30 e4 ; 0xf59b3 + cwd ; 99 ; 0xf59b5 + mov cx, strict word 00002h ; b9 02 00 ; 0xf59b6 + idiv cx ; f7 f9 ; 0xf59b9 + or dl, 00eh ; 80 ca 0e ; 0xf59bb + sal dx, 004h ; c1 e2 04 ; 0xf59be + mov byte [es:si+002ach], dl ; 26 88 94 ac 02 ; 0xf59c1 + mov byte [es:si+002adh], 0cbh ; 26 c6 84 ad 02 cb ; 0xf59c6 disk.c:212 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf59cc disk.c:213 + mov byte [es:si+002aeh], al ; 26 88 84 ae 02 ; 0xf59cf + mov word [es:si+002afh], strict word 00001h ; 26 c7 84 af 02 01 00 ; 0xf59d4 disk.c:214 + mov byte [es:si+002b1h], 000h ; 26 c6 84 b1 02 00 ; 0xf59db disk.c:216 + mov word [es:si+002b2h], bx ; 26 89 9c b2 02 ; 0xf59e1 disk.c:217 + mov bx, si ; 89 f3 ; 0xf59e6 disk.c:218 + mov word [es:bx+002b4h], strict word 00000h ; 26 c7 87 b4 02 00 00 ; 0xf59e8 + mov byte [es:bx+002b6h], 011h ; 26 c6 87 b6 02 11 ; 0xf59ef disk.c:219 + xor bl, bl ; 30 db ; 0xf59f5 disk.c:221 + xor bh, bh ; 30 ff ; 0xf59f7 disk.c:222 + jmp short 05a00h ; eb 05 ; 0xf59f9 + cmp bh, 00fh ; 80 ff 0f ; 0xf59fb + jnc short 05a16h ; 73 16 ; 0xf59fe + mov al, bh ; 88 f8 ; 0xf5a00 disk.c:223 + xor ah, ah ; 30 e4 ; 0xf5a02 + mov si, ax ; 89 c6 ; 0xf5a04 + add si, 00306h ; 81 c6 06 03 ; 0xf5a06 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf5a0a disk.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf5a0d + add bl, al ; 00 c3 ; 0xf5a10 disk.c:49 + db 0feh, 0c7h + ; inc bh ; fe c7 ; 0xf5a12 disk.c:223 + jmp short 059fbh ; eb e5 ; 0xf5a14 + neg bl ; f6 db ; 0xf5a16 disk.c:224 + les si, [bp-008h] ; c4 76 f8 ; 0xf5a18 disk.c:225 + mov byte [es:si+002b7h], bl ; 26 88 9c b7 02 ; 0xf5a1b + mov es, [bp-004h] ; 8e 46 fc ; 0xf5a20 disk.c:229 + cmp word [es:di], strict byte 00042h ; 26 83 3d 42 ; 0xf5a23 + jnc short 05a2ch ; 73 03 ; 0xf5a27 + jmp near 05aefh ; e9 c3 00 ; 0xf5a29 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5a2c disk.c:233 + xor ah, ah ; 30 e4 ; 0xf5a2f + cwd ; 99 ; 0xf5a31 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf5a32 + sar ax, 1 ; d1 f8 ; 0xf5a34 + xor ah, ah ; 30 e4 ; 0xf5a36 disk.c:234 + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5a38 + les bx, [bp-008h] ; c4 5e f8 ; 0xf5a3b + add bx, ax ; 01 c3 ; 0xf5a3e + mov al, byte [es:bx+00278h] ; 26 8a 87 78 02 ; 0xf5a40 + mov dx, word [es:bx+0027ah] ; 26 8b 97 7a 02 ; 0xf5a45 disk.c:235 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5a4a disk.c:237 + mov word [es:di], strict word 00042h ; 26 c7 05 42 00 ; 0xf5a4d + mov word [es:di+01eh], 0beddh ; 26 c7 45 1e dd be ; 0xf5a52 disk.c:238 + mov word [es:di+020h], strict word 00024h ; 26 c7 45 20 24 00 ; 0xf5a58 disk.c:239 + mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00 ; 0xf5a5e disk.c:241 + test al, al ; 84 c0 ; 0xf5a64 disk.c:243 + jne short 05a74h ; 75 0c ; 0xf5a66 + mov word [es:di+024h], 05349h ; 26 c7 45 24 49 53 ; 0xf5a68 disk.c:244 + mov word [es:di+026h], 02041h ; 26 c7 45 26 41 20 ; 0xf5a6e disk.c:246 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5a74 disk.c:252 + mov word [es:di+028h], 05441h ; 26 c7 45 28 41 54 ; 0xf5a77 + mov word [es:di+02ah], 02041h ; 26 c7 45 2a 41 20 ; 0xf5a7d disk.c:254 + mov word [es:di+02ch], 02020h ; 26 c7 45 2c 20 20 ; 0xf5a83 disk.c:256 + mov word [es:di+02eh], 02020h ; 26 c7 45 2e 20 20 ; 0xf5a89 disk.c:258 + test al, al ; 84 c0 ; 0xf5a8f disk.c:261 + jne short 05aa9h ; 75 16 ; 0xf5a91 + mov word [es:di+030h], dx ; 26 89 55 30 ; 0xf5a93 disk.c:262 + mov word [es:di+032h], strict word 00000h ; 26 c7 45 32 00 00 ; 0xf5a97 disk.c:263 + mov word [es:di+034h], strict word 00000h ; 26 c7 45 34 00 00 ; 0xf5a9d disk.c:264 + mov word [es:di+036h], strict word 00000h ; 26 c7 45 36 00 00 ; 0xf5aa3 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5aa9 disk.c:269 + and AL, strict byte 001h ; 24 01 ; 0xf5aac + xor ah, ah ; 30 e4 ; 0xf5aae + mov es, [bp-004h] ; 8e 46 fc ; 0xf5ab0 + mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf5ab3 + mov word [es:di+03ah], strict word 00000h ; 26 c7 45 3a 00 00 ; 0xf5ab7 disk.c:270 + mov word [es:di+03ch], strict word 00000h ; 26 c7 45 3c 00 00 ; 0xf5abd disk.c:271 + mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00 ; 0xf5ac3 + xor bl, bl ; 30 db ; 0xf5ac9 disk.c:273 + mov BH, strict byte 01eh ; b7 1e ; 0xf5acb disk.c:274 + jmp short 05ad4h ; eb 05 ; 0xf5acd + cmp bh, 040h ; 80 ff 40 ; 0xf5acf + jnc short 05ae6h ; 73 12 ; 0xf5ad2 + mov al, bh ; 88 f8 ; 0xf5ad4 disk.c:275 + xor ah, ah ; 30 e4 ; 0xf5ad6 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5ad8 + mov si, di ; 89 fe ; 0xf5adb + add si, ax ; 01 c6 ; 0xf5add + add bl, byte [es:si] ; 26 02 1c ; 0xf5adf + db 0feh, 0c7h + ; inc bh ; fe c7 ; 0xf5ae2 + jmp short 05acfh ; eb e9 ; 0xf5ae4 + neg bl ; f6 db ; 0xf5ae6 disk.c:276 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5ae8 disk.c:277 + mov byte [es:di+041h], bl ; 26 88 5d 41 ; 0xf5aeb + xor ax, ax ; 31 c0 ; 0xf5aef disk.c:279 + leave ; c9 ; 0xf5af1 disk.c:280 + pop di ; 5f ; 0xf5af2 + pop si ; 5e ; 0xf5af3 + retn 00002h ; c2 02 00 ; 0xf5af4 + ; disGetNextSymbol 0xf5af7 LB 0x5261 -> off=0x32 cb=0000000000000439 uValue=00000000000f4529 'int13_harddisk' + db 0bdh, 05bh, 0ceh, 05bh, 0f8h, 05bh, 0f8h, 05bh, 0f8h, 05bh, 0e8h, 05dh, 024h, 05fh, 024h, 05fh + db 016h, 05eh, 001h, 05fh, 024h, 05fh, 024h, 05fh, 001h, 05fh, 001h, 05fh, 024h, 05fh, 024h, 05fh + db 080h, 05eh, 001h, 05fh, 024h, 05fh, 024h, 05fh, 001h, 05fh, 0b9h, 05eh, 024h, 05fh, 024h, 05fh + db 024h, 05fh +int13_harddisk: ; 0xf5b29 LB 0x439 + push bp ; 55 ; 0xf5b29 disk.c:282 + mov bp, sp ; 89 e5 ; 0xf5b2a + sub sp, strict byte 00012h ; 83 ec 12 ; 0xf5b2c + or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf5b2f disk.c:293 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5b33 disk.c:58 + mov dx, strict word 00040h ; ba 40 00 ; 0xf5b36 + mov es, dx ; 8e c2 ; 0xf5b39 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf5b3b + mov si, strict word 0005eh ; be 5e 00 ; 0xf5b3e disk.c:59 + mov word [bp-004h], dx ; 89 56 fc ; 0xf5b41 + mov bx, 0008eh ; bb 8e 00 ; 0xf5b44 disk.c:53 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5b47 + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5b4b disk.c:299 + xor dh, dh ; 30 f6 ; 0xf5b4e + cmp dx, 00080h ; 81 fa 80 00 ; 0xf5b50 + jc short 05b5ch ; 72 06 ; 0xf5b54 + cmp dx, 00094h ; 81 fa 94 00 ; 0xf5b56 + jc short 05b7ah ; 72 1e ; 0xf5b5a + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5b5c disk.c:300 + xor ah, ah ; 30 e4 ; 0xf5b5f + push ax ; 50 ; 0xf5b61 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5b62 + shr ax, 008h ; c1 e8 08 ; 0xf5b65 + push ax ; 50 ; 0xf5b68 + push 006c4h ; 68 c4 06 ; 0xf5b69 + push 006d3h ; 68 d3 06 ; 0xf5b6c + push strict byte 00004h ; 6a 04 ; 0xf5b6f + call 01953h ; e8 df bd ; 0xf5b71 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5b74 + jmp near 05f3fh ; e9 c5 03 ; 0xf5b77 disk.c:301 + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5b7a disk.c:305 + xor dh, dh ; 30 f6 ; 0xf5b7d + mov es, [bp-004h] ; 8e 46 fc ; 0xf5b7f + mov bx, si ; 89 f3 ; 0xf5b82 + add bx, dx ; 01 d3 ; 0xf5b84 + mov bl, byte [es:bx+001cfh] ; 26 8a 9f cf 01 ; 0xf5b86 + mov byte [bp-002h], bl ; 88 5e fe ; 0xf5b8b + cmp bl, 014h ; 80 fb 14 ; 0xf5b8e disk.c:308 + jc short 05ba3h ; 72 10 ; 0xf5b91 + push dx ; 52 ; 0xf5b93 disk.c:309 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5b94 + shr ax, 008h ; c1 e8 08 ; 0xf5b97 + push ax ; 50 ; 0xf5b9a + push 006c4h ; 68 c4 06 ; 0xf5b9b + push 006feh ; 68 fe 06 ; 0xf5b9e + jmp short 05b6fh ; eb cc ; 0xf5ba1 + mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf5ba3 disk.c:313 + shr bx, 008h ; c1 eb 08 ; 0xf5ba6 + cmp bx, strict byte 00018h ; 83 fb 18 ; 0xf5ba9 + jnbe short 05bf5h ; 77 47 ; 0xf5bac + add bx, bx ; 01 db ; 0xf5bae + mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5bb0 + xor dh, dh ; 30 f6 ; 0xf5bb3 + mov word [bp-010h], dx ; 89 56 f0 ; 0xf5bb5 + jmp word [cs:bx+05af7h] ; 2e ff a7 f7 5a ; 0xf5bb8 + cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5bbd disk.c:318 + jnc short 05bcbh ; 73 08 ; 0xf5bc1 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5bc3 disk.c:320 + xor ah, ah ; 30 e4 ; 0xf5bc6 + call 01d71h ; e8 a6 c1 ; 0xf5bc8 + jmp near 05dfeh ; e9 30 02 ; 0xf5bcb disk.c:321 + mov bx, strict word 00074h ; bb 74 00 ; 0xf5bce disk.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5bd1 + mov es, ax ; 8e c0 ; 0xf5bd4 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf5bd6 + mov al, dl ; 88 d0 ; 0xf5bd9 disk.c:326 + xor ah, ah ; 30 e4 ; 0xf5bdb + sal ax, 008h ; c1 e0 08 ; 0xf5bdd + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf5be0 + or bx, ax ; 09 c3 ; 0xf5be3 + mov word [bp+016h], bx ; 89 5e 16 ; 0xf5be5 + mov bx, strict word 00074h ; bb 74 00 ; 0xf5be8 disk.c:53 + mov byte [es:bx], dh ; 26 88 37 ; 0xf5beb + test dl, dl ; 84 d2 ; 0xf5bee disk.c:329 + je short 05c57h ; 74 65 ; 0xf5bf0 + jmp near 05f5bh ; e9 66 03 ; 0xf5bf2 + jmp near 05f24h ; e9 2c 03 ; 0xf5bf5 + mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5bf8 disk.c:337 + xor dh, dh ; 30 f6 ; 0xf5bfb + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf5bfd + mov di, word [bp+014h] ; 8b 7e 14 ; 0xf5c00 disk.c:338 + shr di, 008h ; c1 ef 08 ; 0xf5c03 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5c06 disk.c:339 + xor dh, dh ; 30 f6 ; 0xf5c09 + sal dx, 002h ; c1 e2 02 ; 0xf5c0b + xor dl, dl ; 30 d2 ; 0xf5c0e + and dh, 003h ; 80 e6 03 ; 0xf5c10 + or di, dx ; 09 d7 ; 0xf5c13 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5c15 disk.c:340 + and dx, strict byte 0003fh ; 83 e2 3f ; 0xf5c18 + mov word [bp-006h], dx ; 89 56 fa ; 0xf5c1b + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5c1e disk.c:341 + shr dx, 008h ; c1 ea 08 ; 0xf5c21 + mov word [bp-008h], dx ; 89 56 f8 ; 0xf5c24 + cmp word [bp-00eh], 00080h ; 81 7e f2 80 00 ; 0xf5c27 disk.c:344 + jnbe short 05c34h ; 77 06 ; 0xf5c2c + cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xf5c2e + jne short 05c5ah ; 75 26 ; 0xf5c32 + mov bx, 00dcch ; bb cc 0d ; 0xf5c34 disk.c:345 + mov cx, ds ; 8c d9 ; 0xf5c37 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5c39 + call 01910h ; e8 d1 bc ; 0xf5c3c + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5c3f + shr ax, 008h ; c1 e8 08 ; 0xf5c42 + push ax ; 50 ; 0xf5c45 + push 006c4h ; 68 c4 06 ; 0xf5c46 + push 00730h ; 68 30 07 ; 0xf5c49 + push strict byte 00004h ; 6a 04 ; 0xf5c4c + call 01953h ; e8 02 bd ; 0xf5c4e + add sp, strict byte 00008h ; 83 c4 08 ; 0xf5c51 + jmp near 05f3fh ; e9 e8 02 ; 0xf5c54 disk.c:346 + jmp near 05e02h ; e9 a8 01 ; 0xf5c57 + mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf5c5a disk.c:350 + xor dh, dh ; 30 f6 ; 0xf5c5d + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5c5f + mov es, [bp-004h] ; 8e 46 fc ; 0xf5c62 + mov bx, si ; 89 f3 ; 0xf5c65 + add bx, dx ; 01 d3 ; 0xf5c67 + mov dx, word [es:bx+028h] ; 26 8b 57 28 ; 0xf5c69 + mov word [bp-012h], dx ; 89 56 ee ; 0xf5c6d + mov cx, word [es:bx+026h] ; 26 8b 4f 26 ; 0xf5c70 disk.c:351 + mov dx, word [es:bx+02ah] ; 26 8b 57 2a ; 0xf5c74 disk.c:352 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf5c78 + cmp di, word [bp-012h] ; 3b 7e ee ; 0xf5c7b disk.c:355 + jnc short 05c8dh ; 73 0d ; 0xf5c7e + cmp cx, word [bp-008h] ; 3b 4e f8 ; 0xf5c80 + jbe short 05c8dh ; 76 08 ; 0xf5c83 + mov dx, word [bp-006h] ; 8b 56 fa ; 0xf5c85 + cmp dx, word [bp-00ah] ; 3b 56 f6 ; 0xf5c88 + jbe short 05cbdh ; 76 30 ; 0xf5c8b + mov bx, 00dcch ; bb cc 0d ; 0xf5c8d disk.c:356 + mov cx, ds ; 8c d9 ; 0xf5c90 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5c92 + call 01910h ; e8 78 bc ; 0xf5c95 + push word [bp-006h] ; ff 76 fa ; 0xf5c98 + push word [bp-008h] ; ff 76 f8 ; 0xf5c9b + push di ; 57 ; 0xf5c9e + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5c9f + xor ah, ah ; 30 e4 ; 0xf5ca2 + push ax ; 50 ; 0xf5ca4 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ca5 + shr ax, 008h ; c1 e8 08 ; 0xf5ca8 + push ax ; 50 ; 0xf5cab + push 006c4h ; 68 c4 06 ; 0xf5cac + push 00758h ; 68 58 07 ; 0xf5caf + push strict byte 00004h ; 6a 04 ; 0xf5cb2 + call 01953h ; e8 9c bc ; 0xf5cb4 + add sp, strict byte 00010h ; 83 c4 10 ; 0xf5cb7 + jmp near 05f3fh ; e9 82 02 ; 0xf5cba disk.c:357 + mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5cbd disk.c:361 + shr dx, 008h ; c1 ea 08 ; 0xf5cc0 + cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf5cc3 + je short 05ce8h ; 74 20 ; 0xf5cc6 + mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf5cc8 disk.c:366 + xor dh, dh ; 30 f6 ; 0xf5ccb + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5ccd + mov es, [bp-004h] ; 8e 46 fc ; 0xf5cd0 + mov bx, si ; 89 f3 ; 0xf5cd3 + add bx, dx ; 01 d3 ; 0xf5cd5 + cmp cx, word [es:bx+02ch] ; 26 3b 4f 2c ; 0xf5cd7 + jne short 05cf1h ; 75 14 ; 0xf5cdb + mov dx, word [es:bx+030h] ; 26 8b 57 30 ; 0xf5cdd + cmp dx, word [bp-00ah] ; 3b 56 f6 ; 0xf5ce1 + je short 05cebh ; 74 05 ; 0xf5ce4 + jmp short 05cf1h ; eb 09 ; 0xf5ce6 + jmp near 05dfeh ; e9 13 01 ; 0xf5ce8 + cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5ceb + jc short 05d1eh ; 72 2d ; 0xf5cef + mov ax, di ; 89 f8 ; 0xf5cf1 disk.c:367 + xor dx, dx ; 31 d2 ; 0xf5cf3 + mov bx, cx ; 89 cb ; 0xf5cf5 + xor cx, cx ; 31 c9 ; 0xf5cf7 + call 0a9c0h ; e8 c4 4c ; 0xf5cf9 + xor bx, bx ; 31 db ; 0xf5cfc + add ax, word [bp-008h] ; 03 46 f8 ; 0xf5cfe + adc dx, bx ; 11 da ; 0xf5d01 + mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf5d03 + xor cx, cx ; 31 c9 ; 0xf5d06 + call 0a9c0h ; e8 b5 4c ; 0xf5d08 + xor bx, bx ; 31 db ; 0xf5d0b + add ax, word [bp-006h] ; 03 46 fa ; 0xf5d0d + adc dx, bx ; 11 da ; 0xf5d10 + add ax, strict word 0ffffh ; 05 ff ff ; 0xf5d12 + adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf5d15 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf5d18 + mov word [bp-006h], bx ; 89 5e fa ; 0xf5d1b disk.c:368 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5d1e disk.c:378 + mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00 ; 0xf5d21 + mov word [es:si+01ah], strict word 00000h ; 26 c7 44 1a 00 00 ; 0xf5d27 disk.c:379 + mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf5d2d + mov word [es:si], ax ; 26 89 04 ; 0xf5d33 disk.c:382 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5d36 + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf5d39 + mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf5d3d + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf5d43 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5d49 disk.c:383 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf5d4c + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf5d4f + mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf5d53 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf5d57 disk.c:384 + mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf5d5a + mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf5d5e disk.c:385 + mov word [es:si+012h], di ; 26 89 7c 12 ; 0xf5d64 disk.c:386 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf5d68 disk.c:387 + mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf5d6b + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5d6f disk.c:388 + mov word [es:si+016h], ax ; 26 89 44 16 ; 0xf5d72 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5d76 disk.c:389 + mov byte [es:si+00ch], al ; 26 88 44 0c ; 0xf5d79 + xor ah, ah ; 30 e4 ; 0xf5d7d disk.c:391 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5d7f + mov bx, si ; 89 f3 ; 0xf5d82 + add bx, ax ; 01 c3 ; 0xf5d84 + mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf5d86 + xor ah, ah ; 30 e4 ; 0xf5d8a + mov bx, ax ; 89 c3 ; 0xf5d8c + sal bx, 002h ; c1 e3 02 ; 0xf5d8e + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5d91 + shr ax, 008h ; c1 e8 08 ; 0xf5d94 + add ax, ax ; 01 c0 ; 0xf5d97 + add bx, ax ; 01 c3 ; 0xf5d99 + push ES ; 06 ; 0xf5d9b + push si ; 56 ; 0xf5d9c + call word [word bx+0007eh] ; ff 97 7e 00 ; 0xf5d9d + mov dx, ax ; 89 c2 ; 0xf5da1 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5da3 disk.c:394 + xor al, al ; 30 c0 ; 0xf5da6 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5da8 + mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf5dab + or bx, ax ; 09 c3 ; 0xf5daf + mov word [bp+016h], bx ; 89 5e 16 ; 0xf5db1 + test dl, dl ; 84 d2 ; 0xf5db4 disk.c:396 + je short 05dfeh ; 74 46 ; 0xf5db6 + mov bx, 00dcch ; bb cc 0d ; 0xf5db8 disk.c:397 + mov cx, ds ; 8c d9 ; 0xf5dbb + mov ax, strict word 00004h ; b8 04 00 ; 0xf5dbd + call 01910h ; e8 4d bb ; 0xf5dc0 + mov al, dl ; 88 d0 ; 0xf5dc3 + xor ah, ah ; 30 e4 ; 0xf5dc5 + push ax ; 50 ; 0xf5dc7 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5dc8 + shr ax, 008h ; c1 e8 08 ; 0xf5dcb + push ax ; 50 ; 0xf5dce + push 006c4h ; 68 c4 06 ; 0xf5dcf + push 0079fh ; 68 9f 07 ; 0xf5dd2 + push strict byte 00004h ; 6a 04 ; 0xf5dd5 + call 01953h ; e8 79 bb ; 0xf5dd7 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5dda + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ddd disk.c:398 + xor ah, ah ; 30 e4 ; 0xf5de0 + or ah, 00ch ; 80 cc 0c ; 0xf5de2 + jmp near 05f47h ; e9 5f 01 ; 0xf5de5 disk.c:399 + mov bx, 00dcch ; bb cc 0d ; 0xf5de8 disk.c:406 + mov cx, ds ; 8c d9 ; 0xf5deb + mov ax, strict word 00004h ; b8 04 00 ; 0xf5ded + call 01910h ; e8 1d bb ; 0xf5df0 + push 007c0h ; 68 c0 07 ; 0xf5df3 + push strict byte 00004h ; 6a 04 ; 0xf5df6 + call 01953h ; e8 58 bb ; 0xf5df8 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf5dfb + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf5dfe disk.c:407 + mov bx, strict word 00074h ; bb 74 00 ; 0xf5e02 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5e05 + mov es, ax ; 8e c0 ; 0xf5e08 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5e0a + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf5e0e + mov sp, bp ; 89 ec ; 0xf5e12 + pop bp ; 5d ; 0xf5e14 + retn ; c3 ; 0xf5e15 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5e16 disk.c:413 + xor ah, ah ; 30 e4 ; 0xf5e19 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5e1b + mov es, [bp-004h] ; 8e 46 fc ; 0xf5e1e + mov di, si ; 89 f7 ; 0xf5e21 + add di, ax ; 01 c7 ; 0xf5e23 + mov ax, word [es:di+028h] ; 26 8b 45 28 ; 0xf5e25 + mov cx, word [es:di+026h] ; 26 8b 4d 26 ; 0xf5e29 disk.c:414 + mov dx, word [es:di+02ah] ; 26 8b 55 2a ; 0xf5e2d disk.c:415 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf5e31 + mov dl, byte [es:si+0024eh] ; 26 8a 94 4e 02 ; 0xf5e34 disk.c:417 + xor dh, dh ; 30 f6 ; 0xf5e39 + mov byte [bp+016h], dh ; 88 76 16 ; 0xf5e3b disk.c:423 + mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf5e3e disk.c:424 + xor bh, bh ; 30 ff ; 0xf5e41 + dec ax ; 48 ; 0xf5e43 disk.c:422 + mov si, ax ; 89 c6 ; 0xf5e44 + and si, 000ffh ; 81 e6 ff 00 ; 0xf5e46 + sal si, 008h ; c1 e6 08 ; 0xf5e4a + or bx, si ; 09 f3 ; 0xf5e4d + mov word [bp+014h], bx ; 89 5e 14 ; 0xf5e4f + shr ax, 002h ; c1 e8 02 ; 0xf5e52 disk.c:425 + and AL, strict byte 0c0h ; 24 c0 ; 0xf5e55 + mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf5e57 + and bl, 03fh ; 80 e3 3f ; 0xf5e5a + or al, bl ; 08 d8 ; 0xf5e5d + mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf5e5f + mov bl, al ; 88 c3 ; 0xf5e62 + mov word [bp+014h], bx ; 89 5e 14 ; 0xf5e64 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5e67 disk.c:426 + xor ah, ah ; 30 e4 ; 0xf5e6a + sal cx, 008h ; c1 e1 08 ; 0xf5e6c + sub cx, 00100h ; 81 e9 00 01 ; 0xf5e6f + or ax, cx ; 09 c8 ; 0xf5e73 + mov word [bp+012h], ax ; 89 46 12 ; 0xf5e75 + mov al, dl ; 88 d0 ; 0xf5e78 disk.c:427 + mov word [bp+012h], ax ; 89 46 12 ; 0xf5e7a + jmp near 05dfeh ; e9 7e ff ; 0xf5e7d disk.c:432 + cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5e80 disk.c:440 + jc short 05e89h ; 72 03 ; 0xf5e84 + jmp near 05dfeh ; e9 75 ff ; 0xf5e86 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5e89 disk.c:443 + xor ah, ah ; 30 e4 ; 0xf5e8c + cwd ; 99 ; 0xf5e8e + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf5e8f + sar ax, 1 ; d1 f8 ; 0xf5e91 + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5e93 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5e96 + add si, ax ; 01 c6 ; 0xf5e99 + mov dx, word [es:si+0027ah] ; 26 8b 94 7a 02 ; 0xf5e9b + add dx, strict byte 00007h ; 83 c2 07 ; 0xf5ea0 + in AL, DX ; ec ; 0xf5ea3 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5ea4 + and AL, strict byte 0c0h ; 24 c0 ; 0xf5ea6 disk.c:444 + cmp AL, strict byte 040h ; 3c 40 ; 0xf5ea8 + jne short 05eaeh ; 75 02 ; 0xf5eaa + jmp short 05e86h ; eb d8 ; 0xf5eac disk.c:445 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5eae disk.c:447 + xor ah, ah ; 30 e4 ; 0xf5eb1 + or ah, 0aah ; 80 cc aa ; 0xf5eb3 + jmp near 05f47h ; e9 8e 00 ; 0xf5eb6 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5eb9 disk.c:459 + xor ah, ah ; 30 e4 ; 0xf5ebc + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5ebe + mov es, [bp-004h] ; 8e 46 fc ; 0xf5ec1 + add si, ax ; 01 c6 ; 0xf5ec4 + mov di, word [es:si+02eh] ; 26 8b 7c 2e ; 0xf5ec6 + mov ax, word [es:si+02ch] ; 26 8b 44 2c ; 0xf5eca disk.c:460 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf5ece + mov ax, word [es:si+030h] ; 26 8b 44 30 ; 0xf5ed1 disk.c:461 + mov word [bp-006h], ax ; 89 46 fa ; 0xf5ed5 + mov ax, di ; 89 f8 ; 0xf5ed8 disk.c:464 + xor dl, dl ; 30 d2 ; 0xf5eda + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5edc + xor cx, cx ; 31 c9 ; 0xf5edf + call 0a9c0h ; e8 dc 4a ; 0xf5ee1 + mov bx, word [bp-006h] ; 8b 5e fa ; 0xf5ee4 + xor cx, cx ; 31 c9 ; 0xf5ee7 + call 0a9c0h ; e8 d4 4a ; 0xf5ee9 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf5eec + mov word [bp+014h], dx ; 89 56 14 ; 0xf5eef disk.c:465 + mov word [bp+012h], ax ; 89 46 12 ; 0xf5ef2 disk.c:466 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf5ef5 disk.c:468 + or ah, 003h ; 80 cc 03 ; 0xf5ef8 + mov word [bp+016h], ax ; 89 46 16 ; 0xf5efb + jmp near 05e02h ; e9 01 ff ; 0xf5efe disk.c:469 + mov bx, 00dcch ; bb cc 0d ; 0xf5f01 disk.c:477 + mov cx, ds ; 8c d9 ; 0xf5f04 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5f06 + call 01910h ; e8 04 ba ; 0xf5f09 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f0c + shr ax, 008h ; c1 e8 08 ; 0xf5f0f + push ax ; 50 ; 0xf5f12 + push 006c4h ; 68 c4 06 ; 0xf5f13 + push 007dah ; 68 da 07 ; 0xf5f16 + push strict byte 00004h ; 6a 04 ; 0xf5f19 + call 01953h ; e8 35 ba ; 0xf5f1b + add sp, strict byte 00008h ; 83 c4 08 ; 0xf5f1e + jmp near 05dfeh ; e9 da fe ; 0xf5f21 disk.c:478 + mov bx, 00dcch ; bb cc 0d ; 0xf5f24 disk.c:485 + mov cx, ds ; 8c d9 ; 0xf5f27 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5f29 + call 01910h ; e8 e1 b9 ; 0xf5f2c + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f2f + shr ax, 008h ; c1 e8 08 ; 0xf5f32 + push ax ; 50 ; 0xf5f35 + push 006c4h ; 68 c4 06 ; 0xf5f36 + push 0080dh ; 68 0d 08 ; 0xf5f39 + jmp near 05c4ch ; e9 0d fd ; 0xf5f3c + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f3f disk.c:491 + xor ah, ah ; 30 e4 ; 0xf5f42 + or ah, 001h ; 80 cc 01 ; 0xf5f44 + mov word [bp+016h], ax ; 89 46 16 ; 0xf5f47 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f4a disk.c:493 + shr ax, 008h ; c1 e8 08 ; 0xf5f4d + mov bx, strict word 00074h ; bb 74 00 ; 0xf5f50 disk.c:53 + mov dx, strict word 00040h ; ba 40 00 ; 0xf5f53 + mov es, dx ; 8e c2 ; 0xf5f56 + mov byte [es:bx], al ; 26 88 07 ; 0xf5f58 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf5f5b disk.c:495 + jmp near 05e12h ; e9 b0 fe ; 0xf5f5f disk.c:496 + ; disGetNextSymbol 0xf5f62 LB 0x4df6 -> off=0x20 cb=0000000000000297 uValue=00000000000f4982 'int13_harddisk_ext' + db 010h, 060h, 043h, 060h, 043h, 060h, 043h, 060h, 001h, 062h, 0a7h, 061h, 043h, 060h, 0afh, 061h + db 001h, 062h, 028h, 060h, 028h, 060h, 028h, 060h, 028h, 060h, 0c9h, 061h, 028h, 060h, 028h, 060h +int13_harddisk_ext: ; 0xf5f82 LB 0x297 + push bp ; 55 ; 0xf5f82 disk.c:506 + mov bp, sp ; 89 e5 ; 0xf5f83 + sub sp, strict byte 00016h ; 83 ec 16 ; 0xf5f85 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5f88 disk.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5f8b + mov es, ax ; 8e c0 ; 0xf5f8e + mov ax, word [es:bx] ; 26 8b 07 ; 0xf5f90 + mov di, strict word 0005eh ; bf 5e 00 ; 0xf5f93 disk.c:59 + mov word [bp-006h], ax ; 89 46 fa ; 0xf5f96 + mov bx, 0008eh ; bb 8e 00 ; 0xf5f99 disk.c:53 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5f9c + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5fa0 disk.c:530 + xor ah, ah ; 30 e4 ; 0xf5fa3 + cmp ax, 00080h ; 3d 80 00 ; 0xf5fa5 + jc short 05fafh ; 72 05 ; 0xf5fa8 + cmp ax, 00094h ; 3d 94 00 ; 0xf5faa + jc short 05fcdh ; 72 1e ; 0xf5fad + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5faf disk.c:531 + xor ah, ah ; 30 e4 ; 0xf5fb2 + push ax ; 50 ; 0xf5fb4 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5fb5 + shr ax, 008h ; c1 e8 08 ; 0xf5fb8 + push ax ; 50 ; 0xf5fbb + push 0083bh ; 68 3b 08 ; 0xf5fbc + push 006d3h ; 68 d3 06 ; 0xf5fbf + push strict byte 00004h ; 6a 04 ; 0xf5fc2 + call 01953h ; e8 8c b9 ; 0xf5fc4 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5fc7 + jmp near 061dfh ; e9 12 02 ; 0xf5fca disk.c:532 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5fcd disk.c:536 + xor ah, ah ; 30 e4 ; 0xf5fd0 + mov es, [bp-006h] ; 8e 46 fa ; 0xf5fd2 + mov bx, di ; 89 fb ; 0xf5fd5 + add bx, ax ; 01 c3 ; 0xf5fd7 + mov dl, byte [es:bx+001cfh] ; 26 8a 97 cf 01 ; 0xf5fd9 + mov byte [bp-004h], dl ; 88 56 fc ; 0xf5fde + cmp dl, 014h ; 80 fa 14 ; 0xf5fe1 disk.c:539 + jc short 05ff6h ; 72 10 ; 0xf5fe4 + push ax ; 50 ; 0xf5fe6 disk.c:540 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5fe7 + shr ax, 008h ; c1 e8 08 ; 0xf5fea + push ax ; 50 ; 0xf5fed + push 0083bh ; 68 3b 08 ; 0xf5fee + push 006feh ; 68 fe 06 ; 0xf5ff1 + jmp short 05fc2h ; eb cc ; 0xf5ff4 + mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf5ff6 disk.c:544 + shr bx, 008h ; c1 eb 08 ; 0xf5ff9 + sub bx, strict byte 00041h ; 83 eb 41 ; 0xf5ffc + cmp bx, strict byte 0000fh ; 83 fb 0f ; 0xf5fff + jnbe short 06028h ; 77 24 ; 0xf6002 + add bx, bx ; 01 db ; 0xf6004 + mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf6006 + xor ch, ch ; 30 ed ; 0xf6009 + jmp word [cs:bx+05f62h] ; 2e ff a7 62 5f ; 0xf600b + mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf6010 disk.c:546 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6015 disk.c:547 + xor ah, ah ; 30 e4 ; 0xf6018 + or ah, 030h ; 80 cc 30 ; 0xf601a + mov word [bp+016h], ax ; 89 46 16 ; 0xf601d + mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf6020 disk.c:548 + jmp near 06205h ; e9 dd 01 ; 0xf6025 disk.c:549 + mov bx, 00dcch ; bb cc 0d ; 0xf6028 + mov cx, ds ; 8c d9 ; 0xf602b + mov ax, strict word 00004h ; b8 04 00 ; 0xf602d + call 01910h ; e8 dd b8 ; 0xf6030 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6033 + shr ax, 008h ; c1 e8 08 ; 0xf6036 + push ax ; 50 ; 0xf6039 + push 0083bh ; 68 3b 08 ; 0xf603a + push 0080dh ; 68 0d 08 ; 0xf603d + jmp near 060e0h ; e9 9d 00 ; 0xf6040 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6043 disk.c:558 + mov word [bp-016h], bx ; 89 5e ea ; 0xf6046 + mov es, [bp+004h] ; 8e 46 04 ; 0xf6049 + mov word [bp-014h], bx ; 89 5e ec ; 0xf604c + mov [bp-012h], es ; 8c 46 ee ; 0xf604f + mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf6052 disk.c:560 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf6056 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf6059 disk.c:561 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf605d + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf6060 disk.c:562 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf6064 + mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf6067 disk.c:565 + mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf606b + xor ax, ax ; 31 c0 ; 0xf606f disk.c:566 + xor bx, bx ; 31 db ; 0xf6071 + mov si, strict word 00020h ; be 20 00 ; 0xf6073 + call 0aa20h ; e8 a7 49 ; 0xf6076 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf6079 + mov si, bx ; 89 de ; 0xf607c + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf607e disk.c:567 + mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf6081 + mov word [bp-016h], ax ; 89 46 ea ; 0xf6085 + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf6088 + or dx, word [bp-016h] ; 0b 56 ea ; 0xf608c + or cx, ax ; 09 c1 ; 0xf608f + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf6091 disk.c:572 + xor ah, ah ; 30 e4 ; 0xf6094 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf6096 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6099 + mov bx, di ; 89 fb ; 0xf609c + add bx, ax ; 01 c3 ; 0xf609e + mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf60a0 + mov byte [bp-002h], al ; 88 46 fe ; 0xf60a4 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf60a7 disk.c:573 + cmp ax, word [es:bx+038h] ; 26 3b 47 38 ; 0xf60aa + jnbe short 060c8h ; 77 18 ; 0xf60ae + jne short 060ebh ; 75 39 ; 0xf60b0 + cmp si, word [es:bx+036h] ; 26 3b 77 36 ; 0xf60b2 + jnbe short 060c8h ; 77 10 ; 0xf60b6 + jne short 060ebh ; 75 31 ; 0xf60b8 + cmp cx, word [es:bx+034h] ; 26 3b 4f 34 ; 0xf60ba + jnbe short 060c8h ; 77 08 ; 0xf60be + jne short 060ebh ; 75 29 ; 0xf60c0 + cmp dx, word [es:bx+032h] ; 26 3b 57 32 ; 0xf60c2 + jc short 060ebh ; 72 23 ; 0xf60c6 + mov bx, 00dcch ; bb cc 0d ; 0xf60c8 disk.c:574 + mov cx, ds ; 8c d9 ; 0xf60cb + mov ax, strict word 00004h ; b8 04 00 ; 0xf60cd + call 01910h ; e8 3d b8 ; 0xf60d0 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf60d3 + shr ax, 008h ; c1 e8 08 ; 0xf60d6 + push ax ; 50 ; 0xf60d9 + push 0083bh ; 68 3b 08 ; 0xf60da + push 0084eh ; 68 4e 08 ; 0xf60dd + push strict byte 00004h ; 6a 04 ; 0xf60e0 + call 01953h ; e8 6e b8 ; 0xf60e2 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf60e5 + jmp near 061dfh ; e9 f4 00 ; 0xf60e8 disk.c:575 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf60eb disk.c:579 + shr ax, 008h ; c1 e8 08 ; 0xf60ee + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf60f1 + cmp ax, strict word 00044h ; 3d 44 00 ; 0xf60f4 + je short 060feh ; 74 05 ; 0xf60f7 + cmp ax, strict word 00047h ; 3d 47 00 ; 0xf60f9 + jne short 06101h ; 75 03 ; 0xf60fc + jmp near 06201h ; e9 00 01 ; 0xf60fe disk.c:580 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6101 disk.c:583 + mov word [es:di+018h], strict word 00000h ; 26 c7 45 18 00 00 ; 0xf6104 + mov word [es:di+01ah], strict word 00000h ; 26 c7 45 1a 00 00 ; 0xf610a disk.c:584 + mov word [es:di+01ch], strict word 00000h ; 26 c7 45 1c 00 00 ; 0xf6110 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf6116 disk.c:587 + mov word [es:di+006h], ax ; 26 89 45 06 ; 0xf6119 + mov word [es:di+004h], si ; 26 89 75 04 ; 0xf611d + mov word [es:di+002h], cx ; 26 89 4d 02 ; 0xf6121 + mov word [es:di], dx ; 26 89 15 ; 0xf6125 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf6128 disk.c:588 + mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf612b + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf612f + mov word [es:di+00ah], ax ; 26 89 45 0a ; 0xf6132 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf6136 disk.c:589 + mov word [es:di+00eh], ax ; 26 89 45 0e ; 0xf6139 + mov word [es:di+010h], 00200h ; 26 c7 45 10 00 02 ; 0xf613d disk.c:590 + mov word [es:di+016h], strict word 00000h ; 26 c7 45 16 00 00 ; 0xf6143 disk.c:591 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf6149 disk.c:592 + mov byte [es:di+00ch], al ; 26 88 45 0c ; 0xf614c + mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf6150 disk.c:595 + add bx, bx ; 01 db ; 0xf6153 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6155 + xor ah, ah ; 30 e4 ; 0xf6158 + sal ax, 002h ; c1 e0 02 ; 0xf615a + add bx, ax ; 01 c3 ; 0xf615d + push ES ; 06 ; 0xf615f + push di ; 57 ; 0xf6160 + call word [word bx-00002h] ; ff 97 fe ff ; 0xf6161 + mov dx, ax ; 89 c2 ; 0xf6165 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6167 disk.c:596 + mov ax, word [es:di+018h] ; 26 8b 45 18 ; 0xf616a + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf616e + les bx, [bp-014h] ; c4 5e ec ; 0xf6171 disk.c:597 + mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6174 + test dl, dl ; 84 d2 ; 0xf6178 disk.c:599 + je short 060feh ; 74 82 ; 0xf617a + mov bx, 00dcch ; bb cc 0d ; 0xf617c disk.c:600 + mov cx, ds ; 8c d9 ; 0xf617f + mov ax, strict word 00004h ; b8 04 00 ; 0xf6181 + call 01910h ; e8 89 b7 ; 0xf6184 + mov al, dl ; 88 d0 ; 0xf6187 + xor ah, ah ; 30 e4 ; 0xf6189 + push ax ; 50 ; 0xf618b + push word [bp-00ah] ; ff 76 f6 ; 0xf618c + push 0083bh ; 68 3b 08 ; 0xf618f + push 0079fh ; 68 9f 07 ; 0xf6192 + push strict byte 00004h ; 6a 04 ; 0xf6195 + call 01953h ; e8 b9 b7 ; 0xf6197 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf619a + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf619d disk.c:601 + xor ah, ah ; 30 e4 ; 0xf61a0 + or ah, 00ch ; 80 cc 0c ; 0xf61a2 + jmp short 061e7h ; eb 40 ; 0xf61a5 disk.c:602 + or ch, 0b2h ; 80 cd b2 ; 0xf61a7 disk.c:614 + mov word [bp+016h], cx ; 89 4e 16 ; 0xf61aa + jmp short 061eah ; eb 3b ; 0xf61ad disk.c:615 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf61af disk.c:619 + xor ah, ah ; 30 e4 ; 0xf61b2 + push ax ; 50 ; 0xf61b4 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf61b5 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf61b8 + mov bx, di ; 89 fb ; 0xf61bb + mov cx, word [bp-006h] ; 8b 4e fa ; 0xf61bd + call 057fbh ; e8 38 f6 ; 0xf61c0 + test ax, ax ; 85 c0 ; 0xf61c3 + je short 06201h ; 74 3a ; 0xf61c5 + jmp short 061dfh ; eb 16 ; 0xf61c7 disk.c:620 + cmp cx, strict byte 00006h ; 83 f9 06 ; 0xf61c9 disk.c:627 + je short 06201h ; 74 33 ; 0xf61cc + cmp cx, strict byte 00001h ; 83 f9 01 ; 0xf61ce + jc short 061dfh ; 72 0c ; 0xf61d1 + jbe short 06201h ; 76 2c ; 0xf61d3 + cmp cx, strict byte 00003h ; 83 f9 03 ; 0xf61d5 + jc short 061dfh ; 72 05 ; 0xf61d8 + cmp cx, strict byte 00004h ; 83 f9 04 ; 0xf61da + jbe short 06201h ; 76 22 ; 0xf61dd + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61df disk.c:647 + xor ah, ah ; 30 e4 ; 0xf61e2 + or ah, 001h ; 80 cc 01 ; 0xf61e4 + mov word [bp+016h], ax ; 89 46 16 ; 0xf61e7 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61ea disk.c:649 + shr ax, 008h ; c1 e8 08 ; 0xf61ed + mov bx, strict word 00074h ; bb 74 00 ; 0xf61f0 disk.c:53 + mov dx, strict word 00040h ; ba 40 00 ; 0xf61f3 + mov es, dx ; 8e c2 ; 0xf61f6 + mov byte [es:bx], al ; 26 88 07 ; 0xf61f8 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf61fb disk.c:650 + jmp short 06215h ; eb 14 ; 0xf61ff disk.c:651 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf6201 disk.c:654 + mov bx, strict word 00074h ; bb 74 00 ; 0xf6205 disk.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6208 + mov es, ax ; 8e c0 ; 0xf620b + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf620d + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6211 disk.c:657 + mov sp, bp ; 89 ec ; 0xf6215 disk.c:659 + pop bp ; 5d ; 0xf6217 + retn ; c3 ; 0xf6218 + ; disGetNextSymbol 0xf6219 LB 0x4b3f -> off=0x0 cb=0000000000000153 uValue=00000000000f4c19 'int14_function' +int14_function: ; 0xf6219 LB 0x153 + push bp ; 55 ; 0xf6219 serial.c:70 + mov bp, sp ; 89 e5 ; 0xf621a + push si ; 56 ; 0xf621c + push di ; 57 ; 0xf621d + sti ; fb ; 0xf621e serial.c:75 + mov si, word [bp+00eh] ; 8b 76 0e ; 0xf621f serial.c:77 + add si, si ; 01 f6 ; 0xf6222 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6224 serial.c:58 + mov es, ax ; 8e c0 ; 0xf6227 + mov si, word [es:si] ; 26 8b 34 ; 0xf6229 + mov bx, si ; 89 f3 ; 0xf622c serial.c:59 + mov di, word [bp+00eh] ; 8b 7e 0e ; 0xf622e serial.c:78 + add di, strict byte 0007ch ; 83 c7 7c ; 0xf6231 + mov cl, byte [es:di] ; 26 8a 0d ; 0xf6234 serial.c:48 + cmp word [bp+00eh], strict byte 00004h ; 83 7e 0e 04 ; 0xf6237 serial.c:79 + jnc short 06241h ; 73 04 ; 0xf623b + test si, si ; 85 f6 ; 0xf623d + jnbe short 06244h ; 77 03 ; 0xf623f + jmp near 06361h ; e9 1d 01 ; 0xf6241 + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6244 serial.c:80 + cmp AL, strict byte 001h ; 3c 01 ; 0xf6247 + jc short 06258h ; 72 0d ; 0xf6249 + jbe short 062b8h ; 76 6b ; 0xf624b + cmp AL, strict byte 003h ; 3c 03 ; 0xf624d + je short 062b0h ; 74 5f ; 0xf624f + cmp AL, strict byte 002h ; 3c 02 ; 0xf6251 + je short 062b3h ; 74 5e ; 0xf6253 + jmp near 0635bh ; e9 03 01 ; 0xf6255 + test al, al ; 84 c0 ; 0xf6258 + jne short 062b5h ; 75 59 ; 0xf625a + lea dx, [bx+003h] ; 8d 57 03 ; 0xf625c serial.c:82 + in AL, DX ; ec ; 0xf625f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6260 + or AL, strict byte 080h ; 0c 80 ; 0xf6262 + out DX, AL ; ee ; 0xf6264 + lea si, [bx+001h] ; 8d 77 01 ; 0xf6265 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6268 serial.c:83 + test AL, strict byte 0e0h ; a8 e0 ; 0xf626b + jne short 0627bh ; 75 0c ; 0xf626d + mov AL, strict byte 017h ; b0 17 ; 0xf626f serial.c:84 + mov dx, bx ; 89 da ; 0xf6271 + out DX, AL ; ee ; 0xf6273 + mov AL, strict byte 004h ; b0 04 ; 0xf6274 serial.c:85 + mov dx, si ; 89 f2 ; 0xf6276 + out DX, AL ; ee ; 0xf6278 + jmp short 06292h ; eb 17 ; 0xf6279 serial.c:86 + and AL, strict byte 0e0h ; 24 e0 ; 0xf627b serial.c:87 + xor ah, ah ; 30 e4 ; 0xf627d + sar ax, 005h ; c1 f8 05 ; 0xf627f + mov cl, al ; 88 c1 ; 0xf6282 + mov ax, 00600h ; b8 00 06 ; 0xf6284 + sar ax, CL ; d3 f8 ; 0xf6287 + mov dx, bx ; 89 da ; 0xf6289 + out DX, AL ; ee ; 0xf628b + shr ax, 008h ; c1 e8 08 ; 0xf628c serial.c:89 + mov dx, si ; 89 f2 ; 0xf628f + out DX, AL ; ee ; 0xf6291 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6292 serial.c:91 + and AL, strict byte 01fh ; 24 1f ; 0xf6295 + lea dx, [bx+003h] ; 8d 57 03 ; 0xf6297 + out DX, AL ; ee ; 0xf629a + lea dx, [bx+005h] ; 8d 57 05 ; 0xf629b serial.c:92 + in AL, DX ; ec ; 0xf629e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf629f + mov byte [bp+013h], al ; 88 46 13 ; 0xf62a1 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf62a4 serial.c:93 + in AL, DX ; ec ; 0xf62a7 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf62a8 + mov byte [bp+012h], al ; 88 46 12 ; 0xf62aa + jmp near 0633ch ; e9 8c 00 ; 0xf62ad + jmp near 0634ah ; e9 97 00 ; 0xf62b0 + jmp short 06303h ; eb 4e ; 0xf62b3 + jmp near 0635bh ; e9 a3 00 ; 0xf62b5 + mov si, strict word 0006ch ; be 6c 00 ; 0xf62b8 serial.c:58 + mov si, word [es:si] ; 26 8b 34 ; 0xf62bb + lea dx, [bx+005h] ; 8d 57 05 ; 0xf62be serial.c:98 + in AL, DX ; ec ; 0xf62c1 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf62c2 + and ax, strict word 00060h ; 25 60 00 ; 0xf62c4 + cmp ax, strict word 00060h ; 3d 60 00 ; 0xf62c7 + je short 062e5h ; 74 19 ; 0xf62ca + test cl, cl ; 84 c9 ; 0xf62cc + je short 062e5h ; 74 15 ; 0xf62ce + mov di, strict word 0006ch ; bf 6c 00 ; 0xf62d0 serial.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf62d3 + mov es, ax ; 8e c0 ; 0xf62d6 + mov ax, word [es:di] ; 26 8b 05 ; 0xf62d8 + cmp ax, si ; 39 f0 ; 0xf62db serial.c:100 + je short 062beh ; 74 df ; 0xf62dd + mov si, ax ; 89 c6 ; 0xf62df serial.c:101 + db 0feh, 0c9h + ; dec cl ; fe c9 ; 0xf62e1 serial.c:102 + jmp short 062beh ; eb d9 ; 0xf62e3 serial.c:104 + test cl, cl ; 84 c9 ; 0xf62e5 serial.c:105 + je short 062efh ; 74 06 ; 0xf62e7 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf62e9 + mov dx, bx ; 89 da ; 0xf62ec + out DX, AL ; ee ; 0xf62ee + lea dx, [bx+005h] ; 8d 57 05 ; 0xf62ef serial.c:106 + in AL, DX ; ec ; 0xf62f2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf62f3 + mov byte [bp+013h], al ; 88 46 13 ; 0xf62f5 + test cl, cl ; 84 c9 ; 0xf62f8 serial.c:107 + jne short 0633ch ; 75 40 ; 0xf62fa + or AL, strict byte 080h ; 0c 80 ; 0xf62fc + mov byte [bp+013h], al ; 88 46 13 ; 0xf62fe + jmp short 0633ch ; eb 39 ; 0xf6301 + mov si, strict word 0006ch ; be 6c 00 ; 0xf6303 serial.c:58 + mov si, word [es:si] ; 26 8b 34 ; 0xf6306 + lea dx, [bx+005h] ; 8d 57 05 ; 0xf6309 serial.c:112 + in AL, DX ; ec ; 0xf630c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf630d + test AL, strict byte 001h ; a8 01 ; 0xf630f + jne short 0632ch ; 75 19 ; 0xf6311 + test cl, cl ; 84 c9 ; 0xf6313 + je short 0632ch ; 74 15 ; 0xf6315 + mov di, strict word 0006ch ; bf 6c 00 ; 0xf6317 serial.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf631a + mov es, ax ; 8e c0 ; 0xf631d + mov ax, word [es:di] ; 26 8b 05 ; 0xf631f + cmp ax, si ; 39 f0 ; 0xf6322 serial.c:114 + je short 06309h ; 74 e3 ; 0xf6324 + mov si, ax ; 89 c6 ; 0xf6326 serial.c:115 + db 0feh, 0c9h + ; dec cl ; fe c9 ; 0xf6328 serial.c:116 + jmp short 06309h ; eb dd ; 0xf632a serial.c:118 + test cl, cl ; 84 c9 ; 0xf632c serial.c:119 + je short 06342h ; 74 12 ; 0xf632e + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6330 serial.c:120 + mov dx, bx ; 89 da ; 0xf6334 serial.c:121 + in AL, DX ; ec ; 0xf6336 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6337 + mov byte [bp+012h], al ; 88 46 12 ; 0xf6339 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf633c serial.c:122 + jmp short 06365h ; eb 23 ; 0xf6340 + lea dx, [bx+005h] ; 8d 57 05 ; 0xf6342 serial.c:123 + in AL, DX ; ec ; 0xf6345 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6346 + jmp short 062feh ; eb b4 ; 0xf6348 + lea dx, [si+005h] ; 8d 54 05 ; 0xf634a serial.c:128 + in AL, DX ; ec ; 0xf634d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf634e + mov byte [bp+013h], al ; 88 46 13 ; 0xf6350 + lea dx, [si+006h] ; 8d 54 06 ; 0xf6353 serial.c:129 + in AL, DX ; ec ; 0xf6356 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6357 + jmp short 06339h ; eb de ; 0xf6359 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf635b serial.c:133 + jmp short 06365h ; eb 04 ; 0xf635f serial.c:135 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf6361 serial.c:136 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6365 serial.c:138 + pop di ; 5f ; 0xf6368 + pop si ; 5e ; 0xf6369 + pop bp ; 5d ; 0xf636a + retn ; c3 ; 0xf636b + ; disGetNextSymbol 0xf636c LB 0x49ec -> off=0x0 cb=0000000000000030 uValue=00000000000f4d6c 'set_enable_a20' +set_enable_a20: ; 0xf636c LB 0x30 + push bp ; 55 ; 0xf636c system.c:298 + mov bp, sp ; 89 e5 ; 0xf636d + push bx ; 53 ; 0xf636f + push cx ; 51 ; 0xf6370 + push dx ; 52 ; 0xf6371 + mov bx, ax ; 89 c3 ; 0xf6372 + mov dx, 00092h ; ba 92 00 ; 0xf6374 system.c:305 + in AL, DX ; ec ; 0xf6377 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6378 + mov cl, al ; 88 c1 ; 0xf637a + test bx, bx ; 85 db ; 0xf637c system.c:308 + je short 06385h ; 74 05 ; 0xf637e + or AL, strict byte 002h ; 0c 02 ; 0xf6380 system.c:309 + out DX, AL ; ee ; 0xf6382 + jmp short 06388h ; eb 03 ; 0xf6383 system.c:310 + and AL, strict byte 0fdh ; 24 fd ; 0xf6385 system.c:311 + out DX, AL ; ee ; 0xf6387 + test cl, 002h ; f6 c1 02 ; 0xf6388 system.c:313 + je short 06392h ; 74 05 ; 0xf638b + mov ax, strict word 00001h ; b8 01 00 ; 0xf638d + jmp short 06394h ; eb 02 ; 0xf6390 + xor ax, ax ; 31 c0 ; 0xf6392 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf6394 system.c:314 + pop dx ; 5a ; 0xf6397 + pop cx ; 59 ; 0xf6398 + pop bx ; 5b ; 0xf6399 + pop bp ; 5d ; 0xf639a + retn ; c3 ; 0xf639b + ; disGetNextSymbol 0xf639c LB 0x49bc -> off=0x3b cb=000000000000034f uValue=00000000000f4dd7 'int15_function' + db 0ech, 0e9h, 0d8h, 0c7h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 086h, 083h, 052h, 04fh, 041h + db 024h, 022h, 000h, 007h, 067h, 012h, 064h, 0a2h, 066h, 026h, 064h, 0a2h, 066h, 000h, 067h, 06ah + db 064h, 0a0h, 064h, 03fh, 065h, 0afh, 065h, 0c4h, 065h, 038h, 065h, 038h, 065h, 08ch, 066h, 0b4h + db 066h, 0c7h, 066h, 0a2h, 066h, 0dbh, 066h, 0e2h, 066h, 0e8h, 066h +int15_function: ; 0xf63d7 LB 0x34f + push bp ; 55 ; 0xf63d7 system.c:335 + mov bp, sp ; 89 e5 ; 0xf63d8 + push si ; 56 ; 0xf63da + push di ; 57 ; 0xf63db + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf63dc system.c:342 + shr ax, 008h ; c1 e8 08 ; 0xf63df + cmp ax, 000ech ; 3d ec 00 ; 0xf63e2 + jnbe short 0641ch ; 77 35 ; 0xf63e5 + push CS ; 0e ; 0xf63e7 + pop ES ; 07 ; 0xf63e8 + mov cx, strict word 00014h ; b9 14 00 ; 0xf63e9 + mov di, 0639ch ; bf 9c 63 ; 0xf63ec + repne scasb ; f2 ae ; 0xf63ef + sal cx, 1 ; d1 e1 ; 0xf63f1 + mov di, cx ; 89 cf ; 0xf63f3 + mov bx, word [cs:di+063afh] ; 2e 8b 9d af 63 ; 0xf63f5 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf63fa + xor ah, ah ; 30 e4 ; 0xf63fd + mov cx, word [bp+018h] ; 8b 4e 18 ; 0xf63ff + and cl, 0feh ; 80 e1 fe ; 0xf6402 + mov si, word [bp+018h] ; 8b 76 18 ; 0xf6405 + or si, strict byte 00001h ; 83 ce 01 ; 0xf6408 + mov dx, ax ; 89 c2 ; 0xf640b + or dh, 086h ; 80 ce 86 ; 0xf640d + jmp bx ; ff e3 ; 0xf6410 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6412 system.c:344 + xor ah, ah ; 30 e4 ; 0xf6415 + cmp ax, 000c0h ; 3d c0 00 ; 0xf6417 + je short 0641fh ; 74 03 ; 0xf641a + jmp near 06707h ; e9 e8 02 ; 0xf641c system.c:345 + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf641f system.c:351 + jmp near 066abh ; e9 85 02 ; 0xf6423 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6426 system.c:355 + xor ah, ah ; 30 e4 ; 0xf6429 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf642b + jc short 0643eh ; 72 0e ; 0xf642e + jbe short 06452h ; 76 20 ; 0xf6430 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf6432 + je short 06474h ; 74 3d ; 0xf6435 + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf6437 + je short 06457h ; 74 1b ; 0xf643a + jmp short 06481h ; eb 43 ; 0xf643c + test ax, ax ; 85 c0 ; 0xf643e + jne short 06481h ; 75 3f ; 0xf6440 + xor ax, ax ; 31 c0 ; 0xf6442 system.c:357 + call 0636ch ; e8 25 ff ; 0xf6444 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6447 system.c:358 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf644b system.c:359 + jmp near 06538h ; e9 e6 00 ; 0xf644f system.c:360 + mov ax, strict word 00001h ; b8 01 00 ; 0xf6452 system.c:362 + jmp short 06444h ; eb ed ; 0xf6455 + mov dx, 00092h ; ba 92 00 ; 0xf6457 system.c:367 + in AL, DX ; ec ; 0xf645a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf645b + shr ax, 1 ; d1 e8 ; 0xf645d + and ax, strict word 00001h ; 25 01 00 ; 0xf645f + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf6462 + mov dl, al ; 88 c2 ; 0xf6465 + mov word [bp+012h], dx ; 89 56 12 ; 0xf6467 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf646a system.c:368 + mov byte [bp+013h], ah ; 88 66 13 ; 0xf646e system.c:369 + jmp near 06538h ; e9 c4 00 ; 0xf6471 system.c:370 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6474 system.c:372 + mov byte [bp+013h], ah ; 88 66 13 ; 0xf6478 system.c:373 + mov word [bp+00ch], ax ; 89 46 0c ; 0xf647b system.c:374 + jmp near 06538h ; e9 b7 00 ; 0xf647e system.c:375 + mov bx, 00dcch ; bb cc 0d ; 0xf6481 system.c:377 + mov cx, ds ; 8c d9 ; 0xf6484 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6486 + call 01910h ; e8 84 b4 ; 0xf6489 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf648c + xor ah, ah ; 30 e4 ; 0xf648f + push ax ; 50 ; 0xf6491 + push 00874h ; 68 74 08 ; 0xf6492 + push strict byte 00004h ; 6a 04 ; 0xf6495 + call 01953h ; e8 b9 b4 ; 0xf6497 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf649a + jmp near 066a2h ; e9 02 02 ; 0xf649d + test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf64a0 system.c:409 + jne short 06507h ; 75 61 ; 0xf64a4 + mov bx, 000a0h ; bb a0 00 ; 0xf64a6 system.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf64a9 + mov es, ax ; 8e c0 ; 0xf64ac + mov al, byte [es:bx] ; 26 8a 07 ; 0xf64ae + test AL, strict byte 001h ; a8 01 ; 0xf64b1 system.c:49 + jne short 06501h ; 75 4c ; 0xf64b3 + mov DL, strict byte 001h ; b2 01 ; 0xf64b5 system.c:51 + mov byte [es:bx], dl ; 26 88 17 ; 0xf64b7 system.c:53 + mov bx, 00098h ; bb 98 00 ; 0xf64ba system.c:61 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf64bd + mov word [es:bx], dx ; 26 89 17 ; 0xf64c0 system.c:63 + mov bx, 0009ah ; bb 9a 00 ; 0xf64c3 system.c:61 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf64c6 + mov word [es:bx], ax ; 26 89 07 ; 0xf64c9 system.c:63 + mov bx, 0009ch ; bb 9c 00 ; 0xf64cc system.c:61 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf64cf + mov word [es:bx], ax ; 26 89 07 ; 0xf64d2 system.c:63 + mov bx, 0009eh ; bb 9e 00 ; 0xf64d5 system.c:61 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf64d8 + mov word [es:bx], ax ; 26 89 07 ; 0xf64db system.c:63 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf64de system.c:418 + mov dx, 000a1h ; ba a1 00 ; 0xf64e2 system.c:420 + in AL, DX ; ec ; 0xf64e5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf64e6 + and AL, strict byte 0feh ; 24 fe ; 0xf64e8 system.c:421 + out DX, AL ; ee ; 0xf64ea + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf64eb system.c:422 + call 01664h ; e8 73 b1 ; 0xf64ee + mov dl, al ; 88 c2 ; 0xf64f1 system.c:424 + or dl, 040h ; 80 ca 40 ; 0xf64f3 + xor dh, dh ; 30 f6 ; 0xf64f6 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf64f8 + call 0167fh ; e8 81 b1 ; 0xf64fb + jmp near 06538h ; e9 37 00 ; 0xf64fe system.c:425 + mov word [bp+018h], si ; 89 76 18 ; 0xf6501 system.c:428 + jmp near 06538h ; e9 31 00 ; 0xf6504 system.c:430 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf6507 + jne short 06529h ; 75 1d ; 0xf650a + mov bx, 000a0h ; bb a0 00 ; 0xf650c system.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf650f + mov es, ax ; 8e c0 ; 0xf6512 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6514 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6518 system.c:433 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf651c system.c:434 + call 01664h ; e8 42 b1 ; 0xf651f + mov dl, al ; 88 c2 ; 0xf6522 system.c:435 + and dl, 0bfh ; 80 e2 bf ; 0xf6524 + jmp short 064f6h ; eb cd ; 0xf6527 + mov word [bp+018h], si ; 89 76 18 ; 0xf6529 system.c:438 + mov ax, dx ; 89 d0 ; 0xf652c system.c:440 + xor ah, dh ; 30 f4 ; 0xf652e + xor dl, dl ; 30 d2 ; 0xf6530 + dec ax ; 48 ; 0xf6532 + or dx, ax ; 09 c2 ; 0xf6533 + mov word [bp+012h], dx ; 89 56 12 ; 0xf6535 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6538 system.c:443 + pop di ; 5f ; 0xf653b + pop si ; 5e ; 0xf653c + pop bp ; 5d ; 0xf653d + retn ; c3 ; 0xf653e + mov bx, 000a0h ; bb a0 00 ; 0xf653f system.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6542 + mov es, ax ; 8e c0 ; 0xf6545 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6547 + test AL, strict byte 001h ; a8 01 ; 0xf654a system.c:49 + jne short 065a9h ; 75 5b ; 0xf654c + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf654e system.c:53 + mov bx, 00098h ; bb 98 00 ; 0xf6552 system.c:63 + mov [es:bx], es ; 26 8c 07 ; 0xf6555 + mov bx, 0009ah ; bb 9a 00 ; 0xf6558 system.c:63 + mov word [es:bx], 000a0h ; 26 c7 07 a0 00 ; 0xf655b + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6560 system.c:61 + mov bx, 0009ch ; bb 9c 00 ; 0xf6563 system.c:63 + mov word [es:bx], ax ; 26 89 07 ; 0xf6566 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6569 system.c:61 + mov bx, 0009eh ; bb 9e 00 ; 0xf656c system.c:63 + mov word [es:bx], ax ; 26 89 07 ; 0xf656f + mov dx, 000a1h ; ba a1 00 ; 0xf6572 system.c:456 + in AL, DX ; ec ; 0xf6575 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6576 + and AL, strict byte 0feh ; 24 fe ; 0xf6578 system.c:457 + out DX, AL ; ee ; 0xf657a + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf657b system.c:458 + call 01664h ; e8 e3 b0 ; 0xf657e + mov dl, al ; 88 c2 ; 0xf6581 system.c:460 + or dl, 040h ; 80 ca 40 ; 0xf6583 + xor dh, dh ; 30 f6 ; 0xf6586 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6588 + call 0167fh ; e8 f1 b0 ; 0xf658b + sti ; fb ; 0xf658e system.c:462 + hlt ; f4 ; 0xf658f system.c:464 + mov bx, 000a0h ; bb a0 00 ; 0xf6590 system.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6593 + mov es, ax ; 8e c0 ; 0xf6596 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6598 + test AL, strict byte 080h ; a8 80 ; 0xf659b system.c:467 + je short 0658fh ; 74 f0 ; 0xf659d + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf659f system.c:53 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf65a3 system.c:469 + jmp short 06538h ; eb 8f ; 0xf65a7 system.c:470 + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf65a9 system.c:473 + jmp short 06538h ; eb 89 ; 0xf65ad system.c:475 + mov ax, strict word 00030h ; b8 30 00 ; 0xf65af system.c:480 + call 0169ch ; e8 e7 b0 ; 0xf65b2 + mov word [bp+012h], ax ; 89 46 12 ; 0xf65b5 + cmp ax, 03c00h ; 3d 00 3c ; 0xf65b8 system.c:491 + jbe short 065a3h ; 76 e6 ; 0xf65bb + mov word [bp+012h], 03c00h ; c7 46 12 00 3c ; 0xf65bd system.c:492 + jmp short 065a3h ; eb df ; 0xf65c2 + cli ; fa ; 0xf65c4 system.c:509 + mov ax, strict word 00001h ; b8 01 00 ; 0xf65c5 system.c:511 + call 0636ch ; e8 a1 fd ; 0xf65c8 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf65cb system.c:514 + add bx, strict byte 00038h ; 83 c3 38 ; 0xf65ce + mov es, [bp+014h] ; 8e 46 14 ; 0xf65d1 system.c:61 + mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf65d4 system.c:63 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf65d9 system.c:515 + add bx, strict byte 0003ah ; 83 c3 3a ; 0xf65dc + mov es, [bp+014h] ; 8e 46 14 ; 0xf65df system.c:61 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf65e2 system.c:63 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf65e7 system.c:516 + add bx, strict byte 0003ch ; 83 c3 3c ; 0xf65ea + mov es, [bp+014h] ; 8e 46 14 ; 0xf65ed system.c:51 + mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf65f0 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf65f4 system.c:517 + add bx, strict byte 0003dh ; 83 c3 3d ; 0xf65f7 + mov es, [bp+014h] ; 8e 46 14 ; 0xf65fa system.c:51 + mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf65fd + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6601 system.c:518 + add bx, strict byte 0003eh ; 83 c3 3e ; 0xf6604 + mov es, [bp+014h] ; 8e 46 14 ; 0xf6607 system.c:61 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf660a + mov AL, strict byte 011h ; b0 11 ; 0xf660f system.c:521 + mov dx, strict word 00020h ; ba 20 00 ; 0xf6611 + out DX, AL ; ee ; 0xf6614 + mov dx, 000a0h ; ba a0 00 ; 0xf6615 system.c:522 + out DX, AL ; ee ; 0xf6618 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6619 system.c:523 + shr ax, 008h ; c1 e8 08 ; 0xf661c + mov dx, strict word 00021h ; ba 21 00 ; 0xf661f + out DX, AL ; ee ; 0xf6622 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6623 system.c:524 + mov dx, 000a1h ; ba a1 00 ; 0xf6626 + out DX, AL ; ee ; 0xf6629 + mov AL, strict byte 004h ; b0 04 ; 0xf662a system.c:525 + mov dx, strict word 00021h ; ba 21 00 ; 0xf662c + out DX, AL ; ee ; 0xf662f + mov AL, strict byte 002h ; b0 02 ; 0xf6630 system.c:526 + mov dx, 000a1h ; ba a1 00 ; 0xf6632 + out DX, AL ; ee ; 0xf6635 + mov AL, strict byte 001h ; b0 01 ; 0xf6636 system.c:527 + mov dx, strict word 00021h ; ba 21 00 ; 0xf6638 + out DX, AL ; ee ; 0xf663b + mov dx, 000a1h ; ba a1 00 ; 0xf663c system.c:528 + out DX, AL ; ee ; 0xf663f + mov AL, strict byte 0ffh ; b0 ff ; 0xf6640 system.c:530 + mov dx, strict word 00021h ; ba 21 00 ; 0xf6642 + out DX, AL ; ee ; 0xf6645 + mov dx, 000a1h ; ba a1 00 ; 0xf6646 system.c:531 + out DX, AL ; ee ; 0xf6649 + mov si, word [bp+006h] ; 8b 76 06 ; 0xf664a system.c:533 + lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf664d + lidt [es:si+010h] ; 26 0f 01 5c 10 ; 0xf6652 + push strict byte 00038h ; 6a 38 ; 0xf6657 + call 0665ch ; e8 00 00 ; 0xf6659 + pop ax ; 58 ; 0xf665c + add ax, strict byte 0000eh ; 83 c0 0e ; 0xf665d + push ax ; 50 ; 0xf6660 + smsw ax ; 0f 01 e0 ; 0xf6661 + or AL, strict byte 001h ; 0c 01 ; 0xf6664 + lmsw ax ; 0f 01 f0 ; 0xf6666 + retf ; cb ; 0xf6669 + mov ax, strict word 00018h ; b8 18 00 ; 0xf666a + mov ds, ax ; 8e d8 ; 0xf666d + add AL, strict byte 008h ; 04 08 ; 0xf666f + mov es, ax ; 8e c0 ; 0xf6671 + add AL, strict byte 008h ; 04 08 ; 0xf6673 + mov ss, ax ; 8e d0 ; 0xf6675 + lea ax, [bp+004h] ; 8d 46 04 ; 0xf6677 system.c:534 + db 08bh, 0e0h + ; mov sp, ax ; 8b e0 ; 0xf667a + popaw ; 61 ; 0xf667c + add sp, strict byte 00006h ; 83 c4 06 ; 0xf667d + pop cx ; 59 ; 0xf6680 + pop ax ; 58 ; 0xf6681 + pop ax ; 58 ; 0xf6682 + mov ax, strict word 00030h ; b8 30 00 ; 0xf6683 + push ax ; 50 ; 0xf6686 + push cx ; 51 ; 0xf6687 + retf ; cb ; 0xf6688 + jmp near 06538h ; e9 ac fe ; 0xf6689 system.c:540 + mov bx, 00dcch ; bb cc 0d ; 0xf668c system.c:547 + mov cx, ds ; 8c d9 ; 0xf668f + mov ax, strict word 00004h ; b8 04 00 ; 0xf6691 + call 01910h ; e8 79 b2 ; 0xf6694 + push 008b4h ; 68 b4 08 ; 0xf6697 + push strict byte 00004h ; 6a 04 ; 0xf669a + call 01953h ; e8 b4 b2 ; 0xf669c + add sp, strict byte 00004h ; 83 c4 04 ; 0xf669f + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf66a2 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf66a6 + xor ah, ah ; 30 e4 ; 0xf66a9 + or ah, 086h ; 80 cc 86 ; 0xf66ab + mov word [bp+012h], ax ; 89 46 12 ; 0xf66ae + jmp near 06538h ; e9 84 fe ; 0xf66b1 + mov word [bp+018h], cx ; 89 4e 18 ; 0xf66b4 system.c:553 + mov word [bp+012h], ax ; 89 46 12 ; 0xf66b7 system.c:554 + mov word [bp+00ch], 0e6f5h ; c7 46 0c f5 e6 ; 0xf66ba system.c:555 + mov word [bp+014h], 0f000h ; c7 46 14 00 f0 ; 0xf66bf system.c:556 + jmp near 06538h ; e9 71 fe ; 0xf66c4 system.c:557 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf66c7 system.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf66ca + mov es, ax ; 8e c0 ; 0xf66cd + mov ax, word [es:bx] ; 26 8b 07 ; 0xf66cf + mov word [bp+014h], ax ; 89 46 14 ; 0xf66d2 system.c:59 + mov word [bp+018h], cx ; 89 4e 18 ; 0xf66d5 system.c:561 + jmp near 06538h ; e9 5d fe ; 0xf66d8 system.c:562 + push 008e3h ; 68 e3 08 ; 0xf66db system.c:565 + push strict byte 00008h ; 6a 08 ; 0xf66de + jmp short 0669ch ; eb ba ; 0xf66e0 + mov word [bp+018h], si ; 89 76 18 ; 0xf66e2 system.c:573 + jmp near 06535h ; e9 4d fe ; 0xf66e5 + test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf66e8 system.c:577 + jne short 06707h ; 75 19 ; 0xf66ec + mov word [bp+012h], ax ; 89 46 12 ; 0xf66ee system.c:579 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf66f1 system.c:580 + xor ah, ah ; 30 e4 ; 0xf66f4 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf66f6 + jc short 06700h ; 72 05 ; 0xf66f9 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf66fb + jbe short 066d5h ; 76 d5 ; 0xf66fe + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf6700 system.c:583 + jmp near 06538h ; e9 31 fe ; 0xf6704 system.c:584 + mov bx, 00dcch ; bb cc 0d ; 0xf6707 system.c:588 + mov cx, ds ; 8c d9 ; 0xf670a + mov ax, strict word 00004h ; b8 04 00 ; 0xf670c + call 01910h ; e8 fe b1 ; 0xf670f + push word [bp+00ch] ; ff 76 0c ; 0xf6712 + push word [bp+012h] ; ff 76 12 ; 0xf6715 + push 008fah ; 68 fa 08 ; 0xf6718 + push strict byte 00004h ; 6a 04 ; 0xf671b + call 01953h ; e8 33 b2 ; 0xf671d + add sp, strict byte 00008h ; 83 c4 08 ; 0xf6720 + jmp near 066a2h ; e9 7c ff ; 0xf6723 + ; disGetNextSymbol 0xf6726 LB 0x4632 -> off=0x0 cb=0000000000000167 uValue=00000000000f5126 'int15_blkmove' +int15_blkmove: ; 0xf6726 LB 0x167 + push bp ; 55 ; 0xf6726 system.c:814 + mov bp, sp ; 89 e5 ; 0xf6727 + push si ; 56 ; 0xf6729 + push di ; 57 ; 0xf672a + cli ; fa ; 0xf672b system.c:824 + mov ax, strict word 00001h ; b8 01 00 ; 0xf672c system.c:826 + call 0636ch ; e8 3a fc ; 0xf672f + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf6732 system.c:849 + sal cx, 004h ; c1 e1 04 ; 0xf6735 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf6738 + add ax, cx ; 01 c8 ; 0xf673b + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf673d system.c:850 + shr bx, 00ch ; c1 eb 0c ; 0xf6740 + mov dl, bl ; 88 da ; 0xf6743 + cmp ax, cx ; 39 c8 ; 0xf6745 system.c:851 + jnc short 0674bh ; 73 02 ; 0xf6747 + db 0feh, 0c2h + ; inc dl ; fe c2 ; 0xf6749 system.c:852 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf674b system.c:853 + add bx, strict byte 00008h ; 83 c3 08 ; 0xf674e + mov es, [bp+006h] ; 8e 46 06 ; 0xf6751 system.c:61 + mov word [es:bx], strict word 0002fh ; 26 c7 07 2f 00 ; 0xf6754 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6759 system.c:854 + add bx, strict byte 0000ah ; 83 c3 0a ; 0xf675c + mov es, [bp+006h] ; 8e 46 06 ; 0xf675f system.c:61 + mov word [es:bx], ax ; 26 89 07 ; 0xf6762 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6765 system.c:855 + add bx, strict byte 0000ch ; 83 c3 0c ; 0xf6768 + mov es, [bp+006h] ; 8e 46 06 ; 0xf676b system.c:51 + mov byte [es:bx], dl ; 26 88 17 ; 0xf676e system.c:53 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6771 system.c:856 + add bx, strict byte 0000dh ; 83 c3 0d ; 0xf6774 + mov es, [bp+006h] ; 8e 46 06 ; 0xf6777 system.c:51 + mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf677a system.c:53 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf677e system.c:857 + add bx, strict byte 0000eh ; 83 c3 0e ; 0xf6781 + mov es, [bp+006h] ; 8e 46 06 ; 0xf6784 system.c:61 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6787 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf678c system.c:860 + add bx, strict byte 00020h ; 83 c3 20 ; 0xf678f + mov es, [bp+006h] ; 8e 46 06 ; 0xf6792 system.c:61 + mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6795 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf679a system.c:861 + add bx, strict byte 00022h ; 83 c3 22 ; 0xf679d + mov es, [bp+006h] ; 8e 46 06 ; 0xf67a0 system.c:61 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf67a3 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf67a8 system.c:862 + add bx, strict byte 00024h ; 83 c3 24 ; 0xf67ab + mov es, [bp+006h] ; 8e 46 06 ; 0xf67ae system.c:51 + mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf67b1 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf67b5 system.c:863 + add bx, strict byte 00025h ; 83 c3 25 ; 0xf67b8 + mov es, [bp+006h] ; 8e 46 06 ; 0xf67bb system.c:51 + mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf67be + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf67c2 system.c:864 + add bx, strict byte 00026h ; 83 c3 26 ; 0xf67c5 + mov es, [bp+006h] ; 8e 46 06 ; 0xf67c8 system.c:61 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf67cb + mov ax, ss ; 8c d0 ; 0xf67d0 system.c:867 + mov dx, ax ; 89 c2 ; 0xf67d2 + sal ax, 004h ; c1 e0 04 ; 0xf67d4 system.c:868 + shr dx, 00ch ; c1 ea 0c ; 0xf67d7 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf67da system.c:870 + add bx, strict byte 00028h ; 83 c3 28 ; 0xf67dd + mov es, [bp+006h] ; 8e 46 06 ; 0xf67e0 system.c:61 + mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf67e3 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf67e8 system.c:871 + add bx, strict byte 0002ah ; 83 c3 2a ; 0xf67eb + mov es, [bp+006h] ; 8e 46 06 ; 0xf67ee system.c:61 + mov word [es:bx], ax ; 26 89 07 ; 0xf67f1 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf67f4 system.c:872 + add bx, strict byte 0002ch ; 83 c3 2c ; 0xf67f7 + mov es, [bp+006h] ; 8e 46 06 ; 0xf67fa system.c:51 + mov byte [es:bx], dl ; 26 88 17 ; 0xf67fd + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6800 system.c:873 + add bx, strict byte 0002dh ; 83 c3 2d ; 0xf6803 + mov es, [bp+006h] ; 8e 46 06 ; 0xf6806 system.c:51 + mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf6809 system.c:53 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf680d system.c:874 + add bx, strict byte 0002eh ; 83 c3 2e ; 0xf6810 + mov es, [bp+006h] ; 8e 46 06 ; 0xf6813 system.c:61 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6816 + lea bx, [bp+004h] ; 8d 5e 04 ; 0xf681b system.c:882 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf681e + mov es, [bp+006h] ; 8e 46 06 ; 0xf6821 + mov cx, word [bp+014h] ; 8b 4e 14 ; 0xf6824 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf6827 + mov ds, ax ; 8e d8 ; 0xf6829 + mov word [00467h], bx ; 89 1e 67 04 ; 0xf682b + mov [00469h], ss ; 8c 16 69 04 ; 0xf682f + lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf6833 system.c:884 + lidt [cs:0efe1h] ; 2e 0f 01 1e e1 ef ; 0xf6838 + push strict byte 00020h ; 6a 20 ; 0xf683e + call 06843h ; e8 00 00 ; 0xf6840 + pop ax ; 58 ; 0xf6843 + add ax, strict byte 0000eh ; 83 c0 0e ; 0xf6844 + push ax ; 50 ; 0xf6847 + smsw ax ; 0f 01 e0 ; 0xf6848 + or AL, strict byte 001h ; 0c 01 ; 0xf684b + lmsw ax ; 0f 01 f0 ; 0xf684d + retf ; cb ; 0xf6850 + mov ax, strict word 00010h ; b8 10 00 ; 0xf6851 + mov ds, ax ; 8e d8 ; 0xf6854 + add AL, strict byte 008h ; 04 08 ; 0xf6856 + mov es, ax ; 8e c0 ; 0xf6858 + add AL, strict byte 010h ; 04 10 ; 0xf685a + mov ss, ax ; 8e d0 ; 0xf685c + db 033h, 0f6h + ; xor si, si ; 33 f6 ; 0xf685e system.c:885 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xf6860 + cld ; fc ; 0xf6862 + rep movsw ; f3 a5 ; 0xf6863 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf6865 system.c:886 + out strict byte 080h, AL ; e6 80 ; 0xf6867 + mov AL, strict byte 00fh ; b0 0f ; 0xf6869 + out strict byte 070h, AL ; e6 70 ; 0xf686b + mov AL, strict byte 009h ; b0 09 ; 0xf686d + out strict byte 071h, AL ; e6 71 ; 0xf686f + lidt [cs:0efe1h] ; 2e 0f 01 1e e1 ef ; 0xf6871 + int3 ; cc ; 0xf6877 + xor ax, ax ; 31 c0 ; 0xf6878 system.c:887 + call 0636ch ; e8 ef fa ; 0xf687a + sti ; fb ; 0xf687d system.c:892 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf687e system.c:894 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6882 system.c:895 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6886 system.c:896 + pop di ; 5f ; 0xf6889 + pop si ; 5e ; 0xf688a + pop bp ; 5d ; 0xf688b + retn ; c3 ; 0xf688c + ; disGetNextSymbol 0xf688d LB 0x44cb -> off=0x0 cb=000000000000019b uValue=00000000000f528d 'inv_op_handler' +inv_op_handler: ; 0xf688d LB 0x19b + push bp ; 55 ; 0xf688d invop.c:247 + mov bp, sp ; 89 e5 ; 0xf688e + push si ; 56 ; 0xf6890 + push di ; 57 ; 0xf6891 + push ax ; 50 ; 0xf6892 + push ax ; 50 ; 0xf6893 + les bx, [bp+018h] ; c4 5e 18 ; 0xf6894 invop.c:249 + cmp byte [es:bx], 0f0h ; 26 80 3f f0 ; 0xf6897 invop.c:251 + jne short 068a3h ; 75 06 ; 0xf689b + inc word [bp+018h] ; ff 46 18 ; 0xf689d invop.c:253 + jmp near 06a21h ; e9 7e 01 ; 0xf68a0 invop.c:254 + cmp word [es:bx], 0050fh ; 26 81 3f 0f 05 ; 0xf68a3 + je short 068adh ; 74 03 ; 0xf68a8 + jmp near 06a1dh ; e9 70 01 ; 0xf68aa + mov si, 00800h ; be 00 08 ; 0xf68ad invop.c:256 + xor ax, ax ; 31 c0 ; 0xf68b0 + mov word [bp-006h], ax ; 89 46 fa ; 0xf68b2 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf68b5 invop.c:259 + mov es, ax ; 8e c0 ; 0xf68b8 invop.c:267 + mov bx, word [es:si+02ch] ; 26 8b 5c 2c ; 0xf68ba + sub bx, strict byte 00006h ; 83 eb 06 ; 0xf68be + mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf68c1 + mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf68c5 invop.c:268 + mov es, dx ; 8e c2 ; 0xf68c9 + mov word [es:bx], ax ; 26 89 07 ; 0xf68cb + mov es, [bp-006h] ; 8e 46 fa ; 0xf68ce invop.c:269 + mov ax, word [es:si+022h] ; 26 8b 44 22 ; 0xf68d1 + mov es, dx ; 8e c2 ; 0xf68d5 + mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf68d7 + mov es, [bp-006h] ; 8e 46 fa ; 0xf68db invop.c:270 + mov ax, word [es:si+018h] ; 26 8b 44 18 ; 0xf68de + mov es, dx ; 8e c2 ; 0xf68e2 + mov word [es:bx+004h], ax ; 26 89 47 04 ; 0xf68e4 + mov es, [bp-006h] ; 8e 46 fa ; 0xf68e8 invop.c:273 + mov bl, byte [es:si+038h] ; 26 8a 5c 38 ; 0xf68eb + xor bh, bh ; 30 ff ; 0xf68ef + mov di, word [es:si+036h] ; 26 8b 7c 36 ; 0xf68f1 + mov ax, word [es:si+024h] ; 26 8b 44 24 ; 0xf68f5 invop.c:274 + xor dx, dx ; 31 d2 ; 0xf68f9 + mov cx, strict word 00004h ; b9 04 00 ; 0xf68fb + sal ax, 1 ; d1 e0 ; 0xf68fe + rcl dx, 1 ; d1 d2 ; 0xf6900 + loop 068feh ; e2 fa ; 0xf6902 + cmp bx, dx ; 39 d3 ; 0xf6904 + jne short 0690ch ; 75 04 ; 0xf6906 + cmp di, ax ; 39 c7 ; 0xf6908 + je short 06911h ; 74 05 ; 0xf690a + mov word [bp-008h], strict word 00001h ; c7 46 f8 01 00 ; 0xf690c invop.c:275 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6911 invop.c:276 + mov bl, byte [es:si+04ah] ; 26 8a 5c 4a ; 0xf6914 + xor bh, bh ; 30 ff ; 0xf6918 + mov di, word [es:si+048h] ; 26 8b 7c 48 ; 0xf691a + mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf691e invop.c:277 + xor dx, dx ; 31 d2 ; 0xf6922 + mov cx, strict word 00004h ; b9 04 00 ; 0xf6924 + sal ax, 1 ; d1 e0 ; 0xf6927 + rcl dx, 1 ; d1 d2 ; 0xf6929 + loop 06927h ; e2 fa ; 0xf692b + cmp bx, dx ; 39 d3 ; 0xf692d + jne short 06935h ; 75 04 ; 0xf692f + cmp di, ax ; 39 c7 ; 0xf6931 + je short 06939h ; 74 04 ; 0xf6933 + or byte [bp-008h], 002h ; 80 4e f8 02 ; 0xf6935 invop.c:278 + push strict byte 00000h ; 6a 00 ; 0xf6939 invop.c:281 + push 00800h ; 68 00 08 ; 0xf693b + push strict byte 0001fh ; 6a 1f ; 0xf693e + db 08bh, 0dch + ; mov bx, sp ; 8b dc ; 0xf6940 + lgdt [ss:bx] ; 36 0f 01 17 ; 0xf6942 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6946 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6949 invop.c:284 + mov ax, word [es:si+03ah] ; 26 8b 44 3a ; 0xf694c + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf6950 + mov ax, word [es:si+036h] ; 26 8b 44 36 ; 0xf6954 invop.c:285 + mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf6958 + mov al, byte [es:si+039h] ; 26 8a 44 39 ; 0xf695c invop.c:286 + xor ah, ah ; 30 e4 ; 0xf6960 + mov dx, ax ; 89 c2 ; 0xf6962 + sal dx, 008h ; c1 e2 08 ; 0xf6964 + mov al, byte [es:si+038h] ; 26 8a 44 38 ; 0xf6967 + or dx, ax ; 09 c2 ; 0xf696b + mov word [es:si+00ch], dx ; 26 89 54 0c ; 0xf696d + mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00 ; 0xf6971 invop.c:287 + mov ax, word [es:si+04ch] ; 26 8b 44 4c ; 0xf6977 invop.c:290 + mov word [es:si], ax ; 26 89 04 ; 0xf697b + mov ax, word [es:si+048h] ; 26 8b 44 48 ; 0xf697e invop.c:291 + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf6982 + mov al, byte [es:si+04bh] ; 26 8a 44 4b ; 0xf6986 invop.c:292 + xor ah, ah ; 30 e4 ; 0xf698a + mov dx, ax ; 89 c2 ; 0xf698c + sal dx, 008h ; c1 e2 08 ; 0xf698e + mov al, byte [es:si+04ah] ; 26 8a 44 4a ; 0xf6991 + or dx, ax ; 09 c2 ; 0xf6995 + mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf6997 + mov al, byte [es:si+05ch] ; 26 8a 44 5c ; 0xf699b invop.c:295 + mov dx, word [es:si+05ah] ; 26 8b 54 5a ; 0xf699f + push ax ; 50 ; 0xf69a3 invop.c:296 + push dx ; 52 ; 0xf69a4 + push word [es:si+05eh] ; 26 ff 74 5e ; 0xf69a5 + db 08bh, 0dch + ; mov bx, sp ; 8b dc ; 0xf69a9 + lidt [ss:bx] ; 36 0f 01 1f ; 0xf69ab + add sp, strict byte 00006h ; 83 c4 06 ; 0xf69af + mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf69b2 invop.c:299 + mov ax, 00080h ; b8 80 00 ; 0xf69b5 + mov ss, ax ; 8e d0 ; 0xf69b8 + mov ax, word [ss:0001eh] ; 36 a1 1e 00 ; 0xf69ba + mov ds, ax ; 8e d8 ; 0xf69be + mov ax, word [ss:00024h] ; 36 a1 24 00 ; 0xf69c0 + mov es, ax ; 8e c0 ; 0xf69c4 + smsw ax ; 0f 01 e0 ; 0xf69c6 invop.c:300 + inc ax ; 40 ; 0xf69c9 + lmsw ax ; 0f 01 f0 ; 0xf69ca + mov ax, strict word 00008h ; b8 08 00 ; 0xf69cd + test cx, strict word 00001h ; f7 c1 01 00 ; 0xf69d0 + je near 069dah ; 0f 84 02 00 ; 0xf69d4 + mov es, ax ; 8e c0 ; 0xf69d8 + test cx, strict word 00002h ; f7 c1 02 00 ; 0xf69da + je near 06a02h ; 0f 84 20 00 ; 0xf69de + mov bx, word [word ss:00000h] ; 36 8b 1e 00 00 ; 0xf69e2 + mov word [word ss:00008h], bx ; 36 89 1e 08 00 ; 0xf69e7 + mov bx, word [word ss:00002h] ; 36 8b 1e 02 00 ; 0xf69ec + mov word [word ss:0000ah], bx ; 36 89 1e 0a 00 ; 0xf69f1 + mov bx, word [word ss:00004h] ; 36 8b 1e 04 00 ; 0xf69f6 + mov word [word ss:0000ch], bx ; 36 89 1e 0c 00 ; 0xf69fb + mov ds, ax ; 8e d8 ; 0xf6a00 + mov eax, cr0 ; 0f 20 c0 ; 0xf6a02 + dec ax ; 48 ; 0xf6a05 + mov cr0, eax ; 0f 22 c0 ; 0xf6a06 + mov sp, strict word 00026h ; bc 26 00 ; 0xf6a09 invop.c:301 + popaw ; 61 ; 0xf6a0c + mov sp, word [word ss:0002ch] ; 36 8b 26 2c 00 ; 0xf6a0d + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6a12 + mov ss, [word ss:00020h] ; 36 8e 16 20 00 ; 0xf6a15 + iret ; cf ; 0xf6a1a + jmp short 06a21h ; eb 04 ; 0xf6a1b invop.c:353 + sti ; fb ; 0xf6a1d invop.c:357 + hlt ; f4 ; 0xf6a1e invop.c:358 + jmp short 06a1eh ; eb fd ; 0xf6a1f + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6a21 invop.c:360 + pop di ; 5f ; 0xf6a24 + pop si ; 5e ; 0xf6a25 + pop bp ; 5d ; 0xf6a26 + retn ; c3 ; 0xf6a27 + ; disGetNextSymbol 0xf6a28 LB 0x4330 -> off=0x0 cb=0000000000000028 uValue=00000000000f5428 'init_rtc' +init_rtc: ; 0xf6a28 LB 0x28 + push bp ; 55 ; 0xf6a28 timepci.c:84 + mov bp, sp ; 89 e5 ; 0xf6a29 + push dx ; 52 ; 0xf6a2b + mov dx, strict word 00026h ; ba 26 00 ; 0xf6a2c timepci.c:86 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6a2f + call 0167fh ; e8 4a ac ; 0xf6a32 + mov dx, strict word 00002h ; ba 02 00 ; 0xf6a35 timepci.c:87 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6a38 + call 0167fh ; e8 41 ac ; 0xf6a3b + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6a3e timepci.c:88 + call 01664h ; e8 20 ac ; 0xf6a41 + mov ax, strict word 0000dh ; b8 0d 00 ; 0xf6a44 timepci.c:89 + call 01664h ; e8 1a ac ; 0xf6a47 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6a4a timepci.c:90 + pop dx ; 5a ; 0xf6a4d + pop bp ; 5d ; 0xf6a4e + retn ; c3 ; 0xf6a4f + ; disGetNextSymbol 0xf6a50 LB 0x4308 -> off=0x0 cb=0000000000000021 uValue=00000000000f5450 'rtc_updating' +rtc_updating: ; 0xf6a50 LB 0x21 + push bp ; 55 ; 0xf6a50 timepci.c:92 + mov bp, sp ; 89 e5 ; 0xf6a51 + push dx ; 52 ; 0xf6a53 + mov dx, 061a8h ; ba a8 61 ; 0xf6a54 timepci.c:105 + dec dx ; 4a ; 0xf6a57 timepci.c:106 + je short 06a68h ; 74 0e ; 0xf6a58 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6a5a timepci.c:107 + call 01664h ; e8 04 ac ; 0xf6a5d + test AL, strict byte 080h ; a8 80 ; 0xf6a60 + jne short 06a57h ; 75 f3 ; 0xf6a62 + xor ax, ax ; 31 c0 ; 0xf6a64 timepci.c:108 + jmp short 06a6bh ; eb 03 ; 0xf6a66 + mov ax, strict word 00001h ; b8 01 00 ; 0xf6a68 timepci.c:110 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6a6b timepci.c:111 + pop dx ; 5a ; 0xf6a6e + pop bp ; 5d ; 0xf6a6f + retn ; c3 ; 0xf6a70 + ; disGetNextSymbol 0xf6a71 LB 0x42e7 -> off=0x0 cb=0000000000000098 uValue=00000000000f5471 'int70_function' +int70_function: ; 0xf6a71 LB 0x98 + push bp ; 55 ; 0xf6a71 timepci.c:120 + mov bp, sp ; 89 e5 ; 0xf6a72 + push si ; 56 ; 0xf6a74 + push ax ; 50 ; 0xf6a75 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6a76 timepci.c:126 + call 01664h ; e8 e8 ab ; 0xf6a79 + mov bl, al ; 88 c3 ; 0xf6a7c + mov byte [bp-004h], al ; 88 46 fc ; 0xf6a7e + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6a81 timepci.c:127 + call 01664h ; e8 dd ab ; 0xf6a84 + mov dl, al ; 88 c2 ; 0xf6a87 + test bl, 060h ; f6 c3 60 ; 0xf6a89 timepci.c:129 + je short 06ae9h ; 74 5b ; 0xf6a8c + test AL, strict byte 020h ; a8 20 ; 0xf6a8e timepci.c:130 + je short 06a96h ; 74 04 ; 0xf6a90 + sti ; fb ; 0xf6a92 timepci.c:132 + int 04ah ; cd 4a ; 0xf6a93 timepci.c:133 + cli ; fa ; 0xf6a95 timepci.c:134 + test dl, 040h ; f6 c2 40 ; 0xf6a96 timepci.c:136 + je short 06b00h ; 74 65 ; 0xf6a99 + mov bx, 000a0h ; bb a0 00 ; 0xf6a9b timepci.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf6a9e + mov es, dx ; 8e c2 ; 0xf6aa1 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6aa3 + test al, al ; 84 c0 ; 0xf6aa6 timepci.c:49 + je short 06b00h ; 74 56 ; 0xf6aa8 + mov bx, 0009ch ; bb 9c 00 ; 0xf6aaa timepci.c:68 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf6aad + mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf6ab0 + test bx, bx ; 85 db ; 0xf6ab4 timepci.c:144 + jne short 06aebh ; 75 33 ; 0xf6ab6 + cmp dx, 003d1h ; 81 fa d1 03 ; 0xf6ab8 + jnc short 06aebh ; 73 2d ; 0xf6abc + mov bx, 00098h ; bb 98 00 ; 0xf6abe timepci.c:58 + mov cx, word [es:bx] ; 26 8b 0f ; 0xf6ac1 + mov bx, 0009ah ; bb 9a 00 ; 0xf6ac4 timepci.c:58 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf6ac7 + mov si, 000a0h ; be a0 00 ; 0xf6aca timepci.c:53 + mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf6acd + mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6ad1 timepci.c:151 + and dl, 037h ; 80 e2 37 ; 0xf6ad4 + xor dh, dh ; 30 f6 ; 0xf6ad7 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6ad9 + call 0167fh ; e8 a0 ab ; 0xf6adc + mov es, cx ; 8e c1 ; 0xf6adf timepci.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6ae1 + or AL, strict byte 080h ; 0c 80 ; 0xf6ae4 timepci.c:49 + mov byte [es:bx], al ; 26 88 07 ; 0xf6ae6 timepci.c:53 + jmp short 06b00h ; eb 15 ; 0xf6ae9 timepci.c:153 + mov cx, dx ; 89 d1 ; 0xf6aeb timepci.c:155 + add cx, 0fc2fh ; 81 c1 2f fc ; 0xf6aed + mov dx, bx ; 89 da ; 0xf6af1 + adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf6af3 + mov bx, 0009ch ; bb 9c 00 ; 0xf6af6 timepci.c:73 + mov word [es:bx], cx ; 26 89 0f ; 0xf6af9 + mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf6afc + call 0e030h ; e8 2d 75 ; 0xf6b00 timepci.c:161 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6b03 timepci.c:162 + pop si ; 5e ; 0xf6b06 + pop bp ; 5d ; 0xf6b07 + retn ; c3 ; 0xf6b08 + ; disGetNextSymbol 0xf6b09 LB 0x424f -> off=0x10 cb=00000000000001d9 uValue=00000000000f5519 'int1a_function' + db 02fh, 06bh, 056h, 06bh, 07bh, 06bh, 0b7h, 06bh, 009h, 06ch, 040h, 06ch, 087h, 06ch, 0e2h, 06ch +int1a_function: ; 0xf6b19 LB 0x1d9 + push bp ; 55 ; 0xf6b19 timepci.c:167 + mov bp, sp ; 89 e5 ; 0xf6b1a + sti ; fb ; 0xf6b1c timepci.c:173 + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6b1d timepci.c:175 + cmp AL, strict byte 007h ; 3c 07 ; 0xf6b20 + jnbe short 06b82h ; 77 5e ; 0xf6b22 + mov bl, al ; 88 c3 ; 0xf6b24 + xor bh, bh ; 30 ff ; 0xf6b26 + add bx, bx ; 01 db ; 0xf6b28 + jmp word [cs:bx+06b09h] ; 2e ff a7 09 6b ; 0xf6b2a + cli ; fa ; 0xf6b2f timepci.c:177 + mov bx, 0046eh ; bb 6e 04 ; 0xf6b30 timepci.c:178 + xor ax, ax ; 31 c0 ; 0xf6b33 + mov es, ax ; 8e c0 ; 0xf6b35 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf6b37 + mov word [bp+010h], ax ; 89 46 10 ; 0xf6b3a + mov bx, 0046ch ; bb 6c 04 ; 0xf6b3d timepci.c:179 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf6b40 + mov word [bp+00eh], ax ; 89 46 0e ; 0xf6b43 + mov bx, 00470h ; bb 70 04 ; 0xf6b46 timepci.c:180 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6b49 + mov byte [bp+012h], al ; 88 46 12 ; 0xf6b4c + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6b4f timepci.c:181 + sti ; fb ; 0xf6b53 timepci.c:182 + jmp short 06b82h ; eb 2c ; 0xf6b54 timepci.c:185 + cli ; fa ; 0xf6b56 timepci.c:188 + mov bx, 0046eh ; bb 6e 04 ; 0xf6b57 timepci.c:189 + xor ax, ax ; 31 c0 ; 0xf6b5a + mov es, ax ; 8e c0 ; 0xf6b5c + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6b5e + mov word [es:bx], ax ; 26 89 07 ; 0xf6b61 + mov bx, 0046ch ; bb 6c 04 ; 0xf6b64 timepci.c:190 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6b67 + mov word [es:bx], ax ; 26 89 07 ; 0xf6b6a + mov bx, 00470h ; bb 70 04 ; 0xf6b6d timepci.c:191 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6b70 + sti ; fb ; 0xf6b74 timepci.c:192 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6b75 timepci.c:193 + jmp short 06b82h ; eb 07 ; 0xf6b79 timepci.c:195 + call 06a50h ; e8 d2 fe ; 0xf6b7b timepci.c:198 + test ax, ax ; 85 c0 ; 0xf6b7e + je short 06b85h ; 74 03 ; 0xf6b80 + jmp near 06bb3h ; e9 2e 00 ; 0xf6b82 timepci.c:200 + xor ax, ax ; 31 c0 ; 0xf6b85 timepci.c:203 + call 01664h ; e8 da aa ; 0xf6b87 + mov byte [bp+00fh], al ; 88 46 0f ; 0xf6b8a + mov ax, strict word 00002h ; b8 02 00 ; 0xf6b8d timepci.c:204 + call 01664h ; e8 d1 aa ; 0xf6b90 + mov byte [bp+010h], al ; 88 46 10 ; 0xf6b93 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6b96 timepci.c:205 + call 01664h ; e8 c8 aa ; 0xf6b99 + mov dl, al ; 88 c2 ; 0xf6b9c + mov byte [bp+011h], al ; 88 46 11 ; 0xf6b9e + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6ba1 timepci.c:206 + call 01664h ; e8 bd aa ; 0xf6ba4 + and AL, strict byte 001h ; 24 01 ; 0xf6ba7 + mov byte [bp+00eh], al ; 88 46 0e ; 0xf6ba9 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6bac timepci.c:207 + mov byte [bp+012h], dl ; 88 56 12 ; 0xf6bb0 timepci.c:208 + mov sp, bp ; 89 ec ; 0xf6bb3 timepci.c:210 + pop bp ; 5d ; 0xf6bb5 + retn ; c3 ; 0xf6bb6 + call 06a50h ; e8 96 fe ; 0xf6bb7 timepci.c:223 + test ax, ax ; 85 c0 ; 0xf6bba + je short 06bc1h ; 74 03 ; 0xf6bbc + call 06a28h ; e8 67 fe ; 0xf6bbe timepci.c:224 + mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6bc1 timepci.c:227 + xor dh, dh ; 30 f6 ; 0xf6bc4 + xor ax, ax ; 31 c0 ; 0xf6bc6 + call 0167fh ; e8 b4 aa ; 0xf6bc8 + mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6bcb timepci.c:228 + xor dh, dh ; 30 f6 ; 0xf6bce + mov ax, strict word 00002h ; b8 02 00 ; 0xf6bd0 + call 0167fh ; e8 a9 aa ; 0xf6bd3 + mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6bd6 timepci.c:229 + xor dh, dh ; 30 f6 ; 0xf6bd9 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6bdb + call 0167fh ; e8 9e aa ; 0xf6bde + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6be1 timepci.c:231 + call 01664h ; e8 7d aa ; 0xf6be4 + mov bl, al ; 88 c3 ; 0xf6be7 + and bl, 060h ; 80 e3 60 ; 0xf6be9 + or bl, 002h ; 80 cb 02 ; 0xf6bec + mov al, byte [bp+00eh] ; 8a 46 0e ; 0xf6bef + and AL, strict byte 001h ; 24 01 ; 0xf6bf2 + or bl, al ; 08 c3 ; 0xf6bf4 + mov dl, bl ; 88 da ; 0xf6bf6 timepci.c:233 + xor dh, dh ; 30 f6 ; 0xf6bf8 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6bfa + call 0167fh ; e8 7f aa ; 0xf6bfd + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6c00 timepci.c:234 + mov byte [bp+012h], bl ; 88 5e 12 ; 0xf6c04 timepci.c:235 + jmp short 06bb3h ; eb aa ; 0xf6c07 timepci.c:237 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6c09 timepci.c:240 + call 06a50h ; e8 40 fe ; 0xf6c0d timepci.c:241 + test ax, ax ; 85 c0 ; 0xf6c10 + je short 06c16h ; 74 02 ; 0xf6c12 + jmp short 06bb3h ; eb 9d ; 0xf6c14 timepci.c:243 + mov ax, strict word 00009h ; b8 09 00 ; 0xf6c16 timepci.c:245 + call 01664h ; e8 48 aa ; 0xf6c19 + mov byte [bp+010h], al ; 88 46 10 ; 0xf6c1c + mov ax, strict word 00008h ; b8 08 00 ; 0xf6c1f timepci.c:246 + call 01664h ; e8 3f aa ; 0xf6c22 + mov byte [bp+00fh], al ; 88 46 0f ; 0xf6c25 + mov ax, strict word 00007h ; b8 07 00 ; 0xf6c28 timepci.c:247 + call 01664h ; e8 36 aa ; 0xf6c2b + mov byte [bp+00eh], al ; 88 46 0e ; 0xf6c2e + mov ax, strict word 00032h ; b8 32 00 ; 0xf6c31 timepci.c:248 + call 01664h ; e8 2d aa ; 0xf6c34 + mov byte [bp+011h], al ; 88 46 11 ; 0xf6c37 + mov byte [bp+012h], al ; 88 46 12 ; 0xf6c3a timepci.c:249 + jmp near 06bb3h ; e9 73 ff ; 0xf6c3d timepci.c:251 + call 06a50h ; e8 0d fe ; 0xf6c40 timepci.c:264 + test ax, ax ; 85 c0 ; 0xf6c43 + je short 06c4dh ; 74 06 ; 0xf6c45 + call 06a28h ; e8 de fd ; 0xf6c47 timepci.c:265 + jmp near 06bb3h ; e9 66 ff ; 0xf6c4a timepci.c:267 + mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6c4d timepci.c:269 + xor dh, dh ; 30 f6 ; 0xf6c50 + mov ax, strict word 00009h ; b8 09 00 ; 0xf6c52 + call 0167fh ; e8 27 aa ; 0xf6c55 + mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6c58 timepci.c:270 + xor dh, dh ; 30 f6 ; 0xf6c5b + mov ax, strict word 00008h ; b8 08 00 ; 0xf6c5d + call 0167fh ; e8 1c aa ; 0xf6c60 + mov dl, byte [bp+00eh] ; 8a 56 0e ; 0xf6c63 timepci.c:271 + xor dh, dh ; 30 f6 ; 0xf6c66 + mov ax, strict word 00007h ; b8 07 00 ; 0xf6c68 + call 0167fh ; e8 11 aa ; 0xf6c6b + mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6c6e timepci.c:272 + xor dh, dh ; 30 f6 ; 0xf6c71 + mov ax, strict word 00032h ; b8 32 00 ; 0xf6c73 + call 0167fh ; e8 06 aa ; 0xf6c76 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6c79 timepci.c:273 + call 01664h ; e8 e5 a9 ; 0xf6c7c + mov bl, al ; 88 c3 ; 0xf6c7f + and bl, 07fh ; 80 e3 7f ; 0xf6c81 + jmp near 06bf6h ; e9 6f ff ; 0xf6c84 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6c87 timepci.c:291 + call 01664h ; e8 d7 a9 ; 0xf6c8a + mov bl, al ; 88 c3 ; 0xf6c8d + mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf6c8f timepci.c:292 + test AL, strict byte 020h ; a8 20 ; 0xf6c94 timepci.c:293 + je short 06c9bh ; 74 03 ; 0xf6c96 + jmp near 06bb3h ; e9 18 ff ; 0xf6c98 timepci.c:296 + call 06a50h ; e8 b2 fd ; 0xf6c9b timepci.c:298 + test ax, ax ; 85 c0 ; 0xf6c9e + je short 06ca5h ; 74 03 ; 0xf6ca0 + call 06a28h ; e8 83 fd ; 0xf6ca2 timepci.c:299 + mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6ca5 timepci.c:302 + xor dh, dh ; 30 f6 ; 0xf6ca8 + mov ax, strict word 00001h ; b8 01 00 ; 0xf6caa + call 0167fh ; e8 cf a9 ; 0xf6cad + mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6cb0 timepci.c:303 + xor dh, dh ; 30 f6 ; 0xf6cb3 + mov ax, strict word 00003h ; b8 03 00 ; 0xf6cb5 + call 0167fh ; e8 c4 a9 ; 0xf6cb8 + mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6cbb timepci.c:304 + xor dh, dh ; 30 f6 ; 0xf6cbe + mov ax, strict word 00005h ; b8 05 00 ; 0xf6cc0 + call 0167fh ; e8 b9 a9 ; 0xf6cc3 + mov dx, 000a1h ; ba a1 00 ; 0xf6cc6 timepci.c:305 + in AL, DX ; ec ; 0xf6cc9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6cca + and AL, strict byte 0feh ; 24 fe ; 0xf6ccc + out DX, AL ; ee ; 0xf6cce + mov dl, bl ; 88 da ; 0xf6ccf timepci.c:307 + and dl, 05fh ; 80 e2 5f ; 0xf6cd1 + or dl, 020h ; 80 ca 20 ; 0xf6cd4 + xor dh, dh ; 30 f6 ; 0xf6cd7 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6cd9 + call 0167fh ; e8 a0 a9 ; 0xf6cdc + jmp near 06bb3h ; e9 d1 fe ; 0xf6cdf timepci.c:309 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6ce2 timepci.c:322 + call 01664h ; e8 7c a9 ; 0xf6ce5 + mov bl, al ; 88 c3 ; 0xf6ce8 + mov dl, al ; 88 c2 ; 0xf6cea timepci.c:324 + and dl, 057h ; 80 e2 57 ; 0xf6cec + jmp near 06bf8h ; e9 06 ff ; 0xf6cef + ; disGetNextSymbol 0xf6cf2 LB 0x4066 -> off=0x0 cb=0000000000000034 uValue=00000000000f56f2 'send_to_mouse_ctrl' +send_to_mouse_ctrl: ; 0xf6cf2 LB 0x34 + push bp ; 55 ; 0xf6cf2 ps2mouse.c:87 + mov bp, sp ; 89 e5 ; 0xf6cf3 + push bx ; 53 ; 0xf6cf5 + push dx ; 52 ; 0xf6cf6 + mov bl, al ; 88 c3 ; 0xf6cf7 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6cf9 ps2mouse.c:91 + in AL, DX ; ec ; 0xf6cfc + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6cfd + test AL, strict byte 002h ; a8 02 ; 0xf6cff + je short 06d11h ; 74 0e ; 0xf6d01 + push 00934h ; 68 34 09 ; 0xf6d03 ps2mouse.c:92 + push 01194h ; 68 94 11 ; 0xf6d06 + push strict byte 00007h ; 6a 07 ; 0xf6d09 + call 01953h ; e8 45 ac ; 0xf6d0b + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6d0e + mov AL, strict byte 0d4h ; b0 d4 ; 0xf6d11 ps2mouse.c:93 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6d13 + out DX, AL ; ee ; 0xf6d16 + mov al, bl ; 88 d8 ; 0xf6d17 ps2mouse.c:94 + mov dx, strict word 00060h ; ba 60 00 ; 0xf6d19 + out DX, AL ; ee ; 0xf6d1c + xor al, bl ; 30 d8 ; 0xf6d1d ps2mouse.c:96 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6d1f + pop dx ; 5a ; 0xf6d22 + pop bx ; 5b ; 0xf6d23 + pop bp ; 5d ; 0xf6d24 + retn ; c3 ; 0xf6d25 + ; disGetNextSymbol 0xf6d26 LB 0x4032 -> off=0x0 cb=000000000000005d uValue=00000000000f5726 'get_mouse_data' +get_mouse_data: ; 0xf6d26 LB 0x5d + push bp ; 55 ; 0xf6d26 ps2mouse.c:99 + mov bp, sp ; 89 e5 ; 0xf6d27 + push bx ; 53 ; 0xf6d29 + push cx ; 51 ; 0xf6d2a + push ax ; 50 ; 0xf6d2b + mov bx, ax ; 89 c3 ; 0xf6d2c + mov es, dx ; 8e c2 ; 0xf6d2e + mov cx, 02710h ; b9 10 27 ; 0xf6d30 ps2mouse.c:101 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6d33 ps2mouse.c:104 + in AL, DX ; ec ; 0xf6d36 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6d37 + and ax, strict word 00021h ; 25 21 00 ; 0xf6d39 + cmp ax, strict word 00021h ; 3d 21 00 ; 0xf6d3c + je short 06d69h ; 74 28 ; 0xf6d3f + test cx, cx ; 85 c9 ; 0xf6d41 + je short 06d69h ; 74 24 ; 0xf6d43 + mov dx, strict word 00061h ; ba 61 00 ; 0xf6d45 ps2mouse.c:107 + in AL, DX ; ec ; 0xf6d48 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6d49 + and AL, strict byte 010h ; 24 10 ; 0xf6d4b + mov byte [bp-006h], al ; 88 46 fa ; 0xf6d4d + mov dx, strict word 00061h ; ba 61 00 ; 0xf6d50 ps2mouse.c:108 + in AL, DX ; ec ; 0xf6d53 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6d54 + mov dx, ax ; 89 c2 ; 0xf6d56 + xor dh, ah ; 30 e6 ; 0xf6d58 + and dl, 010h ; 80 e2 10 ; 0xf6d5a + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6d5d + xor ah, ah ; 30 e4 ; 0xf6d60 + cmp dx, ax ; 39 c2 ; 0xf6d62 + je short 06d50h ; 74 ea ; 0xf6d64 + dec cx ; 49 ; 0xf6d66 ps2mouse.c:110 + jmp short 06d33h ; eb ca ; 0xf6d67 ps2mouse.c:111 + test cx, cx ; 85 c9 ; 0xf6d69 ps2mouse.c:113 + jne short 06d71h ; 75 04 ; 0xf6d6b + mov AL, strict byte 001h ; b0 01 ; 0xf6d6d ps2mouse.c:114 + jmp short 06d7ch ; eb 0b ; 0xf6d6f + mov dx, strict word 00060h ; ba 60 00 ; 0xf6d71 ps2mouse.c:116 + in AL, DX ; ec ; 0xf6d74 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6d75 + mov byte [es:bx], al ; 26 88 07 ; 0xf6d77 ps2mouse.c:117 + xor al, al ; 30 c0 ; 0xf6d7a ps2mouse.c:118 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6d7c ps2mouse.c:119 + pop cx ; 59 ; 0xf6d7f + pop bx ; 5b ; 0xf6d80 + pop bp ; 5d ; 0xf6d81 + retn ; c3 ; 0xf6d82 + ; disGetNextSymbol 0xf6d83 LB 0x3fd5 -> off=0x0 cb=0000000000000032 uValue=00000000000f5783 'set_kbd_command_byte' +set_kbd_command_byte: ; 0xf6d83 LB 0x32 + push bp ; 55 ; 0xf6d83 ps2mouse.c:121 + mov bp, sp ; 89 e5 ; 0xf6d84 + push bx ; 53 ; 0xf6d86 + push dx ; 52 ; 0xf6d87 + mov bl, al ; 88 c3 ; 0xf6d88 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6d8a ps2mouse.c:123 + in AL, DX ; ec ; 0xf6d8d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6d8e + test AL, strict byte 002h ; a8 02 ; 0xf6d90 + je short 06da2h ; 74 0e ; 0xf6d92 + push 0093eh ; 68 3e 09 ; 0xf6d94 ps2mouse.c:124 + push 01194h ; 68 94 11 ; 0xf6d97 + push strict byte 00007h ; 6a 07 ; 0xf6d9a + call 01953h ; e8 b4 ab ; 0xf6d9c + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6d9f + mov AL, strict byte 060h ; b0 60 ; 0xf6da2 ps2mouse.c:126 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6da4 + out DX, AL ; ee ; 0xf6da7 + mov al, bl ; 88 d8 ; 0xf6da8 ps2mouse.c:127 + mov dx, strict word 00060h ; ba 60 00 ; 0xf6daa + out DX, AL ; ee ; 0xf6dad + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6dae ps2mouse.c:128 + pop dx ; 5a ; 0xf6db1 + pop bx ; 5b ; 0xf6db2 + pop bp ; 5d ; 0xf6db3 + retn ; c3 ; 0xf6db4 + ; disGetNextSymbol 0xf6db5 LB 0x3fa3 -> off=0x0 cb=000000000000009e uValue=00000000000f57b5 'int74_function' +int74_function: ; 0xf6db5 LB 0x9e + push bp ; 55 ; 0xf6db5 ps2mouse.c:131 + mov bp, sp ; 89 e5 ; 0xf6db6 + push si ; 56 ; 0xf6db8 + push ax ; 50 ; 0xf6db9 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6dba ps2mouse.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6dbd + mov es, ax ; 8e c0 ; 0xf6dc0 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf6dc2 + mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf6dc5 ps2mouse.c:139 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6dca ps2mouse.c:141 + in AL, DX ; ec ; 0xf6dcd + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6dce + and AL, strict byte 021h ; 24 21 ; 0xf6dd0 ps2mouse.c:142 + cmp AL, strict byte 021h ; 3c 21 ; 0xf6dd2 + jne short 06df4h ; 75 1e ; 0xf6dd4 + mov dx, strict word 00060h ; ba 60 00 ; 0xf6dd6 ps2mouse.c:145 + in AL, DX ; ec ; 0xf6dd9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6dda + mov byte [bp-004h], al ; 88 46 fc ; 0xf6ddc + mov si, strict word 00026h ; be 26 00 ; 0xf6ddf ps2mouse.c:48 + mov es, bx ; 8e c3 ; 0xf6de2 + mov al, byte [es:si] ; 26 8a 04 ; 0xf6de4 + mov si, strict word 00027h ; be 27 00 ; 0xf6de7 ps2mouse.c:48 + mov ah, byte [es:si] ; 26 8a 24 ; 0xf6dea + mov cl, ah ; 88 e1 ; 0xf6ded ps2mouse.c:49 + test ah, 080h ; f6 c4 80 ; 0xf6def ps2mouse.c:151 + jne short 06df6h ; 75 02 ; 0xf6df2 + jmp short 06e4dh ; eb 57 ; 0xf6df4 ps2mouse.c:152 + mov ch, cl ; 88 cd ; 0xf6df6 ps2mouse.c:155 + and ch, 007h ; 80 e5 07 ; 0xf6df8 + mov ah, al ; 88 c4 ; 0xf6dfb ps2mouse.c:156 + and ah, 007h ; 80 e4 07 ; 0xf6dfd + mov dl, ah ; 88 e2 ; 0xf6e00 ps2mouse.c:157 + xor dh, dh ; 30 f6 ; 0xf6e02 + mov si, dx ; 89 d6 ; 0xf6e04 + add si, strict byte 00028h ; 83 c6 28 ; 0xf6e06 + mov es, bx ; 8e c3 ; 0xf6e09 ps2mouse.c:53 + mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6e0b + mov byte [es:si], dl ; 26 88 14 ; 0xf6e0e + cmp ah, ch ; 38 ec ; 0xf6e11 ps2mouse.c:159 + jc short 06e43h ; 72 2e ; 0xf6e13 + mov si, strict word 00028h ; be 28 00 ; 0xf6e15 ps2mouse.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf6e18 + xor ah, ah ; 30 e4 ; 0xf6e1b ps2mouse.c:49 + mov word [bp+00ch], ax ; 89 46 0c ; 0xf6e1d + mov si, strict word 00029h ; be 29 00 ; 0xf6e20 ps2mouse.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf6e23 + mov word [bp+00ah], ax ; 89 46 0a ; 0xf6e26 ps2mouse.c:49 + mov si, strict word 0002ah ; be 2a 00 ; 0xf6e29 ps2mouse.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf6e2c + mov word [bp+008h], ax ; 89 46 08 ; 0xf6e2f ps2mouse.c:49 + xor al, al ; 30 c0 ; 0xf6e32 ps2mouse.c:164 + mov word [bp+006h], ax ; 89 46 06 ; 0xf6e34 + test cl, 080h ; f6 c1 80 ; 0xf6e37 ps2mouse.c:167 + je short 06e45h ; 74 09 ; 0xf6e3a + mov word [bp+004h], strict word 00001h ; c7 46 04 01 00 ; 0xf6e3c ps2mouse.c:168 + jmp short 06e45h ; eb 02 ; 0xf6e41 ps2mouse.c:170 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf6e43 ps2mouse.c:171 + mov si, strict word 00026h ; be 26 00 ; 0xf6e45 ps2mouse.c:53 + mov es, bx ; 8e c3 ; 0xf6e48 + mov byte [es:si], al ; 26 88 04 ; 0xf6e4a + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6e4d ps2mouse.c:174 + pop si ; 5e ; 0xf6e50 + pop bp ; 5d ; 0xf6e51 + retn ; c3 ; 0xf6e52 + ; disGetNextSymbol 0xf6e53 LB 0x3f05 -> off=0x10 cb=000000000000036c uValue=00000000000f5863 'int15_function_mouse' + db 0a4h, 06eh, 015h, 06fh, 088h, 06fh, 01ah, 070h, 086h, 070h, 0eah, 06eh, 0aeh, 070h, 077h, 071h +int15_function_mouse: ; 0xf6e63 LB 0x36c + push bp ; 55 ; 0xf6e63 ps2mouse.c:176 + mov bp, sp ; 89 e5 ; 0xf6e64 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6e66 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6e69 ps2mouse.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6e6c + mov es, ax ; 8e c0 ; 0xf6e6f + mov dx, word [es:bx] ; 26 8b 17 ; 0xf6e71 + cmp byte [bp+012h], 007h ; 80 7e 12 07 ; 0xf6e74 ps2mouse.c:198 + jbe short 06e85h ; 76 0b ; 0xf6e78 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf6e7a ps2mouse.c:201 + mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf6e7e ps2mouse.c:202 + jmp near 071cbh ; e9 46 03 ; 0xf6e82 ps2mouse.c:203 + mov ax, strict word 00065h ; b8 65 00 ; 0xf6e85 ps2mouse.c:207 + call 06d83h ; e8 f8 fe ; 0xf6e88 + and word [bp+018h], strict byte 0fffeh ; 83 66 18 fe ; 0xf6e8b ps2mouse.c:208 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6e8f ps2mouse.c:209 + mov bl, byte [bp+012h] ; 8a 5e 12 ; 0xf6e93 ps2mouse.c:211 + cmp bl, 007h ; 80 fb 07 ; 0xf6e96 + jnbe short 06ef8h ; 77 5d ; 0xf6e99 + xor bh, bh ; 30 ff ; 0xf6e9b + add bx, bx ; 01 db ; 0xf6e9d + jmp word [cs:bx+06e53h] ; 2e ff a7 53 6e ; 0xf6e9f + cmp byte [bp+00dh], 001h ; 80 7e 0d 01 ; 0xf6ea4 ps2mouse.c:214 + jnbe short 06efbh ; 77 51 ; 0xf6ea8 + mov bx, strict word 00027h ; bb 27 00 ; 0xf6eaa ps2mouse.c:48 + mov es, dx ; 8e c2 ; 0xf6ead + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6eaf + test AL, strict byte 080h ; a8 80 ; 0xf6eb2 ps2mouse.c:222 + jne short 06ec1h ; 75 0b ; 0xf6eb4 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf6eb6 ps2mouse.c:224 + mov byte [bp+013h], 005h ; c6 46 13 05 ; 0xf6eba ps2mouse.c:225 + jmp near 071c5h ; e9 04 03 ; 0xf6ebe ps2mouse.c:226 + cmp byte [bp+00dh], 000h ; 80 7e 0d 00 ; 0xf6ec1 ps2mouse.c:228 + jne short 06ecbh ; 75 04 ; 0xf6ec5 + mov AL, strict byte 0f5h ; b0 f5 ; 0xf6ec7 ps2mouse.c:230 + jmp short 06ecdh ; eb 02 ; 0xf6ec9 ps2mouse.c:231 + mov AL, strict byte 0f4h ; b0 f4 ; 0xf6ecb ps2mouse.c:233 + xor ah, ah ; 30 e4 ; 0xf6ecd ps2mouse.c:236 + call 06cf2h ; e8 20 fe ; 0xf6ecf + test al, al ; 84 c0 ; 0xf6ed2 ps2mouse.c:237 + jne short 06efeh ; 75 28 ; 0xf6ed4 + mov dx, ss ; 8c d2 ; 0xf6ed6 ps2mouse.c:238 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf6ed8 + call 06d26h ; e8 48 fe ; 0xf6edb + test al, al ; 84 c0 ; 0xf6ede ps2mouse.c:239 + je short 06f44h ; 74 62 ; 0xf6ee0 + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf6ee2 + jne short 06efeh ; 75 16 ; 0xf6ee6 + jmp short 06f44h ; eb 5a ; 0xf6ee8 ps2mouse.c:241 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf6eea ps2mouse.c:252 + cmp AL, strict byte 001h ; 3c 01 ; 0xf6eed + jc short 06ef5h ; 72 04 ; 0xf6eef + cmp AL, strict byte 008h ; 3c 08 ; 0xf6ef1 + jbe short 06f01h ; 76 0c ; 0xf6ef3 + jmp near 0707ch ; e9 84 01 ; 0xf6ef5 + jmp near 071b2h ; e9 b7 02 ; 0xf6ef8 + jmp near 071bdh ; e9 bf 02 ; 0xf6efb + jmp near 07152h ; e9 51 02 ; 0xf6efe + mov bx, strict word 00027h ; bb 27 00 ; 0xf6f01 ps2mouse.c:48 + mov es, dx ; 8e c2 ; 0xf6f04 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6f06 + mov ah, byte [bp+00dh] ; 8a 66 0d ; 0xf6f09 ps2mouse.c:258 + db 0feh, 0cch + ; dec ah ; fe cc ; 0xf6f0c + and AL, strict byte 0f8h ; 24 f8 ; 0xf6f0e + or al, ah ; 08 e0 ; 0xf6f10 + mov byte [es:bx], al ; 26 88 07 ; 0xf6f12 ps2mouse.c:53 + mov bx, strict word 00026h ; bb 26 00 ; 0xf6f15 ps2mouse.c:48 + mov es, dx ; 8e c2 ; 0xf6f18 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6f1a + and AL, strict byte 0f8h ; 24 f8 ; 0xf6f1d ps2mouse.c:266 + mov byte [es:bx], al ; 26 88 07 ; 0xf6f1f ps2mouse.c:53 + mov ax, 000ffh ; b8 ff 00 ; 0xf6f22 ps2mouse.c:268 + call 06cf2h ; e8 ca fd ; 0xf6f25 + test al, al ; 84 c0 ; 0xf6f28 ps2mouse.c:269 + jne short 06efeh ; 75 d2 ; 0xf6f2a + mov dx, ss ; 8c d2 ; 0xf6f2c ps2mouse.c:270 + lea ax, [bp-004h] ; 8d 46 fc ; 0xf6f2e + call 06d26h ; e8 f2 fd ; 0xf6f31 + mov dl, al ; 88 c2 ; 0xf6f34 + cmp byte [bp-004h], 0feh ; 80 7e fc fe ; 0xf6f36 ps2mouse.c:272 + jne short 06f47h ; 75 0b ; 0xf6f3a + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf6f3c ps2mouse.c:273 + mov byte [bp+013h], 004h ; c6 46 13 04 ; 0xf6f40 ps2mouse.c:274 + jmp near 071c5h ; e9 7e 02 ; 0xf6f44 ps2mouse.c:275 + cmp byte [bp-004h], 0fah ; 80 7e fc fa ; 0xf6f47 ps2mouse.c:277 + je short 06f5eh ; 74 11 ; 0xf6f4b + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf6f4d ps2mouse.c:278 + xor ah, ah ; 30 e4 ; 0xf6f50 + push ax ; 50 ; 0xf6f52 + push 00949h ; 68 49 09 ; 0xf6f53 + push strict byte 00007h ; 6a 07 ; 0xf6f56 + call 01953h ; e8 f8 a9 ; 0xf6f58 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6f5b + test dl, dl ; 84 d2 ; 0xf6f5e ps2mouse.c:279 + jne short 06efeh ; 75 9c ; 0xf6f60 + mov dx, ss ; 8c d2 ; 0xf6f62 ps2mouse.c:280 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf6f64 + call 06d26h ; e8 bc fd ; 0xf6f67 + test al, al ; 84 c0 ; 0xf6f6a ps2mouse.c:281 + jne short 06efeh ; 75 90 ; 0xf6f6c + mov dx, ss ; 8c d2 ; 0xf6f6e ps2mouse.c:282 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf6f70 + call 06d26h ; e8 b0 fd ; 0xf6f73 + test al, al ; 84 c0 ; 0xf6f76 ps2mouse.c:283 + jne short 06efeh ; 75 84 ; 0xf6f78 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6f7a ps2mouse.c:285 + mov byte [bp+00ch], al ; 88 46 0c ; 0xf6f7d + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6f80 ps2mouse.c:286 + mov byte [bp+00dh], al ; 88 46 0d ; 0xf6f83 + jmp short 06f44h ; eb bc ; 0xf6f86 ps2mouse.c:287 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf6f88 ps2mouse.c:300 + cmp AL, strict byte 003h ; 3c 03 ; 0xf6f8b + jc short 06f9fh ; 72 10 ; 0xf6f8d + jbe short 06fbdh ; 76 2c ; 0xf6f8f + cmp AL, strict byte 006h ; 3c 06 ; 0xf6f91 + je short 06fcfh ; 74 3a ; 0xf6f93 + cmp AL, strict byte 005h ; 3c 05 ; 0xf6f95 + je short 06fc9h ; 74 30 ; 0xf6f97 + cmp AL, strict byte 004h ; 3c 04 ; 0xf6f99 + je short 06fc3h ; 74 26 ; 0xf6f9b + jmp short 06fd5h ; eb 36 ; 0xf6f9d + cmp AL, strict byte 002h ; 3c 02 ; 0xf6f9f + je short 06fb7h ; 74 14 ; 0xf6fa1 + cmp AL, strict byte 001h ; 3c 01 ; 0xf6fa3 + je short 06fb1h ; 74 0a ; 0xf6fa5 + test al, al ; 84 c0 ; 0xf6fa7 + jne short 06fd5h ; 75 2a ; 0xf6fa9 + mov byte [bp-006h], 00ah ; c6 46 fa 0a ; 0xf6fab ps2mouse.c:301 + jmp short 06fd9h ; eb 28 ; 0xf6faf + mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf6fb1 ps2mouse.c:302 + jmp short 06fd9h ; eb 22 ; 0xf6fb5 + mov byte [bp-006h], 028h ; c6 46 fa 28 ; 0xf6fb7 ps2mouse.c:303 + jmp short 06fd9h ; eb 1c ; 0xf6fbb + mov byte [bp-006h], 03ch ; c6 46 fa 3c ; 0xf6fbd ps2mouse.c:304 + jmp short 06fd9h ; eb 16 ; 0xf6fc1 + mov byte [bp-006h], 050h ; c6 46 fa 50 ; 0xf6fc3 ps2mouse.c:305 + jmp short 06fd9h ; eb 10 ; 0xf6fc7 + mov byte [bp-006h], 064h ; c6 46 fa 64 ; 0xf6fc9 ps2mouse.c:306 + jmp short 06fd9h ; eb 0a ; 0xf6fcd + mov byte [bp-006h], 0c8h ; c6 46 fa c8 ; 0xf6fcf ps2mouse.c:307 + jmp short 06fd9h ; eb 04 ; 0xf6fd3 + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf6fd5 ps2mouse.c:308 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf6fd9 ps2mouse.c:310 + jbe short 0700fh ; 76 30 ; 0xf6fdd + mov ax, 000f3h ; b8 f3 00 ; 0xf6fdf ps2mouse.c:311 + call 06cf2h ; e8 0d fd ; 0xf6fe2 + test al, al ; 84 c0 ; 0xf6fe5 ps2mouse.c:312 + jne short 07004h ; 75 1b ; 0xf6fe7 + mov dx, ss ; 8c d2 ; 0xf6fe9 ps2mouse.c:313 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf6feb + call 06d26h ; e8 35 fd ; 0xf6fee + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6ff1 ps2mouse.c:314 + xor ah, ah ; 30 e4 ; 0xf6ff4 + call 06cf2h ; e8 f9 fc ; 0xf6ff6 + mov dx, ss ; 8c d2 ; 0xf6ff9 ps2mouse.c:315 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf6ffb + call 06d26h ; e8 25 fd ; 0xf6ffe + jmp near 071c5h ; e9 c1 01 ; 0xf7001 ps2mouse.c:317 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7004 ps2mouse.c:319 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7008 ps2mouse.c:320 + jmp near 071c5h ; e9 b6 01 ; 0xf700c ps2mouse.c:322 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf700f ps2mouse.c:324 + mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf7013 ps2mouse.c:325 + jmp near 071c5h ; e9 ab 01 ; 0xf7017 ps2mouse.c:327 + cmp byte [bp+00dh], 004h ; 80 7e 0d 04 ; 0xf701a ps2mouse.c:336 + jnc short 0707ch ; 73 5c ; 0xf701e + mov ax, 000e8h ; b8 e8 00 ; 0xf7020 ps2mouse.c:337 + call 06cf2h ; e8 cc fc ; 0xf7023 + test al, al ; 84 c0 ; 0xf7026 ps2mouse.c:338 + jne short 07072h ; 75 48 ; 0xf7028 + mov dx, ss ; 8c d2 ; 0xf702a ps2mouse.c:339 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf702c + call 06d26h ; e8 f4 fc ; 0xf702f + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7032 ps2mouse.c:340 + je short 07049h ; 74 11 ; 0xf7036 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7038 ps2mouse.c:341 + xor ah, ah ; 30 e4 ; 0xf703b + push ax ; 50 ; 0xf703d + push 00974h ; 68 74 09 ; 0xf703e + push strict byte 00007h ; 6a 07 ; 0xf7041 + call 01953h ; e8 0d a9 ; 0xf7043 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7046 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7049 ps2mouse.c:342 + xor ah, ah ; 30 e4 ; 0xf704c + call 06cf2h ; e8 a1 fc ; 0xf704e + mov dx, ss ; 8c d2 ; 0xf7051 ps2mouse.c:343 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7053 + call 06d26h ; e8 cd fc ; 0xf7056 + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7059 ps2mouse.c:344 + je short 070abh ; 74 4c ; 0xf705d + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf705f ps2mouse.c:345 + xor ah, ah ; 30 e4 ; 0xf7062 + push ax ; 50 ; 0xf7064 + push 00974h ; 68 74 09 ; 0xf7065 + push strict byte 00007h ; 6a 07 ; 0xf7068 + call 01953h ; e8 e6 a8 ; 0xf706a + add sp, strict byte 00006h ; 83 c4 06 ; 0xf706d + jmp short 070abh ; eb 39 ; 0xf7070 ps2mouse.c:347 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7072 ps2mouse.c:349 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7076 ps2mouse.c:350 + jmp short 070abh ; eb 2f ; 0xf707a ps2mouse.c:352 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf707c ps2mouse.c:354 + mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf7080 ps2mouse.c:355 + jmp short 070abh ; eb 25 ; 0xf7084 ps2mouse.c:357 + mov ax, 000f2h ; b8 f2 00 ; 0xf7086 ps2mouse.c:361 + call 06cf2h ; e8 66 fc ; 0xf7089 + test al, al ; 84 c0 ; 0xf708c ps2mouse.c:362 + jne short 070a3h ; 75 13 ; 0xf708e + mov dx, ss ; 8c d2 ; 0xf7090 ps2mouse.c:363 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7092 + call 06d26h ; e8 8e fc ; 0xf7095 + mov dx, ss ; 8c d2 ; 0xf7098 ps2mouse.c:364 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf709a + call 06d26h ; e8 86 fc ; 0xf709d + jmp near 06f80h ; e9 dd fe ; 0xf70a0 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf70a3 ps2mouse.c:365 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf70a7 ps2mouse.c:370 + jmp near 071c5h ; e9 17 01 ; 0xf70ab ps2mouse.c:372 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf70ae ps2mouse.c:376 + test al, al ; 84 c0 ; 0xf70b1 + jbe short 070bch ; 76 07 ; 0xf70b3 + cmp AL, strict byte 002h ; 3c 02 ; 0xf70b5 + jbe short 07123h ; 76 6a ; 0xf70b7 + jmp near 0715ch ; e9 a0 00 ; 0xf70b9 + mov ax, 000e9h ; b8 e9 00 ; 0xf70bc ps2mouse.c:378 + call 06cf2h ; e8 30 fc ; 0xf70bf + test al, al ; 84 c0 ; 0xf70c2 ps2mouse.c:379 + jne short 0712ch ; 75 66 ; 0xf70c4 + mov dx, ss ; 8c d2 ; 0xf70c6 ps2mouse.c:380 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf70c8 + call 06d26h ; e8 58 fc ; 0xf70cb + mov dl, al ; 88 c2 ; 0xf70ce + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf70d0 ps2mouse.c:381 + je short 070e7h ; 74 11 ; 0xf70d4 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf70d6 ps2mouse.c:382 + xor ah, ah ; 30 e4 ; 0xf70d9 + push ax ; 50 ; 0xf70db + push 00974h ; 68 74 09 ; 0xf70dc + push strict byte 00007h ; 6a 07 ; 0xf70df + call 01953h ; e8 6f a8 ; 0xf70e1 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf70e4 + test dl, dl ; 84 d2 ; 0xf70e7 ps2mouse.c:383 + jne short 0712ch ; 75 41 ; 0xf70e9 + mov dx, ss ; 8c d2 ; 0xf70eb ps2mouse.c:384 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf70ed + call 06d26h ; e8 33 fc ; 0xf70f0 + test al, al ; 84 c0 ; 0xf70f3 ps2mouse.c:385 + jne short 07152h ; 75 5b ; 0xf70f5 + mov dx, ss ; 8c d2 ; 0xf70f7 ps2mouse.c:386 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf70f9 + call 06d26h ; e8 27 fc ; 0xf70fc + test al, al ; 84 c0 ; 0xf70ff ps2mouse.c:387 + jne short 07152h ; 75 4f ; 0xf7101 + mov dx, ss ; 8c d2 ; 0xf7103 ps2mouse.c:388 + lea ax, [bp-004h] ; 8d 46 fc ; 0xf7105 + call 06d26h ; e8 1b fc ; 0xf7108 + test al, al ; 84 c0 ; 0xf710b ps2mouse.c:389 + jne short 07152h ; 75 43 ; 0xf710d + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf710f ps2mouse.c:390 + mov byte [bp+00ch], al ; 88 46 0c ; 0xf7112 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf7115 ps2mouse.c:391 + mov byte [bp+010h], al ; 88 46 10 ; 0xf7118 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf711b ps2mouse.c:392 + mov byte [bp+00eh], al ; 88 46 0e ; 0xf711e + jmp short 070abh ; eb 88 ; 0xf7121 ps2mouse.c:394 + cmp AL, strict byte 001h ; 3c 01 ; 0xf7123 ps2mouse.c:408 + jne short 0712eh ; 75 07 ; 0xf7125 + mov ax, 000e6h ; b8 e6 00 ; 0xf7127 ps2mouse.c:409 + jmp short 07131h ; eb 05 ; 0xf712a ps2mouse.c:410 + jmp short 07152h ; eb 24 ; 0xf712c + mov ax, 000e7h ; b8 e7 00 ; 0xf712e ps2mouse.c:411 + call 06cf2h ; e8 be fb ; 0xf7131 + mov dl, al ; 88 c2 ; 0xf7134 + test dl, dl ; 84 d2 ; 0xf7136 ps2mouse.c:413 + jne short 0714eh ; 75 14 ; 0xf7138 + mov dx, ss ; 8c d2 ; 0xf713a ps2mouse.c:414 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf713c + call 06d26h ; e8 e4 fb ; 0xf713f + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7142 ps2mouse.c:415 + je short 0714ch ; 74 04 ; 0xf7146 + mov DL, strict byte 001h ; b2 01 ; 0xf7148 + jmp short 0714eh ; eb 02 ; 0xf714a + xor dl, dl ; 30 d2 ; 0xf714c + test dl, dl ; 84 d2 ; 0xf714e ps2mouse.c:417 + je short 071b0h ; 74 5e ; 0xf7150 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7152 ps2mouse.c:419 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7156 ps2mouse.c:420 + jmp short 071c5h ; eb 69 ; 0xf715a ps2mouse.c:422 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf715c ps2mouse.c:425 + xor ah, ah ; 30 e4 ; 0xf715f + push ax ; 50 ; 0xf7161 + push 009a0h ; 68 a0 09 ; 0xf7162 + push strict byte 00007h ; 6a 07 ; 0xf7165 + call 01953h ; e8 e9 a7 ; 0xf7167 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf716a + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf716d ps2mouse.c:427 + mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf7171 ps2mouse.c:428 + jmp short 071c5h ; eb 4e ; 0xf7175 ps2mouse.c:430 + mov cx, word [bp+00ch] ; 8b 4e 0c ; 0xf7177 ps2mouse.c:435 + mov bx, strict word 00022h ; bb 22 00 ; 0xf717a ps2mouse.c:63 + mov es, dx ; 8e c2 ; 0xf717d + mov word [es:bx], cx ; 26 89 0f ; 0xf717f + mov bx, strict word 00024h ; bb 24 00 ; 0xf7182 ps2mouse.c:63 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf7185 + mov word [es:bx], ax ; 26 89 07 ; 0xf7188 + mov bx, strict word 00027h ; bb 27 00 ; 0xf718b ps2mouse.c:48 + mov ah, byte [es:bx] ; 26 8a 27 ; 0xf718e + mov al, ah ; 88 e0 ; 0xf7191 ps2mouse.c:49 + test cx, cx ; 85 c9 ; 0xf7193 ps2mouse.c:439 + jne short 071a6h ; 75 0f ; 0xf7195 + cmp word [bp+014h], strict byte 00000h ; 83 7e 14 00 ; 0xf7197 + jne short 071a6h ; 75 09 ; 0xf719b + test ah, 080h ; f6 c4 80 ; 0xf719d ps2mouse.c:441 + je short 071a8h ; 74 06 ; 0xf71a0 + and AL, strict byte 07fh ; 24 7f ; 0xf71a2 ps2mouse.c:442 + jmp short 071a8h ; eb 02 ; 0xf71a4 ps2mouse.c:445 + or AL, strict byte 080h ; 0c 80 ; 0xf71a6 ps2mouse.c:447 + mov bx, strict word 00027h ; bb 27 00 ; 0xf71a8 ps2mouse.c:53 + mov es, dx ; 8e c2 ; 0xf71ab + mov byte [es:bx], al ; 26 88 07 ; 0xf71ad + jmp short 071c5h ; eb 13 ; 0xf71b0 ps2mouse.c:450 + push 009bah ; 68 ba 09 ; 0xf71b2 ps2mouse.c:453 + push strict byte 00007h ; 6a 07 ; 0xf71b5 + call 01953h ; e8 99 a7 ; 0xf71b7 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf71ba + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf71bd ps2mouse.c:455 + mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf71c1 ps2mouse.c:456 + mov ax, strict word 00047h ; b8 47 00 ; 0xf71c5 ps2mouse.c:460 + call 06d83h ; e8 b8 fb ; 0xf71c8 + mov sp, bp ; 89 ec ; 0xf71cb ps2mouse.c:461 + pop bp ; 5d ; 0xf71cd + retn ; c3 ; 0xf71ce + ; disGetNextSymbol 0xf71cf LB 0x3b89 -> off=0x0 cb=00000000000000ac uValue=00000000000f5bcf 'int17_function' +int17_function: ; 0xf71cf LB 0xac + push bp ; 55 ; 0xf71cf parallel.c:70 + mov bp, sp ; 89 e5 ; 0xf71d0 + push si ; 56 ; 0xf71d2 + push di ; 57 ; 0xf71d3 + push ax ; 50 ; 0xf71d4 + sti ; fb ; 0xf71d5 parallel.c:75 + mov bx, word [bp+00eh] ; 8b 5e 0e ; 0xf71d6 parallel.c:77 + add bx, bx ; 01 db ; 0xf71d9 + add bx, strict byte 00008h ; 83 c3 08 ; 0xf71db + mov ax, strict word 00040h ; b8 40 00 ; 0xf71de parallel.c:58 + mov es, ax ; 8e c0 ; 0xf71e1 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf71e3 + mov si, bx ; 89 de ; 0xf71e6 parallel.c:59 + cmp byte [bp+013h], 003h ; 80 7e 13 03 ; 0xf71e8 parallel.c:78 + jnc short 071fah ; 73 0c ; 0xf71ec + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf71ee + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf71f1 + jnc short 071fah ; 73 04 ; 0xf71f4 + test bx, bx ; 85 db ; 0xf71f6 + jnbe short 071fdh ; 77 03 ; 0xf71f8 + jmp near 07270h ; e9 73 00 ; 0xf71fa + mov di, ax ; 89 c7 ; 0xf71fd parallel.c:79 + add di, strict byte 00078h ; 83 c7 78 ; 0xf71ff + mov cl, byte [es:di] ; 26 8a 0d ; 0xf7202 parallel.c:48 + xor ch, ch ; 30 ed ; 0xf7205 parallel.c:49 + sal cx, 008h ; c1 e1 08 ; 0xf7207 + cmp byte [bp+013h], 000h ; 80 7e 13 00 ; 0xf720a parallel.c:80 + jne short 0723ch ; 75 2c ; 0xf720e + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf7210 parallel.c:81 + mov dx, bx ; 89 da ; 0xf7213 + out DX, AL ; ee ; 0xf7215 + lea dx, [bx+002h] ; 8d 57 02 ; 0xf7216 parallel.c:82 + in AL, DX ; ec ; 0xf7219 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf721a + mov word [bp-006h], ax ; 89 46 fa ; 0xf721c + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf721f parallel.c:83 + or AL, strict byte 001h ; 0c 01 ; 0xf7222 + out DX, AL ; ee ; 0xf7224 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7225 parallel.c:84 + and AL, strict byte 0feh ; 24 fe ; 0xf7228 + out DX, AL ; ee ; 0xf722a + lea dx, [si+001h] ; 8d 54 01 ; 0xf722b parallel.c:85 + in AL, DX ; ec ; 0xf722e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf722f + test AL, strict byte 040h ; a8 40 ; 0xf7231 + je short 0723ch ; 74 07 ; 0xf7233 + test cx, cx ; 85 c9 ; 0xf7235 + je short 0723ch ; 74 03 ; 0xf7237 + dec cx ; 49 ; 0xf7239 parallel.c:86 + jmp short 0722bh ; eb ef ; 0xf723a parallel.c:87 + cmp byte [bp+013h], 001h ; 80 7e 13 01 ; 0xf723c parallel.c:89 + jne short 07257h ; 75 15 ; 0xf7240 + lea dx, [si+002h] ; 8d 54 02 ; 0xf7242 parallel.c:90 + in AL, DX ; ec ; 0xf7245 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7246 + mov word [bp-006h], ax ; 89 46 fa ; 0xf7248 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf724b parallel.c:91 + and AL, strict byte 0fbh ; 24 fb ; 0xf724e + out DX, AL ; ee ; 0xf7250 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7251 parallel.c:92 + or AL, strict byte 004h ; 0c 04 ; 0xf7254 + out DX, AL ; ee ; 0xf7256 + lea dx, [si+001h] ; 8d 54 01 ; 0xf7257 parallel.c:94 + in AL, DX ; ec ; 0xf725a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf725b + xor AL, strict byte 048h ; 34 48 ; 0xf725d parallel.c:95 + mov byte [bp+013h], al ; 88 46 13 ; 0xf725f + test cx, cx ; 85 c9 ; 0xf7262 parallel.c:96 + jne short 0726ah ; 75 04 ; 0xf7264 + or byte [bp+013h], 001h ; 80 4e 13 01 ; 0xf7266 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf726a parallel.c:97 + jmp short 07274h ; eb 04 ; 0xf726e parallel.c:98 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf7270 parallel.c:99 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7274 parallel.c:101 + pop di ; 5f ; 0xf7277 + pop si ; 5e ; 0xf7278 + pop bp ; 5d ; 0xf7279 + retn ; c3 ; 0xf727a + ; disGetNextSymbol 0xf727b LB 0x3add -> off=0x0 cb=00000000000000b7 uValue=00000000000f5c7b '_wait_' +_wait_: ; 0xf727b LB 0xb7 + push bp ; 55 ; 0xf727b logo.c:181 + mov bp, sp ; 89 e5 ; 0xf727c + push bx ; 53 ; 0xf727e + push cx ; 51 ; 0xf727f + push si ; 56 ; 0xf7280 + push di ; 57 ; 0xf7281 + sub sp, strict byte 0000ah ; 83 ec 0a ; 0xf7282 + mov si, ax ; 89 c6 ; 0xf7285 + mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf7287 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf728a logo.c:186 + pushfw ; 9c ; 0xf728e logo.c:192 + pop ax ; 58 ; 0xf728f + mov word [bp-010h], ax ; 89 46 f0 ; 0xf7290 + sti ; fb ; 0xf7293 logo.c:193 + xor dx, dx ; 31 d2 ; 0xf7294 logo.c:199 + mov bx, 0046ch ; bb 6c 04 ; 0xf7296 logo.c:68 + mov es, dx ; 8e c2 ; 0xf7299 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf729b + mov cx, word [es:bx+002h] ; 26 8b 4f 02 ; 0xf729e + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf72a2 logo.c:69 + hlt ; f4 ; 0xf72a5 logo.c:203 + mov bx, 0046ch ; bb 6c 04 ; 0xf72a6 logo.c:68 + xor ax, ax ; 31 c0 ; 0xf72a9 + mov es, ax ; 8e c0 ; 0xf72ab + mov di, word [es:bx] ; 26 8b 3f ; 0xf72ad + mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf72b0 + mov word [bp-012h], di ; 89 7e ee ; 0xf72b4 logo.c:69 + mov bx, ax ; 89 c3 ; 0xf72b7 + cmp ax, cx ; 39 c8 ; 0xf72b9 logo.c:205 + jnbe short 072c4h ; 77 07 ; 0xf72bb + jne short 072cbh ; 75 0c ; 0xf72bd + cmp di, word [bp-00eh] ; 3b 7e f2 ; 0xf72bf + jbe short 072cbh ; 76 07 ; 0xf72c2 + sub di, word [bp-00eh] ; 2b 7e f2 ; 0xf72c4 logo.c:207 + sbb ax, cx ; 19 c8 ; 0xf72c7 + jmp short 072d6h ; eb 0b ; 0xf72c9 logo.c:210 + cmp ax, cx ; 39 c8 ; 0xf72cb + jc short 072d6h ; 72 07 ; 0xf72cd + jne short 072dah ; 75 09 ; 0xf72cf + cmp di, word [bp-00eh] ; 3b 7e f2 ; 0xf72d1 + jnc short 072dah ; 73 04 ; 0xf72d4 + sub si, di ; 29 fe ; 0xf72d6 logo.c:211 + sbb dx, ax ; 19 c2 ; 0xf72d8 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf72da logo.c:212 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf72dd + mov cx, bx ; 89 d9 ; 0xf72e0 + mov ax, 00100h ; b8 00 01 ; 0xf72e2 logo.c:214 + int 016h ; cd 16 ; 0xf72e5 + je short 072eeh ; 74 05 ; 0xf72e7 + mov AL, strict byte 001h ; b0 01 ; 0xf72e9 + jmp near 072f0h ; e9 02 00 ; 0xf72eb + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xf72ee + test al, al ; 84 c0 ; 0xf72f0 + je short 07317h ; 74 23 ; 0xf72f2 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf72f4 logo.c:216 + int 016h ; cd 16 ; 0xf72f6 + xchg ah, al ; 86 c4 ; 0xf72f8 + mov bl, al ; 88 c3 ; 0xf72fa + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf72fc + xor ah, ah ; 30 e4 ; 0xf72ff logo.c:217 + push ax ; 50 ; 0xf7301 + push 009dch ; 68 dc 09 ; 0xf7302 + push strict byte 00004h ; 6a 04 ; 0xf7305 + call 01953h ; e8 49 a6 ; 0xf7307 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf730a + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf730d logo.c:218 + je short 07317h ; 74 04 ; 0xf7311 + mov al, bl ; 88 d8 ; 0xf7313 logo.c:219 + jmp short 07329h ; eb 12 ; 0xf7315 + test dx, dx ; 85 d2 ; 0xf7317 logo.c:221 + jnle short 072a5h ; 7f 8a ; 0xf7319 + jne short 07321h ; 75 04 ; 0xf731b + test si, si ; 85 f6 ; 0xf731d + jnbe short 072a5h ; 77 84 ; 0xf731f + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf7321 logo.c:222 + push ax ; 50 ; 0xf7324 + popfw ; 9d ; 0xf7325 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7326 logo.c:223 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf7329 logo.c:224 + pop di ; 5f ; 0xf732c + pop si ; 5e ; 0xf732d + pop cx ; 59 ; 0xf732e + pop bx ; 5b ; 0xf732f + pop bp ; 5d ; 0xf7330 + retn ; c3 ; 0xf7331 + ; disGetNextSymbol 0xf7332 LB 0x3a26 -> off=0x0 cb=0000000000000016 uValue=00000000000f5d32 'read_logo_byte' +read_logo_byte: ; 0xf7332 LB 0x16 + push bp ; 55 ; 0xf7332 logo.c:226 + mov bp, sp ; 89 e5 ; 0xf7333 + push dx ; 52 ; 0xf7335 + xor ah, ah ; 30 e4 ; 0xf7336 logo.c:228 + or ah, 001h ; 80 cc 01 ; 0xf7338 + mov dx, 003b8h ; ba b8 03 ; 0xf733b + out DX, ax ; ef ; 0xf733e + in AL, DX ; ec ; 0xf733f logo.c:229 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7340 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf7342 logo.c:230 + pop dx ; 5a ; 0xf7345 + pop bp ; 5d ; 0xf7346 + retn ; c3 ; 0xf7347 + ; disGetNextSymbol 0xf7348 LB 0x3a10 -> off=0x0 cb=0000000000000014 uValue=00000000000f5d48 'read_logo_word' +read_logo_word: ; 0xf7348 LB 0x14 + push bp ; 55 ; 0xf7348 logo.c:232 + mov bp, sp ; 89 e5 ; 0xf7349 + push dx ; 52 ; 0xf734b + xor ah, ah ; 30 e4 ; 0xf734c logo.c:234 + or ah, 001h ; 80 cc 01 ; 0xf734e + mov dx, 003b8h ; ba b8 03 ; 0xf7351 + out DX, ax ; ef ; 0xf7354 + in ax, DX ; ed ; 0xf7355 logo.c:235 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf7356 logo.c:236 + pop dx ; 5a ; 0xf7359 + pop bp ; 5d ; 0xf735a + retn ; c3 ; 0xf735b + ; disGetNextSymbol 0xf735c LB 0x39fc -> off=0x0 cb=000000000000013e uValue=00000000000f5d5c 'print_detected_harddisks' +print_detected_harddisks: ; 0xf735c LB 0x13e + push bp ; 55 ; 0xf735c logo.c:255 + mov bp, sp ; 89 e5 ; 0xf735d + push bx ; 53 ; 0xf735f + push cx ; 51 ; 0xf7360 + push dx ; 52 ; 0xf7361 + push si ; 56 ; 0xf7362 + push di ; 57 ; 0xf7363 + push ax ; 50 ; 0xf7364 + push ax ; 50 ; 0xf7365 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7366 logo.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7369 + mov es, ax ; 8e c0 ; 0xf736c + mov ax, word [es:bx] ; 26 8b 07 ; 0xf736e + mov di, ax ; 89 c7 ; 0xf7371 logo.c:59 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7373 logo.c:260 + xor cl, cl ; 30 c9 ; 0xf7377 logo.c:261 + xor ch, ch ; 30 ed ; 0xf7379 logo.c:262 + mov bx, 002ach ; bb ac 02 ; 0xf737b logo.c:48 + mov es, ax ; 8e c0 ; 0xf737e + mov al, byte [es:bx] ; 26 8a 07 ; 0xf7380 + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf7383 logo.c:49 + xor bl, bl ; 30 db ; 0xf7386 logo.c:267 + cmp bl, byte [bp-00eh] ; 3a 5e f2 ; 0xf7388 + jnc short 073eah ; 73 5d ; 0xf738b + mov al, bl ; 88 d8 ; 0xf738d logo.c:269 + xor ah, ah ; 30 e4 ; 0xf738f + mov si, ax ; 89 c6 ; 0xf7391 + add si, 002adh ; 81 c6 ad 02 ; 0xf7393 + mov es, di ; 8e c7 ; 0xf7397 logo.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf7399 + mov bh, al ; 88 c7 ; 0xf739c logo.c:49 + cmp AL, strict byte 00ch ; 3c 0c ; 0xf739e logo.c:272 + jc short 073c7h ; 72 25 ; 0xf73a0 + test cl, cl ; 84 c9 ; 0xf73a2 logo.c:274 + jne short 073b3h ; 75 0d ; 0xf73a4 + push 009edh ; 68 ed 09 ; 0xf73a6 logo.c:276 + push strict byte 00002h ; 6a 02 ; 0xf73a9 + call 01953h ; e8 a5 a5 ; 0xf73ab + add sp, strict byte 00004h ; 83 c4 04 ; 0xf73ae + mov CL, strict byte 001h ; b1 01 ; 0xf73b1 logo.c:277 + mov al, bl ; 88 d8 ; 0xf73b3 logo.c:280 + xor ah, ah ; 30 e4 ; 0xf73b5 + inc ax ; 40 ; 0xf73b7 + push ax ; 50 ; 0xf73b8 + push 00a02h ; 68 02 0a ; 0xf73b9 + push strict byte 00002h ; 6a 02 ; 0xf73bc + call 01953h ; e8 92 a5 ; 0xf73be + add sp, strict byte 00006h ; 83 c4 06 ; 0xf73c1 + jmp near 07467h ; e9 a0 00 ; 0xf73c4 logo.c:283 + cmp AL, strict byte 008h ; 3c 08 ; 0xf73c7 logo.c:286 + jc short 073deh ; 72 13 ; 0xf73c9 + test ch, ch ; 84 ed ; 0xf73cb logo.c:288 + jne short 073dch ; 75 0d ; 0xf73cd + push 00a15h ; 68 15 0a ; 0xf73cf logo.c:290 + push strict byte 00002h ; 6a 02 ; 0xf73d2 + call 01953h ; e8 7c a5 ; 0xf73d4 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf73d7 + mov CH, strict byte 001h ; b5 01 ; 0xf73da logo.c:291 + jmp short 073b3h ; eb d5 ; 0xf73dc logo.c:292 + cmp AL, strict byte 004h ; 3c 04 ; 0xf73de logo.c:301 + jnc short 073feh ; 73 1c ; 0xf73e0 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf73e2 + je short 073edh ; 74 05 ; 0xf73e6 + jmp short 073feh ; eb 14 ; 0xf73e8 + jmp near 0746ch ; e9 7f 00 ; 0xf73ea + push 00a2ah ; 68 2a 0a ; 0xf73ed logo.c:303 + push strict byte 00002h ; 6a 02 ; 0xf73f0 + call 01953h ; e8 5e a5 ; 0xf73f2 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf73f5 + mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf73f8 logo.c:304 + jmp short 07414h ; eb 16 ; 0xf73fc logo.c:306 + cmp bh, 004h ; 80 ff 04 ; 0xf73fe + jc short 07414h ; 72 11 ; 0xf7401 + test cl, cl ; 84 c9 ; 0xf7403 + jne short 07414h ; 75 0d ; 0xf7405 + push 00a3ch ; 68 3c 0a ; 0xf7407 logo.c:308 + push strict byte 00002h ; 6a 02 ; 0xf740a + call 01953h ; e8 44 a5 ; 0xf740c + add sp, strict byte 00004h ; 83 c4 04 ; 0xf740f + mov CL, strict byte 001h ; b1 01 ; 0xf7412 logo.c:309 + mov al, bl ; 88 d8 ; 0xf7414 logo.c:312 + xor ah, ah ; 30 e4 ; 0xf7416 + inc ax ; 40 ; 0xf7418 + push ax ; 50 ; 0xf7419 + push 00a50h ; 68 50 0a ; 0xf741a + push strict byte 00002h ; 6a 02 ; 0xf741d + call 01953h ; e8 31 a5 ; 0xf741f + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7422 + cmp bh, 004h ; 80 ff 04 ; 0xf7425 logo.c:319 + jc short 0742dh ; 72 03 ; 0xf7428 + sub bh, 004h ; 80 ef 04 ; 0xf742a logo.c:320 + mov al, bh ; 88 f8 ; 0xf742d logo.c:322 + xor ah, ah ; 30 e4 ; 0xf742f + cwd ; 99 ; 0xf7431 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf7432 + sar ax, 1 ; d1 f8 ; 0xf7434 + test ax, ax ; 85 c0 ; 0xf7436 + je short 0743fh ; 74 05 ; 0xf7438 + push 00a5ah ; 68 5a 0a ; 0xf743a logo.c:323 + jmp short 07442h ; eb 03 ; 0xf743d logo.c:324 + push 00a65h ; 68 65 0a ; 0xf743f logo.c:325 + push strict byte 00002h ; 6a 02 ; 0xf7442 + call 01953h ; e8 0c a5 ; 0xf7444 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7447 + mov al, bh ; 88 f8 ; 0xf744a logo.c:327 + xor ah, ah ; 30 e4 ; 0xf744c + cwd ; 99 ; 0xf744e + mov si, strict word 00002h ; be 02 00 ; 0xf744f + idiv si ; f7 fe ; 0xf7452 + test dx, dx ; 85 d2 ; 0xf7454 + je short 0745dh ; 74 05 ; 0xf7456 + push 00a6eh ; 68 6e 0a ; 0xf7458 logo.c:328 + jmp short 07460h ; eb 03 ; 0xf745b logo.c:329 + push 00a74h ; 68 74 0a ; 0xf745d logo.c:330 + push si ; 56 ; 0xf7460 + call 01953h ; e8 ef a4 ; 0xf7461 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7464 + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf7467 logo.c:332 + jmp near 07388h ; e9 1c ff ; 0xf7469 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf746c logo.c:334 + jne short 07485h ; 75 13 ; 0xf7470 + test cl, cl ; 84 c9 ; 0xf7472 + jne short 07485h ; 75 0f ; 0xf7474 + test ch, ch ; 84 ed ; 0xf7476 + jne short 07485h ; 75 0b ; 0xf7478 + push 00a7bh ; 68 7b 0a ; 0xf747a logo.c:337 + push strict byte 00002h ; 6a 02 ; 0xf747d + call 01953h ; e8 d1 a4 ; 0xf747f + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7482 + push 00a8fh ; 68 8f 0a ; 0xf7485 logo.c:339 + push strict byte 00002h ; 6a 02 ; 0xf7488 + call 01953h ; e8 c6 a4 ; 0xf748a + add sp, strict byte 00004h ; 83 c4 04 ; 0xf748d + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7490 logo.c:340 + pop di ; 5f ; 0xf7493 + pop si ; 5e ; 0xf7494 + pop dx ; 5a ; 0xf7495 + pop cx ; 59 ; 0xf7496 + pop bx ; 5b ; 0xf7497 + pop bp ; 5d ; 0xf7498 + retn ; c3 ; 0xf7499 + ; disGetNextSymbol 0xf749a LB 0x38be -> off=0x0 cb=0000000000000024 uValue=00000000000f5e9a 'get_boot_drive' +get_boot_drive: ; 0xf749a LB 0x24 + push bx ; 53 ; 0xf749a logo.c:342 + push dx ; 52 ; 0xf749b + push bp ; 55 ; 0xf749c + mov bp, sp ; 89 e5 ; 0xf749d + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf749f logo.c:58 + mov dx, strict word 00040h ; ba 40 00 ; 0xf74a2 + mov es, dx ; 8e c2 ; 0xf74a5 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf74a7 + mov bx, 002ach ; bb ac 02 ; 0xf74aa logo.c:48 + mov es, dx ; 8e c2 ; 0xf74ad + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf74af + sub AL, strict byte 002h ; 2c 02 ; 0xf74b2 logo.c:350 + cmp al, dl ; 38 d0 ; 0xf74b4 logo.c:352 + jc short 074bah ; 72 02 ; 0xf74b6 + mov AL, strict byte 0ffh ; b0 ff ; 0xf74b8 logo.c:353 + pop bp ; 5d ; 0xf74ba logo.c:357 + pop dx ; 5a ; 0xf74bb + pop bx ; 5b ; 0xf74bc + retn ; c3 ; 0xf74bd + ; disGetNextSymbol 0xf74be LB 0x389a -> off=0x0 cb=0000000000000252 uValue=00000000000f5ebe 'show_logo' +show_logo: ; 0xf74be LB 0x252 + push bp ; 55 ; 0xf74be logo.c:359 + mov bp, sp ; 89 e5 ; 0xf74bf + push bx ; 53 ; 0xf74c1 + push cx ; 51 ; 0xf74c2 + push dx ; 52 ; 0xf74c3 + push si ; 56 ; 0xf74c4 + push di ; 57 ; 0xf74c5 + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf74c6 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf74c9 logo.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf74cc + mov es, ax ; 8e c0 ; 0xf74cf + mov si, word [es:bx] ; 26 8b 37 ; 0xf74d1 + mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf74d4 logo.c:362 + xor dx, dx ; 31 d2 ; 0xf74d8 logo.c:366 + mov AL, strict byte 034h ; b0 34 ; 0xf74da logo.c:373 + out strict byte 043h, AL ; e6 43 ; 0xf74dc + mov AL, strict byte 0d3h ; b0 d3 ; 0xf74de + out strict byte 040h, AL ; e6 40 ; 0xf74e0 + mov AL, strict byte 048h ; b0 48 ; 0xf74e2 + out strict byte 040h, AL ; e6 40 ; 0xf74e4 + mov al, dl ; 88 d0 ; 0xf74e6 logo.c:376 + xor ah, ah ; 30 e4 ; 0xf74e8 + call 07348h ; e8 5b fe ; 0xf74ea + cmp ax, 066bbh ; 3d bb 66 ; 0xf74ed logo.c:377 + jne short 07504h ; 75 12 ; 0xf74f0 + push SS ; 16 ; 0xf74f2 logo.c:381 + pop ES ; 07 ; 0xf74f3 + lea di, [bp-018h] ; 8d 7e e8 ; 0xf74f4 + mov ax, 04f03h ; b8 03 4f ; 0xf74f7 + int 010h ; cd 10 ; 0xf74fa + mov word [es:di], bx ; 26 89 1d ; 0xf74fc + cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf74ff + je short 07507h ; 74 03 ; 0xf7502 + jmp near 075efh ; e9 e8 00 ; 0xf7504 logo.c:382 + mov al, dl ; 88 d0 ; 0xf7507 logo.c:385 + add AL, strict byte 004h ; 04 04 ; 0xf7509 + xor ah, ah ; 30 e4 ; 0xf750b + call 07332h ; e8 22 fe ; 0xf750d + mov cl, al ; 88 c1 ; 0xf7510 + mov byte [bp-014h], al ; 88 46 ec ; 0xf7512 + mov al, dl ; 88 d0 ; 0xf7515 logo.c:386 + add AL, strict byte 005h ; 04 05 ; 0xf7517 + xor ah, ah ; 30 e4 ; 0xf7519 + call 07332h ; e8 14 fe ; 0xf751b + mov dh, al ; 88 c6 ; 0xf751e + mov byte [bp-012h], al ; 88 46 ee ; 0xf7520 + mov al, dl ; 88 d0 ; 0xf7523 logo.c:387 + add AL, strict byte 002h ; 04 02 ; 0xf7525 + xor ah, ah ; 30 e4 ; 0xf7527 + call 07348h ; e8 1c fe ; 0xf7529 + mov bx, ax ; 89 c3 ; 0xf752c + mov word [bp-016h], ax ; 89 46 ea ; 0xf752e + mov al, dl ; 88 d0 ; 0xf7531 logo.c:388 + add AL, strict byte 006h ; 04 06 ; 0xf7533 + xor ah, ah ; 30 e4 ; 0xf7535 + call 07332h ; e8 f8 fd ; 0xf7537 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf753a + test cl, cl ; 84 c9 ; 0xf753d logo.c:391 + jne short 07549h ; 75 08 ; 0xf753f + test dh, dh ; 84 f6 ; 0xf7541 + jne short 07549h ; 75 04 ; 0xf7543 + test bx, bx ; 85 db ; 0xf7545 + je short 07504h ; 74 bb ; 0xf7547 + mov BH, strict byte 020h ; b7 20 ; 0xf7549 logo.c:395 + mov dx, 001e0h ; ba e0 01 ; 0xf754b + mov cx, 00280h ; b9 80 02 ; 0xf754e + mov ax, 05642h ; b8 42 56 ; 0xf7551 + mov BL, strict byte 000h ; b3 00 ; 0xf7554 + int 010h ; cd 10 ; 0xf7556 + cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf7558 logo.c:397 + je short 07565h ; 74 08 ; 0xf755b + mov bx, 00142h ; bb 42 01 ; 0xf755d logo.c:398 + mov ax, 04f02h ; b8 02 4f ; 0xf7560 + int 010h ; cd 10 ; 0xf7563 + cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf7565 logo.c:400 + je short 07590h ; 74 25 ; 0xf7569 + xor bx, bx ; 31 db ; 0xf756b logo.c:402 + jmp short 07575h ; eb 06 ; 0xf756d + inc bx ; 43 ; 0xf756f logo.c:404 + cmp bx, strict byte 00010h ; 83 fb 10 ; 0xf7570 + jnbe short 07597h ; 77 22 ; 0xf7573 + mov ax, bx ; 89 d8 ; 0xf7575 + or ah, 002h ; 80 cc 02 ; 0xf7577 + mov dx, 003b8h ; ba b8 03 ; 0xf757a + out DX, ax ; ef ; 0xf757d + xor dx, dx ; 31 d2 ; 0xf757e + mov ax, strict word 00001h ; b8 01 00 ; 0xf7580 + call 0727bh ; e8 f5 fc ; 0xf7583 + cmp AL, strict byte 086h ; 3c 86 ; 0xf7586 + jne short 0756fh ; 75 e5 ; 0xf7588 + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf758a + jmp short 07597h ; eb 07 ; 0xf758e + mov ax, 00210h ; b8 10 02 ; 0xf7590 logo.c:414 + mov dx, 003b8h ; ba b8 03 ; 0xf7593 + out DX, ax ; ef ; 0xf7596 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7597 logo.c:417 + jne short 075b1h ; 75 14 ; 0xf759b + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf759d logo.c:419 + shr ax, 004h ; c1 e8 04 ; 0xf75a0 + mov dx, strict word 00001h ; ba 01 00 ; 0xf75a3 + call 0727bh ; e8 d2 fc ; 0xf75a6 + cmp AL, strict byte 086h ; 3c 86 ; 0xf75a9 logo.c:420 + jne short 075b1h ; 75 04 ; 0xf75ab + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf75ad logo.c:421 + cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf75b1 logo.c:425 + je short 075e2h ; 74 2b ; 0xf75b5 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf75b7 + jne short 075e2h ; 75 25 ; 0xf75bb + mov bx, strict word 00010h ; bb 10 00 ; 0xf75bd logo.c:427 + jmp short 075c7h ; eb 05 ; 0xf75c0 + dec bx ; 4b ; 0xf75c2 logo.c:429 + test bx, bx ; 85 db ; 0xf75c3 + jbe short 075efh ; 76 28 ; 0xf75c5 + mov ax, bx ; 89 d8 ; 0xf75c7 + or ah, 002h ; 80 cc 02 ; 0xf75c9 + mov dx, 003b8h ; ba b8 03 ; 0xf75cc + out DX, ax ; ef ; 0xf75cf + xor dx, dx ; 31 d2 ; 0xf75d0 + mov ax, strict word 00001h ; b8 01 00 ; 0xf75d2 + call 0727bh ; e8 a3 fc ; 0xf75d5 + cmp AL, strict byte 086h ; 3c 86 ; 0xf75d8 + jne short 075c2h ; 75 e6 ; 0xf75da + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf75dc + jmp short 075efh ; eb 0d ; 0xf75e0 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf75e2 logo.c:438 + jne short 075efh ; 75 07 ; 0xf75e6 + mov ax, 00200h ; b8 00 02 ; 0xf75e8 logo.c:439 + mov dx, 003b8h ; ba b8 03 ; 0xf75eb + out DX, ax ; ef ; 0xf75ee + mov bx, 00331h ; bb 31 03 ; 0xf75ef logo.c:53 + mov es, si ; 8e c6 ; 0xf75f2 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf75f4 + mov AL, strict byte 003h ; b0 03 ; 0xf75f8 logo.c:447 + mov AH, strict byte 000h ; b4 00 ; 0xf75fa + int 010h ; cd 10 ; 0xf75fc + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf75fe logo.c:450 + je short 07618h ; 74 14 ; 0xf7602 + cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf7604 logo.c:453 + jne short 07643h ; 75 39 ; 0xf7608 + cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf760a + jne short 07643h ; 75 33 ; 0xf760e + cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf7610 + je short 0761bh ; 74 05 ; 0xf7614 + jmp short 07643h ; eb 2b ; 0xf7616 + jmp near 076f3h ; e9 d8 00 ; 0xf7618 + cmp byte [bp-00ch], 002h ; 80 7e f4 02 ; 0xf761b logo.c:455 + jne short 0762ch ; 75 0b ; 0xf761f + push 00a91h ; 68 91 0a ; 0xf7621 logo.c:456 + push strict byte 00002h ; 6a 02 ; 0xf7624 + call 01953h ; e8 2a a3 ; 0xf7626 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7629 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf762c logo.c:459 + jne short 07643h ; 75 11 ; 0xf7630 + mov dx, strict word 00001h ; ba 01 00 ; 0xf7632 logo.c:462 + mov ax, 000c0h ; b8 c0 00 ; 0xf7635 + call 0727bh ; e8 40 fc ; 0xf7638 + cmp AL, strict byte 086h ; 3c 86 ; 0xf763b logo.c:463 + jne short 07643h ; 75 04 ; 0xf763d + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf763f logo.c:464 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7643 logo.c:469 + je short 07618h ; 74 cf ; 0xf7647 + mov byte [bp-010h], 000h ; c6 46 f0 00 ; 0xf7649 logo.c:471 + mov ax, 00100h ; b8 00 01 ; 0xf764d logo.c:474 + mov cx, 01000h ; b9 00 10 ; 0xf7650 + int 010h ; cd 10 ; 0xf7653 + mov ax, 00700h ; b8 00 07 ; 0xf7655 + mov BH, strict byte 007h ; b7 07 ; 0xf7658 + db 033h, 0c9h + ; xor cx, cx ; 33 c9 ; 0xf765a + mov dx, 0184fh ; ba 4f 18 ; 0xf765c + int 010h ; cd 10 ; 0xf765f + mov ax, 00200h ; b8 00 02 ; 0xf7661 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xf7664 + db 033h, 0d2h + ; xor dx, dx ; 33 d2 ; 0xf7666 + int 010h ; cd 10 ; 0xf7668 + push 00ab3h ; 68 b3 0a ; 0xf766a logo.c:477 + push strict byte 00002h ; 6a 02 ; 0xf766d + call 01953h ; e8 e1 a2 ; 0xf766f + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7672 + call 0735ch ; e8 e4 fc ; 0xf7675 logo.c:478 + push 00af7h ; 68 f7 0a ; 0xf7678 logo.c:479 + push strict byte 00002h ; 6a 02 ; 0xf767b + call 01953h ; e8 d3 a2 ; 0xf767d + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7680 + mov dx, strict word 00001h ; ba 01 00 ; 0xf7683 logo.c:488 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7686 + call 0727bh ; e8 ef fb ; 0xf7689 + mov bl, al ; 88 c3 ; 0xf768c + test al, al ; 84 c0 ; 0xf768e logo.c:489 + je short 07683h ; 74 f1 ; 0xf7690 + cmp AL, strict byte 030h ; 3c 30 ; 0xf7692 logo.c:491 + je short 076e2h ; 74 4c ; 0xf7694 + cmp bl, 002h ; 80 fb 02 ; 0xf7696 logo.c:498 + jc short 076bbh ; 72 20 ; 0xf7699 + cmp bl, 009h ; 80 fb 09 ; 0xf769b + jnbe short 076bbh ; 77 1b ; 0xf769e + mov al, bl ; 88 d8 ; 0xf76a0 logo.c:500 + xor ah, ah ; 30 e4 ; 0xf76a2 + call 0749ah ; e8 f3 fd ; 0xf76a4 + cmp AL, strict byte 0ffh ; 3c ff ; 0xf76a7 logo.c:507 + jne short 076adh ; 75 02 ; 0xf76a9 + jmp short 07683h ; eb d6 ; 0xf76ab logo.c:508 + mov bx, 00330h ; bb 30 03 ; 0xf76ad logo.c:53 + mov es, si ; 8e c6 ; 0xf76b0 + mov byte [es:bx], al ; 26 88 07 ; 0xf76b2 + mov byte [bp-010h], 002h ; c6 46 f0 02 ; 0xf76b5 logo.c:511 + jmp short 076e2h ; eb 27 ; 0xf76b9 logo.c:512 + cmp bl, 02eh ; 80 fb 2e ; 0xf76bb logo.c:515 + je short 076d0h ; 74 10 ; 0xf76be + cmp bl, 026h ; 80 fb 26 ; 0xf76c0 + je short 076d6h ; 74 11 ; 0xf76c3 + cmp bl, 021h ; 80 fb 21 ; 0xf76c5 + jne short 076dch ; 75 12 ; 0xf76c8 + mov byte [bp-010h], 001h ; c6 46 f0 01 ; 0xf76ca logo.c:519 + jmp short 076e2h ; eb 12 ; 0xf76ce logo.c:520 + mov byte [bp-010h], 003h ; c6 46 f0 03 ; 0xf76d0 logo.c:523 + jmp short 076e2h ; eb 0c ; 0xf76d4 logo.c:524 + mov byte [bp-010h], 004h ; c6 46 f0 04 ; 0xf76d6 logo.c:527 + jmp short 076e2h ; eb 06 ; 0xf76da logo.c:528 + cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf76dc logo.c:531 + je short 07683h ; 74 a1 ; 0xf76e0 + mov bx, 00331h ; bb 31 03 ; 0xf76e2 logo.c:53 + mov es, si ; 8e c6 ; 0xf76e5 + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf76e7 + mov byte [es:bx], al ; 26 88 07 ; 0xf76ea + mov AL, strict byte 003h ; b0 03 ; 0xf76ed logo.c:538 + mov AH, strict byte 000h ; b4 00 ; 0xf76ef + int 010h ; cd 10 ; 0xf76f1 + mov AL, strict byte 034h ; b0 34 ; 0xf76f3 logo.c:543 + out strict byte 043h, AL ; e6 43 ; 0xf76f5 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf76f7 + out strict byte 040h, AL ; e6 40 ; 0xf76f9 + out strict byte 040h, AL ; e6 40 ; 0xf76fb + push bp ; 55 ; 0xf76fd + push DS ; 1e ; 0xf76fe + mov ds, ax ; 8e d8 ; 0xf76ff + call 0edbfh ; e8 bb 76 ; 0xf7701 + pop DS ; 1f ; 0xf7704 + pop bp ; 5d ; 0xf7705 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7706 logo.c:546 + pop di ; 5f ; 0xf7709 + pop si ; 5e ; 0xf770a + pop dx ; 5a ; 0xf770b + pop cx ; 59 ; 0xf770c + pop bx ; 5b ; 0xf770d + pop bp ; 5d ; 0xf770e + retn ; c3 ; 0xf770f + ; disGetNextSymbol 0xf7710 LB 0x3648 -> off=0x0 cb=000000000000006b uValue=00000000000f6110 'delay_boot' +delay_boot: ; 0xf7710 LB 0x6b + push bp ; 55 ; 0xf7710 logo.c:549 + mov bp, sp ; 89 e5 ; 0xf7711 + push bx ; 53 ; 0xf7713 + push cx ; 51 ; 0xf7714 + push dx ; 52 ; 0xf7715 + push si ; 56 ; 0xf7716 + push di ; 57 ; 0xf7717 + mov dx, ax ; 89 c2 ; 0xf7718 + test ax, ax ; 85 c0 ; 0xf771a logo.c:553 + je short 07771h ; 74 53 ; 0xf771c + mov AL, strict byte 034h ; b0 34 ; 0xf771e logo.c:557 + out strict byte 043h, AL ; e6 43 ; 0xf7720 + mov AL, strict byte 0d3h ; b0 d3 ; 0xf7722 + out strict byte 040h, AL ; e6 40 ; 0xf7724 + mov AL, strict byte 048h ; b0 48 ; 0xf7726 + out strict byte 040h, AL ; e6 40 ; 0xf7728 + push dx ; 52 ; 0xf772a logo.c:559 + push 00b41h ; 68 41 0b ; 0xf772b + push strict byte 00002h ; 6a 02 ; 0xf772e + call 01953h ; e8 20 a2 ; 0xf7730 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7733 + mov bx, dx ; 89 d3 ; 0xf7736 logo.c:560 + test bx, bx ; 85 db ; 0xf7738 + jbe short 07753h ; 76 17 ; 0xf773a + push bx ; 53 ; 0xf773c logo.c:562 + push 00b5fh ; 68 5f 0b ; 0xf773d + push strict byte 00002h ; 6a 02 ; 0xf7740 + call 01953h ; e8 0e a2 ; 0xf7742 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7745 + xor dx, dx ; 31 d2 ; 0xf7748 logo.c:563 + mov ax, strict word 00040h ; b8 40 00 ; 0xf774a + call 0727bh ; e8 2b fb ; 0xf774d + dec bx ; 4b ; 0xf7750 logo.c:564 + jmp short 07738h ; eb e5 ; 0xf7751 + push 00a8fh ; 68 8f 0a ; 0xf7753 logo.c:565 + push strict byte 00002h ; 6a 02 ; 0xf7756 + call 01953h ; e8 f8 a1 ; 0xf7758 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf775b + mov AL, strict byte 034h ; b0 34 ; 0xf775e logo.c:567 + out strict byte 043h, AL ; e6 43 ; 0xf7760 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf7762 + out strict byte 040h, AL ; e6 40 ; 0xf7764 + out strict byte 040h, AL ; e6 40 ; 0xf7766 + push bp ; 55 ; 0xf7768 + push DS ; 1e ; 0xf7769 + mov ds, ax ; 8e d8 ; 0xf776a + call 0edbfh ; e8 50 76 ; 0xf776c + pop DS ; 1f ; 0xf776f + pop bp ; 5d ; 0xf7770 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7771 logo.c:568 + pop di ; 5f ; 0xf7774 + pop si ; 5e ; 0xf7775 + pop dx ; 5a ; 0xf7776 + pop cx ; 59 ; 0xf7777 + pop bx ; 5b ; 0xf7778 + pop bp ; 5d ; 0xf7779 + retn ; c3 ; 0xf777a + ; disGetNextSymbol 0xf777b LB 0x35dd -> off=0x0 cb=000000000000003a uValue=00000000000f617b 'scsi_hba_mem_alloc' +scsi_hba_mem_alloc: ; 0xf777b LB 0x3a + push bx ; 53 ; 0xf777b scsi.c:105 + push cx ; 51 ; 0xf777c + push dx ; 52 ; 0xf777d + push di ; 57 ; 0xf777e + push bp ; 55 ; 0xf777f + mov bp, sp ; 89 e5 ; 0xf7780 + mov di, 00413h ; bf 13 04 ; 0xf7782 scsi.c:58 + xor ax, ax ; 31 c0 ; 0xf7785 + mov es, ax ; 8e c0 ; 0xf7787 + mov ax, word [es:di] ; 26 8b 05 ; 0xf7789 + test ax, ax ; 85 c0 ; 0xf778c scsi.c:114 + je short 077afh ; 74 1f ; 0xf778e + dec ax ; 48 ; 0xf7790 scsi.c:115 + mov bx, ax ; 89 c3 ; 0xf7791 + xor dx, dx ; 31 d2 ; 0xf7793 scsi.c:118 + mov cx, strict word 0000ah ; b9 0a 00 ; 0xf7795 + sal ax, 1 ; d1 e0 ; 0xf7798 + rcl dx, 1 ; d1 d2 ; 0xf779a + loop 07798h ; e2 fa ; 0xf779c + mov di, dx ; 89 d7 ; 0xf779e + mov cx, strict word 00004h ; b9 04 00 ; 0xf77a0 + shr di, 1 ; d1 ef ; 0xf77a3 + rcr ax, 1 ; d1 d8 ; 0xf77a5 + loop 077a3h ; e2 fa ; 0xf77a7 + mov di, 00413h ; bf 13 04 ; 0xf77a9 scsi.c:63 + mov word [es:di], bx ; 26 89 1d ; 0xf77ac + pop bp ; 5d ; 0xf77af scsi.c:123 + pop di ; 5f ; 0xf77b0 + pop dx ; 5a ; 0xf77b1 + pop cx ; 59 ; 0xf77b2 + pop bx ; 5b ; 0xf77b3 + retn ; c3 ; 0xf77b4 + ; disGetNextSymbol 0xf77b5 LB 0x35a3 -> off=0x0 cb=0000000000000106 uValue=00000000000f61b5 'scsi_read_sectors' +scsi_read_sectors: ; 0xf77b5 LB 0x106 + push bp ; 55 ; 0xf77b5 scsi.c:132 + mov bp, sp ; 89 e5 ; 0xf77b6 + push si ; 56 ; 0xf77b8 + push di ; 57 ; 0xf77b9 + sub sp, strict byte 0001ah ; 83 ec 1a ; 0xf77ba + mov si, word [bp+004h] ; 8b 76 04 ; 0xf77bd + mov es, [bp+006h] ; 8e 46 06 ; 0xf77c0 scsi.c:143 + mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf77c3 + sub AL, strict byte 008h ; 2c 08 ; 0xf77c7 + mov byte [bp-006h], al ; 88 46 fa ; 0xf77c9 + cmp AL, strict byte 004h ; 3c 04 ; 0xf77cc scsi.c:144 + jbe short 077e1h ; 76 11 ; 0xf77ce + xor ah, ah ; 30 e4 ; 0xf77d0 scsi.c:145 + push ax ; 50 ; 0xf77d2 + push 00b64h ; 68 64 0b ; 0xf77d3 + push 00b76h ; 68 76 0b ; 0xf77d6 + push strict byte 00007h ; 6a 07 ; 0xf77d9 + call 01953h ; e8 75 a1 ; 0xf77db + add sp, strict byte 00008h ; 83 c4 08 ; 0xf77de + mov es, [bp+006h] ; 8e 46 06 ; 0xf77e1 scsi.c:147 + mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf77e4 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf77e8 + shr eax, 010h ; 66 c1 e8 10 ; 0xf77eb scsi.c:83 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf77ef + mov word [bp-01eh], 00088h ; c7 46 e2 88 00 ; 0xf77f2 scsi.c:152 + mov es, [bp+006h] ; 8e 46 06 ; 0xf77f7 scsi.c:153 + mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf77fa + mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf77fe + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7802 + mov dx, word [es:si] ; 26 8b 14 ; 0xf7806 + xchg ah, al ; 86 c4 ; 0xf7809 + xchg bh, bl ; 86 df ; 0xf780b + xchg ch, cl ; 86 cd ; 0xf780d + xchg dh, dl ; 86 d6 ; 0xf780f + xchg dx, ax ; 92 ; 0xf7811 + xchg bx, cx ; 87 cb ; 0xf7812 + mov word [bp-016h], ax ; 89 46 ea ; 0xf7814 + mov word [bp-018h], bx ; 89 5e e8 ; 0xf7817 + mov word [bp-01ah], cx ; 89 4e e6 ; 0xf781a + mov word [bp-01ch], dx ; 89 56 e4 ; 0xf781d + mov byte [bp-010h], 000h ; c6 46 f0 00 ; 0xf7820 scsi.c:154 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7824 scsi.c:155 + xor dx, dx ; 31 d2 ; 0xf7827 + xchg ah, al ; 86 c4 ; 0xf7829 + xchg dh, dl ; 86 d6 ; 0xf782b + xchg dx, ax ; 92 ; 0xf782d + mov word [bp-014h], ax ; 89 46 ec ; 0xf782e + mov word [bp-012h], dx ; 89 56 ee ; 0xf7831 + mov byte [bp-00fh], 000h ; c6 46 f1 00 ; 0xf7834 scsi.c:156 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7838 scsi.c:159 + xor ah, ah ; 30 e4 ; 0xf783b + sal ax, 002h ; c1 e0 02 ; 0xf783d + mov bx, si ; 89 f3 ; 0xf7840 + add bx, ax ; 01 c3 ; 0xf7842 + mov dx, word [es:bx+00290h] ; 26 8b 97 90 02 ; 0xf7844 + mov al, byte [es:bx+00292h] ; 26 8a 87 92 02 ; 0xf7849 scsi.c:160 + mov bl, byte [es:bx+00293h] ; 26 8a 9f 93 02 ; 0xf784e scsi.c:161 + xor ah, ah ; 30 e4 ; 0xf7853 scsi.c:166 + imul di, ax, strict byte 0000ah ; 6b f8 0a ; 0xf7855 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7858 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf785b + xor ax, ax ; 31 c0 ; 0xf785e + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf7860 + mov cx, strict word 00009h ; b9 09 00 ; 0xf7863 + sal word [bp-00eh], 1 ; d1 66 f2 ; 0xf7866 + rcl word [bp-00ch], 1 ; d1 56 f4 ; 0xf7869 + loop 07866h ; e2 f8 ; 0xf786c + push word [bp-00ch] ; ff 76 f4 ; 0xf786e + push word [bp-00eh] ; ff 76 f2 ; 0xf7871 + push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7874 + push word [es:si+008h] ; 26 ff 74 08 ; 0xf7878 + push strict byte 00010h ; 6a 10 ; 0xf787c + lea cx, [bp-01eh] ; 8d 4e e2 ; 0xf787e + push SS ; 16 ; 0xf7881 + push cx ; 51 ; 0xf7882 + xor bh, bh ; 30 ff ; 0xf7883 + call word [di+000a2h] ; ff 95 a2 00 ; 0xf7885 + mov dl, al ; 88 c2 ; 0xf7889 + test al, al ; 84 c0 ; 0xf788b scsi.c:168 + jne short 078a7h ; 75 18 ; 0xf788d + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf788f scsi.c:170 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7892 + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf7895 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf7899 scsi.c:171 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf789c + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf78a0 + mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf78a3 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf78a7 scsi.c:86 + sal eax, 010h ; 66 c1 e0 10 ; 0xf78aa scsi.c:88 + mov al, dl ; 88 d0 ; 0xf78ae scsi.c:176 + xor ah, ah ; 30 e4 ; 0xf78b0 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf78b2 scsi.c:177 + pop di ; 5f ; 0xf78b5 + pop si ; 5e ; 0xf78b6 + pop bp ; 5d ; 0xf78b7 + retn 00004h ; c2 04 00 ; 0xf78b8 + ; disGetNextSymbol 0xf78bb LB 0x349d -> off=0x0 cb=0000000000000106 uValue=00000000000f62bb 'scsi_write_sectors' +scsi_write_sectors: ; 0xf78bb LB 0x106 + push bp ; 55 ; 0xf78bb scsi.c:186 + mov bp, sp ; 89 e5 ; 0xf78bc + push si ; 56 ; 0xf78be + push di ; 57 ; 0xf78bf + sub sp, strict byte 0001ah ; 83 ec 1a ; 0xf78c0 + mov si, word [bp+004h] ; 8b 76 04 ; 0xf78c3 + mov es, [bp+006h] ; 8e 46 06 ; 0xf78c6 scsi.c:197 + mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf78c9 + sub AL, strict byte 008h ; 2c 08 ; 0xf78cd + mov byte [bp-006h], al ; 88 46 fa ; 0xf78cf + cmp AL, strict byte 004h ; 3c 04 ; 0xf78d2 scsi.c:198 + jbe short 078e7h ; 76 11 ; 0xf78d4 + xor ah, ah ; 30 e4 ; 0xf78d6 scsi.c:199 + push ax ; 50 ; 0xf78d8 + push 00b95h ; 68 95 0b ; 0xf78d9 + push 00b76h ; 68 76 0b ; 0xf78dc + push strict byte 00007h ; 6a 07 ; 0xf78df + call 01953h ; e8 6f a0 ; 0xf78e1 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf78e4 + mov es, [bp+006h] ; 8e 46 06 ; 0xf78e7 scsi.c:201 + mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf78ea + mov word [bp-008h], ax ; 89 46 f8 ; 0xf78ee + shr eax, 010h ; 66 c1 e8 10 ; 0xf78f1 scsi.c:83 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf78f5 + mov word [bp-01eh], 0008ah ; c7 46 e2 8a 00 ; 0xf78f8 scsi.c:206 + mov es, [bp+006h] ; 8e 46 06 ; 0xf78fd scsi.c:207 + mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7900 + mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7904 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7908 + mov dx, word [es:si] ; 26 8b 14 ; 0xf790c + xchg ah, al ; 86 c4 ; 0xf790f + xchg bh, bl ; 86 df ; 0xf7911 + xchg ch, cl ; 86 cd ; 0xf7913 + xchg dh, dl ; 86 d6 ; 0xf7915 + xchg dx, ax ; 92 ; 0xf7917 + xchg bx, cx ; 87 cb ; 0xf7918 + mov word [bp-016h], ax ; 89 46 ea ; 0xf791a + mov word [bp-018h], bx ; 89 5e e8 ; 0xf791d + mov word [bp-01ah], cx ; 89 4e e6 ; 0xf7920 + mov word [bp-01ch], dx ; 89 56 e4 ; 0xf7923 + mov byte [bp-010h], 000h ; c6 46 f0 00 ; 0xf7926 scsi.c:208 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf792a scsi.c:209 + xor dx, dx ; 31 d2 ; 0xf792d + xchg ah, al ; 86 c4 ; 0xf792f + xchg dh, dl ; 86 d6 ; 0xf7931 + xchg dx, ax ; 92 ; 0xf7933 + mov word [bp-014h], ax ; 89 46 ec ; 0xf7934 + mov word [bp-012h], dx ; 89 56 ee ; 0xf7937 + mov byte [bp-00fh], 000h ; c6 46 f1 00 ; 0xf793a scsi.c:210 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf793e scsi.c:212 + xor ah, ah ; 30 e4 ; 0xf7941 + sal ax, 002h ; c1 e0 02 ; 0xf7943 + mov bx, si ; 89 f3 ; 0xf7946 + add bx, ax ; 01 c3 ; 0xf7948 + mov dx, word [es:bx+00290h] ; 26 8b 97 90 02 ; 0xf794a + mov al, byte [es:bx+00292h] ; 26 8a 87 92 02 ; 0xf794f scsi.c:213 + mov bl, byte [es:bx+00293h] ; 26 8a 9f 93 02 ; 0xf7954 scsi.c:214 + xor ah, ah ; 30 e4 ; 0xf7959 scsi.c:219 + imul di, ax, strict byte 0000ah ; 6b f8 0a ; 0xf795b + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf795e + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf7961 + xor ax, ax ; 31 c0 ; 0xf7964 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf7966 + mov cx, strict word 00009h ; b9 09 00 ; 0xf7969 + sal word [bp-00eh], 1 ; d1 66 f2 ; 0xf796c + rcl word [bp-00ch], 1 ; d1 56 f4 ; 0xf796f + loop 0796ch ; e2 f8 ; 0xf7972 + push word [bp-00ch] ; ff 76 f4 ; 0xf7974 + push word [bp-00eh] ; ff 76 f2 ; 0xf7977 + push word [es:si+00ah] ; 26 ff 74 0a ; 0xf797a + push word [es:si+008h] ; 26 ff 74 08 ; 0xf797e + push strict byte 00010h ; 6a 10 ; 0xf7982 + lea cx, [bp-01eh] ; 8d 4e e2 ; 0xf7984 + push SS ; 16 ; 0xf7987 + push cx ; 51 ; 0xf7988 + xor bh, bh ; 30 ff ; 0xf7989 + call word [di+000a0h] ; ff 95 a0 00 ; 0xf798b + mov dl, al ; 88 c2 ; 0xf798f + test al, al ; 84 c0 ; 0xf7991 scsi.c:221 + jne short 079adh ; 75 18 ; 0xf7993 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7995 scsi.c:223 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7998 + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf799b + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf799f scsi.c:224 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf79a2 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf79a6 + mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf79a9 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf79ad scsi.c:86 + sal eax, 010h ; 66 c1 e0 10 ; 0xf79b0 scsi.c:88 + mov al, dl ; 88 d0 ; 0xf79b4 scsi.c:229 + xor ah, ah ; 30 e4 ; 0xf79b6 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf79b8 scsi.c:230 + pop di ; 5f ; 0xf79bb + pop si ; 5e ; 0xf79bc + pop bp ; 5d ; 0xf79bd + retn 00004h ; c2 04 00 ; 0xf79be + ; disGetNextSymbol 0xf79c1 LB 0x3397 -> off=0x0 cb=0000000000000111 uValue=00000000000f63c1 'scsi_cmd_packet' +scsi_cmd_packet: ; 0xf79c1 LB 0x111 + push bp ; 55 ; 0xf79c1 scsi.c:249 + mov bp, sp ; 89 e5 ; 0xf79c2 + push si ; 56 ; 0xf79c4 + push di ; 57 ; 0xf79c5 + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf79c6 + mov di, ax ; 89 c7 ; 0xf79c9 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf79cb + mov word [bp-010h], bx ; 89 5e f0 ; 0xf79ce + mov word [bp-00eh], cx ; 89 4e f2 ; 0xf79d1 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf79d4 scsi.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf79d7 + mov es, ax ; 8e c0 ; 0xf79da + mov ax, word [es:bx] ; 26 8b 07 ; 0xf79dc + mov si, strict word 0005eh ; be 5e 00 ; 0xf79df scsi.c:59 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf79e2 + cmp byte [bp+008h], 002h ; 80 7e 08 02 ; 0xf79e5 scsi.c:260 + jne short 07a0ah ; 75 1f ; 0xf79e9 + mov bx, 00dcch ; bb cc 0d ; 0xf79eb scsi.c:261 + mov cx, ds ; 8c d9 ; 0xf79ee + mov ax, strict word 00004h ; b8 04 00 ; 0xf79f0 + call 01910h ; e8 1a 9f ; 0xf79f3 + push 00ba8h ; 68 a8 0b ; 0xf79f6 + push 00bb8h ; 68 b8 0b ; 0xf79f9 + push strict byte 00004h ; 6a 04 ; 0xf79fc + call 01953h ; e8 52 9f ; 0xf79fe + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7a01 + mov ax, strict word 00001h ; b8 01 00 ; 0xf7a04 scsi.c:262 + jmp near 07ac9h ; e9 bf 00 ; 0xf7a07 + sub di, strict byte 00008h ; 83 ef 08 ; 0xf7a0a scsi.c:266 + shr eax, 010h ; 66 c1 e8 10 ; 0xf7a0d scsi.c:83 + mov word [bp-014h], ax ; 89 46 ec ; 0xf7a11 + mov bx, di ; 89 fb ; 0xf7a14 scsi.c:274 + sal bx, 002h ; c1 e3 02 ; 0xf7a16 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf7a19 + add bx, si ; 01 f3 ; 0xf7a1c + mov ax, word [es:bx+00290h] ; 26 8b 87 90 02 ; 0xf7a1e + mov word [bp-012h], ax ; 89 46 ee ; 0xf7a23 + mov al, byte [es:bx+00292h] ; 26 8a 87 92 02 ; 0xf7a26 scsi.c:275 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf7a2b + mov al, byte [es:bx+00293h] ; 26 8a 87 93 02 ; 0xf7a2e scsi.c:276 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf7a33 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7a36 scsi.c:278 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf7a39 + mov cx, strict word 00008h ; b9 08 00 ; 0xf7a3c + sal ax, 1 ; d1 e0 ; 0xf7a3f + rcl dx, 1 ; d1 d2 ; 0xf7a41 + loop 07a3fh ; e2 fa ; 0xf7a43 + mov word [es:si], ax ; 26 89 04 ; 0xf7a45 + mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf7a48 + mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf7a4c + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf7a52 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf7a58 scsi.c:279 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf7a5b + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf7a5f + mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf7a62 + mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf7a66 scsi.c:280 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7a6a + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf7a6d + xor cx, cx ; 31 c9 ; 0xf7a70 + call 0a9e0h ; e8 6b 2f ; 0xf7a72 + mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf7a75 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf7a79 scsi.c:285 + xor ah, ah ; 30 e4 ; 0xf7a7c + imul di, ax, strict byte 0000ah ; 6b f8 0a ; 0xf7a7e + push word [bp+006h] ; ff 76 06 ; 0xf7a81 + push word [bp+004h] ; ff 76 04 ; 0xf7a84 + push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7a87 + push word [es:si+008h] ; 26 ff 74 08 ; 0xf7a8b + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7a8f + push ax ; 50 ; 0xf7a92 + push word [bp-00eh] ; ff 76 f2 ; 0xf7a93 + push word [bp-010h] ; ff 76 f0 ; 0xf7a96 + mov bl, byte [bp-00ah] ; 8a 5e f6 ; 0xf7a99 + xor bh, bh ; 30 ff ; 0xf7a9c + xor al, al ; 30 c0 ; 0xf7a9e + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf7aa0 + call word [di+000a2h] ; ff 95 a2 00 ; 0xf7aa3 + mov dl, al ; 88 c2 ; 0xf7aa7 + test al, al ; 84 c0 ; 0xf7aa9 scsi.c:287 + jne short 07abeh ; 75 11 ; 0xf7aab + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7aad scsi.c:288 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf7ab0 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf7ab3 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf7ab7 + mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7aba + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf7abe scsi.c:86 + sal eax, 010h ; 66 c1 e0 10 ; 0xf7ac1 scsi.c:88 + mov al, dl ; 88 d0 ; 0xf7ac5 scsi.c:293 + xor ah, ah ; 30 e4 ; 0xf7ac7 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7ac9 scsi.c:294 + pop di ; 5f ; 0xf7acc + pop si ; 5e ; 0xf7acd + pop bp ; 5d ; 0xf7ace + retn 0000ah ; c2 0a 00 ; 0xf7acf + ; disGetNextSymbol 0xf7ad2 LB 0x3286 -> off=0x0 cb=00000000000004a8 uValue=00000000000f64d2 'scsi_enumerate_attached_devices' +scsi_enumerate_attached_devices: ; 0xf7ad2 LB 0x4a8 + push bp ; 55 ; 0xf7ad2 scsi.c:303 + mov bp, sp ; 89 e5 ; 0xf7ad3 + push bx ; 53 ; 0xf7ad5 + push cx ; 51 ; 0xf7ad6 + push si ; 56 ; 0xf7ad7 + push di ; 57 ; 0xf7ad8 + sub sp, 0023eh ; 81 ec 3e 02 ; 0xf7ad9 + push ax ; 50 ; 0xf7add + mov byte [bp-00eh], dl ; 88 56 f2 ; 0xf7ade + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7ae1 scsi.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7ae4 + mov es, ax ; 8e c0 ; 0xf7ae7 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf7ae9 + mov di, strict word 0005eh ; bf 5e 00 ; 0xf7aec scsi.c:59 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf7aef + mov word [bp-010h], strict word 00000h ; c7 46 f0 00 00 ; 0xf7af2 scsi.c:312 + jmp near 07f2ah ; e9 30 04 ; 0xf7af7 + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf7afa scsi.c:318 + mov al, byte [es:di+002a0h] ; 26 8a 85 a0 02 ; 0xf7afd + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf7b02 + test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf7b05 scsi.c:335 + jne short 07b13h ; 75 07 ; 0xf7b0a + test byte [bp-00246h], 01fh ; f6 86 ba fd 1f ; 0xf7b0c + je short 07b16h ; 74 03 ; 0xf7b11 + jmp near 07e64h ; e9 4e 03 ; 0xf7b13 + cmp AL, strict byte 004h ; 3c 04 ; 0xf7b16 scsi.c:341 + jc short 07b1dh ; 72 03 ; 0xf7b18 + jmp near 07f71h ; e9 54 04 ; 0xf7b1a + mov cx, strict word 00010h ; b9 10 00 ; 0xf7b1d scsi.c:350 + xor bx, bx ; 31 db ; 0xf7b20 + mov dx, ss ; 8c d2 ; 0xf7b22 + lea ax, [bp-046h] ; 8d 46 ba ; 0xf7b24 + call 0aa30h ; e8 06 2f ; 0xf7b27 + mov byte [bp-046h], 09eh ; c6 46 ba 9e ; 0xf7b2a scsi.c:351 + mov byte [bp-045h], 010h ; c6 46 bb 10 ; 0xf7b2e scsi.c:352 + mov byte [bp-039h], 020h ; c6 46 c7 20 ; 0xf7b32 scsi.c:353 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7b36 scsi.c:355 + xor ah, ah ; 30 e4 ; 0xf7b39 + imul si, ax, strict byte 0000ah ; 6b f0 0a ; 0xf7b3b + push strict byte 00000h ; 6a 00 ; 0xf7b3e + push strict byte 00020h ; 6a 20 ; 0xf7b40 + lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf7b42 + push SS ; 16 ; 0xf7b46 + push dx ; 52 ; 0xf7b47 + push strict byte 00010h ; 6a 10 ; 0xf7b48 + lea dx, [bp-046h] ; 8d 56 ba ; 0xf7b4a + push SS ; 16 ; 0xf7b4d + push dx ; 52 ; 0xf7b4e + mov bl, byte [bp-010h] ; 8a 5e f0 ; 0xf7b4f + xor bh, bh ; 30 ff ; 0xf7b52 + xor al, al ; 30 c0 ; 0xf7b54 + mov dx, word [bp-00248h] ; 8b 96 b8 fd ; 0xf7b56 + call word [si+000a2h] ; ff 94 a2 00 ; 0xf7b5a + test al, al ; 84 c0 ; 0xf7b5e scsi.c:356 + je short 07b70h ; 74 0e ; 0xf7b60 + push 00bd8h ; 68 d8 0b ; 0xf7b62 scsi.c:357 + push 00bf8h ; 68 f8 0b ; 0xf7b65 + push strict byte 00007h ; 6a 07 ; 0xf7b68 + call 01953h ; e8 e6 9d ; 0xf7b6a + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7b6d + mov ax, word [bp-00240h] ; 8b 86 c0 fd ; 0xf7b70 scsi.c:362 + mov bx, word [bp-00242h] ; 8b 9e be fd ; 0xf7b74 + mov cx, word [bp-00244h] ; 8b 8e bc fd ; 0xf7b78 + mov dx, word [bp-00246h] ; 8b 96 ba fd ; 0xf7b7c + xchg ah, al ; 86 c4 ; 0xf7b80 + xchg bh, bl ; 86 df ; 0xf7b82 + xchg ch, cl ; 86 cd ; 0xf7b84 + xchg dh, dl ; 86 d6 ; 0xf7b86 + xchg dx, ax ; 92 ; 0xf7b88 + xchg bx, cx ; 87 cb ; 0xf7b89 + add dx, strict byte 00001h ; 83 c2 01 ; 0xf7b8b + mov word [bp-020h], dx ; 89 56 e0 ; 0xf7b8e + adc cx, strict byte 00000h ; 83 d1 00 ; 0xf7b91 + mov word [bp-016h], cx ; 89 4e ea ; 0xf7b94 + adc bx, strict byte 00000h ; 83 d3 00 ; 0xf7b97 + mov word [bp-01eh], bx ; 89 5e e2 ; 0xf7b9a + adc ax, strict word 00000h ; 15 00 00 ; 0xf7b9d + mov word [bp-014h], ax ; 89 46 ec ; 0xf7ba0 + mov al, byte [bp-0023eh] ; 8a 86 c2 fd ; 0xf7ba3 scsi.c:364 + xor ah, ah ; 30 e4 ; 0xf7ba7 + mov si, ax ; 89 c6 ; 0xf7ba9 + sal si, 008h ; c1 e6 08 ; 0xf7bab + mov al, byte [bp-0023dh] ; 8a 86 c3 fd ; 0xf7bae + xor bx, bx ; 31 db ; 0xf7bb2 + or si, ax ; 09 c6 ; 0xf7bb4 + mov al, byte [bp-0023ch] ; 8a 86 c4 fd ; 0xf7bb6 + xor dx, dx ; 31 d2 ; 0xf7bba + mov cx, strict word 00008h ; b9 08 00 ; 0xf7bbc + sal ax, 1 ; d1 e0 ; 0xf7bbf + rcl dx, 1 ; d1 d2 ; 0xf7bc1 + loop 07bbfh ; e2 fa ; 0xf7bc3 + or bx, ax ; 09 c3 ; 0xf7bc5 + or dx, si ; 09 f2 ; 0xf7bc7 + mov al, byte [bp-0023bh] ; 8a 86 c5 fd ; 0xf7bc9 + xor ah, ah ; 30 e4 ; 0xf7bcd + or bx, ax ; 09 c3 ; 0xf7bcf + mov word [bp-024h], bx ; 89 5e dc ; 0xf7bd1 + test dx, dx ; 85 d2 ; 0xf7bd4 scsi.c:370 + jne short 07bdeh ; 75 06 ; 0xf7bd6 + cmp bx, 00200h ; 81 fb 00 02 ; 0xf7bd8 + je short 07bfeh ; 74 20 ; 0xf7bdc + mov bx, 00dcch ; bb cc 0d ; 0xf7bde scsi.c:373 + mov cx, ds ; 8c d9 ; 0xf7be1 + mov ax, strict word 00004h ; b8 04 00 ; 0xf7be3 + call 01910h ; e8 27 9d ; 0xf7be6 + push dx ; 52 ; 0xf7be9 + push word [bp-024h] ; ff 76 dc ; 0xf7bea + push word [bp-010h] ; ff 76 f0 ; 0xf7bed + push 00c17h ; 68 17 0c ; 0xf7bf0 + push strict byte 00004h ; 6a 04 ; 0xf7bf3 + call 01953h ; e8 5b 9d ; 0xf7bf5 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf7bf8 + jmp near 07f21h ; e9 23 03 ; 0xf7bfb scsi.c:374 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7bfe scsi.c:378 + cmp AL, strict byte 001h ; 3c 01 ; 0xf7c01 + jc short 07c11h ; 72 0c ; 0xf7c03 + jbe short 07c19h ; 76 12 ; 0xf7c05 + cmp AL, strict byte 003h ; 3c 03 ; 0xf7c07 + je short 07c21h ; 74 16 ; 0xf7c09 + cmp AL, strict byte 002h ; 3c 02 ; 0xf7c0b + je short 07c1dh ; 74 0e ; 0xf7c0d + jmp short 07c59h ; eb 48 ; 0xf7c0f + test al, al ; 84 c0 ; 0xf7c11 + jne short 07c59h ; 75 44 ; 0xf7c13 + mov BL, strict byte 090h ; b3 90 ; 0xf7c15 scsi.c:381 + jmp short 07c23h ; eb 0a ; 0xf7c17 scsi.c:382 + mov BL, strict byte 098h ; b3 98 ; 0xf7c19 scsi.c:384 + jmp short 07c23h ; eb 06 ; 0xf7c1b scsi.c:385 + mov BL, strict byte 0a0h ; b3 a0 ; 0xf7c1d scsi.c:387 + jmp short 07c23h ; eb 02 ; 0xf7c1f scsi.c:388 + mov BL, strict byte 0a8h ; b3 a8 ; 0xf7c21 scsi.c:390 + mov cl, bl ; 88 d9 ; 0xf7c23 scsi.c:394 + add cl, 007h ; 80 c1 07 ; 0xf7c25 + xor ch, ch ; 30 ed ; 0xf7c28 + mov ax, cx ; 89 c8 ; 0xf7c2a + call 01664h ; e8 35 9a ; 0xf7c2c + test al, al ; 84 c0 ; 0xf7c2f + je short 07c59h ; 74 26 ; 0xf7c31 + mov al, bl ; 88 d8 ; 0xf7c33 scsi.c:399 + xor ah, ah ; 30 e4 ; 0xf7c35 + call 0169ch ; e8 62 9a ; 0xf7c37 + mov dx, ax ; 89 c2 ; 0xf7c3a + xor si, si ; 31 f6 ; 0xf7c3c + mov al, bl ; 88 d8 ; 0xf7c3e scsi.c:400 + add AL, strict byte 002h ; 04 02 ; 0xf7c40 + xor ah, ah ; 30 e4 ; 0xf7c42 + call 01664h ; e8 1d 9a ; 0xf7c44 + xor ah, ah ; 30 e4 ; 0xf7c47 + mov word [bp-012h], ax ; 89 46 ee ; 0xf7c49 + mov ax, cx ; 89 c8 ; 0xf7c4c scsi.c:401 + call 01664h ; e8 13 9a ; 0xf7c4e + xor ah, ah ; 30 e4 ; 0xf7c51 + mov word [bp-022h], ax ; 89 46 de ; 0xf7c53 + jmp near 07d43h ; e9 ea 00 ; 0xf7c56 scsi.c:403 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf7c59 scsi.c:404 + mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf7c5c + mov cx, word [bp-016h] ; 8b 4e ea ; 0xf7c5f + mov dx, word [bp-020h] ; 8b 56 e0 ; 0xf7c62 + mov si, strict word 0000ch ; be 0c 00 ; 0xf7c65 + call 0aa10h ; e8 a5 2d ; 0xf7c68 + mov word [bp-026h], ax ; 89 46 da ; 0xf7c6b + mov word [bp-018h], bx ; 89 5e e8 ; 0xf7c6e + mov word [bp-028h], cx ; 89 4e d8 ; 0xf7c71 + mov word [bp-02ah], dx ; 89 56 d6 ; 0xf7c74 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf7c77 scsi.c:408 + test ax, ax ; 85 c0 ; 0xf7c7a + jnbe short 07c93h ; 77 15 ; 0xf7c7c + je short 07c83h ; 74 03 ; 0xf7c7e + jmp near 07d06h ; e9 83 00 ; 0xf7c80 + cmp word [bp-01eh], strict byte 00000h ; 83 7e e2 00 ; 0xf7c83 + jnbe short 07c93h ; 77 0a ; 0xf7c87 + jne short 07c80h ; 75 f5 ; 0xf7c89 + cmp word [bp-016h], strict byte 00040h ; 83 7e ea 40 ; 0xf7c8b + jnbe short 07c93h ; 77 02 ; 0xf7c8f + jne short 07d06h ; 75 73 ; 0xf7c91 + mov word [bp-012h], 000ffh ; c7 46 ee ff 00 ; 0xf7c93 scsi.c:410 + mov word [bp-022h], strict word 0003fh ; c7 46 de 3f 00 ; 0xf7c98 scsi.c:411 + mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf7c9d scsi.c:413 + mov cx, word [bp-016h] ; 8b 4e ea ; 0xf7ca0 + mov dx, word [bp-020h] ; 8b 56 e0 ; 0xf7ca3 + mov si, strict word 00006h ; be 06 00 ; 0xf7ca6 + call 0aa10h ; e8 64 2d ; 0xf7ca9 + mov si, word [bp-02ah] ; 8b 76 d6 ; 0xf7cac + add si, dx ; 01 d6 ; 0xf7caf + mov word [bp-034h], si ; 89 76 cc ; 0xf7cb1 + mov dx, word [bp-028h] ; 8b 56 d8 ; 0xf7cb4 + adc dx, cx ; 11 ca ; 0xf7cb7 + mov word [bp-036h], dx ; 89 56 ca ; 0xf7cb9 + mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf7cbc + adc dx, bx ; 11 da ; 0xf7cbf + mov word [bp-02ch], dx ; 89 56 d4 ; 0xf7cc1 + mov dx, word [bp-026h] ; 8b 56 da ; 0xf7cc4 + adc dx, ax ; 11 c2 ; 0xf7cc7 + mov word [bp-01ah], dx ; 89 56 e6 ; 0xf7cc9 + mov ax, dx ; 89 d0 ; 0xf7ccc scsi.c:414 + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf7cce + mov cx, word [bp-036h] ; 8b 4e ca ; 0xf7cd1 + mov dx, si ; 89 f2 ; 0xf7cd4 + mov si, strict word 00008h ; be 08 00 ; 0xf7cd6 + call 0aa10h ; e8 34 2d ; 0xf7cd9 + mov word [bp-02eh], bx ; 89 5e d2 ; 0xf7cdc + mov word [bp-030h], cx ; 89 4e d0 ; 0xf7cdf + mov word [bp-032h], dx ; 89 56 ce ; 0xf7ce2 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf7ce5 + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf7ce8 + mov cx, word [bp-036h] ; 8b 4e ca ; 0xf7ceb + mov dx, word [bp-034h] ; 8b 56 cc ; 0xf7cee + mov si, strict word 00010h ; be 10 00 ; 0xf7cf1 + call 0aa10h ; e8 19 2d ; 0xf7cf4 + add dx, word [bp-032h] ; 03 56 ce ; 0xf7cf7 + mov si, word [bp-030h] ; 8b 76 d0 ; 0xf7cfa + adc si, cx ; 11 ce ; 0xf7cfd + mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf7cff + adc ax, bx ; 11 d8 ; 0xf7d02 + jmp short 07d43h ; eb 3d ; 0xf7d04 scsi.c:416 + test ax, ax ; 85 c0 ; 0xf7d06 + jnbe short 07d1ch ; 77 12 ; 0xf7d08 + jne short 07d28h ; 75 1c ; 0xf7d0a + cmp word [bp-01eh], strict byte 00000h ; 83 7e e2 00 ; 0xf7d0c + jnbe short 07d1ch ; 77 0a ; 0xf7d10 + jne short 07d28h ; 75 14 ; 0xf7d12 + cmp word [bp-016h], strict byte 00020h ; 83 7e ea 20 ; 0xf7d14 + jnbe short 07d1ch ; 77 02 ; 0xf7d18 + jne short 07d28h ; 75 0c ; 0xf7d1a + mov word [bp-012h], 00080h ; c7 46 ee 80 00 ; 0xf7d1c scsi.c:418 + mov word [bp-022h], strict word 00020h ; c7 46 de 20 00 ; 0xf7d21 scsi.c:419 + jmp short 07d41h ; eb 19 ; 0xf7d26 scsi.c:422 + mov word [bp-012h], strict word 00040h ; c7 46 ee 40 00 ; 0xf7d28 scsi.c:424 + mov word [bp-022h], strict word 00020h ; c7 46 de 20 00 ; 0xf7d2d scsi.c:425 + mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf7d32 scsi.c:426 + mov cx, word [bp-016h] ; 8b 4e ea ; 0xf7d35 + mov dx, word [bp-020h] ; 8b 56 e0 ; 0xf7d38 + mov si, strict word 0000bh ; be 0b 00 ; 0xf7d3b + call 0aa10h ; e8 cf 2c ; 0xf7d3e + mov si, cx ; 89 ce ; 0xf7d41 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7d43 scsi.c:431 + add AL, strict byte 008h ; 04 08 ; 0xf7d46 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf7d48 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7d4b scsi.c:433 + xor ah, ah ; 30 e4 ; 0xf7d4e + sal ax, 002h ; c1 e0 02 ; 0xf7d50 + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf7d53 + mov bx, di ; 89 fb ; 0xf7d56 + add bx, ax ; 01 c3 ; 0xf7d58 + mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf7d5a + mov word [es:bx+00290h], ax ; 26 89 87 90 02 ; 0xf7d5e + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7d63 scsi.c:434 + mov byte [es:bx+00292h], al ; 26 88 87 92 02 ; 0xf7d66 + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf7d6b scsi.c:435 + mov byte [es:bx+00293h], al ; 26 88 87 93 02 ; 0xf7d6e + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf7d73 scsi.c:436 + xor ah, ah ; 30 e4 ; 0xf7d76 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf7d78 + mov bx, di ; 89 fb ; 0xf7d7b + add bx, ax ; 01 c3 ; 0xf7d7d + mov word [es:bx+01eh], 0ff04h ; 26 c7 47 1e 04 ff ; 0xf7d7f + mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00 ; 0xf7d85 scsi.c:438 + mov ax, word [bp-024h] ; 8b 46 dc ; 0xf7d8b scsi.c:440 + mov word [es:bx+024h], ax ; 26 89 47 24 ; 0xf7d8e + mov byte [es:bx+023h], 001h ; 26 c6 47 23 01 ; 0xf7d92 scsi.c:441 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf7d97 scsi.c:444 + mov word [es:bx+026h], ax ; 26 89 47 26 ; 0xf7d9a + mov ax, word [bp-022h] ; 8b 46 de ; 0xf7d9e scsi.c:445 + mov word [es:bx+02ah], ax ; 26 89 47 2a ; 0xf7da1 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf7da5 scsi.c:446 + mov word [es:bx+02ch], ax ; 26 89 47 2c ; 0xf7da8 + mov ax, word [bp-022h] ; 8b 46 de ; 0xf7dac scsi.c:447 + mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf7daf + test si, si ; 85 f6 ; 0xf7db3 scsi.c:449 + jne short 07dbdh ; 75 06 ; 0xf7db5 + cmp dx, 00400h ; 81 fa 00 04 ; 0xf7db7 + jbe short 07dcbh ; 76 0e ; 0xf7dbb + mov word [es:bx+028h], 00400h ; 26 c7 47 28 00 04 ; 0xf7dbd scsi.c:450 + mov word [es:bx+02eh], 00400h ; 26 c7 47 2e 00 04 ; 0xf7dc3 scsi.c:451 + jmp short 07dd3h ; eb 08 ; 0xf7dc9 scsi.c:452 + mov word [es:bx+028h], dx ; 26 89 57 28 ; 0xf7dcb scsi.c:453 + mov word [es:bx+02eh], dx ; 26 89 57 2e ; 0xf7dcf scsi.c:454 + mov bx, 00dcch ; bb cc 0d ; 0xf7dd3 scsi.c:458 + mov cx, ds ; 8c d9 ; 0xf7dd6 + mov ax, strict word 00004h ; b8 04 00 ; 0xf7dd8 + call 01910h ; e8 32 9b ; 0xf7ddb + push word [bp-014h] ; ff 76 ec ; 0xf7dde + push word [bp-01eh] ; ff 76 e2 ; 0xf7de1 + push word [bp-016h] ; ff 76 ea ; 0xf7de4 + push word [bp-020h] ; ff 76 e0 ; 0xf7de7 + push word [bp-022h] ; ff 76 de ; 0xf7dea + push word [bp-012h] ; ff 76 ee ; 0xf7ded + push si ; 56 ; 0xf7df0 + push dx ; 52 ; 0xf7df1 + push word [bp-010h] ; ff 76 f0 ; 0xf7df2 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7df5 + xor ah, ah ; 30 e4 ; 0xf7df8 + push ax ; 50 ; 0xf7dfa + push 00c45h ; 68 45 0c ; 0xf7dfb + push strict byte 00004h ; 6a 04 ; 0xf7dfe + call 01953h ; e8 50 9b ; 0xf7e00 + add sp, strict byte 00018h ; 83 c4 18 ; 0xf7e03 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf7e06 scsi.c:460 + xor ah, ah ; 30 e4 ; 0xf7e09 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf7e0b + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf7e0e + mov bx, di ; 89 fb ; 0xf7e11 + add bx, ax ; 01 c3 ; 0xf7e13 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf7e15 + mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf7e18 + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf7e1c + mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf7e1f + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf7e23 + mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf7e26 + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf7e2a + mov word [es:bx+032h], ax ; 26 89 47 32 ; 0xf7e2d + mov al, byte [es:di+0024eh] ; 26 8a 85 4e 02 ; 0xf7e31 scsi.c:463 + mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf7e36 scsi.c:464 + add ah, 008h ; 80 c4 08 ; 0xf7e39 + mov bl, al ; 88 c3 ; 0xf7e3c + xor bh, bh ; 30 ff ; 0xf7e3e + add bx, di ; 01 fb ; 0xf7e40 + mov byte [es:bx+0024fh], ah ; 26 88 a7 4f 02 ; 0xf7e42 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf7e47 scsi.c:465 + mov byte [es:di+0024eh], al ; 26 88 85 4e 02 ; 0xf7e49 scsi.c:466 + mov bx, strict word 00075h ; bb 75 00 ; 0xf7e4e scsi.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7e51 + mov es, ax ; 8e c0 ; 0xf7e54 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf7e56 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf7e59 scsi.c:470 + mov byte [es:bx], al ; 26 88 07 ; 0xf7e5b scsi.c:53 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf7e5e scsi.c:473 + jmp near 07f16h ; e9 b2 00 ; 0xf7e61 scsi.c:475 + test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf7e64 scsi.c:481 + jne short 07e75h ; 75 0a ; 0xf7e69 + mov al, byte [bp-00246h] ; 8a 86 ba fd ; 0xf7e6b + and AL, strict byte 01fh ; 24 1f ; 0xf7e6f + cmp AL, strict byte 005h ; 3c 05 ; 0xf7e71 + je short 07e78h ; 74 03 ; 0xf7e73 + jmp near 07f16h ; e9 9e 00 ; 0xf7e75 + mov bx, 00dcch ; bb cc 0d ; 0xf7e78 scsi.c:487 + mov cx, ds ; 8c d9 ; 0xf7e7b + mov ax, strict word 00004h ; b8 04 00 ; 0xf7e7d + call 01910h ; e8 8d 9a ; 0xf7e80 + push word [bp-010h] ; ff 76 f0 ; 0xf7e83 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7e86 + xor ah, ah ; 30 e4 ; 0xf7e89 + push ax ; 50 ; 0xf7e8b + push 00c73h ; 68 73 0c ; 0xf7e8c + push strict byte 00004h ; 6a 04 ; 0xf7e8f + call 01953h ; e8 bf 9a ; 0xf7e91 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf7e94 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7e97 scsi.c:490 + add AL, strict byte 008h ; 04 08 ; 0xf7e9a + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf7e9c + test byte [bp-00245h], 080h ; f6 86 bb fd 80 ; 0xf7e9f scsi.c:492 + je short 07eabh ; 74 05 ; 0xf7ea4 + mov dx, strict word 00001h ; ba 01 00 ; 0xf7ea6 + jmp short 07eadh ; eb 02 ; 0xf7ea9 + xor dx, dx ; 31 d2 ; 0xf7eab + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7ead scsi.c:494 + xor ah, ah ; 30 e4 ; 0xf7eb0 + sal ax, 002h ; c1 e0 02 ; 0xf7eb2 + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf7eb5 + mov bx, di ; 89 fb ; 0xf7eb8 + add bx, ax ; 01 c3 ; 0xf7eba + mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf7ebc + mov word [es:bx+00290h], ax ; 26 89 87 90 02 ; 0xf7ec0 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7ec5 scsi.c:495 + mov byte [es:bx+00292h], al ; 26 88 87 92 02 ; 0xf7ec8 + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf7ecd scsi.c:496 + mov byte [es:bx+00293h], al ; 26 88 87 93 02 ; 0xf7ed0 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf7ed5 scsi.c:497 + xor ah, ah ; 30 e4 ; 0xf7ed8 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf7eda + mov bx, di ; 89 fb ; 0xf7edd + add bx, ax ; 01 c3 ; 0xf7edf + mov word [es:bx+01eh], 00504h ; 26 c7 47 1e 04 05 ; 0xf7ee1 + mov byte [es:bx+020h], dl ; 26 88 57 20 ; 0xf7ee7 scsi.c:499 + mov word [es:bx+024h], 00800h ; 26 c7 47 24 00 08 ; 0xf7eeb scsi.c:500 + mov byte [es:bx+023h], 000h ; 26 c6 47 23 00 ; 0xf7ef1 scsi.c:501 + mov al, byte [es:di+00263h] ; 26 8a 85 63 02 ; 0xf7ef6 scsi.c:504 + mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf7efb scsi.c:505 + add ah, 008h ; 80 c4 08 ; 0xf7efe + mov bl, al ; 88 c3 ; 0xf7f01 + xor bh, bh ; 30 ff ; 0xf7f03 + add bx, di ; 01 fb ; 0xf7f05 + mov byte [es:bx+00264h], ah ; 26 88 a7 64 02 ; 0xf7f07 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf7f0c scsi.c:506 + mov byte [es:di+00263h], al ; 26 88 85 63 02 ; 0xf7f0e scsi.c:507 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf7f13 scsi.c:509 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7f16 scsi.c:514 + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf7f19 + mov byte [es:di+002a0h], al ; 26 88 85 a0 02 ; 0xf7f1c + inc word [bp-010h] ; ff 46 f0 ; 0xf7f21 scsi.c:515 + cmp word [bp-010h], strict byte 00010h ; 83 7e f0 10 ; 0xf7f24 + jnl short 07f71h ; 7d 47 ; 0xf7f28 + mov byte [bp-046h], 012h ; c6 46 ba 12 ; 0xf7f2a + xor al, al ; 30 c0 ; 0xf7f2e + mov byte [bp-045h], al ; 88 46 bb ; 0xf7f30 + mov byte [bp-044h], al ; 88 46 bc ; 0xf7f33 + mov byte [bp-043h], al ; 88 46 bd ; 0xf7f36 + mov byte [bp-042h], 005h ; c6 46 be 05 ; 0xf7f39 + mov byte [bp-041h], al ; 88 46 bf ; 0xf7f3d + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7f40 + xor ah, ah ; 30 e4 ; 0xf7f43 + imul si, ax, strict byte 0000ah ; 6b f0 0a ; 0xf7f45 + push strict byte 00000h ; 6a 00 ; 0xf7f48 + push strict byte 00005h ; 6a 05 ; 0xf7f4a + lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf7f4c + push SS ; 16 ; 0xf7f50 + push dx ; 52 ; 0xf7f51 + push strict byte 00006h ; 6a 06 ; 0xf7f52 + lea dx, [bp-046h] ; 8d 56 ba ; 0xf7f54 + push SS ; 16 ; 0xf7f57 + push dx ; 52 ; 0xf7f58 + mov bl, byte [bp-010h] ; 8a 5e f0 ; 0xf7f59 + xor bh, bh ; 30 ff ; 0xf7f5c + xor al, al ; 30 c0 ; 0xf7f5e + mov dx, word [bp-00248h] ; 8b 96 b8 fd ; 0xf7f60 + call word [si+000a2h] ; ff 94 a2 00 ; 0xf7f64 + test al, al ; 84 c0 ; 0xf7f68 + jne short 07f6fh ; 75 03 ; 0xf7f6a + jmp near 07afah ; e9 8b fb ; 0xf7f6c + jmp short 07f21h ; eb b0 ; 0xf7f6f + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf7f71 scsi.c:516 + pop di ; 5f ; 0xf7f74 + pop si ; 5e ; 0xf7f75 + pop cx ; 59 ; 0xf7f76 + pop bx ; 5b ; 0xf7f77 + pop bp ; 5d ; 0xf7f78 + retn ; c3 ; 0xf7f79 + ; disGetNextSymbol 0xf7f7a LB 0x2dde -> off=0x0 cb=0000000000000077 uValue=00000000000f697a 'scsi_init' +scsi_init: ; 0xf7f7a LB 0x77 + push bp ; 55 ; 0xf7f7a scsi.c:521 + mov bp, sp ; 89 e5 ; 0xf7f7b + push si ; 56 ; 0xf7f7d + push di ; 57 ; 0xf7f7e + push ax ; 50 ; 0xf7f7f + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7f80 scsi.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7f83 + mov es, ax ; 8e c0 ; 0xf7f86 + mov es, [es:bx] ; 26 8e 07 ; 0xf7f88 + mov bx, strict word 0005eh ; bb 5e 00 ; 0xf7f8b scsi.c:59 + mov byte [es:bx+002a0h], 000h ; 26 c6 87 a0 02 00 ; 0xf7f8e scsi.c:527 + mov word [bp-006h], strict word 00000h ; c7 46 fa 00 00 ; 0xf7f94 scsi.c:530 + jmp short 07fc9h ; eb 2e ; 0xf7f99 + xor dl, dl ; 30 d2 ; 0xf7f9b scsi.c:541 + mov ax, dx ; 89 d0 ; 0xf7f9d + shr ax, 008h ; c1 e8 08 ; 0xf7f9f + mov di, bx ; 89 df ; 0xf7fa2 scsi.c:545 + xor ch, dh ; 30 f5 ; 0xf7fa4 + mov bl, al ; 88 c3 ; 0xf7fa6 + xor bh, bh ; 30 ff ; 0xf7fa8 + xor ax, ax ; 31 c0 ; 0xf7faa + mov dx, si ; 89 f2 ; 0xf7fac + call word [di+0009eh] ; ff 95 9e 00 ; 0xf7fae + test ax, ax ; 85 c0 ; 0xf7fb2 scsi.c:546 + jne short 07fc0h ; 75 0a ; 0xf7fb4 + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf7fb6 scsi.c:547 + xor dh, dh ; 30 f6 ; 0xf7fb9 + mov ax, si ; 89 f0 ; 0xf7fbb + call 07ad2h ; e8 12 fb ; 0xf7fbd + inc word [bp-006h] ; ff 46 fa ; 0xf7fc0 scsi.c:550 + cmp word [bp-006h], strict byte 00004h ; 83 7e fa 04 ; 0xf7fc3 + jnc short 07feah ; 73 21 ; 0xf7fc7 + imul bx, word [bp-006h], strict byte 0000ah ; 6b 5e fa 0a ; 0xf7fc9 + mov dx, word [bx+0009ch] ; 8b 97 9c 00 ; 0xf7fcd + mov ax, word [bx+0009ah] ; 8b 87 9a 00 ; 0xf7fd1 + call 0a77ch ; e8 a4 27 ; 0xf7fd5 + mov dx, ax ; 89 c2 ; 0xf7fd8 + mov cx, ax ; 89 c1 ; 0xf7fda + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf7fdc + je short 07fc0h ; 74 df ; 0xf7fdf + call 0777bh ; e8 97 f7 ; 0xf7fe1 + mov si, ax ; 89 c6 ; 0xf7fe4 + test ax, ax ; 85 c0 ; 0xf7fe6 + jne short 07f9bh ; 75 b1 ; 0xf7fe8 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7fea scsi.c:551 + pop di ; 5f ; 0xf7fed + pop si ; 5e ; 0xf7fee + pop bp ; 5d ; 0xf7fef + retn ; c3 ; 0xf7ff0 + ; disGetNextSymbol 0xf7ff1 LB 0x2d67 -> off=0x0 cb=000000000000001c uValue=00000000000f69f1 'ahci_ctrl_extract_bits' +ahci_ctrl_extract_bits: ; 0xf7ff1 LB 0x1c + push si ; 56 ; 0xf7ff1 ahci.c:287 + push bp ; 55 ; 0xf7ff2 + mov bp, sp ; 89 e5 ; 0xf7ff3 + mov si, ax ; 89 c6 ; 0xf7ff5 + and ax, bx ; 21 d8 ; 0xf7ff7 ahci.c:289 + and dx, cx ; 21 ca ; 0xf7ff9 + mov cl, byte [bp+006h] ; 8a 4e 06 ; 0xf7ffb + xor ch, ch ; 30 ed ; 0xf7ffe + jcxz 08008h ; e3 06 ; 0xf8000 + shr dx, 1 ; d1 ea ; 0xf8002 + rcr ax, 1 ; d1 d8 ; 0xf8004 + loop 08002h ; e2 fa ; 0xf8006 + pop bp ; 5d ; 0xf8008 ahci.c:290 + pop si ; 5e ; 0xf8009 + retn 00002h ; c2 02 00 ; 0xf800a + ; disGetNextSymbol 0xf800d LB 0x2d4b -> off=0x0 cb=000000000000001e uValue=00000000000f6a0d 'ahci_addr_to_phys' +ahci_addr_to_phys: ; 0xf800d LB 0x1e + push bx ; 53 ; 0xf800d ahci.c:295 + push cx ; 51 ; 0xf800e + push bp ; 55 ; 0xf800f + mov bp, sp ; 89 e5 ; 0xf8010 + mov bx, ax ; 89 c3 ; 0xf8012 + mov ax, dx ; 89 d0 ; 0xf8014 + xor dx, dx ; 31 d2 ; 0xf8016 ahci.c:297 + mov cx, strict word 00004h ; b9 04 00 ; 0xf8018 + sal ax, 1 ; d1 e0 ; 0xf801b + rcl dx, 1 ; d1 d2 ; 0xf801d + loop 0801bh ; e2 fa ; 0xf801f + xor cx, cx ; 31 c9 ; 0xf8021 + add ax, bx ; 01 d8 ; 0xf8023 + adc dx, cx ; 11 ca ; 0xf8025 + pop bp ; 5d ; 0xf8027 ahci.c:298 + pop cx ; 59 ; 0xf8028 + pop bx ; 5b ; 0xf8029 + retn ; c3 ; 0xf802a + ; disGetNextSymbol 0xf802b LB 0x2d2d -> off=0x0 cb=0000000000000156 uValue=00000000000f6a2b 'ahci_port_cmd_sync' +ahci_port_cmd_sync: ; 0xf802b LB 0x156 + push bp ; 55 ; 0xf802b ahci.c:303 + mov bp, sp ; 89 e5 ; 0xf802c + push cx ; 51 ; 0xf802e + push si ; 56 ; 0xf802f + push di ; 57 ; 0xf8030 + push ax ; 50 ; 0xf8031 + mov si, ax ; 89 c6 ; 0xf8032 + mov cx, dx ; 89 d1 ; 0xf8034 + mov dl, bl ; 88 da ; 0xf8036 + mov es, cx ; 8e c1 ; 0xf8038 ahci.c:308 + mov al, byte [es:si+00262h] ; 26 8a 84 62 02 ; 0xf803a + mov byte [bp-008h], al ; 88 46 f8 ; 0xf803f + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8042 ahci.c:309 + cmp AL, strict byte 0ffh ; 3c ff ; 0xf8047 ahci.c:311 + jne short 0804eh ; 75 03 ; 0xf8049 + jmp near 08179h ; e9 2b 01 ; 0xf804b + mov al, byte [es:si+00263h] ; 26 8a 84 63 02 ; 0xf804e ahci.c:314 + xor ah, ah ; 30 e4 ; 0xf8053 + xor di, di ; 31 ff ; 0xf8055 + or di, 00080h ; 81 cf 80 00 ; 0xf8057 + xor dh, dh ; 30 f6 ; 0xf805b + or di, dx ; 09 d7 ; 0xf805d + mov word [es:si], di ; 26 89 3c ; 0xf805f + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf8062 + mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf8066 ahci.c:315 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf806c + lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf8072 ahci.c:316 + mov dx, cx ; 89 ca ; 0xf8076 + call 0800dh ; e8 92 ff ; 0xf8078 + mov es, cx ; 8e c1 ; 0xf807b + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf807d + mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf8081 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8085 ahci.c:319 + xor ah, ah ; 30 e4 ; 0xf8088 + mov di, ax ; 89 c7 ; 0xf808a + sal di, 007h ; c1 e7 07 ; 0xf808c + lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf808f + xor cx, cx ; 31 c9 ; 0xf8093 ahci.c:260 + mov dx, bx ; 89 da ; 0xf8095 + xchg cx, ax ; 91 ; 0xf8097 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8098 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf809c + out DX, eax ; 66 ef ; 0xf809e + lea si, [bx+004h] ; 8d 77 04 ; 0xf80a0 ahci.c:261 + mov dx, si ; 89 f2 ; 0xf80a3 + in eax, DX ; 66 ed ; 0xf80a5 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf80a7 + shr eax, 010h ; 66 c1 e8 10 ; 0xf80a9 + xchg dx, ax ; 92 ; 0xf80ad + or AL, strict byte 011h ; 0c 11 ; 0xf80ae + mov cx, dx ; 89 d1 ; 0xf80b0 + mov dx, si ; 89 f2 ; 0xf80b2 + xchg cx, ax ; 91 ; 0xf80b4 + sal eax, 010h ; 66 c1 e0 10 ; 0xf80b5 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf80b9 + out DX, eax ; 66 ef ; 0xf80bb + lea ax, [di+00138h] ; 8d 85 38 01 ; 0xf80bd ahci.c:323 + cwd ; 99 ; 0xf80c1 + mov cx, dx ; 89 d1 ; 0xf80c2 + mov dx, bx ; 89 da ; 0xf80c4 + xchg cx, ax ; 91 ; 0xf80c6 + sal eax, 010h ; 66 c1 e0 10 ; 0xf80c7 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf80cb + out DX, eax ; 66 ef ; 0xf80cd + mov ax, strict word 00001h ; b8 01 00 ; 0xf80cf + xor cx, cx ; 31 c9 ; 0xf80d2 + mov dx, si ; 89 f2 ; 0xf80d4 + xchg cx, ax ; 91 ; 0xf80d6 + sal eax, 010h ; 66 c1 e0 10 ; 0xf80d7 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf80db + out DX, eax ; 66 ef ; 0xf80dd + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf80df ahci.c:327 + xor ah, ah ; 30 e4 ; 0xf80e2 + sal ax, 007h ; c1 e0 07 ; 0xf80e4 + add ax, 00110h ; 05 10 01 ; 0xf80e7 + xor cx, cx ; 31 c9 ; 0xf80ea ahci.c:279 + mov dx, bx ; 89 da ; 0xf80ec + xchg cx, ax ; 91 ; 0xf80ee + sal eax, 010h ; 66 c1 e0 10 ; 0xf80ef + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf80f3 + out DX, eax ; 66 ef ; 0xf80f5 + lea dx, [bx+004h] ; 8d 57 04 ; 0xf80f7 ahci.c:280 + in eax, DX ; 66 ed ; 0xf80fa + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf80fc + shr eax, 010h ; 66 c1 e8 10 ; 0xf80fe + xchg dx, ax ; 92 ; 0xf8102 + test dh, 040h ; f6 c6 40 ; 0xf8103 + jne short 0810ch ; 75 04 ; 0xf8106 + test AL, strict byte 001h ; a8 01 ; 0xf8108 + je short 08110h ; 74 04 ; 0xf810a + mov AL, strict byte 001h ; b0 01 ; 0xf810c + jmp short 08112h ; eb 02 ; 0xf810e + xor al, al ; 30 c0 ; 0xf8110 + test al, al ; 84 c0 ; 0xf8112 ahci.c:281 + je short 080dfh ; 74 c9 ; 0xf8114 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8116 ahci.c:333 + xor ah, ah ; 30 e4 ; 0xf8119 + mov di, ax ; 89 c7 ; 0xf811b + sal di, 007h ; c1 e7 07 ; 0xf811d + lea ax, [di+00110h] ; 8d 85 10 01 ; 0xf8120 + xor cx, cx ; 31 c9 ; 0xf8124 ahci.c:260 + mov dx, bx ; 89 da ; 0xf8126 + xchg cx, ax ; 91 ; 0xf8128 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8129 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf812d + out DX, eax ; 66 ef ; 0xf812f + lea si, [bx+004h] ; 8d 77 04 ; 0xf8131 ahci.c:261 + mov dx, si ; 89 f2 ; 0xf8134 + in eax, DX ; 66 ed ; 0xf8136 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8138 + shr eax, 010h ; 66 c1 e8 10 ; 0xf813a + xchg dx, ax ; 92 ; 0xf813e + or AL, strict byte 001h ; 0c 01 ; 0xf813f + mov cx, dx ; 89 d1 ; 0xf8141 + mov dx, si ; 89 f2 ; 0xf8143 + xchg cx, ax ; 91 ; 0xf8145 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8146 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf814a + out DX, eax ; 66 ef ; 0xf814c + lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf814e ahci.c:337 + xor cx, cx ; 31 c9 ; 0xf8152 ahci.c:269 + mov dx, bx ; 89 da ; 0xf8154 + xchg cx, ax ; 91 ; 0xf8156 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8157 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf815b + out DX, eax ; 66 ef ; 0xf815d + mov dx, si ; 89 f2 ; 0xf815f ahci.c:270 + in eax, DX ; 66 ed ; 0xf8161 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8163 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8165 + xchg dx, ax ; 92 ; 0xf8169 + and AL, strict byte 0feh ; 24 fe ; 0xf816a + mov cx, dx ; 89 d1 ; 0xf816c + mov dx, si ; 89 f2 ; 0xf816e + xchg cx, ax ; 91 ; 0xf8170 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8171 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8175 + out DX, eax ; 66 ef ; 0xf8177 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf8179 ahci.c:343 + pop di ; 5f ; 0xf817c + pop si ; 5e ; 0xf817d + pop cx ; 59 ; 0xf817e + pop bp ; 5d ; 0xf817f + retn ; c3 ; 0xf8180 + ; disGetNextSymbol 0xf8181 LB 0x2bd7 -> off=0x0 cb=000000000000021a uValue=00000000000f6b81 'ahci_cmd_data' +ahci_cmd_data: ; 0xf8181 LB 0x21a + push bp ; 55 ; 0xf8181 ahci.c:348 + mov bp, sp ; 89 e5 ; 0xf8182 + push cx ; 51 ; 0xf8184 + push si ; 56 ; 0xf8185 + push di ; 57 ; 0xf8186 + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf8187 + mov di, ax ; 89 c7 ; 0xf818a + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf818c + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf818f + mov word [bp-014h], strict word 00000h ; c7 46 ec 00 00 ; 0xf8192 ahci.c:350 + mov es, dx ; 8e c2 ; 0xf8197 + mov ax, word [es:di+002a6h] ; 26 8b 85 a6 02 ; 0xf8199 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf819e + mov word [bp-010h], strict word 00000h ; c7 46 f0 00 00 ; 0xf81a1 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf81a6 + mov ax, word [es:di+00eh] ; 26 8b 45 0e ; 0xf81a9 ahci.c:351 + mov word [bp-012h], ax ; 89 46 ee ; 0xf81ad + mov ax, word [es:di+010h] ; 26 8b 45 10 ; 0xf81b0 ahci.c:352 + mov word [bp-016h], ax ; 89 46 ea ; 0xf81b4 + mov cx, strict word 00040h ; b9 40 00 ; 0xf81b7 ahci.c:355 + xor bx, bx ; 31 db ; 0xf81ba + mov ax, 00080h ; b8 80 00 ; 0xf81bc + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf81bf + call 0aa30h ; e8 6b 28 ; 0xf81c2 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf81c5 ahci.c:358 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf81c8 + mov word [es:bx+00080h], 08027h ; 26 c7 87 80 00 27 80 ; 0xf81cb + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf81d2 ahci.c:360 + mov byte [es:bx+00082h], al ; 26 88 87 82 00 ; 0xf81d5 + mov byte [es:bx+00083h], 000h ; 26 c6 87 83 00 00 ; 0xf81da ahci.c:361 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf81e0 ahci.c:363 + mov ax, word [es:di] ; 26 8b 05 ; 0xf81e3 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf81e6 + mov byte [es:bx+00084h], al ; 26 88 87 84 00 ; 0xf81e9 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf81ee ahci.c:364 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf81f1 + mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf81f5 + mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf81f9 + mov dx, word [es:di] ; 26 8b 15 ; 0xf81fd + mov si, strict word 00008h ; be 08 00 ; 0xf8200 + call 0aa10h ; e8 0a 28 ; 0xf8203 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8206 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8209 + mov byte [es:bx+00085h], dl ; 26 88 97 85 00 ; 0xf820c + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf8211 ahci.c:365 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf8214 + mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf8218 + mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf821c + mov dx, word [es:di] ; 26 8b 15 ; 0xf8220 + mov si, strict word 00010h ; be 10 00 ; 0xf8223 + call 0aa10h ; e8 e7 27 ; 0xf8226 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8229 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf822c + mov byte [es:bx+00086h], dl ; 26 88 97 86 00 ; 0xf822f + mov byte [es:bx+00087h], 040h ; 26 c6 87 87 00 40 ; 0xf8234 ahci.c:366 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf823a ahci.c:368 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf823d + mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf8241 + mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf8245 + mov dx, word [es:di] ; 26 8b 15 ; 0xf8249 + mov si, strict word 00018h ; be 18 00 ; 0xf824c + call 0aa10h ; e8 be 27 ; 0xf824f + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8252 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8255 + mov byte [es:bx+00088h], dl ; 26 88 97 88 00 ; 0xf8258 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf825d ahci.c:369 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf8260 + mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf8264 + mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf8268 + mov dx, word [es:di] ; 26 8b 15 ; 0xf826c + mov si, strict word 00020h ; be 20 00 ; 0xf826f + call 0aa10h ; e8 9b 27 ; 0xf8272 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8275 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8278 + mov byte [es:bx+00089h], dl ; 26 88 97 89 00 ; 0xf827b + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf8280 ahci.c:370 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf8283 + mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf8287 + mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf828b + mov dx, word [es:di] ; 26 8b 15 ; 0xf828f + mov si, strict word 00028h ; be 28 00 ; 0xf8292 + call 0aa10h ; e8 78 27 ; 0xf8295 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8298 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf829b + mov byte [es:bx+0008ah], dl ; 26 88 97 8a 00 ; 0xf829e + mov byte [es:bx+0008bh], 000h ; 26 c6 87 8b 00 00 ; 0xf82a3 ahci.c:371 + mov al, byte [bp-012h] ; 8a 46 ee ; 0xf82a9 ahci.c:373 + mov byte [es:bx+0008ch], al ; 26 88 87 8c 00 ; 0xf82ac + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf82b1 ahci.c:374 + shr ax, 008h ; c1 e8 08 ; 0xf82b4 + mov byte [es:bx+0008dh], al ; 26 88 87 8d 00 ; 0xf82b7 + mov word [es:bx+00272h], strict word 00010h ; 26 c7 87 72 02 10 00 ; 0xf82bc ahci.c:377 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf82c3 ahci.c:379 + xor dx, dx ; 31 d2 ; 0xf82c6 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf82c8 + xor cx, cx ; 31 c9 ; 0xf82cb + call 0a9c0h ; e8 f0 26 ; 0xf82cd + push dx ; 52 ; 0xf82d0 + push ax ; 50 ; 0xf82d1 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf82d2 + mov bx, word [es:di+008h] ; 26 8b 5d 08 ; 0xf82d5 + mov cx, word [es:di+00ah] ; 26 8b 4d 0a ; 0xf82d9 + mov ax, 00266h ; b8 66 02 ; 0xf82dd + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf82e0 + call 0a910h ; e8 2a 26 ; 0xf82e3 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf82e6 ahci.c:382 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf82e9 + mov dx, word [es:bx+0027ah] ; 26 8b 97 7a 02 ; 0xf82ec + add dx, strict byte 0ffffh ; 83 c2 ff ; 0xf82f1 + mov bx, word [es:bx+0027ch] ; 26 8b 9f 7c 02 ; 0xf82f4 + adc bx, strict byte 0ffffh ; 83 d3 ff ; 0xf82f9 + mov si, word [bp-014h] ; 8b 76 ec ; 0xf82fc + mov al, byte [es:si+00263h] ; 26 8a 84 63 02 ; 0xf82ff + xor ah, ah ; 30 e4 ; 0xf8304 + mov di, ax ; 89 c7 ; 0xf8306 + sal di, 004h ; c1 e7 04 ; 0xf8308 + mov word [es:di+0010ch], dx ; 26 89 95 0c 01 ; 0xf830b + mov word [es:di+0010eh], bx ; 26 89 9d 0e 01 ; 0xf8310 + mov bx, si ; 89 f3 ; 0xf8315 ahci.c:383 + mov al, byte [es:bx+00263h] ; 26 8a 87 63 02 ; 0xf8317 + mov di, ax ; 89 c7 ; 0xf831c + sal di, 004h ; c1 e7 04 ; 0xf831e + mov dx, word [es:si+00276h] ; 26 8b 94 76 02 ; 0xf8321 + mov ax, word [es:si+00278h] ; 26 8b 84 78 02 ; 0xf8326 + mov word [es:di+00100h], dx ; 26 89 95 00 01 ; 0xf832b + mov word [es:di+00102h], ax ; 26 89 85 02 01 ; 0xf8330 + inc byte [es:bx+00263h] ; 26 fe 87 63 02 ; 0xf8335 ahci.c:384 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf833a ahci.c:398 + cmp AL, strict byte 035h ; 3c 35 ; 0xf833d + jne short 08347h ; 75 06 ; 0xf833f + mov byte [bp-008h], 040h ; c6 46 f8 40 ; 0xf8341 ahci.c:399 + jmp short 0835bh ; eb 14 ; 0xf8345 ahci.c:400 + cmp AL, strict byte 0a0h ; 3c a0 ; 0xf8347 + jne short 08357h ; 75 0c ; 0xf8349 + or byte [bp-008h], 020h ; 80 4e f8 20 ; 0xf834b ahci.c:401 + or byte [es:bx+00083h], 001h ; 26 80 8f 83 00 01 ; 0xf834f ahci.c:402 + jmp short 0835bh ; eb 04 ; 0xf8355 ahci.c:403 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf8357 ahci.c:404 + or byte [bp-008h], 005h ; 80 4e f8 05 ; 0xf835b ahci.c:406 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf835f ahci.c:408 + xor bh, bh ; 30 ff ; 0xf8362 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8364 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8367 + call 0802bh ; e8 be fc ; 0xf836a + mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf836d ahci.c:411 + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf8370 + add bx, 00240h ; 81 c3 40 02 ; 0xf8373 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8377 ahci.c:415 + add ax, 00266h ; 05 66 02 ; 0xf837a + mov dx, cx ; 89 ca ; 0xf837d + call 0a987h ; e8 05 26 ; 0xf837f + mov es, cx ; 8e c1 ; 0xf8382 ahci.c:416 + mov al, byte [es:bx+003h] ; 26 8a 47 03 ; 0xf8384 + test al, al ; 84 c0 ; 0xf8388 + je short 08391h ; 74 05 ; 0xf838a + mov ax, strict word 00004h ; b8 04 00 ; 0xf838c + jmp short 08393h ; eb 02 ; 0xf838f + xor ah, ah ; 30 e4 ; 0xf8391 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf8393 ahci.c:417 + pop di ; 5f ; 0xf8396 + pop si ; 5e ; 0xf8397 + pop cx ; 59 ; 0xf8398 + pop bp ; 5d ; 0xf8399 + retn ; c3 ; 0xf839a + ; disGetNextSymbol 0xf839b LB 0x29bd -> off=0x0 cb=0000000000000180 uValue=00000000000f6d9b 'ahci_port_deinit_current' +ahci_port_deinit_current: ; 0xf839b LB 0x180 + push bp ; 55 ; 0xf839b ahci.c:422 + mov bp, sp ; 89 e5 ; 0xf839c + push bx ; 53 ; 0xf839e + push cx ; 51 ; 0xf839f + push si ; 56 ; 0xf83a0 + push di ; 57 ; 0xf83a1 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf83a2 + mov di, ax ; 89 c7 ; 0xf83a5 + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf83a7 + mov es, dx ; 8e c2 ; 0xf83aa ahci.c:427 + mov si, word [es:di+00260h] ; 26 8b b5 60 02 ; 0xf83ac + mov al, byte [es:di+00262h] ; 26 8a 85 62 02 ; 0xf83b1 ahci.c:428 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf83b6 + cmp AL, strict byte 0ffh ; 3c ff ; 0xf83b9 ahci.c:430 + je short 0841ch ; 74 5f ; 0xf83bb + xor ah, ah ; 30 e4 ; 0xf83bd ahci.c:433 + sal ax, 007h ; c1 e0 07 ; 0xf83bf + add ax, 00118h ; 05 18 01 ; 0xf83c2 + xor cx, cx ; 31 c9 ; 0xf83c5 ahci.c:269 + mov dx, si ; 89 f2 ; 0xf83c7 + xchg cx, ax ; 91 ; 0xf83c9 + sal eax, 010h ; 66 c1 e0 10 ; 0xf83ca + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf83ce + out DX, eax ; 66 ef ; 0xf83d0 + lea bx, [si+004h] ; 8d 5c 04 ; 0xf83d2 ahci.c:270 + mov dx, bx ; 89 da ; 0xf83d5 + in eax, DX ; 66 ed ; 0xf83d7 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf83d9 + shr eax, 010h ; 66 c1 e8 10 ; 0xf83db + xchg dx, ax ; 92 ; 0xf83df + and AL, strict byte 0eeh ; 24 ee ; 0xf83e0 + mov cx, dx ; 89 d1 ; 0xf83e2 + mov dx, bx ; 89 da ; 0xf83e4 + xchg cx, ax ; 91 ; 0xf83e6 + sal eax, 010h ; 66 c1 e0 10 ; 0xf83e7 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf83eb + out DX, eax ; 66 ef ; 0xf83ed + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf83ef ahci.c:436 + xor ah, ah ; 30 e4 ; 0xf83f2 + sal ax, 007h ; c1 e0 07 ; 0xf83f4 + add ax, 00118h ; 05 18 01 ; 0xf83f7 + xor cx, cx ; 31 c9 ; 0xf83fa ahci.c:279 + mov dx, si ; 89 f2 ; 0xf83fc + xchg cx, ax ; 91 ; 0xf83fe + sal eax, 010h ; 66 c1 e0 10 ; 0xf83ff + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8403 + out DX, eax ; 66 ef ; 0xf8405 + lea dx, [si+004h] ; 8d 54 04 ; 0xf8407 ahci.c:280 + in eax, DX ; 66 ed ; 0xf840a + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf840c + shr eax, 010h ; 66 c1 e8 10 ; 0xf840e + xchg dx, ax ; 92 ; 0xf8412 + test ax, 0c011h ; a9 11 c0 ; 0xf8413 + je short 0841fh ; 74 07 ; 0xf8416 + mov AL, strict byte 001h ; b0 01 ; 0xf8418 + jmp short 08421h ; eb 05 ; 0xf841a + jmp near 08512h ; e9 f3 00 ; 0xf841c + xor al, al ; 30 c0 ; 0xf841f + cmp AL, strict byte 001h ; 3c 01 ; 0xf8421 ahci.c:281 + je short 083efh ; 74 ca ; 0xf8423 + mov cx, strict word 00020h ; b9 20 00 ; 0xf8425 ahci.c:447 + xor bx, bx ; 31 db ; 0xf8428 + mov ax, di ; 89 f8 ; 0xf842a + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf842c + call 0aa30h ; e8 fe 25 ; 0xf842f + lea ax, [di+00080h] ; 8d 85 80 00 ; 0xf8432 ahci.c:448 + mov cx, strict word 00040h ; b9 40 00 ; 0xf8436 + xor bx, bx ; 31 db ; 0xf8439 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf843b + call 0aa30h ; e8 ef 25 ; 0xf843e + lea ax, [di+00200h] ; 8d 85 00 02 ; 0xf8441 ahci.c:449 + mov cx, strict word 00060h ; b9 60 00 ; 0xf8445 + xor bx, bx ; 31 db ; 0xf8448 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf844a + call 0aa30h ; e8 e0 25 ; 0xf844d + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8450 ahci.c:451 + xor ah, ah ; 30 e4 ; 0xf8453 + sal ax, 007h ; c1 e0 07 ; 0xf8455 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf8458 + add ax, 00108h ; 05 08 01 ; 0xf845b + cwd ; 99 ; 0xf845e + mov cx, dx ; 89 d1 ; 0xf845f + mov dx, si ; 89 f2 ; 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 + lea bx, [si+004h] ; 8d 5c 04 ; 0xf846c + xor ax, ax ; 31 c0 ; 0xf846f + xor cx, cx ; 31 c9 ; 0xf8471 + mov dx, bx ; 89 da ; 0xf8473 + xchg cx, ax ; 91 ; 0xf8475 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8476 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf847a + out DX, eax ; 66 ef ; 0xf847c + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf847e ahci.c:452 + add ax, 0010ch ; 05 0c 01 ; 0xf8481 + cwd ; 99 ; 0xf8484 + mov cx, dx ; 89 d1 ; 0xf8485 + mov dx, si ; 89 f2 ; 0xf8487 + xchg cx, ax ; 91 ; 0xf8489 + sal eax, 010h ; 66 c1 e0 10 ; 0xf848a + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf848e + out DX, eax ; 66 ef ; 0xf8490 + xor ax, ax ; 31 c0 ; 0xf8492 + xor cx, cx ; 31 c9 ; 0xf8494 + mov dx, bx ; 89 da ; 0xf8496 + xchg cx, ax ; 91 ; 0xf8498 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8499 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf849d + out DX, eax ; 66 ef ; 0xf849f + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf84a1 ahci.c:454 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf84a4 + cwd ; 99 ; 0xf84a6 + mov cx, dx ; 89 d1 ; 0xf84a7 + mov dx, si ; 89 f2 ; 0xf84a9 + xchg cx, ax ; 91 ; 0xf84ab + sal eax, 010h ; 66 c1 e0 10 ; 0xf84ac + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf84b0 + out DX, eax ; 66 ef ; 0xf84b2 + xor ax, ax ; 31 c0 ; 0xf84b4 + xor cx, cx ; 31 c9 ; 0xf84b6 + mov dx, bx ; 89 da ; 0xf84b8 + xchg cx, ax ; 91 ; 0xf84ba + sal eax, 010h ; 66 c1 e0 10 ; 0xf84bb + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf84bf + out DX, eax ; 66 ef ; 0xf84c1 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf84c3 ahci.c:455 + add ax, 00104h ; 05 04 01 ; 0xf84c6 + cwd ; 99 ; 0xf84c9 + mov cx, dx ; 89 d1 ; 0xf84ca + mov dx, si ; 89 f2 ; 0xf84cc + xchg cx, ax ; 91 ; 0xf84ce + sal eax, 010h ; 66 c1 e0 10 ; 0xf84cf + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf84d3 + out DX, eax ; 66 ef ; 0xf84d5 + xor ax, ax ; 31 c0 ; 0xf84d7 + xor cx, cx ; 31 c9 ; 0xf84d9 + mov dx, bx ; 89 da ; 0xf84db + xchg cx, ax ; 91 ; 0xf84dd + sal eax, 010h ; 66 c1 e0 10 ; 0xf84de + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf84e2 + out DX, eax ; 66 ef ; 0xf84e4 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf84e6 ahci.c:458 + add ax, 00114h ; 05 14 01 ; 0xf84e9 + cwd ; 99 ; 0xf84ec + mov cx, dx ; 89 d1 ; 0xf84ed + mov dx, si ; 89 f2 ; 0xf84ef + xchg cx, ax ; 91 ; 0xf84f1 + sal eax, 010h ; 66 c1 e0 10 ; 0xf84f2 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf84f6 + out DX, eax ; 66 ef ; 0xf84f8 + xor ax, ax ; 31 c0 ; 0xf84fa + xor cx, cx ; 31 c9 ; 0xf84fc + mov dx, bx ; 89 da ; 0xf84fe + xchg cx, ax ; 91 ; 0xf8500 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8501 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8505 + out DX, eax ; 66 ef ; 0xf8507 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8509 ahci.c:460 + mov byte [es:di+00262h], 0ffh ; 26 c6 85 62 02 ff ; 0xf850c + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf8512 ahci.c:462 + pop di ; 5f ; 0xf8515 + pop si ; 5e ; 0xf8516 + pop cx ; 59 ; 0xf8517 + pop bx ; 5b ; 0xf8518 + pop bp ; 5d ; 0xf8519 + retn ; c3 ; 0xf851a + ; disGetNextSymbol 0xf851b LB 0x283d -> off=0x0 cb=000000000000024d uValue=00000000000f6f1b 'ahci_port_init' +ahci_port_init: ; 0xf851b LB 0x24d + push bp ; 55 ; 0xf851b ahci.c:468 + mov bp, sp ; 89 e5 ; 0xf851c + push cx ; 51 ; 0xf851e + push si ; 56 ; 0xf851f + push di ; 57 ; 0xf8520 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8521 + mov si, ax ; 89 c6 ; 0xf8524 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf8526 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8529 + call 0839bh ; e8 6c fe ; 0xf852c ahci.c:471 + mov al, bl ; 88 d8 ; 0xf852f ahci.c:474 + xor ah, ah ; 30 e4 ; 0xf8531 + sal ax, 007h ; c1 e0 07 ; 0xf8533 + add ax, 00118h ; 05 18 01 ; 0xf8536 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8539 ahci.c:267 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf853c + xor cx, cx ; 31 c9 ; 0xf8541 ahci.c:269 + mov dx, bx ; 89 da ; 0xf8543 + xchg cx, ax ; 91 ; 0xf8545 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8546 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf854a + out DX, eax ; 66 ef ; 0xf854c + add bx, strict byte 00004h ; 83 c3 04 ; 0xf854e ahci.c:270 + mov dx, bx ; 89 da ; 0xf8551 + in eax, DX ; 66 ed ; 0xf8553 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8555 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8557 + xchg dx, ax ; 92 ; 0xf855b + and AL, strict byte 0eeh ; 24 ee ; 0xf855c + mov cx, dx ; 89 d1 ; 0xf855e + mov dx, bx ; 89 da ; 0xf8560 + xchg cx, ax ; 91 ; 0xf8562 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8563 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8567 + out DX, eax ; 66 ef ; 0xf8569 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf856b ahci.c:477 + xor ah, ah ; 30 e4 ; 0xf856e + sal ax, 007h ; c1 e0 07 ; 0xf8570 + add ax, 00118h ; 05 18 01 ; 0xf8573 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8576 ahci.c:277 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8579 + xor cx, cx ; 31 c9 ; 0xf857e ahci.c:279 + mov dx, bx ; 89 da ; 0xf8580 + xchg cx, ax ; 91 ; 0xf8582 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8583 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8587 + out DX, eax ; 66 ef ; 0xf8589 + lea dx, [bx+004h] ; 8d 57 04 ; 0xf858b ahci.c:280 + in eax, DX ; 66 ed ; 0xf858e + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8590 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8592 + xchg dx, ax ; 92 ; 0xf8596 + test ax, 0c011h ; a9 11 c0 ; 0xf8597 + je short 085a0h ; 74 04 ; 0xf859a + mov AL, strict byte 001h ; b0 01 ; 0xf859c + jmp short 085a2h ; eb 02 ; 0xf859e + xor al, al ; 30 c0 ; 0xf85a0 + cmp AL, strict byte 001h ; 3c 01 ; 0xf85a2 ahci.c:281 + je short 0856bh ; 74 c5 ; 0xf85a4 + mov cx, strict word 00020h ; b9 20 00 ; 0xf85a6 ahci.c:488 + xor bx, bx ; 31 db ; 0xf85a9 + mov ax, si ; 89 f0 ; 0xf85ab + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf85ad + call 0aa30h ; e8 7d 24 ; 0xf85b0 + lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf85b3 ahci.c:489 + mov cx, strict word 00040h ; b9 40 00 ; 0xf85b7 + xor bx, bx ; 31 db ; 0xf85ba + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf85bc + call 0aa30h ; e8 6e 24 ; 0xf85bf + lea di, [si+00200h] ; 8d bc 00 02 ; 0xf85c2 ahci.c:490 + mov cx, strict word 00060h ; b9 60 00 ; 0xf85c6 + xor bx, bx ; 31 db ; 0xf85c9 + mov ax, di ; 89 f8 ; 0xf85cb + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf85cd + call 0aa30h ; e8 5d 24 ; 0xf85d0 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf85d3 ahci.c:494 + xor bh, bh ; 30 ff ; 0xf85d6 + sal bx, 007h ; c1 e3 07 ; 0xf85d8 + lea ax, [bx+00108h] ; 8d 87 08 01 ; 0xf85db + cwd ; 99 ; 0xf85df + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85e0 + mov cx, word [es:si+00260h] ; 26 8b 8c 60 02 ; 0xf85e3 + mov word [bp-00ch], cx ; 89 4e f4 ; 0xf85e8 + mov cx, dx ; 89 d1 ; 0xf85eb + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf85ed + xchg cx, ax ; 91 ; 0xf85f0 + sal eax, 010h ; 66 c1 e0 10 ; 0xf85f1 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf85f5 + out DX, eax ; 66 ef ; 0xf85f7 + mov ax, di ; 89 f8 ; 0xf85f9 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf85fb + call 0800dh ; e8 0c fa ; 0xf85fe + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8601 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8604 + add di, strict byte 00004h ; 83 c7 04 ; 0xf8609 + mov cx, dx ; 89 d1 ; 0xf860c + mov dx, di ; 89 fa ; 0xf860e + xchg cx, ax ; 91 ; 0xf8610 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8611 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8615 + out DX, eax ; 66 ef ; 0xf8617 + lea ax, [bx+0010ch] ; 8d 87 0c 01 ; 0xf8619 ahci.c:495 + cwd ; 99 ; 0xf861d + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf861e + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8621 + mov cx, dx ; 89 d1 ; 0xf8626 + mov dx, di ; 89 fa ; 0xf8628 + xchg cx, ax ; 91 ; 0xf862a + sal eax, 010h ; 66 c1 e0 10 ; 0xf862b + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf862f + out DX, eax ; 66 ef ; 0xf8631 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8633 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8636 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf863b + xor ax, ax ; 31 c0 ; 0xf863e + xor cx, cx ; 31 c9 ; 0xf8640 + xchg cx, ax ; 91 ; 0xf8642 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8643 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8647 + out DX, eax ; 66 ef ; 0xf8649 + lea ax, [bx+00100h] ; 8d 87 00 01 ; 0xf864b ahci.c:498 + cwd ; 99 ; 0xf864f + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8650 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8653 + mov cx, dx ; 89 d1 ; 0xf8658 + mov dx, di ; 89 fa ; 0xf865a + xchg cx, ax ; 91 ; 0xf865c + sal eax, 010h ; 66 c1 e0 10 ; 0xf865d + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8661 + out DX, eax ; 66 ef ; 0xf8663 + mov ax, si ; 89 f0 ; 0xf8665 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8667 + call 0800dh ; e8 a0 f9 ; 0xf866a + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf866d + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8670 + add di, strict byte 00004h ; 83 c7 04 ; 0xf8675 + mov cx, dx ; 89 d1 ; 0xf8678 + mov dx, di ; 89 fa ; 0xf867a + xchg cx, ax ; 91 ; 0xf867c + sal eax, 010h ; 66 c1 e0 10 ; 0xf867d + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8681 + out DX, eax ; 66 ef ; 0xf8683 + lea ax, [bx+00104h] ; 8d 87 04 01 ; 0xf8685 ahci.c:499 + cwd ; 99 ; 0xf8689 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf868a + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf868d + mov cx, dx ; 89 d1 ; 0xf8692 + mov dx, di ; 89 fa ; 0xf8694 + xchg cx, ax ; 91 ; 0xf8696 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8697 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf869b + out DX, eax ; 66 ef ; 0xf869d + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf869f + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf86a2 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf86a7 + xor ax, ax ; 31 c0 ; 0xf86aa + xor cx, cx ; 31 c9 ; 0xf86ac + xchg cx, ax ; 91 ; 0xf86ae + sal eax, 010h ; 66 c1 e0 10 ; 0xf86af + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf86b3 + out DX, eax ; 66 ef ; 0xf86b5 + lea ax, [bx+00114h] ; 8d 87 14 01 ; 0xf86b7 ahci.c:502 + cwd ; 99 ; 0xf86bb + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf86bc + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf86bf + mov cx, dx ; 89 d1 ; 0xf86c4 + mov dx, di ; 89 fa ; 0xf86c6 + xchg cx, ax ; 91 ; 0xf86c8 + sal eax, 010h ; 66 c1 e0 10 ; 0xf86c9 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf86cd + out DX, eax ; 66 ef ; 0xf86cf + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf86d1 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf86d4 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf86d9 + xor ax, ax ; 31 c0 ; 0xf86dc + xor cx, cx ; 31 c9 ; 0xf86de + xchg cx, ax ; 91 ; 0xf86e0 + sal eax, 010h ; 66 c1 e0 10 ; 0xf86e1 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf86e5 + out DX, eax ; 66 ef ; 0xf86e7 + lea ax, [bx+00110h] ; 8d 87 10 01 ; 0xf86e9 ahci.c:503 + cwd ; 99 ; 0xf86ed + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf86ee + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf86f1 + mov cx, dx ; 89 d1 ; 0xf86f6 + mov dx, di ; 89 fa ; 0xf86f8 + xchg cx, ax ; 91 ; 0xf86fa + sal eax, 010h ; 66 c1 e0 10 ; 0xf86fb + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf86ff + out DX, eax ; 66 ef ; 0xf8701 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8703 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8706 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf870b + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf870e + mov cx, ax ; 89 c1 ; 0xf8711 + xchg cx, ax ; 91 ; 0xf8713 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8714 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8718 + out DX, eax ; 66 ef ; 0xf871a + lea ax, [bx+00130h] ; 8d 87 30 01 ; 0xf871c ahci.c:505 + cwd ; 99 ; 0xf8720 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8721 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8724 + mov cx, dx ; 89 d1 ; 0xf8729 + mov dx, bx ; 89 da ; 0xf872b + xchg cx, ax ; 91 ; 0xf872d + sal eax, 010h ; 66 c1 e0 10 ; 0xf872e + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8732 + out DX, eax ; 66 ef ; 0xf8734 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8736 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8739 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf873e + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8741 + mov cx, ax ; 89 c1 ; 0xf8744 + xchg cx, ax ; 91 ; 0xf8746 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8747 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf874b + out DX, eax ; 66 ef ; 0xf874d + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf874f ahci.c:507 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8752 + mov byte [es:si+00262h], al ; 26 88 84 62 02 ; 0xf8755 + mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf875a ahci.c:508 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf8760 ahci.c:509 + pop di ; 5f ; 0xf8763 + pop si ; 5e ; 0xf8764 + pop cx ; 59 ; 0xf8765 + pop bp ; 5d ; 0xf8766 + retn ; c3 ; 0xf8767 + ; disGetNextSymbol 0xf8768 LB 0x25f0 -> off=0x0 cb=00000000000000a8 uValue=00000000000f7168 'ahci_read_sectors' +ahci_read_sectors: ; 0xf8768 LB 0xa8 + push bp ; 55 ; 0xf8768 ahci.c:518 + mov bp, sp ; 89 e5 ; 0xf8769 + push si ; 56 ; 0xf876b + push di ; 57 ; 0xf876c + push ax ; 50 ; 0xf876d + les bx, [bp+004h] ; c4 5e 04 ; 0xf876e ahci.c:523 + mov bl, byte [es:bx+00ch] ; 26 8a 5f 0c ; 0xf8771 + xor bh, bh ; 30 ff ; 0xf8775 + sub bx, strict byte 0000ch ; 83 eb 0c ; 0xf8777 + cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf877a ahci.c:524 + jbe short 0878eh ; 76 0f ; 0xf877d + push bx ; 53 ; 0xf877f ahci.c:525 + push 00c8eh ; 68 8e 0c ; 0xf8780 + push 00ca0h ; 68 a0 0c ; 0xf8783 + push strict byte 00007h ; 6a 07 ; 0xf8786 + call 01953h ; e8 c8 91 ; 0xf8788 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf878b + xor di, di ; 31 ff ; 0xf878e ahci.c:531 + les si, [bp+004h] ; c4 76 04 ; 0xf8790 + mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf8793 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8798 ahci.c:247 + mov es, dx ; 8e c2 ; 0xf879c + mov word [es:di+00264h], ax ; 26 89 85 64 02 ; 0xf879e + mov es, [bp+006h] ; 8e 46 06 ; 0xf87a3 ahci.c:532 + add bx, si ; 01 f3 ; 0xf87a6 + mov bl, byte [es:bx+002a1h] ; 26 8a 9f a1 02 ; 0xf87a8 + xor bh, bh ; 30 ff ; 0xf87ad + mov di, si ; 89 f7 ; 0xf87af + mov dx, word [es:di+002a6h] ; 26 8b 95 a6 02 ; 0xf87b1 + xor ax, ax ; 31 c0 ; 0xf87b6 + call 0851bh ; e8 60 fd ; 0xf87b8 + mov bx, strict word 00025h ; bb 25 00 ; 0xf87bb ahci.c:533 + mov ax, si ; 89 f0 ; 0xf87be + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf87c0 + call 08181h ; e8 bb f9 ; 0xf87c3 + mov word [bp-006h], ax ; 89 46 fa ; 0xf87c6 + mov es, [bp+006h] ; 8e 46 06 ; 0xf87c9 ahci.c:535 + mov bx, si ; 89 f3 ; 0xf87cc + mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf87ce + mov word [es:bx+018h], ax ; 26 89 47 18 ; 0xf87d2 + mov cx, ax ; 89 c1 ; 0xf87d6 ahci.c:537 + sal cx, 009h ; c1 e1 09 ; 0xf87d8 + shr cx, 1 ; d1 e9 ; 0xf87db + mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf87dd + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf87e1 + mov si, di ; 89 fe ; 0xf87e5 + mov dx, ax ; 89 c2 ; 0xf87e7 + mov es, ax ; 8e c0 ; 0xf87e9 + push DS ; 1e ; 0xf87eb + mov ds, dx ; 8e da ; 0xf87ec + rep movsw ; f3 a5 ; 0xf87ee + pop DS ; 1f ; 0xf87f0 + xor bx, bx ; 31 db ; 0xf87f1 ahci.c:539 + les di, [bp+004h] ; c4 7e 04 ; 0xf87f3 + mov es, [es:di+002a6h] ; 26 8e 85 a6 02 ; 0xf87f6 + mov ax, word [es:bx+00264h] ; 26 8b 87 64 02 ; 0xf87fb ahci.c:252 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8800 + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf8804 ahci.c:541 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf8807 + pop di ; 5f ; 0xf880a + pop si ; 5e ; 0xf880b + pop bp ; 5d ; 0xf880c + retn 00004h ; c2 04 00 ; 0xf880d + ; disGetNextSymbol 0xf8810 LB 0x2548 -> off=0x0 cb=0000000000000086 uValue=00000000000f7210 'ahci_write_sectors' +ahci_write_sectors: ; 0xf8810 LB 0x86 + push bp ; 55 ; 0xf8810 ahci.c:550 + mov bp, sp ; 89 e5 ; 0xf8811 + push si ; 56 ; 0xf8813 + push di ; 57 ; 0xf8814 + mov si, word [bp+004h] ; 8b 76 04 ; 0xf8815 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf8818 + mov es, cx ; 8e c1 ; 0xf881b ahci.c:555 + mov dl, byte [es:si+00ch] ; 26 8a 54 0c ; 0xf881d + xor dh, dh ; 30 f6 ; 0xf8821 + sub dx, strict byte 0000ch ; 83 ea 0c ; 0xf8823 + cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf8826 ahci.c:556 + jbe short 0883ah ; 76 0f ; 0xf8829 + push dx ; 52 ; 0xf882b ahci.c:557 + push 00cbfh ; 68 bf 0c ; 0xf882c + push 00ca0h ; 68 a0 0c ; 0xf882f + push strict byte 00007h ; 6a 07 ; 0xf8832 + call 01953h ; e8 1c 91 ; 0xf8834 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf8837 + xor bx, bx ; 31 db ; 0xf883a ahci.c:563 + mov es, cx ; 8e c1 ; 0xf883c + mov di, word [es:si+002a6h] ; 26 8b bc a6 02 ; 0xf883e + shr eax, 010h ; 66 c1 e8 10 ; 0xf8843 ahci.c:247 + mov es, di ; 8e c7 ; 0xf8847 + mov word [es:bx+00264h], ax ; 26 89 87 64 02 ; 0xf8849 + mov es, cx ; 8e c1 ; 0xf884e ahci.c:564 + mov bx, si ; 89 f3 ; 0xf8850 + add bx, dx ; 01 d3 ; 0xf8852 + mov bl, byte [es:bx+002a1h] ; 26 8a 9f a1 02 ; 0xf8854 + xor bh, bh ; 30 ff ; 0xf8859 + mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf885b + xor ax, ax ; 31 c0 ; 0xf8860 + call 0851bh ; e8 b6 fc ; 0xf8862 + mov bx, strict word 00035h ; bb 35 00 ; 0xf8865 ahci.c:565 + mov ax, si ; 89 f0 ; 0xf8868 + mov dx, cx ; 89 ca ; 0xf886a + call 08181h ; e8 12 f9 ; 0xf886c + mov dx, ax ; 89 c2 ; 0xf886f + mov es, cx ; 8e c1 ; 0xf8871 ahci.c:567 + mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf8873 + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf8877 + xor bx, bx ; 31 db ; 0xf887b ahci.c:568 + mov es, [es:si+002a6h] ; 26 8e 84 a6 02 ; 0xf887d + mov ax, word [es:bx+00264h] ; 26 8b 87 64 02 ; 0xf8882 ahci.c:252 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8887 + mov ax, dx ; 89 d0 ; 0xf888b ahci.c:570 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf888d + pop di ; 5f ; 0xf8890 + pop si ; 5e ; 0xf8891 + pop bp ; 5d ; 0xf8892 + retn 00004h ; c2 04 00 ; 0xf8893 + ; disGetNextSymbol 0xf8896 LB 0x24c2 -> off=0x0 cb=0000000000000154 uValue=00000000000f7296 'ahci_cmd_packet' +ahci_cmd_packet: ; 0xf8896 LB 0x154 + push bp ; 55 ; 0xf8896 ahci.c:577 + mov bp, sp ; 89 e5 ; 0xf8897 + push si ; 56 ; 0xf8899 + push di ; 57 ; 0xf889a + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf889b + mov di, ax ; 89 c7 ; 0xf889e + mov byte [bp-006h], dl ; 88 56 fa ; 0xf88a0 + mov word [bp-010h], bx ; 89 5e f0 ; 0xf88a3 + mov word [bp-00eh], cx ; 89 4e f2 ; 0xf88a6 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf88a9 ahci.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf88ac + mov es, ax ; 8e c0 ; 0xf88af + mov ax, word [es:bx] ; 26 8b 07 ; 0xf88b1 + mov si, strict word 0005eh ; be 5e 00 ; 0xf88b4 ahci.c:59 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf88b7 + cmp byte [bp+008h], 002h ; 80 7e 08 02 ; 0xf88ba ahci.c:584 + jne short 088dfh ; 75 1f ; 0xf88be + mov bx, 00dcch ; bb cc 0d ; 0xf88c0 ahci.c:585 + mov cx, ds ; 8c d9 ; 0xf88c3 + mov ax, strict word 00004h ; b8 04 00 ; 0xf88c5 + call 01910h ; e8 45 90 ; 0xf88c8 + push 00cd2h ; 68 d2 0c ; 0xf88cb + push 00ce2h ; 68 e2 0c ; 0xf88ce + push strict byte 00004h ; 6a 04 ; 0xf88d1 + call 01953h ; e8 7d 90 ; 0xf88d3 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf88d6 + mov ax, strict word 00001h ; b8 01 00 ; 0xf88d9 ahci.c:586 + jmp near 089e1h ; e9 02 01 ; 0xf88dc + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf88df ahci.c:597 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf88e2 + mov cx, strict word 00008h ; b9 08 00 ; 0xf88e5 + sal ax, 1 ; d1 e0 ; 0xf88e8 + rcl dx, 1 ; d1 d2 ; 0xf88ea + loop 088e8h ; e2 fa ; 0xf88ec + mov es, [bp-008h] ; 8e 46 f8 ; 0xf88ee + mov word [es:si], ax ; 26 89 04 ; 0xf88f1 + mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf88f4 + mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf88f8 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf88fe + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf8904 ahci.c:598 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8907 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf890b + mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf890e + mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf8912 ahci.c:599 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf8916 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8919 + xor cx, cx ; 31 c9 ; 0xf891c + call 0a9e0h ; e8 bf 20 ; 0xf891e + mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf8921 + mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf8925 ahci.c:602 + mov ax, word [es:si+002a6h] ; 26 8b 84 a6 02 ; 0xf892a + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf892f + sub di, strict byte 0000ch ; 83 ef 0c ; 0xf8932 ahci.c:590 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8935 ahci.c:247 + les bx, [bp-00ch] ; c4 5e f4 ; 0xf8939 + mov word [es:bx+00264h], ax ; 26 89 87 64 02 ; 0xf893c + mov es, [bp-008h] ; 8e 46 f8 ; 0xf8941 ahci.c:605 + add di, si ; 01 f7 ; 0xf8944 + mov bl, byte [es:di+002a1h] ; 26 8a 9d a1 02 ; 0xf8946 + xor bh, bh ; 30 ff ; 0xf894b + mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf894d + xor ax, ax ; 31 c0 ; 0xf8952 + call 0851bh ; e8 c4 fb ; 0xf8954 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf8957 ahci.c:608 + xor ah, ah ; 30 e4 ; 0xf895a + push ax ; 50 ; 0xf895c + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf895d + mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf8960 + mov ax, 000c0h ; b8 c0 00 ; 0xf8963 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8966 + call 0aa40h ; e8 d4 20 ; 0xf8969 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf896c ahci.c:612 + mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00 ; 0xf896f + mov word [es:si+01ah], strict word 00000h ; 26 c7 44 1a 00 00 ; 0xf8975 ahci.c:613 + mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf897b + mov bx, 000a0h ; bb a0 00 ; 0xf8981 ahci.c:615 + mov ax, si ; 89 f0 ; 0xf8984 + mov dx, es ; 8c c2 ; 0xf8986 + call 08181h ; e8 f6 f7 ; 0xf8988 + les bx, [bp-00ch] ; c4 5e f4 ; 0xf898b ahci.c:617 + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf898e + mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf8992 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf8996 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf8999 + mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf899d + mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf89a1 ahci.c:619 + mov cx, dx ; 89 d1 ; 0xf89a5 + shr cx, 1 ; d1 e9 ; 0xf89a7 + rcr bx, 1 ; d1 db ; 0xf89a9 + mov di, word [es:si+008h] ; 26 8b 7c 08 ; 0xf89ab + mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf89af + mov cx, bx ; 89 d9 ; 0xf89b3 + mov si, di ; 89 fe ; 0xf89b5 + mov dx, ax ; 89 c2 ; 0xf89b7 + mov es, ax ; 8e c0 ; 0xf89b9 + push DS ; 1e ; 0xf89bb + mov ds, dx ; 8e da ; 0xf89bc + rep movsw ; f3 a5 ; 0xf89be + pop DS ; 1f ; 0xf89c0 + les bx, [bp-00ch] ; c4 5e f4 ; 0xf89c1 ahci.c:252 + mov ax, word [es:bx+00264h] ; 26 8b 87 64 02 ; 0xf89c4 + sal eax, 010h ; 66 c1 e0 10 ; 0xf89c9 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89cd ahci.c:623 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf89d0 + or ax, word [es:bx+004h] ; 26 0b 47 04 ; 0xf89d4 + jne short 089dfh ; 75 05 ; 0xf89d8 + mov ax, strict word 00004h ; b8 04 00 ; 0xf89da + jmp short 089e1h ; eb 02 ; 0xf89dd + xor ax, ax ; 31 c0 ; 0xf89df + lea sp, [bp-004h] ; 8d 66 fc ; 0xf89e1 ahci.c:624 + pop di ; 5f ; 0xf89e4 + pop si ; 5e ; 0xf89e5 + pop bp ; 5d ; 0xf89e6 + retn 0000ah ; c2 0a 00 ; 0xf89e7 + ; disGetNextSymbol 0xf89ea LB 0x236e -> off=0x0 cb=0000000000000005 uValue=00000000000f73ea 'wait_ticks_device_init' +wait_ticks_device_init: ; 0xf89ea LB 0x5 + push bp ; 55 ; 0xf89ea ahci.c:627 + mov bp, sp ; 89 e5 ; 0xf89eb + pop bp ; 5d ; 0xf89ed ahci.c:629 + retn ; c3 ; 0xf89ee + ; disGetNextSymbol 0xf89ef LB 0x2369 -> off=0x0 cb=00000000000004d2 uValue=00000000000f73ef 'ahci_port_detect_device' +ahci_port_detect_device: ; 0xf89ef LB 0x4d2 + push bp ; 55 ; 0xf89ef ahci.c:631 + mov bp, sp ; 89 e5 ; 0xf89f0 + push cx ; 51 ; 0xf89f2 + push si ; 56 ; 0xf89f3 + push di ; 57 ; 0xf89f4 + sub sp, 00228h ; 81 ec 28 02 ; 0xf89f5 + mov si, ax ; 89 c6 ; 0xf89f9 + mov word [bp-010h], dx ; 89 56 f0 ; 0xf89fb + mov byte [bp-00ch], bl ; 88 5e f4 ; 0xf89fe + mov word [bp-020h], strict word 00000h ; c7 46 e0 00 00 ; 0xf8a01 ahci.c:637 + mov cl, bl ; 88 d9 ; 0xf8a06 ahci.c:639 + xor ch, ch ; 30 ed ; 0xf8a08 + mov bx, cx ; 89 cb ; 0xf8a0a + call 0851bh ; e8 0c fb ; 0xf8a0c + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8a0f ahci.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8a12 + mov es, ax ; 8e c0 ; 0xf8a15 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf8a17 + mov word [bp-00eh], strict word 0005eh ; c7 46 f2 5e 00 ; 0xf8a1a ahci.c:59 + mov word [bp-016h], ax ; 89 46 ea ; 0xf8a1f + mov ax, cx ; 89 c8 ; 0xf8a22 ahci.c:644 + sal ax, 007h ; c1 e0 07 ; 0xf8a24 + add ax, 0012ch ; 05 2c 01 ; 0xf8a27 + cwd ; 99 ; 0xf8a2a + mov di, ax ; 89 c7 ; 0xf8a2b + mov bx, dx ; 89 d3 ; 0xf8a2d + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8a2f + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a32 + mov cx, bx ; 89 d9 ; 0xf8a37 + xchg cx, ax ; 91 ; 0xf8a39 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a3a + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a3e + out DX, eax ; 66 ef ; 0xf8a40 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8a42 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a45 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a4a + mov ax, strict word 00001h ; b8 01 00 ; 0xf8a4d + xor cx, cx ; 31 c9 ; 0xf8a50 + xchg cx, ax ; 91 ; 0xf8a52 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a53 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a57 + out DX, eax ; 66 ef ; 0xf8a59 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8a5b ahci.c:649 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a5e + mov ax, di ; 89 f8 ; 0xf8a63 + mov cx, bx ; 89 d9 ; 0xf8a65 + xchg cx, ax ; 91 ; 0xf8a67 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a68 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a6c + out DX, eax ; 66 ef ; 0xf8a6e + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8a70 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a73 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a78 + xor ax, ax ; 31 c0 ; 0xf8a7b + xor cx, cx ; 31 c9 ; 0xf8a7d + xchg cx, ax ; 91 ; 0xf8a7f + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a80 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a84 + out DX, eax ; 66 ef ; 0xf8a86 + mov di, strict word 0006ch ; bf 6c 00 ; 0xf8a88 ahci.c:658 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8a8b + mov word [bp-012h], ax ; 89 46 ee ; 0xf8a8e + mov es, ax ; 8e c0 ; 0xf8a91 ahci.c:659 + mov ax, word [es:di] ; 26 8b 05 ; 0xf8a93 + add ax, strict word 00003h ; 05 03 00 ; 0xf8a96 + mov word [bp-022h], ax ; 89 46 de ; 0xf8a99 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8a9c + adc ax, strict word 00000h ; 15 00 00 ; 0xf8aa0 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf8aa3 + mov es, [bp-012h] ; 8e 46 ee ; 0xf8aa6 ahci.c:661 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8aa9 + cmp ax, word [bp-01ah] ; 3b 46 e6 ; 0xf8aad + jc short 08ac3h ; 72 11 ; 0xf8ab0 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8ab2 + cmp ax, word [bp-01ah] ; 3b 46 e6 ; 0xf8ab6 + jne short 08b0fh ; 75 54 ; 0xf8ab9 + mov ax, word [es:di] ; 26 8b 05 ; 0xf8abb + cmp ax, word [bp-022h] ; 3b 46 de ; 0xf8abe + jnc short 08b0fh ; 73 4c ; 0xf8ac1 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8ac3 ahci.c:664 + xor ah, ah ; 30 e4 ; 0xf8ac6 + sal ax, 007h ; c1 e0 07 ; 0xf8ac8 + add ax, 00128h ; 05 28 01 ; 0xf8acb + cwd ; 99 ; 0xf8ace + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8acf + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8ad2 + mov cx, dx ; 89 d1 ; 0xf8ad7 + mov dx, bx ; 89 da ; 0xf8ad9 + xchg cx, ax ; 91 ; 0xf8adb + sal eax, 010h ; 66 c1 e0 10 ; 0xf8adc + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8ae0 + out DX, eax ; 66 ef ; 0xf8ae2 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8ae4 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8ae7 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8aec + in eax, DX ; 66 ed ; 0xf8aef + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8af1 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8af3 + xchg dx, ax ; 92 ; 0xf8af7 + mov word [bp-026h], ax ; 89 46 da ; 0xf8af8 + mov word [bp-024h], dx ; 89 56 dc ; 0xf8afb + push strict byte 00000h ; 6a 00 ; 0xf8afe ahci.c:665 + mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8b00 + xor cx, cx ; 31 c9 ; 0xf8b03 + call 07ff1h ; e8 e9 f4 ; 0xf8b05 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8b08 + jne short 08aa6h ; 75 99 ; 0xf8b0b + jmp short 08b18h ; eb 09 ; 0xf8b0d ahci.c:667 + cmp word [bp-020h], strict byte 00000h ; 83 7e e0 00 ; 0xf8b0f ahci.c:672 + jne short 08b18h ; 75 03 ; 0xf8b13 + jmp near 08eb9h ; e9 a1 03 ; 0xf8b15 + push strict byte 00000h ; 6a 00 ; 0xf8b18 ahci.c:677 + mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8b1a + xor cx, cx ; 31 c9 ; 0xf8b1d + mov ax, word [bp-026h] ; 8b 46 da ; 0xf8b1f + mov dx, word [bp-024h] ; 8b 56 dc ; 0xf8b22 + call 07ff1h ; e8 c9 f4 ; 0xf8b25 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8b28 + jne short 08b15h ; 75 e8 ; 0xf8b2b + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8b2d ahci.c:685 + xor ah, ah ; 30 e4 ; 0xf8b30 + mov di, ax ; 89 c7 ; 0xf8b32 + sal di, 007h ; c1 e7 07 ; 0xf8b34 + lea ax, [di+00130h] ; 8d 85 30 01 ; 0xf8b37 + cwd ; 99 ; 0xf8b3b + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8b3c + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8b3f + mov cx, dx ; 89 d1 ; 0xf8b44 + mov dx, bx ; 89 da ; 0xf8b46 + xchg cx, ax ; 91 ; 0xf8b48 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8b49 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8b4d + out DX, eax ; 66 ef ; 0xf8b4f + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8b51 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8b54 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8b59 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8b5c + mov cx, ax ; 89 c1 ; 0xf8b5f + xchg cx, ax ; 91 ; 0xf8b61 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8b62 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8b66 + out DX, eax ; 66 ef ; 0xf8b68 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8b6a ahci.c:687 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8b6d + mov al, byte [es:bx+002a5h] ; 26 8a 87 a5 02 ; 0xf8b70 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf8b75 + cmp AL, strict byte 004h ; 3c 04 ; 0xf8b78 ahci.c:692 + jnc short 08b15h ; 73 99 ; 0xf8b7a + lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8b7c ahci.c:695 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8b80 ahci.c:258 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8b83 + xor cx, cx ; 31 c9 ; 0xf8b88 ahci.c:260 + mov dx, bx ; 89 da ; 0xf8b8a + xchg cx, ax ; 91 ; 0xf8b8c + sal eax, 010h ; 66 c1 e0 10 ; 0xf8b8d + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8b91 + out DX, eax ; 66 ef ; 0xf8b93 + add bx, strict byte 00004h ; 83 c3 04 ; 0xf8b95 ahci.c:261 + mov dx, bx ; 89 da ; 0xf8b98 + in eax, DX ; 66 ed ; 0xf8b9a + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8b9c + shr eax, 010h ; 66 c1 e8 10 ; 0xf8b9e + xchg dx, ax ; 92 ; 0xf8ba2 + or AL, strict byte 010h ; 0c 10 ; 0xf8ba3 + mov cx, dx ; 89 d1 ; 0xf8ba5 + mov dx, bx ; 89 da ; 0xf8ba7 + xchg cx, ax ; 91 ; 0xf8ba9 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8baa + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8bae + out DX, eax ; 66 ef ; 0xf8bb0 + lea ax, [di+00124h] ; 8d 85 24 01 ; 0xf8bb2 ahci.c:699 + cwd ; 99 ; 0xf8bb6 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8bb7 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8bba + mov cx, dx ; 89 d1 ; 0xf8bbf + mov dx, bx ; 89 da ; 0xf8bc1 + xchg cx, ax ; 91 ; 0xf8bc3 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8bc4 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8bc8 + out DX, eax ; 66 ef ; 0xf8bca + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8bcc + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8bcf + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8bd4 + in eax, DX ; 66 ed ; 0xf8bd7 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8bd9 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8bdb + xchg dx, ax ; 92 ; 0xf8bdf + mov bx, dx ; 89 d3 ; 0xf8be0 + mov cl, byte [bp-008h] ; 8a 4e f8 ; 0xf8be2 + add cl, 00ch ; 80 c1 0c ; 0xf8be5 + test dx, dx ; 85 d2 ; 0xf8be8 ahci.c:700 + jne short 08c40h ; 75 54 ; 0xf8bea + cmp ax, 00101h ; 3d 01 01 ; 0xf8bec + jne short 08c40h ; 75 4f ; 0xf8bef + mov es, [bp-016h] ; 8e 46 ea ; 0xf8bf1 ahci.c:710 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8bf4 + mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf8bf7 + mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf8bfd + mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf8c03 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf8c09 + lea dx, [bp-0022eh] ; 8d 96 d2 fd ; 0xf8c0e ahci.c:711 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf8c12 + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf8c16 + mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf8c1a ahci.c:712 + mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf8c20 ahci.c:713 + mov bx, 000ech ; bb ec 00 ; 0xf8c26 ahci.c:714 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8c29 + mov dx, es ; 8c c2 ; 0xf8c2c + call 08181h ; e8 50 f5 ; 0xf8c2e + mov byte [bp-00ah], cl ; 88 4e f6 ; 0xf8c31 ahci.c:717 + test byte [bp-0022eh], 080h ; f6 86 d2 fd 80 ; 0xf8c34 ahci.c:719 + je short 08c43h ; 74 08 ; 0xf8c39 + mov ax, strict word 00001h ; b8 01 00 ; 0xf8c3b + jmp short 08c45h ; eb 05 ; 0xf8c3e + jmp near 08df1h ; e9 ae 01 ; 0xf8c40 + xor ax, ax ; 31 c0 ; 0xf8c43 + mov dl, al ; 88 c2 ; 0xf8c45 + mov ax, word [bp-0022ch] ; 8b 86 d4 fd ; 0xf8c47 ahci.c:720 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf8c4b + mov ax, word [bp-00228h] ; 8b 86 d8 fd ; 0xf8c4e ahci.c:721 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf8c52 + mov ax, word [bp-00222h] ; 8b 86 de fd ; 0xf8c55 ahci.c:722 + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf8c59 + mov si, word [bp-001b6h] ; 8b b6 4a fe ; 0xf8c5c ahci.c:723 + mov di, word [bp-001b4h] ; 8b be 4c fe ; 0xf8c60 + xor ax, ax ; 31 c0 ; 0xf8c64 + mov word [bp-014h], ax ; 89 46 ec ; 0xf8c66 + mov word [bp-028h], ax ; 89 46 d8 ; 0xf8c69 + cmp di, 00fffh ; 81 ff ff 0f ; 0xf8c6c ahci.c:725 + jne short 08c8dh ; 75 1b ; 0xf8c70 + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf8c72 + jne short 08c8dh ; 75 16 ; 0xf8c75 + mov ax, word [bp-00160h] ; 8b 86 a0 fe ; 0xf8c77 ahci.c:726 + mov word [bp-028h], ax ; 89 46 d8 ; 0xf8c7b + mov ax, word [bp-00162h] ; 8b 86 9e fe ; 0xf8c7e + mov word [bp-014h], ax ; 89 46 ec ; 0xf8c82 + mov di, word [bp-00164h] ; 8b be 9c fe ; 0xf8c85 + mov si, word [bp-00166h] ; 8b b6 9a fe ; 0xf8c89 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf8c8d ahci.c:730 + xor bh, bh ; 30 ff ; 0xf8c90 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8c92 + add bx, word [bp-00eh] ; 03 5e f2 ; 0xf8c95 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8c98 + mov byte [es:bx+002a1h], al ; 26 88 87 a1 02 ; 0xf8c9b + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8ca0 ahci.c:731 + xor ah, ah ; 30 e4 ; 0xf8ca3 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf8ca5 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8ca8 + add bx, ax ; 01 c3 ; 0xf8cab + mov word [es:bx+01eh], 0ff05h ; 26 c7 47 1e 05 ff ; 0xf8cad + mov byte [es:bx+020h], dl ; 26 88 57 20 ; 0xf8cb3 ahci.c:733 + mov byte [es:bx+021h], 000h ; 26 c6 47 21 00 ; 0xf8cb7 ahci.c:734 + mov word [es:bx+024h], 00200h ; 26 c7 47 24 00 02 ; 0xf8cbc ahci.c:735 + mov byte [es:bx+023h], 001h ; 26 c6 47 23 01 ; 0xf8cc2 ahci.c:736 + mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf8cc7 ahci.c:737 + mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf8cca + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf8cce + mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf8cd1 + mov word [es:bx+034h], di ; 26 89 7f 34 ; 0xf8cd5 + mov word [es:bx+032h], si ; 26 89 77 32 ; 0xf8cd9 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf8cdd ahci.c:739 + mov word [es:bx+02ch], ax ; 26 89 47 2c ; 0xf8ce0 + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf8ce4 ahci.c:740 + mov word [es:bx+02eh], ax ; 26 89 47 2e ; 0xf8ce7 + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf8ceb ahci.c:741 + mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf8cee + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8cf2 ahci.c:744 + cmp AL, strict byte 001h ; 3c 01 ; 0xf8cf5 + jc short 08d05h ; 72 0c ; 0xf8cf7 + jbe short 08d0dh ; 76 12 ; 0xf8cf9 + cmp AL, strict byte 003h ; 3c 03 ; 0xf8cfb + je short 08d15h ; 74 16 ; 0xf8cfd + cmp AL, strict byte 002h ; 3c 02 ; 0xf8cff + je short 08d11h ; 74 0e ; 0xf8d01 + jmp short 08d4bh ; eb 46 ; 0xf8d03 + test al, al ; 84 c0 ; 0xf8d05 + jne short 08d4bh ; 75 42 ; 0xf8d07 + mov BL, strict byte 040h ; b3 40 ; 0xf8d09 ahci.c:747 + jmp short 08d17h ; eb 0a ; 0xf8d0b ahci.c:748 + mov BL, strict byte 048h ; b3 48 ; 0xf8d0d ahci.c:750 + jmp short 08d17h ; eb 06 ; 0xf8d0f ahci.c:751 + mov BL, strict byte 050h ; b3 50 ; 0xf8d11 ahci.c:753 + jmp short 08d17h ; eb 02 ; 0xf8d13 ahci.c:754 + mov BL, strict byte 058h ; b3 58 ; 0xf8d15 ahci.c:756 + mov dl, bl ; 88 da ; 0xf8d17 ahci.c:760 + add dl, 007h ; 80 c2 07 ; 0xf8d19 + xor dh, dh ; 30 f6 ; 0xf8d1c + mov ax, dx ; 89 d0 ; 0xf8d1e + call 01664h ; e8 41 89 ; 0xf8d20 + test al, al ; 84 c0 ; 0xf8d23 + je short 08d4bh ; 74 24 ; 0xf8d25 + mov al, bl ; 88 d8 ; 0xf8d27 ahci.c:763 + xor ah, ah ; 30 e4 ; 0xf8d29 + call 0169ch ; e8 6e 89 ; 0xf8d2b + mov word [bp-02ch], ax ; 89 46 d4 ; 0xf8d2e + mov al, bl ; 88 d8 ; 0xf8d31 ahci.c:764 + add AL, strict byte 002h ; 04 02 ; 0xf8d33 + xor ah, ah ; 30 e4 ; 0xf8d35 + call 01664h ; e8 2a 89 ; 0xf8d37 + xor ah, ah ; 30 e4 ; 0xf8d3a + mov word [bp-02eh], ax ; 89 46 d2 ; 0xf8d3c + mov ax, dx ; 89 d0 ; 0xf8d3f ahci.c:765 + call 01664h ; e8 20 89 ; 0xf8d41 + xor ah, ah ; 30 e4 ; 0xf8d44 + mov word [bp-02ah], ax ; 89 46 d6 ; 0xf8d46 + jmp short 08d5bh ; eb 10 ; 0xf8d49 ahci.c:767 + push word [bp-028h] ; ff 76 d8 ; 0xf8d4b ahci.c:768 + push word [bp-014h] ; ff 76 ec ; 0xf8d4e + push di ; 57 ; 0xf8d51 + push si ; 56 ; 0xf8d52 + mov dx, ss ; 8c d2 ; 0xf8d53 + lea ax, [bp-02eh] ; 8d 46 d2 ; 0xf8d55 + call 05746h ; e8 eb c9 ; 0xf8d58 + mov bx, 00dcch ; bb cc 0d ; 0xf8d5b ahci.c:772 + mov cx, ds ; 8c d9 ; 0xf8d5e + mov ax, strict word 00004h ; b8 04 00 ; 0xf8d60 + call 01910h ; e8 aa 8b ; 0xf8d63 + push word [bp-028h] ; ff 76 d8 ; 0xf8d66 + push word [bp-014h] ; ff 76 ec ; 0xf8d69 + push di ; 57 ; 0xf8d6c + push si ; 56 ; 0xf8d6d + mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf8d6e + push ax ; 50 ; 0xf8d71 + mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf8d72 + push ax ; 50 ; 0xf8d75 + mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf8d76 + push ax ; 50 ; 0xf8d79 + push word [bp-01eh] ; ff 76 e2 ; 0xf8d7a + push word [bp-01ch] ; ff 76 e4 ; 0xf8d7d + push word [bp-018h] ; ff 76 e8 ; 0xf8d80 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8d83 + xor ah, ah ; 30 e4 ; 0xf8d86 + push ax ; 50 ; 0xf8d88 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8d89 + push ax ; 50 ; 0xf8d8c + push 00d02h ; 68 02 0d ; 0xf8d8d + push strict byte 00004h ; 6a 04 ; 0xf8d90 + call 01953h ; e8 be 8b ; 0xf8d92 + add sp, strict byte 0001ch ; 83 c4 1c ; 0xf8d95 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8d98 ahci.c:774 + xor ah, ah ; 30 e4 ; 0xf8d9b + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf8d9d + mov di, word [bp-00eh] ; 8b 7e f2 ; 0xf8da0 + add di, ax ; 01 c7 ; 0xf8da3 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8da5 + lea di, [di+026h] ; 8d 7d 26 ; 0xf8da8 + push DS ; 1e ; 0xf8dab + push SS ; 16 ; 0xf8dac + pop DS ; 1f ; 0xf8dad + lea si, [bp-02eh] ; 8d 76 d2 ; 0xf8dae + movsw ; a5 ; 0xf8db1 + movsw ; a5 ; 0xf8db2 + movsw ; a5 ; 0xf8db3 + pop DS ; 1f ; 0xf8db4 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8db5 ahci.c:777 + mov bl, byte [es:bx+0024eh] ; 26 8a 9f 4e 02 ; 0xf8db8 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf8dbd ahci.c:778 + add dl, 00ch ; 80 c2 0c ; 0xf8dc0 + mov al, bl ; 88 d8 ; 0xf8dc3 + xor ah, ah ; 30 e4 ; 0xf8dc5 + mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf8dc7 + add si, ax ; 01 c6 ; 0xf8dca + mov byte [es:si+0024fh], dl ; 26 88 94 4f 02 ; 0xf8dcc + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf8dd1 ahci.c:779 + mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf8dd3 ahci.c:780 + mov byte [es:si+0024eh], bl ; 26 88 9c 4e 02 ; 0xf8dd6 + mov bx, strict word 00075h ; bb 75 00 ; 0xf8ddb ahci.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8dde + mov es, ax ; 8e c0 ; 0xf8de1 + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf8de3 + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf8de6 ahci.c:784 + mov si, strict word 00075h ; be 75 00 ; 0xf8de8 ahci.c:53 + mov byte [es:si], bl ; 26 88 1c ; 0xf8deb + jmp near 08ea8h ; e9 b7 00 ; 0xf8dee ahci.c:787 + cmp dx, 0eb14h ; 81 fa 14 eb ; 0xf8df1 + jne short 08e4bh ; 75 54 ; 0xf8df5 + cmp ax, 00101h ; 3d 01 01 ; 0xf8df7 + jne short 08e4bh ; 75 4f ; 0xf8dfa + mov es, [bp-016h] ; 8e 46 ea ; 0xf8dfc ahci.c:792 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8dff + mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf8e02 + mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf8e08 + mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf8e0e + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf8e14 + lea dx, [bp-0022eh] ; 8d 96 d2 fd ; 0xf8e19 ahci.c:793 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf8e1d + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf8e21 + mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf8e25 ahci.c:794 + mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf8e2b ahci.c:795 + mov bx, 000a1h ; bb a1 00 ; 0xf8e31 ahci.c:796 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8e34 + mov dx, es ; 8c c2 ; 0xf8e37 + call 08181h ; e8 45 f3 ; 0xf8e39 + mov byte [bp-00ah], cl ; 88 4e f6 ; 0xf8e3c ahci.c:799 + test byte [bp-0022eh], 080h ; f6 86 d2 fd 80 ; 0xf8e3f ahci.c:801 + je short 08e4dh ; 74 07 ; 0xf8e44 + mov dx, strict word 00001h ; ba 01 00 ; 0xf8e46 + jmp short 08e4fh ; eb 04 ; 0xf8e49 + jmp short 08ea8h ; eb 5b ; 0xf8e4b + xor dx, dx ; 31 d2 ; 0xf8e4d + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf8e4f ahci.c:803 + xor bh, bh ; 30 ff ; 0xf8e52 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8e54 + add bx, word [bp-00eh] ; 03 5e f2 ; 0xf8e57 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8e5a + mov byte [es:bx+002a1h], al ; 26 88 87 a1 02 ; 0xf8e5d + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8e62 ahci.c:804 + xor ah, ah ; 30 e4 ; 0xf8e65 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf8e67 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8e6a + add bx, ax ; 01 c3 ; 0xf8e6d + mov word [es:bx+01eh], 00505h ; 26 c7 47 1e 05 05 ; 0xf8e6f + mov byte [es:bx+020h], dl ; 26 88 57 20 ; 0xf8e75 ahci.c:806 + mov word [es:bx+024h], 00800h ; 26 c7 47 24 00 08 ; 0xf8e79 ahci.c:807 + mov byte [es:bx+023h], 000h ; 26 c6 47 23 00 ; 0xf8e7f ahci.c:808 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8e84 ahci.c:811 + mov al, byte [es:bx+00263h] ; 26 8a 87 63 02 ; 0xf8e87 + mov ah, byte [bp-008h] ; 8a 66 f8 ; 0xf8e8c ahci.c:812 + add ah, 00ch ; 80 c4 0c ; 0xf8e8f + mov bl, al ; 88 c3 ; 0xf8e92 + xor bh, bh ; 30 ff ; 0xf8e94 + add bx, word [bp-00eh] ; 03 5e f2 ; 0xf8e96 + mov byte [es:bx+00264h], ah ; 26 88 a7 64 02 ; 0xf8e99 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf8e9e ahci.c:813 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8ea0 ahci.c:814 + mov byte [es:bx+00263h], al ; 26 88 87 63 02 ; 0xf8ea3 + inc byte [bp-008h] ; fe 46 f8 ; 0xf8ea8 ahci.c:819 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8eab ahci.c:820 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8eae + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8eb1 + mov byte [es:bx+002a5h], al ; 26 88 87 a5 02 ; 0xf8eb4 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf8eb9 ahci.c:825 + pop di ; 5f ; 0xf8ebc + pop si ; 5e ; 0xf8ebd + pop cx ; 59 ; 0xf8ebe + pop bp ; 5d ; 0xf8ebf + retn ; c3 ; 0xf8ec0 + ; disGetNextSymbol 0xf8ec1 LB 0x1e97 -> off=0x0 cb=000000000000003a uValue=00000000000f78c1 'ahci_mem_alloc' +ahci_mem_alloc: ; 0xf8ec1 LB 0x3a + push bx ; 53 ; 0xf8ec1 ahci.c:830 + push cx ; 51 ; 0xf8ec2 + push dx ; 52 ; 0xf8ec3 + push di ; 57 ; 0xf8ec4 + push bp ; 55 ; 0xf8ec5 + mov bp, sp ; 89 e5 ; 0xf8ec6 + mov di, 00413h ; bf 13 04 ; 0xf8ec8 ahci.c:58 + xor ax, ax ; 31 c0 ; 0xf8ecb + mov es, ax ; 8e c0 ; 0xf8ecd + mov ax, word [es:di] ; 26 8b 05 ; 0xf8ecf + test ax, ax ; 85 c0 ; 0xf8ed2 ahci.c:839 + je short 08ef5h ; 74 1f ; 0xf8ed4 + dec ax ; 48 ; 0xf8ed6 ahci.c:840 + mov bx, ax ; 89 c3 ; 0xf8ed7 + xor dx, dx ; 31 d2 ; 0xf8ed9 ahci.c:843 + mov cx, strict word 0000ah ; b9 0a 00 ; 0xf8edb + sal ax, 1 ; d1 e0 ; 0xf8ede + rcl dx, 1 ; d1 d2 ; 0xf8ee0 + loop 08edeh ; e2 fa ; 0xf8ee2 + mov di, dx ; 89 d7 ; 0xf8ee4 + mov cx, strict word 00004h ; b9 04 00 ; 0xf8ee6 + shr di, 1 ; d1 ef ; 0xf8ee9 + rcr ax, 1 ; d1 d8 ; 0xf8eeb + loop 08ee9h ; e2 fa ; 0xf8eed + mov di, 00413h ; bf 13 04 ; 0xf8eef ahci.c:63 + mov word [es:di], bx ; 26 89 1d ; 0xf8ef2 + pop bp ; 5d ; 0xf8ef5 ahci.c:848 + pop di ; 5f ; 0xf8ef6 + pop dx ; 5a ; 0xf8ef7 + pop cx ; 59 ; 0xf8ef8 + pop bx ; 5b ; 0xf8ef9 + retn ; c3 ; 0xf8efa + ; disGetNextSymbol 0xf8efb LB 0x1e5d -> off=0x0 cb=0000000000000148 uValue=00000000000f78fb 'ahci_hba_init' +ahci_hba_init: ; 0xf8efb LB 0x148 + push bp ; 55 ; 0xf8efb ahci.c:853 + mov bp, sp ; 89 e5 ; 0xf8efc + push bx ; 53 ; 0xf8efe + push cx ; 51 ; 0xf8eff + push dx ; 52 ; 0xf8f00 + push si ; 56 ; 0xf8f01 + push di ; 57 ; 0xf8f02 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8f03 + mov si, ax ; 89 c6 ; 0xf8f06 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8f08 ahci.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8f0b + mov es, ax ; 8e c0 ; 0xf8f0e + mov di, word [es:bx] ; 26 8b 3f ; 0xf8f10 + mov bx, strict word 0005eh ; bb 5e 00 ; 0xf8f13 ahci.c:864 + mov ax, strict word 00010h ; b8 10 00 ; 0xf8f16 ahci.c:866 + xor cx, cx ; 31 c9 ; 0xf8f19 + mov dx, si ; 89 f2 ; 0xf8f1b + xchg cx, ax ; 91 ; 0xf8f1d + sal eax, 010h ; 66 c1 e0 10 ; 0xf8f1e + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8f22 + out DX, eax ; 66 ef ; 0xf8f24 + lea dx, [si+004h] ; 8d 54 04 ; 0xf8f26 + in eax, DX ; 66 ed ; 0xf8f29 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8f2b + shr eax, 010h ; 66 c1 e8 10 ; 0xf8f2d + xchg dx, ax ; 92 ; 0xf8f31 + call 08ec1h ; e8 8c ff ; 0xf8f32 ahci.c:872 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf8f35 + test ax, ax ; 85 c0 ; 0xf8f38 ahci.c:873 + jne short 08f3fh ; 75 03 ; 0xf8f3a + jmp near 09039h ; e9 fa 00 ; 0xf8f3c + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8f3f ahci.c:876 + mov es, di ; 8e c7 ; 0xf8f42 + mov word [es:bx+002a6h], ax ; 26 89 87 a6 02 ; 0xf8f44 + mov byte [es:bx+002a5h], 000h ; 26 c6 87 a5 02 00 ; 0xf8f49 ahci.c:882 + xor bx, bx ; 31 db ; 0xf8f4f ahci.c:884 + mov es, ax ; 8e c0 ; 0xf8f51 + mov byte [es:bx+00262h], 0ffh ; 26 c6 87 62 02 ff ; 0xf8f53 ahci.c:885 + mov word [es:bx+00260h], si ; 26 89 b7 60 02 ; 0xf8f59 ahci.c:886 + mov ax, strict word 00004h ; b8 04 00 ; 0xf8f5e ahci.c:260 + xor cx, cx ; 31 c9 ; 0xf8f61 + mov dx, si ; 89 f2 ; 0xf8f63 + xchg cx, ax ; 91 ; 0xf8f65 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8f66 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8f6a + out DX, eax ; 66 ef ; 0xf8f6c + lea bx, [si+004h] ; 8d 5c 04 ; 0xf8f6e ahci.c:261 + mov dx, bx ; 89 da ; 0xf8f71 + in eax, DX ; 66 ed ; 0xf8f73 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8f75 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8f77 + xchg dx, ax ; 92 ; 0xf8f7b + mov cx, dx ; 89 d1 ; 0xf8f7c + or AL, strict byte 001h ; 0c 01 ; 0xf8f7e + mov dx, bx ; 89 da ; 0xf8f80 + xchg cx, ax ; 91 ; 0xf8f82 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8f83 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8f87 + out DX, eax ; 66 ef ; 0xf8f89 + mov ax, strict word 00004h ; b8 04 00 ; 0xf8f8b ahci.c:892 + xor cx, cx ; 31 c9 ; 0xf8f8e + mov dx, si ; 89 f2 ; 0xf8f90 + xchg cx, ax ; 91 ; 0xf8f92 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8f93 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8f97 + out DX, eax ; 66 ef ; 0xf8f99 + lea bx, [si+004h] ; 8d 5c 04 ; 0xf8f9b + mov dx, bx ; 89 da ; 0xf8f9e + in eax, DX ; 66 ed ; 0xf8fa0 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8fa2 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8fa4 + xchg dx, ax ; 92 ; 0xf8fa8 + test AL, strict byte 001h ; a8 01 ; 0xf8fa9 ahci.c:893 + jne short 08f8bh ; 75 de ; 0xf8fab + xor ax, ax ; 31 c0 ; 0xf8fad ahci.c:895 + xor cx, cx ; 31 c9 ; 0xf8faf + mov dx, si ; 89 f2 ; 0xf8fb1 + xchg cx, ax ; 91 ; 0xf8fb3 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8fb4 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8fb8 + out DX, eax ; 66 ef ; 0xf8fba + mov dx, bx ; 89 da ; 0xf8fbc + in eax, DX ; 66 ed ; 0xf8fbe + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8fc0 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8fc2 + xchg dx, ax ; 92 ; 0xf8fc6 + push strict byte 00000h ; 6a 00 ; 0xf8fc7 ahci.c:896 + mov bx, strict word 0001fh ; bb 1f 00 ; 0xf8fc9 + xor cx, cx ; 31 c9 ; 0xf8fcc + call 07ff1h ; e8 20 f0 ; 0xf8fce + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf8fd1 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf8fd3 + mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf8fd6 ahci.c:901 + jmp short 08ffdh ; eb 21 ; 0xf8fda ahci.c:902 + xor al, al ; 30 c0 ; 0xf8fdc ahci.c:280 + test al, al ; 84 c0 ; 0xf8fde ahci.c:281 + je short 08ff4h ; 74 12 ; 0xf8fe0 + mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf8fe2 ahci.c:907 + xor bh, bh ; 30 ff ; 0xf8fe5 + xor ax, ax ; 31 c0 ; 0xf8fe7 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf8fe9 + call 089efh ; e8 00 fa ; 0xf8fec + dec byte [bp-00ch] ; fe 4e f4 ; 0xf8fef ahci.c:908 + je short 09037h ; 74 43 ; 0xf8ff2 ahci.c:909 + inc byte [bp-00eh] ; fe 46 f2 ; 0xf8ff4 ahci.c:912 + cmp byte [bp-00eh], 020h ; 80 7e f2 20 ; 0xf8ff7 ahci.c:913 + jnc short 09037h ; 73 3a ; 0xf8ffb + mov cl, byte [bp-00eh] ; 8a 4e f2 ; 0xf8ffd + xor ch, ch ; 30 ed ; 0xf9000 + mov bx, strict word 00001h ; bb 01 00 ; 0xf9002 + xor di, di ; 31 ff ; 0xf9005 + jcxz 0900fh ; e3 06 ; 0xf9007 + sal bx, 1 ; d1 e3 ; 0xf9009 + rcl di, 1 ; d1 d7 ; 0xf900b + loop 09009h ; e2 fa ; 0xf900d + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf900f + xor cx, cx ; 31 c9 ; 0xf9012 + mov dx, si ; 89 f2 ; 0xf9014 + xchg cx, ax ; 91 ; 0xf9016 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9017 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf901b + out DX, eax ; 66 ef ; 0xf901d + lea dx, [si+004h] ; 8d 54 04 ; 0xf901f + in eax, DX ; 66 ed ; 0xf9022 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9024 + shr eax, 010h ; 66 c1 e8 10 ; 0xf9026 + xchg dx, ax ; 92 ; 0xf902a + test dx, di ; 85 fa ; 0xf902b + jne short 09033h ; 75 04 ; 0xf902d + test ax, bx ; 85 d8 ; 0xf902f + je short 08fdch ; 74 a9 ; 0xf9031 + mov AL, strict byte 001h ; b0 01 ; 0xf9033 + jmp short 08fdeh ; eb a7 ; 0xf9035 + xor ax, ax ; 31 c0 ; 0xf9037 ahci.c:915 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf9039 ahci.c:916 + pop di ; 5f ; 0xf903c + pop si ; 5e ; 0xf903d + pop dx ; 5a ; 0xf903e + pop cx ; 59 ; 0xf903f + pop bx ; 5b ; 0xf9040 + pop bp ; 5d ; 0xf9041 + retn ; c3 ; 0xf9042 + ; disGetNextSymbol 0xf9043 LB 0x1d15 -> off=0x17 cb=000000000000013a uValue=00000000000f7a5a 'ahci_init' + db 00bh, 005h, 004h, 003h, 002h, 001h, 000h, 043h, 091h, 021h, 091h, 027h, 091h, 02dh, 091h, 033h + db 091h, 039h, 091h, 03fh, 091h, 043h, 091h +ahci_init: ; 0xf905a LB 0x13a + push bp ; 55 ; 0xf905a ahci.c:921 + mov bp, sp ; 89 e5 ; 0xf905b + push si ; 56 ; 0xf905d + push di ; 57 ; 0xf905e + sub sp, strict byte 00012h ; 83 ec 12 ; 0xf905f + mov ax, 00601h ; b8 01 06 ; 0xf9062 ahci.c:925 + mov dx, strict word 00001h ; ba 01 00 ; 0xf9065 + call 0a76ch ; e8 01 17 ; 0xf9068 + mov dx, ax ; 89 c2 ; 0xf906b + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf906d ahci.c:926 + je short 090beh ; 74 4c ; 0xf9070 + xor al, al ; 30 c0 ; 0xf9072 ahci.c:931 + shr ax, 008h ; c1 e8 08 ; 0xf9074 + mov byte [bp-006h], al ; 88 46 fa ; 0xf9077 + mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf907a ahci.c:932 + xor dh, dh ; 30 f6 ; 0xf907d ahci.c:937 + xor ah, ah ; 30 e4 ; 0xf907f + mov bx, strict word 00034h ; bb 34 00 ; 0xf9081 + call 0a79fh ; e8 18 17 ; 0xf9084 + mov cl, al ; 88 c1 ; 0xf9087 + test cl, cl ; 84 c9 ; 0xf9089 ahci.c:939 + je short 090c1h ; 74 34 ; 0xf908b + mov bl, cl ; 88 cb ; 0xf908d ahci.c:941 + xor bh, bh ; 30 ff ; 0xf908f + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9091 + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf9094 + mov byte [bp-00dh], bh ; 88 7e f3 ; 0xf9097 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf909a + mov byte [bp-014h], al ; 88 46 ec ; 0xf909d + mov byte [bp-013h], bh ; 88 7e ed ; 0xf90a0 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf90a3 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf90a6 + call 0a79fh ; e8 f3 16 ; 0xf90a9 + cmp AL, strict byte 012h ; 3c 12 ; 0xf90ac ahci.c:945 + je short 090c1h ; 74 11 ; 0xf90ae + mov bl, cl ; 88 cb ; 0xf90b0 ahci.c:949 + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf90b2 + xor bh, bh ; 30 ff ; 0xf90b4 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf90b6 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf90b9 + jmp short 09084h ; eb c6 ; 0xf90bc ahci.c:950 + jmp near 0918dh ; e9 cc 00 ; 0xf90be + test cl, cl ; 84 c9 ; 0xf90c1 ahci.c:952 + je short 090beh ; 74 f9 ; 0xf90c3 + add cl, 002h ; 80 c1 02 ; 0xf90c5 ahci.c:959 + mov bl, cl ; 88 cb ; 0xf90c8 ahci.c:961 + xor bh, bh ; 30 ff ; 0xf90ca + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf90cc + mov byte [bp-012h], al ; 88 46 ee ; 0xf90cf + mov byte [bp-011h], bh ; 88 7e ef ; 0xf90d2 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf90d5 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf90d8 + mov byte [bp-00bh], bh ; 88 7e f5 ; 0xf90db + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf90de + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf90e1 + call 0a79fh ; e8 b8 16 ; 0xf90e4 + cmp AL, strict byte 010h ; 3c 10 ; 0xf90e7 ahci.c:962 + jne short 090beh ; 75 d3 ; 0xf90e9 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf90eb ahci.c:965 + mov bl, cl ; 88 cb ; 0xf90ef ahci.c:967 + add bl, 002h ; 80 c3 02 ; 0xf90f1 + xor bh, bh ; 30 ff ; 0xf90f4 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf90f6 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf90f9 + call 0a7cdh ; e8 ce 16 ; 0xf90fc + mov dx, ax ; 89 c2 ; 0xf90ff + and ax, strict word 0000fh ; 25 0f 00 ; 0xf9101 ahci.c:971 + sub ax, strict word 00004h ; 2d 04 00 ; 0xf9104 + cmp ax, strict word 0000bh ; 3d 0b 00 ; 0xf9107 + jnbe short 09143h ; 77 37 ; 0xf910a + push CS ; 0e ; 0xf910c + pop ES ; 07 ; 0xf910d + mov cx, strict word 00008h ; b9 08 00 ; 0xf910e + mov di, 09043h ; bf 43 90 ; 0xf9111 + repne scasb ; f2 ae ; 0xf9114 + sal cx, 1 ; d1 e1 ; 0xf9116 + mov di, cx ; 89 cf ; 0xf9118 + mov ax, word [cs:di-06fb6h] ; 2e 8b 85 4a 90 ; 0xf911a + jmp ax ; ff e0 ; 0xf911f + mov byte [bp-008h], 010h ; c6 46 f8 10 ; 0xf9121 ahci.c:974 + jmp short 09143h ; eb 1c ; 0xf9125 ahci.c:975 + mov byte [bp-008h], 014h ; c6 46 f8 14 ; 0xf9127 ahci.c:977 + jmp short 09143h ; eb 16 ; 0xf912b ahci.c:978 + mov byte [bp-008h], 018h ; c6 46 f8 18 ; 0xf912d ahci.c:980 + jmp short 09143h ; eb 10 ; 0xf9131 ahci.c:981 + mov byte [bp-008h], 01ch ; c6 46 f8 1c ; 0xf9133 ahci.c:983 + jmp short 09143h ; eb 0a ; 0xf9137 ahci.c:984 + mov byte [bp-008h], 020h ; c6 46 f8 20 ; 0xf9139 ahci.c:986 + jmp short 09143h ; eb 04 ; 0xf913d ahci.c:987 + mov byte [bp-008h], 024h ; c6 46 f8 24 ; 0xf913f ahci.c:989 + mov si, dx ; 89 d6 ; 0xf9143 ahci.c:998 + shr si, 004h ; c1 ee 04 ; 0xf9145 + sal si, 002h ; c1 e6 02 ; 0xf9148 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf914b ahci.c:1000 + test al, al ; 84 c0 ; 0xf914e + je short 0918dh ; 74 3b ; 0xf9150 + mov bl, al ; 88 c3 ; 0xf9152 ahci.c:1002 + xor bh, bh ; 30 ff ; 0xf9154 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9156 + mov byte [bp-010h], al ; 88 46 f0 ; 0xf9159 + mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf915c + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf915f + mov byte [bp-016h], al ; 88 46 ea ; 0xf9162 + mov byte [bp-015h], bh ; 88 7e eb ; 0xf9165 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf9168 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf916b + call 0a7f7h ; e8 86 16 ; 0xf916e + test AL, strict byte 001h ; a8 01 ; 0xf9171 ahci.c:1006 + je short 0918dh ; 74 18 ; 0xf9173 + and AL, strict byte 0f0h ; 24 f0 ; 0xf9175 ahci.c:1009 + add si, ax ; 01 c6 ; 0xf9177 + mov cx, strict word 00007h ; b9 07 00 ; 0xf9179 ahci.c:1012 + mov bx, strict word 00004h ; bb 04 00 ; 0xf917c + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf917f + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9182 + call 0a845h ; e8 bd 16 ; 0xf9185 + mov ax, si ; 89 f0 ; 0xf9188 ahci.c:1015 + call 08efbh ; e8 6e fd ; 0xf918a + lea sp, [bp-004h] ; 8d 66 fc ; 0xf918d ahci.c:1029 + pop di ; 5f ; 0xf9190 + pop si ; 5e ; 0xf9191 + pop bp ; 5d ; 0xf9192 + retn ; c3 ; 0xf9193 + ; disGetNextSymbol 0xf9194 LB 0x1bc4 -> off=0x0 cb=000000000000007b uValue=00000000000f7b94 'virtio_reg_set_bar_offset_length' +virtio_reg_set_bar_offset_length: ; 0xf9194 LB 0x7b + push bp ; 55 ; 0xf9194 virtio.c:287 + mov bp, sp ; 89 e5 ; 0xf9195 + push cx ; 51 ; 0xf9197 + push si ; 56 ; 0xf9198 + push di ; 57 ; 0xf9199 + mov si, ax ; 89 c6 ; 0xf919a + mov di, dx ; 89 d7 ; 0xf919c + mov cl, bl ; 88 d9 ; 0xf919e virtio.c:289 + xor ch, ch ; 30 ed ; 0xf91a0 + mov es, dx ; 8e c2 ; 0xf91a2 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf91a4 + add bl, 004h ; 80 c3 04 ; 0xf91a9 + xor bh, bh ; 30 ff ; 0xf91ac + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf91ae + xor dh, dh ; 30 f6 ; 0xf91b3 + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf91b5 + xor ah, ah ; 30 e4 ; 0xf91ba + call 0a86ah ; e8 ab 16 ; 0xf91bc + push word [bp+006h] ; ff 76 06 ; 0xf91bf virtio.c:290 + push word [bp+004h] ; ff 76 04 ; 0xf91c2 + mov es, di ; 8e c7 ; 0xf91c5 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf91c7 + add bl, 008h ; 80 c3 08 ; 0xf91cc + xor bh, bh ; 30 ff ; 0xf91cf + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf91d1 + xor dh, dh ; 30 f6 ; 0xf91d6 + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf91d8 + xor ah, ah ; 30 e4 ; 0xf91dd + call 0a88fh ; e8 ad 16 ; 0xf91df + push word [bp+00ah] ; ff 76 0a ; 0xf91e2 virtio.c:291 + push word [bp+008h] ; ff 76 08 ; 0xf91e5 + mov es, di ; 8e c7 ; 0xf91e8 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf91ea + add bl, 00ch ; 80 c3 0c ; 0xf91ef + xor bh, bh ; 30 ff ; 0xf91f2 + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf91f4 + xor dh, dh ; 30 f6 ; 0xf91f9 + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf91fb + xor ah, ah ; 30 e4 ; 0xf9200 + call 0a88fh ; e8 8a 16 ; 0xf9202 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9205 virtio.c:292 + pop di ; 5f ; 0xf9208 + pop si ; 5e ; 0xf9209 + pop cx ; 59 ; 0xf920a + pop bp ; 5d ; 0xf920b + retn 00008h ; c2 08 00 ; 0xf920c + ; disGetNextSymbol 0xf920f LB 0x1b49 -> off=0x0 cb=0000000000000033 uValue=00000000000f7c0f 'virtio_reg_common_access_prepare' +virtio_reg_common_access_prepare: ; 0xf920f LB 0x33 + push bp ; 55 ; 0xf920f virtio.c:294 + mov bp, sp ; 89 e5 ; 0xf9210 + push si ; 56 ; 0xf9212 + mov si, ax ; 89 c6 ; 0xf9213 + mov es, dx ; 8e c2 ; 0xf9215 + push word [bp+006h] ; ff 76 06 ; 0xf9217 virtio.c:296 + push word [bp+004h] ; ff 76 04 ; 0xf921a + xor dx, dx ; 31 d2 ; 0xf921d + mov ax, word [es:si+060h] ; 26 8b 44 60 ; 0xf921f + add ax, bx ; 01 d8 ; 0xf9223 + mov bx, word [es:si+062h] ; 26 8b 5c 62 ; 0xf9225 + adc bx, dx ; 11 d3 ; 0xf9229 + push bx ; 53 ; 0xf922b + push ax ; 50 ; 0xf922c + mov bl, byte [es:si+05ch] ; 26 8a 5c 5c ; 0xf922d + xor bh, bh ; 30 ff ; 0xf9231 + mov ax, si ; 89 f0 ; 0xf9233 + mov dx, es ; 8c c2 ; 0xf9235 + call 09194h ; e8 5a ff ; 0xf9237 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf923a virtio.c:300 + pop si ; 5e ; 0xf923d + pop bp ; 5d ; 0xf923e + retn 00004h ; c2 04 00 ; 0xf923f + ; disGetNextSymbol 0xf9242 LB 0x1b16 -> off=0x0 cb=0000000000000036 uValue=00000000000f7c42 'virtio_reg_dev_access_prepare' +virtio_reg_dev_access_prepare: ; 0xf9242 LB 0x36 + push bp ; 55 ; 0xf9242 virtio.c:302 + mov bp, sp ; 89 e5 ; 0xf9243 + push si ; 56 ; 0xf9245 + mov si, ax ; 89 c6 ; 0xf9246 + mov es, dx ; 8e c2 ; 0xf9248 + push word [bp+006h] ; ff 76 06 ; 0xf924a virtio.c:304 + push word [bp+004h] ; ff 76 04 ; 0xf924d + xor dx, dx ; 31 d2 ; 0xf9250 + mov ax, word [es:si+00084h] ; 26 8b 84 84 00 ; 0xf9252 + add ax, bx ; 01 d8 ; 0xf9257 + mov bx, word [es:si+00086h] ; 26 8b 9c 86 00 ; 0xf9259 + adc bx, dx ; 11 d3 ; 0xf925e + push bx ; 53 ; 0xf9260 + push ax ; 50 ; 0xf9261 + mov bl, byte [es:si+00080h] ; 26 8a 9c 80 00 ; 0xf9262 + xor bh, bh ; 30 ff ; 0xf9267 + mov ax, si ; 89 f0 ; 0xf9269 + mov dx, es ; 8c c2 ; 0xf926b + call 09194h ; e8 24 ff ; 0xf926d + lea sp, [bp-002h] ; 8d 66 fe ; 0xf9270 virtio.c:308 + pop si ; 5e ; 0xf9273 + pop bp ; 5d ; 0xf9274 + retn 00004h ; c2 04 00 ; 0xf9275 + ; disGetNextSymbol 0xf9278 LB 0x1ae0 -> off=0x0 cb=0000000000000033 uValue=00000000000f7c78 'virtio_reg_notify_access_prepare' +virtio_reg_notify_access_prepare: ; 0xf9278 LB 0x33 + push bp ; 55 ; 0xf9278 virtio.c:310 + mov bp, sp ; 89 e5 ; 0xf9279 + push si ; 56 ; 0xf927b + mov si, ax ; 89 c6 ; 0xf927c + mov es, dx ; 8e c2 ; 0xf927e + push word [bp+006h] ; ff 76 06 ; 0xf9280 virtio.c:312 + push word [bp+004h] ; ff 76 04 ; 0xf9283 + xor dx, dx ; 31 d2 ; 0xf9286 + mov ax, word [es:si+06ch] ; 26 8b 44 6c ; 0xf9288 + add ax, bx ; 01 d8 ; 0xf928c + mov bx, word [es:si+06eh] ; 26 8b 5c 6e ; 0xf928e + adc bx, dx ; 11 d3 ; 0xf9292 + push bx ; 53 ; 0xf9294 + push ax ; 50 ; 0xf9295 + mov bl, byte [es:si+068h] ; 26 8a 5c 68 ; 0xf9296 + xor bh, bh ; 30 ff ; 0xf929a + mov ax, si ; 89 f0 ; 0xf929c + mov dx, es ; 8c c2 ; 0xf929e + call 09194h ; e8 f1 fe ; 0xf92a0 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf92a3 virtio.c:316 + pop si ; 5e ; 0xf92a6 + pop bp ; 5d ; 0xf92a7 + retn 00004h ; c2 04 00 ; 0xf92a8 + ; disGetNextSymbol 0xf92ab LB 0x1aad -> off=0x0 cb=0000000000000021 uValue=00000000000f7cab 'virtio_reg_isr_prepare' +virtio_reg_isr_prepare: ; 0xf92ab LB 0x21 + push bp ; 55 ; 0xf92ab virtio.c:318 + mov bp, sp ; 89 e5 ; 0xf92ac + push si ; 56 ; 0xf92ae + mov si, ax ; 89 c6 ; 0xf92af + mov es, dx ; 8e c2 ; 0xf92b1 + push cx ; 51 ; 0xf92b3 virtio.c:320 + push bx ; 53 ; 0xf92b4 + push word [es:si+07ah] ; 26 ff 74 7a ; 0xf92b5 + push word [es:si+078h] ; 26 ff 74 78 ; 0xf92b9 + mov bl, byte [es:si+074h] ; 26 8a 5c 74 ; 0xf92bd + xor bh, bh ; 30 ff ; 0xf92c1 + call 09194h ; e8 ce fe ; 0xf92c3 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf92c6 virtio.c:324 + pop si ; 5e ; 0xf92c9 + pop bp ; 5d ; 0xf92ca + retn ; c3 ; 0xf92cb + ; disGetNextSymbol 0xf92cc LB 0x1a8c -> off=0x0 cb=0000000000000034 uValue=00000000000f7ccc 'virtio_reg_common_read_u8' +virtio_reg_common_read_u8: ; 0xf92cc LB 0x34 + push bp ; 55 ; 0xf92cc virtio.c:326 + mov bp, sp ; 89 e5 ; 0xf92cd + push cx ; 51 ; 0xf92cf + push si ; 56 ; 0xf92d0 + mov si, ax ; 89 c6 ; 0xf92d1 + mov cx, dx ; 89 d1 ; 0xf92d3 + push strict byte 00000h ; 6a 00 ; 0xf92d5 virtio.c:328 + push strict byte 00001h ; 6a 01 ; 0xf92d7 + call 0920fh ; e8 33 ff ; 0xf92d9 + mov es, cx ; 8e c1 ; 0xf92dc virtio.c:329 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf92de + add bl, 010h ; 80 c3 10 ; 0xf92e3 + xor bh, bh ; 30 ff ; 0xf92e6 + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf92e8 + xor dh, dh ; 30 f6 ; 0xf92ed + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf92ef + xor ah, ah ; 30 e4 ; 0xf92f4 + call 0a79fh ; e8 a6 14 ; 0xf92f6 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf92f9 virtio.c:330 + pop si ; 5e ; 0xf92fc + pop cx ; 59 ; 0xf92fd + pop bp ; 5d ; 0xf92fe + retn ; c3 ; 0xf92ff + ; disGetNextSymbol 0xf9300 LB 0x1a58 -> off=0x0 cb=0000000000000036 uValue=00000000000f7d00 'virtio_reg_common_write_u8' +virtio_reg_common_write_u8: ; 0xf9300 LB 0x36 + push bp ; 55 ; 0xf9300 virtio.c:332 + mov bp, sp ; 89 e5 ; 0xf9301 + push si ; 56 ; 0xf9303 + push di ; 57 ; 0xf9304 + mov si, ax ; 89 c6 ; 0xf9305 + mov di, dx ; 89 d7 ; 0xf9307 + push strict byte 00000h ; 6a 00 ; 0xf9309 virtio.c:334 + push strict byte 00001h ; 6a 01 ; 0xf930b + call 0920fh ; e8 ff fe ; 0xf930d + xor ch, ch ; 30 ed ; 0xf9310 virtio.c:335 + mov es, di ; 8e c7 ; 0xf9312 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf9314 + add bl, 010h ; 80 c3 10 ; 0xf9319 + xor bh, bh ; 30 ff ; 0xf931c + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf931e + xor dh, dh ; 30 f6 ; 0xf9323 + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf9325 + xor ah, ah ; 30 e4 ; 0xf932a + call 0a86ah ; e8 3b 15 ; 0xf932c + lea sp, [bp-004h] ; 8d 66 fc ; 0xf932f virtio.c:336 + pop di ; 5f ; 0xf9332 + pop si ; 5e ; 0xf9333 + pop bp ; 5d ; 0xf9334 + retn ; c3 ; 0xf9335 + ; disGetNextSymbol 0xf9336 LB 0x1a22 -> off=0x0 cb=0000000000000034 uValue=00000000000f7d36 'virtio_reg_common_read_u16' +virtio_reg_common_read_u16: ; 0xf9336 LB 0x34 + push bp ; 55 ; 0xf9336 virtio.c:338 + mov bp, sp ; 89 e5 ; 0xf9337 + push cx ; 51 ; 0xf9339 + push si ; 56 ; 0xf933a + mov si, ax ; 89 c6 ; 0xf933b + mov cx, dx ; 89 d1 ; 0xf933d + push strict byte 00000h ; 6a 00 ; 0xf933f virtio.c:340 + push strict byte 00002h ; 6a 02 ; 0xf9341 + call 0920fh ; e8 c9 fe ; 0xf9343 + mov es, cx ; 8e c1 ; 0xf9346 virtio.c:341 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf9348 + add bl, 010h ; 80 c3 10 ; 0xf934d + xor bh, bh ; 30 ff ; 0xf9350 + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf9352 + xor dh, dh ; 30 f6 ; 0xf9357 + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf9359 + xor ah, ah ; 30 e4 ; 0xf935e + call 0a7cdh ; e8 6a 14 ; 0xf9360 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9363 virtio.c:342 + pop si ; 5e ; 0xf9366 + pop cx ; 59 ; 0xf9367 + pop bp ; 5d ; 0xf9368 + retn ; c3 ; 0xf9369 + ; disGetNextSymbol 0xf936a LB 0x19ee -> off=0x0 cb=0000000000000034 uValue=00000000000f7d6a 'virtio_reg_common_write_u16' +virtio_reg_common_write_u16: ; 0xf936a LB 0x34 + push bp ; 55 ; 0xf936a virtio.c:344 + mov bp, sp ; 89 e5 ; 0xf936b + push si ; 56 ; 0xf936d + push di ; 57 ; 0xf936e + mov si, ax ; 89 c6 ; 0xf936f + mov di, dx ; 89 d7 ; 0xf9371 + push strict byte 00000h ; 6a 00 ; 0xf9373 virtio.c:346 + push strict byte 00002h ; 6a 02 ; 0xf9375 + call 0920fh ; e8 95 fe ; 0xf9377 + mov es, di ; 8e c7 ; 0xf937a virtio.c:347 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf937c + add bl, 010h ; 80 c3 10 ; 0xf9381 + xor bh, bh ; 30 ff ; 0xf9384 + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf9386 + xor dh, dh ; 30 f6 ; 0xf938b + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf938d + xor ah, ah ; 30 e4 ; 0xf9392 + call 0a845h ; e8 ae 14 ; 0xf9394 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9397 virtio.c:348 + pop di ; 5f ; 0xf939a + pop si ; 5e ; 0xf939b + pop bp ; 5d ; 0xf939c + retn ; c3 ; 0xf939d + ; disGetNextSymbol 0xf939e LB 0x19ba -> off=0x0 cb=000000000000003c uValue=00000000000f7d9e 'virtio_reg_common_write_u32' +virtio_reg_common_write_u32: ; 0xf939e LB 0x3c + push bp ; 55 ; 0xf939e virtio.c:350 + mov bp, sp ; 89 e5 ; 0xf939f + push cx ; 51 ; 0xf93a1 + push si ; 56 ; 0xf93a2 + mov si, ax ; 89 c6 ; 0xf93a3 + mov cx, dx ; 89 d1 ; 0xf93a5 + push strict byte 00000h ; 6a 00 ; 0xf93a7 virtio.c:352 + push strict byte 00004h ; 6a 04 ; 0xf93a9 + call 0920fh ; e8 61 fe ; 0xf93ab + push word [bp+006h] ; ff 76 06 ; 0xf93ae virtio.c:353 + push word [bp+004h] ; ff 76 04 ; 0xf93b1 + mov es, cx ; 8e c1 ; 0xf93b4 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf93b6 + add bl, 010h ; 80 c3 10 ; 0xf93bb + xor bh, bh ; 30 ff ; 0xf93be + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf93c0 + xor dh, dh ; 30 f6 ; 0xf93c5 + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf93c7 + xor ah, ah ; 30 e4 ; 0xf93cc + call 0a88fh ; e8 be 14 ; 0xf93ce + lea sp, [bp-004h] ; 8d 66 fc ; 0xf93d1 virtio.c:354 + pop si ; 5e ; 0xf93d4 + pop cx ; 59 ; 0xf93d5 + pop bp ; 5d ; 0xf93d6 + retn 00004h ; c2 04 00 ; 0xf93d7 + ; disGetNextSymbol 0xf93da LB 0x197e -> off=0x0 cb=0000000000000034 uValue=00000000000f7dda 'virtio_reg_dev_cfg_read_u32' +virtio_reg_dev_cfg_read_u32: ; 0xf93da LB 0x34 + push bp ; 55 ; 0xf93da virtio.c:356 + mov bp, sp ; 89 e5 ; 0xf93db + push cx ; 51 ; 0xf93dd + push si ; 56 ; 0xf93de + mov si, ax ; 89 c6 ; 0xf93df + mov cx, dx ; 89 d1 ; 0xf93e1 + push strict byte 00000h ; 6a 00 ; 0xf93e3 virtio.c:358 + push strict byte 00004h ; 6a 04 ; 0xf93e5 + call 09242h ; e8 58 fe ; 0xf93e7 + mov es, cx ; 8e c1 ; 0xf93ea virtio.c:359 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf93ec + add bl, 010h ; 80 c3 10 ; 0xf93f1 + xor bh, bh ; 30 ff ; 0xf93f4 + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf93f6 + xor dh, dh ; 30 f6 ; 0xf93fb + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf93fd + xor ah, ah ; 30 e4 ; 0xf9402 + call 0a7f7h ; e8 f0 13 ; 0xf9404 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9407 virtio.c:360 + pop si ; 5e ; 0xf940a + pop cx ; 59 ; 0xf940b + pop bp ; 5d ; 0xf940c + retn ; c3 ; 0xf940d + ; disGetNextSymbol 0xf940e LB 0x194a -> off=0x0 cb=000000000000003c uValue=00000000000f7e0e 'virtio_reg_dev_cfg_write_u32' +virtio_reg_dev_cfg_write_u32: ; 0xf940e LB 0x3c + push bp ; 55 ; 0xf940e virtio.c:362 + mov bp, sp ; 89 e5 ; 0xf940f + push cx ; 51 ; 0xf9411 + push si ; 56 ; 0xf9412 + mov si, ax ; 89 c6 ; 0xf9413 + mov cx, dx ; 89 d1 ; 0xf9415 + push strict byte 00000h ; 6a 00 ; 0xf9417 virtio.c:364 + push strict byte 00004h ; 6a 04 ; 0xf9419 + call 09242h ; e8 24 fe ; 0xf941b + push word [bp+006h] ; ff 76 06 ; 0xf941e virtio.c:365 + push word [bp+004h] ; ff 76 04 ; 0xf9421 + mov es, cx ; 8e c1 ; 0xf9424 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf9426 + add bl, 010h ; 80 c3 10 ; 0xf942b + xor bh, bh ; 30 ff ; 0xf942e + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf9430 + xor dh, dh ; 30 f6 ; 0xf9435 + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf9437 + xor ah, ah ; 30 e4 ; 0xf943c + call 0a88fh ; e8 4e 14 ; 0xf943e + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9441 virtio.c:366 + pop si ; 5e ; 0xf9444 + pop cx ; 59 ; 0xf9445 + pop bp ; 5d ; 0xf9446 + retn 00004h ; c2 04 00 ; 0xf9447 + ; disGetNextSymbol 0xf944a LB 0x190e -> off=0x0 cb=0000000000000034 uValue=00000000000f7e4a 'virtio_reg_notify_write_u16' +virtio_reg_notify_write_u16: ; 0xf944a LB 0x34 + push bp ; 55 ; 0xf944a virtio.c:368 + mov bp, sp ; 89 e5 ; 0xf944b + push si ; 56 ; 0xf944d + push di ; 57 ; 0xf944e + mov si, ax ; 89 c6 ; 0xf944f + mov di, dx ; 89 d7 ; 0xf9451 + push strict byte 00000h ; 6a 00 ; 0xf9453 virtio.c:370 + push strict byte 00002h ; 6a 02 ; 0xf9455 + call 09278h ; e8 1e fe ; 0xf9457 + mov es, di ; 8e c7 ; 0xf945a virtio.c:371 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf945c + add bl, 010h ; 80 c3 10 ; 0xf9461 + xor bh, bh ; 30 ff ; 0xf9464 + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf9466 + xor dh, dh ; 30 f6 ; 0xf946b + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf946d + xor ah, ah ; 30 e4 ; 0xf9472 + call 0a845h ; e8 ce 13 ; 0xf9474 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9477 virtio.c:372 + pop di ; 5f ; 0xf947a + pop si ; 5e ; 0xf947b + pop bp ; 5d ; 0xf947c + retn ; c3 ; 0xf947d + ; disGetNextSymbol 0xf947e LB 0x18da -> off=0x0 cb=0000000000000039 uValue=00000000000f7e7e 'virtio_reg_isr_read_u8' +virtio_reg_isr_read_u8: ; 0xf947e LB 0x39 + push bp ; 55 ; 0xf947e virtio.c:374 + mov bp, sp ; 89 e5 ; 0xf947f + push bx ; 53 ; 0xf9481 + push cx ; 51 ; 0xf9482 + push si ; 56 ; 0xf9483 + push di ; 57 ; 0xf9484 + mov si, ax ; 89 c6 ; 0xf9485 + mov di, dx ; 89 d7 ; 0xf9487 + mov bx, strict word 00001h ; bb 01 00 ; 0xf9489 virtio.c:376 + xor cx, cx ; 31 c9 ; 0xf948c + call 092abh ; e8 1a fe ; 0xf948e + mov es, di ; 8e c7 ; 0xf9491 virtio.c:377 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf9493 + add bl, 010h ; 80 c3 10 ; 0xf9498 + xor bh, bh ; 30 ff ; 0xf949b + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf949d + xor dh, dh ; 30 f6 ; 0xf94a2 + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf94a4 + xor ah, ah ; 30 e4 ; 0xf94a9 + call 0a79fh ; e8 f1 12 ; 0xf94ab + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf94ae virtio.c:378 + pop di ; 5f ; 0xf94b1 + pop si ; 5e ; 0xf94b2 + pop cx ; 59 ; 0xf94b3 + pop bx ; 5b ; 0xf94b4 + pop bp ; 5d ; 0xf94b5 + retn ; c3 ; 0xf94b6 + ; disGetNextSymbol 0xf94b7 LB 0x18a1 -> off=0x0 cb=000000000000001e uValue=00000000000f7eb7 'virtio_addr_to_phys' +virtio_addr_to_phys: ; 0xf94b7 LB 0x1e + push bx ; 53 ; 0xf94b7 virtio.c:383 + push cx ; 51 ; 0xf94b8 + push bp ; 55 ; 0xf94b9 + mov bp, sp ; 89 e5 ; 0xf94ba + mov bx, ax ; 89 c3 ; 0xf94bc + mov ax, dx ; 89 d0 ; 0xf94be + xor dx, dx ; 31 d2 ; 0xf94c0 virtio.c:385 + mov cx, strict word 00004h ; b9 04 00 ; 0xf94c2 + sal ax, 1 ; d1 e0 ; 0xf94c5 + rcl dx, 1 ; d1 d2 ; 0xf94c7 + loop 094c5h ; e2 fa ; 0xf94c9 + xor cx, cx ; 31 c9 ; 0xf94cb + add ax, bx ; 01 d8 ; 0xf94cd + adc dx, cx ; 11 ca ; 0xf94cf + pop bp ; 5d ; 0xf94d1 virtio.c:386 + pop cx ; 59 ; 0xf94d2 + pop bx ; 5b ; 0xf94d3 + retn ; c3 ; 0xf94d4 + ; disGetNextSymbol 0xf94d5 LB 0x1883 -> off=0x0 cb=0000000000000172 uValue=00000000000f7ed5 'virtio_scsi_cmd_data_out' +virtio_scsi_cmd_data_out: ; 0xf94d5 LB 0x172 + push bp ; 55 ; 0xf94d5 virtio.c:388 + mov bp, sp ; 89 e5 ; 0xf94d6 + push cx ; 51 ; 0xf94d8 + push si ; 56 ; 0xf94d9 + push di ; 57 ; 0xf94da + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf94db + mov si, ax ; 89 c6 ; 0xf94de + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf94e0 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf94e3 + mov di, ax ; 89 c7 ; 0xf94e6 virtio.c:391 + mov es, dx ; 8e c2 ; 0xf94e8 + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf94ea + mov ax, word [es:si+03eh] ; 26 8b 44 3e ; 0xf94ed + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf94f1 + lea ax, [si+00094h] ; 8d 84 94 00 ; 0xf94f4 virtio.c:394 + mov word [bp-012h], ax ; 89 46 ee ; 0xf94f8 + mov cx, strict word 00024h ; b9 24 00 ; 0xf94fb + xor bx, bx ; 31 db ; 0xf94fe + call 0aa30h ; e8 2d 15 ; 0xf9500 + lea ax, [si+000b8h] ; 8d 84 b8 00 ; 0xf9503 virtio.c:395 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf9507 + mov cx, strict word 0002ch ; b9 2c 00 ; 0xf950a + xor bx, bx ; 31 db ; 0xf950d + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf950f + call 0aa30h ; e8 1b 15 ; 0xf9512 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9515 virtio.c:397 + mov byte [es:si+00094h], 001h ; 26 c6 84 94 00 01 ; 0xf9518 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf951e virtio.c:398 + mov byte [es:si+00095h], al ; 26 88 84 95 00 ; 0xf9521 + mov word [es:si+00096h], strict word 00000h ; 26 c7 84 96 00 00 00 ; 0xf9526 virtio.c:399 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf952d virtio.c:401 + xor ah, ah ; 30 e4 ; 0xf9530 + push ax ; 50 ; 0xf9532 + lea ax, [si+000a7h] ; 8d 84 a7 00 ; 0xf9533 + mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9537 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf953a + mov dx, es ; 8c c2 ; 0xf953d + call 0aa40h ; e8 fe 14 ; 0xf953f + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf9542 virtio.c:404 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9545 + call 094b7h ; e8 6c ff ; 0xf9548 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf954b + mov word [es:si], ax ; 26 89 04 ; 0xf954e + mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf9551 + mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf9555 virtio.c:405 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf955b + mov word [es:si+008h], strict word 00024h ; 26 c7 44 08 24 00 ; 0xf9561 virtio.c:406 + mov word [es:si+00ah], strict word 00000h ; 26 c7 44 0a 00 00 ; 0xf9567 + mov word [es:si+00ch], strict word 00001h ; 26 c7 44 0c 01 00 ; 0xf956d virtio.c:407 + mov word [es:si+00eh], strict word 00001h ; 26 c7 44 0e 01 00 ; 0xf9573 virtio.c:408 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9579 virtio.c:410 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf957c + call 094b7h ; e8 35 ff ; 0xf957f + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9582 + mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf9585 + mov word [es:si+012h], dx ; 26 89 54 12 ; 0xf9589 + mov word [es:si+014h], strict word 00000h ; 26 c7 44 14 00 00 ; 0xf958d virtio.c:411 + mov word [es:si+016h], strict word 00000h ; 26 c7 44 16 00 00 ; 0xf9593 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9599 virtio.c:412 + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf959c + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf95a0 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf95a3 + mov word [es:si+01ch], strict word 00001h ; 26 c7 44 1c 01 00 ; 0xf95a7 virtio.c:413 + mov word [es:si+01eh], strict word 00002h ; 26 c7 44 1e 02 00 ; 0xf95ad virtio.c:414 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf95b3 virtio.c:416 + mov dx, es ; 8c c2 ; 0xf95b6 + call 094b7h ; e8 fc fe ; 0xf95b8 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf95bb + mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf95be + mov word [es:si+022h], dx ; 26 89 54 22 ; 0xf95c2 + mov word [es:si+024h], strict word 00000h ; 26 c7 44 24 00 00 ; 0xf95c6 virtio.c:417 + mov word [es:si+026h], strict word 00000h ; 26 c7 44 26 00 00 ; 0xf95cc + mov word [es:si+028h], strict word 0002ch ; 26 c7 44 28 2c 00 ; 0xf95d2 virtio.c:418 + mov word [es:si+02ah], strict word 00000h ; 26 c7 44 2a 00 00 ; 0xf95d8 + mov word [es:si+02ch], strict word 00002h ; 26 c7 44 2c 02 00 ; 0xf95de virtio.c:419 + mov word [es:si+02eh], strict word 00000h ; 26 c7 44 2e 00 00 ; 0xf95e4 virtio.c:420 + mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf95ea virtio.c:423 + xor dx, dx ; 31 d2 ; 0xf95ee + mov bx, strict word 00003h ; bb 03 00 ; 0xf95f0 + div bx ; f7 f3 ; 0xf95f3 + add dx, dx ; 01 d2 ; 0xf95f5 + mov bx, si ; 89 f3 ; 0xf95f7 + add bx, dx ; 01 d3 ; 0xf95f9 + mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf95fb + mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf9601 virtio.c:424 + inc word [es:si+032h] ; 26 ff 44 32 ; 0xf9605 + mov bx, word [es:si+058h] ; 26 8b 5c 58 ; 0xf9609 virtio.c:428 + mov cx, strict word 00002h ; b9 02 00 ; 0xf960d + mov ax, si ; 89 f0 ; 0xf9610 + mov dx, es ; 8c c2 ; 0xf9612 + call 0944ah ; e8 33 fe ; 0xf9614 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf9617 virtio.c:431 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf961a + cmp ax, word [es:di+03eh] ; 26 3b 45 3e ; 0xf961d + je short 09617h ; 74 f4 ; 0xf9621 + mov ax, di ; 89 f8 ; 0xf9623 virtio.c:436 + mov dx, es ; 8c c2 ; 0xf9625 + call 0947eh ; e8 54 fe ; 0xf9627 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf962a virtio.c:438 + mov al, byte [es:di+000c3h] ; 26 8a 85 c3 00 ; 0xf962d + test al, al ; 84 c0 ; 0xf9632 + je short 0963bh ; 74 05 ; 0xf9634 + mov ax, strict word 00004h ; b8 04 00 ; 0xf9636 virtio.c:439 + jmp short 0963dh ; eb 02 ; 0xf9639 + xor ah, ah ; 30 e4 ; 0xf963b virtio.c:441 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf963d virtio.c:442 + pop di ; 5f ; 0xf9640 + pop si ; 5e ; 0xf9641 + pop cx ; 59 ; 0xf9642 + pop bp ; 5d ; 0xf9643 + retn 0000eh ; c2 0e 00 ; 0xf9644 + ; disGetNextSymbol 0xf9647 LB 0x1711 -> off=0x0 cb=0000000000000172 uValue=00000000000f8047 'virtio_scsi_cmd_data_in' +virtio_scsi_cmd_data_in: ; 0xf9647 LB 0x172 + push bp ; 55 ; 0xf9647 virtio.c:444 + mov bp, sp ; 89 e5 ; 0xf9648 + push cx ; 51 ; 0xf964a + push si ; 56 ; 0xf964b + push di ; 57 ; 0xf964c + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf964d + mov si, ax ; 89 c6 ; 0xf9650 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf9652 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9655 + mov di, ax ; 89 c7 ; 0xf9658 virtio.c:447 + mov es, dx ; 8e c2 ; 0xf965a + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf965c + mov ax, word [es:si+03eh] ; 26 8b 44 3e ; 0xf965f + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf9663 + lea ax, [si+00094h] ; 8d 84 94 00 ; 0xf9666 virtio.c:450 + mov word [bp-012h], ax ; 89 46 ee ; 0xf966a + mov cx, strict word 00024h ; b9 24 00 ; 0xf966d + xor bx, bx ; 31 db ; 0xf9670 + call 0aa30h ; e8 bb 13 ; 0xf9672 + lea ax, [si+000b8h] ; 8d 84 b8 00 ; 0xf9675 virtio.c:451 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf9679 + mov cx, strict word 0002ch ; b9 2c 00 ; 0xf967c + xor bx, bx ; 31 db ; 0xf967f + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9681 + call 0aa30h ; e8 a9 13 ; 0xf9684 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9687 virtio.c:453 + mov byte [es:si+00094h], 001h ; 26 c6 84 94 00 01 ; 0xf968a + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9690 virtio.c:454 + mov byte [es:si+00095h], al ; 26 88 84 95 00 ; 0xf9693 + mov word [es:si+00096h], strict word 00000h ; 26 c7 84 96 00 00 00 ; 0xf9698 virtio.c:455 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf969f virtio.c:457 + xor ah, ah ; 30 e4 ; 0xf96a2 + push ax ; 50 ; 0xf96a4 + lea ax, [si+000a7h] ; 8d 84 a7 00 ; 0xf96a5 + mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf96a9 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf96ac + mov dx, es ; 8c c2 ; 0xf96af + call 0aa40h ; e8 8c 13 ; 0xf96b1 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf96b4 virtio.c:460 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf96b7 + call 094b7h ; e8 fa fd ; 0xf96ba + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf96bd + mov word [es:si], ax ; 26 89 04 ; 0xf96c0 + mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf96c3 + mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf96c7 virtio.c:461 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf96cd + mov word [es:si+008h], strict word 00024h ; 26 c7 44 08 24 00 ; 0xf96d3 virtio.c:462 + mov word [es:si+00ah], strict word 00000h ; 26 c7 44 0a 00 00 ; 0xf96d9 + mov word [es:si+00ch], strict word 00001h ; 26 c7 44 0c 01 00 ; 0xf96df virtio.c:463 + mov word [es:si+00eh], strict word 00001h ; 26 c7 44 0e 01 00 ; 0xf96e5 virtio.c:464 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf96eb virtio.c:467 + mov dx, es ; 8c c2 ; 0xf96ee + call 094b7h ; e8 c4 fd ; 0xf96f0 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf96f3 + mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf96f6 + mov word [es:si+012h], dx ; 26 89 54 12 ; 0xf96fa + mov word [es:si+014h], strict word 00000h ; 26 c7 44 14 00 00 ; 0xf96fe virtio.c:468 + mov word [es:si+016h], strict word 00000h ; 26 c7 44 16 00 00 ; 0xf9704 + mov word [es:si+018h], strict word 0002ch ; 26 c7 44 18 2c 00 ; 0xf970a virtio.c:469 + mov word [es:si+01ah], strict word 00000h ; 26 c7 44 1a 00 00 ; 0xf9710 + mov word [es:si+01ch], strict word 00003h ; 26 c7 44 1c 03 00 ; 0xf9716 virtio.c:470 + mov word [es:si+01eh], strict word 00002h ; 26 c7 44 1e 02 00 ; 0xf971c virtio.c:471 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9722 virtio.c:473 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9725 + call 094b7h ; e8 8c fd ; 0xf9728 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf972b + mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf972e + mov word [es:si+022h], dx ; 26 89 54 22 ; 0xf9732 + mov word [es:si+024h], strict word 00000h ; 26 c7 44 24 00 00 ; 0xf9736 virtio.c:474 + mov word [es:si+026h], strict word 00000h ; 26 c7 44 26 00 00 ; 0xf973c + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9742 virtio.c:475 + mov word [es:si+028h], ax ; 26 89 44 28 ; 0xf9745 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf9749 + mov word [es:si+02ah], ax ; 26 89 44 2a ; 0xf974c + mov word [es:si+02ch], strict word 00002h ; 26 c7 44 2c 02 00 ; 0xf9750 virtio.c:476 + mov word [es:si+02eh], strict word 00000h ; 26 c7 44 2e 00 00 ; 0xf9756 virtio.c:477 + mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf975c virtio.c:481 + xor dx, dx ; 31 d2 ; 0xf9760 + mov bx, strict word 00003h ; bb 03 00 ; 0xf9762 + div bx ; f7 f3 ; 0xf9765 + add dx, dx ; 01 d2 ; 0xf9767 + mov bx, si ; 89 f3 ; 0xf9769 + add bx, dx ; 01 d3 ; 0xf976b + mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf976d + mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf9773 virtio.c:482 + inc word [es:si+032h] ; 26 ff 44 32 ; 0xf9777 + mov bx, word [es:si+058h] ; 26 8b 5c 58 ; 0xf977b virtio.c:486 + mov cx, strict word 00002h ; b9 02 00 ; 0xf977f + mov ax, si ; 89 f0 ; 0xf9782 + mov dx, es ; 8c c2 ; 0xf9784 + call 0944ah ; e8 c1 fc ; 0xf9786 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf9789 virtio.c:489 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf978c + cmp ax, word [es:di+03eh] ; 26 3b 45 3e ; 0xf978f + je short 09789h ; 74 f4 ; 0xf9793 + mov ax, di ; 89 f8 ; 0xf9795 virtio.c:494 + mov dx, es ; 8c c2 ; 0xf9797 + call 0947eh ; e8 e2 fc ; 0xf9799 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf979c virtio.c:496 + mov al, byte [es:di+000c3h] ; 26 8a 85 c3 00 ; 0xf979f + test al, al ; 84 c0 ; 0xf97a4 + je short 097adh ; 74 05 ; 0xf97a6 + mov ax, strict word 00004h ; b8 04 00 ; 0xf97a8 virtio.c:497 + jmp short 097afh ; eb 02 ; 0xf97ab + xor ah, ah ; 30 e4 ; 0xf97ad virtio.c:499 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf97af virtio.c:500 + pop di ; 5f ; 0xf97b2 + pop si ; 5e ; 0xf97b3 + pop cx ; 59 ; 0xf97b4 + pop bp ; 5d ; 0xf97b5 + retn 0000eh ; c2 0e 00 ; 0xf97b6 + ; disGetNextSymbol 0xf97b9 LB 0x159f -> off=0x0 cb=0000000000000335 uValue=00000000000f81b9 'virtio_scsi_hba_init' +virtio_scsi_hba_init: ; 0xf97b9 LB 0x335 + push bp ; 55 ; 0xf97b9 virtio.c:505 + mov bp, sp ; 89 e5 ; 0xf97ba + push si ; 56 ; 0xf97bc + push di ; 57 ; 0xf97bd + sub sp, strict byte 00014h ; 83 ec 14 ; 0xf97be + mov si, ax ; 89 c6 ; 0xf97c1 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf97c3 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf97c6 + mov ch, cl ; 88 cd ; 0xf97c9 + mov es, dx ; 8e c2 ; 0xf97cb virtio.c:510 + mov byte [es:si+00092h], bl ; 26 88 9c 92 00 ; 0xf97cd + mov byte [es:si+00093h], cl ; 26 88 8c 93 00 ; 0xf97d2 virtio.c:511 + mov cl, byte [bp+004h] ; 8a 4e 04 ; 0xf97d7 virtio.c:517 + test cl, cl ; 84 c9 ; 0xf97da virtio.c:518 + je short 09839h ; 74 5b ; 0xf97dc + mov bl, cl ; 88 cb ; 0xf97de virtio.c:520 + xor bh, bh ; 30 ff ; 0xf97e0 + mov byte [bp-00eh], ch ; 88 6e f2 ; 0xf97e2 + mov byte [bp-00dh], bh ; 88 7e f3 ; 0xf97e5 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf97e8 + mov byte [bp-016h], al ; 88 46 ea ; 0xf97eb + mov byte [bp-015h], bh ; 88 7e eb ; 0xf97ee + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf97f1 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf97f4 + call 0a79fh ; e8 a5 0f ; 0xf97f7 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf97fa + mov bl, cl ; 88 cb ; 0xf97fd virtio.c:521 + add bl, 002h ; 80 c3 02 ; 0xf97ff + xor bh, bh ; 30 ff ; 0xf9802 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9804 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9807 + call 0a79fh ; e8 92 0f ; 0xf980a + cmp byte [bp-018h], 009h ; 80 7e e8 09 ; 0xf980d virtio.c:525 + jne short 09836h ; 75 23 ; 0xf9811 + cmp AL, strict byte 010h ; 3c 10 ; 0xf9813 + jc short 09836h ; 72 1f ; 0xf9815 + mov bl, cl ; 88 cb ; 0xf9817 virtio.c:529 + add bl, 003h ; 80 c3 03 ; 0xf9819 + xor bh, bh ; 30 ff ; 0xf981c + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf981e + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9821 + call 0a79fh ; e8 78 0f ; 0xf9824 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf9827 + cmp AL, strict byte 005h ; 3c 05 ; 0xf982a virtio.c:532 + je short 0983ch ; 74 0e ; 0xf982c + cmp AL, strict byte 001h ; 3c 01 ; 0xf982e + jc short 09836h ; 72 04 ; 0xf9830 + cmp AL, strict byte 004h ; 3c 04 ; 0xf9832 + jbe short 0983fh ; 76 09 ; 0xf9834 + jmp near 098dbh ; e9 a2 00 ; 0xf9836 + jmp near 098f2h ; e9 b6 00 ; 0xf9839 + jmp near 098d3h ; e9 94 00 ; 0xf983c + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf983f virtio.c:539 + xor ah, ah ; 30 e4 ; 0xf9842 + dec ax ; 48 ; 0xf9844 + imul ax, ax, strict byte 0000ch ; 6b c0 0c ; 0xf9845 + lea di, [si+05ch] ; 8d 7c 5c ; 0xf9848 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf984b + mov word [bp-014h], dx ; 89 56 ec ; 0xf984e + add di, ax ; 01 c7 ; 0xf9851 + mov bl, cl ; 88 cb ; 0xf9853 virtio.c:541 + add bl, 004h ; 80 c3 04 ; 0xf9855 + xor bh, bh ; 30 ff ; 0xf9858 + mov byte [bp-012h], ch ; 88 6e ee ; 0xf985a + mov byte [bp-011h], bh ; 88 7e ef ; 0xf985d + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9860 + mov byte [bp-010h], al ; 88 46 f0 ; 0xf9863 + mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf9866 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf9869 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf986c + call 0a79fh ; e8 2d 0f ; 0xf986f + mov es, [bp-014h] ; 8e 46 ec ; 0xf9872 + mov byte [es:di], al ; 26 88 05 ; 0xf9875 + mov bl, cl ; 88 cb ; 0xf9878 virtio.c:542 + add bl, 008h ; 80 c3 08 ; 0xf987a + xor bh, bh ; 30 ff ; 0xf987d + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf987f + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf9882 + call 0a7f7h ; e8 6f 0f ; 0xf9885 + mov es, [bp-014h] ; 8e 46 ec ; 0xf9888 + mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf988b + mov word [es:di+006h], dx ; 26 89 55 06 ; 0xf988f + mov bl, cl ; 88 cb ; 0xf9893 virtio.c:543 + add bl, 00ch ; 80 c3 0c ; 0xf9895 + xor bh, bh ; 30 ff ; 0xf9898 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf989a + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf989d + call 0a7f7h ; e8 54 0f ; 0xf98a0 + mov es, [bp-014h] ; 8e 46 ec ; 0xf98a3 + mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf98a6 + mov word [es:di+00ah], dx ; 26 89 55 0a ; 0xf98aa + cmp byte [bp-00ah], 002h ; 80 7e f6 02 ; 0xf98ae virtio.c:544 + jne short 098dbh ; 75 27 ; 0xf98b2 + mov bl, cl ; 88 cb ; 0xf98b4 virtio.c:546 + add bl, 010h ; 80 c3 10 ; 0xf98b6 + xor bh, bh ; 30 ff ; 0xf98b9 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf98bb + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf98be + call 0a7f7h ; e8 33 0f ; 0xf98c1 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf98c4 + mov word [es:si+0008eh], ax ; 26 89 84 8e 00 ; 0xf98c7 + mov word [es:si+00090h], dx ; 26 89 94 90 00 ; 0xf98cc + jmp short 098dbh ; eb 08 ; 0xf98d1 virtio.c:549 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf98d3 virtio.c:552 + mov byte [es:si+0008ch], cl ; 26 88 8c 8c 00 ; 0xf98d6 + mov bl, cl ; 88 cb ; 0xf98db virtio.c:561 + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf98dd + xor bh, bh ; 30 ff ; 0xf98df + mov dl, ch ; 88 ea ; 0xf98e1 + xor dh, dh ; 30 f6 ; 0xf98e3 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf98e5 + xor ah, ah ; 30 e4 ; 0xf98e8 + call 0a79fh ; e8 b2 0e ; 0xf98ea + mov cl, al ; 88 c1 ; 0xf98ed + jmp near 097dah ; e9 e8 fe ; 0xf98ef virtio.c:562 + xor ch, ch ; 30 ed ; 0xf98f2 virtio.c:566 + mov bx, strict word 00014h ; bb 14 00 ; 0xf98f4 + mov ax, si ; 89 f0 ; 0xf98f7 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf98f9 + call 09300h ; e8 01 fa ; 0xf98fc + mov cx, strict word 00001h ; b9 01 00 ; 0xf98ff virtio.c:569 + mov bx, strict word 00014h ; bb 14 00 ; 0xf9902 + mov ax, si ; 89 f0 ; 0xf9905 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9907 + call 09300h ; e8 f3 f9 ; 0xf990a + mov byte [bp-006h], 003h ; c6 46 fa 03 ; 0xf990d virtio.c:571 + mov cx, strict word 00003h ; b9 03 00 ; 0xf9911 virtio.c:572 + mov bx, strict word 00014h ; bb 14 00 ; 0xf9914 + mov ax, si ; 89 f0 ; 0xf9917 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9919 + call 09300h ; e8 e1 f9 ; 0xf991c + xor bx, bx ; 31 db ; 0xf991f virtio.c:581 + mov ax, si ; 89 f0 ; 0xf9921 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9923 + call 093dah ; e8 b1 fa ; 0xf9926 + test dx, dx ; 85 d2 ; 0xf9929 + jne short 09932h ; 75 05 ; 0xf992b + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf992d + jc short 0996eh ; 72 3c ; 0xf9930 + mov bx, strict word 00018h ; bb 18 00 ; 0xf9932 + mov ax, si ; 89 f0 ; 0xf9935 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9937 + call 093dah ; e8 9d fa ; 0xf993a + test dx, dx ; 85 d2 ; 0xf993d + jne short 09946h ; 75 05 ; 0xf993f + cmp ax, strict word 00010h ; 3d 10 00 ; 0xf9941 + jc short 0996eh ; 72 28 ; 0xf9944 + mov bx, strict word 00014h ; bb 14 00 ; 0xf9946 + mov ax, si ; 89 f0 ; 0xf9949 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf994b + call 093dah ; e8 89 fa ; 0xf994e + test dx, dx ; 85 d2 ; 0xf9951 + jne short 0995ah ; 75 05 ; 0xf9953 + cmp ax, strict word 00020h ; 3d 20 00 ; 0xf9955 + jc short 0996eh ; 72 14 ; 0xf9958 + mov bx, strict word 00008h ; bb 08 00 ; 0xf995a + mov ax, si ; 89 f0 ; 0xf995d + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf995f + call 093dah ; e8 75 fa ; 0xf9962 + test dx, dx ; 85 d2 ; 0xf9965 + jne short 09974h ; 75 0b ; 0xf9967 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf9969 + jnc short 09974h ; 73 06 ; 0xf996c + mov ax, strict word 00001h ; b8 01 00 ; 0xf996e virtio.c:587 + jmp near 09ae5h ; e9 71 01 ; 0xf9971 + push strict byte 00000h ; 6a 00 ; 0xf9974 virtio.c:590 + push strict byte 00001h ; 6a 01 ; 0xf9976 + mov bx, strict word 0000ch ; bb 0c 00 ; 0xf9978 + mov ax, si ; 89 f0 ; 0xf997b + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf997d + call 0939eh ; e8 1b fa ; 0xf9980 + or byte [bp-006h], 008h ; 80 4e fa 08 ; 0xf9983 virtio.c:593 + mov cl, byte [bp-006h] ; 8a 4e fa ; 0xf9987 virtio.c:594 + xor ch, ch ; 30 ed ; 0xf998a + mov bx, strict word 00014h ; bb 14 00 ; 0xf998c + mov ax, si ; 89 f0 ; 0xf998f + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9991 + call 09300h ; e8 69 f9 ; 0xf9994 + mov bx, strict word 00014h ; bb 14 00 ; 0xf9997 virtio.c:597 + mov ax, si ; 89 f0 ; 0xf999a + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf999c + call 092cch ; e8 2a f9 ; 0xf999f + test AL, strict byte 008h ; a8 08 ; 0xf99a2 + je short 0996eh ; 74 c8 ; 0xf99a4 + xor cx, cx ; 31 c9 ; 0xf99a6 virtio.c:604 + mov bx, strict word 00016h ; bb 16 00 ; 0xf99a8 + mov ax, si ; 89 f0 ; 0xf99ab + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf99ad + call 0936ah ; e8 b7 f9 ; 0xf99b0 + xor cx, cx ; 31 c9 ; 0xf99b3 virtio.c:605 + mov bx, strict word 00018h ; bb 18 00 ; 0xf99b5 + mov ax, si ; 89 f0 ; 0xf99b8 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf99ba + call 0936ah ; e8 aa f9 ; 0xf99bd + xor cx, cx ; 31 c9 ; 0xf99c0 virtio.c:606 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf99c2 + mov ax, si ; 89 f0 ; 0xf99c5 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf99c7 + call 0936ah ; e8 9d f9 ; 0xf99ca + mov cx, strict word 00001h ; b9 01 00 ; 0xf99cd virtio.c:608 + mov bx, strict word 00016h ; bb 16 00 ; 0xf99d0 + mov ax, si ; 89 f0 ; 0xf99d3 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf99d5 + call 0936ah ; e8 8f f9 ; 0xf99d8 + xor cx, cx ; 31 c9 ; 0xf99db virtio.c:609 + mov bx, strict word 00018h ; bb 18 00 ; 0xf99dd + mov ax, si ; 89 f0 ; 0xf99e0 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf99e2 + call 0936ah ; e8 82 f9 ; 0xf99e5 + xor cx, cx ; 31 c9 ; 0xf99e8 virtio.c:610 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf99ea + mov ax, si ; 89 f0 ; 0xf99ed + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf99ef + call 0936ah ; e8 75 f9 ; 0xf99f2 + mov cx, strict word 00002h ; b9 02 00 ; 0xf99f5 virtio.c:613 + mov bx, strict word 00016h ; bb 16 00 ; 0xf99f8 + mov ax, si ; 89 f0 ; 0xf99fb + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf99fd + call 0936ah ; e8 67 f9 ; 0xf9a00 + mov cx, strict word 00003h ; b9 03 00 ; 0xf9a03 virtio.c:614 + mov bx, strict word 00018h ; bb 18 00 ; 0xf9a06 + mov ax, si ; 89 f0 ; 0xf9a09 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a0b + call 0936ah ; e8 59 f9 ; 0xf9a0e + mov cx, strict word 00001h ; b9 01 00 ; 0xf9a11 virtio.c:615 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf9a14 + mov ax, si ; 89 f0 ; 0xf9a17 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a19 + call 0936ah ; e8 4b f9 ; 0xf9a1c + mov ax, si ; 89 f0 ; 0xf9a1f virtio.c:618 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a21 + call 094b7h ; e8 90 fa ; 0xf9a24 + push dx ; 52 ; 0xf9a27 + push ax ; 50 ; 0xf9a28 + mov bx, strict word 00020h ; bb 20 00 ; 0xf9a29 + mov ax, si ; 89 f0 ; 0xf9a2c + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a2e + call 0939eh ; e8 6a f9 ; 0xf9a31 + push strict byte 00000h ; 6a 00 ; 0xf9a34 virtio.c:619 + push strict byte 00000h ; 6a 00 ; 0xf9a36 + mov bx, strict word 00024h ; bb 24 00 ; 0xf9a38 + mov ax, si ; 89 f0 ; 0xf9a3b + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a3d + call 0939eh ; e8 5b f9 ; 0xf9a40 + lea ax, [si+030h] ; 8d 44 30 ; 0xf9a43 virtio.c:621 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a46 + call 094b7h ; e8 6b fa ; 0xf9a49 + push dx ; 52 ; 0xf9a4c + push ax ; 50 ; 0xf9a4d + mov bx, strict word 00028h ; bb 28 00 ; 0xf9a4e + mov ax, si ; 89 f0 ; 0xf9a51 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a53 + call 0939eh ; e8 45 f9 ; 0xf9a56 + push strict byte 00000h ; 6a 00 ; 0xf9a59 virtio.c:622 + push strict byte 00000h ; 6a 00 ; 0xf9a5b + mov bx, strict word 0002ch ; bb 2c 00 ; 0xf9a5d + mov ax, si ; 89 f0 ; 0xf9a60 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a62 + call 0939eh ; e8 36 f9 ; 0xf9a65 + lea ax, [si+03ch] ; 8d 44 3c ; 0xf9a68 virtio.c:624 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a6b + call 094b7h ; e8 46 fa ; 0xf9a6e + push dx ; 52 ; 0xf9a71 + push ax ; 50 ; 0xf9a72 + mov bx, strict word 00030h ; bb 30 00 ; 0xf9a73 + mov ax, si ; 89 f0 ; 0xf9a76 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a78 + call 0939eh ; e8 20 f9 ; 0xf9a7b + push strict byte 00000h ; 6a 00 ; 0xf9a7e virtio.c:625 + push strict byte 00000h ; 6a 00 ; 0xf9a80 + mov bx, strict word 00034h ; bb 34 00 ; 0xf9a82 + mov ax, si ; 89 f0 ; 0xf9a85 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a87 + call 0939eh ; e8 11 f9 ; 0xf9a8a + push strict byte 00000h ; 6a 00 ; 0xf9a8d virtio.c:627 + push strict byte 00010h ; 6a 10 ; 0xf9a8f + mov bx, strict word 00018h ; bb 18 00 ; 0xf9a91 + mov ax, si ; 89 f0 ; 0xf9a94 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a96 + call 0940eh ; e8 72 f9 ; 0xf9a99 + push strict byte 00000h ; 6a 00 ; 0xf9a9c virtio.c:628 + push strict byte 00020h ; 6a 20 ; 0xf9a9e + mov bx, strict word 00014h ; bb 14 00 ; 0xf9aa0 + mov ax, si ; 89 f0 ; 0xf9aa3 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9aa5 + call 0940eh ; e8 63 f9 ; 0xf9aa8 + mov bx, strict word 0001eh ; bb 1e 00 ; 0xf9aab virtio.c:631 + mov ax, si ; 89 f0 ; 0xf9aae + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9ab0 + call 09336h ; e8 80 f8 ; 0xf9ab3 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9ab6 + mov bx, word [es:si+0008eh] ; 26 8b 9c 8e 00 ; 0xf9ab9 + mov cx, word [es:si+00090h] ; 26 8b 8c 90 00 ; 0xf9abe + xor dx, dx ; 31 d2 ; 0xf9ac3 + call 0a9c0h ; e8 f8 0e ; 0xf9ac5 + mov word [es:si+058h], ax ; 26 89 44 58 ; 0xf9ac8 + mov word [es:si+05ah], dx ; 26 89 54 5a ; 0xf9acc + or byte [bp-006h], 004h ; 80 4e fa 04 ; 0xf9ad0 virtio.c:634 + mov cl, byte [bp-006h] ; 8a 4e fa ; 0xf9ad4 virtio.c:635 + xor ch, ch ; 30 ed ; 0xf9ad7 + mov bx, strict word 00014h ; bb 14 00 ; 0xf9ad9 + mov ax, si ; 89 f0 ; 0xf9adc + mov dx, es ; 8c c2 ; 0xf9ade + call 09300h ; e8 1d f8 ; 0xf9ae0 + xor ax, ax ; 31 c0 ; 0xf9ae3 virtio.c:637 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9ae5 virtio.c:638 + pop di ; 5f ; 0xf9ae8 + pop si ; 5e ; 0xf9ae9 + pop bp ; 5d ; 0xf9aea + retn 00002h ; c2 02 00 ; 0xf9aeb + ; disGetNextSymbol 0xf9aee LB 0x126a -> off=0x0 cb=00000000000000f9 uValue=00000000000f84ee 'virtio_scsi_init' +virtio_scsi_init: ; 0xf9aee LB 0xf9 + push bp ; 55 ; 0xf9aee virtio.c:643 + mov bp, sp ; 89 e5 ; 0xf9aef + push si ; 56 ; 0xf9af1 + push di ; 57 ; 0xf9af2 + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf9af3 + mov byte [bp-006h], bl ; 88 5e fa ; 0xf9af6 + mov byte [bp-00ah], cl ; 88 4e f6 ; 0xf9af9 + mov di, ax ; 89 c7 ; 0xf9afc virtio.c:645 + mov si, dx ; 89 d6 ; 0xf9afe + mov byte [bp-008h], 0ffh ; c6 46 f8 ff ; 0xf9b00 virtio.c:647 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf9b04 virtio.c:648 + mov dl, cl ; 88 ca ; 0xf9b08 virtio.c:651 + xor dh, dh ; 30 f6 ; 0xf9b0a + mov al, bl ; 88 d8 ; 0xf9b0c + xor ah, ah ; 30 e4 ; 0xf9b0e + mov bx, strict word 00034h ; bb 34 00 ; 0xf9b10 + call 0a79fh ; e8 89 0c ; 0xf9b13 + mov ch, al ; 88 c5 ; 0xf9b16 + test ch, ch ; 84 ed ; 0xf9b18 virtio.c:653 + je short 09b7bh ; 74 5f ; 0xf9b1a + mov bl, ch ; 88 eb ; 0xf9b1c virtio.c:655 + xor bh, bh ; 30 ff ; 0xf9b1e + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9b20 + mov byte [bp-014h], al ; 88 46 ec ; 0xf9b23 + mov byte [bp-013h], bh ; 88 7e ed ; 0xf9b26 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9b29 + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf9b2c + mov byte [bp-00dh], bh ; 88 7e f3 ; 0xf9b2f + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9b32 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9b35 + call 0a79fh ; e8 64 0c ; 0xf9b38 + mov word [bp-012h], ax ; 89 46 ee ; 0xf9b3b + mov bl, ch ; 88 eb ; 0xf9b3e virtio.c:656 + add bl, 002h ; 80 c3 02 ; 0xf9b40 + xor bh, bh ; 30 ff ; 0xf9b43 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9b45 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9b48 + call 0a79fh ; e8 51 0c ; 0xf9b4b + cmp byte [bp-012h], 009h ; 80 7e ee 09 ; 0xf9b4e virtio.c:660 + jne short 09b88h ; 75 34 ; 0xf9b52 + cmp AL, strict byte 010h ; 3c 10 ; 0xf9b54 + jc short 09b88h ; 72 30 ; 0xf9b56 + mov bl, ch ; 88 eb ; 0xf9b58 virtio.c:664 + add bl, 003h ; 80 c3 03 ; 0xf9b5a + xor bh, bh ; 30 ff ; 0xf9b5d + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9b5f + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9b62 + call 0a79fh ; e8 37 0c ; 0xf9b65 + cmp byte [bp-008h], 0ffh ; 80 7e f8 ff ; 0xf9b68 virtio.c:666 + jne short 09b71h ; 75 03 ; 0xf9b6c + mov byte [bp-008h], ch ; 88 6e f8 ; 0xf9b6e virtio.c:667 + cmp AL, strict byte 001h ; 3c 01 ; 0xf9b71 virtio.c:670 + jc short 09b88h ; 72 13 ; 0xf9b73 + cmp AL, strict byte 005h ; 3c 05 ; 0xf9b75 + jbe short 09b7dh ; 76 04 ; 0xf9b77 + jmp short 09b88h ; eb 0d ; 0xf9b79 + jmp short 09b9bh ; eb 1e ; 0xf9b7b + mov cl, al ; 88 c1 ; 0xf9b7d virtio.c:677 + db 0feh, 0c9h + ; dec cl ; fe c9 ; 0xf9b7f + mov AL, strict byte 001h ; b0 01 ; 0xf9b81 + sal al, CL ; d2 e0 ; 0xf9b83 + or byte [bp-00ch], al ; 08 46 f4 ; 0xf9b85 + mov bl, ch ; 88 eb ; 0xf9b88 virtio.c:684 + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf9b8a + xor bh, bh ; 30 ff ; 0xf9b8c + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf9b8e + xor dh, dh ; 30 f6 ; 0xf9b91 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9b93 + xor ah, ah ; 30 e4 ; 0xf9b96 + jmp near 09b13h ; e9 78 ff ; 0xf9b98 virtio.c:685 + cmp byte [bp-008h], 0ffh ; 80 7e f8 ff ; 0xf9b9b virtio.c:688 + je short 09bddh ; 74 3c ; 0xf9b9f + cmp byte [bp-00ch], 01fh ; 80 7e f4 1f ; 0xf9ba1 + jne short 09bddh ; 75 36 ; 0xf9ba5 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9ba7 virtio.c:694 + mov byte [bp-012h], al ; 88 46 ee ; 0xf9baa + mov byte [bp-011h], ch ; 88 6e ef ; 0xf9bad + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9bb0 + mov byte [bp-010h], al ; 88 46 f0 ; 0xf9bb3 + mov byte [bp-00fh], ch ; 88 6e f1 ; 0xf9bb6 + mov cx, strict word 00007h ; b9 07 00 ; 0xf9bb9 + mov bx, strict word 00004h ; bb 04 00 ; 0xf9bbc + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf9bbf + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf9bc2 + call 0a845h ; e8 7d 0c ; 0xf9bc5 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9bc8 virtio.c:695 + xor ah, ah ; 30 e4 ; 0xf9bcb + push ax ; 50 ; 0xf9bcd + mov cx, word [bp-012h] ; 8b 4e ee ; 0xf9bce + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf9bd1 + mov ax, di ; 89 f8 ; 0xf9bd4 + mov dx, si ; 89 f2 ; 0xf9bd6 + call 097b9h ; e8 de fb ; 0xf9bd8 + jmp short 09be0h ; eb 03 ; 0xf9bdb + mov ax, strict word 00001h ; b8 01 00 ; 0xf9bdd virtio.c:700 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9be0 virtio.c:701 + pop di ; 5f ; 0xf9be3 + pop si ; 5e ; 0xf9be4 + pop bp ; 5d ; 0xf9be5 + retn ; c3 ; 0xf9be6 + ; disGetNextSymbol 0xf9be7 LB 0x1171 -> off=0x0 cb=000000000000001e uValue=00000000000f85e7 'buslogic_addr_to_phys' +buslogic_addr_to_phys: ; 0xf9be7 LB 0x1e + push bx ; 53 ; 0xf9be7 buslogic.c:120 + push cx ; 51 ; 0xf9be8 + push bp ; 55 ; 0xf9be9 + mov bp, sp ; 89 e5 ; 0xf9bea + mov bx, ax ; 89 c3 ; 0xf9bec + mov ax, dx ; 89 d0 ; 0xf9bee + xor dx, dx ; 31 d2 ; 0xf9bf0 buslogic.c:122 + mov cx, strict word 00004h ; b9 04 00 ; 0xf9bf2 + sal ax, 1 ; d1 e0 ; 0xf9bf5 + rcl dx, 1 ; d1 d2 ; 0xf9bf7 + loop 09bf5h ; e2 fa ; 0xf9bf9 + xor cx, cx ; 31 c9 ; 0xf9bfb + add ax, bx ; 01 d8 ; 0xf9bfd + adc dx, cx ; 11 ca ; 0xf9bff + pop bp ; 5d ; 0xf9c01 buslogic.c:123 + pop cx ; 59 ; 0xf9c02 + pop bx ; 5b ; 0xf9c03 + retn ; c3 ; 0xf9c04 + ; disGetNextSymbol 0xf9c05 LB 0x1153 -> off=0x0 cb=0000000000000084 uValue=00000000000f8605 'buslogic_cmd' +buslogic_cmd: ; 0xf9c05 LB 0x84 + push bp ; 55 ; 0xf9c05 buslogic.c:125 + mov bp, sp ; 89 e5 ; 0xf9c06 + push cx ; 51 ; 0xf9c08 + push si ; 56 ; 0xf9c09 + push di ; 57 ; 0xf9c0a + mov si, ax ; 89 c6 ; 0xf9c0b + mov cx, dx ; 89 d1 ; 0xf9c0d + mov es, dx ; 8e c2 ; 0xf9c0f buslogic.c:130 + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9c11 + inc dx ; 42 ; 0xf9c15 + mov al, bl ; 88 d8 ; 0xf9c16 + out DX, AL ; ee ; 0xf9c18 + xor bx, bx ; 31 db ; 0xf9c19 buslogic.c:131 + cmp bx, word [bp+008h] ; 3b 5e 08 ; 0xf9c1b + jnc short 09c39h ; 73 19 ; 0xf9c1e + mov di, word [bp+004h] ; 8b 7e 04 ; 0xf9c20 buslogic.c:132 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf9c23 + inc word [bp+004h] ; ff 46 04 ; 0xf9c26 + mov es, cx ; 8e c1 ; 0xf9c29 + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9c2b + inc dx ; 42 ; 0xf9c2f + mov es, ax ; 8e c0 ; 0xf9c30 + mov al, byte [es:di] ; 26 8a 05 ; 0xf9c32 + out DX, AL ; ee ; 0xf9c35 + inc bx ; 43 ; 0xf9c36 + jmp short 09c1bh ; eb e2 ; 0xf9c37 + cmp word [bp+00eh], strict byte 00000h ; 83 7e 0e 00 ; 0xf9c39 buslogic.c:135 + je short 09c69h ; 74 2a ; 0xf9c3d + mov es, cx ; 8e c1 ; 0xf9c3f buslogic.c:137 + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9c41 + in AL, DX ; ec ; 0xf9c45 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf9c46 + test AL, strict byte 004h ; a8 04 ; 0xf9c48 + je short 09c3fh ; 74 f3 ; 0xf9c4a + xor bx, bx ; 31 db ; 0xf9c4c buslogic.c:138 + cmp bx, word [bp+00eh] ; 3b 5e 0e ; 0xf9c4e + jnc short 09c69h ; 73 16 ; 0xf9c51 + mov es, cx ; 8e c1 ; 0xf9c53 buslogic.c:139 + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9c55 + inc dx ; 42 ; 0xf9c59 + in AL, DX ; ec ; 0xf9c5a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf9c5b + les di, [bp+00ah] ; c4 7e 0a ; 0xf9c5d + mov byte [es:di], al ; 26 88 05 ; 0xf9c60 + inc word [bp+00ah] ; ff 46 0a ; 0xf9c63 + inc bx ; 43 ; 0xf9c66 + jmp short 09c4eh ; eb e5 ; 0xf9c67 + mov es, cx ; 8e c1 ; 0xf9c69 buslogic.c:142 + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9c6b + in AL, DX ; ec ; 0xf9c6f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf9c70 + test AL, strict byte 010h ; a8 10 ; 0xf9c72 + je short 09c69h ; 74 f3 ; 0xf9c74 + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9c76 buslogic.c:145 + mov AL, strict byte 020h ; b0 20 ; 0xf9c7a + out DX, AL ; ee ; 0xf9c7c + xor ax, ax ; 31 c0 ; 0xf9c7d buslogic.c:148 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9c7f + pop di ; 5f ; 0xf9c82 + pop si ; 5e ; 0xf9c83 + pop cx ; 59 ; 0xf9c84 + pop bp ; 5d ; 0xf9c85 + retn 0000ch ; c2 0c 00 ; 0xf9c86 + ; disGetNextSymbol 0xf9c89 LB 0x10cf -> off=0x0 cb=00000000000000b2 uValue=00000000000f8689 'buslogic_scsi_cmd_data_out' +buslogic_scsi_cmd_data_out: ; 0xf9c89 LB 0xb2 + push bp ; 55 ; 0xf9c89 buslogic.c:150 + mov bp, sp ; 89 e5 ; 0xf9c8a + push cx ; 51 ; 0xf9c8c + push si ; 56 ; 0xf9c8d + push di ; 57 ; 0xf9c8e + sub sp, strict byte 00008h ; 83 ec 08 ; 0xf9c8f + mov si, ax ; 89 c6 ; 0xf9c92 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9c94 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf9c97 buslogic.c:153 + mov di, dx ; 89 d7 ; 0xf9c9a + mov cx, strict word 0001ch ; b9 1c 00 ; 0xf9c9c buslogic.c:158 + xor bx, bx ; 31 db ; 0xf9c9f + call 0aa30h ; e8 8c 0d ; 0xf9ca1 + mov cx, strict word 00004h ; b9 04 00 ; 0xf9ca4 buslogic.c:159 + xor bx, bx ; 31 db ; 0xf9ca7 + mov dx, ss ; 8c d2 ; 0xf9ca9 + lea ax, [bp-00eh] ; 8d 46 f2 ; 0xf9cab + call 0aa30h ; e8 7f 0d ; 0xf9cae + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9cb1 buslogic.c:161 + mov es, di ; 8e c7 ; 0xf9cb4 + mov word [es:si], ax ; 26 89 04 ; 0xf9cb6 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf9cb9 + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf9cbc + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9cc0 buslogic.c:162 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9cc3 + call 09be7h ; e8 1e ff ; 0xf9cc6 + mov es, di ; 8e c7 ; 0xf9cc9 + mov word [es:si+004h], ax ; 26 89 44 04 ; 0xf9ccb + mov word [es:si+006h], dx ; 26 89 54 06 ; 0xf9ccf + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9cd3 buslogic.c:163 + mov byte [es:si+008h], al ; 26 88 44 08 ; 0xf9cd6 + mov byte [es:si+009h], 000h ; 26 c6 44 09 00 ; 0xf9cda buslogic.c:164 + and byte [es:si+00ah], 0e7h ; 26 80 64 0a e7 ; 0xf9cdf buslogic.c:165 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9ce4 buslogic.c:166 + mov byte [es:si+00bh], al ; 26 88 44 0b ; 0xf9ce7 + xor si, si ; 31 f6 ; 0xf9ceb buslogic.c:168 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9ced + xor ah, ah ; 30 e4 ; 0xf9cf0 + cmp si, ax ; 39 c6 ; 0xf9cf2 + jnl short 09d0eh ; 7d 18 ; 0xf9cf4 + les bx, [bp+004h] ; c4 5e 04 ; 0xf9cf6 buslogic.c:169 + add bx, si ; 01 f3 ; 0xf9cf9 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9cfb + add dx, si ; 01 f2 ; 0xf9cfe + mov al, byte [es:bx] ; 26 8a 07 ; 0xf9d00 + mov es, di ; 8e c7 ; 0xf9d03 + mov bx, dx ; 89 d3 ; 0xf9d05 + mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf9d07 + inc si ; 46 ; 0xf9d0b + jmp short 09cedh ; eb df ; 0xf9d0c + push strict byte 00004h ; 6a 04 ; 0xf9d0e buslogic.c:171 + lea dx, [bp-00eh] ; 8d 56 f2 ; 0xf9d10 + push SS ; 16 ; 0xf9d13 + push dx ; 52 ; 0xf9d14 + add ax, strict word 0000ch ; 05 0c 00 ; 0xf9d15 + push ax ; 50 ; 0xf9d18 + push di ; 57 ; 0xf9d19 + push word [bp-00ah] ; ff 76 f6 ; 0xf9d1a + mov bx, 00083h ; bb 83 00 ; 0xf9d1d + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9d20 + mov dx, di ; 89 fa ; 0xf9d23 + call 09c05h ; e8 dd fe ; 0xf9d25 + test ax, ax ; 85 c0 ; 0xf9d28 buslogic.c:173 + jne short 09d31h ; 75 05 ; 0xf9d2a + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf9d2c buslogic.c:174 + xor ah, ah ; 30 e4 ; 0xf9d2f + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9d31 buslogic.c:177 + pop di ; 5f ; 0xf9d34 + pop si ; 5e ; 0xf9d35 + pop cx ; 59 ; 0xf9d36 + pop bp ; 5d ; 0xf9d37 + retn 0000eh ; c2 0e 00 ; 0xf9d38 + ; disGetNextSymbol 0xf9d3b LB 0x101d -> off=0x0 cb=00000000000000b2 uValue=00000000000f873b 'buslogic_scsi_cmd_data_in' +buslogic_scsi_cmd_data_in: ; 0xf9d3b LB 0xb2 + push bp ; 55 ; 0xf9d3b buslogic.c:179 + mov bp, sp ; 89 e5 ; 0xf9d3c + push cx ; 51 ; 0xf9d3e + push si ; 56 ; 0xf9d3f + push di ; 57 ; 0xf9d40 + sub sp, strict byte 00008h ; 83 ec 08 ; 0xf9d41 + mov si, ax ; 89 c6 ; 0xf9d44 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9d46 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf9d49 buslogic.c:182 + mov di, dx ; 89 d7 ; 0xf9d4c + mov cx, strict word 0001ch ; b9 1c 00 ; 0xf9d4e buslogic.c:189 + xor bx, bx ; 31 db ; 0xf9d51 + call 0aa30h ; e8 da 0c ; 0xf9d53 + mov cx, strict word 00004h ; b9 04 00 ; 0xf9d56 buslogic.c:190 + xor bx, bx ; 31 db ; 0xf9d59 + mov dx, ss ; 8c d2 ; 0xf9d5b + lea ax, [bp-00eh] ; 8d 46 f2 ; 0xf9d5d + call 0aa30h ; e8 cd 0c ; 0xf9d60 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9d63 buslogic.c:192 + mov es, di ; 8e c7 ; 0xf9d66 + mov word [es:si], ax ; 26 89 04 ; 0xf9d68 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf9d6b + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf9d6e + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9d72 buslogic.c:193 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9d75 + call 09be7h ; e8 6c fe ; 0xf9d78 + mov es, di ; 8e c7 ; 0xf9d7b + mov word [es:si+004h], ax ; 26 89 44 04 ; 0xf9d7d + mov word [es:si+006h], dx ; 26 89 54 06 ; 0xf9d81 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9d85 buslogic.c:194 + mov byte [es:si+008h], al ; 26 88 44 08 ; 0xf9d88 + mov byte [es:si+009h], 000h ; 26 c6 44 09 00 ; 0xf9d8c buslogic.c:195 + and byte [es:si+00ah], 0e7h ; 26 80 64 0a e7 ; 0xf9d91 buslogic.c:196 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9d96 buslogic.c:197 + mov byte [es:si+00bh], al ; 26 88 44 0b ; 0xf9d99 + xor si, si ; 31 f6 ; 0xf9d9d buslogic.c:199 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9d9f + xor ah, ah ; 30 e4 ; 0xf9da2 + cmp si, ax ; 39 c6 ; 0xf9da4 + jnl short 09dc0h ; 7d 18 ; 0xf9da6 + les bx, [bp+004h] ; c4 5e 04 ; 0xf9da8 buslogic.c:200 + add bx, si ; 01 f3 ; 0xf9dab + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9dad + add dx, si ; 01 f2 ; 0xf9db0 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf9db2 + mov es, di ; 8e c7 ; 0xf9db5 + mov bx, dx ; 89 d3 ; 0xf9db7 + mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf9db9 + inc si ; 46 ; 0xf9dbd + jmp short 09d9fh ; eb df ; 0xf9dbe + push strict byte 00004h ; 6a 04 ; 0xf9dc0 buslogic.c:202 + lea dx, [bp-00eh] ; 8d 56 f2 ; 0xf9dc2 + push SS ; 16 ; 0xf9dc5 + push dx ; 52 ; 0xf9dc6 + add ax, strict word 0000ch ; 05 0c 00 ; 0xf9dc7 + push ax ; 50 ; 0xf9dca + push di ; 57 ; 0xf9dcb + push word [bp-00ah] ; ff 76 f6 ; 0xf9dcc + mov bx, 00083h ; bb 83 00 ; 0xf9dcf + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9dd2 + mov dx, di ; 89 fa ; 0xf9dd5 + call 09c05h ; e8 2b fe ; 0xf9dd7 + test ax, ax ; 85 c0 ; 0xf9dda buslogic.c:204 + jne short 09de3h ; 75 05 ; 0xf9ddc + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf9dde buslogic.c:205 + xor ah, ah ; 30 e4 ; 0xf9de1 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9de3 buslogic.c:208 + pop di ; 5f ; 0xf9de6 + pop si ; 5e ; 0xf9de7 + pop cx ; 59 ; 0xf9de8 + pop bp ; 5d ; 0xf9de9 + retn 0000eh ; c2 0e 00 ; 0xf9dea + ; disGetNextSymbol 0xf9ded LB 0xf6b -> off=0x0 cb=0000000000000022 uValue=00000000000f87ed 'buslogic_scsi_hba_init' +buslogic_scsi_hba_init: ; 0xf9ded LB 0x22 + push bp ; 55 ; 0xf9ded buslogic.c:213 + mov bp, sp ; 89 e5 ; 0xf9dee + push bx ; 53 ; 0xf9df0 + mov bx, ax ; 89 c3 ; 0xf9df1 + mov es, dx ; 8e c2 ; 0xf9df3 + mov dx, word [es:bx+01ch] ; 26 8b 57 1c ; 0xf9df5 buslogic.c:216 + mov AL, strict byte 080h ; b0 80 ; 0xf9df9 + out DX, AL ; ee ; 0xf9dfb + mov dx, word [es:bx+01ch] ; 26 8b 57 1c ; 0xf9dfc buslogic.c:217 + in AL, DX ; ec ; 0xf9e00 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf9e01 + test AL, strict byte 010h ; a8 10 ; 0xf9e03 + je short 09dfch ; 74 f5 ; 0xf9e05 + xor ax, ax ; 31 c0 ; 0xf9e07 buslogic.c:220 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf9e09 + pop bx ; 5b ; 0xf9e0c + pop bp ; 5d ; 0xf9e0d + retn ; c3 ; 0xf9e0e + ; disGetNextSymbol 0xf9e0f LB 0xf49 -> off=0x0 cb=0000000000000058 uValue=00000000000f880f 'buslogic_scsi_init' +buslogic_scsi_init: ; 0xf9e0f LB 0x58 + push bp ; 55 ; 0xf9e0f buslogic.c:225 + mov bp, sp ; 89 e5 ; 0xf9e10 + push si ; 56 ; 0xf9e12 + push di ; 57 ; 0xf9e13 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf9e14 + mov si, ax ; 89 c6 ; 0xf9e17 + mov word [bp-008h], dx ; 89 56 f8 ; 0xf9e19 + mov byte [bp-006h], cl ; 88 4e fa ; 0xf9e1c buslogic.c:232 + xor al, al ; 30 c0 ; 0xf9e1f + mov byte [bp-005h], al ; 88 46 fb ; 0xf9e21 + mov byte [bp-00ah], bl ; 88 5e f6 ; 0xf9e24 + mov byte [bp-009h], al ; 88 46 f7 ; 0xf9e27 + mov bx, strict word 00010h ; bb 10 00 ; 0xf9e2a + mov dx, word [bp-006h] ; 8b 56 fa ; 0xf9e2d + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9e30 + call 0a7f7h ; e8 c1 09 ; 0xf9e33 + test AL, strict byte 001h ; a8 01 ; 0xf9e36 buslogic.c:236 + je short 09e5dh ; 74 23 ; 0xf9e38 + and AL, strict byte 0f0h ; 24 f0 ; 0xf9e3a buslogic.c:238 + mov di, ax ; 89 c7 ; 0xf9e3c + mov cx, strict word 00007h ; b9 07 00 ; 0xf9e3e buslogic.c:241 + mov bx, strict word 00004h ; bb 04 00 ; 0xf9e41 + mov dx, word [bp-006h] ; 8b 56 fa ; 0xf9e44 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9e47 + call 0a845h ; e8 f8 09 ; 0xf9e4a + mov es, [bp-008h] ; 8e 46 f8 ; 0xf9e4d buslogic.c:244 + mov word [es:si+01ch], di ; 26 89 7c 1c ; 0xf9e50 + mov ax, si ; 89 f0 ; 0xf9e54 buslogic.c:245 + mov dx, es ; 8c c2 ; 0xf9e56 + call 09dedh ; e8 92 ff ; 0xf9e58 + jmp short 09e60h ; eb 03 ; 0xf9e5b + mov ax, strict word 00001h ; b8 01 00 ; 0xf9e5d buslogic.c:250 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9e60 buslogic.c:251 + pop di ; 5f ; 0xf9e63 + pop si ; 5e ; 0xf9e64 + pop bp ; 5d ; 0xf9e65 + retn ; c3 ; 0xf9e66 + ; disGetNextSymbol 0xf9e67 LB 0xef1 -> off=0x0 cb=000000000000001e uValue=00000000000f8867 'lsilogic_addr_to_phys' +lsilogic_addr_to_phys: ; 0xf9e67 LB 0x1e + push bx ; 53 ; 0xf9e67 lsilogic.c:331 + push cx ; 51 ; 0xf9e68 + push bp ; 55 ; 0xf9e69 + mov bp, sp ; 89 e5 ; 0xf9e6a + mov bx, ax ; 89 c3 ; 0xf9e6c + mov ax, dx ; 89 d0 ; 0xf9e6e + xor dx, dx ; 31 d2 ; 0xf9e70 lsilogic.c:333 + mov cx, strict word 00004h ; b9 04 00 ; 0xf9e72 + sal ax, 1 ; d1 e0 ; 0xf9e75 + rcl dx, 1 ; d1 d2 ; 0xf9e77 + loop 09e75h ; e2 fa ; 0xf9e79 + xor cx, cx ; 31 c9 ; 0xf9e7b + add ax, bx ; 01 d8 ; 0xf9e7d + adc dx, cx ; 11 ca ; 0xf9e7f + pop bp ; 5d ; 0xf9e81 lsilogic.c:334 + pop cx ; 59 ; 0xf9e82 + pop bx ; 5b ; 0xf9e83 + retn ; c3 ; 0xf9e84 + ; disGetNextSymbol 0xf9e85 LB 0xed3 -> off=0x0 cb=00000000000000f6 uValue=00000000000f8885 'lsilogic_cmd' +lsilogic_cmd: ; 0xf9e85 LB 0xf6 + push bp ; 55 ; 0xf9e85 lsilogic.c:336 + mov bp, sp ; 89 e5 ; 0xf9e86 + push si ; 56 ; 0xf9e88 + push di ; 57 ; 0xf9e89 + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf9e8a + mov si, ax ; 89 c6 ; 0xf9e8d + mov word [bp-006h], dx ; 89 56 fa ; 0xf9e8f + mov word [bp-00ah], bx ; 89 5e f6 ; 0xf9e92 lsilogic.c:340 + mov word [bp-014h], cx ; 89 4e ec ; 0xf9e95 + mov [bp-00ch], ds ; 8c 5e f4 ; 0xf9e98 lsilogic.c:341 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf9e9b + mov word [bp-012h], ax ; 89 46 ee ; 0xf9e9e + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf9ea1 lsilogic.c:342 + shr ax, 002h ; c1 e8 02 ; 0xf9ea4 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf9ea7 + mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf9eaa + mov dx, word [bp+00ah] ; 8b 56 0a ; 0xf9eaf lsilogic.c:343 + shr dx, 1 ; d1 ea ; 0xf9eb2 + mov word [bp-010h], dx ; 89 56 f0 ; 0xf9eb4 + or ah, 042h ; 80 cc 42 ; 0xf9eb7 lsilogic.c:344 + mov cx, ax ; 89 c1 ; 0xf9eba + test byte [bp+004h], 003h ; f6 46 04 03 ; 0xf9ebc lsilogic.c:346 + jne short 09ec8h ; 75 06 ; 0xf9ec0 + test byte [bp+00ah], 001h ; f6 46 0a 01 ; 0xf9ec2 + je short 09eceh ; 74 06 ; 0xf9ec6 + mov ax, strict word 00001h ; b8 01 00 ; 0xf9ec8 lsilogic.c:348 + jmp near 09f72h ; e9 a4 00 ; 0xf9ecb + mov es, [bp-006h] ; 8e 46 fa ; 0xf9ece lsilogic.c:350 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xf9ed1 + xor ax, ax ; 31 c0 ; 0xf9ed6 + xchg cx, ax ; 91 ; 0xf9ed8 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9ed9 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9edd + out DX, eax ; 66 ef ; 0xf9edf + xor bx, bx ; 31 db ; 0xf9ee1 lsilogic.c:351 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf9ee3 + test ax, ax ; 85 c0 ; 0xf9ee6 + jnbe short 09ef1h ; 77 07 ; 0xf9ee8 + jne short 09f17h ; 75 2b ; 0xf9eea + cmp bx, word [bp-00eh] ; 3b 5e f2 ; 0xf9eec + jnc short 09f17h ; 73 26 ; 0xf9eef + mov di, bx ; 89 df ; 0xf9ef1 lsilogic.c:352 + sal di, 002h ; c1 e7 02 ; 0xf9ef3 + mov es, [bp-014h] ; 8e 46 ec ; 0xf9ef6 + add di, word [bp-00ah] ; 03 7e f6 ; 0xf9ef9 + mov ax, word [es:di] ; 26 8b 05 ; 0xf9efc + mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf9eff + mov es, [bp-006h] ; 8e 46 fa ; 0xf9f03 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xf9f06 + xchg cx, ax ; 91 ; 0xf9f0b + sal eax, 010h ; 66 c1 e0 10 ; 0xf9f0c + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9f10 + out DX, eax ; 66 ef ; 0xf9f12 + inc bx ; 43 ; 0xf9f14 + jmp short 09ee3h ; eb cc ; 0xf9f15 + xor bx, bx ; 31 db ; 0xf9f17 lsilogic.c:354 + cmp bx, word [bp-010h] ; 3b 5e f0 ; 0xf9f19 + jnc short 09f70h ; 73 52 ; 0xf9f1c + mov es, [bp-006h] ; 8e 46 fa ; 0xf9f1e lsilogic.c:357 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xf9f21 + add dx, strict byte 00030h ; 83 c2 30 ; 0xf9f26 + in eax, DX ; 66 ed ; 0xf9f29 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9f2b + shr eax, 010h ; 66 c1 e8 10 ; 0xf9f2d + xchg dx, ax ; 92 ; 0xf9f31 + test AL, strict byte 001h ; a8 01 ; 0xf9f32 + je short 09f1eh ; 74 e8 ; 0xf9f34 + mov es, [bp-006h] ; 8e 46 fa ; 0xf9f36 lsilogic.c:359 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xf9f39 + in eax, DX ; 66 ed ; 0xf9f3e + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9f40 + shr eax, 010h ; 66 c1 e8 10 ; 0xf9f42 + xchg dx, ax ; 92 ; 0xf9f46 + mov di, bx ; 89 df ; 0xf9f47 + add di, bx ; 01 df ; 0xf9f49 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9f4b + add di, word [bp-012h] ; 03 7e ee ; 0xf9f4e + mov word [es:di], ax ; 26 89 05 ; 0xf9f51 + mov es, [bp-006h] ; 8e 46 fa ; 0xf9f54 lsilogic.c:360 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xf9f57 + add dx, strict byte 00030h ; 83 c2 30 ; 0xf9f5c + mov ax, strict word 00001h ; b8 01 00 ; 0xf9f5f + xor cx, cx ; 31 c9 ; 0xf9f62 + xchg cx, ax ; 91 ; 0xf9f64 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9f65 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9f69 + out DX, eax ; 66 ef ; 0xf9f6b + inc bx ; 43 ; 0xf9f6d lsilogic.c:361 + jmp short 09f19h ; eb a9 ; 0xf9f6e + xor ax, ax ; 31 c0 ; 0xf9f70 lsilogic.c:363 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9f72 lsilogic.c:364 + pop di ; 5f ; 0xf9f75 + pop si ; 5e ; 0xf9f76 + pop bp ; 5d ; 0xf9f77 + retn 00008h ; c2 08 00 ; 0xf9f78 + ; disGetNextSymbol 0xf9f7b LB 0xddd -> off=0x0 cb=00000000000000d7 uValue=00000000000f897b 'lsilogic_scsi_cmd_exec' +lsilogic_scsi_cmd_exec: ; 0xf9f7b LB 0xd7 + push bp ; 55 ; 0xf9f7b lsilogic.c:366 + mov bp, sp ; 89 e5 ; 0xf9f7c + push bx ; 53 ; 0xf9f7e + push cx ; 51 ; 0xf9f7f + push si ; 56 ; 0xf9f80 + push di ; 57 ; 0xf9f81 + push ax ; 50 ; 0xf9f82 + mov bx, ax ; 89 c3 ; 0xf9f83 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf9f85 + call 09e67h ; e8 dc fe ; 0xf9f88 lsilogic.c:372 + mov cx, dx ; 89 d1 ; 0xf9f8b + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9f8d + mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xf9f90 + add dx, strict byte 00040h ; 83 c2 40 ; 0xf9f95 + xchg cx, ax ; 91 ; 0xf9f98 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9f99 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9f9d + out DX, eax ; 66 ef ; 0xf9f9f + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9fa1 lsilogic.c:375 + mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xf9fa4 + add dx, strict byte 00030h ; 83 c2 30 ; 0xf9fa9 + in eax, DX ; 66 ed ; 0xf9fac + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9fae + shr eax, 010h ; 66 c1 e8 10 ; 0xf9fb0 + xchg dx, ax ; 92 ; 0xf9fb4 + test AL, strict byte 008h ; a8 08 ; 0xf9fb5 + je short 09fa1h ; 74 e8 ; 0xf9fb7 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9fb9 lsilogic.c:377 + mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xf9fbc + add dx, strict byte 00030h ; 83 c2 30 ; 0xf9fc1 + mov ax, strict word 00001h ; b8 01 00 ; 0xf9fc4 + xor cx, cx ; 31 c9 ; 0xf9fc7 + xchg cx, ax ; 91 ; 0xf9fc9 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9fca + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9fce + out DX, eax ; 66 ef ; 0xf9fd0 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9fd2 lsilogic.c:380 + mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xf9fd5 + add dx, strict byte 00044h ; 83 c2 44 ; 0xf9fda + in eax, DX ; 66 ed ; 0xf9fdd + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9fdf + shr eax, 010h ; 66 c1 e8 10 ; 0xf9fe1 + xchg dx, ax ; 92 ; 0xf9fe5 + mov cx, dx ; 89 d1 ; 0xf9fe6 + mov di, ax ; 89 c7 ; 0xf9fe8 + mov si, dx ; 89 d6 ; 0xf9fea + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9fec lsilogic.c:381 + mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xf9fef + add dx, strict byte 00044h ; 83 c2 44 ; 0xf9ff4 + in eax, DX ; 66 ed ; 0xf9ff7 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9ff9 + shr eax, 010h ; 66 c1 e8 10 ; 0xf9ffb + xchg dx, ax ; 92 ; 0xf9fff + cmp dx, strict byte 0ffffh ; 83 fa ff ; 0xfa000 lsilogic.c:382 + jne short 0a00ah ; 75 05 ; 0xfa003 + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa005 + je short 0a00fh ; 74 05 ; 0xfa008 + mov ax, strict word 00005h ; b8 05 00 ; 0xfa00a lsilogic.c:383 + jmp short 0a049h ; eb 3a ; 0xfa00d + test ch, 080h ; f6 c5 80 ; 0xfa00f lsilogic.c:384 + je short 0a038h ; 74 24 ; 0xfa012 + lea ax, [bx+038h] ; 8d 47 38 ; 0xfa014 lsilogic.c:392 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xfa017 + call 09e67h ; e8 4a fe ; 0xfa01a + mov cx, dx ; 89 d1 ; 0xfa01d + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa01f + mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa022 + add dx, strict byte 00044h ; 83 c2 44 ; 0xfa027 + xchg cx, ax ; 91 ; 0xfa02a + sal eax, 010h ; 66 c1 e0 10 ; 0xfa02b + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa02f + out DX, eax ; 66 ef ; 0xfa031 + mov ax, strict word 00004h ; b8 04 00 ; 0xfa033 lsilogic.c:393 + jmp short 0a049h ; eb 11 ; 0xfa036 + test si, si ; 85 f6 ; 0xfa038 lsilogic.c:396 + jne short 0a042h ; 75 06 ; 0xfa03a + cmp di, 0cafeh ; 81 ff fe ca ; 0xfa03c + je short 0a047h ; 74 05 ; 0xfa040 + mov ax, strict word 00003h ; b8 03 00 ; 0xfa042 lsilogic.c:397 + jmp short 0a049h ; eb 02 ; 0xfa045 + xor ax, ax ; 31 c0 ; 0xfa047 lsilogic.c:399 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xfa049 lsilogic.c:400 + pop di ; 5f ; 0xfa04c + pop si ; 5e ; 0xfa04d + pop cx ; 59 ; 0xfa04e + pop bx ; 5b ; 0xfa04f + pop bp ; 5d ; 0xfa050 + retn ; c3 ; 0xfa051 + ; disGetNextSymbol 0xfa052 LB 0xd06 -> off=0x0 cb=00000000000000e0 uValue=00000000000f8a52 'lsilogic_scsi_cmd_data_out' +lsilogic_scsi_cmd_data_out: ; 0xfa052 LB 0xe0 + push bp ; 55 ; 0xfa052 lsilogic.c:402 + mov bp, sp ; 89 e5 ; 0xfa053 + push cx ; 51 ; 0xfa055 + push si ; 56 ; 0xfa056 + push di ; 57 ; 0xfa057 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa058 + mov di, ax ; 89 c7 ; 0xfa05b + mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa05d + mov byte [bp-008h], bl ; 88 5e f8 ; 0xfa060 + mov si, ax ; 89 c6 ; 0xfa063 lsilogic.c:405 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xfa065 + mov cx, strict word 00030h ; b9 30 00 ; 0xfa068 lsilogic.c:408 + xor bx, bx ; 31 db ; 0xfa06b + call 0aa30h ; e8 c0 09 ; 0xfa06d + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa070 lsilogic.c:410 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa073 + mov byte [es:di], al ; 26 88 05 ; 0xfa076 + mov word [es:di+001h], strict word 00000h ; 26 c7 45 01 00 00 ; 0xfa079 lsilogic.c:411 + mov byte [es:di+003h], 000h ; 26 c6 45 03 00 ; 0xfa07f lsilogic.c:413 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa084 lsilogic.c:414 + mov byte [es:di+004h], al ; 26 88 45 04 ; 0xfa087 + mov byte [es:di+005h], 000h ; 26 c6 45 05 00 ; 0xfa08b lsilogic.c:415 + mov word [es:di+008h], 0cafeh ; 26 c7 45 08 fe ca ; 0xfa090 lsilogic.c:416 + mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xfa096 + mov word [es:di+014h], strict word 00000h ; 26 c7 45 14 00 00 ; 0xfa09c lsilogic.c:417 + mov word [es:di+016h], 00100h ; 26 c7 45 16 00 01 ; 0xfa0a2 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xfa0a8 lsilogic.c:418 + mov word [es:di+028h], ax ; 26 89 45 28 ; 0xfa0ab + mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa0af + mov word [es:di+02ah], ax ; 26 89 45 2a ; 0xfa0b2 + xor di, di ; 31 ff ; 0xfa0b6 lsilogic.c:419 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa0b8 + xor ah, ah ; 30 e4 ; 0xfa0bb + cmp di, ax ; 39 c7 ; 0xfa0bd + jnl short 0a0dbh ; 7d 1a ; 0xfa0bf + les bx, [bp+004h] ; c4 5e 04 ; 0xfa0c1 lsilogic.c:420 + add bx, di ; 01 fb ; 0xfa0c4 + mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xfa0c6 + mov dx, si ; 89 f2 ; 0xfa0c9 + add dx, di ; 01 fa ; 0xfa0cb + mov al, byte [es:bx] ; 26 8a 07 ; 0xfa0cd + mov es, cx ; 8e c1 ; 0xfa0d0 + mov bx, dx ; 89 d3 ; 0xfa0d2 + mov byte [es:bx+018h], al ; 26 88 47 18 ; 0xfa0d4 + inc di ; 47 ; 0xfa0d8 + jmp short 0a0b8h ; eb dd ; 0xfa0d9 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa0db lsilogic.c:422 + xor ah, ah ; 30 e4 ; 0xfa0de + mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa0e0 + mov word [es:si+030h], strict word 00000h ; 26 c7 44 30 00 00 ; 0xfa0e3 + mov byte [es:si+032h], ah ; 26 88 64 32 ; 0xfa0e9 + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xfa0ed + or word [es:si+030h], dx ; 26 09 54 30 ; 0xfa0f0 + or word [es:si+032h], ax ; 26 09 44 32 ; 0xfa0f4 + mov byte [es:si+033h], ah ; 26 88 64 33 ; 0xfa0f8 lsilogic.c:423 + or byte [es:si+033h], 0d1h ; 26 80 4c 33 d1 ; 0xfa0fc + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xfa101 lsilogic.c:430 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xfa104 + call 09e67h ; e8 5d fd ; 0xfa107 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa10a + mov word [es:si+034h], strict word 00000h ; 26 c7 44 34 00 00 ; 0xfa10d + mov word [es:si+036h], strict word 00000h ; 26 c7 44 36 00 00 ; 0xfa113 + or word [es:si+034h], ax ; 26 09 44 34 ; 0xfa119 + or word [es:si+036h], dx ; 26 09 54 36 ; 0xfa11d + mov ax, si ; 89 f0 ; 0xfa121 lsilogic.c:432 + mov dx, es ; 8c c2 ; 0xfa123 + call 09f7bh ; e8 53 fe ; 0xfa125 + lea sp, [bp-006h] ; 8d 66 fa ; 0xfa128 lsilogic.c:433 + pop di ; 5f ; 0xfa12b + pop si ; 5e ; 0xfa12c + pop cx ; 59 ; 0xfa12d + pop bp ; 5d ; 0xfa12e + retn 0000eh ; c2 0e 00 ; 0xfa12f + ; disGetNextSymbol 0xfa132 LB 0xc26 -> off=0x0 cb=00000000000000e0 uValue=00000000000f8b32 'lsilogic_scsi_cmd_data_in' +lsilogic_scsi_cmd_data_in: ; 0xfa132 LB 0xe0 + push bp ; 55 ; 0xfa132 lsilogic.c:435 + mov bp, sp ; 89 e5 ; 0xfa133 + push cx ; 51 ; 0xfa135 + push si ; 56 ; 0xfa136 + push di ; 57 ; 0xfa137 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa138 + mov di, ax ; 89 c7 ; 0xfa13b + mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa13d + mov byte [bp-008h], bl ; 88 5e f8 ; 0xfa140 + mov si, ax ; 89 c6 ; 0xfa143 lsilogic.c:438 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xfa145 + mov cx, strict word 00030h ; b9 30 00 ; 0xfa148 lsilogic.c:441 + xor bx, bx ; 31 db ; 0xfa14b + call 0aa30h ; e8 e0 08 ; 0xfa14d + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa150 lsilogic.c:443 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa153 + mov byte [es:di], al ; 26 88 05 ; 0xfa156 + mov word [es:di+001h], strict word 00000h ; 26 c7 45 01 00 00 ; 0xfa159 lsilogic.c:444 + mov byte [es:di+003h], 000h ; 26 c6 45 03 00 ; 0xfa15f lsilogic.c:446 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa164 lsilogic.c:447 + mov byte [es:di+004h], al ; 26 88 45 04 ; 0xfa167 + mov byte [es:di+005h], 000h ; 26 c6 45 05 00 ; 0xfa16b lsilogic.c:448 + mov word [es:di+008h], 0cafeh ; 26 c7 45 08 fe ca ; 0xfa170 lsilogic.c:449 + mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xfa176 + mov word [es:di+014h], strict word 00000h ; 26 c7 45 14 00 00 ; 0xfa17c lsilogic.c:450 + mov word [es:di+016h], 00200h ; 26 c7 45 16 00 02 ; 0xfa182 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xfa188 lsilogic.c:451 + mov word [es:di+028h], ax ; 26 89 45 28 ; 0xfa18b + mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa18f + mov word [es:di+02ah], ax ; 26 89 45 2a ; 0xfa192 + xor di, di ; 31 ff ; 0xfa196 lsilogic.c:452 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa198 + xor ah, ah ; 30 e4 ; 0xfa19b + cmp di, ax ; 39 c7 ; 0xfa19d + jnl short 0a1bbh ; 7d 1a ; 0xfa19f + les bx, [bp+004h] ; c4 5e 04 ; 0xfa1a1 lsilogic.c:453 + add bx, di ; 01 fb ; 0xfa1a4 + mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xfa1a6 + mov dx, si ; 89 f2 ; 0xfa1a9 + add dx, di ; 01 fa ; 0xfa1ab + mov al, byte [es:bx] ; 26 8a 07 ; 0xfa1ad + mov es, cx ; 8e c1 ; 0xfa1b0 + mov bx, dx ; 89 d3 ; 0xfa1b2 + mov byte [es:bx+018h], al ; 26 88 47 18 ; 0xfa1b4 + inc di ; 47 ; 0xfa1b8 + jmp short 0a198h ; eb dd ; 0xfa1b9 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa1bb lsilogic.c:455 + xor ah, ah ; 30 e4 ; 0xfa1be + mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa1c0 + mov word [es:si+030h], strict word 00000h ; 26 c7 44 30 00 00 ; 0xfa1c3 + mov byte [es:si+032h], ah ; 26 88 64 32 ; 0xfa1c9 + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xfa1cd + or word [es:si+030h], dx ; 26 09 54 30 ; 0xfa1d0 + or word [es:si+032h], ax ; 26 09 44 32 ; 0xfa1d4 + mov byte [es:si+033h], ah ; 26 88 64 33 ; 0xfa1d8 lsilogic.c:456 + or byte [es:si+033h], 0d1h ; 26 80 4c 33 d1 ; 0xfa1dc + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xfa1e1 lsilogic.c:463 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xfa1e4 + call 09e67h ; e8 7d fc ; 0xfa1e7 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa1ea + mov word [es:si+034h], strict word 00000h ; 26 c7 44 34 00 00 ; 0xfa1ed + mov word [es:si+036h], strict word 00000h ; 26 c7 44 36 00 00 ; 0xfa1f3 + or word [es:si+034h], ax ; 26 09 44 34 ; 0xfa1f9 + or word [es:si+036h], dx ; 26 09 54 36 ; 0xfa1fd + mov ax, si ; 89 f0 ; 0xfa201 lsilogic.c:465 + mov dx, es ; 8c c2 ; 0xfa203 + call 09f7bh ; e8 73 fd ; 0xfa205 + lea sp, [bp-006h] ; 8d 66 fa ; 0xfa208 lsilogic.c:466 + pop di ; 5f ; 0xfa20b + pop si ; 5e ; 0xfa20c + pop cx ; 59 ; 0xfa20d + pop bp ; 5d ; 0xfa20e + retn 0000eh ; c2 0e 00 ; 0xfa20f + ; disGetNextSymbol 0xfa212 LB 0xb46 -> off=0x0 cb=00000000000000f1 uValue=00000000000f8c12 'lsilogic_scsi_hba_init' +lsilogic_scsi_hba_init: ; 0xfa212 LB 0xf1 + push bp ; 55 ; 0xfa212 lsilogic.c:471 + mov bp, sp ; 89 e5 ; 0xfa213 + push bx ; 53 ; 0xfa215 + push cx ; 51 ; 0xfa216 + push si ; 56 ; 0xfa217 + push di ; 57 ; 0xfa218 + sub sp, strict byte 0002ch ; 83 ec 2c ; 0xfa219 + mov si, ax ; 89 c6 ; 0xfa21c + mov di, dx ; 89 d7 ; 0xfa21e + mov es, dx ; 8e c2 ; 0xfa220 lsilogic.c:483 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa222 + add dx, strict byte 00004h ; 83 c2 04 ; 0xfa227 + mov ax, strict word 00004h ; b8 04 00 ; 0xfa22a + xor cx, cx ; 31 c9 ; 0xfa22d + xchg cx, ax ; 91 ; 0xfa22f + sal eax, 010h ; 66 c1 e0 10 ; 0xfa230 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa234 + out DX, eax ; 66 ef ; 0xfa236 + mov es, di ; 8e c7 ; 0xfa238 lsilogic.c:484 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa23a + add dx, strict byte 00004h ; 83 c2 04 ; 0xfa23f + mov ax, strict word 00002h ; b8 02 00 ; 0xfa242 + xor cx, cx ; 31 c9 ; 0xfa245 + xchg cx, ax ; 91 ; 0xfa247 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa248 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa24c + out DX, eax ; 66 ef ; 0xfa24e + mov es, di ; 8e c7 ; 0xfa250 lsilogic.c:485 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa252 + add dx, strict byte 00004h ; 83 c2 04 ; 0xfa257 + mov ax, strict word 00007h ; b8 07 00 ; 0xfa25a + xor cx, cx ; 31 c9 ; 0xfa25d + xchg cx, ax ; 91 ; 0xfa25f + sal eax, 010h ; 66 c1 e0 10 ; 0xfa260 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa264 + out DX, eax ; 66 ef ; 0xfa266 + mov es, di ; 8e c7 ; 0xfa268 lsilogic.c:486 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa26a + add dx, strict byte 00004h ; 83 c2 04 ; 0xfa26f + mov ax, strict word 0000dh ; b8 0d 00 ; 0xfa272 + xor cx, cx ; 31 c9 ; 0xfa275 + xchg cx, ax ; 91 ; 0xfa277 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa278 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa27c + out DX, eax ; 66 ef ; 0xfa27e + mov es, di ; 8e c7 ; 0xfa280 lsilogic.c:487 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa282 + add dx, strict byte 00008h ; 83 c2 08 ; 0xfa287 + mov ax, strict word 00004h ; b8 04 00 ; 0xfa28a + xor cx, cx ; 31 c9 ; 0xfa28d + xchg cx, ax ; 91 ; 0xfa28f + sal eax, 010h ; 66 c1 e0 10 ; 0xfa290 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa294 + out DX, eax ; 66 ef ; 0xfa296 + mov byte [bp-034h], 001h ; c6 46 cc 01 ; 0xfa298 lsilogic.c:489 + mov byte [bp-031h], 002h ; c6 46 cf 02 ; 0xfa29c lsilogic.c:490 + xor ax, ax ; 31 c0 ; 0xfa2a0 lsilogic.c:491 + mov word [bp-024h], ax ; 89 46 dc ; 0xfa2a2 + mov word [bp-022h], ax ; 89 46 de ; 0xfa2a5 + mov word [bp-020h], ax ; 89 46 e0 ; 0xfa2a8 lsilogic.c:492 + mov word [bp-01eh], ax ; 89 46 e2 ; 0xfa2ab + mov byte [bp-02eh], 001h ; c6 46 d2 01 ; 0xfa2ae lsilogic.c:493 + mov byte [bp-02fh], 004h ; c6 46 d1 04 ; 0xfa2b2 lsilogic.c:494 + mov word [bp-028h], 00080h ; c7 46 d8 80 00 ; 0xfa2b6 lsilogic.c:495 + push strict byte 00014h ; 6a 14 ; 0xfa2bb lsilogic.c:496 + lea dx, [bp-01ch] ; 8d 56 e4 ; 0xfa2bd + push SS ; 16 ; 0xfa2c0 + push dx ; 52 ; 0xfa2c1 + push strict byte 00018h ; 6a 18 ; 0xfa2c2 + mov cx, ss ; 8c d1 ; 0xfa2c4 + lea bx, [bp-034h] ; 8d 5e cc ; 0xfa2c6 + mov ax, si ; 89 f0 ; 0xfa2c9 + mov dx, di ; 89 fa ; 0xfa2cb + call 09e85h ; e8 b5 fb ; 0xfa2cd + test ax, ax ; 85 c0 ; 0xfa2d0 lsilogic.c:497 + jne short 0a2f7h ; 75 23 ; 0xfa2d2 + lea ax, [si+038h] ; 8d 44 38 ; 0xfa2d4 lsilogic.c:500 + mov dx, di ; 89 fa ; 0xfa2d7 + call 09e67h ; e8 8b fb ; 0xfa2d9 + mov es, di ; 8e c7 ; 0xfa2dc + mov si, word [es:si+000b8h] ; 26 8b b4 b8 00 ; 0xfa2de + add si, strict byte 00044h ; 83 c6 44 ; 0xfa2e3 + mov cx, dx ; 89 d1 ; 0xfa2e6 + mov dx, si ; 89 f2 ; 0xfa2e8 + xchg cx, ax ; 91 ; 0xfa2ea + sal eax, 010h ; 66 c1 e0 10 ; 0xfa2eb + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa2ef + out DX, eax ; 66 ef ; 0xfa2f1 + xor ax, ax ; 31 c0 ; 0xfa2f3 lsilogic.c:501 + jmp short 0a2fah ; eb 03 ; 0xfa2f5 + mov ax, strict word 00001h ; b8 01 00 ; 0xfa2f7 lsilogic.c:504 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xfa2fa lsilogic.c:505 + pop di ; 5f ; 0xfa2fd + pop si ; 5e ; 0xfa2fe + pop cx ; 59 ; 0xfa2ff + pop bx ; 5b ; 0xfa300 + pop bp ; 5d ; 0xfa301 + retn ; c3 ; 0xfa302 + ; disGetNextSymbol 0xfa303 LB 0xa55 -> off=0x0 cb=0000000000000059 uValue=00000000000f8d03 'lsilogic_scsi_init' +lsilogic_scsi_init: ; 0xfa303 LB 0x59 + push bp ; 55 ; 0xfa303 lsilogic.c:510 + mov bp, sp ; 89 e5 ; 0xfa304 + push si ; 56 ; 0xfa306 + push di ; 57 ; 0xfa307 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa308 + mov si, ax ; 89 c6 ; 0xfa30b + mov word [bp-008h], dx ; 89 56 f8 ; 0xfa30d + mov byte [bp-006h], cl ; 88 4e fa ; 0xfa310 lsilogic.c:517 + xor al, al ; 30 c0 ; 0xfa313 + mov byte [bp-005h], al ; 88 46 fb ; 0xfa315 + mov byte [bp-00ah], bl ; 88 5e f6 ; 0xfa318 + mov byte [bp-009h], al ; 88 46 f7 ; 0xfa31b + mov bx, strict word 00010h ; bb 10 00 ; 0xfa31e + mov dx, word [bp-006h] ; 8b 56 fa ; 0xfa321 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa324 + call 0a7f7h ; e8 cd 04 ; 0xfa327 + test AL, strict byte 001h ; a8 01 ; 0xfa32a lsilogic.c:521 + je short 0a352h ; 74 24 ; 0xfa32c + and AL, strict byte 0f0h ; 24 f0 ; 0xfa32e lsilogic.c:523 + mov di, ax ; 89 c7 ; 0xfa330 + mov cx, strict word 00007h ; b9 07 00 ; 0xfa332 lsilogic.c:526 + mov bx, strict word 00004h ; bb 04 00 ; 0xfa335 + mov dx, word [bp-006h] ; 8b 56 fa ; 0xfa338 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa33b + call 0a845h ; e8 04 05 ; 0xfa33e + mov es, [bp-008h] ; 8e 46 f8 ; 0xfa341 lsilogic.c:529 + mov word [es:si+000b8h], di ; 26 89 bc b8 00 ; 0xfa344 + mov ax, si ; 89 f0 ; 0xfa349 lsilogic.c:530 + mov dx, es ; 8c c2 ; 0xfa34b + call 0a212h ; e8 c2 fe ; 0xfa34d + jmp short 0a355h ; eb 03 ; 0xfa350 + mov ax, strict word 00001h ; b8 01 00 ; 0xfa352 lsilogic.c:535 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa355 lsilogic.c:536 + pop di ; 5f ; 0xfa358 + pop si ; 5e ; 0xfa359 + pop bp ; 5d ; 0xfa35a + retn ; c3 ; 0xfa35b + ; disGetNextSymbol 0xfa35c LB 0x9fc -> off=0x0 cb=0000000000000020 uValue=00000000000f8d5c 'apm_out_str' +apm_out_str: ; 0xfa35c LB 0x20 + push bp ; 55 ; 0xfa35c apm.c:142 + mov bp, sp ; 89 e5 ; 0xfa35d + push bx ; 53 ; 0xfa35f + push dx ; 52 ; 0xfa360 + mov bx, ax ; 89 c3 ; 0xfa361 + cmp byte [bx], 000h ; 80 3f 00 ; 0xfa363 apm.c:144 + je short 0a375h ; 74 0d ; 0xfa366 + mov dx, 0040fh ; ba 0f 04 ; 0xfa368 apm.c:145 + mov al, byte [bx] ; 8a 07 ; 0xfa36b + out DX, AL ; ee ; 0xfa36d + inc bx ; 43 ; 0xfa36e + mov al, byte [bx] ; 8a 07 ; 0xfa36f + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xfa371 + jne short 0a36dh ; 75 f8 ; 0xfa373 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa375 apm.c:146 + pop dx ; 5a ; 0xfa378 + pop bx ; 5b ; 0xfa379 + pop bp ; 5d ; 0xfa37a + retn ; c3 ; 0xfa37b + ; disGetNextSymbol 0xfa37c LB 0x9dc -> off=0x1e cb=00000000000000cf uValue=00000000000f8d9a 'apm_function' + db 0bah, 0a3h, 065h, 0a4h, 0cch, 0a3h, 03ah, 0a4h, 065h, 0a4h, 0e7h, 0a3h, 065h, 0a4h, 0ech, 0a3h + db 03ah, 0a4h, 03ah, 0a4h, 024h, 0a4h, 035h, 0a4h, 03ah, 0a4h, 03ah, 0a4h, 01dh, 0a4h +apm_function: ; 0xfa39a LB 0xcf + push bp ; 55 ; 0xfa39a apm.c:148 + mov bp, sp ; 89 e5 ; 0xfa39b + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xfa39d apm.c:152 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xfa3a1 apm.c:153 + xor ah, ah ; 30 e4 ; 0xfa3a4 + cmp ax, strict word 0000eh ; 3d 0e 00 ; 0xfa3a6 + jnbe short 0a410h ; 77 65 ; 0xfa3a9 + mov bx, ax ; 89 c3 ; 0xfa3ab + add bx, ax ; 01 c3 ; 0xfa3ad + mov dx, word [bp+018h] ; 8b 56 18 ; 0xfa3af + or dl, 001h ; 80 ca 01 ; 0xfa3b2 + jmp word [cs:bx-05c84h] ; 2e ff a7 7c a3 ; 0xfa3b5 + mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xfa3ba apm.c:155 + mov word [bp+00ch], 0504dh ; c7 46 0c 4d 50 ; 0xfa3bf apm.c:156 + mov word [bp+010h], strict word 00003h ; c7 46 10 03 00 ; 0xfa3c4 apm.c:157 + jmp near 0a465h ; e9 99 00 ; 0xfa3c9 apm.c:158 + mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xfa3cc apm.c:168 + mov word [bp+00ch], 0aabbh ; c7 46 0c bb aa ; 0xfa3d1 apm.c:169 + mov word [bp+010h], 0f000h ; c7 46 10 00 f0 ; 0xfa3d6 apm.c:170 + mov ax, strict word 0fff0h ; b8 f0 ff ; 0xfa3db apm.c:171 + mov word [bp+006h], ax ; 89 46 06 ; 0xfa3de + mov word [bp+004h], ax ; 89 46 04 ; 0xfa3e1 apm.c:172 + jmp near 0a465h ; e9 7e 00 ; 0xfa3e4 apm.c:173 + sti ; fb ; 0xfa3e7 apm.c:190 + hlt ; f4 ; 0xfa3e8 apm.c:191 + jmp near 0a465h ; e9 79 00 ; 0xfa3e9 apm.c:192 + cmp word [bp+010h], strict byte 00003h ; 83 7e 10 03 ; 0xfa3ec apm.c:196 + je short 0a40bh ; 74 19 ; 0xfa3f0 + cmp word [bp+010h], strict byte 00002h ; 83 7e 10 02 ; 0xfa3f2 + je short 0a406h ; 74 0e ; 0xfa3f6 + cmp word [bp+010h], strict byte 00001h ; 83 7e 10 01 ; 0xfa3f8 + jne short 0a412h ; 75 14 ; 0xfa3fc + mov ax, 00d3ch ; b8 3c 0d ; 0xfa3fe apm.c:198 + call 0a35ch ; e8 58 ff ; 0xfa401 + jmp short 0a465h ; eb 5f ; 0xfa404 apm.c:199 + mov ax, 00d44h ; b8 44 0d ; 0xfa406 apm.c:201 + jmp short 0a401h ; eb f6 ; 0xfa409 + mov ax, 00d4ch ; b8 4c 0d ; 0xfa40b apm.c:204 + jmp short 0a401h ; eb f1 ; 0xfa40e + jmp short 0a43ah ; eb 28 ; 0xfa410 + or ah, 00ah ; 80 cc 0a ; 0xfa412 apm.c:207 + mov word [bp+012h], ax ; 89 46 12 ; 0xfa415 + mov word [bp+018h], dx ; 89 56 18 ; 0xfa418 apm.c:208 + jmp short 0a465h ; eb 48 ; 0xfa41b apm.c:210 + mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xfa41d apm.c:212 + jmp short 0a465h ; eb 41 ; 0xfa422 apm.c:213 + mov word [bp+00ch], 001ffh ; c7 46 0c ff 01 ; 0xfa424 apm.c:220 + mov word [bp+010h], 080ffh ; c7 46 10 ff 80 ; 0xfa429 apm.c:221 + mov word [bp+00eh], strict word 0ffffh ; c7 46 0e ff ff ; 0xfa42e apm.c:222 + jmp short 0a465h ; eb 30 ; 0xfa433 apm.c:223 + or ah, 080h ; 80 cc 80 ; 0xfa435 apm.c:226 + jmp short 0a415h ; eb db ; 0xfa438 + mov bx, 00dcch ; bb cc 0d ; 0xfa43a apm.c:230 + mov cx, ds ; 8c d9 ; 0xfa43d + mov ax, strict word 00004h ; b8 04 00 ; 0xfa43f + call 01910h ; e8 cb 74 ; 0xfa442 + push word [bp+00ch] ; ff 76 0c ; 0xfa445 + push word [bp+012h] ; ff 76 12 ; 0xfa448 + push 00d55h ; 68 55 0d ; 0xfa44b + push strict byte 00004h ; 6a 04 ; 0xfa44e + call 01953h ; e8 00 75 ; 0xfa450 + add sp, strict byte 00008h ; 83 c4 08 ; 0xfa453 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xfa456 apm.c:231 + xor ah, ah ; 30 e4 ; 0xfa459 + or ah, 00ch ; 80 cc 0c ; 0xfa45b + mov word [bp+012h], ax ; 89 46 12 ; 0xfa45e + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xfa461 apm.c:232 + mov sp, bp ; 89 ec ; 0xfa465 apm.c:234 + pop bp ; 5d ; 0xfa467 + retn ; c3 ; 0xfa468 + ; disGetNextSymbol 0xfa469 LB 0x8ef -> off=0x0 cb=0000000000000024 uValue=00000000000f8e69 'pci16_select_reg' +pci16_select_reg: ; 0xfa469 LB 0x24 + push bp ; 55 ; 0xfa469 pcibios.c:198 + mov bp, sp ; 89 e5 ; 0xfa46a + push bx ; 53 ; 0xfa46c + and dl, 0fch ; 80 e2 fc ; 0xfa46d pcibios.c:200 + mov bx, dx ; 89 d3 ; 0xfa470 + mov dx, 00cf8h ; ba f8 0c ; 0xfa472 + movzx eax, ax ; 66 0f b7 c0 ; 0xfa475 + sal eax, 008h ; 66 c1 e0 08 ; 0xfa479 + or eax, strict dword 080000000h ; 66 0d 00 00 00 80 ; 0xfa47d + db 08ah, 0c3h + ; mov al, bl ; 8a c3 ; 0xfa483 + out DX, eax ; 66 ef ; 0xfa485 + lea sp, [bp-002h] ; 8d 66 fe ; 0xfa487 pcibios.c:201 + pop bx ; 5b ; 0xfa48a + pop bp ; 5d ; 0xfa48b + retn ; c3 ; 0xfa48c + ; disGetNextSymbol 0xfa48d LB 0x8cb -> off=0x0 cb=00000000000000fd uValue=00000000000f8e8d 'pci16_find_device' +pci16_find_device: ; 0xfa48d LB 0xfd + push bp ; 55 ; 0xfa48d pcibios.c:233 + mov bp, sp ; 89 e5 ; 0xfa48e + push si ; 56 ; 0xfa490 + push di ; 57 ; 0xfa491 + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xfa492 + push ax ; 50 ; 0xfa495 + push dx ; 52 ; 0xfa496 + mov si, bx ; 89 de ; 0xfa497 + mov di, cx ; 89 cf ; 0xfa499 + test cx, cx ; 85 c9 ; 0xfa49b pcibios.c:243 + xor bx, bx ; 31 db ; 0xfa49d pcibios.c:250 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xfa49f pcibios.c:251 + test bl, 007h ; f6 c3 07 ; 0xfa4a3 pcibios.c:261 + jne short 0a4d5h ; 75 2d ; 0xfa4a6 + mov dx, strict word 0000eh ; ba 0e 00 ; 0xfa4a8 pcibios.c:262 + mov ax, bx ; 89 d8 ; 0xfa4ab + call 0a469h ; e8 b9 ff ; 0xfa4ad + mov dx, 00cfeh ; ba fe 0c ; 0xfa4b0 pcibios.c:263 + in AL, DX ; ec ; 0xfa4b3 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xfa4b4 + mov byte [bp-006h], al ; 88 46 fa ; 0xfa4b6 + cmp AL, strict byte 0ffh ; 3c ff ; 0xfa4b9 pcibios.c:264 + jne short 0a4c3h ; 75 06 ; 0xfa4bb + add bx, strict byte 00008h ; 83 c3 08 ; 0xfa4bd pcibios.c:265 + jmp near 0a564h ; e9 a1 00 ; 0xfa4c0 pcibios.c:266 + test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xfa4c3 pcibios.c:268 + je short 0a4d0h ; 74 07 ; 0xfa4c7 + mov word [bp-010h], strict word 00001h ; c7 46 f0 01 00 ; 0xfa4c9 pcibios.c:269 + jmp short 0a4d5h ; eb 05 ; 0xfa4ce pcibios.c:270 + mov word [bp-010h], strict word 00008h ; c7 46 f0 08 00 ; 0xfa4d0 pcibios.c:271 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xfa4d5 pcibios.c:282 + and AL, strict byte 007h ; 24 07 ; 0xfa4d8 + cmp AL, strict byte 001h ; 3c 01 ; 0xfa4da + jne short 0a4fdh ; 75 1f ; 0xfa4dc + mov ax, bx ; 89 d8 ; 0xfa4de + shr ax, 008h ; c1 e8 08 ; 0xfa4e0 + test ax, ax ; 85 c0 ; 0xfa4e3 + jne short 0a4fdh ; 75 16 ; 0xfa4e5 + mov dx, strict word 0001ah ; ba 1a 00 ; 0xfa4e7 pcibios.c:284 + mov ax, bx ; 89 d8 ; 0xfa4ea + call 0a469h ; e8 7a ff ; 0xfa4ec + mov dx, 00cfeh ; ba fe 0c ; 0xfa4ef pcibios.c:285 + in AL, DX ; ec ; 0xfa4f2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xfa4f3 + cmp al, byte [bp-008h] ; 3a 46 f8 ; 0xfa4f5 pcibios.c:286 + jbe short 0a4fdh ; 76 03 ; 0xfa4f8 + mov byte [bp-008h], al ; 88 46 f8 ; 0xfa4fa pcibios.c:287 + test di, di ; 85 ff ; 0xfa4fd pcibios.c:291 + je short 0a506h ; 74 05 ; 0xfa4ff + mov dx, strict word 00008h ; ba 08 00 ; 0xfa501 + jmp short 0a508h ; eb 02 ; 0xfa504 + xor dx, dx ; 31 d2 ; 0xfa506 + mov ax, bx ; 89 d8 ; 0xfa508 + call 0a469h ; e8 5c ff ; 0xfa50a + mov dx, 00cfch ; ba fc 0c ; 0xfa50d pcibios.c:292 + in eax, DX ; 66 ed ; 0xfa510 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xfa512 + shr eax, 010h ; 66 c1 e8 10 ; 0xfa514 + xchg dx, ax ; 92 ; 0xfa518 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xfa519 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xfa51c + mov ax, dx ; 89 d0 ; 0xfa51f + mov word [bp-00eh], strict word 00000h ; c7 46 f2 00 00 ; 0xfa521 pcibios.c:293 + test di, di ; 85 ff ; 0xfa526 pcibios.c:296 + je short 0a548h ; 74 1e ; 0xfa528 + cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xfa52a pcibios.c:297 + je short 0a537h ; 74 07 ; 0xfa52e + mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa530 pcibios.c:298 + xor ax, dx ; 31 d0 ; 0xfa533 + jmp short 0a548h ; eb 11 ; 0xfa535 pcibios.c:299 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xfa537 pcibios.c:300 + mov cx, strict word 00008h ; b9 08 00 ; 0xfa53a + shr dx, 1 ; d1 ea ; 0xfa53d + rcr ax, 1 ; d1 d8 ; 0xfa53f + loop 0a53dh ; e2 fa ; 0xfa541 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xfa543 + mov ax, dx ; 89 d0 ; 0xfa546 + cmp ax, word [bp-014h] ; 3b 46 ec ; 0xfa548 pcibios.c:307 + jne short 0a555h ; 75 08 ; 0xfa54b + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa54d + cmp ax, word [bp-012h] ; 3b 46 ee ; 0xfa550 + je short 0a55bh ; 74 06 ; 0xfa553 + cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xfa555 pcibios.c:308 + je short 0a561h ; 74 06 ; 0xfa559 + dec si ; 4e ; 0xfa55b + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xfa55c + je short 0a575h ; 74 14 ; 0xfa55f + add bx, word [bp-010h] ; 03 5e f0 ; 0xfa561 pcibios.c:316 + mov dx, bx ; 89 da ; 0xfa564 pcibios.c:317 + shr dx, 008h ; c1 ea 08 ; 0xfa566 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa569 + xor ah, ah ; 30 e4 ; 0xfa56c + cmp dx, ax ; 39 c2 ; 0xfa56e + jnbe short 0a575h ; 77 03 ; 0xfa570 + jmp near 0a4a3h ; e9 2e ff ; 0xfa572 + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xfa575 pcibios.c:319 + jne short 0a57eh ; 75 04 ; 0xfa578 pcibios.c:323 + mov ax, bx ; 89 d8 ; 0xfa57a + jmp short 0a581h ; eb 03 ; 0xfa57c + mov ax, strict word 0ffffh ; b8 ff ff ; 0xfa57e + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa581 pcibios.c:324 + pop di ; 5f ; 0xfa584 + pop si ; 5e ; 0xfa585 + pop bp ; 5d ; 0xfa586 + retn 00002h ; c2 02 00 ; 0xfa587 + ; disGetNextSymbol 0xfa58a LB 0x7ce -> off=0xc cb=00000000000001d6 uValue=00000000000f8f96 'pci16_function' + db 07bh, 0a6h, 094h, 0a6h, 0a6h, 0a6h, 0bah, 0a6h, 0cch, 0a6h, 0dfh, 0a6h +pci16_function: ; 0xfa596 LB 0x1d6 + push bp ; 55 ; 0xfa596 pcibios.c:326 + mov bp, sp ; 89 e5 ; 0xfa597 + push si ; 56 ; 0xfa599 + push di ; 57 ; 0xfa59a + push ax ; 50 ; 0xfa59b + push ax ; 50 ; 0xfa59c + and word [bp+020h], 000ffh ; 81 66 20 ff 00 ; 0xfa59d pcibios.c:333 + and word [bp+02ch], strict byte 0fffeh ; 83 66 2c fe ; 0xfa5a2 pcibios.c:334 + mov bx, word [bp+020h] ; 8b 5e 20 ; 0xfa5a6 pcibios.c:336 + xor bh, bh ; 30 ff ; 0xfa5a9 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa5ab + xor ah, ah ; 30 e4 ; 0xfa5ae + cmp bx, strict byte 00003h ; 83 fb 03 ; 0xfa5b0 + jc short 0a5c8h ; 72 13 ; 0xfa5b3 + jbe short 0a61dh ; 76 66 ; 0xfa5b5 + cmp bx, strict byte 0000eh ; 83 fb 0e ; 0xfa5b7 + je short 0a625h ; 74 69 ; 0xfa5ba + cmp bx, strict byte 00008h ; 83 fb 08 ; 0xfa5bc + jc short 0a5d2h ; 72 11 ; 0xfa5bf + cmp bx, strict byte 0000dh ; 83 fb 0d ; 0xfa5c1 + jbe short 0a628h ; 76 62 ; 0xfa5c4 + jmp short 0a5d2h ; eb 0a ; 0xfa5c6 + cmp bx, strict byte 00002h ; 83 fb 02 ; 0xfa5c8 + je short 0a5f1h ; 74 24 ; 0xfa5cb + cmp bx, strict byte 00001h ; 83 fb 01 ; 0xfa5cd + je short 0a5d5h ; 74 03 ; 0xfa5d0 + jmp near 0a738h ; e9 63 01 ; 0xfa5d2 + mov word [bp+020h], strict word 00001h ; c7 46 20 01 00 ; 0xfa5d5 pcibios.c:338 + mov word [bp+014h], 00210h ; c7 46 14 10 02 ; 0xfa5da pcibios.c:339 + mov word [bp+01ch], strict word 00000h ; c7 46 1c 00 00 ; 0xfa5df pcibios.c:341 + mov word [bp+018h], 04350h ; c7 46 18 50 43 ; 0xfa5e4 pcibios.c:342 + mov word [bp+01ah], 02049h ; c7 46 1a 49 20 ; 0xfa5e9 + jmp near 0a765h ; e9 74 01 ; 0xfa5ee pcibios.c:343 + cmp word [bp+018h], strict byte 0ffffh ; 83 7e 18 ff ; 0xfa5f1 pcibios.c:348 + jne short 0a5fdh ; 75 06 ; 0xfa5f5 + or ah, 083h ; 80 cc 83 ; 0xfa5f7 pcibios.c:349 + jmp near 0a75eh ; e9 61 01 ; 0xfa5fa pcibios.c:350 + push strict byte 00000h ; 6a 00 ; 0xfa5fd pcibios.c:352 + mov bx, word [bp+008h] ; 8b 5e 08 ; 0xfa5ff + mov dx, word [bp+01ch] ; 8b 56 1c ; 0xfa602 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xfa605 + xor cx, cx ; 31 c9 ; 0xfa608 + call 0a48dh ; e8 80 fe ; 0xfa60a + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa60d pcibios.c:353 + jne short 0a61fh ; 75 0d ; 0xfa610 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa612 pcibios.c:354 + xor ah, ah ; 30 e4 ; 0xfa615 + or ah, 086h ; 80 cc 86 ; 0xfa617 + jmp near 0a75eh ; e9 41 01 ; 0xfa61a + jmp short 0a62ah ; eb 0b ; 0xfa61d + mov word [bp+014h], ax ; 89 46 14 ; 0xfa61f pcibios.c:355 + jmp near 0a765h ; e9 40 01 ; 0xfa622 pcibios.c:360 + jmp near 0a6f3h ; e9 cb 00 ; 0xfa625 + jmp short 0a651h ; eb 27 ; 0xfa628 + push strict byte 00000h ; 6a 00 ; 0xfa62a pcibios.c:362 + mov bx, word [bp+008h] ; 8b 5e 08 ; 0xfa62c + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa62f + mov dx, word [bp+01eh] ; 8b 56 1e ; 0xfa632 + mov cx, strict word 00001h ; b9 01 00 ; 0xfa635 + call 0a48dh ; e8 52 fe ; 0xfa638 + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa63b pcibios.c:363 + jne short 0a64bh ; 75 0b ; 0xfa63e + mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa640 pcibios.c:364 + xor ah, ah ; 30 e4 ; 0xfa643 + or ah, 086h ; 80 cc 86 ; 0xfa645 + jmp near 0a75eh ; e9 13 01 ; 0xfa648 pcibios.c:365 + mov word [bp+014h], ax ; 89 46 14 ; 0xfa64b pcibios.c:367 + jmp near 0a765h ; e9 14 01 ; 0xfa64e pcibios.c:369 + cmp word [bp+004h], 00100h ; 81 7e 04 00 01 ; 0xfa651 pcibios.c:376 + jc short 0a65eh ; 72 06 ; 0xfa656 + or ah, 087h ; 80 cc 87 ; 0xfa658 pcibios.c:377 + jmp near 0a75eh ; e9 00 01 ; 0xfa65b pcibios.c:378 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa65e pcibios.c:380 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xfa661 + call 0a469h ; e8 02 fe ; 0xfa664 + mov bx, word [bp+020h] ; 8b 5e 20 ; 0xfa667 pcibios.c:381 + xor bh, bh ; 30 ff ; 0xfa66a + sub bx, strict byte 00008h ; 83 eb 08 ; 0xfa66c + cmp bx, strict byte 00005h ; 83 fb 05 ; 0xfa66f + jnbe short 0a6dch ; 77 68 ; 0xfa672 + add bx, bx ; 01 db ; 0xfa674 + jmp word [cs:bx-05a76h] ; 2e ff a7 8a a5 ; 0xfa676 + mov bx, word [bp+01ch] ; 8b 5e 1c ; 0xfa67b pcibios.c:383 + xor bl, bl ; 30 db ; 0xfa67e + mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa680 + and dx, strict byte 00003h ; 83 e2 03 ; 0xfa683 + add dx, 00cfch ; 81 c2 fc 0c ; 0xfa686 + in AL, DX ; ec ; 0xfa68a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xfa68b + or bx, ax ; 09 c3 ; 0xfa68d + mov word [bp+01ch], bx ; 89 5e 1c ; 0xfa68f + jmp short 0a6dch ; eb 48 ; 0xfa692 pcibios.c:384 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa694 pcibios.c:386 + xor dh, dh ; 30 f6 ; 0xfa697 + and dl, 002h ; 80 e2 02 ; 0xfa699 + add dx, 00cfch ; 81 c2 fc 0c ; 0xfa69c + in ax, DX ; ed ; 0xfa6a0 + mov word [bp+01ch], ax ; 89 46 1c ; 0xfa6a1 + jmp short 0a6dch ; eb 36 ; 0xfa6a4 pcibios.c:387 + mov dx, 00cfch ; ba fc 0c ; 0xfa6a6 pcibios.c:389 + in eax, DX ; 66 ed ; 0xfa6a9 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xfa6ab + shr eax, 010h ; 66 c1 e8 10 ; 0xfa6ad + xchg dx, ax ; 92 ; 0xfa6b1 + mov word [bp+01ch], ax ; 89 46 1c ; 0xfa6b2 + mov word [bp+01eh], dx ; 89 56 1e ; 0xfa6b5 + jmp short 0a6dch ; eb 22 ; 0xfa6b8 pcibios.c:390 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa6ba pcibios.c:392 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa6bd + xor dh, dh ; 30 f6 ; 0xfa6c0 + and dl, 003h ; 80 e2 03 ; 0xfa6c2 + add dx, 00cfch ; 81 c2 fc 0c ; 0xfa6c5 + out DX, AL ; ee ; 0xfa6c9 + jmp short 0a6dch ; eb 10 ; 0xfa6ca pcibios.c:393 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa6cc pcibios.c:395 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa6cf + xor dh, dh ; 30 f6 ; 0xfa6d2 + and dl, 002h ; 80 e2 02 ; 0xfa6d4 + add dx, 00cfch ; 81 c2 fc 0c ; 0xfa6d7 + out DX, ax ; ef ; 0xfa6db + jmp near 0a765h ; e9 86 00 ; 0xfa6dc pcibios.c:396 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa6df pcibios.c:398 + mov cx, word [bp+01eh] ; 8b 4e 1e ; 0xfa6e2 + mov dx, 00cfch ; ba fc 0c ; 0xfa6e5 + xchg cx, ax ; 91 ; 0xfa6e8 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa6e9 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa6ed + out DX, eax ; 66 ef ; 0xfa6ef + jmp short 0a765h ; eb 72 ; 0xfa6f1 pcibios.c:402 + mov bx, word [bp+004h] ; 8b 5e 04 ; 0xfa6f3 pcibios.c:404 + mov es, [bp+026h] ; 8e 46 26 ; 0xfa6f6 + mov word [bp-008h], bx ; 89 5e f8 ; 0xfa6f9 + mov [bp-006h], es ; 8c 46 fa ; 0xfa6fc + mov cx, word [0f360h] ; 8b 0e 60 f3 ; 0xfa6ff pcibios.c:408 + cmp cx, word [es:bx] ; 26 3b 0f ; 0xfa703 + jbe short 0a719h ; 76 11 ; 0xfa706 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa708 pcibios.c:409 + xor ah, ah ; 30 e4 ; 0xfa70b + or ah, 089h ; 80 cc 89 ; 0xfa70d + mov word [bp+020h], ax ; 89 46 20 ; 0xfa710 + or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xfa713 pcibios.c:410 + jmp short 0a72dh ; eb 14 ; 0xfa717 pcibios.c:411 + les di, [es:bx+002h] ; 26 c4 7f 02 ; 0xfa719 pcibios.c:412 + mov si, 0f180h ; be 80 f1 ; 0xfa71d + mov dx, ds ; 8c da ; 0xfa720 + push DS ; 1e ; 0xfa722 + mov ds, dx ; 8e da ; 0xfa723 + rep movsb ; f3 a4 ; 0xfa725 + pop DS ; 1f ; 0xfa727 + mov word [bp+014h], 00a00h ; c7 46 14 00 0a ; 0xfa728 pcibios.c:414 + mov ax, word [0f360h] ; a1 60 f3 ; 0xfa72d pcibios.c:416 + les bx, [bp-008h] ; c4 5e f8 ; 0xfa730 + mov word [es:bx], ax ; 26 89 07 ; 0xfa733 + jmp short 0a765h ; eb 2d ; 0xfa736 pcibios.c:417 + mov bx, 00dcch ; bb cc 0d ; 0xfa738 pcibios.c:419 + mov cx, ds ; 8c d9 ; 0xfa73b + mov ax, strict word 00004h ; b8 04 00 ; 0xfa73d + call 01910h ; e8 cd 71 ; 0xfa740 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xfa743 + push ax ; 50 ; 0xfa746 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa747 + push ax ; 50 ; 0xfa74a + push 00d88h ; 68 88 0d ; 0xfa74b + push strict byte 00004h ; 6a 04 ; 0xfa74e + call 01953h ; e8 00 72 ; 0xfa750 + add sp, strict byte 00008h ; 83 c4 08 ; 0xfa753 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa756 pcibios.c:420 + xor ah, ah ; 30 e4 ; 0xfa759 + or ah, 081h ; 80 cc 81 ; 0xfa75b + mov word [bp+020h], ax ; 89 46 20 ; 0xfa75e + or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xfa761 pcibios.c:421 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa765 pcibios.c:423 + pop di ; 5f ; 0xfa768 + pop si ; 5e ; 0xfa769 + pop bp ; 5d ; 0xfa76a + retn ; c3 ; 0xfa76b + ; disGetNextSymbol 0xfa76c LB 0x5ec -> off=0x0 cb=0000000000000008 uValue=00000000000f916c 'pci_find_classcode' +pci_find_classcode: ; 0xfa76c LB 0x8 + push bp ; 55 ; 0xfa76c pciutil.c:135 + mov bp, sp ; 89 e5 ; 0xfa76d + mov ax, strict word 0ffffh ; b8 ff ff ; 0xfa76f pciutil.c:142 + pop bp ; 5d ; 0xfa772 + retn ; c3 ; 0xfa773 + ; disGetNextSymbol 0xfa774 LB 0x5e4 -> off=0x0 cb=0000000000000008 uValue=00000000000f9174 'pci_find_class_noif' +pci_find_class_noif: ; 0xfa774 LB 0x8 + push bp ; 55 ; 0xfa774 pciutil.c:155 + mov bp, sp ; 89 e5 ; 0xfa775 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xfa777 pciutil.c:163 + pop bp ; 5d ; 0xfa77a + retn ; c3 ; 0xfa77b + ; disGetNextSymbol 0xfa77c LB 0x5dc -> off=0x0 cb=0000000000000023 uValue=00000000000f917c 'pci_find_device' +pci_find_device: ; 0xfa77c LB 0x23 + push bp ; 55 ; 0xfa77c pciutil.c:176 + mov bp, sp ; 89 e5 ; 0xfa77d + push bx ; 53 ; 0xfa77f + push cx ; 51 ; 0xfa780 + push si ; 56 ; 0xfa781 + mov cx, dx ; 89 d1 ; 0xfa782 + xor si, si ; 31 f6 ; 0xfa784 pciutil.c:178 + mov dx, ax ; 89 c2 ; 0xfa786 + mov ax, 0b102h ; b8 02 b1 ; 0xfa788 + int 01ah ; cd 1a ; 0xfa78b + cmp ah, 000h ; 80 fc 00 ; 0xfa78d + je short 0a795h ; 74 03 ; 0xfa790 + mov bx, strict word 0ffffh ; bb ff ff ; 0xfa792 + mov ax, bx ; 89 d8 ; 0xfa795 + lea sp, [bp-006h] ; 8d 66 fa ; 0xfa797 pciutil.c:179 + pop si ; 5e ; 0xfa79a + pop cx ; 59 ; 0xfa79b + pop bx ; 5b ; 0xfa79c + pop bp ; 5d ; 0xfa79d + retn ; c3 ; 0xfa79e + ; disGetNextSymbol 0xfa79f LB 0x5b9 -> off=0x0 cb=000000000000002e uValue=00000000000f919f 'pci_read_config_byte' +pci_read_config_byte: ; 0xfa79f LB 0x2e + push bp ; 55 ; 0xfa79f pciutil.c:181 + mov bp, sp ; 89 e5 ; 0xfa7a0 + push cx ; 51 ; 0xfa7a2 + push di ; 57 ; 0xfa7a3 + mov dh, al ; 88 c6 ; 0xfa7a4 + mov bh, dl ; 88 d7 ; 0xfa7a6 + mov al, bl ; 88 d8 ; 0xfa7a8 + xor ah, ah ; 30 e4 ; 0xfa7aa pciutil.c:183 + mov dl, dh ; 88 f2 ; 0xfa7ac + xor dh, dh ; 30 f6 ; 0xfa7ae + sal dx, 008h ; c1 e2 08 ; 0xfa7b0 + mov bl, bh ; 88 fb ; 0xfa7b3 + xor bh, bh ; 30 ff ; 0xfa7b5 + or bx, dx ; 09 d3 ; 0xfa7b7 + mov di, ax ; 89 c7 ; 0xfa7b9 + mov ax, 0b108h ; b8 08 b1 ; 0xfa7bb + int 01ah ; cd 1a ; 0xfa7be + mov al, cl ; 88 c8 ; 0xfa7c0 + xor ah, ah ; 30 e4 ; 0xfa7c2 + xor dx, dx ; 31 d2 ; 0xfa7c4 pciutil.c:184 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa7c6 + pop di ; 5f ; 0xfa7c9 + pop cx ; 59 ; 0xfa7ca + pop bp ; 5d ; 0xfa7cb + retn ; c3 ; 0xfa7cc + ; disGetNextSymbol 0xfa7cd LB 0x58b -> off=0x0 cb=000000000000002a uValue=00000000000f91cd 'pci_read_config_word' +pci_read_config_word: ; 0xfa7cd LB 0x2a + push bp ; 55 ; 0xfa7cd pciutil.c:186 + mov bp, sp ; 89 e5 ; 0xfa7ce + push cx ; 51 ; 0xfa7d0 + push di ; 57 ; 0xfa7d1 + mov bh, al ; 88 c7 ; 0xfa7d2 + mov al, bl ; 88 d8 ; 0xfa7d4 + xor ah, ah ; 30 e4 ; 0xfa7d6 pciutil.c:188 + mov bl, bh ; 88 fb ; 0xfa7d8 + xor bh, bh ; 30 ff ; 0xfa7da + mov cx, bx ; 89 d9 ; 0xfa7dc + sal cx, 008h ; c1 e1 08 ; 0xfa7de + mov bl, dl ; 88 d3 ; 0xfa7e1 + or bx, cx ; 09 cb ; 0xfa7e3 + mov di, ax ; 89 c7 ; 0xfa7e5 + mov ax, 0b109h ; b8 09 b1 ; 0xfa7e7 + int 01ah ; cd 1a ; 0xfa7ea + mov ax, cx ; 89 c8 ; 0xfa7ec + xor dx, dx ; 31 d2 ; 0xfa7ee pciutil.c:189 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa7f0 + pop di ; 5f ; 0xfa7f3 + pop cx ; 59 ; 0xfa7f4 + pop bp ; 5d ; 0xfa7f5 + retn ; c3 ; 0xfa7f6 + ; disGetNextSymbol 0xfa7f7 LB 0x561 -> off=0x0 cb=000000000000004e uValue=00000000000f91f7 'pci_read_config_dword' +pci_read_config_dword: ; 0xfa7f7 LB 0x4e + push bp ; 55 ; 0xfa7f7 pciutil.c:191 + mov bp, sp ; 89 e5 ; 0xfa7f8 + push cx ; 51 ; 0xfa7fa + push di ; 57 ; 0xfa7fb + push ax ; 50 ; 0xfa7fc + mov dh, al ; 88 c6 ; 0xfa7fd + mov cl, dl ; 88 d1 ; 0xfa7ff + mov byte [bp-006h], bl ; 88 5e fa ; 0xfa801 + mov al, bl ; 88 d8 ; 0xfa804 pciutil.c:196 + xor ah, ah ; 30 e4 ; 0xfa806 + mov dl, dh ; 88 f2 ; 0xfa808 + xor dh, dh ; 30 f6 ; 0xfa80a + mov di, dx ; 89 d7 ; 0xfa80c + sal di, 008h ; c1 e7 08 ; 0xfa80e + mov dl, cl ; 88 ca ; 0xfa811 + or dx, di ; 09 fa ; 0xfa813 + mov di, ax ; 89 c7 ; 0xfa815 + mov bx, dx ; 89 d3 ; 0xfa817 + mov ax, 0b109h ; b8 09 b1 ; 0xfa819 + int 01ah ; cd 1a ; 0xfa81c + test cx, cx ; 85 c9 ; 0xfa81e + jne short 0a836h ; 75 14 ; 0xfa820 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xfa822 + xor ah, ah ; 30 e4 ; 0xfa825 + mov di, ax ; 89 c7 ; 0xfa827 + inc di ; 47 ; 0xfa829 + inc di ; 47 ; 0xfa82a + mov bx, dx ; 89 d3 ; 0xfa82b + mov ax, 0b109h ; b8 09 b1 ; 0xfa82d + int 01ah ; cd 1a ; 0xfa830 + test cx, cx ; 85 c9 ; 0xfa832 + je short 0a83bh ; 74 05 ; 0xfa834 + mov ax, strict word 00001h ; b8 01 00 ; 0xfa836 + jmp short 0a83dh ; eb 02 ; 0xfa839 + xor ax, ax ; 31 c0 ; 0xfa83b + cwd ; 99 ; 0xfa83d + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa83e pciutil.c:199 + pop di ; 5f ; 0xfa841 + pop cx ; 59 ; 0xfa842 + pop bp ; 5d ; 0xfa843 + retn ; c3 ; 0xfa844 + ; disGetNextSymbol 0xfa845 LB 0x513 -> off=0x0 cb=0000000000000025 uValue=00000000000f9245 'pci_write_config_word' +pci_write_config_word: ; 0xfa845 LB 0x25 + push bp ; 55 ; 0xfa845 pciutil.c:201 + mov bp, sp ; 89 e5 ; 0xfa846 + push di ; 57 ; 0xfa848 + push ax ; 50 ; 0xfa849 + mov byte [bp-004h], al ; 88 46 fc ; 0xfa84a + mov al, bl ; 88 d8 ; 0xfa84d + xor ah, ah ; 30 e4 ; 0xfa84f pciutil.c:203 + mov di, ax ; 89 c7 ; 0xfa851 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xfa853 + mov bx, ax ; 89 c3 ; 0xfa856 + sal bx, 008h ; c1 e3 08 ; 0xfa858 + mov al, dl ; 88 d0 ; 0xfa85b + or bx, ax ; 09 c3 ; 0xfa85d + mov ax, 0b10ch ; b8 0c b1 ; 0xfa85f + int 01ah ; cd 1a ; 0xfa862 + lea sp, [bp-002h] ; 8d 66 fe ; 0xfa864 pciutil.c:204 + pop di ; 5f ; 0xfa867 + pop bp ; 5d ; 0xfa868 + retn ; c3 ; 0xfa869 + ; disGetNextSymbol 0xfa86a LB 0x4ee -> off=0x0 cb=0000000000000025 uValue=00000000000f926a 'pci_write_config_byte' +pci_write_config_byte: ; 0xfa86a LB 0x25 + push bp ; 55 ; 0xfa86a pciutil.c:206 + mov bp, sp ; 89 e5 ; 0xfa86b + push di ; 57 ; 0xfa86d + push ax ; 50 ; 0xfa86e + mov byte [bp-004h], al ; 88 46 fc ; 0xfa86f + mov al, bl ; 88 d8 ; 0xfa872 + xor ah, ah ; 30 e4 ; 0xfa874 pciutil.c:208 + mov di, ax ; 89 c7 ; 0xfa876 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xfa878 + mov bx, ax ; 89 c3 ; 0xfa87b + sal bx, 008h ; c1 e3 08 ; 0xfa87d + mov al, dl ; 88 d0 ; 0xfa880 + or bx, ax ; 09 c3 ; 0xfa882 + mov ax, 0b10bh ; b8 0b b1 ; 0xfa884 + int 01ah ; cd 1a ; 0xfa887 + lea sp, [bp-002h] ; 8d 66 fe ; 0xfa889 pciutil.c:209 + pop di ; 5f ; 0xfa88c + pop bp ; 5d ; 0xfa88d + retn ; c3 ; 0xfa88e + ; disGetNextSymbol 0xfa88f LB 0x4c9 -> off=0x0 cb=0000000000000046 uValue=00000000000f928f 'pci_write_config_dword' +pci_write_config_dword: ; 0xfa88f LB 0x46 + push bp ; 55 ; 0xfa88f pciutil.c:211 + mov bp, sp ; 89 e5 ; 0xfa890 + push cx ; 51 ; 0xfa892 + push di ; 57 ; 0xfa893 + push ax ; 50 ; 0xfa894 + mov dh, al ; 88 c6 ; 0xfa895 + mov bh, dl ; 88 d7 ; 0xfa897 + mov byte [bp-006h], bl ; 88 5e fa ; 0xfa899 + mov al, bl ; 88 d8 ; 0xfa89c pciutil.c:216 + xor ah, ah ; 30 e4 ; 0xfa89e + mov dl, dh ; 88 f2 ; 0xfa8a0 + xor dh, dh ; 30 f6 ; 0xfa8a2 + mov di, dx ; 89 d7 ; 0xfa8a4 + sal di, 008h ; c1 e7 08 ; 0xfa8a6 + mov dl, bh ; 88 fa ; 0xfa8a9 + or dx, di ; 09 fa ; 0xfa8ab + mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfa8ad + mov di, ax ; 89 c7 ; 0xfa8b0 + mov bx, dx ; 89 d3 ; 0xfa8b2 + mov ax, 0b10ch ; b8 0c b1 ; 0xfa8b4 + int 01ah ; cd 1a ; 0xfa8b7 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xfa8b9 pciutil.c:217 + xor ah, ah ; 30 e4 ; 0xfa8bc + mov di, ax ; 89 c7 ; 0xfa8be + inc di ; 47 ; 0xfa8c0 + inc di ; 47 ; 0xfa8c1 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xfa8c2 + mov bx, dx ; 89 d3 ; 0xfa8c5 + mov ax, 0b10ch ; b8 0c b1 ; 0xfa8c7 + int 01ah ; cd 1a ; 0xfa8ca + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa8cc pciutil.c:219 + pop di ; 5f ; 0xfa8cf + pop cx ; 59 ; 0xfa8d0 + pop bp ; 5d ; 0xfa8d1 + retn 00004h ; c2 04 00 ; 0xfa8d2 + ; disGetNextSymbol 0xfa8d5 LB 0x483 -> off=0x0 cb=000000000000001d uValue=00000000000f92d5 'vds_is_present' +vds_is_present: ; 0xfa8d5 LB 0x1d + push bx ; 53 ; 0xfa8d5 vds.c:42 + push bp ; 55 ; 0xfa8d6 + mov bp, sp ; 89 e5 ; 0xfa8d7 + mov bx, strict word 0007bh ; bb 7b 00 ; 0xfa8d9 vds.c:46 + mov ax, strict word 00040h ; b8 40 00 ; 0xfa8dc + mov es, ax ; 8e c0 ; 0xfa8df + test byte [es:bx], 020h ; 26 f6 07 20 ; 0xfa8e1 vds.c:47 + je short 0a8edh ; 74 06 ; 0xfa8e5 + mov ax, strict word 00001h ; b8 01 00 ; 0xfa8e7 + pop bp ; 5d ; 0xfa8ea + pop bx ; 5b ; 0xfa8eb + retn ; c3 ; 0xfa8ec + xor ax, ax ; 31 c0 ; 0xfa8ed + pop bp ; 5d ; 0xfa8ef vds.c:48 + pop bx ; 5b ; 0xfa8f0 + retn ; c3 ; 0xfa8f1 + ; disGetNextSymbol 0xfa8f2 LB 0x466 -> off=0x0 cb=000000000000001e uValue=00000000000f92f2 'vds_real_to_lin' +vds_real_to_lin: ; 0xfa8f2 LB 0x1e + push bx ; 53 ; 0xfa8f2 vds.c:77 + push cx ; 51 ; 0xfa8f3 + push bp ; 55 ; 0xfa8f4 + mov bp, sp ; 89 e5 ; 0xfa8f5 + mov bx, ax ; 89 c3 ; 0xfa8f7 + mov ax, dx ; 89 d0 ; 0xfa8f9 + xor dx, dx ; 31 d2 ; 0xfa8fb vds.c:79 + mov cx, strict word 00004h ; b9 04 00 ; 0xfa8fd + sal ax, 1 ; d1 e0 ; 0xfa900 + rcl dx, 1 ; d1 d2 ; 0xfa902 + loop 0a900h ; e2 fa ; 0xfa904 + xor cx, cx ; 31 c9 ; 0xfa906 + add ax, bx ; 01 d8 ; 0xfa908 + adc dx, cx ; 11 ca ; 0xfa90a + pop bp ; 5d ; 0xfa90c vds.c:80 + pop cx ; 59 ; 0xfa90d + pop bx ; 5b ; 0xfa90e + retn ; c3 ; 0xfa90f + ; disGetNextSymbol 0xfa910 LB 0x448 -> off=0x0 cb=0000000000000077 uValue=00000000000f9310 'vds_build_sg_list' +vds_build_sg_list: ; 0xfa910 LB 0x77 + push bp ; 55 ; 0xfa910 vds.c:87 + mov bp, sp ; 89 e5 ; 0xfa911 + push si ; 56 ; 0xfa913 + push di ; 57 ; 0xfa914 + mov di, ax ; 89 c7 ; 0xfa915 + mov si, dx ; 89 d6 ; 0xfa917 + mov ax, bx ; 89 d8 ; 0xfa919 + mov dx, cx ; 89 ca ; 0xfa91b + mov bx, word [bp+004h] ; 8b 5e 04 ; 0xfa91d vds.c:92 + mov es, si ; 8e c6 ; 0xfa920 + mov word [es:di], bx ; 26 89 1d ; 0xfa922 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xfa925 + mov word [es:di+002h], bx ; 26 89 5d 02 ; 0xfa928 + call 0a8f2h ; e8 c3 ff ; 0xfa92c vds.c:93 + mov es, si ; 8e c6 ; 0xfa92f + mov word [es:di+004h], ax ; 26 89 45 04 ; 0xfa931 + mov word [es:di+006h], dx ; 26 89 55 06 ; 0xfa935 + mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00 ; 0xfa939 vds.c:94 + call 0a8d5h ; e8 93 ff ; 0xfa93f vds.c:95 + test ax, ax ; 85 c0 ; 0xfa942 + je short 0a957h ; 74 11 ; 0xfa944 + mov es, si ; 8e c6 ; 0xfa946 vds.c:97 + mov ax, 08105h ; b8 05 81 ; 0xfa948 + mov dx, strict word 00000h ; ba 00 00 ; 0xfa94b + int 04bh ; cd 4b ; 0xfa94e + jc short 0a954h ; 72 02 ; 0xfa950 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfa952 + cbw ; 98 ; 0xfa954 + jmp short 0a97eh ; eb 27 ; 0xfa955 vds.c:98 + mov es, si ; 8e c6 ; 0xfa957 vds.c:100 + mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00 ; 0xfa959 + mov dx, word [es:di+004h] ; 26 8b 55 04 ; 0xfa95f vds.c:101 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xfa963 + mov word [es:di+010h], dx ; 26 89 55 10 ; 0xfa967 + mov word [es:di+012h], ax ; 26 89 45 12 ; 0xfa96b + mov ax, word [bp+004h] ; 8b 46 04 ; 0xfa96f vds.c:102 + mov word [es:di+014h], ax ; 26 89 45 14 ; 0xfa972 + mov ax, bx ; 89 d8 ; 0xfa976 + mov word [es:di+016h], bx ; 26 89 5d 16 ; 0xfa978 + xor ax, bx ; 31 d8 ; 0xfa97c vds.c:103 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa97e vds.c:106 + pop di ; 5f ; 0xfa981 + pop si ; 5e ; 0xfa982 + pop bp ; 5d ; 0xfa983 + retn 00004h ; c2 04 00 ; 0xfa984 + ; disGetNextSymbol 0xfa987 LB 0x3d1 -> off=0x0 cb=000000000000002e uValue=00000000000f9387 'vds_free_sg_list' +vds_free_sg_list: ; 0xfa987 LB 0x2e + push bp ; 55 ; 0xfa987 vds.c:112 + mov bp, sp ; 89 e5 ; 0xfa988 + push bx ; 53 ; 0xfa98a + push di ; 57 ; 0xfa98b + mov bx, ax ; 89 c3 ; 0xfa98c + call 0a8d5h ; e8 44 ff ; 0xfa98e vds.c:116 + test ax, ax ; 85 c0 ; 0xfa991 + je short 0a9a6h ; 74 11 ; 0xfa993 + mov di, bx ; 89 df ; 0xfa995 vds.c:118 + mov es, dx ; 8e c2 ; 0xfa997 + mov ax, 08106h ; b8 06 81 ; 0xfa999 + mov dx, strict word 00000h ; ba 00 00 ; 0xfa99c + int 04bh ; cd 4b ; 0xfa99f + jc short 0a9a5h ; 72 02 ; 0xfa9a1 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfa9a3 + cbw ; 98 ; 0xfa9a5 + mov es, dx ; 8e c2 ; 0xfa9a6 vds.c:126 + mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00 ; 0xfa9a8 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa9ae vds.c:128 + pop di ; 5f ; 0xfa9b1 + pop bx ; 5b ; 0xfa9b2 + pop bp ; 5d ; 0xfa9b3 + retn ; c3 ; 0xfa9b4 + ; disGetNextSymbol 0xfa9b5 LB 0x3a3 -> off=0xb cb=0000000000000020 uValue=00000000000f93c0 '__U4M' + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h +__U4M: ; 0xfa9c0 LB 0x20 + pushfw ; 9c ; 0xfa9c0 __U4M.asm:51 + push si ; 56 ; 0xfa9c1 __U4M.asm:81 + push di ; 57 ; 0xfa9c2 __U4M.asm:82 + push ax ; 50 ; 0xfa9c3 __U4M.asm:95 + db 08bh, 0fah + ; mov di, dx ; 8b fa ; 0xfa9c4 __U4M.asm:96 + mul bx ; f7 e3 ; 0xfa9c6 __U4M.asm:99 + db 08bh, 0f2h + ; mov si, dx ; 8b f2 ; 0xfa9c8 __U4M.asm:100 + xchg di, ax ; 97 ; 0xfa9ca __U4M.asm:101 + mul bx ; f7 e3 ; 0xfa9cb __U4M.asm:104 + db 003h, 0f0h + ; add si, ax ; 03 f0 ; 0xfa9cd __U4M.asm:105 + pop ax ; 58 ; 0xfa9cf __U4M.asm:108 + mul cx ; f7 e1 ; 0xfa9d0 __U4M.asm:109 + db 003h, 0f0h + ; add si, ax ; 03 f0 ; 0xfa9d2 __U4M.asm:110 + db 08bh, 0d6h + ; mov dx, si ; 8b d6 ; 0xfa9d4 __U4M.asm:113 + db 08bh, 0c7h + ; mov ax, di ; 8b c7 ; 0xfa9d6 __U4M.asm:114 + pop di ; 5f ; 0xfa9d8 __U4M.asm:116 + pop si ; 5e ; 0xfa9d9 __U4M.asm:117 + popfw ; 9d ; 0xfa9da __U4M.asm:119 + retn ; c3 ; 0xfa9db __U4M.asm:120 + times 0x4 db 0 + ; disGetNextSymbol 0xfa9e0 LB 0x378 -> off=0x0 cb=0000000000000030 uValue=00000000000f93e0 '__U4D' +__U4D: ; 0xfa9e0 LB 0x30 + pushfw ; 9c ; 0xfa9e0 __U4D.asm:59 + test cx, cx ; 85 c9 ; 0xfa9e1 __U4D.asm:94 + jne short 0a9edh ; 75 08 ; 0xfa9e3 __U4D.asm:95 + div bx ; f7 f3 ; 0xfa9e5 __U4D.asm:97 + db 08bh, 0dah + ; mov bx, dx ; 8b da ; 0xfa9e7 __U4D.asm:99 + db 033h, 0d2h + ; xor dx, dx ; 33 d2 ; 0xfa9e9 __U4D.asm:101 + popfw ; 9d ; 0xfa9eb __U4D.asm:103 + retn ; c3 ; 0xfa9ec __U4D.asm:104 + push DS ; 1e ; 0xfa9ed __U4D.asm:108 + push ES ; 06 ; 0xfa9ee __U4D.asm:109 + push bp ; 55 ; 0xfa9ef __U4D.asm:116 + sub sp, strict byte 00004h ; 83 ec 04 ; 0xfa9f0 __U4D.asm:117 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xfa9f3 __U4D.asm:118 + push SS ; 16 ; 0xfa9f5 __U4D.asm:121 + push bp ; 55 ; 0xfa9f6 __U4D.asm:122 + add bp, strict byte 00004h ; 83 c5 04 ; 0xfa9f7 __U4D.asm:123 + push cx ; 51 ; 0xfa9fa __U4D.asm:126 + push bx ; 53 ; 0xfa9fb __U4D.asm:127 + push dx ; 52 ; 0xfa9fc __U4D.asm:130 + push ax ; 50 ; 0xfa9fd __U4D.asm:131 + call 0aacch ; e8 cb 00 ; 0xfa9fe __U4D.asm:133 + mov cx, word [bp-002h] ; 8b 4e fe ; 0xfaa01 __U4D.asm:136 + mov bx, word [bp-004h] ; 8b 5e fc ; 0xfaa04 __U4D.asm:137 + db 08bh, 0e5h + ; mov sp, bp ; 8b e5 ; 0xfaa07 __U4D.asm:141 + pop bp ; 5d ; 0xfaa09 __U4D.asm:142 + pop ES ; 07 ; 0xfaa0a __U4D.asm:143 + pop DS ; 1f ; 0xfaa0b __U4D.asm:144 + popfw ; 9d ; 0xfaa0c __U4D.asm:146 + retn ; c3 ; 0xfaa0d __U4D.asm:147 + times 0x2 db 0 + ; disGetNextSymbol 0xfaa10 LB 0x348 -> off=0x0 cb=0000000000000010 uValue=00000000000f9410 '__U8RS' +__U8RS: ; 0xfaa10 LB 0x10 + test si, si ; 85 f6 ; 0xfaa10 __U8RS.asm:50 + je short 0aa1fh ; 74 0b ; 0xfaa12 __U8RS.asm:51 + shr ax, 1 ; d1 e8 ; 0xfaa14 __U8RS.asm:53 + rcr bx, 1 ; d1 db ; 0xfaa16 __U8RS.asm:54 + rcr cx, 1 ; d1 d9 ; 0xfaa18 __U8RS.asm:55 + rcr dx, 1 ; d1 da ; 0xfaa1a __U8RS.asm:56 + dec si ; 4e ; 0xfaa1c __U8RS.asm:57 + jne short 0aa14h ; 75 f5 ; 0xfaa1d __U8RS.asm:58 + retn ; c3 ; 0xfaa1f __U8RS.asm:60 + ; disGetNextSymbol 0xfaa20 LB 0x338 -> off=0x0 cb=0000000000000010 uValue=00000000000f9420 '__U8LS' +__U8LS: ; 0xfaa20 LB 0x10 + test si, si ; 85 f6 ; 0xfaa20 __U8LS.asm:50 + je short 0aa2fh ; 74 0b ; 0xfaa22 __U8LS.asm:51 + sal dx, 1 ; d1 e2 ; 0xfaa24 __U8LS.asm:53 + rcl cx, 1 ; d1 d1 ; 0xfaa26 __U8LS.asm:54 + rcl bx, 1 ; d1 d3 ; 0xfaa28 __U8LS.asm:55 + rcl ax, 1 ; d1 d0 ; 0xfaa2a __U8LS.asm:56 + dec si ; 4e ; 0xfaa2c __U8LS.asm:57 + jne short 0aa24h ; 75 f5 ; 0xfaa2d __U8LS.asm:58 + retn ; c3 ; 0xfaa2f __U8LS.asm:60 + ; disGetNextSymbol 0xfaa30 LB 0x328 -> off=0x0 cb=0000000000000010 uValue=00000000000f9430 '_fmemset_' +_fmemset_: ; 0xfaa30 LB 0x10 + push di ; 57 ; 0xfaa30 fmemset.asm:52 + mov es, dx ; 8e c2 ; 0xfaa31 fmemset.asm:54 + db 08bh, 0f8h + ; mov di, ax ; 8b f8 ; 0xfaa33 fmemset.asm:55 + xchg al, bl ; 86 d8 ; 0xfaa35 fmemset.asm:56 + rep stosb ; f3 aa ; 0xfaa37 fmemset.asm:57 + xchg al, bl ; 86 d8 ; 0xfaa39 fmemset.asm:58 + pop di ; 5f ; 0xfaa3b fmemset.asm:60 + retn ; c3 ; 0xfaa3c fmemset.asm:61 + times 0x3 db 0 + ; disGetNextSymbol 0xfaa40 LB 0x318 -> off=0x0 cb=000000000000003a uValue=00000000000f9440 '_fmemcpy_' +_fmemcpy_: ; 0xfaa40 LB 0x3a + push bp ; 55 ; 0xfaa40 fmemcpy.asm:52 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xfaa41 fmemcpy.asm:53 + push di ; 57 ; 0xfaa43 fmemcpy.asm:54 + push DS ; 1e ; 0xfaa44 fmemcpy.asm:55 + push si ; 56 ; 0xfaa45 fmemcpy.asm:56 + mov es, dx ; 8e c2 ; 0xfaa46 fmemcpy.asm:58 + db 08bh, 0f8h + ; mov di, ax ; 8b f8 ; 0xfaa48 fmemcpy.asm:59 + mov ds, cx ; 8e d9 ; 0xfaa4a fmemcpy.asm:60 + db 08bh, 0f3h + ; mov si, bx ; 8b f3 ; 0xfaa4c fmemcpy.asm:61 + mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfaa4e fmemcpy.asm:62 + rep movsb ; f3 a4 ; 0xfaa51 fmemcpy.asm:63 + pop si ; 5e ; 0xfaa53 fmemcpy.asm:65 + pop DS ; 1f ; 0xfaa54 fmemcpy.asm:66 + pop di ; 5f ; 0xfaa55 fmemcpy.asm:67 + db 08bh, 0e5h + ; mov sp, bp ; 8b e5 ; 0xfaa56 fmemcpy.asm:68 + pop bp ; 5d ; 0xfaa58 fmemcpy.asm:69 + retn ; c3 ; 0xfaa59 fmemcpy.asm:70 + add byte [bx+si], al ; 00 00 ; 0xfaa5a + add byte [bx+si], al ; 00 00 ; 0xfaa5c + add byte [bx+si], al ; 00 00 ; 0xfaa5e + nop ; 90 ; 0xfaa60 + stosb ; aa ; 0xfaa61 + xchg dx, ax ; 92 ; 0xfaa62 + stosb ; aa ; 0xfaa63 + popfw ; 9d ; 0xfaa64 + stosb ; aa ; 0xfaa65 + popfw ; 9d ; 0xfaa66 + stosb ; aa ; 0xfaa67 + popfw ; 9d ; 0xfaa68 + stosb ; aa ; 0xfaa69 + lahf ; 9f ; 0xfaa6a + stosb ; aa ; 0xfaa6b + lahf ; 9f ; 0xfaa6c + stosb ; aa ; 0xfaa6d + mov ax, word [0a5aah] ; a1 aa a5 ; 0xfaa6e + stosb ; aa ; 0xfaa71 + movsw ; a5 ; 0xfaa72 + stosb ; aa ; 0xfaa73 + cmpsw ; a7 ; 0xfaa74 + stosb ; aa ; 0xfaa75 + lodsb ; ac ; 0xfaa76 + stosb ; aa ; 0xfaa77 + scasb ; ae ; 0xfaa78 + stosb ; aa ; 0xfaa79 + ; disGetNextSymbol 0xfaa7a LB 0x2de -> off=0x0 cb=0000000000000041 uValue=000000000000947a 'apm_worker' +apm_worker: ; 0xfaa7a LB 0x41 + sti ; fb ; 0xfaa7a apm_pm.asm:66 + push ax ; 50 ; 0xfaa7b apm_pm.asm:68 + db 032h, 0e4h + ; xor ah, ah ; 32 e4 ; 0xfaa7c apm_pm.asm:69 + sub AL, strict byte 004h ; 2c 04 ; 0xfaa7e apm_pm.asm:70 + db 08bh, 0e8h + ; mov bp, ax ; 8b e8 ; 0xfaa80 apm_pm.asm:71 + sal bp, 1 ; d1 e5 ; 0xfaa82 apm_pm.asm:72 + cmp AL, strict byte 00dh ; 3c 0d ; 0xfaa84 apm_pm.asm:73 + pop ax ; 58 ; 0xfaa86 apm_pm.asm:74 + mov AH, strict byte 053h ; b4 53 ; 0xfaa87 apm_pm.asm:75 + jnc short 0aab7h ; 73 2c ; 0xfaa89 apm_pm.asm:76 + jmp word [cs:bp-055a0h] ; 2e ff a6 60 aa ; 0xfaa8b apm_pm.asm:78 + jmp short 0aab5h ; eb 23 ; 0xfaa90 apm_pm.asm:81 + push CS ; 0e ; 0xfaa92 apm_pm.asm:90 + pop ax ; 58 ; 0xfaa93 apm_pm.asm:91 + test ax, strict word 00003h ; a9 03 00 ; 0xfaa94 apm_pm.asm:92 + jne short 0aab5h ; 75 1c ; 0xfaa97 apm_pm.asm:93 + sti ; fb ; 0xfaa99 apm_pm.asm:94 + hlt ; f4 ; 0xfaa9a apm_pm.asm:95 + jmp short 0aab5h ; eb 18 ; 0xfaa9b apm_pm.asm:96 + jmp short 0aab5h ; eb 16 ; 0xfaa9d apm_pm.asm:105 + jmp short 0aab7h ; eb 16 ; 0xfaa9f apm_pm.asm:111 + mov AH, strict byte 080h ; b4 80 ; 0xfaaa1 apm_pm.asm:114 + jmp short 0aab9h ; eb 14 ; 0xfaaa3 apm_pm.asm:115 + jmp short 0aab7h ; eb 10 ; 0xfaaa5 apm_pm.asm:120 + mov ax, 00102h ; b8 02 01 ; 0xfaaa7 apm_pm.asm:123 + jmp short 0aab5h ; eb 09 ; 0xfaaaa apm_pm.asm:124 + jmp short 0aab5h ; eb 07 ; 0xfaaac apm_pm.asm:128 + mov BL, strict byte 000h ; b3 00 ; 0xfaaae apm_pm.asm:131 + mov cx, strict word 00000h ; b9 00 00 ; 0xfaab0 apm_pm.asm:132 + jmp short 0aab5h ; eb 00 ; 0xfaab3 apm_pm.asm:133 + clc ; f8 ; 0xfaab5 apm_pm.asm:136 + retn ; c3 ; 0xfaab6 apm_pm.asm:137 + mov AH, strict byte 009h ; b4 09 ; 0xfaab7 apm_pm.asm:140 + stc ; f9 ; 0xfaab9 apm_pm.asm:143 + retn ; c3 ; 0xfaaba apm_pm.asm:144 + ; disGetNextSymbol 0xfaabb LB 0x29d -> off=0x0 cb=0000000000000011 uValue=00000000000f94bb 'apm_pm16_entry' +apm_pm16_entry: ; 0xfaabb LB 0x11 + mov AH, strict byte 002h ; b4 02 ; 0xfaabb apm_pm.asm:156 + push DS ; 1e ; 0xfaabd apm_pm.asm:162 + push bp ; 55 ; 0xfaabe apm_pm.asm:163 + push CS ; 0e ; 0xfaabf apm_pm.asm:165 + pop bp ; 5d ; 0xfaac0 apm_pm.asm:166 + add bp, strict byte 00008h ; 83 c5 08 ; 0xfaac1 apm_pm.asm:167 + mov ds, bp ; 8e dd ; 0xfaac4 apm_pm.asm:168 + call 0aa7ah ; e8 b1 ff ; 0xfaac6 apm_pm.asm:170 + pop bp ; 5d ; 0xfaac9 apm_pm.asm:172 + pop DS ; 1f ; 0xfaaca apm_pm.asm:173 + retf ; cb ; 0xfaacb apm_pm.asm:175 + ; disGetNextSymbol 0xfaacc LB 0x28c -> off=0x0 cb=0000000000000265 uValue=00000000000f94cc 'DoUInt32Div' +DoUInt32Div: ; 0xfaacc LB 0x265 + push bp ; 55 ; 0xfaacc DoUInt32Div.c:37 + mov bp, sp ; 89 e5 ; 0xfaacd + push si ; 56 ; 0xfaacf + push di ; 57 ; 0xfaad0 + sub sp, strict byte 00018h ; 83 ec 18 ; 0xfaad1 + lds bx, [bp+00ch] ; c5 5e 0c ; 0xfaad4 + lea si, [bp+004h] ; 8d 76 04 ; 0xfaad7 DoUInt32Div.c:982 + mov word [bp-010h], si ; 89 76 f0 ; 0xfaada + mov [bp-00eh], ss ; 8c 56 f2 ; 0xfaadd + lea di, [bp+008h] ; 8d 7e 08 ; 0xfaae0 + mov [bp-008h], ss ; 8c 56 f8 ; 0xfaae3 + lea si, [bp-01ch] ; 8d 76 e4 ; 0xfaae6 + mov word [bp-00ch], si ; 89 76 f4 ; 0xfaae9 + mov [bp-00ah], ss ; 8c 56 f6 ; 0xfaaec + mov si, bx ; 89 de ; 0xfaaef + mov [bp-006h], ds ; 8c 5e fa ; 0xfaaf1 + cmp word [bx+002h], strict byte 00000h ; 83 7f 02 00 ; 0xfaaf4 DoUInt32Div.c:990 + jne short 0ab1ch ; 75 22 ; 0xfaaf8 + mov ax, word [bx] ; 8b 07 ; 0xfaafa DoUInt32Div.c:992 + test ax, ax ; 85 c0 ; 0xfaafc + je short 0ab19h ; 74 19 ; 0xfaafe + cmp ax, strict word 00001h ; 3d 01 00 ; 0xfab00 DoUInt32Div.c:995 + jne short 0ab1ch ; 75 17 ; 0xfab03 + xor ax, ax ; 31 c0 ; 0xfab05 DoUInt32Div.c:77 + mov word [bp+00ah], ax ; 89 46 0a ; 0xfab07 + mov word [bp+008h], ax ; 89 46 08 ; 0xfab0a DoUInt32Div.c:78 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xfab0d DoUInt32Div.c:998 + mov word [bp+004h], ax ; 89 46 04 ; 0xfab10 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xfab13 + mov word [bp+006h], ax ; 89 46 06 ; 0xfab16 + jmp near 0ad24h ; e9 08 02 ; 0xfab19 + lds bx, [bp-00ch] ; c5 5e f4 ; 0xfab1c DoUInt32Div.c:736 + mov ax, word [bx+002h] ; 8b 47 02 ; 0xfab1f + mov ds, [bp-006h] ; 8e 5e fa ; 0xfab22 + cmp ax, word [si+002h] ; 3b 44 02 ; 0xfab25 + je short 0ab42h ; 74 18 ; 0xfab28 + mov ds, [bp-00ah] ; 8e 5e f6 ; 0xfab2a DoUInt32Div.c:737 + mov ax, word [bx+002h] ; 8b 47 02 ; 0xfab2d + mov ds, [bp-006h] ; 8e 5e fa ; 0xfab30 + cmp ax, word [si+002h] ; 3b 44 02 ; 0xfab33 + jbe short 0ab3dh ; 76 05 ; 0xfab36 + mov ax, strict word 00001h ; b8 01 00 ; 0xfab38 + jmp short 0ab63h ; eb 26 ; 0xfab3b + mov ax, strict word 0ffffh ; b8 ff ff ; 0xfab3d + jmp short 0ab63h ; eb 21 ; 0xfab40 + mov ds, [bp-00ah] ; 8e 5e f6 ; 0xfab42 DoUInt32Div.c:738 + mov ax, word [bx] ; 8b 07 ; 0xfab45 + mov ds, [bp-006h] ; 8e 5e fa ; 0xfab47 + cmp ax, word [si] ; 3b 04 ; 0xfab4a + je short 0ab61h ; 74 13 ; 0xfab4c + mov ds, [bp-00ah] ; 8e 5e f6 ; 0xfab4e DoUInt32Div.c:739 + mov ax, word [bx] ; 8b 07 ; 0xfab51 + mov ds, [bp-006h] ; 8e 5e fa ; 0xfab53 + cmp ax, word [si] ; 3b 04 ; 0xfab56 + jbe short 0ab5ch ; 76 02 ; 0xfab58 + jmp short 0ab38h ; eb dc ; 0xfab5a + mov ax, strict word 0ffffh ; b8 ff ff ; 0xfab5c + jmp short 0ab63h ; eb 02 ; 0xfab5f + xor ax, ax ; 31 c0 ; 0xfab61 DoUInt32Div.c:740 + test ax, ax ; 85 c0 ; 0xfab63 DoUInt32Div.c:1006 + jnl short 0ab85h ; 7d 1e ; 0xfab65 + lds bx, [bp-00ch] ; c5 5e f4 ; 0xfab67 DoUInt32Div.c:1008 + mov ax, word [bx] ; 8b 07 ; 0xfab6a + mov dx, word [bx+002h] ; 8b 57 02 ; 0xfab6c + mov ds, [bp-008h] ; 8e 5e f8 ; 0xfab6f + mov word [di], ax ; 89 05 ; 0xfab72 + mov word [di+002h], dx ; 89 55 02 ; 0xfab74 + lds bx, [bp-010h] ; c5 5e f0 ; 0xfab77 DoUInt32Div.c:77 + mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xfab7a + mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xfab7f DoUInt32Div.c:78 + jmp short 0ab19h ; eb 94 ; 0xfab83 DoUInt32Div.c:1013 + jne short 0ab9ch ; 75 15 ; 0xfab85 + mov ds, [bp-008h] ; 8e 5e f8 ; 0xfab87 DoUInt32Div.c:77 + mov word [di+002h], ax ; 89 45 02 ; 0xfab8a + mov word [di], ax ; 89 05 ; 0xfab8d DoUInt32Div.c:78 + lds bx, [bp-010h] ; c5 5e f0 ; 0xfab8f DoUInt32Div.c:407 + mov word [bx], strict word 00001h ; c7 07 01 00 ; 0xfab92 + mov word [bx+002h], ax ; 89 47 02 ; 0xfab96 DoUInt32Div.c:408 + jmp near 0ad24h ; e9 88 01 ; 0xfab99 DoUInt32Div.c:1018 + lds bx, [bp-00ch] ; c5 5e f4 ; 0xfab9c DoUInt32Div.c:964 + mov ax, word [bx+002h] ; 8b 47 02 ; 0xfab9f + test ax, ax ; 85 c0 ; 0xfaba2 + je short 0abb7h ; 74 11 ; 0xfaba4 + push ax ; 50 ; 0xfaba6 DoUInt32Div.c:965 + mov ax, 0f000h ; b8 00 f0 ; 0xfaba7 + mov ds, ax ; 8e d8 ; 0xfabaa + call 0ad40h ; e8 91 01 ; 0xfabac + add sp, strict byte 00002h ; 83 c4 02 ; 0xfabaf + add ax, strict word 00010h ; 05 10 00 ; 0xfabb2 + jmp short 0abc4h ; eb 0d ; 0xfabb5 DoUInt32Div.c:966 + push word [bx] ; ff 37 ; 0xfabb7 DoUInt32Div.c:967 + mov ax, 0f000h ; b8 00 f0 ; 0xfabb9 + mov ds, ax ; 8e d8 ; 0xfabbc + call 0ad40h ; e8 7f 01 ; 0xfabbe + add sp, strict byte 00002h ; 83 c4 02 ; 0xfabc1 + mov word [bp-014h], ax ; 89 46 ec ; 0xfabc4 DoUInt32Div.c:969 + mov ds, [bp-006h] ; 8e 5e fa ; 0xfabc7 DoUInt32Div.c:964 + mov ax, word [si+002h] ; 8b 44 02 ; 0xfabca + test ax, ax ; 85 c0 ; 0xfabcd + je short 0abe2h ; 74 11 ; 0xfabcf + push ax ; 50 ; 0xfabd1 DoUInt32Div.c:965 + mov ax, 0f000h ; b8 00 f0 ; 0xfabd2 + mov ds, ax ; 8e d8 ; 0xfabd5 + call 0ad40h ; e8 66 01 ; 0xfabd7 + add sp, strict byte 00002h ; 83 c4 02 ; 0xfabda + add ax, strict word 00010h ; 05 10 00 ; 0xfabdd + jmp short 0abefh ; eb 0d ; 0xfabe0 DoUInt32Div.c:966 + push word [si] ; ff 34 ; 0xfabe2 DoUInt32Div.c:967 + mov ax, 0f000h ; b8 00 f0 ; 0xfabe4 + mov ds, ax ; 8e d8 ; 0xfabe7 + call 0ad40h ; e8 54 01 ; 0xfabe9 + add sp, strict byte 00002h ; 83 c4 02 ; 0xfabec + mov dx, word [bp-014h] ; 8b 56 ec ; 0xfabef DoUInt32Div.c:969 + sub dx, ax ; 29 c2 ; 0xfabf2 + mov word [bp-012h], dx ; 89 56 ee ; 0xfabf4 + mov ds, [bp-006h] ; 8e 5e fa ; 0xfabf7 DoUInt32Div.c:1024 + mov ax, word [si] ; 8b 04 ; 0xfabfa + mov word [bp-018h], ax ; 89 46 e8 ; 0xfabfc + mov ax, word [si+002h] ; 8b 44 02 ; 0xfabff + mov word [bp-016h], ax ; 89 46 ea ; 0xfac02 + test dx, dx ; 85 d2 ; 0xfac05 DoUInt32Div.c:1025 + je short 0ac5fh ; 74 56 ; 0xfac07 + mov cx, dx ; 89 d1 ; 0xfac09 DoUInt32Div.c:290 + xor ch, dh ; 30 f5 ; 0xfac0b + and cl, 01fh ; 80 e1 1f ; 0xfac0d + mov ax, word [si] ; 8b 04 ; 0xfac10 DoUInt32Div.c:292 + mov dx, word [si+002h] ; 8b 54 02 ; 0xfac12 + jcxz 0ac1dh ; e3 06 ; 0xfac15 + sal ax, 1 ; d1 e0 ; 0xfac17 + rcl dx, 1 ; d1 d2 ; 0xfac19 + loop 0ac17h ; e2 fa ; 0xfac1b + mov word [bp-018h], ax ; 89 46 e8 ; 0xfac1d + mov word [bp-016h], dx ; 89 56 ea ; 0xfac20 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xfac23 DoUInt32Div.c:773 + lds bx, [bp-00ch] ; c5 5e f4 ; 0xfac26 + cmp ax, word [bx+002h] ; 3b 47 02 ; 0xfac29 + jnbe short 0ac3dh ; 77 0f ; 0xfac2c + mov ax, word [bp-016h] ; 8b 46 ea ; 0xfac2e + cmp ax, word [bx+002h] ; 3b 47 02 ; 0xfac31 + jne short 0ac41h ; 75 0b ; 0xfac34 + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xfac36 + cmp ax, word [bx] ; 3b 07 ; 0xfac39 + jbe short 0ac41h ; 76 04 ; 0xfac3b + mov AL, strict byte 001h ; b0 01 ; 0xfac3d + jmp short 0ac43h ; eb 02 ; 0xfac3f + xor al, al ; 30 c0 ; 0xfac41 + test al, al ; 84 c0 ; 0xfac43 DoUInt32Div.c:779 + je short 0ac6ah ; 74 23 ; 0xfac45 + shr word [bp-016h], 1 ; d1 6e ea ; 0xfac47 DoUInt32Div.c:690 + rcr word [bp-018h], 1 ; d1 5e e8 ; 0xfac4a + dec word [bp-012h] ; ff 4e ee ; 0xfac4d + jmp short 0ac6ah ; eb 18 ; 0xfac50 + mov cx, strict word 0001fh ; b9 1f 00 ; 0xfac52 DoUInt32Div.c:642 + sal word [bp-018h], 1 ; d1 66 e8 ; 0xfac55 + rcl word [bp-016h], 1 ; d1 56 ea ; 0xfac58 + loop 0ac55h ; e2 f8 ; 0xfac5b + jmp short 0ac4dh ; eb ee ; 0xfac5d DoUInt32Div.c:657 + mov ax, word [si] ; 8b 04 ; 0xfac5f DoUInt32Div.c:1035 + mov word [bp-018h], ax ; 89 46 e8 ; 0xfac61 + mov ax, word [si+002h] ; 8b 44 02 ; 0xfac64 + mov word [bp-016h], ax ; 89 46 ea ; 0xfac67 + lds bx, [bp-010h] ; c5 5e f0 ; 0xfac6a DoUInt32Div.c:77 + mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xfac6d + mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xfac72 DoUInt32Div.c:78 + lds bx, [bp-00ch] ; c5 5e f4 ; 0xfac76 DoUInt32Div.c:1038 + mov dx, word [bx] ; 8b 17 ; 0xfac79 + mov ax, word [bx+002h] ; 8b 47 02 ; 0xfac7b + mov ds, [bp-008h] ; 8e 5e f8 ; 0xfac7e + mov word [di], dx ; 89 15 ; 0xfac81 + mov word [di+002h], ax ; 89 45 02 ; 0xfac83 + mov dx, word [di] ; 8b 15 ; 0xfac86 DoUInt32Div.c:792 + mov ds, [bp-006h] ; 8e 5e fa ; 0xfac88 + cmp ax, word [si+002h] ; 3b 44 02 ; 0xfac8b + jnbe short 0ac96h ; 77 06 ; 0xfac8e + jne short 0ac9ah ; 75 08 ; 0xfac90 + cmp dx, word [si] ; 3b 14 ; 0xfac92 + jc short 0ac9ah ; 72 04 ; 0xfac94 + mov AL, strict byte 001h ; b0 01 ; 0xfac96 + jmp short 0ac9ch ; eb 02 ; 0xfac98 + xor al, al ; 30 c0 ; 0xfac9a + test al, al ; 84 c0 ; 0xfac9c DoUInt32Div.c:798 + je short 0ad01h ; 74 61 ; 0xfac9e + mov ds, [bp-008h] ; 8e 5e f8 ; 0xfaca0 DoUInt32Div.c:792 + mov ax, word [di+002h] ; 8b 45 02 ; 0xfaca3 + cmp ax, word [bp-016h] ; 3b 46 ea ; 0xfaca6 + jnbe short 0acb7h ; 77 0c ; 0xfaca9 + cmp ax, word [bp-016h] ; 3b 46 ea ; 0xfacab + jne short 0acbbh ; 75 0b ; 0xfacae + mov ax, word [di] ; 8b 05 ; 0xfacb0 + cmp ax, word [bp-018h] ; 3b 46 e8 ; 0xfacb2 + jc short 0acbbh ; 72 04 ; 0xfacb5 + mov AL, strict byte 001h ; b0 01 ; 0xfacb7 + jmp short 0acbdh ; eb 02 ; 0xfacb9 + xor al, al ; 30 c0 ; 0xfacbb + test al, al ; 84 c0 ; 0xfacbd DoUInt32Div.c:798 + je short 0ace7h ; 74 26 ; 0xfacbf + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xfacc1 DoUInt32Div.c:461 + mov ds, [bp-008h] ; 8e 5e f8 ; 0xfacc4 + sub word [di], ax ; 29 05 ; 0xfacc7 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xfacc9 + sbb word [di+002h], ax ; 19 45 02 ; 0xfaccc + mov ax, strict word 00001h ; b8 01 00 ; 0xfaccf DoUInt32Div.c:596 + xor dx, dx ; 31 d2 ; 0xfacd2 + mov cx, word [bp-012h] ; 8b 4e ee ; 0xfacd4 + jcxz 0acdfh ; e3 06 ; 0xfacd7 + sal ax, 1 ; d1 e0 ; 0xfacd9 + rcl dx, 1 ; d1 d2 ; 0xfacdb + loop 0acd9h ; e2 fa ; 0xfacdd + lds bx, [bp-010h] ; c5 5e f0 ; 0xfacdf + or word [bx], ax ; 09 07 ; 0xface2 + or word [bx+002h], dx ; 09 57 02 ; 0xface4 + mov ds, [bp-008h] ; 8e 5e f8 ; 0xface7 DoUInt32Div.c:754 + mov dx, word [di] ; 8b 15 ; 0xfacea + mov ax, word [di+002h] ; 8b 45 02 ; 0xfacec + mov ds, [bp-006h] ; 8e 5e fa ; 0xfacef + cmp ax, word [si+002h] ; 3b 44 02 ; 0xfacf2 + jc short 0acfdh ; 72 06 ; 0xfacf5 + jne short 0ad03h ; 75 0a ; 0xfacf7 + cmp dx, word [si] ; 3b 14 ; 0xfacf9 + jnc short 0ad03h ; 73 06 ; 0xfacfb + mov AL, strict byte 001h ; b0 01 ; 0xfacfd + jmp short 0ad05h ; eb 04 ; 0xfacff + jmp short 0ad24h ; eb 21 ; 0xfad01 + xor al, al ; 30 c0 ; 0xfad03 + test al, al ; 84 c0 ; 0xfad05 DoUInt32Div.c:760 + je short 0ad18h ; 74 0f ; 0xfad07 + jmp short 0ad24h ; eb 19 ; 0xfad09 DoUInt32Div.c:1053 + mov cx, strict word 0001fh ; b9 1f 00 ; 0xfad0b DoUInt32Div.c:690 + sal word [bp-018h], 1 ; d1 66 e8 ; 0xfad0e + rcl word [bp-016h], 1 ; d1 56 ea ; 0xfad11 + loop 0ad0eh ; e2 f8 ; 0xfad14 + jmp short 0ad1eh ; eb 06 ; 0xfad16 DoUInt32Div.c:657 + shr word [bp-016h], 1 ; d1 6e ea ; 0xfad18 DoUInt32Div.c:663 + rcr word [bp-018h], 1 ; d1 5e e8 ; 0xfad1b + dec word [bp-012h] ; ff 4e ee ; 0xfad1e DoUInt32Div.c:1055 + jmp near 0aca0h ; e9 7c ff ; 0xfad21 DoUInt32Div.c:1056 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xfad24 DoUInt32Div.c:41 + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xfad27 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfad2a DoUInt32Div.c:42 + pop di ; 5f ; 0xfad2d + pop si ; 5e ; 0xfad2e + pop bp ; 5d ; 0xfad2f + retn ; c3 ; 0xfad30 + ; disGetNextSymbol 0xfad31 LB 0x27 -> off=0xf cb=0000000000000018 uValue=00000000000f9740 '_ASMBitLastSetU16' + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h +_ASMBitLastSetU16: ; 0xfad40 LB 0x18 + push bp ; 55 ; 0xfad40 ASMBitLastSetU16.asm:53 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xfad41 ASMBitLastSetU16.asm:54 + mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfad43 ASMBitLastSetU16.asm:56 + test cx, cx ; 85 c9 ; 0xfad46 ASMBitLastSetU16.asm:57 + je short 0ad54h ; 74 0a ; 0xfad48 ASMBitLastSetU16.asm:58 + mov ax, strict word 00010h ; b8 10 00 ; 0xfad4a ASMBitLastSetU16.asm:60 + sal cx, 1 ; d1 e1 ; 0xfad4d ASMBitLastSetU16.asm:62 + jc short 0ad56h ; 72 05 ; 0xfad4f ASMBitLastSetU16.asm:63 + dec ax ; 48 ; 0xfad51 ASMBitLastSetU16.asm:64 + jmp short 0ad4dh ; eb f9 ; 0xfad52 ASMBitLastSetU16.asm:65 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfad54 ASMBitLastSetU16.asm:68 + pop bp ; 5d ; 0xfad56 ASMBitLastSetU16.asm:70 + retn ; c3 ; 0xfad57 ASMBitLastSetU16.asm:71 + + ; Padding 0x2ca8 bytes at 0xfad58 + times 11432 db 0 + +section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3a6 class=CODE group=AUTO + ; disGetNextSymbol 0xfda00 LB 0x3a6 -> off=0x0 cb=0000000000000026 uValue=00000000000f0000 'bios32_service' +bios32_service: ; 0xfda00 LB 0x26 + pushfw ; 9c ; 0xfda00 pcibio32.asm:62 + cmp bl, 000h ; 80 fb 00 ; 0xfda01 pcibio32.asm:64 + jne short 0da22h ; 75 1c ; 0xfda04 pcibio32.asm:65 + cmp ax, 05024h ; 3d 24 50 ; 0xfda06 pcibio32.asm:67 + inc bx ; 43 ; 0xfda09 + dec cx ; 49 ; 0xfda0a + mov AL, strict byte 080h ; b0 80 ; 0xfda0b pcibio32.asm:68 + jne short 0da20h ; 75 11 ; 0xfda0d pcibio32.asm:69 + mov bx, strict word 00000h ; bb 00 00 ; 0xfda0f pcibio32.asm:71 + 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:73 + add byte [bx+si], al ; 00 00 ; 0xfda1c + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfda1e pcibio32.asm:74 + popfw ; 9d ; 0xfda20 pcibio32.asm:76 + retf ; cb ; 0xfda21 pcibio32.asm:77 + mov AL, strict byte 081h ; b0 81 ; 0xfda22 pcibio32.asm:80 + jmp short 0da20h ; eb fa ; 0xfda24 pcibio32.asm:81 + ; disGetNextSymbol 0xfda26 LB 0x380 -> off=0x0 cb=000000000000000d uValue=00000000000f0026 'pcibios32_entry' +pcibios32_entry: ; 0xfda26 LB 0xd + pushfw ; 9c ; 0xfda26 pcibio32.asm:90 + cld ; fc ; 0xfda27 pcibio32.asm:91 + push ES ; 06 ; 0xfda28 pcibio32.asm:93 + pushaw ; 60 ; 0xfda29 pcibio32.asm:94 + call 0db52h ; e8 25 01 ; 0xfda2a pcibio32.asm:95 + add byte [bx+si], al ; 00 00 ; 0xfda2d + popaw ; 61 ; 0xfda2f pcibio32.asm:96 + pop ES ; 07 ; 0xfda30 pcibio32.asm:97 + popfw ; 9d ; 0xfda31 pcibio32.asm:99 + retf ; cb ; 0xfda32 pcibio32.asm:100 + ; disGetNextSymbol 0xfda33 LB 0x373 -> off=0x0 cb=0000000000000022 uValue=00000000000f0033 'pci32_select_reg_' +pci32_select_reg_: ; 0xfda33 LB 0x22 + push bp ; 55 ; 0xfda33 pci32.c:198 + mov bp, sp ; 89 e5 ; 0xfda34 + push bx ; 53 ; 0xfda36 + and dl, 0fch ; 80 e2 fc ; 0xfda37 pci32.c:200 + 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:201 + pop bx ; 5b ; 0xfda52 + pop bp ; 5d ; 0xfda53 + retn ; c3 ; 0xfda54 + ; disGetNextSymbol 0xfda55 LB 0x351 -> off=0x0 cb=00000000000000ff uValue=00000000000f0055 'pci32_find_device_' +pci32_find_device_: ; 0xfda55 LB 0xff + push bp ; 55 ; 0xfda55 pci32.c:233 + mov bp, sp ; 89 e5 ; 0xfda56 + push si ; 56 ; 0xfda58 + push di ; 57 ; 0xfda59 + sub sp, strict byte 00014h ; 83 ec 14 ; 0xfda5a + push ax ; 50 ; 0xfda5d + mov si, dx ; 89 d6 ; 0xfda5e + mov di, bx ; 89 df ; 0xfda60 + mov word [di-01ch], cx ; 89 4d e4 ; 0xfda62 + test bx, bx ; 85 db ; 0xfda65 pci32.c:243 + xor bx, bx ; 31 db ; 0xfda67 pci32.c:250 + xor cl, cl ; 30 c9 ; 0xfda69 pci32.c:251 + test bl, 007h ; f6 c3 07 ; 0xfda6b pci32.c:261 + jne short 0daaah ; 75 3a ; 0xfda6e + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfda70 pci32.c:262 + 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:263 + 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-00ch], al ; 88 45 f4 ; 0xfda85 + cmp AL, strict byte 0ffh ; 3c ff ; 0xfda88 pci32.c:264 + jne short 0da94h ; 75 08 ; 0xfda8a + add bx, strict byte 00008h ; 83 c3 08 ; 0xfda8c pci32.c:265 + jmp near 0db2ah ; e9 98 00 ; 0xfda8f pci32.c:266 + add byte [bx+si], al ; 00 00 ; 0xfda92 + test byte [di-00ch], 080h ; f6 45 f4 80 ; 0xfda94 pci32.c:268 + je short 0daa3h ; 74 09 ; 0xfda98 + mov word [di-010h], strict word 00001h ; c7 45 f0 01 00 ; 0xfda9a pci32.c:269 + add byte [bx+si], al ; 00 00 ; 0xfda9f + jmp short 0daaah ; eb 07 ; 0xfdaa1 pci32.c:270 + mov word [di-010h], strict word 00008h ; c7 45 f0 08 00 ; 0xfdaa3 pci32.c:271 + add byte [bx+si], al ; 00 00 ; 0xfdaa8 + mov al, byte [di-00ch] ; 8a 45 f4 ; 0xfdaaa pci32.c:282 + and AL, strict byte 007h ; 24 07 ; 0xfdaad + cmp AL, strict byte 001h ; 3c 01 ; 0xfdaaf + jne short 0dad7h ; 75 24 ; 0xfdab1 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdab3 + mov dx, ax ; 89 c2 ; 0xfdab6 + sar dx, 008h ; c1 fa 08 ; 0xfdab8 + test dx, dx ; 85 d2 ; 0xfdabb + jne short 0dad7h ; 75 18 ; 0xfdabd + mov dx, strict word 0001ah ; ba 1a 00 ; 0xfdabf pci32.c:284 + add byte [bx+si], al ; 00 00 ; 0xfdac2 + call 0da31h ; e8 6a ff ; 0xfdac4 + db 0ffh + db 0ffh + mov dx, 00cfeh ; ba fe 0c ; 0xfdac9 pci32.c:285 + add byte [bx+si], al ; 00 00 ; 0xfdacc + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdace + in AL, DX ; ec ; 0xfdad0 + cmp al, cl ; 38 c8 ; 0xfdad1 pci32.c:286 + jbe short 0dad7h ; 76 02 ; 0xfdad3 + mov cl, al ; 88 c1 ; 0xfdad5 pci32.c:287 + test di, di ; 85 ff ; 0xfdad7 pci32.c:291 + je short 0dae2h ; 74 07 ; 0xfdad9 + mov ax, strict word 00008h ; b8 08 00 ; 0xfdadb + add byte [bx+si], al ; 00 00 ; 0xfdade + jmp short 0dae4h ; eb 02 ; 0xfdae0 + xor ax, ax ; 31 c0 ; 0xfdae2 + db 00fh, 0b7h, 0d0h + ; movzx dx, ax ; 0f b7 d0 ; 0xfdae4 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdae7 + call 0da31h ; e8 44 ff ; 0xfdaea + db 0ffh + db 0ffh + mov dx, 00cfch ; ba fc 0c ; 0xfdaef pci32.c:292 + add byte [bx+si], al ; 00 00 ; 0xfdaf2 + in ax, DX ; ed ; 0xfdaf4 + mov word [di-014h], ax ; 89 45 ec ; 0xfdaf5 + mov word [di-018h], strict word 00000h ; c7 45 e8 00 00 ; 0xfdaf8 pci32.c:293 + add byte [bx+si], al ; 00 00 ; 0xfdafd + test di, di ; 85 ff ; 0xfdaff pci32.c:296 + je short 0db14h ; 74 11 ; 0xfdb01 + cmp word [di-01ch], strict byte 00000h ; 83 7d e4 00 ; 0xfdb03 pci32.c:297 + je short 0db0eh ; 74 05 ; 0xfdb07 + shr ax, 010h ; c1 e8 10 ; 0xfdb09 pci32.c:298 + jmp short 0db11h ; eb 03 ; 0xfdb0c pci32.c:299 + shr ax, 008h ; c1 e8 08 ; 0xfdb0e pci32.c:300 + mov word [di-014h], ax ; 89 45 ec ; 0xfdb11 + mov ax, word [di-014h] ; 8b 45 ec ; 0xfdb14 pci32.c:307 + cmp ax, word [di-020h] ; 3b 45 e0 ; 0xfdb17 + je short 0db22h ; 74 06 ; 0xfdb1a + cmp word [di-018h], strict byte 00000h ; 83 7d e8 00 ; 0xfdb1c pci32.c:308 + je short 0db29h ; 74 07 ; 0xfdb20 + dec si ; 4e ; 0xfdb22 + cmp esi, strict byte 0ffffffffh ; 66 83 fe ff ; 0xfdb23 + je short 0db3dh ; 74 14 ; 0xfdb27 + add bx, word [di-010h] ; 03 5d f0 ; 0xfdb29 pci32.c:316 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdb2c pci32.c:317 + sar ax, 008h ; c1 f8 08 ; 0xfdb2f + movzx dx, cl ; 0f b6 d1 ; 0xfdb32 + cmp ax, dx ; 39 d0 ; 0xfdb35 + jle near 0da69h ; 0f 8e 2e ff ; 0xfdb37 + db 0ffh + jmp word [bp-07dh] ; ff 66 83 ; 0xfdb3c + db 0feh + push word [di+005h] ; ff 75 05 ; 0xfdb40 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdb43 + jmp short 0db4dh ; eb 05 ; 0xfdb46 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xfdb48 + add byte [bx+si], al ; 00 00 ; 0xfdb4b + lea sp, [di-008h] ; 8d 65 f8 ; 0xfdb4d pci32.c:324 + pop di ; 5f ; 0xfdb50 + pop si ; 5e ; 0xfdb51 + pop bp ; 5d ; 0xfdb52 + retn ; c3 ; 0xfdb53 + ; disGetNextSymbol 0xfdb54 LB 0x252 -> off=0x0 cb=0000000000000252 uValue=00000000000f0154 '_pci32_function' +_pci32_function: ; 0xfdb54 LB 0x252 + push bp ; 55 ; 0xfdb54 pci32.c:326 + mov bp, sp ; 89 e5 ; 0xfdb55 + push bx ; 53 ; 0xfdb57 + push si ; 56 ; 0xfdb58 + push di ; 57 ; 0xfdb59 + push ax ; 50 ; 0xfdb5a + and dword [di+024h], strict dword 0658100ffh ; 66 81 65 24 ff 00 81 65 ; 0xfdb5b pci32.c:333 + sub AL, strict byte 0feh ; 2c fe ; 0xfdb63 + inc word [bx+si] ; ff 00 ; 0xfdb65 + add byte [bp+di+02445h], cl ; 00 8b 45 24 ; 0xfdb67 + xor ah, ah ; 30 e4 ; 0xfdb6b + cmp eax, strict dword 029720003h ; 66 3d 03 00 72 29 ; 0xfdb6d + jbe near 0dc12h ; 0f 86 9b 00 ; 0xfdb73 + add byte [bx+si], al ; 00 00 ; 0xfdb77 + cmp eax, strict dword 0840f000eh ; 66 3d 0e 00 0f 84 ; 0xfdb79 + lodsw ; ad ; 0xfdb7f + add word [bx+si], ax ; 01 00 ; 0xfdb80 + add byte [bp+03dh], ah ; 00 66 3d ; 0xfdb82 + or byte [bx+si], al ; 08 00 ; 0xfdb85 + jc near 0dd8ch ; 0f 82 01 02 ; 0xfdb87 + add byte [bx+si], al ; 00 00 ; 0xfdb8b + cmp eax, strict dword 0860f000dh ; 66 3d 0d 00 0f 86 ; 0xfdb8d + lodsb ; ac ; 0xfdb93 + add byte [bx+si], al ; 00 00 ; 0xfdb94 + add cl, ch ; 00 e9 ; 0xfdb96 + repne add word [bx+si], ax ; f2 01 00 ; 0xfdb98 + add byte [bp+03dh], ah ; 00 66 3d ; 0xfdb9b + add al, byte [bx+si] ; 02 00 ; 0xfdb9e + je short 0dbcah ; 74 28 ; 0xfdba0 + cmp eax, strict dword 0850f0001h ; 66 3d 01 00 0f 85 ; 0xfdba2 + loop 0dbabh ; e2 01 ; 0xfdba8 + add byte [bx+si], al ; 00 00 ; 0xfdbaa + mov dword [di+024h], strict dword 0c7660001h ; 66 c7 45 24 01 00 66 c7 ; 0xfdbac pci32.c:338 + inc bp ; 45 ; 0xfdbb4 + sbb byte [bx+si], dl ; 18 10 ; 0xfdbb5 + add dh, byte [bx+di] ; 02 31 ; 0xfdbb7 + sal byte [bp-077h], 045h ; c0 66 89 45 ; 0xfdbb9 + and bh, al ; 20 c7 ; 0xfdbbd + inc bp ; 45 ; 0xfdbbf + sbb AL, strict byte 050h ; 1c 50 ; 0xfdbc0 + inc bx ; 43 ; 0xfdbc2 + dec cx ; 49 ; 0xfdbc3 + and cl, ch ; 20 e9 ; 0xfdbc4 + aam 001h ; d4 01 ; 0xfdbc6 + add byte [bx+si], al ; 00 00 ; 0xfdbc8 + cmp dword [di+01ch], strict byte 0ffffffffh ; 66 83 7d 1c ff ; 0xfdbca pci32.c:348 + jne short 0dbdeh ; 75 0d ; 0xfdbcf + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbd1 pci32.c:349 + xor ah, ah ; 30 e4 ; 0xfdbd4 + or ah, 083h ; 80 cc 83 ; 0xfdbd6 + jmp near 0dd94h ; e9 b8 01 ; 0xfdbd9 pci32.c:350 + add byte [bx+si], al ; 00 00 ; 0xfdbdc + xor cx, cx ; 31 c9 ; 0xfdbde pci32.c:352 + xor bx, bx ; 31 db ; 0xfdbe0 + db 00fh, 0b7h, 055h, 00ch + ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdbe2 + db 00fh, 0b7h, 045h, 020h + ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdbe6 + sal ax, 010h ; c1 e0 10 ; 0xfdbea + db 00fh, 0b7h, 075h, 01ch + ; movzx si, [di+01ch] ; 0f b7 75 1c ; 0xfdbed + or ax, si ; 09 f0 ; 0xfdbf1 + call 0da53h ; e8 5d fe ; 0xfdbf3 + db 0ffh + jmp word [bp+03dh] ; ff 66 3d ; 0xfdbf7 + db 0ffh + push word [di+00dh] ; ff 75 0d ; 0xfdbfb + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbfe pci32.c:354 + xor ah, ah ; 30 e4 ; 0xfdc01 + or ah, 086h ; 80 cc 86 ; 0xfdc03 + jmp near 0dd94h ; e9 8b 01 ; 0xfdc06 + add byte [bx+si], al ; 00 00 ; 0xfdc09 + mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc0b pci32.c:355 + jmp near 0dd9ch ; e9 8a 01 ; 0xfdc0f pci32.c:360 + add byte [bx+si], al ; 00 00 ; 0xfdc12 + db 00fh, 0b7h, 055h, 00ch + ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc14 pci32.c:362 + mov ax, word [di+020h] ; 8b 45 20 ; 0xfdc18 + xor cx, cx ; 31 c9 ; 0xfdc1b + mov bx, strict word 00001h ; bb 01 00 ; 0xfdc1d + add byte [bx+si], al ; 00 00 ; 0xfdc20 + call 0da53h ; e8 2e fe ; 0xfdc22 + db 0ffh + jmp word [bp+03dh] ; ff 66 3d ; 0xfdc26 + db 0ffh + push word [di+00dh] ; ff 75 0d ; 0xfdc2a + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc2d pci32.c:364 + xor ah, ah ; 30 e4 ; 0xfdc30 + or ah, 086h ; 80 cc 86 ; 0xfdc32 + jmp near 0dd94h ; e9 5c 01 ; 0xfdc35 pci32.c:365 + add byte [bx+si], al ; 00 00 ; 0xfdc38 + mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc3a pci32.c:367 + jmp near 0dd9ch ; e9 5b 01 ; 0xfdc3e pci32.c:369 + add byte [bx+si], al ; 00 00 ; 0xfdc41 + cmp dword [di+008h], strict dword 00d720100h ; 66 81 7d 08 00 01 72 0d ; 0xfdc43 pci32.c:376 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc4b pci32.c:377 + xor ah, ah ; 30 e4 ; 0xfdc4e + or ah, 087h ; 80 cc 87 ; 0xfdc50 + jmp near 0dd94h ; e9 3e 01 ; 0xfdc53 pci32.c:378 + add byte [bx+si], al ; 00 00 ; 0xfdc56 + db 00fh, 0b7h, 055h, 008h + ; movzx dx, [di+008h] ; 0f b7 55 08 ; 0xfdc58 pci32.c:380 + db 00fh, 0b7h, 045h, 018h + ; movzx ax, [di+018h] ; 0f b7 45 18 ; 0xfdc5c + call 0da31h ; e8 ce fd ; 0xfdc60 + db 0ffh + dec word [bp+di+02445h] ; ff 8b 45 24 ; 0xfdc64 + xor ah, ah ; 30 e4 ; 0xfdc68 + cmp eax, strict dword 02172000ah ; 66 3d 0a 00 72 21 ; 0xfdc6a + jbe short 0dce1h ; 76 6f ; 0xfdc70 + cmp eax, strict dword 0840f000dh ; 66 3d 0d 00 0f 84 ; 0xfdc72 + test ax, strict word 00000h ; a9 00 00 ; 0xfdc78 + add byte [bp+03dh], ah ; 00 66 3d ; 0xfdc7b + or AL, strict byte 000h ; 0c 00 ; 0xfdc7e + je near 0dd07h ; 0f 84 83 00 ; 0xfdc80 + add byte [bx+si], al ; 00 00 ; 0xfdc84 + cmp eax, strict dword 06374000bh ; 66 3d 0b 00 74 63 ; 0xfdc86 + jmp near 0dd9ch ; e9 0d 01 ; 0xfdc8c + add byte [bx+si], al ; 00 00 ; 0xfdc8f + cmp eax, strict dword 02d740009h ; 66 3d 09 00 74 2d ; 0xfdc91 + cmp eax, strict dword 0850f0008h ; 66 3d 08 00 0f 85 ; 0xfdc97 + std ; fd ; 0xfdc9d + add byte [bx+si], al ; 00 00 ; 0xfdc9e + add byte [bp+di+0205dh], cl ; 00 8b 5d 20 ; 0xfdca0 + xor bl, bl ; 30 db ; 0xfdca4 + mov ax, word [di+008h] ; 8b 45 08 ; 0xfdca6 + xor ah, ah ; 30 e4 ; 0xfdca9 + and AL, strict byte 003h ; 24 03 ; 0xfdcab + db 00fh, 0b7h, 0d0h + ; movzx dx, ax ; 0f b7 d0 ; 0xfdcad + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcb0 + add byte [bx+si], al ; 00 00 ; 0xfdcb4 + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdcb6 + in AL, DX ; ec ; 0xfdcb8 + or bx, ax ; 09 c3 ; 0xfdcb9 + mov dword [di+020h], ebx ; 66 89 5d 20 ; 0xfdcbb + jmp near 0dd9ch ; e9 da 00 ; 0xfdcbf pci32.c:384 + add byte [bx+si], al ; 00 00 ; 0xfdcc2 + mov ax, word [di+008h] ; 8b 45 08 ; 0xfdcc4 pci32.c:386 + xor ah, ah ; 30 e4 ; 0xfdcc7 + and AL, strict byte 002h ; 24 02 ; 0xfdcc9 + db 00fh, 0b7h, 0d0h + ; movzx dx, ax ; 0f b7 d0 ; 0xfdccb + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcce + add byte [bx+si], al ; 00 00 ; 0xfdcd2 + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdcd4 + in eax, DX ; 66 ed ; 0xfdcd6 + mov dword [di+020h], eax ; 66 89 45 20 ; 0xfdcd8 + jmp near 0dd9ch ; e9 bd 00 ; 0xfdcdc pci32.c:387 + add byte [bx+si], al ; 00 00 ; 0xfdcdf + mov dx, 00cfch ; ba fc 0c ; 0xfdce1 pci32.c:389 + add byte [bx+si], al ; 00 00 ; 0xfdce4 + in ax, DX ; ed ; 0xfdce6 + mov word [di+020h], ax ; 89 45 20 ; 0xfdce7 + jmp near 0dd9ch ; e9 af 00 ; 0xfdcea pci32.c:390 + add byte [bx+si], al ; 00 00 ; 0xfdced + mov ax, word [di+020h] ; 8b 45 20 ; 0xfdcef pci32.c:392 + mov dx, word [di+008h] ; 8b 55 08 ; 0xfdcf2 + xor dh, dh ; 30 f6 ; 0xfdcf5 + and dl, 003h ; 80 e2 03 ; 0xfdcf7 + db 00fh, 0b7h, 0d2h + ; movzx dx, dx ; 0f b7 d2 ; 0xfdcfa + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcfd + add byte [bx+si], al ; 00 00 ; 0xfdd01 + out DX, AL ; ee ; 0xfdd03 + jmp near 0dd9ch ; e9 95 00 ; 0xfdd04 pci32.c:393 + add byte [bx+si], al ; 00 00 ; 0xfdd07 + db 00fh, 0b7h, 045h, 020h + ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdd09 pci32.c:395 + mov dx, word [di+008h] ; 8b 55 08 ; 0xfdd0d + xor dh, dh ; 30 f6 ; 0xfdd10 + and dl, 002h ; 80 e2 02 ; 0xfdd12 + db 00fh, 0b7h, 0d2h + ; movzx dx, dx ; 0f b7 d2 ; 0xfdd15 + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdd18 + add byte [bx+si], al ; 00 00 ; 0xfdd1c + out DX, eax ; 66 ef ; 0xfdd1e + jmp near 0dd9ch ; e9 79 00 ; 0xfdd20 pci32.c:396 + add byte [bx+si], al ; 00 00 ; 0xfdd23 + mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd25 pci32.c:398 + mov dx, 00cfch ; ba fc 0c ; 0xfdd28 + add byte [bx+si], al ; 00 00 ; 0xfdd2b + out DX, ax ; ef ; 0xfdd2d + jmp short 0dd9eh ; eb 6e ; 0xfdd2e pci32.c:402 + db 00fh, 0b7h, 045h, 008h + ; movzx ax, [di+008h] ; 0f b7 45 08 ; 0xfdd30 pci32.c:404 + mov es, [di+028h] ; 8e 45 28 ; 0xfdd34 + mov [di-010h], es ; 8c 45 f0 ; 0xfdd37 + mov bx, ax ; 89 c3 ; 0xfdd3a + mov edx, dword [di] ; 66 8b 15 ; 0xfdd3c pci32.c:408 + pushaw ; 60 ; 0xfdd3f + rep add byte [bx+si], al ; f3 00 00 ; 0xfdd40 + db 066h, 026h, 03bh, 010h + ; cmp edx, dword [es:bx+si] ; 66 26 3b 10 ; 0xfdd43 + jbe short 0dd5bh ; 76 12 ; 0xfdd47 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd49 pci32.c:409 + xor ah, ah ; 30 e4 ; 0xfdd4c + or ah, 089h ; 80 cc 89 ; 0xfdd4e + mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd51 + or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd55 pci32.c:410 + jmp short 0dd7fh ; eb 24 ; 0xfdd59 pci32.c:411 + db 00fh, 0b7h, 0cah + ; movzx cx, dx ; 0f b7 ca ; 0xfdd5b pci32.c:412 + db 066h, 026h, 08bh, 078h, 006h + ; mov edi, dword [es:bx+si+006h] ; 66 26 8b 78 06 ; 0xfdd5e + mov ax, word [es:bx+si+002h] ; 26 8b 40 02 ; 0xfdd63 + mov dx, ds ; 8c da ; 0xfdd67 + mov si, 0f180h ; be 80 f1 ; 0xfdd69 + add byte [bx+si], al ; 00 00 ; 0xfdd6c + mov es, di ; 8e c7 ; 0xfdd6e + mov di, ax ; 89 c7 ; 0xfdd70 + push DS ; 1e ; 0xfdd72 + db 066h, 08eh, 0dah + ; mov ds, edx ; 66 8e da ; 0xfdd73 + rep movsb ; f3 a4 ; 0xfdd76 + pop DS ; 1f ; 0xfdd78 + mov dword [di+018h], strict dword 0a1660a00h ; 66 c7 45 18 00 0a 66 a1 ; 0xfdd79 pci32.c:414 + pushaw ; 60 ; 0xfdd81 + rep add byte [bx+si], al ; f3 00 00 ; 0xfdd82 + mov es, [di-010h] ; 8e 45 f0 ; 0xfdd85 + db 066h, 026h, 089h, 003h + ; mov dword [es:bp+di], eax ; 66 26 89 03 ; 0xfdd88 + jmp short 0dd9eh ; eb 10 ; 0xfdd8c pci32.c:417 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd8e pci32.c:420 + xor ah, ah ; 30 e4 ; 0xfdd91 + or ah, 081h ; 80 cc 81 ; 0xfdd93 + mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd96 + or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd9a pci32.c:421 + lea sp, [di-00ch] ; 8d 65 f4 ; 0xfdd9e pci32.c:423 + pop di ; 5f ; 0xfdda1 + pop si ; 5e ; 0xfdda2 + pop bx ; 5b ; 0xfdda3 + pop bp ; 5d ; 0xfdda4 + retn ; c3 ; 0xfdda5 + + ; Padding 0x2 bytes at 0xfdda6 + times 2 db 0 + +section BIOS32CONST progbits vstart=0xdda8 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP + +section BIOS32CONST2 progbits vstart=0xdda8 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP + +section BIOS32_DATA progbits vstart=0xdda8 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP + + ; Padding 0x258 bytes at 0xfdda8 + times 600 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:247 + out strict byte 0a0h, AL ; e6 a0 ; 0xfe032 orgs.asm:248 + ; 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:250 + out strict byte 020h, AL ; e6 20 ; 0xfe036 orgs.asm:251 + retn ; c3 ; 0xfe038 orgs.asm:252 + ; 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:259 + mov word [bx+002h], dx ; 89 57 02 ; 0xfe03b orgs.asm:260 + add bx, strict byte 00004h ; 83 c3 04 ; 0xfe03e orgs.asm:261 + loop 0e039h ; e2 f6 ; 0xfe041 orgs.asm:262 + retn ; c3 ; 0xfe043 orgs.asm:263 + ; 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:271 + mov AL, strict byte 020h ; b0 20 ; 0xfe046 orgs.asm:272 + out strict byte 020h, AL ; e6 20 ; 0xfe048 orgs.asm:273 + ; 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:276 + mov ds, ax ; 8e d8 ; 0xfe04d orgs.asm:277 + jmp far [word 00067h] ; ff 2e 67 00 ; 0xfe04f orgs.asm:278 + ; 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:287 + smsw ax ; 0f 01 e0 ; 0xfe05c orgs.asm:293 + test ax, strict word 00001h ; a9 01 00 ; 0xfe05f orgs.asm:294 + je short 0e06ah ; 74 06 ; 0xfe062 orgs.asm:295 + mov AL, strict byte 001h ; b0 01 ; 0xfe064 orgs.asm:304 + out strict byte 092h, AL ; e6 92 ; 0xfe066 orgs.asm:305 + jmp short 0e068h ; eb fe ; 0xfe068 orgs.asm:306 + mov AL, strict byte 00fh ; b0 0f ; 0xfe06a orgs.asm:311 + out strict byte 070h, AL ; e6 70 ; 0xfe06c orgs.asm:312 + in AL, strict byte 071h ; e4 71 ; 0xfe06e orgs.asm:313 + xchg ah, al ; 86 c4 ; 0xfe070 orgs.asm:316 + in AL, strict byte 064h ; e4 64 ; 0xfe072 orgs.asm:320 + test AL, strict byte 004h ; a8 04 ; 0xfe074 orgs.asm:321 + je short 0e08bh ; 74 13 ; 0xfe076 orgs.asm:322 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfe078 orgs.asm:325 + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xfe07a orgs.asm:326 + jne short 0e08bh ; 75 0d ; 0xfe07c orgs.asm:327 + mov ds, [cs:0e053h] ; 2e 8e 1e 53 e0 ; 0xfe07e orgs.asm:333 + cmp word [word 00072h], 01234h ; 81 3e 72 00 34 12 ; 0xfe083 orgs.asm:334 + jne short 0e064h ; 75 d9 ; 0xfe089 orgs.asm:335 + mov AL, strict byte 00fh ; b0 0f ; 0xfe08b orgs.asm:339 + out strict byte 070h, AL ; e6 70 ; 0xfe08d orgs.asm:340 + mov AL, strict byte 000h ; b0 00 ; 0xfe08f orgs.asm:341 + out strict byte 071h, AL ; e6 71 ; 0xfe091 orgs.asm:342 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfe093 orgs.asm:346 + cmp AL, strict byte 009h ; 3c 09 ; 0xfe095 orgs.asm:347 + je short 0e0abh ; 74 12 ; 0xfe097 orgs.asm:348 + cmp AL, strict byte 00ah ; 3c 0a ; 0xfe099 orgs.asm:349 + je short 0e0abh ; 74 0e ; 0xfe09b orgs.asm:350 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfe09d orgs.asm:352 + out strict byte 00dh, AL ; e6 0d ; 0xfe09f orgs.asm:355 + out strict byte 0dah, AL ; e6 da ; 0xfe0a1 orgs.asm:356 + mov AL, strict byte 0c0h ; b0 c0 ; 0xfe0a3 orgs.asm:359 + out strict byte 0d6h, AL ; e6 d6 ; 0xfe0a5 orgs.asm:360 + mov AL, strict byte 000h ; b0 00 ; 0xfe0a7 orgs.asm:361 + out strict byte 0d4h, AL ; e6 d4 ; 0xfe0a9 orgs.asm:362 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfe0ab orgs.asm:366 + cmp AL, strict byte 000h ; 3c 00 ; 0xfe0ad orgs.asm:367 + je short 0e0c9h ; 74 18 ; 0xfe0af orgs.asm:368 + cmp AL, strict byte 00dh ; 3c 0d ; 0xfe0b1 orgs.asm:370 + jnc short 0e0c9h ; 73 14 ; 0xfe0b3 orgs.asm:371 + cmp AL, strict byte 009h ; 3c 09 ; 0xfe0b5 orgs.asm:372 + jne short 0e0bch ; 75 03 ; 0xfe0b7 orgs.asm:373 + jmp near 0e350h ; e9 94 02 ; 0xfe0b9 orgs.asm:374 + mov sp, 00400h ; bc 00 04 ; 0xfe0bc orgs.asm:377 + cmp AL, strict byte 005h ; 3c 05 ; 0xfe0bf orgs.asm:379 + je short 0e044h ; 74 81 ; 0xfe0c1 orgs.asm:380 + cmp AL, strict byte 00ah ; 3c 0a ; 0xfe0c3 orgs.asm:382 + je short 0e04ah ; 74 83 ; 0xfe0c5 orgs.asm:383 + jmp short 0e0c9h ; eb 00 ; 0xfe0c7 orgs.asm:387 + ; disGetNextSymbol 0xfe0c9 LB 0x1f37 -> off=0x0 cb=00000000000001ec uValue=00000000000f00c9 'normal_post' +normal_post: ; 0xfe0c9 LB 0x1ec + mov ax, 07800h ; b8 00 78 ; 0xfe0c9 orgs.asm:396 + db 08bh, 0e0h + ; mov sp, ax ; 8b e0 ; 0xfe0cc orgs.asm:397 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe0ce orgs.asm:398 + mov ds, ax ; 8e d8 ; 0xfe0d0 orgs.asm:399 + mov ss, ax ; 8e d0 ; 0xfe0d2 orgs.asm:400 + mov es, ax ; 8e c0 ; 0xfe0d4 orgs.asm:404 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xfe0d6 orgs.asm:405 + cld ; fc ; 0xfe0d8 orgs.asm:406 + mov cx, 00239h ; b9 39 02 ; 0xfe0d9 orgs.asm:407 + rep stosw ; f3 ab ; 0xfe0dc orgs.asm:408 + inc di ; 47 ; 0xfe0de orgs.asm:409 + inc di ; 47 ; 0xfe0df orgs.asm:410 + mov cx, 005c6h ; b9 c6 05 ; 0xfe0e0 orgs.asm:411 + rep stosw ; f3 ab ; 0xfe0e3 orgs.asm:412 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe0e5 orgs.asm:416 + add bx, 01000h ; 81 c3 00 10 ; 0xfe0e7 orgs.asm:418 + cmp bx, 09000h ; 81 fb 00 90 ; 0xfe0eb orgs.asm:419 + jnc short 0e0fch ; 73 0b ; 0xfe0ef orgs.asm:420 + mov es, bx ; 8e c3 ; 0xfe0f1 orgs.asm:421 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xfe0f3 orgs.asm:422 + mov cx, 08000h ; b9 00 80 ; 0xfe0f5 orgs.asm:423 + rep stosw ; f3 ab ; 0xfe0f8 orgs.asm:424 + jmp short 0e0e7h ; eb eb ; 0xfe0fa orgs.asm:425 + mov es, bx ; 8e c3 ; 0xfe0fc orgs.asm:427 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xfe0fe orgs.asm:428 + mov cx, 07ff8h ; b9 f8 7f ; 0xfe100 orgs.asm:429 + rep stosw ; f3 ab ; 0xfe103 orgs.asm:430 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe105 orgs.asm:431 + push CS ; 0e ; 0xfe107 orgs.asm:113 + pop DS ; 1f ; 0xfe108 orgs.asm:114 + cld ; fc ; 0xfe109 orgs.asm:115 + call 01761h ; e8 54 36 ; 0xfe10a orgs.asm:435 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe10d orgs.asm:442 + mov ds, bx ; 8e db ; 0xfe10f orgs.asm:443 + mov cx, strict word 00060h ; b9 60 00 ; 0xfe111 orgs.asm:444 + mov ax, 0ff53h ; b8 53 ff ; 0xfe114 orgs.asm:445 + mov dx, 0f000h ; ba 00 f0 ; 0xfe117 orgs.asm:446 + call 0e039h ; e8 1c ff ; 0xfe11a orgs.asm:447 + mov bx, 001a0h ; bb a0 01 ; 0xfe11d orgs.asm:452 + mov cx, strict word 00010h ; b9 10 00 ; 0xfe120 orgs.asm:453 + call 0e039h ; e8 13 ff ; 0xfe123 orgs.asm:454 + mov AL, strict byte 016h ; b0 16 ; 0xfe126 orgs.asm:457 + out strict byte 070h, AL ; e6 70 ; 0xfe128 orgs.asm:458 + in AL, strict byte 071h ; e4 71 ; 0xfe12a orgs.asm:459 + db 08ah, 0e0h + ; mov ah, al ; 8a e0 ; 0xfe12c orgs.asm:460 + mov AL, strict byte 015h ; b0 15 ; 0xfe12e orgs.asm:461 + out strict byte 070h, AL ; e6 70 ; 0xfe130 orgs.asm:462 + in AL, strict byte 071h ; e4 71 ; 0xfe132 orgs.asm:463 + sub ax, strict byte 00001h ; 83 e8 01 ; 0xfe134 orgs.asm:464 + mov word [00413h], ax ; a3 13 04 ; 0xfe137 orgs.asm:465 + mov ax, 0e9cch ; b8 cc e9 ; 0xfe13a orgs.asm:104 + mov word [00018h], ax ; a3 18 00 ; 0xfe13d orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe140 orgs.asm:106 + mov word [0001ah], ax ; a3 1a 00 ; 0xfe143 orgs.asm:107 + mov ax, 0f84dh ; b8 4d f8 ; 0xfe146 orgs.asm:104 + mov word [00044h], ax ; a3 44 00 ; 0xfe149 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe14c orgs.asm:106 + mov word [00046h], ax ; a3 46 00 ; 0xfe14f orgs.asm:107 + mov ax, 0f841h ; b8 41 f8 ; 0xfe152 orgs.asm:104 + mov word [00048h], ax ; a3 48 00 ; 0xfe155 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe158 orgs.asm:106 + mov word [0004ah], ax ; a3 4a 00 ; 0xfe15b orgs.asm:107 + mov ax, 0f859h ; b8 59 f8 ; 0xfe15e orgs.asm:104 + mov word [00054h], ax ; a3 54 00 ; 0xfe161 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe164 orgs.asm:106 + mov word [00056h], ax ; a3 56 00 ; 0xfe167 orgs.asm:107 + mov ax, 0efd4h ; b8 d4 ef ; 0xfe16a orgs.asm:104 + mov word [0005ch], ax ; a3 5c 00 ; 0xfe16d orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe170 orgs.asm:106 + mov word [0005eh], ax ; a3 5e 00 ; 0xfe173 orgs.asm:107 + mov ax, 0f0a4h ; b8 a4 f0 ; 0xfe176 orgs.asm:104 + mov word [00060h], ax ; a3 60 00 ; 0xfe179 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe17c orgs.asm:106 + mov word [00062h], ax ; a3 62 00 ; 0xfe17f orgs.asm:107 + mov ax, 0e6f2h ; b8 f2 e6 ; 0xfe182 orgs.asm:104 + mov word [00064h], ax ; a3 64 00 ; 0xfe185 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe188 orgs.asm:106 + mov word [00066h], ax ; a3 66 00 ; 0xfe18b orgs.asm:107 + mov ax, 0efedh ; b8 ed ef ; 0xfe18e orgs.asm:104 + mov word [00070h], ax ; a3 70 00 ; 0xfe191 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe194 orgs.asm:106 + mov word [00072h], ax ; a3 72 00 ; 0xfe197 orgs.asm:107 + call 0e778h ; e8 db 05 ; 0xfe19a orgs.asm:481 + mov ax, 0fe6eh ; b8 6e fe ; 0xfe19d orgs.asm:104 + mov word [00068h], ax ; a3 68 00 ; 0xfe1a0 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1a3 orgs.asm:106 + mov word [0006ah], ax ; a3 6a 00 ; 0xfe1a6 orgs.asm:107 + mov ax, 0fea5h ; b8 a5 fe ; 0xfe1a9 orgs.asm:104 + mov word [00020h], ax ; a3 20 00 ; 0xfe1ac orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1af orgs.asm:106 + mov word [00022h], ax ; a3 22 00 ; 0xfe1b2 orgs.asm:107 + mov AL, strict byte 034h ; b0 34 ; 0xfe1b5 orgs.asm:492 + out strict byte 043h, AL ; e6 43 ; 0xfe1b7 orgs.asm:493 + mov AL, strict byte 000h ; b0 00 ; 0xfe1b9 orgs.asm:494 + out strict byte 040h, AL ; e6 40 ; 0xfe1bb orgs.asm:495 + out strict byte 040h, AL ; e6 40 ; 0xfe1bd orgs.asm:496 + mov ax, 0f065h ; b8 65 f0 ; 0xfe1bf orgs.asm:104 + mov word [00040h], ax ; a3 40 00 ; 0xfe1c2 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1c5 orgs.asm:106 + mov word [00042h], ax ; a3 42 00 ; 0xfe1c8 orgs.asm:107 + mov ax, 0e987h ; b8 87 e9 ; 0xfe1cb orgs.asm:104 + mov word [00024h], ax ; a3 24 00 ; 0xfe1ce orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1d1 orgs.asm:106 + mov word [00026h], ax ; a3 26 00 ; 0xfe1d4 orgs.asm:107 + mov ax, 0e82eh ; b8 2e e8 ; 0xfe1d7 orgs.asm:104 + mov word [00058h], ax ; a3 58 00 ; 0xfe1da orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1dd orgs.asm:106 + mov word [0005ah], ax ; a3 5a 00 ; 0xfe1e0 orgs.asm:107 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe1e3 orgs.asm:505 + mov ds, ax ; 8e d8 ; 0xfe1e5 orgs.asm:506 + mov AL, strict byte 010h ; b0 10 ; 0xfe1e7 orgs.asm:507 + mov byte [00496h], AL ; a2 96 04 ; 0xfe1e9 orgs.asm:508 + mov bx, strict word 0001eh ; bb 1e 00 ; 0xfe1ec orgs.asm:510 + mov word [0041ah], bx ; 89 1e 1a 04 ; 0xfe1ef orgs.asm:511 + mov word [0041ch], bx ; 89 1e 1c 04 ; 0xfe1f3 orgs.asm:512 + mov word [00480h], bx ; 89 1e 80 04 ; 0xfe1f7 orgs.asm:513 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xfe1fb orgs.asm:514 + mov word [00482h], bx ; 89 1e 82 04 ; 0xfe1fe orgs.asm:515 + mov AL, strict byte 014h ; b0 14 ; 0xfe202 orgs.asm:518 + out strict byte 070h, AL ; e6 70 ; 0xfe204 orgs.asm:519 + in AL, strict byte 071h ; e4 71 ; 0xfe206 orgs.asm:520 + mov byte [00410h], AL ; a2 10 04 ; 0xfe208 orgs.asm:521 + push DS ; 1e ; 0xfe20b orgs.asm:523 + push CS ; 0e ; 0xfe20c orgs.asm:113 + pop DS ; 1f ; 0xfe20d orgs.asm:114 + cld ; fc ; 0xfe20e orgs.asm:115 + mov ax, 0c000h ; b8 00 c0 ; 0xfe20f orgs.asm:528 + mov dx, 0c800h ; ba 00 c8 ; 0xfe212 orgs.asm:529 + call 01600h ; e8 e8 33 ; 0xfe215 orgs.asm:530 + call 04d13h ; e8 f8 6a ; 0xfe218 orgs.asm:533 + pop DS ; 1f ; 0xfe21b orgs.asm:534 + mov ax, 0ff53h ; b8 53 ff ; 0xfe21c orgs.asm:104 + mov word [0003ch], ax ; a3 3c 00 ; 0xfe21f orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe222 orgs.asm:106 + mov word [0003eh], ax ; a3 3e 00 ; 0xfe225 orgs.asm:107 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe228 orgs.asm:538 + mov ds, ax ; 8e d8 ; 0xfe22a orgs.asm:539 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe22c orgs.asm:540 + mov CL, strict byte 014h ; b1 14 ; 0xfe22e orgs.asm:541 + mov dx, 00378h ; ba 78 03 ; 0xfe230 orgs.asm:542 + call 0ecedh ; e8 b7 0a ; 0xfe233 orgs.asm:543 + mov dx, 00278h ; ba 78 02 ; 0xfe236 orgs.asm:544 + call 0ecedh ; e8 b1 0a ; 0xfe239 orgs.asm:545 + sal bx, 00eh ; c1 e3 0e ; 0xfe23c orgs.asm:210 + mov ax, word [00410h] ; a1 10 04 ; 0xfe23f orgs.asm:547 + and ax, 03fffh ; 25 ff 3f ; 0xfe242 orgs.asm:548 + db 00bh, 0c3h + ; or ax, bx ; 0b c3 ; 0xfe245 orgs.asm:549 + mov word [00410h], ax ; a3 10 04 ; 0xfe247 orgs.asm:550 + mov ax, 0e746h ; b8 46 e7 ; 0xfe24a orgs.asm:104 + mov word [0002ch], ax ; a3 2c 00 ; 0xfe24d orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe250 orgs.asm:106 + mov word [0002eh], ax ; a3 2e 00 ; 0xfe253 orgs.asm:107 + mov ax, 0e746h ; b8 46 e7 ; 0xfe256 orgs.asm:104 + mov word [00030h], ax ; a3 30 00 ; 0xfe259 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe25c orgs.asm:106 + mov word [00032h], ax ; a3 32 00 ; 0xfe25f orgs.asm:107 + mov ax, 0e739h ; b8 39 e7 ; 0xfe262 orgs.asm:104 + mov word [00050h], ax ; a3 50 00 ; 0xfe265 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe268 orgs.asm:106 + mov word [00052h], ax ; a3 52 00 ; 0xfe26b orgs.asm:107 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe26e orgs.asm:556 + mov CL, strict byte 00ah ; b1 0a ; 0xfe270 orgs.asm:557 + mov dx, 003f8h ; ba f8 03 ; 0xfe272 orgs.asm:558 + call 0ed0bh ; e8 93 0a ; 0xfe275 orgs.asm:559 + mov dx, 002f8h ; ba f8 02 ; 0xfe278 orgs.asm:560 + call 0ed0bh ; e8 8d 0a ; 0xfe27b orgs.asm:561 + mov dx, 003e8h ; ba e8 03 ; 0xfe27e orgs.asm:562 + call 0ed0bh ; e8 87 0a ; 0xfe281 orgs.asm:563 + mov dx, 002e8h ; ba e8 02 ; 0xfe284 orgs.asm:564 + call 0ed0bh ; e8 81 0a ; 0xfe287 orgs.asm:565 + sal bx, 009h ; c1 e3 09 ; 0xfe28a orgs.asm:210 + mov ax, word [00410h] ; a1 10 04 ; 0xfe28d orgs.asm:567 + and ax, 0f1ffh ; 25 ff f1 ; 0xfe290 orgs.asm:568 + db 00bh, 0c3h + ; or ax, bx ; 0b c3 ; 0xfe293 orgs.asm:569 + mov word [00410h], ax ; a3 10 04 ; 0xfe295 orgs.asm:570 + mov ax, 0ff53h ; b8 53 ff ; 0xfe298 orgs.asm:104 + mov word [00128h], ax ; a3 28 01 ; 0xfe29b orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe29e orgs.asm:106 + mov word [0012ah], ax ; a3 2a 01 ; 0xfe2a1 orgs.asm:107 + mov ax, 0f8e6h ; b8 e6 f8 ; 0xfe2a4 orgs.asm:104 + mov word [001c0h], ax ; a3 c0 01 ; 0xfe2a7 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2aa orgs.asm:106 + mov word [001c2h], ax ; a3 c2 01 ; 0xfe2ad orgs.asm:107 + call 0edbfh ; e8 0c 0b ; 0xfe2b0 orgs.asm:576 + jmp short 0e303h ; eb 4e ; 0xfe2b3 orgs.asm:578 + ; disGetNextSymbol 0xfe2b5 LB 0x1d4b -> off=0x0 cb=000000000000000e uValue=00000000000f02b5 'biosorg_check_before_or_at_0E2C1h' +biosorg_check_before_or_at_0E2C1h: ; 0xfe2b5 LB 0xe + times 0xc 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:113 + pop DS ; 1f ; 0xfe2c4 orgs.asm:114 + cld ; fc ; 0xfe2c5 orgs.asm:115 + call 01722h ; e8 59 34 ; 0xfe2c6 orgs.asm:587 + iret ; cf ; 0xfe2c9 orgs.asm:588 + ; 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:591 + call 0e030h ; e8 61 fd ; 0xfe2cc orgs.asm:592 + int 002h ; cd 02 ; 0xfe2cf orgs.asm:593 + iret ; cf ; 0xfe2d1 orgs.asm:594 + ; 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:599 + mov ds, ax ; 8e d8 ; 0xfe2d4 orgs.asm:600 + mov byte [00474h], AL ; a2 74 04 ; 0xfe2d6 orgs.asm:602 + mov byte [00477h], AL ; a2 77 04 ; 0xfe2d9 orgs.asm:603 + mov byte [0048ch], AL ; a2 8c 04 ; 0xfe2dc orgs.asm:604 + mov byte [0048dh], AL ; a2 8d 04 ; 0xfe2df orgs.asm:605 + mov byte [0048eh], AL ; a2 8e 04 ; 0xfe2e2 orgs.asm:606 + mov AL, strict byte 0c0h ; b0 c0 ; 0xfe2e5 orgs.asm:607 + mov byte [00476h], AL ; a2 76 04 ; 0xfe2e7 orgs.asm:608 + mov ax, 0e3feh ; b8 fe e3 ; 0xfe2ea orgs.asm:104 + mov word [0004ch], ax ; a3 4c 00 ; 0xfe2ed orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2f0 orgs.asm:106 + mov word [0004eh], ax ; a3 4e 00 ; 0xfe2f3 orgs.asm:107 + mov ax, 0f8d4h ; b8 d4 f8 ; 0xfe2f6 orgs.asm:104 + mov word [001d8h], ax ; a3 d8 01 ; 0xfe2f9 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2fc orgs.asm:106 + mov word [001dah], ax ; a3 da 01 ; 0xfe2ff orgs.asm:107 + retn ; c3 ; 0xfe302 orgs.asm:613 + mov ax, 0f8a9h ; b8 a9 f8 ; 0xfe303 orgs.asm:104 + mov word [001d0h], ax ; a3 d0 01 ; 0xfe306 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe309 orgs.asm:106 + mov word [001d2h], ax ; a3 d2 01 ; 0xfe30c orgs.asm:107 + mov ax, 0e2cah ; b8 ca e2 ; 0xfe30f orgs.asm:104 + mov word [001d4h], ax ; a3 d4 01 ; 0xfe312 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe315 orgs.asm:106 + mov word [001d6h], ax ; a3 d6 01 ; 0xfe318 orgs.asm:107 + call 0e753h ; e8 35 04 ; 0xfe31b orgs.asm:625 + push CS ; 0e ; 0xfe31e orgs.asm:113 + pop DS ; 1f ; 0xfe31f orgs.asm:114 + cld ; fc ; 0xfe320 orgs.asm:115 + call 01c8ch ; e8 68 39 ; 0xfe321 orgs.asm:639 + call 02197h ; e8 70 3e ; 0xfe324 orgs.asm:640 + sti ; fb ; 0xfe327 orgs.asm:647 + call 0905ah ; e8 2f ad ; 0xfe328 orgs.asm:648 + cli ; fa ; 0xfe32b orgs.asm:649 + call 07f7ah ; e8 4b 9c ; 0xfe32c orgs.asm:654 + call 0ed2fh ; e8 fd 09 ; 0xfe32f orgs.asm:658 + call 0e2d2h ; e8 9d ff ; 0xfe332 orgs.asm:661 + push CS ; 0e ; 0xfe335 orgs.asm:113 + pop DS ; 1f ; 0xfe336 orgs.asm:114 + cld ; fc ; 0xfe337 orgs.asm:115 + mov ax, 0c800h ; b8 00 c8 ; 0xfe338 orgs.asm:665 + mov dx, 0f000h ; ba 00 f0 ; 0xfe33b orgs.asm:666 + call 01600h ; e8 bf 32 ; 0xfe33e orgs.asm:667 + call 01781h ; e8 3d 34 ; 0xfe341 orgs.asm:681 + call 03b43h ; e8 fc 57 ; 0xfe344 orgs.asm:684 + sti ; fb ; 0xfe347 orgs.asm:687 + int 019h ; cd 19 ; 0xfe348 orgs.asm:688 + sti ; fb ; 0xfe34a orgs.asm:690 + hlt ; f4 ; 0xfe34b orgs.asm:692 + jmp short 0e34bh ; eb fd ; 0xfe34c orgs.asm:693 + cli ; fa ; 0xfe34e orgs.asm:694 + hlt ; f4 ; 0xfe34f orgs.asm:695 + mov ax, strict word 00040h ; b8 40 00 ; 0xfe350 orgs.asm:704 + mov ds, ax ; 8e d8 ; 0xfe353 orgs.asm:705 + mov ss, [word 00069h] ; 8e 16 69 00 ; 0xfe355 orgs.asm:707 + mov sp, word [word 00067h] ; 8b 26 67 00 ; 0xfe359 orgs.asm:708 + in AL, strict byte 092h ; e4 92 ; 0xfe35d orgs.asm:710 + and AL, strict byte 0fdh ; 24 fd ; 0xfe35f orgs.asm:711 + out strict byte 092h, AL ; e6 92 ; 0xfe361 orgs.asm:712 + lidt [cs:0efe7h] ; 2e 0f 01 1e e7 ef ; 0xfe363 orgs.asm:714 + pop DS ; 1f ; 0xfe369 orgs.asm:716 + pop ES ; 07 ; 0xfe36a orgs.asm:717 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xfe36b orgs.asm:719 + in AL, strict byte 080h ; e4 80 ; 0xfe36d orgs.asm:721 + mov byte [bp+00fh], al ; 88 46 0f ; 0xfe36f orgs.asm:722 + db 03ah, 0e0h + ; cmp ah, al ; 3a e0 ; 0xfe372 orgs.asm:724 + popaw ; 61 ; 0xfe374 orgs.asm:726 + sti ; fb ; 0xfe375 orgs.asm:727 + retf 00002h ; ca 02 00 ; 0xfe376 orgs.asm:728 + ; 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:738 + ; disGetNextSymbol 0xfe401 LB 0x1bff -> off=0x0 cb=0000000000000170 uValue=00000000000f0401 'rom_fdpt' +rom_fdpt: ; 0xfe401 LB 0x170 + db 032h, 001h, 004h, 000h, 000h, 080h, 000h, 000h, 000h, 000h, 000h, 000h, 031h, 001h, 011h, 000h + db 067h, 002h, 004h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 067h, 002h, 011h, 000h + db 067h, 002h, 006h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 067h, 002h, 011h, 000h + db 0ach, 003h, 008h, 000h, 000h, 000h, 002h, 000h, 000h, 000h, 000h, 000h, 0ach, 003h, 011h, 000h + db 0ach, 003h, 006h, 000h, 000h, 000h, 002h, 000h, 000h, 000h, 000h, 000h, 0ach, 003h, 011h, 000h + db 067h, 002h, 004h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 067h, 002h, 011h, 000h + db 0ceh, 001h, 008h, 000h, 000h, 000h, 001h, 000h, 000h, 000h, 000h, 000h, 0ffh, 001h, 011h, 000h + db 0ddh, 002h, 005h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 0ddh, 002h, 011h, 000h + db 084h, 003h, 00fh, 000h, 000h, 0ffh, 0ffh, 000h, 008h, 000h, 000h, 000h, 085h, 003h, 011h, 000h + db 034h, 003h, 003h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 034h, 003h, 011h, 000h + db 057h, 003h, 005h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 057h, 003h, 011h, 000h + db 057h, 003h, 007h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 057h, 003h, 011h, 000h + db 032h, 001h, 008h, 000h, 000h, 080h, 000h, 000h, 000h, 000h, 000h, 000h, 03fh, 001h, 011h, 000h + db 0ddh, 002h, 007h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 0ddh, 002h, 011h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 064h, 002h, 004h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 079h, 002h, 011h, 000h + db 0d1h, 003h, 005h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0d1h, 003h, 011h, 000h + db 0d1h, 003h, 007h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 0d1h, 003h, 011h, 000h + db 000h, 004h, 007h, 000h, 000h, 000h, 002h, 000h, 000h, 000h, 000h, 000h, 0ffh, 003h, 011h, 000h + db 0ddh, 002h, 005h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0dch, 002h, 011h, 000h + db 0ddh, 002h, 007h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0dch, 002h, 011h, 000h + db 0ddh, 002h, 005h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0ddh, 002h, 011h, 000h + db 032h, 001h, 004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 050h, 001h, 011h, 000h + ; disGetNextSymbol 0xfe571 LB 0x1a8f -> off=0x0 cb=0000000000000181 uValue=00000000000f0571 'biosorg_check_before_or_at_0E6F0h' +biosorg_check_before_or_at_0E6F0h: ; 0xfe571 LB 0x181 + times 0x17f db 0 + db 'XM' + ; disGetNextSymbol 0xfe6f2 LB 0x190e -> off=0x0 cb=0000000000000003 uValue=00000000000f06f2 'int19_handler' +int19_handler: ; 0xfe6f2 LB 0x3 + jmp near 0f0aeh ; e9 b9 09 ; 0xfe6f2 orgs.asm:795 + ; 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 word [bx+di], ax ; 01 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:868 + push ES ; 06 ; 0xfe73a orgs.asm:869 + pushaw ; 60 ; 0xfe73b orgs.asm:107 + push CS ; 0e ; 0xfe73c orgs.asm:113 + pop DS ; 1f ; 0xfe73d orgs.asm:114 + cld ; fc ; 0xfe73e orgs.asm:115 + call 06219h ; e8 d7 7a ; 0xfe73f orgs.asm:872 + popaw ; 61 ; 0xfe742 orgs.asm:124 + pop ES ; 07 ; 0xfe743 orgs.asm:874 + pop DS ; 1f ; 0xfe744 orgs.asm:875 + iret ; cf ; 0xfe745 orgs.asm:876 + push DS ; 1e ; 0xfe746 orgs.asm:884 + push ES ; 06 ; 0xfe747 orgs.asm:885 + pushaw ; 60 ; 0xfe748 orgs.asm:107 + push CS ; 0e ; 0xfe749 orgs.asm:113 + pop DS ; 1f ; 0xfe74a orgs.asm:114 + cld ; fc ; 0xfe74b orgs.asm:115 + call 016c1h ; e8 72 2f ; 0xfe74c orgs.asm:888 + popaw ; 61 ; 0xfe74f orgs.asm:124 + pop ES ; 07 ; 0xfe750 orgs.asm:890 + pop DS ; 1f ; 0xfe751 orgs.asm:891 + iret ; cf ; 0xfe752 orgs.asm:892 + ; 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:897 + out strict byte 020h, AL ; e6 20 ; 0xfe755 orgs.asm:898 + out strict byte 0a0h, AL ; e6 a0 ; 0xfe757 orgs.asm:899 + mov AL, strict byte 008h ; b0 08 ; 0xfe759 orgs.asm:900 + out strict byte 021h, AL ; e6 21 ; 0xfe75b orgs.asm:901 + mov AL, strict byte 070h ; b0 70 ; 0xfe75d orgs.asm:902 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe75f orgs.asm:903 + mov AL, strict byte 004h ; b0 04 ; 0xfe761 orgs.asm:904 + out strict byte 021h, AL ; e6 21 ; 0xfe763 orgs.asm:905 + mov AL, strict byte 002h ; b0 02 ; 0xfe765 orgs.asm:906 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe767 orgs.asm:907 + mov AL, strict byte 001h ; b0 01 ; 0xfe769 orgs.asm:908 + out strict byte 021h, AL ; e6 21 ; 0xfe76b orgs.asm:909 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe76d orgs.asm:910 + mov AL, strict byte 0b8h ; b0 b8 ; 0xfe76f orgs.asm:911 + out strict byte 021h, AL ; e6 21 ; 0xfe771 orgs.asm:912 + mov AL, strict byte 08fh ; b0 8f ; 0xfe773 orgs.asm:913 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe775 orgs.asm:914 + retn ; c3 ; 0xfe777 orgs.asm:915 + ; disGetNextSymbol 0xfe778 LB 0x1888 -> off=0x0 cb=0000000000000057 uValue=00000000000f0778 'ebda_post' +ebda_post: ; 0xfe778 LB 0x57 + mov ax, 0e746h ; b8 46 e7 ; 0xfe778 orgs.asm:104 + mov word [00034h], ax ; a3 34 00 ; 0xfe77b orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe77e orgs.asm:106 + mov word [00036h], ax ; a3 36 00 ; 0xfe781 orgs.asm:107 + mov ax, 0e746h ; b8 46 e7 ; 0xfe784 orgs.asm:104 + mov word [0003ch], ax ; a3 3c 00 ; 0xfe787 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe78a orgs.asm:106 + mov word [0003eh], ax ; a3 3e 00 ; 0xfe78d orgs.asm:107 + mov ax, 0e746h ; b8 46 e7 ; 0xfe790 orgs.asm:104 + mov word [001c8h], ax ; a3 c8 01 ; 0xfe793 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe796 orgs.asm:106 + mov word [001cah], ax ; a3 ca 01 ; 0xfe799 orgs.asm:107 + mov ax, 0e746h ; b8 46 e7 ; 0xfe79c orgs.asm:104 + mov word [001cch], ax ; a3 cc 01 ; 0xfe79f orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe7a2 orgs.asm:106 + mov word [001ceh], ax ; a3 ce 01 ; 0xfe7a5 orgs.asm:107 + mov ax, 0e746h ; b8 46 e7 ; 0xfe7a8 orgs.asm:104 + mov word [001dch], ax ; a3 dc 01 ; 0xfe7ab orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe7ae orgs.asm:106 + mov word [001deh], ax ; a3 de 01 ; 0xfe7b1 orgs.asm:107 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe7b4 orgs.asm:928 + mov ds, ax ; 8e d8 ; 0xfe7b6 orgs.asm:929 + mov ax, word [00413h] ; a1 13 04 ; 0xfe7b8 orgs.asm:930 + mov cx, strict word 00040h ; b9 40 00 ; 0xfe7bb orgs.asm:931 + mul cx ; f7 e1 ; 0xfe7be orgs.asm:932 + mov word [0040eh], ax ; a3 0e 04 ; 0xfe7c0 orgs.asm:934 + mov ds, ax ; 8e d8 ; 0xfe7c3 orgs.asm:936 + mov byte [word 00000h], 001h ; c6 06 00 00 01 ; 0xfe7c5 orgs.asm:937 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe7ca orgs.asm:939 + mov ds, ax ; 8e d8 ; 0xfe7cc orgs.asm:940 + retn ; c3 ; 0xfe7ce orgs.asm:941 + ; disGetNextSymbol 0xfe7cf LB 0x1831 -> off=0x0 cb=000000000000005f uValue=00000000000f07cf 'biosorg_check_before_or_at_0E82Ch' +biosorg_check_before_or_at_0E82Ch: ; 0xfe7cf LB 0x5f + times 0x5d 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:952 + pushfw ; 9c ; 0xfe82f orgs.asm:955 + push ES ; 06 ; 0xfe830 orgs.asm:956 + push DS ; 1e ; 0xfe831 orgs.asm:957 + pushaw ; 60 ; 0xfe832 orgs.asm:107 + cmp ah, 000h ; 80 fc 00 ; 0xfe833 orgs.asm:960 + je short 0e84ah ; 74 12 ; 0xfe836 orgs.asm:961 + cmp ah, 010h ; 80 fc 10 ; 0xfe838 orgs.asm:963 + je short 0e84ah ; 74 0d ; 0xfe83b orgs.asm:964 + push CS ; 0e ; 0xfe83d orgs.asm:113 + pop DS ; 1f ; 0xfe83e orgs.asm:114 + cld ; fc ; 0xfe83f orgs.asm:115 + call 05458h ; e8 15 6c ; 0xfe840 orgs.asm:967 + popaw ; 61 ; 0xfe843 orgs.asm:124 + pop DS ; 1f ; 0xfe844 orgs.asm:969 + pop ES ; 07 ; 0xfe845 orgs.asm:970 + add sp, strict byte 00002h ; 83 c4 02 ; 0xfe846 orgs.asm:971 + iret ; cf ; 0xfe849 orgs.asm:972 + mov bx, strict word 00040h ; bb 40 00 ; 0xfe84a orgs.asm:975 + mov ds, bx ; 8e db ; 0xfe84d orgs.asm:976 + cli ; fa ; 0xfe84f orgs.asm:978 + mov bx, word [word 0001ah] ; 8b 1e 1a 00 ; 0xfe850 orgs.asm:979 + cmp bx, word [word 0001ch] ; 3b 1e 1c 00 ; 0xfe854 orgs.asm:980 + jne short 0e85eh ; 75 04 ; 0xfe858 orgs.asm:981 + sti ; fb ; 0xfe85a orgs.asm:982 + nop ; 90 ; 0xfe85b orgs.asm:983 + jmp short 0e84fh ; eb f1 ; 0xfe85c orgs.asm:991 + push CS ; 0e ; 0xfe85e orgs.asm:113 + pop DS ; 1f ; 0xfe85f orgs.asm:114 + cld ; fc ; 0xfe860 orgs.asm:115 + call 05458h ; e8 f4 6b ; 0xfe861 orgs.asm:995 + popaw ; 61 ; 0xfe864 orgs.asm:124 + pop DS ; 1f ; 0xfe865 orgs.asm:997 + pop ES ; 07 ; 0xfe866 orgs.asm:998 + add sp, strict byte 00002h ; 83 c4 02 ; 0xfe867 orgs.asm:999 + iret ; cf ; 0xfe86a orgs.asm:1007 + ; 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:1024 + push ax ; 50 ; 0xfe988 orgs.asm:1025 + mov AL, strict byte 0adh ; b0 ad ; 0xfe989 orgs.asm:1026 + out strict byte 064h, AL ; e6 64 ; 0xfe98b orgs.asm:1027 + in AL, strict byte 060h ; e4 60 ; 0xfe98d orgs.asm:1029 + push DS ; 1e ; 0xfe98f orgs.asm:1030 + pushaw ; 60 ; 0xfe990 orgs.asm:107 + cld ; fc ; 0xfe991 orgs.asm:1032 + mov AH, strict byte 04fh ; b4 4f ; 0xfe992 orgs.asm:1034 + stc ; f9 ; 0xfe994 orgs.asm:1035 + int 015h ; cd 15 ; 0xfe995 orgs.asm:1036 + jnc short 0e9c0h ; 73 27 ; 0xfe997 orgs.asm:1037 + sti ; fb ; 0xfe999 orgs.asm:1039 + cmp AL, strict byte 0e0h ; 3c e0 ; 0xfe99a orgs.asm:1042 + jne short 0e9a9h ; 75 0b ; 0xfe99c orgs.asm:1043 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe99e orgs.asm:1044 + mov ds, ax ; 8e d8 ; 0xfe9a0 orgs.asm:1045 + or byte [00496h], 002h ; 80 0e 96 04 02 ; 0xfe9a2 orgs.asm:1046 + jmp short 0e9c0h ; eb 17 ; 0xfe9a7 orgs.asm:1047 + cmp AL, strict byte 0e1h ; 3c e1 ; 0xfe9a9 orgs.asm:1050 + jne short 0e9b8h ; 75 0b ; 0xfe9ab orgs.asm:1051 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe9ad orgs.asm:1052 + mov ds, ax ; 8e d8 ; 0xfe9af orgs.asm:1053 + or byte [00496h], 001h ; 80 0e 96 04 01 ; 0xfe9b1 orgs.asm:1054 + jmp short 0e9c0h ; eb 08 ; 0xfe9b6 orgs.asm:1055 + push ES ; 06 ; 0xfe9b8 orgs.asm:1058 + push CS ; 0e ; 0xfe9b9 orgs.asm:113 + pop DS ; 1f ; 0xfe9ba orgs.asm:114 + cld ; fc ; 0xfe9bb orgs.asm:115 + call 05005h ; e8 46 66 ; 0xfe9bc orgs.asm:1060 + pop ES ; 07 ; 0xfe9bf orgs.asm:1061 + popaw ; 61 ; 0xfe9c0 orgs.asm:124 + pop DS ; 1f ; 0xfe9c1 orgs.asm:1065 + cli ; fa ; 0xfe9c2 orgs.asm:1066 + call 0e034h ; e8 6e f6 ; 0xfe9c3 orgs.asm:1067 + mov AL, strict byte 0aeh ; b0 ae ; 0xfe9c6 orgs.asm:1069 + out strict byte 064h, AL ; e6 64 ; 0xfe9c8 orgs.asm:1070 + pop ax ; 58 ; 0xfe9ca orgs.asm:1071 + iret ; cf ; 0xfe9cb orgs.asm:1072 + pushaw ; 60 ; 0xfe9cc orgs.asm:107 + push ES ; 06 ; 0xfe9cd orgs.asm:1081 + push DS ; 1e ; 0xfe9ce orgs.asm:1082 + push CS ; 0e ; 0xfe9cf orgs.asm:113 + pop DS ; 1f ; 0xfe9d0 orgs.asm:114 + cld ; fc ; 0xfe9d1 orgs.asm:115 + call 0688dh ; e8 b8 7e ; 0xfe9d2 orgs.asm:1084 + pop DS ; 1f ; 0xfe9d5 orgs.asm:1085 + pop ES ; 07 ; 0xfe9d6 orgs.asm:1086 + popaw ; 61 ; 0xfe9d7 orgs.asm:124 + iret ; cf ; 0xfe9d8 orgs.asm:1088 + ; 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:1095 + ; 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:1104 + jc short 0ec71h ; 72 11 ; 0xfec5e orgs.asm:1105 + cmp ah, 04dh ; 80 fc 4d ; 0xfec60 orgs.asm:1107 + jnbe short 0ec71h ; 77 0c ; 0xfec63 orgs.asm:1108 + pushaw ; 60 ; 0xfec65 orgs.asm:107 + push ES ; 06 ; 0xfec66 orgs.asm:1111 + push DS ; 1e ; 0xfec67 orgs.asm:1112 + push CS ; 0e ; 0xfec68 orgs.asm:113 + pop DS ; 1f ; 0xfec69 orgs.asm:114 + cld ; fc ; 0xfec6a orgs.asm:115 + push 0ece9h ; 68 e9 ec ; 0xfec6b orgs.asm:93 + jmp near 03b86h ; e9 15 4f ; 0xfec6e orgs.asm:94 + push ES ; 06 ; 0xfec71 orgs.asm:1120 + push ax ; 50 ; 0xfec72 orgs.asm:1121 + push bx ; 53 ; 0xfec73 orgs.asm:1122 + push cx ; 51 ; 0xfec74 orgs.asm:1123 + push dx ; 52 ; 0xfec75 orgs.asm:1124 + call 03b5ah ; e8 e1 4e ; 0xfec76 orgs.asm:1127 + cmp AL, strict byte 000h ; 3c 00 ; 0xfec79 orgs.asm:1128 + je short 0ecabh ; 74 2e ; 0xfec7b orgs.asm:1129 + call 03b70h ; e8 f0 4e ; 0xfec7d orgs.asm:1132 + pop dx ; 5a ; 0xfec80 orgs.asm:1133 + push dx ; 52 ; 0xfec81 orgs.asm:1134 + db 03ah, 0c2h + ; cmp al, dl ; 3a c2 ; 0xfec82 orgs.asm:1135 + jne short 0ec97h ; 75 11 ; 0xfec84 orgs.asm:1136 + pop dx ; 5a ; 0xfec86 orgs.asm:1138 + pop cx ; 59 ; 0xfec87 orgs.asm:1139 + pop bx ; 5b ; 0xfec88 orgs.asm:1140 + pop ax ; 58 ; 0xfec89 orgs.asm:1141 + pop ES ; 07 ; 0xfec8a orgs.asm:1142 + pushaw ; 60 ; 0xfec8b orgs.asm:107 + push ES ; 06 ; 0xfec8c orgs.asm:1145 + push DS ; 1e ; 0xfec8d orgs.asm:1146 + push CS ; 0e ; 0xfec8e orgs.asm:113 + pop DS ; 1f ; 0xfec8f orgs.asm:114 + cld ; fc ; 0xfec90 orgs.asm:115 + push 0ece9h ; 68 e9 ec ; 0xfec91 orgs.asm:93 + jmp near 04238h ; e9 a1 55 ; 0xfec94 orgs.asm:94 + and dl, 0e0h ; 80 e2 e0 ; 0xfec97 orgs.asm:1152 + db 03ah, 0c2h + ; cmp al, dl ; 3a c2 ; 0xfec9a orgs.asm:1153 + jne short 0ecabh ; 75 0d ; 0xfec9c orgs.asm:1154 + pop dx ; 5a ; 0xfec9e orgs.asm:1156 + pop cx ; 59 ; 0xfec9f orgs.asm:1157 + pop bx ; 5b ; 0xfeca0 orgs.asm:1158 + pop ax ; 58 ; 0xfeca1 orgs.asm:1159 + pop ES ; 07 ; 0xfeca2 orgs.asm:1160 + push ax ; 50 ; 0xfeca3 orgs.asm:1162 + push cx ; 51 ; 0xfeca4 orgs.asm:1163 + push dx ; 52 ; 0xfeca5 orgs.asm:1164 + push bx ; 53 ; 0xfeca6 orgs.asm:1165 + db 0feh, 0cah + ; dec dl ; fe ca ; 0xfeca7 orgs.asm:1167 + jmp short 0ecb4h ; eb 09 ; 0xfeca9 orgs.asm:1168 + pop dx ; 5a ; 0xfecab orgs.asm:1171 + pop cx ; 59 ; 0xfecac orgs.asm:1172 + pop bx ; 5b ; 0xfecad orgs.asm:1173 + pop ax ; 58 ; 0xfecae orgs.asm:1174 + pop ES ; 07 ; 0xfecaf orgs.asm:1175 + ; disGetNextSymbol 0xfecb0 LB 0x1350 -> off=0x0 cb=0000000000000004 uValue=00000000000f0cb0 'int13_noeltorito' +int13_noeltorito: ; 0xfecb0 LB 0x4 + push ax ; 50 ; 0xfecb0 orgs.asm:1178 + push cx ; 51 ; 0xfecb1 orgs.asm:1179 + push dx ; 52 ; 0xfecb2 orgs.asm:1180 + push bx ; 53 ; 0xfecb3 orgs.asm:1181 + ; disGetNextSymbol 0xfecb4 LB 0x134c -> off=0x0 cb=0000000000000014 uValue=00000000000f0cb4 'int13_legacy' +int13_legacy: ; 0xfecb4 LB 0x14 + push dx ; 52 ; 0xfecb4 orgs.asm:1183 + push bp ; 55 ; 0xfecb5 orgs.asm:1184 + push si ; 56 ; 0xfecb6 orgs.asm:1185 + push di ; 57 ; 0xfecb7 orgs.asm:1186 + push ES ; 06 ; 0xfecb8 orgs.asm:1187 + push DS ; 1e ; 0xfecb9 orgs.asm:1188 + push CS ; 0e ; 0xfecba orgs.asm:113 + pop DS ; 1f ; 0xfecbb orgs.asm:114 + cld ; fc ; 0xfecbc orgs.asm:115 + test dl, 080h ; f6 c2 80 ; 0xfecbd orgs.asm:1193 + jne short 0ecc8h ; 75 06 ; 0xfecc0 orgs.asm:1194 + push 0ece9h ; 68 e9 ec ; 0xfecc2 orgs.asm:93 + jmp near 03103h ; e9 3b 44 ; 0xfecc5 orgs.asm:94 + ; 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:1199 + jc short 0ecdch ; 72 0f ; 0xfeccb orgs.asm:1200 + shr ebx, 010h ; 66 c1 eb 10 ; 0xfeccd orgs.asm:1206 + push bx ; 53 ; 0xfecd1 orgs.asm:1207 + call 04677h ; e8 a2 59 ; 0xfecd2 orgs.asm:1208 + pop bx ; 5b ; 0xfecd5 orgs.asm:1209 + sal ebx, 010h ; 66 c1 e3 10 ; 0xfecd6 orgs.asm:1210 + jmp short 0ece9h ; eb 0d ; 0xfecda orgs.asm:1212 + ; 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:1216 + jnbe short 0ece6h ; 77 05 ; 0xfecdf orgs.asm:1217 + call 05b29h ; e8 45 6e ; 0xfece1 orgs.asm:1218 + jmp short 0ece9h ; eb 03 ; 0xfece4 orgs.asm:1219 + call 05f82h ; e8 99 72 ; 0xfece6 orgs.asm:1222 + ; disGetNextSymbol 0xfece9 LB 0x1317 -> off=0x0 cb=0000000000000004 uValue=00000000000f0ce9 'int13_out' +int13_out: ; 0xfece9 LB 0x4 + pop DS ; 1f ; 0xfece9 orgs.asm:1225 + pop ES ; 07 ; 0xfecea orgs.asm:1226 + popaw ; 61 ; 0xfeceb orgs.asm:124 + iret ; cf ; 0xfecec orgs.asm:1228 + ; disGetNextSymbol 0xfeced LB 0x1313 -> off=0x0 cb=000000000000001e uValue=00000000000f0ced 'detect_parport' +detect_parport: ; 0xfeced LB 0x1e + push dx ; 52 ; 0xfeced orgs.asm:1235 + inc dx ; 42 ; 0xfecee orgs.asm:1236 + inc dx ; 42 ; 0xfecef orgs.asm:1237 + in AL, DX ; ec ; 0xfecf0 orgs.asm:1238 + and AL, strict byte 0dfh ; 24 df ; 0xfecf1 orgs.asm:1239 + out DX, AL ; ee ; 0xfecf3 orgs.asm:1240 + pop dx ; 5a ; 0xfecf4 orgs.asm:1241 + mov AL, strict byte 0aah ; b0 aa ; 0xfecf5 orgs.asm:1242 + out DX, AL ; ee ; 0xfecf7 orgs.asm:1243 + in AL, DX ; ec ; 0xfecf8 orgs.asm:1244 + cmp AL, strict byte 0aah ; 3c aa ; 0xfecf9 orgs.asm:1245 + jne short 0ed0ah ; 75 0d ; 0xfecfb orgs.asm:1246 + push bx ; 53 ; 0xfecfd orgs.asm:1248 + sal bx, 1 ; d1 e3 ; 0xfecfe orgs.asm:1249 + mov word [bx+00408h], dx ; 89 97 08 04 ; 0xfed00 orgs.asm:1250 + pop bx ; 5b ; 0xfed04 orgs.asm:1251 + mov byte [bx+00478h], cl ; 88 8f 78 04 ; 0xfed05 orgs.asm:1252 + inc bx ; 43 ; 0xfed09 orgs.asm:1253 + retn ; c3 ; 0xfed0a orgs.asm:1255 + ; disGetNextSymbol 0xfed0b LB 0x12f5 -> off=0x0 cb=0000000000000024 uValue=00000000000f0d0b 'detect_serial' +detect_serial: ; 0xfed0b LB 0x24 + push dx ; 52 ; 0xfed0b orgs.asm:1262 + inc dx ; 42 ; 0xfed0c orgs.asm:1263 + mov AL, strict byte 002h ; b0 02 ; 0xfed0d orgs.asm:1264 + out DX, AL ; ee ; 0xfed0f orgs.asm:1265 + in AL, DX ; ec ; 0xfed10 orgs.asm:1266 + cmp AL, strict byte 002h ; 3c 02 ; 0xfed11 orgs.asm:1267 + jne short 0ed2dh ; 75 18 ; 0xfed13 orgs.asm:1268 + inc dx ; 42 ; 0xfed15 orgs.asm:1270 + in AL, DX ; ec ; 0xfed16 orgs.asm:1271 + cmp AL, strict byte 002h ; 3c 02 ; 0xfed17 orgs.asm:1272 + jne short 0ed2dh ; 75 12 ; 0xfed19 orgs.asm:1273 + dec dx ; 4a ; 0xfed1b orgs.asm:1275 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfed1c orgs.asm:1276 + pop dx ; 5a ; 0xfed1e orgs.asm:1277 + push bx ; 53 ; 0xfed1f orgs.asm:1278 + sal bx, 1 ; d1 e3 ; 0xfed20 orgs.asm:1279 + mov word [bx+00400h], dx ; 89 97 00 04 ; 0xfed22 orgs.asm:1280 + pop bx ; 5b ; 0xfed26 orgs.asm:1281 + mov byte [bx+0047ch], cl ; 88 8f 7c 04 ; 0xfed27 orgs.asm:1282 + inc bx ; 43 ; 0xfed2b orgs.asm:1283 + retn ; c3 ; 0xfed2c orgs.asm:1284 + pop dx ; 5a ; 0xfed2d orgs.asm:1287 + retn ; c3 ; 0xfed2e orgs.asm:1288 + ; 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:1298 + mov ds, ax ; 8e d8 ; 0xfed31 orgs.asm:1299 + mov AL, strict byte 000h ; b0 00 ; 0xfed33 orgs.asm:1303 + mov byte [0043eh], AL ; a2 3e 04 ; 0xfed35 orgs.asm:1304 + mov byte [0043fh], AL ; a2 3f 04 ; 0xfed38 orgs.asm:1305 + mov byte [00440h], AL ; a2 40 04 ; 0xfed3b orgs.asm:1306 + mov byte [00441h], AL ; a2 41 04 ; 0xfed3e orgs.asm:1307 + mov byte [00442h], AL ; a2 42 04 ; 0xfed41 orgs.asm:1308 + mov byte [00443h], AL ; a2 43 04 ; 0xfed44 orgs.asm:1309 + mov byte [00444h], AL ; a2 44 04 ; 0xfed47 orgs.asm:1310 + mov byte [00445h], AL ; a2 45 04 ; 0xfed4a orgs.asm:1311 + mov byte [00446h], AL ; a2 46 04 ; 0xfed4d orgs.asm:1312 + mov byte [00447h], AL ; a2 47 04 ; 0xfed50 orgs.asm:1313 + mov byte [00448h], AL ; a2 48 04 ; 0xfed53 orgs.asm:1314 + mov byte [0048bh], AL ; a2 8b 04 ; 0xfed56 orgs.asm:1316 + mov AL, strict byte 010h ; b0 10 ; 0xfed59 orgs.asm:1318 + out strict byte 070h, AL ; e6 70 ; 0xfed5b orgs.asm:1319 + in AL, strict byte 071h ; e4 71 ; 0xfed5d orgs.asm:1320 + db 08ah, 0e0h + ; mov ah, al ; 8a e0 ; 0xfed5f orgs.asm:1321 + shr al, 004h ; c0 e8 04 ; 0xfed61 orgs.asm:179 + je short 0ed6ah ; 74 04 ; 0xfed64 orgs.asm:1326 + mov BL, strict byte 007h ; b3 07 ; 0xfed66 orgs.asm:1327 + jmp short 0ed6ch ; eb 02 ; 0xfed68 orgs.asm:1328 + mov BL, strict byte 000h ; b3 00 ; 0xfed6a orgs.asm:1331 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfed6c orgs.asm:1334 + and AL, strict byte 00fh ; 24 0f ; 0xfed6e orgs.asm:1335 + je short 0ed75h ; 74 03 ; 0xfed70 orgs.asm:1336 + or bl, 070h ; 80 cb 70 ; 0xfed72 orgs.asm:1337 + mov byte [0048fh], bl ; 88 1e 8f 04 ; 0xfed75 orgs.asm:1339 + mov AL, strict byte 000h ; b0 00 ; 0xfed79 orgs.asm:1342 + mov byte [00490h], AL ; a2 90 04 ; 0xfed7b orgs.asm:1343 + mov byte [00491h], AL ; a2 91 04 ; 0xfed7e orgs.asm:1344 + mov byte [00492h], AL ; a2 92 04 ; 0xfed81 orgs.asm:1345 + mov byte [00493h], AL ; a2 93 04 ; 0xfed84 orgs.asm:1346 + mov byte [00494h], AL ; a2 94 04 ; 0xfed87 orgs.asm:1347 + mov byte [00495h], AL ; a2 95 04 ; 0xfed8a orgs.asm:1348 + mov AL, strict byte 002h ; b0 02 ; 0xfed8d orgs.asm:1350 + out strict byte 00ah, AL ; e6 0a ; 0xfed8f orgs.asm:1351 + mov ax, 0efc7h ; b8 c7 ef ; 0xfed91 orgs.asm:104 + mov word [00078h], ax ; a3 78 00 ; 0xfed94 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfed97 orgs.asm:106 + mov word [0007ah], ax ; a3 7a 00 ; 0xfed9a orgs.asm:107 + mov ax, 0ec59h ; b8 59 ec ; 0xfed9d orgs.asm:104 + mov word [00100h], ax ; a3 00 01 ; 0xfeda0 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfeda3 orgs.asm:106 + mov word [00102h], ax ; a3 02 01 ; 0xfeda6 orgs.asm:107 + mov ax, 0ef57h ; b8 57 ef ; 0xfeda9 orgs.asm:104 + mov word [00038h], ax ; a3 38 00 ; 0xfedac orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfedaf orgs.asm:106 + mov word [0003ah], ax ; a3 3a 00 ; 0xfedb2 orgs.asm:107 + retn ; c3 ; 0xfedb5 orgs.asm:1357 + ; 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:1367 + shr al, 004h ; c0 e8 04 ; 0xfedb9 orgs.asm:1368 + aad 00ah ; d5 0a ; 0xfedbc orgs.asm:1376 + retn ; c3 ; 0xfedbe orgs.asm:1377 + ; 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:1385 + out strict byte 070h, AL ; e6 70 ; 0xfedc1 orgs.asm:1386 + in AL, strict byte 071h ; e4 71 ; 0xfedc3 orgs.asm:1387 + call 0edb6h ; e8 ee ff ; 0xfedc5 orgs.asm:1388 + test al, al ; 84 c0 ; 0xfedc8 orgs.asm:1389 + db 032h, 0e4h + ; xor ah, ah ; 32 e4 ; 0xfedca orgs.asm:1390 + mov dx, 01234h ; ba 34 12 ; 0xfedcc orgs.asm:1391 + mul dx ; f7 e2 ; 0xfedcf orgs.asm:1392 + db 08bh, 0c8h + ; mov cx, ax ; 8b c8 ; 0xfedd1 orgs.asm:1393 + mov AL, strict byte 002h ; b0 02 ; 0xfedd3 orgs.asm:1396 + out strict byte 070h, AL ; e6 70 ; 0xfedd5 orgs.asm:1397 + in AL, strict byte 071h ; e4 71 ; 0xfedd7 orgs.asm:1398 + call 0edb6h ; e8 da ff ; 0xfedd9 orgs.asm:1399 + test al, al ; 84 c0 ; 0xfeddc orgs.asm:1400 + je short 0edebh ; 74 0b ; 0xfedde orgs.asm:1401 + add cx, 04463h ; 81 c1 63 44 ; 0xfede0 orgs.asm:1403 + adc dx, strict byte 00004h ; 83 d2 04 ; 0xfede4 orgs.asm:1404 + db 0feh, 0c8h + ; dec al ; fe c8 ; 0xfede7 orgs.asm:1405 + jne short 0ede0h ; 75 f5 ; 0xfede9 orgs.asm:1406 + mov AL, strict byte 004h ; b0 04 ; 0xfedeb orgs.asm:1410 + out strict byte 070h, AL ; e6 70 ; 0xfeded orgs.asm:1411 + in AL, strict byte 071h ; e4 71 ; 0xfedef orgs.asm:1412 + call 0edb6h ; e8 c2 ff ; 0xfedf1 orgs.asm:1413 + test al, al ; 84 c0 ; 0xfedf4 orgs.asm:1414 + je short 0ee04h ; 74 0c ; 0xfedf6 orgs.asm:1415 + add cx, 0076ch ; 81 c1 6c 07 ; 0xfedf8 orgs.asm:1417 + adc dx, 00100h ; 81 d2 00 01 ; 0xfedfc orgs.asm:1418 + db 0feh, 0c8h + ; dec al ; fe c8 ; 0xfee00 orgs.asm:1419 + jne short 0edf8h ; 75 f4 ; 0xfee02 orgs.asm:1420 + db 08ah, 0cdh + ; mov cl, ch ; 8a cd ; 0xfee04 orgs.asm:1423 + db 08ah, 0eah + ; mov ch, dl ; 8a ea ; 0xfee06 orgs.asm:1424 + db 08ah, 0d6h + ; mov dl, dh ; 8a d6 ; 0xfee08 orgs.asm:1425 + db 032h, 0f6h + ; xor dh, dh ; 32 f6 ; 0xfee0a orgs.asm:1426 + mov word [0046ch], cx ; 89 0e 6c 04 ; 0xfee0c orgs.asm:1427 + mov word [0046eh], dx ; 89 16 6e 04 ; 0xfee10 orgs.asm:1428 + mov byte [00470h], dh ; 88 36 70 04 ; 0xfee14 orgs.asm:1429 + retn ; c3 ; 0xfee18 orgs.asm:1477 + ; 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:1488 + push dx ; 52 ; 0xfef58 orgs.asm:1489 + mov dx, 003f4h ; ba f4 03 ; 0xfef59 orgs.asm:1490 + in AL, DX ; ec ; 0xfef5c orgs.asm:1491 + and AL, strict byte 0c0h ; 24 c0 ; 0xfef5d orgs.asm:1492 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef5f orgs.asm:1493 + je short 0ef81h ; 74 1e ; 0xfef61 orgs.asm:1494 + mov dx, 003f5h ; ba f5 03 ; 0xfef63 orgs.asm:1495 + mov AL, strict byte 008h ; b0 08 ; 0xfef66 orgs.asm:1496 + out DX, AL ; ee ; 0xfef68 orgs.asm:1497 + mov dx, 003f4h ; ba f4 03 ; 0xfef69 orgs.asm:1499 + in AL, DX ; ec ; 0xfef6c orgs.asm:1500 + and AL, strict byte 0c0h ; 24 c0 ; 0xfef6d orgs.asm:1501 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef6f orgs.asm:1502 + jne short 0ef69h ; 75 f6 ; 0xfef71 orgs.asm:1503 + mov dx, 003f5h ; ba f5 03 ; 0xfef73 orgs.asm:1506 + in AL, DX ; ec ; 0xfef76 orgs.asm:1507 + mov dx, 003f4h ; ba f4 03 ; 0xfef77 orgs.asm:1508 + in AL, DX ; ec ; 0xfef7a orgs.asm:1509 + and AL, strict byte 0c0h ; 24 c0 ; 0xfef7b orgs.asm:1510 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef7d orgs.asm:1511 + je short 0ef73h ; 74 f2 ; 0xfef7f orgs.asm:1512 + push DS ; 1e ; 0xfef81 orgs.asm:1515 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfef82 orgs.asm:1516 + mov ds, ax ; 8e d8 ; 0xfef84 orgs.asm:1517 + call 0e034h ; e8 ab f0 ; 0xfef86 orgs.asm:1518 + or byte [0043eh], 080h ; 80 0e 3e 04 80 ; 0xfef89 orgs.asm:1520 + pop DS ; 1f ; 0xfef8e orgs.asm:1521 + pop dx ; 5a ; 0xfef8f orgs.asm:1522 + pop ax ; 58 ; 0xfef90 orgs.asm:1523 + iret ; cf ; 0xfef91 orgs.asm:1524 + ; 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:1551 + ; disGetNextSymbol 0xfefd4 LB 0x102c -> off=0x0 cb=000000000000000d uValue=00000000000f0fd4 'int17_handler' +int17_handler: ; 0xfefd4 LB 0xd + push DS ; 1e ; 0xfefd4 orgs.asm:1554 + push ES ; 06 ; 0xfefd5 orgs.asm:1555 + pushaw ; 60 ; 0xfefd6 orgs.asm:107 + push CS ; 0e ; 0xfefd7 orgs.asm:113 + pop DS ; 1f ; 0xfefd8 orgs.asm:114 + cld ; fc ; 0xfefd9 orgs.asm:115 + call 071cfh ; e8 f2 81 ; 0xfefda orgs.asm:1558 + popaw ; 61 ; 0xfefdd orgs.asm:124 + pop ES ; 07 ; 0xfefde orgs.asm:1560 + pop DS ; 1f ; 0xfefdf orgs.asm:1561 + iret ; cf ; 0xfefe0 orgs.asm:1562 + ; 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:1597 + ; 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:1606 + ; 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:1615 + ; 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=000000000000000a uValue=00000000000f10a4 'biosorg_check_at_0F0A4h' +biosorg_check_at_0F0A4h: ; 0xff0a4 LB 0xa + push CS ; 0e ; 0xff0a4 orgs.asm:113 + pop DS ; 1f ; 0xff0a5 orgs.asm:114 + cld ; fc ; 0xff0a6 orgs.asm:115 + call 01734h ; e8 8a 26 ; 0xff0a7 orgs.asm:1630 + sti ; fb ; 0xff0aa orgs.asm:1632 + hlt ; f4 ; 0xff0ab orgs.asm:1634 + jmp short 0f0abh ; eb fd ; 0xff0ac orgs.asm:1635 + ; disGetNextSymbol 0xff0ae LB 0xf52 -> off=0x0 cb=0000000000000079 uValue=00000000000f10ae 'int19_relocated' +int19_relocated: ; 0xff0ae LB 0x79 + push CS ; 0e ; 0xff0ae orgs.asm:113 + pop DS ; 1f ; 0xff0af orgs.asm:114 + cld ; fc ; 0xff0b0 orgs.asm:115 + push bp ; 55 ; 0xff0b1 orgs.asm:1645 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff0b2 orgs.asm:1646 + mov ax, strict word 00001h ; b8 01 00 ; 0xff0b4 orgs.asm:1649 + push ax ; 50 ; 0xff0b7 orgs.asm:1650 + call 04aa5h ; e8 ea 59 ; 0xff0b8 orgs.asm:1651 + inc sp ; 44 ; 0xff0bb orgs.asm:1652 + inc sp ; 44 ; 0xff0bc orgs.asm:1653 + test ax, ax ; 85 c0 ; 0xff0bd orgs.asm:1654 + jne short 0f0e8h ; 75 27 ; 0xff0bf orgs.asm:1655 + mov ax, strict word 00002h ; b8 02 00 ; 0xff0c1 orgs.asm:1658 + push ax ; 50 ; 0xff0c4 orgs.asm:1659 + call 04aa5h ; e8 dd 59 ; 0xff0c5 orgs.asm:1660 + inc sp ; 44 ; 0xff0c8 orgs.asm:1661 + inc sp ; 44 ; 0xff0c9 orgs.asm:1662 + test ax, ax ; 85 c0 ; 0xff0ca orgs.asm:1663 + jne short 0f0e8h ; 75 1a ; 0xff0cc orgs.asm:1664 + mov ax, strict word 00003h ; b8 03 00 ; 0xff0ce orgs.asm:1667 + push ax ; 50 ; 0xff0d1 orgs.asm:1668 + call 04aa5h ; e8 d0 59 ; 0xff0d2 orgs.asm:1669 + inc sp ; 44 ; 0xff0d5 orgs.asm:1670 + inc sp ; 44 ; 0xff0d6 orgs.asm:1671 + test ax, ax ; 85 c0 ; 0xff0d7 orgs.asm:1672 + jne short 0f0e8h ; 75 0d ; 0xff0d9 orgs.asm:1673 + mov ax, strict word 00004h ; b8 04 00 ; 0xff0db orgs.asm:1676 + push ax ; 50 ; 0xff0de orgs.asm:1677 + call 04aa5h ; e8 c3 59 ; 0xff0df orgs.asm:1678 + inc sp ; 44 ; 0xff0e2 orgs.asm:1679 + inc sp ; 44 ; 0xff0e3 orgs.asm:1680 + test ax, ax ; 85 c0 ; 0xff0e4 orgs.asm:1681 + je short 0f0a4h ; 74 bc ; 0xff0e6 orgs.asm:1682 + mov word [byte bp+000h], ax ; 89 46 00 ; 0xff0e8 orgs.asm:1688 + sal ax, 004h ; c1 e0 04 ; 0xff0eb orgs.asm:210 + mov word [bp+002h], ax ; 89 46 02 ; 0xff0ee orgs.asm:1690 + mov ax, word [byte bp+000h] ; 8b 46 00 ; 0xff0f1 orgs.asm:1691 + and ax, 0f000h ; 25 00 f0 ; 0xff0f4 orgs.asm:1700 + mov word [bp+004h], ax ; 89 46 04 ; 0xff0f7 orgs.asm:1701 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff0fa orgs.asm:1702 + mov ds, ax ; 8e d8 ; 0xff0fc orgs.asm:1703 + mov es, ax ; 8e c0 ; 0xff0fe orgs.asm:1704 + mov word [byte bp+000h], ax ; 89 46 00 ; 0xff100 orgs.asm:1705 + mov ax, 0aa55h ; b8 55 aa ; 0xff103 orgs.asm:1706 + pop bp ; 5d ; 0xff106 orgs.asm:1708 + iret ; cf ; 0xff107 orgs.asm:1709 + or cx, word [bp+si] ; 0b 0a ; 0xff108 + or word [bp+di], cx ; 09 0b ; 0xff10a + push eax ; 66 50 ; 0xff10c orgs.asm:98 + mov eax, strict dword 000800000h ; 66 b8 00 00 80 00 ; 0xff10e orgs.asm:99 + db 08bh, 0c3h + ; mov ax, bx ; 8b c3 ; 0xff114 orgs.asm:100 + sal eax, 008h ; 66 c1 e0 08 ; 0xff116 orgs.asm:101 + and dl, 0fch ; 80 e2 fc ; 0xff11a orgs.asm:102 + db 00ah, 0c2h + ; or al, dl ; 0a c2 ; 0xff11d orgs.asm:103 + mov dx, 00cf8h ; ba f8 0c ; 0xff11f orgs.asm:104 + out DX, eax ; 66 ef ; 0xff122 orgs.asm:105 + pop eax ; 66 58 ; 0xff124 orgs.asm:106 + retn ; c3 ; 0xff126 orgs.asm:107 + ; disGetNextSymbol 0xff127 LB 0xed9 -> off=0x0 cb=0000000000000012 uValue=00000000000f1127 'pcibios_init_iomem_bases' +pcibios_init_iomem_bases: ; 0xff127 LB 0x12 + push bp ; 55 ; 0xff127 orgs.asm:110 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff128 orgs.asm:111 + mov eax, strict dword 00124f9fdh ; 66 b8 fd f9 24 01 ; 0xff12a orgs.asm:113 + mov dx, 00410h ; ba 10 04 ; 0xff130 orgs.asm:114 + out DX, eax ; 66 ef ; 0xff133 orgs.asm:115 + db 08bh, 0e5h + ; mov sp, bp ; 8b e5 ; 0xff135 orgs.asm:228 + pop bp ; 5d ; 0xff137 orgs.asm:229 + retn ; c3 ; 0xff138 orgs.asm:230 + ; disGetNextSymbol 0xff139 LB 0xec7 -> off=0x0 cb=000000000000000c uValue=00000000000f1139 'pcibios_init_set_elcr' +pcibios_init_set_elcr: ; 0xff139 LB 0xc + push ax ; 50 ; 0xff139 orgs.asm:233 + push cx ; 51 ; 0xff13a orgs.asm:234 + mov dx, 004d0h ; ba d0 04 ; 0xff13b orgs.asm:235 + test AL, strict byte 008h ; a8 08 ; 0xff13e orgs.asm:236 + je short 0f145h ; 74 03 ; 0xff140 orgs.asm:237 + inc dx ; 42 ; 0xff142 orgs.asm:239 + and AL, strict byte 007h ; 24 07 ; 0xff143 orgs.asm:240 + ; disGetNextSymbol 0xff145 LB 0xebb -> off=0x0 cb=000000000000000d uValue=00000000000f1145 'is_master_pic' +is_master_pic: ; 0xff145 LB 0xd + db 08ah, 0c8h + ; mov cl, al ; 8a c8 ; 0xff145 orgs.asm:242 + mov BL, strict byte 001h ; b3 01 ; 0xff147 orgs.asm:243 + sal bl, CL ; d2 e3 ; 0xff149 orgs.asm:244 + in AL, DX ; ec ; 0xff14b orgs.asm:245 + db 00ah, 0c3h + ; or al, bl ; 0a c3 ; 0xff14c orgs.asm:246 + out DX, AL ; ee ; 0xff14e orgs.asm:247 + pop cx ; 59 ; 0xff14f orgs.asm:248 + pop ax ; 58 ; 0xff150 orgs.asm:249 + retn ; c3 ; 0xff151 orgs.asm:250 + ; disGetNextSymbol 0xff152 LB 0xeae -> off=0x0 cb=000000000000002e uValue=00000000000f1152 'pcibios_init_irqs' +pcibios_init_irqs: ; 0xff152 LB 0x2e + push DS ; 1e ; 0xff152 orgs.asm:253 + push bp ; 55 ; 0xff153 orgs.asm:254 + mov ax, 0f000h ; b8 00 f0 ; 0xff154 orgs.asm:255 + mov ds, ax ; 8e d8 ; 0xff157 orgs.asm:256 + pop bp ; 5d ; 0xff159 orgs.asm:363 + pop DS ; 1f ; 0xff15a orgs.asm:364 + retn ; c3 ; 0xff15b orgs.asm:365 + mov ax, ax ; 89 c0 ; 0xff15c + mov ax, ax ; 89 c0 ; 0xff15e + and AL, strict byte 050h ; 24 50 ; 0xff160 + dec cx ; 49 ; 0xff162 + push dx ; 52 ; 0xff163 + add byte [bx+di], al ; 00 01 ; 0xff164 + add byte [bp+si], al ; 00 02 ; 0xff166 + add byte [bx+si], cl ; 00 08 ; 0xff168 + add byte [bx+si], al ; 00 00 ; 0xff16a + xchg byte [bx+si+07000h], al ; 86 80 00 70 ; 0xff16c + times 0xf db 0 + db 031h + ; disGetNextSymbol 0xff180 LB 0xe80 -> off=0x0 cb=00000000000001e0 uValue=00000000000f1180 '_pci_routing_table' +_pci_routing_table: ; 0xff180 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 0xff360 LB 0xca0 -> off=0x0 cb=0000000000000002 uValue=00000000000f1360 '_pci_routing_table_size' +_pci_routing_table_size: ; 0xff360 LB 0x2 + loopne 0f363h ; e0 01 ; 0xff360 + ; disGetNextSymbol 0xff362 LB 0xc9e -> off=0x0 cb=00000000000004df uValue=00000000000f1362 'biosorg_check_before_or_at_0F83Fh' +biosorg_check_before_or_at_0F83Fh: ; 0xff362 LB 0x4df + times 0x4dd 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:1739 + push DS ; 1e ; 0xff842 orgs.asm:1740 + mov ax, strict word 00040h ; b8 40 00 ; 0xff843 orgs.asm:1741 + mov ds, ax ; 8e d8 ; 0xff846 orgs.asm:1742 + mov ax, word [00013h] ; a1 13 00 ; 0xff848 orgs.asm:1743 + pop DS ; 1f ; 0xff84b orgs.asm:1744 + iret ; cf ; 0xff84c orgs.asm:1745 + ; disGetNextSymbol 0xff84d LB 0x7b3 -> off=0x0 cb=000000000000000c uValue=00000000000f184d 'int11_handler' +int11_handler: ; 0xff84d LB 0xc + sti ; fb ; 0xff84d orgs.asm:1754 + push DS ; 1e ; 0xff84e orgs.asm:1755 + mov ax, strict word 00040h ; b8 40 00 ; 0xff84f orgs.asm:1756 + mov ds, ax ; 8e d8 ; 0xff852 orgs.asm:1757 + mov ax, word [00010h] ; a1 10 00 ; 0xff854 orgs.asm:1758 + pop DS ; 1f ; 0xff857 orgs.asm:1759 + iret ; cf ; 0xff858 orgs.asm:1760 + ; 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:1770 + jne short 0f86bh ; 75 0d ; 0xff85c orgs.asm:1771 + pushaw ; 60 ; 0xff85e orgs.asm:1776 + push ES ; 06 ; 0xff85f orgs.asm:1777 + push DS ; 1e ; 0xff860 orgs.asm:1778 + push CS ; 0e ; 0xff861 orgs.asm:113 + pop DS ; 1f ; 0xff862 orgs.asm:114 + cld ; fc ; 0xff863 orgs.asm:115 + call 06726h ; e8 bf 6e ; 0xff864 orgs.asm:1780 + pop DS ; 1f ; 0xff867 orgs.asm:1781 + pop ES ; 07 ; 0xff868 orgs.asm:1782 + popaw ; 61 ; 0xff869 orgs.asm:1783 + iret ; cf ; 0xff86a orgs.asm:1784 + pushfw ; 9c ; 0xff86b orgs.asm:1789 + push DS ; 1e ; 0xff86c orgs.asm:1790 + push ES ; 06 ; 0xff86d orgs.asm:1791 + push CS ; 0e ; 0xff86e orgs.asm:113 + pop DS ; 1f ; 0xff86f orgs.asm:114 + cld ; fc ; 0xff870 orgs.asm:115 + pushaw ; 60 ; 0xff871 orgs.asm:107 + cmp ah, 053h ; 80 fc 53 ; 0xff872 orgs.asm:1802 + je short 0f885h ; 74 0e ; 0xff875 orgs.asm:1803 + cmp ah, 0c2h ; 80 fc c2 ; 0xff877 orgs.asm:1804 + je short 0f88ah ; 74 0e ; 0xff87a orgs.asm:1805 + call 063d7h ; e8 58 6b ; 0xff87c orgs.asm:1807 + popaw ; 61 ; 0xff87f orgs.asm:124 + pop ES ; 07 ; 0xff880 orgs.asm:1813 + pop DS ; 1f ; 0xff881 orgs.asm:1814 + popfw ; 9d ; 0xff882 orgs.asm:1815 + jmp short 0f88fh ; eb 0a ; 0xff883 orgs.asm:1816 + call 0a39ah ; e8 12 ab ; 0xff885 orgs.asm:1819 + jmp short 0f87fh ; eb f5 ; 0xff888 orgs.asm:1820 + ; disGetNextSymbol 0xff88a LB 0x776 -> off=0x0 cb=0000000000000005 uValue=00000000000f188a 'int15_handler_mouse' +int15_handler_mouse: ; 0xff88a LB 0x5 + call 06e63h ; e8 d6 75 ; 0xff88a orgs.asm:1823 + jmp short 0f87fh ; eb f0 ; 0xff88d orgs.asm:1824 + ; 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:1841 + push bp ; 55 ; 0xff891 orgs.asm:1842 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff892 orgs.asm:1843 + and byte [bp+006h], 0feh ; 80 66 06 fe ; 0xff894 orgs.asm:1844 + or word [bp+006h], 00200h ; 81 4e 06 00 02 ; 0xff898 orgs.asm:1845 + pop bp ; 5d ; 0xff89d orgs.asm:1846 + iret ; cf ; 0xff89e orgs.asm:1847 + push bp ; 55 ; 0xff89f orgs.asm:1849 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff8a0 orgs.asm:1850 + or word [bp+006h], 00201h ; 81 4e 06 01 02 ; 0xff8a2 orgs.asm:1851 + pop bp ; 5d ; 0xff8a7 orgs.asm:1852 + iret ; cf ; 0xff8a8 orgs.asm:1853 + ; disGetNextSymbol 0xff8a9 LB 0x757 -> off=0x0 cb=000000000000002b uValue=00000000000f18a9 'int74_handler' +int74_handler: ; 0xff8a9 LB 0x2b + sti ; fb ; 0xff8a9 orgs.asm:1860 + pushaw ; 60 ; 0xff8aa orgs.asm:107 + push ES ; 06 ; 0xff8ab orgs.asm:1862 + push DS ; 1e ; 0xff8ac orgs.asm:1863 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff8ad orgs.asm:1864 + push ax ; 50 ; 0xff8af orgs.asm:1865 + push ax ; 50 ; 0xff8b0 orgs.asm:1866 + push ax ; 50 ; 0xff8b1 orgs.asm:1867 + push ax ; 50 ; 0xff8b2 orgs.asm:1868 + push ax ; 50 ; 0xff8b3 orgs.asm:1869 + push CS ; 0e ; 0xff8b4 orgs.asm:113 + pop DS ; 1f ; 0xff8b5 orgs.asm:114 + cld ; fc ; 0xff8b6 orgs.asm:115 + call 06db5h ; e8 fb 74 ; 0xff8b7 orgs.asm:1871 + pop cx ; 59 ; 0xff8ba orgs.asm:1872 + jcxz 0f8c9h ; e3 0c ; 0xff8bb orgs.asm:1873 + push strict byte 00000h ; 6a 00 ; 0xff8bd orgs.asm:1877 + pop DS ; 1f ; 0xff8bf orgs.asm:1882 + push word [0040eh] ; ff 36 0e 04 ; 0xff8c0 orgs.asm:1883 + pop DS ; 1f ; 0xff8c4 orgs.asm:1884 + call far [word 00022h] ; ff 1e 22 00 ; 0xff8c5 orgs.asm:1885 + cli ; fa ; 0xff8c9 orgs.asm:1887 + call 0e030h ; e8 63 e7 ; 0xff8ca orgs.asm:1888 + add sp, strict byte 00008h ; 83 c4 08 ; 0xff8cd orgs.asm:1889 + pop DS ; 1f ; 0xff8d0 orgs.asm:1890 + pop ES ; 07 ; 0xff8d1 orgs.asm:1891 + popaw ; 61 ; 0xff8d2 orgs.asm:124 + iret ; cf ; 0xff8d3 orgs.asm:1893 + ; disGetNextSymbol 0xff8d4 LB 0x72c -> off=0x0 cb=0000000000000012 uValue=00000000000f18d4 'int76_handler' +int76_handler: ; 0xff8d4 LB 0x12 + push ax ; 50 ; 0xff8d4 orgs.asm:1900 + push DS ; 1e ; 0xff8d5 orgs.asm:1901 + mov ax, strict word 00040h ; b8 40 00 ; 0xff8d6 orgs.asm:1902 + mov ds, ax ; 8e d8 ; 0xff8d9 orgs.asm:1903 + mov byte [0008eh], 0ffh ; c6 06 8e 00 ff ; 0xff8db orgs.asm:1904 + call 0e030h ; e8 4d e7 ; 0xff8e0 orgs.asm:1905 + pop DS ; 1f ; 0xff8e3 orgs.asm:1906 + pop ax ; 58 ; 0xff8e4 orgs.asm:1907 + iret ; cf ; 0xff8e5 orgs.asm:1908 + ; disGetNextSymbol 0xff8e6 LB 0x71a -> off=0x0 cb=000000000000001f uValue=00000000000f18e6 'int70_handler' +int70_handler: ; 0xff8e6 LB 0x1f + push ES ; 06 ; 0xff8e6 orgs.asm:1917 + push DS ; 1e ; 0xff8e7 orgs.asm:1918 + pushaw ; 60 ; 0xff8e8 orgs.asm:107 + push CS ; 0e ; 0xff8e9 orgs.asm:113 + pop DS ; 1f ; 0xff8ea orgs.asm:114 + cld ; fc ; 0xff8eb orgs.asm:115 + call 06a71h ; e8 82 71 ; 0xff8ec orgs.asm:1921 + popaw ; 61 ; 0xff8ef orgs.asm:124 + pop DS ; 1f ; 0xff8f0 orgs.asm:1923 + pop ES ; 07 ; 0xff8f1 orgs.asm:1924 + iret ; cf ; 0xff8f2 orgs.asm:1925 + jnbe short 0f8fah ; 77 05 ; 0xff8f3 orgs.asm:1935 + cmp ax, 000b0h ; 3d b0 00 ; 0xff8f5 orgs.asm:1936 + jc short 0f902h ; 72 08 ; 0xff8f8 orgs.asm:1937 + db 033h, 0d2h + ; xor dx, dx ; 33 d2 ; 0xff8fa orgs.asm:1940 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff8fc orgs.asm:1941 + inc byte [word 00070h] ; fe 06 70 00 ; 0xff8fe orgs.asm:1943 + jmp near 0fec1h ; e9 bc 05 ; 0xff902 orgs.asm:1945 + ; 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:1979 + push DS ; 1e ; 0xffe6f orgs.asm:1980 + pushaw ; 60 ; 0xffe70 orgs.asm:107 + push CS ; 0e ; 0xffe71 orgs.asm:113 + pop DS ; 1f ; 0xffe72 orgs.asm:114 + cld ; fc ; 0xffe73 orgs.asm:115 + call 06b19h ; e8 a2 6c ; 0xffe74 orgs.asm:1984 + popaw ; 61 ; 0xffe77 orgs.asm:124 + pop DS ; 1f ; 0xffe78 orgs.asm:1986 + pop ES ; 07 ; 0xffe79 orgs.asm:1987 + iret ; cf ; 0xffe7a orgs.asm:1988 + ; 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:2001 + push ax ; 50 ; 0xffea6 orgs.asm:2002 + push DS ; 1e ; 0xffea7 orgs.asm:2004 + push dx ; 52 ; 0xffea8 orgs.asm:2005 + mov ax, strict word 00040h ; b8 40 00 ; 0xffea9 orgs.asm:2006 + mov ds, ax ; 8e d8 ; 0xffeac orgs.asm:2007 + mov ax, word [0006ch] ; a1 6c 00 ; 0xffeae orgs.asm:2013 + mov dx, word [word 0006eh] ; 8b 16 6e 00 ; 0xffeb1 orgs.asm:2014 + inc ax ; 40 ; 0xffeb5 orgs.asm:2015 + jne short 0feb9h ; 75 01 ; 0xffeb6 orgs.asm:2016 + inc dx ; 42 ; 0xffeb8 orgs.asm:2017 + cmp dx, strict byte 00018h ; 83 fa 18 ; 0xffeb9 orgs.asm:2026 + jc short 0fec1h ; 72 03 ; 0xffebc orgs.asm:2027 + jmp near 0f8f3h ; e9 32 fa ; 0xffebe orgs.asm:2028 + mov word [0006ch], ax ; a3 6c 00 ; 0xffec1 orgs.asm:2040 + mov word [word 0006eh], dx ; 89 16 6e 00 ; 0xffec4 orgs.asm:2041 + mov AL, byte [00040h] ; a0 40 00 ; 0xffec8 orgs.asm:2045 + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xffecb orgs.asm:2046 + je short 0feddh ; 74 0e ; 0xffecd orgs.asm:2047 + db 0feh, 0c8h + ; dec al ; fe c8 ; 0xffecf orgs.asm:2048 + mov byte [00040h], AL ; a2 40 00 ; 0xffed1 orgs.asm:2049 + jne short 0feddh ; 75 07 ; 0xffed4 orgs.asm:2050 + mov dx, 003f2h ; ba f2 03 ; 0xffed6 orgs.asm:2052 + in AL, DX ; ec ; 0xffed9 orgs.asm:2053 + and AL, strict byte 0cfh ; 24 cf ; 0xffeda orgs.asm:2054 + out DX, AL ; ee ; 0xffedc orgs.asm:2055 + int 01ch ; cd 1c ; 0xffedd orgs.asm:2058 + cli ; fa ; 0xffedf orgs.asm:2060 + call 0e034h ; e8 51 e1 ; 0xffee0 orgs.asm:2061 + pop dx ; 5a ; 0xffee3 orgs.asm:2062 + pop DS ; 1f ; 0xffee4 orgs.asm:2063 + pop ax ; 58 ; 0xffee5 orgs.asm:2068 + iret ; cf ; 0xffee6 orgs.asm:2070 + ; 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:2095 + ; 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:2104 + 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:2114 + ; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000' + db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 0b6h diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum new file mode 100644 index 00000000..ddfd7158 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum @@ -0,0 +1 @@ +12bf6d7140ccbd296661a45a960cfd6f *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..95a5ab03 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm @@ -0,0 +1,19117 @@ +; $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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: bios.c +; +; $Id: VBoxBiosAlternative386.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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 - ATA disk support. +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: eltorito.c +; +; $Id: VBoxBiosAlternative386.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: timepci.c +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: scsi.c +; +; $Id: VBoxBiosAlternative386.asm $ +; SCSI host adapter driver to boot from SCSI disks +; +; +; +; Copyright (C) 2004-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: ahci.c +; +; $Id: VBoxBiosAlternative386.asm $ +; AHCI host adapter driver to boot from SATA disks. +; +; +; +; Copyright (C) 2011-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: virtio.c +; +; $Id: VBoxBiosAlternative386.asm $ +; VirtIO-SCSI host adapter driver to boot from disks. +; +; +; +; Copyright (C) 2019-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: buslogic.c +; +; $Id: VBoxBiosAlternative386.asm $ +; BusLogic SCSI host adapter driver to boot from disks. +; +; +; +; Copyright (C) 2021-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: lsilogic.c +; +; $Id: VBoxBiosAlternative386.asm $ +; LsiLogic SCSI host adapter driver to boot from disks. +; +; +; +; Copyright (C) 2021-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: apm.c +; +; $Id: VBoxBiosAlternative386.asm $ +; APM BIOS support. Implements APM version 1.2. +; +; +; +; Copyright (C) 2004-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: pcibios.c +; +; $Id: VBoxBiosAlternative386.asm $ +; PCI BIOS support. +; +; +; +; Copyright (C) 2004-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: pciutil.c +; +; $Id: VBoxBiosAlternative386.asm $ +; Utility routines for calling the PCI BIOS. +; +; +; +; Copyright (C) 2011-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: vds.c +; +; $Id: VBoxBiosAlternative386.asm $ +; Utility routines for calling the Virtual DMA Services. +; +; +; +; Copyright (C) 2011-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: __U4M.asm +; +; $Id: VBoxBiosAlternative386.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: __U4D.asm +; +; $Id: VBoxBiosAlternative386.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: __U8RS.asm +; +; $Id: VBoxBiosAlternative386.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: __U8LS.asm +; +; $Id: VBoxBiosAlternative386.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: fmemset.asm +; +; $Id: VBoxBiosAlternative386.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: fmemcpy.asm +; +; $Id: VBoxBiosAlternative386.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: pcibio32.asm +; +; $Id: VBoxBiosAlternative386.asm $ +; BIOS32 service directory and 32-bit PCI BIOS entry point +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- + +; +; Source file: apm_pm.asm +; +; $Id: +; Protected-mode APM implementation. +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: orgs.asm +; +; $Id: VBoxBiosAlternative386.asm $ +; ??? +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + + + + +section _DATA progbits vstart=0x0 align=1 ; size=0xe0 class=DATA group=DGROUP + ; disGetNextSymbol 0xf0000 LB 0xe0 -> 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 0x85 -> 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 0x76 -> off=0x0 cb=000000000000000c uValue=00000000000f006a '_pktacc' +_pktacc: ; 0xf006a LB 0xc + db 000h, 000h, 000h, 000h, 000h, 000h, 0a9h, 02ch, 0cah, 07dh, 05eh, 08ch + ; disGetNextSymbol 0xf0076 LB 0x6a -> off=0x0 cb=000000000000000c uValue=00000000000f0076 '_softrst' +_softrst: ; 0xf0076 LB 0xc + db 000h, 000h, 000h, 000h, 000h, 000h, 0e8h, 02eh, 053h, 03ch, 053h, 03ch + ; disGetNextSymbol 0xf0082 LB 0x5e -> off=0x0 cb=0000000000000018 uValue=00000000000f0082 '_dskacc' +_dskacc: ; 0xf0082 LB 0x18 + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 099h, 02bh, 04eh, 02ch, 000h, 000h, 000h, 000h + db 0c6h, 07bh, 0c8h, 07ch, 034h, 08bh, 0dah, 08bh + ; disGetNextSymbol 0xf009a LB 0x46 -> off=0x0 cb=0000000000000046 uValue=00000000000f009a '_hbaacc' +_hbaacc: ; 0xf009a LB 0x46 + db 000h, 010h, 030h, 000h, 0aah, 0a5h, 00dh, 0a3h, 0e3h, 0a3h, 000h, 010h, 054h, 000h, 0aah, 0a5h + db 00dh, 0a3h, 0e3h, 0a3h, 04bh, 010h, 040h, 010h, 0d1h, 0a0h, 047h, 09fh, 0fbh, 09fh, 0f4h, 01ah + db 048h, 010h, 0d0h, 09dh, 005h, 098h, 05bh, 099h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h, 032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h + db 0f3h, 000h, 000h, 000h, 000h, 000h + +section CONST progbits vstart=0xe0 align=1 ; size=0xd14 class=DATA group=DGROUP + ; disGetNextSymbol 0xf00e0 LB 0xd14 -> off=0xd14 cb=0000000000000000 uValue=00000000000f0df4 'bios_cvs_version_string' + db 'CPUID EDX: 0x%lx', 00ah, 000h + db 'NMI Handler called', 00ah, 000h + db 'INT18: BOOT FAILURE', 00ah, 000h + db 'Bootfail', 000h + db '%s', 00ah, 000h + db 'FATAL: ', 000h + db 'bios_printf: unknown %ll format', 00ah, 000h + db 'bios_printf: unknown format', 00ah, 000h + db 'No PCI IDE controller, not probing IDE', 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!', 00ah, 000h + db 'Could not read from the boot medium!', 00ah, 000h + db 'Please insert a bootable medium and reboot.', 00ah, 000h + db 'CDROM boot failure code : %04x', 00ah, 000h + db 'Boot : bseqnr=%d, bootseq=%x', 00dh, 00ah, 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_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 + 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=0xdf4 align=1 ; size=0x3fa class=DATA group=DGROUP + ; disGetNextSymbol 0xf0df4 LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0df4 'bios_cvs_version_string' +bios_cvs_version_string: ; 0xf0df4 LB 0x12 + db 'VirtualBox 7.0.6', 000h, 000h + ; disGetNextSymbol 0xf0e06 LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0e06 '_bios_prefix_string' +_bios_prefix_string: ; 0xf0e06 LB 0x8 + db 'BIOS: ', 000h, 000h + ; disGetNextSymbol 0xf0e0e LB 0x3e0 -> off=0x0 cb=0000000000000006 uValue=00000000000f0e0e 'isotag' +isotag: ; 0xf0e0e LB 0x6 + db 'CD001', 000h + ; disGetNextSymbol 0xf0e14 LB 0x3da -> off=0x0 cb=0000000000000018 uValue=00000000000f0e14 'eltorito' +eltorito: ; 0xf0e14 LB 0x18 + db 'EL TORITO SPECIFICATION', 000h + ; disGetNextSymbol 0xf0e2c LB 0x3c2 -> off=0x0 cb=0000000000000028 uValue=00000000000f0e2c 'drivetypes' +drivetypes: ; 0xf0e2c 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 0xf0e54 LB 0x39a -> off=0x0 cb=000000000000037a uValue=00000000000f0e54 'scan_to_scanascii' +scan_to_scanascii: ; 0xf0e54 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 0xf11ce LB 0x20 -> off=0x0 cb=0000000000000020 uValue=00000000000f11ce 'panic_msg_keyb_buffer_full' +panic_msg_keyb_buffer_full: ; 0xf11ce LB 0x20 + db '%s: keyboard input buffer full', 00ah, 000h + + ; Padding 0x412 bytes at 0xf11ee + times 1042 db 0 + +section _TEXT progbits vstart=0x1600 align=1 ; size=0x979c class=CODE group=AUTO + ; disGetNextSymbol 0xf1600 LB 0x979c -> off=0x0 cb=0000000000000064 uValue=00000000000f0000 'rom_scan' +rom_scan: ; 0xf1600 LB 0x64 + push bp ; 55 ; 0xf1600 post.c:106 + mov bp, sp ; 89 e5 ; 0xf1601 + push bx ; 53 ; 0xf1603 + push cx ; 51 ; 0xf1604 + push si ; 56 ; 0xf1605 + push di ; 57 ; 0xf1606 + sub sp, strict byte 00008h ; 83 ec 08 ; 0xf1607 + push ax ; 50 ; 0xf160a + push dx ; 52 ; 0xf160b + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf160c post.c:113 + cmp ax, word [bp-014h] ; 3b 46 ec ; 0xf160f + jnc short 0165bh ; 73 47 ; 0xf1612 + mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf1614 post.c:114 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1619 + mov es, ax ; 8e c0 ; 0xf161c post.c:116 + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf161e + cmp word [es:bx], 0aa55h ; 26 81 3f 55 aa ; 0xf1621 + jne short 01654h ; 75 2c ; 0xf1626 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1628 post.c:122 + mov word [bp-010h], strict word 00003h ; c7 46 f0 03 00 ; 0xf162b + call far [bp-010h] ; ff 5e f0 ; 0xf1630 post.c:123 + cli ; fa ; 0xf1633 post.c:124 + mov ax, 0f000h ; b8 00 f0 ; 0xf1634 post.c:125 + mov ds, ax ; 8e d8 ; 0xf1637 + les bx, [bp-00ch] ; c4 5e f4 ; 0xf1639 post.c:130 + mov al, byte [es:bx+002h] ; 26 8a 47 02 ; 0xf163c + add AL, strict byte 003h ; 04 03 ; 0xf1640 + and AL, strict byte 0fch ; 24 fc ; 0xf1642 + xor ah, ah ; 30 e4 ; 0xf1644 post.c:131 + cwd ; 99 ; 0xf1646 + sal dx, 002h ; c1 e2 02 ; 0xf1647 + db 01bh, 0c2h + ; sbb ax, dx ; 1b c2 ; 0xf164a + sar ax, 002h ; c1 f8 02 ; 0xf164c + add word [bp-012h], ax ; 01 46 ee ; 0xf164f + jmp short 0160ch ; eb b8 ; 0xf1652 post.c:133 + add word [bp-012h], 00080h ; 81 46 ee 80 00 ; 0xf1654 post.c:135 + jmp short 0160ch ; eb b1 ; 0xf1659 post.c:137 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf165b post.c:138 + pop di ; 5f ; 0xf165e + pop si ; 5e ; 0xf165f + pop cx ; 59 ; 0xf1660 + pop bx ; 5b ; 0xf1661 + pop bp ; 5d ; 0xf1662 + retn ; c3 ; 0xf1663 + ; disGetNextSymbol 0xf1664 LB 0x9738 -> off=0x0 cb=0000000000000042 uValue=00000000000f0064 'is_cpuid_supported' +is_cpuid_supported: ; 0xf1664 LB 0x42 + push bp ; 55 ; 0xf1664 post.c:145 + mov bp, sp ; 89 e5 ; 0xf1665 + push bx ; 53 ; 0xf1667 + push cx ; 51 ; 0xf1668 + push dx ; 52 ; 0xf1669 + pushfd ; 66 9c ; 0xf166a post.c:149 + pop edx ; 66 5a ; 0xf166c + db 08bh, 0c2h + ; mov ax, dx ; 8b c2 ; 0xf166e + shr edx, 010h ; 66 c1 ea 10 ; 0xf1670 + mov bx, ax ; 89 c3 ; 0xf1674 + mov cx, dx ; 89 d1 ; 0xf1676 + xor dl, 020h ; 80 f2 20 ; 0xf1678 post.c:150 + sal edx, 010h ; 66 c1 e2 10 ; 0xf167b post.c:151 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf167f + push edx ; 66 52 ; 0xf1681 + popfd ; 66 9d ; 0xf1683 + pushfd ; 66 9c ; 0xf1685 post.c:152 + pop edx ; 66 5a ; 0xf1687 + db 08bh, 0c2h + ; mov ax, dx ; 8b c2 ; 0xf1689 + shr edx, 010h ; 66 c1 ea 10 ; 0xf168b + cmp cx, dx ; 39 d1 ; 0xf168f post.c:153 + jne short 01697h ; 75 04 ; 0xf1691 + cmp bx, ax ; 39 c3 ; 0xf1693 + je short 0169ch ; 74 05 ; 0xf1695 + mov ax, strict word 00001h ; b8 01 00 ; 0xf1697 + jmp short 0169eh ; eb 02 ; 0xf169a + xor ax, ax ; 31 c0 ; 0xf169c + lea sp, [bp-006h] ; 8d 66 fa ; 0xf169e post.c:154 + pop dx ; 5a ; 0xf16a1 + pop cx ; 59 ; 0xf16a2 + pop bx ; 5b ; 0xf16a3 + pop bp ; 5d ; 0xf16a4 + retn ; c3 ; 0xf16a5 + ; disGetNextSymbol 0xf16a6 LB 0x96f6 -> off=0x0 cb=00000000000000c4 uValue=00000000000f00a6 'apic_setup' +apic_setup: ; 0xf16a6 LB 0xc4 + push bp ; 55 ; 0xf16a6 post.c:179 + mov bp, sp ; 89 e5 ; 0xf16a7 + push si ; 56 ; 0xf16a9 + push di ; 57 ; 0xf16aa + sub sp, strict byte 00012h ; 83 ec 12 ; 0xf16ab + call 01664h ; e8 b3 ff ; 0xf16ae post.c:188 + test ax, ax ; 85 c0 ; 0xf16b1 + je near 01763h ; 0f 84 ac 00 ; 0xf16b3 + mov ax, strict word 00001h ; b8 01 00 ; 0xf16b7 post.c:193 + xor dx, dx ; 31 d2 ; 0xf16ba + push SS ; 16 ; 0xf16bc + pop ES ; 07 ; 0xf16bd + lea di, [bp-016h] ; 8d 7e ea ; 0xf16be + sal edx, 010h ; 66 c1 e2 10 ; 0xf16c1 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf16c5 + db 066h, 08bh, 0c2h + ; mov eax, edx ; 66 8b c2 ; 0xf16c7 + cpuid ; 0f a2 ; 0xf16ca + db 066h, 026h, 089h, 005h + ; mov dword [es:di], eax ; 66 26 89 05 ; 0xf16cc + db 066h, 026h, 089h, 05dh, 004h + ; mov dword [es:di+004h], ebx ; 66 26 89 5d 04 ; 0xf16d0 + db 066h, 026h, 089h, 04dh, 008h + ; mov dword [es:di+008h], ecx ; 66 26 89 4d 08 ; 0xf16d5 + db 066h, 026h, 089h, 055h, 00ch + ; mov dword [es:di+00ch], edx ; 66 26 89 55 0c ; 0xf16da + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf16df post.c:194 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf16e2 + push dx ; 52 ; 0xf16e5 + push ax ; 50 ; 0xf16e6 + push 000e0h ; 68 e0 00 ; 0xf16e7 + push strict byte 00004h ; 6a 04 ; 0xf16ea + call 01a68h ; e8 79 03 ; 0xf16ec + add sp, strict byte 00008h ; 83 c4 08 ; 0xf16ef + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf16f2 post.c:195 + test ah, 002h ; f6 c4 02 ; 0xf16f5 + je short 01763h ; 74 69 ; 0xf16f8 + mov ax, strict word 00078h ; b8 78 00 ; 0xf16fa post.c:200 + call 0176ah ; e8 6a 00 ; 0xf16fd + xor si, si ; 31 f6 ; 0xf1700 post.c:202 + xor di, di ; 31 ff ; 0xf1702 + cmp AL, strict byte 002h ; 3c 02 ; 0xf1704 post.c:203 + jne short 0170dh ; 75 05 ; 0xf1706 + mov di, 00400h ; bf 00 04 ; 0xf1708 post.c:204 + jmp short 0171ch ; eb 0f ; 0xf170b post.c:205 + test al, al ; 84 c0 ; 0xf170d + jne short 01714h ; 75 03 ; 0xf170f + mov si, 00800h ; be 00 08 ; 0xf1711 post.c:206 + test di, di ; 85 ff ; 0xf1714 post.c:210 + jne short 0171ch ; 75 04 ; 0xf1716 + test si, si ; 85 f6 ; 0xf1718 + je short 01763h ; 74 47 ; 0xf171a + mov ax, strict word 0001bh ; b8 1b 00 ; 0xf171c post.c:211 + xor cx, cx ; 31 c9 ; 0xf171f + sal ecx, 010h ; 66 c1 e1 10 ; 0xf1721 + db 08bh, 0c8h + ; mov cx, ax ; 8b c8 ; 0xf1725 + rdmsr ; 0f 32 ; 0xf1727 + xchg edx, eax ; 66 92 ; 0xf1729 + db 08bh, 0d8h + ; mov bx, ax ; 8b d8 ; 0xf172b + shr eax, 010h ; 66 c1 e8 10 ; 0xf172d + db 08bh, 0cah + ; mov cx, dx ; 8b ca ; 0xf1731 + shr edx, 010h ; 66 c1 ea 10 ; 0xf1733 + xchg dx, cx ; 87 ca ; 0xf1737 + mov word [bp-006h], si ; 89 76 fa ; 0xf1739 post.c:212 + not word [bp-006h] ; f7 56 fa ; 0xf173c + and dx, word [bp-006h] ; 23 56 fa ; 0xf173f + or dx, di ; 09 fa ; 0xf1742 post.c:213 + mov si, strict word 0001bh ; be 1b 00 ; 0xf1744 post.c:214 + xor di, di ; 31 ff ; 0xf1747 + sal eax, 010h ; 66 c1 e0 10 ; 0xf1749 + db 08bh, 0c3h + ; mov ax, bx ; 8b c3 ; 0xf174d + xchg dx, cx ; 87 ca ; 0xf174f + sal edx, 010h ; 66 c1 e2 10 ; 0xf1751 + db 08bh, 0d1h + ; mov dx, cx ; 8b d1 ; 0xf1755 + xchg edx, eax ; 66 92 ; 0xf1757 + db 08bh, 0cfh + ; mov cx, di ; 8b cf ; 0xf1759 + sal ecx, 010h ; 66 c1 e1 10 ; 0xf175b + db 08bh, 0ceh + ; mov cx, si ; 8b ce ; 0xf175f + wrmsr ; 0f 30 ; 0xf1761 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf1763 post.c:216 + pop di ; 5f ; 0xf1766 + pop si ; 5e ; 0xf1767 + pop bp ; 5d ; 0xf1768 + retn ; c3 ; 0xf1769 + ; disGetNextSymbol 0xf176a LB 0x9632 -> off=0x0 cb=000000000000001d uValue=00000000000f016a 'inb_cmos' +inb_cmos: ; 0xf176a LB 0x1d + push bp ; 55 ; 0xf176a bios.c:76 + mov bp, sp ; 89 e5 ; 0xf176b + push dx ; 52 ; 0xf176d + mov AH, strict byte 070h ; b4 70 ; 0xf176e bios.c:78 + cmp AL, strict byte 080h ; 3c 80 ; 0xf1770 bios.c:80 + jc short 01776h ; 72 02 ; 0xf1772 + mov AH, strict byte 072h ; b4 72 ; 0xf1774 bios.c:81 + movzx dx, ah ; 0f b6 d4 ; 0xf1776 bios.c:82 + out DX, AL ; ee ; 0xf1779 + movzx dx, ah ; 0f b6 d4 ; 0xf177a bios.c:83 + inc dx ; 42 ; 0xf177d + in AL, DX ; ec ; 0xf177e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf177f + lea sp, [bp-002h] ; 8d 66 fe ; 0xf1781 bios.c:84 + pop dx ; 5a ; 0xf1784 + pop bp ; 5d ; 0xf1785 + retn ; c3 ; 0xf1786 + ; disGetNextSymbol 0xf1787 LB 0x9615 -> off=0x0 cb=000000000000001f uValue=00000000000f0187 'outb_cmos' +outb_cmos: ; 0xf1787 LB 0x1f + push bp ; 55 ; 0xf1787 bios.c:86 + mov bp, sp ; 89 e5 ; 0xf1788 + push bx ; 53 ; 0xf178a + mov ah, dl ; 88 d4 ; 0xf178b + mov BL, strict byte 070h ; b3 70 ; 0xf178d bios.c:88 + cmp AL, strict byte 080h ; 3c 80 ; 0xf178f bios.c:90 + jc short 01795h ; 72 02 ; 0xf1791 + mov BL, strict byte 072h ; b3 72 ; 0xf1793 bios.c:91 + movzx dx, bl ; 0f b6 d3 ; 0xf1795 bios.c:92 + out DX, AL ; ee ; 0xf1798 + movzx dx, bl ; 0f b6 d3 ; 0xf1799 bios.c:93 + inc dx ; 42 ; 0xf179c + mov al, ah ; 88 e0 ; 0xf179d + out DX, AL ; ee ; 0xf179f + lea sp, [bp-002h] ; 8d 66 fe ; 0xf17a0 bios.c:94 + pop bx ; 5b ; 0xf17a3 + pop bp ; 5d ; 0xf17a4 + retn ; c3 ; 0xf17a5 + ; disGetNextSymbol 0xf17a6 LB 0x95f6 -> off=0x0 cb=0000000000000025 uValue=00000000000f01a6 'get_cmos_word' +get_cmos_word: ; 0xf17a6 LB 0x25 + push bp ; 55 ; 0xf17a6 bios.c:99 + mov bp, sp ; 89 e5 ; 0xf17a7 + push bx ; 53 ; 0xf17a9 + push dx ; 52 ; 0xf17aa + mov dl, al ; 88 c2 ; 0xf17ab + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf17ad bios.c:101 + xor ah, ah ; 30 e4 ; 0xf17af + call 0176ah ; e8 b6 ff ; 0xf17b1 + movzx bx, al ; 0f b6 d8 ; 0xf17b4 + sal bx, 008h ; c1 e3 08 ; 0xf17b7 + movzx ax, dl ; 0f b6 c2 ; 0xf17ba + call 0176ah ; e8 aa ff ; 0xf17bd + xor ah, ah ; 30 e4 ; 0xf17c0 + or ax, bx ; 09 d8 ; 0xf17c2 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf17c4 bios.c:103 + pop dx ; 5a ; 0xf17c7 + pop bx ; 5b ; 0xf17c8 + pop bp ; 5d ; 0xf17c9 + retn ; c3 ; 0xf17ca + ; disGetNextSymbol 0xf17cb LB 0x95d1 -> off=0x0 cb=000000000000006a uValue=00000000000f01cb 'dummy_isr_function' +dummy_isr_function: ; 0xf17cb LB 0x6a + push bp ; 55 ; 0xf17cb bios.c:105 + mov bp, sp ; 89 e5 ; 0xf17cc + push ax ; 50 ; 0xf17ce + mov CH, strict byte 0ffh ; b5 ff ; 0xf17cf bios.c:113 + mov AL, strict byte 00bh ; b0 0b ; 0xf17d1 bios.c:115 + mov dx, strict word 00020h ; ba 20 00 ; 0xf17d3 + out DX, AL ; ee ; 0xf17d6 + in AL, DX ; ec ; 0xf17d7 bios.c:116 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf17d8 + mov bx, ax ; 89 c3 ; 0xf17da + mov cl, al ; 88 c1 ; 0xf17dc + test al, al ; 84 c0 ; 0xf17de bios.c:117 + je short 01826h ; 74 44 ; 0xf17e0 + mov AL, strict byte 00bh ; b0 0b ; 0xf17e2 bios.c:118 + mov dx, 000a0h ; ba a0 00 ; 0xf17e4 + out DX, AL ; ee ; 0xf17e7 + in AL, DX ; ec ; 0xf17e8 bios.c:119 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf17e9 + mov word [bp-002h], ax ; 89 46 fe ; 0xf17eb + cmp byte [bp-002h], 000h ; 80 7e fe 00 ; 0xf17ee bios.c:120 + je short 0180ch ; 74 18 ; 0xf17f2 + mov dx, 000a1h ; ba a1 00 ; 0xf17f4 bios.c:121 + in AL, DX ; ec ; 0xf17f7 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf17f8 + movzx bx, al ; 0f b6 d8 ; 0xf17fa bios.c:122 + movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf17fd + or ax, bx ; 09 d8 ; 0xf1801 + out DX, AL ; ee ; 0xf1803 + mov AL, strict byte 020h ; b0 20 ; 0xf1804 bios.c:123 + mov dx, 000a0h ; ba a0 00 ; 0xf1806 + out DX, AL ; ee ; 0xf1809 + jmp short 0181eh ; eb 12 ; 0xf180a bios.c:124 + mov dx, strict word 00021h ; ba 21 00 ; 0xf180c bios.c:125 + in AL, DX ; ec ; 0xf180f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1810 + and cl, 0fbh ; 80 e1 fb ; 0xf1812 bios.c:126 + movzx bx, al ; 0f b6 d8 ; 0xf1815 bios.c:127 + movzx ax, cl ; 0f b6 c1 ; 0xf1818 + or ax, bx ; 09 d8 ; 0xf181b + out DX, AL ; ee ; 0xf181d + mov AL, strict byte 020h ; b0 20 ; 0xf181e bios.c:129 + mov dx, strict word 00020h ; ba 20 00 ; 0xf1820 + out DX, AL ; ee ; 0xf1823 + mov ch, cl ; 88 cd ; 0xf1824 bios.c:130 + mov bx, strict word 0006bh ; bb 6b 00 ; 0xf1826 bios.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf1829 + mov es, ax ; 8e c0 ; 0xf182c + mov byte [es:bx], ch ; 26 88 2f ; 0xf182e + mov sp, bp ; 89 ec ; 0xf1831 bios.c:133 + pop bp ; 5d ; 0xf1833 + retn ; c3 ; 0xf1834 + ; disGetNextSymbol 0xf1835 LB 0x9567 -> off=0x0 cb=0000000000000012 uValue=00000000000f0235 'nmi_handler_msg' +nmi_handler_msg: ; 0xf1835 LB 0x12 + push bp ; 55 ; 0xf1835 bios.c:136 + mov bp, sp ; 89 e5 ; 0xf1836 + push 000f2h ; 68 f2 00 ; 0xf1838 bios.c:138 + push strict byte 00007h ; 6a 07 ; 0xf183b + call 01a68h ; e8 28 02 ; 0xf183d + add sp, strict byte 00004h ; 83 c4 04 ; 0xf1840 + mov sp, bp ; 89 ec ; 0xf1843 bios.c:139 + pop bp ; 5d ; 0xf1845 + retn ; c3 ; 0xf1846 + ; disGetNextSymbol 0xf1847 LB 0x9555 -> off=0x0 cb=000000000000002d uValue=00000000000f0247 'int18_panic_msg' +int18_panic_msg: ; 0xf1847 LB 0x2d + push bp ; 55 ; 0xf1847 bios.c:141 + mov bp, sp ; 89 e5 ; 0xf1848 + mov bx, 00e06h ; bb 06 0e ; 0xf184a bios.c:143 + mov cx, ds ; 8c d9 ; 0xf184d + mov ax, strict word 00004h ; b8 04 00 ; 0xf184f + call 01a27h ; e8 d2 01 ; 0xf1852 + push 00106h ; 68 06 01 ; 0xf1855 + push strict byte 00004h ; 6a 04 ; 0xf1858 + call 01a68h ; e8 0b 02 ; 0xf185a + add sp, strict byte 00004h ; 83 c4 04 ; 0xf185d + mov bx, 0011bh ; bb 1b 01 ; 0xf1860 bios.c:144 + mov dx, 0040fh ; ba 0f 04 ; 0xf1863 + mov al, byte [bx] ; 8a 07 ; 0xf1866 + out DX, AL ; ee ; 0xf1868 + inc bx ; 43 ; 0xf1869 + mov al, byte [bx] ; 8a 07 ; 0xf186a + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xf186c + jne short 01868h ; 75 f8 ; 0xf186e + mov sp, bp ; 89 ec ; 0xf1870 bios.c:145 + pop bp ; 5d ; 0xf1872 + retn ; c3 ; 0xf1873 + ; disGetNextSymbol 0xf1874 LB 0x9528 -> off=0x0 cb=0000000000000020 uValue=00000000000f0274 'log_bios_start' +log_bios_start: ; 0xf1874 LB 0x20 + push bp ; 55 ; 0xf1874 bios.c:147 + mov bp, sp ; 89 e5 ; 0xf1875 + mov bx, 00e06h ; bb 06 0e ; 0xf1877 bios.c:152 + mov cx, ds ; 8c d9 ; 0xf187a + mov ax, strict word 00004h ; b8 04 00 ; 0xf187c + call 01a27h ; e8 a5 01 ; 0xf187f + push 00df4h ; 68 f4 0d ; 0xf1882 + push 00124h ; 68 24 01 ; 0xf1885 + push strict byte 00004h ; 6a 04 ; 0xf1888 + call 01a68h ; e8 db 01 ; 0xf188a + add sp, strict byte 00006h ; 83 c4 06 ; 0xf188d + mov sp, bp ; 89 ec ; 0xf1890 bios.c:153 + pop bp ; 5d ; 0xf1892 + retn ; c3 ; 0xf1893 + ; disGetNextSymbol 0xf1894 LB 0x9508 -> off=0x0 cb=0000000000000027 uValue=00000000000f0294 'print_bios_banner' +print_bios_banner: ; 0xf1894 LB 0x27 + push bp ; 55 ; 0xf1894 bios.c:172 + mov bp, sp ; 89 e5 ; 0xf1895 + mov bx, strict word 00072h ; bb 72 00 ; 0xf1897 bios.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf189a + mov es, ax ; 8e c0 ; 0xf189d + mov ax, word [es:bx] ; 26 8b 07 ; 0xf189f + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf18a2 bios.c:63 + cmp ax, 01234h ; 3d 34 12 ; 0xf18a7 bios.c:178 + jne short 018b4h ; 75 08 ; 0xf18aa + mov AL, strict byte 003h ; b0 03 ; 0xf18ac bios.c:181 + mov AH, strict byte 000h ; b4 00 ; 0xf18ae + int 010h ; cd 10 ; 0xf18b0 + jmp short 018b7h ; eb 03 ; 0xf18b2 bios.c:182 + call 078d1h ; e8 1a 60 ; 0xf18b4 bios.c:185 + mov sp, bp ; 89 ec ; 0xf18b7 bios.c:212 + pop bp ; 5d ; 0xf18b9 + retn ; c3 ; 0xf18ba + ; disGetNextSymbol 0xf18bb LB 0x94e1 -> off=0x0 cb=000000000000003b uValue=00000000000f02bb 'send' +send: ; 0xf18bb LB 0x3b + push bp ; 55 ; 0xf18bb print.c:82 + mov bp, sp ; 89 e5 ; 0xf18bc + push bx ; 53 ; 0xf18be + push cx ; 51 ; 0xf18bf + mov bx, ax ; 89 c3 ; 0xf18c0 + mov cl, dl ; 88 d1 ; 0xf18c2 + test AL, strict byte 008h ; a8 08 ; 0xf18c4 print.c:90 + je short 018ceh ; 74 06 ; 0xf18c6 + mov al, dl ; 88 d0 ; 0xf18c8 print.c:91 + mov dx, 00403h ; ba 03 04 ; 0xf18ca + out DX, AL ; ee ; 0xf18cd + test bl, 004h ; f6 c3 04 ; 0xf18ce print.c:92 + je short 018d9h ; 74 06 ; 0xf18d1 + mov al, cl ; 88 c8 ; 0xf18d3 print.c:93 + mov dx, 00504h ; ba 04 05 ; 0xf18d5 + out DX, AL ; ee ; 0xf18d8 + test bl, 002h ; f6 c3 02 ; 0xf18d9 print.c:95 + je short 018efh ; 74 11 ; 0xf18dc + cmp cl, 00ah ; 80 f9 0a ; 0xf18de print.c:96 + jne short 018e9h ; 75 06 ; 0xf18e1 + mov AL, strict byte 00dh ; b0 0d ; 0xf18e3 print.c:97 + mov AH, strict byte 00eh ; b4 0e ; 0xf18e5 + int 010h ; cd 10 ; 0xf18e7 + mov al, cl ; 88 c8 ; 0xf18e9 print.c:98 + mov AH, strict byte 00eh ; b4 0e ; 0xf18eb + int 010h ; cd 10 ; 0xf18ed + lea sp, [bp-004h] ; 8d 66 fc ; 0xf18ef print.c:100 + pop cx ; 59 ; 0xf18f2 + pop bx ; 5b ; 0xf18f3 + pop bp ; 5d ; 0xf18f4 + retn ; c3 ; 0xf18f5 + ; disGetNextSymbol 0xf18f6 LB 0x94a6 -> off=0x0 cb=000000000000005f uValue=00000000000f02f6 'put_int' +put_int: ; 0xf18f6 LB 0x5f + push bp ; 55 ; 0xf18f6 print.c:102 + mov bp, sp ; 89 e5 ; 0xf18f7 + push si ; 56 ; 0xf18f9 + push di ; 57 ; 0xf18fa + push ax ; 50 ; 0xf18fb + push ax ; 50 ; 0xf18fc + mov si, ax ; 89 c6 ; 0xf18fd + mov word [bp-008h], dx ; 89 56 f8 ; 0xf18ff + mov di, strict word 0000ah ; bf 0a 00 ; 0xf1902 print.c:104 + mov ax, dx ; 89 d0 ; 0xf1905 + cwd ; 99 ; 0xf1907 + idiv di ; f7 ff ; 0xf1908 + mov word [bp-006h], ax ; 89 46 fa ; 0xf190a + test ax, ax ; 85 c0 ; 0xf190d print.c:105 + je short 0191bh ; 74 0a ; 0xf190f + dec bx ; 4b ; 0xf1911 print.c:106 + mov dx, ax ; 89 c2 ; 0xf1912 + mov ax, si ; 89 f0 ; 0xf1914 + call 018f6h ; e8 dd ff ; 0xf1916 + jmp short 01936h ; eb 1b ; 0xf1919 print.c:107 + dec bx ; 4b ; 0xf191b print.c:108 + test bx, bx ; 85 db ; 0xf191c + jle short 0192ah ; 7e 0a ; 0xf191e + mov dx, strict word 00020h ; ba 20 00 ; 0xf1920 print.c:109 + mov ax, si ; 89 f0 ; 0xf1923 + call 018bbh ; e8 93 ff ; 0xf1925 + jmp short 0191bh ; eb f1 ; 0xf1928 + test cx, cx ; 85 c9 ; 0xf192a print.c:110 + je short 01936h ; 74 08 ; 0xf192c + mov dx, strict word 0002dh ; ba 2d 00 ; 0xf192e print.c:111 + mov ax, si ; 89 f0 ; 0xf1931 + call 018bbh ; e8 85 ff ; 0xf1933 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1936 print.c:113 + mov DL, strict byte 00ah ; b2 0a ; 0xf1939 + mul dl ; f6 e2 ; 0xf193b + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf193d + sub dl, al ; 28 c2 ; 0xf1940 + mov al, dl ; 88 d0 ; 0xf1942 + add AL, strict byte 030h ; 04 30 ; 0xf1944 + movzx dx, al ; 0f b6 d0 ; 0xf1946 + mov ax, si ; 89 f0 ; 0xf1949 + call 018bbh ; e8 6d ff ; 0xf194b + lea sp, [bp-004h] ; 8d 66 fc ; 0xf194e print.c:114 + pop di ; 5f ; 0xf1951 + pop si ; 5e ; 0xf1952 + pop bp ; 5d ; 0xf1953 + retn ; c3 ; 0xf1954 + ; disGetNextSymbol 0xf1955 LB 0x9447 -> off=0x0 cb=0000000000000060 uValue=00000000000f0355 'put_uint' +put_uint: ; 0xf1955 LB 0x60 + push bp ; 55 ; 0xf1955 print.c:116 + mov bp, sp ; 89 e5 ; 0xf1956 + push si ; 56 ; 0xf1958 + push di ; 57 ; 0xf1959 + push ax ; 50 ; 0xf195a + push ax ; 50 ; 0xf195b + mov si, ax ; 89 c6 ; 0xf195c + mov word [bp-008h], dx ; 89 56 f8 ; 0xf195e + mov ax, dx ; 89 d0 ; 0xf1961 print.c:118 + xor dx, dx ; 31 d2 ; 0xf1963 + mov di, strict word 0000ah ; bf 0a 00 ; 0xf1965 + div di ; f7 f7 ; 0xf1968 + mov word [bp-006h], ax ; 89 46 fa ; 0xf196a + test ax, ax ; 85 c0 ; 0xf196d print.c:119 + je short 0197bh ; 74 0a ; 0xf196f + dec bx ; 4b ; 0xf1971 print.c:120 + mov dx, ax ; 89 c2 ; 0xf1972 + mov ax, si ; 89 f0 ; 0xf1974 + call 01955h ; e8 dc ff ; 0xf1976 + jmp short 01996h ; eb 1b ; 0xf1979 print.c:121 + dec bx ; 4b ; 0xf197b print.c:122 + test bx, bx ; 85 db ; 0xf197c + jle short 0198ah ; 7e 0a ; 0xf197e + mov dx, strict word 00020h ; ba 20 00 ; 0xf1980 print.c:123 + mov ax, si ; 89 f0 ; 0xf1983 + call 018bbh ; e8 33 ff ; 0xf1985 + jmp short 0197bh ; eb f1 ; 0xf1988 + test cx, cx ; 85 c9 ; 0xf198a print.c:124 + je short 01996h ; 74 08 ; 0xf198c + mov dx, strict word 0002dh ; ba 2d 00 ; 0xf198e print.c:125 + mov ax, si ; 89 f0 ; 0xf1991 + call 018bbh ; e8 25 ff ; 0xf1993 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1996 print.c:127 + mov DL, strict byte 00ah ; b2 0a ; 0xf1999 + mul dl ; f6 e2 ; 0xf199b + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf199d + sub dl, al ; 28 c2 ; 0xf19a0 + mov al, dl ; 88 d0 ; 0xf19a2 + add AL, strict byte 030h ; 04 30 ; 0xf19a4 + movzx dx, al ; 0f b6 d0 ; 0xf19a6 + mov ax, si ; 89 f0 ; 0xf19a9 + call 018bbh ; e8 0d ff ; 0xf19ab + lea sp, [bp-004h] ; 8d 66 fc ; 0xf19ae print.c:128 + pop di ; 5f ; 0xf19b1 + pop si ; 5e ; 0xf19b2 + pop bp ; 5d ; 0xf19b3 + retn ; c3 ; 0xf19b4 + ; disGetNextSymbol 0xf19b5 LB 0x93e7 -> off=0x0 cb=0000000000000072 uValue=00000000000f03b5 'put_luint' +put_luint: ; 0xf19b5 LB 0x72 + push bp ; 55 ; 0xf19b5 print.c:130 + mov bp, sp ; 89 e5 ; 0xf19b6 + push si ; 56 ; 0xf19b8 + push di ; 57 ; 0xf19b9 + push ax ; 50 ; 0xf19ba + push ax ; 50 ; 0xf19bb + mov si, ax ; 89 c6 ; 0xf19bc + mov word [bp-006h], bx ; 89 5e fa ; 0xf19be + mov di, dx ; 89 d7 ; 0xf19c1 + mov ax, bx ; 89 d8 ; 0xf19c3 print.c:132 + mov dx, cx ; 89 ca ; 0xf19c5 + mov bx, strict word 0000ah ; bb 0a 00 ; 0xf19c7 + xor cx, cx ; 31 c9 ; 0xf19ca + call 0aca0h ; e8 d1 92 ; 0xf19cc + mov word [bp-008h], ax ; 89 46 f8 ; 0xf19cf + mov cx, dx ; 89 d1 ; 0xf19d2 + mov dx, ax ; 89 c2 ; 0xf19d4 print.c:133 + or dx, cx ; 09 ca ; 0xf19d6 + je short 019e9h ; 74 0f ; 0xf19d8 + push word [bp+004h] ; ff 76 04 ; 0xf19da print.c:134 + lea dx, [di-001h] ; 8d 55 ff ; 0xf19dd + mov bx, ax ; 89 c3 ; 0xf19e0 + mov ax, si ; 89 f0 ; 0xf19e2 + call 019b5h ; e8 ce ff ; 0xf19e4 + jmp short 01a06h ; eb 1d ; 0xf19e7 print.c:135 + dec di ; 4f ; 0xf19e9 print.c:136 + test di, di ; 85 ff ; 0xf19ea + jle short 019f8h ; 7e 0a ; 0xf19ec + mov dx, strict word 00020h ; ba 20 00 ; 0xf19ee print.c:137 + mov ax, si ; 89 f0 ; 0xf19f1 + call 018bbh ; e8 c5 fe ; 0xf19f3 + jmp short 019e9h ; eb f1 ; 0xf19f6 + cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xf19f8 print.c:138 + je short 01a06h ; 74 08 ; 0xf19fc + mov dx, strict word 0002dh ; ba 2d 00 ; 0xf19fe print.c:139 + mov ax, si ; 89 f0 ; 0xf1a01 + call 018bbh ; e8 b5 fe ; 0xf1a03 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf1a06 print.c:141 + mov DL, strict byte 00ah ; b2 0a ; 0xf1a09 + mul dl ; f6 e2 ; 0xf1a0b + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf1a0d + sub dl, al ; 28 c2 ; 0xf1a10 + mov al, dl ; 88 d0 ; 0xf1a12 + add AL, strict byte 030h ; 04 30 ; 0xf1a14 + movzx dx, al ; 0f b6 d0 ; 0xf1a16 + mov ax, si ; 89 f0 ; 0xf1a19 + call 018bbh ; e8 9d fe ; 0xf1a1b + lea sp, [bp-004h] ; 8d 66 fc ; 0xf1a1e print.c:142 + pop di ; 5f ; 0xf1a21 + pop si ; 5e ; 0xf1a22 + pop bp ; 5d ; 0xf1a23 + retn 00002h ; c2 02 00 ; 0xf1a24 + ; disGetNextSymbol 0xf1a27 LB 0x9375 -> off=0x0 cb=0000000000000021 uValue=00000000000f0427 'put_str' +put_str: ; 0xf1a27 LB 0x21 + push bp ; 55 ; 0xf1a27 print.c:144 + mov bp, sp ; 89 e5 ; 0xf1a28 + push dx ; 52 ; 0xf1a2a + push si ; 56 ; 0xf1a2b + mov si, ax ; 89 c6 ; 0xf1a2c + mov es, cx ; 8e c1 ; 0xf1a2e print.c:148 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf1a30 + test dl, dl ; 84 d2 ; 0xf1a33 + je short 01a41h ; 74 0a ; 0xf1a35 + xor dh, dh ; 30 f6 ; 0xf1a37 print.c:149 + mov ax, si ; 89 f0 ; 0xf1a39 + call 018bbh ; e8 7d fe ; 0xf1a3b + inc bx ; 43 ; 0xf1a3e print.c:150 + jmp short 01a2eh ; eb ed ; 0xf1a3f print.c:151 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf1a41 print.c:152 + pop si ; 5e ; 0xf1a44 + pop dx ; 5a ; 0xf1a45 + pop bp ; 5d ; 0xf1a46 + retn ; c3 ; 0xf1a47 + ; disGetNextSymbol 0xf1a48 LB 0x9354 -> off=0x0 cb=0000000000000020 uValue=00000000000f0448 'put_str_near' +put_str_near: ; 0xf1a48 LB 0x20 + push bp ; 55 ; 0xf1a48 print.c:154 + mov bp, sp ; 89 e5 ; 0xf1a49 + push bx ; 53 ; 0xf1a4b + push cx ; 51 ; 0xf1a4c + mov cx, ax ; 89 c1 ; 0xf1a4d + mov bx, dx ; 89 d3 ; 0xf1a4f + mov dl, byte [bx] ; 8a 17 ; 0xf1a51 print.c:158 + test dl, dl ; 84 d2 ; 0xf1a53 + je short 01a61h ; 74 0a ; 0xf1a55 + xor dh, dh ; 30 f6 ; 0xf1a57 print.c:159 + mov ax, cx ; 89 c8 ; 0xf1a59 + call 018bbh ; e8 5d fe ; 0xf1a5b + inc bx ; 43 ; 0xf1a5e print.c:160 + jmp short 01a51h ; eb f0 ; 0xf1a5f print.c:161 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf1a61 print.c:162 + pop cx ; 59 ; 0xf1a64 + pop bx ; 5b ; 0xf1a65 + pop bp ; 5d ; 0xf1a66 + retn ; c3 ; 0xf1a67 + ; disGetNextSymbol 0xf1a68 LB 0x9334 -> off=0x0 cb=000000000000033d uValue=00000000000f0468 'bios_printf' +bios_printf: ; 0xf1a68 LB 0x33d + push bp ; 55 ; 0xf1a68 print.c:175 + mov bp, sp ; 89 e5 ; 0xf1a69 + push bx ; 53 ; 0xf1a6b + push cx ; 51 ; 0xf1a6c + push dx ; 52 ; 0xf1a6d + push si ; 56 ; 0xf1a6e + push di ; 57 ; 0xf1a6f + sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf1a70 + lea bx, [bp+008h] ; 8d 5e 08 ; 0xf1a73 print.c:183 + mov word [bp-016h], bx ; 89 5e ea ; 0xf1a76 + mov [bp-014h], ss ; 8c 56 ec ; 0xf1a79 + xor bx, bx ; 31 db ; 0xf1a7c print.c:185 + xor di, di ; 31 ff ; 0xf1a7e print.c:186 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1a80 print.c:188 + and ax, strict word 00007h ; 25 07 00 ; 0xf1a83 + cmp ax, strict word 00007h ; 3d 07 00 ; 0xf1a86 + jne short 01a96h ; 75 0b ; 0xf1a89 + push 00128h ; 68 28 01 ; 0xf1a8b print.c:189 + push strict byte 00002h ; 6a 02 ; 0xf1a8e + call 01a68h ; e8 d5 ff ; 0xf1a90 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf1a93 + mov si, word [bp+006h] ; 8b 76 06 ; 0xf1a96 print.c:192 + mov dl, byte [si] ; 8a 14 ; 0xf1a99 + test dl, dl ; 84 d2 ; 0xf1a9b + je near 01d89h ; 0f 84 e8 02 ; 0xf1a9d + cmp dl, 025h ; 80 fa 25 ; 0xf1aa1 print.c:193 + jne short 01aaeh ; 75 08 ; 0xf1aa4 + mov bx, strict word 00001h ; bb 01 00 ; 0xf1aa6 print.c:194 + xor di, di ; 31 ff ; 0xf1aa9 print.c:195 + jmp near 01d83h ; e9 d5 02 ; 0xf1aab print.c:197 + test bx, bx ; 85 db ; 0xf1aae + je near 01d7bh ; 0f 84 c7 02 ; 0xf1ab0 + cmp dl, 030h ; 80 fa 30 ; 0xf1ab4 print.c:198 + jc short 01acch ; 72 13 ; 0xf1ab7 + cmp dl, 039h ; 80 fa 39 ; 0xf1ab9 + jnbe short 01acch ; 77 0e ; 0xf1abc + movzx ax, dl ; 0f b6 c2 ; 0xf1abe print.c:199 + imul di, di, strict byte 0000ah ; 6b ff 0a ; 0xf1ac1 + sub ax, strict word 00030h ; 2d 30 00 ; 0xf1ac4 + add di, ax ; 01 c7 ; 0xf1ac7 + jmp near 01d83h ; e9 b7 02 ; 0xf1ac9 print.c:201 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1acc print.c:202 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1acf + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1ad2 + les bx, [bp-016h] ; c4 5e ea ; 0xf1ad6 + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1ad9 + mov word [bp-012h], ax ; 89 46 ee ; 0xf1add + cmp dl, 078h ; 80 fa 78 ; 0xf1ae0 print.c:203 + je short 01aeah ; 74 05 ; 0xf1ae3 + cmp dl, 058h ; 80 fa 58 ; 0xf1ae5 + jne short 01b40h ; 75 56 ; 0xf1ae8 + test di, di ; 85 ff ; 0xf1aea print.c:204 + jne short 01af1h ; 75 03 ; 0xf1aec + mov di, strict word 00004h ; bf 04 00 ; 0xf1aee print.c:205 + cmp dl, 078h ; 80 fa 78 ; 0xf1af1 print.c:206 + jne short 01afdh ; 75 07 ; 0xf1af4 + mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1af6 print.c:207 + jmp short 01b02h ; eb 05 ; 0xf1afb print.c:208 + mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1afd print.c:209 + lea ax, [di-001h] ; 8d 45 ff ; 0xf1b02 print.c:210 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1b05 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1b08 + test ax, ax ; 85 c0 ; 0xf1b0b + jl near 01d77h ; 0f 8c 66 02 ; 0xf1b0d + mov cx, ax ; 89 c1 ; 0xf1b11 print.c:211 + sal cx, 002h ; c1 e1 02 ; 0xf1b13 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1b16 + shr ax, CL ; d3 e8 ; 0xf1b19 + xor ah, ah ; 30 e4 ; 0xf1b1b + and AL, strict byte 00fh ; 24 0f ; 0xf1b1d + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1b1f print.c:212 + jnbe short 01b2bh ; 77 07 ; 0xf1b22 + mov dx, ax ; 89 c2 ; 0xf1b24 + add dx, strict byte 00030h ; 83 c2 30 ; 0xf1b26 + jmp short 01b33h ; eb 08 ; 0xf1b29 + sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1b2b + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1b2e + add dx, ax ; 01 c2 ; 0xf1b31 + xor dh, dh ; 30 f6 ; 0xf1b33 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b35 + call 018bbh ; e8 80 fd ; 0xf1b38 + dec word [bp-00ch] ; ff 4e f4 ; 0xf1b3b print.c:213 + jmp short 01b08h ; eb c8 ; 0xf1b3e + cmp dl, 075h ; 80 fa 75 ; 0xf1b40 print.c:215 + jne short 01b54h ; 75 0f ; 0xf1b43 + xor cx, cx ; 31 c9 ; 0xf1b45 print.c:216 + mov bx, di ; 89 fb ; 0xf1b47 + mov dx, ax ; 89 c2 ; 0xf1b49 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b4b + call 01955h ; e8 04 fe ; 0xf1b4e + jmp near 01d77h ; e9 23 02 ; 0xf1b51 print.c:218 + cmp dl, 06ch ; 80 fa 6c ; 0xf1b54 + jne near 01c36h ; 0f 85 db 00 ; 0xf1b57 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1b5b + cmp dl, byte [bx+001h] ; 3a 57 01 ; 0xf1b5e + jne near 01c36h ; 0f 85 d1 00 ; 0xf1b61 + add word [bp+006h], strict byte 00002h ; 83 46 06 02 ; 0xf1b65 print.c:222 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1b69 print.c:223 + mov dl, byte [bx] ; 8a 17 ; 0xf1b6c + mov word [bp-026h], ax ; 89 46 da ; 0xf1b6e print.c:225 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b71 print.c:226 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1b74 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b77 + les bx, [bp-016h] ; c4 5e ea ; 0xf1b7b + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1b7e + mov word [bp-024h], ax ; 89 46 dc ; 0xf1b82 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b85 print.c:227 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1b88 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b8b + les bx, [bp-016h] ; c4 5e ea ; 0xf1b8f + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1b92 + mov word [bp-022h], ax ; 89 46 de ; 0xf1b96 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b99 print.c:228 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1b9c + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b9f + les bx, [bp-016h] ; c4 5e ea ; 0xf1ba3 + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1ba6 + mov word [bp-020h], ax ; 89 46 e0 ; 0xf1baa + cmp dl, 078h ; 80 fa 78 ; 0xf1bad print.c:229 + je short 01bb7h ; 74 05 ; 0xf1bb0 + cmp dl, 058h ; 80 fa 58 ; 0xf1bb2 + jne short 01c28h ; 75 71 ; 0xf1bb5 + test di, di ; 85 ff ; 0xf1bb7 print.c:230 + jne short 01bbeh ; 75 03 ; 0xf1bb9 + mov di, strict word 00010h ; bf 10 00 ; 0xf1bbb print.c:231 + cmp dl, 078h ; 80 fa 78 ; 0xf1bbe print.c:232 + jne short 01bcah ; 75 07 ; 0xf1bc1 + mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1bc3 print.c:233 + jmp short 01bcfh ; eb 05 ; 0xf1bc8 print.c:234 + mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1bca print.c:235 + lea ax, [di-001h] ; 8d 45 ff ; 0xf1bcf print.c:236 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1bd2 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1bd5 + test ax, ax ; 85 c0 ; 0xf1bd8 + jl near 01d77h ; 0f 8c 99 01 ; 0xf1bda + sal ax, 002h ; c1 e0 02 ; 0xf1bde print.c:237 + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf1be1 + xor ax, ax ; 31 c0 ; 0xf1be4 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf1be6 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf1be9 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf1bec + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf1bef + mov bx, word [bp-022h] ; 8b 5e de ; 0xf1bf2 + mov cx, word [bp-024h] ; 8b 4e dc ; 0xf1bf5 + mov dx, word [bp-026h] ; 8b 56 da ; 0xf1bf8 + mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf1bfb + call 0ace0h ; e8 df 90 ; 0xf1bfe + mov ax, dx ; 89 d0 ; 0xf1c01 + xor ah, dh ; 30 f4 ; 0xf1c03 + and AL, strict byte 00fh ; 24 0f ; 0xf1c05 + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1c07 print.c:238 + jnbe short 01c13h ; 77 07 ; 0xf1c0a + mov dx, ax ; 89 c2 ; 0xf1c0c + add dx, strict byte 00030h ; 83 c2 30 ; 0xf1c0e + jmp short 01c1bh ; eb 08 ; 0xf1c11 + sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1c13 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1c16 + add dx, ax ; 01 c2 ; 0xf1c19 + xor dh, dh ; 30 f6 ; 0xf1c1b + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c1d + call 018bbh ; e8 98 fc ; 0xf1c20 + dec word [bp-00ch] ; ff 4e f4 ; 0xf1c23 print.c:239 + jmp short 01bd5h ; eb ad ; 0xf1c26 + push 00130h ; 68 30 01 ; 0xf1c28 print.c:241 + push strict byte 00007h ; 6a 07 ; 0xf1c2b + call 01a68h ; e8 38 fe ; 0xf1c2d + add sp, strict byte 00004h ; 83 c4 04 ; 0xf1c30 + jmp near 01d77h ; e9 41 01 ; 0xf1c33 print.c:244 + lea bx, [di-001h] ; 8d 5d ff ; 0xf1c36 + cmp dl, 06ch ; 80 fa 6c ; 0xf1c39 + jne near 01cffh ; 0f 85 bf 00 ; 0xf1c3c + inc word [bp+006h] ; ff 46 06 ; 0xf1c40 print.c:245 + mov si, word [bp+006h] ; 8b 76 06 ; 0xf1c43 print.c:246 + mov dl, byte [si] ; 8a 14 ; 0xf1c46 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1c48 print.c:247 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1c4b + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1c4e + les si, [bp-016h] ; c4 76 ea ; 0xf1c52 + mov ax, word [es:si-002h] ; 26 8b 44 fe ; 0xf1c55 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf1c59 + cmp dl, 064h ; 80 fa 64 ; 0xf1c5c print.c:248 + jne short 01c8eh ; 75 2d ; 0xf1c5f + test byte [bp-00fh], 080h ; f6 46 f1 80 ; 0xf1c61 print.c:249 + je short 01c7ch ; 74 15 ; 0xf1c65 + push strict byte 00001h ; 6a 01 ; 0xf1c67 print.c:250 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1c69 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1c6c + neg cx ; f7 d9 ; 0xf1c6f + neg ax ; f7 d8 ; 0xf1c71 + sbb cx, strict byte 00000h ; 83 d9 00 ; 0xf1c73 + mov dx, bx ; 89 da ; 0xf1c76 + mov bx, ax ; 89 c3 ; 0xf1c78 + jmp short 01c85h ; eb 09 ; 0xf1c7a print.c:251 + push strict byte 00000h ; 6a 00 ; 0xf1c7c print.c:252 + mov bx, word [bp-012h] ; 8b 5e ee ; 0xf1c7e + mov dx, di ; 89 fa ; 0xf1c81 + mov cx, ax ; 89 c1 ; 0xf1c83 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c85 + call 019b5h ; e8 2a fd ; 0xf1c88 + jmp near 01d77h ; e9 e9 00 ; 0xf1c8b print.c:254 + cmp dl, 075h ; 80 fa 75 ; 0xf1c8e + jne short 01c95h ; 75 02 ; 0xf1c91 + jmp short 01c7ch ; eb e7 ; 0xf1c93 + cmp dl, 078h ; 80 fa 78 ; 0xf1c95 print.c:257 + je short 01ca1h ; 74 07 ; 0xf1c98 + cmp dl, 058h ; 80 fa 58 ; 0xf1c9a + jne near 01d77h ; 0f 85 d6 00 ; 0xf1c9d + test di, di ; 85 ff ; 0xf1ca1 print.c:259 + jne short 01ca8h ; 75 03 ; 0xf1ca3 + mov di, strict word 00008h ; bf 08 00 ; 0xf1ca5 print.c:260 + cmp dl, 078h ; 80 fa 78 ; 0xf1ca8 print.c:261 + jne short 01cb4h ; 75 07 ; 0xf1cab + mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1cad print.c:262 + jmp short 01cb9h ; eb 05 ; 0xf1cb2 print.c:263 + mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1cb4 print.c:264 + lea ax, [di-001h] ; 8d 45 ff ; 0xf1cb9 print.c:265 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1cbc + cmp word [bp-00ch], strict byte 00000h ; 83 7e f4 00 ; 0xf1cbf + jl near 01d77h ; 0f 8c b0 00 ; 0xf1cc3 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1cc7 print.c:266 + mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf1cca + sal cx, 002h ; c1 e1 02 ; 0xf1ccd + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1cd0 + jcxz 01cdbh ; e3 06 ; 0xf1cd3 + shr dx, 1 ; d1 ea ; 0xf1cd5 + rcr ax, 1 ; d1 d8 ; 0xf1cd7 + loop 01cd5h ; e2 fa ; 0xf1cd9 + and ax, strict word 0000fh ; 25 0f 00 ; 0xf1cdb + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1cde print.c:267 + jnbe short 01ceah ; 77 07 ; 0xf1ce1 + mov dx, ax ; 89 c2 ; 0xf1ce3 + add dx, strict byte 00030h ; 83 c2 30 ; 0xf1ce5 + jmp short 01cf2h ; eb 08 ; 0xf1ce8 + sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1cea + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1ced + add dx, ax ; 01 c2 ; 0xf1cf0 + xor dh, dh ; 30 f6 ; 0xf1cf2 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1cf4 + call 018bbh ; e8 c1 fb ; 0xf1cf7 + dec word [bp-00ch] ; ff 4e f4 ; 0xf1cfa print.c:268 + jmp short 01cbfh ; eb c0 ; 0xf1cfd + cmp dl, 064h ; 80 fa 64 ; 0xf1cff print.c:271 + jne short 01d23h ; 75 1f ; 0xf1d02 + test byte [bp-011h], 080h ; f6 46 ef 80 ; 0xf1d04 print.c:272 + je short 01d14h ; 74 0a ; 0xf1d08 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1d0a print.c:273 + neg dx ; f7 da ; 0xf1d0d + mov cx, strict word 00001h ; b9 01 00 ; 0xf1d0f + jmp short 01d1bh ; eb 07 ; 0xf1d12 print.c:274 + xor cx, cx ; 31 c9 ; 0xf1d14 print.c:275 + mov bx, di ; 89 fb ; 0xf1d16 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1d18 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1d1b + call 018f6h ; e8 d5 fb ; 0xf1d1e + jmp short 01d77h ; eb 54 ; 0xf1d21 print.c:277 + cmp dl, 073h ; 80 fa 73 ; 0xf1d23 + jne short 01d35h ; 75 0d ; 0xf1d26 + mov cx, ds ; 8c d9 ; 0xf1d28 print.c:278 + mov bx, word [bp-012h] ; 8b 5e ee ; 0xf1d2a + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1d2d + call 01a27h ; e8 f4 fc ; 0xf1d30 + jmp short 01d77h ; eb 42 ; 0xf1d33 print.c:280 + cmp dl, 053h ; 80 fa 53 ; 0xf1d35 + jne short 01d5bh ; 75 21 ; 0xf1d38 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1d3a print.c:281 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf1d3d + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1d40 print.c:282 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1d43 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1d46 + les bx, [bp-016h] ; c4 5e ea ; 0xf1d4a + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1d4d + mov word [bp-012h], ax ; 89 46 ee ; 0xf1d51 + mov bx, ax ; 89 c3 ; 0xf1d54 print.c:283 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1d56 + jmp short 01d2dh ; eb d2 ; 0xf1d59 + cmp dl, 063h ; 80 fa 63 ; 0xf1d5b print.c:285 + jne short 01d6ch ; 75 0c ; 0xf1d5e + movzx dx, byte [bp-012h] ; 0f b6 56 ee ; 0xf1d60 print.c:286 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1d64 + call 018bbh ; e8 51 fb ; 0xf1d67 + jmp short 01d77h ; eb 0b ; 0xf1d6a print.c:288 + push 00151h ; 68 51 01 ; 0xf1d6c print.c:289 + push strict byte 00007h ; 6a 07 ; 0xf1d6f + call 01a68h ; e8 f4 fc ; 0xf1d71 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf1d74 + xor bx, bx ; 31 db ; 0xf1d77 print.c:290 + jmp short 01d83h ; eb 08 ; 0xf1d79 print.c:293 + xor dh, dh ; 30 f6 ; 0xf1d7b print.c:294 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1d7d + call 018bbh ; e8 38 fb ; 0xf1d80 + inc word [bp+006h] ; ff 46 06 ; 0xf1d83 print.c:296 + jmp near 01a96h ; e9 0d fd ; 0xf1d86 print.c:297 + xor ax, ax ; 31 c0 ; 0xf1d89 print.c:298 + mov word [bp-016h], ax ; 89 46 ea ; 0xf1d8b + mov word [bp-014h], ax ; 89 46 ec ; 0xf1d8e + test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf1d91 print.c:299 + je short 01d9bh ; 74 04 ; 0xf1d95 + cli ; fa ; 0xf1d97 print.c:301 + hlt ; f4 ; 0xf1d98 print.c:302 + jmp short 01d98h ; eb fd ; 0xf1d99 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1d9b print.c:304 + pop di ; 5f ; 0xf1d9e + pop si ; 5e ; 0xf1d9f + pop dx ; 5a ; 0xf1da0 + pop cx ; 59 ; 0xf1da1 + pop bx ; 5b ; 0xf1da2 + pop bp ; 5d ; 0xf1da3 + retn ; c3 ; 0xf1da4 + ; disGetNextSymbol 0xf1da5 LB 0x8ff7 -> off=0x0 cb=00000000000000cc uValue=00000000000f07a5 'ata_init' +ata_init: ; 0xf1da5 LB 0xcc + push si ; 56 ; 0xf1da5 ata.c:89 + push bp ; 55 ; 0xf1da6 + mov bp, sp ; 89 e5 ; 0xf1da7 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1da9 ata.c:58 + mov si, strict word 00040h ; be 40 00 ; 0xf1dac + mov es, si ; 8e c6 ; 0xf1daf + mov bx, word [es:bx] ; 26 8b 1f ; 0xf1db1 + mov si, strict word 0005eh ; be 5e 00 ; 0xf1db4 ata.c:59 + mov dx, bx ; 89 da ; 0xf1db7 + xor al, al ; 30 c0 ; 0xf1db9 ata.c:97 + jmp short 01dc1h ; eb 04 ; 0xf1dbb + cmp AL, strict byte 004h ; 3c 04 ; 0xf1dbd + jnc short 01de5h ; 73 24 ; 0xf1dbf + movzx bx, al ; 0f b6 d8 ; 0xf1dc1 ata.c:98 + imul bx, bx, strict byte 00006h ; 6b db 06 ; 0xf1dc4 + mov es, dx ; 8e c2 ; 0xf1dc7 + add bx, si ; 01 f3 ; 0xf1dc9 + mov byte [es:bx+00278h], 000h ; 26 c6 87 78 02 00 ; 0xf1dcb + db 066h, 026h, 0c7h, 087h, 07ah, 002h, 000h, 000h, 000h, 000h + ; mov dword [es:bx+0027ah], strict dword 000000000h ; 66 26 c7 87 7a 02 00 00 00 00; 0xf1dd1 ata.c:99 + mov byte [es:bx+00279h], 000h ; 26 c6 87 79 02 00 ; 0xf1ddb ata.c:101 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf1de1 ata.c:102 + jmp short 01dbdh ; eb d8 ; 0xf1de3 + xor al, al ; 30 c0 ; 0xf1de5 ata.c:105 + jmp short 01dedh ; eb 04 ; 0xf1de7 + cmp AL, strict byte 008h ; 3c 08 ; 0xf1de9 + jnc short 01e41h ; 73 54 ; 0xf1deb + movzx bx, al ; 0f b6 d8 ; 0xf1ded ata.c:106 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1df0 + mov es, dx ; 8e c2 ; 0xf1df3 + add bx, si ; 01 f3 ; 0xf1df5 + db 066h, 026h, 0c7h, 047h, 01eh, 000h, 000h, 000h, 000h + ; mov dword [es:bx+01eh], strict dword 000000000h ; 66 26 c7 47 1e 00 00 00 00; 0xf1df7 + mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf1e00 ata.c:110 + mov word [es:bx+024h], 00200h ; 26 c7 47 24 00 02 ; 0xf1e05 ata.c:111 + mov byte [es:bx+023h], 000h ; 26 c6 47 23 00 ; 0xf1e0b ata.c:112 + db 066h, 026h, 0c7h, 047h, 026h, 000h, 000h, 000h, 000h + ; mov dword [es:bx+026h], strict dword 000000000h ; 66 26 c7 47 26 00 00 00 00; 0xf1e10 ata.c:113 + 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; 0xf1e19 ata.c:115 + 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; 0xf1e22 ata.c:117 + 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; 0xf1e2b ata.c:119 + 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; 0xf1e34 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf1e3d ata.c:120 + jmp short 01de9h ; eb a8 ; 0xf1e3f + xor al, al ; 30 c0 ; 0xf1e41 ata.c:123 + jmp short 01e49h ; eb 04 ; 0xf1e43 + cmp AL, strict byte 014h ; 3c 14 ; 0xf1e45 + jnc short 01e60h ; 73 17 ; 0xf1e47 + movzx bx, al ; 0f b6 d8 ; 0xf1e49 ata.c:124 + mov es, dx ; 8e c2 ; 0xf1e4c + add bx, si ; 01 f3 ; 0xf1e4e + mov byte [es:bx+0024fh], 014h ; 26 c6 87 4f 02 14 ; 0xf1e50 + mov byte [es:bx+00264h], 014h ; 26 c6 87 64 02 14 ; 0xf1e56 ata.c:125 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf1e5c ata.c:126 + jmp short 01e45h ; eb e5 ; 0xf1e5e + mov es, dx ; 8e c2 ; 0xf1e60 ata.c:128 + mov byte [es:si+0024eh], 000h ; 26 c6 84 4e 02 00 ; 0xf1e62 + mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf1e68 ata.c:129 + pop bp ; 5d ; 0xf1e6e ata.c:130 + pop si ; 5e ; 0xf1e6f + retn ; c3 ; 0xf1e70 + ; disGetNextSymbol 0xf1e71 LB 0x8f2b -> off=0x0 cb=00000000000000dd uValue=00000000000f0871 'ata_reset' +ata_reset: ; 0xf1e71 LB 0xdd + push bp ; 55 ; 0xf1e71 ata.c:138 + mov bp, sp ; 89 e5 ; 0xf1e72 + push bx ; 53 ; 0xf1e74 + push cx ; 51 ; 0xf1e75 + push dx ; 52 ; 0xf1e76 + push si ; 56 ; 0xf1e77 + push di ; 57 ; 0xf1e78 + push ax ; 50 ; 0xf1e79 + push ax ; 50 ; 0xf1e7a + push ax ; 50 ; 0xf1e7b + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1e7c ata.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf1e7f + mov es, ax ; 8e c0 ; 0xf1e82 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf1e84 + mov di, strict word 0005eh ; bf 5e 00 ; 0xf1e87 ata.c:59 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1e8a + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1e8d ata.c:147 + shr dx, 1 ; d1 ea ; 0xf1e90 + mov dh, byte [bp-010h] ; 8a 76 f0 ; 0xf1e92 ata.c:148 + and dh, 001h ; 80 e6 01 ; 0xf1e95 + mov byte [bp-00ch], dh ; 88 76 f4 ; 0xf1e98 + xor dh, dh ; 30 f6 ; 0xf1e9b ata.c:150 + imul bx, dx, strict byte 00006h ; 6b da 06 ; 0xf1e9d + mov es, ax ; 8e c0 ; 0xf1ea0 + add bx, di ; 01 fb ; 0xf1ea2 + mov cx, word [es:bx+0027ah] ; 26 8b 8f 7a 02 ; 0xf1ea4 + mov si, word [es:bx+0027ch] ; 26 8b b7 7c 02 ; 0xf1ea9 ata.c:151 + lea dx, [si+006h] ; 8d 54 06 ; 0xf1eae ata.c:156 + mov AL, strict byte 00eh ; b0 0e ; 0xf1eb1 + out DX, AL ; ee ; 0xf1eb3 + mov bx, 000ffh ; bb ff 00 ; 0xf1eb4 ata.c:159 + dec bx ; 4b ; 0xf1eb7 ata.c:160 + test bx, bx ; 85 db ; 0xf1eb8 + jbe short 01ec8h ; 76 0c ; 0xf1eba + mov dx, cx ; 89 ca ; 0xf1ebc ata.c:161 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1ebe + in AL, DX ; ec ; 0xf1ec1 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1ec2 + test AL, strict byte 080h ; a8 80 ; 0xf1ec4 ata.c:162 + je short 01eb7h ; 74 ef ; 0xf1ec6 + lea dx, [si+006h] ; 8d 54 06 ; 0xf1ec8 ata.c:167 + mov AL, strict byte 00ah ; b0 0a ; 0xf1ecb + out DX, AL ; ee ; 0xf1ecd + mov bx, strict word 0ffffh ; bb ff ff ; 0xf1ece ata.c:170 + dec bx ; 4b ; 0xf1ed1 ata.c:171 + test bx, bx ; 85 db ; 0xf1ed2 + jbe short 01eech ; 76 16 ; 0xf1ed4 + mov dx, cx ; 89 ca ; 0xf1ed6 ata.c:172 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1ed8 + in AL, DX ; ec ; 0xf1edb + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1edc + test AL, strict byte 080h ; a8 80 ; 0xf1ede ata.c:173 + je short 01eech ; 74 0a ; 0xf1ee0 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf1ee2 ata.c:175 + dec ax ; 48 ; 0xf1ee5 ata.c:176 + test ax, ax ; 85 c0 ; 0xf1ee6 + jnbe short 01ee5h ; 77 fb ; 0xf1ee8 + jmp short 01ed1h ; eb e5 ; 0xf1eea ata.c:179 + imul bx, word [bp-010h], strict byte 0001ch ; 6b 5e f0 1c ; 0xf1eec ata.c:181 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf1ef0 + add bx, di ; 01 fb ; 0xf1ef3 + cmp byte [es:bx+01eh], 000h ; 26 80 7f 1e 00 ; 0xf1ef5 + je short 01f3eh ; 74 42 ; 0xf1efa + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf1efc ata.c:184 + je short 01f07h ; 74 05 ; 0xf1f00 + mov ax, 000b0h ; b8 b0 00 ; 0xf1f02 + jmp short 01f0ah ; eb 03 ; 0xf1f05 + mov ax, 000a0h ; b8 a0 00 ; 0xf1f07 + mov dx, cx ; 89 ca ; 0xf1f0a + add dx, strict byte 00006h ; 83 c2 06 ; 0xf1f0c + out DX, AL ; ee ; 0xf1f0f + mov dx, cx ; 89 ca ; 0xf1f10 ata.c:185 + inc dx ; 42 ; 0xf1f12 + inc dx ; 42 ; 0xf1f13 + in AL, DX ; ec ; 0xf1f14 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1f15 + mov bx, ax ; 89 c3 ; 0xf1f17 + mov dx, cx ; 89 ca ; 0xf1f19 ata.c:186 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf1f1b + in AL, DX ; ec ; 0xf1f1e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1f1f + cmp bl, 001h ; 80 fb 01 ; 0xf1f21 ata.c:188 + jne short 01f3eh ; 75 18 ; 0xf1f24 + cmp al, bl ; 38 d8 ; 0xf1f26 + jne short 01f3eh ; 75 14 ; 0xf1f28 + mov bx, strict word 00010h ; bb 10 00 ; 0xf1f2a ata.c:190 + dec bx ; 4b ; 0xf1f2d ata.c:191 + test bx, bx ; 85 db ; 0xf1f2e + jbe short 01f3eh ; 76 0c ; 0xf1f30 + mov dx, cx ; 89 ca ; 0xf1f32 ata.c:192 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1f34 + in AL, DX ; ec ; 0xf1f37 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1f38 + test AL, strict byte 040h ; a8 40 ; 0xf1f3a ata.c:193 + je short 01f2dh ; 74 ef ; 0xf1f3c + lea dx, [si+006h] ; 8d 54 06 ; 0xf1f3e ata.c:200 + mov AL, strict byte 008h ; b0 08 ; 0xf1f41 + out DX, AL ; ee ; 0xf1f43 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1f44 ata.c:201 + pop di ; 5f ; 0xf1f47 + pop si ; 5e ; 0xf1f48 + pop dx ; 5a ; 0xf1f49 + pop cx ; 59 ; 0xf1f4a + pop bx ; 5b ; 0xf1f4b + pop bp ; 5d ; 0xf1f4c + retn ; c3 ; 0xf1f4d + ; disGetNextSymbol 0xf1f4e LB 0x8e4e -> off=0x0 cb=00000000000002e2 uValue=00000000000f094e 'ata_cmd_data_in' +ata_cmd_data_in: ; 0xf1f4e LB 0x2e2 + push bp ; 55 ; 0xf1f4e ata.c:215 + mov bp, sp ; 89 e5 ; 0xf1f4f + push si ; 56 ; 0xf1f51 + push di ; 57 ; 0xf1f52 + sub sp, strict byte 00012h ; 83 ec 12 ; 0xf1f53 + push ax ; 50 ; 0xf1f56 + push dx ; 52 ; 0xf1f57 + push bx ; 53 ; 0xf1f58 + push cx ; 51 ; 0xf1f59 + mov es, dx ; 8e c2 ; 0xf1f5a ata.c:225 + mov bx, ax ; 89 c3 ; 0xf1f5c + mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf1f5e + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf1f62 + movzx bx, al ; 0f b6 d8 ; 0xf1f65 ata.c:227 + mov ax, bx ; 89 d8 ; 0xf1f68 + cwd ; 99 ; 0xf1f6a + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf1f6b + sar ax, 1 ; d1 f8 ; 0xf1f6d + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf1f6f + mov di, word [bp-018h] ; 8b 7e e8 ; 0xf1f72 + add di, ax ; 01 c7 ; 0xf1f75 + mov ax, word [es:di+0027ah] ; 26 8b 85 7a 02 ; 0xf1f77 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1f7c + mov ax, word [es:di+0027ch] ; 26 8b 85 7c 02 ; 0xf1f7f ata.c:228 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf1f84 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1f87 ata.c:229 + mov di, word [bp-018h] ; 8b 7e e8 ; 0xf1f8a + add di, bx ; 01 df ; 0xf1f8d + mov al, byte [es:di+022h] ; 26 8a 45 22 ; 0xf1f8f + mov byte [bp-008h], al ; 88 46 f8 ; 0xf1f93 + mov ax, word [es:di+024h] ; 26 8b 45 24 ; 0xf1f96 ata.c:230 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1f9a + test ax, ax ; 85 c0 ; 0xf1f9d ata.c:231 + jne short 01fb5h ; 75 14 ; 0xf1f9f + cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf1fa1 ata.c:233 + jne short 01faeh ; 75 07 ; 0xf1fa5 + mov word [bp-00eh], 04000h ; c7 46 f2 00 40 ; 0xf1fa7 ata.c:234 + jmp short 01fc4h ; eb 16 ; 0xf1fac ata.c:235 + mov word [bp-00eh], 08000h ; c7 46 f2 00 80 ; 0xf1fae ata.c:237 + jmp short 01fc4h ; eb 0f ; 0xf1fb3 ata.c:238 + cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf1fb5 ata.c:240 + jne short 01fc1h ; 75 06 ; 0xf1fb9 + shr word [bp-00eh], 002h ; c1 6e f2 02 ; 0xf1fbb ata.c:241 + jmp short 01fc4h ; eb 03 ; 0xf1fbf ata.c:242 + shr word [bp-00eh], 1 ; d1 6e f2 ; 0xf1fc1 ata.c:244 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1fc4 ata.c:247 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1fc7 + in AL, DX ; ec ; 0xf1fca + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1fcb + test AL, strict byte 080h ; a8 80 ; 0xf1fcd ata.c:248 + je short 01fe0h ; 74 0f ; 0xf1fcf + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1fd1 ata.c:252 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf1fd4 + mov AL, strict byte 008h ; b0 08 ; 0xf1fd7 + out DX, AL ; ee ; 0xf1fd9 + mov dx, strict word 00001h ; ba 01 00 ; 0xf1fda ata.c:253 + jmp near 02227h ; e9 47 02 ; 0xf1fdd + mov es, [bp-01ah] ; 8e 46 e6 ; 0xf1fe0 ata.c:256 + mov di, word [bp-018h] ; 8b 7e e8 ; 0xf1fe3 + mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf1fe6 + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf1fea + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf1fed + mov word [bp-012h], ax ; 89 46 ee ; 0xf1ff1 + mov al, byte [es:bx+016h] ; 26 8a 47 16 ; 0xf1ff4 ata.c:257 + mov byte [bp-006h], al ; 88 46 fa ; 0xf1ff8 + mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf1ffb ata.c:258 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1fff + mov bl, byte [es:bx+014h] ; 26 8a 5f 14 ; 0xf2002 ata.c:259 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2006 ata.c:262 + test al, al ; 84 c0 ; 0xf2009 + jne near 020f2h ; 0f 85 e3 00 ; 0xf200b + xor bx, bx ; 31 db ; 0xf200f ata.c:263 + xor dx, dx ; 31 d2 ; 0xf2011 + xor ah, ah ; 30 e4 ; 0xf2013 + mov word [bp-016h], ax ; 89 46 ea ; 0xf2015 + mov si, word [bp-018h] ; 8b 76 e8 ; 0xf2018 + mov cx, word [es:si] ; 26 8b 0c ; 0xf201b + add cx, word [bp-01eh] ; 03 4e e2 ; 0xf201e + adc bx, word [es:si+002h] ; 26 13 5c 02 ; 0xf2021 + adc dx, word [es:si+004h] ; 26 13 54 04 ; 0xf2025 + mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf2029 + adc ax, word [bp-016h] ; 13 46 ea ; 0xf202d + test ax, ax ; 85 c0 ; 0xf2030 + jnbe short 02044h ; 77 10 ; 0xf2032 + jne short 020a8h ; 75 72 ; 0xf2034 + test dx, dx ; 85 d2 ; 0xf2036 + jnbe short 02044h ; 77 0a ; 0xf2038 + jne short 020a8h ; 75 6c ; 0xf203a + cmp bx, 01000h ; 81 fb 00 10 ; 0xf203c + jnbe short 02044h ; 77 02 ; 0xf2040 + jne short 020a8h ; 75 64 ; 0xf2042 + mov bx, si ; 89 f3 ; 0xf2044 ata.c:265 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf2046 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf204a + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf204e + mov dx, word [es:si] ; 26 8b 14 ; 0xf2052 + mov si, strict word 00018h ; be 18 00 ; 0xf2055 + call 0ace0h ; e8 85 8c ; 0xf2058 + xor dh, dh ; 30 f6 ; 0xf205b + mov word [bp-016h], dx ; 89 56 ea ; 0xf205d + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf2060 ata.c:266 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf2063 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf2067 + mov si, word [bp-018h] ; 8b 76 e8 ; 0xf206b + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf206e + mov dx, word [es:si] ; 26 8b 14 ; 0xf2072 + mov si, strict word 00020h ; be 20 00 ; 0xf2075 + call 0ace0h ; e8 65 8c ; 0xf2078 + mov bx, dx ; 89 d3 ; 0xf207b + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf207d ata.c:267 + xor al, al ; 30 c0 ; 0xf2080 + shr ax, 008h ; c1 e8 08 ; 0xf2082 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2085 + inc dx ; 42 ; 0xf2088 + inc dx ; 42 ; 0xf2089 + out DX, AL ; ee ; 0xf208a + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf208b ata.c:268 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf208e + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf2091 + out DX, AL ; ee ; 0xf2094 + mov ax, bx ; 89 d8 ; 0xf2095 ata.c:269 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2097 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf209a + out DX, AL ; ee ; 0xf209d + shr ax, 008h ; c1 e8 08 ; 0xf209e ata.c:270 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20a1 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf20a4 + out DX, AL ; ee ; 0xf20a7 + mov es, [bp-01ah] ; 8e 46 e6 ; 0xf20a8 ata.c:274 + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf20ab + mov ax, word [es:bx] ; 26 8b 07 ; 0xf20ae + mov byte [bp-006h], al ; 88 46 fa ; 0xf20b1 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf20b4 ata.c:275 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf20b8 + mov si, word [bp-018h] ; 8b 76 e8 ; 0xf20bc + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf20bf + mov dx, word [es:si] ; 26 8b 14 ; 0xf20c3 + mov si, strict word 00008h ; be 08 00 ; 0xf20c6 + call 0ace0h ; e8 14 8c ; 0xf20c9 + mov word [bp-014h], dx ; 89 56 ec ; 0xf20cc + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf20cf ata.c:276 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf20d2 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf20d6 + mov si, word [bp-018h] ; 8b 76 e8 ; 0xf20da + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf20dd + mov dx, word [es:si] ; 26 8b 14 ; 0xf20e1 + mov si, strict word 00018h ; be 18 00 ; 0xf20e4 + call 0ace0h ; e8 f6 8b ; 0xf20e7 + and dx, strict byte 0000fh ; 83 e2 0f ; 0xf20ea + or dl, 040h ; 80 ca 40 ; 0xf20ed + mov bx, dx ; 89 d3 ; 0xf20f0 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf20f2 ata.c:279 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf20f5 + mov AL, strict byte 00ah ; b0 0a ; 0xf20f8 + out DX, AL ; ee ; 0xf20fa + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20fb ata.c:280 + inc dx ; 42 ; 0xf20fe + xor al, al ; 30 c0 ; 0xf20ff + out DX, AL ; ee ; 0xf2101 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2102 ata.c:281 + inc dx ; 42 ; 0xf2105 + inc dx ; 42 ; 0xf2106 + mov al, byte [bp-01eh] ; 8a 46 e2 ; 0xf2107 + out DX, AL ; ee ; 0xf210a + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf210b ata.c:282 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf210e + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2111 + out DX, AL ; ee ; 0xf2114 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf2115 ata.c:283 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2118 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf211b + out DX, AL ; ee ; 0xf211e + shr ax, 008h ; c1 e8 08 ; 0xf211f ata.c:284 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2122 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2125 + out DX, AL ; ee ; 0xf2128 + test byte [bp-00ah], 001h ; f6 46 f6 01 ; 0xf2129 ata.c:285 + je short 02134h ; 74 05 ; 0xf212d + mov ax, 000b0h ; b8 b0 00 ; 0xf212f + jmp short 02137h ; eb 03 ; 0xf2132 + mov ax, 000a0h ; b8 a0 00 ; 0xf2134 + movzx dx, bl ; 0f b6 d3 ; 0xf2137 + or ax, dx ; 09 d0 ; 0xf213a + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf213c + add dx, strict byte 00006h ; 83 c2 06 ; 0xf213f + out DX, AL ; ee ; 0xf2142 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2143 ata.c:286 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2146 + mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf2149 + out DX, AL ; ee ; 0xf214c + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf214d ata.c:288 + cmp ax, 000c4h ; 3d c4 00 ; 0xf2150 + je short 0215ah ; 74 05 ; 0xf2153 + cmp ax, strict word 00029h ; 3d 29 00 ; 0xf2155 + jne short 02164h ; 75 0a ; 0xf2158 + mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf215a ata.c:289 + mov word [bp-01eh], strict word 00001h ; c7 46 e2 01 00 ; 0xf215d ata.c:290 + jmp short 02167h ; eb 03 ; 0xf2162 ata.c:291 + mov bx, strict word 00001h ; bb 01 00 ; 0xf2164 ata.c:292 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2167 ata.c:296 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf216a + in AL, DX ; ec ; 0xf216d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf216e + mov dl, al ; 88 c2 ; 0xf2170 + test AL, strict byte 080h ; a8 80 ; 0xf2172 ata.c:297 + jne short 02167h ; 75 f1 ; 0xf2174 + test AL, strict byte 001h ; a8 01 ; 0xf2176 ata.c:301 + je short 02189h ; 74 0f ; 0xf2178 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf217a ata.c:304 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf217d + mov AL, strict byte 008h ; b0 08 ; 0xf2180 + out DX, AL ; ee ; 0xf2182 + mov dx, strict word 00002h ; ba 02 00 ; 0xf2183 ata.c:305 + jmp near 02227h ; e9 9e 00 ; 0xf2186 + test dl, 008h ; f6 c2 08 ; 0xf2189 ata.c:306 + jne short 0219dh ; 75 0f ; 0xf218c + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf218e ata.c:309 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2191 + mov AL, strict byte 008h ; b0 08 ; 0xf2194 + out DX, AL ; ee ; 0xf2196 + mov dx, strict word 00003h ; ba 03 00 ; 0xf2197 ata.c:310 + jmp near 02227h ; e9 8a 00 ; 0xf219a + sti ; fb ; 0xf219d ata.c:315 + cmp di, 0f800h ; 81 ff 00 f8 ; 0xf219e ata.c:320 + jc short 021b1h ; 72 0d ; 0xf21a2 + sub di, 00800h ; 81 ef 00 08 ; 0xf21a4 ata.c:321 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf21a8 + add ax, 00080h ; 05 80 00 ; 0xf21ab + mov word [bp-012h], ax ; 89 46 ee ; 0xf21ae + cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf21b1 ata.c:324 + jne short 021c5h ; 75 0e ; 0xf21b5 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf21b7 ata.c:325 + mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf21ba + mov es, [bp-012h] ; 8e 46 ee ; 0xf21bd + db 0f3h, 066h, 06dh + ; rep insd ; f3 66 6d ; 0xf21c0 + jmp short 021d0h ; eb 0b ; 0xf21c3 ata.c:326 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf21c5 ata.c:328 + mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf21c8 + mov es, [bp-012h] ; 8e 46 ee ; 0xf21cb + rep insw ; f3 6d ; 0xf21ce + mov es, [bp-01ah] ; 8e 46 e6 ; 0xf21d0 ata.c:329 + mov si, word [bp-018h] ; 8b 76 e8 ; 0xf21d3 + add word [es:si+018h], bx ; 26 01 5c 18 ; 0xf21d6 + dec word [bp-01eh] ; ff 4e e2 ; 0xf21da ata.c:330 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf21dd ata.c:332 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf21e0 + in AL, DX ; ec ; 0xf21e3 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf21e4 + mov dl, al ; 88 c2 ; 0xf21e6 + test AL, strict byte 080h ; a8 80 ; 0xf21e8 ata.c:333 + jne short 021ddh ; 75 f1 ; 0xf21ea + cmp word [bp-01eh], strict byte 00000h ; 83 7e e2 00 ; 0xf21ec ata.c:336 + jne short 02206h ; 75 14 ; 0xf21f0 + and AL, strict byte 0c9h ; 24 c9 ; 0xf21f2 ata.c:337 + cmp AL, strict byte 040h ; 3c 40 ; 0xf21f4 + je short 0221ch ; 74 24 ; 0xf21f6 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf21f8 ata.c:341 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf21fb + mov AL, strict byte 008h ; b0 08 ; 0xf21fe + out DX, AL ; ee ; 0xf2200 + mov dx, strict word 00004h ; ba 04 00 ; 0xf2201 ata.c:342 + jmp short 02227h ; eb 21 ; 0xf2204 + mov al, dl ; 88 d0 ; 0xf2206 ata.c:347 + and AL, strict byte 0c9h ; 24 c9 ; 0xf2208 + cmp AL, strict byte 048h ; 3c 48 ; 0xf220a + je short 0219eh ; 74 90 ; 0xf220c + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf220e ata.c:351 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2211 + mov AL, strict byte 008h ; b0 08 ; 0xf2214 + out DX, AL ; ee ; 0xf2216 + mov dx, strict word 00005h ; ba 05 00 ; 0xf2217 ata.c:352 + jmp short 02227h ; eb 0b ; 0xf221a + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf221c ata.c:358 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf221f + mov AL, strict byte 008h ; b0 08 ; 0xf2222 + out DX, AL ; ee ; 0xf2224 + xor dx, dx ; 31 d2 ; 0xf2225 ata.c:359 + mov ax, dx ; 89 d0 ; 0xf2227 ata.c:360 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2229 + pop di ; 5f ; 0xf222c + pop si ; 5e ; 0xf222d + pop bp ; 5d ; 0xf222e + retn ; c3 ; 0xf222f + ; disGetNextSymbol 0xf2230 LB 0x8b6c -> off=0x0 cb=0000000000000094 uValue=00000000000f0c30 'ata_signature' +ata_signature: ; 0xf2230 LB 0x94 + push bp ; 55 ; 0xf2230 ata.c:366 + mov bp, sp ; 89 e5 ; 0xf2231 + push cx ; 51 ; 0xf2233 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf2234 + mov cx, ax ; 89 c1 ; 0xf2237 + mov al, bl ; 88 d8 ; 0xf2239 + xor bx, bx ; 31 db ; 0xf223b ata.c:368 + test al, al ; 84 c0 ; 0xf223d ata.c:376 + je short 02246h ; 74 05 ; 0xf223f + mov ax, 000b0h ; b8 b0 00 ; 0xf2241 + jmp short 02249h ; eb 03 ; 0xf2244 + mov ax, 000a0h ; b8 a0 00 ; 0xf2246 + mov dx, cx ; 89 ca ; 0xf2249 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf224b + out DX, AL ; ee ; 0xf224e + mov dx, cx ; 89 ca ; 0xf224f ata.c:378 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2251 + in AL, DX ; ec ; 0xf2254 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2255 + mov byte [bp-006h], al ; 88 46 fa ; 0xf2257 + test AL, strict byte 080h ; a8 80 ; 0xf225a ata.c:379 + jne short 0224fh ; 75 f1 ; 0xf225c + mov dx, cx ; 89 ca ; 0xf225e ata.c:387 + inc dx ; 42 ; 0xf2260 + inc dx ; 42 ; 0xf2261 + in AL, DX ; ec ; 0xf2262 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2263 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf2265 + mov dx, cx ; 89 ca ; 0xf2268 ata.c:388 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf226a + in AL, DX ; ec ; 0xf226d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf226e + cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf2270 ata.c:389 + jne short 022bch ; 75 46 ; 0xf2274 + cmp AL, strict byte 001h ; 3c 01 ; 0xf2276 + jne short 022bch ; 75 42 ; 0xf2278 + mov dx, cx ; 89 ca ; 0xf227a ata.c:390 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf227c + in AL, DX ; ec ; 0xf227f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2280 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf2282 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2285 + mov byte [bp-004h], al ; 88 46 fc ; 0xf2288 + mov dx, cx ; 89 ca ; 0xf228b ata.c:391 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf228d + in AL, DX ; ec ; 0xf2290 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2291 + mov dl, al ; 88 c2 ; 0xf2293 + cmp byte [bp-008h], 014h ; 80 7e f8 14 ; 0xf2295 ata.c:398 + jne short 022a4h ; 75 09 ; 0xf2299 + cmp AL, strict byte 0ebh ; 3c eb ; 0xf229b + jne short 022a4h ; 75 05 ; 0xf229d + mov bx, strict word 00003h ; bb 03 00 ; 0xf229f ata.c:399 + jmp short 022bch ; eb 18 ; 0xf22a2 ata.c:401 + cmp byte [bp-004h], 000h ; 80 7e fc 00 ; 0xf22a4 + jne short 022b9h ; 75 0f ; 0xf22a8 + test dl, dl ; 84 d2 ; 0xf22aa + jne short 022b9h ; 75 0b ; 0xf22ac + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf22ae ata.c:402 + je short 022bch ; 74 08 ; 0xf22b2 + mov bx, strict word 00002h ; bb 02 00 ; 0xf22b4 ata.c:403 + jmp short 022bch ; eb 03 ; 0xf22b7 ata.c:408 + mov bx, strict word 00001h ; bb 01 00 ; 0xf22b9 ata.c:409 + mov ax, bx ; 89 d8 ; 0xf22bc ata.c:416 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf22be + pop cx ; 59 ; 0xf22c1 + pop bp ; 5d ; 0xf22c2 + retn ; c3 ; 0xf22c3 + ; disGetNextSymbol 0xf22c4 LB 0x8ad8 -> off=0x0 cb=0000000000000619 uValue=00000000000f0cc4 'ata_detect' +ata_detect: ; 0xf22c4 LB 0x619 + push bp ; 55 ; 0xf22c4 ata.c:418 + mov bp, sp ; 89 e5 ; 0xf22c5 + push si ; 56 ; 0xf22c7 + push di ; 57 ; 0xf22c8 + sub sp, 0025eh ; 81 ec 5e 02 ; 0xf22c9 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf22cd ata.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf22d0 + mov es, ax ; 8e c0 ; 0xf22d3 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf22d5 + mov word [bp-02ch], ax ; 89 46 d4 ; 0xf22d8 ata.c:59 + mov ax, 00101h ; b8 01 01 ; 0xf22db ata.c:434 + call 0aa5eh ; e8 7d 87 ; 0xf22de + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf22e1 ata.c:435 + jne short 022ffh ; 75 19 ; 0xf22e4 + mov bx, 00e06h ; bb 06 0e ; 0xf22e6 ata.c:436 + mov cx, ds ; 8c d9 ; 0xf22e9 + mov ax, strict word 00004h ; b8 04 00 ; 0xf22eb + call 01a27h ; e8 36 f7 ; 0xf22ee + push 0016eh ; 68 6e 01 ; 0xf22f1 + push strict byte 00004h ; 6a 04 ; 0xf22f4 + call 01a68h ; e8 6f f7 ; 0xf22f6 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf22f9 + jmp near 028d6h ; e9 d7 05 ; 0xf22fc ata.c:437 + mov bx, strict word 0005eh ; bb 5e 00 ; 0xf22ff ata.c:441 + mov es, [bp-02ch] ; 8e 46 d4 ; 0xf2302 + mov word [bp-018h], bx ; 89 5e e8 ; 0xf2305 + mov [bp-02ah], es ; 8c 46 d6 ; 0xf2308 + mov byte [es:bx+00278h], 000h ; 26 c6 87 78 02 00 ; 0xf230b ata.c:444 + db 066h, 026h, 0c7h, 087h, 07ah, 002h, 0f0h, 001h, 0f0h, 003h + ; mov dword [es:bx+0027ah], strict dword 003f001f0h ; 66 26 c7 87 7a 02 f0 01 f0 03; 0xf2311 ata.c:445 + mov byte [es:bx+00279h], 00eh ; 26 c6 87 79 02 0e ; 0xf231b ata.c:447 + mov byte [es:bx+0027eh], 000h ; 26 c6 87 7e 02 00 ; 0xf2321 ata.c:450 + db 066h, 026h, 0c7h, 087h, 080h, 002h, 070h, 001h, 070h, 003h + ; mov dword [es:bx+00280h], strict dword 003700170h ; 66 26 c7 87 80 02 70 01 70 03; 0xf2327 ata.c:451 + mov byte [es:bx+0027fh], 00fh ; 26 c6 87 7f 02 0f ; 0xf2331 ata.c:453 + mov byte [es:bx+00284h], 000h ; 26 c6 87 84 02 00 ; 0xf2337 ata.c:456 + db 066h, 026h, 0c7h, 087h, 086h, 002h, 0e8h, 001h, 0e0h, 003h + ; mov dword [es:bx+00286h], strict dword 003e001e8h ; 66 26 c7 87 86 02 e8 01 e0 03; 0xf233d ata.c:457 + mov byte [es:bx+00285h], 00ch ; 26 c6 87 85 02 0c ; 0xf2347 ata.c:459 + mov byte [es:bx+0028ah], 000h ; 26 c6 87 8a 02 00 ; 0xf234d ata.c:462 + db 066h, 026h, 0c7h, 087h, 08ch, 002h, 068h, 001h, 060h, 003h + ; mov dword [es:bx+0028ch], strict dword 003600168h ; 66 26 c7 87 8c 02 68 01 60 03; 0xf2353 ata.c:463 + mov byte [es:bx+0028bh], 00bh ; 26 c6 87 8b 02 0b ; 0xf235d ata.c:465 + xor al, al ; 30 c0 ; 0xf2363 ata.c:472 + mov byte [bp-010h], al ; 88 46 f0 ; 0xf2365 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf2368 + mov byte [bp-016h], al ; 88 46 ea ; 0xf236b ata.c:474 + jmp near 02867h ; e9 f6 04 ; 0xf236e + test cl, cl ; 84 c9 ; 0xf2371 ata.c:519 + jne short 023d1h ; 75 5c ; 0xf2373 + mov dx, word [bp-01ch] ; 8b 56 e4 ; 0xf2375 ata.c:520 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2378 + mov AL, strict byte 00eh ; b0 0e ; 0xf237b + out DX, AL ; ee ; 0xf237d + mov bx, strict word 00020h ; bb 20 00 ; 0xf237e ata.c:526 + dec bx ; 4b ; 0xf2381 ata.c:527 + test bx, bx ; 85 db ; 0xf2382 + jbe short 02390h ; 76 0a ; 0xf2384 + lea dx, [si+007h] ; 8d 54 07 ; 0xf2386 ata.c:528 + in AL, DX ; ec ; 0xf2389 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf238a + test AL, strict byte 080h ; a8 80 ; 0xf238c ata.c:529 + je short 02381h ; 74 f1 ; 0xf238e + mov dx, word [bp-01ch] ; 8b 56 e4 ; 0xf2390 ata.c:533 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2393 + mov AL, strict byte 00ah ; b0 0a ; 0xf2396 + out DX, AL ; ee ; 0xf2398 + movzx di, byte [bp-00ah] ; 0f b6 7e f6 ; 0xf2399 ata.c:540 + xor bx, bx ; 31 db ; 0xf239d + mov dx, di ; 89 fa ; 0xf239f + mov ax, si ; 89 f0 ; 0xf23a1 + call 02230h ; e8 8a fe ; 0xf23a3 + movzx cx, byte [bp-016h] ; 0f b6 4e ea ; 0xf23a6 + imul bx, cx, strict byte 0001ch ; 6b d9 1c ; 0xf23aa + mov es, [bp-02ah] ; 8e 46 d6 ; 0xf23ad + add bx, word [bp-018h] ; 03 5e e8 ; 0xf23b0 + mov byte [es:bx+01eh], al ; 26 88 47 1e ; 0xf23b3 + mov bx, strict word 00001h ; bb 01 00 ; 0xf23b7 ata.c:541 + mov dx, di ; 89 fa ; 0xf23ba + mov ax, si ; 89 f0 ; 0xf23bc + call 02230h ; e8 6f fe ; 0xf23be + mov bx, cx ; 89 cb ; 0xf23c1 + inc bx ; 43 ; 0xf23c3 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf23c4 + mov es, [bp-02ah] ; 8e 46 d6 ; 0xf23c7 + add bx, word [bp-018h] ; 03 5e e8 ; 0xf23ca + mov byte [es:bx+01eh], al ; 26 88 47 1e ; 0xf23cd + mov dx, word [bp-01ch] ; 8b 56 e4 ; 0xf23d1 ata.c:545 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf23d4 + mov AL, strict byte 008h ; b0 08 ; 0xf23d7 + out DX, AL ; ee ; 0xf23d9 + movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf23da ata.c:547 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf23de + mov es, [bp-02ah] ; 8e 46 d6 ; 0xf23e1 + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf23e4 + add bx, ax ; 01 c3 ; 0xf23e7 + mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf23e9 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf23ed + cmp AL, strict byte 002h ; 3c 02 ; 0xf23f0 ata.c:550 + jne near 02639h ; 0f 85 43 02 ; 0xf23f2 + mov byte [es:bx+01fh], 0ffh ; 26 c6 47 1f ff ; 0xf23f6 ata.c:558 + mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf23fb ata.c:559 + lea dx, [bp-00262h] ; 8d 96 9e fd ; 0xf2400 ata.c:560 + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf2404 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf2407 + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf240b + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf240f ata.c:561 + mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf2412 + mov cx, strict word 00001h ; b9 01 00 ; 0xf2416 ata.c:563 + mov bx, 000ech ; bb ec 00 ; 0xf2419 + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf241c + mov dx, es ; 8c c2 ; 0xf241f + call 01f4eh ; e8 2a fb ; 0xf2421 + test ax, ax ; 85 c0 ; 0xf2424 + je short 02433h ; 74 0b ; 0xf2426 + push 00196h ; 68 96 01 ; 0xf2428 ata.c:564 + push strict byte 00007h ; 6a 07 ; 0xf242b + call 01a68h ; e8 38 f6 ; 0xf242d + add sp, strict byte 00004h ; 83 c4 04 ; 0xf2430 + test byte [bp-00262h], 080h ; f6 86 9e fd 80 ; 0xf2433 ata.c:566 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf2438 + xor ah, ah ; 30 e4 ; 0xf243b + mov byte [bp-014h], al ; 88 46 ec ; 0xf243d + cmp byte [bp-00202h], 000h ; 80 be fe fd 00 ; 0xf2440 ata.c:568 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf2445 + xor ah, ah ; 30 e4 ; 0xf2448 + mov byte [bp-012h], al ; 88 46 ee ; 0xf244a + mov word [bp-028h], 00200h ; c7 46 d8 00 02 ; 0xf244d ata.c:572 + mov ax, word [bp-00260h] ; 8b 86 a0 fd ; 0xf2452 ata.c:574 + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf2456 + mov ax, word [bp-0025ch] ; 8b 86 a4 fd ; 0xf2459 ata.c:575 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf245d + mov ax, word [bp-00256h] ; 8b 86 aa fd ; 0xf2460 ata.c:576 + mov word [bp-024h], ax ; 89 46 dc ; 0xf2464 + mov si, word [bp-001eah] ; 8b b6 16 fe ; 0xf2467 ata.c:578 + mov ax, word [bp-001e8h] ; 8b 86 18 fe ; 0xf246b + mov word [bp-02eh], ax ; 89 46 d2 ; 0xf246f + xor ax, ax ; 31 c0 ; 0xf2472 + mov word [bp-020h], ax ; 89 46 e0 ; 0xf2474 + mov word [bp-022h], ax ; 89 46 de ; 0xf2477 + cmp word [bp-02eh], 00fffh ; 81 7e d2 ff 0f ; 0xf247a ata.c:579 + jne short 0249fh ; 75 1e ; 0xf247f + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf2481 + jne short 0249fh ; 75 19 ; 0xf2484 + mov ax, word [bp-00194h] ; 8b 86 6c fe ; 0xf2486 ata.c:580 + mov word [bp-022h], ax ; 89 46 de ; 0xf248a + mov ax, word [bp-00196h] ; 8b 86 6a fe ; 0xf248d + mov word [bp-020h], ax ; 89 46 e0 ; 0xf2491 + mov ax, word [bp-00198h] ; 8b 86 68 fe ; 0xf2494 + mov word [bp-02eh], ax ; 89 46 d2 ; 0xf2498 + mov si, word [bp-0019ah] ; 8b b6 66 fe ; 0xf249b + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf249f ata.c:581 + cmp AL, strict byte 001h ; 3c 01 ; 0xf24a2 + jc short 024b2h ; 72 0c ; 0xf24a4 + jbe short 024bah ; 76 12 ; 0xf24a6 + cmp AL, strict byte 003h ; 3c 03 ; 0xf24a8 + je short 024c2h ; 74 16 ; 0xf24aa + cmp AL, strict byte 002h ; 3c 02 ; 0xf24ac + je short 024beh ; 74 0e ; 0xf24ae + jmp short 024ebh ; eb 39 ; 0xf24b0 + test al, al ; 84 c0 ; 0xf24b2 + jne short 024ebh ; 75 35 ; 0xf24b4 + mov BL, strict byte 01eh ; b3 1e ; 0xf24b6 ata.c:584 + jmp short 024c4h ; eb 0a ; 0xf24b8 ata.c:585 + mov BL, strict byte 026h ; b3 26 ; 0xf24ba ata.c:587 + jmp short 024c4h ; eb 06 ; 0xf24bc ata.c:588 + mov BL, strict byte 067h ; b3 67 ; 0xf24be ata.c:590 + jmp short 024c4h ; eb 02 ; 0xf24c0 ata.c:591 + mov BL, strict byte 070h ; b3 70 ; 0xf24c2 ata.c:593 + movzx ax, bl ; 0f b6 c3 ; 0xf24c4 ata.c:600 + call 017a6h ; e8 dc f2 ; 0xf24c7 + mov word [bp-036h], ax ; 89 46 ca ; 0xf24ca + mov al, bl ; 88 d8 ; 0xf24cd ata.c:601 + add AL, strict byte 002h ; 04 02 ; 0xf24cf + xor ah, ah ; 30 e4 ; 0xf24d1 + call 0176ah ; e8 94 f2 ; 0xf24d3 + xor ah, ah ; 30 e4 ; 0xf24d6 + mov word [bp-038h], ax ; 89 46 c8 ; 0xf24d8 + mov al, bl ; 88 d8 ; 0xf24db ata.c:602 + add AL, strict byte 007h ; 04 07 ; 0xf24dd + xor ah, ah ; 30 e4 ; 0xf24df + call 0176ah ; e8 86 f2 ; 0xf24e1 + xor ah, ah ; 30 e4 ; 0xf24e4 + mov word [bp-034h], ax ; 89 46 cc ; 0xf24e6 + jmp short 024fdh ; eb 12 ; 0xf24e9 ata.c:604 + push word [bp-022h] ; ff 76 de ; 0xf24eb ata.c:605 + push word [bp-020h] ; ff 76 e0 ; 0xf24ee + push word [bp-02eh] ; ff 76 d2 ; 0xf24f1 + push si ; 56 ; 0xf24f4 + mov dx, ss ; 8c d2 ; 0xf24f5 + lea ax, [bp-038h] ; 8d 46 c8 ; 0xf24f7 + call 05880h ; e8 83 33 ; 0xf24fa + mov bx, 00e06h ; bb 06 0e ; 0xf24fd ata.c:608 + mov cx, ds ; 8c d9 ; 0xf2500 + mov ax, strict word 00004h ; b8 04 00 ; 0xf2502 + call 01a27h ; e8 1f f5 ; 0xf2505 + mov ax, word [bp-034h] ; 8b 46 cc ; 0xf2508 + push ax ; 50 ; 0xf250b + mov ax, word [bp-038h] ; 8b 46 c8 ; 0xf250c + push ax ; 50 ; 0xf250f + mov ax, word [bp-036h] ; 8b 46 ca ; 0xf2510 + push ax ; 50 ; 0xf2513 + push word [bp-024h] ; ff 76 dc ; 0xf2514 + push word [bp-01ah] ; ff 76 e6 ; 0xf2517 + push word [bp-01eh] ; ff 76 e2 ; 0xf251a + movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf251d + push ax ; 50 ; 0xf2521 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf2522 + push ax ; 50 ; 0xf2526 + push 001bfh ; 68 bf 01 ; 0xf2527 + push strict byte 00004h ; 6a 04 ; 0xf252a + call 01a68h ; e8 39 f5 ; 0xf252c + add sp, strict byte 00014h ; 83 c4 14 ; 0xf252f + movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf2532 ata.c:610 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2536 + mov es, [bp-02ah] ; 8e 46 d6 ; 0xf2539 + mov di, word [bp-018h] ; 8b 7e e8 ; 0xf253c + add di, ax ; 01 c7 ; 0xf253f + mov byte [es:di+01fh], 0ffh ; 26 c6 45 1f ff ; 0xf2541 + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2546 ata.c:611 + mov byte [es:di+020h], al ; 26 88 45 20 ; 0xf2549 + mov al, byte [bp-012h] ; 8a 46 ee ; 0xf254d ata.c:612 + mov byte [es:di+022h], al ; 26 88 45 22 ; 0xf2550 + mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf2554 ata.c:613 + mov word [es:di+024h], ax ; 26 89 45 24 ; 0xf2557 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf255b ata.c:614 + mov word [es:di+02ch], ax ; 26 89 45 2c ; 0xf255e + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf2562 ata.c:615 + mov word [es:di+02eh], ax ; 26 89 45 2e ; 0xf2565 + mov ax, word [bp-024h] ; 8b 46 dc ; 0xf2569 ata.c:616 + mov word [es:di+030h], ax ; 26 89 45 30 ; 0xf256c + mov ax, word [bp-022h] ; 8b 46 de ; 0xf2570 ata.c:617 + mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf2573 + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf2577 + mov word [es:di+036h], ax ; 26 89 45 36 ; 0xf257a + mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf257e + mov word [es:di+034h], ax ; 26 89 45 34 ; 0xf2581 + mov word [es:di+032h], si ; 26 89 75 32 ; 0xf2585 + lea di, [di+026h] ; 8d 7d 26 ; 0xf2589 ata.c:618 + push DS ; 1e ; 0xf258c + push SS ; 16 ; 0xf258d + pop DS ; 1f ; 0xf258e + lea si, [bp-038h] ; 8d 76 c8 ; 0xf258f + movsw ; a5 ; 0xf2592 + movsw ; a5 ; 0xf2593 + movsw ; a5 ; 0xf2594 + pop DS ; 1f ; 0xf2595 + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf2596 ata.c:619 + cmp AL, strict byte 002h ; 3c 02 ; 0xf2599 + jnc near 02624h ; 0f 83 85 00 ; 0xf259b + test al, al ; 84 c0 ; 0xf259f ata.c:625 + jne short 025a8h ; 75 05 ; 0xf25a1 + mov bx, strict word 0003dh ; bb 3d 00 ; 0xf25a3 ata.c:626 + jmp short 025abh ; eb 03 ; 0xf25a6 ata.c:627 + mov bx, strict word 0004dh ; bb 4d 00 ; 0xf25a8 ata.c:628 + mov dx, word [bp-02ch] ; 8b 56 d4 ; 0xf25ab + movzx si, byte [bp-016h] ; 0f b6 76 ea ; 0xf25ae ata.c:640 + imul si, si, strict byte 00005h ; 6b f6 05 ; 0xf25b2 + sal si, 002h ; c1 e6 02 ; 0xf25b5 + add si, 00104h ; 81 c6 04 01 ; 0xf25b8 + xor ax, ax ; 31 c0 ; 0xf25bc + mov es, ax ; 8e c0 ; 0xf25be + mov word [es:si], bx ; 26 89 1c ; 0xf25c0 ata.c:641 + mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf25c3 + mov es, dx ; 8e c2 ; 0xf25c7 ata.c:647 + mov word [es:bx+00ch], ax ; 26 89 47 0c ; 0xf25c9 + mov word [es:bx+005h], ax ; 26 89 47 05 ; 0xf25cd + mov word [es:bx+007h], ax ; 26 89 47 07 ; 0xf25d1 + mov ax, word [bp-036h] ; 8b 46 ca ; 0xf25d5 ata.c:649 + mov word [es:bx], ax ; 26 89 07 ; 0xf25d8 + mov al, byte [bp-038h] ; 8a 46 c8 ; 0xf25db ata.c:650 + mov byte [es:bx+002h], al ; 26 88 47 02 ; 0xf25de + mov byte [es:bx+003h], 0a0h ; 26 c6 47 03 a0 ; 0xf25e2 ata.c:651 + mov al, byte [bp-024h] ; 8a 46 dc ; 0xf25e7 ata.c:652 + mov byte [es:bx+004h], al ; 26 88 47 04 ; 0xf25ea + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf25ee ata.c:653 + mov word [es:bx+009h], ax ; 26 89 47 09 ; 0xf25f1 + mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf25f5 ata.c:654 + mov byte [es:bx+00bh], al ; 26 88 47 0b ; 0xf25f8 + mov al, byte [bp-034h] ; 8a 46 cc ; 0xf25fc ata.c:655 + mov byte [es:bx+00eh], al ; 26 88 47 0e ; 0xf25ff + xor al, al ; 30 c0 ; 0xf2603 ata.c:656 + xor ah, ah ; 30 e4 ; 0xf2605 ata.c:657 + jmp short 0260eh ; eb 05 ; 0xf2607 + cmp ah, 00fh ; 80 fc 0f ; 0xf2609 + jnc short 0261ch ; 73 0e ; 0xf260c + movzx si, ah ; 0f b6 f4 ; 0xf260e ata.c:658 + mov es, dx ; 8e c2 ; 0xf2611 + add si, bx ; 01 de ; 0xf2613 + add al, byte [es:si] ; 26 02 04 ; 0xf2615 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf2618 + jmp short 02609h ; eb ed ; 0xf261a + neg al ; f6 d8 ; 0xf261c ata.c:659 + mov es, dx ; 8e c2 ; 0xf261e ata.c:660 + mov byte [es:bx+00fh], al ; 26 88 47 0f ; 0xf2620 + movzx bx, byte [bp-00ch] ; 0f b6 5e f4 ; 0xf2624 ata.c:664 + mov es, [bp-02ah] ; 8e 46 d6 ; 0xf2628 + add bx, word [bp-018h] ; 03 5e e8 ; 0xf262b + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf262e + mov byte [es:bx+0024fh], al ; 26 88 87 4f 02 ; 0xf2631 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf2636 ata.c:665 + cmp byte [bp-008h], 003h ; 80 7e f8 03 ; 0xf2639 ata.c:669 + jne near 026d9h ; 0f 85 98 00 ; 0xf263d + movzx bx, byte [bp-016h] ; 0f b6 5e ea ; 0xf2641 ata.c:674 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf2645 + mov es, [bp-02ah] ; 8e 46 d6 ; 0xf2648 + add bx, word [bp-018h] ; 03 5e e8 ; 0xf264b + mov byte [es:bx+01fh], 005h ; 26 c6 47 1f 05 ; 0xf264e + mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf2653 ata.c:675 + lea dx, [bp-00262h] ; 8d 96 9e fd ; 0xf2658 ata.c:676 + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf265c + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf265f + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf2663 + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf2667 ata.c:677 + mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf266a + mov cx, strict word 00001h ; b9 01 00 ; 0xf266e ata.c:679 + mov bx, 000a1h ; bb a1 00 ; 0xf2671 + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf2674 + mov dx, es ; 8c c2 ; 0xf2677 + call 01f4eh ; e8 d2 f8 ; 0xf2679 + test ax, ax ; 85 c0 ; 0xf267c + je short 0268bh ; 74 0b ; 0xf267e + push 001e6h ; 68 e6 01 ; 0xf2680 ata.c:680 + push strict byte 00007h ; 6a 07 ; 0xf2683 + call 01a68h ; e8 e0 f3 ; 0xf2685 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf2688 + mov cl, byte [bp-00261h] ; 8a 8e 9f fd ; 0xf268b ata.c:682 + and cl, 01fh ; 80 e1 1f ; 0xf268f + test byte [bp-00262h], 080h ; f6 86 9e fd 80 ; 0xf2692 ata.c:683 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf2697 + xor ah, ah ; 30 e4 ; 0xf269a + mov dx, ax ; 89 c2 ; 0xf269c + cmp byte [bp-00202h], 000h ; 80 be fe fd 00 ; 0xf269e ata.c:685 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf26a3 + xor ah, ah ; 30 e4 ; 0xf26a6 + movzx bx, byte [bp-016h] ; 0f b6 5e ea ; 0xf26a8 ata.c:691 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf26ac + mov es, [bp-02ah] ; 8e 46 d6 ; 0xf26af + add bx, word [bp-018h] ; 03 5e e8 ; 0xf26b2 + mov byte [es:bx+01fh], cl ; 26 88 4f 1f ; 0xf26b5 + mov byte [es:bx+020h], dl ; 26 88 57 20 ; 0xf26b9 ata.c:692 + mov byte [es:bx+022h], al ; 26 88 47 22 ; 0xf26bd ata.c:693 + mov word [es:bx+024h], 00800h ; 26 c7 47 24 00 08 ; 0xf26c1 ata.c:694 + movzx bx, byte [bp-010h] ; 0f b6 5e f0 ; 0xf26c7 ata.c:697 + add bx, word [bp-018h] ; 03 5e e8 ; 0xf26cb + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf26ce + mov byte [es:bx+00264h], al ; 26 88 87 64 02 ; 0xf26d1 + inc byte [bp-010h] ; fe 46 f0 ; 0xf26d6 ata.c:698 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf26d9 ata.c:707 + cmp AL, strict byte 003h ; 3c 03 ; 0xf26dc + je short 0270fh ; 74 2f ; 0xf26de + cmp AL, strict byte 002h ; 3c 02 ; 0xf26e0 + jne near 02772h ; 0f 85 8c 00 ; 0xf26e2 + movzx si, byte [bp-016h] ; 0f b6 76 ea ; 0xf26e6 ata.c:709 + imul si, si, strict byte 0001ch ; 6b f6 1c ; 0xf26ea + mov es, [bp-02ah] ; 8e 46 d6 ; 0xf26ed + add si, word [bp-018h] ; 03 76 e8 ; 0xf26f0 + mov ax, word [es:si+038h] ; 26 8b 44 38 ; 0xf26f3 + mov bx, word [es:si+036h] ; 26 8b 5c 36 ; 0xf26f7 + mov cx, word [es:si+034h] ; 26 8b 4c 34 ; 0xf26fb + mov dx, word [es:si+032h] ; 26 8b 54 32 ; 0xf26ff + mov si, strict word 0000bh ; be 0b 00 ; 0xf2703 + call 0ace0h ; e8 d7 85 ; 0xf2706 + mov word [bp-030h], dx ; 89 56 d0 ; 0xf2709 + mov word [bp-026h], cx ; 89 4e da ; 0xf270c + movzx dx, byte [bp-001c1h] ; 0f b6 96 3f fe ; 0xf270f ata.c:712 + sal dx, 008h ; c1 e2 08 ; 0xf2714 + movzx ax, byte [bp-001c2h] ; 0f b6 86 3e fe ; 0xf2717 + or dx, ax ; 09 c2 ; 0xf271c + mov byte [bp-006h], 00fh ; c6 46 fa 0f ; 0xf271e ata.c:713 + jmp short 0272dh ; eb 09 ; 0xf2722 + dec byte [bp-006h] ; fe 4e fa ; 0xf2724 ata.c:716 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2727 + jbe short 0273ah ; 76 0d ; 0xf272b + movzx cx, byte [bp-006h] ; 0f b6 4e fa ; 0xf272d + mov ax, strict word 00001h ; b8 01 00 ; 0xf2731 + sal ax, CL ; d3 e0 ; 0xf2734 + test dx, ax ; 85 c2 ; 0xf2736 + je short 02724h ; 74 ea ; 0xf2738 + xor di, di ; 31 ff ; 0xf273a ata.c:719 + jmp short 02743h ; eb 05 ; 0xf273c + cmp di, strict byte 00014h ; 83 ff 14 ; 0xf273e + jnl short 02758h ; 7d 15 ; 0xf2741 + mov si, di ; 89 fe ; 0xf2743 ata.c:720 + add si, di ; 01 fe ; 0xf2745 + mov al, byte [bp+si-0022bh] ; 8a 82 d5 fd ; 0xf2747 + mov byte [bp+si-062h], al ; 88 42 9e ; 0xf274b + mov al, byte [bp+si-0022ch] ; 8a 82 d4 fd ; 0xf274e ata.c:721 + mov byte [bp+si-061h], al ; 88 42 9f ; 0xf2752 + inc di ; 47 ; 0xf2755 ata.c:722 + jmp short 0273eh ; eb e6 ; 0xf2756 + mov byte [bp-03ah], 000h ; c6 46 c6 00 ; 0xf2758 ata.c:725 + mov di, strict word 00027h ; bf 27 00 ; 0xf275c ata.c:726 + jmp short 02766h ; eb 05 ; 0xf275f + dec di ; 4f ; 0xf2761 ata.c:731 + test di, di ; 85 ff ; 0xf2762 + jle short 02772h ; 7e 0c ; 0xf2764 + cmp byte [bp+di-062h], 020h ; 80 7b 9e 20 ; 0xf2766 + jne short 02772h ; 75 06 ; 0xf276a + mov byte [bp+di-062h], 000h ; c6 43 9e 00 ; 0xf276c + jmp short 02761h ; eb ef ; 0xf2770 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2772 ata.c:738 + cmp AL, strict byte 003h ; 3c 03 ; 0xf2775 + je short 027d7h ; 74 5e ; 0xf2777 + cmp AL, strict byte 002h ; 3c 02 ; 0xf2779 + je short 02786h ; 74 09 ; 0xf277b + cmp AL, strict byte 001h ; 3c 01 ; 0xf277d + je near 0283fh ; 0f 84 bc 00 ; 0xf277f + jmp near 0285eh ; e9 d8 00 ; 0xf2783 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf2786 ata.c:741 + je short 02791h ; 74 05 ; 0xf278a + mov ax, 00211h ; b8 11 02 ; 0xf278c + jmp short 02794h ; eb 03 ; 0xf278f + mov ax, 00218h ; b8 18 02 ; 0xf2791 + push ax ; 50 ; 0xf2794 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf2795 + push ax ; 50 ; 0xf2799 + push 0021fh ; 68 1f 02 ; 0xf279a + push strict byte 00002h ; 6a 02 ; 0xf279d + call 01a68h ; e8 c6 f2 ; 0xf279f + add sp, strict byte 00008h ; 83 c4 08 ; 0xf27a2 + xor di, di ; 31 ff ; 0xf27a5 ata.c:742 + movzx ax, byte [bp+di-062h] ; 0f b6 43 9e ; 0xf27a7 ata.c:743 + inc di ; 47 ; 0xf27ab + test ax, ax ; 85 c0 ; 0xf27ac + je short 027beh ; 74 0e ; 0xf27ae + push ax ; 50 ; 0xf27b0 ata.c:744 + push 0022ah ; 68 2a 02 ; 0xf27b1 + push strict byte 00002h ; 6a 02 ; 0xf27b4 + call 01a68h ; e8 af f2 ; 0xf27b6 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf27b9 + jmp short 027a7h ; eb e9 ; 0xf27bc + push word [bp-026h] ; ff 76 da ; 0xf27be ata.c:745 + push word [bp-030h] ; ff 76 d0 ; 0xf27c1 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf27c4 + push ax ; 50 ; 0xf27c8 + push 0022dh ; 68 2d 02 ; 0xf27c9 + push strict byte 00002h ; 6a 02 ; 0xf27cc + call 01a68h ; e8 97 f2 ; 0xf27ce + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf27d1 + jmp near 0285eh ; e9 87 00 ; 0xf27d4 ata.c:746 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf27d7 ata.c:748 + je short 027e2h ; 74 05 ; 0xf27db + mov ax, 00211h ; b8 11 02 ; 0xf27dd + jmp short 027e5h ; eb 03 ; 0xf27e0 + mov ax, 00218h ; b8 18 02 ; 0xf27e2 + push ax ; 50 ; 0xf27e5 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf27e6 + push ax ; 50 ; 0xf27ea + push 0021fh ; 68 1f 02 ; 0xf27eb + push strict byte 00002h ; 6a 02 ; 0xf27ee + call 01a68h ; e8 75 f2 ; 0xf27f0 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf27f3 + xor di, di ; 31 ff ; 0xf27f6 ata.c:749 + movzx ax, byte [bp+di-062h] ; 0f b6 43 9e ; 0xf27f8 ata.c:750 + inc di ; 47 ; 0xf27fc + test ax, ax ; 85 c0 ; 0xf27fd + je short 0280fh ; 74 0e ; 0xf27ff + push ax ; 50 ; 0xf2801 ata.c:751 + push 0022ah ; 68 2a 02 ; 0xf2802 + push strict byte 00002h ; 6a 02 ; 0xf2805 + call 01a68h ; e8 5e f2 ; 0xf2807 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf280a + jmp short 027f8h ; eb e9 ; 0xf280d + movzx bx, byte [bp-016h] ; 0f b6 5e ea ; 0xf280f ata.c:752 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf2813 + mov es, [bp-02ah] ; 8e 46 d6 ; 0xf2816 + add bx, word [bp-018h] ; 03 5e e8 ; 0xf2819 + cmp byte [es:bx+01fh], 005h ; 26 80 7f 1f 05 ; 0xf281c + jne short 0282dh ; 75 0a ; 0xf2821 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf2823 ata.c:753 + push ax ; 50 ; 0xf2827 + push 0024dh ; 68 4d 02 ; 0xf2828 + jmp short 02835h ; eb 08 ; 0xf282b ata.c:754 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf282d ata.c:755 + push ax ; 50 ; 0xf2831 + push 00267h ; 68 67 02 ; 0xf2832 + push strict byte 00002h ; 6a 02 ; 0xf2835 + call 01a68h ; e8 2e f2 ; 0xf2837 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf283a + jmp short 0285eh ; eb 1f ; 0xf283d ata.c:756 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf283f ata.c:758 + je short 0284ah ; 74 05 ; 0xf2843 + mov ax, 00211h ; b8 11 02 ; 0xf2845 + jmp short 0284dh ; eb 03 ; 0xf2848 + mov ax, 00218h ; b8 18 02 ; 0xf284a + push ax ; 50 ; 0xf284d + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf284e + push ax ; 50 ; 0xf2852 + push 00279h ; 68 79 02 ; 0xf2853 + push strict byte 00002h ; 6a 02 ; 0xf2856 + call 01a68h ; e8 0d f2 ; 0xf2858 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf285b + inc byte [bp-016h] ; fe 46 ea ; 0xf285e ata.c:763 + cmp byte [bp-016h], 008h ; 80 7e ea 08 ; 0xf2861 + jnc short 028b2h ; 73 4b ; 0xf2865 + movzx bx, byte [bp-016h] ; 0f b6 5e ea ; 0xf2867 + mov ax, bx ; 89 d8 ; 0xf286b + cwd ; 99 ; 0xf286d + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf286e + sar ax, 1 ; d1 f8 ; 0xf2870 + mov word [bp-032h], ax ; 89 46 ce ; 0xf2872 + mov al, byte [bp-032h] ; 8a 46 ce ; 0xf2875 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf2878 + mov ax, bx ; 89 d8 ; 0xf287b + cwd ; 99 ; 0xf287d + mov bx, strict word 00002h ; bb 02 00 ; 0xf287e + idiv bx ; f7 fb ; 0xf2881 + mov cx, dx ; 89 d1 ; 0xf2883 + mov byte [bp-00eh], dl ; 88 56 f2 ; 0xf2885 + movzx ax, byte [bp-032h] ; 0f b6 46 ce ; 0xf2888 + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf288c + mov es, [bp-02ah] ; 8e 46 d6 ; 0xf288f + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf2892 + add bx, ax ; 01 c3 ; 0xf2895 + mov si, word [es:bx+0027ah] ; 26 8b b7 7a 02 ; 0xf2897 + mov ax, word [es:bx+0027ch] ; 26 8b 87 7c 02 ; 0xf289c + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf28a1 + lea dx, [si+007h] ; 8d 54 07 ; 0xf28a4 + in AL, DX ; ec ; 0xf28a7 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf28a8 + cmp AL, strict byte 0ffh ; 3c ff ; 0xf28aa + jne near 02371h ; 0f 85 c1 fa ; 0xf28ac + jmp short 0285eh ; eb ac ; 0xf28b0 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf28b2 ata.c:766 + mov es, [bp-02ah] ; 8e 46 d6 ; 0xf28b5 + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf28b8 + mov byte [es:bx+0024eh], al ; 26 88 87 4e 02 ; 0xf28bb + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf28c0 ata.c:767 + mov byte [es:bx+00263h], al ; 26 88 87 63 02 ; 0xf28c3 + mov bx, strict word 00075h ; bb 75 00 ; 0xf28c8 ata.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf28cb + mov es, ax ; 8e c0 ; 0xf28ce + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf28d0 + mov byte [es:bx], al ; 26 88 07 ; 0xf28d3 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf28d6 ata.c:780 + pop di ; 5f ; 0xf28d9 + pop si ; 5e ; 0xf28da + pop bp ; 5d ; 0xf28db + retn ; c3 ; 0xf28dc + ; disGetNextSymbol 0xf28dd LB 0x84bf -> off=0x0 cb=00000000000002bc uValue=00000000000f12dd 'ata_cmd_data_out' +ata_cmd_data_out: ; 0xf28dd LB 0x2bc + push bp ; 55 ; 0xf28dd ata.c:794 + mov bp, sp ; 89 e5 ; 0xf28de + push si ; 56 ; 0xf28e0 + push di ; 57 ; 0xf28e1 + sub sp, strict byte 00022h ; 83 ec 22 ; 0xf28e2 + mov di, ax ; 89 c7 ; 0xf28e5 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf28e7 + mov word [bp-024h], bx ; 89 5e dc ; 0xf28ea + mov word [bp-01ah], cx ; 89 4e e6 ; 0xf28ed + mov es, dx ; 8e c2 ; 0xf28f0 ata.c:806 + movzx ax, byte [es:di+00ch] ; 26 0f b6 45 0c ; 0xf28f2 + mov dx, ax ; 89 c2 ; 0xf28f7 ata.c:807 + shr dx, 1 ; d1 ea ; 0xf28f9 + mov dh, al ; 88 c6 ; 0xf28fb ata.c:808 + and dh, 001h ; 80 e6 01 ; 0xf28fd + mov byte [bp-006h], dh ; 88 76 fa ; 0xf2900 + xor dh, dh ; 30 f6 ; 0xf2903 ata.c:810 + imul dx, dx, strict byte 00006h ; 6b d2 06 ; 0xf2905 + mov bx, di ; 89 fb ; 0xf2908 + add bx, dx ; 01 d3 ; 0xf290a + mov dx, word [es:bx+0027ah] ; 26 8b 97 7a 02 ; 0xf290c + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf2911 + mov dx, word [es:bx+0027ch] ; 26 8b 97 7c 02 ; 0xf2914 ata.c:811 + mov word [bp-012h], dx ; 89 56 ee ; 0xf2919 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf291c ata.c:812 + mov bx, di ; 89 fb ; 0xf291f + add bx, ax ; 01 c3 ; 0xf2921 + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf2923 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf2927 + cmp AL, strict byte 001h ; 3c 01 ; 0xf292a ata.c:815 + jne short 02935h ; 75 07 ; 0xf292c + mov word [bp-020h], 00080h ; c7 46 e0 80 00 ; 0xf292e ata.c:816 + jmp short 0293ah ; eb 05 ; 0xf2933 ata.c:817 + mov word [bp-020h], 00100h ; c7 46 e0 00 01 ; 0xf2935 ata.c:819 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf293a ata.c:821 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf293d + in AL, DX ; ec ; 0xf2940 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2941 + test AL, strict byte 080h ; a8 80 ; 0xf2943 ata.c:822 + je short 02956h ; 74 0f ; 0xf2945 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2947 ata.c:825 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf294a + mov AL, strict byte 008h ; b0 08 ; 0xf294d + out DX, AL ; ee ; 0xf294f + mov dx, strict word 00001h ; ba 01 00 ; 0xf2950 ata.c:826 + jmp near 02b90h ; e9 3a 02 ; 0xf2953 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf2956 ata.c:829 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf2959 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf295d + mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf2960 + mov word [bp-014h], ax ; 89 46 ec ; 0xf2964 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf2967 + mov word [bp-016h], ax ; 89 46 ea ; 0xf296b + mov ax, word [es:di] ; 26 8b 05 ; 0xf296e + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf2971 + mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf2974 ata.c:830 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2978 + mov ax, word [es:di+00ah] ; 26 8b 45 0a ; 0xf297b + mov word [bp-018h], ax ; 89 46 e8 ; 0xf297f + mov ax, word [es:di+016h] ; 26 8b 45 16 ; 0xf2982 ata.c:831 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf2986 + mov ax, word [es:di+012h] ; 26 8b 45 12 ; 0xf2989 ata.c:832 + mov word [bp-026h], ax ; 89 46 da ; 0xf298d + mov ax, word [es:di+014h] ; 26 8b 45 14 ; 0xf2990 ata.c:833 + mov word [bp-022h], ax ; 89 46 de ; 0xf2994 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf2997 ata.c:836 + test ax, ax ; 85 c0 ; 0xf299a + jne near 02a67h ; 0f 85 c7 00 ; 0xf299c + xor dx, dx ; 31 d2 ; 0xf29a0 ata.c:837 + xor bx, bx ; 31 db ; 0xf29a2 + mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf29a4 + add si, word [bp-01ah] ; 03 76 e6 ; 0xf29a7 + adc dx, word [bp-016h] ; 13 56 ea ; 0xf29aa + adc bx, word [bp-014h] ; 13 5e ec ; 0xf29ad + adc ax, word [bp-010h] ; 13 46 f0 ; 0xf29b0 + test ax, ax ; 85 c0 ; 0xf29b3 + jnbe short 029c7h ; 77 10 ; 0xf29b5 + jne short 02a2ah ; 75 71 ; 0xf29b7 + test bx, bx ; 85 db ; 0xf29b9 + jnbe short 029c7h ; 77 0a ; 0xf29bb + jne short 02a2ah ; 75 6b ; 0xf29bd + cmp dx, 01000h ; 81 fa 00 10 ; 0xf29bf + jnbe short 029c7h ; 77 02 ; 0xf29c3 + jne short 02a2ah ; 75 63 ; 0xf29c5 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf29c7 ata.c:839 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf29ca + mov cx, word [bp-016h] ; 8b 4e ea ; 0xf29cd + mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf29d0 + mov si, strict word 00018h ; be 18 00 ; 0xf29d3 + call 0ace0h ; e8 07 83 ; 0xf29d6 + xor dh, dh ; 30 f6 ; 0xf29d9 + mov word [bp-01ch], dx ; 89 56 e4 ; 0xf29db + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf29de ata.c:840 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf29e1 + mov cx, word [bp-016h] ; 8b 4e ea ; 0xf29e4 + mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf29e7 + mov si, strict word 00020h ; be 20 00 ; 0xf29ea + call 0ace0h ; e8 f0 82 ; 0xf29ed + mov bx, dx ; 89 d3 ; 0xf29f0 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf29f2 ata.c:841 + xor al, al ; 30 c0 ; 0xf29f5 + shr ax, 008h ; c1 e8 08 ; 0xf29f7 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf29fa + inc dx ; 42 ; 0xf29fd + inc dx ; 42 ; 0xf29fe + out DX, AL ; ee ; 0xf29ff + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a00 ata.c:842 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf2a03 + mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf2a06 + out DX, AL ; ee ; 0xf2a09 + mov ax, bx ; 89 d8 ; 0xf2a0a ata.c:843 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a0c + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2a0f + out DX, AL ; ee ; 0xf2a12 + shr ax, 008h ; c1 e8 08 ; 0xf2a13 ata.c:844 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a16 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2a19 + out DX, AL ; ee ; 0xf2a1c + xor al, al ; 30 c0 ; 0xf2a1d ata.c:847 + mov byte [bp-015h], al ; 88 46 eb ; 0xf2a1f + xor ah, ah ; 30 e4 ; 0xf2a22 + mov word [bp-014h], ax ; 89 46 ec ; 0xf2a24 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf2a27 + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf2a2a ata.c:849 + xor ah, ah ; 30 e4 ; 0xf2a2d + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf2a2f + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf2a32 ata.c:850 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf2a35 + mov cx, word [bp-016h] ; 8b 4e ea ; 0xf2a38 + mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf2a3b + mov si, strict word 00008h ; be 08 00 ; 0xf2a3e + call 0ace0h ; e8 9c 82 ; 0xf2a41 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf2a44 + mov word [bp-014h], bx ; 89 5e ec ; 0xf2a47 + mov word [bp-016h], cx ; 89 4e ea ; 0xf2a4a + mov word [bp-01eh], dx ; 89 56 e2 ; 0xf2a4d + mov word [bp-026h], dx ; 89 56 da ; 0xf2a50 ata.c:851 + mov si, strict word 00010h ; be 10 00 ; 0xf2a53 ata.c:852 + call 0ace0h ; e8 87 82 ; 0xf2a56 + mov word [bp-01eh], dx ; 89 56 e2 ; 0xf2a59 + mov ax, dx ; 89 d0 ; 0xf2a5c ata.c:853 + xor ah, dh ; 30 f4 ; 0xf2a5e + and AL, strict byte 00fh ; 24 0f ; 0xf2a60 + or AL, strict byte 040h ; 0c 40 ; 0xf2a62 + mov word [bp-022h], ax ; 89 46 de ; 0xf2a64 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2a67 ata.c:856 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a6a + mov AL, strict byte 00ah ; b0 0a ; 0xf2a6d + out DX, AL ; ee ; 0xf2a6f + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a70 ata.c:857 + inc dx ; 42 ; 0xf2a73 + xor al, al ; 30 c0 ; 0xf2a74 + out DX, AL ; ee ; 0xf2a76 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a77 ata.c:858 + inc dx ; 42 ; 0xf2a7a + inc dx ; 42 ; 0xf2a7b + mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf2a7c + out DX, AL ; ee ; 0xf2a7f + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a80 ata.c:859 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf2a83 + mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf2a86 + out DX, AL ; ee ; 0xf2a89 + mov ax, word [bp-026h] ; 8b 46 da ; 0xf2a8a ata.c:860 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a8d + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2a90 + out DX, AL ; ee ; 0xf2a93 + shr ax, 008h ; c1 e8 08 ; 0xf2a94 ata.c:861 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a97 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2a9a + out DX, AL ; ee ; 0xf2a9d + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2a9e ata.c:862 + je short 02aa9h ; 74 05 ; 0xf2aa2 + mov ax, 000b0h ; b8 b0 00 ; 0xf2aa4 + jmp short 02aach ; eb 03 ; 0xf2aa7 + mov ax, 000a0h ; b8 a0 00 ; 0xf2aa9 + movzx dx, byte [bp-022h] ; 0f b6 56 de ; 0xf2aac + or ax, dx ; 09 d0 ; 0xf2ab0 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2ab2 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2ab5 + out DX, AL ; ee ; 0xf2ab8 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2ab9 ata.c:863 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2abc + mov al, byte [bp-024h] ; 8a 46 dc ; 0xf2abf + out DX, AL ; ee ; 0xf2ac2 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2ac3 ata.c:866 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2ac6 + in AL, DX ; ec ; 0xf2ac9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2aca + mov dl, al ; 88 c2 ; 0xf2acc + test AL, strict byte 080h ; a8 80 ; 0xf2ace ata.c:867 + jne short 02ac3h ; 75 f1 ; 0xf2ad0 + test AL, strict byte 001h ; a8 01 ; 0xf2ad2 ata.c:871 + je short 02ae5h ; 74 0f ; 0xf2ad4 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2ad6 ata.c:874 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2ad9 + mov AL, strict byte 008h ; b0 08 ; 0xf2adc + out DX, AL ; ee ; 0xf2ade + mov dx, strict word 00002h ; ba 02 00 ; 0xf2adf ata.c:875 + jmp near 02b90h ; e9 ab 00 ; 0xf2ae2 + test dl, 008h ; f6 c2 08 ; 0xf2ae5 ata.c:876 + jne short 02af9h ; 75 0f ; 0xf2ae8 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2aea ata.c:879 + 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 00003h ; ba 03 00 ; 0xf2af3 ata.c:880 + jmp near 02b90h ; e9 97 00 ; 0xf2af6 + sti ; fb ; 0xf2af9 ata.c:885 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf2afa ata.c:890 + cmp ax, 0f800h ; 3d 00 f8 ; 0xf2afd + jc short 02b12h ; 72 10 ; 0xf2b00 + sub ax, 00800h ; 2d 00 08 ; 0xf2b02 ata.c:891 + mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2b05 + add dx, 00080h ; 81 c2 80 00 ; 0xf2b08 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2b0c + mov word [bp-018h], dx ; 89 56 e8 ; 0xf2b0f + cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf2b12 ata.c:894 + jne short 02b2ah ; 75 12 ; 0xf2b16 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2b18 ata.c:895 + mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf2b1b + mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf2b1e + mov es, [bp-018h] ; 8e 46 e8 ; 0xf2b21 + db 0f3h, 066h, 026h, 06fh + ; rep es outsd ; f3 66 26 6f ; 0xf2b24 + jmp short 02b39h ; eb 0f ; 0xf2b28 ata.c:896 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2b2a ata.c:898 + mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf2b2d + mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf2b30 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf2b33 + db 0f3h, 026h, 06fh + ; rep es outsw ; f3 26 6f ; 0xf2b36 + mov word [bp-00eh], si ; 89 76 f2 ; 0xf2b39 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf2b3c ata.c:900 + inc word [es:di+018h] ; 26 ff 45 18 ; 0xf2b3f + dec word [bp-01ah] ; ff 4e e6 ; 0xf2b43 ata.c:901 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2b46 ata.c:903 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2b49 + in AL, DX ; ec ; 0xf2b4c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2b4d + mov dl, al ; 88 c2 ; 0xf2b4f + test AL, strict byte 080h ; a8 80 ; 0xf2b51 ata.c:904 + jne short 02b46h ; 75 f1 ; 0xf2b53 + cmp word [bp-01ah], strict byte 00000h ; 83 7e e6 00 ; 0xf2b55 ata.c:907 + jne short 02b6fh ; 75 14 ; 0xf2b59 + and AL, strict byte 0e9h ; 24 e9 ; 0xf2b5b ata.c:908 + cmp AL, strict byte 040h ; 3c 40 ; 0xf2b5d + je short 02b85h ; 74 24 ; 0xf2b5f + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2b61 ata.c:912 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2b64 + mov AL, strict byte 008h ; b0 08 ; 0xf2b67 + out DX, AL ; ee ; 0xf2b69 + mov dx, strict word 00006h ; ba 06 00 ; 0xf2b6a ata.c:913 + jmp short 02b90h ; eb 21 ; 0xf2b6d + mov al, dl ; 88 d0 ; 0xf2b6f ata.c:918 + and AL, strict byte 0c9h ; 24 c9 ; 0xf2b71 + cmp AL, strict byte 048h ; 3c 48 ; 0xf2b73 + je short 02afah ; 74 83 ; 0xf2b75 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2b77 ata.c:922 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2b7a + mov AL, strict byte 008h ; b0 08 ; 0xf2b7d + out DX, AL ; ee ; 0xf2b7f + mov dx, strict word 00007h ; ba 07 00 ; 0xf2b80 ata.c:923 + jmp short 02b90h ; eb 0b ; 0xf2b83 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2b85 ata.c:929 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2b88 + mov AL, strict byte 008h ; b0 08 ; 0xf2b8b + out DX, AL ; ee ; 0xf2b8d + xor dx, dx ; 31 d2 ; 0xf2b8e ata.c:930 + mov ax, dx ; 89 d0 ; 0xf2b90 ata.c:931 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2b92 + pop di ; 5f ; 0xf2b95 + pop si ; 5e ; 0xf2b96 + pop bp ; 5d ; 0xf2b97 + retn ; c3 ; 0xf2b98 + ; disGetNextSymbol 0xf2b99 LB 0x8203 -> off=0x0 cb=00000000000000b5 uValue=00000000000f1599 'ata_read_sectors' +ata_read_sectors: ; 0xf2b99 LB 0xb5 + push bp ; 55 ; 0xf2b99 ata.c:941 + mov bp, sp ; 89 e5 ; 0xf2b9a + push si ; 56 ; 0xf2b9c + push di ; 57 ; 0xf2b9d + sub sp, strict byte 00008h ; 83 ec 08 ; 0xf2b9e + mov si, word [bp+004h] ; 8b 76 04 ; 0xf2ba1 + mov es, [bp+006h] ; 8e 46 06 ; 0xf2ba4 ata.c:947 + mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf2ba7 + mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2bab ata.c:948 + mov dx, cx ; 89 ca ; 0xf2baf + sal dx, 009h ; c1 e2 09 ; 0xf2bb1 + cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2bb4 ata.c:950 + je short 02bdah ; 74 1f ; 0xf2bb9 + xor ah, ah ; 30 e4 ; 0xf2bbb ata.c:952 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2bbd + mov [bp-00ah], es ; 8c 46 f6 ; 0xf2bc0 + mov di, si ; 89 f7 ; 0xf2bc3 + add di, ax ; 01 c7 ; 0xf2bc5 + mov word [es:di+024h], dx ; 26 89 55 24 ; 0xf2bc7 + mov bx, 000c4h ; bb c4 00 ; 0xf2bcb ata.c:954 + mov ax, si ; 89 f0 ; 0xf2bce + mov dx, es ; 8c c2 ; 0xf2bd0 + call 01f4eh ; e8 79 f3 ; 0xf2bd2 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2bd5 ata.c:955 + jmp short 02c3fh ; eb 65 ; 0xf2bd8 ata.c:956 + xor bx, bx ; 31 db ; 0xf2bda ata.c:958 + mov word [bp-00ah], bx ; 89 5e f6 ; 0xf2bdc + mov word [bp-00ch], bx ; 89 5e f4 ; 0xf2bdf + mov di, word [es:si] ; 26 8b 3c ; 0xf2be2 + add di, cx ; 01 cf ; 0xf2be5 + mov word [bp-008h], di ; 89 7e f8 ; 0xf2be7 + mov di, word [es:si+002h] ; 26 8b 7c 02 ; 0xf2bea + adc di, bx ; 11 df ; 0xf2bee + mov word [bp-006h], di ; 89 7e fa ; 0xf2bf0 + mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf2bf3 + adc bx, word [bp-00ah] ; 13 5e f6 ; 0xf2bf7 + mov di, word [es:si+006h] ; 26 8b 7c 06 ; 0xf2bfa + adc di, word [bp-00ch] ; 13 7e f4 ; 0xf2bfe + test di, di ; 85 ff ; 0xf2c01 + jnbe short 02c16h ; 77 11 ; 0xf2c03 + jne short 02c22h ; 75 1b ; 0xf2c05 + test bx, bx ; 85 db ; 0xf2c07 + jnbe short 02c16h ; 77 0b ; 0xf2c09 + jne short 02c22h ; 75 15 ; 0xf2c0b + cmp word [bp-006h], 01000h ; 81 7e fa 00 10 ; 0xf2c0d + jnbe short 02c16h ; 77 02 ; 0xf2c12 + jne short 02c22h ; 75 0c ; 0xf2c14 + mov bx, strict word 00024h ; bb 24 00 ; 0xf2c16 ata.c:960 + mov ax, si ; 89 f0 ; 0xf2c19 + mov dx, es ; 8c c2 ; 0xf2c1b + call 01f4eh ; e8 2e f3 ; 0xf2c1d + jmp short 02c45h ; eb 23 ; 0xf2c20 ata.c:961 + xor ah, ah ; 30 e4 ; 0xf2c22 ata.c:962 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2c24 + mov [bp-006h], es ; 8c 46 fa ; 0xf2c27 + mov di, si ; 89 f7 ; 0xf2c2a + add di, ax ; 01 c7 ; 0xf2c2c + mov word [es:di+024h], dx ; 26 89 55 24 ; 0xf2c2e + mov bx, 000c4h ; bb c4 00 ; 0xf2c32 ata.c:964 + mov ax, si ; 89 f0 ; 0xf2c35 + mov dx, es ; 8c c2 ; 0xf2c37 + call 01f4eh ; e8 12 f3 ; 0xf2c39 + mov es, [bp-006h] ; 8e 46 fa ; 0xf2c3c ata.c:965 + mov word [es:di+024h], 00200h ; 26 c7 45 24 00 02 ; 0xf2c3f + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2c45 ata.c:969 + pop di ; 5f ; 0xf2c48 + pop si ; 5e ; 0xf2c49 + pop bp ; 5d ; 0xf2c4a + retn 00004h ; c2 04 00 ; 0xf2c4b + ; disGetNextSymbol 0xf2c4e LB 0x814e -> off=0x0 cb=000000000000005b uValue=00000000000f164e 'ata_write_sectors' +ata_write_sectors: ; 0xf2c4e LB 0x5b + push bp ; 55 ; 0xf2c4e ata.c:978 + mov bp, sp ; 89 e5 ; 0xf2c4f + push si ; 56 ; 0xf2c51 + push di ; 57 ; 0xf2c52 + push ax ; 50 ; 0xf2c53 + les si, [bp+004h] ; c4 76 04 ; 0xf2c54 + mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2c57 ata.c:982 + cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2c5b ata.c:984 + je short 02c6eh ; 74 0c ; 0xf2c60 + mov bx, strict word 00030h ; bb 30 00 ; 0xf2c62 ata.c:986 + mov ax, si ; 89 f0 ; 0xf2c65 + mov dx, es ; 8c c2 ; 0xf2c67 + call 028ddh ; e8 71 fc ; 0xf2c69 + jmp short 02ca0h ; eb 32 ; 0xf2c6c + xor ax, ax ; 31 c0 ; 0xf2c6e ata.c:989 + xor bx, bx ; 31 db ; 0xf2c70 + xor dx, dx ; 31 d2 ; 0xf2c72 + mov di, word [es:si] ; 26 8b 3c ; 0xf2c74 + add di, cx ; 01 cf ; 0xf2c77 + mov word [bp-006h], di ; 89 7e fa ; 0xf2c79 + adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf2c7c + adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf2c80 + adc dx, word [es:si+006h] ; 26 13 54 06 ; 0xf2c84 + test dx, dx ; 85 d2 ; 0xf2c88 + jnbe short 02c9bh ; 77 0f ; 0xf2c8a + jne short 02c62h ; 75 d4 ; 0xf2c8c + test bx, bx ; 85 db ; 0xf2c8e + jnbe short 02c9bh ; 77 09 ; 0xf2c90 + jne short 02c62h ; 75 ce ; 0xf2c92 + cmp ax, 01000h ; 3d 00 10 ; 0xf2c94 + jnbe short 02c9bh ; 77 02 ; 0xf2c97 + jne short 02c62h ; 75 c7 ; 0xf2c99 + mov bx, strict word 00034h ; bb 34 00 ; 0xf2c9b ata.c:990 + jmp short 02c65h ; eb c5 ; 0xf2c9e + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2ca0 ata.c:994 + pop di ; 5f ; 0xf2ca3 + pop si ; 5e ; 0xf2ca4 + pop bp ; 5d ; 0xf2ca5 + retn 00004h ; c2 04 00 ; 0xf2ca6 + ; disGetNextSymbol 0xf2ca9 LB 0x80f3 -> off=0x0 cb=000000000000023f uValue=00000000000f16a9 'ata_cmd_packet' +ata_cmd_packet: ; 0xf2ca9 LB 0x23f + push bp ; 55 ; 0xf2ca9 ata.c:1006 + mov bp, sp ; 89 e5 ; 0xf2caa + push si ; 56 ; 0xf2cac + push di ; 57 ; 0xf2cad + sub sp, strict byte 00012h ; 83 ec 12 ; 0xf2cae + mov byte [bp-006h], dl ; 88 56 fa ; 0xf2cb1 + mov di, bx ; 89 df ; 0xf2cb4 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2cb6 ata.c:58 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2cb9 + mov es, dx ; 8e c2 ; 0xf2cbc + mov dx, word [es:bx] ; 26 8b 17 ; 0xf2cbe + mov bx, strict word 0005eh ; bb 5e 00 ; 0xf2cc1 ata.c:59 + mov word [bp-010h], dx ; 89 56 f0 ; 0xf2cc4 + mov dx, ax ; 89 c2 ; 0xf2cc7 ata.c:1018 + shr dx, 1 ; d1 ea ; 0xf2cc9 + mov word [bp-016h], dx ; 89 56 ea ; 0xf2ccb + mov dl, byte [bp-016h] ; 8a 56 ea ; 0xf2cce + mov dh, al ; 88 c6 ; 0xf2cd1 ata.c:1019 + and dh, 001h ; 80 e6 01 ; 0xf2cd3 + mov byte [bp-00ah], dh ; 88 76 f6 ; 0xf2cd6 + cmp byte [bp+008h], 002h ; 80 7e 08 02 ; 0xf2cd9 ata.c:1022 + jne short 02cfeh ; 75 1f ; 0xf2cdd + mov bx, 00e06h ; bb 06 0e ; 0xf2cdf ata.c:1023 + mov cx, ds ; 8c d9 ; 0xf2ce2 + mov ax, strict word 00004h ; b8 04 00 ; 0xf2ce4 + call 01a27h ; e8 3d ed ; 0xf2ce7 + push 00293h ; 68 93 02 ; 0xf2cea + push 002a2h ; 68 a2 02 ; 0xf2ced + push strict byte 00004h ; 6a 04 ; 0xf2cf0 + call 01a68h ; e8 73 ed ; 0xf2cf2 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf2cf5 + mov dx, strict word 00001h ; ba 01 00 ; 0xf2cf8 ata.c:1024 + jmp near 02eddh ; e9 df 01 ; 0xf2cfb + xor dh, dh ; 30 f6 ; 0xf2cfe ata.c:1027 + imul dx, dx, strict byte 00006h ; 6b d2 06 ; 0xf2d00 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf2d03 + mov si, bx ; 89 de ; 0xf2d06 + add si, dx ; 01 d6 ; 0xf2d08 + mov dx, word [es:si+0027ah] ; 26 8b 94 7a 02 ; 0xf2d0a + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf2d0f + mov dx, word [es:si+0027ch] ; 26 8b 94 7c 02 ; 0xf2d12 ata.c:1028 + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf2d17 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2d1a ata.c:1029 + mov si, bx ; 89 de ; 0xf2d1d + add si, ax ; 01 c6 ; 0xf2d1f + mov al, byte [es:si+022h] ; 26 8a 44 22 ; 0xf2d21 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf2d25 + xor ax, ax ; 31 c0 ; 0xf2d28 ata.c:1030 + mov word [bp-014h], ax ; 89 46 ec ; 0xf2d2a + mov word [bp-012h], ax ; 89 46 ee ; 0xf2d2d + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2d30 ata.c:1032 + cmp AL, strict byte 00ch ; 3c 0c ; 0xf2d33 + jnc short 02d3dh ; 73 06 ; 0xf2d35 + mov byte [bp-006h], 00ch ; c6 46 fa 0c ; 0xf2d37 ata.c:1033 + jmp short 02d43h ; eb 06 ; 0xf2d3b + jbe short 02d43h ; 76 04 ; 0xf2d3d ata.c:1034 + mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf2d3f ata.c:1035 + shr byte [bp-006h], 1 ; d0 6e fa ; 0xf2d43 ata.c:1036 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf2d46 ata.c:1040 + db 066h, 026h, 0c7h, 047h, 018h, 000h, 000h, 000h, 000h + ; mov dword [es:bx+018h], strict dword 000000000h ; 66 26 c7 47 18 00 00 00 00; 0xf2d49 + mov word [es:bx+01ch], strict word 00000h ; 26 c7 47 1c 00 00 ; 0xf2d52 ata.c:1041 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2d58 ata.c:1043 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2d5b + in AL, DX ; ec ; 0xf2d5e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2d5f + test AL, strict byte 080h ; a8 80 ; 0xf2d61 ata.c:1044 + je short 02d6bh ; 74 06 ; 0xf2d63 + mov dx, strict word 00002h ; ba 02 00 ; 0xf2d65 ata.c:1045 + jmp near 02eddh ; e9 72 01 ; 0xf2d68 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2d6b ata.c:1047 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d6e + mov AL, strict byte 00ah ; b0 0a ; 0xf2d71 + out DX, AL ; ee ; 0xf2d73 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2d74 ata.c:1051 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2d77 + mov AL, strict byte 0f0h ; b0 f0 ; 0xf2d7a + out DX, AL ; ee ; 0xf2d7c + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2d7d ata.c:1052 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2d80 + mov AL, strict byte 0ffh ; b0 ff ; 0xf2d83 + out DX, AL ; ee ; 0xf2d85 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf2d86 ata.c:1053 + je short 02d91h ; 74 05 ; 0xf2d8a + mov ax, 000b0h ; b8 b0 00 ; 0xf2d8c + jmp short 02d94h ; eb 03 ; 0xf2d8f + mov ax, 000a0h ; b8 a0 00 ; 0xf2d91 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2d94 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d97 + out DX, AL ; ee ; 0xf2d9a + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2d9b ata.c:1054 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2d9e + mov AL, strict byte 0a0h ; b0 a0 ; 0xf2da1 + out DX, AL ; ee ; 0xf2da3 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2da4 ata.c:1058 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2da7 + in AL, DX ; ec ; 0xf2daa + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2dab + mov dl, al ; 88 c2 ; 0xf2dad + test AL, strict byte 080h ; a8 80 ; 0xf2daf ata.c:1059 + jne short 02da4h ; 75 f1 ; 0xf2db1 + test AL, strict byte 001h ; a8 01 ; 0xf2db3 ata.c:1062 + je short 02dc6h ; 74 0f ; 0xf2db5 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2db7 ata.c:1065 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2dba + mov AL, strict byte 008h ; b0 08 ; 0xf2dbd + out DX, AL ; ee ; 0xf2dbf + mov dx, strict word 00003h ; ba 03 00 ; 0xf2dc0 ata.c:1066 + jmp near 02eddh ; e9 17 01 ; 0xf2dc3 + test dl, 008h ; f6 c2 08 ; 0xf2dc6 ata.c:1067 + jne short 02ddah ; 75 0f ; 0xf2dc9 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2dcb ata.c:1070 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2dce + mov AL, strict byte 008h ; b0 08 ; 0xf2dd1 + out DX, AL ; ee ; 0xf2dd3 + mov dx, strict word 00004h ; ba 04 00 ; 0xf2dd4 ata.c:1071 + jmp near 02eddh ; e9 03 01 ; 0xf2dd7 + sti ; fb ; 0xf2dda ata.c:1074 + mov ax, di ; 89 f8 ; 0xf2ddb ata.c:1078 + shr ax, 004h ; c1 e8 04 ; 0xf2ddd + add ax, cx ; 01 c8 ; 0xf2de0 + mov si, di ; 89 fe ; 0xf2de2 + and si, strict byte 0000fh ; 83 e6 0f ; 0xf2de4 + movzx cx, byte [bp-006h] ; 0f b6 4e fa ; 0xf2de7 ata.c:1083 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2deb + mov es, ax ; 8e c0 ; 0xf2dee + db 0f3h, 026h, 06fh + ; rep es outsw ; f3 26 6f ; 0xf2df0 + cmp byte [bp+008h], 000h ; 80 7e 08 00 ; 0xf2df3 ata.c:1085 + jne short 02e04h ; 75 0b ; 0xf2df7 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2df9 ata.c:1086 + in AL, DX ; ec ; 0xf2dfc + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2dfd + mov dl, al ; 88 c2 ; 0xf2dff + jmp near 02ebeh ; e9 ba 00 ; 0xf2e01 ata.c:1088 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2e04 ata.c:1092 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2e07 + in AL, DX ; ec ; 0xf2e0a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2e0b + mov dl, al ; 88 c2 ; 0xf2e0d + test AL, strict byte 080h ; a8 80 ; 0xf2e0f ata.c:1093 + jne short 02e04h ; 75 f1 ; 0xf2e11 + test AL, strict byte 088h ; a8 88 ; 0xf2e13 ata.c:1098 + je near 02ebeh ; 0f 84 a5 00 ; 0xf2e15 + test AL, strict byte 001h ; a8 01 ; 0xf2e19 ata.c:1101 + je short 02e28h ; 74 0b ; 0xf2e1b + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2e1d ata.c:1104 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2e20 + mov AL, strict byte 008h ; b0 08 ; 0xf2e23 + out DX, AL ; ee ; 0xf2e25 + jmp short 02dc0h ; eb 98 ; 0xf2e26 + mov al, dl ; 88 d0 ; 0xf2e28 ata.c:1109 + and AL, strict byte 0c9h ; 24 c9 ; 0xf2e2a + cmp AL, strict byte 048h ; 3c 48 ; 0xf2e2c + je short 02e3bh ; 74 0b ; 0xf2e2e + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2e30 ata.c:1113 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2e33 + mov AL, strict byte 008h ; b0 08 ; 0xf2e36 + out DX, AL ; ee ; 0xf2e38 + jmp short 02dd4h ; eb 99 ; 0xf2e39 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf2e3b ata.c:1119 + shr ax, 004h ; c1 e8 04 ; 0xf2e3e + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf2e41 + add dx, ax ; 01 c2 ; 0xf2e44 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf2e46 + and ax, strict word 0000fh ; 25 0f 00 ; 0xf2e49 + mov word [bp+00ah], ax ; 89 46 0a ; 0xf2e4c + mov word [bp+00ch], dx ; 89 56 0c ; 0xf2e4f + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2e52 ata.c:1124 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2e55 + in AL, DX ; ec ; 0xf2e58 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2e59 + mov cx, ax ; 89 c1 ; 0xf2e5b + sal cx, 008h ; c1 e1 08 ; 0xf2e5d + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2e60 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2e63 + in AL, DX ; ec ; 0xf2e66 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2e67 + add cx, ax ; 01 c1 ; 0xf2e69 + mov si, cx ; 89 ce ; 0xf2e6b ata.c:1127 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2e6d ata.c:1133 + test cl, 003h ; f6 c1 03 ; 0xf2e70 ata.c:1134 + je short 02e77h ; 74 02 ; 0xf2e73 + xor al, al ; 30 c0 ; 0xf2e75 ata.c:1135 + test cl, 001h ; f6 c1 01 ; 0xf2e77 ata.c:1138 + je short 02e7dh ; 74 01 ; 0xf2e7a + inc cx ; 41 ; 0xf2e7c ata.c:1139 + cmp AL, strict byte 001h ; 3c 01 ; 0xf2e7d ata.c:1143 + jne short 02e86h ; 75 05 ; 0xf2e7f + shr cx, 002h ; c1 e9 02 ; 0xf2e81 ata.c:1144 + jmp short 02e88h ; eb 02 ; 0xf2e84 ata.c:1145 + shr cx, 1 ; d1 e9 ; 0xf2e86 ata.c:1148 + cmp AL, strict byte 001h ; 3c 01 ; 0xf2e88 ata.c:1152 + jne short 02e97h ; 75 0b ; 0xf2e8a + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2e8c ata.c:1153 + les di, [bp+00ah] ; c4 7e 0a ; 0xf2e8f + db 0f3h, 066h, 06dh + ; rep insd ; f3 66 6d ; 0xf2e92 + jmp short 02e9fh ; eb 08 ; 0xf2e95 ata.c:1154 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2e97 ata.c:1157 + les di, [bp+00ah] ; c4 7e 0a ; 0xf2e9a + rep insw ; f3 6d ; 0xf2e9d + add word [bp+00ah], si ; 01 76 0a ; 0xf2e9f ata.c:1162 + xor ax, ax ; 31 c0 ; 0xf2ea2 ata.c:1165 + add word [bp-014h], si ; 01 76 ec ; 0xf2ea4 + adc word [bp-012h], ax ; 11 46 ee ; 0xf2ea7 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf2eaa ata.c:1166 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf2ead + mov word [es:bx+01ah], ax ; 26 89 47 1a ; 0xf2eb0 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf2eb4 + mov word [es:bx+01ch], ax ; 26 89 47 1c ; 0xf2eb7 + jmp near 02e04h ; e9 46 ff ; 0xf2ebb ata.c:1167 + mov al, dl ; 88 d0 ; 0xf2ebe ata.c:1171 + and AL, strict byte 0e9h ; 24 e9 ; 0xf2ec0 + cmp AL, strict byte 040h ; 3c 40 ; 0xf2ec2 + je short 02ed2h ; 74 0c ; 0xf2ec4 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2ec6 ata.c:1175 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2ec9 + mov AL, strict byte 008h ; b0 08 ; 0xf2ecc + out DX, AL ; ee ; 0xf2ece + jmp near 02dd4h ; e9 02 ff ; 0xf2ecf + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2ed2 ata.c:1180 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2ed5 + mov AL, strict byte 008h ; b0 08 ; 0xf2ed8 + out DX, AL ; ee ; 0xf2eda + xor dx, dx ; 31 d2 ; 0xf2edb ata.c:1181 + mov ax, dx ; 89 d0 ; 0xf2edd ata.c:1182 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2edf + pop di ; 5f ; 0xf2ee2 + pop si ; 5e ; 0xf2ee3 + pop bp ; 5d ; 0xf2ee4 + retn 0000ah ; c2 0a 00 ; 0xf2ee5 + ; disGetNextSymbol 0xf2ee8 LB 0x7eb4 -> off=0x0 cb=000000000000007a uValue=00000000000f18e8 'ata_soft_reset' +ata_soft_reset: ; 0xf2ee8 LB 0x7a + push bp ; 55 ; 0xf2ee8 ata.c:1190 + mov bp, sp ; 89 e5 ; 0xf2ee9 + push bx ; 53 ; 0xf2eeb + push cx ; 51 ; 0xf2eec + push dx ; 52 ; 0xf2eed + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2eee ata.c:58 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2ef1 + mov es, dx ; 8e c2 ; 0xf2ef4 + mov es, [es:bx] ; 26 8e 07 ; 0xf2ef6 + mov dx, ax ; 89 c2 ; 0xf2ef9 ata.c:1199 + shr dx, 1 ; d1 ea ; 0xf2efb + mov ah, al ; 88 c4 ; 0xf2efd ata.c:1200 + and ah, 001h ; 80 e4 01 ; 0xf2eff + movzx bx, dl ; 0f b6 da ; 0xf2f02 ata.c:1202 + imul bx, bx, strict byte 00006h ; 6b db 06 ; 0xf2f05 + add bx, strict byte 0005eh ; 83 c3 5e ; 0xf2f08 + mov cx, word [es:bx+0027ah] ; 26 8b 8f 7a 02 ; 0xf2f0b + mov bx, word [es:bx+0027ch] ; 26 8b 9f 7c 02 ; 0xf2f10 ata.c:1203 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2f15 ata.c:1206 + mov AL, strict byte 00ah ; b0 0a ; 0xf2f18 + out DX, AL ; ee ; 0xf2f1a + test ah, ah ; 84 e4 ; 0xf2f1b ata.c:1207 + je short 02f24h ; 74 05 ; 0xf2f1d + mov ax, 000b0h ; b8 b0 00 ; 0xf2f1f + jmp short 02f27h ; eb 03 ; 0xf2f22 + mov ax, 000a0h ; b8 a0 00 ; 0xf2f24 + mov dx, cx ; 89 ca ; 0xf2f27 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2f29 + out DX, AL ; ee ; 0xf2f2c + mov dx, cx ; 89 ca ; 0xf2f2d ata.c:1208 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2f2f + mov AL, strict byte 008h ; b0 08 ; 0xf2f32 + out DX, AL ; ee ; 0xf2f34 + mov dx, cx ; 89 ca ; 0xf2f35 ata.c:1212 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2f37 + in AL, DX ; ec ; 0xf2f3a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2f3b + test AL, strict byte 080h ; a8 80 ; 0xf2f3d ata.c:1213 + jne short 02f35h ; 75 f4 ; 0xf2f3f + and AL, strict byte 0e9h ; 24 e9 ; 0xf2f41 ata.c:1217 + cmp AL, strict byte 040h ; 3c 40 ; 0xf2f43 + je short 02f52h ; 74 0b ; 0xf2f45 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2f47 ata.c:1221 + mov AL, strict byte 008h ; b0 08 ; 0xf2f4a + out DX, AL ; ee ; 0xf2f4c + mov ax, strict word 00001h ; b8 01 00 ; 0xf2f4d ata.c:1222 + jmp short 02f5ah ; eb 08 ; 0xf2f50 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2f52 ata.c:1226 + mov AL, strict byte 008h ; b0 08 ; 0xf2f55 + out DX, AL ; ee ; 0xf2f57 + xor ax, ax ; 31 c0 ; 0xf2f58 ata.c:1227 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf2f5a ata.c:1228 + pop dx ; 5a ; 0xf2f5d + pop cx ; 59 ; 0xf2f5e + pop bx ; 5b ; 0xf2f5f + pop bp ; 5d ; 0xf2f60 + retn ; c3 ; 0xf2f61 + ; disGetNextSymbol 0xf2f62 LB 0x7e3a -> off=0x0 cb=000000000000002a uValue=00000000000f1962 'set_diskette_current_cyl' +set_diskette_current_cyl: ; 0xf2f62 LB 0x2a + push bp ; 55 ; 0xf2f62 floppy.c:81 + mov bp, sp ; 89 e5 ; 0xf2f63 + push bx ; 53 ; 0xf2f65 + mov dh, al ; 88 c6 ; 0xf2f66 + cmp AL, strict byte 001h ; 3c 01 ; 0xf2f68 floppy.c:83 + jbe short 02f77h ; 76 0b ; 0xf2f6a + push 002c2h ; 68 c2 02 ; 0xf2f6c floppy.c:84 + push strict byte 00007h ; 6a 07 ; 0xf2f6f + call 01a68h ; e8 f4 ea ; 0xf2f71 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf2f74 + movzx bx, dh ; 0f b6 de ; 0xf2f77 floppy.c:85 + add bx, 00094h ; 81 c3 94 00 ; 0xf2f7a + mov ax, strict word 00040h ; b8 40 00 ; 0xf2f7e floppy.c:53 + mov es, ax ; 8e c0 ; 0xf2f81 + mov byte [es:bx], dl ; 26 88 17 ; 0xf2f83 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf2f86 floppy.c:86 + pop bx ; 5b ; 0xf2f89 + pop bp ; 5d ; 0xf2f8a + retn ; c3 ; 0xf2f8b + ; disGetNextSymbol 0xf2f8c LB 0x7e10 -> off=0x0 cb=0000000000000023 uValue=00000000000f198c 'floppy_wait_for_interrupt' +floppy_wait_for_interrupt: ; 0xf2f8c LB 0x23 + push bp ; 55 ; 0xf2f8c floppy.c:106 + mov bp, sp ; 89 e5 ; 0xf2f8d + push bx ; 53 ; 0xf2f8f + cli ; fa ; 0xf2f90 floppy.c:108 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f91 floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2f94 + mov es, ax ; 8e c0 ; 0xf2f97 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f99 + test AL, strict byte 080h ; a8 80 ; 0xf2f9c floppy.c:112 + je short 02fa4h ; 74 04 ; 0xf2f9e + and AL, strict byte 080h ; 24 80 ; 0xf2fa0 floppy.c:113 + jmp short 02fa9h ; eb 05 ; 0xf2fa2 + sti ; fb ; 0xf2fa4 floppy.c:114 + hlt ; f4 ; 0xf2fa5 + cli ; fa ; 0xf2fa6 + jmp short 02f91h ; eb e8 ; 0xf2fa7 floppy.c:115 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf2fa9 floppy.c:116 + pop bx ; 5b ; 0xf2fac + pop bp ; 5d ; 0xf2fad + retn ; c3 ; 0xf2fae + ; disGetNextSymbol 0xf2faf LB 0x7ded -> off=0x0 cb=0000000000000038 uValue=00000000000f19af 'floppy_wait_for_interrupt_or_timeout' +floppy_wait_for_interrupt_or_timeout: ; 0xf2faf LB 0x38 + push bp ; 55 ; 0xf2faf floppy.c:126 + mov bp, sp ; 89 e5 ; 0xf2fb0 + push bx ; 53 ; 0xf2fb2 + cli ; fa ; 0xf2fb3 floppy.c:128 + mov bx, strict word 00040h ; bb 40 00 ; 0xf2fb4 floppy.c:48 + mov es, bx ; 8e c3 ; 0xf2fb7 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2fb9 + test al, al ; 84 c0 ; 0xf2fbc floppy.c:132 + jne short 02fc3h ; 75 03 ; 0xf2fbe + sti ; fb ; 0xf2fc0 floppy.c:133 + jmp short 02fe1h ; eb 1e ; 0xf2fc1 floppy.c:134 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2fc3 floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2fc6 + mov es, ax ; 8e c0 ; 0xf2fc9 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2fcb + test AL, strict byte 080h ; a8 80 ; 0xf2fce floppy.c:138 + je short 02fdch ; 74 0a ; 0xf2fd0 + mov ah, al ; 88 c4 ; 0xf2fd2 floppy.c:139 + and ah, 07fh ; 80 e4 7f ; 0xf2fd4 + mov byte [es:bx], ah ; 26 88 27 ; 0xf2fd7 floppy.c:53 + jmp short 02fe1h ; eb 05 ; 0xf2fda floppy.c:140 + sti ; fb ; 0xf2fdc floppy.c:142 + hlt ; f4 ; 0xf2fdd + cli ; fa ; 0xf2fde + jmp short 02fb4h ; eb d3 ; 0xf2fdf floppy.c:143 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf2fe1 floppy.c:144 + pop bx ; 5b ; 0xf2fe4 + pop bp ; 5d ; 0xf2fe5 + retn ; c3 ; 0xf2fe6 + ; disGetNextSymbol 0xf2fe7 LB 0x7db5 -> off=0x0 cb=0000000000000042 uValue=00000000000f19e7 'floppy_reset_controller' +floppy_reset_controller: ; 0xf2fe7 LB 0x42 + push bp ; 55 ; 0xf2fe7 floppy.c:148 + mov bp, sp ; 89 e5 ; 0xf2fe8 + push bx ; 53 ; 0xf2fea + push cx ; 51 ; 0xf2feb + push dx ; 52 ; 0xf2fec + mov cx, ax ; 89 c1 ; 0xf2fed + mov dx, 003f2h ; ba f2 03 ; 0xf2fef floppy.c:153 + in AL, DX ; ec ; 0xf2ff2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2ff3 + mov bx, ax ; 89 c3 ; 0xf2ff5 + movzx ax, bl ; 0f b6 c3 ; 0xf2ff7 floppy.c:154 + and AL, strict byte 0fbh ; 24 fb ; 0xf2ffa + out DX, AL ; ee ; 0xf2ffc + mov al, bl ; 88 d8 ; 0xf2ffd floppy.c:155 + or AL, strict byte 004h ; 0c 04 ; 0xf2fff + out DX, AL ; ee ; 0xf3001 + mov dx, 003f4h ; ba f4 03 ; 0xf3002 floppy.c:159 + in AL, DX ; ec ; 0xf3005 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3006 + and AL, strict byte 0c0h ; 24 c0 ; 0xf3008 floppy.c:160 + cmp AL, strict byte 080h ; 3c 80 ; 0xf300a + jne short 03002h ; 75 f4 ; 0xf300c + mov bx, cx ; 89 cb ; 0xf300e floppy.c:163 + add bx, 00090h ; 81 c3 90 00 ; 0xf3010 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3014 floppy.c:48 + mov es, ax ; 8e c0 ; 0xf3017 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3019 + and AL, strict byte 0efh ; 24 ef ; 0xf301c floppy.c:164 + mov byte [es:bx], al ; 26 88 07 ; 0xf301e floppy.c:53 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf3021 floppy.c:167 + pop dx ; 5a ; 0xf3024 + pop cx ; 59 ; 0xf3025 + pop bx ; 5b ; 0xf3026 + pop bp ; 5d ; 0xf3027 + retn ; c3 ; 0xf3028 + ; disGetNextSymbol 0xf3029 LB 0x7d73 -> off=0x0 cb=0000000000000074 uValue=00000000000f1a29 'floppy_prepare_controller' +floppy_prepare_controller: ; 0xf3029 LB 0x74 + push bp ; 55 ; 0xf3029 floppy.c:169 + mov bp, sp ; 89 e5 ; 0xf302a + push bx ; 53 ; 0xf302c + push cx ; 51 ; 0xf302d + push dx ; 52 ; 0xf302e + push ax ; 50 ; 0xf302f + mov cx, ax ; 89 c1 ; 0xf3030 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf3032 floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3035 + mov es, ax ; 8e c0 ; 0xf3038 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf303a + and AL, strict byte 07fh ; 24 7f ; 0xf303d floppy.c:175 + mov byte [es:bx], al ; 26 88 07 ; 0xf303f floppy.c:53 + mov dx, 003f2h ; ba f2 03 ; 0xf3042 floppy.c:179 + in AL, DX ; ec ; 0xf3045 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3046 + and AL, strict byte 004h ; 24 04 ; 0xf3048 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf304a + test cx, cx ; 85 c9 ; 0xf304d floppy.c:180 + je short 03055h ; 74 04 ; 0xf304f + mov AL, strict byte 020h ; b0 20 ; 0xf3051 floppy.c:181 + jmp short 03057h ; eb 02 ; 0xf3053 floppy.c:182 + mov AL, strict byte 010h ; b0 10 ; 0xf3055 floppy.c:183 + or AL, strict byte 00ch ; 0c 0c ; 0xf3057 floppy.c:184 + or al, cl ; 08 c8 ; 0xf3059 floppy.c:185 + mov dx, 003f2h ; ba f2 03 ; 0xf305b floppy.c:186 + out DX, AL ; ee ; 0xf305e + mov bx, strict word 00040h ; bb 40 00 ; 0xf305f floppy.c:53 + mov es, bx ; 8e c3 ; 0xf3062 + mov byte [es:bx], 025h ; 26 c6 07 25 ; 0xf3064 + mov bx, 0008bh ; bb 8b 00 ; 0xf3068 floppy.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf306b + shr al, 006h ; c0 e8 06 ; 0xf306e floppy.c:193 + mov dx, 003f7h ; ba f7 03 ; 0xf3071 floppy.c:194 + out DX, AL ; ee ; 0xf3074 + mov dx, 003f4h ; ba f4 03 ; 0xf3075 floppy.c:198 + in AL, DX ; ec ; 0xf3078 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3079 + and AL, strict byte 0c0h ; 24 c0 ; 0xf307b floppy.c:199 + cmp AL, strict byte 080h ; 3c 80 ; 0xf307d + jne short 03075h ; 75 f4 ; 0xf307f + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf3081 floppy.c:201 + jne short 03095h ; 75 0e ; 0xf3085 + call 02f8ch ; e8 02 ff ; 0xf3087 floppy.c:212 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf308a floppy.c:53 + mov dx, strict word 00040h ; ba 40 00 ; 0xf308d + mov es, dx ; 8e c2 ; 0xf3090 + mov byte [es:bx], al ; 26 88 07 ; 0xf3092 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf3095 floppy.c:216 + pop dx ; 5a ; 0xf3098 + pop cx ; 59 ; 0xf3099 + pop bx ; 5b ; 0xf309a + pop bp ; 5d ; 0xf309b + retn ; c3 ; 0xf309c + ; disGetNextSymbol 0xf309d LB 0x7cff -> off=0x0 cb=0000000000000049 uValue=00000000000f1a9d 'floppy_media_known' +floppy_media_known: ; 0xf309d LB 0x49 + push bx ; 53 ; 0xf309d floppy.c:218 + push dx ; 52 ; 0xf309e + push bp ; 55 ; 0xf309f + mov bp, sp ; 89 e5 ; 0xf30a0 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf30a2 floppy.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf30a5 + mov es, dx ; 8e c2 ; 0xf30a8 + mov bh, byte [es:bx] ; 26 8a 3f ; 0xf30aa + mov bl, bh ; 88 fb ; 0xf30ad floppy.c:49 + test ax, ax ; 85 c0 ; 0xf30af floppy.c:224 + je short 030b5h ; 74 02 ; 0xf30b1 + shr bl, 1 ; d0 eb ; 0xf30b3 floppy.c:225 + and bl, 001h ; 80 e3 01 ; 0xf30b5 floppy.c:226 + jne short 030beh ; 75 04 ; 0xf30b8 floppy.c:227 + xor bh, bh ; 30 ff ; 0xf30ba floppy.c:228 + jmp short 030e0h ; eb 22 ; 0xf30bc + mov bx, 00090h ; bb 90 00 ; 0xf30be floppy.c:230 + test ax, ax ; 85 c0 ; 0xf30c1 floppy.c:231 + je short 030c8h ; 74 03 ; 0xf30c3 + mov bx, 00091h ; bb 91 00 ; 0xf30c5 floppy.c:232 + mov ax, strict word 00040h ; b8 40 00 ; 0xf30c8 floppy.c:48 + mov es, ax ; 8e c0 ; 0xf30cb + mov al, byte [es:bx] ; 26 8a 07 ; 0xf30cd + xor ah, ah ; 30 e4 ; 0xf30d0 floppy.c:235 + sar ax, 004h ; c1 f8 04 ; 0xf30d2 + and AL, strict byte 001h ; 24 01 ; 0xf30d5 + jne short 030ddh ; 75 04 ; 0xf30d7 floppy.c:236 + xor bx, bx ; 31 db ; 0xf30d9 floppy.c:237 + jmp short 030e0h ; eb 03 ; 0xf30db + mov bx, strict word 00001h ; bb 01 00 ; 0xf30dd floppy.c:240 + mov ax, bx ; 89 d8 ; 0xf30e0 floppy.c:241 + pop bp ; 5d ; 0xf30e2 + pop dx ; 5a ; 0xf30e3 + pop bx ; 5b ; 0xf30e4 + retn ; c3 ; 0xf30e5 + ; disGetNextSymbol 0xf30e6 LB 0x7cb6 -> off=0x0 cb=000000000000004e uValue=00000000000f1ae6 'floppy_read_id' +floppy_read_id: ; 0xf30e6 LB 0x4e + push bp ; 55 ; 0xf30e6 floppy.c:243 + mov bp, sp ; 89 e5 ; 0xf30e7 + push bx ; 53 ; 0xf30e9 + push dx ; 52 ; 0xf30ea + push si ; 56 ; 0xf30eb + mov bx, ax ; 89 c3 ; 0xf30ec + call 03029h ; e8 38 ff ; 0xf30ee floppy.c:250 + mov AL, strict byte 04ah ; b0 4a ; 0xf30f1 floppy.c:253 + mov dx, 003f5h ; ba f5 03 ; 0xf30f3 + out DX, AL ; ee ; 0xf30f6 + mov al, bl ; 88 d8 ; 0xf30f7 floppy.c:254 + out DX, AL ; ee ; 0xf30f9 + call 02f8ch ; e8 8f fe ; 0xf30fa floppy.c:269 + xor bx, bx ; 31 db ; 0xf30fd floppy.c:273 + jmp short 03106h ; eb 05 ; 0xf30ff + cmp bx, strict byte 00007h ; 83 fb 07 ; 0xf3101 + jnl short 0311ah ; 7d 14 ; 0xf3104 + mov dx, 003f5h ; ba f5 03 ; 0xf3106 floppy.c:274 + in AL, DX ; ec ; 0xf3109 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf310a + lea si, [bx+042h] ; 8d 77 42 ; 0xf310c + mov dx, strict word 00040h ; ba 40 00 ; 0xf310f floppy.c:53 + mov es, dx ; 8e c2 ; 0xf3112 + mov byte [es:si], al ; 26 88 04 ; 0xf3114 + inc bx ; 43 ; 0xf3117 floppy.c:274 + jmp short 03101h ; eb e7 ; 0xf3118 + mov bx, strict word 00042h ; bb 42 00 ; 0xf311a floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf311d + mov es, ax ; 8e c0 ; 0xf3120 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3122 + test AL, strict byte 0c0h ; a8 c0 ; 0xf3125 floppy.c:49 + db 00fh, 094h, 0c0h + ; sete al ; 0f 94 c0 ; 0xf3127 + xor ah, ah ; 30 e4 ; 0xf312a + lea sp, [bp-006h] ; 8d 66 fa ; 0xf312c floppy.c:280 + pop si ; 5e ; 0xf312f + pop dx ; 5a ; 0xf3130 + pop bx ; 5b ; 0xf3131 + pop bp ; 5d ; 0xf3132 + retn ; c3 ; 0xf3133 + ; disGetNextSymbol 0xf3134 LB 0x7c68 -> off=0x0 cb=0000000000000041 uValue=00000000000f1b34 'floppy_drive_recal' +floppy_drive_recal: ; 0xf3134 LB 0x41 + push bp ; 55 ; 0xf3134 floppy.c:282 + mov bp, sp ; 89 e5 ; 0xf3135 + push bx ; 53 ; 0xf3137 + push dx ; 52 ; 0xf3138 + push si ; 56 ; 0xf3139 + mov bx, ax ; 89 c3 ; 0xf313a + call 03029h ; e8 ea fe ; 0xf313c floppy.c:287 + mov AL, strict byte 007h ; b0 07 ; 0xf313f floppy.c:290 + mov dx, 003f5h ; ba f5 03 ; 0xf3141 + out DX, AL ; ee ; 0xf3144 + mov al, bl ; 88 d8 ; 0xf3145 floppy.c:291 + out DX, AL ; ee ; 0xf3147 + call 02f8ch ; e8 41 fe ; 0xf3148 floppy.c:310 + test bx, bx ; 85 db ; 0xf314b floppy.c:314 + je short 03156h ; 74 07 ; 0xf314d + or AL, strict byte 002h ; 0c 02 ; 0xf314f floppy.c:315 + mov bx, 00095h ; bb 95 00 ; 0xf3151 floppy.c:316 + jmp short 0315bh ; eb 05 ; 0xf3154 floppy.c:317 + or AL, strict byte 001h ; 0c 01 ; 0xf3156 floppy.c:318 + mov bx, 00094h ; bb 94 00 ; 0xf3158 floppy.c:319 + mov si, strict word 0003eh ; be 3e 00 ; 0xf315b floppy.c:53 + mov dx, strict word 00040h ; ba 40 00 ; 0xf315e + mov es, dx ; 8e c2 ; 0xf3161 + mov byte [es:si], al ; 26 88 04 ; 0xf3163 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3166 floppy.c:53 + mov ax, strict word 00001h ; b8 01 00 ; 0xf316a floppy.c:325 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf316d + pop si ; 5e ; 0xf3170 + pop dx ; 5a ; 0xf3171 + pop bx ; 5b ; 0xf3172 + pop bp ; 5d ; 0xf3173 + retn ; c3 ; 0xf3174 + ; disGetNextSymbol 0xf3175 LB 0x7c27 -> off=0x0 cb=00000000000000e4 uValue=00000000000f1b75 'floppy_media_sense' +floppy_media_sense: ; 0xf3175 LB 0xe4 + push bp ; 55 ; 0xf3175 floppy.c:328 + mov bp, sp ; 89 e5 ; 0xf3176 + push bx ; 53 ; 0xf3178 + push cx ; 51 ; 0xf3179 + push dx ; 52 ; 0xf317a + push si ; 56 ; 0xf317b + mov bx, ax ; 89 c3 ; 0xf317c + call 03134h ; e8 b3 ff ; 0xf317e floppy.c:334 + test ax, ax ; 85 c0 ; 0xf3181 + jne short 0318ah ; 75 05 ; 0xf3183 + xor dx, dx ; 31 d2 ; 0xf3185 floppy.c:335 + jmp near 0324eh ; e9 c4 00 ; 0xf3187 + mov ax, strict word 00010h ; b8 10 00 ; 0xf318a floppy.c:370 + call 0176ah ; e8 da e5 ; 0xf318d + test bx, bx ; 85 db ; 0xf3190 floppy.c:371 + jne short 0319bh ; 75 07 ; 0xf3192 + mov dl, al ; 88 c2 ; 0xf3194 floppy.c:372 + shr dl, 004h ; c0 ea 04 ; 0xf3196 + jmp short 031a0h ; eb 05 ; 0xf3199 floppy.c:373 + mov dl, al ; 88 c2 ; 0xf319b floppy.c:374 + and dl, 00fh ; 80 e2 0f ; 0xf319d + cmp dl, 001h ; 80 fa 01 ; 0xf31a0 floppy.c:375 + jne short 031aeh ; 75 09 ; 0xf31a3 + xor dl, dl ; 30 d2 ; 0xf31a5 floppy.c:377 + mov DH, strict byte 015h ; b6 15 ; 0xf31a7 floppy.c:378 + mov cx, strict word 00001h ; b9 01 00 ; 0xf31a9 floppy.c:379 + jmp short 031ech ; eb 3e ; 0xf31ac floppy.c:381 + cmp dl, 002h ; 80 fa 02 ; 0xf31ae + jne short 031b9h ; 75 06 ; 0xf31b1 + xor dl, dl ; 30 d2 ; 0xf31b3 floppy.c:383 + mov DH, strict byte 035h ; b6 35 ; 0xf31b5 floppy.c:384 + jmp short 031a9h ; eb f0 ; 0xf31b7 + cmp dl, 003h ; 80 fa 03 ; 0xf31b9 floppy.c:387 + jne short 031c4h ; 75 06 ; 0xf31bc + xor dl, dl ; 30 d2 ; 0xf31be floppy.c:389 + mov DH, strict byte 017h ; b6 17 ; 0xf31c0 floppy.c:390 + jmp short 031a9h ; eb e5 ; 0xf31c2 + cmp dl, 004h ; 80 fa 04 ; 0xf31c4 floppy.c:393 + jne short 031cfh ; 75 06 ; 0xf31c7 + xor dl, dl ; 30 d2 ; 0xf31c9 floppy.c:395 + mov DH, strict byte 017h ; b6 17 ; 0xf31cb floppy.c:396 + jmp short 031a9h ; eb da ; 0xf31cd + cmp dl, 005h ; 80 fa 05 ; 0xf31cf floppy.c:399 + jne short 031dah ; 75 06 ; 0xf31d2 + mov DL, strict byte 0cch ; b2 cc ; 0xf31d4 floppy.c:401 + mov DH, strict byte 0d7h ; b6 d7 ; 0xf31d6 floppy.c:402 + jmp short 031a9h ; eb cf ; 0xf31d8 + cmp dl, 00eh ; 80 fa 0e ; 0xf31da floppy.c:406 + je short 031e4h ; 74 05 ; 0xf31dd + cmp dl, 00fh ; 80 fa 0f ; 0xf31df + jne short 031e6h ; 75 02 ; 0xf31e2 + jmp short 031d4h ; eb ee ; 0xf31e4 + xor dl, dl ; 30 d2 ; 0xf31e6 floppy.c:414 + xor dh, dh ; 30 f6 ; 0xf31e8 floppy.c:415 + xor cx, cx ; 31 c9 ; 0xf31ea floppy.c:416 + mov si, 0008bh ; be 8b 00 ; 0xf31ec floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf31ef + mov es, ax ; 8e c0 ; 0xf31f2 + mov byte [es:si], dl ; 26 88 14 ; 0xf31f4 + mov ax, bx ; 89 d8 ; 0xf31f7 floppy.c:420 + call 030e6h ; e8 ea fe ; 0xf31f9 + test ax, ax ; 85 c0 ; 0xf31fc + jne short 03232h ; 75 32 ; 0xf31fe + mov al, dl ; 88 d0 ; 0xf3200 floppy.c:421 + and AL, strict byte 0c0h ; 24 c0 ; 0xf3202 + cmp AL, strict byte 080h ; 3c 80 ; 0xf3204 + je short 03232h ; 74 2a ; 0xf3206 + mov al, dl ; 88 d0 ; 0xf3208 floppy.c:425 + and AL, strict byte 0c0h ; 24 c0 ; 0xf320a + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf320c + je short 0321fh ; 74 0f ; 0xf320e + mov ah, dl ; 88 d4 ; 0xf3210 + and ah, 03fh ; 80 e4 3f ; 0xf3212 + cmp AL, strict byte 040h ; 3c 40 ; 0xf3215 + je short 0322bh ; 74 12 ; 0xf3217 + test al, al ; 84 c0 ; 0xf3219 + je short 03224h ; 74 07 ; 0xf321b + jmp short 031ech ; eb cd ; 0xf321d + and dl, 03fh ; 80 e2 3f ; 0xf321f floppy.c:427 + jmp short 031ech ; eb c8 ; 0xf3222 floppy.c:428 + mov dl, ah ; 88 e2 ; 0xf3224 floppy.c:430 + or dl, 040h ; 80 ca 40 ; 0xf3226 + jmp short 031ech ; eb c1 ; 0xf3229 floppy.c:431 + mov dl, ah ; 88 e2 ; 0xf322b floppy.c:433 + or dl, 080h ; 80 ca 80 ; 0xf322d + jmp short 031ech ; eb ba ; 0xf3230 floppy.c:437 + test bx, bx ; 85 db ; 0xf3232 floppy.c:439 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf3234 + movzx bx, al ; 0f b6 d8 ; 0xf3237 + add bx, 00090h ; 81 c3 90 00 ; 0xf323a + mov si, 0008bh ; be 8b 00 ; 0xf323e floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3241 + mov es, ax ; 8e c0 ; 0xf3244 + mov byte [es:si], dl ; 26 88 14 ; 0xf3246 + mov byte [es:bx], dh ; 26 88 37 ; 0xf3249 floppy.c:53 + mov dx, cx ; 89 ca ; 0xf324c floppy.c:446 + mov ax, dx ; 89 d0 ; 0xf324e floppy.c:447 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf3250 + pop si ; 5e ; 0xf3253 + pop dx ; 5a ; 0xf3254 + pop cx ; 59 ; 0xf3255 + pop bx ; 5b ; 0xf3256 + pop bp ; 5d ; 0xf3257 + retn ; c3 ; 0xf3258 + ; disGetNextSymbol 0xf3259 LB 0x7b43 -> off=0x0 cb=0000000000000024 uValue=00000000000f1c59 'floppy_drive_exists' +floppy_drive_exists: ; 0xf3259 LB 0x24 + push bp ; 55 ; 0xf3259 floppy.c:450 + mov bp, sp ; 89 e5 ; 0xf325a + push dx ; 52 ; 0xf325c + mov dx, ax ; 89 c2 ; 0xf325d + mov ax, strict word 00010h ; b8 10 00 ; 0xf325f floppy.c:456 + call 0176ah ; e8 05 e5 ; 0xf3262 + test dx, dx ; 85 d2 ; 0xf3265 floppy.c:457 + jne short 0326eh ; 75 05 ; 0xf3267 + shr al, 004h ; c0 e8 04 ; 0xf3269 floppy.c:458 + jmp short 03270h ; eb 02 ; 0xf326c floppy.c:459 + and AL, strict byte 00fh ; 24 0f ; 0xf326e floppy.c:460 + test al, al ; 84 c0 ; 0xf3270 floppy.c:461 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf3272 + xor ah, ah ; 30 e4 ; 0xf3275 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf3277 floppy.c:462 + pop dx ; 5a ; 0xf327a + pop bp ; 5d ; 0xf327b + retn ; c3 ; 0xf327c + ; disGetNextSymbol 0xf327d LB 0x7b1f -> off=0x23 cb=0000000000000984 uValue=00000000000f1ca0 'int13_diskette_function' + db 018h, 017h, 016h, 015h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 001h, 03ch, 0e0h, 032h, 05dh + db 033h, 07dh, 033h, 07dh, 033h, 07dh, 033h, 0f8h, 036h, 0b6h, 038h, 0a6h, 039h, 0e8h, 039h, 01ch + db 03ah, 08eh, 03ah +int13_diskette_function: ; 0xf32a0 LB 0x984 + push bp ; 55 ; 0xf32a0 floppy.c:477 + mov bp, sp ; 89 e5 ; 0xf32a1 + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf32a3 + or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf32a6 floppy.c:488 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32aa floppy.c:490 + shr ax, 008h ; c1 e8 08 ; 0xf32ad + cmp ax, strict word 00018h ; 3d 18 00 ; 0xf32b0 + jnbe near 03c01h ; 0f 87 4a 09 ; 0xf32b3 + push CS ; 0e ; 0xf32b7 + pop ES ; 07 ; 0xf32b8 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf32b9 + mov di, 0327dh ; bf 7d 32 ; 0xf32bc + repne scasb ; f2 ae ; 0xf32bf + sal cx, 1 ; d1 e1 ; 0xf32c1 + mov di, cx ; 89 cf ; 0xf32c3 + mov di, word [cs:di+03288h] ; 2e 8b bd 88 32 ; 0xf32c5 + mov dx, word [bp+016h] ; 8b 56 16 ; 0xf32ca + xor dh, dh ; 30 f6 ; 0xf32cd + mov ah, byte [bp+00eh] ; 8a 66 0e ; 0xf32cf + mov cx, word [bp+01ch] ; 8b 4e 1c ; 0xf32d2 + or cl, 001h ; 80 c9 01 ; 0xf32d5 + mov si, dx ; 89 d6 ; 0xf32d8 + or si, 00100h ; 81 ce 00 01 ; 0xf32da + jmp di ; ff e7 ; 0xf32de + mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf32e0 floppy.c:493 + cmp bl, 001h ; 80 fb 01 ; 0xf32e3 floppy.c:494 + jbe short 03302h ; 76 1a ; 0xf32e6 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32e8 floppy.c:495 + xor ah, ah ; 30 e4 ; 0xf32eb + or ah, 001h ; 80 cc 01 ; 0xf32ed + mov word [bp+016h], ax ; 89 46 16 ; 0xf32f0 + mov bx, strict word 00041h ; bb 41 00 ; 0xf32f3 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf32f6 + mov es, ax ; 8e c0 ; 0xf32f9 + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf32fb + jmp near 03aeeh ; e9 ec 07 ; 0xf32ff + mov ax, strict word 00010h ; b8 10 00 ; 0xf3302 floppy.c:501 + call 0176ah ; e8 62 e4 ; 0xf3305 + test bl, bl ; 84 db ; 0xf3308 floppy.c:502 + jne short 03313h ; 75 07 ; 0xf330a + mov dl, al ; 88 c2 ; 0xf330c floppy.c:503 + shr dl, 004h ; c0 ea 04 ; 0xf330e + jmp short 03318h ; eb 05 ; 0xf3311 floppy.c:504 + mov dl, al ; 88 c2 ; 0xf3313 floppy.c:505 + and dl, 00fh ; 80 e2 0f ; 0xf3315 + test dl, dl ; 84 d2 ; 0xf3318 floppy.c:506 + jne short 03336h ; 75 1a ; 0xf331a + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf331c floppy.c:507 + xor ah, ah ; 30 e4 ; 0xf331f + or ah, 080h ; 80 cc 80 ; 0xf3321 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3324 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3327 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf332a + mov es, ax ; 8e c0 ; 0xf332d + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf332f + jmp near 03aeeh ; e9 b8 07 ; 0xf3333 + mov si, strict word 0003eh ; be 3e 00 ; 0xf3336 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3339 + mov es, ax ; 8e c0 ; 0xf333c + mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf333e + xor al, al ; 30 c0 ; 0xf3342 floppy.c:516 + mov byte [bp+017h], al ; 88 46 17 ; 0xf3344 + mov si, strict word 00041h ; be 41 00 ; 0xf3347 floppy.c:53 + mov byte [es:si], al ; 26 88 04 ; 0xf334a + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf334d floppy.c:518 + movzx ax, bl ; 0f b6 c3 ; 0xf3351 floppy.c:519 + xor dx, dx ; 31 d2 ; 0xf3354 + call 02f62h ; e8 09 fc ; 0xf3356 + mov sp, bp ; 89 ec ; 0xf3359 floppy.c:520 + pop bp ; 5d ; 0xf335b + retn ; c3 ; 0xf335c + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf335d floppy.c:523 + mov bx, 00441h ; bb 41 04 ; 0xf3361 floppy.c:48 + xor ax, ax ; 31 c0 ; 0xf3364 + mov es, ax ; 8e c0 ; 0xf3366 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3368 + movzx bx, al ; 0f b6 d8 ; 0xf336b floppy.c:525 + sal bx, 008h ; c1 e3 08 ; 0xf336e + or dx, bx ; 09 da ; 0xf3371 + mov word [bp+016h], dx ; 89 56 16 ; 0xf3373 + test al, al ; 84 c0 ; 0xf3376 floppy.c:526 + je short 03359h ; 74 df ; 0xf3378 + jmp near 03aeeh ; e9 71 07 ; 0xf337a + mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf337d floppy.c:534 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf3380 floppy.c:535 + shr ax, 008h ; c1 e8 08 ; 0xf3383 + mov byte [bp-002h], al ; 88 46 fe ; 0xf3386 + mov al, byte [bp+014h] ; 8a 46 14 ; 0xf3389 floppy.c:536 + mov byte [bp-006h], al ; 88 46 fa ; 0xf338c + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf338f floppy.c:537 + shr ax, 008h ; c1 e8 08 ; 0xf3392 + mov byte [bp-004h], al ; 88 46 fc ; 0xf3395 + mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf3398 floppy.c:538 + cmp bl, 001h ; 80 fb 01 ; 0xf339b floppy.c:540 + jnbe short 033adh ; 77 0d ; 0xf339e + cmp AL, strict byte 001h ; 3c 01 ; 0xf33a0 + jnbe short 033adh ; 77 09 ; 0xf33a2 + test bh, bh ; 84 ff ; 0xf33a4 + je short 033adh ; 74 05 ; 0xf33a6 + cmp bh, 048h ; 80 ff 48 ; 0xf33a8 + jbe short 033e0h ; 76 33 ; 0xf33ab + mov bx, 00e06h ; bb 06 0e ; 0xf33ad floppy.c:542 + mov cx, ds ; 8c d9 ; 0xf33b0 + mov ax, strict word 00004h ; b8 04 00 ; 0xf33b2 + call 01a27h ; e8 6f e6 ; 0xf33b5 + push 002e7h ; 68 e7 02 ; 0xf33b8 + push 002ffh ; 68 ff 02 ; 0xf33bb + push strict byte 00004h ; 6a 04 ; 0xf33be + call 01a68h ; e8 a5 e6 ; 0xf33c0 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf33c3 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf33c6 floppy.c:543 + xor ah, ah ; 30 e4 ; 0xf33c9 + or ah, 001h ; 80 cc 01 ; 0xf33cb + mov word [bp+016h], ax ; 89 46 16 ; 0xf33ce + mov bx, strict word 00041h ; bb 41 00 ; 0xf33d1 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf33d4 + mov es, ax ; 8e c0 ; 0xf33d7 + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf33d9 + jmp near 0346bh ; e9 8b 00 ; 0xf33dd + movzx ax, bl ; 0f b6 c3 ; 0xf33e0 floppy.c:545 + call 03259h ; e8 73 fe ; 0xf33e3 + test ax, ax ; 85 c0 ; 0xf33e6 + je near 03502h ; 0f 84 16 01 ; 0xf33e8 + movzx cx, bl ; 0f b6 cb ; 0xf33ec floppy.c:561 + mov ax, cx ; 89 c8 ; 0xf33ef + call 0309dh ; e8 a9 fc ; 0xf33f1 + test ax, ax ; 85 c0 ; 0xf33f4 + jne short 0341ah ; 75 22 ; 0xf33f6 + mov ax, cx ; 89 c8 ; 0xf33f8 floppy.c:562 + call 03175h ; e8 78 fd ; 0xf33fa + test ax, ax ; 85 c0 ; 0xf33fd + jne short 0341ah ; 75 19 ; 0xf33ff + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3401 floppy.c:564 + xor ah, ah ; 30 e4 ; 0xf3404 + or ah, 00ch ; 80 cc 0c ; 0xf3406 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3409 + mov bx, strict word 00041h ; bb 41 00 ; 0xf340c floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf340f + mov es, ax ; 8e c0 ; 0xf3412 + mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3414 + jmp short 0346bh ; eb 51 ; 0xf3418 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf341a floppy.c:572 + shr ax, 008h ; c1 e8 08 ; 0xf341d + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf3420 + jne near 035b6h ; 0f 85 8f 01 ; 0xf3423 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3427 floppy.c:583 + shr dx, 00ch ; c1 ea 0c ; 0xf342a + mov ah, dl ; 88 d4 ; 0xf342d + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf342f floppy.c:584 + sal cx, 004h ; c1 e1 04 ; 0xf3432 + mov si, word [bp+010h] ; 8b 76 10 ; 0xf3435 floppy.c:585 + add si, cx ; 01 ce ; 0xf3438 + mov word [bp-008h], si ; 89 76 f8 ; 0xf343a + cmp cx, si ; 39 f1 ; 0xf343d floppy.c:587 + jbe short 03443h ; 76 02 ; 0xf343f + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf3441 floppy.c:589 + movzx cx, bh ; 0f b6 cf ; 0xf3443 floppy.c:591 + sal cx, 009h ; c1 e1 09 ; 0xf3446 + dec cx ; 49 ; 0xf3449 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf344a floppy.c:594 + add dx, cx ; 01 ca ; 0xf344d + cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf344f floppy.c:595 + jnc short 03472h ; 73 1e ; 0xf3452 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3454 floppy.c:596 + xor ah, ah ; 30 e4 ; 0xf3457 + or ah, 009h ; 80 cc 09 ; 0xf3459 + mov word [bp+016h], ax ; 89 46 16 ; 0xf345c + mov bx, strict word 00041h ; bb 41 00 ; 0xf345f floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3462 + mov es, ax ; 8e c0 ; 0xf3465 + mov byte [es:bx], 009h ; 26 c6 07 09 ; 0xf3467 + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf346b + jmp near 03aeeh ; e9 7c 06 ; 0xf346f + mov AL, strict byte 006h ; b0 06 ; 0xf3472 floppy.c:604 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3474 + out DX, AL ; ee ; 0xf3477 + xor al, al ; 30 c0 ; 0xf3478 floppy.c:607 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf347a + out DX, AL ; ee ; 0xf347d + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf347e floppy.c:608 + mov dx, strict word 00004h ; ba 04 00 ; 0xf3481 + out DX, AL ; ee ; 0xf3484 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3485 floppy.c:609 + shr dx, 008h ; c1 ea 08 ; 0xf3488 + mov al, dl ; 88 d0 ; 0xf348b + mov dx, strict word 00004h ; ba 04 00 ; 0xf348d + out DX, AL ; ee ; 0xf3490 + xor al, al ; 30 c0 ; 0xf3491 floppy.c:611 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3493 + out DX, AL ; ee ; 0xf3496 + mov al, cl ; 88 c8 ; 0xf3497 floppy.c:612 + mov dx, strict word 00005h ; ba 05 00 ; 0xf3499 + out DX, AL ; ee ; 0xf349c + shr cx, 008h ; c1 e9 08 ; 0xf349d floppy.c:613 + mov al, cl ; 88 c8 ; 0xf34a0 + out DX, AL ; ee ; 0xf34a2 + mov AL, strict byte 046h ; b0 46 ; 0xf34a3 floppy.c:621 + mov dx, strict word 0000bh ; ba 0b 00 ; 0xf34a5 + out DX, AL ; ee ; 0xf34a8 + mov al, ah ; 88 e0 ; 0xf34a9 floppy.c:625 + mov dx, 00081h ; ba 81 00 ; 0xf34ab + out DX, AL ; ee ; 0xf34ae + mov AL, strict byte 002h ; b0 02 ; 0xf34af floppy.c:628 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf34b1 + out DX, AL ; ee ; 0xf34b4 + movzx cx, bl ; 0f b6 cb ; 0xf34b5 floppy.c:633 + mov ax, cx ; 89 c8 ; 0xf34b8 + call 03029h ; e8 6c fb ; 0xf34ba + mov AL, strict byte 0e6h ; b0 e6 ; 0xf34bd floppy.c:636 + mov dx, 003f5h ; ba f5 03 ; 0xf34bf + out DX, AL ; ee ; 0xf34c2 + movzx dx, byte [bp-004h] ; 0f b6 56 fc ; 0xf34c3 floppy.c:637 + sal dx, 002h ; c1 e2 02 ; 0xf34c7 + movzx ax, bl ; 0f b6 c3 ; 0xf34ca + or ax, dx ; 09 d0 ; 0xf34cd + mov dx, 003f5h ; ba f5 03 ; 0xf34cf + out DX, AL ; ee ; 0xf34d2 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf34d3 floppy.c:638 + out DX, AL ; ee ; 0xf34d6 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf34d7 floppy.c:639 + out DX, AL ; ee ; 0xf34da + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf34db floppy.c:640 + out DX, AL ; ee ; 0xf34de + mov AL, strict byte 002h ; b0 02 ; 0xf34df floppy.c:641 + out DX, AL ; ee ; 0xf34e1 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf34e2 floppy.c:642 + movzx dx, bh ; 0f b6 d7 ; 0xf34e6 + add ax, dx ; 01 d0 ; 0xf34e9 + dec ax ; 48 ; 0xf34eb + mov dx, 003f5h ; ba f5 03 ; 0xf34ec + out DX, AL ; ee ; 0xf34ef + xor al, al ; 30 c0 ; 0xf34f0 floppy.c:643 + out DX, AL ; ee ; 0xf34f2 + mov AL, strict byte 0ffh ; b0 ff ; 0xf34f3 floppy.c:644 + out DX, AL ; ee ; 0xf34f5 + call 02fafh ; e8 b6 fa ; 0xf34f6 floppy.c:676 + test al, al ; 84 c0 ; 0xf34f9 floppy.c:677 + jne short 0351ch ; 75 1f ; 0xf34fb + mov ax, cx ; 89 c8 ; 0xf34fd floppy.c:679 + call 02fe7h ; e8 e5 fa ; 0xf34ff + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3502 floppy.c:78 + xor ah, ah ; 30 e4 ; 0xf3505 + or ah, 080h ; 80 cc 80 ; 0xf3507 + mov word [bp+016h], ax ; 89 46 16 ; 0xf350a + mov bx, strict word 00041h ; bb 41 00 ; 0xf350d + mov ax, strict word 00040h ; b8 40 00 ; 0xf3510 + mov es, ax ; 8e c0 ; 0xf3513 + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3515 + jmp near 0346bh ; e9 4f ff ; 0xf3519 + mov dx, 003f4h ; ba f4 03 ; 0xf351c floppy.c:689 + in AL, DX ; ec ; 0xf351f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3520 + and AL, strict byte 0c0h ; 24 c0 ; 0xf3522 floppy.c:690 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3524 + je short 03536h ; 74 0e ; 0xf3526 + push 002e7h ; 68 e7 02 ; 0xf3528 floppy.c:691 + push 0031ah ; 68 1a 03 ; 0xf352b + push strict byte 00007h ; 6a 07 ; 0xf352e + call 01a68h ; e8 35 e5 ; 0xf3530 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf3533 + xor cx, cx ; 31 c9 ; 0xf3536 floppy.c:694 + jmp short 0353fh ; eb 05 ; 0xf3538 + cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf353a + jnl short 03555h ; 7d 16 ; 0xf353d + mov dx, 003f5h ; ba f5 03 ; 0xf353f floppy.c:695 + in AL, DX ; ec ; 0xf3542 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3543 + mov si, cx ; 89 ce ; 0xf3545 + add si, strict byte 00042h ; 83 c6 42 ; 0xf3547 + mov dx, strict word 00040h ; ba 40 00 ; 0xf354a floppy.c:53 + mov es, dx ; 8e c2 ; 0xf354d + mov byte [es:si], al ; 26 88 04 ; 0xf354f + inc cx ; 41 ; 0xf3552 floppy.c:695 + jmp short 0353ah ; eb e5 ; 0xf3553 + mov si, strict word 00042h ; be 42 00 ; 0xf3555 floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3558 + mov es, ax ; 8e c0 ; 0xf355b + mov al, byte [es:si] ; 26 8a 04 ; 0xf355d + test AL, strict byte 0c0h ; a8 c0 ; 0xf3560 floppy.c:49 + je short 03584h ; 74 20 ; 0xf3562 + movzx ax, bl ; 0f b6 c3 ; 0xf3564 floppy.c:699 + call 02fe7h ; e8 7d fa ; 0xf3567 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf356a floppy.c:700 + xor ah, ah ; 30 e4 ; 0xf356d + or ah, 020h ; 80 cc 20 ; 0xf356f + mov word [bp+016h], ax ; 89 46 16 ; 0xf3572 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3575 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3578 + mov es, ax ; 8e c0 ; 0xf357b + mov byte [es:bx], 020h ; 26 c6 07 20 ; 0xf357d + jmp near 0346bh ; e9 e7 fe ; 0xf3581 + movzx ax, bh ; 0f b6 c7 ; 0xf3584 floppy.c:708 + sal ax, 009h ; c1 e0 09 ; 0xf3587 + cwd ; 99 ; 0xf358a + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf358b + sar ax, 1 ; d1 f8 ; 0xf358d + mov si, word [bp+010h] ; 8b 76 10 ; 0xf358f + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3592 + mov di, si ; 89 f7 ; 0xf3595 + mov cx, ax ; 89 c1 ; 0xf3597 + mov es, dx ; 8e c2 ; 0xf3599 + push DS ; 1e ; 0xf359b + mov ds, dx ; 8e da ; 0xf359c + rep movsw ; f3 a5 ; 0xf359e + pop DS ; 1f ; 0xf35a0 + movzx dx, byte [bp-002h] ; 0f b6 56 fe ; 0xf35a1 floppy.c:712 + movzx ax, bl ; 0f b6 c3 ; 0xf35a5 + call 02f62h ; e8 b7 f9 ; 0xf35a8 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf35ab floppy.c:714 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf35af floppy.c:715 + jmp near 03359h ; e9 a3 fd ; 0xf35b3 floppy.c:716 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf35b6 floppy.c:717 + shr ax, 008h ; c1 e8 08 ; 0xf35b9 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf35bc + jne near 036e3h ; 0f 85 20 01 ; 0xf35bf + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf35c3 floppy.c:728 + shr cx, 00ch ; c1 e9 0c ; 0xf35c6 + mov ah, cl ; 88 cc ; 0xf35c9 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf35cb floppy.c:729 + sal dx, 004h ; c1 e2 04 ; 0xf35ce + mov si, word [bp+010h] ; 8b 76 10 ; 0xf35d1 floppy.c:730 + add si, dx ; 01 d6 ; 0xf35d4 + mov word [bp-008h], si ; 89 76 f8 ; 0xf35d6 + cmp dx, si ; 39 f2 ; 0xf35d9 floppy.c:732 + jbe short 035dfh ; 76 02 ; 0xf35db + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf35dd floppy.c:734 + movzx cx, bh ; 0f b6 cf ; 0xf35df floppy.c:736 + sal cx, 009h ; c1 e1 09 ; 0xf35e2 + dec cx ; 49 ; 0xf35e5 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf35e6 floppy.c:739 + add dx, cx ; 01 ca ; 0xf35e9 + cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf35eb floppy.c:740 + jc near 03454h ; 0f 82 62 fe ; 0xf35ee + mov AL, strict byte 006h ; b0 06 ; 0xf35f2 floppy.c:749 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf35f4 + out DX, AL ; ee ; 0xf35f7 + xor al, al ; 30 c0 ; 0xf35f8 floppy.c:751 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf35fa + out DX, AL ; ee ; 0xf35fd + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf35fe floppy.c:752 + mov dx, strict word 00004h ; ba 04 00 ; 0xf3601 + out DX, AL ; ee ; 0xf3604 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3605 floppy.c:753 + shr dx, 008h ; c1 ea 08 ; 0xf3608 + mov al, dl ; 88 d0 ; 0xf360b + mov dx, strict word 00004h ; ba 04 00 ; 0xf360d + out DX, AL ; ee ; 0xf3610 + xor al, al ; 30 c0 ; 0xf3611 floppy.c:754 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3613 + out DX, AL ; ee ; 0xf3616 + mov al, cl ; 88 c8 ; 0xf3617 floppy.c:755 + mov dx, strict word 00005h ; ba 05 00 ; 0xf3619 + out DX, AL ; ee ; 0xf361c + shr cx, 008h ; c1 e9 08 ; 0xf361d floppy.c:756 + mov al, cl ; 88 c8 ; 0xf3620 + out DX, AL ; ee ; 0xf3622 + mov AL, strict byte 04ah ; b0 4a ; 0xf3623 floppy.c:763 + mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3625 + out DX, AL ; ee ; 0xf3628 + mov al, ah ; 88 e0 ; 0xf3629 floppy.c:766 + mov dx, 00081h ; ba 81 00 ; 0xf362b + out DX, AL ; ee ; 0xf362e + mov AL, strict byte 002h ; b0 02 ; 0xf362f floppy.c:769 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3631 + out DX, AL ; ee ; 0xf3634 + movzx cx, bl ; 0f b6 cb ; 0xf3635 floppy.c:774 + mov ax, cx ; 89 c8 ; 0xf3638 + call 03029h ; e8 ec f9 ; 0xf363a + mov AL, strict byte 0c5h ; b0 c5 ; 0xf363d floppy.c:777 + mov dx, 003f5h ; ba f5 03 ; 0xf363f + out DX, AL ; ee ; 0xf3642 + movzx dx, byte [bp-004h] ; 0f b6 56 fc ; 0xf3643 floppy.c:778 + sal dx, 002h ; c1 e2 02 ; 0xf3647 + movzx ax, bl ; 0f b6 c3 ; 0xf364a + or ax, dx ; 09 d0 ; 0xf364d + mov dx, 003f5h ; ba f5 03 ; 0xf364f + out DX, AL ; ee ; 0xf3652 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf3653 floppy.c:779 + out DX, AL ; ee ; 0xf3656 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3657 floppy.c:780 + out DX, AL ; ee ; 0xf365a + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf365b floppy.c:781 + out DX, AL ; ee ; 0xf365e + mov AL, strict byte 002h ; b0 02 ; 0xf365f floppy.c:782 + out DX, AL ; ee ; 0xf3661 + movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf3662 floppy.c:783 + movzx ax, bh ; 0f b6 c7 ; 0xf3666 + add ax, dx ; 01 d0 ; 0xf3669 + dec ax ; 48 ; 0xf366b + mov dx, 003f5h ; ba f5 03 ; 0xf366c + out DX, AL ; ee ; 0xf366f + xor al, al ; 30 c0 ; 0xf3670 floppy.c:784 + out DX, AL ; ee ; 0xf3672 + mov AL, strict byte 0ffh ; b0 ff ; 0xf3673 floppy.c:785 + out DX, AL ; ee ; 0xf3675 + call 02fafh ; e8 36 f9 ; 0xf3676 floppy.c:814 + test al, al ; 84 c0 ; 0xf3679 floppy.c:815 + je near 034fdh ; 0f 84 7e fe ; 0xf367b + mov dx, 003f4h ; ba f4 03 ; 0xf367f floppy.c:826 + in AL, DX ; ec ; 0xf3682 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3683 + and AL, strict byte 0c0h ; 24 c0 ; 0xf3685 floppy.c:827 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3687 + je short 03699h ; 74 0e ; 0xf3689 + push 002e7h ; 68 e7 02 ; 0xf368b floppy.c:828 + push 0031ah ; 68 1a 03 ; 0xf368e + push strict byte 00007h ; 6a 07 ; 0xf3691 + call 01a68h ; e8 d2 e3 ; 0xf3693 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf3696 + xor cx, cx ; 31 c9 ; 0xf3699 floppy.c:831 + jmp short 036a2h ; eb 05 ; 0xf369b + cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf369d + jnl short 036b8h ; 7d 16 ; 0xf36a0 + mov dx, 003f5h ; ba f5 03 ; 0xf36a2 floppy.c:832 + in AL, DX ; ec ; 0xf36a5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf36a6 + mov si, cx ; 89 ce ; 0xf36a8 + add si, strict byte 00042h ; 83 c6 42 ; 0xf36aa + mov dx, strict word 00040h ; ba 40 00 ; 0xf36ad floppy.c:53 + mov es, dx ; 8e c2 ; 0xf36b0 + mov byte [es:si], al ; 26 88 04 ; 0xf36b2 + inc cx ; 41 ; 0xf36b5 floppy.c:832 + jmp short 0369dh ; eb e5 ; 0xf36b6 + mov si, strict word 00042h ; be 42 00 ; 0xf36b8 floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf36bb + mov es, ax ; 8e c0 ; 0xf36be + mov al, byte [es:si] ; 26 8a 04 ; 0xf36c0 + test AL, strict byte 0c0h ; a8 c0 ; 0xf36c3 floppy.c:49 + je near 035a1h ; 0f 84 d8 fe ; 0xf36c5 + mov bx, strict word 00043h ; bb 43 00 ; 0xf36c9 floppy.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf36cc + test AL, strict byte 002h ; a8 02 ; 0xf36cf floppy.c:49 + je short 036dbh ; 74 08 ; 0xf36d1 + mov word [bp+016h], 00300h ; c7 46 16 00 03 ; 0xf36d3 floppy.c:839 + jmp near 03aeeh ; e9 13 04 ; 0xf36d8 + mov word [bp+016h], 00100h ; c7 46 16 00 01 ; 0xf36db floppy.c:842 + jmp near 03aeeh ; e9 0b 04 ; 0xf36e0 floppy.c:843 + movzx dx, byte [bp-002h] ; 0f b6 56 fe ; 0xf36e3 floppy.c:858 + movzx ax, bl ; 0f b6 c3 ; 0xf36e7 + call 02f62h ; e8 75 f8 ; 0xf36ea + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf36ed floppy.c:860 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf36f1 floppy.c:861 + jmp near 03359h ; e9 61 fc ; 0xf36f5 floppy.c:862 + mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf36f8 floppy.c:869 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf36fb floppy.c:870 + shr ax, 008h ; c1 e8 08 ; 0xf36fe + mov byte [bp-002h], al ; 88 46 fe ; 0xf3701 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf3704 floppy.c:871 + shr dx, 008h ; c1 ea 08 ; 0xf3707 + mov byte [bp-004h], dl ; 88 56 fc ; 0xf370a + mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf370d floppy.c:872 + cmp bl, 001h ; 80 fb 01 ; 0xf3710 floppy.c:874 + jnbe short 03727h ; 77 12 ; 0xf3713 + cmp dl, 001h ; 80 fa 01 ; 0xf3715 + jnbe short 03727h ; 77 0d ; 0xf3718 + cmp AL, strict byte 04fh ; 3c 4f ; 0xf371a + jnbe short 03727h ; 77 09 ; 0xf371c + test bh, bh ; 84 ff ; 0xf371e + je short 03727h ; 74 05 ; 0xf3720 + cmp bh, 012h ; 80 ff 12 ; 0xf3722 + jbe short 03742h ; 76 1b ; 0xf3725 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3727 floppy.c:876 + xor ah, ah ; 30 e4 ; 0xf372a + or ah, 001h ; 80 cc 01 ; 0xf372c + mov word [bp+016h], ax ; 89 46 16 ; 0xf372f + mov si, strict word 00041h ; be 41 00 ; 0xf3732 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3735 + mov es, ax ; 8e c0 ; 0xf3738 + mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf373a + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf373e floppy.c:878 + movzx ax, bl ; 0f b6 c3 ; 0xf3742 floppy.c:882 + call 03259h ; e8 11 fb ; 0xf3745 + test ax, ax ; 85 c0 ; 0xf3748 + jne short 03766h ; 75 1a ; 0xf374a + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf374c floppy.c:883 + xor ah, ah ; 30 e4 ; 0xf374f + or ah, 080h ; 80 cc 80 ; 0xf3751 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3754 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3757 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf375a + mov es, ax ; 8e c0 ; 0xf375d + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf375f + jmp near 03aeeh ; e9 88 03 ; 0xf3763 + movzx cx, bl ; 0f b6 cb ; 0xf3766 floppy.c:890 + mov ax, cx ; 89 c8 ; 0xf3769 + call 0309dh ; e8 2f f9 ; 0xf376b + test ax, ax ; 85 c0 ; 0xf376e + jne short 0377dh ; 75 0b ; 0xf3770 + mov ax, cx ; 89 c8 ; 0xf3772 floppy.c:891 + call 03175h ; e8 fe f9 ; 0xf3774 + test ax, ax ; 85 c0 ; 0xf3777 + je near 03401h ; 0f 84 84 fc ; 0xf3779 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf377d floppy.c:902 + shr dx, 00ch ; c1 ea 0c ; 0xf3780 + mov ah, dl ; 88 d4 ; 0xf3783 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf3785 floppy.c:903 + sal cx, 004h ; c1 e1 04 ; 0xf3788 + mov si, word [bp+010h] ; 8b 76 10 ; 0xf378b floppy.c:904 + add si, cx ; 01 ce ; 0xf378e + mov word [bp-008h], si ; 89 76 f8 ; 0xf3790 + cmp cx, si ; 39 f1 ; 0xf3793 floppy.c:906 + jbe short 03799h ; 76 02 ; 0xf3795 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf3797 floppy.c:908 + movzx cx, bh ; 0f b6 cf ; 0xf3799 floppy.c:910 + sal cx, 002h ; c1 e1 02 ; 0xf379c + dec cx ; 49 ; 0xf379f + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf37a0 floppy.c:913 + add dx, cx ; 01 ca ; 0xf37a3 + cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf37a5 floppy.c:914 + jc near 03454h ; 0f 82 a8 fc ; 0xf37a8 + mov AL, strict byte 006h ; b0 06 ; 0xf37ac floppy.c:922 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf37ae + out DX, AL ; ee ; 0xf37b1 + xor al, al ; 30 c0 ; 0xf37b2 floppy.c:923 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf37b4 + out DX, AL ; ee ; 0xf37b7 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf37b8 floppy.c:924 + mov dx, strict word 00004h ; ba 04 00 ; 0xf37bb + out DX, AL ; ee ; 0xf37be + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf37bf floppy.c:925 + shr dx, 008h ; c1 ea 08 ; 0xf37c2 + mov al, dl ; 88 d0 ; 0xf37c5 + mov dx, strict word 00004h ; ba 04 00 ; 0xf37c7 + out DX, AL ; ee ; 0xf37ca + xor al, al ; 30 c0 ; 0xf37cb floppy.c:926 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf37cd + out DX, AL ; ee ; 0xf37d0 + mov al, cl ; 88 c8 ; 0xf37d1 floppy.c:927 + mov dx, strict word 00005h ; ba 05 00 ; 0xf37d3 + out DX, AL ; ee ; 0xf37d6 + shr cx, 008h ; c1 e9 08 ; 0xf37d7 floppy.c:928 + mov al, cl ; 88 c8 ; 0xf37da + out DX, AL ; ee ; 0xf37dc + mov AL, strict byte 04ah ; b0 4a ; 0xf37dd floppy.c:931 + mov dx, strict word 0000bh ; ba 0b 00 ; 0xf37df + out DX, AL ; ee ; 0xf37e2 + mov al, ah ; 88 e0 ; 0xf37e3 floppy.c:933 + mov dx, 00081h ; ba 81 00 ; 0xf37e5 + out DX, AL ; ee ; 0xf37e8 + mov AL, strict byte 002h ; b0 02 ; 0xf37e9 floppy.c:934 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf37eb + out DX, AL ; ee ; 0xf37ee + movzx cx, bl ; 0f b6 cb ; 0xf37ef floppy.c:937 + mov ax, cx ; 89 c8 ; 0xf37f2 + call 03029h ; e8 32 f8 ; 0xf37f4 + mov AL, strict byte 00fh ; b0 0f ; 0xf37f7 floppy.c:940 + mov dx, 003f5h ; ba f5 03 ; 0xf37f9 + out DX, AL ; ee ; 0xf37fc + movzx dx, byte [bp-004h] ; 0f b6 56 fc ; 0xf37fd floppy.c:941 + sal dx, 002h ; c1 e2 02 ; 0xf3801 + movzx ax, bl ; 0f b6 c3 ; 0xf3804 + or dx, ax ; 09 c2 ; 0xf3807 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf3809 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf380c + mov dx, 003f5h ; ba f5 03 ; 0xf380f + out DX, AL ; ee ; 0xf3812 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf3813 floppy.c:942 + out DX, AL ; ee ; 0xf3816 + mov AL, strict byte 04dh ; b0 4d ; 0xf3817 floppy.c:945 + out DX, AL ; ee ; 0xf3819 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf381a floppy.c:946 + out DX, AL ; ee ; 0xf381d + mov AL, strict byte 002h ; b0 02 ; 0xf381e floppy.c:947 + out DX, AL ; ee ; 0xf3820 + mov al, bh ; 88 f8 ; 0xf3821 floppy.c:948 + out DX, AL ; ee ; 0xf3823 + xor al, bh ; 30 f8 ; 0xf3824 floppy.c:949 + out DX, AL ; ee ; 0xf3826 + mov AL, strict byte 0f6h ; b0 f6 ; 0xf3827 floppy.c:950 + out DX, AL ; ee ; 0xf3829 + call 02fafh ; e8 82 f7 ; 0xf382a floppy.c:978 + test al, al ; 84 c0 ; 0xf382d floppy.c:979 + jne short 03839h ; 75 08 ; 0xf382f + mov ax, cx ; 89 c8 ; 0xf3831 floppy.c:980 + call 02fe7h ; e8 b1 f7 ; 0xf3833 + jmp near 0374ch ; e9 13 ff ; 0xf3836 floppy.c:78 + mov dx, 003f4h ; ba f4 03 ; 0xf3839 floppy.c:989 + in AL, DX ; ec ; 0xf383c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf383d + and AL, strict byte 0c0h ; 24 c0 ; 0xf383f floppy.c:990 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3841 + je short 03853h ; 74 0e ; 0xf3843 + push 002e7h ; 68 e7 02 ; 0xf3845 floppy.c:991 + push 0031ah ; 68 1a 03 ; 0xf3848 + push strict byte 00007h ; 6a 07 ; 0xf384b + call 01a68h ; e8 18 e2 ; 0xf384d + add sp, strict byte 00006h ; 83 c4 06 ; 0xf3850 + xor cx, cx ; 31 c9 ; 0xf3853 floppy.c:994 + jmp short 0385ch ; eb 05 ; 0xf3855 + cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3857 + jnl short 03872h ; 7d 16 ; 0xf385a + mov dx, 003f5h ; ba f5 03 ; 0xf385c floppy.c:995 + in AL, DX ; ec ; 0xf385f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3860 + mov si, cx ; 89 ce ; 0xf3862 + add si, strict byte 00042h ; 83 c6 42 ; 0xf3864 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3867 floppy.c:53 + mov es, dx ; 8e c2 ; 0xf386a + mov byte [es:si], al ; 26 88 04 ; 0xf386c + inc cx ; 41 ; 0xf386f floppy.c:995 + jmp short 03857h ; eb e5 ; 0xf3870 + mov si, strict word 00042h ; be 42 00 ; 0xf3872 floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3875 + mov es, ax ; 8e c0 ; 0xf3878 + mov al, byte [es:si] ; 26 8a 04 ; 0xf387a + test AL, strict byte 0c0h ; a8 c0 ; 0xf387d floppy.c:49 + je short 0389bh ; 74 1a ; 0xf387f + mov si, strict word 00043h ; be 43 00 ; 0xf3881 floppy.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf3884 + test AL, strict byte 002h ; a8 02 ; 0xf3887 floppy.c:49 + jne near 036d3h ; 0f 85 46 fe ; 0xf3889 + push 002e7h ; 68 e7 02 ; 0xf388d floppy.c:1006 + push 0032eh ; 68 2e 03 ; 0xf3890 + push strict byte 00007h ; 6a 07 ; 0xf3893 + call 01a68h ; e8 d0 e1 ; 0xf3895 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf3898 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf389b floppy.c:1010 + mov si, strict word 00041h ; be 41 00 ; 0xf389f floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf38a2 + mov es, ax ; 8e c0 ; 0xf38a5 + mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf38a7 + movzx ax, bl ; 0f b6 c3 ; 0xf38ab floppy.c:1012 + xor dx, dx ; 31 d2 ; 0xf38ae + call 02f62h ; e8 af f6 ; 0xf38b0 + jmp near 035afh ; e9 f9 fc ; 0xf38b3 + mov bl, ah ; 88 e3 ; 0xf38b6 floppy.c:1019 + cmp ah, 001h ; 80 fc 01 ; 0xf38b8 floppy.c:1021 + jbe short 038dah ; 76 1d ; 0xf38bb + xor ax, ax ; 31 c0 ; 0xf38bd floppy.c:1022 + mov word [bp+016h], ax ; 89 46 16 ; 0xf38bf + mov word [bp+010h], ax ; 89 46 10 ; 0xf38c2 floppy.c:1023 + mov word [bp+014h], ax ; 89 46 14 ; 0xf38c5 floppy.c:1024 + mov word [bp+012h], ax ; 89 46 12 ; 0xf38c8 floppy.c:1025 + mov word [bp+006h], ax ; 89 46 06 ; 0xf38cb floppy.c:1026 + mov word [bp+008h], ax ; 89 46 08 ; 0xf38ce floppy.c:1027 + movzx ax, bh ; 0f b6 c7 ; 0xf38d1 floppy.c:1028 + mov word [bp+012h], ax ; 89 46 12 ; 0xf38d4 + jmp near 039fch ; e9 22 01 ; 0xf38d7 + mov ax, strict word 00010h ; b8 10 00 ; 0xf38da floppy.c:1029 + call 0176ah ; e8 8a de ; 0xf38dd + mov dl, al ; 88 c2 ; 0xf38e0 + xor bh, bh ; 30 ff ; 0xf38e2 floppy.c:1035 + test AL, strict byte 0f0h ; a8 f0 ; 0xf38e4 floppy.c:1036 + je short 038eah ; 74 02 ; 0xf38e6 + mov BH, strict byte 001h ; b7 01 ; 0xf38e8 floppy.c:1037 + test dl, 00fh ; f6 c2 0f ; 0xf38ea floppy.c:1038 + je short 038f1h ; 74 02 ; 0xf38ed + db 0feh, 0c7h + ; inc bh ; fe c7 ; 0xf38ef floppy.c:1039 + test bl, bl ; 84 db ; 0xf38f1 floppy.c:1041 + jne short 038fah ; 75 05 ; 0xf38f3 + shr dl, 004h ; c0 ea 04 ; 0xf38f5 floppy.c:1042 + jmp short 038fdh ; eb 03 ; 0xf38f8 floppy.c:1043 + and dl, 00fh ; 80 e2 0f ; 0xf38fa floppy.c:1044 + mov byte [bp+011h], 000h ; c6 46 11 00 ; 0xf38fd floppy.c:1047 + movzx ax, dl ; 0f b6 c2 ; 0xf3901 + mov word [bp+010h], ax ; 89 46 10 ; 0xf3904 + mov word [bp+016h], strict word 00000h ; c7 46 16 00 00 ; 0xf3907 floppy.c:1048 + mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf390c floppy.c:1050 + xor cl, cl ; 30 c9 ; 0xf390f + movzx ax, bh ; 0f b6 c7 ; 0xf3911 + or cx, ax ; 09 c1 ; 0xf3914 + mov word [bp+012h], cx ; 89 4e 12 ; 0xf3916 + mov ax, cx ; 89 c8 ; 0xf3919 floppy.c:1051 + xor ah, ch ; 30 ec ; 0xf391b + or ah, 001h ; 80 cc 01 ; 0xf391d + mov word [bp+012h], ax ; 89 46 12 ; 0xf3920 + cmp dl, 003h ; 80 fa 03 ; 0xf3923 floppy.c:1053 + jc short 0393dh ; 72 15 ; 0xf3926 + jbe short 03964h ; 76 3a ; 0xf3928 + cmp dl, 005h ; 80 fa 05 ; 0xf392a + jc short 0396bh ; 72 3c ; 0xf392d + jbe short 03972h ; 76 41 ; 0xf392f + cmp dl, 00fh ; 80 fa 0f ; 0xf3931 + je short 03980h ; 74 4a ; 0xf3934 + cmp dl, 00eh ; 80 fa 0e ; 0xf3936 + je short 03979h ; 74 3e ; 0xf3939 + jmp short 03987h ; eb 4a ; 0xf393b + cmp dl, 002h ; 80 fa 02 ; 0xf393d + je short 0395dh ; 74 1b ; 0xf3940 + cmp dl, 001h ; 80 fa 01 ; 0xf3942 + je short 03956h ; 74 0f ; 0xf3945 + test dl, dl ; 84 d2 ; 0xf3947 + jne short 03987h ; 75 3c ; 0xf3949 + mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf394b floppy.c:1055 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf3950 floppy.c:1056 + jmp short 03995h ; eb 3f ; 0xf3954 floppy.c:1057 + mov word [bp+014h], 02709h ; c7 46 14 09 27 ; 0xf3956 floppy.c:1060 + jmp short 03995h ; eb 38 ; 0xf395b floppy.c:1061 + mov word [bp+014h], 04f0fh ; c7 46 14 0f 4f ; 0xf395d floppy.c:1064 + jmp short 03995h ; eb 31 ; 0xf3962 floppy.c:1065 + mov word [bp+014h], 04f09h ; c7 46 14 09 4f ; 0xf3964 floppy.c:1068 + jmp short 03995h ; eb 2a ; 0xf3969 floppy.c:1069 + mov word [bp+014h], 04f12h ; c7 46 14 12 4f ; 0xf396b floppy.c:1072 + jmp short 03995h ; eb 23 ; 0xf3970 floppy.c:1073 + mov word [bp+014h], 04f24h ; c7 46 14 24 4f ; 0xf3972 floppy.c:1076 + jmp short 03995h ; eb 1c ; 0xf3977 floppy.c:1077 + mov word [bp+014h], 0fe3fh ; c7 46 14 3f fe ; 0xf3979 floppy.c:1080 + jmp short 03995h ; eb 15 ; 0xf397e floppy.c:1081 + mov word [bp+014h], 0feffh ; c7 46 14 ff fe ; 0xf3980 floppy.c:1084 + jmp short 03995h ; eb 0e ; 0xf3985 floppy.c:1085 + push 002e7h ; 68 e7 02 ; 0xf3987 floppy.c:1089 + push 0033fh ; 68 3f 03 ; 0xf398a + push strict byte 00007h ; 6a 07 ; 0xf398d + call 01a68h ; e8 d6 e0 ; 0xf398f + add sp, strict byte 00006h ; 83 c4 06 ; 0xf3992 + mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3995 floppy.c:1093 + movzx ax, dl ; 0f b6 c2 ; 0xf399a floppy.c:1094 + call 03c24h ; e8 84 02 ; 0xf399d + mov word [bp+008h], ax ; 89 46 08 ; 0xf39a0 + jmp near 035afh ; e9 09 fc ; 0xf39a3 + mov bl, ah ; 88 e3 ; 0xf39a6 floppy.c:1101 + cmp ah, 001h ; 80 fc 01 ; 0xf39a8 floppy.c:1102 + jbe short 039b2h ; 76 05 ; 0xf39ab + mov word [bp+016h], dx ; 89 56 16 ; 0xf39ad floppy.c:1103 + jmp short 039fch ; eb 4a ; 0xf39b0 + mov ax, strict word 00010h ; b8 10 00 ; 0xf39b2 floppy.c:1109 + call 0176ah ; e8 b2 dd ; 0xf39b5 + test bl, bl ; 84 db ; 0xf39b8 floppy.c:1110 + jne short 039c3h ; 75 07 ; 0xf39ba + mov dl, al ; 88 c2 ; 0xf39bc floppy.c:1111 + shr dl, 004h ; c0 ea 04 ; 0xf39be + jmp short 039c8h ; eb 05 ; 0xf39c1 floppy.c:1112 + mov dl, al ; 88 c2 ; 0xf39c3 floppy.c:1113 + and dl, 00fh ; 80 e2 0f ; 0xf39c5 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf39c8 floppy.c:1114 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf39cc + xor ah, ah ; 30 e4 ; 0xf39cf + test dl, dl ; 84 d2 ; 0xf39d1 floppy.c:1115 + je short 039e2h ; 74 0d ; 0xf39d3 + cmp dl, 001h ; 80 fa 01 ; 0xf39d5 floppy.c:1116 + jbe short 039dfh ; 76 05 ; 0xf39d8 + or ah, 002h ; 80 cc 02 ; 0xf39da floppy.c:1118 + jmp short 039e2h ; eb 03 ; 0xf39dd floppy.c:1119 + or ah, 001h ; 80 cc 01 ; 0xf39df floppy.c:1120 + mov word [bp+016h], ax ; 89 46 16 ; 0xf39e2 + jmp near 03359h ; e9 71 f9 ; 0xf39e5 floppy.c:1123 + cmp ah, 001h ; 80 fc 01 ; 0xf39e8 floppy.c:1128 + jbe short 03a02h ; 76 15 ; 0xf39eb + mov word [bp+016h], si ; 89 76 16 ; 0xf39ed floppy.c:1129 + mov bx, strict word 00041h ; bb 41 00 ; 0xf39f0 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf39f3 + mov es, ax ; 8e c0 ; 0xf39f6 + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf39f8 + mov word [bp+01ch], cx ; 89 4e 1c ; 0xf39fc + jmp near 03359h ; e9 57 f9 ; 0xf39ff + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3a02 floppy.c:1135 + xor ah, ah ; 30 e4 ; 0xf3a05 + or ah, 006h ; 80 cc 06 ; 0xf3a07 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3a0a + mov bx, strict word 00041h ; bb 41 00 ; 0xf3a0d floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3a10 + mov es, ax ; 8e c0 ; 0xf3a13 + mov byte [es:bx], 006h ; 26 c6 07 06 ; 0xf3a15 + jmp near 03aeeh ; e9 d2 00 ; 0xf3a19 + mov bl, ah ; 88 e3 ; 0xf3a1c floppy.c:1144 + mov dl, byte [bp+016h] ; 8a 56 16 ; 0xf3a1e floppy.c:1152 + cmp ah, 001h ; 80 fc 01 ; 0xf3a21 floppy.c:1156 + jnbe short 039edh ; 77 c7 ; 0xf3a24 + movzx ax, bl ; 0f b6 c3 ; 0xf3a26 floppy.c:1164 + call 03259h ; e8 2d f8 ; 0xf3a29 + test ax, ax ; 85 c0 ; 0xf3a2c + je near 0374ch ; 0f 84 1a fd ; 0xf3a2e + test bl, bl ; 84 db ; 0xf3a32 floppy.c:1172 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf3a34 + movzx bx, al ; 0f b6 d8 ; 0xf3a37 + add bx, 00090h ; 81 c3 90 00 ; 0xf3a3a + mov word [bp-008h], bx ; 89 5e f8 ; 0xf3a3e + mov ax, strict word 00040h ; b8 40 00 ; 0xf3a41 floppy.c:48 + mov es, ax ; 8e c0 ; 0xf3a44 + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf3a46 + and bl, 00fh ; 80 e3 0f ; 0xf3a49 floppy.c:1176 + cmp dl, 002h ; 80 fa 02 ; 0xf3a4c floppy.c:1178 + jc short 03a60h ; 72 0f ; 0xf3a4f + jbe short 03a6dh ; 76 1a ; 0xf3a51 + cmp dl, 004h ; 80 fa 04 ; 0xf3a53 + je short 03a68h ; 74 10 ; 0xf3a56 + cmp dl, 003h ; 80 fa 03 ; 0xf3a58 + je short 03a72h ; 74 15 ; 0xf3a5b + jmp near 032e8h ; e9 88 f8 ; 0xf3a5d + cmp dl, 001h ; 80 fa 01 ; 0xf3a60 + je short 03a68h ; 74 03 ; 0xf3a63 + jmp near 032e8h ; e9 80 f8 ; 0xf3a65 + or bl, 090h ; 80 cb 90 ; 0xf3a68 floppy.c:1181 + jmp short 03a75h ; eb 08 ; 0xf3a6b floppy.c:1182 + or bl, 070h ; 80 cb 70 ; 0xf3a6d floppy.c:1185 + jmp short 03a75h ; eb 03 ; 0xf3a70 floppy.c:1186 + or bl, 010h ; 80 cb 10 ; 0xf3a72 floppy.c:1189 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3a75 floppy.c:53 + mov es, ax ; 8e c0 ; 0xf3a78 + mov si, word [bp-008h] ; 8b 76 f8 ; 0xf3a7a + mov byte [es:si], bl ; 26 88 1c ; 0xf3a7d + xor al, al ; 30 c0 ; 0xf3a80 floppy.c:1208 + mov byte [bp+017h], al ; 88 46 17 ; 0xf3a82 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3a85 floppy.c:53 + mov byte [es:bx], al ; 26 88 07 ; 0xf3a88 + jmp near 035afh ; e9 21 fb ; 0xf3a8b + mov bl, ah ; 88 e3 ; 0xf3a8e floppy.c:1218 + mov dl, byte [bp+014h] ; 8a 56 14 ; 0xf3a90 floppy.c:1220 + mov bh, dl ; 88 d7 ; 0xf3a93 floppy.c:1221 + and bh, 03fh ; 80 e7 3f ; 0xf3a95 + xor dh, dh ; 30 f6 ; 0xf3a98 floppy.c:1222 + sar dx, 006h ; c1 fa 06 ; 0xf3a9a + sal dx, 008h ; c1 e2 08 ; 0xf3a9d + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf3aa0 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf3aa3 + shr dx, 008h ; c1 ea 08 ; 0xf3aa6 + add dx, word [bp-00ch] ; 03 56 f4 ; 0xf3aa9 + mov byte [bp-002h], dl ; 88 56 fe ; 0xf3aac + cmp ah, 001h ; 80 fc 01 ; 0xf3aaf floppy.c:1227 + jnbe near 039edh ; 0f 87 37 ff ; 0xf3ab2 + movzx ax, bl ; 0f b6 c3 ; 0xf3ab6 floppy.c:1235 + call 03259h ; e8 9d f7 ; 0xf3ab9 + test ax, ax ; 85 c0 ; 0xf3abc + je near 0374ch ; 0f 84 8a fc ; 0xf3abe + movzx cx, bl ; 0f b6 cb ; 0xf3ac2 floppy.c:1243 + mov ax, cx ; 89 c8 ; 0xf3ac5 + call 0309dh ; e8 d3 f5 ; 0xf3ac7 + test ax, ax ; 85 c0 ; 0xf3aca + jne short 03af5h ; 75 27 ; 0xf3acc + mov ax, cx ; 89 c8 ; 0xf3ace floppy.c:1244 + call 03175h ; e8 a2 f6 ; 0xf3ad0 + test ax, ax ; 85 c0 ; 0xf3ad3 + jne short 03af5h ; 75 1e ; 0xf3ad5 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3ad7 floppy.c:1245 + xor ah, ah ; 30 e4 ; 0xf3ada + or ah, 00ch ; 80 cc 0c ; 0xf3adc + mov word [bp+016h], ax ; 89 46 16 ; 0xf3adf + mov bx, strict word 00041h ; bb 41 00 ; 0xf3ae2 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3ae5 + mov es, ax ; 8e c0 ; 0xf3ae8 + mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3aea + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3aee + jmp near 03359h ; e9 64 f8 ; 0xf3af2 + mov ax, strict word 00010h ; b8 10 00 ; 0xf3af5 floppy.c:1253 + call 0176ah ; e8 6f dc ; 0xf3af8 + test bl, bl ; 84 db ; 0xf3afb floppy.c:1254 + jne short 03b06h ; 75 07 ; 0xf3afd + mov dl, al ; 88 c2 ; 0xf3aff floppy.c:1255 + shr dl, 004h ; c0 ea 04 ; 0xf3b01 + jmp short 03b0bh ; eb 05 ; 0xf3b04 floppy.c:1256 + mov dl, al ; 88 c2 ; 0xf3b06 floppy.c:1257 + and dl, 00fh ; 80 e2 0f ; 0xf3b08 + test bl, bl ; 84 db ; 0xf3b0b floppy.c:1260 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf3b0d + movzx si, al ; 0f b6 f0 ; 0xf3b10 + add si, 00090h ; 81 c6 90 00 ; 0xf3b13 + mov word [bp-008h], si ; 89 76 f8 ; 0xf3b17 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3b1a floppy.c:48 + mov es, ax ; 8e c0 ; 0xf3b1d + mov bl, byte [es:si] ; 26 8a 1c ; 0xf3b1f + and bl, 00fh ; 80 e3 0f ; 0xf3b22 floppy.c:49 + cmp dl, 003h ; 80 fa 03 ; 0xf3b25 floppy.c:1266 + jc short 03b47h ; 72 1d ; 0xf3b28 + mov al, bl ; 88 d8 ; 0xf3b2a + or AL, strict byte 090h ; 0c 90 ; 0xf3b2c + cmp dl, 003h ; 80 fa 03 ; 0xf3b2e + jbe short 03b88h ; 76 55 ; 0xf3b31 + mov ah, bl ; 88 dc ; 0xf3b33 + or ah, 010h ; 80 cc 10 ; 0xf3b35 + cmp dl, 005h ; 80 fa 05 ; 0xf3b38 + je near 03badh ; 0f 84 6e 00 ; 0xf3b3b + cmp dl, 004h ; 80 fa 04 ; 0xf3b3f + je short 03b97h ; 74 53 ; 0xf3b42 + jmp near 03bc9h ; e9 82 00 ; 0xf3b44 + cmp dl, 002h ; 80 fa 02 ; 0xf3b47 + je short 03b68h ; 74 1c ; 0xf3b4a + cmp dl, 001h ; 80 fa 01 ; 0xf3b4c + jne near 03bc9h ; 0f 85 76 00 ; 0xf3b4f + cmp byte [bp-002h], 027h ; 80 7e fe 27 ; 0xf3b53 floppy.c:1268 + jne near 03bc9h ; 0f 85 6e 00 ; 0xf3b57 + cmp bh, 009h ; 80 ff 09 ; 0xf3b5b + jne near 03bc9h ; 0f 85 67 00 ; 0xf3b5e + or bl, 090h ; 80 cb 90 ; 0xf3b62 floppy.c:1269 + jmp near 03bc9h ; e9 61 00 ; 0xf3b65 floppy.c:1271 + cmp byte [bp-002h], 027h ; 80 7e fe 27 ; 0xf3b68 floppy.c:1273 + jne short 03b78h ; 75 0a ; 0xf3b6c + cmp bh, 009h ; 80 ff 09 ; 0xf3b6e + jne short 03b78h ; 75 05 ; 0xf3b71 + or bl, 070h ; 80 cb 70 ; 0xf3b73 floppy.c:1274 + jmp short 03bc9h ; eb 51 ; 0xf3b76 floppy.c:1275 + cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3b78 + jne short 03bc9h ; 75 4b ; 0xf3b7c + cmp bh, 00fh ; 80 ff 0f ; 0xf3b7e + jne short 03bc9h ; 75 46 ; 0xf3b81 + or bl, 010h ; 80 cb 10 ; 0xf3b83 floppy.c:1276 + jmp short 03bc9h ; eb 41 ; 0xf3b86 floppy.c:1278 + cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3b88 floppy.c:1280 + jne short 03bc9h ; 75 3b ; 0xf3b8c + cmp bh, 009h ; 80 ff 09 ; 0xf3b8e + jne short 03bc9h ; 75 36 ; 0xf3b91 + mov bl, al ; 88 c3 ; 0xf3b93 floppy.c:1281 + jmp short 03bc9h ; eb 32 ; 0xf3b95 floppy.c:1283 + cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3b97 floppy.c:1285 + jne short 03bc9h ; 75 2c ; 0xf3b9b + cmp bh, 009h ; 80 ff 09 ; 0xf3b9d floppy.c:1286 + jne short 03ba4h ; 75 02 ; 0xf3ba0 + jmp short 03b93h ; eb ef ; 0xf3ba2 + cmp bh, 012h ; 80 ff 12 ; 0xf3ba4 floppy.c:1287 + jne short 03bc9h ; 75 20 ; 0xf3ba7 + mov bl, ah ; 88 e3 ; 0xf3ba9 floppy.c:1289 + jmp short 03bc9h ; eb 1c ; 0xf3bab floppy.c:1292 + cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3bad floppy.c:1294 + jne short 03bc9h ; 75 16 ; 0xf3bb1 + cmp bh, 009h ; 80 ff 09 ; 0xf3bb3 floppy.c:1295 + jne short 03bbah ; 75 02 ; 0xf3bb6 + jmp short 03b93h ; eb d9 ; 0xf3bb8 + cmp bh, 012h ; 80 ff 12 ; 0xf3bba floppy.c:1296 + jne short 03bc1h ; 75 02 ; 0xf3bbd + jmp short 03ba9h ; eb e8 ; 0xf3bbf + cmp bh, 024h ; 80 ff 24 ; 0xf3bc1 floppy.c:1298 + jne short 03bc9h ; 75 03 ; 0xf3bc4 + or bl, 0d0h ; 80 cb d0 ; 0xf3bc6 floppy.c:1300 + movzx ax, bl ; 0f b6 c3 ; 0xf3bc9 floppy.c:1309 + sar ax, 004h ; c1 f8 04 ; 0xf3bcc + test AL, strict byte 001h ; a8 01 ; 0xf3bcf + je near 03ad7h ; 0f 84 02 ff ; 0xf3bd1 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3bd5 floppy.c:53 + mov es, ax ; 8e c0 ; 0xf3bd8 + mov si, word [bp-008h] ; 8b 76 f8 ; 0xf3bda + mov byte [es:si], bl ; 26 88 1c ; 0xf3bdd + mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3be0 floppy.c:1322 + movzx ax, dl ; 0f b6 c2 ; 0xf3be5 floppy.c:1323 + call 03c24h ; e8 39 00 ; 0xf3be8 + mov word [bp+008h], ax ; 89 46 08 ; 0xf3beb + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3bee floppy.c:1326 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3bf2 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3bf5 + mov es, ax ; 8e c0 ; 0xf3bf8 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3bfa + jmp near 035afh ; e9 ae f9 ; 0xf3bfe + mov bx, 00e06h ; bb 06 0e ; 0xf3c01 floppy.c:1332 + mov cx, ds ; 8c d9 ; 0xf3c04 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3c06 + call 01a27h ; e8 1b de ; 0xf3c09 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3c0c + shr ax, 008h ; c1 e8 08 ; 0xf3c0f + push ax ; 50 ; 0xf3c12 + push 002e7h ; 68 e7 02 ; 0xf3c13 + push 00354h ; 68 54 03 ; 0xf3c16 + push strict byte 00004h ; 6a 04 ; 0xf3c19 + call 01a68h ; e8 4a de ; 0xf3c1b + add sp, strict byte 00008h ; 83 c4 08 ; 0xf3c1e + jmp near 032e8h ; e9 c4 f6 ; 0xf3c21 floppy.c:78 + ; disGetNextSymbol 0xf3c24 LB 0x7178 -> off=0x0 cb=000000000000002f uValue=00000000000f2624 'get_floppy_dpt' +get_floppy_dpt: ; 0xf3c24 LB 0x2f + push bx ; 53 ; 0xf3c24 floppyt.c:104 + push dx ; 52 ; 0xf3c25 + push bp ; 55 ; 0xf3c26 + mov bp, sp ; 89 e5 ; 0xf3c27 + mov dl, al ; 88 c2 ; 0xf3c29 + xor ax, ax ; 31 c0 ; 0xf3c2b floppyt.c:108 + jmp short 03c35h ; eb 06 ; 0xf3c2d + inc ax ; 40 ; 0xf3c2f floppyt.c:110 + cmp ax, strict word 00007h ; 3d 07 00 ; 0xf3c30 + jnc short 03c4ch ; 73 17 ; 0xf3c33 + mov bx, ax ; 89 c3 ; 0xf3c35 + add bx, ax ; 01 c3 ; 0xf3c37 + cmp dl, byte [word bx+0005bh] ; 3a 97 5b 00 ; 0xf3c39 + jne short 03c2fh ; 75 f0 ; 0xf3c3d + movzx ax, byte [word bx+0005ch] ; 0f b6 87 5c 00 ; 0xf3c3f + imul ax, ax, strict byte 0000dh ; 6b c0 0d ; 0xf3c44 + add ax, strict word 00000h ; 05 00 00 ; 0xf3c47 + jmp short 03c4fh ; eb 03 ; 0xf3c4a + mov ax, strict word 00041h ; b8 41 00 ; 0xf3c4c floppyt.c:113 + pop bp ; 5d ; 0xf3c4f floppyt.c:114 + pop dx ; 5a ; 0xf3c50 + pop bx ; 5b ; 0xf3c51 + retn ; c3 ; 0xf3c52 + ; disGetNextSymbol 0xf3c53 LB 0x7149 -> off=0x0 cb=0000000000000007 uValue=00000000000f2653 'dummy_soft_reset' +dummy_soft_reset: ; 0xf3c53 LB 0x7 + push bp ; 55 ; 0xf3c53 eltorito.c:137 + mov bp, sp ; 89 e5 ; 0xf3c54 + xor ax, ax ; 31 c0 ; 0xf3c56 eltorito.c:140 + pop bp ; 5d ; 0xf3c58 + retn ; c3 ; 0xf3c59 + ; disGetNextSymbol 0xf3c5a LB 0x7142 -> off=0x0 cb=000000000000003b uValue=00000000000f265a 'cdemu_bounce_buf_alloc' +cdemu_bounce_buf_alloc: ; 0xf3c5a LB 0x3b + push bx ; 53 ; 0xf3c5a eltorito.c:169 + push cx ; 51 ; 0xf3c5b + push dx ; 52 ; 0xf3c5c + push di ; 57 ; 0xf3c5d + push bp ; 55 ; 0xf3c5e + mov bp, sp ; 89 e5 ; 0xf3c5f + mov di, 00413h ; bf 13 04 ; 0xf3c61 eltorito.c:58 + xor ax, ax ; 31 c0 ; 0xf3c64 + mov es, ax ; 8e c0 ; 0xf3c66 + mov ax, word [es:di] ; 26 8b 05 ; 0xf3c68 + test ax, ax ; 85 c0 ; 0xf3c6b eltorito.c:175 + je short 03c8fh ; 74 20 ; 0xf3c6d + dec ax ; 48 ; 0xf3c6f eltorito.c:176 + dec ax ; 48 ; 0xf3c70 + mov bx, ax ; 89 c3 ; 0xf3c71 + xor dx, dx ; 31 d2 ; 0xf3c73 eltorito.c:179 + mov cx, strict word 0000ah ; b9 0a 00 ; 0xf3c75 + sal ax, 1 ; d1 e0 ; 0xf3c78 + rcl dx, 1 ; d1 d2 ; 0xf3c7a + loop 03c78h ; e2 fa ; 0xf3c7c + mov di, dx ; 89 d7 ; 0xf3c7e + mov cx, strict word 00004h ; b9 04 00 ; 0xf3c80 + shr di, 1 ; d1 ef ; 0xf3c83 + rcr ax, 1 ; d1 d8 ; 0xf3c85 + loop 03c83h ; e2 fa ; 0xf3c87 + mov di, 00413h ; bf 13 04 ; 0xf3c89 eltorito.c:63 + mov word [es:di], bx ; 26 89 1d ; 0xf3c8c + pop bp ; 5d ; 0xf3c8f eltorito.c:184 + pop di ; 5f ; 0xf3c90 + pop dx ; 5a ; 0xf3c91 + pop cx ; 59 ; 0xf3c92 + pop bx ; 5b ; 0xf3c93 + retn ; c3 ; 0xf3c94 + ; disGetNextSymbol 0xf3c95 LB 0x7107 -> off=0x0 cb=0000000000000017 uValue=00000000000f2695 'cdemu_init' +cdemu_init: ; 0xf3c95 LB 0x17 + push bp ; 55 ; 0xf3c95 eltorito.c:186 + mov bp, sp ; 89 e5 ; 0xf3c96 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c98 eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3c9b + mov es, ax ; 8e c0 ; 0xf3c9e + mov es, [es:bx] ; 26 8e 07 ; 0xf3ca0 + mov bx, 00316h ; bb 16 03 ; 0xf3ca3 eltorito.c:190 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3ca6 eltorito.c:193 + pop bp ; 5d ; 0xf3caa eltorito.c:194 + retn ; c3 ; 0xf3cab + ; disGetNextSymbol 0xf3cac LB 0x70f0 -> off=0x0 cb=0000000000000016 uValue=00000000000f26ac 'cdemu_isactive' +cdemu_isactive: ; 0xf3cac LB 0x16 + push bp ; 55 ; 0xf3cac eltorito.c:196 + mov bp, sp ; 89 e5 ; 0xf3cad + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3caf eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3cb2 + mov es, ax ; 8e c0 ; 0xf3cb5 + mov es, [es:bx] ; 26 8e 07 ; 0xf3cb7 + mov bx, 00316h ; bb 16 03 ; 0xf3cba eltorito.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3cbd + pop bp ; 5d ; 0xf3cc0 eltorito.c:202 + retn ; c3 ; 0xf3cc1 + ; disGetNextSymbol 0xf3cc2 LB 0x70da -> off=0x0 cb=0000000000000016 uValue=00000000000f26c2 'cdemu_emulated_drive' +cdemu_emulated_drive: ; 0xf3cc2 LB 0x16 + push bp ; 55 ; 0xf3cc2 eltorito.c:204 + mov bp, sp ; 89 e5 ; 0xf3cc3 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3cc5 eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3cc8 + mov es, ax ; 8e c0 ; 0xf3ccb + mov es, [es:bx] ; 26 8e 07 ; 0xf3ccd + mov bx, 00318h ; bb 18 03 ; 0xf3cd0 eltorito.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3cd3 + pop bp ; 5d ; 0xf3cd6 eltorito.c:210 + retn ; c3 ; 0xf3cd7 + ; disGetNextSymbol 0xf3cd8 LB 0x70c4 -> off=0x0 cb=000000000000017a uValue=00000000000f26d8 'int13_eltorito' +int13_eltorito: ; 0xf3cd8 LB 0x17a + push bp ; 55 ; 0xf3cd8 eltorito.c:216 + mov bp, sp ; 89 e5 ; 0xf3cd9 + push si ; 56 ; 0xf3cdb + push di ; 57 ; 0xf3cdc + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3cdd eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3ce0 + mov es, ax ; 8e c0 ; 0xf3ce3 + mov di, word [es:bx] ; 26 8b 3f ; 0xf3ce5 + mov bx, 00316h ; bb 16 03 ; 0xf3ce8 eltorito.c:222 + mov si, word [bp+016h] ; 8b 76 16 ; 0xf3ceb eltorito.c:228 + shr si, 008h ; c1 ee 08 ; 0xf3cee + cmp si, strict byte 0004bh ; 83 fe 4b ; 0xf3cf1 + jc short 03d00h ; 72 0a ; 0xf3cf4 + jbe short 03d26h ; 76 2e ; 0xf3cf6 + cmp si, strict byte 0004dh ; 83 fe 4d ; 0xf3cf8 + jbe short 03d07h ; 76 0a ; 0xf3cfb + jmp near 03e18h ; e9 18 01 ; 0xf3cfd + cmp si, strict byte 0004ah ; 83 fe 4a ; 0xf3d00 + jne near 03e18h ; 0f 85 11 01 ; 0xf3d03 + mov bx, 00e06h ; bb 06 0e ; 0xf3d07 eltorito.c:234 + mov cx, ds ; 8c d9 ; 0xf3d0a + mov ax, strict word 00004h ; b8 04 00 ; 0xf3d0c + call 01a27h ; e8 15 dd ; 0xf3d0f + push word [bp+016h] ; ff 76 16 ; 0xf3d12 + push 0036eh ; 68 6e 03 ; 0xf3d15 + push 0037dh ; 68 7d 03 ; 0xf3d18 + push strict byte 00004h ; 6a 04 ; 0xf3d1b + call 01a68h ; e8 48 dd ; 0xf3d1d + add sp, strict byte 00008h ; 83 c4 08 ; 0xf3d20 + jmp near 03e33h ; e9 0d 01 ; 0xf3d23 eltorito.c:235 + mov es, [bp+004h] ; 8e 46 04 ; 0xf3d26 eltorito.c:51 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d29 + mov byte [es:si], 013h ; 26 c6 04 13 ; 0xf3d2c + inc si ; 46 ; 0xf3d30 eltorito.c:242 + mov ax, es ; 8c c0 ; 0xf3d31 eltorito.c:51 + mov es, di ; 8e c7 ; 0xf3d33 + mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf3d35 + mov es, ax ; 8e c0 ; 0xf3d39 eltorito.c:53 + mov byte [es:si], dl ; 26 88 14 ; 0xf3d3b + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d3e eltorito.c:243 + inc si ; 46 ; 0xf3d41 + inc si ; 46 ; 0xf3d42 + mov es, di ; 8e c7 ; 0xf3d43 eltorito.c:51 + mov dl, byte [es:bx+002h] ; 26 8a 57 02 ; 0xf3d45 + mov es, ax ; 8e c0 ; 0xf3d49 eltorito.c:53 + mov byte [es:si], dl ; 26 88 14 ; 0xf3d4b + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d4e eltorito.c:244 + add si, strict byte 00003h ; 83 c6 03 ; 0xf3d51 + mov es, di ; 8e c7 ; 0xf3d54 eltorito.c:51 + mov dl, byte [es:bx+003h] ; 26 8a 57 03 ; 0xf3d56 + mov es, ax ; 8e c0 ; 0xf3d5a eltorito.c:53 + mov byte [es:si], dl ; 26 88 14 ; 0xf3d5c + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d5f eltorito.c:245 + add si, strict byte 00004h ; 83 c6 04 ; 0xf3d62 + mov es, di ; 8e c7 ; 0xf3d65 eltorito.c:71 + mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf3d67 + mov cx, word [es:bx+00ah] ; 26 8b 4f 0a ; 0xf3d6b + mov es, ax ; 8e c0 ; 0xf3d6f eltorito.c:73 + mov word [es:si], dx ; 26 89 14 ; 0xf3d71 + mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf3d74 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d78 eltorito.c:246 + add si, strict byte 00008h ; 83 c6 08 ; 0xf3d7b + mov es, di ; 8e c7 ; 0xf3d7e eltorito.c:61 + mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf3d80 + mov es, ax ; 8e c0 ; 0xf3d84 eltorito.c:63 + mov word [es:si], dx ; 26 89 14 ; 0xf3d86 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d89 eltorito.c:247 + add si, strict byte 0000ah ; 83 c6 0a ; 0xf3d8c + mov es, di ; 8e c7 ; 0xf3d8f eltorito.c:61 + mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf3d91 + mov es, ax ; 8e c0 ; 0xf3d95 eltorito.c:63 + mov word [es:si], dx ; 26 89 14 ; 0xf3d97 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d9a eltorito.c:248 + add si, strict byte 0000ch ; 83 c6 0c ; 0xf3d9d + mov es, di ; 8e c7 ; 0xf3da0 eltorito.c:61 + mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf3da2 + mov es, ax ; 8e c0 ; 0xf3da6 eltorito.c:63 + mov word [es:si], dx ; 26 89 14 ; 0xf3da8 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3dab eltorito.c:249 + add si, strict byte 0000eh ; 83 c6 0e ; 0xf3dae + mov es, di ; 8e c7 ; 0xf3db1 eltorito.c:61 + mov dx, word [es:bx+00eh] ; 26 8b 57 0e ; 0xf3db3 + mov es, ax ; 8e c0 ; 0xf3db7 eltorito.c:63 + mov word [es:si], dx ; 26 89 14 ; 0xf3db9 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3dbc eltorito.c:250 + add si, strict byte 00010h ; 83 c6 10 ; 0xf3dbf + mov es, di ; 8e c7 ; 0xf3dc2 eltorito.c:51 + mov dl, byte [es:bx+012h] ; 26 8a 57 12 ; 0xf3dc4 + mov es, ax ; 8e c0 ; 0xf3dc8 eltorito.c:53 + mov byte [es:si], dl ; 26 88 14 ; 0xf3dca + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3dcd eltorito.c:251 + add si, strict byte 00011h ; 83 c6 11 ; 0xf3dd0 + mov es, di ; 8e c7 ; 0xf3dd3 eltorito.c:51 + mov dl, byte [es:bx+014h] ; 26 8a 57 14 ; 0xf3dd5 + mov es, ax ; 8e c0 ; 0xf3dd9 eltorito.c:53 + mov byte [es:si], dl ; 26 88 14 ; 0xf3ddb + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3dde eltorito.c:252 + add si, strict byte 00012h ; 83 c6 12 ; 0xf3de1 + mov dx, ax ; 89 c2 ; 0xf3de4 eltorito.c:51 + mov es, di ; 8e c7 ; 0xf3de6 + mov al, byte [es:bx+010h] ; 26 8a 47 10 ; 0xf3de8 + mov es, dx ; 8e c2 ; 0xf3dec eltorito.c:53 + mov byte [es:si], al ; 26 88 04 ; 0xf3dee + test byte [bp+016h], 0ffh ; f6 46 16 ff ; 0xf3df1 eltorito.c:255 + jne short 03dfdh ; 75 06 ; 0xf3df5 + mov es, di ; 8e c7 ; 0xf3df7 eltorito.c:257 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3df9 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3dfd eltorito.c:260 + mov bx, strict word 00074h ; bb 74 00 ; 0xf3e01 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3e04 + mov es, ax ; 8e c0 ; 0xf3e07 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3e09 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3e0d + lea sp, [bp-004h] ; 8d 66 fc ; 0xf3e11 + pop di ; 5f ; 0xf3e14 + pop si ; 5e ; 0xf3e15 + pop bp ; 5d ; 0xf3e16 + retn ; c3 ; 0xf3e17 + mov bx, 00e06h ; bb 06 0e ; 0xf3e18 eltorito.c:264 + mov cx, ds ; 8c d9 ; 0xf3e1b + mov ax, strict word 00004h ; b8 04 00 ; 0xf3e1d + call 01a27h ; e8 04 dc ; 0xf3e20 + mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf3e23 + shr bx, 008h ; c1 eb 08 ; 0xf3e26 + push bx ; 53 ; 0xf3e29 + push 0036eh ; 68 6e 03 ; 0xf3e2a + push 003a5h ; 68 a5 03 ; 0xf3e2d + jmp near 03d1bh ; e9 e8 fe ; 0xf3e30 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3e33 eltorito.c:270 + xor ah, ah ; 30 e4 ; 0xf3e36 + or ah, 001h ; 80 cc 01 ; 0xf3e38 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3e3b + shr ax, 008h ; c1 e8 08 ; 0xf3e3e eltorito.c:271 + mov bx, strict word 00074h ; bb 74 00 ; 0xf3e41 eltorito.c:53 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3e44 + mov es, dx ; 8e c2 ; 0xf3e47 + mov byte [es:bx], al ; 26 88 07 ; 0xf3e49 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3e4c eltorito.c:272 + jmp short 03e11h ; eb bf ; 0xf3e50 eltorito.c:273 + ; disGetNextSymbol 0xf3e52 LB 0x6f4a -> off=0x0 cb=0000000000000032 uValue=00000000000f2852 'device_is_cdrom' +device_is_cdrom: ; 0xf3e52 LB 0x32 + push bx ; 53 ; 0xf3e52 eltorito.c:288 + push dx ; 52 ; 0xf3e53 + push bp ; 55 ; 0xf3e54 + mov bp, sp ; 89 e5 ; 0xf3e55 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3e57 eltorito.c:58 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3e5a + mov es, dx ; 8e c2 ; 0xf3e5d + mov bx, word [es:bx] ; 26 8b 1f ; 0xf3e5f + cmp AL, strict byte 014h ; 3c 14 ; 0xf3e62 eltorito.c:294 + jc short 03e6ah ; 72 04 ; 0xf3e64 + xor ax, ax ; 31 c0 ; 0xf3e66 eltorito.c:295 + jmp short 03e80h ; eb 16 ; 0xf3e68 + xor ah, ah ; 30 e4 ; 0xf3e6a eltorito.c:300 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3e6c + mov es, bx ; 8e c3 ; 0xf3e6f + mov bx, ax ; 89 c3 ; 0xf3e71 + add bx, strict byte 0005eh ; 83 c3 5e ; 0xf3e73 + cmp byte [es:bx+01fh], 005h ; 26 80 7f 1f 05 ; 0xf3e76 + jne short 03e66h ; 75 e9 ; 0xf3e7b + mov ax, strict word 00001h ; b8 01 00 ; 0xf3e7d eltorito.c:301 + pop bp ; 5d ; 0xf3e80 eltorito.c:304 + pop dx ; 5a ; 0xf3e81 + pop bx ; 5b ; 0xf3e82 + retn ; c3 ; 0xf3e83 + ; disGetNextSymbol 0xf3e84 LB 0x6f18 -> off=0x0 cb=000000000000007f uValue=00000000000f2884 'cdrom_read' +cdrom_read: ; 0xf3e84 LB 0x7f + push bp ; 55 ; 0xf3e84 eltorito.c:306 + mov bp, sp ; 89 e5 ; 0xf3e85 + push si ; 56 ; 0xf3e87 + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf3e88 + mov byte [bp-004h], al ; 88 46 fc ; 0xf3e8b + mov ax, bx ; 89 d8 ; 0xf3e8e + mov si, cx ; 89 ce ; 0xf3e90 + mov cx, dx ; 89 d1 ; 0xf3e92 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3e94 eltorito.c:58 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3e97 + mov es, dx ; 8e c2 ; 0xf3e9a + mov es, [es:bx] ; 26 8e 07 ; 0xf3e9c + mov bx, strict word 0005eh ; bb 5e 00 ; 0xf3e9f eltorito.c:310 + mov word [bp-010h], strict word 00028h ; c7 46 f0 28 00 ; 0xf3ea2 eltorito.c:312 + mov dx, si ; 89 f2 ; 0xf3ea7 eltorito.c:313 + xchg ah, al ; 86 c4 ; 0xf3ea9 + xchg dh, dl ; 86 d6 ; 0xf3eab + xchg dx, ax ; 92 ; 0xf3ead + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf3eae + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf3eb1 + mov ax, cx ; 89 c8 ; 0xf3eb4 eltorito.c:314 + xchg ah, al ; 86 c4 ; 0xf3eb6 + mov word [bp-009h], ax ; 89 46 f7 ; 0xf3eb8 + mov word [es:bx+00eh], cx ; 26 89 4f 0e ; 0xf3ebb eltorito.c:316 + mov word [es:bx+010h], 00800h ; 26 c7 47 10 00 08 ; 0xf3ebf eltorito.c:317 + movzx bx, byte [bp-004h] ; 0f b6 5e fc ; 0xf3ec5 eltorito.c:319 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf3ec9 + add bx, strict byte 0005eh ; 83 c3 5e ; 0xf3ecc + movzx si, byte [es:bx+01eh] ; 26 0f b6 77 1e ; 0xf3ecf + add si, si ; 01 f6 ; 0xf3ed4 + push dword [bp+004h] ; 66 ff 76 04 ; 0xf3ed6 + push strict byte 00001h ; 6a 01 ; 0xf3eda + mov ax, cx ; 89 c8 ; 0xf3edc + xor dx, dx ; 31 d2 ; 0xf3ede + mov cx, strict word 0000bh ; b9 0b 00 ; 0xf3ee0 + sal ax, 1 ; d1 e0 ; 0xf3ee3 + rcl dx, 1 ; d1 d2 ; 0xf3ee5 + loop 03ee3h ; e2 fa ; 0xf3ee7 + push dx ; 52 ; 0xf3ee9 + push ax ; 50 ; 0xf3eea + movzx ax, byte [bp-004h] ; 0f b6 46 fc ; 0xf3eeb + mov cx, ss ; 8c d1 ; 0xf3eef + lea bx, [bp-010h] ; 8d 5e f0 ; 0xf3ef1 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3ef4 + call word [word si+0006ah] ; ff 94 6a 00 ; 0xf3ef7 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf3efb eltorito.c:320 + pop si ; 5e ; 0xf3efe + pop bp ; 5d ; 0xf3eff + retn 00004h ; c2 04 00 ; 0xf3f00 + ; disGetNextSymbol 0xf3f03 LB 0x6e99 -> off=0x0 cb=0000000000000167 uValue=00000000000f2903 'cdemu_read' +cdemu_read: ; 0xf3f03 LB 0x167 + push bp ; 55 ; 0xf3f03 eltorito.c:322 + mov bp, sp ; 89 e5 ; 0xf3f04 + push si ; 56 ; 0xf3f06 + push di ; 57 ; 0xf3f07 + sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf3f08 + mov byte [bp-006h], al ; 88 46 fa ; 0xf3f0b + mov word [bp-01eh], bx ; 89 5e e2 ; 0xf3f0e + mov di, dx ; 89 d7 ; 0xf3f11 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3f13 eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3f16 + mov es, ax ; 8e c0 ; 0xf3f19 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf3f1b + mov bx, 00316h ; bb 16 03 ; 0xf3f1e eltorito.c:326 + mov es, ax ; 8e c0 ; 0xf3f21 + mov si, bx ; 89 de ; 0xf3f23 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf3f25 + mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf3f28 eltorito.c:327 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf3f2c + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf3f2f + mov word [bp-014h], ax ; 89 46 ec ; 0xf3f33 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf3f36 eltorito.c:330 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf3f39 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf3f3c + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf3f3f + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf3f42 eltorito.c:335 + mov dx, cx ; 89 ca ; 0xf3f45 + shr dx, 1 ; d1 ea ; 0xf3f47 + rcr ax, 1 ; d1 d8 ; 0xf3f49 + shr dx, 1 ; d1 ea ; 0xf3f4b + rcr ax, 1 ; d1 d8 ; 0xf3f4d + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf3f4f + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf3f52 + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf3f55 eltorito.c:336 + and ax, strict word 00003h ; 25 03 00 ; 0xf3f58 + mov word [bp-016h], ax ; 89 46 ea ; 0xf3f5b + test ax, ax ; 85 c0 ; 0xf3f5e eltorito.c:339 + je short 03fd2h ; 74 70 ; 0xf3f60 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3f62 eltorito.c:341 + sub ax, word [bp-016h] ; 2b 46 ea ; 0xf3f65 + cmp di, ax ; 39 c7 ; 0xf3f68 + jnc short 03f71h ; 73 05 ; 0xf3f6a + mov word [bp-01ch], di ; 89 7e e4 ; 0xf3f6c + jmp short 03f74h ; eb 03 ; 0xf3f6f + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf3f71 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf3f74 eltorito.c:343 + db 066h, 026h, 0ffh, 074h, 016h + ; push dword [es:si+016h] ; 66 26 ff 74 16 ; 0xf3f77 + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf3f7c + add bx, word [bp-00ch] ; 03 5e f4 ; 0xf3f7f + mov cx, word [bp-014h] ; 8b 4e ec ; 0xf3f82 + adc cx, word [bp-00ah] ; 13 4e f6 ; 0xf3f85 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf3f88 + mov dx, strict word 00001h ; ba 01 00 ; 0xf3f8c + call 03e84h ; e8 f2 fe ; 0xf3f8f + mov word [bp-012h], ax ; 89 46 ee ; 0xf3f92 + test ax, ax ; 85 c0 ; 0xf3f95 eltorito.c:344 + jne near 04061h ; 0f 85 c6 00 ; 0xf3f97 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf3f9b eltorito.c:345 + sal ax, 009h ; c1 e0 09 ; 0xf3f9e + mov word [bp-020h], ax ; 89 46 e0 ; 0xf3fa1 + push ax ; 50 ; 0xf3fa4 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf3fa5 + sal ax, 009h ; c1 e0 09 ; 0xf3fa8 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf3fab + mov bx, word [es:si+016h] ; 26 8b 5c 16 ; 0xf3fae + mov cx, word [es:si+018h] ; 26 8b 4c 18 ; 0xf3fb2 + add bx, ax ; 01 c3 ; 0xf3fb6 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf3fb8 + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf3fbb + call 0ad10h ; e8 4f 6d ; 0xf3fbe + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf3fc1 eltorito.c:348 + add word [bp-00eh], ax ; 01 46 f2 ; 0xf3fc4 + sub di, word [bp-01ch] ; 2b 7e e4 ; 0xf3fc7 eltorito.c:349 + add word [bp-00ch], strict byte 00001h ; 83 46 f4 01 ; 0xf3fca eltorito.c:350 + adc word [bp-00ah], strict byte 00000h ; 83 56 f6 00 ; 0xf3fce + mov ax, di ; 89 f8 ; 0xf3fd2 eltorito.c:354 + shr ax, 002h ; c1 e8 02 ; 0xf3fd4 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf3fd7 + test ax, ax ; 85 c0 ; 0xf3fda + je short 0401dh ; 74 3f ; 0xf3fdc + push word [bp-01ah] ; ff 76 e6 ; 0xf3fde eltorito.c:358 + push word [bp-00eh] ; ff 76 f2 ; 0xf3fe1 + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf3fe4 + add bx, word [bp-00ch] ; 03 5e f4 ; 0xf3fe7 + mov cx, word [bp-014h] ; 8b 4e ec ; 0xf3fea + adc cx, word [bp-00ah] ; 13 4e f6 ; 0xf3fed + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf3ff0 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf3ff4 + call 03e84h ; e8 8a fe ; 0xf3ff7 + mov word [bp-012h], ax ; 89 46 ee ; 0xf3ffa + test ax, ax ; 85 c0 ; 0xf3ffd eltorito.c:359 + jne short 04061h ; 75 60 ; 0xf3fff + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf4001 eltorito.c:360 + sal ax, 00bh ; c1 e0 0b ; 0xf4004 + add word [bp-00eh], ax ; 01 46 f2 ; 0xf4007 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf400a eltorito.c:362 + sal ax, 002h ; c1 e0 02 ; 0xf400d + sub di, ax ; 29 c7 ; 0xf4010 + xor ax, ax ; 31 c0 ; 0xf4012 eltorito.c:363 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf4014 + add word [bp-00ch], dx ; 01 56 f4 ; 0xf4017 + adc word [bp-00ah], ax ; 11 46 f6 ; 0xf401a + test di, di ; 85 ff ; 0xf401d eltorito.c:367 + je short 0405eh ; 74 3d ; 0xf401f + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4021 eltorito.c:369 + db 066h, 026h, 0ffh, 074h, 016h + ; push dword [es:si+016h] ; 66 26 ff 74 16 ; 0xf4024 + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf4029 + add bx, word [bp-00ch] ; 03 5e f4 ; 0xf402c + mov cx, word [bp-014h] ; 8b 4e ec ; 0xf402f + adc cx, word [bp-00ah] ; 13 4e f6 ; 0xf4032 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4035 + mov dx, strict word 00001h ; ba 01 00 ; 0xf4039 + call 03e84h ; e8 45 fe ; 0xf403c + mov word [bp-012h], ax ; 89 46 ee ; 0xf403f + test ax, ax ; 85 c0 ; 0xf4042 eltorito.c:370 + jne short 04061h ; 75 1b ; 0xf4044 + sal di, 009h ; c1 e7 09 ; 0xf4046 eltorito.c:371 + push di ; 57 ; 0xf4049 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf404a + mov bx, word [es:si+016h] ; 26 8b 5c 16 ; 0xf404d + mov cx, word [es:si+018h] ; 26 8b 4c 18 ; 0xf4051 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf4055 + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf4058 + call 0ad10h ; e8 b2 6c ; 0xf405b + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf405e eltorito.c:376 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf4061 eltorito.c:377 + pop di ; 5f ; 0xf4064 + pop si ; 5e ; 0xf4065 + pop bp ; 5d ; 0xf4066 + retn 00004h ; c2 04 00 ; 0xf4067 + ; disGetNextSymbol 0xf406a LB 0x6d32 -> off=0x0 cb=00000000000002ba uValue=00000000000f2a6a 'cdrom_boot' +cdrom_boot: ; 0xf406a LB 0x2ba + push bp ; 55 ; 0xf406a eltorito.c:387 + mov bp, sp ; 89 e5 ; 0xf406b + push bx ; 53 ; 0xf406d + push cx ; 51 ; 0xf406e + push dx ; 52 ; 0xf406f + push si ; 56 ; 0xf4070 + push di ; 57 ; 0xf4071 + sub sp, 00808h ; 81 ec 08 08 ; 0xf4072 + mov si, strict word 0000eh ; be 0e 00 ; 0xf4076 eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4079 + mov es, ax ; 8e c0 ; 0xf407c + mov ax, word [es:si] ; 26 8b 04 ; 0xf407e + mov word [bp-012h], ax ; 89 46 ee ; 0xf4081 eltorito.c:59 + mov si, 00316h ; be 16 03 ; 0xf4084 eltorito.c:399 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf4087 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf408a eltorito.c:403 + jmp short 04099h ; eb 09 ; 0xf408e + inc byte [bp-00ch] ; fe 46 f4 ; 0xf4090 eltorito.c:406 + cmp byte [bp-00ch], 014h ; 80 7e f4 14 ; 0xf4093 + jnc short 040a4h ; 73 0b ; 0xf4097 + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf4099 + call 03e52h ; e8 b2 fd ; 0xf409d + test ax, ax ; 85 c0 ; 0xf40a0 + je short 04090h ; 74 ec ; 0xf40a2 + cmp byte [bp-00ch], 014h ; 80 7e f4 14 ; 0xf40a4 eltorito.c:409 + jc short 040b0h ; 72 06 ; 0xf40a8 + mov ax, strict word 00002h ; b8 02 00 ; 0xf40aa eltorito.c:410 + jmp near 0431ah ; e9 6a 02 ; 0xf40ad + mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf40b0 eltorito.c:413 + jmp short 040bfh ; eb 09 ; 0xf40b4 + inc byte [bp-00eh] ; fe 46 f2 ; 0xf40b6 eltorito.c:418 + cmp byte [bp-00eh], 004h ; 80 7e f2 04 ; 0xf40b9 + jnbe short 040d8h ; 77 19 ; 0xf40bd + lea dx, [bp-00812h] ; 8d 96 ee f7 ; 0xf40bf + push SS ; 16 ; 0xf40c3 + push dx ; 52 ; 0xf40c4 + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf40c5 + mov dx, strict word 00001h ; ba 01 00 ; 0xf40c9 + mov bx, strict word 00011h ; bb 11 00 ; 0xf40cc + xor cx, cx ; 31 c9 ; 0xf40cf + call 03e84h ; e8 b0 fd ; 0xf40d1 + test ax, ax ; 85 c0 ; 0xf40d4 + jne short 040b6h ; 75 de ; 0xf40d6 + test ax, ax ; 85 c0 ; 0xf40d8 eltorito.c:419 + je short 040e2h ; 74 06 ; 0xf40da + mov ax, strict word 00003h ; b8 03 00 ; 0xf40dc eltorito.c:420 + jmp near 0431ah ; e9 38 02 ; 0xf40df + cmp byte [bp-00812h], 000h ; 80 be ee f7 00 ; 0xf40e2 eltorito.c:423 + je short 040efh ; 74 06 ; 0xf40e7 + mov ax, strict word 00004h ; b8 04 00 ; 0xf40e9 eltorito.c:424 + jmp near 0431ah ; e9 2b 02 ; 0xf40ec + xor di, di ; 31 ff ; 0xf40ef eltorito.c:426 + jmp short 040f9h ; eb 06 ; 0xf40f1 + inc di ; 47 ; 0xf40f3 eltorito.c:428 + cmp di, strict byte 00005h ; 83 ff 05 ; 0xf40f4 + jnc short 04109h ; 73 10 ; 0xf40f7 + mov al, byte [bp+di-00811h] ; 8a 83 ef f7 ; 0xf40f9 + cmp al, byte [di+00e0eh] ; 3a 85 0e 0e ; 0xf40fd + je short 040f3h ; 74 f0 ; 0xf4101 + mov ax, strict word 00005h ; b8 05 00 ; 0xf4103 + jmp near 0431ah ; e9 11 02 ; 0xf4106 + xor di, di ; 31 ff ; 0xf4109 eltorito.c:430 + jmp short 04113h ; eb 06 ; 0xf410b + inc di ; 47 ; 0xf410d eltorito.c:432 + cmp di, strict byte 00017h ; 83 ff 17 ; 0xf410e + jnc short 04123h ; 73 10 ; 0xf4111 + mov al, byte [bp+di-0080bh] ; 8a 83 f5 f7 ; 0xf4113 + cmp al, byte [di+00e14h] ; 3a 85 14 0e ; 0xf4117 + je short 0410dh ; 74 f0 ; 0xf411b + mov ax, strict word 00006h ; b8 06 00 ; 0xf411d + jmp near 0431ah ; e9 f7 01 ; 0xf4120 + mov bx, word [bp-007cbh] ; 8b 9e 35 f8 ; 0xf4123 eltorito.c:435 + mov cx, word [bp-007c9h] ; 8b 8e 37 f8 ; 0xf4127 + lea dx, [bp-00812h] ; 8d 96 ee f7 ; 0xf412b eltorito.c:439 + push SS ; 16 ; 0xf412f + push dx ; 52 ; 0xf4130 + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf4131 + mov dx, strict word 00001h ; ba 01 00 ; 0xf4135 + call 03e84h ; e8 49 fd ; 0xf4138 + test ax, ax ; 85 c0 ; 0xf413b eltorito.c:440 + je short 04145h ; 74 06 ; 0xf413d + mov ax, strict word 00007h ; b8 07 00 ; 0xf413f eltorito.c:441 + jmp near 0431ah ; e9 d5 01 ; 0xf4142 + cmp byte [bp-00812h], 001h ; 80 be ee f7 01 ; 0xf4145 eltorito.c:446 + je short 04152h ; 74 06 ; 0xf414a + mov ax, strict word 00008h ; b8 08 00 ; 0xf414c eltorito.c:447 + jmp near 0431ah ; e9 c8 01 ; 0xf414f + cmp byte [bp-00811h], 000h ; 80 be ef f7 00 ; 0xf4152 eltorito.c:448 + je short 0415fh ; 74 06 ; 0xf4157 + mov ax, strict word 00009h ; b8 09 00 ; 0xf4159 eltorito.c:449 + jmp near 0431ah ; e9 bb 01 ; 0xf415c + cmp byte [bp-007f4h], 055h ; 80 be 0c f8 55 ; 0xf415f eltorito.c:450 + je short 0416ch ; 74 06 ; 0xf4164 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4166 eltorito.c:451 + jmp near 0431ah ; e9 ae 01 ; 0xf4169 + cmp byte [bp-007f3h], 0aah ; 80 be 0d f8 aa ; 0xf416c eltorito.c:452 + jne short 04166h ; 75 f3 ; 0xf4171 + cmp byte [bp-007f2h], 088h ; 80 be 0e f8 88 ; 0xf4173 eltorito.c:453 + je short 04180h ; 74 06 ; 0xf4178 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf417a eltorito.c:457 + jmp near 0431ah ; e9 9a 01 ; 0xf417d + mov al, byte [bp-007f1h] ; 8a 86 0f f8 ; 0xf4180 eltorito.c:459 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf4184 + mov byte [es:si+001h], al ; 26 88 44 01 ; 0xf4187 + cmp byte [bp-007f1h], 000h ; 80 be 0f f8 00 ; 0xf418b eltorito.c:460 + jne short 04199h ; 75 07 ; 0xf4190 + mov byte [es:si+002h], 0e0h ; 26 c6 44 02 e0 ; 0xf4192 eltorito.c:463 + jmp short 041ach ; eb 13 ; 0xf4197 eltorito.c:465 + cmp byte [bp-007f1h], 004h ; 80 be 0f f8 04 ; 0xf4199 + jnc short 041a7h ; 73 07 ; 0xf419e + mov byte [es:si+002h], 000h ; 26 c6 44 02 00 ; 0xf41a0 eltorito.c:466 + jmp short 041ach ; eb 05 ; 0xf41a5 eltorito.c:467 + mov byte [es:si+002h], 080h ; 26 c6 44 02 80 ; 0xf41a7 eltorito.c:468 + movzx di, byte [bp-00ch] ; 0f b6 7e f4 ; 0xf41ac eltorito.c:470 + mov ax, di ; 89 f8 ; 0xf41b0 + cwd ; 99 ; 0xf41b2 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf41b3 + sar ax, 1 ; d1 f8 ; 0xf41b5 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf41b7 + mov byte [es:si+003h], al ; 26 88 44 03 ; 0xf41ba + mov ax, di ; 89 f8 ; 0xf41be eltorito.c:471 + cwd ; 99 ; 0xf41c0 + mov bx, strict word 00002h ; bb 02 00 ; 0xf41c1 + idiv bx ; f7 fb ; 0xf41c4 + mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf41c6 + mov di, word [bp-007f0h] ; 8b be 10 f8 ; 0xf41ca eltorito.c:473 + test di, di ; 85 ff ; 0xf41ce eltorito.c:474 + jne short 041d5h ; 75 03 ; 0xf41d0 + mov di, 007c0h ; bf c0 07 ; 0xf41d2 eltorito.c:475 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf41d5 eltorito.c:477 + mov word [es:si+00ch], di ; 26 89 7c 0c ; 0xf41d8 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf41dc eltorito.c:478 + mov dx, word [bp-007ech] ; 8b 96 14 f8 ; 0xf41e2 eltorito.c:480 + mov word [es:si+00eh], dx ; 26 89 54 0e ; 0xf41e6 eltorito.c:481 + test dx, dx ; 85 d2 ; 0xf41ea eltorito.c:486 + je short 041f4h ; 74 06 ; 0xf41ec + cmp dx, 00400h ; 81 fa 00 04 ; 0xf41ee + jbe short 041fah ; 76 06 ; 0xf41f2 + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf41f4 eltorito.c:487 + jmp near 0431ah ; e9 20 01 ; 0xf41f7 + mov ax, word [bp-007eah] ; 8b 86 16 f8 ; 0xf41fa eltorito.c:489 + mov bx, word [bp-007e8h] ; 8b 9e 18 f8 ; 0xf41fe + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf4202 eltorito.c:490 + mov word [es:si+00ah], bx ; 26 89 5c 0a ; 0xf4206 + call 03c5ah ; e8 4d fa ; 0xf420a eltorito.c:496 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf420d + mov word [es:si+016h], strict word 00000h ; 26 c7 44 16 00 00 ; 0xf4210 + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf4216 + mov ax, word [es:si+016h] ; 26 8b 44 16 ; 0xf421a eltorito.c:497 + mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf421e + test bx, bx ; 85 db ; 0xf4222 + jne short 04230h ; 75 0a ; 0xf4224 + test ax, ax ; 85 c0 ; 0xf4226 + jne short 04230h ; 75 06 ; 0xf4228 + mov ax, strict word 0000dh ; b8 0d 00 ; 0xf422a eltorito.c:498 + jmp near 0431ah ; e9 ea 00 ; 0xf422d + push di ; 57 ; 0xf4230 eltorito.c:501 + push strict byte 00000h ; 6a 00 ; 0xf4231 + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf4233 + xor bx, bx ; 31 db ; 0xf4237 + xor cx, cx ; 31 c9 ; 0xf4239 + call 03f03h ; e8 c5 fc ; 0xf423b + test ax, ax ; 85 c0 ; 0xf423e eltorito.c:502 + je short 04248h ; 74 06 ; 0xf4240 + mov ax, strict word 0000eh ; b8 0e 00 ; 0xf4242 eltorito.c:503 + jmp near 0431ah ; e9 d2 00 ; 0xf4245 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf4248 eltorito.c:508 + mov al, byte [es:si+001h] ; 26 8a 44 01 ; 0xf424b + cmp AL, strict byte 002h ; 3c 02 ; 0xf424f + jc short 0425fh ; 72 0c ; 0xf4251 + jbe short 04277h ; 76 22 ; 0xf4253 + cmp AL, strict byte 004h ; 3c 04 ; 0xf4255 + je short 0428dh ; 74 34 ; 0xf4257 + cmp AL, strict byte 003h ; 3c 03 ; 0xf4259 + je short 04282h ; 74 25 ; 0xf425b + jmp short 042d1h ; eb 72 ; 0xf425d + cmp AL, strict byte 001h ; 3c 01 ; 0xf425f + jne short 042d1h ; 75 6e ; 0xf4261 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf4263 eltorito.c:510 + 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; 0xf4266 + mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00 ; 0xf426f eltorito.c:512 + jmp short 042d1h ; eb 5a ; 0xf4275 eltorito.c:513 + 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; 0xf4277 eltorito.c:515 + jmp short 0426fh ; eb ed ; 0xf4280 + 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; 0xf4282 eltorito.c:520 + jmp short 0426fh ; eb e2 ; 0xf428b + mov bx, 001c4h ; bb c4 01 ; 0xf428d eltorito.c:48 + mov es, di ; 8e c7 ; 0xf4290 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4292 + and AL, strict byte 03fh ; 24 3f ; 0xf4295 eltorito.c:49 + xor ah, ah ; 30 e4 ; 0xf4297 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf4299 + mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf429c + mov es, di ; 8e c7 ; 0xf42a0 eltorito.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf42a2 + and ax, 000c0h ; 25 c0 00 ; 0xf42a5 eltorito.c:49 + mov dx, ax ; 89 c2 ; 0xf42a8 + sal dx, 002h ; c1 e2 02 ; 0xf42aa + mov bx, 001c5h ; bb c5 01 ; 0xf42ad eltorito.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf42b0 + xor ah, ah ; 30 e4 ; 0xf42b3 eltorito.c:49 + add ax, dx ; 01 d0 ; 0xf42b5 + inc ax ; 40 ; 0xf42b7 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf42b8 + mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf42bb + mov bx, 001c3h ; bb c3 01 ; 0xf42bf eltorito.c:48 + mov es, di ; 8e c7 ; 0xf42c2 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf42c4 + xor ah, ah ; 30 e4 ; 0xf42c7 eltorito.c:49 + inc ax ; 40 ; 0xf42c9 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf42ca + mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf42cd + mov es, [bp-010h] ; 8e 46 f0 ; 0xf42d1 eltorito.c:533 + cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf42d4 + je short 04301h ; 74 26 ; 0xf42d9 + cmp byte [es:si+002h], 000h ; 26 80 7c 02 00 ; 0xf42db eltorito.c:535 + jne short 042f3h ; 75 11 ; 0xf42e0 + mov bx, strict word 00010h ; bb 10 00 ; 0xf42e2 eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf42e5 + mov es, ax ; 8e c0 ; 0xf42e8 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf42ea + or AL, strict byte 041h ; 0c 41 ; 0xf42ed eltorito.c:49 + mov di, bx ; 89 df ; 0xf42ef eltorito.c:53 + jmp short 042feh ; eb 0b ; 0xf42f1 eltorito.c:537 + mov di, 002ach ; bf ac 02 ; 0xf42f3 eltorito.c:48 + mov es, [bp-012h] ; 8e 46 ee ; 0xf42f6 + mov al, byte [es:di] ; 26 8a 05 ; 0xf42f9 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf42fc eltorito.c:49 + mov byte [es:di], al ; 26 88 05 ; 0xf42fe eltorito.c:53 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf4301 eltorito.c:542 + cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf4304 + je short 0430fh ; 74 04 ; 0xf4309 + mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf430b eltorito.c:543 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf430f eltorito.c:546 + movzx ax, byte [es:si+002h] ; 26 0f b6 44 02 ; 0xf4312 + sal ax, 008h ; c1 e0 08 ; 0xf4317 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf431a eltorito.c:547 + pop di ; 5f ; 0xf431d + pop si ; 5e ; 0xf431e + pop dx ; 5a ; 0xf431f + pop cx ; 59 ; 0xf4320 + pop bx ; 5b ; 0xf4321 + pop bp ; 5d ; 0xf4322 + retn ; c3 ; 0xf4323 + ; disGetNextSymbol 0xf4324 LB 0x6a78 -> off=0x59 cb=00000000000003eb uValue=00000000000f2d7d '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, 04bh, 047h, 026h + db 044h, 071h, 044h, 095h, 044h, 066h, 044h, 095h, 044h, 066h, 044h, 086h, 045h, 04bh, 044h, 04bh + db 047h, 04bh, 047h, 04bh, 044h, 04bh, 044h, 04bh, 044h, 04bh, 044h, 04bh, 044h, 02dh, 046h, 04bh + db 044h, 04bh, 047h, 036h, 046h, 049h, 046h, 04bh, 047h, 049h, 046h, 04bh, 047h, 04bh, 047h, 049h + db 046h, 00eh, 047h, 04bh, 047h, 04bh, 047h, 04bh, 047h +int13_cdemu: ; 0xf437d LB 0x3eb + push bp ; 55 ; 0xf437d eltorito.c:557 + mov bp, sp ; 89 e5 ; 0xf437e + push si ; 56 ; 0xf4380 + push di ; 57 ; 0xf4381 + sub sp, strict byte 00018h ; 83 ec 18 ; 0xf4382 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4385 eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4388 + mov es, ax ; 8e c0 ; 0xf438b + mov ax, word [es:bx] ; 26 8b 07 ; 0xf438d + mov si, 00316h ; be 16 03 ; 0xf4390 eltorito.c:572 + mov dx, ax ; 89 c2 ; 0xf4393 + mov bx, si ; 89 f3 ; 0xf4395 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf4397 + mov word [bp-00ch], strict word 0005eh ; c7 46 f4 5e 00 ; 0xf439a eltorito.c:573 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf439f + mov es, ax ; 8e c0 ; 0xf43a2 eltorito.c:580 + mov al, byte [es:si+003h] ; 26 8a 44 03 ; 0xf43a4 + add al, al ; 00 c0 ; 0xf43a8 + mov byte [bp-006h], al ; 88 46 fa ; 0xf43aa + mov al, byte [es:si+004h] ; 26 8a 44 04 ; 0xf43ad eltorito.c:581 + add byte [bp-006h], al ; 00 46 fa ; 0xf43b1 + mov di, strict word 00074h ; bf 74 00 ; 0xf43b4 eltorito.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf43b7 + mov es, ax ; 8e c0 ; 0xf43ba + mov byte [es:di], 000h ; 26 c6 05 00 ; 0xf43bc + mov es, dx ; 8e c2 ; 0xf43c0 eltorito.c:586 + cmp byte [es:si], 000h ; 26 80 3c 00 ; 0xf43c2 + je short 043d6h ; 74 0e ; 0xf43c6 + movzx dx, byte [es:si+002h] ; 26 0f b6 54 02 ; 0xf43c8 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf43cd + xor ah, ah ; 30 e4 ; 0xf43d0 + cmp dx, ax ; 39 c2 ; 0xf43d2 + je short 043ffh ; 74 29 ; 0xf43d4 + mov bx, 00e06h ; bb 06 0e ; 0xf43d6 eltorito.c:587 + mov cx, ds ; 8c d9 ; 0xf43d9 + mov ax, strict word 00004h ; b8 04 00 ; 0xf43db + call 01a27h ; e8 46 d6 ; 0xf43de + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf43e1 + xor ah, ah ; 30 e4 ; 0xf43e4 + push ax ; 50 ; 0xf43e6 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf43e7 + shr ax, 008h ; c1 e8 08 ; 0xf43ea + push ax ; 50 ; 0xf43ed + push 003beh ; 68 be 03 ; 0xf43ee + push 003cah ; 68 ca 03 ; 0xf43f1 + push strict byte 00004h ; 6a 04 ; 0xf43f4 + call 01a68h ; e8 6f d6 ; 0xf43f6 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf43f9 + jmp near 04728h ; e9 29 03 ; 0xf43fc eltorito.c:588 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf43ff eltorito.c:591 + shr ax, 008h ; c1 e8 08 ; 0xf4402 + cmp ax, strict word 00050h ; 3d 50 00 ; 0xf4405 + jnbe near 0474bh ; 0f 87 3f 03 ; 0xf4408 + push CS ; 0e ; 0xf440c + pop ES ; 07 ; 0xf440d + mov cx, strict word 0001eh ; b9 1e 00 ; 0xf440e + mov di, 04324h ; bf 24 43 ; 0xf4411 + repne scasb ; f2 ae ; 0xf4414 + sal cx, 1 ; d1 e1 ; 0xf4416 + mov di, cx ; 89 cf ; 0xf4418 + mov dx, word [cs:di+04341h] ; 2e 8b 95 41 43 ; 0xf441a + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf441f + xor ah, ah ; 30 e4 ; 0xf4422 + jmp dx ; ff e2 ; 0xf4424 + movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf4426 eltorito.c:594 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf442a + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf442d + add bx, word [bp-00ch] ; 03 5e f4 ; 0xf4430 + movzx bx, byte [es:bx+01eh] ; 26 0f b6 5f 1e ; 0xf4433 + add bx, bx ; 01 db ; 0xf4438 + cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00 ; 0xf443a + je near 0444bh ; 0f 84 08 00 ; 0xf443f + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4443 eltorito.c:596 + call word [word bx+00076h] ; ff 97 76 00 ; 0xf4447 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf444b eltorito.c:598 + mov bx, strict word 00074h ; bb 74 00 ; 0xf444f + mov ax, strict word 00040h ; b8 40 00 ; 0xf4452 + mov es, ax ; 8e c0 ; 0xf4455 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4457 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf445b + lea sp, [bp-004h] ; 8d 66 fc ; 0xf445f + pop di ; 5f ; 0xf4462 + pop si ; 5e ; 0xf4463 + pop bp ; 5d ; 0xf4464 + retn ; c3 ; 0xf4465 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4466 eltorito.c:614 + xor ah, ah ; 30 e4 ; 0xf4469 + or ah, 003h ; 80 cc 03 ; 0xf446b + jmp near 04730h ; e9 bf 02 ; 0xf446e eltorito.c:615 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4471 eltorito.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf4474 + mov es, dx ; 8e c2 ; 0xf4477 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf4479 + movzx bx, dl ; 0f b6 da ; 0xf447c eltorito.c:620 + sal bx, 008h ; c1 e3 08 ; 0xf447f + or ax, bx ; 09 d8 ; 0xf4482 + mov word [bp+016h], ax ; 89 46 16 ; 0xf4484 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4487 eltorito.c:53 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf448a + test dl, dl ; 84 d2 ; 0xf448e eltorito.c:624 + je short 0444fh ; 74 bd ; 0xf4490 + jmp near 04744h ; e9 af 02 ; 0xf4492 eltorito.c:625 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4495 eltorito.c:632 + mov si, word [es:bx+014h] ; 26 8b 77 14 ; 0xf4498 + mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf449c eltorito.c:633 + mov cx, word [es:bx+010h] ; 26 8b 4f 10 ; 0xf44a0 eltorito.c:634 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf44a4 eltorito.c:636 + and dx, strict byte 0003fh ; 83 e2 3f ; 0xf44a7 + mov word [bp-018h], dx ; 89 56 e8 ; 0xf44aa + mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf44ad eltorito.c:637 + and bx, 000c0h ; 81 e3 c0 00 ; 0xf44b0 + sal bx, 002h ; c1 e3 02 ; 0xf44b4 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf44b7 + shr dx, 008h ; c1 ea 08 ; 0xf44ba + or dx, bx ; 09 da ; 0xf44bd + mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf44bf eltorito.c:638 + shr bx, 008h ; c1 eb 08 ; 0xf44c2 + mov word [bp-014h], bx ; 89 5e ec ; 0xf44c5 + mov di, word [bp+016h] ; 8b 7e 16 ; 0xf44c8 eltorito.c:639 + and di, 000ffh ; 81 e7 ff 00 ; 0xf44cb + jne short 044d4h ; 75 03 ; 0xf44cf eltorito.c:647 + jmp near 0444bh ; e9 77 ff ; 0xf44d1 eltorito.c:648 + cmp si, word [bp-018h] ; 3b 76 e8 ; 0xf44d4 eltorito.c:651 + jc near 04728h ; 0f 82 4d 02 ; 0xf44d7 + cmp dx, ax ; 39 c2 ; 0xf44db + jnc near 04728h ; 0f 83 47 02 ; 0xf44dd + cmp cx, bx ; 39 d9 ; 0xf44e1 + jbe near 04728h ; 0f 86 41 02 ; 0xf44e3 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf44e7 eltorito.c:658 + shr ax, 008h ; c1 e8 08 ; 0xf44ea + cmp ax, strict word 00004h ; 3d 04 00 ; 0xf44ed + jne short 044f5h ; 75 03 ; 0xf44f0 + jmp near 0444bh ; e9 56 ff ; 0xf44f2 eltorito.c:659 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf44f5 eltorito.c:661 + shr ax, 004h ; c1 e8 04 ; 0xf44f8 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf44fb + add bx, ax ; 01 c3 ; 0xf44fe + mov word [bp-010h], bx ; 89 5e f0 ; 0xf4500 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4503 eltorito.c:662 + and ax, strict word 0000fh ; 25 0f 00 ; 0xf4506 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf4509 + mov ax, dx ; 89 d0 ; 0xf450c eltorito.c:665 + xor dx, dx ; 31 d2 ; 0xf450e + mov bx, cx ; 89 cb ; 0xf4510 + xor cx, cx ; 31 c9 ; 0xf4512 + call 0ac60h ; e8 49 67 ; 0xf4514 + xor bx, bx ; 31 db ; 0xf4517 + add ax, word [bp-014h] ; 03 46 ec ; 0xf4519 + adc dx, bx ; 11 da ; 0xf451c + mov bx, si ; 89 f3 ; 0xf451e + xor cx, cx ; 31 c9 ; 0xf4520 + call 0ac60h ; e8 3b 67 ; 0xf4522 + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf4525 + dec bx ; 4b ; 0xf4528 + xor cx, cx ; 31 c9 ; 0xf4529 + add bx, ax ; 01 c3 ; 0xf452b + adc cx, dx ; 11 d1 ; 0xf452d + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf452f eltorito.c:668 + xor al, al ; 30 c0 ; 0xf4532 + or ax, di ; 09 f8 ; 0xf4534 + mov word [bp+016h], ax ; 89 46 16 ; 0xf4536 + push word [bp-010h] ; ff 76 f0 ; 0xf4539 eltorito.c:670 + push word [bp-00eh] ; ff 76 f2 ; 0xf453c + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf453f + mov dx, di ; 89 fa ; 0xf4543 + call 03f03h ; e8 bb f9 ; 0xf4545 + mov dx, ax ; 89 c2 ; 0xf4548 + test al, al ; 84 c0 ; 0xf454a eltorito.c:671 + je near 0444bh ; 0f 84 fb fe ; 0xf454c + mov bx, 00e06h ; bb 06 0e ; 0xf4550 eltorito.c:672 + mov cx, ds ; 8c d9 ; 0xf4553 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4555 + call 01a27h ; e8 cc d4 ; 0xf4558 + movzx ax, dl ; 0f b6 c2 ; 0xf455b + push ax ; 50 ; 0xf455e + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf455f + shr ax, 008h ; c1 e8 08 ; 0xf4562 + push ax ; 50 ; 0xf4565 + push 003beh ; 68 be 03 ; 0xf4566 + push 00400h ; 68 00 04 ; 0xf4569 + push strict byte 00004h ; 6a 04 ; 0xf456c + call 01a68h ; e8 f7 d4 ; 0xf456e + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4571 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4574 eltorito.c:673 + xor ah, ah ; 30 e4 ; 0xf4577 + or ah, 002h ; 80 cc 02 ; 0xf4579 + mov word [bp+016h], ax ; 89 46 16 ; 0xf457c + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf457f eltorito.c:674 + jmp near 04733h ; e9 ad 01 ; 0xf4583 eltorito.c:675 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4586 eltorito.c:682 + mov si, word [es:bx+014h] ; 26 8b 77 14 ; 0xf4589 + mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf458d eltorito.c:683 + dec ax ; 48 ; 0xf4591 + mov cx, word [es:bx+010h] ; 26 8b 4f 10 ; 0xf4592 eltorito.c:684 + dec cx ; 49 ; 0xf4596 + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf4597 eltorito.c:686 + mov dx, word [bp+010h] ; 8b 56 10 ; 0xf459b eltorito.c:687 + xor dl, dl ; 30 d2 ; 0xf459e + mov di, word [bp+014h] ; 8b 7e 14 ; 0xf45a0 eltorito.c:688 + and di, 000ffh ; 81 e7 ff 00 ; 0xf45a3 + mov word [bp-01ch], di ; 89 7e e4 ; 0xf45a7 + mov di, ax ; 89 c7 ; 0xf45aa + and di, 000ffh ; 81 e7 ff 00 ; 0xf45ac + sal di, 008h ; c1 e7 08 ; 0xf45b0 + mov word [bp-01ah], di ; 89 7e e6 ; 0xf45b3 + mov di, word [bp-01ch] ; 8b 7e e4 ; 0xf45b6 + or di, word [bp-01ah] ; 0b 7e e6 ; 0xf45b9 + mov word [bp+014h], di ; 89 7e 14 ; 0xf45bc + shr ax, 002h ; c1 e8 02 ; 0xf45bf eltorito.c:689 + xor ah, ah ; 30 e4 ; 0xf45c2 + and AL, strict byte 0c0h ; 24 c0 ; 0xf45c4 + and si, strict byte 0003fh ; 83 e6 3f ; 0xf45c6 + or si, ax ; 09 c6 ; 0xf45c9 + mov ax, di ; 89 f8 ; 0xf45cb + xor al, al ; 30 c0 ; 0xf45cd + or ax, si ; 09 f0 ; 0xf45cf + mov word [bp+014h], ax ; 89 46 14 ; 0xf45d1 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf45d4 eltorito.c:690 + xor ah, ah ; 30 e4 ; 0xf45d7 + sal cx, 008h ; c1 e1 08 ; 0xf45d9 + or ax, cx ; 09 c8 ; 0xf45dc + mov word [bp+012h], ax ; 89 46 12 ; 0xf45de + xor al, al ; 30 c0 ; 0xf45e1 eltorito.c:691 + or AL, strict byte 002h ; 0c 02 ; 0xf45e3 + mov word [bp+012h], ax ; 89 46 12 ; 0xf45e5 + mov al, byte [es:bx+001h] ; 26 8a 47 01 ; 0xf45e8 eltorito.c:694 + mov word [bp+010h], dx ; 89 56 10 ; 0xf45ec + cmp AL, strict byte 003h ; 3c 03 ; 0xf45ef + je short 0460fh ; 74 1c ; 0xf45f1 + cmp AL, strict byte 002h ; 3c 02 ; 0xf45f3 + je short 04607h ; 74 10 ; 0xf45f5 + cmp AL, strict byte 001h ; 3c 01 ; 0xf45f7 + jne short 04614h ; 75 19 ; 0xf45f9 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf45fb eltorito.c:695 + xor al, al ; 30 c0 ; 0xf45fe + or AL, strict byte 002h ; 0c 02 ; 0xf4600 + mov word [bp+010h], ax ; 89 46 10 ; 0xf4602 + jmp short 04614h ; eb 0d ; 0xf4605 + or dl, 004h ; 80 ca 04 ; 0xf4607 eltorito.c:696 + mov word [bp+010h], dx ; 89 56 10 ; 0xf460a + jmp short 04614h ; eb 05 ; 0xf460d + or dl, 005h ; 80 ca 05 ; 0xf460f eltorito.c:697 + jmp short 0460ah ; eb f6 ; 0xf4612 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4614 eltorito.c:701 + cmp byte [es:bx+001h], 004h ; 26 80 7f 01 04 ; 0xf4617 + jnc near 0444bh ; 0f 83 2b fe ; 0xf461c + mov word [bp+008h], 0efc7h ; c7 46 08 c7 ef ; 0xf4620 eltorito.c:702 + mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf4625 eltorito.c:703 + jmp near 0444bh ; e9 1e fe ; 0xf462a eltorito.c:705 + or ah, 003h ; 80 cc 03 ; 0xf462d eltorito.c:710 + mov word [bp+016h], ax ; 89 46 16 ; 0xf4630 + jmp near 0444fh ; e9 19 fe ; 0xf4633 eltorito.c:711 + mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf4636 eltorito.c:715 + or ah, 030h ; 80 cc 30 ; 0xf463b eltorito.c:716 + mov word [bp+016h], ax ; 89 46 16 ; 0xf463e + mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf4641 eltorito.c:717 + jmp near 0444fh ; e9 06 fe ; 0xf4646 eltorito.c:718 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf4649 eltorito.c:726 + mov es, [bp+004h] ; 8e 46 04 ; 0xf464c + mov si, bx ; 89 de ; 0xf464f + mov [bp-012h], es ; 8c 46 ee ; 0xf4651 + mov dx, word [es:bx+002h] ; 26 8b 57 02 ; 0xf4654 eltorito.c:728 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf4658 eltorito.c:729 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf465c + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf465f eltorito.c:730 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf4663 + mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf4666 eltorito.c:733 + mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf466a + or ax, cx ; 09 c8 ; 0xf466e eltorito.c:734 + je short 0468ah ; 74 18 ; 0xf4670 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4672 eltorito.c:735 + shr ax, 008h ; c1 e8 08 ; 0xf4675 + push ax ; 50 ; 0xf4678 + push 003beh ; 68 be 03 ; 0xf4679 + push 00421h ; 68 21 04 ; 0xf467c + push strict byte 00007h ; 6a 07 ; 0xf467f + call 01a68h ; e8 e4 d3 ; 0xf4681 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf4684 + jmp near 04728h ; e9 9e 00 ; 0xf4687 eltorito.c:736 + mov es, [bp-012h] ; 8e 46 ee ; 0xf468a eltorito.c:740 + mov ax, word [es:si+008h] ; 26 8b 44 08 ; 0xf468d + mov cx, word [es:si+00ah] ; 26 8b 4c 0a ; 0xf4691 + mov di, word [bp+016h] ; 8b 7e 16 ; 0xf4695 eltorito.c:743 + shr di, 008h ; c1 ef 08 ; 0xf4698 + cmp di, strict byte 00044h ; 83 ff 44 ; 0xf469b + je near 0444bh ; 0f 84 a9 fd ; 0xf469e + cmp di, strict byte 00047h ; 83 ff 47 ; 0xf46a2 + jne short 046aah ; 75 03 ; 0xf46a5 + jmp near 0444bh ; e9 a1 fd ; 0xf46a7 eltorito.c:744 + push word [bp-010h] ; ff 76 f0 ; 0xf46aa eltorito.c:749 + push word [bp-00eh] ; ff 76 f2 ; 0xf46ad + movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf46b0 + mov word [bp-01ah], bx ; 89 5e e6 ; 0xf46b4 + mov bx, ax ; 89 c3 ; 0xf46b7 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf46b9 + call 03f03h ; e8 44 f8 ; 0xf46bc + mov word [bp-016h], ax ; 89 46 ea ; 0xf46bf + les bx, [bp-00ch] ; c4 5e f4 ; 0xf46c2 eltorito.c:750 + mov ax, word [es:bx+01ah] ; 26 8b 47 1a ; 0xf46c5 + mov dx, word [es:bx+01ch] ; 26 8b 57 1c ; 0xf46c9 + mov cx, strict word 00009h ; b9 09 00 ; 0xf46cd + shr dx, 1 ; d1 ea ; 0xf46d0 + rcr ax, 1 ; d1 d8 ; 0xf46d2 + loop 046d0h ; e2 fa ; 0xf46d4 + mov es, [bp-012h] ; 8e 46 ee ; 0xf46d6 eltorito.c:751 + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf46d9 + cmp byte [bp-016h], 000h ; 80 7e ea 00 ; 0xf46dd eltorito.c:753 + je near 0444bh ; 0f 84 66 fd ; 0xf46e1 + mov bx, 00e06h ; bb 06 0e ; 0xf46e5 eltorito.c:754 + mov cx, ds ; 8c d9 ; 0xf46e8 + mov ax, strict word 00004h ; b8 04 00 ; 0xf46ea + call 01a27h ; e8 37 d3 ; 0xf46ed + movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf46f0 + push ax ; 50 ; 0xf46f4 + push di ; 57 ; 0xf46f5 + push 003beh ; 68 be 03 ; 0xf46f6 + push 0044ah ; 68 4a 04 ; 0xf46f9 + push strict byte 00004h ; 6a 04 ; 0xf46fc + call 01a68h ; e8 67 d3 ; 0xf46fe + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4701 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4704 eltorito.c:755 + xor ah, ah ; 30 e4 ; 0xf4707 + or ah, 00ch ; 80 cc 0c ; 0xf4709 + jmp short 04730h ; eb 22 ; 0xf470c + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf470e eltorito.c:763 + push ax ; 50 ; 0xf4712 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf4713 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf4716 + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf4719 + mov cx, word [bp-00ah] ; 8b 4e f6 ; 0xf471c + call 05933h ; e8 11 12 ; 0xf471f + test ax, ax ; 85 c0 ; 0xf4722 + je near 0444bh ; 0f 84 23 fd ; 0xf4724 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4728 eltorito.c:764 + xor ah, ah ; 30 e4 ; 0xf472b + or ah, 001h ; 80 cc 01 ; 0xf472d + mov word [bp+016h], ax ; 89 46 16 ; 0xf4730 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4733 + shr ax, 008h ; c1 e8 08 ; 0xf4736 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4739 + mov dx, strict word 00040h ; ba 40 00 ; 0xf473c + mov es, dx ; 8e c2 ; 0xf473f + mov byte [es:bx], al ; 26 88 07 ; 0xf4741 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf4744 + jmp near 0445fh ; e9 14 fd ; 0xf4748 + mov bx, 00e06h ; bb 06 0e ; 0xf474b eltorito.c:780 + mov cx, ds ; 8c d9 ; 0xf474e + mov ax, strict word 00004h ; b8 04 00 ; 0xf4750 + call 01a27h ; e8 d1 d2 ; 0xf4753 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4756 + shr ax, 008h ; c1 e8 08 ; 0xf4759 + push ax ; 50 ; 0xf475c + push 003beh ; 68 be 03 ; 0xf475d + push 0046ch ; 68 6c 04 ; 0xf4760 + push strict byte 00004h ; 6a 04 ; 0xf4763 + jmp near 04681h ; e9 19 ff ; 0xf4765 + ; disGetNextSymbol 0xf4768 LB 0x6634 -> off=0x59 cb=0000000000000301 uValue=00000000000f31c1 '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, 0a5h, 04ah, 009h + db 04ah, 066h, 048h, 0a5h, 04ah, 05bh, 048h, 0a5h, 04ah, 05bh, 048h, 0a5h, 04ah, 009h, 04ah, 0a5h + db 04ah, 0a5h, 04ah, 009h, 04ah, 009h, 04ah, 009h, 04ah, 009h, 04ah, 009h, 04ah, 08ch, 048h, 009h + db 04ah, 0a5h, 04ah, 092h, 048h, 0a5h, 048h, 05bh, 048h, 0a5h, 048h, 06dh, 049h, 024h, 04ah, 0a5h + db 048h, 047h, 04ah, 07fh, 04ah, 087h, 04ah, 0a5h, 04ah +int13_cdrom: ; 0xf47c1 LB 0x301 + push bp ; 55 ; 0xf47c1 eltorito.c:805 + mov bp, sp ; 89 e5 ; 0xf47c2 + push si ; 56 ; 0xf47c4 + push di ; 57 ; 0xf47c5 + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf47c6 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf47c9 eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf47cc + mov es, ax ; 8e c0 ; 0xf47cf + mov ax, word [es:bx] ; 26 8b 07 ; 0xf47d1 + mov si, strict word 0005eh ; be 5e 00 ; 0xf47d4 eltorito.c:814 + mov word [bp-006h], ax ; 89 46 fa ; 0xf47d7 + mov bx, strict word 00074h ; bb 74 00 ; 0xf47da eltorito.c:53 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf47dd + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf47e1 eltorito.c:821 + xor ah, ah ; 30 e4 ; 0xf47e4 + cmp ax, 000e0h ; 3d e0 00 ; 0xf47e6 + jc short 047f0h ; 72 05 ; 0xf47e9 + cmp ax, 000f4h ; 3d f4 00 ; 0xf47eb + jc short 0480eh ; 72 1e ; 0xf47ee + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf47f0 eltorito.c:822 + xor ah, ah ; 30 e4 ; 0xf47f3 + push ax ; 50 ; 0xf47f5 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf47f6 + shr ax, 008h ; c1 e8 08 ; 0xf47f9 + push ax ; 50 ; 0xf47fc + push 0049ch ; 68 9c 04 ; 0xf47fd + push 004a8h ; 68 a8 04 ; 0xf4800 + push strict byte 00004h ; 6a 04 ; 0xf4803 + call 01a68h ; e8 60 d2 ; 0xf4805 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4808 + jmp near 04a5dh ; e9 4f 02 ; 0xf480b eltorito.c:823 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf480e eltorito.c:827 + xor ah, ah ; 30 e4 ; 0xf4811 + mov es, [bp-006h] ; 8e 46 fa ; 0xf4813 + mov bx, si ; 89 f3 ; 0xf4816 + add bx, ax ; 01 c3 ; 0xf4818 + mov dl, byte [es:bx+00184h] ; 26 8a 97 84 01 ; 0xf481a + cmp dl, 014h ; 80 fa 14 ; 0xf481f eltorito.c:830 + jc short 04834h ; 72 10 ; 0xf4822 + push ax ; 50 ; 0xf4824 eltorito.c:831 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4825 + shr ax, 008h ; c1 e8 08 ; 0xf4828 + push ax ; 50 ; 0xf482b + push 0049ch ; 68 9c 04 ; 0xf482c + push 004d3h ; 68 d3 04 ; 0xf482f + jmp short 04803h ; eb cf ; 0xf4832 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4834 eltorito.c:835 + shr ax, 008h ; c1 e8 08 ; 0xf4837 + cmp ax, strict word 00050h ; 3d 50 00 ; 0xf483a + jnbe near 04aa5h ; 0f 87 64 02 ; 0xf483d + push CS ; 0e ; 0xf4841 + pop ES ; 07 ; 0xf4842 + mov cx, strict word 0001eh ; b9 1e 00 ; 0xf4843 + mov di, 04768h ; bf 68 47 ; 0xf4846 + repne scasb ; f2 ae ; 0xf4849 + sal cx, 1 ; d1 e1 ; 0xf484b + mov di, cx ; 89 cf ; 0xf484d + mov bx, word [cs:di+04785h] ; 2e 8b 9d 85 47 ; 0xf484f + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4854 + xor ah, ah ; 30 e4 ; 0xf4857 + jmp bx ; ff e3 ; 0xf4859 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf485b eltorito.c:853 + xor ah, ah ; 30 e4 ; 0xf485e + or ah, 003h ; 80 cc 03 ; 0xf4860 + jmp near 04a65h ; e9 ff 01 ; 0xf4863 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4866 eltorito.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf4869 + mov es, dx ; 8e c2 ; 0xf486c + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf486e + movzx bx, dl ; 0f b6 da ; 0xf4871 eltorito.c:859 + sal bx, 008h ; c1 e3 08 ; 0xf4874 + or ax, bx ; 09 d8 ; 0xf4877 + mov word [bp+018h], ax ; 89 46 18 ; 0xf4879 + mov bx, strict word 00074h ; bb 74 00 ; 0xf487c eltorito.c:53 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf487f + test dl, dl ; 84 d2 ; 0xf4883 eltorito.c:863 + je near 04a0dh ; 0f 84 84 01 ; 0xf4885 + jmp near 04a79h ; e9 ed 01 ; 0xf4889 eltorito.c:864 + or ah, 002h ; 80 cc 02 ; 0xf488c eltorito.c:870 + jmp near 04a65h ; e9 d3 01 ; 0xf488f + mov word [bp+012h], 0aa55h ; c7 46 12 55 aa ; 0xf4892 eltorito.c:875 + or ah, 030h ; 80 cc 30 ; 0xf4897 eltorito.c:876 + mov word [bp+018h], ax ; 89 46 18 ; 0xf489a + mov word [bp+016h], strict word 00007h ; c7 46 16 07 00 ; 0xf489d eltorito.c:877 + jmp near 04a0dh ; e9 68 01 ; 0xf48a2 eltorito.c:878 + mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf48a5 eltorito.c:886 + mov es, [bp+006h] ; 8e 46 06 ; 0xf48a8 + mov di, bx ; 89 df ; 0xf48ab + mov [bp-00ah], es ; 8c 46 f6 ; 0xf48ad + mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf48b0 eltorito.c:888 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf48b4 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf48b7 eltorito.c:889 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf48bb + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf48be eltorito.c:890 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf48c2 + mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf48c5 eltorito.c:893 + mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf48c9 + or ax, cx ; 09 c8 ; 0xf48cd eltorito.c:894 + je short 048e9h ; 74 18 ; 0xf48cf + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf48d1 eltorito.c:895 + shr ax, 008h ; c1 e8 08 ; 0xf48d4 + push ax ; 50 ; 0xf48d7 + push 0049ch ; 68 9c 04 ; 0xf48d8 + push 00421h ; 68 21 04 ; 0xf48db + push strict byte 00007h ; 6a 07 ; 0xf48de + call 01a68h ; e8 85 d1 ; 0xf48e0 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf48e3 + jmp near 04a5dh ; e9 74 01 ; 0xf48e6 eltorito.c:896 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf48e9 eltorito.c:900 + mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf48ec + mov cx, word [es:di+00ah] ; 26 8b 4d 0a ; 0xf48f0 + mov bx, word [bp+018h] ; 8b 5e 18 ; 0xf48f4 eltorito.c:903 + shr bx, 008h ; c1 eb 08 ; 0xf48f7 + mov word [bp-008h], bx ; 89 5e f8 ; 0xf48fa + cmp bx, strict byte 00044h ; 83 fb 44 ; 0xf48fd + je near 04a09h ; 0f 84 05 01 ; 0xf4900 + cmp bx, strict byte 00047h ; 83 fb 47 ; 0xf4904 + je near 04a09h ; 0f 84 fe 00 ; 0xf4907 + push dword [bp-010h] ; 66 ff 76 f0 ; 0xf490b eltorito.c:909 + xor dh, dh ; 30 f6 ; 0xf490f + mov word [bp-012h], dx ; 89 56 ee ; 0xf4911 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf4914 + mov bx, ax ; 89 c3 ; 0xf4917 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf4919 + call 03e84h ; e8 65 f5 ; 0xf491c + mov dx, ax ; 89 c2 ; 0xf491f + mov es, [bp-006h] ; 8e 46 fa ; 0xf4921 eltorito.c:910 + mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4924 + mov bx, word [es:si+01ch] ; 26 8b 5c 1c ; 0xf4928 + mov cx, strict word 0000bh ; b9 0b 00 ; 0xf492c + shr bx, 1 ; d1 eb ; 0xf492f + rcr ax, 1 ; d1 d8 ; 0xf4931 + loop 0492fh ; e2 fa ; 0xf4933 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf4935 eltorito.c:911 + mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf4938 + test dl, dl ; 84 d2 ; 0xf493c eltorito.c:913 + je near 04a09h ; 0f 84 c7 00 ; 0xf493e + mov bx, 00e06h ; bb 06 0e ; 0xf4942 eltorito.c:914 + mov cx, ds ; 8c d9 ; 0xf4945 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4947 + call 01a27h ; e8 da d0 ; 0xf494a + movzx ax, dl ; 0f b6 c2 ; 0xf494d + push ax ; 50 ; 0xf4950 + push word [bp-008h] ; ff 76 f8 ; 0xf4951 + push 0049ch ; 68 9c 04 ; 0xf4954 + push 0044ah ; 68 4a 04 ; 0xf4957 + push strict byte 00004h ; 6a 04 ; 0xf495a + call 01a68h ; e8 09 d1 ; 0xf495c + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf495f + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4962 eltorito.c:915 + xor ah, ah ; 30 e4 ; 0xf4965 + or ah, 00ch ; 80 cc 0c ; 0xf4967 + jmp near 04a65h ; e9 f8 00 ; 0xf496a + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf496d eltorito.c:923 + jnbe near 04a5dh ; 0f 87 e9 00 ; 0xf4970 + movzx bx, dl ; 0f b6 da ; 0xf4974 eltorito.c:926 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf4977 + mov es, [bp-006h] ; 8e 46 fa ; 0xf497a + add bx, si ; 01 f3 ; 0xf497d + mov bl, byte [es:bx+021h] ; 26 8a 5f 21 ; 0xf497f + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf4983 eltorito.c:928 + je short 049fah ; 74 72 ; 0xf4986 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf4988 + je short 049c8h ; 74 3b ; 0xf498b + test ax, ax ; 85 c0 ; 0xf498d + jne near 04a09h ; 0f 85 76 00 ; 0xf498f + cmp bl, 0ffh ; 80 fb ff ; 0xf4993 eltorito.c:930 + jne short 049aah ; 75 12 ; 0xf4996 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4998 eltorito.c:931 + xor ah, ah ; 30 e4 ; 0xf499b + or ah, 0b4h ; 80 cc b4 ; 0xf499d + mov word [bp+018h], ax ; 89 46 18 ; 0xf49a0 + xor al, al ; 30 c0 ; 0xf49a3 eltorito.c:932 + or AL, strict byte 001h ; 0c 01 ; 0xf49a5 + jmp near 04a65h ; e9 bb 00 ; 0xf49a7 + movzx ax, dl ; 0f b6 c2 ; 0xf49aa eltorito.c:934 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf49ad + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf49b0 eltorito.c:935 + mov es, [bp-006h] ; 8e 46 fa ; 0xf49b2 + add si, ax ; 01 c6 ; 0xf49b5 + mov byte [es:si+021h], bl ; 26 88 5c 21 ; 0xf49b7 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf49bb eltorito.c:936 + xor al, al ; 30 c0 ; 0xf49be + or AL, strict byte 001h ; 0c 01 ; 0xf49c0 + mov word [bp+018h], ax ; 89 46 18 ; 0xf49c2 + jmp near 04a09h ; e9 41 00 ; 0xf49c5 eltorito.c:937 + test bl, bl ; 84 db ; 0xf49c8 eltorito.c:939 + jne short 049d8h ; 75 0c ; 0xf49ca + or ah, 0b0h ; 80 cc b0 ; 0xf49cc eltorito.c:940 + mov word [bp+018h], ax ; 89 46 18 ; 0xf49cf + mov byte [bp+018h], bl ; 88 5e 18 ; 0xf49d2 eltorito.c:941 + jmp near 04a68h ; e9 90 00 ; 0xf49d5 eltorito.c:942 + movzx ax, dl ; 0f b6 c2 ; 0xf49d8 eltorito.c:943 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf49db + db 0feh, 0cbh + ; dec bl ; fe cb ; 0xf49de eltorito.c:944 + mov es, [bp-006h] ; 8e 46 fa ; 0xf49e0 + add si, ax ; 01 c6 ; 0xf49e3 + mov byte [es:si+021h], bl ; 26 88 5c 21 ; 0xf49e5 + test bl, bl ; 84 db ; 0xf49e9 eltorito.c:945 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf49eb + movzx dx, al ; 0f b6 d0 ; 0xf49ee + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf49f1 + xor al, al ; 30 c0 ; 0xf49f4 + or ax, dx ; 09 d0 ; 0xf49f6 + jmp short 049c2h ; eb c8 ; 0xf49f8 + test bl, bl ; 84 db ; 0xf49fa eltorito.c:948 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf49fc + xor ah, ah ; 30 e4 ; 0xf49ff + mov dx, word [bp+018h] ; 8b 56 18 ; 0xf4a01 + mov dl, al ; 88 c2 ; 0xf4a04 + mov word [bp+018h], dx ; 89 56 18 ; 0xf4a06 + mov byte [bp+019h], 000h ; c6 46 19 00 ; 0xf4a09 eltorito.c:951 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4a0d + mov ax, strict word 00040h ; b8 40 00 ; 0xf4a10 + mov es, ax ; 8e c0 ; 0xf4a13 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4a15 + and byte [bp+01eh], 0feh ; 80 66 1e fe ; 0xf4a19 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf4a1d + pop di ; 5f ; 0xf4a20 + pop si ; 5e ; 0xf4a21 + pop bp ; 5d ; 0xf4a22 + retn ; c3 ; 0xf4a23 + movzx bx, dl ; 0f b6 da ; 0xf4a24 eltorito.c:955 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf4a27 + mov es, [bp-006h] ; 8e 46 fa ; 0xf4a2a + add bx, si ; 01 f3 ; 0xf4a2d + mov bl, byte [es:bx+021h] ; 26 8a 5f 21 ; 0xf4a2f + test bl, bl ; 84 db ; 0xf4a33 eltorito.c:957 + je short 04a3ch ; 74 05 ; 0xf4a35 + or ah, 0b1h ; 80 cc b1 ; 0xf4a37 eltorito.c:958 + jmp short 04a65h ; eb 29 ; 0xf4a3a + test dh, dh ; 84 f6 ; 0xf4a3c eltorito.c:980 + je short 04a09h ; 74 c9 ; 0xf4a3e + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4a40 eltorito.c:981 + xor ah, ah ; 30 e4 ; 0xf4a43 + jmp short 04a37h ; eb f0 ; 0xf4a45 + movzx ax, dl ; 0f b6 c2 ; 0xf4a47 eltorito.c:989 + push ax ; 50 ; 0xf4a4a + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf4a4b + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf4a4e + mov bx, si ; 89 f3 ; 0xf4a51 + mov cx, word [bp-006h] ; 8b 4e fa ; 0xf4a53 + call 05933h ; e8 da 0e ; 0xf4a56 + test ax, ax ; 85 c0 ; 0xf4a59 + je short 04a09h ; 74 ac ; 0xf4a5b + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4a5d eltorito.c:990 + xor ah, ah ; 30 e4 ; 0xf4a60 + or ah, 001h ; 80 cc 01 ; 0xf4a62 + mov word [bp+018h], ax ; 89 46 18 ; 0xf4a65 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4a68 + shr ax, 008h ; c1 e8 08 ; 0xf4a6b + mov bx, strict word 00074h ; bb 74 00 ; 0xf4a6e + mov dx, strict word 00040h ; ba 40 00 ; 0xf4a71 + mov es, dx ; 8e c2 ; 0xf4a74 + mov byte [es:bx], al ; 26 88 07 ; 0xf4a76 + or byte [bp+01eh], 001h ; 80 4e 1e 01 ; 0xf4a79 + jmp short 04a1dh ; eb 9e ; 0xf4a7d + or ah, 006h ; 80 cc 06 ; 0xf4a7f eltorito.c:997 + mov word [bp+018h], ax ; 89 46 18 ; 0xf4a82 + jmp short 04a79h ; eb f2 ; 0xf4a85 eltorito.c:998 + cmp ax, strict word 00006h ; 3d 06 00 ; 0xf4a87 eltorito.c:1003 + je near 04a09h ; 0f 84 7b ff ; 0xf4a8a + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf4a8e + jc short 04a5dh ; 72 ca ; 0xf4a91 + jbe near 04a09h ; 0f 86 72 ff ; 0xf4a93 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf4a97 + jc short 04a5dh ; 72 c1 ; 0xf4a9a + cmp ax, strict word 00004h ; 3d 04 00 ; 0xf4a9c + jbe near 04a09h ; 0f 86 66 ff ; 0xf4a9f + jmp short 04a5dh ; eb b8 ; 0xf4aa3 eltorito.c:1011 + mov bx, 00e06h ; bb 06 0e ; 0xf4aa5 eltorito.c:1024 + mov cx, ds ; 8c d9 ; 0xf4aa8 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4aaa + call 01a27h ; e8 77 cf ; 0xf4aad + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4ab0 + shr ax, 008h ; c1 e8 08 ; 0xf4ab3 + push ax ; 50 ; 0xf4ab6 + push 0049ch ; 68 9c 04 ; 0xf4ab7 + push 003a5h ; 68 a5 03 ; 0xf4aba + push strict byte 00004h ; 6a 04 ; 0xf4abd + jmp near 048e0h ; e9 1e fe ; 0xf4abf + ; disGetNextSymbol 0xf4ac2 LB 0x62da -> off=0x0 cb=000000000000004b uValue=00000000000f34c2 'print_boot_device' +print_boot_device: ; 0xf4ac2 LB 0x4b + push bp ; 55 ; 0xf4ac2 boot.c:119 + mov bp, sp ; 89 e5 ; 0xf4ac3 + push cx ; 51 ; 0xf4ac5 + test al, al ; 84 c0 ; 0xf4ac6 boot.c:127 + je short 04acfh ; 74 05 ; 0xf4ac8 + mov dx, strict word 00002h ; ba 02 00 ; 0xf4aca + jmp short 04ae9h ; eb 1a ; 0xf4acd boot.c:128 + test dl, dl ; 84 d2 ; 0xf4acf + je short 04ad8h ; 74 05 ; 0xf4ad1 + mov dx, strict word 00003h ; ba 03 00 ; 0xf4ad3 + jmp short 04ae9h ; eb 11 ; 0xf4ad6 boot.c:129 + test bl, 080h ; f6 c3 80 ; 0xf4ad8 + jne short 04ae1h ; 75 04 ; 0xf4adb + xor dh, dh ; 30 f6 ; 0xf4add + jmp short 04ae9h ; eb 08 ; 0xf4adf boot.c:130 + test bl, 080h ; f6 c3 80 ; 0xf4ae1 + je short 04b07h ; 74 21 ; 0xf4ae4 + mov dx, strict word 00001h ; ba 01 00 ; 0xf4ae6 + mov bx, 00e06h ; bb 06 0e ; 0xf4ae9 boot.c:133 + mov cx, ds ; 8c d9 ; 0xf4aec + mov ax, strict word 00004h ; b8 04 00 ; 0xf4aee + call 01a27h ; e8 33 cf ; 0xf4af1 + imul dx, dx, strict byte 0000ah ; 6b d2 0a ; 0xf4af4 + add dx, 00e2ch ; 81 c2 2c 0e ; 0xf4af7 + push dx ; 52 ; 0xf4afb + push 00506h ; 68 06 05 ; 0xf4afc + push strict byte 00004h ; 6a 04 ; 0xf4aff + call 01a68h ; e8 64 cf ; 0xf4b01 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4b04 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf4b07 boot.c:134 + pop cx ; 59 ; 0xf4b0a + pop bp ; 5d ; 0xf4b0b + retn ; c3 ; 0xf4b0c + ; disGetNextSymbol 0xf4b0d LB 0x628f -> off=0x0 cb=00000000000000bf uValue=00000000000f350d 'print_boot_failure' +print_boot_failure: ; 0xf4b0d LB 0xbf + push bp ; 55 ; 0xf4b0d boot.c:141 + mov bp, sp ; 89 e5 ; 0xf4b0e + push si ; 56 ; 0xf4b10 + mov dh, cl ; 88 ce ; 0xf4b11 + mov ah, bl ; 88 dc ; 0xf4b13 boot.c:144 + and ah, 07fh ; 80 e4 7f ; 0xf4b15 + movzx si, ah ; 0f b6 f4 ; 0xf4b18 + test al, al ; 84 c0 ; 0xf4b1b boot.c:152 + je short 04b3ah ; 74 1b ; 0xf4b1d + mov bx, 00e06h ; bb 06 0e ; 0xf4b1f boot.c:153 + mov cx, ds ; 8c d9 ; 0xf4b22 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4b24 + call 01a27h ; e8 fd ce ; 0xf4b27 + push 00e40h ; 68 40 0e ; 0xf4b2a + push 0051ah ; 68 1a 05 ; 0xf4b2d + push strict byte 00004h ; 6a 04 ; 0xf4b30 + call 01a68h ; e8 33 cf ; 0xf4b32 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4b35 + jmp short 04b7eh ; eb 44 ; 0xf4b38 boot.c:154 + test dl, dl ; 84 d2 ; 0xf4b3a + je short 04b4eh ; 74 10 ; 0xf4b3c + mov bx, 00e06h ; bb 06 0e ; 0xf4b3e boot.c:155 + mov cx, ds ; 8c d9 ; 0xf4b41 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4b43 + call 01a27h ; e8 de ce ; 0xf4b46 + push 00e4ah ; 68 4a 0e ; 0xf4b49 + jmp short 04b2dh ; eb df ; 0xf4b4c + test bl, 080h ; f6 c3 80 ; 0xf4b4e boot.c:156 + je short 04b64h ; 74 11 ; 0xf4b51 + mov bx, 00e06h ; bb 06 0e ; 0xf4b53 boot.c:157 + mov cx, ds ; 8c d9 ; 0xf4b56 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4b58 + call 01a27h ; e8 c9 ce ; 0xf4b5b + push si ; 56 ; 0xf4b5e + push 00e36h ; 68 36 0e ; 0xf4b5f + jmp short 04b73h ; eb 0f ; 0xf4b62 boot.c:158 + mov bx, 00e06h ; bb 06 0e ; 0xf4b64 boot.c:159 + mov cx, ds ; 8c d9 ; 0xf4b67 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4b69 + call 01a27h ; e8 b8 ce ; 0xf4b6c + push si ; 56 ; 0xf4b6f + push 00e2ch ; 68 2c 0e ; 0xf4b70 + push 0052fh ; 68 2f 05 ; 0xf4b73 + push strict byte 00004h ; 6a 04 ; 0xf4b76 + call 01a68h ; e8 ed ce ; 0xf4b78 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf4b7b + cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4b7e boot.c:161 + jne short 04bc4h ; 75 40 ; 0xf4b82 + test dh, dh ; 84 f6 ; 0xf4b84 boot.c:162 + jne short 04b98h ; 75 10 ; 0xf4b86 + mov bx, 00e06h ; bb 06 0e ; 0xf4b88 boot.c:163 + mov cx, ds ; 8c d9 ; 0xf4b8b + mov ax, strict word 00004h ; b8 04 00 ; 0xf4b8d + call 01a27h ; e8 94 ce ; 0xf4b90 + push 00547h ; 68 47 05 ; 0xf4b93 + jmp short 04ba6h ; eb 0e ; 0xf4b96 boot.c:164 + mov bx, 00e06h ; bb 06 0e ; 0xf4b98 boot.c:165 + mov cx, ds ; 8c d9 ; 0xf4b9b + mov ax, strict word 00004h ; b8 04 00 ; 0xf4b9d + call 01a27h ; e8 84 ce ; 0xf4ba0 + push 00562h ; 68 62 05 ; 0xf4ba3 + push strict byte 00006h ; 6a 06 ; 0xf4ba6 + call 01a68h ; e8 bd ce ; 0xf4ba8 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf4bab + mov bx, 00e06h ; bb 06 0e ; 0xf4bae boot.c:166 + mov cx, ds ; 8c d9 ; 0xf4bb1 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4bb3 + call 01a27h ; e8 6e ce ; 0xf4bb6 + push 00588h ; 68 88 05 ; 0xf4bb9 + push strict byte 00006h ; 6a 06 ; 0xf4bbc + call 01a68h ; e8 a7 ce ; 0xf4bbe + add sp, strict byte 00004h ; 83 c4 04 ; 0xf4bc1 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf4bc4 boot.c:168 + pop si ; 5e ; 0xf4bc7 + pop bp ; 5d ; 0xf4bc8 + retn 00002h ; c2 02 00 ; 0xf4bc9 + ; disGetNextSymbol 0xf4bcc LB 0x61d0 -> off=0x0 cb=0000000000000027 uValue=00000000000f35cc 'print_cdromboot_failure' +print_cdromboot_failure: ; 0xf4bcc LB 0x27 + push bp ; 55 ; 0xf4bcc boot.c:174 + mov bp, sp ; 89 e5 ; 0xf4bcd + push bx ; 53 ; 0xf4bcf + push cx ; 51 ; 0xf4bd0 + push dx ; 52 ; 0xf4bd1 + mov dx, ax ; 89 c2 ; 0xf4bd2 + mov bx, 00e06h ; bb 06 0e ; 0xf4bd4 boot.c:176 + mov cx, ds ; 8c d9 ; 0xf4bd7 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4bd9 + call 01a27h ; e8 48 ce ; 0xf4bdc + push dx ; 52 ; 0xf4bdf + push 005b5h ; 68 b5 05 ; 0xf4be0 + push strict byte 00004h ; 6a 04 ; 0xf4be3 + call 01a68h ; e8 80 ce ; 0xf4be5 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4be8 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf4beb boot.c:178 + pop dx ; 5a ; 0xf4bee + pop cx ; 59 ; 0xf4bef + pop bx ; 5b ; 0xf4bf0 + pop bp ; 5d ; 0xf4bf1 + retn ; c3 ; 0xf4bf2 + ; disGetNextSymbol 0xf4bf3 LB 0x61a9 -> off=0x0 cb=0000000000000245 uValue=00000000000f35f3 'int19_function' +int19_function: ; 0xf4bf3 LB 0x245 + push bp ; 55 ; 0xf4bf3 boot.c:181 + mov bp, sp ; 89 e5 ; 0xf4bf4 + push si ; 56 ; 0xf4bf6 + push di ; 57 ; 0xf4bf7 + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf4bf8 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4bfb boot.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4bfe + mov es, ax ; 8e c0 ; 0xf4c01 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf4c03 + mov word [bp-00eh], bx ; 89 5e f2 ; 0xf4c06 boot.c:59 + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf4c09 boot.c:192 + mov ax, strict word 0003dh ; b8 3d 00 ; 0xf4c0d boot.c:215 + call 0176ah ; e8 57 cb ; 0xf4c10 + movzx dx, al ; 0f b6 d0 ; 0xf4c13 + mov ax, strict word 00038h ; b8 38 00 ; 0xf4c16 boot.c:216 + call 0176ah ; e8 4e cb ; 0xf4c19 + and AL, strict byte 0f0h ; 24 f0 ; 0xf4c1c + xor ah, ah ; 30 e4 ; 0xf4c1e + sal ax, 004h ; c1 e0 04 ; 0xf4c20 + or dx, ax ; 09 c2 ; 0xf4c23 + mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4c25 boot.c:217 + call 0176ah ; e8 3f cb ; 0xf4c28 + and AL, strict byte 00fh ; 24 0f ; 0xf4c2b + xor ah, ah ; 30 e4 ; 0xf4c2d + sal ax, 00ch ; c1 e0 0c ; 0xf4c2f + or dx, ax ; 09 c2 ; 0xf4c32 + mov di, 00331h ; bf 31 03 ; 0xf4c34 boot.c:48 + mov es, bx ; 8e c3 ; 0xf4c37 + mov al, byte [es:di] ; 26 8a 05 ; 0xf4c39 + test al, al ; 84 c0 ; 0xf4c3c boot.c:49 + je short 04c43h ; 74 03 ; 0xf4c3e + movzx dx, al ; 0f b6 d0 ; 0xf4c40 boot.c:49 + cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4c43 boot.c:221 + jne short 04c59h ; 75 10 ; 0xf4c47 + mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4c49 boot.c:222 + call 0176ah ; e8 1b cb ; 0xf4c4c + and AL, strict byte 0f0h ; 24 f0 ; 0xf4c4f + xor ah, ah ; 30 e4 ; 0xf4c51 + sar ax, 004h ; c1 f8 04 ; 0xf4c53 + call 07b25h ; e8 cc 2e ; 0xf4c56 + cmp byte [bp+004h], 002h ; 80 7e 04 02 ; 0xf4c59 boot.c:224 + jne short 04c62h ; 75 03 ; 0xf4c5d + shr dx, 004h ; c1 ea 04 ; 0xf4c5f + cmp byte [bp+004h], 003h ; 80 7e 04 03 ; 0xf4c62 boot.c:225 + jne short 04c6bh ; 75 03 ; 0xf4c66 + shr dx, 008h ; c1 ea 08 ; 0xf4c68 + cmp byte [bp+004h], 004h ; 80 7e 04 04 ; 0xf4c6b boot.c:226 + jne short 04c74h ; 75 03 ; 0xf4c6f + shr dx, 00ch ; c1 ea 0c ; 0xf4c71 + cmp dx, strict byte 00010h ; 83 fa 10 ; 0xf4c74 boot.c:227 + jnc short 04c7dh ; 73 04 ; 0xf4c77 + mov byte [bp-006h], 001h ; c6 46 fa 01 ; 0xf4c79 + xor al, al ; 30 c0 ; 0xf4c7d boot.c:228 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf4c7f + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4c82 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf4c85 boot.c:229 + mov bx, 00e06h ; bb 06 0e ; 0xf4c88 boot.c:230 + mov cx, ds ; 8c d9 ; 0xf4c8b + mov ax, strict word 00004h ; b8 04 00 ; 0xf4c8d + call 01a27h ; e8 94 cd ; 0xf4c90 + push dx ; 52 ; 0xf4c93 + movzx ax, byte [bp+004h] ; 0f b6 46 04 ; 0xf4c94 + push ax ; 50 ; 0xf4c98 + push 005d5h ; 68 d5 05 ; 0xf4c99 + push strict byte 00004h ; 6a 04 ; 0xf4c9c + call 01a68h ; e8 c7 cd ; 0xf4c9e + add sp, strict byte 00008h ; 83 c4 08 ; 0xf4ca1 + and dx, strict byte 0000fh ; 83 e2 0f ; 0xf4ca4 boot.c:232 + cmp dx, strict byte 00002h ; 83 fa 02 ; 0xf4ca7 + jc short 04cbah ; 72 0e ; 0xf4caa + jbe short 04cc9h ; 76 1b ; 0xf4cac + cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4cae + je short 04ce6h ; 74 33 ; 0xf4cb1 + cmp dx, strict byte 00003h ; 83 fa 03 ; 0xf4cb3 + je short 04cdch ; 74 24 ; 0xf4cb6 + jmp short 04d13h ; eb 59 ; 0xf4cb8 + cmp dx, strict byte 00001h ; 83 fa 01 ; 0xf4cba + jne short 04d13h ; 75 54 ; 0xf4cbd + xor al, al ; 30 c0 ; 0xf4cbf boot.c:234 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf4cc1 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4cc4 boot.c:235 + jmp short 04d29h ; eb 60 ; 0xf4cc7 boot.c:236 + mov bx, 00330h ; bb 30 03 ; 0xf4cc9 boot.c:48 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4ccc + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4ccf + add AL, strict byte 080h ; 04 80 ; 0xf4cd2 boot.c:242 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf4cd4 + mov byte [bp-00ah], dh ; 88 76 f6 ; 0xf4cd7 boot.c:243 + jmp short 04d29h ; eb 4d ; 0xf4cda boot.c:244 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf4cdc boot.c:247 + mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf4ce0 boot.c:248 + jmp short 04cf0h ; eb 0a ; 0xf4ce4 boot.c:249 + mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf4ce6 boot.c:250 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4cea boot.c:266 + je short 04d29h ; 74 39 ; 0xf4cee + call 0406ah ; e8 77 f3 ; 0xf4cf0 boot.c:267 + mov dx, ax ; 89 c2 ; 0xf4cf3 + test AL, strict byte 0ffh ; a8 ff ; 0xf4cf5 boot.c:270 + je short 04d1ah ; 74 21 ; 0xf4cf7 + call 04bcch ; e8 d0 fe ; 0xf4cf9 boot.c:271 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4cfc boot.c:272 + push ax ; 50 ; 0xf4d00 + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4d01 + movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4d05 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4d09 + mov cx, strict word 00001h ; b9 01 00 ; 0xf4d0d + call 04b0dh ; e8 fa fd ; 0xf4d10 + xor ax, ax ; 31 c0 ; 0xf4d13 + xor dx, dx ; 31 d2 ; 0xf4d15 + jmp near 04e31h ; e9 17 01 ; 0xf4d17 + mov bx, 00322h ; bb 22 03 ; 0xf4d1a boot.c:58 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4d1d + mov si, word [es:bx] ; 26 8b 37 ; 0xf4d20 + shr dx, 008h ; c1 ea 08 ; 0xf4d23 boot.c:277 + mov byte [bp-008h], dl ; 88 56 f8 ; 0xf4d26 + cmp byte [bp-00ch], 001h ; 80 7e f4 01 ; 0xf4d29 boot.c:283 + jne near 04da5h ; 0f 85 74 00 ; 0xf4d2d + xor si, si ; 31 f6 ; 0xf4d31 boot.c:286 + mov ax, 0e200h ; b8 00 e2 ; 0xf4d33 + mov es, ax ; 8e c0 ; 0xf4d36 + cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf4d38 boot.c:287 + jne short 04cfch ; 75 bd ; 0xf4d3d + mov di, ax ; 89 c7 ; 0xf4d3f boot.c:293 + mov si, word [es:si+01ah] ; 26 8b 74 1a ; 0xf4d41 + cmp word [es:si+002h], 0506eh ; 26 81 7c 02 6e 50 ; 0xf4d45 boot.c:294 + jne short 04cfch ; 75 af ; 0xf4d4b + cmp word [es:si], 05024h ; 26 81 3c 24 50 ; 0xf4d4d + jne short 04cfch ; 75 a8 ; 0xf4d52 + mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf4d54 boot.c:296 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf4d58 + mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf4d5b + cmp ax, 06568h ; 3d 68 65 ; 0xf4d5f boot.c:297 + jne short 04d83h ; 75 1f ; 0xf4d62 + cmp dx, 07445h ; 81 fa 45 74 ; 0xf4d64 + jne short 04d83h ; 75 19 ; 0xf4d68 + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4d6a boot.c:299 + movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4d6e + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4d72 + call 04ac2h ; e8 49 fd ; 0xf4d76 + mov word [bp-012h], strict word 00006h ; c7 46 ee 06 00 ; 0xf4d79 boot.c:300 + mov word [bp-010h], di ; 89 7e f0 ; 0xf4d7e + jmp short 04d9fh ; eb 1c ; 0xf4d81 boot.c:303 + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4d83 boot.c:306 + movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4d87 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4d8b + call 04ac2h ; e8 30 fd ; 0xf4d8f + sti ; fb ; 0xf4d92 boot.c:307 + mov word [bp-010h], di ; 89 7e f0 ; 0xf4d93 boot.c:308 + mov es, di ; 8e c7 ; 0xf4d96 + mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4d98 + mov word [bp-012h], ax ; 89 46 ee ; 0xf4d9c + call far [bp-012h] ; ff 5e ee ; 0xf4d9f boot.c:309 + jmp near 04cfch ; e9 57 ff ; 0xf4da2 boot.c:312 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4da5 boot.c:320 + jne short 04dd1h ; 75 26 ; 0xf4da9 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf4dab + jne short 04dd1h ; 75 20 ; 0xf4daf + mov si, 007c0h ; be c0 07 ; 0xf4db1 boot.c:321 + mov es, si ; 8e c6 ; 0xf4db4 boot.c:323 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf4db6 + mov ax, 00201h ; b8 01 02 ; 0xf4db9 + mov DH, strict byte 000h ; b6 00 ; 0xf4dbc + mov cx, strict word 00001h ; b9 01 00 ; 0xf4dbe + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xf4dc1 + int 013h ; cd 13 ; 0xf4dc3 + mov ax, strict word 00000h ; b8 00 00 ; 0xf4dc5 + sbb ax, strict byte 00000h ; 83 d8 00 ; 0xf4dc8 + test ax, ax ; 85 c0 ; 0xf4dcb boot.c:324 + jne near 04cfch ; 0f 85 2b ff ; 0xf4dcd + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4dd1 boot.c:339 + db 00fh, 094h, 0c0h + ; sete al ; 0f 94 c0 ; 0xf4dd5 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4dd8 boot.c:344 + je short 04de0h ; 74 02 ; 0xf4ddc + mov AL, strict byte 001h ; b0 01 ; 0xf4dde boot.c:345 + xor bx, bx ; 31 db ; 0xf4de0 boot.c:58 + mov es, si ; 8e c6 ; 0xf4de2 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf4de4 + mov bx, strict word 00004h ; bb 04 00 ; 0xf4de7 boot.c:58 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf4dea + cmp dx, bx ; 39 da ; 0xf4ded boot.c:59 + je short 04e00h ; 74 0f ; 0xf4def + test al, al ; 84 c0 ; 0xf4df1 + jne short 04e16h ; 75 21 ; 0xf4df3 + mov bx, 001feh ; bb fe 01 ; 0xf4df5 boot.c:58 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf4df8 + cmp ax, 0aa55h ; 3d 55 aa ; 0xf4dfb boot.c:59 + je short 04e16h ; 74 16 ; 0xf4dfe + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4e00 boot.c:351 + push ax ; 50 ; 0xf4e04 + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4e05 + movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4e09 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4e0d + xor cx, cx ; 31 c9 ; 0xf4e11 + jmp near 04d10h ; e9 fa fe ; 0xf4e13 + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4e16 boot.c:357 + movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4e1a + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4e1e + call 04ac2h ; e8 9d fc ; 0xf4e22 + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4e25 boot.c:363 + xor dx, dx ; 31 d2 ; 0xf4e29 + xor ax, ax ; 31 c0 ; 0xf4e2b + add ax, si ; 01 f0 ; 0xf4e2d + adc dx, bx ; 11 da ; 0xf4e2f + lea sp, [bp-004h] ; 8d 66 fc ; 0xf4e31 boot.c:364 + pop di ; 5f ; 0xf4e34 + pop si ; 5e ; 0xf4e35 + pop bp ; 5d ; 0xf4e36 + retn ; c3 ; 0xf4e37 + ; disGetNextSymbol 0xf4e38 LB 0x5f64 -> off=0x0 cb=0000000000000013 uValue=00000000000f3838 'keyboard_panic' +keyboard_panic: ; 0xf4e38 LB 0x13 + push bp ; 55 ; 0xf4e38 keyboard.c:204 + mov bp, sp ; 89 e5 ; 0xf4e39 + push ax ; 50 ; 0xf4e3b keyboard.c:209 + push 005f4h ; 68 f4 05 ; 0xf4e3c + push strict byte 00007h ; 6a 07 ; 0xf4e3f + call 01a68h ; e8 24 cc ; 0xf4e41 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4e44 + mov sp, bp ; 89 ec ; 0xf4e47 keyboard.c:210 + pop bp ; 5d ; 0xf4e49 + retn ; c3 ; 0xf4e4a + ; disGetNextSymbol 0xf4e4b LB 0x5f51 -> off=0x0 cb=000000000000026a uValue=00000000000f384b 'keyboard_init' +keyboard_init: ; 0xf4e4b LB 0x26a + push bp ; 55 ; 0xf4e4b keyboard.c:218 + mov bp, sp ; 89 e5 ; 0xf4e4c + mov AL, strict byte 0aah ; b0 aa ; 0xf4e4e keyboard.c:224 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4e50 + out DX, AL ; ee ; 0xf4e53 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4e54 keyboard.c:227 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4e57 keyboard.c:228 + in AL, DX ; ec ; 0xf4e5a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4e5b + test AL, strict byte 002h ; a8 02 ; 0xf4e5d + je short 04e6eh ; 74 0d ; 0xf4e5f + dec bx ; 4b ; 0xf4e61 + test bx, bx ; 85 db ; 0xf4e62 + jbe short 04e6eh ; 76 08 ; 0xf4e64 + xor al, al ; 30 c0 ; 0xf4e66 + mov dx, 00080h ; ba 80 00 ; 0xf4e68 + out DX, AL ; ee ; 0xf4e6b + jmp short 04e57h ; eb e9 ; 0xf4e6c + test bx, bx ; 85 db ; 0xf4e6e keyboard.c:229 + jne short 04e77h ; 75 05 ; 0xf4e70 + xor ax, ax ; 31 c0 ; 0xf4e72 + call 04e38h ; e8 c1 ff ; 0xf4e74 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4e77 keyboard.c:232 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4e7a keyboard.c:233 + in AL, DX ; ec ; 0xf4e7d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4e7e + test AL, strict byte 001h ; a8 01 ; 0xf4e80 + jne short 04e91h ; 75 0d ; 0xf4e82 + dec bx ; 4b ; 0xf4e84 + test bx, bx ; 85 db ; 0xf4e85 + jbe short 04e91h ; 76 08 ; 0xf4e87 + mov AL, strict byte 001h ; b0 01 ; 0xf4e89 + mov dx, 00080h ; ba 80 00 ; 0xf4e8b + out DX, AL ; ee ; 0xf4e8e + jmp short 04e7ah ; eb e9 ; 0xf4e8f + test bx, bx ; 85 db ; 0xf4e91 keyboard.c:234 + jne short 04e9bh ; 75 06 ; 0xf4e93 + mov ax, strict word 00001h ; b8 01 00 ; 0xf4e95 + call 04e38h ; e8 9d ff ; 0xf4e98 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4e9b keyboard.c:237 + in AL, DX ; ec ; 0xf4e9e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4e9f + cmp ax, strict word 00055h ; 3d 55 00 ; 0xf4ea1 + je short 04each ; 74 06 ; 0xf4ea4 + mov ax, 003dfh ; b8 df 03 ; 0xf4ea6 keyboard.c:238 + call 04e38h ; e8 8c ff ; 0xf4ea9 + mov AL, strict byte 0abh ; b0 ab ; 0xf4eac keyboard.c:242 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4eae + out DX, AL ; ee ; 0xf4eb1 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4eb2 keyboard.c:245 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4eb5 keyboard.c:246 + in AL, DX ; ec ; 0xf4eb8 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4eb9 + test AL, strict byte 002h ; a8 02 ; 0xf4ebb + je short 04ecch ; 74 0d ; 0xf4ebd + dec bx ; 4b ; 0xf4ebf + test bx, bx ; 85 db ; 0xf4ec0 + jbe short 04ecch ; 76 08 ; 0xf4ec2 + mov AL, strict byte 010h ; b0 10 ; 0xf4ec4 + mov dx, 00080h ; ba 80 00 ; 0xf4ec6 + out DX, AL ; ee ; 0xf4ec9 + jmp short 04eb5h ; eb e9 ; 0xf4eca + test bx, bx ; 85 db ; 0xf4ecc keyboard.c:247 + jne short 04ed6h ; 75 06 ; 0xf4ece + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4ed0 + call 04e38h ; e8 62 ff ; 0xf4ed3 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4ed6 keyboard.c:250 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4ed9 keyboard.c:251 + in AL, DX ; ec ; 0xf4edc + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4edd + test AL, strict byte 001h ; a8 01 ; 0xf4edf + jne short 04ef0h ; 75 0d ; 0xf4ee1 + dec bx ; 4b ; 0xf4ee3 + test bx, bx ; 85 db ; 0xf4ee4 + jbe short 04ef0h ; 76 08 ; 0xf4ee6 + mov AL, strict byte 011h ; b0 11 ; 0xf4ee8 + mov dx, 00080h ; ba 80 00 ; 0xf4eea + out DX, AL ; ee ; 0xf4eed + jmp short 04ed9h ; eb e9 ; 0xf4eee + test bx, bx ; 85 db ; 0xf4ef0 keyboard.c:252 + jne short 04efah ; 75 06 ; 0xf4ef2 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf4ef4 + call 04e38h ; e8 3e ff ; 0xf4ef7 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4efa keyboard.c:256 + in AL, DX ; ec ; 0xf4efd + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4efe + test ax, ax ; 85 c0 ; 0xf4f00 + je short 04f0ah ; 74 06 ; 0xf4f02 + mov ax, 003e0h ; b8 e0 03 ; 0xf4f04 keyboard.c:257 + call 04e38h ; e8 2e ff ; 0xf4f07 + mov AL, strict byte 0ffh ; b0 ff ; 0xf4f0a keyboard.c:263 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4f0c + out DX, AL ; ee ; 0xf4f0f + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f10 keyboard.c:266 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f13 keyboard.c:267 + in AL, DX ; ec ; 0xf4f16 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f17 + test AL, strict byte 002h ; a8 02 ; 0xf4f19 + je short 04f2ah ; 74 0d ; 0xf4f1b + dec bx ; 4b ; 0xf4f1d + test bx, bx ; 85 db ; 0xf4f1e + jbe short 04f2ah ; 76 08 ; 0xf4f20 + mov AL, strict byte 020h ; b0 20 ; 0xf4f22 + mov dx, 00080h ; ba 80 00 ; 0xf4f24 + out DX, AL ; ee ; 0xf4f27 + jmp short 04f13h ; eb e9 ; 0xf4f28 + test bx, bx ; 85 db ; 0xf4f2a keyboard.c:268 + jne short 04f34h ; 75 06 ; 0xf4f2c + mov ax, strict word 00014h ; b8 14 00 ; 0xf4f2e + call 04e38h ; e8 04 ff ; 0xf4f31 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f34 keyboard.c:271 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f37 keyboard.c:272 + in AL, DX ; ec ; 0xf4f3a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f3b + test AL, strict byte 001h ; a8 01 ; 0xf4f3d + jne short 04f4eh ; 75 0d ; 0xf4f3f + dec bx ; 4b ; 0xf4f41 + test bx, bx ; 85 db ; 0xf4f42 + jbe short 04f4eh ; 76 08 ; 0xf4f44 + mov AL, strict byte 021h ; b0 21 ; 0xf4f46 + mov dx, 00080h ; ba 80 00 ; 0xf4f48 + out DX, AL ; ee ; 0xf4f4b + jmp short 04f37h ; eb e9 ; 0xf4f4c + test bx, bx ; 85 db ; 0xf4f4e keyboard.c:273 + jne short 04f58h ; 75 06 ; 0xf4f50 + mov ax, strict word 00015h ; b8 15 00 ; 0xf4f52 + call 04e38h ; e8 e0 fe ; 0xf4f55 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4f58 keyboard.c:276 + in AL, DX ; ec ; 0xf4f5b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f5c + cmp ax, 000fah ; 3d fa 00 ; 0xf4f5e + je short 04f69h ; 74 06 ; 0xf4f61 + mov ax, 003e1h ; b8 e1 03 ; 0xf4f63 keyboard.c:277 + call 04e38h ; e8 cf fe ; 0xf4f66 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f69 keyboard.c:281 + in AL, DX ; ec ; 0xf4f6c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f6d + test AL, strict byte 001h ; a8 01 ; 0xf4f6f + jne short 04f7bh ; 75 08 ; 0xf4f71 + mov AL, strict byte 031h ; b0 31 ; 0xf4f73 + mov dx, 00080h ; ba 80 00 ; 0xf4f75 + out DX, AL ; ee ; 0xf4f78 + jmp short 04f69h ; eb ee ; 0xf4f79 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4f7b keyboard.c:283 + in AL, DX ; ec ; 0xf4f7e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f7f + cmp ax, 000aah ; 3d aa 00 ; 0xf4f81 + je short 04f94h ; 74 0e ; 0xf4f84 + in AL, DX ; ec ; 0xf4f86 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f87 + cmp ax, 000aah ; 3d aa 00 ; 0xf4f89 + je short 04f94h ; 74 06 ; 0xf4f8c + mov ax, 003e2h ; b8 e2 03 ; 0xf4f8e keyboard.c:284 + call 04e38h ; e8 a4 fe ; 0xf4f91 + mov AL, strict byte 0f5h ; b0 f5 ; 0xf4f94 keyboard.c:288 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4f96 + out DX, AL ; ee ; 0xf4f99 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f9a keyboard.c:291 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f9d keyboard.c:292 + in AL, DX ; ec ; 0xf4fa0 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4fa1 + test AL, strict byte 002h ; a8 02 ; 0xf4fa3 + je short 04fb4h ; 74 0d ; 0xf4fa5 + dec bx ; 4b ; 0xf4fa7 + test bx, bx ; 85 db ; 0xf4fa8 + jbe short 04fb4h ; 76 08 ; 0xf4faa + mov AL, strict byte 040h ; b0 40 ; 0xf4fac + mov dx, 00080h ; ba 80 00 ; 0xf4fae + out DX, AL ; ee ; 0xf4fb1 + jmp short 04f9dh ; eb e9 ; 0xf4fb2 + test bx, bx ; 85 db ; 0xf4fb4 keyboard.c:293 + jne short 04fbeh ; 75 06 ; 0xf4fb6 + mov ax, strict word 00028h ; b8 28 00 ; 0xf4fb8 + call 04e38h ; e8 7a fe ; 0xf4fbb + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4fbe keyboard.c:296 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4fc1 keyboard.c:297 + in AL, DX ; ec ; 0xf4fc4 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4fc5 + test AL, strict byte 001h ; a8 01 ; 0xf4fc7 + jne short 04fd8h ; 75 0d ; 0xf4fc9 + dec bx ; 4b ; 0xf4fcb + test bx, bx ; 85 db ; 0xf4fcc + jbe short 04fd8h ; 76 08 ; 0xf4fce + mov AL, strict byte 041h ; b0 41 ; 0xf4fd0 + mov dx, 00080h ; ba 80 00 ; 0xf4fd2 + out DX, AL ; ee ; 0xf4fd5 + jmp short 04fc1h ; eb e9 ; 0xf4fd6 + test bx, bx ; 85 db ; 0xf4fd8 keyboard.c:298 + jne short 04fe2h ; 75 06 ; 0xf4fda + mov ax, strict word 00029h ; b8 29 00 ; 0xf4fdc + call 04e38h ; e8 56 fe ; 0xf4fdf + mov dx, strict word 00060h ; ba 60 00 ; 0xf4fe2 keyboard.c:301 + in AL, DX ; ec ; 0xf4fe5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4fe6 + cmp ax, 000fah ; 3d fa 00 ; 0xf4fe8 + je short 04ff3h ; 74 06 ; 0xf4feb + mov ax, 003e3h ; b8 e3 03 ; 0xf4fed keyboard.c:302 + call 04e38h ; e8 45 fe ; 0xf4ff0 + mov AL, strict byte 060h ; b0 60 ; 0xf4ff3 keyboard.c:306 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4ff5 + out DX, AL ; ee ; 0xf4ff8 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4ff9 keyboard.c:309 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4ffc keyboard.c:310 + in AL, DX ; ec ; 0xf4fff + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5000 + test AL, strict byte 002h ; a8 02 ; 0xf5002 + je short 05013h ; 74 0d ; 0xf5004 + dec bx ; 4b ; 0xf5006 + test bx, bx ; 85 db ; 0xf5007 + jbe short 05013h ; 76 08 ; 0xf5009 + mov AL, strict byte 050h ; b0 50 ; 0xf500b + mov dx, 00080h ; ba 80 00 ; 0xf500d + out DX, AL ; ee ; 0xf5010 + jmp short 04ffch ; eb e9 ; 0xf5011 + test bx, bx ; 85 db ; 0xf5013 keyboard.c:311 + jne short 0501dh ; 75 06 ; 0xf5015 + mov ax, strict word 00032h ; b8 32 00 ; 0xf5017 + call 04e38h ; e8 1b fe ; 0xf501a + mov AL, strict byte 065h ; b0 65 ; 0xf501d keyboard.c:314 + mov dx, strict word 00060h ; ba 60 00 ; 0xf501f + out DX, AL ; ee ; 0xf5022 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf5023 keyboard.c:317 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5026 keyboard.c:318 + in AL, DX ; ec ; 0xf5029 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf502a + test AL, strict byte 002h ; a8 02 ; 0xf502c + je short 0503dh ; 74 0d ; 0xf502e + dec bx ; 4b ; 0xf5030 + test bx, bx ; 85 db ; 0xf5031 + jbe short 0503dh ; 76 08 ; 0xf5033 + mov AL, strict byte 060h ; b0 60 ; 0xf5035 + mov dx, 00080h ; ba 80 00 ; 0xf5037 + out DX, AL ; ee ; 0xf503a + jmp short 05026h ; eb e9 ; 0xf503b + test bx, bx ; 85 db ; 0xf503d keyboard.c:319 + jne short 05047h ; 75 06 ; 0xf503f + mov ax, strict word 0003ch ; b8 3c 00 ; 0xf5041 + call 04e38h ; e8 f1 fd ; 0xf5044 + mov AL, strict byte 0f4h ; b0 f4 ; 0xf5047 keyboard.c:322 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5049 + out DX, AL ; ee ; 0xf504c + mov bx, strict word 0ffffh ; bb ff ff ; 0xf504d keyboard.c:325 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5050 keyboard.c:326 + in AL, DX ; ec ; 0xf5053 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5054 + test AL, strict byte 002h ; a8 02 ; 0xf5056 + je short 05067h ; 74 0d ; 0xf5058 + dec bx ; 4b ; 0xf505a + test bx, bx ; 85 db ; 0xf505b + jbe short 05067h ; 76 08 ; 0xf505d + mov AL, strict byte 070h ; b0 70 ; 0xf505f + mov dx, 00080h ; ba 80 00 ; 0xf5061 + out DX, AL ; ee ; 0xf5064 + jmp short 05050h ; eb e9 ; 0xf5065 + test bx, bx ; 85 db ; 0xf5067 keyboard.c:327 + jne short 05071h ; 75 06 ; 0xf5069 + mov ax, strict word 00046h ; b8 46 00 ; 0xf506b + call 04e38h ; e8 c7 fd ; 0xf506e + mov bx, strict word 0ffffh ; bb ff ff ; 0xf5071 keyboard.c:330 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5074 keyboard.c:331 + in AL, DX ; ec ; 0xf5077 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5078 + test AL, strict byte 001h ; a8 01 ; 0xf507a + jne short 0508bh ; 75 0d ; 0xf507c + dec bx ; 4b ; 0xf507e + test bx, bx ; 85 db ; 0xf507f + jbe short 0508bh ; 76 08 ; 0xf5081 + mov AL, strict byte 071h ; b0 71 ; 0xf5083 + mov dx, 00080h ; ba 80 00 ; 0xf5085 + out DX, AL ; ee ; 0xf5088 + jmp short 05074h ; eb e9 ; 0xf5089 + test bx, bx ; 85 db ; 0xf508b keyboard.c:332 + jne short 05095h ; 75 06 ; 0xf508d + mov ax, strict word 00046h ; b8 46 00 ; 0xf508f + call 04e38h ; e8 a3 fd ; 0xf5092 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5095 keyboard.c:335 + in AL, DX ; ec ; 0xf5098 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5099 + cmp ax, 000fah ; 3d fa 00 ; 0xf509b + je short 050a6h ; 74 06 ; 0xf509e + mov ax, 003e4h ; b8 e4 03 ; 0xf50a0 keyboard.c:336 + call 04e38h ; e8 92 fd ; 0xf50a3 + mov AL, strict byte 0a8h ; b0 a8 ; 0xf50a6 keyboard.c:340 + mov dx, strict word 00064h ; ba 64 00 ; 0xf50a8 + out DX, AL ; ee ; 0xf50ab + xor ax, ax ; 31 c0 ; 0xf50ac keyboard.c:345 + call 06490h ; e8 df 13 ; 0xf50ae + mov sp, bp ; 89 ec ; 0xf50b1 keyboard.c:346 + pop bp ; 5d ; 0xf50b3 + retn ; c3 ; 0xf50b4 + ; disGetNextSymbol 0xf50b5 LB 0x5ce7 -> off=0x0 cb=0000000000000053 uValue=00000000000f3ab5 'enqueue_key' +enqueue_key: ; 0xf50b5 LB 0x53 + push bx ; 53 ; 0xf50b5 keyboard.c:349 + push cx ; 51 ; 0xf50b6 + push si ; 56 ; 0xf50b7 + push di ; 57 ; 0xf50b8 + push bp ; 55 ; 0xf50b9 + mov bp, sp ; 89 e5 ; 0xf50ba + mov dh, al ; 88 c6 ; 0xf50bc + mov bx, 00080h ; bb 80 00 ; 0xf50be keyboard.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf50c1 + mov es, ax ; 8e c0 ; 0xf50c4 + mov di, word [es:bx] ; 26 8b 3f ; 0xf50c6 + mov bx, 00082h ; bb 82 00 ; 0xf50c9 keyboard.c:58 + mov si, word [es:bx] ; 26 8b 37 ; 0xf50cc + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf50cf keyboard.c:58 + mov cx, word [es:bx] ; 26 8b 0f ; 0xf50d2 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf50d5 keyboard.c:58 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf50d8 + mov bx, ax ; 89 c3 ; 0xf50db keyboard.c:364 + inc ax ; 40 ; 0xf50dd keyboard.c:365 + inc ax ; 40 ; 0xf50de + cmp ax, si ; 39 f0 ; 0xf50df keyboard.c:366 + jc short 050e5h ; 72 02 ; 0xf50e1 + mov ax, di ; 89 f8 ; 0xf50e3 keyboard.c:367 + cmp ax, cx ; 39 c8 ; 0xf50e5 keyboard.c:369 + jne short 050edh ; 75 04 ; 0xf50e7 + xor ax, cx ; 31 c8 ; 0xf50e9 keyboard.c:370 + jmp short 05102h ; eb 15 ; 0xf50eb + mov cx, strict word 00040h ; b9 40 00 ; 0xf50ed keyboard.c:53 + mov es, cx ; 8e c1 ; 0xf50f0 + mov byte [es:bx], dl ; 26 88 17 ; 0xf50f2 + inc bx ; 43 ; 0xf50f5 keyboard.c:373 + mov byte [es:bx], dh ; 26 88 37 ; 0xf50f6 keyboard.c:53 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf50f9 keyboard.c:63 + mov word [es:bx], ax ; 26 89 07 ; 0xf50fc + mov ax, strict word 00001h ; b8 01 00 ; 0xf50ff keyboard.c:375 + pop bp ; 5d ; 0xf5102 keyboard.c:376 + pop di ; 5f ; 0xf5103 + pop si ; 5e ; 0xf5104 + pop cx ; 59 ; 0xf5105 + pop bx ; 5b ; 0xf5106 + retn ; c3 ; 0xf5107 + ; disGetNextSymbol 0xf5108 LB 0x5c94 -> off=0x35 cb=00000000000003cd uValue=00000000000f3b3d 'int09_function' + db 0d4h, 0c6h, 0c5h, 0bah, 0b8h, 0b6h, 0aah, 09dh, 054h, 053h, 046h, 045h, 03ah, 038h, 036h, 02ah + db 01dh, 0c9h, 053h, 019h, 052h, 0c2h, 051h, 0c2h, 051h, 07eh, 052h, 09dh, 051h, 0d1h, 052h, 02ch + db 053h, 0aeh, 053h, 091h, 053h, 049h, 052h, 0c2h, 051h, 0c2h, 051h, 0aah, 052h, 0b4h, 051h, 014h + db 053h, 079h, 053h, 0a9h, 053h +int09_function: ; 0xf513d LB 0x3cd + push bp ; 55 ; 0xf513d keyboard.c:381 + mov bp, sp ; 89 e5 ; 0xf513e + push si ; 56 ; 0xf5140 + push di ; 57 ; 0xf5141 + push ax ; 50 ; 0xf5142 + push ax ; 50 ; 0xf5143 + mov al, byte [bp+014h] ; 8a 46 14 ; 0xf5144 keyboard.c:392 + mov byte [bp-006h], al ; 88 46 fa ; 0xf5147 + test al, al ; 84 c0 ; 0xf514a keyboard.c:394 + jne short 05167h ; 75 19 ; 0xf514c + mov bx, 00e06h ; bb 06 0e ; 0xf514e keyboard.c:395 + mov cx, ds ; 8c d9 ; 0xf5151 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5153 + call 01a27h ; e8 ce c8 ; 0xf5156 + push 00607h ; 68 07 06 ; 0xf5159 + push strict byte 00004h ; 6a 04 ; 0xf515c + call 01a68h ; e8 07 c9 ; 0xf515e + add sp, strict byte 00004h ; 83 c4 04 ; 0xf5161 + jmp near 05212h ; e9 ab 00 ; 0xf5164 keyboard.c:396 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5167 keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf516a + mov es, ax ; 8e c0 ; 0xf516d + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf516f + mov dl, bl ; 88 da ; 0xf5172 keyboard.c:49 + mov si, 00096h ; be 96 00 ; 0xf5174 keyboard.c:48 + mov bh, byte [es:si] ; 26 8a 3c ; 0xf5177 + mov byte [bp-008h], bh ; 88 7e f8 ; 0xf517a keyboard.c:49 + mov si, strict word 00017h ; be 17 00 ; 0xf517d keyboard.c:48 + mov ah, byte [es:si] ; 26 8a 24 ; 0xf5180 + mov dh, ah ; 88 e6 ; 0xf5183 keyboard.c:49 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5185 keyboard.c:404 + push CS ; 0e ; 0xf5188 + pop ES ; 07 ; 0xf5189 + mov cx, strict word 00012h ; b9 12 00 ; 0xf518a + mov di, 05108h ; bf 08 51 ; 0xf518d + repne scasb ; f2 ae ; 0xf5190 + sal cx, 1 ; d1 e1 ; 0xf5192 + mov di, cx ; 89 cf ; 0xf5194 + mov si, word [cs:di+05119h] ; 2e 8b b5 19 51 ; 0xf5196 + jmp si ; ff e6 ; 0xf519b + xor dh, 040h ; 80 f6 40 ; 0xf519d keyboard.c:406 + mov bx, strict word 00017h ; bb 17 00 ; 0xf51a0 keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf51a3 + mov es, ax ; 8e c0 ; 0xf51a6 + mov byte [es:bx], dh ; 26 88 37 ; 0xf51a8 + or dl, 040h ; 80 ca 40 ; 0xf51ab keyboard.c:408 + mov bx, strict word 00018h ; bb 18 00 ; 0xf51ae keyboard.c:53 + jmp near 053a3h ; e9 ef 01 ; 0xf51b1 + and dl, 0bfh ; 80 e2 bf ; 0xf51b4 keyboard.c:412 + mov bx, strict word 00018h ; bb 18 00 ; 0xf51b7 keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf51ba + mov es, ax ; 8e c0 ; 0xf51bd + jmp near 053a3h ; e9 e1 01 ; 0xf51bf + test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf51c2 keyboard.c:421 + jne near 051f3h ; 0f 85 29 00 ; 0xf51c6 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf51ca keyboard.c:422 + and AL, strict byte 07fh ; 24 7f ; 0xf51cd + cmp AL, strict byte 02ah ; 3c 2a ; 0xf51cf + db 00fh, 094h, 0c0h + ; sete al ; 0f 94 c0 ; 0xf51d1 + movzx bx, al ; 0f b6 d8 ; 0xf51d4 + inc bx ; 43 ; 0xf51d7 + test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xf51d8 keyboard.c:423 + je short 051e6h ; 74 08 ; 0xf51dc + mov al, bl ; 88 d8 ; 0xf51de keyboard.c:424 + not al ; f6 d0 ; 0xf51e0 + and dh, al ; 20 c6 ; 0xf51e2 + jmp short 051e8h ; eb 02 ; 0xf51e4 keyboard.c:425 + or dh, bl ; 08 de ; 0xf51e6 keyboard.c:426 + mov bx, strict word 00017h ; bb 17 00 ; 0xf51e8 keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf51eb + mov es, ax ; 8e c0 ; 0xf51ee + mov byte [es:bx], dh ; 26 88 37 ; 0xf51f0 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf51f3 keyboard.c:429 + and AL, strict byte 07fh ; 24 7f ; 0xf51f6 + cmp AL, strict byte 01dh ; 3c 1d ; 0xf51f8 + je short 05200h ; 74 04 ; 0xf51fa + and byte [bp-008h], 0feh ; 80 66 f8 fe ; 0xf51fc + and byte [bp-008h], 0fdh ; 80 66 f8 fd ; 0xf5200 + mov bx, 00096h ; bb 96 00 ; 0xf5204 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5207 + mov es, ax ; 8e c0 ; 0xf520a + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf520c + mov byte [es:bx], al ; 26 88 07 ; 0xf520f + lea sp, [bp-004h] ; 8d 66 fc ; 0xf5212 + pop di ; 5f ; 0xf5215 + pop si ; 5e ; 0xf5216 + pop bp ; 5d ; 0xf5217 + retn ; c3 ; 0xf5218 + test bh, 001h ; f6 c7 01 ; 0xf5219 keyboard.c:432 + jne short 051f3h ; 75 d5 ; 0xf521c + or dh, 004h ; 80 ce 04 ; 0xf521e keyboard.c:433 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5221 keyboard.c:51 + mov bx, strict word 00017h ; bb 17 00 ; 0xf5224 + mov es, ax ; 8e c0 ; 0xf5227 keyboard.c:53 + mov byte [es:bx], dh ; 26 88 37 ; 0xf5229 + test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf522c keyboard.c:435 + je short 0523eh ; 74 0c ; 0xf5230 + or byte [bp-008h], 004h ; 80 4e f8 04 ; 0xf5232 keyboard.c:436 + mov bx, 00096h ; bb 96 00 ; 0xf5236 keyboard.c:51 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf5239 + jmp short 05244h ; eb 06 ; 0xf523c keyboard.c:438 + or dl, 001h ; 80 ca 01 ; 0xf523e keyboard.c:439 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5241 keyboard.c:51 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5244 keyboard.c:53 + jmp short 051f3h ; eb aa ; 0xf5247 keyboard.c:443 + test bh, 001h ; f6 c7 01 ; 0xf5249 keyboard.c:445 + jne short 051f3h ; 75 a5 ; 0xf524c + and dh, 0fbh ; 80 e6 fb ; 0xf524e keyboard.c:446 + mov si, strict word 00017h ; be 17 00 ; 0xf5251 keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5254 + mov es, ax ; 8e c0 ; 0xf5257 + mov byte [es:si], dh ; 26 88 34 ; 0xf5259 + test bh, 002h ; f6 c7 02 ; 0xf525c keyboard.c:448 + je short 05272h ; 74 11 ; 0xf525f + and bh, 0fbh ; 80 e7 fb ; 0xf5261 keyboard.c:449 + mov byte [bp-008h], bh ; 88 7e f8 ; 0xf5264 + mov bx, 00096h ; bb 96 00 ; 0xf5267 keyboard.c:53 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf526a + mov byte [es:bx], al ; 26 88 07 ; 0xf526d + jmp short 051f3h ; eb 81 ; 0xf5270 keyboard.c:451 + and dl, 0feh ; 80 e2 fe ; 0xf5272 keyboard.c:452 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5275 keyboard.c:53 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5278 + jmp near 051f3h ; e9 75 ff ; 0xf527b keyboard.c:456 + or dh, 008h ; 80 ce 08 ; 0xf527e keyboard.c:459 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5281 keyboard.c:51 + mov bx, strict word 00017h ; bb 17 00 ; 0xf5284 + mov es, ax ; 8e c0 ; 0xf5287 keyboard.c:53 + mov byte [es:bx], dh ; 26 88 37 ; 0xf5289 + test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf528c keyboard.c:461 + je short 0529eh ; 74 0c ; 0xf5290 + or byte [bp-008h], 008h ; 80 4e f8 08 ; 0xf5292 keyboard.c:462 + mov bx, 00096h ; bb 96 00 ; 0xf5296 keyboard.c:51 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf5299 + jmp short 052a4h ; eb 06 ; 0xf529c keyboard.c:464 + or dl, 002h ; 80 ca 02 ; 0xf529e keyboard.c:465 + mov bx, strict word 00018h ; bb 18 00 ; 0xf52a1 keyboard.c:51 + mov byte [es:bx], dl ; 26 88 17 ; 0xf52a4 keyboard.c:53 + jmp near 051f3h ; e9 49 ff ; 0xf52a7 keyboard.c:468 + and dh, 0f7h ; 80 e6 f7 ; 0xf52aa keyboard.c:470 + mov si, strict word 00017h ; be 17 00 ; 0xf52ad keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf52b0 + mov es, ax ; 8e c0 ; 0xf52b3 + mov byte [es:si], dh ; 26 88 34 ; 0xf52b5 + test bh, 002h ; f6 c7 02 ; 0xf52b8 keyboard.c:472 + je short 052c5h ; 74 08 ; 0xf52bb + and bh, 0f7h ; 80 e7 f7 ; 0xf52bd keyboard.c:473 + mov byte [bp-008h], bh ; 88 7e f8 ; 0xf52c0 + jmp short 05267h ; eb a2 ; 0xf52c3 keyboard.c:474 + and dl, 0fdh ; 80 e2 fd ; 0xf52c5 keyboard.c:476 + mov bx, strict word 00018h ; bb 18 00 ; 0xf52c8 keyboard.c:53 + mov byte [es:bx], dl ; 26 88 17 ; 0xf52cb + jmp near 051f3h ; e9 22 ff ; 0xf52ce keyboard.c:479 + test bh, 003h ; f6 c7 03 ; 0xf52d1 keyboard.c:482 + jne short 052eah ; 75 14 ; 0xf52d4 + or dl, 020h ; 80 ca 20 ; 0xf52d6 keyboard.c:484 + mov ax, strict word 00040h ; b8 40 00 ; 0xf52d9 keyboard.c:51 + mov es, ax ; 8e c0 ; 0xf52dc + mov bx, strict word 00018h ; bb 18 00 ; 0xf52de + mov byte [es:bx], dl ; 26 88 17 ; 0xf52e1 keyboard.c:53 + xor dh, 020h ; 80 f6 20 ; 0xf52e4 keyboard.c:486 + jmp near 05370h ; e9 86 00 ; 0xf52e7 keyboard.c:487 + or dl, 008h ; 80 ca 08 ; 0xf52ea keyboard.c:490 + mov ax, strict word 00040h ; b8 40 00 ; 0xf52ed keyboard.c:51 + mov bx, strict word 00018h ; bb 18 00 ; 0xf52f0 + mov es, ax ; 8e c0 ; 0xf52f3 keyboard.c:53 + mov byte [es:bx], dl ; 26 88 17 ; 0xf52f5 + mov ax, 000aeh ; b8 ae 00 ; 0xf52f8 keyboard.c:494 + mov dx, strict word 00064h ; ba 64 00 ; 0xf52fb + out DX, AL ; ee ; 0xf52fe + call 0e034h ; e8 32 8d ; 0xf52ff keyboard.c:495 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5302 keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5305 + mov es, ax ; 8e c0 ; 0xf5308 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf530a + test AL, strict byte 008h ; a8 08 ; 0xf530d keyboard.c:49 + jne short 05302h ; 75 f1 ; 0xf530f + jmp near 051f3h ; e9 df fe ; 0xf5311 keyboard.c:502 + test bh, 003h ; f6 c7 03 ; 0xf5314 keyboard.c:504 + jne near 051f3h ; 0f 85 d8 fe ; 0xf5317 + and dl, 0dfh ; 80 e2 df ; 0xf531b keyboard.c:505 + mov bx, strict word 00018h ; bb 18 00 ; 0xf531e keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5321 + mov es, ax ; 8e c0 ; 0xf5324 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5326 + jmp near 051f3h ; e9 c7 fe ; 0xf5329 keyboard.c:508 + test bh, 002h ; f6 c7 02 ; 0xf532c keyboard.c:511 + je short 0535fh ; 74 2e ; 0xf532f + mov ax, strict word 00040h ; b8 40 00 ; 0xf5331 keyboard.c:56 + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5334 + mov es, ax ; 8e c0 ; 0xf5337 keyboard.c:58 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf5339 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf533c keyboard.c:61 + mov word [es:bx], ax ; 26 89 07 ; 0xf533f keyboard.c:63 + mov bx, strict word 00071h ; bb 71 00 ; 0xf5342 keyboard.c:51 + mov DL, strict byte 080h ; b2 80 ; 0xf5345 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5347 keyboard.c:53 + mov ax, 000aeh ; b8 ae 00 ; 0xf534a keyboard.c:516 + mov dx, strict word 00064h ; ba 64 00 ; 0xf534d + out DX, AL ; ee ; 0xf5350 + push bp ; 55 ; 0xf5351 keyboard.c:517 + int 01bh ; cd 1b ; 0xf5352 + pop bp ; 5d ; 0xf5354 + xor dx, dx ; 31 d2 ; 0xf5355 keyboard.c:518 + xor ax, ax ; 31 c0 ; 0xf5357 + call 050b5h ; e8 59 fd ; 0xf5359 + jmp near 051f3h ; e9 94 fe ; 0xf535c keyboard.c:519 + or dl, 010h ; 80 ca 10 ; 0xf535f keyboard.c:520 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5362 keyboard.c:51 + mov es, ax ; 8e c0 ; 0xf5365 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5367 + mov byte [es:bx], dl ; 26 88 17 ; 0xf536a keyboard.c:53 + xor dh, 010h ; 80 f6 10 ; 0xf536d keyboard.c:522 + mov bx, strict word 00017h ; bb 17 00 ; 0xf5370 keyboard.c:51 + mov byte [es:bx], dh ; 26 88 37 ; 0xf5373 keyboard.c:53 + jmp near 051f3h ; e9 7a fe ; 0xf5376 keyboard.c:525 + test bh, 002h ; f6 c7 02 ; 0xf5379 keyboard.c:528 + jne near 051f3h ; 0f 85 73 fe ; 0xf537c + and dl, 0efh ; 80 e2 ef ; 0xf5380 keyboard.c:529 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5383 keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5386 + mov es, ax ; 8e c0 ; 0xf5389 + mov byte [es:bx], dl ; 26 88 17 ; 0xf538b + jmp near 051f3h ; e9 62 fe ; 0xf538e keyboard.c:532 + test bl, 004h ; f6 c3 04 ; 0xf5391 keyboard.c:535 + jne near 051f3h ; 0f 85 5b fe ; 0xf5394 + or dl, 004h ; 80 ca 04 ; 0xf5398 keyboard.c:536 + mov bx, strict word 00018h ; bb 18 00 ; 0xf539b keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf539e + mov es, ax ; 8e c0 ; 0xf53a1 + mov byte [es:bx], dl ; 26 88 17 ; 0xf53a3 + jmp near 051f3h ; e9 4a fe ; 0xf53a6 keyboard.c:540 + and dl, 0fbh ; 80 e2 fb ; 0xf53a9 keyboard.c:543 + jmp short 0539bh ; eb ed ; 0xf53ac keyboard.c:544 + mov al, ah ; 88 e0 ; 0xf53ae keyboard.c:549 + and AL, strict byte 00ch ; 24 0c ; 0xf53b0 + cmp AL, strict byte 00ch ; 3c 0c ; 0xf53b2 + jne short 053c9h ; 75 13 ; 0xf53b4 + mov ax, strict word 00040h ; b8 40 00 ; 0xf53b6 keyboard.c:61 + mov es, ax ; 8e c0 ; 0xf53b9 + mov bx, strict word 00072h ; bb 72 00 ; 0xf53bb + mov ax, 01234h ; b8 34 12 ; 0xf53be + mov word [es:bx], ax ; 26 89 07 ; 0xf53c1 keyboard.c:63 + jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xf53c4 keyboard.c:552 + test dl, 008h ; f6 c2 08 ; 0xf53c9 keyboard.c:558 + je short 053dfh ; 74 11 ; 0xf53cc + and dl, 0f7h ; 80 e2 f7 ; 0xf53ce keyboard.c:560 + mov bx, strict word 00018h ; bb 18 00 ; 0xf53d1 keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf53d4 + mov es, ax ; 8e c0 ; 0xf53d7 + mov byte [es:bx], dl ; 26 88 17 ; 0xf53d9 + jmp near 05212h ; e9 33 fe ; 0xf53dc keyboard.c:562 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf53df keyboard.c:565 + test AL, strict byte 080h ; a8 80 ; 0xf53e2 + je short 05414h ; 74 2e ; 0xf53e4 + cmp AL, strict byte 0fah ; 3c fa ; 0xf53e6 keyboard.c:567 + jne short 053fah ; 75 10 ; 0xf53e8 + mov bx, 00097h ; bb 97 00 ; 0xf53ea keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf53ed + mov es, ax ; 8e c0 ; 0xf53f0 + mov ah, byte [es:bx] ; 26 8a 27 ; 0xf53f2 + or ah, 010h ; 80 cc 10 ; 0xf53f5 keyboard.c:49 + jmp short 0540eh ; eb 14 ; 0xf53f8 keyboard.c:570 + cmp AL, strict byte 0feh ; 3c fe ; 0xf53fa + jne near 051f3h ; 0f 85 f3 fd ; 0xf53fc + mov bx, 00097h ; bb 97 00 ; 0xf5400 keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5403 + mov es, ax ; 8e c0 ; 0xf5406 + mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5408 + or ah, 020h ; 80 cc 20 ; 0xf540b keyboard.c:49 + mov byte [es:bx], ah ; 26 88 27 ; 0xf540e keyboard.c:53 + jmp near 051f3h ; e9 df fd ; 0xf5411 keyboard.c:574 + cmp byte [bp-006h], 058h ; 80 7e fa 58 ; 0xf5414 keyboard.c:576 + jbe short 05438h ; 76 1e ; 0xf5418 + mov bx, 00e06h ; bb 06 0e ; 0xf541a keyboard.c:577 + mov cx, ds ; 8c d9 ; 0xf541d + mov ax, strict word 00004h ; b8 04 00 ; 0xf541f + call 01a27h ; e8 02 c6 ; 0xf5422 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf5425 + push ax ; 50 ; 0xf5429 + push 00621h ; 68 21 06 ; 0xf542a + push strict byte 00004h ; 6a 04 ; 0xf542d + call 01a68h ; e8 36 c6 ; 0xf542f + add sp, strict byte 00006h ; 83 c4 06 ; 0xf5432 + jmp near 05212h ; e9 da fd ; 0xf5435 keyboard.c:578 + test dh, 008h ; f6 c6 08 ; 0xf5438 keyboard.c:580 + je short 0544fh ; 74 12 ; 0xf543b + movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf543d keyboard.c:581 + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf5441 + mov dl, byte [bx+00e5ah] ; 8a 97 5a 0e ; 0xf5444 + mov ax, word [bx+00e5ah] ; 8b 87 5a 0e ; 0xf5448 keyboard.c:582 + jmp near 054dbh ; e9 8c 00 ; 0xf544c keyboard.c:583 + test dh, 004h ; f6 c6 04 ; 0xf544f + je short 05466h ; 74 12 ; 0xf5452 + movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf5454 keyboard.c:584 + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf5458 + mov dl, byte [bx+00e58h] ; 8a 97 58 0e ; 0xf545b + mov ax, word [bx+00e58h] ; 8b 87 58 0e ; 0xf545f keyboard.c:585 + jmp near 054dbh ; e9 75 00 ; 0xf5463 keyboard.c:586 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5466 + and AL, strict byte 002h ; 24 02 ; 0xf5469 + test al, al ; 84 c0 ; 0xf546b + jbe short 05484h ; 76 15 ; 0xf546d + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf546f + cmp AL, strict byte 047h ; 3c 47 ; 0xf5472 + jc short 05484h ; 72 0e ; 0xf5474 + cmp AL, strict byte 053h ; 3c 53 ; 0xf5476 + jnbe short 05484h ; 77 0a ; 0xf5478 + mov DL, strict byte 0e0h ; b2 e0 ; 0xf547a keyboard.c:588 + movzx bx, al ; 0f b6 d8 ; 0xf547c keyboard.c:589 + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf547f + jmp short 054d7h ; eb 53 ; 0xf5482 keyboard.c:590 + test dh, 003h ; f6 c6 03 ; 0xf5484 + je short 054b6h ; 74 2d ; 0xf5487 + movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf5489 keyboard.c:594 + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf548d + movzx ax, byte [bx+00e5ch] ; 0f b6 87 5c 0e ; 0xf5490 + movzx dx, dh ; 0f b6 d6 ; 0xf5495 + test dx, ax ; 85 c2 ; 0xf5498 + je short 054a6h ; 74 0a ; 0xf549a + mov dl, byte [bx+00e54h] ; 8a 97 54 0e ; 0xf549c keyboard.c:595 + mov ax, word [bx+00e54h] ; 8b 87 54 0e ; 0xf54a0 keyboard.c:596 + jmp short 054aeh ; eb 08 ; 0xf54a4 keyboard.c:597 + mov dl, byte [bx+00e56h] ; 8a 97 56 0e ; 0xf54a6 keyboard.c:598 + mov ax, word [bx+00e56h] ; 8b 87 56 0e ; 0xf54aa keyboard.c:599 + shr ax, 008h ; c1 e8 08 ; 0xf54ae + mov byte [bp-006h], al ; 88 46 fa ; 0xf54b1 + jmp short 054e1h ; eb 2b ; 0xf54b4 keyboard.c:601 + movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf54b6 keyboard.c:603 + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf54ba + movzx si, byte [bx+00e5ch] ; 0f b6 b7 5c 0e ; 0xf54bd + movzx ax, dh ; 0f b6 c6 ; 0xf54c2 + test ax, si ; 85 f0 ; 0xf54c5 + je short 054d3h ; 74 0a ; 0xf54c7 + mov dl, byte [bx+00e56h] ; 8a 97 56 0e ; 0xf54c9 keyboard.c:604 + mov ax, word [bx+00e56h] ; 8b 87 56 0e ; 0xf54cd keyboard.c:605 + jmp short 054dbh ; eb 08 ; 0xf54d1 keyboard.c:606 + mov dl, byte [bx+00e54h] ; 8a 97 54 0e ; 0xf54d3 keyboard.c:607 + mov ax, word [bx+00e54h] ; 8b 87 54 0e ; 0xf54d7 keyboard.c:608 + shr ax, 008h ; c1 e8 08 ; 0xf54db + mov byte [bp-006h], al ; 88 46 fa ; 0xf54de + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf54e1 keyboard.c:611 + jne short 05501h ; 75 1a ; 0xf54e5 + test dl, dl ; 84 d2 ; 0xf54e7 + jne short 05501h ; 75 16 ; 0xf54e9 + mov bx, 00e06h ; bb 06 0e ; 0xf54eb keyboard.c:612 + mov cx, ds ; 8c d9 ; 0xf54ee + mov ax, strict word 00004h ; b8 04 00 ; 0xf54f0 + call 01a27h ; e8 31 c5 ; 0xf54f3 + push 00658h ; 68 58 06 ; 0xf54f6 + push strict byte 00004h ; 6a 04 ; 0xf54f9 + call 01a68h ; e8 6a c5 ; 0xf54fb + add sp, strict byte 00004h ; 83 c4 04 ; 0xf54fe + xor dh, dh ; 30 f6 ; 0xf5501 keyboard.c:614 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf5503 + jmp near 05359h ; e9 4f fe ; 0xf5507 + ; disGetNextSymbol 0xf550a LB 0x5892 -> off=0x0 cb=000000000000006c uValue=00000000000f3f0a 'dequeue_key' +dequeue_key: ; 0xf550a LB 0x6c + push si ; 56 ; 0xf550a keyboard.c:624 + push di ; 57 ; 0xf550b + enter 00002h, 000h ; c8 02 00 00 ; 0xf550c + push ax ; 50 ; 0xf5510 + push dx ; 52 ; 0xf5511 + mov si, bx ; 89 de ; 0xf5512 + mov bx, 00080h ; bb 80 00 ; 0xf5514 keyboard.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5517 + mov es, ax ; 8e c0 ; 0xf551a + mov ax, word [es:bx] ; 26 8b 07 ; 0xf551c + mov word [bp-002h], ax ; 89 46 fe ; 0xf551f + mov bx, 00082h ; bb 82 00 ; 0xf5522 keyboard.c:58 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf5525 + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5528 keyboard.c:58 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf552b + mov di, strict word 0001ch ; bf 1c 00 ; 0xf552e keyboard.c:58 + mov ax, word [es:di] ; 26 8b 05 ; 0xf5531 + cmp bx, ax ; 39 c3 ; 0xf5534 keyboard.c:640 + je short 0556eh ; 74 36 ; 0xf5536 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf5538 keyboard.c:48 + lea di, [bx+001h] ; 8d 7f 01 ; 0xf553b keyboard.c:642 + mov ah, byte [es:di] ; 26 8a 25 ; 0xf553e keyboard.c:48 + mov es, cx ; 8e c1 ; 0xf5541 keyboard.c:643 + mov byte [es:si], al ; 26 88 04 ; 0xf5543 + mov es, [bp-006h] ; 8e 46 fa ; 0xf5546 keyboard.c:644 + mov si, word [bp-004h] ; 8b 76 fc ; 0xf5549 + mov byte [es:si], ah ; 26 88 24 ; 0xf554c + cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf554f keyboard.c:647 + je short 05569h ; 74 14 ; 0xf5553 + inc bx ; 43 ; 0xf5555 keyboard.c:648 + inc bx ; 43 ; 0xf5556 + cmp bx, dx ; 39 d3 ; 0xf5557 keyboard.c:649 + jc short 0555eh ; 72 03 ; 0xf5559 + mov bx, word [bp-002h] ; 8b 5e fe ; 0xf555b keyboard.c:650 + mov si, strict word 0001ah ; be 1a 00 ; 0xf555e keyboard.c:63 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5561 + mov es, ax ; 8e c0 ; 0xf5564 + mov word [es:si], bx ; 26 89 1c ; 0xf5566 + mov ax, strict word 00001h ; b8 01 00 ; 0xf5569 keyboard.c:653 + jmp short 05570h ; eb 02 ; 0xf556c + xor ax, ax ; 31 c0 ; 0xf556e keyboard.c:656 + leave ; c9 ; 0xf5570 keyboard.c:658 + pop di ; 5f ; 0xf5571 + pop si ; 5e ; 0xf5572 + retn 00002h ; c2 02 00 ; 0xf5573 + ; disGetNextSymbol 0xf5576 LB 0x5826 -> off=0x23 cb=00000000000002e7 uValue=00000000000f3f99 'int16_function' + db 0a2h, 092h, 012h, 011h, 010h, 00ah, 009h, 005h, 002h, 001h, 000h, 036h, 058h, 04eh, 056h, 095h + db 056h, 0e2h, 056h, 0f4h, 056h, 01eh, 057h, 027h, 057h, 098h, 057h, 0c9h, 057h, 0f7h, 057h, 02bh + db 058h, 079h, 058h +int16_function: ; 0xf5599 LB 0x2e7 + push bp ; 55 ; 0xf5599 keyboard.c:675 + mov bp, sp ; 89 e5 ; 0xf559a + push si ; 56 ; 0xf559c + push di ; 57 ; 0xf559d + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf559e + mov bx, strict word 00017h ; bb 17 00 ; 0xf55a1 keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf55a4 + mov es, ax ; 8e c0 ; 0xf55a7 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf55a9 + mov bl, al ; 88 c3 ; 0xf55ac keyboard.c:49 + mov si, 00097h ; be 97 00 ; 0xf55ae keyboard.c:48 + mov ah, byte [es:si] ; 26 8a 24 ; 0xf55b1 + mov bh, ah ; 88 e7 ; 0xf55b4 keyboard.c:49 + movzx dx, al ; 0f b6 d0 ; 0xf55b6 keyboard.c:684 + sar dx, 004h ; c1 fa 04 ; 0xf55b9 + and dl, 007h ; 80 e2 07 ; 0xf55bc + mov al, ah ; 88 e0 ; 0xf55bf + and AL, strict byte 007h ; 24 07 ; 0xf55c1 + xor ah, ah ; 30 e4 ; 0xf55c3 + xor al, dl ; 30 d0 ; 0xf55c5 + test ax, ax ; 85 c0 ; 0xf55c7 + je short 0562ch ; 74 61 ; 0xf55c9 + cli ; fa ; 0xf55cb keyboard.c:685 + mov AL, strict byte 0edh ; b0 ed ; 0xf55cc keyboard.c:686 + mov dx, strict word 00060h ; ba 60 00 ; 0xf55ce + out DX, AL ; ee ; 0xf55d1 + mov dx, strict word 00064h ; ba 64 00 ; 0xf55d2 keyboard.c:687 + in AL, DX ; ec ; 0xf55d5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf55d6 + test AL, strict byte 001h ; a8 01 ; 0xf55d8 + jne short 055e4h ; 75 08 ; 0xf55da + mov AL, strict byte 021h ; b0 21 ; 0xf55dc + mov dx, 00080h ; ba 80 00 ; 0xf55de + out DX, AL ; ee ; 0xf55e1 + jmp short 055d2h ; eb ee ; 0xf55e2 + mov dx, strict word 00060h ; ba 60 00 ; 0xf55e4 keyboard.c:688 + in AL, DX ; ec ; 0xf55e7 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf55e8 + cmp ax, 000fah ; 3d fa 00 ; 0xf55ea + jne short 0562bh ; 75 3c ; 0xf55ed + and bh, 0c8h ; 80 e7 c8 ; 0xf55ef keyboard.c:689 + movzx dx, bl ; 0f b6 d3 ; 0xf55f2 keyboard.c:690 + sar dx, 004h ; c1 fa 04 ; 0xf55f5 + and dx, strict byte 00007h ; 83 e2 07 ; 0xf55f8 + movzx ax, bh ; 0f b6 c7 ; 0xf55fb + or ax, dx ; 09 d0 ; 0xf55fe + mov bh, al ; 88 c7 ; 0xf5600 + and AL, strict byte 007h ; 24 07 ; 0xf5602 keyboard.c:691 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5604 + out DX, AL ; ee ; 0xf5607 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5608 keyboard.c:692 + in AL, DX ; ec ; 0xf560b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf560c + test AL, strict byte 001h ; a8 01 ; 0xf560e + jne short 0561ah ; 75 08 ; 0xf5610 + mov AL, strict byte 021h ; b0 21 ; 0xf5612 keyboard.c:693 + mov dx, 00080h ; ba 80 00 ; 0xf5614 + out DX, AL ; ee ; 0xf5617 + jmp short 05608h ; eb ee ; 0xf5618 + mov dx, strict word 00060h ; ba 60 00 ; 0xf561a keyboard.c:694 + in AL, DX ; ec ; 0xf561d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf561e + mov si, 00097h ; be 97 00 ; 0xf5620 keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5623 + mov es, ax ; 8e c0 ; 0xf5626 + mov byte [es:si], bh ; 26 88 3c ; 0xf5628 + sti ; fb ; 0xf562b keyboard.c:697 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf562c keyboard.c:700 + shr ax, 008h ; c1 e8 08 ; 0xf562f + cmp ax, 000a2h ; 3d a2 00 ; 0xf5632 + jnbe near 05836h ; 0f 87 fd 01 ; 0xf5635 + push CS ; 0e ; 0xf5639 + pop ES ; 07 ; 0xf563a + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf563b + mov di, 05576h ; bf 76 55 ; 0xf563e + repne scasb ; f2 ae ; 0xf5641 + sal cx, 1 ; d1 e1 ; 0xf5643 + mov di, cx ; 89 cf ; 0xf5645 + mov ax, word [cs:di+05581h] ; 2e 8b 85 81 55 ; 0xf5647 + jmp ax ; ff e0 ; 0xf564c + push strict byte 00001h ; 6a 01 ; 0xf564e keyboard.c:702 + mov cx, ss ; 8c d1 ; 0xf5650 + lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf5652 + mov dx, ss ; 8c d2 ; 0xf5655 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf5657 + call 0550ah ; e8 ad fe ; 0xf565a + test ax, ax ; 85 c0 ; 0xf565d + jne short 0566ch ; 75 0b ; 0xf565f + push 0068fh ; 68 8f 06 ; 0xf5661 keyboard.c:703 + push strict byte 00007h ; 6a 07 ; 0xf5664 + call 01a68h ; e8 ff c3 ; 0xf5666 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf5669 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf566c keyboard.c:705 + je short 05678h ; 74 06 ; 0xf5670 + cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf5672 + je short 0567eh ; 74 06 ; 0xf5676 + cmp byte [bp-00ah], 0e0h ; 80 7e f6 e0 ; 0xf5678 keyboard.c:707 + jne short 05682h ; 75 04 ; 0xf567c + mov byte [bp-00ah], 000h ; c6 46 f6 00 ; 0xf567e keyboard.c:708 + movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf5682 keyboard.c:709 + sal dx, 008h ; c1 e2 08 ; 0xf5686 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf5689 + or dx, ax ; 09 c2 ; 0xf568d + mov word [bp+012h], dx ; 89 56 12 ; 0xf568f + jmp near 05879h ; e9 e4 01 ; 0xf5692 keyboard.c:710 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf5695 keyboard.c:714 + mov word [bp+01eh], ax ; 89 46 1e ; 0xf5698 + push strict byte 00000h ; 6a 00 ; 0xf569b keyboard.c:715 + mov cx, ss ; 8c d1 ; 0xf569d + lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf569f + mov dx, ss ; 8c d2 ; 0xf56a2 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf56a4 + call 0550ah ; e8 60 fe ; 0xf56a7 + test ax, ax ; 85 c0 ; 0xf56aa + jne short 056b5h ; 75 07 ; 0xf56ac + or word [bp+01eh], strict byte 00040h ; 83 4e 1e 40 ; 0xf56ae keyboard.c:716 + jmp near 05879h ; e9 c4 01 ; 0xf56b2 keyboard.c:717 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf56b5 keyboard.c:719 + je short 056c1h ; 74 06 ; 0xf56b9 + cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf56bb + je short 056c7h ; 74 06 ; 0xf56bf + cmp byte [bp-00ah], 0e0h ; 80 7e f6 e0 ; 0xf56c1 keyboard.c:721 + jne short 056cbh ; 75 04 ; 0xf56c5 + mov byte [bp-00ah], 000h ; c6 46 f6 00 ; 0xf56c7 keyboard.c:722 + movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf56cb keyboard.c:723 + sal dx, 008h ; c1 e2 08 ; 0xf56cf + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf56d2 + or dx, ax ; 09 c2 ; 0xf56d6 + mov word [bp+012h], dx ; 89 56 12 ; 0xf56d8 + and word [bp+01eh], strict byte 0ffbfh ; 83 66 1e bf ; 0xf56db keyboard.c:724 + jmp near 05879h ; e9 97 01 ; 0xf56df keyboard.c:725 + mov bx, strict word 00017h ; bb 17 00 ; 0xf56e2 keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf56e5 + mov es, ax ; 8e c0 ; 0xf56e8 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf56ea + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf56ed keyboard.c:729 + mov dl, al ; 88 c2 ; 0xf56f0 + jmp short 0568fh ; eb 9b ; 0xf56f2 + mov al, byte [bp+010h] ; 8a 46 10 ; 0xf56f4 keyboard.c:733 + movzx dx, al ; 0f b6 d0 ; 0xf56f7 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf56fa + shr ax, 008h ; c1 e8 08 ; 0xf56fd + xor ah, ah ; 30 e4 ; 0xf5700 + call 050b5h ; e8 b0 f9 ; 0xf5702 + test ax, ax ; 85 c0 ; 0xf5705 + jne short 05716h ; 75 0d ; 0xf5707 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5709 keyboard.c:734 + xor al, al ; 30 c0 ; 0xf570c + or AL, strict byte 001h ; 0c 01 ; 0xf570e + mov word [bp+012h], ax ; 89 46 12 ; 0xf5710 + jmp near 05879h ; e9 63 01 ; 0xf5713 keyboard.c:736 + and word [bp+012h], 0ff00h ; 81 66 12 00 ff ; 0xf5716 keyboard.c:737 + jmp near 05879h ; e9 5b 01 ; 0xf571b keyboard.c:739 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf571e keyboard.c:752 + xor al, al ; 30 c0 ; 0xf5721 + or AL, strict byte 030h ; 0c 30 ; 0xf5723 + jmp short 05710h ; eb e9 ; 0xf5725 + mov byte [bp-008h], 002h ; c6 46 f8 02 ; 0xf5727 keyboard.c:756 + xor cx, cx ; 31 c9 ; 0xf572b keyboard.c:757 + cli ; fa ; 0xf572d keyboard.c:759 + mov AL, strict byte 0f2h ; b0 f2 ; 0xf572e keyboard.c:760 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5730 + out DX, AL ; ee ; 0xf5733 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf5734 keyboard.c:762 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5737 keyboard.c:763 + in AL, DX ; ec ; 0xf573a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf573b + test AL, strict byte 001h ; a8 01 ; 0xf573d + jne short 0574eh ; 75 0d ; 0xf573f + dec bx ; 4b ; 0xf5741 + test bx, bx ; 85 db ; 0xf5742 + jbe short 0574eh ; 76 08 ; 0xf5744 + mov dx, 00080h ; ba 80 00 ; 0xf5746 keyboard.c:764 + in AL, DX ; ec ; 0xf5749 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf574a + jmp short 05737h ; eb e9 ; 0xf574c + test bx, bx ; 85 db ; 0xf574e keyboard.c:765 + jbe short 05792h ; 76 40 ; 0xf5750 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5752 keyboard.c:766 + in AL, DX ; ec ; 0xf5755 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5756 + cmp ax, 000fah ; 3d fa 00 ; 0xf5758 + jne short 05792h ; 75 35 ; 0xf575b + mov bx, strict word 0ffffh ; bb ff ff ; 0xf575d keyboard.c:768 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5760 keyboard.c:769 + in AL, DX ; ec ; 0xf5763 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5764 + test AL, strict byte 001h ; a8 01 ; 0xf5766 + jne short 05777h ; 75 0d ; 0xf5768 + dec bx ; 4b ; 0xf576a + test bx, bx ; 85 db ; 0xf576b + jbe short 05777h ; 76 08 ; 0xf576d + mov dx, 00080h ; ba 80 00 ; 0xf576f keyboard.c:770 + in AL, DX ; ec ; 0xf5772 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5773 + jmp short 05760h ; eb e9 ; 0xf5775 + test bx, bx ; 85 db ; 0xf5777 keyboard.c:771 + jbe short 05789h ; 76 0e ; 0xf5779 + shr cx, 008h ; c1 e9 08 ; 0xf577b keyboard.c:772 + mov dx, strict word 00060h ; ba 60 00 ; 0xf577e keyboard.c:773 + in AL, DX ; ec ; 0xf5781 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5782 + sal ax, 008h ; c1 e0 08 ; 0xf5784 + or cx, ax ; 09 c1 ; 0xf5787 + dec byte [bp-008h] ; fe 4e f8 ; 0xf5789 keyboard.c:775 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf578c + jnbe short 0575dh ; 77 cb ; 0xf5790 + mov word [bp+00ch], cx ; 89 4e 0c ; 0xf5792 keyboard.c:778 + jmp near 05879h ; e9 e1 00 ; 0xf5795 keyboard.c:779 + push strict byte 00001h ; 6a 01 ; 0xf5798 keyboard.c:782 + mov cx, ss ; 8c d1 ; 0xf579a + lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf579c + mov dx, ss ; 8c d2 ; 0xf579f + lea ax, [bp-006h] ; 8d 46 fa ; 0xf57a1 + call 0550ah ; e8 63 fd ; 0xf57a4 + test ax, ax ; 85 c0 ; 0xf57a7 + jne short 057b6h ; 75 0b ; 0xf57a9 + push 0068fh ; 68 8f 06 ; 0xf57ab keyboard.c:783 + push strict byte 00007h ; 6a 07 ; 0xf57ae + call 01a68h ; e8 b5 c2 ; 0xf57b0 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf57b3 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf57b6 keyboard.c:785 + je near 05682h ; 0f 84 c4 fe ; 0xf57ba + cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf57be + je near 0567eh ; 0f 84 b8 fe ; 0xf57c2 + jmp near 05682h ; e9 b9 fe ; 0xf57c6 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf57c9 keyboard.c:792 + mov word [bp+01eh], ax ; 89 46 1e ; 0xf57cc + push strict byte 00000h ; 6a 00 ; 0xf57cf keyboard.c:793 + mov cx, ss ; 8c d1 ; 0xf57d1 + lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf57d3 + mov dx, ss ; 8c d2 ; 0xf57d6 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf57d8 + call 0550ah ; e8 2c fd ; 0xf57db + test ax, ax ; 85 c0 ; 0xf57de + je near 056aeh ; 0f 84 ca fe ; 0xf57e0 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf57e4 keyboard.c:797 + je near 056cbh ; 0f 84 df fe ; 0xf57e8 + cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf57ec + je near 056c7h ; 0f 84 d3 fe ; 0xf57f0 + jmp near 056cbh ; e9 d4 fe ; 0xf57f4 + mov bx, strict word 00017h ; bb 17 00 ; 0xf57f7 keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf57fa + mov es, ax ; 8e c0 ; 0xf57fd + mov al, byte [es:bx] ; 26 8a 07 ; 0xf57ff + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5802 keyboard.c:805 + mov dl, al ; 88 c2 ; 0xf5805 + mov word [bp+012h], dx ; 89 56 12 ; 0xf5807 + mov bx, strict word 00018h ; bb 18 00 ; 0xf580a keyboard.c:48 + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf580d + and bl, 073h ; 80 e3 73 ; 0xf5810 keyboard.c:49 + mov si, 00096h ; be 96 00 ; 0xf5813 keyboard.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf5816 + and AL, strict byte 00ch ; 24 0c ; 0xf5819 keyboard.c:49 + or bl, al ; 08 c3 ; 0xf581b + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf581d keyboard.c:808 + xor dh, dh ; 30 f6 ; 0xf5820 + movzx ax, bl ; 0f b6 c3 ; 0xf5822 + sal ax, 008h ; c1 e0 08 ; 0xf5825 + jmp near 0568dh ; e9 62 fe ; 0xf5828 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf582b keyboard.c:813 + xor ah, ah ; 30 e4 ; 0xf582e + or ah, 080h ; 80 cc 80 ; 0xf5830 + jmp near 05710h ; e9 da fe ; 0xf5833 + mov bx, 00e06h ; bb 06 0e ; 0xf5836 keyboard.c:828 + mov cx, ds ; 8c d9 ; 0xf5839 + mov ax, strict word 00004h ; b8 04 00 ; 0xf583b + call 01a27h ; e8 e6 c1 ; 0xf583e + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5841 + shr ax, 008h ; c1 e8 08 ; 0xf5844 + push ax ; 50 ; 0xf5847 + push 006b3h ; 68 b3 06 ; 0xf5848 + push strict byte 00004h ; 6a 04 ; 0xf584b + call 01a68h ; e8 18 c2 ; 0xf584d + add sp, strict byte 00006h ; 83 c4 06 ; 0xf5850 + mov bx, 00e06h ; bb 06 0e ; 0xf5853 keyboard.c:829 + mov cx, ds ; 8c d9 ; 0xf5856 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5858 + call 01a27h ; e8 c9 c1 ; 0xf585b + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf585e + push ax ; 50 ; 0xf5861 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5862 + push ax ; 50 ; 0xf5865 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf5866 + push ax ; 50 ; 0xf5869 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf586a + push ax ; 50 ; 0xf586d + push 006dbh ; 68 db 06 ; 0xf586e + push strict byte 00004h ; 6a 04 ; 0xf5871 + call 01a68h ; e8 f2 c1 ; 0xf5873 + add sp, strict byte 0000ch ; 83 c4 0c ; 0xf5876 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf5879 keyboard.c:832 + pop di ; 5f ; 0xf587c + pop si ; 5e ; 0xf587d + pop bp ; 5d ; 0xf587e + retn ; c3 ; 0xf587f + ; disGetNextSymbol 0xf5880 LB 0x551c -> off=0x0 cb=00000000000000b3 uValue=00000000000f4280 'set_geom_lba' +set_geom_lba: ; 0xf5880 LB 0xb3 + push bx ; 53 ; 0xf5880 disk.c:125 + push cx ; 51 ; 0xf5881 + push si ; 56 ; 0xf5882 + push di ; 57 ; 0xf5883 + enter 00008h, 000h ; c8 08 00 00 ; 0xf5884 + mov di, ax ; 89 c7 ; 0xf5888 + mov es, dx ; 8e c2 ; 0xf588a + mov dword [bp-008h], strict dword 0007e0000h ; 66 c7 46 f8 00 00 7e 00 ; 0xf588c disk.c:127 + mov word [bp-002h], 000ffh ; c7 46 fe ff 00 ; 0xf5894 disk.c:129 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5899 disk.c:132 + mov bx, word [bp+010h] ; 8b 5e 10 ; 0xf589c + mov cx, word [bp+00eh] ; 8b 4e 0e ; 0xf589f + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf58a2 + mov si, strict word 00020h ; be 20 00 ; 0xf58a5 + call 0ace0h ; e8 35 54 ; 0xf58a8 + test ax, ax ; 85 c0 ; 0xf58ab + jne short 058bbh ; 75 0c ; 0xf58ad + test bx, bx ; 85 db ; 0xf58af + jne short 058bbh ; 75 08 ; 0xf58b1 + test cx, cx ; 85 c9 ; 0xf58b3 + jne short 058bbh ; 75 04 ; 0xf58b5 + test dx, dx ; 85 d2 ; 0xf58b7 + je short 058c2h ; 74 07 ; 0xf58b9 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf58bb + mov si, bx ; 89 de ; 0xf58be + jmp short 058c8h ; eb 06 ; 0xf58c0 + mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf58c2 + mov si, word [bp+00eh] ; 8b 76 0e ; 0xf58c5 + mov word [bp-004h], bx ; 89 5e fc ; 0xf58c8 + xor bx, bx ; 31 db ; 0xf58cb disk.c:134 + jmp short 058d4h ; eb 05 ; 0xf58cd + cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf58cf + jnl short 058f7h ; 7d 23 ; 0xf58d2 + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf58d4 disk.c:135 + cmp si, ax ; 39 c6 ; 0xf58d7 + jc short 058e5h ; 72 0a ; 0xf58d9 + jne short 058eeh ; 75 11 ; 0xf58db + mov ax, word [bp-004h] ; 8b 46 fc ; 0xf58dd + cmp ax, word [bp-008h] ; 3b 46 f8 ; 0xf58e0 + jnbe short 058eeh ; 77 09 ; 0xf58e3 + mov ax, word [bp-002h] ; 8b 46 fe ; 0xf58e5 disk.c:136 + inc ax ; 40 ; 0xf58e8 + shr ax, 1 ; d1 e8 ; 0xf58e9 + mov word [bp-002h], ax ; 89 46 fe ; 0xf58eb + shr word [bp-006h], 1 ; d1 6e fa ; 0xf58ee disk.c:137 + rcr word [bp-008h], 1 ; d1 5e f8 ; 0xf58f1 + inc bx ; 43 ; 0xf58f4 disk.c:138 + jmp short 058cfh ; eb d8 ; 0xf58f5 + mov ax, word [bp-002h] ; 8b 46 fe ; 0xf58f7 disk.c:140 + xor dx, dx ; 31 d2 ; 0xf58fa + mov bx, strict word 0003fh ; bb 3f 00 ; 0xf58fc + xor cx, cx ; 31 c9 ; 0xf58ff + call 0ac60h ; e8 5c 53 ; 0xf5901 + mov bx, ax ; 89 c3 ; 0xf5904 + mov cx, dx ; 89 d1 ; 0xf5906 + mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5908 + mov dx, si ; 89 f2 ; 0xf590b + call 0aca0h ; e8 90 53 ; 0xf590d + mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf5910 + cmp ax, 00400h ; 3d 00 04 ; 0xf5914 disk.c:141 + jbe short 0591fh ; 76 06 ; 0xf5917 + mov word [es:di+002h], 00400h ; 26 c7 45 02 00 04 ; 0xf5919 disk.c:142 + mov ax, word [bp-002h] ; 8b 46 fe ; 0xf591f disk.c:143 + mov word [es:di], ax ; 26 89 05 ; 0xf5922 + mov word [es:di+004h], strict word 0003fh ; 26 c7 45 04 3f 00 ; 0xf5925 disk.c:144 + leave ; c9 ; 0xf592b disk.c:145 + pop di ; 5f ; 0xf592c + pop si ; 5e ; 0xf592d + pop cx ; 59 ; 0xf592e + pop bx ; 5b ; 0xf592f + retn 00008h ; c2 08 00 ; 0xf5930 + ; disGetNextSymbol 0xf5933 LB 0x5469 -> off=0x0 cb=00000000000002ed uValue=00000000000f4333 'edd_fill_dpt' +edd_fill_dpt: ; 0xf5933 LB 0x2ed + push si ; 56 ; 0xf5933 disk.c:147 + push di ; 57 ; 0xf5934 + enter 0000eh, 000h ; c8 0e 00 00 ; 0xf5935 + mov di, ax ; 89 c7 ; 0xf5939 + mov word [bp-004h], dx ; 89 56 fc ; 0xf593b + mov word [bp-00eh], bx ; 89 5e f2 ; 0xf593e + mov word [bp-006h], cx ; 89 4e fa ; 0xf5941 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5944 disk.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5947 + mov es, ax ; 8e c0 ; 0xf594a + mov ax, word [es:bx] ; 26 8b 07 ; 0xf594c + mov word [bp-008h], ax ; 89 46 f8 ; 0xf594f disk.c:59 + mov es, dx ; 8e c2 ; 0xf5952 disk.c:152 + mov ax, word [es:di] ; 26 8b 05 ; 0xf5954 + cmp ax, strict word 0001ah ; 3d 1a 00 ; 0xf5957 + jnc short 05962h ; 73 06 ; 0xf595a + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf595c disk.c:153 + jmp near 05c1ah ; e9 b8 02 ; 0xf595f + jc near 05a34h ; 0f 82 ce 00 ; 0xf5962 disk.c:156 + mov word [es:di], strict word 0001ah ; 26 c7 05 1a 00 ; 0xf5966 disk.c:159 + movzx bx, byte [bp+008h] ; 0f b6 5e 08 ; 0xf596b disk.c:160 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf596f + mov dx, cx ; 89 ca ; 0xf5972 + add bx, word [bp-00eh] ; 03 5e f2 ; 0xf5974 + mov es, cx ; 8e c1 ; 0xf5977 + mov ax, word [es:bx+024h] ; 26 8b 47 24 ; 0xf5979 + mov es, [bp-004h] ; 8e 46 fc ; 0xf597d + mov word [es:di+018h], ax ; 26 89 45 18 ; 0xf5980 + mov es, cx ; 8e c1 ; 0xf5984 disk.c:162 + cmp byte [es:bx+01fh], 005h ; 26 80 7f 1f 05 ; 0xf5986 + jne short 059c5h ; 75 38 ; 0xf598b + mov es, [bp-004h] ; 8e 46 fc ; 0xf598d disk.c:163 + 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; 0xf5990 + 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; 0xf5999 disk.c:164 + 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; 0xf59a2 disk.c:165 + 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; 0xf59ab disk.c:166 + 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; 0xf59b4 disk.c:167 + mov word [es:di+016h], strict word 0ffffh ; 26 c7 45 16 ff ff ; 0xf59bd disk.c:168 + jmp short 05a34h ; eb 6f ; 0xf59c3 disk.c:169 + mov es, [bp-004h] ; 8e 46 fc ; 0xf59c5 disk.c:170 + mov word [es:di+002h], strict word 00002h ; 26 c7 45 02 02 00 ; 0xf59c8 + mov es, cx ; 8e c1 ; 0xf59ce disk.c:171 + mov ax, word [es:bx+02eh] ; 26 8b 47 2e ; 0xf59d0 + mov es, [bp-004h] ; 8e 46 fc ; 0xf59d4 + mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf59d7 + mov word [es:di+006h], strict word 00000h ; 26 c7 45 06 00 00 ; 0xf59db + mov es, cx ; 8e c1 ; 0xf59e1 disk.c:172 + mov ax, word [es:bx+02ch] ; 26 8b 47 2c ; 0xf59e3 + mov es, [bp-004h] ; 8e 46 fc ; 0xf59e7 + mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf59ea + mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xf59ee + mov es, cx ; 8e c1 ; 0xf59f4 disk.c:173 + mov ax, word [es:bx+030h] ; 26 8b 47 30 ; 0xf59f6 + mov es, [bp-004h] ; 8e 46 fc ; 0xf59fa + mov word [es:di+00ch], ax ; 26 89 45 0c ; 0xf59fd + mov word [es:di+00eh], strict word 00000h ; 26 c7 45 0e 00 00 ; 0xf5a01 + mov es, cx ; 8e c1 ; 0xf5a07 disk.c:174 + mov ax, word [es:bx+038h] ; 26 8b 47 38 ; 0xf5a09 + mov si, word [es:bx+036h] ; 26 8b 77 36 ; 0xf5a0d + mov cx, word [es:bx+034h] ; 26 8b 4f 34 ; 0xf5a11 + mov dx, word [es:bx+032h] ; 26 8b 57 32 ; 0xf5a15 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5a19 disk.c:175 + mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf5a1c + mov word [es:di+012h], cx ; 26 89 4d 12 ; 0xf5a20 + mov bx, si ; 89 f3 ; 0xf5a24 disk.c:176 + mov si, strict word 00020h ; be 20 00 ; 0xf5a26 + call 0ace0h ; e8 b4 52 ; 0xf5a29 + mov word [es:di+014h], dx ; 26 89 55 14 ; 0xf5a2c + mov word [es:di+016h], cx ; 26 89 4d 16 ; 0xf5a30 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5a34 disk.c:181 + cmp word [es:di], strict byte 0001eh ; 26 83 3d 1e ; 0xf5a37 + jc near 05b5dh ; 0f 82 1e 01 ; 0xf5a3b + mov word [es:di], strict word 0001eh ; 26 c7 05 1e 00 ; 0xf5a3f disk.c:185 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf5a44 disk.c:186 + mov word [es:di+01ch], ax ; 26 89 45 1c ; 0xf5a47 + mov word [es:di+01ah], 00306h ; 26 c7 45 1a 06 03 ; 0xf5a4b disk.c:187 + movzx cx, byte [bp+008h] ; 0f b6 4e 08 ; 0xf5a51 disk.c:190 + mov ax, cx ; 89 c8 ; 0xf5a55 + cwd ; 99 ; 0xf5a57 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf5a58 + sar ax, 1 ; d1 f8 ; 0xf5a5a + xor ah, ah ; 30 e4 ; 0xf5a5c disk.c:191 + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5a5e + mov es, [bp-006h] ; 8e 46 fa ; 0xf5a61 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf5a64 + add bx, ax ; 01 c3 ; 0xf5a67 + mov ax, word [es:bx+0027ah] ; 26 8b 87 7a 02 ; 0xf5a69 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5a6e + mov ax, word [es:bx+0027ch] ; 26 8b 87 7c 02 ; 0xf5a71 disk.c:192 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5a76 + mov al, byte [es:bx+00279h] ; 26 8a 87 79 02 ; 0xf5a79 disk.c:193 + mov byte [bp-002h], al ; 88 46 fe ; 0xf5a7e + imul bx, cx, strict byte 0001ch ; 6b d9 1c ; 0xf5a81 disk.c:194 + add bx, word [bp-00eh] ; 03 5e f2 ; 0xf5a84 + mov ah, byte [es:bx+022h] ; 26 8a 67 22 ; 0xf5a87 + mov al, byte [es:bx+023h] ; 26 8a 47 23 ; 0xf5a8b disk.c:195 + test al, al ; 84 c0 ; 0xf5a8f disk.c:197 + jne short 05a97h ; 75 04 ; 0xf5a91 + xor bx, bx ; 31 db ; 0xf5a93 + jmp short 05a9ah ; eb 03 ; 0xf5a95 + mov bx, strict word 00008h ; bb 08 00 ; 0xf5a97 + or bl, 010h ; 80 cb 10 ; 0xf5a9a disk.c:198 + movzx dx, byte [bp+008h] ; 0f b6 56 08 ; 0xf5a9d disk.c:199 + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5aa1 + mov es, [bp-006h] ; 8e 46 fa ; 0xf5aa4 + mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf5aa7 + add si, dx ; 01 d6 ; 0xf5aaa + cmp byte [es:si+01fh], 005h ; 26 80 7c 1f 05 ; 0xf5aac + jne short 05ab6h ; 75 03 ; 0xf5ab1 + or bl, 060h ; 80 cb 60 ; 0xf5ab3 disk.c:200 + cmp ah, 001h ; 80 fc 01 ; 0xf5ab6 disk.c:204 + db 00fh, 094h, 0c4h + ; sete ah ; 0f 94 c4 ; 0xf5ab9 + movzx dx, ah ; 0f b6 d4 ; 0xf5abc + or bx, dx ; 09 d3 ; 0xf5abf + cmp AL, strict byte 001h ; 3c 01 ; 0xf5ac1 disk.c:206 + db 00fh, 094h, 0c4h + ; sete ah ; 0f 94 c4 ; 0xf5ac3 + movzx dx, ah ; 0f b6 d4 ; 0xf5ac6 + or bx, dx ; 09 d3 ; 0xf5ac9 + cmp AL, strict byte 003h ; 3c 03 ; 0xf5acb disk.c:207 + jne short 05ad4h ; 75 05 ; 0xf5acd + mov ax, strict word 00003h ; b8 03 00 ; 0xf5acf + jmp short 05ad6h ; eb 02 ; 0xf5ad2 + xor ax, ax ; 31 c0 ; 0xf5ad4 + or bx, ax ; 09 c3 ; 0xf5ad6 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5ad8 disk.c:209 + mov es, [bp-006h] ; 8e 46 fa ; 0xf5adb + mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf5ade + mov word [es:si+002a8h], ax ; 26 89 84 a8 02 ; 0xf5ae1 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5ae6 disk.c:210 + mov word [es:si+002aah], ax ; 26 89 84 aa 02 ; 0xf5ae9 + movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf5aee disk.c:211 + cwd ; 99 ; 0xf5af2 + mov cx, strict word 00002h ; b9 02 00 ; 0xf5af3 + idiv cx ; f7 f9 ; 0xf5af6 + or dl, 00eh ; 80 ca 0e ; 0xf5af8 + sal dx, 004h ; c1 e2 04 ; 0xf5afb + mov byte [es:si+002ach], dl ; 26 88 94 ac 02 ; 0xf5afe + mov byte [es:si+002adh], 0cbh ; 26 c6 84 ad 02 cb ; 0xf5b03 disk.c:212 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5b09 disk.c:213 + mov byte [es:si+002aeh], al ; 26 88 84 ae 02 ; 0xf5b0c + mov word [es:si+002afh], strict word 00001h ; 26 c7 84 af 02 01 00 ; 0xf5b11 disk.c:214 + mov byte [es:si+002b1h], 000h ; 26 c6 84 b1 02 00 ; 0xf5b18 disk.c:216 + mov word [es:si+002b2h], bx ; 26 89 9c b2 02 ; 0xf5b1e disk.c:217 + mov bx, si ; 89 f3 ; 0xf5b23 disk.c:218 + mov word [es:bx+002b4h], strict word 00000h ; 26 c7 87 b4 02 00 00 ; 0xf5b25 + mov byte [es:bx+002b6h], 011h ; 26 c6 87 b6 02 11 ; 0xf5b2c disk.c:219 + xor al, al ; 30 c0 ; 0xf5b32 disk.c:221 + xor ah, ah ; 30 e4 ; 0xf5b34 disk.c:222 + jmp short 05b3dh ; eb 05 ; 0xf5b36 + cmp ah, 00fh ; 80 fc 0f ; 0xf5b38 + jnc short 05b50h ; 73 13 ; 0xf5b3b + movzx bx, ah ; 0f b6 dc ; 0xf5b3d disk.c:223 + add bx, 00306h ; 81 c3 06 03 ; 0xf5b40 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf5b44 disk.c:48 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf5b47 + add al, dl ; 00 d0 ; 0xf5b4a disk.c:49 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf5b4c disk.c:223 + jmp short 05b38h ; eb e8 ; 0xf5b4e + neg al ; f6 d8 ; 0xf5b50 disk.c:224 + mov es, [bp-006h] ; 8e 46 fa ; 0xf5b52 disk.c:225 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf5b55 + mov byte [es:bx+002b7h], al ; 26 88 87 b7 02 ; 0xf5b58 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5b5d disk.c:229 + cmp word [es:di], strict byte 00042h ; 26 83 3d 42 ; 0xf5b60 + jc near 05c18h ; 0f 82 b0 00 ; 0xf5b64 + movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf5b68 disk.c:233 + cwd ; 99 ; 0xf5b6c + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf5b6d + sar ax, 1 ; d1 f8 ; 0xf5b6f + xor ah, ah ; 30 e4 ; 0xf5b71 disk.c:234 + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5b73 + mov es, [bp-006h] ; 8e 46 fa ; 0xf5b76 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf5b79 + add bx, ax ; 01 c3 ; 0xf5b7c + mov al, byte [es:bx+00278h] ; 26 8a 87 78 02 ; 0xf5b7e + mov dx, word [es:bx+0027ah] ; 26 8b 97 7a 02 ; 0xf5b83 disk.c:235 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5b88 disk.c:237 + mov word [es:di], strict word 00042h ; 26 c7 05 42 00 ; 0xf5b8b + 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; 0xf5b90 disk.c:238 + mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00 ; 0xf5b99 disk.c:241 + test al, al ; 84 c0 ; 0xf5b9f disk.c:243 + jne short 05bach ; 75 09 ; 0xf5ba1 + 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; 0xf5ba3 disk.c:244 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5bac disk.c:252 + 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; 0xf5baf + 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; 0xf5bb8 disk.c:256 + test al, al ; 84 c0 ; 0xf5bc1 disk.c:261 + jne short 05bd8h ; 75 13 ; 0xf5bc3 + mov word [es:di+030h], dx ; 26 89 55 30 ; 0xf5bc5 disk.c:262 + 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; 0xf5bc9 disk.c:263 + mov word [es:di+036h], strict word 00000h ; 26 c7 45 36 00 00 ; 0xf5bd2 disk.c:264 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5bd8 disk.c:269 + and AL, strict byte 001h ; 24 01 ; 0xf5bdb + xor ah, ah ; 30 e4 ; 0xf5bdd + mov es, [bp-004h] ; 8e 46 fc ; 0xf5bdf + mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf5be2 + 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; 0xf5be6 disk.c:270 + mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00 ; 0xf5bef disk.c:271 + xor al, al ; 30 c0 ; 0xf5bf5 disk.c:273 + mov AH, strict byte 01eh ; b4 1e ; 0xf5bf7 disk.c:274 + jmp short 05c00h ; eb 05 ; 0xf5bf9 + cmp ah, 040h ; 80 fc 40 ; 0xf5bfb + jnc short 05c0fh ; 73 0f ; 0xf5bfe + movzx bx, ah ; 0f b6 dc ; 0xf5c00 disk.c:275 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5c03 + add bx, di ; 01 fb ; 0xf5c06 + add al, byte [es:bx] ; 26 02 07 ; 0xf5c08 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf5c0b + jmp short 05bfbh ; eb ec ; 0xf5c0d + neg al ; f6 d8 ; 0xf5c0f disk.c:276 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5c11 disk.c:277 + mov byte [es:di+041h], al ; 26 88 45 41 ; 0xf5c14 + xor ax, ax ; 31 c0 ; 0xf5c18 disk.c:279 + leave ; c9 ; 0xf5c1a disk.c:280 + pop di ; 5f ; 0xf5c1b + pop si ; 5e ; 0xf5c1c + retn 00002h ; c2 02 00 ; 0xf5c1d + ; disGetNextSymbol 0xf5c20 LB 0x517c -> off=0x32 cb=000000000000042f uValue=00000000000f4652 'int13_harddisk' + db 0e8h, 05ch, 00fh, 05dh, 036h, 05dh, 036h, 05dh, 036h, 05dh, 01bh, 05fh, 043h, 060h, 043h, 060h + db 034h, 05fh, 020h, 060h, 043h, 060h, 043h, 060h, 020h, 060h, 020h, 060h, 043h, 060h, 043h, 060h + db 0a1h, 05fh, 020h, 060h, 043h, 060h, 043h, 060h, 020h, 060h, 0d9h, 05fh, 043h, 060h, 043h, 060h + db 043h, 060h +int13_harddisk: ; 0xf5c52 LB 0x42f + push bp ; 55 ; 0xf5c52 disk.c:282 + mov bp, sp ; 89 e5 ; 0xf5c53 + sub sp, strict byte 00012h ; 83 ec 12 ; 0xf5c55 + or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf5c58 disk.c:293 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5c5c disk.c:58 + mov dx, strict word 00040h ; ba 40 00 ; 0xf5c5f + mov es, dx ; 8e c2 ; 0xf5c62 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf5c64 + mov si, strict word 0005eh ; be 5e 00 ; 0xf5c67 disk.c:59 + mov word [bp-004h], dx ; 89 56 fc ; 0xf5c6a + mov bx, 0008eh ; bb 8e 00 ; 0xf5c6d disk.c:53 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5c70 + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5c74 disk.c:299 + xor dh, dh ; 30 f6 ; 0xf5c77 + cmp dx, 00080h ; 81 fa 80 00 ; 0xf5c79 + jc short 05c85h ; 72 06 ; 0xf5c7d + cmp dx, 00094h ; 81 fa 94 00 ; 0xf5c7f + jc short 05ca3h ; 72 1e ; 0xf5c83 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5c85 disk.c:300 + xor ah, ah ; 30 e4 ; 0xf5c88 + push ax ; 50 ; 0xf5c8a + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5c8b + shr ax, 008h ; c1 e8 08 ; 0xf5c8e + push ax ; 50 ; 0xf5c91 + push 006feh ; 68 fe 06 ; 0xf5c92 + push 0070dh ; 68 0d 07 ; 0xf5c95 + push strict byte 00004h ; 6a 04 ; 0xf5c98 + call 01a68h ; e8 cb bd ; 0xf5c9a + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5c9d + jmp near 0605eh ; e9 bb 03 ; 0xf5ca0 disk.c:301 + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5ca3 disk.c:305 + xor dh, dh ; 30 f6 ; 0xf5ca6 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5ca8 + mov bx, si ; 89 f3 ; 0xf5cab + add bx, dx ; 01 d3 ; 0xf5cad + mov bl, byte [es:bx+001cfh] ; 26 8a 9f cf 01 ; 0xf5caf + mov byte [bp-002h], bl ; 88 5e fe ; 0xf5cb4 + cmp bl, 014h ; 80 fb 14 ; 0xf5cb7 disk.c:308 + jc short 05ccch ; 72 10 ; 0xf5cba + push dx ; 52 ; 0xf5cbc disk.c:309 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5cbd + shr ax, 008h ; c1 e8 08 ; 0xf5cc0 + push ax ; 50 ; 0xf5cc3 + push 006feh ; 68 fe 06 ; 0xf5cc4 + push 00738h ; 68 38 07 ; 0xf5cc7 + jmp short 05c98h ; eb cc ; 0xf5cca + mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf5ccc disk.c:313 + shr bx, 008h ; c1 eb 08 ; 0xf5ccf + cmp bx, strict byte 00018h ; 83 fb 18 ; 0xf5cd2 + jnbe near 06043h ; 0f 87 6a 03 ; 0xf5cd5 + add bx, bx ; 01 db ; 0xf5cd9 + mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5cdb + xor dh, dh ; 30 f6 ; 0xf5cde + mov word [bp-010h], dx ; 89 56 f0 ; 0xf5ce0 + jmp word [cs:bx+05c20h] ; 2e ff a7 20 5c ; 0xf5ce3 + cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5ce8 disk.c:318 + jnc near 05cf7h ; 0f 83 07 00 ; 0xf5cec + movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf5cf0 disk.c:320 + call 01e71h ; e8 7a c1 ; 0xf5cf4 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf5cf7 disk.c:321 + mov bx, strict word 00074h ; bb 74 00 ; 0xf5cfb + mov ax, strict word 00040h ; b8 40 00 ; 0xf5cfe + mov es, ax ; 8e c0 ; 0xf5d01 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5d03 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf5d07 + mov sp, bp ; 89 ec ; 0xf5d0b + pop bp ; 5d ; 0xf5d0d + retn ; c3 ; 0xf5d0e + mov bx, strict word 00074h ; bb 74 00 ; 0xf5d0f disk.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5d12 + mov es, ax ; 8e c0 ; 0xf5d15 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf5d17 + movzx dx, al ; 0f b6 d0 ; 0xf5d1a disk.c:326 + sal dx, 008h ; c1 e2 08 ; 0xf5d1d + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf5d20 + or bx, dx ; 09 d3 ; 0xf5d23 + mov word [bp+016h], bx ; 89 5e 16 ; 0xf5d25 + mov bx, strict word 00074h ; bb 74 00 ; 0xf5d28 disk.c:53 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5d2b + test al, al ; 84 c0 ; 0xf5d2f disk.c:329 + je short 05cfbh ; 74 c8 ; 0xf5d31 + jmp near 0607ah ; e9 44 03 ; 0xf5d33 + mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5d36 disk.c:337 + xor dh, dh ; 30 f6 ; 0xf5d39 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf5d3b + mov di, word [bp+014h] ; 8b 7e 14 ; 0xf5d3e disk.c:338 + shr di, 008h ; c1 ef 08 ; 0xf5d41 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5d44 disk.c:339 + xor dh, dh ; 30 f6 ; 0xf5d47 + sal dx, 002h ; c1 e2 02 ; 0xf5d49 + xor dl, dl ; 30 d2 ; 0xf5d4c + and dh, 003h ; 80 e6 03 ; 0xf5d4e + or di, dx ; 09 d7 ; 0xf5d51 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5d53 disk.c:340 + and dx, strict byte 0003fh ; 83 e2 3f ; 0xf5d56 + mov word [bp-006h], dx ; 89 56 fa ; 0xf5d59 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5d5c disk.c:341 + shr dx, 008h ; c1 ea 08 ; 0xf5d5f + mov word [bp-008h], dx ; 89 56 f8 ; 0xf5d62 + cmp word [bp-00ch], 00080h ; 81 7e f4 80 00 ; 0xf5d65 disk.c:344 + jnbe short 05d72h ; 77 06 ; 0xf5d6a + cmp word [bp-00ch], strict byte 00000h ; 83 7e f4 00 ; 0xf5d6c + jne short 05d95h ; 75 23 ; 0xf5d70 + mov bx, 00e06h ; bb 06 0e ; 0xf5d72 disk.c:345 + mov cx, ds ; 8c d9 ; 0xf5d75 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5d77 + call 01a27h ; e8 aa bc ; 0xf5d7a + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5d7d + shr ax, 008h ; c1 e8 08 ; 0xf5d80 + push ax ; 50 ; 0xf5d83 + push 006feh ; 68 fe 06 ; 0xf5d84 + push 0076ah ; 68 6a 07 ; 0xf5d87 + push strict byte 00004h ; 6a 04 ; 0xf5d8a + call 01a68h ; e8 d9 bc ; 0xf5d8c + add sp, strict byte 00008h ; 83 c4 08 ; 0xf5d8f + jmp near 0605eh ; e9 c9 02 ; 0xf5d92 disk.c:346 + movzx bx, byte [bp-002h] ; 0f b6 5e fe ; 0xf5d95 disk.c:350 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf5d99 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5d9c + add bx, si ; 01 f3 ; 0xf5d9f + mov dx, word [es:bx+028h] ; 26 8b 57 28 ; 0xf5da1 + mov word [bp-012h], dx ; 89 56 ee ; 0xf5da5 + mov cx, word [es:bx+026h] ; 26 8b 4f 26 ; 0xf5da8 disk.c:351 + mov dx, word [es:bx+02ah] ; 26 8b 57 2a ; 0xf5dac disk.c:352 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf5db0 + cmp di, word [bp-012h] ; 3b 7e ee ; 0xf5db3 disk.c:355 + jnc short 05dc5h ; 73 0d ; 0xf5db6 + cmp cx, word [bp-008h] ; 3b 4e f8 ; 0xf5db8 + jbe short 05dc5h ; 76 08 ; 0xf5dbb + mov dx, word [bp-006h] ; 8b 56 fa ; 0xf5dbd + cmp dx, word [bp-00ah] ; 3b 56 f6 ; 0xf5dc0 + jbe short 05df3h ; 76 2e ; 0xf5dc3 + mov bx, 00e06h ; bb 06 0e ; 0xf5dc5 disk.c:356 + mov cx, ds ; 8c d9 ; 0xf5dc8 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5dca + call 01a27h ; e8 57 bc ; 0xf5dcd + push dword [bp-008h] ; 66 ff 76 f8 ; 0xf5dd0 + push di ; 57 ; 0xf5dd4 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5dd5 + xor ah, ah ; 30 e4 ; 0xf5dd8 + push ax ; 50 ; 0xf5dda + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ddb + shr ax, 008h ; c1 e8 08 ; 0xf5dde + push ax ; 50 ; 0xf5de1 + push 006feh ; 68 fe 06 ; 0xf5de2 + push 00792h ; 68 92 07 ; 0xf5de5 + push strict byte 00004h ; 6a 04 ; 0xf5de8 + call 01a68h ; e8 7b bc ; 0xf5dea + add sp, strict byte 00010h ; 83 c4 10 ; 0xf5ded + jmp near 0605eh ; e9 6b 02 ; 0xf5df0 disk.c:357 + mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5df3 disk.c:361 + shr dx, 008h ; c1 ea 08 ; 0xf5df6 + cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf5df9 + jne short 05e01h ; 75 03 ; 0xf5dfc + jmp near 05cf7h ; e9 f6 fe ; 0xf5dfe disk.c:362 + movzx dx, byte [bp-002h] ; 0f b6 56 fe ; 0xf5e01 disk.c:366 + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5e05 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5e08 + mov bx, si ; 89 f3 ; 0xf5e0b + add bx, dx ; 01 d3 ; 0xf5e0d + cmp cx, word [es:bx+02ch] ; 26 3b 4f 2c ; 0xf5e0f + jne short 05e24h ; 75 0f ; 0xf5e13 + mov dx, word [es:bx+030h] ; 26 8b 57 30 ; 0xf5e15 + cmp dx, word [bp-00ah] ; 3b 56 f6 ; 0xf5e19 + jne short 05e24h ; 75 06 ; 0xf5e1c + cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5e1e + jc short 05e55h ; 72 31 ; 0xf5e22 + mov ax, di ; 89 f8 ; 0xf5e24 disk.c:367 + xor dx, dx ; 31 d2 ; 0xf5e26 + mov bx, cx ; 89 cb ; 0xf5e28 + xor cx, cx ; 31 c9 ; 0xf5e2a + call 0ac60h ; e8 31 4e ; 0xf5e2c + xor bx, bx ; 31 db ; 0xf5e2f + add ax, word [bp-008h] ; 03 46 f8 ; 0xf5e31 + adc dx, bx ; 11 da ; 0xf5e34 + mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf5e36 + xor cx, cx ; 31 c9 ; 0xf5e39 + call 0ac60h ; e8 22 4e ; 0xf5e3b + xor cx, cx ; 31 c9 ; 0xf5e3e + mov bx, word [bp-006h] ; 8b 5e fa ; 0xf5e40 + add bx, ax ; 01 c3 ; 0xf5e43 + mov ax, dx ; 89 d0 ; 0xf5e45 + adc ax, cx ; 11 c8 ; 0xf5e47 + add bx, strict byte 0ffffh ; 83 c3 ff ; 0xf5e49 + mov word [bp-00eh], bx ; 89 5e f2 ; 0xf5e4c + adc ax, strict word 0ffffh ; 15 ff ff ; 0xf5e4f + mov word [bp-006h], cx ; 89 4e fa ; 0xf5e52 disk.c:368 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5e55 disk.c:378 + 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; 0xf5e58 + mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf5e61 disk.c:379 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf5e67 disk.c:382 + mov word [es:si], dx ; 26 89 14 ; 0xf5e6a + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf5e6d + 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; 0xf5e71 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5e7a disk.c:383 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf5e7d + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf5e80 + mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf5e84 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5e88 disk.c:384 + mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf5e8b + mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf5e8f disk.c:385 + mov word [es:si+012h], di ; 26 89 7c 12 ; 0xf5e95 disk.c:386 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf5e99 disk.c:387 + mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf5e9c + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5ea0 disk.c:388 + mov word [es:si+016h], ax ; 26 89 44 16 ; 0xf5ea3 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5ea7 disk.c:389 + mov byte [es:si+00ch], al ; 26 88 44 0c ; 0xf5eaa + movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf5eae disk.c:391 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5eb2 + mov bx, si ; 89 f3 ; 0xf5eb5 + add bx, ax ; 01 c3 ; 0xf5eb7 + movzx ax, byte [es:bx+01eh] ; 26 0f b6 47 1e ; 0xf5eb9 + mov bx, ax ; 89 c3 ; 0xf5ebe + sal bx, 002h ; c1 e3 02 ; 0xf5ec0 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ec3 + shr ax, 008h ; c1 e8 08 ; 0xf5ec6 + add ax, ax ; 01 c0 ; 0xf5ec9 + add bx, ax ; 01 c3 ; 0xf5ecb + push ES ; 06 ; 0xf5ecd + push si ; 56 ; 0xf5ece + call word [word bx+0007eh] ; ff 97 7e 00 ; 0xf5ecf + mov dx, ax ; 89 c2 ; 0xf5ed3 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ed5 disk.c:394 + xor al, al ; 30 c0 ; 0xf5ed8 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5eda + mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf5edd + or bx, ax ; 09 c3 ; 0xf5ee1 + mov word [bp+016h], bx ; 89 5e 16 ; 0xf5ee3 + test dl, dl ; 84 d2 ; 0xf5ee6 disk.c:396 + je near 05cf7h ; 0f 84 0b fe ; 0xf5ee8 + mov bx, 00e06h ; bb 06 0e ; 0xf5eec disk.c:397 + mov cx, ds ; 8c d9 ; 0xf5eef + mov ax, strict word 00004h ; b8 04 00 ; 0xf5ef1 + call 01a27h ; e8 30 bb ; 0xf5ef4 + movzx ax, dl ; 0f b6 c2 ; 0xf5ef7 + push ax ; 50 ; 0xf5efa + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5efb + shr ax, 008h ; c1 e8 08 ; 0xf5efe + push ax ; 50 ; 0xf5f01 + push 006feh ; 68 fe 06 ; 0xf5f02 + push 007d9h ; 68 d9 07 ; 0xf5f05 + push strict byte 00004h ; 6a 04 ; 0xf5f08 + call 01a68h ; e8 5b bb ; 0xf5f0a + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5f0d + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f10 disk.c:398 + xor ah, ah ; 30 e4 ; 0xf5f13 + or ah, 00ch ; 80 cc 0c ; 0xf5f15 + jmp near 06066h ; e9 4b 01 ; 0xf5f18 disk.c:399 + mov bx, 00e06h ; bb 06 0e ; 0xf5f1b disk.c:406 + mov cx, ds ; 8c d9 ; 0xf5f1e + mov ax, strict word 00004h ; b8 04 00 ; 0xf5f20 + call 01a27h ; e8 01 bb ; 0xf5f23 + push 007fah ; 68 fa 07 ; 0xf5f26 + push strict byte 00004h ; 6a 04 ; 0xf5f29 + call 01a68h ; e8 3a bb ; 0xf5f2b + add sp, strict byte 00004h ; 83 c4 04 ; 0xf5f2e + jmp near 05cf7h ; e9 c3 fd ; 0xf5f31 disk.c:407 + movzx di, byte [bp-002h] ; 0f b6 7e fe ; 0xf5f34 disk.c:413 + imul di, di, strict byte 0001ch ; 6b ff 1c ; 0xf5f38 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5f3b + add di, si ; 01 f7 ; 0xf5f3e + mov bx, word [es:di+028h] ; 26 8b 5d 28 ; 0xf5f40 + mov cx, word [es:di+026h] ; 26 8b 4d 26 ; 0xf5f44 disk.c:414 + mov ax, word [es:di+02ah] ; 26 8b 45 2a ; 0xf5f48 disk.c:415 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5f4c + movzx ax, byte [es:si+0024eh] ; 26 0f b6 84 4e 02 ; 0xf5f4f disk.c:417 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5f55 + mov byte [bp+016h], dh ; 88 76 16 ; 0xf5f58 disk.c:423 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5f5b disk.c:424 + xor dh, dh ; 30 f6 ; 0xf5f5e + dec bx ; 4b ; 0xf5f60 disk.c:422 + mov ax, bx ; 89 d8 ; 0xf5f61 + xor ah, bh ; 30 fc ; 0xf5f63 + sal ax, 008h ; c1 e0 08 ; 0xf5f65 + or dx, ax ; 09 c2 ; 0xf5f68 + mov word [bp+014h], dx ; 89 56 14 ; 0xf5f6a + shr bx, 002h ; c1 eb 02 ; 0xf5f6d disk.c:425 + and bl, 0c0h ; 80 e3 c0 ; 0xf5f70 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5f73 + mov dl, al ; 88 c2 ; 0xf5f76 + and dl, 03fh ; 80 e2 3f ; 0xf5f78 + or dl, bl ; 08 da ; 0xf5f7b + mov word [bp+014h], dx ; 89 56 14 ; 0xf5f7d + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5f80 disk.c:426 + xor dh, dh ; 30 f6 ; 0xf5f83 + mov ax, cx ; 89 c8 ; 0xf5f85 + sal ax, 008h ; c1 e0 08 ; 0xf5f87 + sub ax, 00100h ; 2d 00 01 ; 0xf5f8a + or dx, ax ; 09 c2 ; 0xf5f8d + mov word [bp+012h], dx ; 89 56 12 ; 0xf5f8f + mov ax, dx ; 89 d0 ; 0xf5f92 disk.c:427 + xor al, dl ; 30 d0 ; 0xf5f94 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf5f96 + or dx, ax ; 09 c2 ; 0xf5f99 + mov word [bp+012h], dx ; 89 56 12 ; 0xf5f9b + jmp near 05cf7h ; e9 56 fd ; 0xf5f9e disk.c:432 + cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5fa1 disk.c:440 + jnc near 05cf7h ; 0f 83 4e fd ; 0xf5fa5 + movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf5fa9 disk.c:443 + cwd ; 99 ; 0xf5fad + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf5fae + sar ax, 1 ; d1 f8 ; 0xf5fb0 + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5fb2 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5fb5 + add si, ax ; 01 c6 ; 0xf5fb8 + mov dx, word [es:si+0027ah] ; 26 8b 94 7a 02 ; 0xf5fba + add dx, strict byte 00007h ; 83 c2 07 ; 0xf5fbf + in AL, DX ; ec ; 0xf5fc2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5fc3 + and AL, strict byte 0c0h ; 24 c0 ; 0xf5fc5 disk.c:444 + cmp AL, strict byte 040h ; 3c 40 ; 0xf5fc7 + jne short 05fceh ; 75 03 ; 0xf5fc9 + jmp near 05cf7h ; e9 29 fd ; 0xf5fcb disk.c:445 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5fce disk.c:447 + xor ah, ah ; 30 e4 ; 0xf5fd1 + or ah, 0aah ; 80 cc aa ; 0xf5fd3 + jmp near 06066h ; e9 8d 00 ; 0xf5fd6 + movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf5fd9 disk.c:459 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5fdd + mov es, [bp-004h] ; 8e 46 fc ; 0xf5fe0 + add si, ax ; 01 c6 ; 0xf5fe3 + mov di, word [es:si+02eh] ; 26 8b 7c 2e ; 0xf5fe5 + mov ax, word [es:si+02ch] ; 26 8b 44 2c ; 0xf5fe9 disk.c:460 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf5fed + mov ax, word [es:si+030h] ; 26 8b 44 30 ; 0xf5ff0 disk.c:461 + mov word [bp-006h], ax ; 89 46 fa ; 0xf5ff4 + mov ax, di ; 89 f8 ; 0xf5ff7 disk.c:464 + xor dl, dl ; 30 d2 ; 0xf5ff9 + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5ffb + xor cx, cx ; 31 c9 ; 0xf5ffe + call 0ac60h ; e8 5d 4c ; 0xf6000 + mov bx, word [bp-006h] ; 8b 5e fa ; 0xf6003 + xor cx, cx ; 31 c9 ; 0xf6006 + call 0ac60h ; e8 55 4c ; 0xf6008 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf600b + mov word [bp+014h], dx ; 89 56 14 ; 0xf600e disk.c:465 + mov word [bp+012h], ax ; 89 46 12 ; 0xf6011 disk.c:466 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf6014 disk.c:468 + or ah, 003h ; 80 cc 03 ; 0xf6017 + mov word [bp+016h], ax ; 89 46 16 ; 0xf601a + jmp near 05cfbh ; e9 db fc ; 0xf601d disk.c:469 + mov bx, 00e06h ; bb 06 0e ; 0xf6020 disk.c:477 + mov cx, ds ; 8c d9 ; 0xf6023 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6025 + call 01a27h ; e8 fc b9 ; 0xf6028 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf602b + shr ax, 008h ; c1 e8 08 ; 0xf602e + push ax ; 50 ; 0xf6031 + push 006feh ; 68 fe 06 ; 0xf6032 + push 00814h ; 68 14 08 ; 0xf6035 + push strict byte 00004h ; 6a 04 ; 0xf6038 + call 01a68h ; e8 2b ba ; 0xf603a + add sp, strict byte 00008h ; 83 c4 08 ; 0xf603d + jmp near 05cf7h ; e9 b4 fc ; 0xf6040 disk.c:478 + mov bx, 00e06h ; bb 06 0e ; 0xf6043 disk.c:485 + mov cx, ds ; 8c d9 ; 0xf6046 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6048 + call 01a27h ; e8 d9 b9 ; 0xf604b + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf604e + shr ax, 008h ; c1 e8 08 ; 0xf6051 + push ax ; 50 ; 0xf6054 + push 006feh ; 68 fe 06 ; 0xf6055 + push 00847h ; 68 47 08 ; 0xf6058 + jmp near 05d8ah ; e9 2c fd ; 0xf605b + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf605e disk.c:491 + xor ah, ah ; 30 e4 ; 0xf6061 + or ah, 001h ; 80 cc 01 ; 0xf6063 + mov word [bp+016h], ax ; 89 46 16 ; 0xf6066 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6069 disk.c:493 + shr ax, 008h ; c1 e8 08 ; 0xf606c + mov bx, strict word 00074h ; bb 74 00 ; 0xf606f disk.c:53 + mov dx, strict word 00040h ; ba 40 00 ; 0xf6072 + mov es, dx ; 8e c2 ; 0xf6075 + mov byte [es:bx], al ; 26 88 07 ; 0xf6077 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf607a disk.c:495 + jmp near 05d0bh ; e9 8a fc ; 0xf607e disk.c:496 + ; disGetNextSymbol 0xf6081 LB 0x4d1b -> off=0x20 cb=000000000000029e uValue=00000000000f4aa1 'int13_harddisk_ext' + db 031h, 061h, 049h, 061h, 049h, 061h, 049h, 061h, 027h, 063h, 0b3h, 062h, 049h, 061h, 0bbh, 062h + db 027h, 063h, 00ch, 063h, 00ch, 063h, 00ch, 063h, 00ch, 063h, 0f4h, 062h, 00ch, 063h, 00ch, 063h +int13_harddisk_ext: ; 0xf60a1 LB 0x29e + push bp ; 55 ; 0xf60a1 disk.c:506 + mov bp, sp ; 89 e5 ; 0xf60a2 + sub sp, strict byte 00016h ; 83 ec 16 ; 0xf60a4 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf60a7 disk.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf60aa + mov es, ax ; 8e c0 ; 0xf60ad + mov ax, word [es:bx] ; 26 8b 07 ; 0xf60af + mov di, strict word 0005eh ; bf 5e 00 ; 0xf60b2 disk.c:59 + mov word [bp-006h], ax ; 89 46 fa ; 0xf60b5 + mov bx, 0008eh ; bb 8e 00 ; 0xf60b8 disk.c:53 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf60bb + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf60bf disk.c:530 + xor ah, ah ; 30 e4 ; 0xf60c2 + cmp ax, 00080h ; 3d 80 00 ; 0xf60c4 + jc short 060ceh ; 72 05 ; 0xf60c7 + cmp ax, 00094h ; 3d 94 00 ; 0xf60c9 + jc short 060ech ; 72 1e ; 0xf60cc + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf60ce disk.c:531 + xor ah, ah ; 30 e4 ; 0xf60d1 + push ax ; 50 ; 0xf60d3 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf60d4 + shr ax, 008h ; c1 e8 08 ; 0xf60d7 + push ax ; 50 ; 0xf60da + push 00875h ; 68 75 08 ; 0xf60db + push 0070dh ; 68 0d 07 ; 0xf60de + push strict byte 00004h ; 6a 04 ; 0xf60e1 + call 01a68h ; e8 82 b9 ; 0xf60e3 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf60e6 + jmp near 062d2h ; e9 e6 01 ; 0xf60e9 disk.c:532 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf60ec disk.c:536 + xor ah, ah ; 30 e4 ; 0xf60ef + mov es, [bp-006h] ; 8e 46 fa ; 0xf60f1 + mov bx, di ; 89 fb ; 0xf60f4 + add bx, ax ; 01 c3 ; 0xf60f6 + mov dl, byte [es:bx+001cfh] ; 26 8a 97 cf 01 ; 0xf60f8 + mov byte [bp-002h], dl ; 88 56 fe ; 0xf60fd + cmp dl, 014h ; 80 fa 14 ; 0xf6100 disk.c:539 + jc short 06115h ; 72 10 ; 0xf6103 + push ax ; 50 ; 0xf6105 disk.c:540 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6106 + shr ax, 008h ; c1 e8 08 ; 0xf6109 + push ax ; 50 ; 0xf610c + push 00875h ; 68 75 08 ; 0xf610d + push 00738h ; 68 38 07 ; 0xf6110 + jmp short 060e1h ; eb cc ; 0xf6113 + mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf6115 disk.c:544 + shr bx, 008h ; c1 eb 08 ; 0xf6118 + sub bx, strict byte 00041h ; 83 eb 41 ; 0xf611b + cmp bx, strict byte 0000fh ; 83 fb 0f ; 0xf611e + jnbe near 0630ch ; 0f 87 e7 01 ; 0xf6121 + add bx, bx ; 01 db ; 0xf6125 + mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf6127 + xor ch, ch ; 30 ed ; 0xf612a + jmp word [cs:bx+06081h] ; 2e ff a7 81 60 ; 0xf612c + mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf6131 disk.c:546 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6136 disk.c:547 + xor ah, ah ; 30 e4 ; 0xf6139 + or ah, 030h ; 80 cc 30 ; 0xf613b + mov word [bp+016h], ax ; 89 46 16 ; 0xf613e + mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf6141 disk.c:548 + jmp near 0632bh ; e9 e2 01 ; 0xf6146 disk.c:549 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6149 disk.c:558 + mov word [bp-016h], bx ; 89 5e ea ; 0xf614c + mov es, [bp+004h] ; 8e 46 04 ; 0xf614f + mov word [bp-012h], bx ; 89 5e ee ; 0xf6152 + mov [bp-010h], es ; 8c 46 f0 ; 0xf6155 + mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf6158 disk.c:560 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf615c + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf615f disk.c:561 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf6163 + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf6166 disk.c:562 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf616a + mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf616d disk.c:565 + mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf6171 + xor ax, ax ; 31 c0 ; 0xf6175 disk.c:566 + xor bx, bx ; 31 db ; 0xf6177 + mov si, strict word 00020h ; be 20 00 ; 0xf6179 + call 0acf0h ; e8 71 4b ; 0xf617c + mov si, ax ; 89 c6 ; 0xf617f + mov word [bp-014h], bx ; 89 5e ec ; 0xf6181 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf6184 disk.c:567 + mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf6187 + mov word [bp-016h], ax ; 89 46 ea ; 0xf618b + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf618e + or dx, word [bp-016h] ; 0b 56 ea ; 0xf6192 + or cx, ax ; 09 c1 ; 0xf6195 + movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf6197 disk.c:572 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf619b + mov es, [bp-006h] ; 8e 46 fa ; 0xf619e + mov bx, di ; 89 fb ; 0xf61a1 + add bx, ax ; 01 c3 ; 0xf61a3 + mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf61a5 + mov byte [bp-004h], al ; 88 46 fc ; 0xf61a9 + mov ax, word [es:bx+038h] ; 26 8b 47 38 ; 0xf61ac disk.c:573 + cmp si, ax ; 39 c6 ; 0xf61b0 + jnbe short 061d6h ; 77 22 ; 0xf61b2 + jne short 061f9h ; 75 43 ; 0xf61b4 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf61b6 + cmp ax, word [es:bx+036h] ; 26 3b 47 36 ; 0xf61b9 + jnbe short 061d6h ; 77 17 ; 0xf61bd + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf61bf + cmp ax, word [es:bx+036h] ; 26 3b 47 36 ; 0xf61c2 + jne short 061f9h ; 75 31 ; 0xf61c6 + cmp cx, word [es:bx+034h] ; 26 3b 4f 34 ; 0xf61c8 + jnbe short 061d6h ; 77 08 ; 0xf61cc + jne short 061f9h ; 75 29 ; 0xf61ce + cmp dx, word [es:bx+032h] ; 26 3b 57 32 ; 0xf61d0 + jc short 061f9h ; 72 23 ; 0xf61d4 + mov bx, 00e06h ; bb 06 0e ; 0xf61d6 disk.c:574 + mov cx, ds ; 8c d9 ; 0xf61d9 + mov ax, strict word 00004h ; b8 04 00 ; 0xf61db + call 01a27h ; e8 46 b8 ; 0xf61de + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61e1 + shr ax, 008h ; c1 e8 08 ; 0xf61e4 + push ax ; 50 ; 0xf61e7 + push 00875h ; 68 75 08 ; 0xf61e8 + push 00888h ; 68 88 08 ; 0xf61eb + push strict byte 00004h ; 6a 04 ; 0xf61ee + call 01a68h ; e8 75 b8 ; 0xf61f0 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf61f3 + jmp near 062d2h ; e9 d9 00 ; 0xf61f6 disk.c:575 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61f9 disk.c:579 + shr ax, 008h ; c1 e8 08 ; 0xf61fc + mov word [bp-008h], ax ; 89 46 f8 ; 0xf61ff + cmp ax, strict word 00044h ; 3d 44 00 ; 0xf6202 + je near 06327h ; 0f 84 1e 01 ; 0xf6205 + cmp ax, strict word 00047h ; 3d 47 00 ; 0xf6209 + je near 06327h ; 0f 84 17 01 ; 0xf620c + mov es, [bp-006h] ; 8e 46 fa ; 0xf6210 disk.c:583 + 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; 0xf6213 + mov word [es:di+01ch], strict word 00000h ; 26 c7 45 1c 00 00 ; 0xf621c disk.c:584 + mov word [es:di+006h], si ; 26 89 75 06 ; 0xf6222 disk.c:587 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf6226 + mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf6229 + mov word [es:di+002h], cx ; 26 89 4d 02 ; 0xf622d + mov word [es:di], dx ; 26 89 15 ; 0xf6231 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf6234 disk.c:588 + mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf6237 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf623b + mov word [es:di+00ah], ax ; 26 89 45 0a ; 0xf623e + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf6242 disk.c:589 + mov word [es:di+00eh], ax ; 26 89 45 0e ; 0xf6245 + mov word [es:di+010h], 00200h ; 26 c7 45 10 00 02 ; 0xf6249 disk.c:590 + mov word [es:di+016h], strict word 00000h ; 26 c7 45 16 00 00 ; 0xf624f disk.c:591 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6255 disk.c:592 + mov byte [es:di+00ch], al ; 26 88 45 0c ; 0xf6258 + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf625c disk.c:595 + add bx, bx ; 01 db ; 0xf625f + movzx ax, byte [bp-004h] ; 0f b6 46 fc ; 0xf6261 + sal ax, 002h ; c1 e0 02 ; 0xf6265 + add bx, ax ; 01 c3 ; 0xf6268 + push ES ; 06 ; 0xf626a + push di ; 57 ; 0xf626b + call word [word bx-00002h] ; ff 97 fe ff ; 0xf626c + mov dx, ax ; 89 c2 ; 0xf6270 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6272 disk.c:596 + mov ax, word [es:di+018h] ; 26 8b 45 18 ; 0xf6275 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf6279 + les bx, [bp-012h] ; c4 5e ee ; 0xf627c disk.c:597 + mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf627f + test dl, dl ; 84 d2 ; 0xf6283 disk.c:599 + je near 06327h ; 0f 84 9e 00 ; 0xf6285 + mov bx, 00e06h ; bb 06 0e ; 0xf6289 disk.c:600 + mov cx, ds ; 8c d9 ; 0xf628c + mov ax, strict word 00004h ; b8 04 00 ; 0xf628e + call 01a27h ; e8 93 b7 ; 0xf6291 + movzx ax, dl ; 0f b6 c2 ; 0xf6294 + push ax ; 50 ; 0xf6297 + push word [bp-008h] ; ff 76 f8 ; 0xf6298 + push 00875h ; 68 75 08 ; 0xf629b + push 007d9h ; 68 d9 07 ; 0xf629e + push strict byte 00004h ; 6a 04 ; 0xf62a1 + call 01a68h ; e8 c2 b7 ; 0xf62a3 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf62a6 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf62a9 disk.c:601 + xor ah, ah ; 30 e4 ; 0xf62ac + or ah, 00ch ; 80 cc 0c ; 0xf62ae + jmp short 062dah ; eb 27 ; 0xf62b1 disk.c:602 + or ch, 0b2h ; 80 cd b2 ; 0xf62b3 disk.c:614 + mov word [bp+016h], cx ; 89 4e 16 ; 0xf62b6 + jmp short 062ddh ; eb 22 ; 0xf62b9 disk.c:615 + movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf62bb disk.c:619 + push ax ; 50 ; 0xf62bf + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf62c0 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf62c3 + mov bx, di ; 89 fb ; 0xf62c6 + mov cx, word [bp-006h] ; 8b 4e fa ; 0xf62c8 + call 05933h ; e8 65 f6 ; 0xf62cb + test ax, ax ; 85 c0 ; 0xf62ce + je short 06327h ; 74 55 ; 0xf62d0 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf62d2 disk.c:620 + xor ah, ah ; 30 e4 ; 0xf62d5 + or ah, 001h ; 80 cc 01 ; 0xf62d7 + mov word [bp+016h], ax ; 89 46 16 ; 0xf62da + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf62dd + shr ax, 008h ; c1 e8 08 ; 0xf62e0 + mov bx, strict word 00074h ; bb 74 00 ; 0xf62e3 + mov dx, strict word 00040h ; ba 40 00 ; 0xf62e6 + mov es, dx ; 8e c2 ; 0xf62e9 + mov byte [es:bx], al ; 26 88 07 ; 0xf62eb + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf62ee + jmp short 0633bh ; eb 47 ; 0xf62f2 + cmp cx, strict byte 00006h ; 83 f9 06 ; 0xf62f4 disk.c:627 + je short 06327h ; 74 2e ; 0xf62f7 + cmp cx, strict byte 00001h ; 83 f9 01 ; 0xf62f9 + jc short 062d2h ; 72 d4 ; 0xf62fc + jbe short 06327h ; 76 27 ; 0xf62fe + cmp cx, strict byte 00003h ; 83 f9 03 ; 0xf6300 + jc short 062d2h ; 72 cd ; 0xf6303 + cmp cx, strict byte 00004h ; 83 f9 04 ; 0xf6305 + jbe short 06327h ; 76 1d ; 0xf6308 + jmp short 062d2h ; eb c6 ; 0xf630a disk.c:635 + mov bx, 00e06h ; bb 06 0e ; 0xf630c disk.c:641 + mov cx, ds ; 8c d9 ; 0xf630f + mov ax, strict word 00004h ; b8 04 00 ; 0xf6311 + call 01a27h ; e8 10 b7 ; 0xf6314 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6317 + shr ax, 008h ; c1 e8 08 ; 0xf631a + push ax ; 50 ; 0xf631d + push 00875h ; 68 75 08 ; 0xf631e + push 00847h ; 68 47 08 ; 0xf6321 + jmp near 061eeh ; e9 c7 fe ; 0xf6324 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf6327 disk.c:654 + mov bx, strict word 00074h ; bb 74 00 ; 0xf632b disk.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf632e + mov es, ax ; 8e c0 ; 0xf6331 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6333 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6337 disk.c:657 + mov sp, bp ; 89 ec ; 0xf633b disk.c:659 + pop bp ; 5d ; 0xf633d + retn ; c3 ; 0xf633e + ; disGetNextSymbol 0xf633f LB 0x4a5d -> off=0x0 cb=0000000000000151 uValue=00000000000f4d3f 'int14_function' +int14_function: ; 0xf633f LB 0x151 + push bp ; 55 ; 0xf633f serial.c:70 + mov bp, sp ; 89 e5 ; 0xf6340 + push si ; 56 ; 0xf6342 + push di ; 57 ; 0xf6343 + sti ; fb ; 0xf6344 serial.c:75 + mov si, word [bp+00eh] ; 8b 76 0e ; 0xf6345 serial.c:77 + add si, si ; 01 f6 ; 0xf6348 + mov ax, strict word 00040h ; b8 40 00 ; 0xf634a serial.c:58 + mov es, ax ; 8e c0 ; 0xf634d + mov si, word [es:si] ; 26 8b 34 ; 0xf634f + mov bx, si ; 89 f3 ; 0xf6352 serial.c:59 + mov di, word [bp+00eh] ; 8b 7e 0e ; 0xf6354 serial.c:78 + add di, strict byte 0007ch ; 83 c7 7c ; 0xf6357 + mov cl, byte [es:di] ; 26 8a 0d ; 0xf635a serial.c:48 + cmp word [bp+00eh], strict byte 00004h ; 83 7e 0e 04 ; 0xf635d serial.c:79 + jnc near 06485h ; 0f 83 20 01 ; 0xf6361 + test si, si ; 85 f6 ; 0xf6365 + jbe near 06485h ; 0f 86 1a 01 ; 0xf6367 + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf636b serial.c:80 + cmp AL, strict byte 001h ; 3c 01 ; 0xf636e + jc short 06383h ; 72 11 ; 0xf6370 + jbe short 063dch ; 76 68 ; 0xf6372 + cmp AL, strict byte 003h ; 3c 03 ; 0xf6374 + je near 0646eh ; 0f 84 f4 00 ; 0xf6376 + cmp AL, strict byte 002h ; 3c 02 ; 0xf637a + je near 06427h ; 0f 84 a7 00 ; 0xf637c + jmp near 0647fh ; e9 fc 00 ; 0xf6380 + test al, al ; 84 c0 ; 0xf6383 + jne near 0647fh ; 0f 85 f6 00 ; 0xf6385 + lea dx, [bx+003h] ; 8d 57 03 ; 0xf6389 serial.c:82 + in AL, DX ; ec ; 0xf638c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf638d + or AL, strict byte 080h ; 0c 80 ; 0xf638f + out DX, AL ; ee ; 0xf6391 + lea si, [bx+001h] ; 8d 77 01 ; 0xf6392 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6395 serial.c:83 + test AL, strict byte 0e0h ; a8 e0 ; 0xf6398 + jne short 063a8h ; 75 0c ; 0xf639a + mov AL, strict byte 017h ; b0 17 ; 0xf639c serial.c:84 + mov dx, bx ; 89 da ; 0xf639e + out DX, AL ; ee ; 0xf63a0 + mov AL, strict byte 004h ; b0 04 ; 0xf63a1 serial.c:85 + mov dx, si ; 89 f2 ; 0xf63a3 + out DX, AL ; ee ; 0xf63a5 + jmp short 063beh ; eb 16 ; 0xf63a6 serial.c:86 + and AL, strict byte 0e0h ; 24 e0 ; 0xf63a8 serial.c:87 + movzx cx, al ; 0f b6 c8 ; 0xf63aa + sar cx, 005h ; c1 f9 05 ; 0xf63ad + mov ax, 00600h ; b8 00 06 ; 0xf63b0 + sar ax, CL ; d3 f8 ; 0xf63b3 + mov dx, bx ; 89 da ; 0xf63b5 serial.c:88 + out DX, AL ; ee ; 0xf63b7 + shr ax, 008h ; c1 e8 08 ; 0xf63b8 serial.c:89 + mov dx, si ; 89 f2 ; 0xf63bb + out DX, AL ; ee ; 0xf63bd + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf63be serial.c:91 + and AL, strict byte 01fh ; 24 1f ; 0xf63c1 + lea dx, [bx+003h] ; 8d 57 03 ; 0xf63c3 + out DX, AL ; ee ; 0xf63c6 + lea dx, [bx+005h] ; 8d 57 05 ; 0xf63c7 serial.c:92 + in AL, DX ; ec ; 0xf63ca + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf63cb + mov byte [bp+013h], al ; 88 46 13 ; 0xf63cd + lea dx, [bx+006h] ; 8d 57 06 ; 0xf63d0 serial.c:93 + in AL, DX ; ec ; 0xf63d3 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf63d4 + mov byte [bp+012h], al ; 88 46 12 ; 0xf63d6 + jmp near 06460h ; e9 84 00 ; 0xf63d9 + mov si, strict word 0006ch ; be 6c 00 ; 0xf63dc serial.c:58 + mov si, word [es:si] ; 26 8b 34 ; 0xf63df + lea dx, [bx+005h] ; 8d 57 05 ; 0xf63e2 serial.c:98 + in AL, DX ; ec ; 0xf63e5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf63e6 + and ax, strict word 00060h ; 25 60 00 ; 0xf63e8 + cmp ax, strict word 00060h ; 3d 60 00 ; 0xf63eb + je short 06409h ; 74 19 ; 0xf63ee + test cl, cl ; 84 c9 ; 0xf63f0 + je short 06409h ; 74 15 ; 0xf63f2 + mov di, strict word 0006ch ; bf 6c 00 ; 0xf63f4 serial.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf63f7 + mov es, ax ; 8e c0 ; 0xf63fa + mov ax, word [es:di] ; 26 8b 05 ; 0xf63fc + cmp ax, si ; 39 f0 ; 0xf63ff serial.c:100 + je short 063e2h ; 74 df ; 0xf6401 + mov si, ax ; 89 c6 ; 0xf6403 serial.c:101 + db 0feh, 0c9h + ; dec cl ; fe c9 ; 0xf6405 serial.c:102 + jmp short 063e2h ; eb d9 ; 0xf6407 serial.c:104 + test cl, cl ; 84 c9 ; 0xf6409 serial.c:105 + je short 06413h ; 74 06 ; 0xf640b + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf640d + mov dx, bx ; 89 da ; 0xf6410 + out DX, AL ; ee ; 0xf6412 + lea dx, [bx+005h] ; 8d 57 05 ; 0xf6413 serial.c:106 + in AL, DX ; ec ; 0xf6416 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6417 + mov byte [bp+013h], al ; 88 46 13 ; 0xf6419 + test cl, cl ; 84 c9 ; 0xf641c serial.c:107 + jne short 06460h ; 75 40 ; 0xf641e + or AL, strict byte 080h ; 0c 80 ; 0xf6420 + mov byte [bp+013h], al ; 88 46 13 ; 0xf6422 + jmp short 06460h ; eb 39 ; 0xf6425 + mov si, strict word 0006ch ; be 6c 00 ; 0xf6427 serial.c:58 + mov si, word [es:si] ; 26 8b 34 ; 0xf642a + lea dx, [bx+005h] ; 8d 57 05 ; 0xf642d serial.c:112 + in AL, DX ; ec ; 0xf6430 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6431 + test AL, strict byte 001h ; a8 01 ; 0xf6433 + jne short 06450h ; 75 19 ; 0xf6435 + test cl, cl ; 84 c9 ; 0xf6437 + je short 06450h ; 74 15 ; 0xf6439 + mov di, strict word 0006ch ; bf 6c 00 ; 0xf643b serial.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf643e + mov es, ax ; 8e c0 ; 0xf6441 + mov ax, word [es:di] ; 26 8b 05 ; 0xf6443 + cmp ax, si ; 39 f0 ; 0xf6446 serial.c:114 + je short 0642dh ; 74 e3 ; 0xf6448 + mov si, ax ; 89 c6 ; 0xf644a serial.c:115 + db 0feh, 0c9h + ; dec cl ; fe c9 ; 0xf644c serial.c:116 + jmp short 0642dh ; eb dd ; 0xf644e serial.c:118 + test cl, cl ; 84 c9 ; 0xf6450 serial.c:119 + je short 06466h ; 74 12 ; 0xf6452 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6454 serial.c:120 + mov dx, bx ; 89 da ; 0xf6458 serial.c:121 + in AL, DX ; ec ; 0xf645a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf645b + mov byte [bp+012h], al ; 88 46 12 ; 0xf645d + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6460 serial.c:122 + jmp short 06489h ; eb 23 ; 0xf6464 + lea dx, [bx+005h] ; 8d 57 05 ; 0xf6466 serial.c:123 + in AL, DX ; ec ; 0xf6469 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf646a + jmp short 06422h ; eb b4 ; 0xf646c + lea dx, [si+005h] ; 8d 54 05 ; 0xf646e serial.c:128 + in AL, DX ; ec ; 0xf6471 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6472 + mov byte [bp+013h], al ; 88 46 13 ; 0xf6474 + lea dx, [si+006h] ; 8d 54 06 ; 0xf6477 serial.c:129 + in AL, DX ; ec ; 0xf647a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf647b + jmp short 0645dh ; eb de ; 0xf647d + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf647f serial.c:133 + jmp short 06489h ; eb 04 ; 0xf6483 serial.c:135 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf6485 serial.c:136 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6489 serial.c:138 + pop di ; 5f ; 0xf648c + pop si ; 5e ; 0xf648d + pop bp ; 5d ; 0xf648e + retn ; c3 ; 0xf648f + ; disGetNextSymbol 0xf6490 LB 0x490c -> off=0x0 cb=000000000000002c uValue=00000000000f4e90 'set_enable_a20' +set_enable_a20: ; 0xf6490 LB 0x2c + push bp ; 55 ; 0xf6490 system.c:298 + mov bp, sp ; 89 e5 ; 0xf6491 + push bx ; 53 ; 0xf6493 + push cx ; 51 ; 0xf6494 + push dx ; 52 ; 0xf6495 + mov bx, ax ; 89 c3 ; 0xf6496 + mov dx, 00092h ; ba 92 00 ; 0xf6498 system.c:305 + in AL, DX ; ec ; 0xf649b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf649c + mov cl, al ; 88 c1 ; 0xf649e + test bx, bx ; 85 db ; 0xf64a0 system.c:308 + je short 064a9h ; 74 05 ; 0xf64a2 + or AL, strict byte 002h ; 0c 02 ; 0xf64a4 system.c:309 + out DX, AL ; ee ; 0xf64a6 + jmp short 064ach ; eb 03 ; 0xf64a7 system.c:310 + and AL, strict byte 0fdh ; 24 fd ; 0xf64a9 system.c:311 + out DX, AL ; ee ; 0xf64ab + test cl, 002h ; f6 c1 02 ; 0xf64ac system.c:313 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf64af + xor ah, ah ; 30 e4 ; 0xf64b2 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf64b4 system.c:314 + pop dx ; 5a ; 0xf64b7 + pop cx ; 59 ; 0xf64b8 + pop bx ; 5b ; 0xf64b9 + pop bp ; 5d ; 0xf64ba + retn ; c3 ; 0xf64bb + ; disGetNextSymbol 0xf64bc LB 0x48e0 -> off=0x3b cb=0000000000000349 uValue=00000000000f4ef7 'int15_function' + db 0ech, 0e9h, 0d8h, 0c7h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 086h, 083h, 052h, 04fh, 041h + db 024h, 022h, 000h, 021h, 068h, 034h, 065h, 0bch, 067h, 047h, 065h, 0bch, 067h, 01ah, 068h, 08bh + db 065h, 0c1h, 065h, 05bh, 066h, 0c9h, 066h, 0deh, 066h, 054h, 066h, 054h, 066h, 0a6h, 067h, 0ceh + db 067h, 0e1h, 067h, 0bch, 067h, 0f5h, 067h, 0fch, 067h, 002h, 068h +int15_function: ; 0xf64f7 LB 0x349 + push bp ; 55 ; 0xf64f7 system.c:335 + mov bp, sp ; 89 e5 ; 0xf64f8 + push si ; 56 ; 0xf64fa + push di ; 57 ; 0xf64fb + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf64fc system.c:342 + shr ax, 008h ; c1 e8 08 ; 0xf64ff + cmp ax, 000ech ; 3d ec 00 ; 0xf6502 + jnbe near 06821h ; 0f 87 18 03 ; 0xf6505 + push CS ; 0e ; 0xf6509 + pop ES ; 07 ; 0xf650a + mov cx, strict word 00014h ; b9 14 00 ; 0xf650b + mov di, 064bch ; bf bc 64 ; 0xf650e + repne scasb ; f2 ae ; 0xf6511 + sal cx, 1 ; d1 e1 ; 0xf6513 + mov di, cx ; 89 cf ; 0xf6515 + mov si, word [cs:di+064cfh] ; 2e 8b b5 cf 64 ; 0xf6517 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf651c + xor ah, ah ; 30 e4 ; 0xf651f + mov dx, word [bp+018h] ; 8b 56 18 ; 0xf6521 + and dl, 0feh ; 80 e2 fe ; 0xf6524 + mov cx, word [bp+018h] ; 8b 4e 18 ; 0xf6527 + or cl, 001h ; 80 c9 01 ; 0xf652a + mov bx, ax ; 89 c3 ; 0xf652d + or bh, 086h ; 80 cf 86 ; 0xf652f + jmp si ; ff e6 ; 0xf6532 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6534 system.c:344 + xor ah, ah ; 30 e4 ; 0xf6537 + cmp ax, 000c0h ; 3d c0 00 ; 0xf6539 + jne near 06821h ; 0f 85 e1 02 ; 0xf653c + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf6540 system.c:351 + jmp near 067c5h ; e9 7e 02 ; 0xf6544 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6547 system.c:355 + xor ah, ah ; 30 e4 ; 0xf654a + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf654c + jc short 0655fh ; 72 0e ; 0xf654f + jbe short 06573h ; 76 20 ; 0xf6551 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf6553 + je short 06595h ; 74 3d ; 0xf6556 + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf6558 + je short 06578h ; 74 1b ; 0xf655b + jmp short 065a2h ; eb 43 ; 0xf655d + test ax, ax ; 85 c0 ; 0xf655f + jne short 065a2h ; 75 3f ; 0xf6561 + xor ax, ax ; 31 c0 ; 0xf6563 system.c:357 + call 06490h ; e8 28 ff ; 0xf6565 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6568 system.c:358 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf656c system.c:359 + jmp near 06654h ; e9 e1 00 ; 0xf6570 system.c:360 + mov ax, strict word 00001h ; b8 01 00 ; 0xf6573 system.c:362 + jmp short 06565h ; eb ed ; 0xf6576 + mov dx, 00092h ; ba 92 00 ; 0xf6578 system.c:367 + in AL, DX ; ec ; 0xf657b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf657c + shr ax, 1 ; d1 e8 ; 0xf657e + and ax, strict word 00001h ; 25 01 00 ; 0xf6580 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf6583 + mov dl, al ; 88 c2 ; 0xf6586 + mov word [bp+012h], dx ; 89 56 12 ; 0xf6588 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf658b system.c:368 + mov byte [bp+013h], ah ; 88 66 13 ; 0xf658f system.c:369 + jmp near 06654h ; e9 bf 00 ; 0xf6592 system.c:370 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6595 system.c:372 + mov byte [bp+013h], ah ; 88 66 13 ; 0xf6599 system.c:373 + mov word [bp+00ch], ax ; 89 46 0c ; 0xf659c system.c:374 + jmp near 06654h ; e9 b2 00 ; 0xf659f system.c:375 + mov bx, 00e06h ; bb 06 0e ; 0xf65a2 system.c:377 + mov cx, ds ; 8c d9 ; 0xf65a5 + mov ax, strict word 00004h ; b8 04 00 ; 0xf65a7 + call 01a27h ; e8 7a b4 ; 0xf65aa + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf65ad + xor ah, ah ; 30 e4 ; 0xf65b0 + push ax ; 50 ; 0xf65b2 + push 008aeh ; 68 ae 08 ; 0xf65b3 + push strict byte 00004h ; 6a 04 ; 0xf65b6 + call 01a68h ; e8 ad b4 ; 0xf65b8 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf65bb + jmp near 067bch ; e9 fb 01 ; 0xf65be + test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf65c1 system.c:409 + jne short 06626h ; 75 5f ; 0xf65c5 + mov bx, 000a0h ; bb a0 00 ; 0xf65c7 system.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf65ca + mov es, ax ; 8e c0 ; 0xf65cd + mov al, byte [es:bx] ; 26 8a 07 ; 0xf65cf + test AL, strict byte 001h ; a8 01 ; 0xf65d2 system.c:49 + jne short 06620h ; 75 4a ; 0xf65d4 + mov DL, strict byte 001h ; b2 01 ; 0xf65d6 system.c:51 + mov byte [es:bx], dl ; 26 88 17 ; 0xf65d8 system.c:53 + mov bx, 00098h ; bb 98 00 ; 0xf65db system.c:61 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf65de + mov word [es:bx], ax ; 26 89 07 ; 0xf65e1 system.c:63 + mov bx, 0009ah ; bb 9a 00 ; 0xf65e4 system.c:61 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf65e7 + mov word [es:bx], dx ; 26 89 17 ; 0xf65ea system.c:63 + mov bx, 0009ch ; bb 9c 00 ; 0xf65ed system.c:61 + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf65f0 + mov word [es:bx], dx ; 26 89 17 ; 0xf65f3 system.c:63 + mov bx, 0009eh ; bb 9e 00 ; 0xf65f6 system.c:61 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf65f9 + mov word [es:bx], ax ; 26 89 07 ; 0xf65fc system.c:63 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf65ff system.c:418 + mov dx, 000a1h ; ba a1 00 ; 0xf6603 system.c:420 + in AL, DX ; ec ; 0xf6606 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6607 + and AL, strict byte 0feh ; 24 fe ; 0xf6609 system.c:421 + out DX, AL ; ee ; 0xf660b + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf660c system.c:422 + call 0176ah ; e8 58 b1 ; 0xf660f + or AL, strict byte 040h ; 0c 40 ; 0xf6612 system.c:424 + movzx dx, al ; 0f b6 d0 ; 0xf6614 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6617 + call 01787h ; e8 6a b1 ; 0xf661a + jmp near 06654h ; e9 34 00 ; 0xf661d system.c:425 + mov word [bp+018h], cx ; 89 4e 18 ; 0xf6620 system.c:428 + jmp near 06654h ; e9 2e 00 ; 0xf6623 system.c:430 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf6626 + jne short 06645h ; 75 1a ; 0xf6629 + mov bx, 000a0h ; bb a0 00 ; 0xf662b system.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf662e + mov es, ax ; 8e c0 ; 0xf6631 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6633 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6637 system.c:433 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf663b system.c:434 + call 0176ah ; e8 29 b1 ; 0xf663e + and AL, strict byte 0bfh ; 24 bf ; 0xf6641 system.c:435 + jmp short 06614h ; eb cf ; 0xf6643 + mov word [bp+018h], cx ; 89 4e 18 ; 0xf6645 system.c:438 + mov ax, bx ; 89 d8 ; 0xf6648 system.c:440 + xor ah, bh ; 30 fc ; 0xf664a + xor bl, bl ; 30 db ; 0xf664c + dec ax ; 48 ; 0xf664e + or bx, ax ; 09 c3 ; 0xf664f + mov word [bp+012h], bx ; 89 5e 12 ; 0xf6651 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6654 system.c:443 + pop di ; 5f ; 0xf6657 + pop si ; 5e ; 0xf6658 + pop bp ; 5d ; 0xf6659 + retn ; c3 ; 0xf665a + mov bx, 000a0h ; bb a0 00 ; 0xf665b system.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf665e + mov es, ax ; 8e c0 ; 0xf6661 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6663 + test AL, strict byte 001h ; a8 01 ; 0xf6666 system.c:49 + jne short 066c3h ; 75 59 ; 0xf6668 + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf666a system.c:53 + mov bx, 00098h ; bb 98 00 ; 0xf666e system.c:63 + mov [es:bx], es ; 26 8c 07 ; 0xf6671 + mov bx, 0009ah ; bb 9a 00 ; 0xf6674 system.c:63 + mov word [es:bx], 000a0h ; 26 c7 07 a0 00 ; 0xf6677 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf667c system.c:61 + mov bx, 0009ch ; bb 9c 00 ; 0xf667f system.c:63 + mov word [es:bx], ax ; 26 89 07 ; 0xf6682 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6685 system.c:61 + mov bx, 0009eh ; bb 9e 00 ; 0xf6688 system.c:63 + mov word [es:bx], ax ; 26 89 07 ; 0xf668b + mov dx, 000a1h ; ba a1 00 ; 0xf668e system.c:456 + in AL, DX ; ec ; 0xf6691 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6692 + and AL, strict byte 0feh ; 24 fe ; 0xf6694 system.c:457 + out DX, AL ; ee ; 0xf6696 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6697 system.c:458 + call 0176ah ; e8 cd b0 ; 0xf669a + or AL, strict byte 040h ; 0c 40 ; 0xf669d system.c:460 + movzx dx, al ; 0f b6 d0 ; 0xf669f + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf66a2 + call 01787h ; e8 df b0 ; 0xf66a5 + sti ; fb ; 0xf66a8 system.c:462 + hlt ; f4 ; 0xf66a9 system.c:464 + mov bx, 000a0h ; bb a0 00 ; 0xf66aa system.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf66ad + mov es, ax ; 8e c0 ; 0xf66b0 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf66b2 + test AL, strict byte 080h ; a8 80 ; 0xf66b5 system.c:467 + je short 066a9h ; 74 f0 ; 0xf66b7 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf66b9 system.c:53 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf66bd system.c:469 + jmp short 06654h ; eb 91 ; 0xf66c1 system.c:470 + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf66c3 system.c:473 + jmp short 06654h ; eb 8b ; 0xf66c7 system.c:475 + mov ax, strict word 00030h ; b8 30 00 ; 0xf66c9 system.c:480 + call 017a6h ; e8 d7 b0 ; 0xf66cc + mov word [bp+012h], ax ; 89 46 12 ; 0xf66cf + cmp ax, strict word 0ffc0h ; 3d c0 ff ; 0xf66d2 system.c:485 + jbe short 066bdh ; 76 e6 ; 0xf66d5 + mov word [bp+012h], strict word 0ffc0h ; c7 46 12 c0 ff ; 0xf66d7 system.c:486 + jmp short 066bdh ; eb df ; 0xf66dc + cli ; fa ; 0xf66de system.c:509 + mov ax, strict word 00001h ; b8 01 00 ; 0xf66df system.c:511 + call 06490h ; e8 ab fd ; 0xf66e2 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf66e5 system.c:514 + add bx, strict byte 00038h ; 83 c3 38 ; 0xf66e8 + mov es, [bp+014h] ; 8e 46 14 ; 0xf66eb system.c:61 + mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf66ee + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf66f3 system.c:515 + add bx, strict byte 0003ah ; 83 c3 3a ; 0xf66f6 + mov es, [bp+014h] ; 8e 46 14 ; 0xf66f9 system.c:61 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf66fc + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6701 system.c:516 + add bx, strict byte 0003ch ; 83 c3 3c ; 0xf6704 + mov es, [bp+014h] ; 8e 46 14 ; 0xf6707 system.c:51 + mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf670a + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf670e system.c:517 + add bx, strict byte 0003dh ; 83 c3 3d ; 0xf6711 + mov es, [bp+014h] ; 8e 46 14 ; 0xf6714 system.c:51 + mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf6717 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf671b system.c:518 + add bx, strict byte 0003eh ; 83 c3 3e ; 0xf671e + mov es, [bp+014h] ; 8e 46 14 ; 0xf6721 system.c:61 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6724 + mov AL, strict byte 011h ; b0 11 ; 0xf6729 system.c:521 + mov dx, strict word 00020h ; ba 20 00 ; 0xf672b + out DX, AL ; ee ; 0xf672e + mov dx, 000a0h ; ba a0 00 ; 0xf672f system.c:522 + out DX, AL ; ee ; 0xf6732 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6733 system.c:523 + shr ax, 008h ; c1 e8 08 ; 0xf6736 + mov dx, strict word 00021h ; ba 21 00 ; 0xf6739 + out DX, AL ; ee ; 0xf673c + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf673d system.c:524 + mov dx, 000a1h ; ba a1 00 ; 0xf6740 + out DX, AL ; ee ; 0xf6743 + mov AL, strict byte 004h ; b0 04 ; 0xf6744 system.c:525 + mov dx, strict word 00021h ; ba 21 00 ; 0xf6746 + out DX, AL ; ee ; 0xf6749 + mov AL, strict byte 002h ; b0 02 ; 0xf674a system.c:526 + mov dx, 000a1h ; ba a1 00 ; 0xf674c + out DX, AL ; ee ; 0xf674f + mov AL, strict byte 001h ; b0 01 ; 0xf6750 system.c:527 + mov dx, strict word 00021h ; ba 21 00 ; 0xf6752 + out DX, AL ; ee ; 0xf6755 + mov dx, 000a1h ; ba a1 00 ; 0xf6756 system.c:528 + out DX, AL ; ee ; 0xf6759 + mov AL, strict byte 0ffh ; b0 ff ; 0xf675a system.c:530 + mov dx, strict word 00021h ; ba 21 00 ; 0xf675c + out DX, AL ; ee ; 0xf675f + mov dx, 000a1h ; ba a1 00 ; 0xf6760 system.c:531 + out DX, AL ; ee ; 0xf6763 + mov si, word [bp+006h] ; 8b 76 06 ; 0xf6764 system.c:533 + lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf6767 + lidt [es:si+010h] ; 26 0f 01 5c 10 ; 0xf676c + push strict byte 00038h ; 6a 38 ; 0xf6771 + call 06776h ; e8 00 00 ; 0xf6773 + pop ax ; 58 ; 0xf6776 + add ax, strict byte 0000eh ; 83 c0 0e ; 0xf6777 + push ax ; 50 ; 0xf677a + smsw ax ; 0f 01 e0 ; 0xf677b + or AL, strict byte 001h ; 0c 01 ; 0xf677e + lmsw ax ; 0f 01 f0 ; 0xf6780 + retf ; cb ; 0xf6783 + mov ax, strict word 00018h ; b8 18 00 ; 0xf6784 + mov ds, ax ; 8e d8 ; 0xf6787 + add AL, strict byte 008h ; 04 08 ; 0xf6789 + mov es, ax ; 8e c0 ; 0xf678b + add AL, strict byte 008h ; 04 08 ; 0xf678d + mov ss, ax ; 8e d0 ; 0xf678f + lea ax, [bp+004h] ; 8d 46 04 ; 0xf6791 system.c:534 + db 08bh, 0e0h + ; mov sp, ax ; 8b e0 ; 0xf6794 + popaw ; 61 ; 0xf6796 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6797 + pop cx ; 59 ; 0xf679a + pop ax ; 58 ; 0xf679b + pop ax ; 58 ; 0xf679c + mov ax, strict word 00030h ; b8 30 00 ; 0xf679d + push ax ; 50 ; 0xf67a0 + push cx ; 51 ; 0xf67a1 + retf ; cb ; 0xf67a2 + jmp near 06654h ; e9 ae fe ; 0xf67a3 system.c:540 + mov bx, 00e06h ; bb 06 0e ; 0xf67a6 system.c:547 + mov cx, ds ; 8c d9 ; 0xf67a9 + mov ax, strict word 00004h ; b8 04 00 ; 0xf67ab + call 01a27h ; e8 76 b2 ; 0xf67ae + push 008eeh ; 68 ee 08 ; 0xf67b1 + push strict byte 00004h ; 6a 04 ; 0xf67b4 + call 01a68h ; e8 af b2 ; 0xf67b6 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf67b9 + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf67bc + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf67c0 + xor ah, ah ; 30 e4 ; 0xf67c3 + or ah, 086h ; 80 cc 86 ; 0xf67c5 + mov word [bp+012h], ax ; 89 46 12 ; 0xf67c8 + jmp near 06654h ; e9 86 fe ; 0xf67cb + mov word [bp+018h], dx ; 89 56 18 ; 0xf67ce system.c:553 + mov word [bp+012h], ax ; 89 46 12 ; 0xf67d1 system.c:554 + mov word [bp+00ch], 0e6f5h ; c7 46 0c f5 e6 ; 0xf67d4 system.c:555 + mov word [bp+014h], 0f000h ; c7 46 14 00 f0 ; 0xf67d9 system.c:556 + jmp near 06654h ; e9 73 fe ; 0xf67de system.c:557 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf67e1 system.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf67e4 + mov es, ax ; 8e c0 ; 0xf67e7 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf67e9 + mov word [bp+014h], ax ; 89 46 14 ; 0xf67ec system.c:59 + mov word [bp+018h], dx ; 89 56 18 ; 0xf67ef system.c:561 + jmp near 06654h ; e9 5f fe ; 0xf67f2 system.c:562 + push 0091dh ; 68 1d 09 ; 0xf67f5 system.c:565 + push strict byte 00008h ; 6a 08 ; 0xf67f8 + jmp short 067b6h ; eb ba ; 0xf67fa + mov word [bp+018h], cx ; 89 4e 18 ; 0xf67fc system.c:573 + jmp near 06651h ; e9 4f fe ; 0xf67ff + test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf6802 system.c:577 + jne short 06821h ; 75 19 ; 0xf6806 + mov word [bp+012h], ax ; 89 46 12 ; 0xf6808 system.c:579 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf680b system.c:580 + xor ah, ah ; 30 e4 ; 0xf680e + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf6810 + jc short 0681ah ; 72 05 ; 0xf6813 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf6815 + jbe short 067efh ; 76 d5 ; 0xf6818 + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf681a system.c:583 + jmp near 06654h ; e9 33 fe ; 0xf681e system.c:584 + mov bx, 00e06h ; bb 06 0e ; 0xf6821 system.c:588 + mov cx, ds ; 8c d9 ; 0xf6824 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6826 + call 01a27h ; e8 fb b1 ; 0xf6829 + push word [bp+00ch] ; ff 76 0c ; 0xf682c + push word [bp+012h] ; ff 76 12 ; 0xf682f + push 00934h ; 68 34 09 ; 0xf6832 + push strict byte 00004h ; 6a 04 ; 0xf6835 + call 01a68h ; e8 2e b2 ; 0xf6837 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf683a + jmp near 067bch ; e9 7c ff ; 0xf683d + ; disGetNextSymbol 0xf6840 LB 0x455c -> off=0x0 cb=0000000000000042 uValue=00000000000f5240 'set_e820_range_len' +set_e820_range_len: ; 0xf6840 LB 0x42 + push si ; 56 ; 0xf6840 system.c:605 + push bp ; 55 ; 0xf6841 + mov bp, sp ; 89 e5 ; 0xf6842 + mov es, ax ; 8e c0 ; 0xf6844 + mov si, dx ; 89 d6 ; 0xf6846 + mov word [es:si], bx ; 26 89 1c ; 0xf6848 system.c:608 + mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf684b + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf684f system.c:609 + mov word [es:si+008h], bx ; 26 89 5c 08 ; 0xf6852 + mov bx, word [bp+008h] ; 8b 5e 08 ; 0xf6856 + mov word [es:si+00ah], bx ; 26 89 5c 0a ; 0xf6859 + movzx bx, byte [bp+00ah] ; 0f b6 5e 0a ; 0xf685d system.c:610 + mov word [es:si+010h], bx ; 26 89 5c 10 ; 0xf6861 + mov word [es:si+012h], strict word 00000h ; 26 c7 44 12 00 00 ; 0xf6865 + db 066h, 026h, 0c7h, 044h, 00ch, 000h, 000h, 000h, 000h + ; mov dword [es:si+00ch], strict dword 000000000h ; 66 26 c7 44 0c 00 00 00 00; 0xf686b system.c:611 + 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; 0xf6874 system.c:612 + pop bp ; 5d ; 0xf687d system.c:613 + pop si ; 5e ; 0xf687e + retn 00006h ; c2 06 00 ; 0xf687f + ; disGetNextSymbol 0xf6882 LB 0x451a -> off=0x0 cb=0000000000000039 uValue=00000000000f5282 'set_e820_range_above_4g' +set_e820_range_above_4g: ; 0xf6882 LB 0x39 + push si ; 56 ; 0xf6882 system.c:617 + push bp ; 55 ; 0xf6883 + mov bp, sp ; 89 e5 ; 0xf6884 + mov es, ax ; 8e c0 ; 0xf6886 + mov si, dx ; 89 d6 ; 0xf6888 + db 066h, 026h, 0c7h, 004h, 000h, 000h, 000h, 000h + ; mov dword [es:si], strict dword 000000000h ; 66 26 c7 04 00 00 00 00 ; 0xf688a system.c:620 + db 066h, 026h, 0c7h, 044h, 004h, 001h, 000h, 000h, 000h + ; mov dword [es:si+004h], strict dword 000000001h ; 66 26 c7 44 04 01 00 00 00; 0xf6892 system.c:621 + mov word [es:si+00ah], bx ; 26 89 5c 0a ; 0xf689b system.c:622 + mov word [es:si+008h], strict word 00000h ; 26 c7 44 08 00 00 ; 0xf689f + mov word [es:si+00ch], cx ; 26 89 4c 0c ; 0xf68a5 system.c:623 + db 066h, 026h, 0c7h, 044h, 00eh, 000h, 000h, 001h, 000h + ; mov dword [es:si+00eh], strict dword 000010000h ; 66 26 c7 44 0e 00 00 01 00; 0xf68a9 + mov word [es:si+012h], strict word 00000h ; 26 c7 44 12 00 00 ; 0xf68b2 system.c:624 + pop bp ; 5d ; 0xf68b8 system.c:625 + pop si ; 5e ; 0xf68b9 + retn ; c3 ; 0xf68ba + ; disGetNextSymbol 0xf68bb LB 0x44e1 -> off=0x14 cb=00000000000002a4 uValue=00000000000f52cf 'int15_function32' + db 0d3h, 069h, 006h, 06ah, 026h, 06ah, 044h, 06ah, 066h, 06ah, 088h, 06ah, 0a8h, 06ah, 0c8h, 06ah + db 042h, 06bh, 0fbh, 06ah +int15_function32: ; 0xf68cf LB 0x2a4 + push bp ; 55 ; 0xf68cf system.c:627 + mov bp, sp ; 89 e5 ; 0xf68d0 + push si ; 56 ; 0xf68d2 + push di ; 57 ; 0xf68d3 + push ax ; 50 ; 0xf68d4 + push ax ; 50 ; 0xf68d5 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf68d6 system.c:631 + shr ax, 008h ; c1 e8 08 ; 0xf68d9 + cmp ax, 000e8h ; 3d e8 00 ; 0xf68dc + je near 06955h ; 0f 84 72 00 ; 0xf68df + cmp ax, 000d0h ; 3d d0 00 ; 0xf68e3 + jne near 06b42h ; 0f 85 58 02 ; 0xf68e6 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf68ea system.c:633 + xor ah, ah ; 30 e4 ; 0xf68ed + cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf68ef + jne near 06b42h ; 0f 85 4c 02 ; 0xf68f2 + cmp word [bp+016h], 05052h ; 81 7e 16 52 50 ; 0xf68f6 system.c:635 + jne near 06b42h ; 0f 85 43 02 ; 0xf68fb + cmp word [bp+014h], 04f43h ; 81 7e 14 43 4f ; 0xf68ff + jne near 06b42h ; 0f 85 3a 02 ; 0xf6904 + cmp word [bp+01eh], 04d4fh ; 81 7e 1e 4f 4d ; 0xf6908 + jne near 06b42h ; 0f 85 31 02 ; 0xf690d + cmp word [bp+01ch], 04445h ; 81 7e 1c 45 44 ; 0xf6911 + jne near 06b42h ; 0f 85 28 02 ; 0xf6916 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf691a + or ax, word [bp+008h] ; 0b 46 08 ; 0xf691d + jne near 06b42h ; 0f 85 1e 02 ; 0xf6920 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf6924 + or ax, word [bp+004h] ; 0b 46 04 ; 0xf6927 + jne near 06b42h ; 0f 85 14 02 ; 0xf692a + and byte [bp+028h], 0feh ; 80 66 28 fe ; 0xf692e system.c:637 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf6932 system.c:638 + mov word [bp+008h], ax ; 89 46 08 ; 0xf6935 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6938 + mov word [bp+00ah], ax ; 89 46 0a ; 0xf693b + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf693e system.c:639 + mov word [bp+004h], ax ; 89 46 04 ; 0xf6941 + mov ax, word [bp+01eh] ; 8b 46 1e ; 0xf6944 + mov word [bp+006h], ax ; 89 46 06 ; 0xf6947 + mov dword [bp+020h], strict dword 049413332h ; 66 c7 46 20 32 33 41 49 ; 0xf694a system.c:640 + jmp near 06b6ch ; e9 17 02 ; 0xf6952 system.c:644 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf6955 system.c:647 + xor ah, ah ; 30 e4 ; 0xf6958 + cmp ax, strict word 00020h ; 3d 20 00 ; 0xf695a + je short 06969h ; 74 0a ; 0xf695d + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf695f + je near 06b15h ; 0f 84 af 01 ; 0xf6962 + jmp near 06b42h ; e9 d9 01 ; 0xf6966 + cmp word [bp+01ah], 0534dh ; 81 7e 1a 4d 53 ; 0xf6969 system.c:649 + jne near 06b42h ; 0f 85 d0 01 ; 0xf696e + cmp word [bp+018h], 04150h ; 81 7e 18 50 41 ; 0xf6972 + jne near 06b42h ; 0f 85 c7 01 ; 0xf6977 + mov ax, strict word 00034h ; b8 34 00 ; 0xf697b system.c:658 + call 017a6h ; e8 25 ae ; 0xf697e + mov bx, ax ; 89 c3 ; 0xf6981 + xor dx, dx ; 31 d2 ; 0xf6983 + test ax, ax ; 85 c0 ; 0xf6985 system.c:659 + jbe short 06993h ; 76 0a ; 0xf6987 + mov dx, ax ; 89 c2 ; 0xf6989 system.c:661 + add dx, 00100h ; 81 c2 00 01 ; 0xf698b + xor bx, ax ; 31 c3 ; 0xf698f + jmp short 069aah ; eb 17 ; 0xf6991 system.c:664 + mov ax, strict word 00030h ; b8 30 00 ; 0xf6993 system.c:667 + call 017a6h ; e8 0d ae ; 0xf6996 + mov bx, ax ; 89 c3 ; 0xf6999 system.c:668 + add bx, 00400h ; 81 c3 00 04 ; 0xf699b + adc dx, dx ; 11 d2 ; 0xf699f + mov cx, strict word 0000ah ; b9 0a 00 ; 0xf69a1 system.c:669 + sal bx, 1 ; d1 e3 ; 0xf69a4 + rcl dx, 1 ; d1 d2 ; 0xf69a6 + loop 069a4h ; e2 fa ; 0xf69a8 + mov ax, strict word 00061h ; b8 61 00 ; 0xf69aa system.c:674 + call 017a6h ; e8 f6 ad ; 0xf69ad + mov word [bp-006h], ax ; 89 46 fa ; 0xf69b0 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf69b3 + mov ax, strict word 00063h ; b8 63 00 ; 0xf69b6 system.c:675 + call 017a6h ; e8 ea ad ; 0xf69b9 + mov si, ax ; 89 c6 ; 0xf69bc + mov cx, ax ; 89 c1 ; 0xf69be + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf69c0 system.c:681 + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf69c3 + jnbe near 06b42h ; 0f 87 78 01 ; 0xf69c6 + mov di, ax ; 89 c7 ; 0xf69ca + add di, ax ; 01 c7 ; 0xf69cc + jmp word [cs:di+068bbh] ; 2e ff a5 bb 68 ; 0xf69ce + push strict byte 00001h ; 6a 01 ; 0xf69d3 system.c:684 + push strict byte 00009h ; 6a 09 ; 0xf69d5 + push 0fc00h ; 68 00 fc ; 0xf69d7 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf69da + mov ax, word [bp+024h] ; 8b 46 24 ; 0xf69dd + xor bx, bx ; 31 db ; 0xf69e0 + xor cx, cx ; 31 c9 ; 0xf69e2 + call 06840h ; e8 59 fe ; 0xf69e4 + mov dword [bp+014h], strict dword 000000001h ; 66 c7 46 14 01 00 00 00 ; 0xf69e7 system.c:685 + mov dword [bp+020h], strict dword 0534d4150h ; 66 c7 46 20 50 41 4d 53 ; 0xf69ef system.c:686 + mov dword [bp+01ch], strict dword 000000014h ; 66 c7 46 1c 14 00 00 00 ; 0xf69f7 + and byte [bp+028h], 0feh ; 80 66 28 fe ; 0xf69ff + jmp near 06b6ch ; e9 66 01 ; 0xf6a03 + push strict byte 00002h ; 6a 02 ; 0xf6a06 system.c:688 + push strict byte 00000h ; 6a 00 ; 0xf6a08 + push 00400h ; 68 00 04 ; 0xf6a0a + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6a0d + mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6a10 + mov bx, 0fc00h ; bb 00 fc ; 0xf6a13 + mov cx, strict word 00009h ; b9 09 00 ; 0xf6a16 + call 06840h ; e8 24 fe ; 0xf6a19 + mov dword [bp+014h], strict dword 000000002h ; 66 c7 46 14 02 00 00 00 ; 0xf6a1c system.c:689 + jmp short 069efh ; eb c9 ; 0xf6a24 system.c:690 + push strict byte 00002h ; 6a 02 ; 0xf6a26 system.c:703 + push strict byte 00001h ; 6a 01 ; 0xf6a28 + push strict byte 00000h ; 6a 00 ; 0xf6a2a + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6a2c + mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6a2f + xor bx, bx ; 31 db ; 0xf6a32 + mov cx, strict word 0000fh ; b9 0f 00 ; 0xf6a34 + call 06840h ; e8 06 fe ; 0xf6a37 + mov dword [bp+014h], strict dword 000000003h ; 66 c7 46 14 03 00 00 00 ; 0xf6a3a system.c:704 + jmp short 069efh ; eb ab ; 0xf6a42 system.c:705 + push strict byte 00001h ; 6a 01 ; 0xf6a44 system.c:707 + add bx, strict byte 00000h ; 83 c3 00 ; 0xf6a46 + adc dx, strict byte 0ffefh ; 83 d2 ef ; 0xf6a49 + push dx ; 52 ; 0xf6a4c + push bx ; 53 ; 0xf6a4d + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6a4e + mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6a51 + xor bx, bx ; 31 db ; 0xf6a54 + mov cx, strict word 00010h ; b9 10 00 ; 0xf6a56 + call 06840h ; e8 e4 fd ; 0xf6a59 + mov dword [bp+014h], strict dword 000000004h ; 66 c7 46 14 04 00 00 00 ; 0xf6a5c system.c:708 + jmp short 069efh ; eb 89 ; 0xf6a64 system.c:709 + push strict byte 00003h ; 6a 03 ; 0xf6a66 system.c:711 + push strict byte 00001h ; 6a 01 ; 0xf6a68 + push strict byte 00000h ; 6a 00 ; 0xf6a6a + add bx, strict byte 00000h ; 83 c3 00 ; 0xf6a6c + mov cx, dx ; 89 d1 ; 0xf6a6f + adc cx, strict byte 0ffffh ; 83 d1 ff ; 0xf6a71 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6a74 + mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6a77 + call 06840h ; e8 c3 fd ; 0xf6a7a + mov dword [bp+014h], strict dword 000000005h ; 66 c7 46 14 05 00 00 00 ; 0xf6a7d system.c:712 + jmp near 069efh ; e9 67 ff ; 0xf6a85 system.c:713 + push strict byte 00002h ; 6a 02 ; 0xf6a88 system.c:715 + push strict byte 00000h ; 6a 00 ; 0xf6a8a + push 01000h ; 68 00 10 ; 0xf6a8c + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6a8f + mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6a92 + xor bx, bx ; 31 db ; 0xf6a95 + mov cx, 0fec0h ; b9 c0 fe ; 0xf6a97 + call 06840h ; e8 a3 fd ; 0xf6a9a + mov dword [bp+014h], strict dword 000000006h ; 66 c7 46 14 06 00 00 00 ; 0xf6a9d system.c:716 + jmp near 069efh ; e9 47 ff ; 0xf6aa5 system.c:717 + push strict byte 00002h ; 6a 02 ; 0xf6aa8 system.c:719 + push strict byte 00000h ; 6a 00 ; 0xf6aaa + push 01000h ; 68 00 10 ; 0xf6aac + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6aaf + mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6ab2 + xor bx, bx ; 31 db ; 0xf6ab5 + mov cx, 0fee0h ; b9 e0 fe ; 0xf6ab7 + call 06840h ; e8 83 fd ; 0xf6aba + mov dword [bp+014h], strict dword 000000007h ; 66 c7 46 14 07 00 00 00 ; 0xf6abd system.c:720 + jmp near 069efh ; e9 27 ff ; 0xf6ac5 system.c:721 + push strict byte 00002h ; 6a 02 ; 0xf6ac8 system.c:724 + push strict byte 00004h ; 6a 04 ; 0xf6aca + push strict byte 00000h ; 6a 00 ; 0xf6acc + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6ace + mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6ad1 + xor bx, bx ; 31 db ; 0xf6ad4 + mov cx, strict word 0fffch ; b9 fc ff ; 0xf6ad6 + call 06840h ; e8 64 fd ; 0xf6ad9 + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf6adc system.c:730 + test ax, ax ; 85 c0 ; 0xf6adf + jne short 06ae7h ; 75 04 ; 0xf6ae1 + test si, si ; 85 f6 ; 0xf6ae3 + je short 06af2h ; 74 0b ; 0xf6ae5 + mov dword [bp+014h], strict dword 000000009h ; 66 c7 46 14 09 00 00 00 ; 0xf6ae7 system.c:731 + jmp near 069efh ; e9 fd fe ; 0xf6aef system.c:732 + mov word [bp+014h], ax ; 89 46 14 ; 0xf6af2 system.c:733 + mov word [bp+016h], ax ; 89 46 16 ; 0xf6af5 + jmp near 069efh ; e9 f4 fe ; 0xf6af8 system.c:734 + cmp word [bp-006h], strict byte 00000h ; 83 7e fa 00 ; 0xf6afb system.c:747 + jne short 06b05h ; 75 04 ; 0xf6aff + test si, si ; 85 f6 ; 0xf6b01 + je short 06b42h ; 74 3d ; 0xf6b03 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6b05 system.c:749 + mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6b08 + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf6b0b + call 06882h ; e8 71 fd ; 0xf6b0e + xor ax, ax ; 31 c0 ; 0xf6b11 system.c:750 + jmp short 06af2h ; eb dd ; 0xf6b13 + and byte [bp+028h], 0feh ; 80 66 28 fe ; 0xf6b15 system.c:769 + mov ax, strict word 00030h ; b8 30 00 ; 0xf6b19 system.c:779 + call 017a6h ; e8 87 ac ; 0xf6b1c + mov word [bp+01ch], ax ; 89 46 1c ; 0xf6b1f + cmp ax, 03c00h ; 3d 00 3c ; 0xf6b22 system.c:782 + jbe short 06b2ch ; 76 05 ; 0xf6b25 + mov word [bp+01ch], 03c00h ; c7 46 1c 00 3c ; 0xf6b27 system.c:783 + mov ax, strict word 00034h ; b8 34 00 ; 0xf6b2c system.c:786 + call 017a6h ; e8 74 ac ; 0xf6b2f + mov dx, ax ; 89 c2 ; 0xf6b32 + mov word [bp+018h], ax ; 89 46 18 ; 0xf6b34 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf6b37 system.c:789 + mov word [bp+020h], ax ; 89 46 20 ; 0xf6b3a + mov word [bp+014h], dx ; 89 56 14 ; 0xf6b3d system.c:790 + jmp short 06b6ch ; eb 2a ; 0xf6b40 system.c:795 + mov bx, 00e06h ; bb 06 0e ; 0xf6b42 system.c:800 + mov cx, ds ; 8c d9 ; 0xf6b45 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6b47 + call 01a27h ; e8 da ae ; 0xf6b4a + push word [bp+014h] ; ff 76 14 ; 0xf6b4d + push word [bp+020h] ; ff 76 20 ; 0xf6b50 + push 00934h ; 68 34 09 ; 0xf6b53 + push strict byte 00004h ; 6a 04 ; 0xf6b56 + call 01a68h ; e8 0d af ; 0xf6b58 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf6b5b + or byte [bp+028h], 001h ; 80 4e 28 01 ; 0xf6b5e system.c:801 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf6b62 system.c:802 + xor al, al ; 30 c0 ; 0xf6b65 + or AL, strict byte 086h ; 0c 86 ; 0xf6b67 + mov word [bp+020h], ax ; 89 46 20 ; 0xf6b69 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6b6c system.c:805 + pop di ; 5f ; 0xf6b6f + pop si ; 5e ; 0xf6b70 + pop bp ; 5d ; 0xf6b71 + retn ; c3 ; 0xf6b72 + ; disGetNextSymbol 0xf6b73 LB 0x4229 -> off=0x0 cb=0000000000000156 uValue=00000000000f5573 'int15_blkmove' +int15_blkmove: ; 0xf6b73 LB 0x156 + push bp ; 55 ; 0xf6b73 system.c:814 + mov bp, sp ; 89 e5 ; 0xf6b74 + push si ; 56 ; 0xf6b76 + push di ; 57 ; 0xf6b77 + cli ; fa ; 0xf6b78 system.c:824 + mov ax, strict word 00001h ; b8 01 00 ; 0xf6b79 system.c:826 + call 06490h ; e8 11 f9 ; 0xf6b7c + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6b7f system.c:849 + sal bx, 004h ; c1 e3 04 ; 0xf6b82 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf6b85 + add ax, bx ; 01 d8 ; 0xf6b88 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf6b8a system.c:850 + shr dx, 00ch ; c1 ea 0c ; 0xf6b8d + mov cl, dl ; 88 d1 ; 0xf6b90 + cmp ax, bx ; 39 d8 ; 0xf6b92 system.c:851 + jnc short 06b98h ; 73 02 ; 0xf6b94 + db 0feh, 0c1h + ; inc cl ; fe c1 ; 0xf6b96 system.c:852 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6b98 system.c:853 + add bx, strict byte 00008h ; 83 c3 08 ; 0xf6b9b + mov es, [bp+006h] ; 8e 46 06 ; 0xf6b9e system.c:61 + mov word [es:bx], strict word 0002fh ; 26 c7 07 2f 00 ; 0xf6ba1 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6ba6 system.c:854 + add bx, strict byte 0000ah ; 83 c3 0a ; 0xf6ba9 + mov word [es:bx], ax ; 26 89 07 ; 0xf6bac system.c:61 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6baf system.c:855 + add bx, strict byte 0000ch ; 83 c3 0c ; 0xf6bb2 + mov byte [es:bx], cl ; 26 88 0f ; 0xf6bb5 system.c:53 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6bb8 system.c:856 + add bx, strict byte 0000dh ; 83 c3 0d ; 0xf6bbb + mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf6bbe system.c:53 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6bc2 system.c:857 + add bx, strict byte 0000eh ; 83 c3 0e ; 0xf6bc5 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6bc8 system.c:61 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6bcd system.c:860 + add bx, strict byte 00020h ; 83 c3 20 ; 0xf6bd0 + mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6bd3 system.c:61 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6bd8 system.c:861 + add bx, strict byte 00022h ; 83 c3 22 ; 0xf6bdb + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6bde system.c:63 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6be3 system.c:862 + add bx, strict byte 00024h ; 83 c3 24 ; 0xf6be6 + mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf6be9 system.c:51 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6bed system.c:863 + add bx, strict byte 00025h ; 83 c3 25 ; 0xf6bf0 + mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf6bf3 system.c:51 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6bf7 system.c:864 + add bx, strict byte 00026h ; 83 c3 26 ; 0xf6bfa + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6bfd system.c:61 + mov ax, ss ; 8c d0 ; 0xf6c02 system.c:867 + mov cx, ax ; 89 c1 ; 0xf6c04 + sal ax, 004h ; c1 e0 04 ; 0xf6c06 system.c:868 + shr cx, 00ch ; c1 e9 0c ; 0xf6c09 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6c0c system.c:870 + add bx, strict byte 00028h ; 83 c3 28 ; 0xf6c0f + mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6c12 system.c:61 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6c17 system.c:871 + add bx, strict byte 0002ah ; 83 c3 2a ; 0xf6c1a + mov word [es:bx], ax ; 26 89 07 ; 0xf6c1d system.c:61 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6c20 system.c:872 + add bx, strict byte 0002ch ; 83 c3 2c ; 0xf6c23 + mov byte [es:bx], cl ; 26 88 0f ; 0xf6c26 system.c:51 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6c29 system.c:873 + add bx, strict byte 0002dh ; 83 c3 2d ; 0xf6c2c + mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf6c2f system.c:53 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6c33 system.c:874 + add bx, strict byte 0002eh ; 83 c3 2e ; 0xf6c36 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6c39 system.c:63 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf6c3e system.c:880 + mov cx, word [bp+014h] ; 8b 4e 14 ; 0xf6c41 + push DS ; 1e ; 0xf6c44 + push eax ; 66 50 ; 0xf6c45 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf6c47 + mov ds, ax ; 8e d8 ; 0xf6c49 + mov word [00467h], sp ; 89 26 67 04 ; 0xf6c4b + mov [00469h], ss ; 8c 16 69 04 ; 0xf6c4f + lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf6c53 system.c:884 + lidt [cs:0efe1h] ; 2e 0f 01 1e e1 ef ; 0xf6c58 + push strict byte 00020h ; 6a 20 ; 0xf6c5e + call 06c63h ; e8 00 00 ; 0xf6c60 + pop ax ; 58 ; 0xf6c63 + add ax, strict byte 0000eh ; 83 c0 0e ; 0xf6c64 + push ax ; 50 ; 0xf6c67 + mov eax, cr0 ; 0f 20 c0 ; 0xf6c68 + or AL, strict byte 001h ; 0c 01 ; 0xf6c6b + mov cr0, eax ; 0f 22 c0 ; 0xf6c6d + retf ; cb ; 0xf6c70 + mov ax, strict word 00010h ; b8 10 00 ; 0xf6c71 + mov ds, ax ; 8e d8 ; 0xf6c74 + add AL, strict byte 008h ; 04 08 ; 0xf6c76 + mov es, ax ; 8e c0 ; 0xf6c78 + add AL, strict byte 010h ; 04 10 ; 0xf6c7a + mov ss, ax ; 8e d0 ; 0xf6c7c + db 033h, 0f6h + ; xor si, si ; 33 f6 ; 0xf6c7e system.c:885 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xf6c80 + cld ; fc ; 0xf6c82 + rep movsw ; f3 a5 ; 0xf6c83 + mov ax, strict word 00028h ; b8 28 00 ; 0xf6c85 system.c:886 + mov ds, ax ; 8e d8 ; 0xf6c88 + mov es, ax ; 8e c0 ; 0xf6c8a + push 0f000h ; 68 00 f0 ; 0xf6c8c + call 06c92h ; e8 00 00 ; 0xf6c8f + pop ax ; 58 ; 0xf6c92 + add ax, strict byte 0000eh ; 83 c0 0e ; 0xf6c93 + push ax ; 50 ; 0xf6c96 + mov eax, cr0 ; 0f 20 c0 ; 0xf6c97 + and AL, strict byte 0feh ; 24 fe ; 0xf6c9a + mov cr0, eax ; 0f 22 c0 ; 0xf6c9c + retf ; cb ; 0xf6c9f + lidt [cs:0efe7h] ; 2e 0f 01 1e e7 ef ; 0xf6ca0 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf6ca6 system.c:887 + mov ds, ax ; 8e d8 ; 0xf6ca8 + mov es, ax ; 8e c0 ; 0xf6caa + lss sp, [00467h] ; 0f b2 26 67 04 ; 0xf6cac + pop eax ; 66 58 ; 0xf6cb1 + pop DS ; 1f ; 0xf6cb3 + xor ax, ax ; 31 c0 ; 0xf6cb4 system.c:889 + call 06490h ; e8 d7 f7 ; 0xf6cb6 + sti ; fb ; 0xf6cb9 system.c:892 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf6cba system.c:894 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6cbe system.c:895 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6cc2 system.c:896 + pop di ; 5f ; 0xf6cc5 + pop si ; 5e ; 0xf6cc6 + pop bp ; 5d ; 0xf6cc7 + retn ; c3 ; 0xf6cc8 + ; disGetNextSymbol 0xf6cc9 LB 0x40d3 -> off=0x0 cb=0000000000000195 uValue=00000000000f56c9 'inv_op_handler' +inv_op_handler: ; 0xf6cc9 LB 0x195 + push bp ; 55 ; 0xf6cc9 invop.c:247 + mov bp, sp ; 89 e5 ; 0xf6cca + push si ; 56 ; 0xf6ccc + push di ; 57 ; 0xf6ccd + push ax ; 50 ; 0xf6cce + push ax ; 50 ; 0xf6ccf + les bx, [bp+018h] ; c4 5e 18 ; 0xf6cd0 invop.c:249 + cmp byte [es:bx], 0f0h ; 26 80 3f f0 ; 0xf6cd3 invop.c:251 + jne short 06cdfh ; 75 06 ; 0xf6cd7 + inc word [bp+018h] ; ff 46 18 ; 0xf6cd9 invop.c:253 + jmp near 06e57h ; e9 78 01 ; 0xf6cdc invop.c:254 + cmp word [es:bx], 0050fh ; 26 81 3f 0f 05 ; 0xf6cdf + jne near 06e53h ; 0f 85 6b 01 ; 0xf6ce4 + mov si, 00800h ; be 00 08 ; 0xf6ce8 invop.c:256 + xor ax, ax ; 31 c0 ; 0xf6ceb + mov word [bp-006h], ax ; 89 46 fa ; 0xf6ced + mov word [bp-008h], ax ; 89 46 f8 ; 0xf6cf0 invop.c:259 + mov es, ax ; 8e c0 ; 0xf6cf3 invop.c:267 + mov bx, word [es:si+02ch] ; 26 8b 5c 2c ; 0xf6cf5 + sub bx, strict byte 00006h ; 83 eb 06 ; 0xf6cf9 + mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf6cfc + mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf6d00 invop.c:268 + mov es, dx ; 8e c2 ; 0xf6d04 + mov word [es:bx], ax ; 26 89 07 ; 0xf6d06 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6d09 invop.c:269 + mov ax, word [es:si+022h] ; 26 8b 44 22 ; 0xf6d0c + mov es, dx ; 8e c2 ; 0xf6d10 + mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6d12 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6d16 invop.c:270 + mov ax, word [es:si+018h] ; 26 8b 44 18 ; 0xf6d19 + mov es, dx ; 8e c2 ; 0xf6d1d + mov word [es:bx+004h], ax ; 26 89 47 04 ; 0xf6d1f + mov es, [bp-006h] ; 8e 46 fa ; 0xf6d23 invop.c:273 + movzx bx, byte [es:si+038h] ; 26 0f b6 5c 38 ; 0xf6d26 + mov di, word [es:si+036h] ; 26 8b 7c 36 ; 0xf6d2b + mov ax, word [es:si+024h] ; 26 8b 44 24 ; 0xf6d2f invop.c:274 + xor dx, dx ; 31 d2 ; 0xf6d33 + mov cx, strict word 00004h ; b9 04 00 ; 0xf6d35 + sal ax, 1 ; d1 e0 ; 0xf6d38 + rcl dx, 1 ; d1 d2 ; 0xf6d3a + loop 06d38h ; e2 fa ; 0xf6d3c + cmp bx, dx ; 39 d3 ; 0xf6d3e + jne short 06d46h ; 75 04 ; 0xf6d40 + cmp di, ax ; 39 c7 ; 0xf6d42 + je short 06d4bh ; 74 05 ; 0xf6d44 + mov word [bp-008h], strict word 00001h ; c7 46 f8 01 00 ; 0xf6d46 invop.c:275 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6d4b invop.c:276 + movzx di, byte [es:si+04ah] ; 26 0f b6 7c 4a ; 0xf6d4e + mov bx, word [es:si+048h] ; 26 8b 5c 48 ; 0xf6d53 + mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf6d57 invop.c:277 + xor dx, dx ; 31 d2 ; 0xf6d5b + mov cx, strict word 00004h ; b9 04 00 ; 0xf6d5d + sal ax, 1 ; d1 e0 ; 0xf6d60 + rcl dx, 1 ; d1 d2 ; 0xf6d62 + loop 06d60h ; e2 fa ; 0xf6d64 + cmp di, dx ; 39 d7 ; 0xf6d66 + jne short 06d6eh ; 75 04 ; 0xf6d68 + cmp bx, ax ; 39 c3 ; 0xf6d6a + je short 06d72h ; 74 04 ; 0xf6d6c + or byte [bp-008h], 002h ; 80 4e f8 02 ; 0xf6d6e invop.c:278 + push strict byte 00000h ; 6a 00 ; 0xf6d72 invop.c:281 + push 00800h ; 68 00 08 ; 0xf6d74 + push strict byte 0001fh ; 6a 1f ; 0xf6d77 + db 08bh, 0dch + ; mov bx, sp ; 8b dc ; 0xf6d79 + lgdt [ss:bx] ; 36 0f 01 17 ; 0xf6d7b + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6d7f + mov es, [bp-006h] ; 8e 46 fa ; 0xf6d82 invop.c:284 + mov ax, word [es:si+03ah] ; 26 8b 44 3a ; 0xf6d85 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf6d89 + mov ax, word [es:si+036h] ; 26 8b 44 36 ; 0xf6d8d invop.c:285 + mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf6d91 + movzx dx, byte [es:si+039h] ; 26 0f b6 54 39 ; 0xf6d95 invop.c:286 + sal dx, 008h ; c1 e2 08 ; 0xf6d9a + movzx ax, byte [es:si+038h] ; 26 0f b6 44 38 ; 0xf6d9d + or dx, ax ; 09 c2 ; 0xf6da2 + mov word [es:si+00ch], dx ; 26 89 54 0c ; 0xf6da4 + mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00 ; 0xf6da8 invop.c:287 + mov ax, word [es:si+04ch] ; 26 8b 44 4c ; 0xf6dae invop.c:290 + mov word [es:si], ax ; 26 89 04 ; 0xf6db2 + mov ax, word [es:si+048h] ; 26 8b 44 48 ; 0xf6db5 invop.c:291 + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf6db9 + movzx dx, byte [es:si+04bh] ; 26 0f b6 54 4b ; 0xf6dbd invop.c:292 + sal dx, 008h ; c1 e2 08 ; 0xf6dc2 + movzx ax, byte [es:si+04ah] ; 26 0f b6 44 4a ; 0xf6dc5 + or dx, ax ; 09 c2 ; 0xf6dca + mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf6dcc + movzx ax, byte [es:si+05ch] ; 26 0f b6 44 5c ; 0xf6dd0 invop.c:295 + mov dx, word [es:si+05ah] ; 26 8b 54 5a ; 0xf6dd5 + push ax ; 50 ; 0xf6dd9 invop.c:296 + push dx ; 52 ; 0xf6dda + push word [es:si+05eh] ; 26 ff 74 5e ; 0xf6ddb + db 08bh, 0dch + ; mov bx, sp ; 8b dc ; 0xf6ddf + lidt [ss:bx] ; 36 0f 01 1f ; 0xf6de1 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6de5 + mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf6de8 invop.c:299 + mov ax, 00080h ; b8 80 00 ; 0xf6deb + mov ss, ax ; 8e d0 ; 0xf6dee + mov ax, word [ss:0001eh] ; 36 a1 1e 00 ; 0xf6df0 + mov ds, ax ; 8e d8 ; 0xf6df4 + mov ax, word [ss:00024h] ; 36 a1 24 00 ; 0xf6df6 + mov es, ax ; 8e c0 ; 0xf6dfa + smsw ax ; 0f 01 e0 ; 0xf6dfc invop.c:300 + inc ax ; 40 ; 0xf6dff + lmsw ax ; 0f 01 f0 ; 0xf6e00 + mov ax, strict word 00008h ; b8 08 00 ; 0xf6e03 + test cx, strict word 00001h ; f7 c1 01 00 ; 0xf6e06 + je near 06e10h ; 0f 84 02 00 ; 0xf6e0a + mov es, ax ; 8e c0 ; 0xf6e0e + test cx, strict word 00002h ; f7 c1 02 00 ; 0xf6e10 + je near 06e38h ; 0f 84 20 00 ; 0xf6e14 + mov bx, word [word ss:00000h] ; 36 8b 1e 00 00 ; 0xf6e18 + mov word [word ss:00008h], bx ; 36 89 1e 08 00 ; 0xf6e1d + mov bx, word [word ss:00002h] ; 36 8b 1e 02 00 ; 0xf6e22 + mov word [word ss:0000ah], bx ; 36 89 1e 0a 00 ; 0xf6e27 + mov bx, word [word ss:00004h] ; 36 8b 1e 04 00 ; 0xf6e2c + mov word [word ss:0000ch], bx ; 36 89 1e 0c 00 ; 0xf6e31 + mov ds, ax ; 8e d8 ; 0xf6e36 + mov eax, cr0 ; 0f 20 c0 ; 0xf6e38 + dec ax ; 48 ; 0xf6e3b + mov cr0, eax ; 0f 22 c0 ; 0xf6e3c + mov sp, strict word 00026h ; bc 26 00 ; 0xf6e3f invop.c:301 + popaw ; 61 ; 0xf6e42 + mov sp, word [word ss:0002ch] ; 36 8b 26 2c 00 ; 0xf6e43 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6e48 + mov ss, [word ss:00020h] ; 36 8e 16 20 00 ; 0xf6e4b + iret ; cf ; 0xf6e50 + jmp short 06e57h ; eb 04 ; 0xf6e51 invop.c:353 + sti ; fb ; 0xf6e53 invop.c:357 + hlt ; f4 ; 0xf6e54 invop.c:358 + jmp short 06e54h ; eb fd ; 0xf6e55 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6e57 invop.c:360 + pop di ; 5f ; 0xf6e5a + pop si ; 5e ; 0xf6e5b + pop bp ; 5d ; 0xf6e5c + retn ; c3 ; 0xf6e5d + ; disGetNextSymbol 0xf6e5e LB 0x3f3e -> off=0x0 cb=0000000000000028 uValue=00000000000f585e 'init_rtc' +init_rtc: ; 0xf6e5e LB 0x28 + push bp ; 55 ; 0xf6e5e timepci.c:84 + mov bp, sp ; 89 e5 ; 0xf6e5f + push dx ; 52 ; 0xf6e61 + mov dx, strict word 00026h ; ba 26 00 ; 0xf6e62 timepci.c:86 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6e65 + call 01787h ; e8 1c a9 ; 0xf6e68 + mov dx, strict word 00002h ; ba 02 00 ; 0xf6e6b timepci.c:87 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6e6e + call 01787h ; e8 13 a9 ; 0xf6e71 + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6e74 timepci.c:88 + call 0176ah ; e8 f0 a8 ; 0xf6e77 + mov ax, strict word 0000dh ; b8 0d 00 ; 0xf6e7a timepci.c:89 + call 0176ah ; e8 ea a8 ; 0xf6e7d + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6e80 timepci.c:90 + pop dx ; 5a ; 0xf6e83 + pop bp ; 5d ; 0xf6e84 + retn ; c3 ; 0xf6e85 + ; disGetNextSymbol 0xf6e86 LB 0x3f16 -> off=0x0 cb=0000000000000021 uValue=00000000000f5886 'rtc_updating' +rtc_updating: ; 0xf6e86 LB 0x21 + push bp ; 55 ; 0xf6e86 timepci.c:92 + mov bp, sp ; 89 e5 ; 0xf6e87 + push dx ; 52 ; 0xf6e89 + mov dx, 061a8h ; ba a8 61 ; 0xf6e8a timepci.c:105 + dec dx ; 4a ; 0xf6e8d timepci.c:106 + je short 06e9eh ; 74 0e ; 0xf6e8e + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6e90 timepci.c:107 + call 0176ah ; e8 d4 a8 ; 0xf6e93 + test AL, strict byte 080h ; a8 80 ; 0xf6e96 + jne short 06e8dh ; 75 f3 ; 0xf6e98 + xor ax, ax ; 31 c0 ; 0xf6e9a timepci.c:108 + jmp short 06ea1h ; eb 03 ; 0xf6e9c + mov ax, strict word 00001h ; b8 01 00 ; 0xf6e9e timepci.c:110 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6ea1 timepci.c:111 + pop dx ; 5a ; 0xf6ea4 + pop bp ; 5d ; 0xf6ea5 + retn ; c3 ; 0xf6ea6 + ; disGetNextSymbol 0xf6ea7 LB 0x3ef5 -> off=0x0 cb=0000000000000091 uValue=00000000000f58a7 'int70_function' +int70_function: ; 0xf6ea7 LB 0x91 + push bp ; 55 ; 0xf6ea7 timepci.c:120 + mov bp, sp ; 89 e5 ; 0xf6ea8 + push si ; 56 ; 0xf6eaa + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6eab timepci.c:126 + call 0176ah ; e8 b9 a8 ; 0xf6eae + mov bl, al ; 88 c3 ; 0xf6eb1 + mov dh, al ; 88 c6 ; 0xf6eb3 + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6eb5 timepci.c:127 + call 0176ah ; e8 af a8 ; 0xf6eb8 + mov dl, al ; 88 c2 ; 0xf6ebb + test bl, 060h ; f6 c3 60 ; 0xf6ebd timepci.c:129 + je short 06f2fh ; 74 6d ; 0xf6ec0 + test AL, strict byte 020h ; a8 20 ; 0xf6ec2 timepci.c:130 + je short 06ecah ; 74 04 ; 0xf6ec4 + sti ; fb ; 0xf6ec6 timepci.c:132 + int 04ah ; cd 4a ; 0xf6ec7 timepci.c:133 + cli ; fa ; 0xf6ec9 timepci.c:134 + test dl, 040h ; f6 c2 40 ; 0xf6eca timepci.c:136 + je short 06f2fh ; 74 60 ; 0xf6ecd + mov bx, 000a0h ; bb a0 00 ; 0xf6ecf timepci.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6ed2 + mov es, ax ; 8e c0 ; 0xf6ed5 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6ed7 + test al, al ; 84 c0 ; 0xf6eda timepci.c:49 + je short 06f2fh ; 74 51 ; 0xf6edc + mov bx, 0009ch ; bb 9c 00 ; 0xf6ede timepci.c:68 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf6ee1 + mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf6ee4 + test bx, bx ; 85 db ; 0xf6ee8 timepci.c:144 + jne short 06f1dh ; 75 31 ; 0xf6eea + cmp ax, 003d1h ; 3d d1 03 ; 0xf6eec + jnc short 06f1dh ; 73 2c ; 0xf6eef + mov bx, 00098h ; bb 98 00 ; 0xf6ef1 timepci.c:58 + mov cx, word [es:bx] ; 26 8b 0f ; 0xf6ef4 + mov bx, 0009ah ; bb 9a 00 ; 0xf6ef7 timepci.c:58 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf6efa + mov si, 000a0h ; be a0 00 ; 0xf6efd timepci.c:53 + mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf6f00 + mov al, dh ; 88 f0 ; 0xf6f04 timepci.c:151 + and AL, strict byte 037h ; 24 37 ; 0xf6f06 + movzx dx, al ; 0f b6 d0 ; 0xf6f08 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6f0b + call 01787h ; e8 76 a8 ; 0xf6f0e + mov es, cx ; 8e c1 ; 0xf6f11 timepci.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6f13 + or AL, strict byte 080h ; 0c 80 ; 0xf6f16 timepci.c:49 + mov byte [es:bx], al ; 26 88 07 ; 0xf6f18 timepci.c:53 + jmp short 06f2fh ; eb 12 ; 0xf6f1b timepci.c:153 + add ax, 0fc2fh ; 05 2f fc ; 0xf6f1d timepci.c:155 + mov dx, bx ; 89 da ; 0xf6f20 + adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf6f22 + mov bx, 0009ch ; bb 9c 00 ; 0xf6f25 timepci.c:73 + mov word [es:bx], ax ; 26 89 07 ; 0xf6f28 + mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf6f2b + call 0e030h ; e8 fe 70 ; 0xf6f2f timepci.c:161 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6f32 timepci.c:162 + pop si ; 5e ; 0xf6f35 + pop bp ; 5d ; 0xf6f36 + retn ; c3 ; 0xf6f37 + ; disGetNextSymbol 0xf6f38 LB 0x3e64 -> off=0x10 cb=00000000000001c8 uValue=00000000000f5948 'int1a_function' + db 05fh, 06fh, 088h, 06fh, 0adh, 06fh, 0dfh, 06fh, 02eh, 070h, 066h, 070h, 0a9h, 070h, 000h, 071h +int1a_function: ; 0xf6f48 LB 0x1c8 + push bp ; 55 ; 0xf6f48 timepci.c:167 + mov bp, sp ; 89 e5 ; 0xf6f49 + sti ; fb ; 0xf6f4b timepci.c:173 + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6f4c timepci.c:175 + cmp AL, strict byte 007h ; 3c 07 ; 0xf6f4f + jnbe near 06f84h ; 0f 87 2f 00 ; 0xf6f51 + movzx bx, al ; 0f b6 d8 ; 0xf6f55 + add bx, bx ; 01 db ; 0xf6f58 + jmp word [cs:bx+06f38h] ; 2e ff a7 38 6f ; 0xf6f5a + cli ; fa ; 0xf6f5f timepci.c:177 + mov bx, 0046eh ; bb 6e 04 ; 0xf6f60 timepci.c:178 + xor ax, ax ; 31 c0 ; 0xf6f63 + mov es, ax ; 8e c0 ; 0xf6f65 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf6f67 + mov word [bp+010h], ax ; 89 46 10 ; 0xf6f6a + mov bx, 0046ch ; bb 6c 04 ; 0xf6f6d timepci.c:179 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf6f70 + mov word [bp+00eh], ax ; 89 46 0e ; 0xf6f73 + mov bx, 00470h ; bb 70 04 ; 0xf6f76 timepci.c:180 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6f79 + mov byte [bp+012h], al ; 88 46 12 ; 0xf6f7c + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6f7f timepci.c:181 + sti ; fb ; 0xf6f83 timepci.c:182 + mov sp, bp ; 89 ec ; 0xf6f84 timepci.c:185 + pop bp ; 5d ; 0xf6f86 + retn ; c3 ; 0xf6f87 + cli ; fa ; 0xf6f88 timepci.c:188 + mov bx, 0046eh ; bb 6e 04 ; 0xf6f89 timepci.c:189 + xor ax, ax ; 31 c0 ; 0xf6f8c + mov es, ax ; 8e c0 ; 0xf6f8e + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6f90 + mov word [es:bx], ax ; 26 89 07 ; 0xf6f93 + mov bx, 0046ch ; bb 6c 04 ; 0xf6f96 timepci.c:190 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6f99 + mov word [es:bx], ax ; 26 89 07 ; 0xf6f9c + mov bx, 00470h ; bb 70 04 ; 0xf6f9f timepci.c:191 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6fa2 + sti ; fb ; 0xf6fa6 timepci.c:192 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6fa7 timepci.c:193 + jmp short 06f84h ; eb d7 ; 0xf6fab timepci.c:195 + call 06e86h ; e8 d6 fe ; 0xf6fad timepci.c:198 + test ax, ax ; 85 c0 ; 0xf6fb0 + je short 06fb6h ; 74 02 ; 0xf6fb2 + jmp short 06f84h ; eb ce ; 0xf6fb4 timepci.c:200 + xor ax, ax ; 31 c0 ; 0xf6fb6 timepci.c:203 + call 0176ah ; e8 af a7 ; 0xf6fb8 + mov byte [bp+00fh], al ; 88 46 0f ; 0xf6fbb + mov ax, strict word 00002h ; b8 02 00 ; 0xf6fbe timepci.c:204 + call 0176ah ; e8 a6 a7 ; 0xf6fc1 + mov byte [bp+010h], al ; 88 46 10 ; 0xf6fc4 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6fc7 timepci.c:205 + call 0176ah ; e8 9d a7 ; 0xf6fca + mov bl, al ; 88 c3 ; 0xf6fcd + mov byte [bp+011h], al ; 88 46 11 ; 0xf6fcf + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6fd2 timepci.c:206 + call 0176ah ; e8 92 a7 ; 0xf6fd5 + and AL, strict byte 001h ; 24 01 ; 0xf6fd8 + mov byte [bp+00eh], al ; 88 46 0e ; 0xf6fda + jmp short 07024h ; eb 45 ; 0xf6fdd + call 06e86h ; e8 a4 fe ; 0xf6fdf timepci.c:223 + test ax, ax ; 85 c0 ; 0xf6fe2 + je short 06fe9h ; 74 03 ; 0xf6fe4 + call 06e5eh ; e8 75 fe ; 0xf6fe6 timepci.c:224 + movzx dx, byte [bp+00fh] ; 0f b6 56 0f ; 0xf6fe9 timepci.c:227 + xor ax, ax ; 31 c0 ; 0xf6fed + call 01787h ; e8 95 a7 ; 0xf6fef + movzx dx, byte [bp+010h] ; 0f b6 56 10 ; 0xf6ff2 timepci.c:228 + mov ax, strict word 00002h ; b8 02 00 ; 0xf6ff6 + call 01787h ; e8 8b a7 ; 0xf6ff9 + movzx dx, byte [bp+011h] ; 0f b6 56 11 ; 0xf6ffc timepci.c:229 + mov ax, strict word 00004h ; b8 04 00 ; 0xf7000 + call 01787h ; e8 81 a7 ; 0xf7003 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf7006 timepci.c:231 + call 0176ah ; e8 5e a7 ; 0xf7009 + mov bl, al ; 88 c3 ; 0xf700c + and bl, 060h ; 80 e3 60 ; 0xf700e + or bl, 002h ; 80 cb 02 ; 0xf7011 + mov al, byte [bp+00eh] ; 8a 46 0e ; 0xf7014 + and AL, strict byte 001h ; 24 01 ; 0xf7017 + or bl, al ; 08 c3 ; 0xf7019 + movzx dx, bl ; 0f b6 d3 ; 0xf701b timepci.c:233 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf701e + call 01787h ; e8 63 a7 ; 0xf7021 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf7024 + mov byte [bp+012h], bl ; 88 5e 12 ; 0xf7028 + jmp near 06f84h ; e9 56 ff ; 0xf702b + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf702e timepci.c:240 + call 06e86h ; e8 51 fe ; 0xf7032 timepci.c:241 + test ax, ax ; 85 c0 ; 0xf7035 + je short 0703ch ; 74 03 ; 0xf7037 + jmp near 06f84h ; e9 48 ff ; 0xf7039 timepci.c:243 + mov ax, strict word 00009h ; b8 09 00 ; 0xf703c timepci.c:245 + call 0176ah ; e8 28 a7 ; 0xf703f + mov byte [bp+010h], al ; 88 46 10 ; 0xf7042 + mov ax, strict word 00008h ; b8 08 00 ; 0xf7045 timepci.c:246 + call 0176ah ; e8 1f a7 ; 0xf7048 + mov byte [bp+00fh], al ; 88 46 0f ; 0xf704b + mov ax, strict word 00007h ; b8 07 00 ; 0xf704e timepci.c:247 + call 0176ah ; e8 16 a7 ; 0xf7051 + mov byte [bp+00eh], al ; 88 46 0e ; 0xf7054 + mov ax, strict word 00032h ; b8 32 00 ; 0xf7057 timepci.c:248 + call 0176ah ; e8 0d a7 ; 0xf705a + mov byte [bp+011h], al ; 88 46 11 ; 0xf705d + mov byte [bp+012h], al ; 88 46 12 ; 0xf7060 timepci.c:249 + jmp near 06f84h ; e9 1e ff ; 0xf7063 timepci.c:251 + call 06e86h ; e8 1d fe ; 0xf7066 timepci.c:264 + test ax, ax ; 85 c0 ; 0xf7069 + je short 07073h ; 74 06 ; 0xf706b + call 06e5eh ; e8 ee fd ; 0xf706d timepci.c:265 + jmp near 06f84h ; e9 11 ff ; 0xf7070 timepci.c:267 + movzx dx, byte [bp+010h] ; 0f b6 56 10 ; 0xf7073 timepci.c:269 + mov ax, strict word 00009h ; b8 09 00 ; 0xf7077 + call 01787h ; e8 0a a7 ; 0xf707a + movzx dx, byte [bp+00fh] ; 0f b6 56 0f ; 0xf707d timepci.c:270 + mov ax, strict word 00008h ; b8 08 00 ; 0xf7081 + call 01787h ; e8 00 a7 ; 0xf7084 + movzx dx, byte [bp+00eh] ; 0f b6 56 0e ; 0xf7087 timepci.c:271 + mov ax, strict word 00007h ; b8 07 00 ; 0xf708b + call 01787h ; e8 f6 a6 ; 0xf708e + movzx dx, byte [bp+011h] ; 0f b6 56 11 ; 0xf7091 timepci.c:272 + mov ax, strict word 00032h ; b8 32 00 ; 0xf7095 + call 01787h ; e8 ec a6 ; 0xf7098 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf709b timepci.c:273 + call 0176ah ; e8 c9 a6 ; 0xf709e + mov bl, al ; 88 c3 ; 0xf70a1 + and bl, 07fh ; 80 e3 7f ; 0xf70a3 + jmp near 0701bh ; e9 72 ff ; 0xf70a6 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf70a9 timepci.c:291 + call 0176ah ; e8 bb a6 ; 0xf70ac + mov bl, al ; 88 c3 ; 0xf70af + mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf70b1 timepci.c:292 + test AL, strict byte 020h ; a8 20 ; 0xf70b6 timepci.c:293 + je short 070bdh ; 74 03 ; 0xf70b8 + jmp near 06f84h ; e9 c7 fe ; 0xf70ba timepci.c:296 + call 06e86h ; e8 c6 fd ; 0xf70bd timepci.c:298 + test ax, ax ; 85 c0 ; 0xf70c0 + je short 070c7h ; 74 03 ; 0xf70c2 + call 06e5eh ; e8 97 fd ; 0xf70c4 timepci.c:299 + movzx dx, byte [bp+00fh] ; 0f b6 56 0f ; 0xf70c7 timepci.c:302 + mov ax, strict word 00001h ; b8 01 00 ; 0xf70cb + call 01787h ; e8 b6 a6 ; 0xf70ce + movzx dx, byte [bp+010h] ; 0f b6 56 10 ; 0xf70d1 timepci.c:303 + mov ax, strict word 00003h ; b8 03 00 ; 0xf70d5 + call 01787h ; e8 ac a6 ; 0xf70d8 + movzx dx, byte [bp+011h] ; 0f b6 56 11 ; 0xf70db timepci.c:304 + mov ax, strict word 00005h ; b8 05 00 ; 0xf70df + call 01787h ; e8 a2 a6 ; 0xf70e2 + mov dx, 000a1h ; ba a1 00 ; 0xf70e5 timepci.c:305 + in AL, DX ; ec ; 0xf70e8 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf70e9 + and AL, strict byte 0feh ; 24 fe ; 0xf70eb + out DX, AL ; ee ; 0xf70ed + mov al, bl ; 88 d8 ; 0xf70ee timepci.c:307 + and AL, strict byte 05fh ; 24 5f ; 0xf70f0 + or AL, strict byte 020h ; 0c 20 ; 0xf70f2 + movzx dx, al ; 0f b6 d0 ; 0xf70f4 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf70f7 + call 01787h ; e8 8a a6 ; 0xf70fa + jmp near 06f84h ; e9 84 fe ; 0xf70fd timepci.c:309 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf7100 timepci.c:322 + call 0176ah ; e8 64 a6 ; 0xf7103 + mov bl, al ; 88 c3 ; 0xf7106 + and AL, strict byte 057h ; 24 57 ; 0xf7108 timepci.c:324 + movzx dx, al ; 0f b6 d0 ; 0xf710a + jmp near 0701eh ; e9 0e ff ; 0xf710d + ; disGetNextSymbol 0xf7110 LB 0x3c8c -> off=0x0 cb=0000000000000034 uValue=00000000000f5b10 'send_to_mouse_ctrl' +send_to_mouse_ctrl: ; 0xf7110 LB 0x34 + push bp ; 55 ; 0xf7110 ps2mouse.c:87 + mov bp, sp ; 89 e5 ; 0xf7111 + push bx ; 53 ; 0xf7113 + push dx ; 52 ; 0xf7114 + mov bl, al ; 88 c3 ; 0xf7115 + mov dx, strict word 00064h ; ba 64 00 ; 0xf7117 ps2mouse.c:91 + in AL, DX ; ec ; 0xf711a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf711b + test AL, strict byte 002h ; a8 02 ; 0xf711d + je short 0712fh ; 74 0e ; 0xf711f + push 0096eh ; 68 6e 09 ; 0xf7121 ps2mouse.c:92 + push 011ceh ; 68 ce 11 ; 0xf7124 + push strict byte 00007h ; 6a 07 ; 0xf7127 + call 01a68h ; e8 3c a9 ; 0xf7129 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf712c + mov AL, strict byte 0d4h ; b0 d4 ; 0xf712f ps2mouse.c:93 + mov dx, strict word 00064h ; ba 64 00 ; 0xf7131 + out DX, AL ; ee ; 0xf7134 + mov al, bl ; 88 d8 ; 0xf7135 ps2mouse.c:94 + mov dx, strict word 00060h ; ba 60 00 ; 0xf7137 + out DX, AL ; ee ; 0xf713a + xor al, bl ; 30 d8 ; 0xf713b ps2mouse.c:96 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf713d + pop dx ; 5a ; 0xf7140 + pop bx ; 5b ; 0xf7141 + pop bp ; 5d ; 0xf7142 + retn ; c3 ; 0xf7143 + ; disGetNextSymbol 0xf7144 LB 0x3c58 -> off=0x0 cb=000000000000005c uValue=00000000000f5b44 'get_mouse_data' +get_mouse_data: ; 0xf7144 LB 0x5c + push bp ; 55 ; 0xf7144 ps2mouse.c:99 + mov bp, sp ; 89 e5 ; 0xf7145 + push bx ; 53 ; 0xf7147 + push cx ; 51 ; 0xf7148 + push ax ; 50 ; 0xf7149 + mov bx, ax ; 89 c3 ; 0xf714a + mov es, dx ; 8e c2 ; 0xf714c + mov cx, 02710h ; b9 10 27 ; 0xf714e ps2mouse.c:101 + mov dx, strict word 00064h ; ba 64 00 ; 0xf7151 ps2mouse.c:104 + in AL, DX ; ec ; 0xf7154 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7155 + and ax, strict word 00021h ; 25 21 00 ; 0xf7157 + cmp ax, strict word 00021h ; 3d 21 00 ; 0xf715a + je short 07186h ; 74 27 ; 0xf715d + test cx, cx ; 85 c9 ; 0xf715f + je short 07186h ; 74 23 ; 0xf7161 + mov dx, strict word 00061h ; ba 61 00 ; 0xf7163 ps2mouse.c:107 + in AL, DX ; ec ; 0xf7166 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7167 + and AL, strict byte 010h ; 24 10 ; 0xf7169 + mov byte [bp-006h], al ; 88 46 fa ; 0xf716b + mov dx, strict word 00061h ; ba 61 00 ; 0xf716e ps2mouse.c:108 + in AL, DX ; ec ; 0xf7171 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7172 + mov dx, ax ; 89 c2 ; 0xf7174 + xor dh, ah ; 30 e6 ; 0xf7176 + and dl, 010h ; 80 e2 10 ; 0xf7178 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf717b + cmp dx, ax ; 39 c2 ; 0xf717f + je short 0716eh ; 74 eb ; 0xf7181 + dec cx ; 49 ; 0xf7183 ps2mouse.c:110 + jmp short 07151h ; eb cb ; 0xf7184 ps2mouse.c:111 + test cx, cx ; 85 c9 ; 0xf7186 ps2mouse.c:113 + jne short 0718eh ; 75 04 ; 0xf7188 + mov AL, strict byte 001h ; b0 01 ; 0xf718a ps2mouse.c:114 + jmp short 07199h ; eb 0b ; 0xf718c + mov dx, strict word 00060h ; ba 60 00 ; 0xf718e ps2mouse.c:116 + in AL, DX ; ec ; 0xf7191 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7192 + mov byte [es:bx], al ; 26 88 07 ; 0xf7194 ps2mouse.c:117 + xor al, al ; 30 c0 ; 0xf7197 ps2mouse.c:118 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7199 ps2mouse.c:119 + pop cx ; 59 ; 0xf719c + pop bx ; 5b ; 0xf719d + pop bp ; 5d ; 0xf719e + retn ; c3 ; 0xf719f + ; disGetNextSymbol 0xf71a0 LB 0x3bfc -> off=0x0 cb=0000000000000032 uValue=00000000000f5ba0 'set_kbd_command_byte' +set_kbd_command_byte: ; 0xf71a0 LB 0x32 + push bp ; 55 ; 0xf71a0 ps2mouse.c:121 + mov bp, sp ; 89 e5 ; 0xf71a1 + push bx ; 53 ; 0xf71a3 + push dx ; 52 ; 0xf71a4 + mov bl, al ; 88 c3 ; 0xf71a5 + mov dx, strict word 00064h ; ba 64 00 ; 0xf71a7 ps2mouse.c:123 + in AL, DX ; ec ; 0xf71aa + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf71ab + test AL, strict byte 002h ; a8 02 ; 0xf71ad + je short 071bfh ; 74 0e ; 0xf71af + push 00978h ; 68 78 09 ; 0xf71b1 ps2mouse.c:124 + push 011ceh ; 68 ce 11 ; 0xf71b4 + push strict byte 00007h ; 6a 07 ; 0xf71b7 + call 01a68h ; e8 ac a8 ; 0xf71b9 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf71bc + mov AL, strict byte 060h ; b0 60 ; 0xf71bf ps2mouse.c:126 + mov dx, strict word 00064h ; ba 64 00 ; 0xf71c1 + out DX, AL ; ee ; 0xf71c4 + mov al, bl ; 88 d8 ; 0xf71c5 ps2mouse.c:127 + mov dx, strict word 00060h ; ba 60 00 ; 0xf71c7 + out DX, AL ; ee ; 0xf71ca + lea sp, [bp-004h] ; 8d 66 fc ; 0xf71cb ps2mouse.c:128 + pop dx ; 5a ; 0xf71ce + pop bx ; 5b ; 0xf71cf + pop bp ; 5d ; 0xf71d0 + retn ; c3 ; 0xf71d1 + ; disGetNextSymbol 0xf71d2 LB 0x3bca -> off=0x0 cb=0000000000000094 uValue=00000000000f5bd2 'int74_function' +int74_function: ; 0xf71d2 LB 0x94 + push bp ; 55 ; 0xf71d2 ps2mouse.c:131 + mov bp, sp ; 89 e5 ; 0xf71d3 + push si ; 56 ; 0xf71d5 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf71d6 ps2mouse.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf71d9 + mov es, ax ; 8e c0 ; 0xf71dc + mov bx, word [es:bx] ; 26 8b 1f ; 0xf71de + mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf71e1 ps2mouse.c:139 + mov dx, strict word 00064h ; ba 64 00 ; 0xf71e6 ps2mouse.c:141 + in AL, DX ; ec ; 0xf71e9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf71ea + and AL, strict byte 021h ; 24 21 ; 0xf71ec ps2mouse.c:142 + cmp AL, strict byte 021h ; 3c 21 ; 0xf71ee + jne short 07260h ; 75 6e ; 0xf71f0 + mov dx, strict word 00060h ; ba 60 00 ; 0xf71f2 ps2mouse.c:145 + in AL, DX ; ec ; 0xf71f5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf71f6 + mov cl, al ; 88 c1 ; 0xf71f8 + mov si, strict word 00026h ; be 26 00 ; 0xf71fa ps2mouse.c:48 + mov es, bx ; 8e c3 ; 0xf71fd + mov al, byte [es:si] ; 26 8a 04 ; 0xf71ff + mov si, strict word 00027h ; be 27 00 ; 0xf7202 ps2mouse.c:48 + mov ah, byte [es:si] ; 26 8a 24 ; 0xf7205 + mov dl, ah ; 88 e2 ; 0xf7208 ps2mouse.c:49 + test ah, 080h ; f6 c4 80 ; 0xf720a ps2mouse.c:151 + je short 07260h ; 74 51 ; 0xf720d + mov dh, dl ; 88 d6 ; 0xf720f ps2mouse.c:155 + and dh, 007h ; 80 e6 07 ; 0xf7211 + mov ah, al ; 88 c4 ; 0xf7214 ps2mouse.c:156 + and ah, 007h ; 80 e4 07 ; 0xf7216 + movzx si, ah ; 0f b6 f4 ; 0xf7219 ps2mouse.c:157 + add si, strict byte 00028h ; 83 c6 28 ; 0xf721c + mov es, bx ; 8e c3 ; 0xf721f ps2mouse.c:53 + mov byte [es:si], cl ; 26 88 0c ; 0xf7221 + cmp ah, dh ; 38 f4 ; 0xf7224 ps2mouse.c:159 + jc short 07256h ; 72 2e ; 0xf7226 + mov si, strict word 00028h ; be 28 00 ; 0xf7228 ps2mouse.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf722b + xor ah, ah ; 30 e4 ; 0xf722e ps2mouse.c:49 + mov word [bp+00ch], ax ; 89 46 0c ; 0xf7230 + mov si, strict word 00029h ; be 29 00 ; 0xf7233 ps2mouse.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf7236 + mov word [bp+00ah], ax ; 89 46 0a ; 0xf7239 ps2mouse.c:49 + mov si, strict word 0002ah ; be 2a 00 ; 0xf723c ps2mouse.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf723f + mov word [bp+008h], ax ; 89 46 08 ; 0xf7242 ps2mouse.c:49 + xor al, al ; 30 c0 ; 0xf7245 ps2mouse.c:164 + mov word [bp+006h], ax ; 89 46 06 ; 0xf7247 + test dl, 080h ; f6 c2 80 ; 0xf724a ps2mouse.c:167 + je short 07258h ; 74 09 ; 0xf724d + mov word [bp+004h], strict word 00001h ; c7 46 04 01 00 ; 0xf724f ps2mouse.c:168 + jmp short 07258h ; eb 02 ; 0xf7254 ps2mouse.c:170 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf7256 ps2mouse.c:171 + mov si, strict word 00026h ; be 26 00 ; 0xf7258 ps2mouse.c:53 + mov es, bx ; 8e c3 ; 0xf725b + mov byte [es:si], al ; 26 88 04 ; 0xf725d + lea sp, [bp-002h] ; 8d 66 fe ; 0xf7260 ps2mouse.c:174 + pop si ; 5e ; 0xf7263 + pop bp ; 5d ; 0xf7264 + retn ; c3 ; 0xf7265 + ; disGetNextSymbol 0xf7266 LB 0x3b36 -> off=0x10 cb=0000000000000370 uValue=00000000000f5c76 'int15_function_mouse' + db 0b9h, 072h, 027h, 073h, 0a2h, 073h, 033h, 074h, 0a1h, 074h, 005h, 073h, 0c9h, 074h, 08eh, 075h +int15_function_mouse: ; 0xf7276 LB 0x370 + push bp ; 55 ; 0xf7276 ps2mouse.c:176 + mov bp, sp ; 89 e5 ; 0xf7277 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf7279 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf727c ps2mouse.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf727f + mov es, ax ; 8e c0 ; 0xf7282 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf7284 + cmp byte [bp+012h], 007h ; 80 7e 12 07 ; 0xf7287 ps2mouse.c:198 + jbe short 07298h ; 76 0b ; 0xf728b + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf728d ps2mouse.c:201 + mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf7291 ps2mouse.c:202 + jmp near 075e2h ; e9 4a 03 ; 0xf7295 ps2mouse.c:203 + mov ax, strict word 00065h ; b8 65 00 ; 0xf7298 ps2mouse.c:207 + call 071a0h ; e8 02 ff ; 0xf729b + and word [bp+018h], strict byte 0fffeh ; 83 66 18 fe ; 0xf729e ps2mouse.c:208 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf72a2 ps2mouse.c:209 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf72a6 ps2mouse.c:211 + cmp AL, strict byte 007h ; 3c 07 ; 0xf72a9 + jnbe near 075c9h ; 0f 87 1a 03 ; 0xf72ab + movzx bx, al ; 0f b6 d8 ; 0xf72af + add bx, bx ; 01 db ; 0xf72b2 + jmp word [cs:bx+07266h] ; 2e ff a7 66 72 ; 0xf72b4 + cmp byte [bp+00dh], 001h ; 80 7e 0d 01 ; 0xf72b9 ps2mouse.c:214 + jnbe near 075d4h ; 0f 87 13 03 ; 0xf72bd + mov bx, strict word 00027h ; bb 27 00 ; 0xf72c1 ps2mouse.c:48 + mov es, dx ; 8e c2 ; 0xf72c4 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf72c6 + test AL, strict byte 080h ; a8 80 ; 0xf72c9 ps2mouse.c:222 + jne short 072d8h ; 75 0b ; 0xf72cb + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf72cd ps2mouse.c:224 + mov byte [bp+013h], 005h ; c6 46 13 05 ; 0xf72d1 ps2mouse.c:225 + jmp near 075dch ; e9 04 03 ; 0xf72d5 ps2mouse.c:226 + cmp byte [bp+00dh], 000h ; 80 7e 0d 00 ; 0xf72d8 ps2mouse.c:228 + db 00fh, 094h, 0c0h + ; sete al ; 0f 94 c0 ; 0xf72dc + add AL, strict byte 0f4h ; 04 f4 ; 0xf72df + xor ah, ah ; 30 e4 ; 0xf72e1 ps2mouse.c:236 + call 07110h ; e8 2a fe ; 0xf72e3 + test al, al ; 84 c0 ; 0xf72e6 ps2mouse.c:237 + jne near 0756ah ; 0f 85 7e 02 ; 0xf72e8 + mov dx, ss ; 8c d2 ; 0xf72ec ps2mouse.c:238 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf72ee + call 07144h ; e8 50 fe ; 0xf72f1 + test al, al ; 84 c0 ; 0xf72f4 ps2mouse.c:239 + je near 075dch ; 0f 84 e2 02 ; 0xf72f6 + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf72fa + jne near 0756ah ; 0f 85 68 02 ; 0xf72fe + jmp near 075dch ; e9 d7 02 ; 0xf7302 ps2mouse.c:241 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7305 ps2mouse.c:252 + cmp AL, strict byte 001h ; 3c 01 ; 0xf7308 + jc short 07310h ; 72 04 ; 0xf730a + cmp AL, strict byte 008h ; 3c 08 ; 0xf730c + jbe short 07313h ; 76 03 ; 0xf730e + jmp near 07496h ; e9 83 01 ; 0xf7310 + mov bx, strict word 00027h ; bb 27 00 ; 0xf7313 ps2mouse.c:48 + mov es, dx ; 8e c2 ; 0xf7316 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf7318 + mov ah, byte [bp+00dh] ; 8a 66 0d ; 0xf731b ps2mouse.c:258 + db 0feh, 0cch + ; dec ah ; fe cc ; 0xf731e + and AL, strict byte 0f8h ; 24 f8 ; 0xf7320 + or al, ah ; 08 e0 ; 0xf7322 + mov byte [es:bx], al ; 26 88 07 ; 0xf7324 ps2mouse.c:53 + mov bx, strict word 00026h ; bb 26 00 ; 0xf7327 ps2mouse.c:48 + mov es, dx ; 8e c2 ; 0xf732a + mov al, byte [es:bx] ; 26 8a 07 ; 0xf732c + and AL, strict byte 0f8h ; 24 f8 ; 0xf732f ps2mouse.c:266 + mov byte [es:bx], al ; 26 88 07 ; 0xf7331 ps2mouse.c:53 + mov ax, 000ffh ; b8 ff 00 ; 0xf7334 ps2mouse.c:268 + call 07110h ; e8 d6 fd ; 0xf7337 + test al, al ; 84 c0 ; 0xf733a ps2mouse.c:269 + jne near 0756ah ; 0f 85 2a 02 ; 0xf733c + mov dx, ss ; 8c d2 ; 0xf7340 ps2mouse.c:270 + lea ax, [bp-004h] ; 8d 46 fc ; 0xf7342 + call 07144h ; e8 fc fd ; 0xf7345 + mov dl, al ; 88 c2 ; 0xf7348 + cmp byte [bp-004h], 0feh ; 80 7e fc fe ; 0xf734a ps2mouse.c:272 + jne short 0735bh ; 75 0b ; 0xf734e + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7350 ps2mouse.c:273 + mov byte [bp+013h], 004h ; c6 46 13 04 ; 0xf7354 ps2mouse.c:274 + jmp near 075dch ; e9 81 02 ; 0xf7358 ps2mouse.c:275 + cmp byte [bp-004h], 0fah ; 80 7e fc fa ; 0xf735b ps2mouse.c:277 + je short 07371h ; 74 10 ; 0xf735f + movzx ax, byte [bp-004h] ; 0f b6 46 fc ; 0xf7361 ps2mouse.c:278 + push ax ; 50 ; 0xf7365 + push 00983h ; 68 83 09 ; 0xf7366 + push strict byte 00007h ; 6a 07 ; 0xf7369 + call 01a68h ; e8 fa a6 ; 0xf736b + add sp, strict byte 00006h ; 83 c4 06 ; 0xf736e + test dl, dl ; 84 d2 ; 0xf7371 ps2mouse.c:279 + jne near 0756ah ; 0f 85 f3 01 ; 0xf7373 + mov dx, ss ; 8c d2 ; 0xf7377 ps2mouse.c:280 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7379 + call 07144h ; e8 c5 fd ; 0xf737c + test al, al ; 84 c0 ; 0xf737f ps2mouse.c:281 + jne near 0756ah ; 0f 85 e5 01 ; 0xf7381 + mov dx, ss ; 8c d2 ; 0xf7385 ps2mouse.c:282 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf7387 + call 07144h ; e8 b7 fd ; 0xf738a + test al, al ; 84 c0 ; 0xf738d ps2mouse.c:283 + jne near 0756ah ; 0f 85 d7 01 ; 0xf738f + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7393 ps2mouse.c:285 + mov byte [bp+00ch], al ; 88 46 0c ; 0xf7396 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf7399 ps2mouse.c:286 + mov byte [bp+00dh], al ; 88 46 0d ; 0xf739c + jmp near 075dch ; e9 3a 02 ; 0xf739f ps2mouse.c:287 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf73a2 ps2mouse.c:300 + cmp AL, strict byte 003h ; 3c 03 ; 0xf73a5 + jc short 073b9h ; 72 10 ; 0xf73a7 + jbe short 073d7h ; 76 2c ; 0xf73a9 + cmp AL, strict byte 006h ; 3c 06 ; 0xf73ab + je short 073e9h ; 74 3a ; 0xf73ad + cmp AL, strict byte 005h ; 3c 05 ; 0xf73af + je short 073e3h ; 74 30 ; 0xf73b1 + cmp AL, strict byte 004h ; 3c 04 ; 0xf73b3 + je short 073ddh ; 74 26 ; 0xf73b5 + jmp short 073efh ; eb 36 ; 0xf73b7 + cmp AL, strict byte 002h ; 3c 02 ; 0xf73b9 + je short 073d1h ; 74 14 ; 0xf73bb + cmp AL, strict byte 001h ; 3c 01 ; 0xf73bd + je short 073cbh ; 74 0a ; 0xf73bf + test al, al ; 84 c0 ; 0xf73c1 + jne short 073efh ; 75 2a ; 0xf73c3 + mov byte [bp-006h], 00ah ; c6 46 fa 0a ; 0xf73c5 ps2mouse.c:301 + jmp short 073f3h ; eb 28 ; 0xf73c9 + mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf73cb ps2mouse.c:302 + jmp short 073f3h ; eb 22 ; 0xf73cf + mov byte [bp-006h], 028h ; c6 46 fa 28 ; 0xf73d1 ps2mouse.c:303 + jmp short 073f3h ; eb 1c ; 0xf73d5 + mov byte [bp-006h], 03ch ; c6 46 fa 3c ; 0xf73d7 ps2mouse.c:304 + jmp short 073f3h ; eb 16 ; 0xf73db + mov byte [bp-006h], 050h ; c6 46 fa 50 ; 0xf73dd ps2mouse.c:305 + jmp short 073f3h ; eb 10 ; 0xf73e1 + mov byte [bp-006h], 064h ; c6 46 fa 64 ; 0xf73e3 ps2mouse.c:306 + jmp short 073f3h ; eb 0a ; 0xf73e7 + mov byte [bp-006h], 0c8h ; c6 46 fa c8 ; 0xf73e9 ps2mouse.c:307 + jmp short 073f3h ; eb 04 ; 0xf73ed + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf73ef ps2mouse.c:308 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf73f3 ps2mouse.c:310 + jbe short 07428h ; 76 2f ; 0xf73f7 + mov ax, 000f3h ; b8 f3 00 ; 0xf73f9 ps2mouse.c:311 + call 07110h ; e8 11 fd ; 0xf73fc + test al, al ; 84 c0 ; 0xf73ff ps2mouse.c:312 + jne short 0741dh ; 75 1a ; 0xf7401 + mov dx, ss ; 8c d2 ; 0xf7403 ps2mouse.c:313 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf7405 + call 07144h ; e8 39 fd ; 0xf7408 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf740b ps2mouse.c:314 + call 07110h ; e8 fe fc ; 0xf740f + mov dx, ss ; 8c d2 ; 0xf7412 ps2mouse.c:315 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf7414 + call 07144h ; e8 2a fd ; 0xf7417 + jmp near 075dch ; e9 bf 01 ; 0xf741a ps2mouse.c:317 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf741d ps2mouse.c:319 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7421 ps2mouse.c:320 + jmp near 075dch ; e9 b4 01 ; 0xf7425 ps2mouse.c:322 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7428 ps2mouse.c:324 + mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf742c ps2mouse.c:325 + jmp near 075dch ; e9 a9 01 ; 0xf7430 ps2mouse.c:327 + cmp byte [bp+00dh], 004h ; 80 7e 0d 04 ; 0xf7433 ps2mouse.c:336 + jnc short 07496h ; 73 5d ; 0xf7437 + mov ax, 000e8h ; b8 e8 00 ; 0xf7439 ps2mouse.c:337 + call 07110h ; e8 d1 fc ; 0xf743c + test al, al ; 84 c0 ; 0xf743f ps2mouse.c:338 + jne short 0748bh ; 75 48 ; 0xf7441 + mov dx, ss ; 8c d2 ; 0xf7443 ps2mouse.c:339 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7445 + call 07144h ; e8 f9 fc ; 0xf7448 + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf744b ps2mouse.c:340 + je short 07461h ; 74 10 ; 0xf744f + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7451 ps2mouse.c:341 + push ax ; 50 ; 0xf7455 + push 009aeh ; 68 ae 09 ; 0xf7456 + push strict byte 00007h ; 6a 07 ; 0xf7459 + call 01a68h ; e8 0a a6 ; 0xf745b + add sp, strict byte 00006h ; 83 c4 06 ; 0xf745e + movzx ax, byte [bp+00dh] ; 0f b6 46 0d ; 0xf7461 ps2mouse.c:342 + call 07110h ; e8 a8 fc ; 0xf7465 + mov dx, ss ; 8c d2 ; 0xf7468 ps2mouse.c:343 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf746a + call 07144h ; e8 d4 fc ; 0xf746d + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7470 ps2mouse.c:344 + je near 075dch ; 0f 84 64 01 ; 0xf7474 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7478 ps2mouse.c:345 + push ax ; 50 ; 0xf747c + push 009aeh ; 68 ae 09 ; 0xf747d + push strict byte 00007h ; 6a 07 ; 0xf7480 + call 01a68h ; e8 e3 a5 ; 0xf7482 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7485 + jmp near 075dch ; e9 51 01 ; 0xf7488 ps2mouse.c:347 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf748b ps2mouse.c:349 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf748f ps2mouse.c:350 + jmp near 075dch ; e9 46 01 ; 0xf7493 ps2mouse.c:352 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7496 ps2mouse.c:354 + mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf749a ps2mouse.c:355 + jmp near 075dch ; e9 3b 01 ; 0xf749e ps2mouse.c:357 + mov ax, 000f2h ; b8 f2 00 ; 0xf74a1 ps2mouse.c:361 + call 07110h ; e8 69 fc ; 0xf74a4 + test al, al ; 84 c0 ; 0xf74a7 ps2mouse.c:362 + jne short 074beh ; 75 13 ; 0xf74a9 + mov dx, ss ; 8c d2 ; 0xf74ab ps2mouse.c:363 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf74ad + call 07144h ; e8 91 fc ; 0xf74b0 + mov dx, ss ; 8c d2 ; 0xf74b3 ps2mouse.c:364 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf74b5 + call 07144h ; e8 89 fc ; 0xf74b8 + jmp near 07399h ; e9 db fe ; 0xf74bb + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf74be ps2mouse.c:365 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf74c2 ps2mouse.c:370 + jmp near 075dch ; e9 13 01 ; 0xf74c6 ps2mouse.c:372 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf74c9 ps2mouse.c:376 + test al, al ; 84 c0 ; 0xf74cc + jbe short 074d7h ; 76 07 ; 0xf74ce + cmp AL, strict byte 002h ; 3c 02 ; 0xf74d0 + jbe short 07540h ; 76 6c ; 0xf74d2 + jmp near 07574h ; e9 9d 00 ; 0xf74d4 + mov ax, 000e9h ; b8 e9 00 ; 0xf74d7 ps2mouse.c:378 + call 07110h ; e8 33 fc ; 0xf74da + test al, al ; 84 c0 ; 0xf74dd ps2mouse.c:379 + jne near 0756ah ; 0f 85 87 00 ; 0xf74df + mov dx, ss ; 8c d2 ; 0xf74e3 ps2mouse.c:380 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf74e5 + call 07144h ; e8 59 fc ; 0xf74e8 + mov dl, al ; 88 c2 ; 0xf74eb + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf74ed ps2mouse.c:381 + je short 07503h ; 74 10 ; 0xf74f1 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf74f3 ps2mouse.c:382 + push ax ; 50 ; 0xf74f7 + push 009aeh ; 68 ae 09 ; 0xf74f8 + push strict byte 00007h ; 6a 07 ; 0xf74fb + call 01a68h ; e8 68 a5 ; 0xf74fd + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7500 + test dl, dl ; 84 d2 ; 0xf7503 ps2mouse.c:383 + jne short 0756ah ; 75 63 ; 0xf7505 + mov dx, ss ; 8c d2 ; 0xf7507 ps2mouse.c:384 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7509 + call 07144h ; e8 35 fc ; 0xf750c + test al, al ; 84 c0 ; 0xf750f ps2mouse.c:385 + jne short 0756ah ; 75 57 ; 0xf7511 + mov dx, ss ; 8c d2 ; 0xf7513 ps2mouse.c:386 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf7515 + call 07144h ; e8 29 fc ; 0xf7518 + test al, al ; 84 c0 ; 0xf751b ps2mouse.c:387 + jne short 0756ah ; 75 4b ; 0xf751d + mov dx, ss ; 8c d2 ; 0xf751f ps2mouse.c:388 + lea ax, [bp-004h] ; 8d 46 fc ; 0xf7521 + call 07144h ; e8 1d fc ; 0xf7524 + test al, al ; 84 c0 ; 0xf7527 ps2mouse.c:389 + jne short 0756ah ; 75 3f ; 0xf7529 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf752b ps2mouse.c:390 + mov byte [bp+00ch], al ; 88 46 0c ; 0xf752e + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf7531 ps2mouse.c:391 + mov byte [bp+010h], al ; 88 46 10 ; 0xf7534 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf7537 ps2mouse.c:392 + mov byte [bp+00eh], al ; 88 46 0e ; 0xf753a + jmp near 075dch ; e9 9c 00 ; 0xf753d ps2mouse.c:394 + cmp AL, strict byte 001h ; 3c 01 ; 0xf7540 ps2mouse.c:408 + jne short 07549h ; 75 05 ; 0xf7542 + mov ax, 000e6h ; b8 e6 00 ; 0xf7544 ps2mouse.c:409 + jmp short 0754ch ; eb 03 ; 0xf7547 ps2mouse.c:410 + mov ax, 000e7h ; b8 e7 00 ; 0xf7549 ps2mouse.c:411 + call 07110h ; e8 c1 fb ; 0xf754c + mov dl, al ; 88 c2 ; 0xf754f + test dl, dl ; 84 d2 ; 0xf7551 ps2mouse.c:413 + jne short 07564h ; 75 0f ; 0xf7553 + mov dx, ss ; 8c d2 ; 0xf7555 ps2mouse.c:414 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7557 + call 07144h ; e8 e7 fb ; 0xf755a + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf755d ps2mouse.c:415 + db 00fh, 095h, 0c2h + ; setne dl ; 0f 95 c2 ; 0xf7561 + test dl, dl ; 84 d2 ; 0xf7564 ps2mouse.c:417 + je near 075dch ; 0f 84 72 00 ; 0xf7566 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf756a ps2mouse.c:419 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf756e ps2mouse.c:420 + jmp short 075dch ; eb 68 ; 0xf7572 ps2mouse.c:422 + movzx ax, byte [bp+00dh] ; 0f b6 46 0d ; 0xf7574 ps2mouse.c:425 + push ax ; 50 ; 0xf7578 + push 009dah ; 68 da 09 ; 0xf7579 + push strict byte 00007h ; 6a 07 ; 0xf757c + call 01a68h ; e8 e7 a4 ; 0xf757e + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7581 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7584 ps2mouse.c:427 + mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf7588 ps2mouse.c:428 + jmp short 075dch ; eb 4e ; 0xf758c ps2mouse.c:430 + mov cx, word [bp+00ch] ; 8b 4e 0c ; 0xf758e ps2mouse.c:435 + mov bx, strict word 00022h ; bb 22 00 ; 0xf7591 ps2mouse.c:63 + mov es, dx ; 8e c2 ; 0xf7594 + mov word [es:bx], cx ; 26 89 0f ; 0xf7596 + mov bx, strict word 00024h ; bb 24 00 ; 0xf7599 ps2mouse.c:63 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf759c + mov word [es:bx], ax ; 26 89 07 ; 0xf759f + mov bx, strict word 00027h ; bb 27 00 ; 0xf75a2 ps2mouse.c:48 + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf75a5 + mov al, bl ; 88 d8 ; 0xf75a8 ps2mouse.c:49 + test cx, cx ; 85 c9 ; 0xf75aa ps2mouse.c:439 + jne short 075bdh ; 75 0f ; 0xf75ac + cmp word [bp+014h], strict byte 00000h ; 83 7e 14 00 ; 0xf75ae + jne short 075bdh ; 75 09 ; 0xf75b2 + test bl, 080h ; f6 c3 80 ; 0xf75b4 ps2mouse.c:441 + je short 075bfh ; 74 06 ; 0xf75b7 + and AL, strict byte 07fh ; 24 7f ; 0xf75b9 ps2mouse.c:442 + jmp short 075bfh ; eb 02 ; 0xf75bb ps2mouse.c:445 + or AL, strict byte 080h ; 0c 80 ; 0xf75bd ps2mouse.c:447 + mov bx, strict word 00027h ; bb 27 00 ; 0xf75bf ps2mouse.c:53 + mov es, dx ; 8e c2 ; 0xf75c2 + mov byte [es:bx], al ; 26 88 07 ; 0xf75c4 + jmp short 075dch ; eb 13 ; 0xf75c7 ps2mouse.c:450 + push 009f4h ; 68 f4 09 ; 0xf75c9 ps2mouse.c:453 + push strict byte 00007h ; 6a 07 ; 0xf75cc + call 01a68h ; e8 97 a4 ; 0xf75ce + add sp, strict byte 00004h ; 83 c4 04 ; 0xf75d1 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf75d4 ps2mouse.c:455 + mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf75d8 ps2mouse.c:456 + mov ax, strict word 00047h ; b8 47 00 ; 0xf75dc ps2mouse.c:460 + call 071a0h ; e8 be fb ; 0xf75df + mov sp, bp ; 89 ec ; 0xf75e2 ps2mouse.c:461 + pop bp ; 5d ; 0xf75e4 + retn ; c3 ; 0xf75e5 + ; disGetNextSymbol 0xf75e6 LB 0x37b6 -> off=0x0 cb=00000000000000b2 uValue=00000000000f5fe6 'int17_function' +int17_function: ; 0xf75e6 LB 0xb2 + push bp ; 55 ; 0xf75e6 parallel.c:70 + mov bp, sp ; 89 e5 ; 0xf75e7 + push si ; 56 ; 0xf75e9 + push di ; 57 ; 0xf75ea + push ax ; 50 ; 0xf75eb + sti ; fb ; 0xf75ec parallel.c:75 + mov bx, word [bp+00eh] ; 8b 5e 0e ; 0xf75ed parallel.c:77 + add bx, bx ; 01 db ; 0xf75f0 + add bx, strict byte 00008h ; 83 c3 08 ; 0xf75f2 + mov ax, strict word 00040h ; b8 40 00 ; 0xf75f5 parallel.c:58 + mov es, ax ; 8e c0 ; 0xf75f8 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf75fa + mov si, bx ; 89 de ; 0xf75fd parallel.c:59 + cmp byte [bp+013h], 003h ; 80 7e 13 03 ; 0xf75ff parallel.c:78 + jnc near 0768dh ; 0f 83 86 00 ; 0xf7603 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf7607 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf760a + jnc near 0768dh ; 0f 83 7c 00 ; 0xf760d + test bx, bx ; 85 db ; 0xf7611 + jbe near 0768dh ; 0f 86 76 00 ; 0xf7613 + mov di, ax ; 89 c7 ; 0xf7617 parallel.c:79 + add di, strict byte 00078h ; 83 c7 78 ; 0xf7619 + mov al, byte [es:di] ; 26 8a 05 ; 0xf761c parallel.c:48 + movzx cx, al ; 0f b6 c8 ; 0xf761f parallel.c:49 + sal cx, 008h ; c1 e1 08 ; 0xf7622 + cmp byte [bp+013h], 000h ; 80 7e 13 00 ; 0xf7625 parallel.c:80 + jne short 07658h ; 75 2d ; 0xf7629 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf762b parallel.c:81 + mov dx, bx ; 89 da ; 0xf762e + out DX, AL ; ee ; 0xf7630 + lea dx, [bx+002h] ; 8d 57 02 ; 0xf7631 parallel.c:82 + in AL, DX ; ec ; 0xf7634 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7635 + mov word [bp-006h], ax ; 89 46 fa ; 0xf7637 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf763a parallel.c:83 + or AL, strict byte 001h ; 0c 01 ; 0xf763d + out DX, AL ; ee ; 0xf763f + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7640 parallel.c:84 + and AL, strict byte 0feh ; 24 fe ; 0xf7644 + out DX, AL ; ee ; 0xf7646 + lea dx, [si+001h] ; 8d 54 01 ; 0xf7647 parallel.c:85 + in AL, DX ; ec ; 0xf764a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf764b + test AL, strict byte 040h ; a8 40 ; 0xf764d + je short 07658h ; 74 07 ; 0xf764f + test cx, cx ; 85 c9 ; 0xf7651 + je short 07658h ; 74 03 ; 0xf7653 + dec cx ; 49 ; 0xf7655 parallel.c:86 + jmp short 07647h ; eb ef ; 0xf7656 parallel.c:87 + cmp byte [bp+013h], 001h ; 80 7e 13 01 ; 0xf7658 parallel.c:89 + jne short 07674h ; 75 16 ; 0xf765c + lea dx, [si+002h] ; 8d 54 02 ; 0xf765e parallel.c:90 + in AL, DX ; ec ; 0xf7661 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7662 + mov word [bp-006h], ax ; 89 46 fa ; 0xf7664 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7667 parallel.c:91 + and AL, strict byte 0fbh ; 24 fb ; 0xf766b + out DX, AL ; ee ; 0xf766d + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf766e parallel.c:92 + or AL, strict byte 004h ; 0c 04 ; 0xf7671 + out DX, AL ; ee ; 0xf7673 + lea dx, [si+001h] ; 8d 54 01 ; 0xf7674 parallel.c:94 + in AL, DX ; ec ; 0xf7677 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7678 + xor AL, strict byte 048h ; 34 48 ; 0xf767a parallel.c:95 + mov byte [bp+013h], al ; 88 46 13 ; 0xf767c + test cx, cx ; 85 c9 ; 0xf767f parallel.c:96 + jne short 07687h ; 75 04 ; 0xf7681 + or byte [bp+013h], 001h ; 80 4e 13 01 ; 0xf7683 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf7687 parallel.c:97 + jmp short 07691h ; eb 04 ; 0xf768b parallel.c:98 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf768d parallel.c:99 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7691 parallel.c:101 + pop di ; 5f ; 0xf7694 + pop si ; 5e ; 0xf7695 + pop bp ; 5d ; 0xf7696 + retn ; c3 ; 0xf7697 + ; disGetNextSymbol 0xf7698 LB 0x3704 -> off=0x0 cb=00000000000000b8 uValue=00000000000f6098 '_wait_' +_wait_: ; 0xf7698 LB 0xb8 + push bp ; 55 ; 0xf7698 logo.c:181 + mov bp, sp ; 89 e5 ; 0xf7699 + push bx ; 53 ; 0xf769b + push cx ; 51 ; 0xf769c + push si ; 56 ; 0xf769d + push di ; 57 ; 0xf769e + sub sp, strict byte 0000ah ; 83 ec 0a ; 0xf769f + mov di, ax ; 89 c7 ; 0xf76a2 + mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf76a4 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf76a7 logo.c:186 + pushfw ; 9c ; 0xf76ab logo.c:192 + pop ax ; 58 ; 0xf76ac + mov word [bp-010h], ax ; 89 46 f0 ; 0xf76ad + sti ; fb ; 0xf76b0 logo.c:193 + xor dx, dx ; 31 d2 ; 0xf76b1 logo.c:199 + mov bx, 0046ch ; bb 6c 04 ; 0xf76b3 logo.c:68 + mov es, dx ; 8e c2 ; 0xf76b6 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf76b8 + mov cx, word [es:bx+002h] ; 26 8b 4f 02 ; 0xf76bb + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf76bf logo.c:69 + hlt ; f4 ; 0xf76c2 logo.c:203 + mov bx, 0046ch ; bb 6c 04 ; 0xf76c3 logo.c:68 + xor ax, ax ; 31 c0 ; 0xf76c6 + mov es, ax ; 8e c0 ; 0xf76c8 + mov si, word [es:bx] ; 26 8b 37 ; 0xf76ca + mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf76cd + mov bx, si ; 89 f3 ; 0xf76d1 logo.c:69 + mov word [bp-012h], ax ; 89 46 ee ; 0xf76d3 + cmp ax, cx ; 39 c8 ; 0xf76d6 logo.c:205 + jnbe short 076e1h ; 77 07 ; 0xf76d8 + jne short 076e8h ; 75 0c ; 0xf76da + cmp si, word [bp-00eh] ; 3b 76 f2 ; 0xf76dc + jbe short 076e8h ; 76 07 ; 0xf76df + sub si, word [bp-00eh] ; 2b 76 f2 ; 0xf76e1 logo.c:207 + sbb ax, cx ; 19 c8 ; 0xf76e4 + jmp short 076f3h ; eb 0b ; 0xf76e6 logo.c:210 + cmp ax, cx ; 39 c8 ; 0xf76e8 + jc short 076f3h ; 72 07 ; 0xf76ea + jne short 076f7h ; 75 09 ; 0xf76ec + cmp si, word [bp-00eh] ; 3b 76 f2 ; 0xf76ee + jnc short 076f7h ; 73 04 ; 0xf76f1 + sub di, si ; 29 f7 ; 0xf76f3 logo.c:211 + sbb dx, ax ; 19 c2 ; 0xf76f5 + mov word [bp-00eh], bx ; 89 5e f2 ; 0xf76f7 logo.c:212 + mov cx, word [bp-012h] ; 8b 4e ee ; 0xf76fa + mov ax, 00100h ; b8 00 01 ; 0xf76fd logo.c:214 + int 016h ; cd 16 ; 0xf7700 + je near 0770bh ; 0f 84 05 00 ; 0xf7702 + mov AL, strict byte 001h ; b0 01 ; 0xf7706 + jmp near 0770dh ; e9 02 00 ; 0xf7708 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xf770b + test al, al ; 84 c0 ; 0xf770d + je short 07735h ; 74 24 ; 0xf770f + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf7711 logo.c:216 + int 016h ; cd 16 ; 0xf7713 + xchg ah, al ; 86 c4 ; 0xf7715 + mov bl, al ; 88 c3 ; 0xf7717 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf7719 + movzx ax, bl ; 0f b6 c3 ; 0xf771c logo.c:217 + push ax ; 50 ; 0xf771f + push 00a16h ; 68 16 0a ; 0xf7720 + push strict byte 00004h ; 6a 04 ; 0xf7723 + call 01a68h ; e8 40 a3 ; 0xf7725 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7728 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf772b logo.c:218 + je short 07735h ; 74 04 ; 0xf772f + mov al, bl ; 88 d8 ; 0xf7731 logo.c:219 + jmp short 07747h ; eb 12 ; 0xf7733 + test dx, dx ; 85 d2 ; 0xf7735 logo.c:221 + jnle short 076c2h ; 7f 89 ; 0xf7737 + jne short 0773fh ; 75 04 ; 0xf7739 + test di, di ; 85 ff ; 0xf773b + jnbe short 076c2h ; 77 83 ; 0xf773d + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf773f logo.c:222 + push ax ; 50 ; 0xf7742 + popfw ; 9d ; 0xf7743 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7744 logo.c:223 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf7747 logo.c:224 + pop di ; 5f ; 0xf774a + pop si ; 5e ; 0xf774b + pop cx ; 59 ; 0xf774c + pop bx ; 5b ; 0xf774d + pop bp ; 5d ; 0xf774e + retn ; c3 ; 0xf774f + ; disGetNextSymbol 0xf7750 LB 0x364c -> off=0x0 cb=0000000000000016 uValue=00000000000f6150 'read_logo_byte' +read_logo_byte: ; 0xf7750 LB 0x16 + push bp ; 55 ; 0xf7750 logo.c:226 + mov bp, sp ; 89 e5 ; 0xf7751 + push dx ; 52 ; 0xf7753 + xor ah, ah ; 30 e4 ; 0xf7754 logo.c:228 + or ah, 001h ; 80 cc 01 ; 0xf7756 + mov dx, 003b8h ; ba b8 03 ; 0xf7759 + out DX, ax ; ef ; 0xf775c + in AL, DX ; ec ; 0xf775d logo.c:229 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf775e + lea sp, [bp-002h] ; 8d 66 fe ; 0xf7760 logo.c:230 + pop dx ; 5a ; 0xf7763 + pop bp ; 5d ; 0xf7764 + retn ; c3 ; 0xf7765 + ; disGetNextSymbol 0xf7766 LB 0x3636 -> off=0x0 cb=0000000000000014 uValue=00000000000f6166 'read_logo_word' +read_logo_word: ; 0xf7766 LB 0x14 + push bp ; 55 ; 0xf7766 logo.c:232 + mov bp, sp ; 89 e5 ; 0xf7767 + push dx ; 52 ; 0xf7769 + xor ah, ah ; 30 e4 ; 0xf776a logo.c:234 + or ah, 001h ; 80 cc 01 ; 0xf776c + mov dx, 003b8h ; ba b8 03 ; 0xf776f + out DX, ax ; ef ; 0xf7772 + in ax, DX ; ed ; 0xf7773 logo.c:235 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf7774 logo.c:236 + pop dx ; 5a ; 0xf7777 + pop bp ; 5d ; 0xf7778 + retn ; c3 ; 0xf7779 + ; disGetNextSymbol 0xf777a LB 0x3622 -> off=0x0 cb=0000000000000133 uValue=00000000000f617a 'print_detected_harddisks' +print_detected_harddisks: ; 0xf777a LB 0x133 + push bp ; 55 ; 0xf777a logo.c:255 + mov bp, sp ; 89 e5 ; 0xf777b + push bx ; 53 ; 0xf777d + push cx ; 51 ; 0xf777e + push dx ; 52 ; 0xf777f + push si ; 56 ; 0xf7780 + push di ; 57 ; 0xf7781 + push ax ; 50 ; 0xf7782 + push ax ; 50 ; 0xf7783 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7784 logo.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7787 + mov es, ax ; 8e c0 ; 0xf778a + mov si, word [es:bx] ; 26 8b 37 ; 0xf778c + mov di, si ; 89 f7 ; 0xf778f logo.c:59 + xor ch, ch ; 30 ed ; 0xf7791 logo.c:260 + xor cl, cl ; 30 c9 ; 0xf7793 logo.c:261 + mov byte [bp-00eh], ch ; 88 6e f2 ; 0xf7795 logo.c:262 + mov bx, 002ach ; bb ac 02 ; 0xf7798 logo.c:48 + mov es, si ; 8e c6 ; 0xf779b + mov al, byte [es:bx] ; 26 8a 07 ; 0xf779d + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf77a0 logo.c:49 + xor bl, bl ; 30 db ; 0xf77a3 logo.c:267 + cmp bl, byte [bp-00ch] ; 3a 5e f4 ; 0xf77a5 + jnc near 0787fh ; 0f 83 d3 00 ; 0xf77a8 + movzx si, bl ; 0f b6 f3 ; 0xf77ac logo.c:269 + add si, 002adh ; 81 c6 ad 02 ; 0xf77af + mov es, di ; 8e c7 ; 0xf77b3 logo.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf77b5 + mov bh, al ; 88 c7 ; 0xf77b8 logo.c:49 + cmp AL, strict byte 00ch ; 3c 0c ; 0xf77ba logo.c:272 + jc short 077e2h ; 72 24 ; 0xf77bc + test cl, cl ; 84 c9 ; 0xf77be logo.c:274 + jne short 077cfh ; 75 0d ; 0xf77c0 + push 00a27h ; 68 27 0a ; 0xf77c2 logo.c:276 + push strict byte 00002h ; 6a 02 ; 0xf77c5 + call 01a68h ; e8 9e a2 ; 0xf77c7 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf77ca + mov CL, strict byte 001h ; b1 01 ; 0xf77cd logo.c:277 + movzx ax, bl ; 0f b6 c3 ; 0xf77cf logo.c:280 + inc ax ; 40 ; 0xf77d2 + push ax ; 50 ; 0xf77d3 + push 00a3ch ; 68 3c 0a ; 0xf77d4 + push strict byte 00002h ; 6a 02 ; 0xf77d7 + call 01a68h ; e8 8c a2 ; 0xf77d9 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf77dc + jmp near 0787ah ; e9 98 00 ; 0xf77df logo.c:283 + cmp AL, strict byte 008h ; 3c 08 ; 0xf77e2 logo.c:286 + jc short 077fdh ; 72 17 ; 0xf77e4 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf77e6 logo.c:288 + jne short 077fbh ; 75 0f ; 0xf77ea + push 00a4fh ; 68 4f 0a ; 0xf77ec logo.c:290 + push strict byte 00002h ; 6a 02 ; 0xf77ef + call 01a68h ; e8 74 a2 ; 0xf77f1 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf77f4 + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf77f7 logo.c:291 + jmp short 077cfh ; eb d2 ; 0xf77fb logo.c:292 + cmp AL, strict byte 004h ; 3c 04 ; 0xf77fd logo.c:301 + jnc short 07814h ; 73 13 ; 0xf77ff + test ch, ch ; 84 ed ; 0xf7801 + jne short 07814h ; 75 0f ; 0xf7803 + push 00a64h ; 68 64 0a ; 0xf7805 logo.c:303 + push strict byte 00002h ; 6a 02 ; 0xf7808 + call 01a68h ; e8 5b a2 ; 0xf780a + add sp, strict byte 00004h ; 83 c4 04 ; 0xf780d + mov CH, strict byte 001h ; b5 01 ; 0xf7810 logo.c:304 + jmp short 0782ah ; eb 16 ; 0xf7812 logo.c:306 + cmp bh, 004h ; 80 ff 04 ; 0xf7814 + jc short 0782ah ; 72 11 ; 0xf7817 + test cl, cl ; 84 c9 ; 0xf7819 + jne short 0782ah ; 75 0d ; 0xf781b + push 00a76h ; 68 76 0a ; 0xf781d logo.c:308 + push strict byte 00002h ; 6a 02 ; 0xf7820 + call 01a68h ; e8 43 a2 ; 0xf7822 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7825 + mov CL, strict byte 001h ; b1 01 ; 0xf7828 logo.c:309 + movzx ax, bl ; 0f b6 c3 ; 0xf782a logo.c:312 + inc ax ; 40 ; 0xf782d + push ax ; 50 ; 0xf782e + push 00a8ah ; 68 8a 0a ; 0xf782f + push strict byte 00002h ; 6a 02 ; 0xf7832 + call 01a68h ; e8 31 a2 ; 0xf7834 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7837 + cmp bh, 004h ; 80 ff 04 ; 0xf783a logo.c:319 + jc short 07842h ; 72 03 ; 0xf783d + sub bh, 004h ; 80 ef 04 ; 0xf783f logo.c:320 + movzx ax, bh ; 0f b6 c7 ; 0xf7842 logo.c:322 + cwd ; 99 ; 0xf7845 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf7846 + sar ax, 1 ; d1 f8 ; 0xf7848 + test ax, ax ; 85 c0 ; 0xf784a + je short 07853h ; 74 05 ; 0xf784c + push 00a94h ; 68 94 0a ; 0xf784e logo.c:323 + jmp short 07856h ; eb 03 ; 0xf7851 logo.c:324 + push 00a9fh ; 68 9f 0a ; 0xf7853 logo.c:325 + push strict byte 00002h ; 6a 02 ; 0xf7856 + call 01a68h ; e8 0d a2 ; 0xf7858 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf785b + movzx ax, bh ; 0f b6 c7 ; 0xf785e logo.c:327 + cwd ; 99 ; 0xf7861 + mov si, strict word 00002h ; be 02 00 ; 0xf7862 + idiv si ; f7 fe ; 0xf7865 + test dx, dx ; 85 d2 ; 0xf7867 + je short 07870h ; 74 05 ; 0xf7869 + push 00aa8h ; 68 a8 0a ; 0xf786b logo.c:328 + jmp short 07873h ; eb 03 ; 0xf786e logo.c:329 + push 00aaeh ; 68 ae 0a ; 0xf7870 logo.c:330 + push si ; 56 ; 0xf7873 + call 01a68h ; e8 f1 a1 ; 0xf7874 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7877 + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf787a logo.c:332 + jmp near 077a5h ; e9 26 ff ; 0xf787c + test ch, ch ; 84 ed ; 0xf787f logo.c:334 + jne short 07898h ; 75 15 ; 0xf7881 + test cl, cl ; 84 c9 ; 0xf7883 + jne short 07898h ; 75 11 ; 0xf7885 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7887 + jne short 07898h ; 75 0b ; 0xf788b + push 00ab5h ; 68 b5 0a ; 0xf788d logo.c:337 + push strict byte 00002h ; 6a 02 ; 0xf7890 + call 01a68h ; e8 d3 a1 ; 0xf7892 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7895 + push 00ac9h ; 68 c9 0a ; 0xf7898 logo.c:339 + push strict byte 00002h ; 6a 02 ; 0xf789b + call 01a68h ; e8 c8 a1 ; 0xf789d + add sp, strict byte 00004h ; 83 c4 04 ; 0xf78a0 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf78a3 logo.c:340 + pop di ; 5f ; 0xf78a6 + pop si ; 5e ; 0xf78a7 + pop dx ; 5a ; 0xf78a8 + pop cx ; 59 ; 0xf78a9 + pop bx ; 5b ; 0xf78aa + pop bp ; 5d ; 0xf78ab + retn ; c3 ; 0xf78ac + ; disGetNextSymbol 0xf78ad LB 0x34ef -> off=0x0 cb=0000000000000024 uValue=00000000000f62ad 'get_boot_drive' +get_boot_drive: ; 0xf78ad LB 0x24 + push bx ; 53 ; 0xf78ad logo.c:342 + push dx ; 52 ; 0xf78ae + push bp ; 55 ; 0xf78af + mov bp, sp ; 89 e5 ; 0xf78b0 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf78b2 logo.c:58 + mov dx, strict word 00040h ; ba 40 00 ; 0xf78b5 + mov es, dx ; 8e c2 ; 0xf78b8 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf78ba + mov bx, 002ach ; bb ac 02 ; 0xf78bd logo.c:48 + mov es, dx ; 8e c2 ; 0xf78c0 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf78c2 + sub AL, strict byte 002h ; 2c 02 ; 0xf78c5 logo.c:350 + cmp al, dl ; 38 d0 ; 0xf78c7 logo.c:352 + jc short 078cdh ; 72 02 ; 0xf78c9 + mov AL, strict byte 0ffh ; b0 ff ; 0xf78cb logo.c:353 + pop bp ; 5d ; 0xf78cd logo.c:357 + pop dx ; 5a ; 0xf78ce + pop bx ; 5b ; 0xf78cf + retn ; c3 ; 0xf78d0 + ; disGetNextSymbol 0xf78d1 LB 0x34cb -> off=0x0 cb=0000000000000254 uValue=00000000000f62d1 'show_logo' +show_logo: ; 0xf78d1 LB 0x254 + push bp ; 55 ; 0xf78d1 logo.c:359 + mov bp, sp ; 89 e5 ; 0xf78d2 + push bx ; 53 ; 0xf78d4 + push cx ; 51 ; 0xf78d5 + push dx ; 52 ; 0xf78d6 + push si ; 56 ; 0xf78d7 + push di ; 57 ; 0xf78d8 + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf78d9 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf78dc logo.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf78df + mov es, ax ; 8e c0 ; 0xf78e2 + mov si, word [es:bx] ; 26 8b 37 ; 0xf78e4 + mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf78e7 logo.c:362 + xor dx, dx ; 31 d2 ; 0xf78eb logo.c:366 + mov AL, strict byte 034h ; b0 34 ; 0xf78ed logo.c:373 + out strict byte 043h, AL ; e6 43 ; 0xf78ef + mov AL, strict byte 0d3h ; b0 d3 ; 0xf78f1 + out strict byte 040h, AL ; e6 40 ; 0xf78f3 + mov AL, strict byte 048h ; b0 48 ; 0xf78f5 + out strict byte 040h, AL ; e6 40 ; 0xf78f7 + movzx ax, dl ; 0f b6 c2 ; 0xf78f9 logo.c:376 + call 07766h ; e8 67 fe ; 0xf78fc + cmp ax, 066bbh ; 3d bb 66 ; 0xf78ff logo.c:377 + jne near 07a04h ; 0f 85 fe 00 ; 0xf7902 + push SS ; 16 ; 0xf7906 logo.c:381 + pop ES ; 07 ; 0xf7907 + lea di, [bp-018h] ; 8d 7e e8 ; 0xf7908 + mov ax, 04f03h ; b8 03 4f ; 0xf790b + int 010h ; cd 10 ; 0xf790e + mov word [es:di], bx ; 26 89 1d ; 0xf7910 + cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf7913 + jne near 07a04h ; 0f 85 ea 00 ; 0xf7916 + mov al, dl ; 88 d0 ; 0xf791a logo.c:385 + add AL, strict byte 004h ; 04 04 ; 0xf791c + xor ah, ah ; 30 e4 ; 0xf791e + call 07750h ; e8 2d fe ; 0xf7920 + mov bl, al ; 88 c3 ; 0xf7923 + mov byte [bp-012h], al ; 88 46 ee ; 0xf7925 + mov al, dl ; 88 d0 ; 0xf7928 logo.c:386 + add AL, strict byte 005h ; 04 05 ; 0xf792a + xor ah, ah ; 30 e4 ; 0xf792c + call 07750h ; e8 1f fe ; 0xf792e + mov dh, al ; 88 c6 ; 0xf7931 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf7933 + mov al, dl ; 88 d0 ; 0xf7936 logo.c:387 + add AL, strict byte 002h ; 04 02 ; 0xf7938 + xor ah, ah ; 30 e4 ; 0xf793a + call 07766h ; e8 27 fe ; 0xf793c + mov cx, ax ; 89 c1 ; 0xf793f + mov word [bp-016h], ax ; 89 46 ea ; 0xf7941 + mov al, dl ; 88 d0 ; 0xf7944 logo.c:388 + add AL, strict byte 006h ; 04 06 ; 0xf7946 + xor ah, ah ; 30 e4 ; 0xf7948 + call 07750h ; e8 03 fe ; 0xf794a + mov byte [bp-014h], al ; 88 46 ec ; 0xf794d + test bl, bl ; 84 db ; 0xf7950 logo.c:391 + jne short 0795eh ; 75 0a ; 0xf7952 + test dh, dh ; 84 f6 ; 0xf7954 + jne short 0795eh ; 75 06 ; 0xf7956 + test cx, cx ; 85 c9 ; 0xf7958 + je near 07a04h ; 0f 84 a6 00 ; 0xf795a + mov BH, strict byte 020h ; b7 20 ; 0xf795e logo.c:395 + mov dx, 001e0h ; ba e0 01 ; 0xf7960 + mov cx, 00280h ; b9 80 02 ; 0xf7963 + mov ax, 05642h ; b8 42 56 ; 0xf7966 + mov BL, strict byte 000h ; b3 00 ; 0xf7969 + int 010h ; cd 10 ; 0xf796b + cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf796d logo.c:397 + je short 0797ah ; 74 08 ; 0xf7970 + mov bx, 00142h ; bb 42 01 ; 0xf7972 logo.c:398 + mov ax, 04f02h ; b8 02 4f ; 0xf7975 + int 010h ; cd 10 ; 0xf7978 + cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf797a logo.c:400 + je short 079a5h ; 74 25 ; 0xf797e + xor bx, bx ; 31 db ; 0xf7980 logo.c:402 + jmp short 0798ah ; eb 06 ; 0xf7982 + inc bx ; 43 ; 0xf7984 logo.c:404 + cmp bx, strict byte 00010h ; 83 fb 10 ; 0xf7985 + jnbe short 079ach ; 77 22 ; 0xf7988 + mov ax, bx ; 89 d8 ; 0xf798a + or ah, 002h ; 80 cc 02 ; 0xf798c + mov dx, 003b8h ; ba b8 03 ; 0xf798f + out DX, ax ; ef ; 0xf7992 + xor dx, dx ; 31 d2 ; 0xf7993 + mov ax, strict word 00001h ; b8 01 00 ; 0xf7995 + call 07698h ; e8 fd fc ; 0xf7998 + cmp AL, strict byte 086h ; 3c 86 ; 0xf799b + jne short 07984h ; 75 e5 ; 0xf799d + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf799f + jmp short 079ach ; eb 07 ; 0xf79a3 + mov ax, 00210h ; b8 10 02 ; 0xf79a5 logo.c:414 + mov dx, 003b8h ; ba b8 03 ; 0xf79a8 + out DX, ax ; ef ; 0xf79ab + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf79ac logo.c:417 + jne short 079c6h ; 75 14 ; 0xf79b0 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf79b2 logo.c:419 + shr ax, 004h ; c1 e8 04 ; 0xf79b5 + mov dx, strict word 00001h ; ba 01 00 ; 0xf79b8 + call 07698h ; e8 da fc ; 0xf79bb + cmp AL, strict byte 086h ; 3c 86 ; 0xf79be logo.c:420 + jne short 079c6h ; 75 04 ; 0xf79c0 + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf79c2 logo.c:421 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf79c6 logo.c:425 + je short 079f7h ; 74 2b ; 0xf79ca + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf79cc + jne short 079f7h ; 75 25 ; 0xf79d0 + mov bx, strict word 00010h ; bb 10 00 ; 0xf79d2 logo.c:427 + jmp short 079dch ; eb 05 ; 0xf79d5 + dec bx ; 4b ; 0xf79d7 logo.c:429 + test bx, bx ; 85 db ; 0xf79d8 + jbe short 07a04h ; 76 28 ; 0xf79da + mov ax, bx ; 89 d8 ; 0xf79dc + or ah, 002h ; 80 cc 02 ; 0xf79de + mov dx, 003b8h ; ba b8 03 ; 0xf79e1 + out DX, ax ; ef ; 0xf79e4 + xor dx, dx ; 31 d2 ; 0xf79e5 + mov ax, strict word 00001h ; b8 01 00 ; 0xf79e7 + call 07698h ; e8 ab fc ; 0xf79ea + cmp AL, strict byte 086h ; 3c 86 ; 0xf79ed + jne short 079d7h ; 75 e6 ; 0xf79ef + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf79f1 + jmp short 07a04h ; eb 0d ; 0xf79f5 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf79f7 logo.c:438 + jne short 07a04h ; 75 07 ; 0xf79fb + mov ax, 00200h ; b8 00 02 ; 0xf79fd logo.c:439 + mov dx, 003b8h ; ba b8 03 ; 0xf7a00 + out DX, ax ; ef ; 0xf7a03 + mov bx, 00331h ; bb 31 03 ; 0xf7a04 logo.c:53 + mov es, si ; 8e c6 ; 0xf7a07 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf7a09 + mov AL, strict byte 003h ; b0 03 ; 0xf7a0d logo.c:447 + mov AH, strict byte 000h ; b4 00 ; 0xf7a0f + int 010h ; cd 10 ; 0xf7a11 + cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf7a13 logo.c:450 + je near 07b06h ; 0f 84 eb 00 ; 0xf7a17 + cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf7a1b logo.c:453 + jne short 07a55h ; 75 34 ; 0xf7a1f + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7a21 + jne short 07a55h ; 75 2e ; 0xf7a25 + cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf7a27 + jne short 07a55h ; 75 28 ; 0xf7a2b + cmp byte [bp-014h], 002h ; 80 7e ec 02 ; 0xf7a2d logo.c:455 + jne short 07a3eh ; 75 0b ; 0xf7a31 + push 00acbh ; 68 cb 0a ; 0xf7a33 logo.c:456 + push strict byte 00002h ; 6a 02 ; 0xf7a36 + call 01a68h ; e8 2d a0 ; 0xf7a38 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a3b + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7a3e logo.c:459 + jne short 07a55h ; 75 11 ; 0xf7a42 + mov dx, strict word 00001h ; ba 01 00 ; 0xf7a44 logo.c:462 + mov ax, 000c0h ; b8 c0 00 ; 0xf7a47 + call 07698h ; e8 4b fc ; 0xf7a4a + cmp AL, strict byte 086h ; 3c 86 ; 0xf7a4d logo.c:463 + jne short 07a55h ; 75 04 ; 0xf7a4f + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf7a51 logo.c:464 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7a55 logo.c:469 + je near 07b06h ; 0f 84 a9 00 ; 0xf7a59 + mov byte [bp-010h], 000h ; c6 46 f0 00 ; 0xf7a5d logo.c:471 + mov ax, 00100h ; b8 00 01 ; 0xf7a61 logo.c:474 + mov cx, 01000h ; b9 00 10 ; 0xf7a64 + int 010h ; cd 10 ; 0xf7a67 + mov ax, 00700h ; b8 00 07 ; 0xf7a69 + mov BH, strict byte 007h ; b7 07 ; 0xf7a6c + db 033h, 0c9h + ; xor cx, cx ; 33 c9 ; 0xf7a6e + mov dx, 0184fh ; ba 4f 18 ; 0xf7a70 + int 010h ; cd 10 ; 0xf7a73 + mov ax, 00200h ; b8 00 02 ; 0xf7a75 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xf7a78 + db 033h, 0d2h + ; xor dx, dx ; 33 d2 ; 0xf7a7a + int 010h ; cd 10 ; 0xf7a7c + push 00aedh ; 68 ed 0a ; 0xf7a7e logo.c:477 + push strict byte 00002h ; 6a 02 ; 0xf7a81 + call 01a68h ; e8 e2 9f ; 0xf7a83 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a86 + call 0777ah ; e8 ee fc ; 0xf7a89 logo.c:478 + push 00b31h ; 68 31 0b ; 0xf7a8c logo.c:479 + push strict byte 00002h ; 6a 02 ; 0xf7a8f + call 01a68h ; e8 d4 9f ; 0xf7a91 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a94 + mov dx, strict word 00001h ; ba 01 00 ; 0xf7a97 logo.c:488 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7a9a + call 07698h ; e8 f8 fb ; 0xf7a9d + mov bl, al ; 88 c3 ; 0xf7aa0 + test al, al ; 84 c0 ; 0xf7aa2 logo.c:489 + je short 07a97h ; 74 f1 ; 0xf7aa4 + cmp AL, strict byte 030h ; 3c 30 ; 0xf7aa6 logo.c:491 + je short 07af5h ; 74 4b ; 0xf7aa8 + cmp bl, 002h ; 80 fb 02 ; 0xf7aaa logo.c:498 + jc short 07aceh ; 72 1f ; 0xf7aad + cmp bl, 009h ; 80 fb 09 ; 0xf7aaf + jnbe short 07aceh ; 77 1a ; 0xf7ab2 + movzx ax, bl ; 0f b6 c3 ; 0xf7ab4 logo.c:500 + call 078adh ; e8 f3 fd ; 0xf7ab7 + cmp AL, strict byte 0ffh ; 3c ff ; 0xf7aba logo.c:507 + jne short 07ac0h ; 75 02 ; 0xf7abc + jmp short 07a97h ; eb d7 ; 0xf7abe logo.c:508 + mov bx, 00330h ; bb 30 03 ; 0xf7ac0 logo.c:53 + mov es, si ; 8e c6 ; 0xf7ac3 + mov byte [es:bx], al ; 26 88 07 ; 0xf7ac5 + mov byte [bp-010h], 002h ; c6 46 f0 02 ; 0xf7ac8 logo.c:511 + jmp short 07af5h ; eb 27 ; 0xf7acc logo.c:512 + cmp bl, 02eh ; 80 fb 2e ; 0xf7ace logo.c:515 + je short 07ae3h ; 74 10 ; 0xf7ad1 + cmp bl, 026h ; 80 fb 26 ; 0xf7ad3 + je short 07ae9h ; 74 11 ; 0xf7ad6 + cmp bl, 021h ; 80 fb 21 ; 0xf7ad8 + jne short 07aefh ; 75 12 ; 0xf7adb + mov byte [bp-010h], 001h ; c6 46 f0 01 ; 0xf7add logo.c:519 + jmp short 07af5h ; eb 12 ; 0xf7ae1 logo.c:520 + mov byte [bp-010h], 003h ; c6 46 f0 03 ; 0xf7ae3 logo.c:523 + jmp short 07af5h ; eb 0c ; 0xf7ae7 logo.c:524 + mov byte [bp-010h], 004h ; c6 46 f0 04 ; 0xf7ae9 logo.c:527 + jmp short 07af5h ; eb 06 ; 0xf7aed logo.c:528 + cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf7aef logo.c:531 + je short 07a97h ; 74 a2 ; 0xf7af3 + mov bx, 00331h ; bb 31 03 ; 0xf7af5 logo.c:53 + mov es, si ; 8e c6 ; 0xf7af8 + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf7afa + mov byte [es:bx], al ; 26 88 07 ; 0xf7afd + mov AL, strict byte 003h ; b0 03 ; 0xf7b00 logo.c:538 + mov AH, strict byte 000h ; b4 00 ; 0xf7b02 + int 010h ; cd 10 ; 0xf7b04 + mov AL, strict byte 034h ; b0 34 ; 0xf7b06 logo.c:543 + out strict byte 043h, AL ; e6 43 ; 0xf7b08 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf7b0a + out strict byte 040h, AL ; e6 40 ; 0xf7b0c + out strict byte 040h, AL ; e6 40 ; 0xf7b0e + pushad ; 66 60 ; 0xf7b10 + push DS ; 1e ; 0xf7b12 + mov ds, ax ; 8e d8 ; 0xf7b13 + call 0edbfh ; e8 a7 72 ; 0xf7b15 + pop DS ; 1f ; 0xf7b18 + popad ; 66 61 ; 0xf7b19 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7b1b logo.c:546 + pop di ; 5f ; 0xf7b1e + pop si ; 5e ; 0xf7b1f + pop dx ; 5a ; 0xf7b20 + pop cx ; 59 ; 0xf7b21 + pop bx ; 5b ; 0xf7b22 + pop bp ; 5d ; 0xf7b23 + retn ; c3 ; 0xf7b24 + ; disGetNextSymbol 0xf7b25 LB 0x3277 -> off=0x0 cb=0000000000000067 uValue=00000000000f6525 'delay_boot' +delay_boot: ; 0xf7b25 LB 0x67 + push bp ; 55 ; 0xf7b25 logo.c:549 + mov bp, sp ; 89 e5 ; 0xf7b26 + push bx ; 53 ; 0xf7b28 + push dx ; 52 ; 0xf7b29 + mov dx, ax ; 89 c2 ; 0xf7b2a + test ax, ax ; 85 c0 ; 0xf7b2c logo.c:553 + je short 07b85h ; 74 55 ; 0xf7b2e + mov AL, strict byte 034h ; b0 34 ; 0xf7b30 logo.c:557 + out strict byte 043h, AL ; e6 43 ; 0xf7b32 + mov AL, strict byte 0d3h ; b0 d3 ; 0xf7b34 + out strict byte 040h, AL ; e6 40 ; 0xf7b36 + mov AL, strict byte 048h ; b0 48 ; 0xf7b38 + out strict byte 040h, AL ; e6 40 ; 0xf7b3a + push dx ; 52 ; 0xf7b3c logo.c:559 + push 00b7bh ; 68 7b 0b ; 0xf7b3d + push strict byte 00002h ; 6a 02 ; 0xf7b40 + call 01a68h ; e8 23 9f ; 0xf7b42 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7b45 + mov bx, dx ; 89 d3 ; 0xf7b48 logo.c:560 + test bx, bx ; 85 db ; 0xf7b4a + jbe short 07b65h ; 76 17 ; 0xf7b4c + push bx ; 53 ; 0xf7b4e logo.c:562 + push 00b99h ; 68 99 0b ; 0xf7b4f + push strict byte 00002h ; 6a 02 ; 0xf7b52 + call 01a68h ; e8 11 9f ; 0xf7b54 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7b57 + xor dx, dx ; 31 d2 ; 0xf7b5a logo.c:563 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7b5c + call 07698h ; e8 36 fb ; 0xf7b5f + dec bx ; 4b ; 0xf7b62 logo.c:564 + jmp short 07b4ah ; eb e5 ; 0xf7b63 + push 00ac9h ; 68 c9 0a ; 0xf7b65 logo.c:565 + push strict byte 00002h ; 6a 02 ; 0xf7b68 + call 01a68h ; e8 fb 9e ; 0xf7b6a + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7b6d + mov AL, strict byte 034h ; b0 34 ; 0xf7b70 logo.c:567 + out strict byte 043h, AL ; e6 43 ; 0xf7b72 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf7b74 + out strict byte 040h, AL ; e6 40 ; 0xf7b76 + out strict byte 040h, AL ; e6 40 ; 0xf7b78 + pushad ; 66 60 ; 0xf7b7a + push DS ; 1e ; 0xf7b7c + mov ds, ax ; 8e d8 ; 0xf7b7d + call 0edbfh ; e8 3d 72 ; 0xf7b7f + pop DS ; 1f ; 0xf7b82 + popad ; 66 61 ; 0xf7b83 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7b85 logo.c:568 + pop dx ; 5a ; 0xf7b88 + pop bx ; 5b ; 0xf7b89 + pop bp ; 5d ; 0xf7b8a + retn ; c3 ; 0xf7b8b + ; disGetNextSymbol 0xf7b8c LB 0x3210 -> off=0x0 cb=000000000000003a uValue=00000000000f658c 'scsi_hba_mem_alloc' +scsi_hba_mem_alloc: ; 0xf7b8c LB 0x3a + push bx ; 53 ; 0xf7b8c scsi.c:105 + push cx ; 51 ; 0xf7b8d + push dx ; 52 ; 0xf7b8e + push di ; 57 ; 0xf7b8f + push bp ; 55 ; 0xf7b90 + mov bp, sp ; 89 e5 ; 0xf7b91 + mov di, 00413h ; bf 13 04 ; 0xf7b93 scsi.c:58 + xor ax, ax ; 31 c0 ; 0xf7b96 + mov es, ax ; 8e c0 ; 0xf7b98 + mov ax, word [es:di] ; 26 8b 05 ; 0xf7b9a + test ax, ax ; 85 c0 ; 0xf7b9d scsi.c:114 + je short 07bc0h ; 74 1f ; 0xf7b9f + dec ax ; 48 ; 0xf7ba1 scsi.c:115 + mov bx, ax ; 89 c3 ; 0xf7ba2 + xor dx, dx ; 31 d2 ; 0xf7ba4 scsi.c:118 + mov cx, strict word 0000ah ; b9 0a 00 ; 0xf7ba6 + sal ax, 1 ; d1 e0 ; 0xf7ba9 + rcl dx, 1 ; d1 d2 ; 0xf7bab + loop 07ba9h ; e2 fa ; 0xf7bad + mov di, dx ; 89 d7 ; 0xf7baf + mov cx, strict word 00004h ; b9 04 00 ; 0xf7bb1 + shr di, 1 ; d1 ef ; 0xf7bb4 + rcr ax, 1 ; d1 d8 ; 0xf7bb6 + loop 07bb4h ; e2 fa ; 0xf7bb8 + mov di, 00413h ; bf 13 04 ; 0xf7bba scsi.c:63 + mov word [es:di], bx ; 26 89 1d ; 0xf7bbd + pop bp ; 5d ; 0xf7bc0 scsi.c:123 + pop di ; 5f ; 0xf7bc1 + pop dx ; 5a ; 0xf7bc2 + pop cx ; 59 ; 0xf7bc3 + pop bx ; 5b ; 0xf7bc4 + retn ; c3 ; 0xf7bc5 + ; disGetNextSymbol 0xf7bc6 LB 0x31d6 -> off=0x0 cb=0000000000000102 uValue=00000000000f65c6 'scsi_read_sectors' +scsi_read_sectors: ; 0xf7bc6 LB 0x102 + push bp ; 55 ; 0xf7bc6 scsi.c:132 + mov bp, sp ; 89 e5 ; 0xf7bc7 + push si ; 56 ; 0xf7bc9 + push di ; 57 ; 0xf7bca + sub sp, strict byte 0001ah ; 83 ec 1a ; 0xf7bcb + mov si, word [bp+004h] ; 8b 76 04 ; 0xf7bce + mov es, [bp+006h] ; 8e 46 06 ; 0xf7bd1 scsi.c:143 + mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7bd4 + sub AL, strict byte 008h ; 2c 08 ; 0xf7bd8 + mov byte [bp-006h], al ; 88 46 fa ; 0xf7bda + cmp AL, strict byte 004h ; 3c 04 ; 0xf7bdd scsi.c:144 + jbe short 07bf4h ; 76 13 ; 0xf7bdf + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7be1 scsi.c:145 + push ax ; 50 ; 0xf7be5 + push 00b9eh ; 68 9e 0b ; 0xf7be6 + push 00bb0h ; 68 b0 0b ; 0xf7be9 + push strict byte 00007h ; 6a 07 ; 0xf7bec + call 01a68h ; e8 77 9e ; 0xf7bee + add sp, strict byte 00008h ; 83 c4 08 ; 0xf7bf1 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7bf4 scsi.c:147 + mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf7bf7 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf7bfb + shr eax, 010h ; 66 c1 e8 10 ; 0xf7bfe scsi.c:83 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf7c02 + mov word [bp-01eh], 00088h ; c7 46 e2 88 00 ; 0xf7c05 scsi.c:152 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7c0a scsi.c:153 + mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7c0d + mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7c11 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7c15 + mov dx, word [es:si] ; 26 8b 14 ; 0xf7c19 + xchg ah, al ; 86 c4 ; 0xf7c1c + xchg bh, bl ; 86 df ; 0xf7c1e + xchg ch, cl ; 86 cd ; 0xf7c20 + xchg dh, dl ; 86 d6 ; 0xf7c22 + xchg dx, ax ; 92 ; 0xf7c24 + xchg bx, cx ; 87 cb ; 0xf7c25 + mov word [bp-016h], ax ; 89 46 ea ; 0xf7c27 + mov word [bp-018h], bx ; 89 5e e8 ; 0xf7c2a + mov word [bp-01ah], cx ; 89 4e e6 ; 0xf7c2d + mov word [bp-01ch], dx ; 89 56 e4 ; 0xf7c30 + mov byte [bp-010h], 000h ; c6 46 f0 00 ; 0xf7c33 scsi.c:154 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7c37 scsi.c:155 + xor dx, dx ; 31 d2 ; 0xf7c3a + xchg ah, al ; 86 c4 ; 0xf7c3c + xchg dh, dl ; 86 d6 ; 0xf7c3e + xchg dx, ax ; 92 ; 0xf7c40 + mov word [bp-014h], ax ; 89 46 ec ; 0xf7c41 + mov word [bp-012h], dx ; 89 56 ee ; 0xf7c44 + mov byte [bp-00fh], 000h ; c6 46 f1 00 ; 0xf7c47 scsi.c:156 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7c4b scsi.c:159 + sal ax, 002h ; c1 e0 02 ; 0xf7c4f + mov bx, si ; 89 f3 ; 0xf7c52 + add bx, ax ; 01 c3 ; 0xf7c54 + mov dx, word [es:bx+00290h] ; 26 8b 97 90 02 ; 0xf7c56 + mov al, byte [es:bx+00292h] ; 26 8a 87 92 02 ; 0xf7c5b scsi.c:160 + mov bl, byte [es:bx+00293h] ; 26 8a 9f 93 02 ; 0xf7c60 scsi.c:161 + movzx di, al ; 0f b6 f8 ; 0xf7c65 scsi.c:166 + imul di, di, strict byte 0000ah ; 6b ff 0a ; 0xf7c68 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7c6b + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf7c6e + xor ax, ax ; 31 c0 ; 0xf7c71 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf7c73 + mov cx, strict word 00009h ; b9 09 00 ; 0xf7c76 + sal word [bp-00eh], 1 ; d1 66 f2 ; 0xf7c79 + rcl word [bp-00ch], 1 ; d1 56 f4 ; 0xf7c7c + loop 07c79h ; e2 f8 ; 0xf7c7f + push dword [bp-00eh] ; 66 ff 76 f2 ; 0xf7c81 + db 066h, 026h, 0ffh, 074h, 008h + ; push dword [es:si+008h] ; 66 26 ff 74 08 ; 0xf7c85 + push strict byte 00010h ; 6a 10 ; 0xf7c8a + lea cx, [bp-01eh] ; 8d 4e e2 ; 0xf7c8c + push SS ; 16 ; 0xf7c8f + push cx ; 51 ; 0xf7c90 + xor bh, bh ; 30 ff ; 0xf7c91 + call word [di+000a2h] ; ff 95 a2 00 ; 0xf7c93 + mov dl, al ; 88 c2 ; 0xf7c97 + test al, al ; 84 c0 ; 0xf7c99 scsi.c:168 + jne short 07cb5h ; 75 18 ; 0xf7c9b + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7c9d scsi.c:170 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7ca0 + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf7ca3 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf7ca7 scsi.c:171 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf7caa + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf7cae + mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7cb1 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf7cb5 scsi.c:86 + sal eax, 010h ; 66 c1 e0 10 ; 0xf7cb8 scsi.c:88 + movzx ax, dl ; 0f b6 c2 ; 0xf7cbc scsi.c:176 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7cbf scsi.c:177 + pop di ; 5f ; 0xf7cc2 + pop si ; 5e ; 0xf7cc3 + pop bp ; 5d ; 0xf7cc4 + retn 00004h ; c2 04 00 ; 0xf7cc5 + ; disGetNextSymbol 0xf7cc8 LB 0x30d4 -> off=0x0 cb=0000000000000102 uValue=00000000000f66c8 'scsi_write_sectors' +scsi_write_sectors: ; 0xf7cc8 LB 0x102 + push bp ; 55 ; 0xf7cc8 scsi.c:186 + mov bp, sp ; 89 e5 ; 0xf7cc9 + push si ; 56 ; 0xf7ccb + push di ; 57 ; 0xf7ccc + sub sp, strict byte 0001ah ; 83 ec 1a ; 0xf7ccd + mov si, word [bp+004h] ; 8b 76 04 ; 0xf7cd0 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7cd3 scsi.c:197 + mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7cd6 + sub AL, strict byte 008h ; 2c 08 ; 0xf7cda + mov byte [bp-006h], al ; 88 46 fa ; 0xf7cdc + cmp AL, strict byte 004h ; 3c 04 ; 0xf7cdf scsi.c:198 + jbe short 07cf6h ; 76 13 ; 0xf7ce1 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7ce3 scsi.c:199 + push ax ; 50 ; 0xf7ce7 + push 00bcfh ; 68 cf 0b ; 0xf7ce8 + push 00bb0h ; 68 b0 0b ; 0xf7ceb + push strict byte 00007h ; 6a 07 ; 0xf7cee + call 01a68h ; e8 75 9d ; 0xf7cf0 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf7cf3 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7cf6 scsi.c:201 + mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf7cf9 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf7cfd + shr eax, 010h ; 66 c1 e8 10 ; 0xf7d00 scsi.c:83 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf7d04 + mov word [bp-01eh], 0008ah ; c7 46 e2 8a 00 ; 0xf7d07 scsi.c:206 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7d0c scsi.c:207 + mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7d0f + mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7d13 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7d17 + mov dx, word [es:si] ; 26 8b 14 ; 0xf7d1b + xchg ah, al ; 86 c4 ; 0xf7d1e + xchg bh, bl ; 86 df ; 0xf7d20 + xchg ch, cl ; 86 cd ; 0xf7d22 + xchg dh, dl ; 86 d6 ; 0xf7d24 + xchg dx, ax ; 92 ; 0xf7d26 + xchg bx, cx ; 87 cb ; 0xf7d27 + mov word [bp-016h], ax ; 89 46 ea ; 0xf7d29 + mov word [bp-018h], bx ; 89 5e e8 ; 0xf7d2c + mov word [bp-01ah], cx ; 89 4e e6 ; 0xf7d2f + mov word [bp-01ch], dx ; 89 56 e4 ; 0xf7d32 + mov byte [bp-010h], 000h ; c6 46 f0 00 ; 0xf7d35 scsi.c:208 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7d39 scsi.c:209 + xor dx, dx ; 31 d2 ; 0xf7d3c + xchg ah, al ; 86 c4 ; 0xf7d3e + xchg dh, dl ; 86 d6 ; 0xf7d40 + xchg dx, ax ; 92 ; 0xf7d42 + mov word [bp-014h], ax ; 89 46 ec ; 0xf7d43 + mov word [bp-012h], dx ; 89 56 ee ; 0xf7d46 + mov byte [bp-00fh], 000h ; c6 46 f1 00 ; 0xf7d49 scsi.c:210 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7d4d scsi.c:212 + sal ax, 002h ; c1 e0 02 ; 0xf7d51 + mov bx, si ; 89 f3 ; 0xf7d54 + add bx, ax ; 01 c3 ; 0xf7d56 + mov dx, word [es:bx+00290h] ; 26 8b 97 90 02 ; 0xf7d58 + mov al, byte [es:bx+00292h] ; 26 8a 87 92 02 ; 0xf7d5d scsi.c:213 + mov bl, byte [es:bx+00293h] ; 26 8a 9f 93 02 ; 0xf7d62 scsi.c:214 + movzx di, al ; 0f b6 f8 ; 0xf7d67 scsi.c:219 + imul di, di, strict byte 0000ah ; 6b ff 0a ; 0xf7d6a + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7d6d + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf7d70 + xor ax, ax ; 31 c0 ; 0xf7d73 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf7d75 + mov cx, strict word 00009h ; b9 09 00 ; 0xf7d78 + sal word [bp-00eh], 1 ; d1 66 f2 ; 0xf7d7b + rcl word [bp-00ch], 1 ; d1 56 f4 ; 0xf7d7e + loop 07d7bh ; e2 f8 ; 0xf7d81 + push dword [bp-00eh] ; 66 ff 76 f2 ; 0xf7d83 + db 066h, 026h, 0ffh, 074h, 008h + ; push dword [es:si+008h] ; 66 26 ff 74 08 ; 0xf7d87 + push strict byte 00010h ; 6a 10 ; 0xf7d8c + lea cx, [bp-01eh] ; 8d 4e e2 ; 0xf7d8e + push SS ; 16 ; 0xf7d91 + push cx ; 51 ; 0xf7d92 + xor bh, bh ; 30 ff ; 0xf7d93 + call word [di+000a0h] ; ff 95 a0 00 ; 0xf7d95 + mov dl, al ; 88 c2 ; 0xf7d99 + test al, al ; 84 c0 ; 0xf7d9b scsi.c:221 + jne short 07db7h ; 75 18 ; 0xf7d9d + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7d9f scsi.c:223 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7da2 + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf7da5 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf7da9 scsi.c:224 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf7dac + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf7db0 + mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7db3 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf7db7 scsi.c:86 + sal eax, 010h ; 66 c1 e0 10 ; 0xf7dba scsi.c:88 + movzx ax, dl ; 0f b6 c2 ; 0xf7dbe scsi.c:229 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7dc1 scsi.c:230 + pop di ; 5f ; 0xf7dc4 + pop si ; 5e ; 0xf7dc5 + pop bp ; 5d ; 0xf7dc6 + retn 00004h ; c2 04 00 ; 0xf7dc7 + ; disGetNextSymbol 0xf7dca LB 0x2fd2 -> off=0x0 cb=0000000000000107 uValue=00000000000f67ca 'scsi_cmd_packet' +scsi_cmd_packet: ; 0xf7dca LB 0x107 + push bp ; 55 ; 0xf7dca scsi.c:249 + mov bp, sp ; 89 e5 ; 0xf7dcb + push si ; 56 ; 0xf7dcd + push di ; 57 ; 0xf7dce + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf7dcf + mov di, ax ; 89 c7 ; 0xf7dd2 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf7dd4 + mov word [bp-012h], bx ; 89 5e ee ; 0xf7dd7 + mov word [bp-00eh], cx ; 89 4e f2 ; 0xf7dda + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7ddd scsi.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7de0 + mov es, ax ; 8e c0 ; 0xf7de3 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf7de5 + mov si, strict word 0005eh ; be 5e 00 ; 0xf7de8 scsi.c:59 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf7deb + cmp byte [bp+008h], 002h ; 80 7e 08 02 ; 0xf7dee scsi.c:260 + jne short 07e13h ; 75 1f ; 0xf7df2 + mov bx, 00e06h ; bb 06 0e ; 0xf7df4 scsi.c:261 + mov cx, ds ; 8c d9 ; 0xf7df7 + mov ax, strict word 00004h ; b8 04 00 ; 0xf7df9 + call 01a27h ; e8 28 9c ; 0xf7dfc + push 00be2h ; 68 e2 0b ; 0xf7dff + push 00bf2h ; 68 f2 0b ; 0xf7e02 + push strict byte 00004h ; 6a 04 ; 0xf7e05 + call 01a68h ; e8 5e 9c ; 0xf7e07 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7e0a + mov ax, strict word 00001h ; b8 01 00 ; 0xf7e0d scsi.c:262 + jmp near 07ec8h ; e9 b5 00 ; 0xf7e10 + sub di, strict byte 00008h ; 83 ef 08 ; 0xf7e13 scsi.c:266 + shr eax, 010h ; 66 c1 e8 10 ; 0xf7e16 scsi.c:83 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf7e1a + mov bx, di ; 89 fb ; 0xf7e1d scsi.c:274 + sal bx, 002h ; c1 e3 02 ; 0xf7e1f + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf7e22 + add bx, si ; 01 f3 ; 0xf7e25 + mov ax, word [es:bx+00290h] ; 26 8b 87 90 02 ; 0xf7e27 + mov word [bp-014h], ax ; 89 46 ec ; 0xf7e2c + mov al, byte [es:bx+00292h] ; 26 8a 87 92 02 ; 0xf7e2f scsi.c:275 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf7e34 + mov al, byte [es:bx+00293h] ; 26 8a 87 93 02 ; 0xf7e37 scsi.c:276 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf7e3c + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7e3f scsi.c:278 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf7e42 + mov cx, strict word 00008h ; b9 08 00 ; 0xf7e45 + sal ax, 1 ; d1 e0 ; 0xf7e48 + rcl dx, 1 ; d1 d2 ; 0xf7e4a + loop 07e48h ; e2 fa ; 0xf7e4c + mov word [es:si], ax ; 26 89 04 ; 0xf7e4e + mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf7e51 + 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; 0xf7e55 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf7e5e scsi.c:279 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf7e61 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf7e65 + mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf7e68 + mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf7e6c scsi.c:280 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7e70 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf7e73 + xor cx, cx ; 31 c9 ; 0xf7e76 + call 0aca0h ; e8 25 2e ; 0xf7e78 + mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf7e7b + movzx di, byte [bp-00ah] ; 0f b6 7e f6 ; 0xf7e7f scsi.c:285 + imul di, di, strict byte 0000ah ; 6b ff 0a ; 0xf7e83 + push dword [bp+004h] ; 66 ff 76 04 ; 0xf7e86 + db 066h, 026h, 0ffh, 074h, 008h + ; push dword [es:si+008h] ; 66 26 ff 74 08 ; 0xf7e8a + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7e8f + push ax ; 50 ; 0xf7e93 + push word [bp-00eh] ; ff 76 f2 ; 0xf7e94 + push word [bp-012h] ; ff 76 ee ; 0xf7e97 + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf7e9a + xor ax, ax ; 31 c0 ; 0xf7e9e + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf7ea0 + call word [di+000a2h] ; ff 95 a2 00 ; 0xf7ea3 + mov dl, al ; 88 c2 ; 0xf7ea7 + test al, al ; 84 c0 ; 0xf7ea9 scsi.c:287 + jne short 07ebeh ; 75 11 ; 0xf7eab + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7ead scsi.c:288 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf7eb0 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf7eb3 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf7eb7 + mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7eba + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf7ebe scsi.c:86 + sal eax, 010h ; 66 c1 e0 10 ; 0xf7ec1 scsi.c:88 + movzx ax, dl ; 0f b6 c2 ; 0xf7ec5 scsi.c:293 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7ec8 scsi.c:294 + pop di ; 5f ; 0xf7ecb + pop si ; 5e ; 0xf7ecc + pop bp ; 5d ; 0xf7ecd + retn 0000ah ; c2 0a 00 ; 0xf7ece + ; disGetNextSymbol 0xf7ed1 LB 0x2ecb -> off=0x0 cb=000000000000048b uValue=00000000000f68d1 'scsi_enumerate_attached_devices' +scsi_enumerate_attached_devices: ; 0xf7ed1 LB 0x48b + push bp ; 55 ; 0xf7ed1 scsi.c:303 + mov bp, sp ; 89 e5 ; 0xf7ed2 + push bx ; 53 ; 0xf7ed4 + push cx ; 51 ; 0xf7ed5 + push si ; 56 ; 0xf7ed6 + push di ; 57 ; 0xf7ed7 + sub sp, 0023eh ; 81 ec 3e 02 ; 0xf7ed8 + push ax ; 50 ; 0xf7edc + mov byte [bp-00eh], dl ; 88 56 f2 ; 0xf7edd + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7ee0 scsi.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7ee3 + mov es, ax ; 8e c0 ; 0xf7ee6 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf7ee8 + mov di, strict word 0005eh ; bf 5e 00 ; 0xf7eeb scsi.c:59 + mov word [bp-022h], ax ; 89 46 de ; 0xf7eee + mov word [bp-030h], strict word 00000h ; c7 46 d0 00 00 ; 0xf7ef1 scsi.c:312 + jmp near 08310h ; e9 17 04 ; 0xf7ef6 + mov es, [bp-022h] ; 8e 46 de ; 0xf7ef9 scsi.c:318 + mov al, byte [es:di+002a0h] ; 26 8a 85 a0 02 ; 0xf7efc + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf7f01 + test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf7f04 scsi.c:335 + jne near 08252h ; 0f 85 45 03 ; 0xf7f09 + test byte [bp-00246h], 01fh ; f6 86 ba fd 1f ; 0xf7f0d + jne near 08252h ; 0f 85 3c 03 ; 0xf7f12 + cmp AL, strict byte 004h ; 3c 04 ; 0xf7f16 scsi.c:341 + jnc near 08353h ; 0f 83 37 04 ; 0xf7f18 + mov cx, strict word 00010h ; b9 10 00 ; 0xf7f1c scsi.c:350 + xor bx, bx ; 31 db ; 0xf7f1f + mov dx, ss ; 8c d2 ; 0xf7f21 + lea ax, [bp-046h] ; 8d 46 ba ; 0xf7f23 + call 0ad00h ; e8 d7 2d ; 0xf7f26 + mov byte [bp-046h], 09eh ; c6 46 ba 9e ; 0xf7f29 scsi.c:351 + mov byte [bp-045h], 010h ; c6 46 bb 10 ; 0xf7f2d scsi.c:352 + mov byte [bp-039h], 020h ; c6 46 c7 20 ; 0xf7f31 scsi.c:353 + movzx si, byte [bp-00eh] ; 0f b6 76 f2 ; 0xf7f35 scsi.c:355 + imul si, si, strict byte 0000ah ; 6b f6 0a ; 0xf7f39 + push dword 000000020h ; 66 6a 20 ; 0xf7f3c + lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf7f3f + push SS ; 16 ; 0xf7f43 + push dx ; 52 ; 0xf7f44 + push strict byte 00010h ; 6a 10 ; 0xf7f45 + lea dx, [bp-046h] ; 8d 56 ba ; 0xf7f47 + push SS ; 16 ; 0xf7f4a + push dx ; 52 ; 0xf7f4b + movzx bx, byte [bp-030h] ; 0f b6 5e d0 ; 0xf7f4c + xor ax, ax ; 31 c0 ; 0xf7f50 + mov dx, word [bp-00248h] ; 8b 96 b8 fd ; 0xf7f52 + call word [si+000a2h] ; ff 94 a2 00 ; 0xf7f56 + test al, al ; 84 c0 ; 0xf7f5a scsi.c:356 + je short 07f6ch ; 74 0e ; 0xf7f5c + push 00c12h ; 68 12 0c ; 0xf7f5e scsi.c:357 + push 00c32h ; 68 32 0c ; 0xf7f61 + push strict byte 00007h ; 6a 07 ; 0xf7f64 + call 01a68h ; e8 ff 9a ; 0xf7f66 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7f69 + mov ax, word [bp-00240h] ; 8b 86 c0 fd ; 0xf7f6c scsi.c:362 + mov bx, word [bp-00242h] ; 8b 9e be fd ; 0xf7f70 + mov cx, word [bp-00244h] ; 8b 8e bc fd ; 0xf7f74 + mov dx, word [bp-00246h] ; 8b 96 ba fd ; 0xf7f78 + xchg ah, al ; 86 c4 ; 0xf7f7c + xchg bh, bl ; 86 df ; 0xf7f7e + xchg ch, cl ; 86 cd ; 0xf7f80 + xchg dh, dl ; 86 d6 ; 0xf7f82 + xchg dx, ax ; 92 ; 0xf7f84 + xchg bx, cx ; 87 cb ; 0xf7f85 + add dx, strict byte 00001h ; 83 c2 01 ; 0xf7f87 + mov word [bp-014h], dx ; 89 56 ec ; 0xf7f8a + adc cx, strict byte 00000h ; 83 d1 00 ; 0xf7f8d + mov word [bp-01ah], cx ; 89 4e e6 ; 0xf7f90 + adc bx, strict byte 00000h ; 83 d3 00 ; 0xf7f93 + mov word [bp-032h], bx ; 89 5e ce ; 0xf7f96 + adc ax, strict word 00000h ; 15 00 00 ; 0xf7f99 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf7f9c + movzx si, byte [bp-0023eh] ; 0f b6 b6 c2 fd ; 0xf7f9f scsi.c:364 + sal si, 008h ; c1 e6 08 ; 0xf7fa4 + movzx ax, byte [bp-0023dh] ; 0f b6 86 c3 fd ; 0xf7fa7 + xor bx, bx ; 31 db ; 0xf7fac + or si, ax ; 09 c6 ; 0xf7fae + movzx ax, byte [bp-0023ch] ; 0f b6 86 c4 fd ; 0xf7fb0 + xor dx, dx ; 31 d2 ; 0xf7fb5 + mov cx, strict word 00008h ; b9 08 00 ; 0xf7fb7 + sal ax, 1 ; d1 e0 ; 0xf7fba + rcl dx, 1 ; d1 d2 ; 0xf7fbc + loop 07fbah ; e2 fa ; 0xf7fbe + or bx, ax ; 09 c3 ; 0xf7fc0 + or dx, si ; 09 f2 ; 0xf7fc2 + movzx ax, byte [bp-0023bh] ; 0f b6 86 c5 fd ; 0xf7fc4 + or bx, ax ; 09 c3 ; 0xf7fc9 + mov word [bp-026h], bx ; 89 5e da ; 0xf7fcb + test dx, dx ; 85 d2 ; 0xf7fce scsi.c:370 + jne short 07fd8h ; 75 06 ; 0xf7fd0 + cmp bx, 00200h ; 81 fb 00 02 ; 0xf7fd2 + je short 07ff8h ; 74 20 ; 0xf7fd6 + mov bx, 00e06h ; bb 06 0e ; 0xf7fd8 scsi.c:373 + mov cx, ds ; 8c d9 ; 0xf7fdb + mov ax, strict word 00004h ; b8 04 00 ; 0xf7fdd + call 01a27h ; e8 44 9a ; 0xf7fe0 + push dx ; 52 ; 0xf7fe3 + push word [bp-026h] ; ff 76 da ; 0xf7fe4 + push word [bp-030h] ; ff 76 d0 ; 0xf7fe7 + push 00c51h ; 68 51 0c ; 0xf7fea + push strict byte 00004h ; 6a 04 ; 0xf7fed + call 01a68h ; e8 76 9a ; 0xf7fef + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf7ff2 + jmp near 08307h ; e9 0f 03 ; 0xf7ff5 scsi.c:374 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7ff8 scsi.c:378 + cmp AL, strict byte 001h ; 3c 01 ; 0xf7ffb + jc short 0800bh ; 72 0c ; 0xf7ffd + jbe short 08013h ; 76 12 ; 0xf7fff + cmp AL, strict byte 003h ; 3c 03 ; 0xf8001 + je short 0801bh ; 74 16 ; 0xf8003 + cmp AL, strict byte 002h ; 3c 02 ; 0xf8005 + je short 08017h ; 74 0e ; 0xf8007 + jmp short 08052h ; eb 47 ; 0xf8009 + test al, al ; 84 c0 ; 0xf800b + jne short 08052h ; 75 43 ; 0xf800d + mov BL, strict byte 090h ; b3 90 ; 0xf800f scsi.c:381 + jmp short 0801dh ; eb 0a ; 0xf8011 scsi.c:382 + mov BL, strict byte 098h ; b3 98 ; 0xf8013 scsi.c:384 + jmp short 0801dh ; eb 06 ; 0xf8015 scsi.c:385 + mov BL, strict byte 0a0h ; b3 a0 ; 0xf8017 scsi.c:387 + jmp short 0801dh ; eb 02 ; 0xf8019 scsi.c:388 + mov BL, strict byte 0a8h ; b3 a8 ; 0xf801b scsi.c:390 + mov al, bl ; 88 d8 ; 0xf801d scsi.c:394 + add AL, strict byte 007h ; 04 07 ; 0xf801f + movzx cx, al ; 0f b6 c8 ; 0xf8021 + mov ax, cx ; 89 c8 ; 0xf8024 + call 0176ah ; e8 41 97 ; 0xf8026 + test al, al ; 84 c0 ; 0xf8029 + je short 08052h ; 74 25 ; 0xf802b + movzx ax, bl ; 0f b6 c3 ; 0xf802d scsi.c:399 + call 017a6h ; e8 73 97 ; 0xf8030 + mov dx, ax ; 89 c2 ; 0xf8033 + xor si, si ; 31 f6 ; 0xf8035 + mov al, bl ; 88 d8 ; 0xf8037 scsi.c:400 + add AL, strict byte 002h ; 04 02 ; 0xf8039 + xor ah, ah ; 30 e4 ; 0xf803b + call 0176ah ; e8 2a 97 ; 0xf803d + xor ah, ah ; 30 e4 ; 0xf8040 + mov word [bp-012h], ax ; 89 46 ee ; 0xf8042 + mov ax, cx ; 89 c8 ; 0xf8045 scsi.c:401 + call 0176ah ; e8 20 97 ; 0xf8047 + xor ah, ah ; 30 e4 ; 0xf804a + mov word [bp-016h], ax ; 89 46 ea ; 0xf804c + jmp near 0813dh ; e9 eb 00 ; 0xf804f scsi.c:403 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8052 scsi.c:404 + mov bx, word [bp-032h] ; 8b 5e ce ; 0xf8055 + mov cx, word [bp-01ah] ; 8b 4e e6 ; 0xf8058 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf805b + mov si, strict word 0000ch ; be 0c 00 ; 0xf805e + call 0ace0h ; e8 7c 2c ; 0xf8061 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf8064 + mov word [bp-018h], bx ; 89 5e e8 ; 0xf8067 + mov word [bp-024h], cx ; 89 4e dc ; 0xf806a + mov word [bp-01eh], dx ; 89 56 e2 ; 0xf806d + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8070 scsi.c:408 + test ax, ax ; 85 c0 ; 0xf8073 + jnbe short 0808dh ; 77 16 ; 0xf8075 + jne near 08100h ; 0f 85 85 00 ; 0xf8077 + cmp word [bp-032h], strict byte 00000h ; 83 7e ce 00 ; 0xf807b + jnbe short 0808dh ; 77 0c ; 0xf807f + jne near 08100h ; 0f 85 7b 00 ; 0xf8081 + cmp word [bp-01ah], strict byte 00040h ; 83 7e e6 40 ; 0xf8085 + jnbe short 0808dh ; 77 02 ; 0xf8089 + jne short 08100h ; 75 73 ; 0xf808b + mov word [bp-012h], 000ffh ; c7 46 ee ff 00 ; 0xf808d scsi.c:410 + mov word [bp-016h], strict word 0003fh ; c7 46 ea 3f 00 ; 0xf8092 scsi.c:411 + mov bx, word [bp-032h] ; 8b 5e ce ; 0xf8097 scsi.c:413 + mov cx, word [bp-01ah] ; 8b 4e e6 ; 0xf809a + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf809d + mov si, strict word 00006h ; be 06 00 ; 0xf80a0 + call 0ace0h ; e8 3a 2c ; 0xf80a3 + mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf80a6 + add si, dx ; 01 d6 ; 0xf80a9 + mov word [bp-028h], si ; 89 76 d8 ; 0xf80ab + mov dx, word [bp-024h] ; 8b 56 dc ; 0xf80ae + adc dx, cx ; 11 ca ; 0xf80b1 + mov word [bp-020h], dx ; 89 56 e0 ; 0xf80b3 + mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf80b6 + adc dx, bx ; 11 da ; 0xf80b9 + mov word [bp-036h], dx ; 89 56 ca ; 0xf80bb + mov dx, word [bp-01ch] ; 8b 56 e4 ; 0xf80be + adc dx, ax ; 11 c2 ; 0xf80c1 + mov word [bp-034h], dx ; 89 56 cc ; 0xf80c3 + mov ax, dx ; 89 d0 ; 0xf80c6 scsi.c:414 + mov bx, word [bp-036h] ; 8b 5e ca ; 0xf80c8 + mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf80cb + mov dx, si ; 89 f2 ; 0xf80ce + mov si, strict word 00008h ; be 08 00 ; 0xf80d0 + call 0ace0h ; e8 0a 2c ; 0xf80d3 + mov word [bp-02ah], bx ; 89 5e d6 ; 0xf80d6 + mov word [bp-02ch], cx ; 89 4e d4 ; 0xf80d9 + mov word [bp-02eh], dx ; 89 56 d2 ; 0xf80dc + mov ax, word [bp-034h] ; 8b 46 cc ; 0xf80df + mov bx, word [bp-036h] ; 8b 5e ca ; 0xf80e2 + mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf80e5 + mov dx, word [bp-028h] ; 8b 56 d8 ; 0xf80e8 + mov si, strict word 00010h ; be 10 00 ; 0xf80eb + call 0ace0h ; e8 ef 2b ; 0xf80ee + add dx, word [bp-02eh] ; 03 56 d2 ; 0xf80f1 + mov si, word [bp-02ch] ; 8b 76 d4 ; 0xf80f4 + adc si, cx ; 11 ce ; 0xf80f7 + mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf80f9 + adc ax, bx ; 11 d8 ; 0xf80fc + jmp short 0813dh ; eb 3d ; 0xf80fe scsi.c:416 + test ax, ax ; 85 c0 ; 0xf8100 + jnbe short 08116h ; 77 12 ; 0xf8102 + jne short 08122h ; 75 1c ; 0xf8104 + cmp word [bp-032h], strict byte 00000h ; 83 7e ce 00 ; 0xf8106 + jnbe short 08116h ; 77 0a ; 0xf810a + jne short 08122h ; 75 14 ; 0xf810c + cmp word [bp-01ah], strict byte 00020h ; 83 7e e6 20 ; 0xf810e + jnbe short 08116h ; 77 02 ; 0xf8112 + jne short 08122h ; 75 0c ; 0xf8114 + mov word [bp-012h], 00080h ; c7 46 ee 80 00 ; 0xf8116 scsi.c:418 + mov word [bp-016h], strict word 00020h ; c7 46 ea 20 00 ; 0xf811b scsi.c:419 + jmp short 0813bh ; eb 19 ; 0xf8120 scsi.c:422 + mov word [bp-012h], strict word 00040h ; c7 46 ee 40 00 ; 0xf8122 scsi.c:424 + mov word [bp-016h], strict word 00020h ; c7 46 ea 20 00 ; 0xf8127 scsi.c:425 + mov bx, word [bp-032h] ; 8b 5e ce ; 0xf812c scsi.c:426 + mov cx, word [bp-01ah] ; 8b 4e e6 ; 0xf812f + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf8132 + mov si, strict word 0000bh ; be 0b 00 ; 0xf8135 + call 0ace0h ; e8 a5 2b ; 0xf8138 + mov si, cx ; 89 ce ; 0xf813b + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf813d scsi.c:431 + add AL, strict byte 008h ; 04 08 ; 0xf8140 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf8142 + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf8145 scsi.c:433 + sal ax, 002h ; c1 e0 02 ; 0xf8149 + mov es, [bp-022h] ; 8e 46 de ; 0xf814c + mov bx, di ; 89 fb ; 0xf814f + add bx, ax ; 01 c3 ; 0xf8151 + mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf8153 + mov word [es:bx+00290h], ax ; 26 89 87 90 02 ; 0xf8157 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf815c scsi.c:434 + mov byte [es:bx+00292h], al ; 26 88 87 92 02 ; 0xf815f + mov al, byte [bp-030h] ; 8a 46 d0 ; 0xf8164 scsi.c:435 + mov byte [es:bx+00293h], al ; 26 88 87 93 02 ; 0xf8167 + movzx bx, byte [bp-00ah] ; 0f b6 5e f6 ; 0xf816c scsi.c:436 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf8170 + add bx, di ; 01 fb ; 0xf8173 + db 066h, 026h, 0c7h, 047h, 01eh, 004h, 0ffh, 000h, 000h + ; mov dword [es:bx+01eh], strict dword 00000ff04h ; 66 26 c7 47 1e 04 ff 00 00; 0xf8175 + mov ax, word [bp-026h] ; 8b 46 da ; 0xf817e scsi.c:440 + mov word [es:bx+024h], ax ; 26 89 47 24 ; 0xf8181 + mov byte [es:bx+023h], 001h ; 26 c6 47 23 01 ; 0xf8185 scsi.c:441 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf818a scsi.c:444 + mov word [es:bx+026h], ax ; 26 89 47 26 ; 0xf818d + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf8191 scsi.c:445 + mov word [es:bx+02ah], ax ; 26 89 47 2a ; 0xf8194 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf8198 scsi.c:446 + mov word [es:bx+02ch], ax ; 26 89 47 2c ; 0xf819b + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf819f scsi.c:447 + mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf81a2 + test si, si ; 85 f6 ; 0xf81a6 scsi.c:449 + jne short 081b0h ; 75 06 ; 0xf81a8 + cmp dx, 00400h ; 81 fa 00 04 ; 0xf81aa + jbe short 081beh ; 76 0e ; 0xf81ae + mov word [es:bx+028h], 00400h ; 26 c7 47 28 00 04 ; 0xf81b0 scsi.c:450 + mov word [es:bx+02eh], 00400h ; 26 c7 47 2e 00 04 ; 0xf81b6 scsi.c:451 + jmp short 081c6h ; eb 08 ; 0xf81bc scsi.c:452 + mov word [es:bx+028h], dx ; 26 89 57 28 ; 0xf81be scsi.c:453 + mov word [es:bx+02eh], dx ; 26 89 57 2e ; 0xf81c2 scsi.c:454 + mov bx, 00e06h ; bb 06 0e ; 0xf81c6 scsi.c:458 + mov cx, ds ; 8c d9 ; 0xf81c9 + mov ax, strict word 00004h ; b8 04 00 ; 0xf81cb + call 01a27h ; e8 56 98 ; 0xf81ce + push word [bp-010h] ; ff 76 f0 ; 0xf81d1 + push word [bp-032h] ; ff 76 ce ; 0xf81d4 + push word [bp-01ah] ; ff 76 e6 ; 0xf81d7 + push dword [bp-016h] ; 66 ff 76 ea ; 0xf81da + push word [bp-012h] ; ff 76 ee ; 0xf81de + push si ; 56 ; 0xf81e1 + push dx ; 52 ; 0xf81e2 + push word [bp-030h] ; ff 76 d0 ; 0xf81e3 + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf81e6 + push ax ; 50 ; 0xf81ea + push 00c7fh ; 68 7f 0c ; 0xf81eb + push strict byte 00004h ; 6a 04 ; 0xf81ee + call 01a68h ; e8 75 98 ; 0xf81f0 + add sp, strict byte 00018h ; 83 c4 18 ; 0xf81f3 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf81f6 scsi.c:460 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf81fa + mov es, [bp-022h] ; 8e 46 de ; 0xf81fd + mov bx, di ; 89 fb ; 0xf8200 + add bx, ax ; 01 c3 ; 0xf8202 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8204 + mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf8207 + mov ax, word [bp-032h] ; 8b 46 ce ; 0xf820b + mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf820e + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf8212 + mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf8215 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf8219 + mov word [es:bx+032h], ax ; 26 89 47 32 ; 0xf821c + mov al, byte [es:di+0024eh] ; 26 8a 85 4e 02 ; 0xf8220 scsi.c:463 + mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf8225 scsi.c:464 + add ah, 008h ; 80 c4 08 ; 0xf8228 + movzx bx, al ; 0f b6 d8 ; 0xf822b + add bx, di ; 01 fb ; 0xf822e + mov byte [es:bx+0024fh], ah ; 26 88 a7 4f 02 ; 0xf8230 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf8235 scsi.c:465 + mov byte [es:di+0024eh], al ; 26 88 85 4e 02 ; 0xf8237 scsi.c:466 + mov bx, strict word 00075h ; bb 75 00 ; 0xf823c scsi.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf823f + mov es, ax ; 8e c0 ; 0xf8242 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf8244 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf8247 scsi.c:470 + mov byte [es:bx], al ; 26 88 07 ; 0xf8249 scsi.c:53 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf824c scsi.c:473 + jmp near 082fch ; e9 aa 00 ; 0xf824f scsi.c:475 + test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf8252 scsi.c:481 + jne near 082fch ; 0f 85 a1 00 ; 0xf8257 + mov al, byte [bp-00246h] ; 8a 86 ba fd ; 0xf825b + and AL, strict byte 01fh ; 24 1f ; 0xf825f + cmp AL, strict byte 005h ; 3c 05 ; 0xf8261 + jne near 082fch ; 0f 85 95 00 ; 0xf8263 + mov bx, 00e06h ; bb 06 0e ; 0xf8267 scsi.c:487 + mov cx, ds ; 8c d9 ; 0xf826a + mov ax, strict word 00004h ; b8 04 00 ; 0xf826c + call 01a27h ; e8 b5 97 ; 0xf826f + push word [bp-030h] ; ff 76 d0 ; 0xf8272 + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf8275 + push ax ; 50 ; 0xf8279 + push 00cadh ; 68 ad 0c ; 0xf827a + push strict byte 00004h ; 6a 04 ; 0xf827d + call 01a68h ; e8 e6 97 ; 0xf827f + add sp, strict byte 00008h ; 83 c4 08 ; 0xf8282 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8285 scsi.c:490 + add AL, strict byte 008h ; 04 08 ; 0xf8288 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf828a + test byte [bp-00245h], 080h ; f6 86 bb fd 80 ; 0xf828d scsi.c:492 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf8292 + xor ah, ah ; 30 e4 ; 0xf8295 + mov dx, ax ; 89 c2 ; 0xf8297 + movzx bx, byte [bp-00ch] ; 0f b6 5e f4 ; 0xf8299 scsi.c:494 + sal bx, 002h ; c1 e3 02 ; 0xf829d + mov es, [bp-022h] ; 8e 46 de ; 0xf82a0 + add bx, di ; 01 fb ; 0xf82a3 + mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf82a5 + mov word [es:bx+00290h], ax ; 26 89 87 90 02 ; 0xf82a9 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf82ae scsi.c:495 + mov byte [es:bx+00292h], al ; 26 88 87 92 02 ; 0xf82b1 + mov al, byte [bp-030h] ; 8a 46 d0 ; 0xf82b6 scsi.c:496 + mov byte [es:bx+00293h], al ; 26 88 87 93 02 ; 0xf82b9 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf82be scsi.c:497 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf82c2 + mov bx, di ; 89 fb ; 0xf82c5 + add bx, ax ; 01 c3 ; 0xf82c7 + mov word [es:bx+01eh], 00504h ; 26 c7 47 1e 04 05 ; 0xf82c9 + mov byte [es:bx+020h], dl ; 26 88 57 20 ; 0xf82cf scsi.c:499 + mov word [es:bx+024h], 00800h ; 26 c7 47 24 00 08 ; 0xf82d3 scsi.c:500 + mov byte [es:bx+023h], dh ; 26 88 77 23 ; 0xf82d9 scsi.c:501 + mov al, byte [es:di+00263h] ; 26 8a 85 63 02 ; 0xf82dd scsi.c:504 + mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf82e2 scsi.c:505 + add ah, 008h ; 80 c4 08 ; 0xf82e5 + movzx bx, al ; 0f b6 d8 ; 0xf82e8 + add bx, di ; 01 fb ; 0xf82eb + mov byte [es:bx+00264h], ah ; 26 88 a7 64 02 ; 0xf82ed + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf82f2 scsi.c:506 + mov byte [es:di+00263h], al ; 26 88 85 63 02 ; 0xf82f4 scsi.c:507 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf82f9 scsi.c:509 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf82fc scsi.c:514 + mov es, [bp-022h] ; 8e 46 de ; 0xf82ff + mov byte [es:di+002a0h], al ; 26 88 85 a0 02 ; 0xf8302 + inc word [bp-030h] ; ff 46 d0 ; 0xf8307 scsi.c:515 + cmp word [bp-030h], strict byte 00010h ; 83 7e d0 10 ; 0xf830a + jnl short 08353h ; 7d 43 ; 0xf830e + mov byte [bp-046h], 012h ; c6 46 ba 12 ; 0xf8310 + xor al, al ; 30 c0 ; 0xf8314 + mov byte [bp-045h], al ; 88 46 bb ; 0xf8316 + mov byte [bp-044h], al ; 88 46 bc ; 0xf8319 + mov byte [bp-043h], al ; 88 46 bd ; 0xf831c + mov byte [bp-042h], 005h ; c6 46 be 05 ; 0xf831f + mov byte [bp-041h], al ; 88 46 bf ; 0xf8323 + movzx si, byte [bp-00eh] ; 0f b6 76 f2 ; 0xf8326 + imul si, si, strict byte 0000ah ; 6b f6 0a ; 0xf832a + push dword 000000005h ; 66 6a 05 ; 0xf832d + lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf8330 + push SS ; 16 ; 0xf8334 + push dx ; 52 ; 0xf8335 + push strict byte 00006h ; 6a 06 ; 0xf8336 + lea dx, [bp-046h] ; 8d 56 ba ; 0xf8338 + push SS ; 16 ; 0xf833b + push dx ; 52 ; 0xf833c + movzx bx, byte [bp-030h] ; 0f b6 5e d0 ; 0xf833d + xor ah, ah ; 30 e4 ; 0xf8341 + mov dx, word [bp-00248h] ; 8b 96 b8 fd ; 0xf8343 + call word [si+000a2h] ; ff 94 a2 00 ; 0xf8347 + test al, al ; 84 c0 ; 0xf834b + je near 07ef9h ; 0f 84 a8 fb ; 0xf834d + jmp short 08307h ; eb b4 ; 0xf8351 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf8353 scsi.c:516 + pop di ; 5f ; 0xf8356 + pop si ; 5e ; 0xf8357 + pop cx ; 59 ; 0xf8358 + pop bx ; 5b ; 0xf8359 + pop bp ; 5d ; 0xf835a + retn ; c3 ; 0xf835b + ; disGetNextSymbol 0xf835c LB 0x2a40 -> off=0x0 cb=0000000000000075 uValue=00000000000f6d5c 'scsi_init' +scsi_init: ; 0xf835c LB 0x75 + push bp ; 55 ; 0xf835c scsi.c:521 + mov bp, sp ; 89 e5 ; 0xf835d + push si ; 56 ; 0xf835f + push di ; 57 ; 0xf8360 + push ax ; 50 ; 0xf8361 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8362 scsi.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8365 + mov es, ax ; 8e c0 ; 0xf8368 + mov es, [es:bx] ; 26 8e 07 ; 0xf836a + mov bx, strict word 0005eh ; bb 5e 00 ; 0xf836d scsi.c:59 + mov byte [es:bx+002a0h], 000h ; 26 c6 87 a0 02 00 ; 0xf8370 scsi.c:527 + mov word [bp-006h], strict word 00000h ; c7 46 fa 00 00 ; 0xf8376 scsi.c:530 + jmp short 083a9h ; eb 2c ; 0xf837b + xor dl, dl ; 30 d2 ; 0xf837d scsi.c:541 + mov ax, dx ; 89 d0 ; 0xf837f + shr ax, 008h ; c1 e8 08 ; 0xf8381 + mov di, bx ; 89 df ; 0xf8384 scsi.c:545 + xor ch, ch ; 30 ed ; 0xf8386 + movzx bx, al ; 0f b6 d8 ; 0xf8388 + xor ax, ax ; 31 c0 ; 0xf838b + mov dx, si ; 89 f2 ; 0xf838d + call word [di+0009eh] ; ff 95 9e 00 ; 0xf838f + test ax, ax ; 85 c0 ; 0xf8393 scsi.c:546 + jne short 083a0h ; 75 09 ; 0xf8395 + movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf8397 scsi.c:547 + mov ax, si ; 89 f0 ; 0xf839b + call 07ed1h ; e8 31 fb ; 0xf839d + inc word [bp-006h] ; ff 46 fa ; 0xf83a0 scsi.c:550 + cmp word [bp-006h], strict byte 00004h ; 83 7e fa 04 ; 0xf83a3 + jnc short 083cah ; 73 21 ; 0xf83a7 + imul bx, word [bp-006h], strict byte 0000ah ; 6b 5e fa 0a ; 0xf83a9 + mov dx, word [bx+0009ch] ; 8b 97 9c 00 ; 0xf83ad + mov ax, word [bx+0009ah] ; 8b 87 9a 00 ; 0xf83b1 + call 0aa78h ; e8 c0 26 ; 0xf83b5 + mov dx, ax ; 89 c2 ; 0xf83b8 + mov cx, ax ; 89 c1 ; 0xf83ba + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf83bc + je short 083a0h ; 74 df ; 0xf83bf + call 07b8ch ; e8 c8 f7 ; 0xf83c1 + mov si, ax ; 89 c6 ; 0xf83c4 + test ax, ax ; 85 c0 ; 0xf83c6 + jne short 0837dh ; 75 b3 ; 0xf83c8 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf83ca scsi.c:551 + pop di ; 5f ; 0xf83cd + pop si ; 5e ; 0xf83ce + pop bp ; 5d ; 0xf83cf + retn ; c3 ; 0xf83d0 + ; disGetNextSymbol 0xf83d1 LB 0x29cb -> off=0x0 cb=000000000000001b uValue=00000000000f6dd1 'ahci_ctrl_extract_bits' +ahci_ctrl_extract_bits: ; 0xf83d1 LB 0x1b + push si ; 56 ; 0xf83d1 ahci.c:287 + push bp ; 55 ; 0xf83d2 + mov bp, sp ; 89 e5 ; 0xf83d3 + mov si, bx ; 89 de ; 0xf83d5 + and ax, bx ; 21 d8 ; 0xf83d7 ahci.c:289 + and dx, cx ; 21 ca ; 0xf83d9 + movzx cx, byte [bp+006h] ; 0f b6 4e 06 ; 0xf83db + jcxz 083e7h ; e3 06 ; 0xf83df + shr dx, 1 ; d1 ea ; 0xf83e1 + rcr ax, 1 ; d1 d8 ; 0xf83e3 + loop 083e1h ; e2 fa ; 0xf83e5 + pop bp ; 5d ; 0xf83e7 ahci.c:290 + pop si ; 5e ; 0xf83e8 + retn 00002h ; c2 02 00 ; 0xf83e9 + ; disGetNextSymbol 0xf83ec LB 0x29b0 -> off=0x0 cb=000000000000001e uValue=00000000000f6dec 'ahci_addr_to_phys' +ahci_addr_to_phys: ; 0xf83ec LB 0x1e + push bx ; 53 ; 0xf83ec ahci.c:295 + push cx ; 51 ; 0xf83ed + push bp ; 55 ; 0xf83ee + mov bp, sp ; 89 e5 ; 0xf83ef + mov bx, ax ; 89 c3 ; 0xf83f1 + mov ax, dx ; 89 d0 ; 0xf83f3 + xor dx, dx ; 31 d2 ; 0xf83f5 ahci.c:297 + mov cx, strict word 00004h ; b9 04 00 ; 0xf83f7 + sal ax, 1 ; d1 e0 ; 0xf83fa + rcl dx, 1 ; d1 d2 ; 0xf83fc + loop 083fah ; e2 fa ; 0xf83fe + xor cx, cx ; 31 c9 ; 0xf8400 + add ax, bx ; 01 d8 ; 0xf8402 + adc dx, cx ; 11 ca ; 0xf8404 + pop bp ; 5d ; 0xf8406 ahci.c:298 + pop cx ; 59 ; 0xf8407 + pop bx ; 5b ; 0xf8408 + retn ; c3 ; 0xf8409 + ; disGetNextSymbol 0xf840a LB 0x2992 -> off=0x0 cb=000000000000014b uValue=00000000000f6e0a 'ahci_port_cmd_sync' +ahci_port_cmd_sync: ; 0xf840a LB 0x14b + push bp ; 55 ; 0xf840a ahci.c:303 + mov bp, sp ; 89 e5 ; 0xf840b + push cx ; 51 ; 0xf840d + push si ; 56 ; 0xf840e + push di ; 57 ; 0xf840f + push ax ; 50 ; 0xf8410 + mov si, ax ; 89 c6 ; 0xf8411 + mov cx, dx ; 89 d1 ; 0xf8413 + mov al, bl ; 88 d8 ; 0xf8415 + mov es, dx ; 8e c2 ; 0xf8417 ahci.c:308 + mov ah, byte [es:si+00262h] ; 26 8a a4 62 02 ; 0xf8419 + mov byte [bp-008h], ah ; 88 66 f8 ; 0xf841e + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8421 ahci.c:309 + cmp ah, 0ffh ; 80 fc ff ; 0xf8426 ahci.c:311 + je near 0854dh ; 0f 84 20 01 ; 0xf8429 + movzx dx, byte [es:si+00263h] ; 26 0f b6 94 63 02 ; 0xf842d ahci.c:314 + xor di, di ; 31 ff ; 0xf8433 + or di, 00080h ; 81 cf 80 00 ; 0xf8435 + xor ah, ah ; 30 e4 ; 0xf8439 + or di, ax ; 09 c7 ; 0xf843b + mov word [es:si], di ; 26 89 3c ; 0xf843d + mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf8440 + 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; 0xf8444 ahci.c:315 + lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf844d ahci.c:316 + mov dx, cx ; 89 ca ; 0xf8451 + call 083ech ; e8 96 ff ; 0xf8453 + mov es, cx ; 8e c1 ; 0xf8456 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8458 + mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf845c + movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf8460 ahci.c:319 + sal di, 007h ; c1 e7 07 ; 0xf8464 + lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8467 + xor cx, cx ; 31 c9 ; 0xf846b ahci.c:260 + mov dx, bx ; 89 da ; 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 si, [bx+004h] ; 8d 77 04 ; 0xf8478 ahci.c:261 + mov dx, si ; 89 f2 ; 0xf847b + in eax, DX ; 66 ed ; 0xf847d + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf847f + shr eax, 010h ; 66 c1 e8 10 ; 0xf8481 + xchg dx, ax ; 92 ; 0xf8485 + or AL, strict byte 011h ; 0c 11 ; 0xf8486 + mov cx, dx ; 89 d1 ; 0xf8488 + mov dx, si ; 89 f2 ; 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 ax, [di+00138h] ; 8d 85 38 01 ; 0xf8495 ahci.c:323 + cwd ; 99 ; 0xf8499 + mov cx, dx ; 89 d1 ; 0xf849a + mov dx, bx ; 89 da ; 0xf849c + xchg cx, ax ; 91 ; 0xf849e + sal eax, 010h ; 66 c1 e0 10 ; 0xf849f + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf84a3 + out DX, eax ; 66 ef ; 0xf84a5 + mov ax, strict word 00001h ; b8 01 00 ; 0xf84a7 + xor cx, cx ; 31 c9 ; 0xf84aa + mov dx, si ; 89 f2 ; 0xf84ac + xchg cx, ax ; 91 ; 0xf84ae + sal eax, 010h ; 66 c1 e0 10 ; 0xf84af + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf84b3 + out DX, eax ; 66 ef ; 0xf84b5 + movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf84b7 ahci.c:327 + sal ax, 007h ; c1 e0 07 ; 0xf84bb + add ax, 00110h ; 05 10 01 ; 0xf84be + xor cx, cx ; 31 c9 ; 0xf84c1 ahci.c:279 + mov dx, bx ; 89 da ; 0xf84c3 + xchg cx, ax ; 91 ; 0xf84c5 + sal eax, 010h ; 66 c1 e0 10 ; 0xf84c6 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf84ca + out DX, eax ; 66 ef ; 0xf84cc + lea dx, [bx+004h] ; 8d 57 04 ; 0xf84ce ahci.c:280 + in eax, DX ; 66 ed ; 0xf84d1 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf84d3 + shr eax, 010h ; 66 c1 e8 10 ; 0xf84d5 + xchg dx, ax ; 92 ; 0xf84d9 + test dh, 040h ; f6 c6 40 ; 0xf84da + jne short 084e3h ; 75 04 ; 0xf84dd + test AL, strict byte 001h ; a8 01 ; 0xf84df + je short 084e7h ; 74 04 ; 0xf84e1 + mov AL, strict byte 001h ; b0 01 ; 0xf84e3 + jmp short 084e9h ; eb 02 ; 0xf84e5 + xor al, al ; 30 c0 ; 0xf84e7 + test al, al ; 84 c0 ; 0xf84e9 ahci.c:281 + je short 084b7h ; 74 ca ; 0xf84eb + movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf84ed ahci.c:333 + sal di, 007h ; c1 e7 07 ; 0xf84f1 + lea ax, [di+00110h] ; 8d 85 10 01 ; 0xf84f4 + xor cx, cx ; 31 c9 ; 0xf84f8 ahci.c:260 + mov dx, bx ; 89 da ; 0xf84fa + xchg cx, ax ; 91 ; 0xf84fc + sal eax, 010h ; 66 c1 e0 10 ; 0xf84fd + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8501 + out DX, eax ; 66 ef ; 0xf8503 + lea si, [bx+004h] ; 8d 77 04 ; 0xf8505 ahci.c:261 + mov dx, si ; 89 f2 ; 0xf8508 + in eax, DX ; 66 ed ; 0xf850a + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf850c + shr eax, 010h ; 66 c1 e8 10 ; 0xf850e + xchg dx, ax ; 92 ; 0xf8512 + or AL, strict byte 001h ; 0c 01 ; 0xf8513 + mov cx, dx ; 89 d1 ; 0xf8515 + mov dx, si ; 89 f2 ; 0xf8517 + xchg cx, ax ; 91 ; 0xf8519 + sal eax, 010h ; 66 c1 e0 10 ; 0xf851a + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf851e + out DX, eax ; 66 ef ; 0xf8520 + lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8522 ahci.c:337 + xor cx, cx ; 31 c9 ; 0xf8526 ahci.c:269 + mov dx, bx ; 89 da ; 0xf8528 + xchg cx, ax ; 91 ; 0xf852a + sal eax, 010h ; 66 c1 e0 10 ; 0xf852b + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf852f + out DX, eax ; 66 ef ; 0xf8531 + mov dx, si ; 89 f2 ; 0xf8533 ahci.c:270 + in eax, DX ; 66 ed ; 0xf8535 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8537 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8539 + xchg dx, ax ; 92 ; 0xf853d + and AL, strict byte 0feh ; 24 fe ; 0xf853e + mov cx, dx ; 89 d1 ; 0xf8540 + mov dx, si ; 89 f2 ; 0xf8542 + xchg cx, ax ; 91 ; 0xf8544 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8545 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8549 + out DX, eax ; 66 ef ; 0xf854b + lea sp, [bp-006h] ; 8d 66 fa ; 0xf854d ahci.c:343 + pop di ; 5f ; 0xf8550 + pop si ; 5e ; 0xf8551 + pop cx ; 59 ; 0xf8552 + pop bp ; 5d ; 0xf8553 + retn ; c3 ; 0xf8554 + ; disGetNextSymbol 0xf8555 LB 0x2847 -> off=0x0 cb=0000000000000216 uValue=00000000000f6f55 'ahci_cmd_data' +ahci_cmd_data: ; 0xf8555 LB 0x216 + push bp ; 55 ; 0xf8555 ahci.c:348 + mov bp, sp ; 89 e5 ; 0xf8556 + push cx ; 51 ; 0xf8558 + push si ; 56 ; 0xf8559 + push di ; 57 ; 0xf855a + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf855b + mov di, ax ; 89 c7 ; 0xf855e + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf8560 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8563 + mov word [bp-012h], strict word 00000h ; c7 46 ee 00 00 ; 0xf8566 ahci.c:350 + mov es, dx ; 8e c2 ; 0xf856b + mov ax, word [es:di+002a6h] ; 26 8b 85 a6 02 ; 0xf856d + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf8572 + mov word [bp-010h], strict word 00000h ; c7 46 f0 00 00 ; 0xf8575 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf857a + mov ax, word [es:di+00eh] ; 26 8b 45 0e ; 0xf857d ahci.c:351 + mov word [bp-016h], ax ; 89 46 ea ; 0xf8581 + mov ax, word [es:di+010h] ; 26 8b 45 10 ; 0xf8584 ahci.c:352 + mov word [bp-014h], ax ; 89 46 ec ; 0xf8588 + mov cx, strict word 00040h ; b9 40 00 ; 0xf858b ahci.c:355 + xor bx, bx ; 31 db ; 0xf858e + mov ax, 00080h ; b8 80 00 ; 0xf8590 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8593 + call 0ad00h ; e8 67 27 ; 0xf8596 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8599 ahci.c:358 + mov bx, word [bp-012h] ; 8b 5e ee ; 0xf859c + mov word [es:bx+00080h], 08027h ; 26 c7 87 80 00 27 80 ; 0xf859f + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf85a6 ahci.c:360 + mov byte [es:bx+00082h], al ; 26 88 87 82 00 ; 0xf85a9 + mov byte [es:bx+00083h], 000h ; 26 c6 87 83 00 00 ; 0xf85ae ahci.c:361 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf85b4 ahci.c:363 + mov ax, word [es:di] ; 26 8b 05 ; 0xf85b7 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85ba + mov byte [es:bx+00084h], al ; 26 88 87 84 00 ; 0xf85bd + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf85c2 ahci.c:364 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf85c5 + mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf85c9 + mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf85cd + mov dx, word [es:di] ; 26 8b 15 ; 0xf85d1 + mov si, strict word 00008h ; be 08 00 ; 0xf85d4 + call 0ace0h ; e8 06 27 ; 0xf85d7 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85da + mov bx, word [bp-012h] ; 8b 5e ee ; 0xf85dd + mov byte [es:bx+00085h], dl ; 26 88 97 85 00 ; 0xf85e0 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf85e5 ahci.c:365 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf85e8 + mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf85ec + mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf85f0 + mov dx, word [es:di] ; 26 8b 15 ; 0xf85f4 + mov si, strict word 00010h ; be 10 00 ; 0xf85f7 + call 0ace0h ; e8 e3 26 ; 0xf85fa + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85fd + mov bx, word [bp-012h] ; 8b 5e ee ; 0xf8600 + mov byte [es:bx+00086h], dl ; 26 88 97 86 00 ; 0xf8603 + mov byte [es:bx+00087h], 040h ; 26 c6 87 87 00 40 ; 0xf8608 ahci.c:366 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf860e ahci.c:368 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf8611 + mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf8615 + mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf8619 + mov dx, word [es:di] ; 26 8b 15 ; 0xf861d + mov si, strict word 00018h ; be 18 00 ; 0xf8620 + call 0ace0h ; e8 ba 26 ; 0xf8623 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8626 + mov bx, word [bp-012h] ; 8b 5e ee ; 0xf8629 + mov byte [es:bx+00088h], dl ; 26 88 97 88 00 ; 0xf862c + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf8631 ahci.c:369 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf8634 + mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf8638 + mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf863c + mov dx, word [es:di] ; 26 8b 15 ; 0xf8640 + mov si, strict word 00020h ; be 20 00 ; 0xf8643 + call 0ace0h ; e8 97 26 ; 0xf8646 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8649 + mov bx, word [bp-012h] ; 8b 5e ee ; 0xf864c + mov byte [es:bx+00089h], dl ; 26 88 97 89 00 ; 0xf864f + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf8654 ahci.c:370 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf8657 + mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf865b + mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf865f + mov dx, word [es:di] ; 26 8b 15 ; 0xf8663 + mov si, strict word 00028h ; be 28 00 ; 0xf8666 + call 0ace0h ; e8 74 26 ; 0xf8669 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf866c + mov bx, word [bp-012h] ; 8b 5e ee ; 0xf866f + mov byte [es:bx+0008ah], dl ; 26 88 97 8a 00 ; 0xf8672 + mov byte [es:bx+0008bh], 000h ; 26 c6 87 8b 00 00 ; 0xf8677 ahci.c:371 + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf867d ahci.c:373 + mov byte [es:bx+0008ch], al ; 26 88 87 8c 00 ; 0xf8680 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf8685 ahci.c:374 + shr ax, 008h ; c1 e8 08 ; 0xf8688 + mov byte [es:bx+0008dh], al ; 26 88 87 8d 00 ; 0xf868b + mov word [es:bx+00272h], strict word 00010h ; 26 c7 87 72 02 10 00 ; 0xf8690 ahci.c:377 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf8697 ahci.c:379 + xor dx, dx ; 31 d2 ; 0xf869a + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf869c + xor cx, cx ; 31 c9 ; 0xf869f + call 0ac60h ; e8 bc 25 ; 0xf86a1 + push dx ; 52 ; 0xf86a4 + push ax ; 50 ; 0xf86a5 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf86a6 + mov bx, word [es:di+008h] ; 26 8b 5d 08 ; 0xf86a9 + mov cx, word [es:di+00ah] ; 26 8b 4d 0a ; 0xf86ad + mov ax, 00266h ; b8 66 02 ; 0xf86b1 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf86b4 + call 0abach ; e8 f2 24 ; 0xf86b7 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf86ba ahci.c:382 + mov bx, word [bp-012h] ; 8b 5e ee ; 0xf86bd + mov ax, word [es:bx+0027ah] ; 26 8b 87 7a 02 ; 0xf86c0 + add ax, strict word 0ffffh ; 05 ff ff ; 0xf86c5 + mov dx, word [es:bx+0027ch] ; 26 8b 97 7c 02 ; 0xf86c8 + adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf86cd + mov di, bx ; 89 df ; 0xf86d0 + movzx di, byte [es:di+00263h] ; 26 0f b6 bd 63 02 ; 0xf86d2 + sal di, 004h ; c1 e7 04 ; 0xf86d8 + mov word [es:di+0010ch], ax ; 26 89 85 0c 01 ; 0xf86db + mov word [es:di+0010eh], dx ; 26 89 95 0e 01 ; 0xf86e0 + mov di, bx ; 89 df ; 0xf86e5 ahci.c:383 + movzx di, byte [es:di+00263h] ; 26 0f b6 bd 63 02 ; 0xf86e7 + sal di, 004h ; c1 e7 04 ; 0xf86ed + mov si, bx ; 89 de ; 0xf86f0 + mov dx, word [es:si+00276h] ; 26 8b 94 76 02 ; 0xf86f2 + mov ax, word [es:si+00278h] ; 26 8b 84 78 02 ; 0xf86f7 + mov word [es:di+00100h], dx ; 26 89 95 00 01 ; 0xf86fc + mov word [es:di+00102h], ax ; 26 89 85 02 01 ; 0xf8701 + inc byte [es:bx+00263h] ; 26 fe 87 63 02 ; 0xf8706 ahci.c:384 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf870b ahci.c:398 + cmp AL, strict byte 035h ; 3c 35 ; 0xf870e + jne short 08718h ; 75 06 ; 0xf8710 + mov byte [bp-008h], 040h ; c6 46 f8 40 ; 0xf8712 ahci.c:399 + jmp short 0872ch ; eb 14 ; 0xf8716 ahci.c:400 + cmp AL, strict byte 0a0h ; 3c a0 ; 0xf8718 + jne short 08728h ; 75 0c ; 0xf871a + or byte [bp-008h], 020h ; 80 4e f8 20 ; 0xf871c ahci.c:401 + or byte [es:bx+00083h], 001h ; 26 80 8f 83 00 01 ; 0xf8720 ahci.c:402 + jmp short 0872ch ; eb 04 ; 0xf8726 ahci.c:403 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf8728 ahci.c:404 + or byte [bp-008h], 005h ; 80 4e f8 05 ; 0xf872c ahci.c:406 + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf8730 ahci.c:408 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8734 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8737 + call 0840ah ; e8 cd fc ; 0xf873a + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf873d ahci.c:411 + mov di, word [bp-010h] ; 8b 7e f0 ; 0xf8740 + add di, 00240h ; 81 c7 40 02 ; 0xf8743 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8747 ahci.c:415 + add ax, 00266h ; 05 66 02 ; 0xf874a + mov dx, bx ; 89 da ; 0xf874d + call 0ac25h ; e8 d3 24 ; 0xf874f + mov es, bx ; 8e c3 ; 0xf8752 ahci.c:416 + mov al, byte [es:di+003h] ; 26 8a 45 03 ; 0xf8754 + test al, al ; 84 c0 ; 0xf8758 + je short 08761h ; 74 05 ; 0xf875a + mov ax, strict word 00004h ; b8 04 00 ; 0xf875c + jmp short 08763h ; eb 02 ; 0xf875f + xor ah, ah ; 30 e4 ; 0xf8761 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf8763 ahci.c:417 + pop di ; 5f ; 0xf8766 + pop si ; 5e ; 0xf8767 + pop cx ; 59 ; 0xf8768 + pop bp ; 5d ; 0xf8769 + retn ; c3 ; 0xf876a + ; disGetNextSymbol 0xf876b LB 0x2631 -> off=0x0 cb=000000000000017f uValue=00000000000f716b 'ahci_port_deinit_current' +ahci_port_deinit_current: ; 0xf876b LB 0x17f + push bp ; 55 ; 0xf876b ahci.c:422 + mov bp, sp ; 89 e5 ; 0xf876c + push bx ; 53 ; 0xf876e + push cx ; 51 ; 0xf876f + push si ; 56 ; 0xf8770 + push di ; 57 ; 0xf8771 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8772 + mov di, ax ; 89 c7 ; 0xf8775 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf8777 + mov es, dx ; 8e c2 ; 0xf877a ahci.c:427 + mov si, word [es:di+00260h] ; 26 8b b5 60 02 ; 0xf877c + mov al, byte [es:di+00262h] ; 26 8a 85 62 02 ; 0xf8781 ahci.c:428 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf8786 + cmp AL, strict byte 0ffh ; 3c ff ; 0xf8789 ahci.c:430 + je near 088e1h ; 0f 84 52 01 ; 0xf878b + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf878f ahci.c:433 + sal ax, 007h ; c1 e0 07 ; 0xf8793 + add ax, 00118h ; 05 18 01 ; 0xf8796 + xor cx, cx ; 31 c9 ; 0xf8799 ahci.c:269 + mov dx, si ; 89 f2 ; 0xf879b + xchg cx, ax ; 91 ; 0xf879d + sal eax, 010h ; 66 c1 e0 10 ; 0xf879e + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf87a2 + out DX, eax ; 66 ef ; 0xf87a4 + lea bx, [si+004h] ; 8d 5c 04 ; 0xf87a6 ahci.c:270 + mov dx, bx ; 89 da ; 0xf87a9 + in eax, DX ; 66 ed ; 0xf87ab + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf87ad + shr eax, 010h ; 66 c1 e8 10 ; 0xf87af + xchg dx, ax ; 92 ; 0xf87b3 + and AL, strict byte 0eeh ; 24 ee ; 0xf87b4 + mov cx, dx ; 89 d1 ; 0xf87b6 + mov dx, bx ; 89 da ; 0xf87b8 + xchg cx, ax ; 91 ; 0xf87ba + sal eax, 010h ; 66 c1 e0 10 ; 0xf87bb + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf87bf + out DX, eax ; 66 ef ; 0xf87c1 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf87c3 ahci.c:436 + sal ax, 007h ; c1 e0 07 ; 0xf87c7 + add ax, 00118h ; 05 18 01 ; 0xf87ca + xor cx, cx ; 31 c9 ; 0xf87cd ahci.c:279 + mov dx, si ; 89 f2 ; 0xf87cf + xchg cx, ax ; 91 ; 0xf87d1 + sal eax, 010h ; 66 c1 e0 10 ; 0xf87d2 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf87d6 + out DX, eax ; 66 ef ; 0xf87d8 + lea dx, [si+004h] ; 8d 54 04 ; 0xf87da ahci.c:280 + in eax, DX ; 66 ed ; 0xf87dd + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf87df + shr eax, 010h ; 66 c1 e8 10 ; 0xf87e1 + xchg dx, ax ; 92 ; 0xf87e5 + test ax, 0c011h ; a9 11 c0 ; 0xf87e6 + je short 087efh ; 74 04 ; 0xf87e9 + mov AL, strict byte 001h ; b0 01 ; 0xf87eb + jmp short 087f1h ; eb 02 ; 0xf87ed + xor al, al ; 30 c0 ; 0xf87ef + cmp AL, strict byte 001h ; 3c 01 ; 0xf87f1 ahci.c:281 + je short 087c3h ; 74 ce ; 0xf87f3 + mov cx, strict word 00020h ; b9 20 00 ; 0xf87f5 ahci.c:447 + xor bx, bx ; 31 db ; 0xf87f8 + mov ax, di ; 89 f8 ; 0xf87fa + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf87fc + call 0ad00h ; e8 fe 24 ; 0xf87ff + lea ax, [di+00080h] ; 8d 85 80 00 ; 0xf8802 ahci.c:448 + mov cx, strict word 00040h ; b9 40 00 ; 0xf8806 + xor bx, bx ; 31 db ; 0xf8809 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf880b + call 0ad00h ; e8 ef 24 ; 0xf880e + lea ax, [di+00200h] ; 8d 85 00 02 ; 0xf8811 ahci.c:449 + mov cx, strict word 00060h ; b9 60 00 ; 0xf8815 + xor bx, bx ; 31 db ; 0xf8818 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf881a + call 0ad00h ; e8 e0 24 ; 0xf881d + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf8820 ahci.c:451 + sal ax, 007h ; c1 e0 07 ; 0xf8824 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf8827 + add ax, 00108h ; 05 08 01 ; 0xf882a + cwd ; 99 ; 0xf882d + mov cx, dx ; 89 d1 ; 0xf882e + mov dx, si ; 89 f2 ; 0xf8830 + xchg cx, ax ; 91 ; 0xf8832 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8833 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8837 + out DX, eax ; 66 ef ; 0xf8839 + lea bx, [si+004h] ; 8d 5c 04 ; 0xf883b + xor ax, ax ; 31 c0 ; 0xf883e + xor cx, cx ; 31 c9 ; 0xf8840 + mov dx, bx ; 89 da ; 0xf8842 + xchg cx, ax ; 91 ; 0xf8844 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8845 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8849 + out DX, eax ; 66 ef ; 0xf884b + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf884d ahci.c:452 + add ax, 0010ch ; 05 0c 01 ; 0xf8850 + cwd ; 99 ; 0xf8853 + mov cx, dx ; 89 d1 ; 0xf8854 + mov dx, si ; 89 f2 ; 0xf8856 + xchg cx, ax ; 91 ; 0xf8858 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8859 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf885d + out DX, eax ; 66 ef ; 0xf885f + xor ax, ax ; 31 c0 ; 0xf8861 + xor cx, cx ; 31 c9 ; 0xf8863 + mov dx, bx ; 89 da ; 0xf8865 + xchg cx, ax ; 91 ; 0xf8867 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8868 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf886c + out DX, eax ; 66 ef ; 0xf886e + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8870 ahci.c:454 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf8873 + cwd ; 99 ; 0xf8875 + mov cx, dx ; 89 d1 ; 0xf8876 + mov dx, si ; 89 f2 ; 0xf8878 + xchg cx, ax ; 91 ; 0xf887a + sal eax, 010h ; 66 c1 e0 10 ; 0xf887b + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf887f + out DX, eax ; 66 ef ; 0xf8881 + xor ax, ax ; 31 c0 ; 0xf8883 + xor cx, cx ; 31 c9 ; 0xf8885 + mov dx, bx ; 89 da ; 0xf8887 + xchg cx, ax ; 91 ; 0xf8889 + sal eax, 010h ; 66 c1 e0 10 ; 0xf888a + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf888e + out DX, eax ; 66 ef ; 0xf8890 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8892 ahci.c:455 + add ax, 00104h ; 05 04 01 ; 0xf8895 + cwd ; 99 ; 0xf8898 + mov cx, dx ; 89 d1 ; 0xf8899 + mov dx, si ; 89 f2 ; 0xf889b + xchg cx, ax ; 91 ; 0xf889d + sal eax, 010h ; 66 c1 e0 10 ; 0xf889e + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf88a2 + out DX, eax ; 66 ef ; 0xf88a4 + xor ax, ax ; 31 c0 ; 0xf88a6 + xor cx, cx ; 31 c9 ; 0xf88a8 + mov dx, bx ; 89 da ; 0xf88aa + xchg cx, ax ; 91 ; 0xf88ac + sal eax, 010h ; 66 c1 e0 10 ; 0xf88ad + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf88b1 + out DX, eax ; 66 ef ; 0xf88b3 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf88b5 ahci.c:458 + add ax, 00114h ; 05 14 01 ; 0xf88b8 + cwd ; 99 ; 0xf88bb + 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 + xor ax, ax ; 31 c0 ; 0xf88c9 + xor cx, cx ; 31 c9 ; 0xf88cb + mov dx, bx ; 89 da ; 0xf88cd + xchg cx, ax ; 91 ; 0xf88cf + sal eax, 010h ; 66 c1 e0 10 ; 0xf88d0 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf88d4 + out DX, eax ; 66 ef ; 0xf88d6 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf88d8 ahci.c:460 + mov byte [es:di+00262h], 0ffh ; 26 c6 85 62 02 ff ; 0xf88db + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf88e1 ahci.c:462 + pop di ; 5f ; 0xf88e4 + pop si ; 5e ; 0xf88e5 + pop cx ; 59 ; 0xf88e6 + pop bx ; 5b ; 0xf88e7 + pop bp ; 5d ; 0xf88e8 + retn ; c3 ; 0xf88e9 + ; disGetNextSymbol 0xf88ea LB 0x24b2 -> off=0x0 cb=000000000000024a uValue=00000000000f72ea 'ahci_port_init' +ahci_port_init: ; 0xf88ea LB 0x24a + push bp ; 55 ; 0xf88ea ahci.c:468 + mov bp, sp ; 89 e5 ; 0xf88eb + push cx ; 51 ; 0xf88ed + push si ; 56 ; 0xf88ee + push di ; 57 ; 0xf88ef + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf88f0 + mov si, ax ; 89 c6 ; 0xf88f3 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf88f5 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf88f8 + call 0876bh ; e8 6d fe ; 0xf88fb ahci.c:471 + movzx ax, bl ; 0f b6 c3 ; 0xf88fe ahci.c:474 + sal ax, 007h ; c1 e0 07 ; 0xf8901 + add ax, 00118h ; 05 18 01 ; 0xf8904 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8907 ahci.c:267 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf890a + xor cx, cx ; 31 c9 ; 0xf890f ahci.c:269 + mov dx, bx ; 89 da ; 0xf8911 + xchg cx, ax ; 91 ; 0xf8913 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8914 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8918 + out DX, eax ; 66 ef ; 0xf891a + add bx, strict byte 00004h ; 83 c3 04 ; 0xf891c ahci.c:270 + mov dx, bx ; 89 da ; 0xf891f + in eax, DX ; 66 ed ; 0xf8921 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8923 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8925 + xchg dx, ax ; 92 ; 0xf8929 + and AL, strict byte 0eeh ; 24 ee ; 0xf892a + mov cx, dx ; 89 d1 ; 0xf892c + 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 + movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf8939 ahci.c:477 + sal ax, 007h ; c1 e0 07 ; 0xf893d + add ax, 00118h ; 05 18 01 ; 0xf8940 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8943 ahci.c:277 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8946 + xor cx, cx ; 31 c9 ; 0xf894b ahci.c:279 + mov dx, bx ; 89 da ; 0xf894d + xchg cx, ax ; 91 ; 0xf894f + sal eax, 010h ; 66 c1 e0 10 ; 0xf8950 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8954 + out DX, eax ; 66 ef ; 0xf8956 + lea dx, [bx+004h] ; 8d 57 04 ; 0xf8958 ahci.c:280 + in eax, DX ; 66 ed ; 0xf895b + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf895d + shr eax, 010h ; 66 c1 e8 10 ; 0xf895f + xchg dx, ax ; 92 ; 0xf8963 + test ax, 0c011h ; a9 11 c0 ; 0xf8964 + je short 0896dh ; 74 04 ; 0xf8967 + mov AL, strict byte 001h ; b0 01 ; 0xf8969 + jmp short 0896fh ; eb 02 ; 0xf896b + xor al, al ; 30 c0 ; 0xf896d + cmp AL, strict byte 001h ; 3c 01 ; 0xf896f ahci.c:281 + je short 08939h ; 74 c6 ; 0xf8971 + mov cx, strict word 00020h ; b9 20 00 ; 0xf8973 ahci.c:488 + xor bx, bx ; 31 db ; 0xf8976 + mov ax, si ; 89 f0 ; 0xf8978 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf897a + call 0ad00h ; e8 80 23 ; 0xf897d + lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf8980 ahci.c:489 + mov cx, strict word 00040h ; b9 40 00 ; 0xf8984 + xor bx, bx ; 31 db ; 0xf8987 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8989 + call 0ad00h ; e8 71 23 ; 0xf898c + lea di, [si+00200h] ; 8d bc 00 02 ; 0xf898f ahci.c:490 + mov cx, strict word 00060h ; b9 60 00 ; 0xf8993 + xor bx, bx ; 31 db ; 0xf8996 + mov ax, di ; 89 f8 ; 0xf8998 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf899a + call 0ad00h ; e8 60 23 ; 0xf899d + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf89a0 ahci.c:494 + sal bx, 007h ; c1 e3 07 ; 0xf89a4 + lea ax, [bx+00108h] ; 8d 87 08 01 ; 0xf89a7 + cwd ; 99 ; 0xf89ab + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89ac + mov cx, word [es:si+00260h] ; 26 8b 8c 60 02 ; 0xf89af + mov word [bp-00ch], cx ; 89 4e f4 ; 0xf89b4 + mov cx, dx ; 89 d1 ; 0xf89b7 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf89b9 + xchg cx, ax ; 91 ; 0xf89bc + sal eax, 010h ; 66 c1 e0 10 ; 0xf89bd + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf89c1 + out DX, eax ; 66 ef ; 0xf89c3 + mov ax, di ; 89 f8 ; 0xf89c5 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf89c7 + call 083ech ; e8 1f fa ; 0xf89ca + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89cd + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf89d0 + add di, strict byte 00004h ; 83 c7 04 ; 0xf89d5 + mov cx, dx ; 89 d1 ; 0xf89d8 + mov dx, di ; 89 fa ; 0xf89da + xchg cx, ax ; 91 ; 0xf89dc + sal eax, 010h ; 66 c1 e0 10 ; 0xf89dd + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf89e1 + out DX, eax ; 66 ef ; 0xf89e3 + lea ax, [bx+0010ch] ; 8d 87 0c 01 ; 0xf89e5 ahci.c:495 + cwd ; 99 ; 0xf89e9 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89ea + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf89ed + mov cx, dx ; 89 d1 ; 0xf89f2 + mov dx, di ; 89 fa ; 0xf89f4 + xchg cx, ax ; 91 ; 0xf89f6 + sal eax, 010h ; 66 c1 e0 10 ; 0xf89f7 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf89fb + out DX, eax ; 66 ef ; 0xf89fd + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89ff + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a02 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a07 + xor ax, ax ; 31 c0 ; 0xf8a0a + xor cx, cx ; 31 c9 ; 0xf8a0c + xchg cx, ax ; 91 ; 0xf8a0e + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a0f + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a13 + out DX, eax ; 66 ef ; 0xf8a15 + lea ax, [bx+00100h] ; 8d 87 00 01 ; 0xf8a17 ahci.c:498 + cwd ; 99 ; 0xf8a1b + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a1c + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a1f + mov cx, dx ; 89 d1 ; 0xf8a24 + mov dx, di ; 89 fa ; 0xf8a26 + xchg cx, ax ; 91 ; 0xf8a28 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a29 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a2d + out DX, eax ; 66 ef ; 0xf8a2f + mov ax, si ; 89 f0 ; 0xf8a31 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8a33 + call 083ech ; e8 b3 f9 ; 0xf8a36 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a39 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a3c + add di, strict byte 00004h ; 83 c7 04 ; 0xf8a41 + mov cx, dx ; 89 d1 ; 0xf8a44 + mov dx, di ; 89 fa ; 0xf8a46 + xchg cx, ax ; 91 ; 0xf8a48 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a49 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a4d + out DX, eax ; 66 ef ; 0xf8a4f + lea ax, [bx+00104h] ; 8d 87 04 01 ; 0xf8a51 ahci.c:499 + cwd ; 99 ; 0xf8a55 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a56 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a59 + mov cx, dx ; 89 d1 ; 0xf8a5e + mov dx, di ; 89 fa ; 0xf8a60 + xchg cx, ax ; 91 ; 0xf8a62 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a63 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a67 + out DX, eax ; 66 ef ; 0xf8a69 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a6b + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a6e + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a73 + xor ax, ax ; 31 c0 ; 0xf8a76 + xor cx, cx ; 31 c9 ; 0xf8a78 + xchg cx, ax ; 91 ; 0xf8a7a + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a7b + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a7f + out DX, eax ; 66 ef ; 0xf8a81 + lea ax, [bx+00114h] ; 8d 87 14 01 ; 0xf8a83 ahci.c:502 + cwd ; 99 ; 0xf8a87 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a88 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a8b + mov cx, dx ; 89 d1 ; 0xf8a90 + mov dx, di ; 89 fa ; 0xf8a92 + xchg cx, ax ; 91 ; 0xf8a94 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a95 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a99 + out DX, eax ; 66 ef ; 0xf8a9b + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a9d + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8aa0 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8aa5 + xor ax, ax ; 31 c0 ; 0xf8aa8 + xor cx, cx ; 31 c9 ; 0xf8aaa + xchg cx, ax ; 91 ; 0xf8aac + sal eax, 010h ; 66 c1 e0 10 ; 0xf8aad + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8ab1 + out DX, eax ; 66 ef ; 0xf8ab3 + lea ax, [bx+00110h] ; 8d 87 10 01 ; 0xf8ab5 ahci.c:503 + cwd ; 99 ; 0xf8ab9 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8aba + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8abd + mov cx, dx ; 89 d1 ; 0xf8ac2 + mov dx, di ; 89 fa ; 0xf8ac4 + xchg cx, ax ; 91 ; 0xf8ac6 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8ac7 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8acb + out DX, eax ; 66 ef ; 0xf8acd + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8acf + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8ad2 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8ad7 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8ada + mov cx, ax ; 89 c1 ; 0xf8add + xchg cx, ax ; 91 ; 0xf8adf + sal eax, 010h ; 66 c1 e0 10 ; 0xf8ae0 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8ae4 + out DX, eax ; 66 ef ; 0xf8ae6 + lea ax, [bx+00130h] ; 8d 87 30 01 ; 0xf8ae8 ahci.c:505 + cwd ; 99 ; 0xf8aec + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8aed + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8af0 + mov cx, dx ; 89 d1 ; 0xf8af5 + mov dx, bx ; 89 da ; 0xf8af7 + xchg cx, ax ; 91 ; 0xf8af9 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8afa + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8afe + out DX, eax ; 66 ef ; 0xf8b00 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8b02 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8b05 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8b0a + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8b0d + mov cx, ax ; 89 c1 ; 0xf8b10 + xchg cx, ax ; 91 ; 0xf8b12 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8b13 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8b17 + out DX, eax ; 66 ef ; 0xf8b19 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8b1b ahci.c:507 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8b1e + mov byte [es:si+00262h], al ; 26 88 84 62 02 ; 0xf8b21 + mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf8b26 ahci.c:508 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf8b2c ahci.c:509 + pop di ; 5f ; 0xf8b2f + pop si ; 5e ; 0xf8b30 + pop cx ; 59 ; 0xf8b31 + pop bp ; 5d ; 0xf8b32 + retn ; c3 ; 0xf8b33 + ; disGetNextSymbol 0xf8b34 LB 0x2268 -> off=0x0 cb=00000000000000a6 uValue=00000000000f7534 'ahci_read_sectors' +ahci_read_sectors: ; 0xf8b34 LB 0xa6 + push bp ; 55 ; 0xf8b34 ahci.c:518 + mov bp, sp ; 89 e5 ; 0xf8b35 + push si ; 56 ; 0xf8b37 + push di ; 57 ; 0xf8b38 + push ax ; 50 ; 0xf8b39 + les di, [bp+004h] ; c4 7e 04 ; 0xf8b3a ahci.c:523 + movzx di, byte [es:di+00ch] ; 26 0f b6 7d 0c ; 0xf8b3d + sub di, strict byte 0000ch ; 83 ef 0c ; 0xf8b42 + cmp di, strict byte 00004h ; 83 ff 04 ; 0xf8b45 ahci.c:524 + jbe short 08b59h ; 76 0f ; 0xf8b48 + push di ; 57 ; 0xf8b4a ahci.c:525 + push 00cc8h ; 68 c8 0c ; 0xf8b4b + push 00cdah ; 68 da 0c ; 0xf8b4e + push strict byte 00007h ; 6a 07 ; 0xf8b51 + call 01a68h ; e8 12 8f ; 0xf8b53 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf8b56 + xor bx, bx ; 31 db ; 0xf8b59 ahci.c:531 + les si, [bp+004h] ; c4 76 04 ; 0xf8b5b + mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf8b5e + shr eax, 010h ; 66 c1 e8 10 ; 0xf8b63 ahci.c:247 + mov es, dx ; 8e c2 ; 0xf8b67 + mov word [es:bx+00264h], ax ; 26 89 87 64 02 ; 0xf8b69 + mov es, [bp+006h] ; 8e 46 06 ; 0xf8b6e ahci.c:532 + add di, si ; 01 f7 ; 0xf8b71 + movzx bx, byte [es:di+002a1h] ; 26 0f b6 9d a1 02 ; 0xf8b73 + mov di, si ; 89 f7 ; 0xf8b79 + mov dx, word [es:di+002a6h] ; 26 8b 95 a6 02 ; 0xf8b7b + xor ax, ax ; 31 c0 ; 0xf8b80 + call 088eah ; e8 65 fd ; 0xf8b82 + mov bx, strict word 00025h ; bb 25 00 ; 0xf8b85 ahci.c:533 + mov ax, si ; 89 f0 ; 0xf8b88 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8b8a + call 08555h ; e8 c5 f9 ; 0xf8b8d + mov word [bp-006h], ax ; 89 46 fa ; 0xf8b90 + mov es, [bp+006h] ; 8e 46 06 ; 0xf8b93 ahci.c:535 + mov bx, si ; 89 f3 ; 0xf8b96 + mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf8b98 + mov word [es:bx+018h], ax ; 26 89 47 18 ; 0xf8b9c + mov cx, ax ; 89 c1 ; 0xf8ba0 ahci.c:537 + sal cx, 009h ; c1 e1 09 ; 0xf8ba2 + shr cx, 1 ; d1 e9 ; 0xf8ba5 + mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf8ba7 + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf8bab + mov si, di ; 89 fe ; 0xf8baf + mov dx, ax ; 89 c2 ; 0xf8bb1 + mov es, ax ; 8e c0 ; 0xf8bb3 + push DS ; 1e ; 0xf8bb5 + mov ds, dx ; 8e da ; 0xf8bb6 + rep movsw ; f3 a5 ; 0xf8bb8 + pop DS ; 1f ; 0xf8bba + xor bx, bx ; 31 db ; 0xf8bbb ahci.c:539 + les di, [bp+004h] ; c4 7e 04 ; 0xf8bbd + mov es, [es:di+002a6h] ; 26 8e 85 a6 02 ; 0xf8bc0 + mov ax, word [es:bx+00264h] ; 26 8b 87 64 02 ; 0xf8bc5 ahci.c:252 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8bca + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf8bce ahci.c:541 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf8bd1 + pop di ; 5f ; 0xf8bd4 + pop si ; 5e ; 0xf8bd5 + pop bp ; 5d ; 0xf8bd6 + retn 00004h ; c2 04 00 ; 0xf8bd7 + ; disGetNextSymbol 0xf8bda LB 0x21c2 -> off=0x0 cb=0000000000000084 uValue=00000000000f75da 'ahci_write_sectors' +ahci_write_sectors: ; 0xf8bda LB 0x84 + push bp ; 55 ; 0xf8bda ahci.c:550 + mov bp, sp ; 89 e5 ; 0xf8bdb + push si ; 56 ; 0xf8bdd + push di ; 57 ; 0xf8bde + mov si, word [bp+004h] ; 8b 76 04 ; 0xf8bdf + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf8be2 + mov es, cx ; 8e c1 ; 0xf8be5 ahci.c:555 + movzx dx, byte [es:si+00ch] ; 26 0f b6 54 0c ; 0xf8be7 + sub dx, strict byte 0000ch ; 83 ea 0c ; 0xf8bec + cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf8bef ahci.c:556 + jbe short 08c03h ; 76 0f ; 0xf8bf2 + push dx ; 52 ; 0xf8bf4 ahci.c:557 + push 00cf9h ; 68 f9 0c ; 0xf8bf5 + push 00cdah ; 68 da 0c ; 0xf8bf8 + push strict byte 00007h ; 6a 07 ; 0xf8bfb + call 01a68h ; e8 68 8e ; 0xf8bfd + add sp, strict byte 00008h ; 83 c4 08 ; 0xf8c00 + xor bx, bx ; 31 db ; 0xf8c03 ahci.c:563 + mov es, cx ; 8e c1 ; 0xf8c05 + mov di, word [es:si+002a6h] ; 26 8b bc a6 02 ; 0xf8c07 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8c0c ahci.c:247 + mov es, di ; 8e c7 ; 0xf8c10 + mov word [es:bx+00264h], ax ; 26 89 87 64 02 ; 0xf8c12 + mov es, cx ; 8e c1 ; 0xf8c17 ahci.c:564 + mov bx, si ; 89 f3 ; 0xf8c19 + add bx, dx ; 01 d3 ; 0xf8c1b + movzx bx, byte [es:bx+002a1h] ; 26 0f b6 9f a1 02 ; 0xf8c1d + mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf8c23 + xor ax, ax ; 31 c0 ; 0xf8c28 + call 088eah ; e8 bd fc ; 0xf8c2a + mov bx, strict word 00035h ; bb 35 00 ; 0xf8c2d ahci.c:565 + mov ax, si ; 89 f0 ; 0xf8c30 + mov dx, cx ; 89 ca ; 0xf8c32 + call 08555h ; e8 1e f9 ; 0xf8c34 + mov dx, ax ; 89 c2 ; 0xf8c37 + mov es, cx ; 8e c1 ; 0xf8c39 ahci.c:567 + mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf8c3b + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf8c3f + xor bx, bx ; 31 db ; 0xf8c43 ahci.c:568 + mov es, [es:si+002a6h] ; 26 8e 84 a6 02 ; 0xf8c45 + mov ax, word [es:bx+00264h] ; 26 8b 87 64 02 ; 0xf8c4a ahci.c:252 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8c4f + mov ax, dx ; 89 d0 ; 0xf8c53 ahci.c:570 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf8c55 + pop di ; 5f ; 0xf8c58 + pop si ; 5e ; 0xf8c59 + pop bp ; 5d ; 0xf8c5a + retn 00004h ; c2 04 00 ; 0xf8c5b + ; disGetNextSymbol 0xf8c5e LB 0x213e -> off=0x0 cb=000000000000014c uValue=00000000000f765e 'ahci_cmd_packet' +ahci_cmd_packet: ; 0xf8c5e LB 0x14c + push bp ; 55 ; 0xf8c5e ahci.c:577 + mov bp, sp ; 89 e5 ; 0xf8c5f + push si ; 56 ; 0xf8c61 + push di ; 57 ; 0xf8c62 + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf8c63 + mov di, ax ; 89 c7 ; 0xf8c66 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf8c68 + mov word [bp-00eh], bx ; 89 5e f2 ; 0xf8c6b + mov word [bp-010h], cx ; 89 4e f0 ; 0xf8c6e + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8c71 ahci.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8c74 + mov es, ax ; 8e c0 ; 0xf8c77 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf8c79 + mov si, strict word 0005eh ; be 5e 00 ; 0xf8c7c ahci.c:59 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf8c7f + cmp byte [bp+008h], 002h ; 80 7e 08 02 ; 0xf8c82 ahci.c:584 + jne short 08ca7h ; 75 1f ; 0xf8c86 + mov bx, 00e06h ; bb 06 0e ; 0xf8c88 ahci.c:585 + mov cx, ds ; 8c d9 ; 0xf8c8b + mov ax, strict word 00004h ; b8 04 00 ; 0xf8c8d + call 01a27h ; e8 94 8d ; 0xf8c90 + push 00d0ch ; 68 0c 0d ; 0xf8c93 + push 00d1ch ; 68 1c 0d ; 0xf8c96 + push strict byte 00004h ; 6a 04 ; 0xf8c99 + call 01a68h ; e8 ca 8d ; 0xf8c9b + add sp, strict byte 00006h ; 83 c4 06 ; 0xf8c9e + mov ax, strict word 00001h ; b8 01 00 ; 0xf8ca1 ahci.c:586 + jmp near 08da1h ; e9 fa 00 ; 0xf8ca4 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf8ca7 ahci.c:597 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8caa + mov cx, strict word 00008h ; b9 08 00 ; 0xf8cad + sal ax, 1 ; d1 e0 ; 0xf8cb0 + rcl dx, 1 ; d1 d2 ; 0xf8cb2 + loop 08cb0h ; e2 fa ; 0xf8cb4 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf8cb6 + mov word [es:si], ax ; 26 89 04 ; 0xf8cb9 + mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf8cbc + 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; 0xf8cc0 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf8cc9 ahci.c:598 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8ccc + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf8cd0 + mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf8cd3 + mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf8cd7 ahci.c:599 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf8cdb + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8cde + xor cx, cx ; 31 c9 ; 0xf8ce1 + call 0aca0h ; e8 ba 1f ; 0xf8ce3 + mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf8ce6 + mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf8cea ahci.c:602 + mov ax, word [es:si+002a6h] ; 26 8b 84 a6 02 ; 0xf8cef + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf8cf4 + sub di, strict byte 0000ch ; 83 ef 0c ; 0xf8cf7 ahci.c:590 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8cfa ahci.c:247 + les bx, [bp-00ch] ; c4 5e f4 ; 0xf8cfe + mov word [es:bx+00264h], ax ; 26 89 87 64 02 ; 0xf8d01 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf8d06 ahci.c:605 + add di, si ; 01 f7 ; 0xf8d09 + movzx bx, byte [es:di+002a1h] ; 26 0f b6 9d a1 02 ; 0xf8d0b + mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf8d11 + xor ax, ax ; 31 c0 ; 0xf8d16 + call 088eah ; e8 cf fb ; 0xf8d18 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf8d1b ahci.c:608 + push ax ; 50 ; 0xf8d1f + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8d20 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf8d23 + mov ax, 000c0h ; b8 c0 00 ; 0xf8d26 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8d29 + call 0ad10h ; e8 e1 1f ; 0xf8d2c + mov es, [bp-008h] ; 8e 46 f8 ; 0xf8d2f ahci.c:612 + 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; 0xf8d32 + mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf8d3b ahci.c:613 + mov bx, 000a0h ; bb a0 00 ; 0xf8d41 ahci.c:615 + mov ax, si ; 89 f0 ; 0xf8d44 + mov dx, es ; 8c c2 ; 0xf8d46 + call 08555h ; e8 0a f8 ; 0xf8d48 + les bx, [bp-00ch] ; c4 5e f4 ; 0xf8d4b ahci.c:617 + mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf8d4e + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8d52 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf8d56 + mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf8d59 + mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf8d5d + mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf8d61 ahci.c:619 + mov cx, ax ; 89 c1 ; 0xf8d65 + shr cx, 1 ; d1 e9 ; 0xf8d67 + rcr bx, 1 ; d1 db ; 0xf8d69 + mov di, word [es:si+008h] ; 26 8b 7c 08 ; 0xf8d6b + mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf8d6f + mov cx, bx ; 89 d9 ; 0xf8d73 + mov si, di ; 89 fe ; 0xf8d75 + mov dx, ax ; 89 c2 ; 0xf8d77 + mov es, ax ; 8e c0 ; 0xf8d79 + push DS ; 1e ; 0xf8d7b + mov ds, dx ; 8e da ; 0xf8d7c + rep movsw ; f3 a5 ; 0xf8d7e + pop DS ; 1f ; 0xf8d80 + les bx, [bp-00ch] ; c4 5e f4 ; 0xf8d81 ahci.c:252 + mov ax, word [es:bx+00264h] ; 26 8b 87 64 02 ; 0xf8d84 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8d89 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8d8d ahci.c:623 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8d90 + or ax, word [es:bx+004h] ; 26 0b 47 04 ; 0xf8d94 + jne short 08d9fh ; 75 05 ; 0xf8d98 + mov ax, strict word 00004h ; b8 04 00 ; 0xf8d9a + jmp short 08da1h ; eb 02 ; 0xf8d9d + xor ax, ax ; 31 c0 ; 0xf8d9f + lea sp, [bp-004h] ; 8d 66 fc ; 0xf8da1 ahci.c:624 + pop di ; 5f ; 0xf8da4 + pop si ; 5e ; 0xf8da5 + pop bp ; 5d ; 0xf8da6 + retn 0000ah ; c2 0a 00 ; 0xf8da7 + ; disGetNextSymbol 0xf8daa LB 0x1ff2 -> off=0x0 cb=0000000000000005 uValue=00000000000f77aa 'wait_ticks_device_init' +wait_ticks_device_init: ; 0xf8daa LB 0x5 + push bp ; 55 ; 0xf8daa ahci.c:627 + mov bp, sp ; 89 e5 ; 0xf8dab + pop bp ; 5d ; 0xf8dad ahci.c:629 + retn ; c3 ; 0xf8dae + ; disGetNextSymbol 0xf8daf LB 0x1fed -> off=0x0 cb=000000000000049f uValue=00000000000f77af 'ahci_port_detect_device' +ahci_port_detect_device: ; 0xf8daf LB 0x49f + push bp ; 55 ; 0xf8daf ahci.c:631 + mov bp, sp ; 89 e5 ; 0xf8db0 + push cx ; 51 ; 0xf8db2 + push si ; 56 ; 0xf8db3 + push di ; 57 ; 0xf8db4 + sub sp, 00228h ; 81 ec 28 02 ; 0xf8db5 + mov si, ax ; 89 c6 ; 0xf8db9 + mov word [bp-012h], dx ; 89 56 ee ; 0xf8dbb + mov byte [bp-00ah], bl ; 88 5e f6 ; 0xf8dbe + mov word [bp-028h], strict word 00000h ; c7 46 d8 00 00 ; 0xf8dc1 ahci.c:637 + movzx di, bl ; 0f b6 fb ; 0xf8dc6 ahci.c:639 + mov bx, di ; 89 fb ; 0xf8dc9 + call 088eah ; e8 1c fb ; 0xf8dcb + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8dce ahci.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8dd1 + mov es, ax ; 8e c0 ; 0xf8dd4 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf8dd6 + mov word [bp-010h], strict word 0005eh ; c7 46 f0 5e 00 ; 0xf8dd9 ahci.c:59 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf8dde + mov ax, di ; 89 f8 ; 0xf8de1 ahci.c:644 + sal ax, 007h ; c1 e0 07 ; 0xf8de3 + add ax, 0012ch ; 05 2c 01 ; 0xf8de6 + cwd ; 99 ; 0xf8de9 + mov di, ax ; 89 c7 ; 0xf8dea + mov bx, dx ; 89 d3 ; 0xf8dec + mov es, [bp-012h] ; 8e 46 ee ; 0xf8dee + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8df1 + mov cx, bx ; 89 d9 ; 0xf8df6 + xchg cx, ax ; 91 ; 0xf8df8 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8df9 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8dfd + out DX, eax ; 66 ef ; 0xf8dff + mov es, [bp-012h] ; 8e 46 ee ; 0xf8e01 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e04 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e09 + mov ax, strict word 00001h ; b8 01 00 ; 0xf8e0c + xor cx, cx ; 31 c9 ; 0xf8e0f + xchg cx, ax ; 91 ; 0xf8e11 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8e12 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8e16 + out DX, eax ; 66 ef ; 0xf8e18 + mov es, [bp-012h] ; 8e 46 ee ; 0xf8e1a ahci.c:649 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e1d + mov ax, di ; 89 f8 ; 0xf8e22 + mov cx, bx ; 89 d9 ; 0xf8e24 + xchg cx, ax ; 91 ; 0xf8e26 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8e27 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8e2b + out DX, eax ; 66 ef ; 0xf8e2d + mov es, [bp-012h] ; 8e 46 ee ; 0xf8e2f + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e32 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e37 + xor ax, ax ; 31 c0 ; 0xf8e3a + xor cx, cx ; 31 c9 ; 0xf8e3c + xchg cx, ax ; 91 ; 0xf8e3e + sal eax, 010h ; 66 c1 e0 10 ; 0xf8e3f + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8e43 + out DX, eax ; 66 ef ; 0xf8e45 + mov di, strict word 0006ch ; bf 6c 00 ; 0xf8e47 ahci.c:658 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8e4a + mov word [bp-016h], ax ; 89 46 ea ; 0xf8e4d + mov es, ax ; 8e c0 ; 0xf8e50 ahci.c:659 + mov ax, word [es:di] ; 26 8b 05 ; 0xf8e52 + add ax, strict word 00003h ; 05 03 00 ; 0xf8e55 + mov word [bp-024h], ax ; 89 46 dc ; 0xf8e58 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8e5b + adc ax, strict word 00000h ; 15 00 00 ; 0xf8e5f + mov word [bp-020h], ax ; 89 46 e0 ; 0xf8e62 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8e65 ahci.c:661 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8e68 + cmp ax, word [bp-020h] ; 3b 46 e0 ; 0xf8e6c + jc short 08e82h ; 72 11 ; 0xf8e6f + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8e71 + cmp ax, word [bp-020h] ; 3b 46 e0 ; 0xf8e75 + jne short 08ecdh ; 75 53 ; 0xf8e78 + mov ax, word [es:di] ; 26 8b 05 ; 0xf8e7a + cmp ax, word [bp-024h] ; 3b 46 dc ; 0xf8e7d + jnc short 08ecdh ; 73 4b ; 0xf8e80 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf8e82 ahci.c:664 + sal ax, 007h ; c1 e0 07 ; 0xf8e86 + add ax, 00128h ; 05 28 01 ; 0xf8e89 + cwd ; 99 ; 0xf8e8c + mov es, [bp-012h] ; 8e 46 ee ; 0xf8e8d + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8e90 + mov cx, dx ; 89 d1 ; 0xf8e95 + mov dx, bx ; 89 da ; 0xf8e97 + xchg cx, ax ; 91 ; 0xf8e99 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8e9a + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8e9e + out DX, eax ; 66 ef ; 0xf8ea0 + mov es, [bp-012h] ; 8e 46 ee ; 0xf8ea2 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8ea5 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8eaa + in eax, DX ; 66 ed ; 0xf8ead + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8eaf + shr eax, 010h ; 66 c1 e8 10 ; 0xf8eb1 + xchg dx, ax ; 92 ; 0xf8eb5 + mov word [bp-026h], ax ; 89 46 da ; 0xf8eb6 + mov word [bp-022h], dx ; 89 56 de ; 0xf8eb9 + push strict byte 00000h ; 6a 00 ; 0xf8ebc ahci.c:665 + mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8ebe + xor cx, cx ; 31 c9 ; 0xf8ec1 + call 083d1h ; e8 0b f5 ; 0xf8ec3 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8ec6 + jne short 08e65h ; 75 9a ; 0xf8ec9 + jmp short 08ed5h ; eb 08 ; 0xf8ecb ahci.c:667 + cmp word [bp-028h], strict byte 00000h ; 83 7e d8 00 ; 0xf8ecd ahci.c:672 + je near 09246h ; 0f 84 71 03 ; 0xf8ed1 + push strict byte 00000h ; 6a 00 ; 0xf8ed5 ahci.c:677 + mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8ed7 + xor cx, cx ; 31 c9 ; 0xf8eda + mov ax, word [bp-026h] ; 8b 46 da ; 0xf8edc + mov dx, word [bp-022h] ; 8b 56 de ; 0xf8edf + call 083d1h ; e8 ec f4 ; 0xf8ee2 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8ee5 + jne near 09246h ; 0f 85 5a 03 ; 0xf8ee8 + movzx di, byte [bp-00ah] ; 0f b6 7e f6 ; 0xf8eec ahci.c:685 + sal di, 007h ; c1 e7 07 ; 0xf8ef0 + lea ax, [di+00130h] ; 8d 85 30 01 ; 0xf8ef3 + cwd ; 99 ; 0xf8ef7 + mov es, [bp-012h] ; 8e 46 ee ; 0xf8ef8 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8efb + mov cx, dx ; 89 d1 ; 0xf8f00 + mov dx, bx ; 89 da ; 0xf8f02 + xchg cx, ax ; 91 ; 0xf8f04 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8f05 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8f09 + out DX, eax ; 66 ef ; 0xf8f0b + mov es, [bp-012h] ; 8e 46 ee ; 0xf8f0d + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8f10 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8f15 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8f18 + mov cx, ax ; 89 c1 ; 0xf8f1b + xchg cx, ax ; 91 ; 0xf8f1d + sal eax, 010h ; 66 c1 e0 10 ; 0xf8f1e + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8f22 + out DX, eax ; 66 ef ; 0xf8f24 + les bx, [bp-010h] ; c4 5e f0 ; 0xf8f26 ahci.c:687 + mov al, byte [es:bx+002a5h] ; 26 8a 87 a5 02 ; 0xf8f29 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf8f2e + cmp AL, strict byte 004h ; 3c 04 ; 0xf8f31 ahci.c:692 + jnc near 09246h ; 0f 83 0f 03 ; 0xf8f33 + lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8f37 ahci.c:695 + mov es, [bp-012h] ; 8e 46 ee ; 0xf8f3b ahci.c:258 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8f3e + xor cx, cx ; 31 c9 ; 0xf8f43 ahci.c:260 + mov dx, bx ; 89 da ; 0xf8f45 + xchg cx, ax ; 91 ; 0xf8f47 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8f48 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8f4c + out DX, eax ; 66 ef ; 0xf8f4e + add bx, strict byte 00004h ; 83 c3 04 ; 0xf8f50 ahci.c:261 + mov dx, bx ; 89 da ; 0xf8f53 + in eax, DX ; 66 ed ; 0xf8f55 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8f57 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8f59 + xchg dx, ax ; 92 ; 0xf8f5d + or AL, strict byte 010h ; 0c 10 ; 0xf8f5e + mov cx, dx ; 89 d1 ; 0xf8f60 + mov dx, bx ; 89 da ; 0xf8f62 + xchg cx, ax ; 91 ; 0xf8f64 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8f65 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8f69 + out DX, eax ; 66 ef ; 0xf8f6b + lea ax, [di+00124h] ; 8d 85 24 01 ; 0xf8f6d ahci.c:699 + cwd ; 99 ; 0xf8f71 + mov es, [bp-012h] ; 8e 46 ee ; 0xf8f72 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8f75 + mov cx, dx ; 89 d1 ; 0xf8f7a + mov dx, bx ; 89 da ; 0xf8f7c + xchg cx, ax ; 91 ; 0xf8f7e + sal eax, 010h ; 66 c1 e0 10 ; 0xf8f7f + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8f83 + out DX, eax ; 66 ef ; 0xf8f85 + mov es, [bp-012h] ; 8e 46 ee ; 0xf8f87 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8f8a + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8f8f + in eax, DX ; 66 ed ; 0xf8f92 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8f94 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8f96 + xchg dx, ax ; 92 ; 0xf8f9a + mov bx, ax ; 89 c3 ; 0xf8f9b + mov ax, dx ; 89 d0 ; 0xf8f9d + mov cl, byte [bp-008h] ; 8a 4e f8 ; 0xf8f9f + add cl, 00ch ; 80 c1 0c ; 0xf8fa2 + test dx, dx ; 85 d2 ; 0xf8fa5 ahci.c:700 + jne near 09194h ; 0f 85 e9 01 ; 0xf8fa7 + cmp bx, 00101h ; 81 fb 01 01 ; 0xf8fab + jne near 09194h ; 0f 85 e1 01 ; 0xf8faf + les bx, [bp-010h] ; c4 5e f0 ; 0xf8fb3 ahci.c:710 + 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; 0xf8fb6 + db 066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h + ; mov dword [es:bx], strict dword 000000000h ; 66 26 c7 07 00 00 00 00 ; 0xf8fbf + lea dx, [bp-0022eh] ; 8d 96 d2 fd ; 0xf8fc7 ahci.c:711 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf8fcb + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf8fcf + 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; 0xf8fd3 ahci.c:712 + mov bx, 000ech ; bb ec 00 ; 0xf8fdc ahci.c:714 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8fdf + mov dx, es ; 8c c2 ; 0xf8fe2 + call 08555h ; e8 6e f5 ; 0xf8fe4 + mov byte [bp-00ch], cl ; 88 4e f4 ; 0xf8fe7 ahci.c:717 + test byte [bp-0022eh], 080h ; f6 86 d2 fd 80 ; 0xf8fea ahci.c:719 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf8fef + xor ah, ah ; 30 e4 ; 0xf8ff2 + mov dx, word [bp-0022ch] ; 8b 96 d4 fd ; 0xf8ff4 ahci.c:720 + mov word [bp-01ch], dx ; 89 56 e4 ; 0xf8ff8 + mov dx, word [bp-00228h] ; 8b 96 d8 fd ; 0xf8ffb ahci.c:721 + mov word [bp-01ah], dx ; 89 56 e6 ; 0xf8fff + mov dx, word [bp-00222h] ; 8b 96 de fd ; 0xf9002 ahci.c:722 + mov word [bp-01eh], dx ; 89 56 e2 ; 0xf9006 + mov si, word [bp-001b6h] ; 8b b6 4a fe ; 0xf9009 ahci.c:723 + mov di, word [bp-001b4h] ; 8b be 4c fe ; 0xf900d + mov word [bp-018h], strict word 00000h ; c7 46 e8 00 00 ; 0xf9011 + mov word [bp-014h], strict word 00000h ; c7 46 ec 00 00 ; 0xf9016 + cmp di, 00fffh ; 81 ff ff 0f ; 0xf901b ahci.c:725 + jne short 0903ch ; 75 1b ; 0xf901f + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf9021 + jne short 0903ch ; 75 16 ; 0xf9024 + mov dx, word [bp-00160h] ; 8b 96 a0 fe ; 0xf9026 ahci.c:726 + mov word [bp-014h], dx ; 89 56 ec ; 0xf902a + mov dx, word [bp-00162h] ; 8b 96 9e fe ; 0xf902d + mov word [bp-018h], dx ; 89 56 e8 ; 0xf9031 + mov di, word [bp-00164h] ; 8b be 9c fe ; 0xf9034 + mov si, word [bp-00166h] ; 8b b6 9a fe ; 0xf9038 + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf903c ahci.c:730 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf9040 + add bx, word [bp-010h] ; 03 5e f0 ; 0xf9043 + mov ah, byte [bp-00ah] ; 8a 66 f6 ; 0xf9046 + mov byte [es:bx+002a1h], ah ; 26 88 a7 a1 02 ; 0xf9049 + movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf904e ahci.c:731 + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf9052 + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf9055 + add bx, dx ; 01 d3 ; 0xf9058 + mov word [es:bx+01eh], 0ff05h ; 26 c7 47 1e 05 ff ; 0xf905a + mov byte [es:bx+020h], al ; 26 88 47 20 ; 0xf9060 ahci.c:733 + mov byte [es:bx+021h], 000h ; 26 c6 47 21 00 ; 0xf9064 ahci.c:734 + mov word [es:bx+024h], 00200h ; 26 c7 47 24 00 02 ; 0xf9069 ahci.c:735 + mov byte [es:bx+023h], 001h ; 26 c6 47 23 01 ; 0xf906f ahci.c:736 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9074 ahci.c:737 + mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf9077 + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf907b + mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf907e + mov word [es:bx+034h], di ; 26 89 7f 34 ; 0xf9082 + mov word [es:bx+032h], si ; 26 89 77 32 ; 0xf9086 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf908a ahci.c:739 + mov word [es:bx+02ch], ax ; 26 89 47 2c ; 0xf908d + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf9091 ahci.c:740 + mov word [es:bx+02eh], ax ; 26 89 47 2e ; 0xf9094 + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf9098 ahci.c:741 + mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf909b + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf909f ahci.c:744 + cmp AL, strict byte 001h ; 3c 01 ; 0xf90a2 + jc short 090b2h ; 72 0c ; 0xf90a4 + jbe short 090bah ; 76 12 ; 0xf90a6 + cmp AL, strict byte 003h ; 3c 03 ; 0xf90a8 + je short 090c2h ; 74 16 ; 0xf90aa + cmp AL, strict byte 002h ; 3c 02 ; 0xf90ac + je short 090beh ; 74 0e ; 0xf90ae + jmp short 090f7h ; eb 45 ; 0xf90b0 + test al, al ; 84 c0 ; 0xf90b2 + jne short 090f7h ; 75 41 ; 0xf90b4 + mov BL, strict byte 040h ; b3 40 ; 0xf90b6 ahci.c:747 + jmp short 090c4h ; eb 0a ; 0xf90b8 ahci.c:748 + mov BL, strict byte 048h ; b3 48 ; 0xf90ba ahci.c:750 + jmp short 090c4h ; eb 06 ; 0xf90bc ahci.c:751 + mov BL, strict byte 050h ; b3 50 ; 0xf90be ahci.c:753 + jmp short 090c4h ; eb 02 ; 0xf90c0 ahci.c:754 + mov BL, strict byte 058h ; b3 58 ; 0xf90c2 ahci.c:756 + mov al, bl ; 88 d8 ; 0xf90c4 ahci.c:760 + add AL, strict byte 007h ; 04 07 ; 0xf90c6 + movzx dx, al ; 0f b6 d0 ; 0xf90c8 + mov ax, dx ; 89 d0 ; 0xf90cb + call 0176ah ; e8 9a 86 ; 0xf90cd + test al, al ; 84 c0 ; 0xf90d0 + je short 090f7h ; 74 23 ; 0xf90d2 + movzx ax, bl ; 0f b6 c3 ; 0xf90d4 ahci.c:763 + call 017a6h ; e8 cc 86 ; 0xf90d7 + mov word [bp-02ch], ax ; 89 46 d4 ; 0xf90da + mov al, bl ; 88 d8 ; 0xf90dd ahci.c:764 + add AL, strict byte 002h ; 04 02 ; 0xf90df + xor ah, ah ; 30 e4 ; 0xf90e1 + call 0176ah ; e8 84 86 ; 0xf90e3 + xor ah, ah ; 30 e4 ; 0xf90e6 + mov word [bp-02eh], ax ; 89 46 d2 ; 0xf90e8 + mov ax, dx ; 89 d0 ; 0xf90eb ahci.c:765 + call 0176ah ; e8 7a 86 ; 0xf90ed + xor ah, ah ; 30 e4 ; 0xf90f0 + mov word [bp-02ah], ax ; 89 46 d6 ; 0xf90f2 + jmp short 09107h ; eb 10 ; 0xf90f5 ahci.c:767 + push word [bp-014h] ; ff 76 ec ; 0xf90f7 ahci.c:768 + push word [bp-018h] ; ff 76 e8 ; 0xf90fa + push di ; 57 ; 0xf90fd + push si ; 56 ; 0xf90fe + mov dx, ss ; 8c d2 ; 0xf90ff + lea ax, [bp-02eh] ; 8d 46 d2 ; 0xf9101 + call 05880h ; e8 79 c7 ; 0xf9104 + mov bx, 00e06h ; bb 06 0e ; 0xf9107 ahci.c:772 + mov cx, ds ; 8c d9 ; 0xf910a + mov ax, strict word 00004h ; b8 04 00 ; 0xf910c + call 01a27h ; e8 15 89 ; 0xf910f + push word [bp-014h] ; ff 76 ec ; 0xf9112 + push word [bp-018h] ; ff 76 e8 ; 0xf9115 + push di ; 57 ; 0xf9118 + push si ; 56 ; 0xf9119 + mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf911a + push ax ; 50 ; 0xf911d + mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf911e + push ax ; 50 ; 0xf9121 + mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf9122 + push ax ; 50 ; 0xf9125 + push word [bp-01eh] ; ff 76 e2 ; 0xf9126 + push dword [bp-01ch] ; 66 ff 76 e4 ; 0xf9129 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf912d + push ax ; 50 ; 0xf9131 + movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf9132 + push ax ; 50 ; 0xf9136 + push 00d3ch ; 68 3c 0d ; 0xf9137 + push strict byte 00004h ; 6a 04 ; 0xf913a + call 01a68h ; e8 29 89 ; 0xf913c + add sp, strict byte 0001ch ; 83 c4 1c ; 0xf913f + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf9142 ahci.c:774 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf9146 + mov di, word [bp-010h] ; 8b 7e f0 ; 0xf9149 + add di, ax ; 01 c7 ; 0xf914c + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf914e + lea di, [di+026h] ; 8d 7d 26 ; 0xf9151 + push DS ; 1e ; 0xf9154 + push SS ; 16 ; 0xf9155 + pop DS ; 1f ; 0xf9156 + lea si, [bp-02eh] ; 8d 76 d2 ; 0xf9157 + movsw ; a5 ; 0xf915a + movsw ; a5 ; 0xf915b + movsw ; a5 ; 0xf915c + pop DS ; 1f ; 0xf915d + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf915e ahci.c:777 + mov al, byte [es:bx+0024eh] ; 26 8a 87 4e 02 ; 0xf9161 + mov ah, byte [bp-008h] ; 8a 66 f8 ; 0xf9166 ahci.c:778 + add ah, 00ch ; 80 c4 0c ; 0xf9169 + movzx bx, al ; 0f b6 d8 ; 0xf916c + add bx, word [bp-010h] ; 03 5e f0 ; 0xf916f + mov byte [es:bx+0024fh], ah ; 26 88 a7 4f 02 ; 0xf9172 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf9177 ahci.c:779 + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf9179 ahci.c:780 + mov byte [es:bx+0024eh], al ; 26 88 87 4e 02 ; 0xf917c + mov bx, strict word 00075h ; bb 75 00 ; 0xf9181 ahci.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf9184 + mov es, ax ; 8e c0 ; 0xf9187 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf9189 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf918c ahci.c:784 + mov byte [es:bx], al ; 26 88 07 ; 0xf918e ahci.c:53 + jmp near 09238h ; e9 a4 00 ; 0xf9191 ahci.c:787 + cmp dx, 0eb14h ; 81 fa 14 eb ; 0xf9194 + jne near 09238h ; 0f 85 9c 00 ; 0xf9198 + cmp bx, 00101h ; 81 fb 01 01 ; 0xf919c + jne near 09238h ; 0f 85 94 00 ; 0xf91a0 + les bx, [bp-010h] ; c4 5e f0 ; 0xf91a4 ahci.c:792 + 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; 0xf91a7 + db 066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h + ; mov dword [es:bx], strict dword 000000000h ; 66 26 c7 07 00 00 00 00 ; 0xf91b0 + lea dx, [bp-0022eh] ; 8d 96 d2 fd ; 0xf91b8 ahci.c:793 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf91bc + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf91c0 + 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; 0xf91c4 ahci.c:794 + mov bx, 000a1h ; bb a1 00 ; 0xf91cd ahci.c:796 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf91d0 + mov dx, es ; 8c c2 ; 0xf91d3 + call 08555h ; e8 7d f3 ; 0xf91d5 + test byte [bp-0022eh], 080h ; f6 86 d2 fd 80 ; 0xf91d8 ahci.c:801 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf91dd + movzx dx, al ; 0f b6 d0 ; 0xf91e0 + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf91e3 ahci.c:803 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf91e7 + add bx, word [bp-010h] ; 03 5e f0 ; 0xf91ea + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf91ed + mov byte [es:bx+002a1h], al ; 26 88 87 a1 02 ; 0xf91f0 + movzx ax, cl ; 0f b6 c1 ; 0xf91f5 ahci.c:804 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf91f8 + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf91fb + add bx, ax ; 01 c3 ; 0xf91fe + mov word [es:bx+01eh], 00505h ; 26 c7 47 1e 05 05 ; 0xf9200 + mov byte [es:bx+020h], dl ; 26 88 57 20 ; 0xf9206 ahci.c:806 + mov word [es:bx+024h], 00800h ; 26 c7 47 24 00 08 ; 0xf920a ahci.c:807 + mov byte [es:bx+023h], 000h ; 26 c6 47 23 00 ; 0xf9210 ahci.c:808 + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf9215 ahci.c:811 + mov al, byte [es:bx+00263h] ; 26 8a 87 63 02 ; 0xf9218 + mov ah, byte [bp-008h] ; 8a 66 f8 ; 0xf921d ahci.c:812 + add ah, 00ch ; 80 c4 0c ; 0xf9220 + movzx bx, al ; 0f b6 d8 ; 0xf9223 + add bx, word [bp-010h] ; 03 5e f0 ; 0xf9226 + mov byte [es:bx+00264h], ah ; 26 88 a7 64 02 ; 0xf9229 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf922e ahci.c:813 + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf9230 ahci.c:814 + mov byte [es:bx+00263h], al ; 26 88 87 63 02 ; 0xf9233 + inc byte [bp-008h] ; fe 46 f8 ; 0xf9238 ahci.c:819 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf923b ahci.c:820 + les bx, [bp-010h] ; c4 5e f0 ; 0xf923e + mov byte [es:bx+002a5h], al ; 26 88 87 a5 02 ; 0xf9241 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9246 ahci.c:825 + pop di ; 5f ; 0xf9249 + pop si ; 5e ; 0xf924a + pop cx ; 59 ; 0xf924b + pop bp ; 5d ; 0xf924c + retn ; c3 ; 0xf924d + ; disGetNextSymbol 0xf924e LB 0x1b4e -> off=0x0 cb=000000000000003a uValue=00000000000f7c4e 'ahci_mem_alloc' +ahci_mem_alloc: ; 0xf924e LB 0x3a + push bx ; 53 ; 0xf924e ahci.c:830 + push cx ; 51 ; 0xf924f + push dx ; 52 ; 0xf9250 + push di ; 57 ; 0xf9251 + push bp ; 55 ; 0xf9252 + mov bp, sp ; 89 e5 ; 0xf9253 + mov di, 00413h ; bf 13 04 ; 0xf9255 ahci.c:58 + xor ax, ax ; 31 c0 ; 0xf9258 + mov es, ax ; 8e c0 ; 0xf925a + mov ax, word [es:di] ; 26 8b 05 ; 0xf925c + test ax, ax ; 85 c0 ; 0xf925f ahci.c:839 + je short 09282h ; 74 1f ; 0xf9261 + dec ax ; 48 ; 0xf9263 ahci.c:840 + mov bx, ax ; 89 c3 ; 0xf9264 + xor dx, dx ; 31 d2 ; 0xf9266 ahci.c:843 + mov cx, strict word 0000ah ; b9 0a 00 ; 0xf9268 + sal ax, 1 ; d1 e0 ; 0xf926b + rcl dx, 1 ; d1 d2 ; 0xf926d + loop 0926bh ; e2 fa ; 0xf926f + mov di, dx ; 89 d7 ; 0xf9271 + mov cx, strict word 00004h ; b9 04 00 ; 0xf9273 + shr di, 1 ; d1 ef ; 0xf9276 + rcr ax, 1 ; d1 d8 ; 0xf9278 + loop 09276h ; e2 fa ; 0xf927a + mov di, 00413h ; bf 13 04 ; 0xf927c ahci.c:63 + mov word [es:di], bx ; 26 89 1d ; 0xf927f + pop bp ; 5d ; 0xf9282 ahci.c:848 + pop di ; 5f ; 0xf9283 + pop dx ; 5a ; 0xf9284 + pop cx ; 59 ; 0xf9285 + pop bx ; 5b ; 0xf9286 + retn ; c3 ; 0xf9287 + ; disGetNextSymbol 0xf9288 LB 0x1b14 -> off=0x0 cb=0000000000000145 uValue=00000000000f7c88 'ahci_hba_init' +ahci_hba_init: ; 0xf9288 LB 0x145 + push bp ; 55 ; 0xf9288 ahci.c:853 + mov bp, sp ; 89 e5 ; 0xf9289 + push bx ; 53 ; 0xf928b + push cx ; 51 ; 0xf928c + push dx ; 52 ; 0xf928d + push si ; 56 ; 0xf928e + push di ; 57 ; 0xf928f + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf9290 + mov si, ax ; 89 c6 ; 0xf9293 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf9295 ahci.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf9298 + mov es, ax ; 8e c0 ; 0xf929b + mov di, word [es:bx] ; 26 8b 3f ; 0xf929d + mov bx, strict word 0005eh ; bb 5e 00 ; 0xf92a0 ahci.c:864 + mov ax, strict word 00010h ; b8 10 00 ; 0xf92a3 ahci.c:866 + xor cx, cx ; 31 c9 ; 0xf92a6 + mov dx, si ; 89 f2 ; 0xf92a8 + xchg cx, ax ; 91 ; 0xf92aa + sal eax, 010h ; 66 c1 e0 10 ; 0xf92ab + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf92af + out DX, eax ; 66 ef ; 0xf92b1 + lea dx, [si+004h] ; 8d 54 04 ; 0xf92b3 + in eax, DX ; 66 ed ; 0xf92b6 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf92b8 + shr eax, 010h ; 66 c1 e8 10 ; 0xf92ba + xchg dx, ax ; 92 ; 0xf92be + call 0924eh ; e8 8c ff ; 0xf92bf ahci.c:872 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf92c2 + test ax, ax ; 85 c0 ; 0xf92c5 ahci.c:873 + je near 093c3h ; 0f 84 f8 00 ; 0xf92c7 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf92cb ahci.c:876 + mov es, di ; 8e c7 ; 0xf92ce + mov word [es:bx+002a6h], ax ; 26 89 87 a6 02 ; 0xf92d0 + mov byte [es:bx+002a5h], 000h ; 26 c6 87 a5 02 00 ; 0xf92d5 ahci.c:882 + xor bx, bx ; 31 db ; 0xf92db ahci.c:884 + mov es, ax ; 8e c0 ; 0xf92dd + mov byte [es:bx+00262h], 0ffh ; 26 c6 87 62 02 ff ; 0xf92df ahci.c:885 + mov word [es:bx+00260h], si ; 26 89 b7 60 02 ; 0xf92e5 ahci.c:886 + mov ax, strict word 00004h ; b8 04 00 ; 0xf92ea ahci.c:260 + xor cx, cx ; 31 c9 ; 0xf92ed + mov dx, si ; 89 f2 ; 0xf92ef + xchg cx, ax ; 91 ; 0xf92f1 + sal eax, 010h ; 66 c1 e0 10 ; 0xf92f2 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf92f6 + out DX, eax ; 66 ef ; 0xf92f8 + lea bx, [si+004h] ; 8d 5c 04 ; 0xf92fa ahci.c:261 + mov dx, bx ; 89 da ; 0xf92fd + in eax, DX ; 66 ed ; 0xf92ff + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9301 + shr eax, 010h ; 66 c1 e8 10 ; 0xf9303 + xchg dx, ax ; 92 ; 0xf9307 + or AL, strict byte 001h ; 0c 01 ; 0xf9308 + mov cx, dx ; 89 d1 ; 0xf930a + mov dx, bx ; 89 da ; 0xf930c + xchg cx, ax ; 91 ; 0xf930e + sal eax, 010h ; 66 c1 e0 10 ; 0xf930f + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9313 + out DX, eax ; 66 ef ; 0xf9315 + mov ax, strict word 00004h ; b8 04 00 ; 0xf9317 ahci.c:892 + xor cx, cx ; 31 c9 ; 0xf931a + mov dx, si ; 89 f2 ; 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 + lea bx, [si+004h] ; 8d 5c 04 ; 0xf9327 + mov dx, bx ; 89 da ; 0xf932a + in eax, DX ; 66 ed ; 0xf932c + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf932e + shr eax, 010h ; 66 c1 e8 10 ; 0xf9330 + xchg dx, ax ; 92 ; 0xf9334 + test AL, strict byte 001h ; a8 01 ; 0xf9335 ahci.c:893 + jne short 09317h ; 75 de ; 0xf9337 + xor ax, ax ; 31 c0 ; 0xf9339 ahci.c:895 + xor cx, cx ; 31 c9 ; 0xf933b + mov dx, si ; 89 f2 ; 0xf933d + xchg cx, ax ; 91 ; 0xf933f + sal eax, 010h ; 66 c1 e0 10 ; 0xf9340 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9344 + out DX, eax ; 66 ef ; 0xf9346 + mov dx, bx ; 89 da ; 0xf9348 + in eax, DX ; 66 ed ; 0xf934a + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf934c + shr eax, 010h ; 66 c1 e8 10 ; 0xf934e + xchg dx, ax ; 92 ; 0xf9352 + push strict byte 00000h ; 6a 00 ; 0xf9353 ahci.c:896 + mov bx, strict word 0001fh ; bb 1f 00 ; 0xf9355 + xor cx, cx ; 31 c9 ; 0xf9358 + call 083d1h ; e8 74 f0 ; 0xf935a + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf935d + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf935f + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf9362 ahci.c:901 + jmp short 09388h ; eb 20 ; 0xf9366 ahci.c:902 + xor al, al ; 30 c0 ; 0xf9368 ahci.c:280 + test al, al ; 84 c0 ; 0xf936a ahci.c:281 + je short 0937fh ; 74 11 ; 0xf936c + movzx bx, byte [bp-00ch] ; 0f b6 5e f4 ; 0xf936e ahci.c:907 + xor ax, ax ; 31 c0 ; 0xf9372 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf9374 + call 08dafh ; e8 35 fa ; 0xf9377 + dec byte [bp-00eh] ; fe 4e f2 ; 0xf937a ahci.c:908 + je short 093c1h ; 74 42 ; 0xf937d ahci.c:909 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf937f ahci.c:912 + cmp byte [bp-00ch], 020h ; 80 7e f4 20 ; 0xf9382 ahci.c:913 + jnc short 093c1h ; 73 39 ; 0xf9386 + movzx cx, byte [bp-00ch] ; 0f b6 4e f4 ; 0xf9388 + mov bx, strict word 00001h ; bb 01 00 ; 0xf938c + xor di, di ; 31 ff ; 0xf938f + jcxz 09399h ; e3 06 ; 0xf9391 + sal bx, 1 ; d1 e3 ; 0xf9393 + rcl di, 1 ; d1 d7 ; 0xf9395 + loop 09393h ; e2 fa ; 0xf9397 + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf9399 + xor cx, cx ; 31 c9 ; 0xf939c + mov dx, si ; 89 f2 ; 0xf939e + xchg cx, ax ; 91 ; 0xf93a0 + sal eax, 010h ; 66 c1 e0 10 ; 0xf93a1 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf93a5 + out DX, eax ; 66 ef ; 0xf93a7 + lea dx, [si+004h] ; 8d 54 04 ; 0xf93a9 + in eax, DX ; 66 ed ; 0xf93ac + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf93ae + shr eax, 010h ; 66 c1 e8 10 ; 0xf93b0 + xchg dx, ax ; 92 ; 0xf93b4 + test dx, di ; 85 fa ; 0xf93b5 + jne short 093bdh ; 75 04 ; 0xf93b7 + test ax, bx ; 85 d8 ; 0xf93b9 + je short 09368h ; 74 ab ; 0xf93bb + mov AL, strict byte 001h ; b0 01 ; 0xf93bd + jmp short 0936ah ; eb a9 ; 0xf93bf + xor ax, ax ; 31 c0 ; 0xf93c1 ahci.c:915 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf93c3 ahci.c:916 + pop di ; 5f ; 0xf93c6 + pop si ; 5e ; 0xf93c7 + pop dx ; 5a ; 0xf93c8 + pop cx ; 59 ; 0xf93c9 + pop bx ; 5b ; 0xf93ca + pop bp ; 5d ; 0xf93cb + retn ; c3 ; 0xf93cc + ; disGetNextSymbol 0xf93cd LB 0x19cf -> off=0x17 cb=0000000000000116 uValue=00000000000f7de4 'ahci_init' + db 00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0b4h, 094h, 092h, 094h, 098h, 094h, 09eh, 094h, 0a4h + db 094h, 0aah, 094h, 0b0h, 094h, 0b4h, 094h +ahci_init: ; 0xf93e4 LB 0x116 + push bp ; 55 ; 0xf93e4 ahci.c:921 + mov bp, sp ; 89 e5 ; 0xf93e5 + push si ; 56 ; 0xf93e7 + push di ; 57 ; 0xf93e8 + sub sp, strict byte 00008h ; 83 ec 08 ; 0xf93e9 + mov ax, 00601h ; b8 01 06 ; 0xf93ec ahci.c:925 + mov dx, strict word 00001h ; ba 01 00 ; 0xf93ef + call 0aa33h ; e8 3e 16 ; 0xf93f2 + mov bx, ax ; 89 c3 ; 0xf93f5 + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf93f7 ahci.c:926 + je near 094f3h ; 0f 84 f5 00 ; 0xf93fa + xor al, al ; 30 c0 ; 0xf93fe ahci.c:931 + shr ax, 008h ; c1 e8 08 ; 0xf9400 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf9403 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9406 ahci.c:932 + movzx dx, bl ; 0f b6 d3 ; 0xf9409 ahci.c:937 + xor ah, ah ; 30 e4 ; 0xf940c + mov bx, strict word 00034h ; bb 34 00 ; 0xf940e + call 0aa9dh ; e8 89 16 ; 0xf9411 + mov cl, al ; 88 c1 ; 0xf9414 + test cl, cl ; 84 c9 ; 0xf9416 ahci.c:939 + je short 0943dh ; 74 23 ; 0xf9418 + movzx bx, cl ; 0f b6 d9 ; 0xf941a ahci.c:941 + movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf941d + movzx si, byte [bp-00ah] ; 0f b6 76 f6 ; 0xf9421 + mov dx, di ; 89 fa ; 0xf9425 + mov ax, si ; 89 f0 ; 0xf9427 + call 0aa9dh ; e8 71 16 ; 0xf9429 + cmp AL, strict byte 012h ; 3c 12 ; 0xf942c ahci.c:945 + je short 0943dh ; 74 0d ; 0xf942e + mov al, cl ; 88 c8 ; 0xf9430 ahci.c:949 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf9432 + movzx bx, al ; 0f b6 d8 ; 0xf9434 + mov dx, di ; 89 fa ; 0xf9437 + mov ax, si ; 89 f0 ; 0xf9439 + jmp short 09411h ; eb d4 ; 0xf943b ahci.c:950 + test cl, cl ; 84 c9 ; 0xf943d ahci.c:952 + je near 094f3h ; 0f 84 b0 00 ; 0xf943f + add cl, 002h ; 80 c1 02 ; 0xf9443 ahci.c:959 + movzx bx, cl ; 0f b6 d9 ; 0xf9446 ahci.c:961 + movzx si, byte [bp-008h] ; 0f b6 76 f8 ; 0xf9449 + movzx di, byte [bp-00ah] ; 0f b6 7e f6 ; 0xf944d + mov dx, si ; 89 f2 ; 0xf9451 + mov ax, di ; 89 f8 ; 0xf9453 + call 0aa9dh ; e8 45 16 ; 0xf9455 + cmp AL, strict byte 010h ; 3c 10 ; 0xf9458 ahci.c:962 + jne near 094f3h ; 0f 85 95 00 ; 0xf945a + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf945e ahci.c:965 + mov al, cl ; 88 c8 ; 0xf9462 ahci.c:967 + add AL, strict byte 002h ; 04 02 ; 0xf9464 + movzx bx, al ; 0f b6 d8 ; 0xf9466 + mov dx, si ; 89 f2 ; 0xf9469 + mov ax, di ; 89 f8 ; 0xf946b + call 0aac1h ; e8 51 16 ; 0xf946d + mov dx, ax ; 89 c2 ; 0xf9470 + and ax, strict word 0000fh ; 25 0f 00 ; 0xf9472 ahci.c:971 + sub ax, strict word 00004h ; 2d 04 00 ; 0xf9475 + cmp ax, strict word 0000bh ; 3d 0b 00 ; 0xf9478 + jnbe short 094b4h ; 77 37 ; 0xf947b + push CS ; 0e ; 0xf947d + pop ES ; 07 ; 0xf947e + mov cx, strict word 00008h ; b9 08 00 ; 0xf947f + mov di, 093cdh ; bf cd 93 ; 0xf9482 + repne scasb ; f2 ae ; 0xf9485 + sal cx, 1 ; d1 e1 ; 0xf9487 + mov di, cx ; 89 cf ; 0xf9489 + mov ax, word [cs:di-06c2ch] ; 2e 8b 85 d4 93 ; 0xf948b + jmp ax ; ff e0 ; 0xf9490 + mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf9492 ahci.c:974 + jmp short 094b4h ; eb 1c ; 0xf9496 ahci.c:975 + mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf9498 ahci.c:977 + jmp short 094b4h ; eb 16 ; 0xf949c ahci.c:978 + mov byte [bp-006h], 018h ; c6 46 fa 18 ; 0xf949e ahci.c:980 + jmp short 094b4h ; eb 10 ; 0xf94a2 ahci.c:981 + mov byte [bp-006h], 01ch ; c6 46 fa 1c ; 0xf94a4 ahci.c:983 + jmp short 094b4h ; eb 0a ; 0xf94a8 ahci.c:984 + mov byte [bp-006h], 020h ; c6 46 fa 20 ; 0xf94aa ahci.c:986 + jmp short 094b4h ; eb 04 ; 0xf94ae ahci.c:987 + mov byte [bp-006h], 024h ; c6 46 fa 24 ; 0xf94b0 ahci.c:989 + mov cx, dx ; 89 d1 ; 0xf94b4 ahci.c:998 + shr cx, 004h ; c1 e9 04 ; 0xf94b6 + sal cx, 002h ; c1 e1 02 ; 0xf94b9 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf94bc ahci.c:1000 + test al, al ; 84 c0 ; 0xf94bf + je short 094f3h ; 74 30 ; 0xf94c1 + movzx bx, al ; 0f b6 d8 ; 0xf94c3 ahci.c:1002 + movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf94c6 + movzx si, byte [bp-00ah] ; 0f b6 76 f6 ; 0xf94ca + mov dx, di ; 89 fa ; 0xf94ce + mov ax, si ; 89 f0 ; 0xf94d0 + call 0aae3h ; e8 0e 16 ; 0xf94d2 + test AL, strict byte 001h ; a8 01 ; 0xf94d5 ahci.c:1006 + je short 094f3h ; 74 1a ; 0xf94d7 + and AL, strict byte 0f0h ; 24 f0 ; 0xf94d9 ahci.c:1009 + add ax, cx ; 01 c8 ; 0xf94db + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf94dd + mov cx, strict word 00007h ; b9 07 00 ; 0xf94e0 ahci.c:1012 + mov bx, strict word 00004h ; bb 04 00 ; 0xf94e3 + mov dx, di ; 89 fa ; 0xf94e6 + mov ax, si ; 89 f0 ; 0xf94e8 + call 0ab0ah ; e8 1d 16 ; 0xf94ea + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf94ed ahci.c:1015 + call 09288h ; e8 95 fd ; 0xf94f0 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf94f3 ahci.c:1029 + pop di ; 5f ; 0xf94f6 + pop si ; 5e ; 0xf94f7 + pop bp ; 5d ; 0xf94f8 + retn ; c3 ; 0xf94f9 + ; disGetNextSymbol 0xf94fa LB 0x18a2 -> off=0x0 cb=0000000000000070 uValue=00000000000f7efa 'virtio_reg_set_bar_offset_length' +virtio_reg_set_bar_offset_length: ; 0xf94fa LB 0x70 + push bp ; 55 ; 0xf94fa virtio.c:287 + mov bp, sp ; 89 e5 ; 0xf94fb + push cx ; 51 ; 0xf94fd + push si ; 56 ; 0xf94fe + push di ; 57 ; 0xf94ff + mov si, ax ; 89 c6 ; 0xf9500 + mov di, dx ; 89 d7 ; 0xf9502 + movzx cx, bl ; 0f b6 cb ; 0xf9504 virtio.c:289 + mov es, dx ; 8e c2 ; 0xf9507 + mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf9509 + add AL, strict byte 004h ; 04 04 ; 0xf950e + movzx bx, al ; 0f b6 d8 ; 0xf9510 + movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf9513 + movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf9519 + call 0ab26h ; e8 04 16 ; 0xf951f + push dword [bp+004h] ; 66 ff 76 04 ; 0xf9522 virtio.c:290 + mov es, di ; 8e c7 ; 0xf9526 + mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf9528 + add AL, strict byte 008h ; 04 08 ; 0xf952d + movzx bx, al ; 0f b6 d8 ; 0xf952f + movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf9532 + movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf9538 + call 0ab42h ; e8 01 16 ; 0xf953e + push dword [bp+008h] ; 66 ff 76 08 ; 0xf9541 virtio.c:291 + mov es, di ; 8e c7 ; 0xf9545 + mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf9547 + add AL, strict byte 00ch ; 04 0c ; 0xf954c + movzx bx, al ; 0f b6 d8 ; 0xf954e + movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf9551 + movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf9557 + call 0ab42h ; e8 e2 15 ; 0xf955d + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9560 virtio.c:292 + pop di ; 5f ; 0xf9563 + pop si ; 5e ; 0xf9564 + pop cx ; 59 ; 0xf9565 + pop bp ; 5d ; 0xf9566 + retn 00008h ; c2 08 00 ; 0xf9567 + ; disGetNextSymbol 0xf956a LB 0x1832 -> off=0x0 cb=0000000000000030 uValue=00000000000f7f6a 'virtio_reg_common_access_prepare' +virtio_reg_common_access_prepare: ; 0xf956a LB 0x30 + push bp ; 55 ; 0xf956a virtio.c:294 + mov bp, sp ; 89 e5 ; 0xf956b + push si ; 56 ; 0xf956d + mov si, ax ; 89 c6 ; 0xf956e + mov es, dx ; 8e c2 ; 0xf9570 + push dword [bp+004h] ; 66 ff 76 04 ; 0xf9572 virtio.c:296 + xor dx, dx ; 31 d2 ; 0xf9576 + mov ax, word [es:si+060h] ; 26 8b 44 60 ; 0xf9578 + add ax, bx ; 01 d8 ; 0xf957c + mov bx, word [es:si+062h] ; 26 8b 5c 62 ; 0xf957e + adc bx, dx ; 11 d3 ; 0xf9582 + push bx ; 53 ; 0xf9584 + push ax ; 50 ; 0xf9585 + movzx bx, byte [es:si+05ch] ; 26 0f b6 5c 5c ; 0xf9586 + mov ax, si ; 89 f0 ; 0xf958b + mov dx, es ; 8c c2 ; 0xf958d + call 094fah ; e8 68 ff ; 0xf958f + lea sp, [bp-002h] ; 8d 66 fe ; 0xf9592 virtio.c:300 + pop si ; 5e ; 0xf9595 + pop bp ; 5d ; 0xf9596 + retn 00004h ; c2 04 00 ; 0xf9597 + ; disGetNextSymbol 0xf959a LB 0x1802 -> off=0x0 cb=0000000000000033 uValue=00000000000f7f9a 'virtio_reg_dev_access_prepare' +virtio_reg_dev_access_prepare: ; 0xf959a LB 0x33 + push bp ; 55 ; 0xf959a virtio.c:302 + mov bp, sp ; 89 e5 ; 0xf959b + push si ; 56 ; 0xf959d + mov si, ax ; 89 c6 ; 0xf959e + mov es, dx ; 8e c2 ; 0xf95a0 + push dword [bp+004h] ; 66 ff 76 04 ; 0xf95a2 virtio.c:304 + xor dx, dx ; 31 d2 ; 0xf95a6 + mov ax, word [es:si+00084h] ; 26 8b 84 84 00 ; 0xf95a8 + add ax, bx ; 01 d8 ; 0xf95ad + mov bx, word [es:si+00086h] ; 26 8b 9c 86 00 ; 0xf95af + adc bx, dx ; 11 d3 ; 0xf95b4 + push bx ; 53 ; 0xf95b6 + push ax ; 50 ; 0xf95b7 + movzx bx, byte [es:si+00080h] ; 26 0f b6 9c 80 00 ; 0xf95b8 + mov ax, si ; 89 f0 ; 0xf95be + mov dx, es ; 8c c2 ; 0xf95c0 + call 094fah ; e8 35 ff ; 0xf95c2 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf95c5 virtio.c:308 + pop si ; 5e ; 0xf95c8 + pop bp ; 5d ; 0xf95c9 + retn 00004h ; c2 04 00 ; 0xf95ca + ; disGetNextSymbol 0xf95cd LB 0x17cf -> off=0x0 cb=0000000000000030 uValue=00000000000f7fcd 'virtio_reg_notify_access_prepare' +virtio_reg_notify_access_prepare: ; 0xf95cd LB 0x30 + push bp ; 55 ; 0xf95cd virtio.c:310 + mov bp, sp ; 89 e5 ; 0xf95ce + push si ; 56 ; 0xf95d0 + mov si, ax ; 89 c6 ; 0xf95d1 + mov es, dx ; 8e c2 ; 0xf95d3 + push dword [bp+004h] ; 66 ff 76 04 ; 0xf95d5 virtio.c:312 + xor dx, dx ; 31 d2 ; 0xf95d9 + mov ax, word [es:si+06ch] ; 26 8b 44 6c ; 0xf95db + add ax, bx ; 01 d8 ; 0xf95df + mov bx, word [es:si+06eh] ; 26 8b 5c 6e ; 0xf95e1 + adc bx, dx ; 11 d3 ; 0xf95e5 + push bx ; 53 ; 0xf95e7 + push ax ; 50 ; 0xf95e8 + movzx bx, byte [es:si+068h] ; 26 0f b6 5c 68 ; 0xf95e9 + mov ax, si ; 89 f0 ; 0xf95ee + mov dx, es ; 8c c2 ; 0xf95f0 + call 094fah ; e8 05 ff ; 0xf95f2 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf95f5 virtio.c:316 + pop si ; 5e ; 0xf95f8 + pop bp ; 5d ; 0xf95f9 + retn 00004h ; c2 04 00 ; 0xf95fa + ; disGetNextSymbol 0xf95fd LB 0x179f -> off=0x0 cb=000000000000001d uValue=00000000000f7ffd 'virtio_reg_isr_prepare' +virtio_reg_isr_prepare: ; 0xf95fd LB 0x1d + push bp ; 55 ; 0xf95fd virtio.c:318 + mov bp, sp ; 89 e5 ; 0xf95fe + push si ; 56 ; 0xf9600 + mov si, ax ; 89 c6 ; 0xf9601 + mov es, dx ; 8e c2 ; 0xf9603 + push cx ; 51 ; 0xf9605 virtio.c:320 + push bx ; 53 ; 0xf9606 + db 066h, 026h, 0ffh, 074h, 078h + ; push dword [es:si+078h] ; 66 26 ff 74 78 ; 0xf9607 + movzx bx, byte [es:si+074h] ; 26 0f b6 5c 74 ; 0xf960c + call 094fah ; e8 e6 fe ; 0xf9611 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf9614 virtio.c:324 + pop si ; 5e ; 0xf9617 + pop bp ; 5d ; 0xf9618 + retn ; c3 ; 0xf9619 + ; disGetNextSymbol 0xf961a LB 0x1782 -> off=0x0 cb=0000000000000031 uValue=00000000000f801a 'virtio_reg_common_read_u8' +virtio_reg_common_read_u8: ; 0xf961a LB 0x31 + push bp ; 55 ; 0xf961a virtio.c:326 + mov bp, sp ; 89 e5 ; 0xf961b + push cx ; 51 ; 0xf961d + push si ; 56 ; 0xf961e + mov si, ax ; 89 c6 ; 0xf961f + mov cx, dx ; 89 d1 ; 0xf9621 + push dword 000000001h ; 66 6a 01 ; 0xf9623 virtio.c:328 + call 0956ah ; e8 41 ff ; 0xf9626 + mov es, cx ; 8e c1 ; 0xf9629 virtio.c:329 + mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf962b + add AL, strict byte 010h ; 04 10 ; 0xf9630 + movzx bx, al ; 0f b6 d8 ; 0xf9632 + movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf9635 + movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf963b + call 0aa9dh ; e8 59 14 ; 0xf9641 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9644 virtio.c:330 + pop si ; 5e ; 0xf9647 + pop cx ; 59 ; 0xf9648 + pop bp ; 5d ; 0xf9649 + retn ; c3 ; 0xf964a + ; disGetNextSymbol 0xf964b LB 0x1751 -> off=0x0 cb=0000000000000033 uValue=00000000000f804b 'virtio_reg_common_write_u8' +virtio_reg_common_write_u8: ; 0xf964b LB 0x33 + push bp ; 55 ; 0xf964b virtio.c:332 + mov bp, sp ; 89 e5 ; 0xf964c + push si ; 56 ; 0xf964e + push di ; 57 ; 0xf964f + mov si, ax ; 89 c6 ; 0xf9650 + mov di, dx ; 89 d7 ; 0xf9652 + push dword 000000001h ; 66 6a 01 ; 0xf9654 virtio.c:334 + call 0956ah ; e8 10 ff ; 0xf9657 + xor ch, ch ; 30 ed ; 0xf965a virtio.c:335 + mov es, di ; 8e c7 ; 0xf965c + mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf965e + add AL, strict byte 010h ; 04 10 ; 0xf9663 + movzx bx, al ; 0f b6 d8 ; 0xf9665 + movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf9668 + movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf966e + call 0ab26h ; e8 af 14 ; 0xf9674 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9677 virtio.c:336 + pop di ; 5f ; 0xf967a + pop si ; 5e ; 0xf967b + pop bp ; 5d ; 0xf967c + retn ; c3 ; 0xf967d + ; disGetNextSymbol 0xf967e LB 0x171e -> off=0x0 cb=0000000000000031 uValue=00000000000f807e 'virtio_reg_common_read_u16' +virtio_reg_common_read_u16: ; 0xf967e LB 0x31 + push bp ; 55 ; 0xf967e virtio.c:338 + mov bp, sp ; 89 e5 ; 0xf967f + push cx ; 51 ; 0xf9681 + push si ; 56 ; 0xf9682 + mov si, ax ; 89 c6 ; 0xf9683 + mov cx, dx ; 89 d1 ; 0xf9685 + push dword 000000002h ; 66 6a 02 ; 0xf9687 virtio.c:340 + call 0956ah ; e8 dd fe ; 0xf968a + mov es, cx ; 8e c1 ; 0xf968d virtio.c:341 + mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf968f + add AL, strict byte 010h ; 04 10 ; 0xf9694 + movzx bx, al ; 0f b6 d8 ; 0xf9696 + movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf9699 + movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf969f + call 0aac1h ; e8 19 14 ; 0xf96a5 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf96a8 virtio.c:342 + pop si ; 5e ; 0xf96ab + pop cx ; 59 ; 0xf96ac + pop bp ; 5d ; 0xf96ad + retn ; c3 ; 0xf96ae + ; disGetNextSymbol 0xf96af LB 0x16ed -> off=0x0 cb=0000000000000031 uValue=00000000000f80af 'virtio_reg_common_write_u16' +virtio_reg_common_write_u16: ; 0xf96af LB 0x31 + push bp ; 55 ; 0xf96af virtio.c:344 + mov bp, sp ; 89 e5 ; 0xf96b0 + push si ; 56 ; 0xf96b2 + push di ; 57 ; 0xf96b3 + mov si, ax ; 89 c6 ; 0xf96b4 + mov di, dx ; 89 d7 ; 0xf96b6 + push dword 000000002h ; 66 6a 02 ; 0xf96b8 virtio.c:346 + call 0956ah ; e8 ac fe ; 0xf96bb + mov es, di ; 8e c7 ; 0xf96be virtio.c:347 + mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf96c0 + add AL, strict byte 010h ; 04 10 ; 0xf96c5 + movzx bx, al ; 0f b6 d8 ; 0xf96c7 + movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf96ca + movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf96d0 + call 0ab0ah ; e8 31 14 ; 0xf96d6 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf96d9 virtio.c:348 + pop di ; 5f ; 0xf96dc + pop si ; 5e ; 0xf96dd + pop bp ; 5d ; 0xf96de + retn ; c3 ; 0xf96df + ; disGetNextSymbol 0xf96e0 LB 0x16bc -> off=0x0 cb=0000000000000037 uValue=00000000000f80e0 'virtio_reg_common_write_u32' +virtio_reg_common_write_u32: ; 0xf96e0 LB 0x37 + push bp ; 55 ; 0xf96e0 virtio.c:350 + mov bp, sp ; 89 e5 ; 0xf96e1 + push cx ; 51 ; 0xf96e3 + push si ; 56 ; 0xf96e4 + mov si, ax ; 89 c6 ; 0xf96e5 + mov cx, dx ; 89 d1 ; 0xf96e7 + push dword 000000004h ; 66 6a 04 ; 0xf96e9 virtio.c:352 + call 0956ah ; e8 7b fe ; 0xf96ec + push dword [bp+004h] ; 66 ff 76 04 ; 0xf96ef virtio.c:353 + mov es, cx ; 8e c1 ; 0xf96f3 + mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf96f5 + add AL, strict byte 010h ; 04 10 ; 0xf96fa + movzx bx, al ; 0f b6 d8 ; 0xf96fc + movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf96ff + movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf9705 + call 0ab42h ; e8 34 14 ; 0xf970b + lea sp, [bp-004h] ; 8d 66 fc ; 0xf970e virtio.c:354 + pop si ; 5e ; 0xf9711 + pop cx ; 59 ; 0xf9712 + pop bp ; 5d ; 0xf9713 + retn 00004h ; c2 04 00 ; 0xf9714 + ; disGetNextSymbol 0xf9717 LB 0x1685 -> off=0x0 cb=0000000000000031 uValue=00000000000f8117 'virtio_reg_dev_cfg_read_u32' +virtio_reg_dev_cfg_read_u32: ; 0xf9717 LB 0x31 + push bp ; 55 ; 0xf9717 virtio.c:356 + mov bp, sp ; 89 e5 ; 0xf9718 + push cx ; 51 ; 0xf971a + push si ; 56 ; 0xf971b + mov si, ax ; 89 c6 ; 0xf971c + mov cx, dx ; 89 d1 ; 0xf971e + push dword 000000004h ; 66 6a 04 ; 0xf9720 virtio.c:358 + call 0959ah ; e8 74 fe ; 0xf9723 + mov es, cx ; 8e c1 ; 0xf9726 virtio.c:359 + mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf9728 + add AL, strict byte 010h ; 04 10 ; 0xf972d + movzx bx, al ; 0f b6 d8 ; 0xf972f + movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf9732 + movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf9738 + call 0aae3h ; e8 a2 13 ; 0xf973e + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9741 virtio.c:360 + pop si ; 5e ; 0xf9744 + pop cx ; 59 ; 0xf9745 + pop bp ; 5d ; 0xf9746 + retn ; c3 ; 0xf9747 + ; disGetNextSymbol 0xf9748 LB 0x1654 -> off=0x0 cb=0000000000000037 uValue=00000000000f8148 'virtio_reg_dev_cfg_write_u32' +virtio_reg_dev_cfg_write_u32: ; 0xf9748 LB 0x37 + push bp ; 55 ; 0xf9748 virtio.c:362 + mov bp, sp ; 89 e5 ; 0xf9749 + push cx ; 51 ; 0xf974b + push si ; 56 ; 0xf974c + mov si, ax ; 89 c6 ; 0xf974d + mov cx, dx ; 89 d1 ; 0xf974f + push dword 000000004h ; 66 6a 04 ; 0xf9751 virtio.c:364 + call 0959ah ; e8 43 fe ; 0xf9754 + push dword [bp+004h] ; 66 ff 76 04 ; 0xf9757 virtio.c:365 + mov es, cx ; 8e c1 ; 0xf975b + mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf975d + add AL, strict byte 010h ; 04 10 ; 0xf9762 + movzx bx, al ; 0f b6 d8 ; 0xf9764 + movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf9767 + movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf976d + call 0ab42h ; e8 cc 13 ; 0xf9773 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9776 virtio.c:366 + pop si ; 5e ; 0xf9779 + pop cx ; 59 ; 0xf977a + pop bp ; 5d ; 0xf977b + retn 00004h ; c2 04 00 ; 0xf977c + ; disGetNextSymbol 0xf977f LB 0x161d -> off=0x0 cb=0000000000000031 uValue=00000000000f817f 'virtio_reg_notify_write_u16' +virtio_reg_notify_write_u16: ; 0xf977f LB 0x31 + push bp ; 55 ; 0xf977f virtio.c:368 + mov bp, sp ; 89 e5 ; 0xf9780 + push si ; 56 ; 0xf9782 + push di ; 57 ; 0xf9783 + mov si, ax ; 89 c6 ; 0xf9784 + mov di, dx ; 89 d7 ; 0xf9786 + push dword 000000002h ; 66 6a 02 ; 0xf9788 virtio.c:370 + call 095cdh ; e8 3f fe ; 0xf978b + mov es, di ; 8e c7 ; 0xf978e virtio.c:371 + mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf9790 + add AL, strict byte 010h ; 04 10 ; 0xf9795 + movzx bx, al ; 0f b6 d8 ; 0xf9797 + movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf979a + movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf97a0 + call 0ab0ah ; e8 61 13 ; 0xf97a6 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf97a9 virtio.c:372 + pop di ; 5f ; 0xf97ac + pop si ; 5e ; 0xf97ad + pop bp ; 5d ; 0xf97ae + retn ; c3 ; 0xf97af + ; disGetNextSymbol 0xf97b0 LB 0x15ec -> off=0x0 cb=0000000000000037 uValue=00000000000f81b0 'virtio_reg_isr_read_u8' +virtio_reg_isr_read_u8: ; 0xf97b0 LB 0x37 + push bp ; 55 ; 0xf97b0 virtio.c:374 + mov bp, sp ; 89 e5 ; 0xf97b1 + push bx ; 53 ; 0xf97b3 + push cx ; 51 ; 0xf97b4 + push si ; 56 ; 0xf97b5 + push di ; 57 ; 0xf97b6 + mov si, ax ; 89 c6 ; 0xf97b7 + mov di, dx ; 89 d7 ; 0xf97b9 + mov bx, strict word 00001h ; bb 01 00 ; 0xf97bb virtio.c:376 + xor cx, cx ; 31 c9 ; 0xf97be + call 095fdh ; e8 3a fe ; 0xf97c0 + mov es, di ; 8e c7 ; 0xf97c3 virtio.c:377 + mov al, byte [es:si+0008ch] ; 26 8a 84 8c 00 ; 0xf97c5 + add AL, strict byte 010h ; 04 10 ; 0xf97ca + movzx bx, al ; 0f b6 d8 ; 0xf97cc + movzx dx, byte [es:si+00093h] ; 26 0f b6 94 93 00 ; 0xf97cf + movzx ax, byte [es:si+00092h] ; 26 0f b6 84 92 00 ; 0xf97d5 + call 0aa9dh ; e8 bf 12 ; 0xf97db + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf97de virtio.c:378 + pop di ; 5f ; 0xf97e1 + pop si ; 5e ; 0xf97e2 + pop cx ; 59 ; 0xf97e3 + pop bx ; 5b ; 0xf97e4 + pop bp ; 5d ; 0xf97e5 + retn ; c3 ; 0xf97e6 + ; disGetNextSymbol 0xf97e7 LB 0x15b5 -> off=0x0 cb=000000000000001e uValue=00000000000f81e7 'virtio_addr_to_phys' +virtio_addr_to_phys: ; 0xf97e7 LB 0x1e + push bx ; 53 ; 0xf97e7 virtio.c:383 + push cx ; 51 ; 0xf97e8 + push bp ; 55 ; 0xf97e9 + mov bp, sp ; 89 e5 ; 0xf97ea + mov bx, ax ; 89 c3 ; 0xf97ec + mov ax, dx ; 89 d0 ; 0xf97ee + xor dx, dx ; 31 d2 ; 0xf97f0 virtio.c:385 + mov cx, strict word 00004h ; b9 04 00 ; 0xf97f2 + sal ax, 1 ; d1 e0 ; 0xf97f5 + rcl dx, 1 ; d1 d2 ; 0xf97f7 + loop 097f5h ; e2 fa ; 0xf97f9 + xor cx, cx ; 31 c9 ; 0xf97fb + add ax, bx ; 01 d8 ; 0xf97fd + adc dx, cx ; 11 ca ; 0xf97ff + pop bp ; 5d ; 0xf9801 virtio.c:386 + pop cx ; 59 ; 0xf9802 + pop bx ; 5b ; 0xf9803 + retn ; c3 ; 0xf9804 + ; disGetNextSymbol 0xf9805 LB 0x1597 -> off=0x0 cb=0000000000000156 uValue=00000000000f8205 'virtio_scsi_cmd_data_out' +virtio_scsi_cmd_data_out: ; 0xf9805 LB 0x156 + push bp ; 55 ; 0xf9805 virtio.c:388 + mov bp, sp ; 89 e5 ; 0xf9806 + push cx ; 51 ; 0xf9808 + push si ; 56 ; 0xf9809 + push di ; 57 ; 0xf980a + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf980b + mov si, ax ; 89 c6 ; 0xf980e + mov word [bp-012h], dx ; 89 56 ee ; 0xf9810 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9813 + mov di, ax ; 89 c7 ; 0xf9816 virtio.c:391 + mov es, dx ; 8e c2 ; 0xf9818 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf981a + mov ax, word [es:si+03eh] ; 26 8b 44 3e ; 0xf981d + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf9821 + lea ax, [si+00094h] ; 8d 84 94 00 ; 0xf9824 virtio.c:394 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf9828 + mov cx, strict word 00024h ; b9 24 00 ; 0xf982b + xor bx, bx ; 31 db ; 0xf982e + call 0ad00h ; e8 cd 14 ; 0xf9830 + lea ax, [si+000b8h] ; 8d 84 b8 00 ; 0xf9833 virtio.c:395 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf9837 + mov cx, strict word 0002ch ; b9 2c 00 ; 0xf983a + xor bx, bx ; 31 db ; 0xf983d + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf983f + call 0ad00h ; e8 bb 14 ; 0xf9842 + mov es, [bp-012h] ; 8e 46 ee ; 0xf9845 virtio.c:397 + mov byte [es:si+00094h], 001h ; 26 c6 84 94 00 01 ; 0xf9848 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf984e virtio.c:398 + mov byte [es:si+00095h], al ; 26 88 84 95 00 ; 0xf9851 + mov word [es:si+00096h], strict word 00000h ; 26 c7 84 96 00 00 00 ; 0xf9856 virtio.c:399 + movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf985d virtio.c:401 + push ax ; 50 ; 0xf9861 + lea ax, [si+000a7h] ; 8d 84 a7 00 ; 0xf9862 + mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9866 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf9869 + mov dx, es ; 8c c2 ; 0xf986c + call 0ad10h ; e8 9f 14 ; 0xf986e + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9871 virtio.c:404 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf9874 + call 097e7h ; e8 6d ff ; 0xf9877 + mov es, [bp-012h] ; 8e 46 ee ; 0xf987a + mov word [es:si], ax ; 26 89 04 ; 0xf987d + mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf9880 + 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; 0xf9884 virtio.c:405 + db 066h, 026h, 0c7h, 044h, 008h, 024h, 000h, 000h, 000h + ; mov dword [es:si+008h], strict dword 000000024h ; 66 26 c7 44 08 24 00 00 00; 0xf988d virtio.c:406 + db 066h, 026h, 0c7h, 044h, 00ch, 001h, 000h, 001h, 000h + ; mov dword [es:si+00ch], strict dword 000010001h ; 66 26 c7 44 0c 01 00 01 00; 0xf9896 virtio.c:407 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf989f virtio.c:410 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf98a2 + call 097e7h ; e8 3f ff ; 0xf98a5 + mov es, [bp-012h] ; 8e 46 ee ; 0xf98a8 + mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf98ab + mov word [es:si+012h], dx ; 26 89 54 12 ; 0xf98af + db 066h, 026h, 0c7h, 044h, 014h, 000h, 000h, 000h, 000h + ; mov dword [es:si+014h], strict dword 000000000h ; 66 26 c7 44 14 00 00 00 00; 0xf98b3 virtio.c:411 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf98bc virtio.c:412 + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf98bf + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf98c3 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf98c6 + db 066h, 026h, 0c7h, 044h, 01ch, 001h, 000h, 002h, 000h + ; mov dword [es:si+01ch], strict dword 000020001h ; 66 26 c7 44 1c 01 00 02 00; 0xf98ca virtio.c:413 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf98d3 virtio.c:416 + mov dx, es ; 8c c2 ; 0xf98d6 + call 097e7h ; e8 0c ff ; 0xf98d8 + mov es, [bp-012h] ; 8e 46 ee ; 0xf98db + mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf98de + mov word [es:si+022h], dx ; 26 89 54 22 ; 0xf98e2 + db 066h, 026h, 0c7h, 044h, 024h, 000h, 000h, 000h, 000h + ; mov dword [es:si+024h], strict dword 000000000h ; 66 26 c7 44 24 00 00 00 00; 0xf98e6 virtio.c:417 + db 066h, 026h, 0c7h, 044h, 028h, 02ch, 000h, 000h, 000h + ; mov dword [es:si+028h], strict dword 00000002ch ; 66 26 c7 44 28 2c 00 00 00; 0xf98ef virtio.c:418 + db 066h, 026h, 0c7h, 044h, 02ch, 002h, 000h, 000h, 000h + ; mov dword [es:si+02ch], strict dword 000000002h ; 66 26 c7 44 2c 02 00 00 00; 0xf98f8 virtio.c:419 + mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf9901 virtio.c:420 + xor dx, dx ; 31 d2 ; 0xf9905 + mov bx, strict word 00003h ; bb 03 00 ; 0xf9907 + div bx ; f7 f3 ; 0xf990a + add dx, dx ; 01 d2 ; 0xf990c + mov bx, si ; 89 f3 ; 0xf990e + add bx, dx ; 01 d3 ; 0xf9910 + mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf9912 + mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf9918 virtio.c:424 + inc word [es:si+032h] ; 26 ff 44 32 ; 0xf991c + mov bx, word [es:si+058h] ; 26 8b 5c 58 ; 0xf9920 virtio.c:428 + mov cx, strict word 00002h ; b9 02 00 ; 0xf9924 + mov ax, si ; 89 f0 ; 0xf9927 + mov dx, es ; 8c c2 ; 0xf9929 + call 0977fh ; e8 51 fe ; 0xf992b + les ax, [bp-00ch] ; c4 46 f4 ; 0xf992e virtio.c:431 + cmp ax, word [es:di+03eh] ; 26 3b 45 3e ; 0xf9931 + je short 0992eh ; 74 f7 ; 0xf9935 + mov ax, di ; 89 f8 ; 0xf9937 virtio.c:436 + mov dx, es ; 8c c2 ; 0xf9939 + call 097b0h ; e8 72 fe ; 0xf993b + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf993e virtio.c:438 + mov al, byte [es:di+000c3h] ; 26 8a 85 c3 00 ; 0xf9941 + test al, al ; 84 c0 ; 0xf9946 + je short 0994fh ; 74 05 ; 0xf9948 + mov ax, strict word 00004h ; b8 04 00 ; 0xf994a virtio.c:439 + jmp short 09951h ; eb 02 ; 0xf994d + xor ah, ah ; 30 e4 ; 0xf994f virtio.c:441 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9951 virtio.c:442 + pop di ; 5f ; 0xf9954 + pop si ; 5e ; 0xf9955 + pop cx ; 59 ; 0xf9956 + pop bp ; 5d ; 0xf9957 + retn 0000eh ; c2 0e 00 ; 0xf9958 + ; disGetNextSymbol 0xf995b LB 0x1441 -> off=0x0 cb=0000000000000156 uValue=00000000000f835b 'virtio_scsi_cmd_data_in' +virtio_scsi_cmd_data_in: ; 0xf995b LB 0x156 + push bp ; 55 ; 0xf995b virtio.c:444 + mov bp, sp ; 89 e5 ; 0xf995c + push cx ; 51 ; 0xf995e + push si ; 56 ; 0xf995f + push di ; 57 ; 0xf9960 + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf9961 + mov si, ax ; 89 c6 ; 0xf9964 + mov word [bp-012h], dx ; 89 56 ee ; 0xf9966 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9969 + mov di, ax ; 89 c7 ; 0xf996c virtio.c:447 + mov es, dx ; 8e c2 ; 0xf996e + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf9970 + mov ax, word [es:si+03eh] ; 26 8b 44 3e ; 0xf9973 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf9977 + lea ax, [si+00094h] ; 8d 84 94 00 ; 0xf997a virtio.c:450 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf997e + mov cx, strict word 00024h ; b9 24 00 ; 0xf9981 + xor bx, bx ; 31 db ; 0xf9984 + call 0ad00h ; e8 77 13 ; 0xf9986 + lea ax, [si+000b8h] ; 8d 84 b8 00 ; 0xf9989 virtio.c:451 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf998d + mov cx, strict word 0002ch ; b9 2c 00 ; 0xf9990 + xor bx, bx ; 31 db ; 0xf9993 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf9995 + call 0ad00h ; e8 65 13 ; 0xf9998 + mov es, [bp-012h] ; 8e 46 ee ; 0xf999b virtio.c:453 + mov byte [es:si+00094h], 001h ; 26 c6 84 94 00 01 ; 0xf999e + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf99a4 virtio.c:454 + mov byte [es:si+00095h], al ; 26 88 84 95 00 ; 0xf99a7 + mov word [es:si+00096h], strict word 00000h ; 26 c7 84 96 00 00 00 ; 0xf99ac virtio.c:455 + movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf99b3 virtio.c:457 + push ax ; 50 ; 0xf99b7 + lea ax, [si+000a7h] ; 8d 84 a7 00 ; 0xf99b8 + mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf99bc + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf99bf + mov dx, es ; 8c c2 ; 0xf99c2 + call 0ad10h ; e8 49 13 ; 0xf99c4 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf99c7 virtio.c:460 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf99ca + call 097e7h ; e8 17 fe ; 0xf99cd + mov es, [bp-012h] ; 8e 46 ee ; 0xf99d0 + mov word [es:si], ax ; 26 89 04 ; 0xf99d3 + mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf99d6 + 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; 0xf99da virtio.c:461 + db 066h, 026h, 0c7h, 044h, 008h, 024h, 000h, 000h, 000h + ; mov dword [es:si+008h], strict dword 000000024h ; 66 26 c7 44 08 24 00 00 00; 0xf99e3 virtio.c:462 + db 066h, 026h, 0c7h, 044h, 00ch, 001h, 000h, 001h, 000h + ; mov dword [es:si+00ch], strict dword 000010001h ; 66 26 c7 44 0c 01 00 01 00; 0xf99ec virtio.c:463 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf99f5 virtio.c:467 + mov dx, es ; 8c c2 ; 0xf99f8 + call 097e7h ; e8 ea fd ; 0xf99fa + mov es, [bp-012h] ; 8e 46 ee ; 0xf99fd + mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf9a00 + mov word [es:si+012h], dx ; 26 89 54 12 ; 0xf9a04 + db 066h, 026h, 0c7h, 044h, 014h, 000h, 000h, 000h, 000h + ; mov dword [es:si+014h], strict dword 000000000h ; 66 26 c7 44 14 00 00 00 00; 0xf9a08 virtio.c:468 + db 066h, 026h, 0c7h, 044h, 018h, 02ch, 000h, 000h, 000h + ; mov dword [es:si+018h], strict dword 00000002ch ; 66 26 c7 44 18 2c 00 00 00; 0xf9a11 virtio.c:469 + db 066h, 026h, 0c7h, 044h, 01ch, 003h, 000h, 002h, 000h + ; mov dword [es:si+01ch], strict dword 000020003h ; 66 26 c7 44 1c 03 00 02 00; 0xf9a1a virtio.c:470 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9a23 virtio.c:473 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9a26 + call 097e7h ; e8 bb fd ; 0xf9a29 + mov es, [bp-012h] ; 8e 46 ee ; 0xf9a2c + mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf9a2f + mov word [es:si+022h], dx ; 26 89 54 22 ; 0xf9a33 + db 066h, 026h, 0c7h, 044h, 024h, 000h, 000h, 000h, 000h + ; mov dword [es:si+024h], strict dword 000000000h ; 66 26 c7 44 24 00 00 00 00; 0xf9a37 virtio.c:474 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9a40 virtio.c:475 + mov word [es:si+028h], ax ; 26 89 44 28 ; 0xf9a43 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf9a47 + mov word [es:si+02ah], ax ; 26 89 44 2a ; 0xf9a4a + db 066h, 026h, 0c7h, 044h, 02ch, 002h, 000h, 000h, 000h + ; mov dword [es:si+02ch], strict dword 000000002h ; 66 26 c7 44 2c 02 00 00 00; 0xf9a4e virtio.c:476 + mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf9a57 virtio.c:477 + xor dx, dx ; 31 d2 ; 0xf9a5b + mov bx, strict word 00003h ; bb 03 00 ; 0xf9a5d + div bx ; f7 f3 ; 0xf9a60 + add dx, dx ; 01 d2 ; 0xf9a62 + mov bx, si ; 89 f3 ; 0xf9a64 + add bx, dx ; 01 d3 ; 0xf9a66 + mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf9a68 + mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf9a6e virtio.c:482 + inc word [es:si+032h] ; 26 ff 44 32 ; 0xf9a72 + mov bx, word [es:si+058h] ; 26 8b 5c 58 ; 0xf9a76 virtio.c:486 + mov cx, strict word 00002h ; b9 02 00 ; 0xf9a7a + mov ax, si ; 89 f0 ; 0xf9a7d + mov dx, es ; 8c c2 ; 0xf9a7f + call 0977fh ; e8 fb fc ; 0xf9a81 + les ax, [bp-00ch] ; c4 46 f4 ; 0xf9a84 virtio.c:489 + cmp ax, word [es:di+03eh] ; 26 3b 45 3e ; 0xf9a87 + je short 09a84h ; 74 f7 ; 0xf9a8b + mov ax, di ; 89 f8 ; 0xf9a8d virtio.c:494 + mov dx, es ; 8c c2 ; 0xf9a8f + call 097b0h ; e8 1c fd ; 0xf9a91 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9a94 virtio.c:496 + mov al, byte [es:di+000c3h] ; 26 8a 85 c3 00 ; 0xf9a97 + test al, al ; 84 c0 ; 0xf9a9c + je short 09aa5h ; 74 05 ; 0xf9a9e + mov ax, strict word 00004h ; b8 04 00 ; 0xf9aa0 virtio.c:497 + jmp short 09aa7h ; eb 02 ; 0xf9aa3 + xor ah, ah ; 30 e4 ; 0xf9aa5 virtio.c:499 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9aa7 virtio.c:500 + pop di ; 5f ; 0xf9aaa + pop si ; 5e ; 0xf9aab + pop cx ; 59 ; 0xf9aac + pop bp ; 5d ; 0xf9aad + retn 0000eh ; c2 0e 00 ; 0xf9aae + ; disGetNextSymbol 0xf9ab1 LB 0x12eb -> off=0x0 cb=000000000000031f uValue=00000000000f84b1 'virtio_scsi_hba_init' +virtio_scsi_hba_init: ; 0xf9ab1 LB 0x31f + push bp ; 55 ; 0xf9ab1 virtio.c:505 + mov bp, sp ; 89 e5 ; 0xf9ab2 + push si ; 56 ; 0xf9ab4 + push di ; 57 ; 0xf9ab5 + sub sp, strict byte 00012h ; 83 ec 12 ; 0xf9ab6 + mov si, ax ; 89 c6 ; 0xf9ab9 + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf9abb + mov byte [bp-006h], bl ; 88 5e fa ; 0xf9abe + mov ch, cl ; 88 cd ; 0xf9ac1 + mov es, dx ; 8e c2 ; 0xf9ac3 virtio.c:510 + mov byte [es:si+00092h], bl ; 26 88 9c 92 00 ; 0xf9ac5 + mov byte [es:si+00093h], cl ; 26 88 8c 93 00 ; 0xf9aca virtio.c:511 + mov cl, byte [bp+004h] ; 8a 4e 04 ; 0xf9acf virtio.c:517 + test cl, cl ; 84 c9 ; 0xf9ad2 virtio.c:518 + je near 09bdch ; 0f 84 04 01 ; 0xf9ad4 + movzx bx, cl ; 0f b6 d9 ; 0xf9ad8 virtio.c:520 + movzx ax, ch ; 0f b6 c5 ; 0xf9adb + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf9ade + movzx di, byte [bp-006h] ; 0f b6 7e fa ; 0xf9ae1 + mov dx, ax ; 89 c2 ; 0xf9ae5 + mov ax, di ; 89 f8 ; 0xf9ae7 + call 0aa9dh ; e8 b1 0f ; 0xf9ae9 + mov word [bp-012h], ax ; 89 46 ee ; 0xf9aec + mov al, cl ; 88 c8 ; 0xf9aef virtio.c:521 + add AL, strict byte 002h ; 04 02 ; 0xf9af1 + movzx bx, al ; 0f b6 d8 ; 0xf9af3 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9af6 + mov ax, di ; 89 f8 ; 0xf9af9 + call 0aa9dh ; e8 9f 0f ; 0xf9afb + cmp byte [bp-012h], 009h ; 80 7e ee 09 ; 0xf9afe virtio.c:525 + jne near 09bc6h ; 0f 85 c0 00 ; 0xf9b02 + cmp AL, strict byte 010h ; 3c 10 ; 0xf9b06 + jc near 09bc6h ; 0f 82 ba 00 ; 0xf9b08 + mov al, cl ; 88 c8 ; 0xf9b0c virtio.c:529 + add AL, strict byte 003h ; 04 03 ; 0xf9b0e + movzx bx, al ; 0f b6 d8 ; 0xf9b10 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b13 + mov ax, di ; 89 f8 ; 0xf9b16 + call 0aa9dh ; e8 82 0f ; 0xf9b18 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf9b1b + cmp AL, strict byte 005h ; 3c 05 ; 0xf9b1e virtio.c:532 + je near 09bbeh ; 0f 84 9a 00 ; 0xf9b20 + cmp AL, strict byte 001h ; 3c 01 ; 0xf9b24 + jc near 09bc6h ; 0f 82 9c 00 ; 0xf9b26 + cmp AL, strict byte 004h ; 3c 04 ; 0xf9b2a + jnbe near 09bc6h ; 0f 87 96 00 ; 0xf9b2c + movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf9b30 virtio.c:539 + dec ax ; 48 ; 0xf9b34 + imul ax, ax, strict byte 0000ch ; 6b c0 0c ; 0xf9b35 + lea di, [si+05ch] ; 8d 7c 5c ; 0xf9b38 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9b3b + mov word [bp-010h], dx ; 89 56 f0 ; 0xf9b3e + add di, ax ; 01 c7 ; 0xf9b41 + mov al, cl ; 88 c8 ; 0xf9b43 virtio.c:541 + add AL, strict byte 004h ; 04 04 ; 0xf9b45 + movzx bx, al ; 0f b6 d8 ; 0xf9b47 + movzx ax, ch ; 0f b6 c5 ; 0xf9b4a + mov word [bp-014h], ax ; 89 46 ec ; 0xf9b4d + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf9b50 + mov word [bp-016h], ax ; 89 46 ea ; 0xf9b54 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9b57 + call 0aa9dh ; e8 40 0f ; 0xf9b5a + mov es, [bp-010h] ; 8e 46 f0 ; 0xf9b5d + mov byte [es:di], al ; 26 88 05 ; 0xf9b60 + mov al, cl ; 88 c8 ; 0xf9b63 virtio.c:542 + add AL, strict byte 008h ; 04 08 ; 0xf9b65 + movzx bx, al ; 0f b6 d8 ; 0xf9b67 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9b6a + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9b6d + call 0aae3h ; e8 70 0f ; 0xf9b70 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf9b73 + mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf9b76 + mov word [es:di+006h], dx ; 26 89 55 06 ; 0xf9b7a + mov al, cl ; 88 c8 ; 0xf9b7e virtio.c:543 + add AL, strict byte 00ch ; 04 0c ; 0xf9b80 + movzx bx, al ; 0f b6 d8 ; 0xf9b82 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9b85 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9b88 + call 0aae3h ; e8 55 0f ; 0xf9b8b + mov es, [bp-010h] ; 8e 46 f0 ; 0xf9b8e + mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf9b91 + mov word [es:di+00ah], dx ; 26 89 55 0a ; 0xf9b95 + cmp byte [bp-008h], 002h ; 80 7e f8 02 ; 0xf9b99 virtio.c:544 + jne short 09bc6h ; 75 27 ; 0xf9b9d + mov al, cl ; 88 c8 ; 0xf9b9f virtio.c:546 + add AL, strict byte 010h ; 04 10 ; 0xf9ba1 + movzx bx, al ; 0f b6 d8 ; 0xf9ba3 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9ba6 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9ba9 + call 0aae3h ; e8 34 0f ; 0xf9bac + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf9baf + mov word [es:si+0008eh], ax ; 26 89 84 8e 00 ; 0xf9bb2 + mov word [es:si+00090h], dx ; 26 89 94 90 00 ; 0xf9bb7 + jmp short 09bc6h ; eb 08 ; 0xf9bbc virtio.c:549 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf9bbe virtio.c:552 + mov byte [es:si+0008ch], cl ; 26 88 8c 8c 00 ; 0xf9bc1 + mov al, cl ; 88 c8 ; 0xf9bc6 virtio.c:561 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf9bc8 + movzx bx, al ; 0f b6 d8 ; 0xf9bca + movzx dx, ch ; 0f b6 d5 ; 0xf9bcd + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf9bd0 + call 0aa9dh ; e8 c6 0e ; 0xf9bd4 + mov cl, al ; 88 c1 ; 0xf9bd7 + jmp near 09ad2h ; e9 f6 fe ; 0xf9bd9 virtio.c:562 + xor ch, ch ; 30 ed ; 0xf9bdc virtio.c:566 + mov bx, strict word 00014h ; bb 14 00 ; 0xf9bde + mov ax, si ; 89 f0 ; 0xf9be1 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9be3 + call 0964bh ; e8 62 fa ; 0xf9be6 + mov cx, strict word 00001h ; b9 01 00 ; 0xf9be9 virtio.c:569 + mov bx, strict word 00014h ; bb 14 00 ; 0xf9bec + mov ax, si ; 89 f0 ; 0xf9bef + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9bf1 + call 0964bh ; e8 54 fa ; 0xf9bf4 + mov byte [bp-00ah], 003h ; c6 46 f6 03 ; 0xf9bf7 virtio.c:571 + mov cx, strict word 00003h ; b9 03 00 ; 0xf9bfb virtio.c:572 + mov bx, strict word 00014h ; bb 14 00 ; 0xf9bfe + mov ax, si ; 89 f0 ; 0xf9c01 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9c03 + call 0964bh ; e8 42 fa ; 0xf9c06 + xor bx, bx ; 31 db ; 0xf9c09 virtio.c:581 + mov ax, si ; 89 f0 ; 0xf9c0b + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9c0d + call 09717h ; e8 04 fb ; 0xf9c10 + test dx, dx ; 85 d2 ; 0xf9c13 + jne short 09c1ch ; 75 05 ; 0xf9c15 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf9c17 + jc short 09c58h ; 72 3c ; 0xf9c1a + mov bx, strict word 00018h ; bb 18 00 ; 0xf9c1c + mov ax, si ; 89 f0 ; 0xf9c1f + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9c21 + call 09717h ; e8 f0 fa ; 0xf9c24 + test dx, dx ; 85 d2 ; 0xf9c27 + jne short 09c30h ; 75 05 ; 0xf9c29 + cmp ax, strict word 00010h ; 3d 10 00 ; 0xf9c2b + jc short 09c58h ; 72 28 ; 0xf9c2e + mov bx, strict word 00014h ; bb 14 00 ; 0xf9c30 + mov ax, si ; 89 f0 ; 0xf9c33 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9c35 + call 09717h ; e8 dc fa ; 0xf9c38 + test dx, dx ; 85 d2 ; 0xf9c3b + jne short 09c44h ; 75 05 ; 0xf9c3d + cmp ax, strict word 00020h ; 3d 20 00 ; 0xf9c3f + jc short 09c58h ; 72 14 ; 0xf9c42 + mov bx, strict word 00008h ; bb 08 00 ; 0xf9c44 + mov ax, si ; 89 f0 ; 0xf9c47 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9c49 + call 09717h ; e8 c8 fa ; 0xf9c4c + test dx, dx ; 85 d2 ; 0xf9c4f + jne short 09c5eh ; 75 0b ; 0xf9c51 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf9c53 + jnc short 09c5eh ; 73 06 ; 0xf9c56 + mov ax, strict word 00001h ; b8 01 00 ; 0xf9c58 virtio.c:587 + jmp near 09dc7h ; e9 69 01 ; 0xf9c5b + push dword 000000001h ; 66 6a 01 ; 0xf9c5e virtio.c:590 + mov bx, strict word 0000ch ; bb 0c 00 ; 0xf9c61 + mov ax, si ; 89 f0 ; 0xf9c64 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9c66 + call 096e0h ; e8 74 fa ; 0xf9c69 + or byte [bp-00ah], 008h ; 80 4e f6 08 ; 0xf9c6c virtio.c:593 + movzx cx, byte [bp-00ah] ; 0f b6 4e f6 ; 0xf9c70 virtio.c:594 + mov bx, strict word 00014h ; bb 14 00 ; 0xf9c74 + mov ax, si ; 89 f0 ; 0xf9c77 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9c79 + call 0964bh ; e8 cc f9 ; 0xf9c7c + mov bx, strict word 00014h ; bb 14 00 ; 0xf9c7f virtio.c:597 + mov ax, si ; 89 f0 ; 0xf9c82 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9c84 + call 0961ah ; e8 90 f9 ; 0xf9c87 + test AL, strict byte 008h ; a8 08 ; 0xf9c8a + je short 09c58h ; 74 ca ; 0xf9c8c + xor cx, cx ; 31 c9 ; 0xf9c8e virtio.c:604 + mov bx, strict word 00016h ; bb 16 00 ; 0xf9c90 + mov ax, si ; 89 f0 ; 0xf9c93 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9c95 + call 096afh ; e8 14 fa ; 0xf9c98 + xor cx, cx ; 31 c9 ; 0xf9c9b virtio.c:605 + mov bx, strict word 00018h ; bb 18 00 ; 0xf9c9d + mov ax, si ; 89 f0 ; 0xf9ca0 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9ca2 + call 096afh ; e8 07 fa ; 0xf9ca5 + xor cx, cx ; 31 c9 ; 0xf9ca8 virtio.c:606 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf9caa + mov ax, si ; 89 f0 ; 0xf9cad + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9caf + call 096afh ; e8 fa f9 ; 0xf9cb2 + mov cx, strict word 00001h ; b9 01 00 ; 0xf9cb5 virtio.c:608 + mov bx, strict word 00016h ; bb 16 00 ; 0xf9cb8 + mov ax, si ; 89 f0 ; 0xf9cbb + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9cbd + call 096afh ; e8 ec f9 ; 0xf9cc0 + xor cx, cx ; 31 c9 ; 0xf9cc3 virtio.c:609 + mov bx, strict word 00018h ; bb 18 00 ; 0xf9cc5 + mov ax, si ; 89 f0 ; 0xf9cc8 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9cca + call 096afh ; e8 df f9 ; 0xf9ccd + xor cx, cx ; 31 c9 ; 0xf9cd0 virtio.c:610 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf9cd2 + mov ax, si ; 89 f0 ; 0xf9cd5 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9cd7 + call 096afh ; e8 d2 f9 ; 0xf9cda + mov cx, strict word 00002h ; b9 02 00 ; 0xf9cdd virtio.c:613 + mov bx, strict word 00016h ; bb 16 00 ; 0xf9ce0 + mov ax, si ; 89 f0 ; 0xf9ce3 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9ce5 + call 096afh ; e8 c4 f9 ; 0xf9ce8 + mov cx, strict word 00003h ; b9 03 00 ; 0xf9ceb virtio.c:614 + mov bx, strict word 00018h ; bb 18 00 ; 0xf9cee + mov ax, si ; 89 f0 ; 0xf9cf1 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9cf3 + call 096afh ; e8 b6 f9 ; 0xf9cf6 + mov cx, strict word 00001h ; b9 01 00 ; 0xf9cf9 virtio.c:615 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf9cfc + mov ax, si ; 89 f0 ; 0xf9cff + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d01 + call 096afh ; e8 a8 f9 ; 0xf9d04 + mov ax, si ; 89 f0 ; 0xf9d07 virtio.c:618 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d09 + call 097e7h ; e8 d8 fa ; 0xf9d0c + push dx ; 52 ; 0xf9d0f + push ax ; 50 ; 0xf9d10 + mov bx, strict word 00020h ; bb 20 00 ; 0xf9d11 + mov ax, si ; 89 f0 ; 0xf9d14 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d16 + call 096e0h ; e8 c4 f9 ; 0xf9d19 + push dword 000000000h ; 66 6a 00 ; 0xf9d1c virtio.c:619 + mov bx, strict word 00024h ; bb 24 00 ; 0xf9d1f + mov ax, si ; 89 f0 ; 0xf9d22 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d24 + call 096e0h ; e8 b6 f9 ; 0xf9d27 + lea ax, [si+030h] ; 8d 44 30 ; 0xf9d2a virtio.c:621 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d2d + call 097e7h ; e8 b4 fa ; 0xf9d30 + push dx ; 52 ; 0xf9d33 + push ax ; 50 ; 0xf9d34 + mov bx, strict word 00028h ; bb 28 00 ; 0xf9d35 + mov ax, si ; 89 f0 ; 0xf9d38 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d3a + call 096e0h ; e8 a0 f9 ; 0xf9d3d + push dword 000000000h ; 66 6a 00 ; 0xf9d40 virtio.c:622 + mov bx, strict word 0002ch ; bb 2c 00 ; 0xf9d43 + mov ax, si ; 89 f0 ; 0xf9d46 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d48 + call 096e0h ; e8 92 f9 ; 0xf9d4b + lea ax, [si+03ch] ; 8d 44 3c ; 0xf9d4e virtio.c:624 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d51 + call 097e7h ; e8 90 fa ; 0xf9d54 + push dx ; 52 ; 0xf9d57 + push ax ; 50 ; 0xf9d58 + mov bx, strict word 00030h ; bb 30 00 ; 0xf9d59 + mov ax, si ; 89 f0 ; 0xf9d5c + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d5e + call 096e0h ; e8 7c f9 ; 0xf9d61 + push dword 000000000h ; 66 6a 00 ; 0xf9d64 virtio.c:625 + mov bx, strict word 00034h ; bb 34 00 ; 0xf9d67 + mov ax, si ; 89 f0 ; 0xf9d6a + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d6c + call 096e0h ; e8 6e f9 ; 0xf9d6f + push dword 000000010h ; 66 6a 10 ; 0xf9d72 virtio.c:627 + mov bx, strict word 00018h ; bb 18 00 ; 0xf9d75 + mov ax, si ; 89 f0 ; 0xf9d78 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d7a + call 09748h ; e8 c8 f9 ; 0xf9d7d + push dword 000000020h ; 66 6a 20 ; 0xf9d80 virtio.c:628 + mov bx, strict word 00014h ; bb 14 00 ; 0xf9d83 + mov ax, si ; 89 f0 ; 0xf9d86 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d88 + call 09748h ; e8 ba f9 ; 0xf9d8b + mov bx, strict word 0001eh ; bb 1e 00 ; 0xf9d8e virtio.c:631 + mov ax, si ; 89 f0 ; 0xf9d91 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9d93 + call 0967eh ; e8 e5 f8 ; 0xf9d96 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf9d99 + mov bx, word [es:si+0008eh] ; 26 8b 9c 8e 00 ; 0xf9d9c + mov cx, word [es:si+00090h] ; 26 8b 8c 90 00 ; 0xf9da1 + xor dx, dx ; 31 d2 ; 0xf9da6 + call 0ac60h ; e8 b5 0e ; 0xf9da8 + mov word [es:si+058h], ax ; 26 89 44 58 ; 0xf9dab + mov word [es:si+05ah], dx ; 26 89 54 5a ; 0xf9daf + or byte [bp-00ah], 004h ; 80 4e f6 04 ; 0xf9db3 virtio.c:634 + movzx cx, byte [bp-00ah] ; 0f b6 4e f6 ; 0xf9db7 virtio.c:635 + mov bx, strict word 00014h ; bb 14 00 ; 0xf9dbb + mov ax, si ; 89 f0 ; 0xf9dbe + mov dx, es ; 8c c2 ; 0xf9dc0 + call 0964bh ; e8 86 f8 ; 0xf9dc2 + xor ax, ax ; 31 c0 ; 0xf9dc5 virtio.c:637 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9dc7 virtio.c:638 + pop di ; 5f ; 0xf9dca + pop si ; 5e ; 0xf9dcb + pop bp ; 5d ; 0xf9dcc + retn 00002h ; c2 02 00 ; 0xf9dcd + ; disGetNextSymbol 0xf9dd0 LB 0xfcc -> off=0x0 cb=00000000000000d5 uValue=00000000000f87d0 'virtio_scsi_init' +virtio_scsi_init: ; 0xf9dd0 LB 0xd5 + push bp ; 55 ; 0xf9dd0 virtio.c:643 + mov bp, sp ; 89 e5 ; 0xf9dd1 + push si ; 56 ; 0xf9dd3 + push di ; 57 ; 0xf9dd4 + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf9dd5 + mov byte [bp-00ah], bl ; 88 5e f6 ; 0xf9dd8 + mov byte [bp-006h], cl ; 88 4e fa ; 0xf9ddb + mov word [bp-012h], ax ; 89 46 ee ; 0xf9dde virtio.c:645 + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf9de1 + mov byte [bp-008h], 0ffh ; c6 46 f8 ff ; 0xf9de4 virtio.c:647 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf9de8 virtio.c:648 + movzx dx, cl ; 0f b6 d1 ; 0xf9dec virtio.c:651 + movzx ax, bl ; 0f b6 c3 ; 0xf9def + mov bx, strict word 00034h ; bb 34 00 ; 0xf9df2 + call 0aa9dh ; e8 a5 0c ; 0xf9df5 + mov ch, al ; 88 c5 ; 0xf9df8 + test ch, ch ; 84 ed ; 0xf9dfa virtio.c:653 + je short 09e66h ; 74 68 ; 0xf9dfc + movzx bx, ch ; 0f b6 dd ; 0xf9dfe virtio.c:655 + movzx si, byte [bp-006h] ; 0f b6 76 fa ; 0xf9e01 + movzx di, byte [bp-00ah] ; 0f b6 7e f6 ; 0xf9e05 + mov dx, si ; 89 f2 ; 0xf9e09 + mov ax, di ; 89 f8 ; 0xf9e0b + call 0aa9dh ; e8 8d 0c ; 0xf9e0d + mov word [bp-010h], ax ; 89 46 f0 ; 0xf9e10 + mov al, ch ; 88 e8 ; 0xf9e13 virtio.c:656 + add AL, strict byte 002h ; 04 02 ; 0xf9e15 + movzx bx, al ; 0f b6 d8 ; 0xf9e17 + mov dx, si ; 89 f2 ; 0xf9e1a + mov ax, di ; 89 f8 ; 0xf9e1c + call 0aa9dh ; e8 7c 0c ; 0xf9e1e + cmp byte [bp-010h], 009h ; 80 7e f0 09 ; 0xf9e21 virtio.c:660 + jne short 09e55h ; 75 2e ; 0xf9e25 + cmp AL, strict byte 010h ; 3c 10 ; 0xf9e27 + jc short 09e55h ; 72 2a ; 0xf9e29 + mov al, ch ; 88 e8 ; 0xf9e2b virtio.c:664 + add AL, strict byte 003h ; 04 03 ; 0xf9e2d + movzx bx, al ; 0f b6 d8 ; 0xf9e2f + mov dx, si ; 89 f2 ; 0xf9e32 + mov ax, di ; 89 f8 ; 0xf9e34 + call 0aa9dh ; e8 64 0c ; 0xf9e36 + cmp byte [bp-008h], 0ffh ; 80 7e f8 ff ; 0xf9e39 virtio.c:666 + jne short 09e42h ; 75 03 ; 0xf9e3d + mov byte [bp-008h], ch ; 88 6e f8 ; 0xf9e3f virtio.c:667 + cmp AL, strict byte 001h ; 3c 01 ; 0xf9e42 virtio.c:670 + jc short 09e55h ; 72 0f ; 0xf9e44 + cmp AL, strict byte 005h ; 3c 05 ; 0xf9e46 + jnbe short 09e55h ; 77 0b ; 0xf9e48 + mov cl, al ; 88 c1 ; 0xf9e4a virtio.c:677 + db 0feh, 0c9h + ; dec cl ; fe c9 ; 0xf9e4c + mov AL, strict byte 001h ; b0 01 ; 0xf9e4e + sal al, CL ; d2 e0 ; 0xf9e50 + or byte [bp-00ch], al ; 08 46 f4 ; 0xf9e52 + mov al, ch ; 88 e8 ; 0xf9e55 virtio.c:684 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf9e57 + movzx bx, al ; 0f b6 d8 ; 0xf9e59 + movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf9e5c + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf9e60 + jmp short 09df5h ; eb 8f ; 0xf9e64 virtio.c:685 + cmp byte [bp-008h], 0ffh ; 80 7e f8 ff ; 0xf9e66 virtio.c:688 + je short 09e9bh ; 74 2f ; 0xf9e6a + cmp byte [bp-00ch], 01fh ; 80 7e f4 1f ; 0xf9e6c + jne short 09e9bh ; 75 29 ; 0xf9e70 + movzx di, byte [bp-006h] ; 0f b6 7e fa ; 0xf9e72 virtio.c:694 + movzx si, byte [bp-00ah] ; 0f b6 76 f6 ; 0xf9e76 + mov cx, strict word 00007h ; b9 07 00 ; 0xf9e7a + mov bx, strict word 00004h ; bb 04 00 ; 0xf9e7d + mov dx, di ; 89 fa ; 0xf9e80 + mov ax, si ; 89 f0 ; 0xf9e82 + call 0ab0ah ; e8 83 0c ; 0xf9e84 + movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf9e87 virtio.c:695 + push ax ; 50 ; 0xf9e8b + mov cx, di ; 89 f9 ; 0xf9e8c + mov bx, si ; 89 f3 ; 0xf9e8e + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf9e90 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9e93 + call 09ab1h ; e8 18 fc ; 0xf9e96 + jmp short 09e9eh ; eb 03 ; 0xf9e99 + mov ax, strict word 00001h ; b8 01 00 ; 0xf9e9b virtio.c:700 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9e9e virtio.c:701 + pop di ; 5f ; 0xf9ea1 + pop si ; 5e ; 0xf9ea2 + pop bp ; 5d ; 0xf9ea3 + retn ; c3 ; 0xf9ea4 + ; disGetNextSymbol 0xf9ea5 LB 0xef7 -> off=0x0 cb=000000000000001e uValue=00000000000f88a5 'buslogic_addr_to_phys' +buslogic_addr_to_phys: ; 0xf9ea5 LB 0x1e + push bx ; 53 ; 0xf9ea5 buslogic.c:120 + push cx ; 51 ; 0xf9ea6 + push bp ; 55 ; 0xf9ea7 + mov bp, sp ; 89 e5 ; 0xf9ea8 + mov bx, ax ; 89 c3 ; 0xf9eaa + mov ax, dx ; 89 d0 ; 0xf9eac + xor dx, dx ; 31 d2 ; 0xf9eae buslogic.c:122 + mov cx, strict word 00004h ; b9 04 00 ; 0xf9eb0 + sal ax, 1 ; d1 e0 ; 0xf9eb3 + rcl dx, 1 ; d1 d2 ; 0xf9eb5 + loop 09eb3h ; e2 fa ; 0xf9eb7 + xor cx, cx ; 31 c9 ; 0xf9eb9 + add ax, bx ; 01 d8 ; 0xf9ebb + adc dx, cx ; 11 ca ; 0xf9ebd + pop bp ; 5d ; 0xf9ebf buslogic.c:123 + pop cx ; 59 ; 0xf9ec0 + pop bx ; 5b ; 0xf9ec1 + retn ; c3 ; 0xf9ec2 + ; disGetNextSymbol 0xf9ec3 LB 0xed9 -> off=0x0 cb=0000000000000084 uValue=00000000000f88c3 'buslogic_cmd' +buslogic_cmd: ; 0xf9ec3 LB 0x84 + push bp ; 55 ; 0xf9ec3 buslogic.c:125 + mov bp, sp ; 89 e5 ; 0xf9ec4 + push cx ; 51 ; 0xf9ec6 + push si ; 56 ; 0xf9ec7 + push di ; 57 ; 0xf9ec8 + mov si, ax ; 89 c6 ; 0xf9ec9 + mov cx, dx ; 89 d1 ; 0xf9ecb + mov es, dx ; 8e c2 ; 0xf9ecd buslogic.c:130 + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9ecf + inc dx ; 42 ; 0xf9ed3 + mov al, bl ; 88 d8 ; 0xf9ed4 + out DX, AL ; ee ; 0xf9ed6 + xor bx, bx ; 31 db ; 0xf9ed7 buslogic.c:131 + cmp bx, word [bp+008h] ; 3b 5e 08 ; 0xf9ed9 + jnc short 09ef7h ; 73 19 ; 0xf9edc + mov di, word [bp+004h] ; 8b 7e 04 ; 0xf9ede buslogic.c:132 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf9ee1 + inc word [bp+004h] ; ff 46 04 ; 0xf9ee4 + mov es, cx ; 8e c1 ; 0xf9ee7 + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9ee9 + inc dx ; 42 ; 0xf9eed + mov es, ax ; 8e c0 ; 0xf9eee + mov al, byte [es:di] ; 26 8a 05 ; 0xf9ef0 + out DX, AL ; ee ; 0xf9ef3 + inc bx ; 43 ; 0xf9ef4 + jmp short 09ed9h ; eb e2 ; 0xf9ef5 + cmp word [bp+00eh], strict byte 00000h ; 83 7e 0e 00 ; 0xf9ef7 buslogic.c:135 + je short 09f27h ; 74 2a ; 0xf9efb + mov es, cx ; 8e c1 ; 0xf9efd buslogic.c:137 + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9eff + in AL, DX ; ec ; 0xf9f03 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf9f04 + test AL, strict byte 004h ; a8 04 ; 0xf9f06 + je short 09efdh ; 74 f3 ; 0xf9f08 + xor bx, bx ; 31 db ; 0xf9f0a buslogic.c:138 + cmp bx, word [bp+00eh] ; 3b 5e 0e ; 0xf9f0c + jnc short 09f27h ; 73 16 ; 0xf9f0f + mov es, cx ; 8e c1 ; 0xf9f11 buslogic.c:139 + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9f13 + inc dx ; 42 ; 0xf9f17 + in AL, DX ; ec ; 0xf9f18 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf9f19 + les di, [bp+00ah] ; c4 7e 0a ; 0xf9f1b + mov byte [es:di], al ; 26 88 05 ; 0xf9f1e + inc word [bp+00ah] ; ff 46 0a ; 0xf9f21 + inc bx ; 43 ; 0xf9f24 + jmp short 09f0ch ; eb e5 ; 0xf9f25 + mov es, cx ; 8e c1 ; 0xf9f27 buslogic.c:142 + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9f29 + in AL, DX ; ec ; 0xf9f2d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf9f2e + test AL, strict byte 010h ; a8 10 ; 0xf9f30 + je short 09f27h ; 74 f3 ; 0xf9f32 + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9f34 buslogic.c:145 + mov AL, strict byte 020h ; b0 20 ; 0xf9f38 + out DX, AL ; ee ; 0xf9f3a + xor ax, ax ; 31 c0 ; 0xf9f3b buslogic.c:148 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9f3d + pop di ; 5f ; 0xf9f40 + pop si ; 5e ; 0xf9f41 + pop cx ; 59 ; 0xf9f42 + pop bp ; 5d ; 0xf9f43 + retn 0000ch ; c2 0c 00 ; 0xf9f44 + ; disGetNextSymbol 0xf9f47 LB 0xe55 -> off=0x0 cb=00000000000000b4 uValue=00000000000f8947 'buslogic_scsi_cmd_data_out' +buslogic_scsi_cmd_data_out: ; 0xf9f47 LB 0xb4 + push bp ; 55 ; 0xf9f47 buslogic.c:150 + mov bp, sp ; 89 e5 ; 0xf9f48 + push cx ; 51 ; 0xf9f4a + push si ; 56 ; 0xf9f4b + push di ; 57 ; 0xf9f4c + sub sp, strict byte 00008h ; 83 ec 08 ; 0xf9f4d + mov si, ax ; 89 c6 ; 0xf9f50 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9f52 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf9f55 buslogic.c:153 + mov di, dx ; 89 d7 ; 0xf9f58 + mov cx, strict word 0001ch ; b9 1c 00 ; 0xf9f5a buslogic.c:158 + xor bx, bx ; 31 db ; 0xf9f5d + call 0ad00h ; e8 9e 0d ; 0xf9f5f + mov cx, strict word 00004h ; b9 04 00 ; 0xf9f62 buslogic.c:159 + xor bx, bx ; 31 db ; 0xf9f65 + mov dx, ss ; 8c d2 ; 0xf9f67 + lea ax, [bp-00eh] ; 8d 46 f2 ; 0xf9f69 + call 0ad00h ; e8 91 0d ; 0xf9f6c + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9f6f buslogic.c:161 + mov es, di ; 8e c7 ; 0xf9f72 + mov word [es:si], ax ; 26 89 04 ; 0xf9f74 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf9f77 + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf9f7a + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9f7e buslogic.c:162 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9f81 + call 09ea5h ; e8 1e ff ; 0xf9f84 + mov es, di ; 8e c7 ; 0xf9f87 + mov word [es:si+004h], ax ; 26 89 44 04 ; 0xf9f89 + mov word [es:si+006h], dx ; 26 89 54 06 ; 0xf9f8d + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9f91 buslogic.c:163 + mov byte [es:si+008h], al ; 26 88 44 08 ; 0xf9f94 + mov byte [es:si+009h], 000h ; 26 c6 44 09 00 ; 0xf9f98 buslogic.c:164 + and byte [es:si+00ah], 0e7h ; 26 80 64 0a e7 ; 0xf9f9d buslogic.c:165 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9fa2 buslogic.c:166 + mov byte [es:si+00bh], al ; 26 88 44 0b ; 0xf9fa5 + xor si, si ; 31 f6 ; 0xf9fa9 buslogic.c:168 + movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf9fab + cmp si, ax ; 39 c6 ; 0xf9faf + jnl short 09fcbh ; 7d 18 ; 0xf9fb1 + les bx, [bp+004h] ; c4 5e 04 ; 0xf9fb3 buslogic.c:169 + add bx, si ; 01 f3 ; 0xf9fb6 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9fb8 + add dx, si ; 01 f2 ; 0xf9fbb + mov al, byte [es:bx] ; 26 8a 07 ; 0xf9fbd + mov es, di ; 8e c7 ; 0xf9fc0 + mov bx, dx ; 89 d3 ; 0xf9fc2 + mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf9fc4 + inc si ; 46 ; 0xf9fc8 + jmp short 09fabh ; eb e0 ; 0xf9fc9 + push strict byte 00004h ; 6a 04 ; 0xf9fcb buslogic.c:171 + lea dx, [bp-00eh] ; 8d 56 f2 ; 0xf9fcd + push SS ; 16 ; 0xf9fd0 + push dx ; 52 ; 0xf9fd1 + movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf9fd2 + add ax, strict word 0000ch ; 05 0c 00 ; 0xf9fd6 + push ax ; 50 ; 0xf9fd9 + push di ; 57 ; 0xf9fda + push word [bp-00ah] ; ff 76 f6 ; 0xf9fdb + mov bx, 00083h ; bb 83 00 ; 0xf9fde + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9fe1 + mov dx, di ; 89 fa ; 0xf9fe4 + call 09ec3h ; e8 da fe ; 0xf9fe6 + test ax, ax ; 85 c0 ; 0xf9fe9 buslogic.c:173 + jne short 09ff1h ; 75 04 ; 0xf9feb + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf9fed buslogic.c:174 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9ff1 buslogic.c:177 + pop di ; 5f ; 0xf9ff4 + pop si ; 5e ; 0xf9ff5 + pop cx ; 59 ; 0xf9ff6 + pop bp ; 5d ; 0xf9ff7 + retn 0000eh ; c2 0e 00 ; 0xf9ff8 + ; disGetNextSymbol 0xf9ffb LB 0xda1 -> off=0x0 cb=00000000000000b4 uValue=00000000000f89fb 'buslogic_scsi_cmd_data_in' +buslogic_scsi_cmd_data_in: ; 0xf9ffb LB 0xb4 + push bp ; 55 ; 0xf9ffb buslogic.c:179 + mov bp, sp ; 89 e5 ; 0xf9ffc + push cx ; 51 ; 0xf9ffe + push si ; 56 ; 0xf9fff + push di ; 57 ; 0xfa000 + sub sp, strict byte 00008h ; 83 ec 08 ; 0xfa001 + mov si, ax ; 89 c6 ; 0xfa004 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xfa006 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xfa009 buslogic.c:182 + mov di, dx ; 89 d7 ; 0xfa00c + mov cx, strict word 0001ch ; b9 1c 00 ; 0xfa00e buslogic.c:189 + xor bx, bx ; 31 db ; 0xfa011 + call 0ad00h ; e8 ea 0c ; 0xfa013 + mov cx, strict word 00004h ; b9 04 00 ; 0xfa016 buslogic.c:190 + xor bx, bx ; 31 db ; 0xfa019 + mov dx, ss ; 8c d2 ; 0xfa01b + lea ax, [bp-00eh] ; 8d 46 f2 ; 0xfa01d + call 0ad00h ; e8 dd 0c ; 0xfa020 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xfa023 buslogic.c:192 + mov es, di ; 8e c7 ; 0xfa026 + mov word [es:si], ax ; 26 89 04 ; 0xfa028 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa02b + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xfa02e + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xfa032 buslogic.c:193 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xfa035 + call 09ea5h ; e8 6a fe ; 0xfa038 + mov es, di ; 8e c7 ; 0xfa03b + mov word [es:si+004h], ax ; 26 89 44 04 ; 0xfa03d + mov word [es:si+006h], dx ; 26 89 54 06 ; 0xfa041 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa045 buslogic.c:194 + mov byte [es:si+008h], al ; 26 88 44 08 ; 0xfa048 + mov byte [es:si+009h], 000h ; 26 c6 44 09 00 ; 0xfa04c buslogic.c:195 + and byte [es:si+00ah], 0e7h ; 26 80 64 0a e7 ; 0xfa051 buslogic.c:196 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa056 buslogic.c:197 + mov byte [es:si+00bh], al ; 26 88 44 0b ; 0xfa059 + xor si, si ; 31 f6 ; 0xfa05d buslogic.c:199 + movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xfa05f + cmp si, ax ; 39 c6 ; 0xfa063 + jnl short 0a07fh ; 7d 18 ; 0xfa065 + les bx, [bp+004h] ; c4 5e 04 ; 0xfa067 buslogic.c:200 + add bx, si ; 01 f3 ; 0xfa06a + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xfa06c + add dx, si ; 01 f2 ; 0xfa06f + mov al, byte [es:bx] ; 26 8a 07 ; 0xfa071 + mov es, di ; 8e c7 ; 0xfa074 + mov bx, dx ; 89 d3 ; 0xfa076 + mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xfa078 + inc si ; 46 ; 0xfa07c + jmp short 0a05fh ; eb e0 ; 0xfa07d + push strict byte 00004h ; 6a 04 ; 0xfa07f buslogic.c:202 + lea dx, [bp-00eh] ; 8d 56 f2 ; 0xfa081 + push SS ; 16 ; 0xfa084 + push dx ; 52 ; 0xfa085 + movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xfa086 + add ax, strict word 0000ch ; 05 0c 00 ; 0xfa08a + push ax ; 50 ; 0xfa08d + push di ; 57 ; 0xfa08e + push word [bp-00ah] ; ff 76 f6 ; 0xfa08f + mov bx, 00083h ; bb 83 00 ; 0xfa092 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa095 + mov dx, di ; 89 fa ; 0xfa098 + call 09ec3h ; e8 26 fe ; 0xfa09a + test ax, ax ; 85 c0 ; 0xfa09d buslogic.c:204 + jne short 0a0a5h ; 75 04 ; 0xfa09f + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xfa0a1 buslogic.c:205 + lea sp, [bp-006h] ; 8d 66 fa ; 0xfa0a5 buslogic.c:208 + pop di ; 5f ; 0xfa0a8 + pop si ; 5e ; 0xfa0a9 + pop cx ; 59 ; 0xfa0aa + pop bp ; 5d ; 0xfa0ab + retn 0000eh ; c2 0e 00 ; 0xfa0ac + ; disGetNextSymbol 0xfa0af LB 0xced -> off=0x0 cb=0000000000000022 uValue=00000000000f8aaf 'buslogic_scsi_hba_init' +buslogic_scsi_hba_init: ; 0xfa0af LB 0x22 + push bp ; 55 ; 0xfa0af buslogic.c:213 + mov bp, sp ; 89 e5 ; 0xfa0b0 + push bx ; 53 ; 0xfa0b2 + mov bx, ax ; 89 c3 ; 0xfa0b3 + mov es, dx ; 8e c2 ; 0xfa0b5 + mov dx, word [es:bx+01ch] ; 26 8b 57 1c ; 0xfa0b7 buslogic.c:216 + mov AL, strict byte 080h ; b0 80 ; 0xfa0bb + out DX, AL ; ee ; 0xfa0bd + mov dx, word [es:bx+01ch] ; 26 8b 57 1c ; 0xfa0be buslogic.c:217 + in AL, DX ; ec ; 0xfa0c2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xfa0c3 + test AL, strict byte 010h ; a8 10 ; 0xfa0c5 + je short 0a0beh ; 74 f5 ; 0xfa0c7 + xor ax, ax ; 31 c0 ; 0xfa0c9 buslogic.c:220 + lea sp, [bp-002h] ; 8d 66 fe ; 0xfa0cb + pop bx ; 5b ; 0xfa0ce + pop bp ; 5d ; 0xfa0cf + retn ; c3 ; 0xfa0d0 + ; disGetNextSymbol 0xfa0d1 LB 0xccb -> off=0x0 cb=0000000000000051 uValue=00000000000f8ad1 'buslogic_scsi_init' +buslogic_scsi_init: ; 0xfa0d1 LB 0x51 + push bp ; 55 ; 0xfa0d1 buslogic.c:225 + mov bp, sp ; 89 e5 ; 0xfa0d2 + push si ; 56 ; 0xfa0d4 + push di ; 57 ; 0xfa0d5 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa0d6 + mov si, ax ; 89 c6 ; 0xfa0d9 + mov word [bp-008h], dx ; 89 56 f8 ; 0xfa0db + movzx ax, cl ; 0f b6 c1 ; 0xfa0de buslogic.c:232 + mov word [bp-006h], ax ; 89 46 fa ; 0xfa0e1 + movzx di, bl ; 0f b6 fb ; 0xfa0e4 + mov bx, strict word 00010h ; bb 10 00 ; 0xfa0e7 + mov dx, ax ; 89 c2 ; 0xfa0ea + mov ax, di ; 89 f8 ; 0xfa0ec + call 0aae3h ; e8 f2 09 ; 0xfa0ee + test AL, strict byte 001h ; a8 01 ; 0xfa0f1 buslogic.c:236 + je short 0a118h ; 74 23 ; 0xfa0f3 + and AL, strict byte 0f0h ; 24 f0 ; 0xfa0f5 buslogic.c:238 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xfa0f7 + mov cx, strict word 00007h ; b9 07 00 ; 0xfa0fa buslogic.c:241 + mov bx, strict word 00004h ; bb 04 00 ; 0xfa0fd + mov dx, word [bp-006h] ; 8b 56 fa ; 0xfa100 + mov ax, di ; 89 f8 ; 0xfa103 + call 0ab0ah ; e8 02 0a ; 0xfa105 + les ax, [bp-00ah] ; c4 46 f6 ; 0xfa108 buslogic.c:244 + mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xfa10b + mov ax, si ; 89 f0 ; 0xfa10f buslogic.c:245 + mov dx, es ; 8c c2 ; 0xfa111 + call 0a0afh ; e8 99 ff ; 0xfa113 + jmp short 0a11bh ; eb 03 ; 0xfa116 + mov ax, strict word 00001h ; b8 01 00 ; 0xfa118 buslogic.c:250 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa11b buslogic.c:251 + pop di ; 5f ; 0xfa11e + pop si ; 5e ; 0xfa11f + pop bp ; 5d ; 0xfa120 + retn ; c3 ; 0xfa121 + ; disGetNextSymbol 0xfa122 LB 0xc7a -> off=0x0 cb=000000000000001e uValue=00000000000f8b22 'lsilogic_addr_to_phys' +lsilogic_addr_to_phys: ; 0xfa122 LB 0x1e + push bx ; 53 ; 0xfa122 lsilogic.c:331 + push cx ; 51 ; 0xfa123 + push bp ; 55 ; 0xfa124 + mov bp, sp ; 89 e5 ; 0xfa125 + mov bx, ax ; 89 c3 ; 0xfa127 + mov ax, dx ; 89 d0 ; 0xfa129 + xor dx, dx ; 31 d2 ; 0xfa12b lsilogic.c:333 + mov cx, strict word 00004h ; b9 04 00 ; 0xfa12d + sal ax, 1 ; d1 e0 ; 0xfa130 + rcl dx, 1 ; d1 d2 ; 0xfa132 + loop 0a130h ; e2 fa ; 0xfa134 + xor cx, cx ; 31 c9 ; 0xfa136 + add ax, bx ; 01 d8 ; 0xfa138 + adc dx, cx ; 11 ca ; 0xfa13a + pop bp ; 5d ; 0xfa13c lsilogic.c:334 + pop cx ; 59 ; 0xfa13d + pop bx ; 5b ; 0xfa13e + retn ; c3 ; 0xfa13f + ; disGetNextSymbol 0xfa140 LB 0xc5c -> off=0x0 cb=00000000000000f6 uValue=00000000000f8b40 'lsilogic_cmd' +lsilogic_cmd: ; 0xfa140 LB 0xf6 + push bp ; 55 ; 0xfa140 lsilogic.c:336 + mov bp, sp ; 89 e5 ; 0xfa141 + push si ; 56 ; 0xfa143 + push di ; 57 ; 0xfa144 + sub sp, strict byte 00010h ; 83 ec 10 ; 0xfa145 + mov si, ax ; 89 c6 ; 0xfa148 + mov word [bp-006h], dx ; 89 56 fa ; 0xfa14a + mov word [bp-00ah], bx ; 89 5e f6 ; 0xfa14d lsilogic.c:340 + mov word [bp-014h], cx ; 89 4e ec ; 0xfa150 + mov [bp-00ch], ds ; 8c 5e f4 ; 0xfa153 lsilogic.c:341 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xfa156 + mov word [bp-012h], ax ; 89 46 ee ; 0xfa159 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xfa15c lsilogic.c:342 + shr ax, 002h ; c1 e8 02 ; 0xfa15f + mov word [bp-00eh], ax ; 89 46 f2 ; 0xfa162 + mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xfa165 + mov dx, word [bp+00ah] ; 8b 56 0a ; 0xfa16a lsilogic.c:343 + shr dx, 1 ; d1 ea ; 0xfa16d + mov word [bp-010h], dx ; 89 56 f0 ; 0xfa16f + or ah, 042h ; 80 cc 42 ; 0xfa172 lsilogic.c:344 + mov cx, ax ; 89 c1 ; 0xfa175 + test byte [bp+004h], 003h ; f6 46 04 03 ; 0xfa177 lsilogic.c:346 + jne short 0a183h ; 75 06 ; 0xfa17b + test byte [bp+00ah], 001h ; f6 46 0a 01 ; 0xfa17d + je short 0a189h ; 74 06 ; 0xfa181 + mov ax, strict word 00001h ; b8 01 00 ; 0xfa183 lsilogic.c:348 + jmp near 0a22dh ; e9 a4 00 ; 0xfa186 + mov es, [bp-006h] ; 8e 46 fa ; 0xfa189 lsilogic.c:350 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa18c + xor ax, ax ; 31 c0 ; 0xfa191 + xchg cx, ax ; 91 ; 0xfa193 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa194 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa198 + out DX, eax ; 66 ef ; 0xfa19a + xor bx, bx ; 31 db ; 0xfa19c lsilogic.c:351 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xfa19e + test ax, ax ; 85 c0 ; 0xfa1a1 + jnbe short 0a1ach ; 77 07 ; 0xfa1a3 + jne short 0a1d2h ; 75 2b ; 0xfa1a5 + cmp bx, word [bp-00eh] ; 3b 5e f2 ; 0xfa1a7 + jnc short 0a1d2h ; 73 26 ; 0xfa1aa + mov di, bx ; 89 df ; 0xfa1ac lsilogic.c:352 + sal di, 002h ; c1 e7 02 ; 0xfa1ae + mov es, [bp-014h] ; 8e 46 ec ; 0xfa1b1 + add di, word [bp-00ah] ; 03 7e f6 ; 0xfa1b4 + mov ax, word [es:di] ; 26 8b 05 ; 0xfa1b7 + mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xfa1ba + mov es, [bp-006h] ; 8e 46 fa ; 0xfa1be + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa1c1 + xchg cx, ax ; 91 ; 0xfa1c6 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa1c7 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa1cb + out DX, eax ; 66 ef ; 0xfa1cd + inc bx ; 43 ; 0xfa1cf + jmp short 0a19eh ; eb cc ; 0xfa1d0 + xor bx, bx ; 31 db ; 0xfa1d2 lsilogic.c:354 + cmp bx, word [bp-010h] ; 3b 5e f0 ; 0xfa1d4 + jnc short 0a22bh ; 73 52 ; 0xfa1d7 + mov es, [bp-006h] ; 8e 46 fa ; 0xfa1d9 lsilogic.c:357 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa1dc + add dx, strict byte 00030h ; 83 c2 30 ; 0xfa1e1 + in eax, DX ; 66 ed ; 0xfa1e4 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xfa1e6 + shr eax, 010h ; 66 c1 e8 10 ; 0xfa1e8 + xchg dx, ax ; 92 ; 0xfa1ec + test AL, strict byte 001h ; a8 01 ; 0xfa1ed + je short 0a1d9h ; 74 e8 ; 0xfa1ef + mov es, [bp-006h] ; 8e 46 fa ; 0xfa1f1 lsilogic.c:359 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa1f4 + in eax, DX ; 66 ed ; 0xfa1f9 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xfa1fb + shr eax, 010h ; 66 c1 e8 10 ; 0xfa1fd + xchg dx, ax ; 92 ; 0xfa201 + mov di, bx ; 89 df ; 0xfa202 + add di, bx ; 01 df ; 0xfa204 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa206 + add di, word [bp-012h] ; 03 7e ee ; 0xfa209 + mov word [es:di], ax ; 26 89 05 ; 0xfa20c + mov es, [bp-006h] ; 8e 46 fa ; 0xfa20f lsilogic.c:360 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa212 + add dx, strict byte 00030h ; 83 c2 30 ; 0xfa217 + mov ax, strict word 00001h ; b8 01 00 ; 0xfa21a + xor cx, cx ; 31 c9 ; 0xfa21d + xchg cx, ax ; 91 ; 0xfa21f + sal eax, 010h ; 66 c1 e0 10 ; 0xfa220 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa224 + out DX, eax ; 66 ef ; 0xfa226 + inc bx ; 43 ; 0xfa228 lsilogic.c:361 + jmp short 0a1d4h ; eb a9 ; 0xfa229 + xor ax, ax ; 31 c0 ; 0xfa22b lsilogic.c:363 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa22d lsilogic.c:364 + pop di ; 5f ; 0xfa230 + pop si ; 5e ; 0xfa231 + pop bp ; 5d ; 0xfa232 + retn 00008h ; c2 08 00 ; 0xfa233 + ; disGetNextSymbol 0xfa236 LB 0xb66 -> off=0x0 cb=00000000000000d7 uValue=00000000000f8c36 'lsilogic_scsi_cmd_exec' +lsilogic_scsi_cmd_exec: ; 0xfa236 LB 0xd7 + push bp ; 55 ; 0xfa236 lsilogic.c:366 + mov bp, sp ; 89 e5 ; 0xfa237 + push bx ; 53 ; 0xfa239 + push cx ; 51 ; 0xfa23a + push si ; 56 ; 0xfa23b + push di ; 57 ; 0xfa23c + push ax ; 50 ; 0xfa23d + mov bx, ax ; 89 c3 ; 0xfa23e + mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa240 + call 0a122h ; e8 dc fe ; 0xfa243 lsilogic.c:372 + mov cx, dx ; 89 d1 ; 0xfa246 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa248 + mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa24b + add dx, strict byte 00040h ; 83 c2 40 ; 0xfa250 + xchg cx, ax ; 91 ; 0xfa253 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa254 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa258 + out DX, eax ; 66 ef ; 0xfa25a + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa25c lsilogic.c:375 + mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa25f + add dx, strict byte 00030h ; 83 c2 30 ; 0xfa264 + in eax, DX ; 66 ed ; 0xfa267 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xfa269 + shr eax, 010h ; 66 c1 e8 10 ; 0xfa26b + xchg dx, ax ; 92 ; 0xfa26f + test AL, strict byte 008h ; a8 08 ; 0xfa270 + je short 0a25ch ; 74 e8 ; 0xfa272 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa274 lsilogic.c:377 + mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa277 + add dx, strict byte 00030h ; 83 c2 30 ; 0xfa27c + mov ax, strict word 00001h ; b8 01 00 ; 0xfa27f + xor cx, cx ; 31 c9 ; 0xfa282 + xchg cx, ax ; 91 ; 0xfa284 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa285 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa289 + out DX, eax ; 66 ef ; 0xfa28b + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa28d lsilogic.c:380 + mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa290 + add dx, strict byte 00044h ; 83 c2 44 ; 0xfa295 + in eax, DX ; 66 ed ; 0xfa298 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xfa29a + shr eax, 010h ; 66 c1 e8 10 ; 0xfa29c + xchg dx, ax ; 92 ; 0xfa2a0 + mov cx, dx ; 89 d1 ; 0xfa2a1 + mov di, ax ; 89 c7 ; 0xfa2a3 + mov si, dx ; 89 d6 ; 0xfa2a5 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa2a7 lsilogic.c:381 + mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa2aa + add dx, strict byte 00044h ; 83 c2 44 ; 0xfa2af + in eax, DX ; 66 ed ; 0xfa2b2 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xfa2b4 + shr eax, 010h ; 66 c1 e8 10 ; 0xfa2b6 + xchg dx, ax ; 92 ; 0xfa2ba + cmp dx, strict byte 0ffffh ; 83 fa ff ; 0xfa2bb lsilogic.c:382 + jne short 0a2c5h ; 75 05 ; 0xfa2be + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa2c0 + je short 0a2cah ; 74 05 ; 0xfa2c3 + mov ax, strict word 00005h ; b8 05 00 ; 0xfa2c5 lsilogic.c:383 + jmp short 0a304h ; eb 3a ; 0xfa2c8 + test ch, 080h ; f6 c5 80 ; 0xfa2ca lsilogic.c:384 + je short 0a2f3h ; 74 24 ; 0xfa2cd + lea ax, [bx+038h] ; 8d 47 38 ; 0xfa2cf lsilogic.c:392 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xfa2d2 + call 0a122h ; e8 4a fe ; 0xfa2d5 + mov cx, dx ; 89 d1 ; 0xfa2d8 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa2da + mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa2dd + add dx, strict byte 00044h ; 83 c2 44 ; 0xfa2e2 + xchg cx, ax ; 91 ; 0xfa2e5 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa2e6 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa2ea + out DX, eax ; 66 ef ; 0xfa2ec + mov ax, strict word 00004h ; b8 04 00 ; 0xfa2ee lsilogic.c:393 + jmp short 0a304h ; eb 11 ; 0xfa2f1 + test si, si ; 85 f6 ; 0xfa2f3 lsilogic.c:396 + jne short 0a2fdh ; 75 06 ; 0xfa2f5 + cmp di, 0cafeh ; 81 ff fe ca ; 0xfa2f7 + je short 0a302h ; 74 05 ; 0xfa2fb + mov ax, strict word 00003h ; b8 03 00 ; 0xfa2fd lsilogic.c:397 + jmp short 0a304h ; eb 02 ; 0xfa300 + xor ax, ax ; 31 c0 ; 0xfa302 lsilogic.c:399 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xfa304 lsilogic.c:400 + pop di ; 5f ; 0xfa307 + pop si ; 5e ; 0xfa308 + pop cx ; 59 ; 0xfa309 + pop bx ; 5b ; 0xfa30a + pop bp ; 5d ; 0xfa30b + retn ; c3 ; 0xfa30c + ; disGetNextSymbol 0xfa30d LB 0xa8f -> off=0x0 cb=00000000000000d6 uValue=00000000000f8d0d 'lsilogic_scsi_cmd_data_out' +lsilogic_scsi_cmd_data_out: ; 0xfa30d LB 0xd6 + push bp ; 55 ; 0xfa30d lsilogic.c:402 + mov bp, sp ; 89 e5 ; 0xfa30e + push cx ; 51 ; 0xfa310 + push si ; 56 ; 0xfa311 + push di ; 57 ; 0xfa312 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa313 + mov di, ax ; 89 c7 ; 0xfa316 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa318 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xfa31b + mov si, ax ; 89 c6 ; 0xfa31e lsilogic.c:405 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xfa320 + mov cx, strict word 00030h ; b9 30 00 ; 0xfa323 lsilogic.c:408 + xor bx, bx ; 31 db ; 0xfa326 + call 0ad00h ; e8 d5 09 ; 0xfa328 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa32b lsilogic.c:410 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa32e + mov byte [es:di], al ; 26 88 05 ; 0xfa331 + mov word [es:di+001h], strict word 00000h ; 26 c7 45 01 00 00 ; 0xfa334 lsilogic.c:411 + mov byte [es:di+003h], 000h ; 26 c6 45 03 00 ; 0xfa33a lsilogic.c:413 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa33f lsilogic.c:414 + mov byte [es:di+004h], al ; 26 88 45 04 ; 0xfa342 + mov byte [es:di+005h], 000h ; 26 c6 45 05 00 ; 0xfa346 lsilogic.c:415 + db 066h, 026h, 0c7h, 045h, 008h, 0feh, 0cah, 000h, 000h + ; mov dword [es:di+008h], strict dword 00000cafeh ; 66 26 c7 45 08 fe ca 00 00; 0xfa34b lsilogic.c:416 + db 066h, 026h, 0c7h, 045h, 014h, 000h, 000h, 000h, 001h + ; mov dword [es:di+014h], strict dword 001000000h ; 66 26 c7 45 14 00 00 00 01; 0xfa354 lsilogic.c:417 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xfa35d lsilogic.c:418 + mov word [es:di+028h], ax ; 26 89 45 28 ; 0xfa360 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa364 + mov word [es:di+02ah], ax ; 26 89 45 2a ; 0xfa367 + xor di, di ; 31 ff ; 0xfa36b lsilogic.c:419 + movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xfa36d + cmp di, ax ; 39 c7 ; 0xfa371 + jnl short 0a38fh ; 7d 1a ; 0xfa373 + les bx, [bp+004h] ; c4 5e 04 ; 0xfa375 lsilogic.c:420 + add bx, di ; 01 fb ; 0xfa378 + mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xfa37a + mov dx, si ; 89 f2 ; 0xfa37d + add dx, di ; 01 fa ; 0xfa37f + mov al, byte [es:bx] ; 26 8a 07 ; 0xfa381 + mov es, cx ; 8e c1 ; 0xfa384 + mov bx, dx ; 89 d3 ; 0xfa386 + mov byte [es:bx+018h], al ; 26 88 47 18 ; 0xfa388 + inc di ; 47 ; 0xfa38c + jmp short 0a36dh ; eb de ; 0xfa38d + mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa38f lsilogic.c:422 + xor ah, ah ; 30 e4 ; 0xfa392 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa394 + mov word [es:si+030h], strict word 00000h ; 26 c7 44 30 00 00 ; 0xfa397 + mov byte [es:si+032h], ah ; 26 88 64 32 ; 0xfa39d + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xfa3a1 + or word [es:si+030h], dx ; 26 09 54 30 ; 0xfa3a4 + or word [es:si+032h], ax ; 26 09 44 32 ; 0xfa3a8 + mov byte [es:si+033h], ah ; 26 88 64 33 ; 0xfa3ac lsilogic.c:423 + or byte [es:si+033h], 0d1h ; 26 80 4c 33 d1 ; 0xfa3b0 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xfa3b5 lsilogic.c:430 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xfa3b8 + call 0a122h ; e8 64 fd ; 0xfa3bb + mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa3be + db 066h, 026h, 0c7h, 044h, 034h, 000h, 000h, 000h, 000h + ; mov dword [es:si+034h], strict dword 000000000h ; 66 26 c7 44 34 00 00 00 00; 0xfa3c1 + or word [es:si+034h], ax ; 26 09 44 34 ; 0xfa3ca + or word [es:si+036h], dx ; 26 09 54 36 ; 0xfa3ce + mov ax, si ; 89 f0 ; 0xfa3d2 lsilogic.c:432 + mov dx, es ; 8c c2 ; 0xfa3d4 + call 0a236h ; e8 5d fe ; 0xfa3d6 + lea sp, [bp-006h] ; 8d 66 fa ; 0xfa3d9 lsilogic.c:433 + pop di ; 5f ; 0xfa3dc + pop si ; 5e ; 0xfa3dd + pop cx ; 59 ; 0xfa3de + pop bp ; 5d ; 0xfa3df + retn 0000eh ; c2 0e 00 ; 0xfa3e0 + ; disGetNextSymbol 0xfa3e3 LB 0x9b9 -> off=0x0 cb=00000000000000d6 uValue=00000000000f8de3 'lsilogic_scsi_cmd_data_in' +lsilogic_scsi_cmd_data_in: ; 0xfa3e3 LB 0xd6 + push bp ; 55 ; 0xfa3e3 lsilogic.c:435 + mov bp, sp ; 89 e5 ; 0xfa3e4 + push cx ; 51 ; 0xfa3e6 + push si ; 56 ; 0xfa3e7 + push di ; 57 ; 0xfa3e8 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa3e9 + mov di, ax ; 89 c7 ; 0xfa3ec + mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa3ee + mov byte [bp-008h], bl ; 88 5e f8 ; 0xfa3f1 + mov si, ax ; 89 c6 ; 0xfa3f4 lsilogic.c:438 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xfa3f6 + mov cx, strict word 00030h ; b9 30 00 ; 0xfa3f9 lsilogic.c:441 + xor bx, bx ; 31 db ; 0xfa3fc + call 0ad00h ; e8 ff 08 ; 0xfa3fe + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa401 lsilogic.c:443 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa404 + mov byte [es:di], al ; 26 88 05 ; 0xfa407 + mov word [es:di+001h], strict word 00000h ; 26 c7 45 01 00 00 ; 0xfa40a lsilogic.c:444 + mov byte [es:di+003h], 000h ; 26 c6 45 03 00 ; 0xfa410 lsilogic.c:446 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa415 lsilogic.c:447 + mov byte [es:di+004h], al ; 26 88 45 04 ; 0xfa418 + mov byte [es:di+005h], 000h ; 26 c6 45 05 00 ; 0xfa41c lsilogic.c:448 + db 066h, 026h, 0c7h, 045h, 008h, 0feh, 0cah, 000h, 000h + ; mov dword [es:di+008h], strict dword 00000cafeh ; 66 26 c7 45 08 fe ca 00 00; 0xfa421 lsilogic.c:449 + db 066h, 026h, 0c7h, 045h, 014h, 000h, 000h, 000h, 002h + ; mov dword [es:di+014h], strict dword 002000000h ; 66 26 c7 45 14 00 00 00 02; 0xfa42a lsilogic.c:450 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xfa433 lsilogic.c:451 + mov word [es:di+028h], ax ; 26 89 45 28 ; 0xfa436 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa43a + mov word [es:di+02ah], ax ; 26 89 45 2a ; 0xfa43d + xor di, di ; 31 ff ; 0xfa441 lsilogic.c:452 + movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xfa443 + cmp di, ax ; 39 c7 ; 0xfa447 + jnl short 0a465h ; 7d 1a ; 0xfa449 + les bx, [bp+004h] ; c4 5e 04 ; 0xfa44b lsilogic.c:453 + add bx, di ; 01 fb ; 0xfa44e + mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xfa450 + mov dx, si ; 89 f2 ; 0xfa453 + add dx, di ; 01 fa ; 0xfa455 + mov al, byte [es:bx] ; 26 8a 07 ; 0xfa457 + mov es, cx ; 8e c1 ; 0xfa45a + mov bx, dx ; 89 d3 ; 0xfa45c + mov byte [es:bx+018h], al ; 26 88 47 18 ; 0xfa45e + inc di ; 47 ; 0xfa462 + jmp short 0a443h ; eb de ; 0xfa463 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa465 lsilogic.c:455 + xor ah, ah ; 30 e4 ; 0xfa468 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa46a + mov word [es:si+030h], strict word 00000h ; 26 c7 44 30 00 00 ; 0xfa46d + mov byte [es:si+032h], ah ; 26 88 64 32 ; 0xfa473 + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xfa477 + or word [es:si+030h], dx ; 26 09 54 30 ; 0xfa47a + or word [es:si+032h], ax ; 26 09 44 32 ; 0xfa47e + mov byte [es:si+033h], ah ; 26 88 64 33 ; 0xfa482 lsilogic.c:456 + or byte [es:si+033h], 0d1h ; 26 80 4c 33 d1 ; 0xfa486 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xfa48b lsilogic.c:463 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xfa48e + call 0a122h ; e8 8e fc ; 0xfa491 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa494 + db 066h, 026h, 0c7h, 044h, 034h, 000h, 000h, 000h, 000h + ; mov dword [es:si+034h], strict dword 000000000h ; 66 26 c7 44 34 00 00 00 00; 0xfa497 + or word [es:si+034h], ax ; 26 09 44 34 ; 0xfa4a0 + or word [es:si+036h], dx ; 26 09 54 36 ; 0xfa4a4 + mov ax, si ; 89 f0 ; 0xfa4a8 lsilogic.c:465 + mov dx, es ; 8c c2 ; 0xfa4aa + call 0a236h ; e8 87 fd ; 0xfa4ac + lea sp, [bp-006h] ; 8d 66 fa ; 0xfa4af lsilogic.c:466 + pop di ; 5f ; 0xfa4b2 + pop si ; 5e ; 0xfa4b3 + pop cx ; 59 ; 0xfa4b4 + pop bp ; 5d ; 0xfa4b5 + retn 0000eh ; c2 0e 00 ; 0xfa4b6 + ; disGetNextSymbol 0xfa4b9 LB 0x8e3 -> off=0x0 cb=00000000000000f1 uValue=00000000000f8eb9 'lsilogic_scsi_hba_init' +lsilogic_scsi_hba_init: ; 0xfa4b9 LB 0xf1 + push bp ; 55 ; 0xfa4b9 lsilogic.c:471 + mov bp, sp ; 89 e5 ; 0xfa4ba + push bx ; 53 ; 0xfa4bc + push cx ; 51 ; 0xfa4bd + push si ; 56 ; 0xfa4be + push di ; 57 ; 0xfa4bf + sub sp, strict byte 0002ch ; 83 ec 2c ; 0xfa4c0 + mov si, ax ; 89 c6 ; 0xfa4c3 + mov di, dx ; 89 d7 ; 0xfa4c5 + mov es, dx ; 8e c2 ; 0xfa4c7 lsilogic.c:483 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa4c9 + add dx, strict byte 00004h ; 83 c2 04 ; 0xfa4ce + mov ax, strict word 00004h ; b8 04 00 ; 0xfa4d1 + xor cx, cx ; 31 c9 ; 0xfa4d4 + xchg cx, ax ; 91 ; 0xfa4d6 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa4d7 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa4db + out DX, eax ; 66 ef ; 0xfa4dd + mov es, di ; 8e c7 ; 0xfa4df lsilogic.c:484 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa4e1 + add dx, strict byte 00004h ; 83 c2 04 ; 0xfa4e6 + mov ax, strict word 00002h ; b8 02 00 ; 0xfa4e9 + xor cx, cx ; 31 c9 ; 0xfa4ec + xchg cx, ax ; 91 ; 0xfa4ee + sal eax, 010h ; 66 c1 e0 10 ; 0xfa4ef + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa4f3 + out DX, eax ; 66 ef ; 0xfa4f5 + mov es, di ; 8e c7 ; 0xfa4f7 lsilogic.c:485 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa4f9 + add dx, strict byte 00004h ; 83 c2 04 ; 0xfa4fe + mov ax, strict word 00007h ; b8 07 00 ; 0xfa501 + xor cx, cx ; 31 c9 ; 0xfa504 + xchg cx, ax ; 91 ; 0xfa506 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa507 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa50b + out DX, eax ; 66 ef ; 0xfa50d + mov es, di ; 8e c7 ; 0xfa50f lsilogic.c:486 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa511 + add dx, strict byte 00004h ; 83 c2 04 ; 0xfa516 + mov ax, strict word 0000dh ; b8 0d 00 ; 0xfa519 + xor cx, cx ; 31 c9 ; 0xfa51c + xchg cx, ax ; 91 ; 0xfa51e + sal eax, 010h ; 66 c1 e0 10 ; 0xfa51f + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa523 + out DX, eax ; 66 ef ; 0xfa525 + mov es, di ; 8e c7 ; 0xfa527 lsilogic.c:487 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa529 + add dx, strict byte 00008h ; 83 c2 08 ; 0xfa52e + mov ax, strict word 00004h ; b8 04 00 ; 0xfa531 + xor cx, cx ; 31 c9 ; 0xfa534 + xchg cx, ax ; 91 ; 0xfa536 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa537 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa53b + out DX, eax ; 66 ef ; 0xfa53d + mov byte [bp-034h], 001h ; c6 46 cc 01 ; 0xfa53f lsilogic.c:489 + mov byte [bp-031h], 002h ; c6 46 cf 02 ; 0xfa543 lsilogic.c:490 + xor ax, ax ; 31 c0 ; 0xfa547 lsilogic.c:491 + mov word [bp-024h], ax ; 89 46 dc ; 0xfa549 + mov word [bp-022h], ax ; 89 46 de ; 0xfa54c + mov word [bp-020h], ax ; 89 46 e0 ; 0xfa54f lsilogic.c:492 + mov word [bp-01eh], ax ; 89 46 e2 ; 0xfa552 + mov byte [bp-02eh], 001h ; c6 46 d2 01 ; 0xfa555 lsilogic.c:493 + mov byte [bp-02fh], 004h ; c6 46 d1 04 ; 0xfa559 lsilogic.c:494 + mov word [bp-028h], 00080h ; c7 46 d8 80 00 ; 0xfa55d lsilogic.c:495 + push strict byte 00014h ; 6a 14 ; 0xfa562 lsilogic.c:496 + lea dx, [bp-01ch] ; 8d 56 e4 ; 0xfa564 + push SS ; 16 ; 0xfa567 + push dx ; 52 ; 0xfa568 + push strict byte 00018h ; 6a 18 ; 0xfa569 + mov cx, ss ; 8c d1 ; 0xfa56b + lea bx, [bp-034h] ; 8d 5e cc ; 0xfa56d + mov ax, si ; 89 f0 ; 0xfa570 + mov dx, di ; 89 fa ; 0xfa572 + call 0a140h ; e8 c9 fb ; 0xfa574 + test ax, ax ; 85 c0 ; 0xfa577 lsilogic.c:497 + jne short 0a59eh ; 75 23 ; 0xfa579 + lea ax, [si+038h] ; 8d 44 38 ; 0xfa57b lsilogic.c:500 + mov dx, di ; 89 fa ; 0xfa57e + call 0a122h ; e8 9f fb ; 0xfa580 + mov es, di ; 8e c7 ; 0xfa583 + mov si, word [es:si+000b8h] ; 26 8b b4 b8 00 ; 0xfa585 + add si, strict byte 00044h ; 83 c6 44 ; 0xfa58a + mov cx, dx ; 89 d1 ; 0xfa58d + mov dx, si ; 89 f2 ; 0xfa58f + xchg cx, ax ; 91 ; 0xfa591 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa592 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa596 + out DX, eax ; 66 ef ; 0xfa598 + xor ax, ax ; 31 c0 ; 0xfa59a lsilogic.c:501 + jmp short 0a5a1h ; eb 03 ; 0xfa59c + mov ax, strict word 00001h ; b8 01 00 ; 0xfa59e lsilogic.c:504 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xfa5a1 lsilogic.c:505 + pop di ; 5f ; 0xfa5a4 + pop si ; 5e ; 0xfa5a5 + pop cx ; 59 ; 0xfa5a6 + pop bx ; 5b ; 0xfa5a7 + pop bp ; 5d ; 0xfa5a8 + retn ; c3 ; 0xfa5a9 + ; disGetNextSymbol 0xfa5aa LB 0x7f2 -> off=0x0 cb=0000000000000052 uValue=00000000000f8faa 'lsilogic_scsi_init' +lsilogic_scsi_init: ; 0xfa5aa LB 0x52 + push bp ; 55 ; 0xfa5aa lsilogic.c:510 + mov bp, sp ; 89 e5 ; 0xfa5ab + push si ; 56 ; 0xfa5ad + push di ; 57 ; 0xfa5ae + sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa5af + mov si, ax ; 89 c6 ; 0xfa5b2 + mov word [bp-008h], dx ; 89 56 f8 ; 0xfa5b4 + movzx ax, cl ; 0f b6 c1 ; 0xfa5b7 lsilogic.c:517 + mov word [bp-006h], ax ; 89 46 fa ; 0xfa5ba + movzx di, bl ; 0f b6 fb ; 0xfa5bd + mov bx, strict word 00010h ; bb 10 00 ; 0xfa5c0 + mov dx, ax ; 89 c2 ; 0xfa5c3 + mov ax, di ; 89 f8 ; 0xfa5c5 + call 0aae3h ; e8 19 05 ; 0xfa5c7 + test AL, strict byte 001h ; a8 01 ; 0xfa5ca lsilogic.c:521 + je short 0a5f2h ; 74 24 ; 0xfa5cc + and AL, strict byte 0f0h ; 24 f0 ; 0xfa5ce lsilogic.c:523 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xfa5d0 + mov cx, strict word 00007h ; b9 07 00 ; 0xfa5d3 lsilogic.c:526 + mov bx, strict word 00004h ; bb 04 00 ; 0xfa5d6 + mov dx, word [bp-006h] ; 8b 56 fa ; 0xfa5d9 + mov ax, di ; 89 f8 ; 0xfa5dc + call 0ab0ah ; e8 29 05 ; 0xfa5de + les ax, [bp-00ah] ; c4 46 f6 ; 0xfa5e1 lsilogic.c:529 + mov word [es:si+000b8h], ax ; 26 89 84 b8 00 ; 0xfa5e4 + mov ax, si ; 89 f0 ; 0xfa5e9 lsilogic.c:530 + mov dx, es ; 8c c2 ; 0xfa5eb + call 0a4b9h ; e8 c9 fe ; 0xfa5ed + jmp short 0a5f5h ; eb 03 ; 0xfa5f0 + mov ax, strict word 00001h ; b8 01 00 ; 0xfa5f2 lsilogic.c:535 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa5f5 lsilogic.c:536 + pop di ; 5f ; 0xfa5f8 + pop si ; 5e ; 0xfa5f9 + pop bp ; 5d ; 0xfa5fa + retn ; c3 ; 0xfa5fb + ; disGetNextSymbol 0xfa5fc LB 0x7a0 -> off=0x0 cb=0000000000000020 uValue=00000000000f8ffc 'apm_out_str' +apm_out_str: ; 0xfa5fc LB 0x20 + push bp ; 55 ; 0xfa5fc apm.c:142 + mov bp, sp ; 89 e5 ; 0xfa5fd + push bx ; 53 ; 0xfa5ff + push dx ; 52 ; 0xfa600 + mov bx, ax ; 89 c3 ; 0xfa601 + cmp byte [bx], 000h ; 80 3f 00 ; 0xfa603 apm.c:144 + je short 0a615h ; 74 0d ; 0xfa606 + mov dx, 0040fh ; ba 0f 04 ; 0xfa608 apm.c:145 + mov al, byte [bx] ; 8a 07 ; 0xfa60b + out DX, AL ; ee ; 0xfa60d + inc bx ; 43 ; 0xfa60e + mov al, byte [bx] ; 8a 07 ; 0xfa60f + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xfa611 + jne short 0a60dh ; 75 f8 ; 0xfa613 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa615 apm.c:146 + pop dx ; 5a ; 0xfa618 + pop bx ; 5b ; 0xfa619 + pop bp ; 5d ; 0xfa61a + retn ; c3 ; 0xfa61b + ; disGetNextSymbol 0xfa61c LB 0x780 -> off=0x1e cb=00000000000000fb uValue=00000000000f903a 'apm_function' + db 05dh, 0a6h, 02fh, 0a7h, 06fh, 0a6h, 08ah, 0a6h, 02fh, 0a7h, 0b5h, 0a6h, 02fh, 0a7h, 0bah, 0a6h + db 004h, 0a7h, 004h, 0a7h, 0f0h, 0a6h, 0ffh, 0a6h, 004h, 0a7h, 004h, 0a7h, 0e9h, 0a6h +apm_function: ; 0xfa63a LB 0xfb + push bp ; 55 ; 0xfa63a apm.c:148 + mov bp, sp ; 89 e5 ; 0xfa63b + push si ; 56 ; 0xfa63d + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xfa63e apm.c:152 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xfa642 apm.c:153 + xor ah, ah ; 30 e4 ; 0xfa645 + cmp ax, strict word 0000eh ; 3d 0e 00 ; 0xfa647 + jnbe near 0a704h ; 0f 87 b6 00 ; 0xfa64a + mov bx, ax ; 89 c3 ; 0xfa64e + add bx, ax ; 01 c3 ; 0xfa650 + mov si, word [bp+018h] ; 8b 76 18 ; 0xfa652 + or si, strict byte 00001h ; 83 ce 01 ; 0xfa655 + jmp word [cs:bx-059e4h] ; 2e ff a7 1c a6 ; 0xfa658 + mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xfa65d apm.c:155 + mov word [bp+00ch], 0504dh ; c7 46 0c 4d 50 ; 0xfa662 apm.c:156 + mov word [bp+010h], strict word 00003h ; c7 46 10 03 00 ; 0xfa667 apm.c:157 + jmp near 0a72fh ; e9 c0 00 ; 0xfa66c apm.c:158 + mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xfa66f apm.c:168 + mov word [bp+00ch], 0ad8bh ; c7 46 0c 8b ad ; 0xfa674 apm.c:169 + mov word [bp+010h], 0f000h ; c7 46 10 00 f0 ; 0xfa679 apm.c:170 + mov ax, strict word 0fff0h ; b8 f0 ff ; 0xfa67e apm.c:171 + mov word [bp+006h], ax ; 89 46 06 ; 0xfa681 + mov word [bp+004h], ax ; 89 46 04 ; 0xfa684 apm.c:172 + jmp near 0a72fh ; e9 a5 00 ; 0xfa687 apm.c:173 + mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xfa68a apm.c:179 + mov word [bp+00ch], 0da40h ; c7 46 0c 40 da ; 0xfa68f apm.c:180 + mov ax, 0f000h ; b8 00 f0 ; 0xfa694 apm.c:181 + mov word [bp+010h], ax ; 89 46 10 ; 0xfa697 + mov word [bp+00eh], ax ; 89 46 0e ; 0xfa69a apm.c:182 + mov ax, strict word 0fff0h ; b8 f0 ff ; 0xfa69d apm.c:183 + mov word [bp+006h], ax ; 89 46 06 ; 0xfa6a0 + mov word [bp+004h], ax ; 89 46 04 ; 0xfa6a3 apm.c:184 + xor bx, bx ; 31 db ; 0xfa6a6 apm.c:185 + sal ebx, 010h ; 66 c1 e3 10 ; 0xfa6a8 + mov si, ax ; 89 c6 ; 0xfa6ac apm.c:186 + sal esi, 010h ; 66 c1 e6 10 ; 0xfa6ae + jmp near 0a72fh ; e9 7a 00 ; 0xfa6b2 apm.c:187 + sti ; fb ; 0xfa6b5 apm.c:190 + hlt ; f4 ; 0xfa6b6 apm.c:191 + jmp near 0a72fh ; e9 75 00 ; 0xfa6b7 apm.c:192 + cmp word [bp+010h], strict byte 00003h ; 83 7e 10 03 ; 0xfa6ba apm.c:196 + je short 0a6d9h ; 74 19 ; 0xfa6be + cmp word [bp+010h], strict byte 00002h ; 83 7e 10 02 ; 0xfa6c0 + je short 0a6d4h ; 74 0e ; 0xfa6c4 + cmp word [bp+010h], strict byte 00001h ; 83 7e 10 01 ; 0xfa6c6 + jne short 0a6deh ; 75 12 ; 0xfa6ca + mov ax, 00d76h ; b8 76 0d ; 0xfa6cc apm.c:198 + call 0a5fch ; e8 2a ff ; 0xfa6cf + jmp short 0a72fh ; eb 5b ; 0xfa6d2 apm.c:199 + mov ax, 00d7eh ; b8 7e 0d ; 0xfa6d4 apm.c:201 + jmp short 0a6cfh ; eb f6 ; 0xfa6d7 + mov ax, 00d86h ; b8 86 0d ; 0xfa6d9 apm.c:204 + jmp short 0a6cfh ; eb f1 ; 0xfa6dc + or ah, 00ah ; 80 cc 0a ; 0xfa6de apm.c:207 + mov word [bp+012h], ax ; 89 46 12 ; 0xfa6e1 + mov word [bp+018h], si ; 89 76 18 ; 0xfa6e4 apm.c:208 + jmp short 0a72fh ; eb 46 ; 0xfa6e7 apm.c:210 + mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xfa6e9 apm.c:212 + jmp short 0a72fh ; eb 3f ; 0xfa6ee apm.c:213 + mov word [bp+00ch], 001ffh ; c7 46 0c ff 01 ; 0xfa6f0 apm.c:220 + mov dword [bp+00eh], strict dword 080ffffffh ; 66 c7 46 0e ff ff ff 80 ; 0xfa6f5 apm.c:221 + jmp short 0a72fh ; eb 30 ; 0xfa6fd apm.c:223 + or ah, 080h ; 80 cc 80 ; 0xfa6ff apm.c:226 + jmp short 0a6e1h ; eb dd ; 0xfa702 + mov bx, 00e06h ; bb 06 0e ; 0xfa704 apm.c:230 + mov cx, ds ; 8c d9 ; 0xfa707 + mov ax, strict word 00004h ; b8 04 00 ; 0xfa709 + call 01a27h ; e8 18 73 ; 0xfa70c + push word [bp+00ch] ; ff 76 0c ; 0xfa70f + push word [bp+012h] ; ff 76 12 ; 0xfa712 + push 00d8fh ; 68 8f 0d ; 0xfa715 + push strict byte 00004h ; 6a 04 ; 0xfa718 + call 01a68h ; e8 4b 73 ; 0xfa71a + add sp, strict byte 00008h ; 83 c4 08 ; 0xfa71d + mov ax, word [bp+012h] ; 8b 46 12 ; 0xfa720 apm.c:231 + xor ah, ah ; 30 e4 ; 0xfa723 + or ah, 00ch ; 80 cc 0c ; 0xfa725 + mov word [bp+012h], ax ; 89 46 12 ; 0xfa728 + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xfa72b apm.c:232 + lea sp, [bp-002h] ; 8d 66 fe ; 0xfa72f apm.c:234 + pop si ; 5e ; 0xfa732 + pop bp ; 5d ; 0xfa733 + retn ; c3 ; 0xfa734 + ; disGetNextSymbol 0xfa735 LB 0x667 -> off=0x0 cb=0000000000000024 uValue=00000000000f9135 'pci16_select_reg' +pci16_select_reg: ; 0xfa735 LB 0x24 + push bp ; 55 ; 0xfa735 pcibios.c:198 + mov bp, sp ; 89 e5 ; 0xfa736 + push bx ; 53 ; 0xfa738 + and dl, 0fch ; 80 e2 fc ; 0xfa739 pcibios.c:200 + mov bx, dx ; 89 d3 ; 0xfa73c + mov dx, 00cf8h ; ba f8 0c ; 0xfa73e + movzx eax, ax ; 66 0f b7 c0 ; 0xfa741 + sal eax, 008h ; 66 c1 e0 08 ; 0xfa745 + or eax, strict dword 080000000h ; 66 0d 00 00 00 80 ; 0xfa749 + db 08ah, 0c3h + ; mov al, bl ; 8a c3 ; 0xfa74f + out DX, eax ; 66 ef ; 0xfa751 + lea sp, [bp-002h] ; 8d 66 fe ; 0xfa753 pcibios.c:201 + pop bx ; 5b ; 0xfa756 + pop bp ; 5d ; 0xfa757 + retn ; c3 ; 0xfa758 + ; disGetNextSymbol 0xfa759 LB 0x643 -> off=0x0 cb=00000000000000f3 uValue=00000000000f9159 'pci16_find_device' +pci16_find_device: ; 0xfa759 LB 0xf3 + push bp ; 55 ; 0xfa759 pcibios.c:233 + mov bp, sp ; 89 e5 ; 0xfa75a + push si ; 56 ; 0xfa75c + push di ; 57 ; 0xfa75d + sub sp, strict byte 0000ah ; 83 ec 0a ; 0xfa75e + push ax ; 50 ; 0xfa761 + push dx ; 52 ; 0xfa762 + mov si, bx ; 89 de ; 0xfa763 + mov di, cx ; 89 cf ; 0xfa765 + test cx, cx ; 85 c9 ; 0xfa767 pcibios.c:243 + xor bx, bx ; 31 db ; 0xfa769 pcibios.c:250 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xfa76b pcibios.c:251 + test bl, 007h ; f6 c3 07 ; 0xfa76f pcibios.c:261 + jne short 0a7a1h ; 75 2d ; 0xfa772 + mov dx, strict word 0000eh ; ba 0e 00 ; 0xfa774 pcibios.c:262 + mov ax, bx ; 89 d8 ; 0xfa777 + call 0a735h ; e8 b9 ff ; 0xfa779 + mov dx, 00cfeh ; ba fe 0c ; 0xfa77c pcibios.c:263 + in AL, DX ; ec ; 0xfa77f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xfa780 + mov byte [bp-006h], al ; 88 46 fa ; 0xfa782 + cmp AL, strict byte 0ffh ; 3c ff ; 0xfa785 pcibios.c:264 + jne short 0a78fh ; 75 06 ; 0xfa787 + add bx, strict byte 00008h ; 83 c3 08 ; 0xfa789 pcibios.c:265 + jmp near 0a828h ; e9 99 00 ; 0xfa78c pcibios.c:266 + test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xfa78f pcibios.c:268 + je short 0a79ch ; 74 07 ; 0xfa793 + mov word [bp-00ch], strict word 00001h ; c7 46 f4 01 00 ; 0xfa795 pcibios.c:269 + jmp short 0a7a1h ; eb 05 ; 0xfa79a pcibios.c:270 + mov word [bp-00ch], strict word 00008h ; c7 46 f4 08 00 ; 0xfa79c pcibios.c:271 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xfa7a1 pcibios.c:282 + and AL, strict byte 007h ; 24 07 ; 0xfa7a4 + cmp AL, strict byte 001h ; 3c 01 ; 0xfa7a6 + jne short 0a7c9h ; 75 1f ; 0xfa7a8 + mov ax, bx ; 89 d8 ; 0xfa7aa + shr ax, 008h ; c1 e8 08 ; 0xfa7ac + test ax, ax ; 85 c0 ; 0xfa7af + jne short 0a7c9h ; 75 16 ; 0xfa7b1 + mov dx, strict word 0001ah ; ba 1a 00 ; 0xfa7b3 pcibios.c:284 + mov ax, bx ; 89 d8 ; 0xfa7b6 + call 0a735h ; e8 7a ff ; 0xfa7b8 + mov dx, 00cfeh ; ba fe 0c ; 0xfa7bb pcibios.c:285 + in AL, DX ; ec ; 0xfa7be + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xfa7bf + cmp al, byte [bp-008h] ; 3a 46 f8 ; 0xfa7c1 pcibios.c:286 + jbe short 0a7c9h ; 76 03 ; 0xfa7c4 + mov byte [bp-008h], al ; 88 46 f8 ; 0xfa7c6 pcibios.c:287 + test di, di ; 85 ff ; 0xfa7c9 pcibios.c:291 + je short 0a7d2h ; 74 05 ; 0xfa7cb + mov dx, strict word 00008h ; ba 08 00 ; 0xfa7cd + jmp short 0a7d4h ; eb 02 ; 0xfa7d0 + xor dx, dx ; 31 d2 ; 0xfa7d2 + mov ax, bx ; 89 d8 ; 0xfa7d4 + call 0a735h ; e8 5c ff ; 0xfa7d6 + mov dx, 00cfch ; ba fc 0c ; 0xfa7d9 pcibios.c:292 + in eax, DX ; 66 ed ; 0xfa7dc + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xfa7de + shr eax, 010h ; 66 c1 e8 10 ; 0xfa7e0 + xchg dx, ax ; 92 ; 0xfa7e4 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa7e5 + mov word [bp-00eh], strict word 00000h ; c7 46 f2 00 00 ; 0xfa7e8 pcibios.c:293 + test di, di ; 85 ff ; 0xfa7ed pcibios.c:296 + je short 0a80ch ; 74 1b ; 0xfa7ef + cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xfa7f1 pcibios.c:297 + je short 0a800h ; 74 09 ; 0xfa7f5 + mov ax, dx ; 89 d0 ; 0xfa7f7 pcibios.c:298 + mov word [bp-00ah], strict word 00000h ; c7 46 f6 00 00 ; 0xfa7f9 + jmp short 0a80ch ; eb 0c ; 0xfa7fe pcibios.c:299 + mov cx, strict word 00008h ; b9 08 00 ; 0xfa800 pcibios.c:300 + shr dx, 1 ; d1 ea ; 0xfa803 + rcr ax, 1 ; d1 d8 ; 0xfa805 + loop 0a803h ; e2 fa ; 0xfa807 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa809 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xfa80c pcibios.c:307 + cmp dx, word [bp-012h] ; 3b 56 ee ; 0xfa80f + jne short 0a819h ; 75 05 ; 0xfa812 + cmp ax, word [bp-010h] ; 3b 46 f0 ; 0xfa814 + je short 0a81fh ; 74 06 ; 0xfa817 + cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xfa819 pcibios.c:308 + je short 0a825h ; 74 06 ; 0xfa81d + dec si ; 4e ; 0xfa81f + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xfa820 + je short 0a837h ; 74 12 ; 0xfa823 + add bx, word [bp-00ch] ; 03 5e f4 ; 0xfa825 pcibios.c:316 + mov ax, bx ; 89 d8 ; 0xfa828 pcibios.c:317 + shr ax, 008h ; c1 e8 08 ; 0xfa82a + movzx dx, byte [bp-008h] ; 0f b6 56 f8 ; 0xfa82d + cmp ax, dx ; 39 d0 ; 0xfa831 + jbe near 0a76fh ; 0f 86 38 ff ; 0xfa833 + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xfa837 pcibios.c:319 + jne short 0a840h ; 75 04 ; 0xfa83a pcibios.c:323 + mov ax, bx ; 89 d8 ; 0xfa83c + jmp short 0a843h ; eb 03 ; 0xfa83e + mov ax, strict word 0ffffh ; b8 ff ff ; 0xfa840 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa843 pcibios.c:324 + pop di ; 5f ; 0xfa846 + pop si ; 5e ; 0xfa847 + pop bp ; 5d ; 0xfa848 + retn 00002h ; c2 02 00 ; 0xfa849 + ; disGetNextSymbol 0xfa84c LB 0x550 -> off=0xc cb=00000000000001db uValue=00000000000f9258 'pci16_function' + db 03eh, 0a9h, 058h, 0a9h, 06bh, 0a9h, 080h, 0a9h, 093h, 0a9h, 0a6h, 0a9h +pci16_function: ; 0xfa858 LB 0x1db + push bp ; 55 ; 0xfa858 pcibios.c:326 + mov bp, sp ; 89 e5 ; 0xfa859 + push si ; 56 ; 0xfa85b + push di ; 57 ; 0xfa85c + push ax ; 50 ; 0xfa85d + push ax ; 50 ; 0xfa85e + and word [bp+020h], 000ffh ; 81 66 20 ff 00 ; 0xfa85f pcibios.c:333 + and word [bp+02ch], strict byte 0fffeh ; 83 66 2c fe ; 0xfa864 pcibios.c:334 + mov bx, word [bp+020h] ; 8b 5e 20 ; 0xfa868 pcibios.c:336 + xor bh, bh ; 30 ff ; 0xfa86b + mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa86d + xor ah, ah ; 30 e4 ; 0xfa870 + cmp bx, strict byte 00003h ; 83 fb 03 ; 0xfa872 + jc short 0a891h ; 72 1a ; 0xfa875 + jbe short 0a8ebh ; 76 72 ; 0xfa877 + cmp bx, strict byte 0000eh ; 83 fb 0e ; 0xfa879 + je near 0a9bah ; 0f 84 3a 01 ; 0xfa87c + cmp bx, strict byte 00008h ; 83 fb 08 ; 0xfa880 + jc near 0a9ffh ; 0f 82 78 01 ; 0xfa883 + cmp bx, strict byte 0000dh ; 83 fb 0d ; 0xfa887 + jbe near 0a912h ; 0f 86 84 00 ; 0xfa88a + jmp near 0a9ffh ; e9 6e 01 ; 0xfa88e + cmp bx, strict byte 00002h ; 83 fb 02 ; 0xfa891 + je short 0a8b9h ; 74 23 ; 0xfa894 + cmp bx, strict byte 00001h ; 83 fb 01 ; 0xfa896 + jne near 0a9ffh ; 0f 85 62 01 ; 0xfa899 + mov word [bp+020h], strict word 00001h ; c7 46 20 01 00 ; 0xfa89d pcibios.c:338 + mov word [bp+014h], 00210h ; c7 46 14 10 02 ; 0xfa8a2 pcibios.c:339 + mov word [bp+01ch], strict word 00000h ; c7 46 1c 00 00 ; 0xfa8a7 pcibios.c:341 + mov word [bp+018h], 04350h ; c7 46 18 50 43 ; 0xfa8ac pcibios.c:342 + mov word [bp+01ah], 02049h ; c7 46 1a 49 20 ; 0xfa8b1 + jmp near 0aa2ch ; e9 73 01 ; 0xfa8b6 pcibios.c:343 + cmp word [bp+018h], strict byte 0ffffh ; 83 7e 18 ff ; 0xfa8b9 pcibios.c:348 + jne short 0a8c5h ; 75 06 ; 0xfa8bd + or ah, 083h ; 80 cc 83 ; 0xfa8bf pcibios.c:349 + jmp near 0aa25h ; e9 60 01 ; 0xfa8c2 pcibios.c:350 + push strict byte 00000h ; 6a 00 ; 0xfa8c5 pcibios.c:352 + mov bx, word [bp+008h] ; 8b 5e 08 ; 0xfa8c7 + mov dx, word [bp+01ch] ; 8b 56 1c ; 0xfa8ca + mov ax, word [bp+018h] ; 8b 46 18 ; 0xfa8cd + xor cx, cx ; 31 c9 ; 0xfa8d0 + call 0a759h ; e8 84 fe ; 0xfa8d2 + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa8d5 pcibios.c:353 + jne short 0a8e5h ; 75 0b ; 0xfa8d8 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa8da pcibios.c:354 + xor ah, ah ; 30 e4 ; 0xfa8dd + or ah, 086h ; 80 cc 86 ; 0xfa8df + jmp near 0aa25h ; e9 40 01 ; 0xfa8e2 + mov word [bp+014h], ax ; 89 46 14 ; 0xfa8e5 pcibios.c:355 + jmp near 0aa2ch ; e9 41 01 ; 0xfa8e8 pcibios.c:360 + push strict byte 00000h ; 6a 00 ; 0xfa8eb pcibios.c:362 + mov bx, word [bp+008h] ; 8b 5e 08 ; 0xfa8ed + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa8f0 + mov dx, word [bp+01eh] ; 8b 56 1e ; 0xfa8f3 + mov cx, strict word 00001h ; b9 01 00 ; 0xfa8f6 + call 0a759h ; e8 5d fe ; 0xfa8f9 + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa8fc pcibios.c:363 + jne short 0a90ch ; 75 0b ; 0xfa8ff + mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa901 pcibios.c:364 + xor ah, ah ; 30 e4 ; 0xfa904 + or ah, 086h ; 80 cc 86 ; 0xfa906 + jmp near 0aa25h ; e9 19 01 ; 0xfa909 pcibios.c:365 + mov word [bp+014h], ax ; 89 46 14 ; 0xfa90c pcibios.c:367 + jmp near 0aa2ch ; e9 1a 01 ; 0xfa90f pcibios.c:369 + cmp word [bp+004h], 00100h ; 81 7e 04 00 01 ; 0xfa912 pcibios.c:376 + jc short 0a91fh ; 72 06 ; 0xfa917 + or ah, 087h ; 80 cc 87 ; 0xfa919 pcibios.c:377 + jmp near 0aa25h ; e9 06 01 ; 0xfa91c pcibios.c:378 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa91f pcibios.c:380 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xfa922 + call 0a735h ; e8 0d fe ; 0xfa925 + mov bx, word [bp+020h] ; 8b 5e 20 ; 0xfa928 pcibios.c:381 + xor bh, bh ; 30 ff ; 0xfa92b + sub bx, strict byte 00008h ; 83 eb 08 ; 0xfa92d + cmp bx, strict byte 00005h ; 83 fb 05 ; 0xfa930 + jnbe near 0aa2ch ; 0f 87 f5 00 ; 0xfa933 + add bx, bx ; 01 db ; 0xfa937 + jmp word [cs:bx-057b4h] ; 2e ff a7 4c a8 ; 0xfa939 + mov bx, word [bp+01ch] ; 8b 5e 1c ; 0xfa93e pcibios.c:383 + xor bl, bl ; 30 db ; 0xfa941 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa943 + and dx, strict byte 00003h ; 83 e2 03 ; 0xfa946 + add dx, 00cfch ; 81 c2 fc 0c ; 0xfa949 + in AL, DX ; ec ; 0xfa94d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xfa94e + or bx, ax ; 09 c3 ; 0xfa950 + mov word [bp+01ch], bx ; 89 5e 1c ; 0xfa952 + jmp near 0aa2ch ; e9 d4 00 ; 0xfa955 pcibios.c:384 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa958 pcibios.c:386 + xor dh, dh ; 30 f6 ; 0xfa95b + and dl, 002h ; 80 e2 02 ; 0xfa95d + add dx, 00cfch ; 81 c2 fc 0c ; 0xfa960 + in ax, DX ; ed ; 0xfa964 + mov word [bp+01ch], ax ; 89 46 1c ; 0xfa965 + jmp near 0aa2ch ; e9 c1 00 ; 0xfa968 pcibios.c:387 + mov dx, 00cfch ; ba fc 0c ; 0xfa96b pcibios.c:389 + in eax, DX ; 66 ed ; 0xfa96e + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xfa970 + shr eax, 010h ; 66 c1 e8 10 ; 0xfa972 + xchg dx, ax ; 92 ; 0xfa976 + mov word [bp+01ch], ax ; 89 46 1c ; 0xfa977 + mov word [bp+01eh], dx ; 89 56 1e ; 0xfa97a + jmp near 0aa2ch ; e9 ac 00 ; 0xfa97d pcibios.c:390 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa980 pcibios.c:392 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa983 + xor dh, dh ; 30 f6 ; 0xfa986 + and dl, 003h ; 80 e2 03 ; 0xfa988 + add dx, 00cfch ; 81 c2 fc 0c ; 0xfa98b + out DX, AL ; ee ; 0xfa98f + jmp near 0aa2ch ; e9 99 00 ; 0xfa990 pcibios.c:393 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa993 pcibios.c:395 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa996 + xor dh, dh ; 30 f6 ; 0xfa999 + and dl, 002h ; 80 e2 02 ; 0xfa99b + add dx, 00cfch ; 81 c2 fc 0c ; 0xfa99e + out DX, ax ; ef ; 0xfa9a2 + jmp near 0aa2ch ; e9 86 00 ; 0xfa9a3 pcibios.c:396 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa9a6 pcibios.c:398 + mov cx, word [bp+01eh] ; 8b 4e 1e ; 0xfa9a9 + mov dx, 00cfch ; ba fc 0c ; 0xfa9ac + xchg cx, ax ; 91 ; 0xfa9af + sal eax, 010h ; 66 c1 e0 10 ; 0xfa9b0 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa9b4 + out DX, eax ; 66 ef ; 0xfa9b6 + jmp short 0aa2ch ; eb 72 ; 0xfa9b8 pcibios.c:402 + mov bx, word [bp+004h] ; 8b 5e 04 ; 0xfa9ba pcibios.c:404 + mov es, [bp+026h] ; 8e 46 26 ; 0xfa9bd + mov word [bp-008h], bx ; 89 5e f8 ; 0xfa9c0 + mov [bp-006h], es ; 8c 46 fa ; 0xfa9c3 + mov cx, word [0f360h] ; 8b 0e 60 f3 ; 0xfa9c6 pcibios.c:408 + cmp cx, word [es:bx] ; 26 3b 0f ; 0xfa9ca + jbe short 0a9e0h ; 76 11 ; 0xfa9cd + mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa9cf pcibios.c:409 + xor ah, ah ; 30 e4 ; 0xfa9d2 + or ah, 089h ; 80 cc 89 ; 0xfa9d4 + mov word [bp+020h], ax ; 89 46 20 ; 0xfa9d7 + or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xfa9da pcibios.c:410 + jmp short 0a9f4h ; eb 14 ; 0xfa9de pcibios.c:411 + les di, [es:bx+002h] ; 26 c4 7f 02 ; 0xfa9e0 pcibios.c:412 + mov si, 0f180h ; be 80 f1 ; 0xfa9e4 + mov dx, ds ; 8c da ; 0xfa9e7 + push DS ; 1e ; 0xfa9e9 + mov ds, dx ; 8e da ; 0xfa9ea + rep movsb ; f3 a4 ; 0xfa9ec + pop DS ; 1f ; 0xfa9ee + mov word [bp+014h], 00a00h ; c7 46 14 00 0a ; 0xfa9ef pcibios.c:414 + mov ax, word [0f360h] ; a1 60 f3 ; 0xfa9f4 pcibios.c:416 + les bx, [bp-008h] ; c4 5e f8 ; 0xfa9f7 + mov word [es:bx], ax ; 26 89 07 ; 0xfa9fa + jmp short 0aa2ch ; eb 2d ; 0xfa9fd pcibios.c:417 + mov bx, 00e06h ; bb 06 0e ; 0xfa9ff pcibios.c:419 + mov cx, ds ; 8c d9 ; 0xfaa02 + mov ax, strict word 00004h ; b8 04 00 ; 0xfaa04 + call 01a27h ; e8 1d 70 ; 0xfaa07 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xfaa0a + push ax ; 50 ; 0xfaa0d + mov ax, word [bp+020h] ; 8b 46 20 ; 0xfaa0e + push ax ; 50 ; 0xfaa11 + push 00dc2h ; 68 c2 0d ; 0xfaa12 + push strict byte 00004h ; 6a 04 ; 0xfaa15 + call 01a68h ; e8 4e 70 ; 0xfaa17 + add sp, strict byte 00008h ; 83 c4 08 ; 0xfaa1a + mov ax, word [bp+020h] ; 8b 46 20 ; 0xfaa1d pcibios.c:420 + xor ah, ah ; 30 e4 ; 0xfaa20 + or ah, 081h ; 80 cc 81 ; 0xfaa22 + mov word [bp+020h], ax ; 89 46 20 ; 0xfaa25 + or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xfaa28 pcibios.c:421 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfaa2c pcibios.c:423 + pop di ; 5f ; 0xfaa2f + pop si ; 5e ; 0xfaa30 + pop bp ; 5d ; 0xfaa31 + retn ; c3 ; 0xfaa32 + ; disGetNextSymbol 0xfaa33 LB 0x369 -> off=0x0 cb=000000000000002b uValue=00000000000f9433 'pci_find_classcode' +pci_find_classcode: ; 0xfaa33 LB 0x2b + push bp ; 55 ; 0xfaa33 pciutil.c:135 + mov bp, sp ; 89 e5 ; 0xfaa34 + push bx ; 53 ; 0xfaa36 + push cx ; 51 ; 0xfaa37 + push si ; 56 ; 0xfaa38 + mov cx, dx ; 89 d1 ; 0xfaa39 + xor si, si ; 31 f6 ; 0xfaa3b pciutil.c:138 + mov dx, ax ; 89 c2 ; 0xfaa3d + mov ax, 0b103h ; b8 03 b1 ; 0xfaa3f + sal ecx, 010h ; 66 c1 e1 10 ; 0xfaa42 + db 08bh, 0cah + ; mov cx, dx ; 8b ca ; 0xfaa46 + int 01ah ; cd 1a ; 0xfaa48 + cmp ah, 000h ; 80 fc 00 ; 0xfaa4a + je near 0aa54h ; 0f 84 03 00 ; 0xfaa4d + mov bx, strict word 0ffffh ; bb ff ff ; 0xfaa51 + mov ax, bx ; 89 d8 ; 0xfaa54 + lea sp, [bp-006h] ; 8d 66 fa ; 0xfaa56 pciutil.c:142 + pop si ; 5e ; 0xfaa59 + pop cx ; 59 ; 0xfaa5a + pop bx ; 5b ; 0xfaa5b + pop bp ; 5d ; 0xfaa5c + retn ; c3 ; 0xfaa5d + ; disGetNextSymbol 0xfaa5e LB 0x33e -> off=0x0 cb=000000000000001a uValue=00000000000f945e 'pci_find_class_noif' +pci_find_class_noif: ; 0xfaa5e LB 0x1a + push bp ; 55 ; 0xfaa5e pciutil.c:155 + mov bp, sp ; 89 e5 ; 0xfaa5f + push bx ; 53 ; 0xfaa61 + push cx ; 51 ; 0xfaa62 + push dx ; 52 ; 0xfaa63 + push strict byte 00001h ; 6a 01 ; 0xfaa64 pciutil.c:159 + mov cx, strict word 00001h ; b9 01 00 ; 0xfaa66 + xor bx, bx ; 31 db ; 0xfaa69 + xor dx, dx ; 31 d2 ; 0xfaa6b + call 0a759h ; e8 e9 fc ; 0xfaa6d + lea sp, [bp-006h] ; 8d 66 fa ; 0xfaa70 pciutil.c:163 + pop dx ; 5a ; 0xfaa73 + pop cx ; 59 ; 0xfaa74 + pop bx ; 5b ; 0xfaa75 + pop bp ; 5d ; 0xfaa76 + retn ; c3 ; 0xfaa77 + ; disGetNextSymbol 0xfaa78 LB 0x324 -> off=0x0 cb=0000000000000025 uValue=00000000000f9478 'pci_find_device' +pci_find_device: ; 0xfaa78 LB 0x25 + push bp ; 55 ; 0xfaa78 pciutil.c:176 + mov bp, sp ; 89 e5 ; 0xfaa79 + push bx ; 53 ; 0xfaa7b + push cx ; 51 ; 0xfaa7c + push si ; 56 ; 0xfaa7d + mov cx, dx ; 89 d1 ; 0xfaa7e + xor si, si ; 31 f6 ; 0xfaa80 pciutil.c:178 + mov dx, ax ; 89 c2 ; 0xfaa82 + mov ax, 0b102h ; b8 02 b1 ; 0xfaa84 + int 01ah ; cd 1a ; 0xfaa87 + cmp ah, 000h ; 80 fc 00 ; 0xfaa89 + je near 0aa93h ; 0f 84 03 00 ; 0xfaa8c + mov bx, strict word 0ffffh ; bb ff ff ; 0xfaa90 + mov ax, bx ; 89 d8 ; 0xfaa93 + lea sp, [bp-006h] ; 8d 66 fa ; 0xfaa95 pciutil.c:179 + pop si ; 5e ; 0xfaa98 + pop cx ; 59 ; 0xfaa99 + pop bx ; 5b ; 0xfaa9a + pop bp ; 5d ; 0xfaa9b + retn ; c3 ; 0xfaa9c + ; disGetNextSymbol 0xfaa9d LB 0x2ff -> off=0x0 cb=0000000000000024 uValue=00000000000f949d 'pci_read_config_byte' +pci_read_config_byte: ; 0xfaa9d LB 0x24 + push bp ; 55 ; 0xfaa9d pciutil.c:181 + mov bp, sp ; 89 e5 ; 0xfaa9e + push cx ; 51 ; 0xfaaa0 + push di ; 57 ; 0xfaaa1 + movzx di, bl ; 0f b6 fb ; 0xfaaa2 pciutil.c:183 + movzx bx, al ; 0f b6 d8 ; 0xfaaa5 + sal bx, 008h ; c1 e3 08 ; 0xfaaa8 + movzx ax, dl ; 0f b6 c2 ; 0xfaaab + or bx, ax ; 09 c3 ; 0xfaaae + mov ax, 0b108h ; b8 08 b1 ; 0xfaab0 + int 01ah ; cd 1a ; 0xfaab3 + movzx ax, cl ; 0f b6 c1 ; 0xfaab5 + xor dx, dx ; 31 d2 ; 0xfaab8 pciutil.c:184 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfaaba + pop di ; 5f ; 0xfaabd + pop cx ; 59 ; 0xfaabe + pop bp ; 5d ; 0xfaabf + retn ; c3 ; 0xfaac0 + ; disGetNextSymbol 0xfaac1 LB 0x2db -> off=0x0 cb=0000000000000022 uValue=00000000000f94c1 'pci_read_config_word' +pci_read_config_word: ; 0xfaac1 LB 0x22 + push bp ; 55 ; 0xfaac1 pciutil.c:186 + mov bp, sp ; 89 e5 ; 0xfaac2 + push cx ; 51 ; 0xfaac4 + push di ; 57 ; 0xfaac5 + movzx di, bl ; 0f b6 fb ; 0xfaac6 pciutil.c:188 + xor ah, ah ; 30 e4 ; 0xfaac9 + sal ax, 008h ; c1 e0 08 ; 0xfaacb + movzx bx, dl ; 0f b6 da ; 0xfaace + or bx, ax ; 09 c3 ; 0xfaad1 + mov ax, 0b109h ; b8 09 b1 ; 0xfaad3 + int 01ah ; cd 1a ; 0xfaad6 + mov ax, cx ; 89 c8 ; 0xfaad8 + xor dx, dx ; 31 d2 ; 0xfaada pciutil.c:189 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfaadc + pop di ; 5f ; 0xfaadf + pop cx ; 59 ; 0xfaae0 + pop bp ; 5d ; 0xfaae1 + retn ; c3 ; 0xfaae2 + ; disGetNextSymbol 0xfaae3 LB 0x2b9 -> off=0x0 cb=0000000000000027 uValue=00000000000f94e3 'pci_read_config_dword' +pci_read_config_dword: ; 0xfaae3 LB 0x27 + push bp ; 55 ; 0xfaae3 pciutil.c:191 + mov bp, sp ; 89 e5 ; 0xfaae4 + push cx ; 51 ; 0xfaae6 + push di ; 57 ; 0xfaae7 + movzx di, bl ; 0f b6 fb ; 0xfaae8 pciutil.c:194 + movzx bx, al ; 0f b6 d8 ; 0xfaaeb + sal bx, 008h ; c1 e3 08 ; 0xfaaee + movzx ax, dl ; 0f b6 c2 ; 0xfaaf1 + or bx, ax ; 09 c3 ; 0xfaaf4 + mov ax, 0b10ah ; b8 0a b1 ; 0xfaaf6 + int 01ah ; cd 1a ; 0xfaaf9 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfaafb + shr ecx, 010h ; 66 c1 e9 10 ; 0xfaafd + mov dx, cx ; 89 ca ; 0xfab01 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfab03 pciutil.c:199 + pop di ; 5f ; 0xfab06 + pop cx ; 59 ; 0xfab07 + pop bp ; 5d ; 0xfab08 + retn ; c3 ; 0xfab09 + ; disGetNextSymbol 0xfab0a LB 0x292 -> off=0x0 cb=000000000000001c uValue=00000000000f950a 'pci_write_config_word' +pci_write_config_word: ; 0xfab0a LB 0x1c + push bp ; 55 ; 0xfab0a pciutil.c:201 + mov bp, sp ; 89 e5 ; 0xfab0b + push di ; 57 ; 0xfab0d + movzx di, bl ; 0f b6 fb ; 0xfab0e pciutil.c:203 + xor ah, ah ; 30 e4 ; 0xfab11 + sal ax, 008h ; c1 e0 08 ; 0xfab13 + movzx bx, dl ; 0f b6 da ; 0xfab16 + or bx, ax ; 09 c3 ; 0xfab19 + mov ax, 0b10ch ; b8 0c b1 ; 0xfab1b + int 01ah ; cd 1a ; 0xfab1e + lea sp, [bp-002h] ; 8d 66 fe ; 0xfab20 pciutil.c:204 + pop di ; 5f ; 0xfab23 + pop bp ; 5d ; 0xfab24 + retn ; c3 ; 0xfab25 + ; disGetNextSymbol 0xfab26 LB 0x276 -> off=0x0 cb=000000000000001c uValue=00000000000f9526 'pci_write_config_byte' +pci_write_config_byte: ; 0xfab26 LB 0x1c + push bp ; 55 ; 0xfab26 pciutil.c:206 + mov bp, sp ; 89 e5 ; 0xfab27 + push di ; 57 ; 0xfab29 + movzx di, bl ; 0f b6 fb ; 0xfab2a pciutil.c:208 + xor ah, ah ; 30 e4 ; 0xfab2d + sal ax, 008h ; c1 e0 08 ; 0xfab2f + movzx bx, dl ; 0f b6 da ; 0xfab32 + or bx, ax ; 09 c3 ; 0xfab35 + mov ax, 0b10bh ; b8 0b b1 ; 0xfab37 + int 01ah ; cd 1a ; 0xfab3a + lea sp, [bp-002h] ; 8d 66 fe ; 0xfab3c pciutil.c:209 + pop di ; 5f ; 0xfab3f + pop bp ; 5d ; 0xfab40 + retn ; c3 ; 0xfab41 + ; disGetNextSymbol 0xfab42 LB 0x25a -> off=0x0 cb=000000000000002f uValue=00000000000f9542 'pci_write_config_dword' +pci_write_config_dword: ; 0xfab42 LB 0x2f + push bp ; 55 ; 0xfab42 pciutil.c:211 + mov bp, sp ; 89 e5 ; 0xfab43 + push cx ; 51 ; 0xfab45 + push di ; 57 ; 0xfab46 + movzx di, bl ; 0f b6 fb ; 0xfab47 pciutil.c:214 + movzx bx, al ; 0f b6 d8 ; 0xfab4a + mov ax, bx ; 89 d8 ; 0xfab4d + sal ax, 008h ; c1 e0 08 ; 0xfab4f + movzx bx, dl ; 0f b6 da ; 0xfab52 + or bx, ax ; 09 c3 ; 0xfab55 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xfab57 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xfab5a + mov ax, 0b10dh ; b8 0d b1 ; 0xfab5d + sal ecx, 010h ; 66 c1 e1 10 ; 0xfab60 + db 08bh, 0cah + ; mov cx, dx ; 8b ca ; 0xfab64 + int 01ah ; cd 1a ; 0xfab66 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfab68 pciutil.c:219 + pop di ; 5f ; 0xfab6b + pop cx ; 59 ; 0xfab6c + pop bp ; 5d ; 0xfab6d + retn 00004h ; c2 04 00 ; 0xfab6e + ; disGetNextSymbol 0xfab71 LB 0x22b -> off=0x0 cb=000000000000001d uValue=00000000000f9571 'vds_is_present' +vds_is_present: ; 0xfab71 LB 0x1d + push bx ; 53 ; 0xfab71 vds.c:42 + push bp ; 55 ; 0xfab72 + mov bp, sp ; 89 e5 ; 0xfab73 + mov bx, strict word 0007bh ; bb 7b 00 ; 0xfab75 vds.c:46 + mov ax, strict word 00040h ; b8 40 00 ; 0xfab78 + mov es, ax ; 8e c0 ; 0xfab7b + test byte [es:bx], 020h ; 26 f6 07 20 ; 0xfab7d vds.c:47 + je short 0ab89h ; 74 06 ; 0xfab81 + mov ax, strict word 00001h ; b8 01 00 ; 0xfab83 + pop bp ; 5d ; 0xfab86 + pop bx ; 5b ; 0xfab87 + retn ; c3 ; 0xfab88 + xor ax, ax ; 31 c0 ; 0xfab89 + pop bp ; 5d ; 0xfab8b vds.c:48 + pop bx ; 5b ; 0xfab8c + retn ; c3 ; 0xfab8d + ; disGetNextSymbol 0xfab8e LB 0x20e -> off=0x0 cb=000000000000001e uValue=00000000000f958e 'vds_real_to_lin' +vds_real_to_lin: ; 0xfab8e LB 0x1e + push bx ; 53 ; 0xfab8e vds.c:77 + push cx ; 51 ; 0xfab8f + push bp ; 55 ; 0xfab90 + mov bp, sp ; 89 e5 ; 0xfab91 + mov bx, ax ; 89 c3 ; 0xfab93 + mov ax, dx ; 89 d0 ; 0xfab95 + xor dx, dx ; 31 d2 ; 0xfab97 vds.c:79 + mov cx, strict word 00004h ; b9 04 00 ; 0xfab99 + sal ax, 1 ; d1 e0 ; 0xfab9c + rcl dx, 1 ; d1 d2 ; 0xfab9e + loop 0ab9ch ; e2 fa ; 0xfaba0 + xor cx, cx ; 31 c9 ; 0xfaba2 + add ax, bx ; 01 d8 ; 0xfaba4 + adc dx, cx ; 11 ca ; 0xfaba6 + pop bp ; 5d ; 0xfaba8 vds.c:80 + pop cx ; 59 ; 0xfaba9 + pop bx ; 5b ; 0xfabaa + retn ; c3 ; 0xfabab + ; disGetNextSymbol 0xfabac LB 0x1f0 -> off=0x0 cb=0000000000000079 uValue=00000000000f95ac 'vds_build_sg_list' +vds_build_sg_list: ; 0xfabac LB 0x79 + push bp ; 55 ; 0xfabac vds.c:87 + mov bp, sp ; 89 e5 ; 0xfabad + push si ; 56 ; 0xfabaf + push di ; 57 ; 0xfabb0 + mov di, ax ; 89 c7 ; 0xfabb1 + mov si, dx ; 89 d6 ; 0xfabb3 + mov ax, bx ; 89 d8 ; 0xfabb5 + mov dx, cx ; 89 ca ; 0xfabb7 + mov bx, word [bp+004h] ; 8b 5e 04 ; 0xfabb9 vds.c:92 + mov es, si ; 8e c6 ; 0xfabbc + mov word [es:di], bx ; 26 89 1d ; 0xfabbe + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xfabc1 + mov word [es:di+002h], bx ; 26 89 5d 02 ; 0xfabc4 + call 0ab8eh ; e8 c3 ff ; 0xfabc8 vds.c:93 + mov es, si ; 8e c6 ; 0xfabcb + mov word [es:di+004h], ax ; 26 89 45 04 ; 0xfabcd + mov word [es:di+006h], dx ; 26 89 55 06 ; 0xfabd1 + mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00 ; 0xfabd5 vds.c:94 + call 0ab71h ; e8 93 ff ; 0xfabdb vds.c:95 + test ax, ax ; 85 c0 ; 0xfabde + je short 0abf5h ; 74 13 ; 0xfabe0 + mov es, si ; 8e c6 ; 0xfabe2 vds.c:97 + mov ax, 08105h ; b8 05 81 ; 0xfabe4 + mov dx, strict word 00000h ; ba 00 00 ; 0xfabe7 + int 04bh ; cd 4b ; 0xfabea + jc near 0abf2h ; 0f 82 02 00 ; 0xfabec + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfabf0 + cbw ; 98 ; 0xfabf2 + jmp short 0ac1ch ; eb 27 ; 0xfabf3 vds.c:98 + mov es, si ; 8e c6 ; 0xfabf5 vds.c:100 + mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00 ; 0xfabf7 + mov dx, word [es:di+004h] ; 26 8b 55 04 ; 0xfabfd vds.c:101 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xfac01 + mov word [es:di+010h], dx ; 26 89 55 10 ; 0xfac05 + mov word [es:di+012h], ax ; 26 89 45 12 ; 0xfac09 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xfac0d vds.c:102 + mov word [es:di+014h], ax ; 26 89 45 14 ; 0xfac10 + mov ax, bx ; 89 d8 ; 0xfac14 + mov word [es:di+016h], bx ; 26 89 5d 16 ; 0xfac16 + xor ax, bx ; 31 d8 ; 0xfac1a vds.c:103 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfac1c vds.c:106 + pop di ; 5f ; 0xfac1f + pop si ; 5e ; 0xfac20 + pop bp ; 5d ; 0xfac21 + retn 00004h ; c2 04 00 ; 0xfac22 + ; disGetNextSymbol 0xfac25 LB 0x177 -> off=0x0 cb=0000000000000030 uValue=00000000000f9625 'vds_free_sg_list' +vds_free_sg_list: ; 0xfac25 LB 0x30 + push bp ; 55 ; 0xfac25 vds.c:112 + mov bp, sp ; 89 e5 ; 0xfac26 + push bx ; 53 ; 0xfac28 + push di ; 57 ; 0xfac29 + mov bx, ax ; 89 c3 ; 0xfac2a + call 0ab71h ; e8 42 ff ; 0xfac2c vds.c:116 + test ax, ax ; 85 c0 ; 0xfac2f + je short 0ac46h ; 74 13 ; 0xfac31 + mov di, bx ; 89 df ; 0xfac33 vds.c:118 + mov es, dx ; 8e c2 ; 0xfac35 + mov ax, 08106h ; b8 06 81 ; 0xfac37 + mov dx, strict word 00000h ; ba 00 00 ; 0xfac3a + int 04bh ; cd 4b ; 0xfac3d + jc near 0ac45h ; 0f 82 02 00 ; 0xfac3f + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfac43 + cbw ; 98 ; 0xfac45 + mov es, dx ; 8e c2 ; 0xfac46 vds.c:126 + mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00 ; 0xfac48 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfac4e vds.c:128 + pop di ; 5f ; 0xfac51 + pop bx ; 5b ; 0xfac52 + pop bp ; 5d ; 0xfac53 + retn ; c3 ; 0xfac54 + ; disGetNextSymbol 0xfac55 LB 0x147 -> off=0xb cb=0000000000000040 uValue=00000000000f9660 '__U4M' + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h +__U4M: ; 0xfac60 LB 0x40 + pushfw ; 9c ; 0xfac60 __U4M.asm:51 + push eax ; 66 50 ; 0xfac61 __U4M.asm:54 + push edx ; 66 52 ; 0xfac63 __U4M.asm:55 + push ecx ; 66 51 ; 0xfac65 __U4M.asm:56 + rol eax, 010h ; 66 c1 c0 10 ; 0xfac67 __U4M.asm:58 + db 08bh, 0c2h + ; mov ax, dx ; 8b c2 ; 0xfac6b __U4M.asm:59 + ror eax, 010h ; 66 c1 c8 10 ; 0xfac6d __U4M.asm:60 + db 066h, 033h, 0d2h + ; xor edx, edx ; 66 33 d2 ; 0xfac71 __U4M.asm:61 + shr ecx, 010h ; 66 c1 e9 10 ; 0xfac74 __U4M.asm:63 + db 08bh, 0cbh + ; mov cx, bx ; 8b cb ; 0xfac78 __U4M.asm:64 + mul ecx ; 66 f7 e1 ; 0xfac7a __U4M.asm:66 + pop ecx ; 66 59 ; 0xfac7d __U4M.asm:68 + pop edx ; 66 5a ; 0xfac7f __U4M.asm:70 + ror eax, 010h ; 66 c1 c8 10 ; 0xfac81 __U4M.asm:71 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xfac85 __U4M.asm:72 + add sp, strict byte 00002h ; 83 c4 02 ; 0xfac87 __U4M.asm:73 + pop ax ; 58 ; 0xfac8a __U4M.asm:74 + rol eax, 010h ; 66 c1 c0 10 ; 0xfac8b __U4M.asm:75 + popfw ; 9d ; 0xfac8f __U4M.asm:119 + retn ; c3 ; 0xfac90 __U4M.asm:120 + times 0xf db 0 + ; disGetNextSymbol 0xfaca0 LB 0xfc -> off=0x0 cb=0000000000000040 uValue=00000000000f96a0 '__U4D' +__U4D: ; 0xfaca0 LB 0x40 + pushfw ; 9c ; 0xfaca0 __U4D.asm:59 + push eax ; 66 50 ; 0xfaca1 __U4D.asm:62 + push edx ; 66 52 ; 0xfaca3 __U4D.asm:63 + push ecx ; 66 51 ; 0xfaca5 __U4D.asm:64 + rol eax, 010h ; 66 c1 c0 10 ; 0xfaca7 __U4D.asm:66 + db 08bh, 0c2h + ; mov ax, dx ; 8b c2 ; 0xfacab __U4D.asm:67 + ror eax, 010h ; 66 c1 c8 10 ; 0xfacad __U4D.asm:68 + db 066h, 033h, 0d2h + ; xor edx, edx ; 66 33 d2 ; 0xfacb1 __U4D.asm:69 + shr ecx, 010h ; 66 c1 e9 10 ; 0xfacb4 __U4D.asm:71 + db 08bh, 0cbh + ; mov cx, bx ; 8b cb ; 0xfacb8 __U4D.asm:72 + div ecx ; 66 f7 f1 ; 0xfacba __U4D.asm:74 + db 08bh, 0dah + ; mov bx, dx ; 8b da ; 0xfacbd __U4D.asm:76 + pop ecx ; 66 59 ; 0xfacbf __U4D.asm:77 + shr edx, 010h ; 66 c1 ea 10 ; 0xfacc1 __U4D.asm:78 + db 08bh, 0cah + ; mov cx, dx ; 8b ca ; 0xfacc5 __U4D.asm:79 + pop edx ; 66 5a ; 0xfacc7 __U4D.asm:81 + ror eax, 010h ; 66 c1 c8 10 ; 0xfacc9 __U4D.asm:82 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xfaccd __U4D.asm:83 + add sp, strict byte 00002h ; 83 c4 02 ; 0xfaccf __U4D.asm:84 + pop ax ; 58 ; 0xfacd2 __U4D.asm:85 + rol eax, 010h ; 66 c1 c0 10 ; 0xfacd3 __U4D.asm:86 + popfw ; 9d ; 0xfacd7 __U4D.asm:146 + retn ; c3 ; 0xfacd8 __U4D.asm:147 + times 0x7 db 0 + ; disGetNextSymbol 0xface0 LB 0xbc -> off=0x0 cb=0000000000000010 uValue=00000000000f96e0 '__U8RS' +__U8RS: ; 0xface0 LB 0x10 + test si, si ; 85 f6 ; 0xface0 __U8RS.asm:50 + je short 0acefh ; 74 0b ; 0xface2 __U8RS.asm:51 + shr ax, 1 ; d1 e8 ; 0xface4 __U8RS.asm:53 + rcr bx, 1 ; d1 db ; 0xface6 __U8RS.asm:54 + rcr cx, 1 ; d1 d9 ; 0xface8 __U8RS.asm:55 + rcr dx, 1 ; d1 da ; 0xfacea __U8RS.asm:56 + dec si ; 4e ; 0xfacec __U8RS.asm:57 + jne short 0ace4h ; 75 f5 ; 0xfaced __U8RS.asm:58 + retn ; c3 ; 0xfacef __U8RS.asm:60 + ; disGetNextSymbol 0xfacf0 LB 0xac -> off=0x0 cb=0000000000000010 uValue=00000000000f96f0 '__U8LS' +__U8LS: ; 0xfacf0 LB 0x10 + test si, si ; 85 f6 ; 0xfacf0 __U8LS.asm:50 + je short 0acffh ; 74 0b ; 0xfacf2 __U8LS.asm:51 + sal dx, 1 ; d1 e2 ; 0xfacf4 __U8LS.asm:53 + rcl cx, 1 ; d1 d1 ; 0xfacf6 __U8LS.asm:54 + rcl bx, 1 ; d1 d3 ; 0xfacf8 __U8LS.asm:55 + rcl ax, 1 ; d1 d0 ; 0xfacfa __U8LS.asm:56 + dec si ; 4e ; 0xfacfc __U8LS.asm:57 + jne short 0acf4h ; 75 f5 ; 0xfacfd __U8LS.asm:58 + retn ; c3 ; 0xfacff __U8LS.asm:60 + ; disGetNextSymbol 0xfad00 LB 0x9c -> off=0x0 cb=0000000000000010 uValue=00000000000f9700 '_fmemset_' +_fmemset_: ; 0xfad00 LB 0x10 + push di ; 57 ; 0xfad00 fmemset.asm:52 + mov es, dx ; 8e c2 ; 0xfad01 fmemset.asm:54 + db 08bh, 0f8h + ; mov di, ax ; 8b f8 ; 0xfad03 fmemset.asm:55 + xchg al, bl ; 86 d8 ; 0xfad05 fmemset.asm:56 + rep stosb ; f3 aa ; 0xfad07 fmemset.asm:57 + xchg al, bl ; 86 d8 ; 0xfad09 fmemset.asm:58 + pop di ; 5f ; 0xfad0b fmemset.asm:60 + retn ; c3 ; 0xfad0c fmemset.asm:61 + times 0x3 db 0 + ; disGetNextSymbol 0xfad10 LB 0x8c -> off=0x0 cb=000000000000003a uValue=00000000000f9710 '_fmemcpy_' +_fmemcpy_: ; 0xfad10 LB 0x3a + push bp ; 55 ; 0xfad10 fmemcpy.asm:52 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xfad11 fmemcpy.asm:53 + push di ; 57 ; 0xfad13 fmemcpy.asm:54 + push DS ; 1e ; 0xfad14 fmemcpy.asm:55 + push si ; 56 ; 0xfad15 fmemcpy.asm:56 + mov es, dx ; 8e c2 ; 0xfad16 fmemcpy.asm:58 + db 08bh, 0f8h + ; mov di, ax ; 8b f8 ; 0xfad18 fmemcpy.asm:59 + mov ds, cx ; 8e d9 ; 0xfad1a fmemcpy.asm:60 + db 08bh, 0f3h + ; mov si, bx ; 8b f3 ; 0xfad1c fmemcpy.asm:61 + mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfad1e fmemcpy.asm:62 + rep movsb ; f3 a4 ; 0xfad21 fmemcpy.asm:63 + pop si ; 5e ; 0xfad23 fmemcpy.asm:65 + pop DS ; 1f ; 0xfad24 fmemcpy.asm:66 + pop di ; 5f ; 0xfad25 fmemcpy.asm:67 + db 08bh, 0e5h + ; mov sp, bp ; 8b e5 ; 0xfad26 fmemcpy.asm:68 + pop bp ; 5d ; 0xfad28 fmemcpy.asm:69 + retn ; c3 ; 0xfad29 fmemcpy.asm:70 + add byte [bx+si], al ; 00 00 ; 0xfad2a + add byte [bx+si], al ; 00 00 ; 0xfad2c + add byte [bx+si], al ; 00 00 ; 0xfad2e + pushaw ; 60 ; 0xfad30 + lodsw ; ad ; 0xfad31 + bound bp, [di-05293h] ; 62 ad 6d ad ; 0xfad32 + insw ; 6d ; 0xfad36 + lodsw ; ad ; 0xfad37 + insw ; 6d ; 0xfad38 + lodsw ; ad ; 0xfad39 + outsw ; 6f ; 0xfad3a + lodsw ; ad ; 0xfad3b + outsw ; 6f ; 0xfad3c + lodsw ; ad ; 0xfad3d + jno short 0acedh ; 71 ad ; 0xfad3e + jne short 0acefh ; 75 ad ; 0xfad40 + jne short 0acf1h ; 75 ad ; 0xfad42 + jnbe short 0acf3h ; 77 ad ; 0xfad44 + jl short 0acf5h ; 7c ad ; 0xfad46 + jle short 0acf7h ; 7e ad ; 0xfad48 + ; disGetNextSymbol 0xfad4a LB 0x52 -> off=0x0 cb=0000000000000041 uValue=000000000000974a 'apm_worker' +apm_worker: ; 0xfad4a LB 0x41 + sti ; fb ; 0xfad4a apm_pm.asm:66 + push ax ; 50 ; 0xfad4b apm_pm.asm:68 + db 032h, 0e4h + ; xor ah, ah ; 32 e4 ; 0xfad4c apm_pm.asm:69 + sub AL, strict byte 004h ; 2c 04 ; 0xfad4e apm_pm.asm:70 + db 08bh, 0e8h + ; mov bp, ax ; 8b e8 ; 0xfad50 apm_pm.asm:71 + sal bp, 1 ; d1 e5 ; 0xfad52 apm_pm.asm:72 + cmp AL, strict byte 00dh ; 3c 0d ; 0xfad54 apm_pm.asm:73 + pop ax ; 58 ; 0xfad56 apm_pm.asm:74 + mov AH, strict byte 053h ; b4 53 ; 0xfad57 apm_pm.asm:75 + jnc short 0ad87h ; 73 2c ; 0xfad59 apm_pm.asm:76 + jmp word [cs:bp-052d0h] ; 2e ff a6 30 ad ; 0xfad5b apm_pm.asm:78 + jmp short 0ad85h ; eb 23 ; 0xfad60 apm_pm.asm:81 + push CS ; 0e ; 0xfad62 apm_pm.asm:90 + pop ax ; 58 ; 0xfad63 apm_pm.asm:91 + test ax, strict word 00003h ; a9 03 00 ; 0xfad64 apm_pm.asm:92 + jne short 0ad85h ; 75 1c ; 0xfad67 apm_pm.asm:93 + sti ; fb ; 0xfad69 apm_pm.asm:94 + hlt ; f4 ; 0xfad6a apm_pm.asm:95 + jmp short 0ad85h ; eb 18 ; 0xfad6b apm_pm.asm:96 + jmp short 0ad85h ; eb 16 ; 0xfad6d apm_pm.asm:105 + jmp short 0ad87h ; eb 16 ; 0xfad6f apm_pm.asm:111 + mov AH, strict byte 080h ; b4 80 ; 0xfad71 apm_pm.asm:114 + jmp short 0ad89h ; eb 14 ; 0xfad73 apm_pm.asm:115 + jmp short 0ad87h ; eb 10 ; 0xfad75 apm_pm.asm:120 + mov ax, 00102h ; b8 02 01 ; 0xfad77 apm_pm.asm:123 + jmp short 0ad85h ; eb 09 ; 0xfad7a apm_pm.asm:124 + jmp short 0ad85h ; eb 07 ; 0xfad7c apm_pm.asm:128 + mov BL, strict byte 000h ; b3 00 ; 0xfad7e apm_pm.asm:131 + mov cx, strict word 00000h ; b9 00 00 ; 0xfad80 apm_pm.asm:132 + jmp short 0ad85h ; eb 00 ; 0xfad83 apm_pm.asm:133 + clc ; f8 ; 0xfad85 apm_pm.asm:136 + retn ; c3 ; 0xfad86 apm_pm.asm:137 + mov AH, strict byte 009h ; b4 09 ; 0xfad87 apm_pm.asm:140 + stc ; f9 ; 0xfad89 apm_pm.asm:143 + retn ; c3 ; 0xfad8a apm_pm.asm:144 + ; disGetNextSymbol 0xfad8b LB 0x11 -> off=0x0 cb=0000000000000011 uValue=00000000000f978b 'apm_pm16_entry' +apm_pm16_entry: ; 0xfad8b LB 0x11 + mov AH, strict byte 002h ; b4 02 ; 0xfad8b apm_pm.asm:156 + push DS ; 1e ; 0xfad8d apm_pm.asm:162 + push bp ; 55 ; 0xfad8e apm_pm.asm:163 + push CS ; 0e ; 0xfad8f apm_pm.asm:165 + pop bp ; 5d ; 0xfad90 apm_pm.asm:166 + add bp, strict byte 00008h ; 83 c5 08 ; 0xfad91 apm_pm.asm:167 + mov ds, bp ; 8e dd ; 0xfad94 apm_pm.asm:168 + call 0ad4ah ; e8 b1 ff ; 0xfad96 apm_pm.asm:170 + pop bp ; 5d ; 0xfad99 apm_pm.asm:172 + pop DS ; 1f ; 0xfad9a apm_pm.asm:173 + retf ; cb ; 0xfad9b apm_pm.asm:175 + + ; Padding 0x2c64 bytes at 0xfad9c + times 11364 db 0 + +section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3d4 class=CODE group=AUTO + ; disGetNextSymbol 0xfda00 LB 0x3d4 -> off=0x0 cb=0000000000000026 uValue=00000000000f0000 'bios32_service' +bios32_service: ; 0xfda00 LB 0x26 + pushfw ; 9c ; 0xfda00 pcibio32.asm:62 + cmp bl, 000h ; 80 fb 00 ; 0xfda01 pcibio32.asm:64 + jne short 0da22h ; 75 1c ; 0xfda04 pcibio32.asm:65 + cmp ax, 05024h ; 3d 24 50 ; 0xfda06 pcibio32.asm:67 + inc bx ; 43 ; 0xfda09 + dec cx ; 49 ; 0xfda0a + mov AL, strict byte 080h ; b0 80 ; 0xfda0b pcibio32.asm:68 + jne short 0da20h ; 75 11 ; 0xfda0d pcibio32.asm:69 + mov bx, strict word 00000h ; bb 00 00 ; 0xfda0f pcibio32.asm:71 + 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:73 + add byte [bx+si], al ; 00 00 ; 0xfda1c + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfda1e pcibio32.asm:74 + popfw ; 9d ; 0xfda20 pcibio32.asm:76 + retf ; cb ; 0xfda21 pcibio32.asm:77 + mov AL, strict byte 081h ; b0 81 ; 0xfda22 pcibio32.asm:80 + jmp short 0da20h ; eb fa ; 0xfda24 pcibio32.asm:81 + ; disGetNextSymbol 0xfda26 LB 0x3ae -> off=0x0 cb=000000000000001a uValue=00000000000f0026 'pcibios32_entry' +pcibios32_entry: ; 0xfda26 LB 0x1a + pushfw ; 9c ; 0xfda26 pcibio32.asm:90 + cld ; fc ; 0xfda27 pcibio32.asm:91 + push ES ; 06 ; 0xfda28 pcibio32.asm:93 + pushaw ; 60 ; 0xfda29 pcibio32.asm:94 + call 0db80h ; e8 53 01 ; 0xfda2a pcibio32.asm:95 + add byte [bx+si], al ; 00 00 ; 0xfda2d + popaw ; 61 ; 0xfda2f pcibio32.asm:96 + pop ES ; 07 ; 0xfda30 pcibio32.asm:97 + popfw ; 9d ; 0xfda31 pcibio32.asm:99 + retf ; cb ; 0xfda32 pcibio32.asm:100 + times 0xd db 0 + ; disGetNextSymbol 0xfda40 LB 0x394 -> off=0x0 cb=0000000000000021 uValue=00000000000f0040 'apm_pm32_entry' +apm_pm32_entry: ; 0xfda40 LB 0x21 + push bp ; 55 ; 0xfda40 apm_pm.asm:200 + mov ebp, cs ; 66 8c cd ; 0xfda41 apm_pm.asm:202 + push ebp ; 66 55 ; 0xfda44 apm_pm.asm:203 + mov bp, 0da5fh ; bd 5f da ; 0xfda46 apm_pm.asm:204 + add byte [bx+si], al ; 00 00 ; 0xfda49 + push ebp ; 66 55 ; 0xfda4b apm_pm.asm:205 + push CS ; 0e ; 0xfda4d apm_pm.asm:207 + pop bp ; 5d ; 0xfda4e apm_pm.asm:208 + add bp, strict byte 00008h ; 83 c5 08 ; 0xfda4f apm_pm.asm:209 + push ebp ; 66 55 ; 0xfda52 apm_pm.asm:210 + mov bp, 0ad8dh ; bd 8d ad ; 0xfda54 apm_pm.asm:212 + add byte [bx+si], al ; 00 00 ; 0xfda57 + push ebp ; 66 55 ; 0xfda59 apm_pm.asm:213 + mov AH, strict byte 003h ; b4 03 ; 0xfda5b apm_pm.asm:215 + db 066h, 0cbh + ; retf ; 66 cb ; 0xfda5d + pop bp ; 5d ; 0xfda5f apm_pm.asm:222 + retf ; cb ; 0xfda60 apm_pm.asm:223 + ; disGetNextSymbol 0xfda61 LB 0x373 -> off=0x0 cb=0000000000000022 uValue=00000000000f0061 'pci32_select_reg_' +pci32_select_reg_: ; 0xfda61 LB 0x22 + push bp ; 55 ; 0xfda61 pci32.c:198 + mov bp, sp ; 89 e5 ; 0xfda62 + push bx ; 53 ; 0xfda64 + and dl, 0fch ; 80 e2 fc ; 0xfda65 pci32.c:200 + 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:201 + pop bx ; 5b ; 0xfda80 + pop bp ; 5d ; 0xfda81 + retn ; c3 ; 0xfda82 + ; disGetNextSymbol 0xfda83 LB 0x351 -> off=0x0 cb=00000000000000ff uValue=00000000000f0083 'pci32_find_device_' +pci32_find_device_: ; 0xfda83 LB 0xff + push bp ; 55 ; 0xfda83 pci32.c:233 + mov bp, sp ; 89 e5 ; 0xfda84 + push si ; 56 ; 0xfda86 + push di ; 57 ; 0xfda87 + sub sp, strict byte 00014h ; 83 ec 14 ; 0xfda88 + push ax ; 50 ; 0xfda8b + mov si, dx ; 89 d6 ; 0xfda8c + mov di, bx ; 89 df ; 0xfda8e + mov word [di-01ch], cx ; 89 4d e4 ; 0xfda90 + test bx, bx ; 85 db ; 0xfda93 pci32.c:243 + xor bx, bx ; 31 db ; 0xfda95 pci32.c:250 + xor cl, cl ; 30 c9 ; 0xfda97 pci32.c:251 + test bl, 007h ; f6 c3 07 ; 0xfda99 pci32.c:261 + jne short 0dad8h ; 75 3a ; 0xfda9c + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfda9e pci32.c:262 + 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:263 + 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-00ch], al ; 88 45 f4 ; 0xfdab3 + cmp AL, strict byte 0ffh ; 3c ff ; 0xfdab6 pci32.c:264 + jne short 0dac2h ; 75 08 ; 0xfdab8 + add bx, strict byte 00008h ; 83 c3 08 ; 0xfdaba pci32.c:265 + jmp near 0db58h ; e9 98 00 ; 0xfdabd pci32.c:266 + add byte [bx+si], al ; 00 00 ; 0xfdac0 + test byte [di-00ch], 080h ; f6 45 f4 80 ; 0xfdac2 pci32.c:268 + je short 0dad1h ; 74 09 ; 0xfdac6 + mov word [di-010h], strict word 00001h ; c7 45 f0 01 00 ; 0xfdac8 pci32.c:269 + add byte [bx+si], al ; 00 00 ; 0xfdacd + jmp short 0dad8h ; eb 07 ; 0xfdacf pci32.c:270 + mov word [di-010h], strict word 00008h ; c7 45 f0 08 00 ; 0xfdad1 pci32.c:271 + add byte [bx+si], al ; 00 00 ; 0xfdad6 + mov al, byte [di-00ch] ; 8a 45 f4 ; 0xfdad8 pci32.c:282 + and AL, strict byte 007h ; 24 07 ; 0xfdadb + cmp AL, strict byte 001h ; 3c 01 ; 0xfdadd + jne short 0db05h ; 75 24 ; 0xfdadf + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdae1 + mov dx, ax ; 89 c2 ; 0xfdae4 + sar dx, 008h ; c1 fa 08 ; 0xfdae6 + test dx, dx ; 85 d2 ; 0xfdae9 + jne short 0db05h ; 75 18 ; 0xfdaeb + mov dx, strict word 0001ah ; ba 1a 00 ; 0xfdaed pci32.c:284 + add byte [bx+si], al ; 00 00 ; 0xfdaf0 + call 0da5fh ; e8 6a ff ; 0xfdaf2 + db 0ffh + db 0ffh + mov dx, 00cfeh ; ba fe 0c ; 0xfdaf7 pci32.c:285 + add byte [bx+si], al ; 00 00 ; 0xfdafa + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdafc + in AL, DX ; ec ; 0xfdafe + cmp al, cl ; 38 c8 ; 0xfdaff pci32.c:286 + jbe short 0db05h ; 76 02 ; 0xfdb01 + mov cl, al ; 88 c1 ; 0xfdb03 pci32.c:287 + test di, di ; 85 ff ; 0xfdb05 pci32.c:291 + je short 0db10h ; 74 07 ; 0xfdb07 + mov ax, strict word 00008h ; b8 08 00 ; 0xfdb09 + add byte [bx+si], al ; 00 00 ; 0xfdb0c + jmp short 0db12h ; eb 02 ; 0xfdb0e + xor ax, ax ; 31 c0 ; 0xfdb10 + db 00fh, 0b7h, 0d0h + ; movzx dx, ax ; 0f b7 d0 ; 0xfdb12 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdb15 + call 0da5fh ; e8 44 ff ; 0xfdb18 + db 0ffh + db 0ffh + mov dx, 00cfch ; ba fc 0c ; 0xfdb1d pci32.c:292 + add byte [bx+si], al ; 00 00 ; 0xfdb20 + in ax, DX ; ed ; 0xfdb22 + mov word [di-014h], ax ; 89 45 ec ; 0xfdb23 + mov word [di-018h], strict word 00000h ; c7 45 e8 00 00 ; 0xfdb26 pci32.c:293 + add byte [bx+si], al ; 00 00 ; 0xfdb2b + test di, di ; 85 ff ; 0xfdb2d pci32.c:296 + je short 0db42h ; 74 11 ; 0xfdb2f + cmp word [di-01ch], strict byte 00000h ; 83 7d e4 00 ; 0xfdb31 pci32.c:297 + je short 0db3ch ; 74 05 ; 0xfdb35 + shr ax, 010h ; c1 e8 10 ; 0xfdb37 pci32.c:298 + jmp short 0db3fh ; eb 03 ; 0xfdb3a pci32.c:299 + shr ax, 008h ; c1 e8 08 ; 0xfdb3c pci32.c:300 + mov word [di-014h], ax ; 89 45 ec ; 0xfdb3f + mov ax, word [di-014h] ; 8b 45 ec ; 0xfdb42 pci32.c:307 + cmp ax, word [di-020h] ; 3b 45 e0 ; 0xfdb45 + je short 0db50h ; 74 06 ; 0xfdb48 + cmp word [di-018h], strict byte 00000h ; 83 7d e8 00 ; 0xfdb4a pci32.c:308 + je short 0db57h ; 74 07 ; 0xfdb4e + dec si ; 4e ; 0xfdb50 + cmp esi, strict byte 0ffffffffh ; 66 83 fe ff ; 0xfdb51 + je short 0db6bh ; 74 14 ; 0xfdb55 + add bx, word [di-010h] ; 03 5d f0 ; 0xfdb57 pci32.c:316 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdb5a pci32.c:317 + sar ax, 008h ; c1 f8 08 ; 0xfdb5d + movzx dx, cl ; 0f b6 d1 ; 0xfdb60 + cmp ax, dx ; 39 d0 ; 0xfdb63 + jle near 0da97h ; 0f 8e 2e ff ; 0xfdb65 + db 0ffh + jmp word [bp-07dh] ; ff 66 83 ; 0xfdb6a + db 0feh + push word [di+005h] ; ff 75 05 ; 0xfdb6e + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdb71 + jmp short 0db7bh ; eb 05 ; 0xfdb74 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xfdb76 + add byte [bx+si], al ; 00 00 ; 0xfdb79 + lea sp, [di-008h] ; 8d 65 f8 ; 0xfdb7b pci32.c:324 + pop di ; 5f ; 0xfdb7e + pop si ; 5e ; 0xfdb7f + pop bp ; 5d ; 0xfdb80 + retn ; c3 ; 0xfdb81 + ; disGetNextSymbol 0xfdb82 LB 0x252 -> off=0x0 cb=0000000000000252 uValue=00000000000f0182 '_pci32_function' +_pci32_function: ; 0xfdb82 LB 0x252 + push bp ; 55 ; 0xfdb82 pci32.c:326 + mov bp, sp ; 89 e5 ; 0xfdb83 + push bx ; 53 ; 0xfdb85 + push si ; 56 ; 0xfdb86 + push di ; 57 ; 0xfdb87 + push ax ; 50 ; 0xfdb88 + and dword [di+024h], strict dword 0658100ffh ; 66 81 65 24 ff 00 81 65 ; 0xfdb89 pci32.c:333 + sub AL, strict byte 0feh ; 2c fe ; 0xfdb91 + inc word [bx+si] ; ff 00 ; 0xfdb93 + add byte [bp+di+02445h], cl ; 00 8b 45 24 ; 0xfdb95 + xor ah, ah ; 30 e4 ; 0xfdb99 + cmp eax, strict dword 029720003h ; 66 3d 03 00 72 29 ; 0xfdb9b + jbe near 0dc40h ; 0f 86 9b 00 ; 0xfdba1 + add byte [bx+si], al ; 00 00 ; 0xfdba5 + cmp eax, strict dword 0840f000eh ; 66 3d 0e 00 0f 84 ; 0xfdba7 + lodsw ; ad ; 0xfdbad + add word [bx+si], ax ; 01 00 ; 0xfdbae + add byte [bp+03dh], ah ; 00 66 3d ; 0xfdbb0 + or byte [bx+si], al ; 08 00 ; 0xfdbb3 + jc near 0ddbah ; 0f 82 01 02 ; 0xfdbb5 + add byte [bx+si], al ; 00 00 ; 0xfdbb9 + cmp eax, strict dword 0860f000dh ; 66 3d 0d 00 0f 86 ; 0xfdbbb + lodsb ; ac ; 0xfdbc1 + add byte [bx+si], al ; 00 00 ; 0xfdbc2 + add cl, ch ; 00 e9 ; 0xfdbc4 + repne add word [bx+si], ax ; f2 01 00 ; 0xfdbc6 + add byte [bp+03dh], ah ; 00 66 3d ; 0xfdbc9 + add al, byte [bx+si] ; 02 00 ; 0xfdbcc + je short 0dbf8h ; 74 28 ; 0xfdbce + cmp eax, strict dword 0850f0001h ; 66 3d 01 00 0f 85 ; 0xfdbd0 + loop 0dbd9h ; e2 01 ; 0xfdbd6 + add byte [bx+si], al ; 00 00 ; 0xfdbd8 + mov dword [di+024h], strict dword 0c7660001h ; 66 c7 45 24 01 00 66 c7 ; 0xfdbda pci32.c:338 + inc bp ; 45 ; 0xfdbe2 + sbb byte [bx+si], dl ; 18 10 ; 0xfdbe3 + add dh, byte [bx+di] ; 02 31 ; 0xfdbe5 + sal byte [bp-077h], 045h ; c0 66 89 45 ; 0xfdbe7 + and bh, al ; 20 c7 ; 0xfdbeb + inc bp ; 45 ; 0xfdbed + sbb AL, strict byte 050h ; 1c 50 ; 0xfdbee + inc bx ; 43 ; 0xfdbf0 + dec cx ; 49 ; 0xfdbf1 + and cl, ch ; 20 e9 ; 0xfdbf2 + aam 001h ; d4 01 ; 0xfdbf4 + add byte [bx+si], al ; 00 00 ; 0xfdbf6 + cmp dword [di+01ch], strict byte 0ffffffffh ; 66 83 7d 1c ff ; 0xfdbf8 pci32.c:348 + jne short 0dc0ch ; 75 0d ; 0xfdbfd + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbff pci32.c:349 + xor ah, ah ; 30 e4 ; 0xfdc02 + or ah, 083h ; 80 cc 83 ; 0xfdc04 + jmp near 0ddc2h ; e9 b8 01 ; 0xfdc07 pci32.c:350 + add byte [bx+si], al ; 00 00 ; 0xfdc0a + xor cx, cx ; 31 c9 ; 0xfdc0c pci32.c:352 + xor bx, bx ; 31 db ; 0xfdc0e + db 00fh, 0b7h, 055h, 00ch + ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc10 + db 00fh, 0b7h, 045h, 020h + ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdc14 + sal ax, 010h ; c1 e0 10 ; 0xfdc18 + db 00fh, 0b7h, 075h, 01ch + ; movzx si, [di+01ch] ; 0f b7 75 1c ; 0xfdc1b + or ax, si ; 09 f0 ; 0xfdc1f + call 0da81h ; e8 5d fe ; 0xfdc21 + db 0ffh + jmp word [bp+03dh] ; ff 66 3d ; 0xfdc25 + db 0ffh + push word [di+00dh] ; ff 75 0d ; 0xfdc29 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc2c pci32.c:354 + xor ah, ah ; 30 e4 ; 0xfdc2f + or ah, 086h ; 80 cc 86 ; 0xfdc31 + jmp near 0ddc2h ; e9 8b 01 ; 0xfdc34 + add byte [bx+si], al ; 00 00 ; 0xfdc37 + mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc39 pci32.c:355 + jmp near 0ddcah ; e9 8a 01 ; 0xfdc3d pci32.c:360 + add byte [bx+si], al ; 00 00 ; 0xfdc40 + db 00fh, 0b7h, 055h, 00ch + ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc42 pci32.c:362 + mov ax, word [di+020h] ; 8b 45 20 ; 0xfdc46 + xor cx, cx ; 31 c9 ; 0xfdc49 + mov bx, strict word 00001h ; bb 01 00 ; 0xfdc4b + add byte [bx+si], al ; 00 00 ; 0xfdc4e + call 0da81h ; e8 2e fe ; 0xfdc50 + db 0ffh + jmp word [bp+03dh] ; ff 66 3d ; 0xfdc54 + db 0ffh + push word [di+00dh] ; ff 75 0d ; 0xfdc58 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc5b pci32.c:364 + xor ah, ah ; 30 e4 ; 0xfdc5e + or ah, 086h ; 80 cc 86 ; 0xfdc60 + jmp near 0ddc2h ; e9 5c 01 ; 0xfdc63 pci32.c:365 + add byte [bx+si], al ; 00 00 ; 0xfdc66 + mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc68 pci32.c:367 + jmp near 0ddcah ; e9 5b 01 ; 0xfdc6c pci32.c:369 + add byte [bx+si], al ; 00 00 ; 0xfdc6f + cmp dword [di+008h], strict dword 00d720100h ; 66 81 7d 08 00 01 72 0d ; 0xfdc71 pci32.c:376 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc79 pci32.c:377 + xor ah, ah ; 30 e4 ; 0xfdc7c + or ah, 087h ; 80 cc 87 ; 0xfdc7e + jmp near 0ddc2h ; e9 3e 01 ; 0xfdc81 pci32.c:378 + add byte [bx+si], al ; 00 00 ; 0xfdc84 + db 00fh, 0b7h, 055h, 008h + ; movzx dx, [di+008h] ; 0f b7 55 08 ; 0xfdc86 pci32.c:380 + db 00fh, 0b7h, 045h, 018h + ; movzx ax, [di+018h] ; 0f b7 45 18 ; 0xfdc8a + call 0da5fh ; e8 ce fd ; 0xfdc8e + db 0ffh + dec word [bp+di+02445h] ; ff 8b 45 24 ; 0xfdc92 + xor ah, ah ; 30 e4 ; 0xfdc96 + cmp eax, strict dword 02172000ah ; 66 3d 0a 00 72 21 ; 0xfdc98 + jbe short 0dd0fh ; 76 6f ; 0xfdc9e + cmp eax, strict dword 0840f000dh ; 66 3d 0d 00 0f 84 ; 0xfdca0 + test ax, strict word 00000h ; a9 00 00 ; 0xfdca6 + add byte [bp+03dh], ah ; 00 66 3d ; 0xfdca9 + or AL, strict byte 000h ; 0c 00 ; 0xfdcac + je near 0dd35h ; 0f 84 83 00 ; 0xfdcae + add byte [bx+si], al ; 00 00 ; 0xfdcb2 + cmp eax, strict dword 06374000bh ; 66 3d 0b 00 74 63 ; 0xfdcb4 + jmp near 0ddcah ; e9 0d 01 ; 0xfdcba + add byte [bx+si], al ; 00 00 ; 0xfdcbd + cmp eax, strict dword 02d740009h ; 66 3d 09 00 74 2d ; 0xfdcbf + cmp eax, strict dword 0850f0008h ; 66 3d 08 00 0f 85 ; 0xfdcc5 + std ; fd ; 0xfdccb + add byte [bx+si], al ; 00 00 ; 0xfdccc + add byte [bp+di+0205dh], cl ; 00 8b 5d 20 ; 0xfdcce + xor bl, bl ; 30 db ; 0xfdcd2 + mov ax, word [di+008h] ; 8b 45 08 ; 0xfdcd4 + xor ah, ah ; 30 e4 ; 0xfdcd7 + and AL, strict byte 003h ; 24 03 ; 0xfdcd9 + db 00fh, 0b7h, 0d0h + ; movzx dx, ax ; 0f b7 d0 ; 0xfdcdb + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcde + add byte [bx+si], al ; 00 00 ; 0xfdce2 + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdce4 + in AL, DX ; ec ; 0xfdce6 + or bx, ax ; 09 c3 ; 0xfdce7 + mov dword [di+020h], ebx ; 66 89 5d 20 ; 0xfdce9 + jmp near 0ddcah ; e9 da 00 ; 0xfdced pci32.c:384 + add byte [bx+si], al ; 00 00 ; 0xfdcf0 + mov ax, word [di+008h] ; 8b 45 08 ; 0xfdcf2 pci32.c:386 + xor ah, ah ; 30 e4 ; 0xfdcf5 + and AL, strict byte 002h ; 24 02 ; 0xfdcf7 + db 00fh, 0b7h, 0d0h + ; movzx dx, ax ; 0f b7 d0 ; 0xfdcf9 + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcfc + add byte [bx+si], al ; 00 00 ; 0xfdd00 + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdd02 + in eax, DX ; 66 ed ; 0xfdd04 + mov dword [di+020h], eax ; 66 89 45 20 ; 0xfdd06 + jmp near 0ddcah ; e9 bd 00 ; 0xfdd0a pci32.c:387 + add byte [bx+si], al ; 00 00 ; 0xfdd0d + mov dx, 00cfch ; ba fc 0c ; 0xfdd0f pci32.c:389 + add byte [bx+si], al ; 00 00 ; 0xfdd12 + in ax, DX ; ed ; 0xfdd14 + mov word [di+020h], ax ; 89 45 20 ; 0xfdd15 + jmp near 0ddcah ; e9 af 00 ; 0xfdd18 pci32.c:390 + add byte [bx+si], al ; 00 00 ; 0xfdd1b + mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd1d pci32.c:392 + mov dx, word [di+008h] ; 8b 55 08 ; 0xfdd20 + xor dh, dh ; 30 f6 ; 0xfdd23 + and dl, 003h ; 80 e2 03 ; 0xfdd25 + db 00fh, 0b7h, 0d2h + ; movzx dx, dx ; 0f b7 d2 ; 0xfdd28 + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdd2b + add byte [bx+si], al ; 00 00 ; 0xfdd2f + out DX, AL ; ee ; 0xfdd31 + jmp near 0ddcah ; e9 95 00 ; 0xfdd32 pci32.c:393 + add byte [bx+si], al ; 00 00 ; 0xfdd35 + db 00fh, 0b7h, 045h, 020h + ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdd37 pci32.c:395 + mov dx, word [di+008h] ; 8b 55 08 ; 0xfdd3b + xor dh, dh ; 30 f6 ; 0xfdd3e + and dl, 002h ; 80 e2 02 ; 0xfdd40 + db 00fh, 0b7h, 0d2h + ; movzx dx, dx ; 0f b7 d2 ; 0xfdd43 + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdd46 + add byte [bx+si], al ; 00 00 ; 0xfdd4a + out DX, eax ; 66 ef ; 0xfdd4c + jmp near 0ddcah ; e9 79 00 ; 0xfdd4e pci32.c:396 + add byte [bx+si], al ; 00 00 ; 0xfdd51 + mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd53 pci32.c:398 + mov dx, 00cfch ; ba fc 0c ; 0xfdd56 + add byte [bx+si], al ; 00 00 ; 0xfdd59 + out DX, ax ; ef ; 0xfdd5b + jmp short 0ddcch ; eb 6e ; 0xfdd5c pci32.c:402 + db 00fh, 0b7h, 045h, 008h + ; movzx ax, [di+008h] ; 0f b7 45 08 ; 0xfdd5e pci32.c:404 + mov es, [di+028h] ; 8e 45 28 ; 0xfdd62 + mov [di-010h], es ; 8c 45 f0 ; 0xfdd65 + mov bx, ax ; 89 c3 ; 0xfdd68 + mov edx, dword [di] ; 66 8b 15 ; 0xfdd6a pci32.c:408 + pushaw ; 60 ; 0xfdd6d + rep add byte [bx+si], al ; f3 00 00 ; 0xfdd6e + db 066h, 026h, 03bh, 010h + ; cmp edx, dword [es:bx+si] ; 66 26 3b 10 ; 0xfdd71 + jbe short 0dd89h ; 76 12 ; 0xfdd75 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd77 pci32.c:409 + xor ah, ah ; 30 e4 ; 0xfdd7a + or ah, 089h ; 80 cc 89 ; 0xfdd7c + mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd7f + or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd83 pci32.c:410 + jmp short 0ddadh ; eb 24 ; 0xfdd87 pci32.c:411 + db 00fh, 0b7h, 0cah + ; movzx cx, dx ; 0f b7 ca ; 0xfdd89 pci32.c:412 + db 066h, 026h, 08bh, 078h, 006h + ; mov edi, dword [es:bx+si+006h] ; 66 26 8b 78 06 ; 0xfdd8c + mov ax, word [es:bx+si+002h] ; 26 8b 40 02 ; 0xfdd91 + mov dx, ds ; 8c da ; 0xfdd95 + mov si, 0f180h ; be 80 f1 ; 0xfdd97 + add byte [bx+si], al ; 00 00 ; 0xfdd9a + mov es, di ; 8e c7 ; 0xfdd9c + mov di, ax ; 89 c7 ; 0xfdd9e + push DS ; 1e ; 0xfdda0 + db 066h, 08eh, 0dah + ; mov ds, edx ; 66 8e da ; 0xfdda1 + rep movsb ; f3 a4 ; 0xfdda4 + pop DS ; 1f ; 0xfdda6 + mov dword [di+018h], strict dword 0a1660a00h ; 66 c7 45 18 00 0a 66 a1 ; 0xfdda7 pci32.c:414 + pushaw ; 60 ; 0xfddaf + rep add byte [bx+si], al ; f3 00 00 ; 0xfddb0 + mov es, [di-010h] ; 8e 45 f0 ; 0xfddb3 + db 066h, 026h, 089h, 003h + ; mov dword [es:bp+di], eax ; 66 26 89 03 ; 0xfddb6 + jmp short 0ddcch ; eb 10 ; 0xfddba pci32.c:417 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfddbc pci32.c:420 + xor ah, ah ; 30 e4 ; 0xfddbf + or ah, 081h ; 80 cc 81 ; 0xfddc1 + mov dword [di+024h], eax ; 66 89 45 24 ; 0xfddc4 + or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfddc8 pci32.c:421 + lea sp, [di-00ch] ; 8d 65 f4 ; 0xfddcc pci32.c:423 + pop di ; 5f ; 0xfddcf + pop si ; 5e ; 0xfddd0 + pop bx ; 5b ; 0xfddd1 + pop bp ; 5d ; 0xfddd2 + retn ; c3 ; 0xfddd3 + +section BIOS32CONST progbits vstart=0xddd4 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP + +section BIOS32CONST2 progbits vstart=0xddd4 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP + +section BIOS32_DATA progbits vstart=0xddd4 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP + + ; Padding 0x22c bytes at 0xfddd4 + times 556 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:247 + out strict byte 0a0h, AL ; e6 a0 ; 0xfe032 orgs.asm:248 + ; 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:250 + out strict byte 020h, AL ; e6 20 ; 0xfe036 orgs.asm:251 + retn ; c3 ; 0xfe038 orgs.asm:252 + ; 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:259 + mov word [bx+002h], dx ; 89 57 02 ; 0xfe03b orgs.asm:260 + add bx, strict byte 00004h ; 83 c3 04 ; 0xfe03e orgs.asm:261 + loop 0e039h ; e2 f6 ; 0xfe041 orgs.asm:262 + retn ; c3 ; 0xfe043 orgs.asm:263 + ; 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:271 + mov AL, strict byte 020h ; b0 20 ; 0xfe046 orgs.asm:272 + out strict byte 020h, AL ; e6 20 ; 0xfe048 orgs.asm:273 + ; 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:276 + mov ds, ax ; 8e d8 ; 0xfe04d orgs.asm:277 + jmp far [word 00067h] ; ff 2e 67 00 ; 0xfe04f orgs.asm:278 + ; 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:287 + smsw ax ; 0f 01 e0 ; 0xfe05c orgs.asm:293 + test ax, strict word 00001h ; a9 01 00 ; 0xfe05f orgs.asm:294 + je short 0e06ah ; 74 06 ; 0xfe062 orgs.asm:295 + mov AL, strict byte 001h ; b0 01 ; 0xfe064 orgs.asm:304 + out strict byte 092h, AL ; e6 92 ; 0xfe066 orgs.asm:305 + jmp short 0e068h ; eb fe ; 0xfe068 orgs.asm:306 + mov AL, strict byte 00fh ; b0 0f ; 0xfe06a orgs.asm:311 + out strict byte 070h, AL ; e6 70 ; 0xfe06c orgs.asm:312 + in AL, strict byte 071h ; e4 71 ; 0xfe06e orgs.asm:313 + xchg ah, al ; 86 c4 ; 0xfe070 orgs.asm:316 + in AL, strict byte 064h ; e4 64 ; 0xfe072 orgs.asm:320 + test AL, strict byte 004h ; a8 04 ; 0xfe074 orgs.asm:321 + je short 0e08bh ; 74 13 ; 0xfe076 orgs.asm:322 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfe078 orgs.asm:325 + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xfe07a orgs.asm:326 + jne short 0e08bh ; 75 0d ; 0xfe07c orgs.asm:327 + mov ds, [cs:0e053h] ; 2e 8e 1e 53 e0 ; 0xfe07e orgs.asm:333 + cmp word [word 00072h], 01234h ; 81 3e 72 00 34 12 ; 0xfe083 orgs.asm:334 + jne short 0e064h ; 75 d9 ; 0xfe089 orgs.asm:335 + mov AL, strict byte 00fh ; b0 0f ; 0xfe08b orgs.asm:339 + out strict byte 070h, AL ; e6 70 ; 0xfe08d orgs.asm:340 + mov AL, strict byte 000h ; b0 00 ; 0xfe08f orgs.asm:341 + out strict byte 071h, AL ; e6 71 ; 0xfe091 orgs.asm:342 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfe093 orgs.asm:346 + cmp AL, strict byte 009h ; 3c 09 ; 0xfe095 orgs.asm:347 + je short 0e0abh ; 74 12 ; 0xfe097 orgs.asm:348 + cmp AL, strict byte 00ah ; 3c 0a ; 0xfe099 orgs.asm:349 + je short 0e0abh ; 74 0e ; 0xfe09b orgs.asm:350 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfe09d orgs.asm:352 + out strict byte 00dh, AL ; e6 0d ; 0xfe09f orgs.asm:355 + out strict byte 0dah, AL ; e6 da ; 0xfe0a1 orgs.asm:356 + mov AL, strict byte 0c0h ; b0 c0 ; 0xfe0a3 orgs.asm:359 + out strict byte 0d6h, AL ; e6 d6 ; 0xfe0a5 orgs.asm:360 + mov AL, strict byte 000h ; b0 00 ; 0xfe0a7 orgs.asm:361 + out strict byte 0d4h, AL ; e6 d4 ; 0xfe0a9 orgs.asm:362 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfe0ab orgs.asm:366 + cmp AL, strict byte 000h ; 3c 00 ; 0xfe0ad orgs.asm:367 + je short 0e0c9h ; 74 18 ; 0xfe0af orgs.asm:368 + cmp AL, strict byte 00dh ; 3c 0d ; 0xfe0b1 orgs.asm:370 + jnc short 0e0c9h ; 73 14 ; 0xfe0b3 orgs.asm:371 + cmp AL, strict byte 009h ; 3c 09 ; 0xfe0b5 orgs.asm:372 + jne short 0e0bch ; 75 03 ; 0xfe0b7 orgs.asm:373 + jmp near 0e363h ; e9 a7 02 ; 0xfe0b9 orgs.asm:374 + mov sp, 00400h ; bc 00 04 ; 0xfe0bc orgs.asm:377 + cmp AL, strict byte 005h ; 3c 05 ; 0xfe0bf orgs.asm:379 + je short 0e044h ; 74 81 ; 0xfe0c1 orgs.asm:380 + cmp AL, strict byte 00ah ; 3c 0a ; 0xfe0c3 orgs.asm:382 + je short 0e04ah ; 74 83 ; 0xfe0c5 orgs.asm:383 + jmp short 0e0c9h ; eb 00 ; 0xfe0c7 orgs.asm:387 + ; disGetNextSymbol 0xfe0c9 LB 0x1f37 -> off=0x0 cb=00000000000001f5 uValue=00000000000f00c9 'normal_post' +normal_post: ; 0xfe0c9 LB 0x1f5 + mov ax, 07800h ; b8 00 78 ; 0xfe0c9 orgs.asm:396 + db 08bh, 0e0h + ; mov sp, ax ; 8b e0 ; 0xfe0cc orgs.asm:397 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe0ce orgs.asm:398 + mov ds, ax ; 8e d8 ; 0xfe0d0 orgs.asm:399 + mov ss, ax ; 8e d0 ; 0xfe0d2 orgs.asm:400 + mov es, ax ; 8e c0 ; 0xfe0d4 orgs.asm:404 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xfe0d6 orgs.asm:405 + cld ; fc ; 0xfe0d8 orgs.asm:406 + mov cx, 00239h ; b9 39 02 ; 0xfe0d9 orgs.asm:407 + rep stosw ; f3 ab ; 0xfe0dc orgs.asm:408 + inc di ; 47 ; 0xfe0de orgs.asm:409 + inc di ; 47 ; 0xfe0df orgs.asm:410 + mov cx, 005c6h ; b9 c6 05 ; 0xfe0e0 orgs.asm:411 + rep stosw ; f3 ab ; 0xfe0e3 orgs.asm:412 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe0e5 orgs.asm:416 + add bx, 01000h ; 81 c3 00 10 ; 0xfe0e7 orgs.asm:418 + cmp bx, 09000h ; 81 fb 00 90 ; 0xfe0eb orgs.asm:419 + jnc short 0e0fch ; 73 0b ; 0xfe0ef orgs.asm:420 + mov es, bx ; 8e c3 ; 0xfe0f1 orgs.asm:421 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xfe0f3 orgs.asm:422 + mov cx, 08000h ; b9 00 80 ; 0xfe0f5 orgs.asm:423 + rep stosw ; f3 ab ; 0xfe0f8 orgs.asm:424 + jmp short 0e0e7h ; eb eb ; 0xfe0fa orgs.asm:425 + mov es, bx ; 8e c3 ; 0xfe0fc orgs.asm:427 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xfe0fe orgs.asm:428 + mov cx, 07ff8h ; b9 f8 7f ; 0xfe100 orgs.asm:429 + rep stosw ; f3 ab ; 0xfe103 orgs.asm:430 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe105 orgs.asm:431 + push CS ; 0e ; 0xfe107 orgs.asm:113 + pop DS ; 1f ; 0xfe108 orgs.asm:114 + cld ; fc ; 0xfe109 orgs.asm:115 + call 01874h ; e8 67 37 ; 0xfe10a orgs.asm:435 + call 0e8e7h ; e8 d7 07 ; 0xfe10d orgs.asm:438 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe110 orgs.asm:442 + mov ds, bx ; 8e db ; 0xfe112 orgs.asm:443 + mov cx, strict word 00060h ; b9 60 00 ; 0xfe114 orgs.asm:444 + mov ax, 0ff53h ; b8 53 ff ; 0xfe117 orgs.asm:445 + mov dx, 0f000h ; ba 00 f0 ; 0xfe11a orgs.asm:446 + call 0e039h ; e8 19 ff ; 0xfe11d orgs.asm:447 + mov bx, 001a0h ; bb a0 01 ; 0xfe120 orgs.asm:452 + mov cx, strict word 00010h ; b9 10 00 ; 0xfe123 orgs.asm:453 + call 0e039h ; e8 10 ff ; 0xfe126 orgs.asm:454 + mov AL, strict byte 016h ; b0 16 ; 0xfe129 orgs.asm:457 + out strict byte 070h, AL ; e6 70 ; 0xfe12b orgs.asm:458 + in AL, strict byte 071h ; e4 71 ; 0xfe12d orgs.asm:459 + db 08ah, 0e0h + ; mov ah, al ; 8a e0 ; 0xfe12f orgs.asm:460 + mov AL, strict byte 015h ; b0 15 ; 0xfe131 orgs.asm:461 + out strict byte 070h, AL ; e6 70 ; 0xfe133 orgs.asm:462 + in AL, strict byte 071h ; e4 71 ; 0xfe135 orgs.asm:463 + sub ax, strict byte 00001h ; 83 e8 01 ; 0xfe137 orgs.asm:464 + mov word [00413h], ax ; a3 13 04 ; 0xfe13a orgs.asm:465 + mov ax, 0e9cch ; b8 cc e9 ; 0xfe13d orgs.asm:104 + mov word [00018h], ax ; a3 18 00 ; 0xfe140 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe143 orgs.asm:106 + mov word [0001ah], ax ; a3 1a 00 ; 0xfe146 orgs.asm:107 + mov ax, 0f84dh ; b8 4d f8 ; 0xfe149 orgs.asm:104 + mov word [00044h], ax ; a3 44 00 ; 0xfe14c orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe14f orgs.asm:106 + mov word [00046h], ax ; a3 46 00 ; 0xfe152 orgs.asm:107 + mov ax, 0f841h ; b8 41 f8 ; 0xfe155 orgs.asm:104 + mov word [00048h], ax ; a3 48 00 ; 0xfe158 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe15b orgs.asm:106 + mov word [0004ah], ax ; a3 4a 00 ; 0xfe15e orgs.asm:107 + mov ax, 0f859h ; b8 59 f8 ; 0xfe161 orgs.asm:104 + mov word [00054h], ax ; a3 54 00 ; 0xfe164 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe167 orgs.asm:106 + mov word [00056h], ax ; a3 56 00 ; 0xfe16a orgs.asm:107 + mov ax, 0efd4h ; b8 d4 ef ; 0xfe16d orgs.asm:104 + mov word [0005ch], ax ; a3 5c 00 ; 0xfe170 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe173 orgs.asm:106 + mov word [0005eh], ax ; a3 5e 00 ; 0xfe176 orgs.asm:107 + mov ax, 0f0a4h ; b8 a4 f0 ; 0xfe179 orgs.asm:104 + mov word [00060h], ax ; a3 60 00 ; 0xfe17c orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe17f orgs.asm:106 + mov word [00062h], ax ; a3 62 00 ; 0xfe182 orgs.asm:107 + mov ax, 0e6f2h ; b8 f2 e6 ; 0xfe185 orgs.asm:104 + mov word [00064h], ax ; a3 64 00 ; 0xfe188 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe18b orgs.asm:106 + mov word [00066h], ax ; a3 66 00 ; 0xfe18e orgs.asm:107 + mov ax, 0efedh ; b8 ed ef ; 0xfe191 orgs.asm:104 + mov word [00070h], ax ; a3 70 00 ; 0xfe194 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe197 orgs.asm:106 + mov word [00072h], ax ; a3 72 00 ; 0xfe19a orgs.asm:107 + call 0e778h ; e8 d8 05 ; 0xfe19d orgs.asm:481 + call 0f126h ; e8 83 0f ; 0xfe1a0 orgs.asm:485 + call 0f151h ; e8 ab 0f ; 0xfe1a3 orgs.asm:486 + mov ax, 0fe6eh ; b8 6e fe ; 0xfe1a6 orgs.asm:104 + mov word [00068h], ax ; a3 68 00 ; 0xfe1a9 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1ac orgs.asm:106 + mov word [0006ah], ax ; a3 6a 00 ; 0xfe1af orgs.asm:107 + mov ax, 0fea5h ; b8 a5 fe ; 0xfe1b2 orgs.asm:104 + mov word [00020h], ax ; a3 20 00 ; 0xfe1b5 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1b8 orgs.asm:106 + mov word [00022h], ax ; a3 22 00 ; 0xfe1bb orgs.asm:107 + mov AL, strict byte 034h ; b0 34 ; 0xfe1be orgs.asm:492 + out strict byte 043h, AL ; e6 43 ; 0xfe1c0 orgs.asm:493 + mov AL, strict byte 000h ; b0 00 ; 0xfe1c2 orgs.asm:494 + out strict byte 040h, AL ; e6 40 ; 0xfe1c4 orgs.asm:495 + out strict byte 040h, AL ; e6 40 ; 0xfe1c6 orgs.asm:496 + mov ax, 0f065h ; b8 65 f0 ; 0xfe1c8 orgs.asm:104 + mov word [00040h], ax ; a3 40 00 ; 0xfe1cb orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1ce orgs.asm:106 + mov word [00042h], ax ; a3 42 00 ; 0xfe1d1 orgs.asm:107 + mov ax, 0e987h ; b8 87 e9 ; 0xfe1d4 orgs.asm:104 + mov word [00024h], ax ; a3 24 00 ; 0xfe1d7 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1da orgs.asm:106 + mov word [00026h], ax ; a3 26 00 ; 0xfe1dd orgs.asm:107 + mov ax, 0e82eh ; b8 2e e8 ; 0xfe1e0 orgs.asm:104 + mov word [00058h], ax ; a3 58 00 ; 0xfe1e3 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1e6 orgs.asm:106 + mov word [0005ah], ax ; a3 5a 00 ; 0xfe1e9 orgs.asm:107 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe1ec orgs.asm:505 + mov ds, ax ; 8e d8 ; 0xfe1ee orgs.asm:506 + mov AL, strict byte 010h ; b0 10 ; 0xfe1f0 orgs.asm:507 + mov byte [00496h], AL ; a2 96 04 ; 0xfe1f2 orgs.asm:508 + mov bx, strict word 0001eh ; bb 1e 00 ; 0xfe1f5 orgs.asm:510 + mov word [0041ah], bx ; 89 1e 1a 04 ; 0xfe1f8 orgs.asm:511 + mov word [0041ch], bx ; 89 1e 1c 04 ; 0xfe1fc orgs.asm:512 + mov word [00480h], bx ; 89 1e 80 04 ; 0xfe200 orgs.asm:513 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xfe204 orgs.asm:514 + mov word [00482h], bx ; 89 1e 82 04 ; 0xfe207 orgs.asm:515 + mov AL, strict byte 014h ; b0 14 ; 0xfe20b orgs.asm:518 + out strict byte 070h, AL ; e6 70 ; 0xfe20d orgs.asm:519 + in AL, strict byte 071h ; e4 71 ; 0xfe20f orgs.asm:520 + mov byte [00410h], AL ; a2 10 04 ; 0xfe211 orgs.asm:521 + push DS ; 1e ; 0xfe214 orgs.asm:523 + push CS ; 0e ; 0xfe215 orgs.asm:113 + pop DS ; 1f ; 0xfe216 orgs.asm:114 + cld ; fc ; 0xfe217 orgs.asm:115 + mov ax, 0c000h ; b8 00 c0 ; 0xfe218 orgs.asm:528 + mov dx, 0c800h ; ba 00 c8 ; 0xfe21b orgs.asm:529 + call 01600h ; e8 df 33 ; 0xfe21e orgs.asm:530 + call 04e4bh ; e8 27 6c ; 0xfe221 orgs.asm:533 + pop DS ; 1f ; 0xfe224 orgs.asm:534 + mov ax, 0ff53h ; b8 53 ff ; 0xfe225 orgs.asm:104 + mov word [0003ch], ax ; a3 3c 00 ; 0xfe228 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe22b orgs.asm:106 + mov word [0003eh], ax ; a3 3e 00 ; 0xfe22e orgs.asm:107 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe231 orgs.asm:538 + mov ds, ax ; 8e d8 ; 0xfe233 orgs.asm:539 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe235 orgs.asm:540 + mov CL, strict byte 014h ; b1 14 ; 0xfe237 orgs.asm:541 + mov dx, 00378h ; ba 78 03 ; 0xfe239 orgs.asm:542 + call 0ecedh ; e8 ae 0a ; 0xfe23c orgs.asm:543 + mov dx, 00278h ; ba 78 02 ; 0xfe23f orgs.asm:544 + call 0ecedh ; e8 a8 0a ; 0xfe242 orgs.asm:545 + sal bx, 00eh ; c1 e3 0e ; 0xfe245 orgs.asm:210 + mov ax, word [00410h] ; a1 10 04 ; 0xfe248 orgs.asm:547 + and ax, 03fffh ; 25 ff 3f ; 0xfe24b orgs.asm:548 + db 00bh, 0c3h + ; or ax, bx ; 0b c3 ; 0xfe24e orgs.asm:549 + mov word [00410h], ax ; a3 10 04 ; 0xfe250 orgs.asm:550 + mov ax, 0e746h ; b8 46 e7 ; 0xfe253 orgs.asm:104 + mov word [0002ch], ax ; a3 2c 00 ; 0xfe256 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe259 orgs.asm:106 + mov word [0002eh], ax ; a3 2e 00 ; 0xfe25c orgs.asm:107 + mov ax, 0e746h ; b8 46 e7 ; 0xfe25f orgs.asm:104 + mov word [00030h], ax ; a3 30 00 ; 0xfe262 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe265 orgs.asm:106 + mov word [00032h], ax ; a3 32 00 ; 0xfe268 orgs.asm:107 + mov ax, 0e739h ; b8 39 e7 ; 0xfe26b orgs.asm:104 + mov word [00050h], ax ; a3 50 00 ; 0xfe26e orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe271 orgs.asm:106 + mov word [00052h], ax ; a3 52 00 ; 0xfe274 orgs.asm:107 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe277 orgs.asm:556 + mov CL, strict byte 00ah ; b1 0a ; 0xfe279 orgs.asm:557 + mov dx, 003f8h ; ba f8 03 ; 0xfe27b orgs.asm:558 + call 0ed0bh ; e8 8a 0a ; 0xfe27e orgs.asm:559 + mov dx, 002f8h ; ba f8 02 ; 0xfe281 orgs.asm:560 + call 0ed0bh ; e8 84 0a ; 0xfe284 orgs.asm:561 + mov dx, 003e8h ; ba e8 03 ; 0xfe287 orgs.asm:562 + call 0ed0bh ; e8 7e 0a ; 0xfe28a orgs.asm:563 + mov dx, 002e8h ; ba e8 02 ; 0xfe28d orgs.asm:564 + call 0ed0bh ; e8 78 0a ; 0xfe290 orgs.asm:565 + sal bx, 009h ; c1 e3 09 ; 0xfe293 orgs.asm:210 + mov ax, word [00410h] ; a1 10 04 ; 0xfe296 orgs.asm:567 + and ax, 0f1ffh ; 25 ff f1 ; 0xfe299 orgs.asm:568 + db 00bh, 0c3h + ; or ax, bx ; 0b c3 ; 0xfe29c orgs.asm:569 + mov word [00410h], ax ; a3 10 04 ; 0xfe29e orgs.asm:570 + mov ax, 0ff53h ; b8 53 ff ; 0xfe2a1 orgs.asm:104 + mov word [00128h], ax ; a3 28 01 ; 0xfe2a4 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2a7 orgs.asm:106 + mov word [0012ah], ax ; a3 2a 01 ; 0xfe2aa orgs.asm:107 + mov ax, 0f8f9h ; b8 f9 f8 ; 0xfe2ad orgs.asm:104 + mov word [001c0h], ax ; a3 c0 01 ; 0xfe2b0 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2b3 orgs.asm:106 + mov word [001c2h], ax ; a3 c2 01 ; 0xfe2b6 orgs.asm:107 + call 0edbfh ; e8 03 0b ; 0xfe2b9 orgs.asm:576 + jmp short 0e303h ; eb 45 ; 0xfe2bc orgs.asm:578 + ; disGetNextSymbol 0xfe2be LB 0x1d42 -> off=0x0 cb=0000000000000005 uValue=00000000000f02be 'biosorg_check_before_or_at_0E2C1h' +biosorg_check_before_or_at_0E2C1h: ; 0xfe2be LB 0x5 + add byte [bx+si], al ; 00 00 ; 0xfe2be + add byte [bx+si+04dh], bl ; 00 58 4d ; 0xfe2c0 + ; disGetNextSymbol 0xfe2c3 LB 0x1d3d -> off=0x0 cb=0000000000000007 uValue=00000000000f02c3 'nmi' +nmi: ; 0xfe2c3 LB 0x7 + push CS ; 0e ; 0xfe2c3 orgs.asm:113 + pop DS ; 1f ; 0xfe2c4 orgs.asm:114 + cld ; fc ; 0xfe2c5 orgs.asm:115 + call 01835h ; e8 6c 35 ; 0xfe2c6 orgs.asm:587 + iret ; cf ; 0xfe2c9 orgs.asm:588 + ; 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:591 + call 0e030h ; e8 61 fd ; 0xfe2cc orgs.asm:592 + int 002h ; cd 02 ; 0xfe2cf orgs.asm:593 + iret ; cf ; 0xfe2d1 orgs.asm:594 + ; 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:599 + mov ds, ax ; 8e d8 ; 0xfe2d4 orgs.asm:600 + mov byte [00474h], AL ; a2 74 04 ; 0xfe2d6 orgs.asm:602 + mov byte [00477h], AL ; a2 77 04 ; 0xfe2d9 orgs.asm:603 + mov byte [0048ch], AL ; a2 8c 04 ; 0xfe2dc orgs.asm:604 + mov byte [0048dh], AL ; a2 8d 04 ; 0xfe2df orgs.asm:605 + mov byte [0048eh], AL ; a2 8e 04 ; 0xfe2e2 orgs.asm:606 + mov AL, strict byte 0c0h ; b0 c0 ; 0xfe2e5 orgs.asm:607 + mov byte [00476h], AL ; a2 76 04 ; 0xfe2e7 orgs.asm:608 + mov ax, 0e3feh ; b8 fe e3 ; 0xfe2ea orgs.asm:104 + mov word [0004ch], ax ; a3 4c 00 ; 0xfe2ed orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2f0 orgs.asm:106 + mov word [0004eh], ax ; a3 4e 00 ; 0xfe2f3 orgs.asm:107 + mov ax, 0f8e7h ; b8 e7 f8 ; 0xfe2f6 orgs.asm:104 + mov word [001d8h], ax ; a3 d8 01 ; 0xfe2f9 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2fc orgs.asm:106 + mov word [001dah], ax ; a3 da 01 ; 0xfe2ff orgs.asm:107 + retn ; c3 ; 0xfe302 orgs.asm:613 + mov ax, 0f8bch ; b8 bc f8 ; 0xfe303 orgs.asm:104 + mov word [001d0h], ax ; a3 d0 01 ; 0xfe306 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe309 orgs.asm:106 + mov word [001d2h], ax ; a3 d2 01 ; 0xfe30c orgs.asm:107 + mov ax, 0e2cah ; b8 ca e2 ; 0xfe30f orgs.asm:104 + mov word [001d4h], ax ; a3 d4 01 ; 0xfe312 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe315 orgs.asm:106 + mov word [001d6h], ax ; a3 d6 01 ; 0xfe318 orgs.asm:107 + call 0e753h ; e8 35 04 ; 0xfe31b orgs.asm:625 + push CS ; 0e ; 0xfe31e orgs.asm:113 + pop DS ; 1f ; 0xfe31f orgs.asm:114 + cld ; fc ; 0xfe320 orgs.asm:115 + pushad ; 66 60 ; 0xfe321 orgs.asm:632 + call 016a6h ; e8 80 33 ; 0xfe323 orgs.asm:633 + popad ; 66 61 ; 0xfe326 orgs.asm:634 + call 01da5h ; e8 7a 3a ; 0xfe328 orgs.asm:639 + call 022c4h ; e8 96 3f ; 0xfe32b orgs.asm:640 + sti ; fb ; 0xfe32e orgs.asm:647 + call 093e4h ; e8 b2 b0 ; 0xfe32f orgs.asm:648 + cli ; fa ; 0xfe332 orgs.asm:649 + call 0835ch ; e8 26 a0 ; 0xfe333 orgs.asm:654 + call 0ed2fh ; e8 f6 09 ; 0xfe336 orgs.asm:658 + call 0e2d2h ; e8 96 ff ; 0xfe339 orgs.asm:661 + push CS ; 0e ; 0xfe33c orgs.asm:113 + pop DS ; 1f ; 0xfe33d orgs.asm:114 + cld ; fc ; 0xfe33e orgs.asm:115 + mov ax, 0c800h ; b8 00 c8 ; 0xfe33f orgs.asm:665 + mov dx, 0f000h ; ba 00 f0 ; 0xfe342 orgs.asm:666 + call 01600h ; e8 b8 32 ; 0xfe345 orgs.asm:667 + db 066h, 033h, 0c0h + ; xor eax, eax ; 66 33 c0 ; 0xfe348 orgs.asm:674 + db 066h, 033h, 0dbh + ; xor ebx, ebx ; 66 33 db ; 0xfe34b orgs.asm:675 + db 066h, 033h, 0c9h + ; xor ecx, ecx ; 66 33 c9 ; 0xfe34e orgs.asm:676 + db 066h, 033h, 0d2h + ; xor edx, edx ; 66 33 d2 ; 0xfe351 orgs.asm:677 + call 01894h ; e8 3d 35 ; 0xfe354 orgs.asm:681 + call 03c95h ; e8 3b 59 ; 0xfe357 orgs.asm:684 + sti ; fb ; 0xfe35a orgs.asm:687 + int 019h ; cd 19 ; 0xfe35b orgs.asm:688 + sti ; fb ; 0xfe35d orgs.asm:690 + hlt ; f4 ; 0xfe35e orgs.asm:692 + jmp short 0e35eh ; eb fd ; 0xfe35f orgs.asm:693 + cli ; fa ; 0xfe361 orgs.asm:694 + hlt ; f4 ; 0xfe362 orgs.asm:695 + mov ax, strict word 00040h ; b8 40 00 ; 0xfe363 orgs.asm:704 + mov ds, ax ; 8e d8 ; 0xfe366 orgs.asm:705 + mov ss, [word 00069h] ; 8e 16 69 00 ; 0xfe368 orgs.asm:707 + mov sp, word [word 00067h] ; 8b 26 67 00 ; 0xfe36c orgs.asm:708 + in AL, strict byte 092h ; e4 92 ; 0xfe370 orgs.asm:710 + and AL, strict byte 0fdh ; 24 fd ; 0xfe372 orgs.asm:711 + out strict byte 092h, AL ; e6 92 ; 0xfe374 orgs.asm:712 + lidt [cs:0efe7h] ; 2e 0f 01 1e e7 ef ; 0xfe376 orgs.asm:714 + pop DS ; 1f ; 0xfe37c orgs.asm:716 + pop ES ; 07 ; 0xfe37d orgs.asm:717 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xfe37e orgs.asm:719 + in AL, strict byte 080h ; e4 80 ; 0xfe380 orgs.asm:721 + mov byte [bp+00fh], al ; 88 46 0f ; 0xfe382 orgs.asm:722 + db 03ah, 0e0h + ; cmp ah, al ; 3a e0 ; 0xfe385 orgs.asm:724 + popaw ; 61 ; 0xfe387 orgs.asm:726 + sti ; fb ; 0xfe388 orgs.asm:727 + retf 00002h ; ca 02 00 ; 0xfe389 orgs.asm:728 + ; 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:738 + ; disGetNextSymbol 0xfe401 LB 0x1bff -> off=0x0 cb=0000000000000170 uValue=00000000000f0401 'rom_fdpt' +rom_fdpt: ; 0xfe401 LB 0x170 + db 032h, 001h, 004h, 000h, 000h, 080h, 000h, 000h, 000h, 000h, 000h, 000h, 031h, 001h, 011h, 000h + db 067h, 002h, 004h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 067h, 002h, 011h, 000h + db 067h, 002h, 006h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 067h, 002h, 011h, 000h + db 0ach, 003h, 008h, 000h, 000h, 000h, 002h, 000h, 000h, 000h, 000h, 000h, 0ach, 003h, 011h, 000h + db 0ach, 003h, 006h, 000h, 000h, 000h, 002h, 000h, 000h, 000h, 000h, 000h, 0ach, 003h, 011h, 000h + db 067h, 002h, 004h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 067h, 002h, 011h, 000h + db 0ceh, 001h, 008h, 000h, 000h, 000h, 001h, 000h, 000h, 000h, 000h, 000h, 0ffh, 001h, 011h, 000h + db 0ddh, 002h, 005h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 0ddh, 002h, 011h, 000h + db 084h, 003h, 00fh, 000h, 000h, 0ffh, 0ffh, 000h, 008h, 000h, 000h, 000h, 085h, 003h, 011h, 000h + db 034h, 003h, 003h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 034h, 003h, 011h, 000h + db 057h, 003h, 005h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 057h, 003h, 011h, 000h + db 057h, 003h, 007h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 057h, 003h, 011h, 000h + db 032h, 001h, 008h, 000h, 000h, 080h, 000h, 000h, 000h, 000h, 000h, 000h, 03fh, 001h, 011h, 000h + db 0ddh, 002h, 007h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 0ddh, 002h, 011h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 064h, 002h, 004h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 079h, 002h, 011h, 000h + db 0d1h, 003h, 005h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0d1h, 003h, 011h, 000h + db 0d1h, 003h, 007h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 0d1h, 003h, 011h, 000h + db 000h, 004h, 007h, 000h, 000h, 000h, 002h, 000h, 000h, 000h, 000h, 000h, 0ffh, 003h, 011h, 000h + db 0ddh, 002h, 005h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0dch, 002h, 011h, 000h + db 0ddh, 002h, 007h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0dch, 002h, 011h, 000h + db 0ddh, 002h, 005h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0ddh, 002h, 011h, 000h + db 032h, 001h, 004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 050h, 001h, 011h, 000h + ; disGetNextSymbol 0xfe571 LB 0x1a8f -> off=0x0 cb=0000000000000181 uValue=00000000000f0571 'biosorg_check_before_or_at_0E6F0h' +biosorg_check_before_or_at_0E6F0h: ; 0xfe571 LB 0x181 + times 0x17f db 0 + db 'XM' + ; disGetNextSymbol 0xfe6f2 LB 0x190e -> off=0x0 cb=0000000000000003 uValue=00000000000f06f2 'int19_handler' +int19_handler: ; 0xfe6f2 LB 0x3 + jmp near 0f0aeh ; e9 b9 09 ; 0xfe6f2 orgs.asm:795 + ; 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 word [bx+di], ax ; 01 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:868 + push ES ; 06 ; 0xfe73a orgs.asm:869 + pushaw ; 60 ; 0xfe73b orgs.asm:107 + push CS ; 0e ; 0xfe73c orgs.asm:113 + pop DS ; 1f ; 0xfe73d orgs.asm:114 + cld ; fc ; 0xfe73e orgs.asm:115 + call 0633fh ; e8 fd 7b ; 0xfe73f orgs.asm:872 + popaw ; 61 ; 0xfe742 orgs.asm:124 + pop ES ; 07 ; 0xfe743 orgs.asm:874 + pop DS ; 1f ; 0xfe744 orgs.asm:875 + iret ; cf ; 0xfe745 orgs.asm:876 + push DS ; 1e ; 0xfe746 orgs.asm:884 + push ES ; 06 ; 0xfe747 orgs.asm:885 + pushaw ; 60 ; 0xfe748 orgs.asm:107 + push CS ; 0e ; 0xfe749 orgs.asm:113 + pop DS ; 1f ; 0xfe74a orgs.asm:114 + cld ; fc ; 0xfe74b orgs.asm:115 + call 017cbh ; e8 7c 30 ; 0xfe74c orgs.asm:888 + popaw ; 61 ; 0xfe74f orgs.asm:124 + pop ES ; 07 ; 0xfe750 orgs.asm:890 + pop DS ; 1f ; 0xfe751 orgs.asm:891 + iret ; cf ; 0xfe752 orgs.asm:892 + ; 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:897 + out strict byte 020h, AL ; e6 20 ; 0xfe755 orgs.asm:898 + out strict byte 0a0h, AL ; e6 a0 ; 0xfe757 orgs.asm:899 + mov AL, strict byte 008h ; b0 08 ; 0xfe759 orgs.asm:900 + out strict byte 021h, AL ; e6 21 ; 0xfe75b orgs.asm:901 + mov AL, strict byte 070h ; b0 70 ; 0xfe75d orgs.asm:902 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe75f orgs.asm:903 + mov AL, strict byte 004h ; b0 04 ; 0xfe761 orgs.asm:904 + out strict byte 021h, AL ; e6 21 ; 0xfe763 orgs.asm:905 + mov AL, strict byte 002h ; b0 02 ; 0xfe765 orgs.asm:906 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe767 orgs.asm:907 + mov AL, strict byte 001h ; b0 01 ; 0xfe769 orgs.asm:908 + out strict byte 021h, AL ; e6 21 ; 0xfe76b orgs.asm:909 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe76d orgs.asm:910 + mov AL, strict byte 0b8h ; b0 b8 ; 0xfe76f orgs.asm:911 + out strict byte 021h, AL ; e6 21 ; 0xfe771 orgs.asm:912 + mov AL, strict byte 08fh ; b0 8f ; 0xfe773 orgs.asm:913 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe775 orgs.asm:914 + retn ; c3 ; 0xfe777 orgs.asm:915 + ; disGetNextSymbol 0xfe778 LB 0x1888 -> off=0x0 cb=0000000000000057 uValue=00000000000f0778 'ebda_post' +ebda_post: ; 0xfe778 LB 0x57 + mov ax, 0e746h ; b8 46 e7 ; 0xfe778 orgs.asm:104 + mov word [00034h], ax ; a3 34 00 ; 0xfe77b orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe77e orgs.asm:106 + mov word [00036h], ax ; a3 36 00 ; 0xfe781 orgs.asm:107 + mov ax, 0e746h ; b8 46 e7 ; 0xfe784 orgs.asm:104 + mov word [0003ch], ax ; a3 3c 00 ; 0xfe787 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe78a orgs.asm:106 + mov word [0003eh], ax ; a3 3e 00 ; 0xfe78d orgs.asm:107 + mov ax, 0e746h ; b8 46 e7 ; 0xfe790 orgs.asm:104 + mov word [001c8h], ax ; a3 c8 01 ; 0xfe793 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe796 orgs.asm:106 + mov word [001cah], ax ; a3 ca 01 ; 0xfe799 orgs.asm:107 + mov ax, 0e746h ; b8 46 e7 ; 0xfe79c orgs.asm:104 + mov word [001cch], ax ; a3 cc 01 ; 0xfe79f orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe7a2 orgs.asm:106 + mov word [001ceh], ax ; a3 ce 01 ; 0xfe7a5 orgs.asm:107 + mov ax, 0e746h ; b8 46 e7 ; 0xfe7a8 orgs.asm:104 + mov word [001dch], ax ; a3 dc 01 ; 0xfe7ab orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe7ae orgs.asm:106 + mov word [001deh], ax ; a3 de 01 ; 0xfe7b1 orgs.asm:107 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe7b4 orgs.asm:928 + mov ds, ax ; 8e d8 ; 0xfe7b6 orgs.asm:929 + mov ax, word [00413h] ; a1 13 04 ; 0xfe7b8 orgs.asm:930 + mov cx, strict word 00040h ; b9 40 00 ; 0xfe7bb orgs.asm:931 + mul cx ; f7 e1 ; 0xfe7be orgs.asm:932 + mov word [0040eh], ax ; a3 0e 04 ; 0xfe7c0 orgs.asm:934 + mov ds, ax ; 8e d8 ; 0xfe7c3 orgs.asm:936 + mov byte [word 00000h], 001h ; c6 06 00 00 01 ; 0xfe7c5 orgs.asm:937 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe7ca orgs.asm:939 + mov ds, ax ; 8e d8 ; 0xfe7cc orgs.asm:940 + retn ; c3 ; 0xfe7ce orgs.asm:941 + ; disGetNextSymbol 0xfe7cf LB 0x1831 -> off=0x0 cb=000000000000005f uValue=00000000000f07cf 'biosorg_check_before_or_at_0E82Ch' +biosorg_check_before_or_at_0E82Ch: ; 0xfe7cf LB 0x5f + times 0x5d 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:952 + pushfw ; 9c ; 0xfe82f orgs.asm:955 + push ES ; 06 ; 0xfe830 orgs.asm:956 + push DS ; 1e ; 0xfe831 orgs.asm:957 + pushaw ; 60 ; 0xfe832 orgs.asm:107 + cmp ah, 000h ; 80 fc 00 ; 0xfe833 orgs.asm:960 + je short 0e84ah ; 74 12 ; 0xfe836 orgs.asm:961 + cmp ah, 010h ; 80 fc 10 ; 0xfe838 orgs.asm:963 + je short 0e84ah ; 74 0d ; 0xfe83b orgs.asm:964 + push CS ; 0e ; 0xfe83d orgs.asm:113 + pop DS ; 1f ; 0xfe83e orgs.asm:114 + cld ; fc ; 0xfe83f orgs.asm:115 + call 05599h ; e8 56 6d ; 0xfe840 orgs.asm:967 + popaw ; 61 ; 0xfe843 orgs.asm:124 + pop DS ; 1f ; 0xfe844 orgs.asm:969 + pop ES ; 07 ; 0xfe845 orgs.asm:970 + add sp, strict byte 00002h ; 83 c4 02 ; 0xfe846 orgs.asm:971 + iret ; cf ; 0xfe849 orgs.asm:972 + mov bx, strict word 00040h ; bb 40 00 ; 0xfe84a orgs.asm:975 + mov ds, bx ; 8e db ; 0xfe84d orgs.asm:976 + cli ; fa ; 0xfe84f orgs.asm:978 + mov bx, word [word 0001ah] ; 8b 1e 1a 00 ; 0xfe850 orgs.asm:979 + cmp bx, word [word 0001ch] ; 3b 1e 1c 00 ; 0xfe854 orgs.asm:980 + jne short 0e85eh ; 75 04 ; 0xfe858 orgs.asm:981 + sti ; fb ; 0xfe85a orgs.asm:982 + nop ; 90 ; 0xfe85b orgs.asm:983 + jmp short 0e84fh ; eb f1 ; 0xfe85c orgs.asm:991 + push CS ; 0e ; 0xfe85e orgs.asm:113 + pop DS ; 1f ; 0xfe85f orgs.asm:114 + cld ; fc ; 0xfe860 orgs.asm:115 + call 05599h ; e8 35 6d ; 0xfe861 orgs.asm:995 + popaw ; 61 ; 0xfe864 orgs.asm:124 + pop DS ; 1f ; 0xfe865 orgs.asm:997 + pop ES ; 07 ; 0xfe866 orgs.asm:998 + add sp, strict byte 00002h ; 83 c4 02 ; 0xfe867 orgs.asm:999 + iret ; cf ; 0xfe86a orgs.asm:1007 + ; disGetNextSymbol 0xfe86b LB 0x1795 -> off=0x0 cb=000000000000001b uValue=00000000000f086b 'pmode_enter' +pmode_enter: ; 0xfe86b LB 0x1b + push CS ; 0e ; 0xfe86b orgs.asm:40 + pop DS ; 1f ; 0xfe86c orgs.asm:41 + lgdt [cs:0e899h] ; 2e 0f 01 16 99 e8 ; 0xfe86d orgs.asm:43 + mov eax, cr0 ; 0f 20 c0 ; 0xfe873 orgs.asm:44 + or AL, strict byte 001h ; 0c 01 ; 0xfe876 orgs.asm:45 + mov cr0, eax ; 0f 22 c0 ; 0xfe878 orgs.asm:46 + jmp far 00020h:0e880h ; ea 80 e8 20 00 ; 0xfe87b + mov ax, strict word 00018h ; b8 18 00 ; 0xfe880 orgs.asm:52 + mov ds, ax ; 8e d8 ; 0xfe883 orgs.asm:53 + retn ; c3 ; 0xfe885 orgs.asm:54 + ; 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:61 + mov ds, ax ; 8e d8 ; 0xfe889 orgs.asm:62 + mov eax, cr0 ; 0f 20 c0 ; 0xfe88b orgs.asm:64 + and AL, strict byte 0feh ; 24 fe ; 0xfe88e orgs.asm:65 + mov cr0, eax ; 0f 22 c0 ; 0xfe890 orgs.asm:66 + jmp far 0f000h:0e898h ; ea 98 e8 00 f0 ; 0xfe893 orgs.asm:68 + retn ; c3 ; 0xfe898 orgs.asm:70 + ; 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:41 + push esi ; 66 56 ; 0xfe8e9 orgs.asm:42 + pushfw ; 9c ; 0xfe8eb orgs.asm:43 + cli ; fa ; 0xfe8ec orgs.asm:44 + call 0e86bh ; e8 7b ff ; 0xfe8ed orgs.asm:45 + mov eax, cr0 ; 0f 20 c0 ; 0xfe8f0 orgs.asm:47 + and eax, strict dword 09fffffffh ; 66 25 ff ff ff 9f ; 0xfe8f3 orgs.asm:48 + mov cr0, eax ; 0f 22 c0 ; 0xfe8f9 orgs.asm:49 + mov esi, strict dword 0fee000f0h ; 66 be f0 00 e0 fe ; 0xfe8fc orgs.asm:51 + mov eax, strict dword 00000010fh ; 66 b8 0f 01 00 00 ; 0xfe902 orgs.asm:52 + mov dword [esi], eax ; 67 66 89 06 ; 0xfe908 orgs.asm:53 + mov esi, strict dword 0fee00350h ; 66 be 50 03 e0 fe ; 0xfe90c orgs.asm:55 + mov eax, dword [esi] ; 67 66 8b 06 ; 0xfe912 orgs.asm:56 + and eax, strict dword 0fffe00ffh ; 66 25 ff 00 fe ff ; 0xfe916 orgs.asm:57 + or ah, 007h ; 80 cc 07 ; 0xfe91c orgs.asm:58 + mov dword [esi], eax ; 67 66 89 06 ; 0xfe91f orgs.asm:59 + mov esi, strict dword 0fee00360h ; 66 be 60 03 e0 fe ; 0xfe923 orgs.asm:61 + mov eax, dword [esi] ; 67 66 8b 06 ; 0xfe929 orgs.asm:62 + and eax, strict dword 0fffe00ffh ; 66 25 ff 00 fe ff ; 0xfe92d orgs.asm:63 + or ah, 004h ; 80 cc 04 ; 0xfe933 orgs.asm:64 + mov dword [esi], eax ; 67 66 89 06 ; 0xfe936 orgs.asm:65 + call 0e886h ; e8 49 ff ; 0xfe93a orgs.asm:67 + popfw ; 9d ; 0xfe93d orgs.asm:68 + pop esi ; 66 5e ; 0xfe93e orgs.asm:69 + pop eax ; 66 58 ; 0xfe940 orgs.asm:70 + retn ; c3 ; 0xfe942 orgs.asm:72 + ; 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:1024 + push ax ; 50 ; 0xfe988 orgs.asm:1025 + mov AL, strict byte 0adh ; b0 ad ; 0xfe989 orgs.asm:1026 + out strict byte 064h, AL ; e6 64 ; 0xfe98b orgs.asm:1027 + in AL, strict byte 060h ; e4 60 ; 0xfe98d orgs.asm:1029 + push DS ; 1e ; 0xfe98f orgs.asm:1030 + pushaw ; 60 ; 0xfe990 orgs.asm:107 + cld ; fc ; 0xfe991 orgs.asm:1032 + mov AH, strict byte 04fh ; b4 4f ; 0xfe992 orgs.asm:1034 + stc ; f9 ; 0xfe994 orgs.asm:1035 + int 015h ; cd 15 ; 0xfe995 orgs.asm:1036 + jnc short 0e9c0h ; 73 27 ; 0xfe997 orgs.asm:1037 + sti ; fb ; 0xfe999 orgs.asm:1039 + cmp AL, strict byte 0e0h ; 3c e0 ; 0xfe99a orgs.asm:1042 + jne short 0e9a9h ; 75 0b ; 0xfe99c orgs.asm:1043 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe99e orgs.asm:1044 + mov ds, ax ; 8e d8 ; 0xfe9a0 orgs.asm:1045 + or byte [00496h], 002h ; 80 0e 96 04 02 ; 0xfe9a2 orgs.asm:1046 + jmp short 0e9c0h ; eb 17 ; 0xfe9a7 orgs.asm:1047 + cmp AL, strict byte 0e1h ; 3c e1 ; 0xfe9a9 orgs.asm:1050 + jne short 0e9b8h ; 75 0b ; 0xfe9ab orgs.asm:1051 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe9ad orgs.asm:1052 + mov ds, ax ; 8e d8 ; 0xfe9af orgs.asm:1053 + or byte [00496h], 001h ; 80 0e 96 04 01 ; 0xfe9b1 orgs.asm:1054 + jmp short 0e9c0h ; eb 08 ; 0xfe9b6 orgs.asm:1055 + push ES ; 06 ; 0xfe9b8 orgs.asm:1058 + push CS ; 0e ; 0xfe9b9 orgs.asm:113 + pop DS ; 1f ; 0xfe9ba orgs.asm:114 + cld ; fc ; 0xfe9bb orgs.asm:115 + call 0513dh ; e8 7e 67 ; 0xfe9bc orgs.asm:1060 + pop ES ; 07 ; 0xfe9bf orgs.asm:1061 + popaw ; 61 ; 0xfe9c0 orgs.asm:124 + pop DS ; 1f ; 0xfe9c1 orgs.asm:1065 + cli ; fa ; 0xfe9c2 orgs.asm:1066 + call 0e034h ; e8 6e f6 ; 0xfe9c3 orgs.asm:1067 + mov AL, strict byte 0aeh ; b0 ae ; 0xfe9c6 orgs.asm:1069 + out strict byte 064h, AL ; e6 64 ; 0xfe9c8 orgs.asm:1070 + pop ax ; 58 ; 0xfe9ca orgs.asm:1071 + iret ; cf ; 0xfe9cb orgs.asm:1072 + pushaw ; 60 ; 0xfe9cc orgs.asm:107 + push ES ; 06 ; 0xfe9cd orgs.asm:1081 + push DS ; 1e ; 0xfe9ce orgs.asm:1082 + push CS ; 0e ; 0xfe9cf orgs.asm:113 + pop DS ; 1f ; 0xfe9d0 orgs.asm:114 + cld ; fc ; 0xfe9d1 orgs.asm:115 + call 06cc9h ; e8 f4 82 ; 0xfe9d2 orgs.asm:1084 + pop DS ; 1f ; 0xfe9d5 orgs.asm:1085 + pop ES ; 07 ; 0xfe9d6 orgs.asm:1086 + popaw ; 61 ; 0xfe9d7 orgs.asm:124 + iret ; cf ; 0xfe9d8 orgs.asm:1088 + ; 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:1095 + ; 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:1104 + jc short 0ec71h ; 72 11 ; 0xfec5e orgs.asm:1105 + cmp ah, 04dh ; 80 fc 4d ; 0xfec60 orgs.asm:1107 + jnbe short 0ec71h ; 77 0c ; 0xfec63 orgs.asm:1108 + pushaw ; 60 ; 0xfec65 orgs.asm:107 + push ES ; 06 ; 0xfec66 orgs.asm:1111 + push DS ; 1e ; 0xfec67 orgs.asm:1112 + push CS ; 0e ; 0xfec68 orgs.asm:113 + pop DS ; 1f ; 0xfec69 orgs.asm:114 + cld ; fc ; 0xfec6a orgs.asm:115 + push 0ece9h ; 68 e9 ec ; 0xfec6b orgs.asm:93 + jmp near 03cd8h ; e9 67 50 ; 0xfec6e orgs.asm:94 + push ES ; 06 ; 0xfec71 orgs.asm:1120 + push ax ; 50 ; 0xfec72 orgs.asm:1121 + push bx ; 53 ; 0xfec73 orgs.asm:1122 + push cx ; 51 ; 0xfec74 orgs.asm:1123 + push dx ; 52 ; 0xfec75 orgs.asm:1124 + call 03cach ; e8 33 50 ; 0xfec76 orgs.asm:1127 + cmp AL, strict byte 000h ; 3c 00 ; 0xfec79 orgs.asm:1128 + je short 0ecabh ; 74 2e ; 0xfec7b orgs.asm:1129 + call 03cc2h ; e8 42 50 ; 0xfec7d orgs.asm:1132 + pop dx ; 5a ; 0xfec80 orgs.asm:1133 + push dx ; 52 ; 0xfec81 orgs.asm:1134 + db 03ah, 0c2h + ; cmp al, dl ; 3a c2 ; 0xfec82 orgs.asm:1135 + jne short 0ec97h ; 75 11 ; 0xfec84 orgs.asm:1136 + pop dx ; 5a ; 0xfec86 orgs.asm:1138 + pop cx ; 59 ; 0xfec87 orgs.asm:1139 + pop bx ; 5b ; 0xfec88 orgs.asm:1140 + pop ax ; 58 ; 0xfec89 orgs.asm:1141 + pop ES ; 07 ; 0xfec8a orgs.asm:1142 + pushaw ; 60 ; 0xfec8b orgs.asm:107 + push ES ; 06 ; 0xfec8c orgs.asm:1145 + push DS ; 1e ; 0xfec8d orgs.asm:1146 + push CS ; 0e ; 0xfec8e orgs.asm:113 + pop DS ; 1f ; 0xfec8f orgs.asm:114 + cld ; fc ; 0xfec90 orgs.asm:115 + push 0ece9h ; 68 e9 ec ; 0xfec91 orgs.asm:93 + jmp near 0437dh ; e9 e6 56 ; 0xfec94 orgs.asm:94 + and dl, 0e0h ; 80 e2 e0 ; 0xfec97 orgs.asm:1152 + db 03ah, 0c2h + ; cmp al, dl ; 3a c2 ; 0xfec9a orgs.asm:1153 + jne short 0ecabh ; 75 0d ; 0xfec9c orgs.asm:1154 + pop dx ; 5a ; 0xfec9e orgs.asm:1156 + pop cx ; 59 ; 0xfec9f orgs.asm:1157 + pop bx ; 5b ; 0xfeca0 orgs.asm:1158 + pop ax ; 58 ; 0xfeca1 orgs.asm:1159 + pop ES ; 07 ; 0xfeca2 orgs.asm:1160 + push ax ; 50 ; 0xfeca3 orgs.asm:1162 + push cx ; 51 ; 0xfeca4 orgs.asm:1163 + push dx ; 52 ; 0xfeca5 orgs.asm:1164 + push bx ; 53 ; 0xfeca6 orgs.asm:1165 + db 0feh, 0cah + ; dec dl ; fe ca ; 0xfeca7 orgs.asm:1167 + jmp short 0ecb4h ; eb 09 ; 0xfeca9 orgs.asm:1168 + pop dx ; 5a ; 0xfecab orgs.asm:1171 + pop cx ; 59 ; 0xfecac orgs.asm:1172 + pop bx ; 5b ; 0xfecad orgs.asm:1173 + pop ax ; 58 ; 0xfecae orgs.asm:1174 + pop ES ; 07 ; 0xfecaf orgs.asm:1175 + ; disGetNextSymbol 0xfecb0 LB 0x1350 -> off=0x0 cb=0000000000000004 uValue=00000000000f0cb0 'int13_noeltorito' +int13_noeltorito: ; 0xfecb0 LB 0x4 + push ax ; 50 ; 0xfecb0 orgs.asm:1178 + push cx ; 51 ; 0xfecb1 orgs.asm:1179 + push dx ; 52 ; 0xfecb2 orgs.asm:1180 + push bx ; 53 ; 0xfecb3 orgs.asm:1181 + ; disGetNextSymbol 0xfecb4 LB 0x134c -> off=0x0 cb=0000000000000014 uValue=00000000000f0cb4 'int13_legacy' +int13_legacy: ; 0xfecb4 LB 0x14 + push dx ; 52 ; 0xfecb4 orgs.asm:1183 + push bp ; 55 ; 0xfecb5 orgs.asm:1184 + push si ; 56 ; 0xfecb6 orgs.asm:1185 + push di ; 57 ; 0xfecb7 orgs.asm:1186 + push ES ; 06 ; 0xfecb8 orgs.asm:1187 + push DS ; 1e ; 0xfecb9 orgs.asm:1188 + push CS ; 0e ; 0xfecba orgs.asm:113 + pop DS ; 1f ; 0xfecbb orgs.asm:114 + cld ; fc ; 0xfecbc orgs.asm:115 + test dl, 080h ; f6 c2 80 ; 0xfecbd orgs.asm:1193 + jne short 0ecc8h ; 75 06 ; 0xfecc0 orgs.asm:1194 + push 0ece9h ; 68 e9 ec ; 0xfecc2 orgs.asm:93 + jmp near 032a0h ; e9 d8 45 ; 0xfecc5 orgs.asm:94 + ; 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:1199 + jc short 0ecdch ; 72 0f ; 0xfeccb orgs.asm:1200 + shr ebx, 010h ; 66 c1 eb 10 ; 0xfeccd orgs.asm:1206 + push bx ; 53 ; 0xfecd1 orgs.asm:1207 + call 047c1h ; e8 ec 5a ; 0xfecd2 orgs.asm:1208 + pop bx ; 5b ; 0xfecd5 orgs.asm:1209 + sal ebx, 010h ; 66 c1 e3 10 ; 0xfecd6 orgs.asm:1210 + jmp short 0ece9h ; eb 0d ; 0xfecda orgs.asm:1212 + ; 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:1216 + jnbe short 0ece6h ; 77 05 ; 0xfecdf orgs.asm:1217 + call 05c52h ; e8 6e 6f ; 0xfece1 orgs.asm:1218 + jmp short 0ece9h ; eb 03 ; 0xfece4 orgs.asm:1219 + call 060a1h ; e8 b8 73 ; 0xfece6 orgs.asm:1222 + ; disGetNextSymbol 0xfece9 LB 0x1317 -> off=0x0 cb=0000000000000004 uValue=00000000000f0ce9 'int13_out' +int13_out: ; 0xfece9 LB 0x4 + pop DS ; 1f ; 0xfece9 orgs.asm:1225 + pop ES ; 07 ; 0xfecea orgs.asm:1226 + popaw ; 61 ; 0xfeceb orgs.asm:124 + iret ; cf ; 0xfecec orgs.asm:1228 + ; disGetNextSymbol 0xfeced LB 0x1313 -> off=0x0 cb=000000000000001e uValue=00000000000f0ced 'detect_parport' +detect_parport: ; 0xfeced LB 0x1e + push dx ; 52 ; 0xfeced orgs.asm:1235 + inc dx ; 42 ; 0xfecee orgs.asm:1236 + inc dx ; 42 ; 0xfecef orgs.asm:1237 + in AL, DX ; ec ; 0xfecf0 orgs.asm:1238 + and AL, strict byte 0dfh ; 24 df ; 0xfecf1 orgs.asm:1239 + out DX, AL ; ee ; 0xfecf3 orgs.asm:1240 + pop dx ; 5a ; 0xfecf4 orgs.asm:1241 + mov AL, strict byte 0aah ; b0 aa ; 0xfecf5 orgs.asm:1242 + out DX, AL ; ee ; 0xfecf7 orgs.asm:1243 + in AL, DX ; ec ; 0xfecf8 orgs.asm:1244 + cmp AL, strict byte 0aah ; 3c aa ; 0xfecf9 orgs.asm:1245 + jne short 0ed0ah ; 75 0d ; 0xfecfb orgs.asm:1246 + push bx ; 53 ; 0xfecfd orgs.asm:1248 + sal bx, 1 ; d1 e3 ; 0xfecfe orgs.asm:1249 + mov word [bx+00408h], dx ; 89 97 08 04 ; 0xfed00 orgs.asm:1250 + pop bx ; 5b ; 0xfed04 orgs.asm:1251 + mov byte [bx+00478h], cl ; 88 8f 78 04 ; 0xfed05 orgs.asm:1252 + inc bx ; 43 ; 0xfed09 orgs.asm:1253 + retn ; c3 ; 0xfed0a orgs.asm:1255 + ; disGetNextSymbol 0xfed0b LB 0x12f5 -> off=0x0 cb=0000000000000024 uValue=00000000000f0d0b 'detect_serial' +detect_serial: ; 0xfed0b LB 0x24 + push dx ; 52 ; 0xfed0b orgs.asm:1262 + inc dx ; 42 ; 0xfed0c orgs.asm:1263 + mov AL, strict byte 002h ; b0 02 ; 0xfed0d orgs.asm:1264 + out DX, AL ; ee ; 0xfed0f orgs.asm:1265 + in AL, DX ; ec ; 0xfed10 orgs.asm:1266 + cmp AL, strict byte 002h ; 3c 02 ; 0xfed11 orgs.asm:1267 + jne short 0ed2dh ; 75 18 ; 0xfed13 orgs.asm:1268 + inc dx ; 42 ; 0xfed15 orgs.asm:1270 + in AL, DX ; ec ; 0xfed16 orgs.asm:1271 + cmp AL, strict byte 002h ; 3c 02 ; 0xfed17 orgs.asm:1272 + jne short 0ed2dh ; 75 12 ; 0xfed19 orgs.asm:1273 + dec dx ; 4a ; 0xfed1b orgs.asm:1275 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfed1c orgs.asm:1276 + pop dx ; 5a ; 0xfed1e orgs.asm:1277 + push bx ; 53 ; 0xfed1f orgs.asm:1278 + sal bx, 1 ; d1 e3 ; 0xfed20 orgs.asm:1279 + mov word [bx+00400h], dx ; 89 97 00 04 ; 0xfed22 orgs.asm:1280 + pop bx ; 5b ; 0xfed26 orgs.asm:1281 + mov byte [bx+0047ch], cl ; 88 8f 7c 04 ; 0xfed27 orgs.asm:1282 + inc bx ; 43 ; 0xfed2b orgs.asm:1283 + retn ; c3 ; 0xfed2c orgs.asm:1284 + pop dx ; 5a ; 0xfed2d orgs.asm:1287 + retn ; c3 ; 0xfed2e orgs.asm:1288 + ; 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:1298 + mov ds, ax ; 8e d8 ; 0xfed31 orgs.asm:1299 + mov AL, strict byte 000h ; b0 00 ; 0xfed33 orgs.asm:1303 + mov byte [0043eh], AL ; a2 3e 04 ; 0xfed35 orgs.asm:1304 + mov byte [0043fh], AL ; a2 3f 04 ; 0xfed38 orgs.asm:1305 + mov byte [00440h], AL ; a2 40 04 ; 0xfed3b orgs.asm:1306 + mov byte [00441h], AL ; a2 41 04 ; 0xfed3e orgs.asm:1307 + mov byte [00442h], AL ; a2 42 04 ; 0xfed41 orgs.asm:1308 + mov byte [00443h], AL ; a2 43 04 ; 0xfed44 orgs.asm:1309 + mov byte [00444h], AL ; a2 44 04 ; 0xfed47 orgs.asm:1310 + mov byte [00445h], AL ; a2 45 04 ; 0xfed4a orgs.asm:1311 + mov byte [00446h], AL ; a2 46 04 ; 0xfed4d orgs.asm:1312 + mov byte [00447h], AL ; a2 47 04 ; 0xfed50 orgs.asm:1313 + mov byte [00448h], AL ; a2 48 04 ; 0xfed53 orgs.asm:1314 + mov byte [0048bh], AL ; a2 8b 04 ; 0xfed56 orgs.asm:1316 + mov AL, strict byte 010h ; b0 10 ; 0xfed59 orgs.asm:1318 + out strict byte 070h, AL ; e6 70 ; 0xfed5b orgs.asm:1319 + in AL, strict byte 071h ; e4 71 ; 0xfed5d orgs.asm:1320 + db 08ah, 0e0h + ; mov ah, al ; 8a e0 ; 0xfed5f orgs.asm:1321 + shr al, 004h ; c0 e8 04 ; 0xfed61 orgs.asm:179 + je short 0ed6ah ; 74 04 ; 0xfed64 orgs.asm:1326 + mov BL, strict byte 007h ; b3 07 ; 0xfed66 orgs.asm:1327 + jmp short 0ed6ch ; eb 02 ; 0xfed68 orgs.asm:1328 + mov BL, strict byte 000h ; b3 00 ; 0xfed6a orgs.asm:1331 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfed6c orgs.asm:1334 + and AL, strict byte 00fh ; 24 0f ; 0xfed6e orgs.asm:1335 + je short 0ed75h ; 74 03 ; 0xfed70 orgs.asm:1336 + or bl, 070h ; 80 cb 70 ; 0xfed72 orgs.asm:1337 + mov byte [0048fh], bl ; 88 1e 8f 04 ; 0xfed75 orgs.asm:1339 + mov AL, strict byte 000h ; b0 00 ; 0xfed79 orgs.asm:1342 + mov byte [00490h], AL ; a2 90 04 ; 0xfed7b orgs.asm:1343 + mov byte [00491h], AL ; a2 91 04 ; 0xfed7e orgs.asm:1344 + mov byte [00492h], AL ; a2 92 04 ; 0xfed81 orgs.asm:1345 + mov byte [00493h], AL ; a2 93 04 ; 0xfed84 orgs.asm:1346 + mov byte [00494h], AL ; a2 94 04 ; 0xfed87 orgs.asm:1347 + mov byte [00495h], AL ; a2 95 04 ; 0xfed8a orgs.asm:1348 + mov AL, strict byte 002h ; b0 02 ; 0xfed8d orgs.asm:1350 + out strict byte 00ah, AL ; e6 0a ; 0xfed8f orgs.asm:1351 + mov ax, 0efc7h ; b8 c7 ef ; 0xfed91 orgs.asm:104 + mov word [00078h], ax ; a3 78 00 ; 0xfed94 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfed97 orgs.asm:106 + mov word [0007ah], ax ; a3 7a 00 ; 0xfed9a orgs.asm:107 + mov ax, 0ec59h ; b8 59 ec ; 0xfed9d orgs.asm:104 + mov word [00100h], ax ; a3 00 01 ; 0xfeda0 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfeda3 orgs.asm:106 + mov word [00102h], ax ; a3 02 01 ; 0xfeda6 orgs.asm:107 + mov ax, 0ef57h ; b8 57 ef ; 0xfeda9 orgs.asm:104 + mov word [00038h], ax ; a3 38 00 ; 0xfedac orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfedaf orgs.asm:106 + mov word [0003ah], ax ; a3 3a 00 ; 0xfedb2 orgs.asm:107 + retn ; c3 ; 0xfedb5 orgs.asm:1357 + ; 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:1367 + shr al, 004h ; c0 e8 04 ; 0xfedb9 orgs.asm:1368 + aad 00ah ; d5 0a ; 0xfedbc orgs.asm:1376 + retn ; c3 ; 0xfedbe orgs.asm:1377 + ; 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:1434 + mov AL, strict byte 000h ; b0 00 ; 0xfedc2 orgs.asm:1435 + out strict byte 070h, AL ; e6 70 ; 0xfedc4 orgs.asm:1436 + in AL, strict byte 071h ; e4 71 ; 0xfedc6 orgs.asm:1437 + call 0edb6h ; e8 eb ff ; 0xfedc8 orgs.asm:1438 + mov edx, strict dword 00115cf2bh ; 66 ba 2b cf 15 01 ; 0xfedcb orgs.asm:1439 + mul edx ; 66 f7 e2 ; 0xfedd1 orgs.asm:1440 + mov ebx, strict dword 0000f4240h ; 66 bb 40 42 0f 00 ; 0xfedd4 orgs.asm:1441 + db 066h, 033h, 0d2h + ; xor edx, edx ; 66 33 d2 ; 0xfedda orgs.asm:1442 + div ebx ; 66 f7 f3 ; 0xfeddd orgs.asm:1443 + db 066h, 08bh, 0c8h + ; mov ecx, eax ; 66 8b c8 ; 0xfede0 orgs.asm:1444 + db 066h, 033h, 0c0h + ; xor eax, eax ; 66 33 c0 ; 0xfede3 orgs.asm:1447 + mov AL, strict byte 002h ; b0 02 ; 0xfede6 orgs.asm:1448 + out strict byte 070h, AL ; e6 70 ; 0xfede8 orgs.asm:1449 + in AL, strict byte 071h ; e4 71 ; 0xfedea orgs.asm:1450 + call 0edb6h ; e8 c7 ff ; 0xfedec orgs.asm:1451 + mov edx, strict dword 000a6af80h ; 66 ba 80 af a6 00 ; 0xfedef orgs.asm:1452 + mul edx ; 66 f7 e2 ; 0xfedf5 orgs.asm:1453 + mov ebx, strict dword 000002710h ; 66 bb 10 27 00 00 ; 0xfedf8 orgs.asm:1454 + db 066h, 033h, 0d2h + ; xor edx, edx ; 66 33 d2 ; 0xfedfe orgs.asm:1455 + div ebx ; 66 f7 f3 ; 0xfee01 orgs.asm:1456 + db 066h, 003h, 0c8h + ; add ecx, eax ; 66 03 c8 ; 0xfee04 orgs.asm:1457 + db 066h, 033h, 0c0h + ; xor eax, eax ; 66 33 c0 ; 0xfee07 orgs.asm:1460 + mov AL, strict byte 004h ; b0 04 ; 0xfee0a orgs.asm:1461 + out strict byte 070h, AL ; e6 70 ; 0xfee0c orgs.asm:1462 + in AL, strict byte 071h ; e4 71 ; 0xfee0e orgs.asm:1463 + call 0edb6h ; e8 a3 ff ; 0xfee10 orgs.asm:1464 + mov edx, strict dword 003e81d03h ; 66 ba 03 1d e8 03 ; 0xfee13 orgs.asm:1465 + mul edx ; 66 f7 e2 ; 0xfee19 orgs.asm:1466 + mov ebx, strict dword 0000003e8h ; 66 bb e8 03 00 00 ; 0xfee1c orgs.asm:1467 + db 066h, 033h, 0d2h + ; xor edx, edx ; 66 33 d2 ; 0xfee22 orgs.asm:1468 + div ebx ; 66 f7 f3 ; 0xfee25 orgs.asm:1469 + db 066h, 003h, 0c8h + ; add ecx, eax ; 66 03 c8 ; 0xfee28 orgs.asm:1470 + mov dword [0046ch], ecx ; 66 89 0e 6c 04 ; 0xfee2b orgs.asm:1472 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfee30 orgs.asm:1473 + mov byte [00470h], AL ; a2 70 04 ; 0xfee32 orgs.asm:1474 + retn ; c3 ; 0xfee35 orgs.asm:1477 + ; 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:1488 + push dx ; 52 ; 0xfef58 orgs.asm:1489 + mov dx, 003f4h ; ba f4 03 ; 0xfef59 orgs.asm:1490 + in AL, DX ; ec ; 0xfef5c orgs.asm:1491 + and AL, strict byte 0c0h ; 24 c0 ; 0xfef5d orgs.asm:1492 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef5f orgs.asm:1493 + je short 0ef81h ; 74 1e ; 0xfef61 orgs.asm:1494 + mov dx, 003f5h ; ba f5 03 ; 0xfef63 orgs.asm:1495 + mov AL, strict byte 008h ; b0 08 ; 0xfef66 orgs.asm:1496 + out DX, AL ; ee ; 0xfef68 orgs.asm:1497 + mov dx, 003f4h ; ba f4 03 ; 0xfef69 orgs.asm:1499 + in AL, DX ; ec ; 0xfef6c orgs.asm:1500 + and AL, strict byte 0c0h ; 24 c0 ; 0xfef6d orgs.asm:1501 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef6f orgs.asm:1502 + jne short 0ef69h ; 75 f6 ; 0xfef71 orgs.asm:1503 + mov dx, 003f5h ; ba f5 03 ; 0xfef73 orgs.asm:1506 + in AL, DX ; ec ; 0xfef76 orgs.asm:1507 + mov dx, 003f4h ; ba f4 03 ; 0xfef77 orgs.asm:1508 + in AL, DX ; ec ; 0xfef7a orgs.asm:1509 + and AL, strict byte 0c0h ; 24 c0 ; 0xfef7b orgs.asm:1510 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef7d orgs.asm:1511 + je short 0ef73h ; 74 f2 ; 0xfef7f orgs.asm:1512 + push DS ; 1e ; 0xfef81 orgs.asm:1515 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfef82 orgs.asm:1516 + mov ds, ax ; 8e d8 ; 0xfef84 orgs.asm:1517 + call 0e034h ; e8 ab f0 ; 0xfef86 orgs.asm:1518 + or byte [0043eh], 080h ; 80 0e 3e 04 80 ; 0xfef89 orgs.asm:1520 + pop DS ; 1f ; 0xfef8e orgs.asm:1521 + pop dx ; 5a ; 0xfef8f orgs.asm:1522 + pop ax ; 58 ; 0xfef90 orgs.asm:1523 + iret ; cf ; 0xfef91 orgs.asm:1524 + ; 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:1551 + ; disGetNextSymbol 0xfefd4 LB 0x102c -> off=0x0 cb=000000000000000d uValue=00000000000f0fd4 'int17_handler' +int17_handler: ; 0xfefd4 LB 0xd + push DS ; 1e ; 0xfefd4 orgs.asm:1554 + push ES ; 06 ; 0xfefd5 orgs.asm:1555 + pushaw ; 60 ; 0xfefd6 orgs.asm:107 + push CS ; 0e ; 0xfefd7 orgs.asm:113 + pop DS ; 1f ; 0xfefd8 orgs.asm:114 + cld ; fc ; 0xfefd9 orgs.asm:115 + call 075e6h ; e8 09 86 ; 0xfefda orgs.asm:1558 + popaw ; 61 ; 0xfefdd orgs.asm:124 + pop ES ; 07 ; 0xfefde orgs.asm:1560 + pop DS ; 1f ; 0xfefdf orgs.asm:1561 + iret ; cf ; 0xfefe0 orgs.asm:1562 + ; 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:1597 + ; 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:1606 + ; 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:1615 + ; 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=000000000000000a uValue=00000000000f10a4 'biosorg_check_at_0F0A4h' +biosorg_check_at_0F0A4h: ; 0xff0a4 LB 0xa + push CS ; 0e ; 0xff0a4 orgs.asm:113 + pop DS ; 1f ; 0xff0a5 orgs.asm:114 + cld ; fc ; 0xff0a6 orgs.asm:115 + call 01847h ; e8 9d 27 ; 0xff0a7 orgs.asm:1630 + sti ; fb ; 0xff0aa orgs.asm:1632 + hlt ; f4 ; 0xff0ab orgs.asm:1634 + jmp short 0f0abh ; eb fd ; 0xff0ac orgs.asm:1635 + ; disGetNextSymbol 0xff0ae LB 0xf52 -> off=0x0 cb=0000000000000078 uValue=00000000000f10ae 'int19_relocated' +int19_relocated: ; 0xff0ae LB 0x78 + push CS ; 0e ; 0xff0ae orgs.asm:113 + pop DS ; 1f ; 0xff0af orgs.asm:114 + cld ; fc ; 0xff0b0 orgs.asm:115 + push bp ; 55 ; 0xff0b1 orgs.asm:1645 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff0b2 orgs.asm:1646 + mov ax, strict word 00001h ; b8 01 00 ; 0xff0b4 orgs.asm:1649 + push ax ; 50 ; 0xff0b7 orgs.asm:1650 + call 04bf3h ; e8 38 5b ; 0xff0b8 orgs.asm:1651 + inc sp ; 44 ; 0xff0bb orgs.asm:1652 + inc sp ; 44 ; 0xff0bc orgs.asm:1653 + test ax, ax ; 85 c0 ; 0xff0bd orgs.asm:1654 + jne short 0f0e8h ; 75 27 ; 0xff0bf orgs.asm:1655 + mov ax, strict word 00002h ; b8 02 00 ; 0xff0c1 orgs.asm:1658 + push ax ; 50 ; 0xff0c4 orgs.asm:1659 + call 04bf3h ; e8 2b 5b ; 0xff0c5 orgs.asm:1660 + inc sp ; 44 ; 0xff0c8 orgs.asm:1661 + inc sp ; 44 ; 0xff0c9 orgs.asm:1662 + test ax, ax ; 85 c0 ; 0xff0ca orgs.asm:1663 + jne short 0f0e8h ; 75 1a ; 0xff0cc orgs.asm:1664 + mov ax, strict word 00003h ; b8 03 00 ; 0xff0ce orgs.asm:1667 + push ax ; 50 ; 0xff0d1 orgs.asm:1668 + call 04bf3h ; e8 1e 5b ; 0xff0d2 orgs.asm:1669 + inc sp ; 44 ; 0xff0d5 orgs.asm:1670 + inc sp ; 44 ; 0xff0d6 orgs.asm:1671 + test ax, ax ; 85 c0 ; 0xff0d7 orgs.asm:1672 + jne short 0f0e8h ; 75 0d ; 0xff0d9 orgs.asm:1673 + mov ax, strict word 00004h ; b8 04 00 ; 0xff0db orgs.asm:1676 + push ax ; 50 ; 0xff0de orgs.asm:1677 + call 04bf3h ; e8 11 5b ; 0xff0df orgs.asm:1678 + inc sp ; 44 ; 0xff0e2 orgs.asm:1679 + inc sp ; 44 ; 0xff0e3 orgs.asm:1680 + test ax, ax ; 85 c0 ; 0xff0e4 orgs.asm:1681 + je short 0f0a4h ; 74 bc ; 0xff0e6 orgs.asm:1682 + sal eax, 004h ; 66 c1 e0 04 ; 0xff0e8 orgs.asm:1694 + mov word [bp+002h], ax ; 89 46 02 ; 0xff0ec orgs.asm:1695 + shr eax, 004h ; 66 c1 e8 04 ; 0xff0ef orgs.asm:1697 + and ax, 0f000h ; 25 00 f0 ; 0xff0f3 orgs.asm:1700 + mov word [bp+004h], ax ; 89 46 04 ; 0xff0f6 orgs.asm:1701 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff0f9 orgs.asm:1702 + mov ds, ax ; 8e d8 ; 0xff0fb orgs.asm:1703 + mov es, ax ; 8e c0 ; 0xff0fd orgs.asm:1704 + mov word [byte bp+000h], ax ; 89 46 00 ; 0xff0ff orgs.asm:1705 + mov ax, 0aa55h ; b8 55 aa ; 0xff102 orgs.asm:1706 + pop bp ; 5d ; 0xff105 orgs.asm:1708 + iret ; cf ; 0xff106 orgs.asm:1709 + or cx, word [bp+si] ; 0b 0a ; 0xff107 + or word [bp+di], cx ; 09 0b ; 0xff109 + push eax ; 66 50 ; 0xff10b orgs.asm:98 + mov eax, strict dword 000800000h ; 66 b8 00 00 80 00 ; 0xff10d orgs.asm:99 + db 08bh, 0c3h + ; mov ax, bx ; 8b c3 ; 0xff113 orgs.asm:100 + sal eax, 008h ; 66 c1 e0 08 ; 0xff115 orgs.asm:101 + and dl, 0fch ; 80 e2 fc ; 0xff119 orgs.asm:102 + db 00ah, 0c2h + ; or al, dl ; 0a c2 ; 0xff11c orgs.asm:103 + mov dx, 00cf8h ; ba f8 0c ; 0xff11e orgs.asm:104 + out DX, eax ; 66 ef ; 0xff121 orgs.asm:105 + pop eax ; 66 58 ; 0xff123 orgs.asm:106 + retn ; c3 ; 0xff125 orgs.asm:107 + ; disGetNextSymbol 0xff126 LB 0xeda -> off=0x0 cb=0000000000000012 uValue=00000000000f1126 'pcibios_init_iomem_bases' +pcibios_init_iomem_bases: ; 0xff126 LB 0x12 + push bp ; 55 ; 0xff126 orgs.asm:110 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff127 orgs.asm:111 + mov eax, strict dword 00124f9fdh ; 66 b8 fd f9 24 01 ; 0xff129 orgs.asm:113 + mov dx, 00410h ; ba 10 04 ; 0xff12f orgs.asm:114 + out DX, eax ; 66 ef ; 0xff132 orgs.asm:115 + db 08bh, 0e5h + ; mov sp, bp ; 8b e5 ; 0xff134 orgs.asm:228 + pop bp ; 5d ; 0xff136 orgs.asm:229 + retn ; c3 ; 0xff137 orgs.asm:230 + ; disGetNextSymbol 0xff138 LB 0xec8 -> off=0x0 cb=000000000000000c uValue=00000000000f1138 'pcibios_init_set_elcr' +pcibios_init_set_elcr: ; 0xff138 LB 0xc + push ax ; 50 ; 0xff138 orgs.asm:233 + push cx ; 51 ; 0xff139 orgs.asm:234 + mov dx, 004d0h ; ba d0 04 ; 0xff13a orgs.asm:235 + test AL, strict byte 008h ; a8 08 ; 0xff13d orgs.asm:236 + je short 0f144h ; 74 03 ; 0xff13f orgs.asm:237 + inc dx ; 42 ; 0xff141 orgs.asm:239 + and AL, strict byte 007h ; 24 07 ; 0xff142 orgs.asm:240 + ; disGetNextSymbol 0xff144 LB 0xebc -> off=0x0 cb=000000000000000d uValue=00000000000f1144 'is_master_pic' +is_master_pic: ; 0xff144 LB 0xd + db 08ah, 0c8h + ; mov cl, al ; 8a c8 ; 0xff144 orgs.asm:242 + mov BL, strict byte 001h ; b3 01 ; 0xff146 orgs.asm:243 + sal bl, CL ; d2 e3 ; 0xff148 orgs.asm:244 + in AL, DX ; ec ; 0xff14a orgs.asm:245 + db 00ah, 0c3h + ; or al, bl ; 0a c3 ; 0xff14b orgs.asm:246 + out DX, AL ; ee ; 0xff14d orgs.asm:247 + pop cx ; 59 ; 0xff14e orgs.asm:248 + pop ax ; 58 ; 0xff14f orgs.asm:249 + retn ; c3 ; 0xff150 orgs.asm:250 + ; disGetNextSymbol 0xff151 LB 0xeaf -> off=0x0 cb=000000000000002f uValue=00000000000f1151 'pcibios_init_irqs' +pcibios_init_irqs: ; 0xff151 LB 0x2f + push DS ; 1e ; 0xff151 orgs.asm:253 + push bp ; 55 ; 0xff152 orgs.asm:254 + mov ax, 0f000h ; b8 00 f0 ; 0xff153 orgs.asm:255 + mov ds, ax ; 8e d8 ; 0xff156 orgs.asm:256 + pop bp ; 5d ; 0xff158 orgs.asm:363 + pop DS ; 1f ; 0xff159 orgs.asm:364 + retn ; c3 ; 0xff15a orgs.asm:365 + mov ax, ax ; 89 c0 ; 0xff15b + mov ax, ax ; 89 c0 ; 0xff15d + cld ; fc ; 0xff15f + and AL, strict byte 050h ; 24 50 ; 0xff160 + dec cx ; 49 ; 0xff162 + push dx ; 52 ; 0xff163 + add byte [bx+di], al ; 00 01 ; 0xff164 + add byte [bp+si], al ; 00 02 ; 0xff166 + add byte [bx+si], cl ; 00 08 ; 0xff168 + add byte [bx+si], al ; 00 00 ; 0xff16a + xchg byte [bx+si+07000h], al ; 86 80 00 70 ; 0xff16c + times 0xf db 0 + db 031h + ; disGetNextSymbol 0xff180 LB 0xe80 -> off=0x0 cb=00000000000001e0 uValue=00000000000f1180 '_pci_routing_table' +_pci_routing_table: ; 0xff180 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 0xff360 LB 0xca0 -> off=0x0 cb=0000000000000002 uValue=00000000000f1360 '_pci_routing_table_size' +_pci_routing_table_size: ; 0xff360 LB 0x2 + loopne 0f363h ; e0 01 ; 0xff360 + ; disGetNextSymbol 0xff362 LB 0xc9e -> off=0x0 cb=00000000000004df uValue=00000000000f1362 'biosorg_check_before_or_at_0F83Fh' +biosorg_check_before_or_at_0F83Fh: ; 0xff362 LB 0x4df + times 0x4dd 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:1739 + push DS ; 1e ; 0xff842 orgs.asm:1740 + mov ax, strict word 00040h ; b8 40 00 ; 0xff843 orgs.asm:1741 + mov ds, ax ; 8e d8 ; 0xff846 orgs.asm:1742 + mov ax, word [00013h] ; a1 13 00 ; 0xff848 orgs.asm:1743 + pop DS ; 1f ; 0xff84b orgs.asm:1744 + iret ; cf ; 0xff84c orgs.asm:1745 + ; disGetNextSymbol 0xff84d LB 0x7b3 -> off=0x0 cb=000000000000000c uValue=00000000000f184d 'int11_handler' +int11_handler: ; 0xff84d LB 0xc + sti ; fb ; 0xff84d orgs.asm:1754 + push DS ; 1e ; 0xff84e orgs.asm:1755 + mov ax, strict word 00040h ; b8 40 00 ; 0xff84f orgs.asm:1756 + mov ds, ax ; 8e d8 ; 0xff852 orgs.asm:1757 + mov ax, word [00010h] ; a1 10 00 ; 0xff854 orgs.asm:1758 + pop DS ; 1f ; 0xff857 orgs.asm:1759 + iret ; cf ; 0xff858 orgs.asm:1760 + ; 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:1770 + jne short 0f86bh ; 75 0d ; 0xff85c orgs.asm:1771 + pushaw ; 60 ; 0xff85e orgs.asm:1776 + push ES ; 06 ; 0xff85f orgs.asm:1777 + push DS ; 1e ; 0xff860 orgs.asm:1778 + push CS ; 0e ; 0xff861 orgs.asm:113 + pop DS ; 1f ; 0xff862 orgs.asm:114 + cld ; fc ; 0xff863 orgs.asm:115 + call 06b73h ; e8 0c 73 ; 0xff864 orgs.asm:1780 + pop DS ; 1f ; 0xff867 orgs.asm:1781 + pop ES ; 07 ; 0xff868 orgs.asm:1782 + popaw ; 61 ; 0xff869 orgs.asm:1783 + iret ; cf ; 0xff86a orgs.asm:1784 + pushfw ; 9c ; 0xff86b orgs.asm:1789 + push DS ; 1e ; 0xff86c orgs.asm:1790 + push ES ; 06 ; 0xff86d orgs.asm:1791 + push CS ; 0e ; 0xff86e orgs.asm:113 + pop DS ; 1f ; 0xff86f orgs.asm:114 + cld ; fc ; 0xff870 orgs.asm:115 + cmp ah, 0e8h ; 80 fc e8 ; 0xff871 orgs.asm:1796 + je short 0f899h ; 74 23 ; 0xff874 orgs.asm:1797 + cmp ah, 0d0h ; 80 fc d0 ; 0xff876 orgs.asm:1798 + je short 0f899h ; 74 1e ; 0xff879 orgs.asm:1799 + pushaw ; 60 ; 0xff87b orgs.asm:107 + cmp ah, 053h ; 80 fc 53 ; 0xff87c orgs.asm:1802 + je short 0f88fh ; 74 0e ; 0xff87f orgs.asm:1803 + cmp ah, 0c2h ; 80 fc c2 ; 0xff881 orgs.asm:1804 + je short 0f894h ; 74 0e ; 0xff884 orgs.asm:1805 + call 064f7h ; e8 6e 6c ; 0xff886 orgs.asm:1807 + popaw ; 61 ; 0xff889 orgs.asm:124 + pop ES ; 07 ; 0xff88a orgs.asm:1813 + pop DS ; 1f ; 0xff88b orgs.asm:1814 + popfw ; 9d ; 0xff88c orgs.asm:1815 + jmp short 0f8a2h ; eb 13 ; 0xff88d orgs.asm:1816 + call 0a63ah ; e8 a8 ad ; 0xff88f orgs.asm:1819 + jmp short 0f889h ; eb f5 ; 0xff892 orgs.asm:1820 + ; disGetNextSymbol 0xff894 LB 0x76c -> off=0x0 cb=0000000000000005 uValue=00000000000f1894 'int15_handler_mouse' +int15_handler_mouse: ; 0xff894 LB 0x5 + call 07276h ; e8 df 79 ; 0xff894 orgs.asm:1823 + jmp short 0f889h ; eb f0 ; 0xff897 orgs.asm:1824 + ; disGetNextSymbol 0xff899 LB 0x767 -> off=0x0 cb=0000000000000009 uValue=00000000000f1899 'int15_handler32' +int15_handler32: ; 0xff899 LB 0x9 + pushad ; 66 60 ; 0xff899 orgs.asm:1830 + call 068cfh ; e8 31 70 ; 0xff89b orgs.asm:1831 + popad ; 66 61 ; 0xff89e orgs.asm:1832 + jmp short 0f88ah ; eb e8 ; 0xff8a0 orgs.asm:1834 + ; 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:1841 + push bp ; 55 ; 0xff8a4 orgs.asm:1842 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff8a5 orgs.asm:1843 + and byte [bp+006h], 0feh ; 80 66 06 fe ; 0xff8a7 orgs.asm:1844 + or word [bp+006h], 00200h ; 81 4e 06 00 02 ; 0xff8ab orgs.asm:1845 + pop bp ; 5d ; 0xff8b0 orgs.asm:1846 + iret ; cf ; 0xff8b1 orgs.asm:1847 + push bp ; 55 ; 0xff8b2 orgs.asm:1849 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff8b3 orgs.asm:1850 + or word [bp+006h], 00201h ; 81 4e 06 01 02 ; 0xff8b5 orgs.asm:1851 + pop bp ; 5d ; 0xff8ba orgs.asm:1852 + iret ; cf ; 0xff8bb orgs.asm:1853 + ; disGetNextSymbol 0xff8bc LB 0x744 -> off=0x0 cb=000000000000002b uValue=00000000000f18bc 'int74_handler' +int74_handler: ; 0xff8bc LB 0x2b + sti ; fb ; 0xff8bc orgs.asm:1860 + pushaw ; 60 ; 0xff8bd orgs.asm:107 + push ES ; 06 ; 0xff8be orgs.asm:1862 + push DS ; 1e ; 0xff8bf orgs.asm:1863 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff8c0 orgs.asm:1864 + push ax ; 50 ; 0xff8c2 orgs.asm:1865 + push ax ; 50 ; 0xff8c3 orgs.asm:1866 + push ax ; 50 ; 0xff8c4 orgs.asm:1867 + push ax ; 50 ; 0xff8c5 orgs.asm:1868 + push ax ; 50 ; 0xff8c6 orgs.asm:1869 + push CS ; 0e ; 0xff8c7 orgs.asm:113 + pop DS ; 1f ; 0xff8c8 orgs.asm:114 + cld ; fc ; 0xff8c9 orgs.asm:115 + call 071d2h ; e8 05 79 ; 0xff8ca orgs.asm:1871 + pop cx ; 59 ; 0xff8cd orgs.asm:1872 + jcxz 0f8dch ; e3 0c ; 0xff8ce orgs.asm:1873 + push strict byte 00000h ; 6a 00 ; 0xff8d0 orgs.asm:1877 + pop DS ; 1f ; 0xff8d2 orgs.asm:1882 + push word [0040eh] ; ff 36 0e 04 ; 0xff8d3 orgs.asm:1883 + pop DS ; 1f ; 0xff8d7 orgs.asm:1884 + call far [word 00022h] ; ff 1e 22 00 ; 0xff8d8 orgs.asm:1885 + cli ; fa ; 0xff8dc orgs.asm:1887 + call 0e030h ; e8 50 e7 ; 0xff8dd orgs.asm:1888 + add sp, strict byte 00008h ; 83 c4 08 ; 0xff8e0 orgs.asm:1889 + pop DS ; 1f ; 0xff8e3 orgs.asm:1890 + pop ES ; 07 ; 0xff8e4 orgs.asm:1891 + popaw ; 61 ; 0xff8e5 orgs.asm:124 + iret ; cf ; 0xff8e6 orgs.asm:1893 + ; disGetNextSymbol 0xff8e7 LB 0x719 -> off=0x0 cb=0000000000000012 uValue=00000000000f18e7 'int76_handler' +int76_handler: ; 0xff8e7 LB 0x12 + push ax ; 50 ; 0xff8e7 orgs.asm:1900 + push DS ; 1e ; 0xff8e8 orgs.asm:1901 + mov ax, strict word 00040h ; b8 40 00 ; 0xff8e9 orgs.asm:1902 + mov ds, ax ; 8e d8 ; 0xff8ec orgs.asm:1903 + mov byte [0008eh], 0ffh ; c6 06 8e 00 ff ; 0xff8ee orgs.asm:1904 + call 0e030h ; e8 3a e7 ; 0xff8f3 orgs.asm:1905 + pop DS ; 1f ; 0xff8f6 orgs.asm:1906 + pop ax ; 58 ; 0xff8f7 orgs.asm:1907 + iret ; cf ; 0xff8f8 orgs.asm:1908 + ; disGetNextSymbol 0xff8f9 LB 0x707 -> off=0x0 cb=000000000000000d uValue=00000000000f18f9 'int70_handler' +int70_handler: ; 0xff8f9 LB 0xd + push ES ; 06 ; 0xff8f9 orgs.asm:1917 + push DS ; 1e ; 0xff8fa orgs.asm:1918 + pushaw ; 60 ; 0xff8fb orgs.asm:107 + push CS ; 0e ; 0xff8fc orgs.asm:113 + pop DS ; 1f ; 0xff8fd orgs.asm:114 + cld ; fc ; 0xff8fe orgs.asm:115 + call 06ea7h ; e8 a5 75 ; 0xff8ff orgs.asm:1921 + popaw ; 61 ; 0xff902 orgs.asm:124 + pop DS ; 1f ; 0xff903 orgs.asm:1923 + pop ES ; 07 ; 0xff904 orgs.asm:1924 + iret ; cf ; 0xff905 orgs.asm:1925 + ; 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:1962 + jne short 0fe82h ; 75 0f ; 0xffe71 orgs.asm:1963 + push ES ; 06 ; 0xffe73 orgs.asm:1965 + push DS ; 1e ; 0xffe74 orgs.asm:1966 + push CS ; 0e ; 0xffe75 orgs.asm:113 + pop DS ; 1f ; 0xffe76 orgs.asm:114 + cld ; fc ; 0xffe77 orgs.asm:115 + pushad ; 66 60 ; 0xffe78 orgs.asm:1969 + call 0a858h ; e8 db a9 ; 0xffe7a orgs.asm:1970 + popad ; 66 61 ; 0xffe7d orgs.asm:1971 + pop DS ; 1f ; 0xffe7f orgs.asm:1973 + pop ES ; 07 ; 0xffe80 orgs.asm:1974 + iret ; cf ; 0xffe81 orgs.asm:1975 + push ES ; 06 ; 0xffe82 orgs.asm:1979 + push DS ; 1e ; 0xffe83 orgs.asm:1980 + pushaw ; 60 ; 0xffe84 orgs.asm:107 + push CS ; 0e ; 0xffe85 orgs.asm:113 + pop DS ; 1f ; 0xffe86 orgs.asm:114 + cld ; fc ; 0xffe87 orgs.asm:115 + call 06f48h ; e8 bd 70 ; 0xffe88 orgs.asm:1984 + popaw ; 61 ; 0xffe8b orgs.asm:124 + pop DS ; 1f ; 0xffe8c orgs.asm:1986 + pop ES ; 07 ; 0xffe8d orgs.asm:1987 + iret ; cf ; 0xffe8e orgs.asm:1988 + ; 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:1998 + push eax ; 66 50 ; 0xffea6 orgs.asm:1999 + push DS ; 1e ; 0xffea8 orgs.asm:2004 + push dx ; 52 ; 0xffea9 orgs.asm:2005 + mov ax, strict word 00040h ; b8 40 00 ; 0xffeaa orgs.asm:2006 + mov ds, ax ; 8e d8 ; 0xffead orgs.asm:2007 + mov eax, dword [0006ch] ; 66 a1 6c 00 ; 0xffeaf orgs.asm:2010 + inc eax ; 66 40 ; 0xffeb3 orgs.asm:2011 + cmp eax, strict dword 0001800b0h ; 66 3d b0 00 18 00 ; 0xffeb5 orgs.asm:2023 + jc short 0fec4h ; 72 07 ; 0xffebb orgs.asm:2024 + db 066h, 033h, 0c0h + ; xor eax, eax ; 66 33 c0 ; 0xffebd orgs.asm:2033 + inc byte [word 00070h] ; fe 06 70 00 ; 0xffec0 orgs.asm:2034 + mov dword [0006ch], eax ; 66 a3 6c 00 ; 0xffec4 orgs.asm:2037 + mov AL, byte [00040h] ; a0 40 00 ; 0xffec8 orgs.asm:2045 + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xffecb orgs.asm:2046 + je short 0feddh ; 74 0e ; 0xffecd orgs.asm:2047 + db 0feh, 0c8h + ; dec al ; fe c8 ; 0xffecf orgs.asm:2048 + mov byte [00040h], AL ; a2 40 00 ; 0xffed1 orgs.asm:2049 + jne short 0feddh ; 75 07 ; 0xffed4 orgs.asm:2050 + mov dx, 003f2h ; ba f2 03 ; 0xffed6 orgs.asm:2052 + in AL, DX ; ec ; 0xffed9 orgs.asm:2053 + and AL, strict byte 0cfh ; 24 cf ; 0xffeda orgs.asm:2054 + out DX, AL ; ee ; 0xffedc orgs.asm:2055 + int 01ch ; cd 1c ; 0xffedd orgs.asm:2058 + cli ; fa ; 0xffedf orgs.asm:2060 + call 0e034h ; e8 51 e1 ; 0xffee0 orgs.asm:2061 + pop dx ; 5a ; 0xffee3 orgs.asm:2062 + pop DS ; 1f ; 0xffee4 orgs.asm:2063 + pop eax ; 66 58 ; 0xffee5 orgs.asm:2065 + iret ; cf ; 0xffee7 orgs.asm:2070 + ; 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:2095 + ; 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:2104 + 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:2114 + ; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000' + db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 067h diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum new file mode 100644 index 00000000..a1aa2249 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum @@ -0,0 +1 @@ +136536532ad7f5cf81ffc532fae84d6b *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..a98f4687 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm @@ -0,0 +1,19836 @@ +; $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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: bios.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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 - ATA disk support. +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: eltorito.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: timepci.c +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: scsi.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; SCSI host adapter driver to boot from SCSI disks +; +; +; +; Copyright (C) 2004-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: ahci.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; AHCI host adapter driver to boot from SATA disks. +; +; +; +; Copyright (C) 2011-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: virtio.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; VirtIO-SCSI host adapter driver to boot from disks. +; +; +; +; Copyright (C) 2019-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: buslogic.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; BusLogic SCSI host adapter driver to boot from disks. +; +; +; +; Copyright (C) 2021-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: lsilogic.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; LsiLogic SCSI host adapter driver to boot from disks. +; +; +; +; Copyright (C) 2021-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: apm.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; APM BIOS support. Implements APM version 1.2. +; +; +; +; Copyright (C) 2004-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: pcibios.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; PCI BIOS support. +; +; +; +; Copyright (C) 2004-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: pciutil.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; Utility routines for calling the PCI BIOS. +; +; +; +; Copyright (C) 2011-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: vds.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; Utility routines for calling the Virtual DMA Services. +; +; +; +; Copyright (C) 2011-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: __U4M.asm +; +; $Id: VBoxBiosAlternative8086.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: __U4D.asm +; +; $Id: VBoxBiosAlternative8086.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: __U8RS.asm +; +; $Id: VBoxBiosAlternative8086.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: __U8LS.asm +; +; $Id: VBoxBiosAlternative8086.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: fmemset.asm +; +; $Id: VBoxBiosAlternative8086.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: fmemcpy.asm +; +; $Id: VBoxBiosAlternative8086.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: pcibio32.asm +; +; $Id: VBoxBiosAlternative8086.asm $ +; BIOS32 service directory and 32-bit PCI BIOS entry point +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- + +; +; Source file: apm_pm.asm +; +; $Id: +; Protected-mode APM implementation. +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: orgs.asm +; +; $Id: VBoxBiosAlternative8086.asm $ +; ??? +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + +; +; Source file: ASMBitLastSetU16.asm +; +; $Id: VBoxBiosAlternative8086.asm $ +; BiosCommonCode - ASMBitLastSetU16() - borrowed from IPRT. +; +; +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +; +; Source file: pci32.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; 32-bit PCI BIOS wrapper. +; +; +; +; Copyright (C) 2004-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only + + + + +section _DATA progbits vstart=0x0 align=1 ; size=0xe0 class=DATA group=DGROUP + ; disGetNextSymbol 0xf0000 LB 0xe0 -> 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 0x85 -> 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 0x76 -> off=0x0 cb=000000000000000c uValue=00000000000f006a '_pktacc' +_pktacc: ; 0xf006a LB 0xc + db 000h, 000h, 000h, 000h, 000h, 000h, 0aah, 02bh, 062h, 07ah, 07bh, 089h + ; disGetNextSymbol 0xf0076 LB 0x6a -> off=0x0 cb=000000000000000c uValue=00000000000f0076 '_softrst' +_softrst: ; 0xf0076 LB 0xc + db 000h, 000h, 000h, 000h, 000h, 000h, 0b7h, 02dh, 0b7h, 03bh, 0b7h, 03bh + ; disGetNextSymbol 0xf0082 LB 0x5e -> off=0x0 cb=0000000000000018 uValue=00000000000f0082 '_dskacc' +_dskacc: ; 0xf0082 LB 0x18 + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 08eh, 02ah, 04fh, 02bh, 000h, 000h, 000h, 000h + db 030h, 078h, 049h, 079h, 049h, 088h, 0f3h, 088h + ; disGetNextSymbol 0xf009a LB 0x46 -> off=0x0 cb=0000000000000046 uValue=00000000000f009a '_hbaacc' +_hbaacc: ; 0xf009a LB 0x46 + db 000h, 010h, 030h, 000h, 042h, 0a4h, 08fh, 0a1h, 06fh, 0a2h, 000h, 010h, 054h, 000h, 042h, 0a4h + db 08fh, 0a1h, 06fh, 0a2h, 04bh, 010h, 040h, 010h, 04ah, 09fh, 0b6h, 09dh, 06fh, 09eh, 0f4h, 01ah + db 048h, 010h, 01bh, 09ch, 0f7h, 095h, 069h, 097h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h, 032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h + db 0f3h, 000h, 000h, 000h, 000h, 000h + +section CONST progbits vstart=0xe0 align=1 ; size=0xcda class=DATA group=DGROUP + ; disGetNextSymbol 0xf00e0 LB 0xcda -> off=0xcda cb=0000000000000000 uValue=00000000000f0dba 'bios_cvs_version_string' + db 'NMI Handler called', 00ah, 000h + db 'INT18: BOOT FAILURE', 00ah, 000h + db 'Bootfail', 000h + db '%s', 00ah, 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!', 00ah, 000h + db 'Could not read from the boot medium!', 00ah, 000h + db 'Please insert a bootable medium and reboot.', 00ah, 000h + db 'CDROM boot failure code : %04x', 00ah, 000h + db 'Boot : bseqnr=%d, bootseq=%x', 00dh, 00ah, 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_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 + 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=0xdba align=1 ; size=0x3fa class=DATA group=DGROUP + ; disGetNextSymbol 0xf0dba LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0dba 'bios_cvs_version_string' +bios_cvs_version_string: ; 0xf0dba LB 0x12 + db 'VirtualBox 7.0.6', 000h, 000h + ; disGetNextSymbol 0xf0dcc LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0dcc '_bios_prefix_string' +_bios_prefix_string: ; 0xf0dcc LB 0x8 + db 'BIOS: ', 000h, 000h + ; disGetNextSymbol 0xf0dd4 LB 0x3e0 -> off=0x0 cb=0000000000000006 uValue=00000000000f0dd4 'isotag' +isotag: ; 0xf0dd4 LB 0x6 + db 'CD001', 000h + ; disGetNextSymbol 0xf0dda LB 0x3da -> off=0x0 cb=0000000000000018 uValue=00000000000f0dda 'eltorito' +eltorito: ; 0xf0dda LB 0x18 + db 'EL TORITO SPECIFICATION', 000h + ; disGetNextSymbol 0xf0df2 LB 0x3c2 -> off=0x0 cb=0000000000000028 uValue=00000000000f0df2 'drivetypes' +drivetypes: ; 0xf0df2 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 0xf0e1a LB 0x39a -> off=0x0 cb=000000000000037a uValue=00000000000f0e1a 'scan_to_scanascii' +scan_to_scanascii: ; 0xf0e1a 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 0xf1194 LB 0x20 -> off=0x0 cb=0000000000000020 uValue=00000000000f1194 'panic_msg_keyb_buffer_full' +panic_msg_keyb_buffer_full: ; 0xf1194 LB 0x20 + db '%s: keyboard input buffer full', 00ah, 000h + + ; Padding 0x44c bytes at 0xf11b4 + times 1100 db 0 + +section _TEXT progbits vstart=0x1600 align=1 ; size=0x9858 class=CODE group=AUTO + ; disGetNextSymbol 0xf1600 LB 0x9858 -> off=0x0 cb=0000000000000064 uValue=00000000000f0000 'rom_scan' +rom_scan: ; 0xf1600 LB 0x64 + push bp ; 55 ; 0xf1600 post.c:106 + mov bp, sp ; 89 e5 ; 0xf1601 + push bx ; 53 ; 0xf1603 + push cx ; 51 ; 0xf1604 + push si ; 56 ; 0xf1605 + push di ; 57 ; 0xf1606 + sub sp, strict byte 00008h ; 83 ec 08 ; 0xf1607 + push ax ; 50 ; 0xf160a + push dx ; 52 ; 0xf160b + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf160c post.c:113 + cmp ax, word [bp-014h] ; 3b 46 ec ; 0xf160f + jnc short 0165bh ; 73 47 ; 0xf1612 + mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf1614 post.c:114 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1619 + mov es, ax ; 8e c0 ; 0xf161c post.c:116 + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf161e + cmp word [es:bx], 0aa55h ; 26 81 3f 55 aa ; 0xf1621 + jne short 01654h ; 75 2c ; 0xf1626 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1628 post.c:122 + mov word [bp-010h], strict word 00003h ; c7 46 f0 03 00 ; 0xf162b + call far [bp-010h] ; ff 5e f0 ; 0xf1630 post.c:123 + cli ; fa ; 0xf1633 post.c:124 + mov ax, 0f000h ; b8 00 f0 ; 0xf1634 post.c:125 + mov ds, ax ; 8e d8 ; 0xf1637 + les bx, [bp-00ch] ; c4 5e f4 ; 0xf1639 post.c:130 + mov al, byte [es:bx+002h] ; 26 8a 47 02 ; 0xf163c + add AL, strict byte 003h ; 04 03 ; 0xf1640 + and AL, strict byte 0fch ; 24 fc ; 0xf1642 + xor ah, ah ; 30 e4 ; 0xf1644 post.c:131 + cwd ; 99 ; 0xf1646 + mov CL, strict byte 002h ; b1 02 ; 0xf1647 + sal dx, CL ; d3 e2 ; 0xf1649 + db 01bh, 0c2h + ; sbb ax, dx ; 1b c2 ; 0xf164b + sar ax, CL ; d3 f8 ; 0xf164d + add word [bp-012h], ax ; 01 46 ee ; 0xf164f + jmp short 0160ch ; eb b8 ; 0xf1652 post.c:133 + add word [bp-012h], 00080h ; 81 46 ee 80 00 ; 0xf1654 post.c:135 + jmp short 0160ch ; eb b1 ; 0xf1659 post.c:137 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf165b post.c:138 + pop di ; 5f ; 0xf165e + pop si ; 5e ; 0xf165f + pop cx ; 59 ; 0xf1660 + pop bx ; 5b ; 0xf1661 + pop bp ; 5d ; 0xf1662 + retn ; c3 ; 0xf1663 + ; disGetNextSymbol 0xf1664 LB 0x97f4 -> off=0x0 cb=000000000000001b uValue=00000000000f0064 'inb_cmos' +inb_cmos: ; 0xf1664 LB 0x1b + push bp ; 55 ; 0xf1664 bios.c:76 + mov bp, sp ; 89 e5 ; 0xf1665 + push dx ; 52 ; 0xf1667 + mov AH, strict byte 070h ; b4 70 ; 0xf1668 bios.c:78 + cmp AL, strict byte 080h ; 3c 80 ; 0xf166a bios.c:80 + jc short 01670h ; 72 02 ; 0xf166c + mov AH, strict byte 072h ; b4 72 ; 0xf166e bios.c:81 + mov dl, ah ; 88 e2 ; 0xf1670 bios.c:82 + xor dh, dh ; 30 f6 ; 0xf1672 + out DX, AL ; ee ; 0xf1674 + inc dx ; 42 ; 0xf1675 bios.c:83 + in AL, DX ; ec ; 0xf1676 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1677 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf1679 bios.c:84 + pop dx ; 5a ; 0xf167c + pop bp ; 5d ; 0xf167d + retn ; c3 ; 0xf167e + ; disGetNextSymbol 0xf167f LB 0x97d9 -> off=0x0 cb=000000000000001d uValue=00000000000f007f 'outb_cmos' +outb_cmos: ; 0xf167f LB 0x1d + push bp ; 55 ; 0xf167f bios.c:86 + mov bp, sp ; 89 e5 ; 0xf1680 + push bx ; 53 ; 0xf1682 + mov bl, dl ; 88 d3 ; 0xf1683 + mov AH, strict byte 070h ; b4 70 ; 0xf1685 bios.c:88 + cmp AL, strict byte 080h ; 3c 80 ; 0xf1687 bios.c:90 + jc short 0168dh ; 72 02 ; 0xf1689 + mov AH, strict byte 072h ; b4 72 ; 0xf168b bios.c:91 + mov dl, ah ; 88 e2 ; 0xf168d bios.c:92 + xor dh, dh ; 30 f6 ; 0xf168f + out DX, AL ; ee ; 0xf1691 + inc dx ; 42 ; 0xf1692 bios.c:93 + mov al, bl ; 88 d8 ; 0xf1693 + out DX, AL ; ee ; 0xf1695 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf1696 bios.c:94 + pop bx ; 5b ; 0xf1699 + pop bp ; 5d ; 0xf169a + retn ; c3 ; 0xf169b + ; disGetNextSymbol 0xf169c LB 0x97bc -> off=0x0 cb=0000000000000020 uValue=00000000000f009c 'get_cmos_word' +get_cmos_word: ; 0xf169c LB 0x20 + push bp ; 55 ; 0xf169c bios.c:99 + mov bp, sp ; 89 e5 ; 0xf169d + push bx ; 53 ; 0xf169f + push dx ; 52 ; 0xf16a0 + mov dl, al ; 88 c2 ; 0xf16a1 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf16a3 bios.c:101 + xor ah, ah ; 30 e4 ; 0xf16a5 + call 01664h ; e8 ba ff ; 0xf16a7 + mov bh, al ; 88 c7 ; 0xf16aa + mov al, dl ; 88 d0 ; 0xf16ac + xor ah, ah ; 30 e4 ; 0xf16ae + call 01664h ; e8 b1 ff ; 0xf16b0 + mov ah, bh ; 88 fc ; 0xf16b3 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf16b5 bios.c:103 + pop dx ; 5a ; 0xf16b8 + pop bx ; 5b ; 0xf16b9 + pop bp ; 5d ; 0xf16ba + retn ; c3 ; 0xf16bb + ; disGetNextSymbol 0xf16bc LB 0x979c -> off=0x0 cb=0000000000000061 uValue=00000000000f00bc 'dummy_isr_function' +dummy_isr_function: ; 0xf16bc LB 0x61 + push bp ; 55 ; 0xf16bc bios.c:105 + mov bp, sp ; 89 e5 ; 0xf16bd + push ax ; 50 ; 0xf16bf + mov CL, strict byte 0ffh ; b1 ff ; 0xf16c0 bios.c:113 + mov AL, strict byte 00bh ; b0 0b ; 0xf16c2 bios.c:115 + mov dx, strict word 00020h ; ba 20 00 ; 0xf16c4 + out DX, AL ; ee ; 0xf16c7 + in AL, DX ; ec ; 0xf16c8 bios.c:116 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf16c9 + mov bx, ax ; 89 c3 ; 0xf16cb + mov byte [bp-002h], al ; 88 46 fe ; 0xf16cd + test al, al ; 84 c0 ; 0xf16d0 bios.c:117 + je short 0170eh ; 74 3a ; 0xf16d2 + mov AL, strict byte 00bh ; b0 0b ; 0xf16d4 bios.c:118 + mov dx, 000a0h ; ba a0 00 ; 0xf16d6 + out DX, AL ; ee ; 0xf16d9 + in AL, DX ; ec ; 0xf16da bios.c:119 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf16db + mov cx, ax ; 89 c1 ; 0xf16dd + test al, al ; 84 c0 ; 0xf16df bios.c:120 + je short 016f6h ; 74 13 ; 0xf16e1 + mov dx, 000a1h ; ba a1 00 ; 0xf16e3 bios.c:121 + in AL, DX ; ec ; 0xf16e6 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf16e7 + mov bl, cl ; 88 cb ; 0xf16e9 bios.c:122 + or al, bl ; 08 d8 ; 0xf16eb + out DX, AL ; ee ; 0xf16ed + mov AL, strict byte 020h ; b0 20 ; 0xf16ee bios.c:123 + mov dx, 000a0h ; ba a0 00 ; 0xf16f0 + out DX, AL ; ee ; 0xf16f3 + jmp short 01705h ; eb 0f ; 0xf16f4 bios.c:124 + mov dx, strict word 00021h ; ba 21 00 ; 0xf16f6 bios.c:125 + in AL, DX ; ec ; 0xf16f9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf16fa + and bl, 0fbh ; 80 e3 fb ; 0xf16fc bios.c:126 + mov byte [bp-002h], bl ; 88 5e fe ; 0xf16ff + or al, bl ; 08 d8 ; 0xf1702 bios.c:127 + out DX, AL ; ee ; 0xf1704 + mov AL, strict byte 020h ; b0 20 ; 0xf1705 bios.c:129 + mov dx, strict word 00020h ; ba 20 00 ; 0xf1707 + out DX, AL ; ee ; 0xf170a + mov cl, byte [bp-002h] ; 8a 4e fe ; 0xf170b bios.c:130 + mov bx, strict word 0006bh ; bb 6b 00 ; 0xf170e bios.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf1711 + mov es, ax ; 8e c0 ; 0xf1714 + mov byte [es:bx], cl ; 26 88 0f ; 0xf1716 + mov sp, bp ; 89 ec ; 0xf1719 bios.c:133 + pop bp ; 5d ; 0xf171b + retn ; c3 ; 0xf171c + ; disGetNextSymbol 0xf171d LB 0x973b -> off=0x0 cb=0000000000000015 uValue=00000000000f011d 'nmi_handler_msg' +nmi_handler_msg: ; 0xf171d LB 0x15 + push bp ; 55 ; 0xf171d bios.c:136 + mov bp, sp ; 89 e5 ; 0xf171e + mov ax, 000e0h ; b8 e0 00 ; 0xf1720 bios.c:138 + push ax ; 50 ; 0xf1723 + mov ax, strict word 00007h ; b8 07 00 ; 0xf1724 + push ax ; 50 ; 0xf1727 + call 0195ch ; e8 31 02 ; 0xf1728 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf172b + mov sp, bp ; 89 ec ; 0xf172e bios.c:139 + pop bp ; 5d ; 0xf1730 + retn ; c3 ; 0xf1731 + ; disGetNextSymbol 0xf1732 LB 0x9726 -> off=0x0 cb=0000000000000030 uValue=00000000000f0132 'int18_panic_msg' +int18_panic_msg: ; 0xf1732 LB 0x30 + push bp ; 55 ; 0xf1732 bios.c:141 + mov bp, sp ; 89 e5 ; 0xf1733 + mov bx, 00dcch ; bb cc 0d ; 0xf1735 bios.c:143 + mov cx, ds ; 8c d9 ; 0xf1738 + mov ax, strict word 00004h ; b8 04 00 ; 0xf173a + call 01919h ; e8 d9 01 ; 0xf173d + mov ax, 000f4h ; b8 f4 00 ; 0xf1740 + push ax ; 50 ; 0xf1743 + mov ax, strict word 00004h ; b8 04 00 ; 0xf1744 + push ax ; 50 ; 0xf1747 + call 0195ch ; e8 11 02 ; 0xf1748 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf174b + mov bx, 00109h ; bb 09 01 ; 0xf174e bios.c:144 + mov dx, 0040fh ; ba 0f 04 ; 0xf1751 + mov al, byte [bx] ; 8a 07 ; 0xf1754 + out DX, AL ; ee ; 0xf1756 + inc bx ; 43 ; 0xf1757 + mov al, byte [bx] ; 8a 07 ; 0xf1758 + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xf175a + jne short 01756h ; 75 f8 ; 0xf175c + mov sp, bp ; 89 ec ; 0xf175e bios.c:145 + pop bp ; 5d ; 0xf1760 + retn ; c3 ; 0xf1761 + ; disGetNextSymbol 0xf1762 LB 0x96f6 -> off=0x0 cb=0000000000000024 uValue=00000000000f0162 'log_bios_start' +log_bios_start: ; 0xf1762 LB 0x24 + push bp ; 55 ; 0xf1762 bios.c:147 + mov bp, sp ; 89 e5 ; 0xf1763 + mov bx, 00dcch ; bb cc 0d ; 0xf1765 bios.c:152 + mov cx, ds ; 8c d9 ; 0xf1768 + mov ax, strict word 00004h ; b8 04 00 ; 0xf176a + call 01919h ; e8 a9 01 ; 0xf176d + mov ax, 00dbah ; b8 ba 0d ; 0xf1770 + push ax ; 50 ; 0xf1773 + mov ax, 00112h ; b8 12 01 ; 0xf1774 + push ax ; 50 ; 0xf1777 + mov ax, strict word 00004h ; b8 04 00 ; 0xf1778 + push ax ; 50 ; 0xf177b + call 0195ch ; e8 dd 01 ; 0xf177c + add sp, strict byte 00006h ; 83 c4 06 ; 0xf177f + mov sp, bp ; 89 ec ; 0xf1782 bios.c:153 + pop bp ; 5d ; 0xf1784 + retn ; c3 ; 0xf1785 + ; disGetNextSymbol 0xf1786 LB 0x96d2 -> off=0x0 cb=0000000000000027 uValue=00000000000f0186 'print_bios_banner' +print_bios_banner: ; 0xf1786 LB 0x27 + push bp ; 55 ; 0xf1786 bios.c:172 + mov bp, sp ; 89 e5 ; 0xf1787 + mov bx, strict word 00072h ; bb 72 00 ; 0xf1789 bios.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf178c + mov es, ax ; 8e c0 ; 0xf178f + mov ax, word [es:bx] ; 26 8b 07 ; 0xf1791 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf1794 bios.c:63 + cmp ax, 01234h ; 3d 34 12 ; 0xf1799 bios.c:178 + jne short 017a6h ; 75 08 ; 0xf179c + mov AL, strict byte 003h ; b0 03 ; 0xf179e bios.c:181 + mov AH, strict byte 000h ; b4 00 ; 0xf17a0 + int 010h ; cd 10 ; 0xf17a2 + jmp short 017a9h ; eb 03 ; 0xf17a4 bios.c:182 + call 07528h ; e8 7f 5d ; 0xf17a6 bios.c:185 + mov sp, bp ; 89 ec ; 0xf17a9 bios.c:212 + pop bp ; 5d ; 0xf17ab + retn ; c3 ; 0xf17ac + ; disGetNextSymbol 0xf17ad LB 0x96ab -> off=0x0 cb=000000000000003b uValue=00000000000f01ad 'send' +send: ; 0xf17ad LB 0x3b + push bp ; 55 ; 0xf17ad print.c:82 + mov bp, sp ; 89 e5 ; 0xf17ae + push bx ; 53 ; 0xf17b0 + push cx ; 51 ; 0xf17b1 + mov bx, ax ; 89 c3 ; 0xf17b2 + mov cl, dl ; 88 d1 ; 0xf17b4 + test AL, strict byte 008h ; a8 08 ; 0xf17b6 print.c:90 + je short 017c0h ; 74 06 ; 0xf17b8 + mov al, dl ; 88 d0 ; 0xf17ba print.c:91 + mov dx, 00403h ; ba 03 04 ; 0xf17bc + out DX, AL ; ee ; 0xf17bf + test bl, 004h ; f6 c3 04 ; 0xf17c0 print.c:92 + je short 017cbh ; 74 06 ; 0xf17c3 + mov al, cl ; 88 c8 ; 0xf17c5 print.c:93 + mov dx, 00504h ; ba 04 05 ; 0xf17c7 + out DX, AL ; ee ; 0xf17ca + test bl, 002h ; f6 c3 02 ; 0xf17cb print.c:95 + je short 017e1h ; 74 11 ; 0xf17ce + cmp cl, 00ah ; 80 f9 0a ; 0xf17d0 print.c:96 + jne short 017dbh ; 75 06 ; 0xf17d3 + mov AL, strict byte 00dh ; b0 0d ; 0xf17d5 print.c:97 + mov AH, strict byte 00eh ; b4 0e ; 0xf17d7 + int 010h ; cd 10 ; 0xf17d9 + mov al, cl ; 88 c8 ; 0xf17db print.c:98 + mov AH, strict byte 00eh ; b4 0e ; 0xf17dd + int 010h ; cd 10 ; 0xf17df + lea sp, [bp-004h] ; 8d 66 fc ; 0xf17e1 print.c:100 + pop cx ; 59 ; 0xf17e4 + pop bx ; 5b ; 0xf17e5 + pop bp ; 5d ; 0xf17e6 + retn ; c3 ; 0xf17e7 + ; disGetNextSymbol 0xf17e8 LB 0x9670 -> off=0x0 cb=0000000000000063 uValue=00000000000f01e8 'put_int' +put_int: ; 0xf17e8 LB 0x63 + push bp ; 55 ; 0xf17e8 print.c:102 + mov bp, sp ; 89 e5 ; 0xf17e9 + push si ; 56 ; 0xf17eb + push di ; 57 ; 0xf17ec + push ax ; 50 ; 0xf17ed + push ax ; 50 ; 0xf17ee + mov si, ax ; 89 c6 ; 0xf17ef + mov word [bp-008h], dx ; 89 56 f8 ; 0xf17f1 + mov di, bx ; 89 df ; 0xf17f4 + mov bx, strict word 0000ah ; bb 0a 00 ; 0xf17f6 print.c:104 + mov ax, dx ; 89 d0 ; 0xf17f9 + cwd ; 99 ; 0xf17fb + idiv bx ; f7 fb ; 0xf17fc + mov word [bp-006h], ax ; 89 46 fa ; 0xf17fe + test ax, ax ; 85 c0 ; 0xf1801 print.c:105 + je short 01811h ; 74 0c ; 0xf1803 + lea bx, [di-001h] ; 8d 5d ff ; 0xf1805 print.c:106 + mov dx, ax ; 89 c2 ; 0xf1808 + mov ax, si ; 89 f0 ; 0xf180a + call 017e8h ; e8 d9 ff ; 0xf180c + jmp short 0182ch ; eb 1b ; 0xf180f print.c:107 + dec di ; 4f ; 0xf1811 print.c:108 + test di, di ; 85 ff ; 0xf1812 + jle short 01820h ; 7e 0a ; 0xf1814 + mov dx, strict word 00020h ; ba 20 00 ; 0xf1816 print.c:109 + mov ax, si ; 89 f0 ; 0xf1819 + call 017adh ; e8 8f ff ; 0xf181b + jmp short 01811h ; eb f1 ; 0xf181e + test cx, cx ; 85 c9 ; 0xf1820 print.c:110 + je short 0182ch ; 74 08 ; 0xf1822 + mov dx, strict word 0002dh ; ba 2d 00 ; 0xf1824 print.c:111 + mov ax, si ; 89 f0 ; 0xf1827 + call 017adh ; e8 81 ff ; 0xf1829 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf182c print.c:113 + mov BL, strict byte 00ah ; b3 0a ; 0xf182f + mul bl ; f6 e3 ; 0xf1831 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf1833 + sub bl, al ; 28 c3 ; 0xf1836 + add bl, 030h ; 80 c3 30 ; 0xf1838 + xor bh, bh ; 30 ff ; 0xf183b + mov dx, bx ; 89 da ; 0xf183d + mov ax, si ; 89 f0 ; 0xf183f + call 017adh ; e8 69 ff ; 0xf1841 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf1844 print.c:114 + pop di ; 5f ; 0xf1847 + pop si ; 5e ; 0xf1848 + pop bp ; 5d ; 0xf1849 + retn ; c3 ; 0xf184a + ; disGetNextSymbol 0xf184b LB 0x960d -> off=0x0 cb=000000000000005e uValue=00000000000f024b 'put_uint' +put_uint: ; 0xf184b LB 0x5e + push bp ; 55 ; 0xf184b print.c:116 + mov bp, sp ; 89 e5 ; 0xf184c + push si ; 56 ; 0xf184e + push di ; 57 ; 0xf184f + push ax ; 50 ; 0xf1850 + push ax ; 50 ; 0xf1851 + mov si, ax ; 89 c6 ; 0xf1852 + mov word [bp-008h], dx ; 89 56 f8 ; 0xf1854 + mov ax, dx ; 89 d0 ; 0xf1857 print.c:118 + xor dx, dx ; 31 d2 ; 0xf1859 + mov di, strict word 0000ah ; bf 0a 00 ; 0xf185b + div di ; f7 f7 ; 0xf185e + mov word [bp-006h], ax ; 89 46 fa ; 0xf1860 + test ax, ax ; 85 c0 ; 0xf1863 print.c:119 + je short 01871h ; 74 0a ; 0xf1865 + dec bx ; 4b ; 0xf1867 print.c:120 + mov dx, ax ; 89 c2 ; 0xf1868 + mov ax, si ; 89 f0 ; 0xf186a + call 0184bh ; e8 dc ff ; 0xf186c + jmp short 0188ch ; eb 1b ; 0xf186f print.c:121 + dec bx ; 4b ; 0xf1871 print.c:122 + test bx, bx ; 85 db ; 0xf1872 + jle short 01880h ; 7e 0a ; 0xf1874 + mov dx, strict word 00020h ; ba 20 00 ; 0xf1876 print.c:123 + mov ax, si ; 89 f0 ; 0xf1879 + call 017adh ; e8 2f ff ; 0xf187b + jmp short 01871h ; eb f1 ; 0xf187e + test cx, cx ; 85 c9 ; 0xf1880 print.c:124 + je short 0188ch ; 74 08 ; 0xf1882 + mov dx, strict word 0002dh ; ba 2d 00 ; 0xf1884 print.c:125 + mov ax, si ; 89 f0 ; 0xf1887 + call 017adh ; e8 21 ff ; 0xf1889 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf188c print.c:127 + mov DL, strict byte 00ah ; b2 0a ; 0xf188f + mul dl ; f6 e2 ; 0xf1891 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf1893 + sub dl, al ; 28 c2 ; 0xf1896 + add dl, 030h ; 80 c2 30 ; 0xf1898 + xor dh, dh ; 30 f6 ; 0xf189b + mov ax, si ; 89 f0 ; 0xf189d + call 017adh ; e8 0b ff ; 0xf189f + lea sp, [bp-004h] ; 8d 66 fc ; 0xf18a2 print.c:128 + pop di ; 5f ; 0xf18a5 + pop si ; 5e ; 0xf18a6 + pop bp ; 5d ; 0xf18a7 + retn ; c3 ; 0xf18a8 + ; disGetNextSymbol 0xf18a9 LB 0x95af -> off=0x0 cb=0000000000000070 uValue=00000000000f02a9 'put_luint' +put_luint: ; 0xf18a9 LB 0x70 + push bp ; 55 ; 0xf18a9 print.c:130 + mov bp, sp ; 89 e5 ; 0xf18aa + push si ; 56 ; 0xf18ac + push di ; 57 ; 0xf18ad + push ax ; 50 ; 0xf18ae + push ax ; 50 ; 0xf18af + mov si, ax ; 89 c6 ; 0xf18b0 + mov word [bp-006h], bx ; 89 5e fa ; 0xf18b2 + mov di, dx ; 89 d7 ; 0xf18b5 + mov ax, bx ; 89 d8 ; 0xf18b7 print.c:132 + mov dx, cx ; 89 ca ; 0xf18b9 + mov bx, strict word 0000ah ; bb 0a 00 ; 0xf18bb + xor cx, cx ; 31 c9 ; 0xf18be + call 0aae0h ; e8 1d 92 ; 0xf18c0 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf18c3 + mov cx, dx ; 89 d1 ; 0xf18c6 + mov dx, ax ; 89 c2 ; 0xf18c8 print.c:133 + or dx, cx ; 09 ca ; 0xf18ca + je short 018ddh ; 74 0f ; 0xf18cc + push word [bp+004h] ; ff 76 04 ; 0xf18ce print.c:134 + lea dx, [di-001h] ; 8d 55 ff ; 0xf18d1 + mov bx, ax ; 89 c3 ; 0xf18d4 + mov ax, si ; 89 f0 ; 0xf18d6 + call 018a9h ; e8 ce ff ; 0xf18d8 + jmp short 018fah ; eb 1d ; 0xf18db print.c:135 + dec di ; 4f ; 0xf18dd print.c:136 + test di, di ; 85 ff ; 0xf18de + jle short 018ech ; 7e 0a ; 0xf18e0 + mov dx, strict word 00020h ; ba 20 00 ; 0xf18e2 print.c:137 + mov ax, si ; 89 f0 ; 0xf18e5 + call 017adh ; e8 c3 fe ; 0xf18e7 + jmp short 018ddh ; eb f1 ; 0xf18ea + cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xf18ec print.c:138 + je short 018fah ; 74 08 ; 0xf18f0 + mov dx, strict word 0002dh ; ba 2d 00 ; 0xf18f2 print.c:139 + mov ax, si ; 89 f0 ; 0xf18f5 + call 017adh ; e8 b3 fe ; 0xf18f7 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf18fa print.c:141 + mov DL, strict byte 00ah ; b2 0a ; 0xf18fd + mul dl ; f6 e2 ; 0xf18ff + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf1901 + sub dl, al ; 28 c2 ; 0xf1904 + add dl, 030h ; 80 c2 30 ; 0xf1906 + xor dh, dh ; 30 f6 ; 0xf1909 + mov ax, si ; 89 f0 ; 0xf190b + call 017adh ; e8 9d fe ; 0xf190d + lea sp, [bp-004h] ; 8d 66 fc ; 0xf1910 print.c:142 + pop di ; 5f ; 0xf1913 + pop si ; 5e ; 0xf1914 + pop bp ; 5d ; 0xf1915 + retn 00002h ; c2 02 00 ; 0xf1916 + ; disGetNextSymbol 0xf1919 LB 0x953f -> off=0x0 cb=0000000000000021 uValue=00000000000f0319 'put_str' +put_str: ; 0xf1919 LB 0x21 + push bp ; 55 ; 0xf1919 print.c:144 + mov bp, sp ; 89 e5 ; 0xf191a + push dx ; 52 ; 0xf191c + push si ; 56 ; 0xf191d + mov si, ax ; 89 c6 ; 0xf191e + mov es, cx ; 8e c1 ; 0xf1920 print.c:148 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf1922 + test dl, dl ; 84 d2 ; 0xf1925 + je short 01933h ; 74 0a ; 0xf1927 + xor dh, dh ; 30 f6 ; 0xf1929 print.c:149 + mov ax, si ; 89 f0 ; 0xf192b + call 017adh ; e8 7d fe ; 0xf192d + inc bx ; 43 ; 0xf1930 print.c:150 + jmp short 01920h ; eb ed ; 0xf1931 print.c:151 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf1933 print.c:152 + pop si ; 5e ; 0xf1936 + pop dx ; 5a ; 0xf1937 + pop bp ; 5d ; 0xf1938 + retn ; c3 ; 0xf1939 + ; disGetNextSymbol 0xf193a LB 0x951e -> off=0x0 cb=0000000000000022 uValue=00000000000f033a 'put_str_near' +put_str_near: ; 0xf193a LB 0x22 + push bp ; 55 ; 0xf193a print.c:154 + mov bp, sp ; 89 e5 ; 0xf193b + push bx ; 53 ; 0xf193d + push cx ; 51 ; 0xf193e + mov cx, ax ; 89 c1 ; 0xf193f + mov bx, dx ; 89 d3 ; 0xf1941 + mov al, byte [bx] ; 8a 07 ; 0xf1943 print.c:158 + test al, al ; 84 c0 ; 0xf1945 + je short 01955h ; 74 0c ; 0xf1947 + xor ah, ah ; 30 e4 ; 0xf1949 print.c:159 + mov dx, ax ; 89 c2 ; 0xf194b + mov ax, cx ; 89 c8 ; 0xf194d + call 017adh ; e8 5b fe ; 0xf194f + inc bx ; 43 ; 0xf1952 print.c:160 + jmp short 01943h ; eb ee ; 0xf1953 print.c:161 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf1955 print.c:162 + pop cx ; 59 ; 0xf1958 + pop bx ; 5b ; 0xf1959 + pop bp ; 5d ; 0xf195a + retn ; c3 ; 0xf195b + ; disGetNextSymbol 0xf195c LB 0x94fc -> off=0x0 cb=000000000000034f uValue=00000000000f035c 'bios_printf' +bios_printf: ; 0xf195c LB 0x34f + push bp ; 55 ; 0xf195c print.c:175 + mov bp, sp ; 89 e5 ; 0xf195d + push bx ; 53 ; 0xf195f + push cx ; 51 ; 0xf1960 + push dx ; 52 ; 0xf1961 + push si ; 56 ; 0xf1962 + push di ; 57 ; 0xf1963 + sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf1964 + lea bx, [bp+008h] ; 8d 5e 08 ; 0xf1967 print.c:183 + mov word [bp-016h], bx ; 89 5e ea ; 0xf196a + mov [bp-014h], ss ; 8c 56 ec ; 0xf196d + xor cx, cx ; 31 c9 ; 0xf1970 print.c:185 + xor di, di ; 31 ff ; 0xf1972 print.c:186 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1974 print.c:188 + and ax, strict word 00007h ; 25 07 00 ; 0xf1977 + cmp ax, strict word 00007h ; 3d 07 00 ; 0xf197a + jne short 0198dh ; 75 0e ; 0xf197d + mov ax, 00116h ; b8 16 01 ; 0xf197f print.c:189 + push ax ; 50 ; 0xf1982 + mov ax, strict word 00002h ; b8 02 00 ; 0xf1983 + push ax ; 50 ; 0xf1986 + call 0195ch ; e8 d2 ff ; 0xf1987 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf198a + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf198d print.c:192 + mov dl, byte [bx] ; 8a 17 ; 0xf1990 + test dl, dl ; 84 d2 ; 0xf1992 + je short 019f7h ; 74 61 ; 0xf1994 + cmp dl, 025h ; 80 fa 25 ; 0xf1996 print.c:193 + jne short 019a3h ; 75 08 ; 0xf1999 + mov cx, strict word 00001h ; b9 01 00 ; 0xf199b print.c:194 + xor di, di ; 31 ff ; 0xf199e print.c:195 + jmp near 01c89h ; e9 e6 02 ; 0xf19a0 print.c:197 + test cx, cx ; 85 c9 ; 0xf19a3 + je short 019fah ; 74 53 ; 0xf19a5 + cmp dl, 030h ; 80 fa 30 ; 0xf19a7 print.c:198 + jc short 019c6h ; 72 1a ; 0xf19aa + cmp dl, 039h ; 80 fa 39 ; 0xf19ac + jnbe short 019c6h ; 77 15 ; 0xf19af + mov bl, dl ; 88 d3 ; 0xf19b1 print.c:199 + xor bh, bh ; 30 ff ; 0xf19b3 + mov ax, di ; 89 f8 ; 0xf19b5 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf19b7 + mul dx ; f7 e2 ; 0xf19ba + sub bx, strict byte 00030h ; 83 eb 30 ; 0xf19bc + mov di, ax ; 89 c7 ; 0xf19bf + add di, bx ; 01 df ; 0xf19c1 + jmp near 01c89h ; e9 c3 02 ; 0xf19c3 print.c:201 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf19c6 print.c:202 + mov word [bp-014h], ax ; 89 46 ec ; 0xf19c9 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf19cc + les bx, [bp-016h] ; c4 5e ea ; 0xf19d0 + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf19d3 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf19d7 + cmp dl, 078h ; 80 fa 78 ; 0xf19da print.c:203 + je short 019e4h ; 74 05 ; 0xf19dd + cmp dl, 058h ; 80 fa 58 ; 0xf19df + jne short 01a3fh ; 75 5b ; 0xf19e2 + test di, di ; 85 ff ; 0xf19e4 print.c:204 + jne short 019ebh ; 75 03 ; 0xf19e6 + mov di, strict word 00004h ; bf 04 00 ; 0xf19e8 print.c:205 + cmp dl, 078h ; 80 fa 78 ; 0xf19eb print.c:206 + jne short 019fdh ; 75 0d ; 0xf19ee + mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf19f0 print.c:207 + jmp short 01a02h ; eb 0b ; 0xf19f5 print.c:208 + jmp near 01c8fh ; e9 95 02 ; 0xf19f7 + jmp near 01c81h ; e9 84 02 ; 0xf19fa + mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf19fd print.c:209 + lea ax, [di-001h] ; 8d 45 ff ; 0xf1a02 print.c:210 + mov word [bp-012h], ax ; 89 46 ee ; 0xf1a05 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1a08 + test ax, ax ; 85 c0 ; 0xf1a0b + jl short 01a50h ; 7c 41 ; 0xf1a0d + mov cx, ax ; 89 c1 ; 0xf1a0f print.c:211 + sal cx, 1 ; d1 e1 ; 0xf1a11 + sal cx, 1 ; d1 e1 ; 0xf1a13 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1a15 + shr ax, CL ; d3 e8 ; 0xf1a18 + xor ah, ah ; 30 e4 ; 0xf1a1a + and AL, strict byte 00fh ; 24 0f ; 0xf1a1c + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1a1e print.c:212 + jnbe short 01a2ah ; 77 07 ; 0xf1a21 + mov dx, ax ; 89 c2 ; 0xf1a23 + add dx, strict byte 00030h ; 83 c2 30 ; 0xf1a25 + jmp short 01a32h ; eb 08 ; 0xf1a28 + sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1a2a + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1a2d + add dx, ax ; 01 c2 ; 0xf1a30 + xor dh, dh ; 30 f6 ; 0xf1a32 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1a34 + call 017adh ; e8 73 fd ; 0xf1a37 + dec word [bp-012h] ; ff 4e ee ; 0xf1a3a print.c:213 + jmp short 01a08h ; eb c9 ; 0xf1a3d + cmp dl, 075h ; 80 fa 75 ; 0xf1a3f print.c:215 + jne short 01a53h ; 75 0f ; 0xf1a42 + xor cx, cx ; 31 c9 ; 0xf1a44 print.c:216 + mov bx, di ; 89 fb ; 0xf1a46 + mov dx, ax ; 89 c2 ; 0xf1a48 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1a4a + call 0184bh ; e8 fb fd ; 0xf1a4d + jmp near 01c7dh ; e9 2a 02 ; 0xf1a50 print.c:218 + cmp dl, 06ch ; 80 fa 6c ; 0xf1a53 + jne short 01a60h ; 75 08 ; 0xf1a56 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1a58 + cmp dl, byte [bx+001h] ; 3a 57 01 ; 0xf1a5b + je short 01a63h ; 74 03 ; 0xf1a5e + jmp near 01b38h ; e9 d5 00 ; 0xf1a60 + add word [bp+006h], strict byte 00002h ; 83 46 06 02 ; 0xf1a63 print.c:222 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1a67 print.c:223 + mov dl, byte [bx] ; 8a 17 ; 0xf1a6a + mov word [bp-026h], ax ; 89 46 da ; 0xf1a6c print.c:225 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a6f print.c:226 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1a72 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a75 + les bx, [bp-016h] ; c4 5e ea ; 0xf1a79 + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a7c + mov word [bp-024h], ax ; 89 46 dc ; 0xf1a80 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a83 print.c:227 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1a86 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a89 + les bx, [bp-016h] ; c4 5e ea ; 0xf1a8d + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a90 + mov word [bp-022h], ax ; 89 46 de ; 0xf1a94 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a97 print.c:228 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1a9a + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a9d + les bx, [bp-016h] ; c4 5e ea ; 0xf1aa1 + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1aa4 + mov word [bp-020h], ax ; 89 46 e0 ; 0xf1aa8 + cmp dl, 078h ; 80 fa 78 ; 0xf1aab print.c:229 + je short 01ab5h ; 74 05 ; 0xf1aae + cmp dl, 058h ; 80 fa 58 ; 0xf1ab0 + jne short 01b10h ; 75 5b ; 0xf1ab3 + test di, di ; 85 ff ; 0xf1ab5 print.c:230 + jne short 01abch ; 75 03 ; 0xf1ab7 + mov di, strict word 00010h ; bf 10 00 ; 0xf1ab9 print.c:231 + cmp dl, 078h ; 80 fa 78 ; 0xf1abc print.c:232 + jne short 01ac8h ; 75 07 ; 0xf1abf + mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1ac1 print.c:233 + jmp short 01acdh ; eb 05 ; 0xf1ac6 print.c:234 + mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1ac8 print.c:235 + lea ax, [di-001h] ; 8d 45 ff ; 0xf1acd print.c:236 + mov word [bp-012h], ax ; 89 46 ee ; 0xf1ad0 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1ad3 + test ax, ax ; 85 c0 ; 0xf1ad6 + jl short 01b35h ; 7c 5b ; 0xf1ad8 + sal ax, 1 ; d1 e0 ; 0xf1ada print.c:237 + sal ax, 1 ; d1 e0 ; 0xf1adc + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf1ade + xor ax, ax ; 31 c0 ; 0xf1ae1 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf1ae3 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf1ae6 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf1ae9 + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf1aec + mov bx, word [bp-022h] ; 8b 5e de ; 0xf1aef + mov cx, word [bp-024h] ; 8b 4e dc ; 0xf1af2 + mov dx, word [bp-026h] ; 8b 56 da ; 0xf1af5 + mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf1af8 + call 0ab10h ; e8 12 90 ; 0xf1afb + mov ax, dx ; 89 d0 ; 0xf1afe + xor ah, dh ; 30 f4 ; 0xf1b00 + and AL, strict byte 00fh ; 24 0f ; 0xf1b02 + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1b04 print.c:238 + jnbe short 01b12h ; 77 09 ; 0xf1b07 + mov dx, ax ; 89 c2 ; 0xf1b09 + add dx, strict byte 00030h ; 83 c2 30 ; 0xf1b0b + jmp short 01b1ah ; eb 0a ; 0xf1b0e + jmp short 01b27h ; eb 15 ; 0xf1b10 + sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1b12 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1b15 + add dx, ax ; 01 c2 ; 0xf1b18 + xor dh, dh ; 30 f6 ; 0xf1b1a + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b1c + call 017adh ; e8 8b fc ; 0xf1b1f + dec word [bp-012h] ; ff 4e ee ; 0xf1b22 print.c:239 + jmp short 01ad3h ; eb ac ; 0xf1b25 + mov ax, 0011eh ; b8 1e 01 ; 0xf1b27 print.c:241 + push ax ; 50 ; 0xf1b2a + mov ax, strict word 00007h ; b8 07 00 ; 0xf1b2b + push ax ; 50 ; 0xf1b2e + call 0195ch ; e8 2a fe ; 0xf1b2f + add sp, strict byte 00004h ; 83 c4 04 ; 0xf1b32 + jmp near 01c7dh ; e9 45 01 ; 0xf1b35 print.c:244 + lea bx, [di-001h] ; 8d 5d ff ; 0xf1b38 + cmp dl, 06ch ; 80 fa 6c ; 0xf1b3b + jne short 01b98h ; 75 58 ; 0xf1b3e + inc word [bp+006h] ; ff 46 06 ; 0xf1b40 print.c:245 + mov si, word [bp+006h] ; 8b 76 06 ; 0xf1b43 print.c:246 + mov dl, byte [si] ; 8a 14 ; 0xf1b46 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b48 print.c:247 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1b4b + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b4e + les si, [bp-016h] ; c4 76 ea ; 0xf1b52 + mov ax, word [es:si-002h] ; 26 8b 44 fe ; 0xf1b55 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf1b59 + cmp dl, 064h ; 80 fa 64 ; 0xf1b5c print.c:248 + jne short 01b91h ; 75 30 ; 0xf1b5f + test byte [bp-00fh], 080h ; f6 46 f1 80 ; 0xf1b61 print.c:249 + je short 01b7eh ; 74 17 ; 0xf1b65 + mov ax, strict word 00001h ; b8 01 00 ; 0xf1b67 print.c:250 + push ax ; 50 ; 0xf1b6a + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1b6b + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1b6e + neg cx ; f7 d9 ; 0xf1b71 + neg ax ; f7 d8 ; 0xf1b73 + sbb cx, strict byte 00000h ; 83 d9 00 ; 0xf1b75 + mov dx, bx ; 89 da ; 0xf1b78 + mov bx, ax ; 89 c3 ; 0xf1b7a + jmp short 01b89h ; eb 0b ; 0xf1b7c print.c:251 + xor ax, ax ; 31 c0 ; 0xf1b7e print.c:252 + push ax ; 50 ; 0xf1b80 + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf1b81 + mov dx, di ; 89 fa ; 0xf1b84 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1b86 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b89 + call 018a9h ; e8 1a fd ; 0xf1b8c + jmp short 01b35h ; eb a4 ; 0xf1b8f print.c:254 + cmp dl, 075h ; 80 fa 75 ; 0xf1b91 + jne short 01b9ah ; 75 04 ; 0xf1b94 + jmp short 01b7eh ; eb e6 ; 0xf1b96 + jmp short 01c01h ; eb 67 ; 0xf1b98 + cmp dl, 078h ; 80 fa 78 ; 0xf1b9a print.c:257 + je short 01ba4h ; 74 05 ; 0xf1b9d + cmp dl, 058h ; 80 fa 58 ; 0xf1b9f + jne short 01b35h ; 75 91 ; 0xf1ba2 + test di, di ; 85 ff ; 0xf1ba4 print.c:259 + jne short 01babh ; 75 03 ; 0xf1ba6 + mov di, strict word 00008h ; bf 08 00 ; 0xf1ba8 print.c:260 + cmp dl, 078h ; 80 fa 78 ; 0xf1bab print.c:261 + jne short 01bb7h ; 75 07 ; 0xf1bae + mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1bb0 print.c:262 + jmp short 01bbch ; eb 05 ; 0xf1bb5 print.c:263 + mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1bb7 print.c:264 + lea ax, [di-001h] ; 8d 45 ff ; 0xf1bbc print.c:265 + mov word [bp-012h], ax ; 89 46 ee ; 0xf1bbf + cmp word [bp-012h], strict byte 00000h ; 83 7e ee 00 ; 0xf1bc2 + jl short 01c23h ; 7c 5b ; 0xf1bc6 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1bc8 print.c:266 + mov cx, word [bp-012h] ; 8b 4e ee ; 0xf1bcb + sal cx, 1 ; d1 e1 ; 0xf1bce + sal cx, 1 ; d1 e1 ; 0xf1bd0 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1bd2 + jcxz 01bddh ; e3 06 ; 0xf1bd5 + shr dx, 1 ; d1 ea ; 0xf1bd7 + rcr ax, 1 ; d1 d8 ; 0xf1bd9 + loop 01bd7h ; e2 fa ; 0xf1bdb + and ax, strict word 0000fh ; 25 0f 00 ; 0xf1bdd + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1be0 print.c:267 + jnbe short 01bech ; 77 07 ; 0xf1be3 + mov dx, ax ; 89 c2 ; 0xf1be5 + add dx, strict byte 00030h ; 83 c2 30 ; 0xf1be7 + jmp short 01bf4h ; eb 08 ; 0xf1bea + sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1bec + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1bef + add dx, ax ; 01 c2 ; 0xf1bf2 + xor dh, dh ; 30 f6 ; 0xf1bf4 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bf6 + call 017adh ; e8 b1 fb ; 0xf1bf9 + dec word [bp-012h] ; ff 4e ee ; 0xf1bfc print.c:268 + jmp short 01bc2h ; eb c1 ; 0xf1bff + cmp dl, 064h ; 80 fa 64 ; 0xf1c01 print.c:271 + jne short 01c25h ; 75 1f ; 0xf1c04 + test byte [bp-00bh], 080h ; f6 46 f5 80 ; 0xf1c06 print.c:272 + je short 01c16h ; 74 0a ; 0xf1c0a + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1c0c print.c:273 + neg dx ; f7 da ; 0xf1c0f + mov cx, strict word 00001h ; b9 01 00 ; 0xf1c11 + jmp short 01c1dh ; eb 07 ; 0xf1c14 print.c:274 + xor cx, cx ; 31 c9 ; 0xf1c16 print.c:275 + mov bx, di ; 89 fb ; 0xf1c18 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1c1a + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c1d + call 017e8h ; e8 c5 fb ; 0xf1c20 + jmp short 01c7dh ; eb 58 ; 0xf1c23 print.c:277 + cmp dl, 073h ; 80 fa 73 ; 0xf1c25 + jne short 01c37h ; 75 0d ; 0xf1c28 + mov cx, ds ; 8c d9 ; 0xf1c2a print.c:278 + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf1c2c + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c2f + call 01919h ; e8 e4 fc ; 0xf1c32 + jmp short 01c7dh ; eb 46 ; 0xf1c35 print.c:280 + cmp dl, 053h ; 80 fa 53 ; 0xf1c37 + jne short 01c5dh ; 75 21 ; 0xf1c3a + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1c3c print.c:281 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf1c3f + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1c42 print.c:282 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1c45 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1c48 + les bx, [bp-016h] ; c4 5e ea ; 0xf1c4c + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1c4f + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1c53 + mov bx, ax ; 89 c3 ; 0xf1c56 print.c:283 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1c58 + jmp short 01c2fh ; eb d2 ; 0xf1c5b + cmp dl, 063h ; 80 fa 63 ; 0xf1c5d print.c:285 + jne short 01c6fh ; 75 0d ; 0xf1c60 + mov dl, byte [bp-00ch] ; 8a 56 f4 ; 0xf1c62 print.c:286 + xor dh, dh ; 30 f6 ; 0xf1c65 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c67 + call 017adh ; e8 40 fb ; 0xf1c6a + jmp short 01c7dh ; eb 0e ; 0xf1c6d print.c:288 + mov ax, 0013fh ; b8 3f 01 ; 0xf1c6f print.c:289 + push ax ; 50 ; 0xf1c72 + mov ax, strict word 00007h ; b8 07 00 ; 0xf1c73 + push ax ; 50 ; 0xf1c76 + call 0195ch ; e8 e2 fc ; 0xf1c77 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf1c7a + xor cx, cx ; 31 c9 ; 0xf1c7d print.c:290 + jmp short 01c89h ; eb 08 ; 0xf1c7f print.c:293 + xor dh, dh ; 30 f6 ; 0xf1c81 print.c:294 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c83 + call 017adh ; e8 24 fb ; 0xf1c86 + inc word [bp+006h] ; ff 46 06 ; 0xf1c89 print.c:296 + jmp near 0198dh ; e9 fe fc ; 0xf1c8c print.c:297 + xor ax, ax ; 31 c0 ; 0xf1c8f print.c:298 + mov word [bp-016h], ax ; 89 46 ea ; 0xf1c91 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1c94 + test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf1c97 print.c:299 + je short 01ca1h ; 74 04 ; 0xf1c9b + cli ; fa ; 0xf1c9d print.c:301 + hlt ; f4 ; 0xf1c9e print.c:302 + jmp short 01c9eh ; eb fd ; 0xf1c9f + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1ca1 print.c:304 + pop di ; 5f ; 0xf1ca4 + pop si ; 5e ; 0xf1ca5 + pop dx ; 5a ; 0xf1ca6 + pop cx ; 59 ; 0xf1ca7 + pop bx ; 5b ; 0xf1ca8 + pop bp ; 5d ; 0xf1ca9 + retn ; c3 ; 0xf1caa + ; disGetNextSymbol 0xf1cab LB 0x91ad -> off=0x0 cb=00000000000000f0 uValue=00000000000f06ab 'ata_init' +ata_init: ; 0xf1cab LB 0xf0 + push si ; 56 ; 0xf1cab ata.c:89 + push di ; 57 ; 0xf1cac + push bp ; 55 ; 0xf1cad + mov bp, sp ; 89 e5 ; 0xf1cae + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1cb0 ata.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf1cb3 + mov es, ax ; 8e c0 ; 0xf1cb6 + mov di, word [es:bx] ; 26 8b 3f ; 0xf1cb8 + mov si, strict word 0005eh ; be 5e 00 ; 0xf1cbb ata.c:59 + xor cl, cl ; 30 c9 ; 0xf1cbe ata.c:97 + jmp short 01cc7h ; eb 05 ; 0xf1cc0 + cmp cl, 004h ; 80 f9 04 ; 0xf1cc2 + jnc short 01cf4h ; 73 2d ; 0xf1cc5 + mov al, cl ; 88 c8 ; 0xf1cc7 ata.c:98 + xor ah, ah ; 30 e4 ; 0xf1cc9 + mov bx, strict word 00006h ; bb 06 00 ; 0xf1ccb + imul bx ; f7 eb ; 0xf1cce + mov es, di ; 8e c7 ; 0xf1cd0 + mov bx, si ; 89 f3 ; 0xf1cd2 + add bx, ax ; 01 c3 ; 0xf1cd4 + mov byte [es:bx+00278h], 000h ; 26 c6 87 78 02 00 ; 0xf1cd6 + mov word [es:bx+0027ah], strict word 00000h ; 26 c7 87 7a 02 00 00 ; 0xf1cdc ata.c:99 + mov word [es:bx+0027ch], strict word 00000h ; 26 c7 87 7c 02 00 00 ; 0xf1ce3 ata.c:100 + mov byte [es:bx+00279h], 000h ; 26 c6 87 79 02 00 ; 0xf1cea ata.c:101 + db 0feh, 0c1h + ; inc cl ; fe c1 ; 0xf1cf0 ata.c:102 + jmp short 01cc2h ; eb ce ; 0xf1cf2 + xor cl, cl ; 30 c9 ; 0xf1cf4 ata.c:105 + jmp short 01cfdh ; eb 05 ; 0xf1cf6 + cmp cl, 008h ; 80 f9 08 ; 0xf1cf8 + jnc short 01d68h ; 73 6b ; 0xf1cfb + mov al, cl ; 88 c8 ; 0xf1cfd ata.c:106 + xor ah, ah ; 30 e4 ; 0xf1cff + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf1d01 + imul bx ; f7 eb ; 0xf1d04 + mov es, di ; 8e c7 ; 0xf1d06 + mov bx, si ; 89 f3 ; 0xf1d08 + add bx, ax ; 01 c3 ; 0xf1d0a + mov word [es:bx+01eh], strict word 00000h ; 26 c7 47 1e 00 00 ; 0xf1d0c + mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00 ; 0xf1d12 ata.c:108 + mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf1d18 ata.c:110 + mov word [es:bx+024h], 00200h ; 26 c7 47 24 00 02 ; 0xf1d1d ata.c:111 + mov byte [es:bx+023h], 000h ; 26 c6 47 23 00 ; 0xf1d23 ata.c:112 + mov word [es:bx+026h], strict word 00000h ; 26 c7 47 26 00 00 ; 0xf1d28 ata.c:113 + mov word [es:bx+028h], strict word 00000h ; 26 c7 47 28 00 00 ; 0xf1d2e ata.c:114 + mov word [es:bx+02ah], strict word 00000h ; 26 c7 47 2a 00 00 ; 0xf1d34 ata.c:115 + mov word [es:bx+02ch], strict word 00000h ; 26 c7 47 2c 00 00 ; 0xf1d3a ata.c:116 + mov word [es:bx+02eh], strict word 00000h ; 26 c7 47 2e 00 00 ; 0xf1d40 ata.c:117 + mov word [es:bx+030h], strict word 00000h ; 26 c7 47 30 00 00 ; 0xf1d46 ata.c:118 + mov word [es:bx+038h], strict word 00000h ; 26 c7 47 38 00 00 ; 0xf1d4c ata.c:119 + mov word [es:bx+036h], strict word 00000h ; 26 c7 47 36 00 00 ; 0xf1d52 + mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf1d58 + mov word [es:bx+032h], strict word 00000h ; 26 c7 47 32 00 00 ; 0xf1d5e + db 0feh, 0c1h + ; inc cl ; fe c1 ; 0xf1d64 ata.c:120 + jmp short 01cf8h ; eb 90 ; 0xf1d66 + xor cl, cl ; 30 c9 ; 0xf1d68 ata.c:123 + jmp short 01d71h ; eb 05 ; 0xf1d6a + cmp cl, 014h ; 80 f9 14 ; 0xf1d6c + jnc short 01d89h ; 73 18 ; 0xf1d6f + mov bl, cl ; 88 cb ; 0xf1d71 ata.c:124 + xor bh, bh ; 30 ff ; 0xf1d73 + mov es, di ; 8e c7 ; 0xf1d75 + add bx, si ; 01 f3 ; 0xf1d77 + mov byte [es:bx+0024fh], 014h ; 26 c6 87 4f 02 14 ; 0xf1d79 + mov byte [es:bx+00264h], 014h ; 26 c6 87 64 02 14 ; 0xf1d7f ata.c:125 + db 0feh, 0c1h + ; inc cl ; fe c1 ; 0xf1d85 ata.c:126 + jmp short 01d6ch ; eb e3 ; 0xf1d87 + mov es, di ; 8e c7 ; 0xf1d89 ata.c:128 + mov byte [es:si+0024eh], 000h ; 26 c6 84 4e 02 00 ; 0xf1d8b + mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf1d91 ata.c:129 + pop bp ; 5d ; 0xf1d97 ata.c:130 + pop di ; 5f ; 0xf1d98 + pop si ; 5e ; 0xf1d99 + retn ; c3 ; 0xf1d9a + ; disGetNextSymbol 0xf1d9b LB 0x90bd -> off=0x0 cb=00000000000000e9 uValue=00000000000f079b 'ata_reset' +ata_reset: ; 0xf1d9b LB 0xe9 + push bp ; 55 ; 0xf1d9b ata.c:138 + mov bp, sp ; 89 e5 ; 0xf1d9c + push bx ; 53 ; 0xf1d9e + push cx ; 51 ; 0xf1d9f + push dx ; 52 ; 0xf1da0 + push si ; 56 ; 0xf1da1 + push di ; 57 ; 0xf1da2 + push ax ; 50 ; 0xf1da3 + push ax ; 50 ; 0xf1da4 + push ax ; 50 ; 0xf1da5 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1da6 ata.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf1da9 + mov es, ax ; 8e c0 ; 0xf1dac + mov bx, word [es:bx] ; 26 8b 1f ; 0xf1dae + mov word [bp-00eh], strict word 0005eh ; c7 46 f2 5e 00 ; 0xf1db1 ata.c:59 + mov di, bx ; 89 df ; 0xf1db6 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1db8 ata.c:147 + shr ax, 1 ; d1 e8 ; 0xf1dbb + mov ah, byte [bp-010h] ; 8a 66 f0 ; 0xf1dbd ata.c:148 + and ah, 001h ; 80 e4 01 ; 0xf1dc0 + mov byte [bp-00ch], ah ; 88 66 f4 ; 0xf1dc3 + xor ah, ah ; 30 e4 ; 0xf1dc6 ata.c:150 + mov dx, strict word 00006h ; ba 06 00 ; 0xf1dc8 + imul dx ; f7 ea ; 0xf1dcb + mov es, bx ; 8e c3 ; 0xf1dcd + mov bx, ax ; 89 c3 ; 0xf1dcf + add bx, strict byte 0005eh ; 83 c3 5e ; 0xf1dd1 + mov cx, word [es:bx+0027ah] ; 26 8b 8f 7a 02 ; 0xf1dd4 + mov si, word [es:bx+0027ch] ; 26 8b b7 7c 02 ; 0xf1dd9 ata.c:151 + lea dx, [si+006h] ; 8d 54 06 ; 0xf1dde ata.c:156 + mov AL, strict byte 00eh ; b0 0e ; 0xf1de1 + out DX, AL ; ee ; 0xf1de3 + mov bx, 000ffh ; bb ff 00 ; 0xf1de4 ata.c:159 + dec bx ; 4b ; 0xf1de7 ata.c:160 + test bx, bx ; 85 db ; 0xf1de8 + jbe short 01df8h ; 76 0c ; 0xf1dea + mov dx, cx ; 89 ca ; 0xf1dec ata.c:161 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1dee + in AL, DX ; ec ; 0xf1df1 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1df2 + test AL, strict byte 080h ; a8 80 ; 0xf1df4 ata.c:162 + je short 01de7h ; 74 ef ; 0xf1df6 + lea dx, [si+006h] ; 8d 54 06 ; 0xf1df8 ata.c:167 + mov AL, strict byte 00ah ; b0 0a ; 0xf1dfb + out DX, AL ; ee ; 0xf1dfd + mov bx, strict word 0ffffh ; bb ff ff ; 0xf1dfe ata.c:170 + dec bx ; 4b ; 0xf1e01 ata.c:171 + test bx, bx ; 85 db ; 0xf1e02 + jbe short 01e1ch ; 76 16 ; 0xf1e04 + mov dx, cx ; 89 ca ; 0xf1e06 ata.c:172 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1e08 + in AL, DX ; ec ; 0xf1e0b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1e0c + test AL, strict byte 080h ; a8 80 ; 0xf1e0e ata.c:173 + je short 01e1ch ; 74 0a ; 0xf1e10 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf1e12 ata.c:175 + dec ax ; 48 ; 0xf1e15 ata.c:176 + test ax, ax ; 85 c0 ; 0xf1e16 + jnbe short 01e15h ; 77 fb ; 0xf1e18 + jmp short 01e01h ; eb e5 ; 0xf1e1a ata.c:179 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1e1c ata.c:181 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf1e1f + imul dx ; f7 ea ; 0xf1e22 + mov es, di ; 8e c7 ; 0xf1e24 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf1e26 + add bx, ax ; 01 c3 ; 0xf1e29 + cmp byte [es:bx+01eh], 000h ; 26 80 7f 1e 00 ; 0xf1e2b + je short 01e74h ; 74 42 ; 0xf1e30 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf1e32 ata.c:184 + je short 01e3dh ; 74 05 ; 0xf1e36 + mov ax, 000b0h ; b8 b0 00 ; 0xf1e38 + jmp short 01e40h ; eb 03 ; 0xf1e3b + mov ax, 000a0h ; b8 a0 00 ; 0xf1e3d + mov dx, cx ; 89 ca ; 0xf1e40 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf1e42 + out DX, AL ; ee ; 0xf1e45 + mov dx, cx ; 89 ca ; 0xf1e46 ata.c:185 + inc dx ; 42 ; 0xf1e48 + inc dx ; 42 ; 0xf1e49 + in AL, DX ; ec ; 0xf1e4a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1e4b + mov bx, ax ; 89 c3 ; 0xf1e4d + mov dx, cx ; 89 ca ; 0xf1e4f ata.c:186 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf1e51 + in AL, DX ; ec ; 0xf1e54 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1e55 + cmp bl, 001h ; 80 fb 01 ; 0xf1e57 ata.c:188 + jne short 01e74h ; 75 18 ; 0xf1e5a + cmp al, bl ; 38 d8 ; 0xf1e5c + jne short 01e74h ; 75 14 ; 0xf1e5e + mov bx, strict word 00010h ; bb 10 00 ; 0xf1e60 ata.c:190 + dec bx ; 4b ; 0xf1e63 ata.c:191 + test bx, bx ; 85 db ; 0xf1e64 + jbe short 01e74h ; 76 0c ; 0xf1e66 + mov dx, cx ; 89 ca ; 0xf1e68 ata.c:192 + 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 040h ; a8 40 ; 0xf1e70 ata.c:193 + je short 01e63h ; 74 ef ; 0xf1e72 + lea dx, [si+006h] ; 8d 54 06 ; 0xf1e74 ata.c:200 + mov AL, strict byte 008h ; b0 08 ; 0xf1e77 + out DX, AL ; ee ; 0xf1e79 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1e7a ata.c:201 + pop di ; 5f ; 0xf1e7d + pop si ; 5e ; 0xf1e7e + pop dx ; 5a ; 0xf1e7f + pop cx ; 59 ; 0xf1e80 + pop bx ; 5b ; 0xf1e81 + pop bp ; 5d ; 0xf1e82 + retn ; c3 ; 0xf1e83 + ; disGetNextSymbol 0xf1e84 LB 0x8fd4 -> off=0x0 cb=00000000000002b7 uValue=00000000000f0884 'ata_cmd_data_in' +ata_cmd_data_in: ; 0xf1e84 LB 0x2b7 + push bp ; 55 ; 0xf1e84 ata.c:215 + mov bp, sp ; 89 e5 ; 0xf1e85 + push si ; 56 ; 0xf1e87 + push di ; 57 ; 0xf1e88 + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf1e89 + push ax ; 50 ; 0xf1e8c + push dx ; 52 ; 0xf1e8d + push bx ; 53 ; 0xf1e8e + push cx ; 51 ; 0xf1e8f + mov es, dx ; 8e c2 ; 0xf1e90 ata.c:225 + mov bx, ax ; 89 c3 ; 0xf1e92 + mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf1e94 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf1e98 + mov bl, al ; 88 c3 ; 0xf1e9b ata.c:227 + xor bh, ah ; 30 e7 ; 0xf1e9d + mov ax, bx ; 89 d8 ; 0xf1e9f + cwd ; 99 ; 0xf1ea1 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf1ea2 + sar ax, 1 ; d1 f8 ; 0xf1ea4 + mov dx, strict word 00006h ; ba 06 00 ; 0xf1ea6 + imul dx ; f7 ea ; 0xf1ea9 + mov di, word [bp-016h] ; 8b 7e ea ; 0xf1eab + add di, ax ; 01 c7 ; 0xf1eae + mov ax, word [es:di+0027ah] ; 26 8b 85 7a 02 ; 0xf1eb0 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1eb5 + mov ax, word [es:di+0027ch] ; 26 8b 85 7c 02 ; 0xf1eb8 ata.c:228 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1ebd + mov ax, bx ; 89 d8 ; 0xf1ec0 ata.c:230 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf1ec2 + imul dx ; f7 ea ; 0xf1ec5 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1ec7 + add bx, ax ; 01 c3 ; 0xf1eca + mov ax, word [es:bx+024h] ; 26 8b 47 24 ; 0xf1ecc + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1ed0 + test ax, ax ; 85 c0 ; 0xf1ed3 ata.c:231 + jne short 01edeh ; 75 07 ; 0xf1ed5 + mov word [bp-00eh], 08000h ; c7 46 f2 00 80 ; 0xf1ed7 ata.c:237 + jmp short 01ee1h ; eb 03 ; 0xf1edc ata.c:238 + shr word [bp-00eh], 1 ; d1 6e f2 ; 0xf1ede ata.c:244 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1ee1 ata.c:247 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1ee4 + in AL, DX ; ec ; 0xf1ee7 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1ee8 + test AL, strict byte 080h ; a8 80 ; 0xf1eea ata.c:248 + je short 01efdh ; 74 0f ; 0xf1eec + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1eee ata.c:252 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf1ef1 + mov AL, strict byte 008h ; b0 08 ; 0xf1ef4 + out DX, AL ; ee ; 0xf1ef6 + mov ax, strict word 00001h ; b8 01 00 ; 0xf1ef7 ata.c:253 + jmp near 02134h ; e9 37 02 ; 0xf1efa + mov es, [bp-018h] ; 8e 46 e8 ; 0xf1efd ata.c:256 + mov di, word [bp-016h] ; 8b 7e ea ; 0xf1f00 + mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf1f03 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f07 + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf1f0a + mov word [bp-012h], ax ; 89 46 ee ; 0xf1f0e + mov al, byte [es:bx+016h] ; 26 8a 47 16 ; 0xf1f11 ata.c:257 + mov byte [bp-006h], al ; 88 46 fa ; 0xf1f15 + mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf1f18 ata.c:258 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf1f1c + mov bl, byte [es:bx+014h] ; 26 8a 5f 14 ; 0xf1f1f ata.c:259 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1f23 ata.c:262 + test al, al ; 84 c0 ; 0xf1f26 + je short 01f2dh ; 74 03 ; 0xf1f28 + jmp near 02012h ; e9 e5 00 ; 0xf1f2a + xor ah, ah ; 30 e4 ; 0xf1f2d ata.c:263 + xor bx, bx ; 31 db ; 0xf1f2f + mov word [bp-014h], bx ; 89 5e ec ; 0xf1f31 + mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f34 + mov cx, word [es:si] ; 26 8b 0c ; 0xf1f37 + add cx, word [bp-01ch] ; 03 4e e4 ; 0xf1f3a + adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf1f3d + adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf1f41 + mov dx, word [es:si+006h] ; 26 8b 54 06 ; 0xf1f45 + adc dx, word [bp-014h] ; 13 56 ec ; 0xf1f49 + test dx, dx ; 85 d2 ; 0xf1f4c + jnbe short 01f62h ; 77 12 ; 0xf1f4e + je short 01f55h ; 74 03 ; 0xf1f50 + jmp near 01fc8h ; e9 73 00 ; 0xf1f52 + test bx, bx ; 85 db ; 0xf1f55 + jnbe short 01f62h ; 77 09 ; 0xf1f57 + jne short 01fc8h ; 75 6d ; 0xf1f59 + cmp ax, 01000h ; 3d 00 10 ; 0xf1f5b + jnbe short 01f62h ; 77 02 ; 0xf1f5e + jne short 01fc8h ; 75 66 ; 0xf1f60 + mov bx, si ; 89 f3 ; 0xf1f62 ata.c:265 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f64 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f68 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f6c + mov dx, word [es:si] ; 26 8b 14 ; 0xf1f70 + mov si, strict word 00018h ; be 18 00 ; 0xf1f73 + call 0ab10h ; e8 97 8b ; 0xf1f76 + xor dh, dh ; 30 f6 ; 0xf1f79 + mov word [bp-014h], dx ; 89 56 ec ; 0xf1f7b + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f7e ata.c:266 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f81 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f85 + mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f89 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f8c + mov dx, word [es:si] ; 26 8b 14 ; 0xf1f90 + mov si, strict word 00020h ; be 20 00 ; 0xf1f93 + call 0ab10h ; e8 77 8b ; 0xf1f96 + mov bx, dx ; 89 d3 ; 0xf1f99 + mov word [bp-010h], dx ; 89 56 f0 ; 0xf1f9b + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf1f9e ata.c:267 + mov al, ah ; 88 e0 ; 0xf1fa1 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fa3 + inc dx ; 42 ; 0xf1fa6 + inc dx ; 42 ; 0xf1fa7 + out DX, AL ; ee ; 0xf1fa8 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fa9 ata.c:268 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf1fac + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf1faf + out DX, AL ; ee ; 0xf1fb2 + xor bh, bh ; 30 ff ; 0xf1fb3 ata.c:269 + mov ax, bx ; 89 d8 ; 0xf1fb5 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fb7 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf1fba + out DX, AL ; ee ; 0xf1fbd + mov al, byte [bp-00fh] ; 8a 46 f1 ; 0xf1fbe ata.c:270 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fc1 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf1fc4 + out DX, AL ; ee ; 0xf1fc7 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf1fc8 ata.c:274 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1fcb + mov ax, word [es:bx] ; 26 8b 07 ; 0xf1fce + mov byte [bp-006h], al ; 88 46 fa ; 0xf1fd1 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1fd4 ata.c:275 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1fd8 + mov si, word [bp-016h] ; 8b 76 ea ; 0xf1fdc + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1fdf + mov dx, word [es:si] ; 26 8b 14 ; 0xf1fe3 + mov si, strict word 00008h ; be 08 00 ; 0xf1fe6 + call 0ab10h ; e8 24 8b ; 0xf1fe9 + mov word [bp-010h], dx ; 89 56 f0 ; 0xf1fec + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1fef ata.c:276 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1ff2 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1ff6 + mov si, word [bp-016h] ; 8b 76 ea ; 0xf1ffa + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1ffd + mov dx, word [es:si] ; 26 8b 14 ; 0xf2001 + mov si, strict word 00018h ; be 18 00 ; 0xf2004 + call 0ab10h ; e8 06 8b ; 0xf2007 + mov bl, dl ; 88 d3 ; 0xf200a + and bl, 00fh ; 80 e3 0f ; 0xf200c + or bl, 040h ; 80 cb 40 ; 0xf200f + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2012 ata.c:279 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2015 + mov AL, strict byte 00ah ; b0 0a ; 0xf2018 + out DX, AL ; ee ; 0xf201a + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf201b ata.c:280 + inc dx ; 42 ; 0xf201e + xor al, al ; 30 c0 ; 0xf201f + out DX, AL ; ee ; 0xf2021 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2022 ata.c:281 + inc dx ; 42 ; 0xf2025 + inc dx ; 42 ; 0xf2026 + mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf2027 + out DX, AL ; ee ; 0xf202a + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf202b ata.c:282 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf202e + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2031 + out DX, AL ; ee ; 0xf2034 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf2035 ata.c:283 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2038 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf203b + out DX, AL ; ee ; 0xf203e + mov al, byte [bp-00fh] ; 8a 46 f1 ; 0xf203f ata.c:284 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2042 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2045 + out DX, AL ; ee ; 0xf2048 + test byte [bp-008h], 001h ; f6 46 f8 01 ; 0xf2049 ata.c:285 + je short 02054h ; 74 05 ; 0xf204d + mov ax, 000b0h ; b8 b0 00 ; 0xf204f + jmp short 02057h ; eb 03 ; 0xf2052 + mov ax, 000a0h ; b8 a0 00 ; 0xf2054 + mov dl, bl ; 88 da ; 0xf2057 + xor dh, dh ; 30 f6 ; 0xf2059 + or ax, dx ; 09 d0 ; 0xf205b + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf205d + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2060 + out DX, AL ; ee ; 0xf2063 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2064 ata.c:286 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2067 + mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf206a + out DX, AL ; ee ; 0xf206d + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf206e ata.c:288 + cmp ax, 000c4h ; 3d c4 00 ; 0xf2071 + je short 0207bh ; 74 05 ; 0xf2074 + cmp ax, strict word 00029h ; 3d 29 00 ; 0xf2076 + jne short 02085h ; 75 0a ; 0xf2079 + mov si, word [bp-01ch] ; 8b 76 e4 ; 0xf207b ata.c:289 + mov word [bp-01ch], strict word 00001h ; c7 46 e4 01 00 ; 0xf207e ata.c:290 + jmp short 02088h ; eb 03 ; 0xf2083 ata.c:291 + mov si, strict word 00001h ; be 01 00 ; 0xf2085 ata.c:292 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2088 ata.c:296 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf208b + in AL, DX ; ec ; 0xf208e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf208f + mov bl, al ; 88 c3 ; 0xf2091 + test AL, strict byte 080h ; a8 80 ; 0xf2093 ata.c:297 + jne short 02088h ; 75 f1 ; 0xf2095 + test AL, strict byte 001h ; a8 01 ; 0xf2097 ata.c:301 + je short 020aah ; 74 0f ; 0xf2099 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf209b ata.c:304 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf209e + mov AL, strict byte 008h ; b0 08 ; 0xf20a1 + out DX, AL ; ee ; 0xf20a3 + mov ax, strict word 00002h ; b8 02 00 ; 0xf20a4 ata.c:305 + jmp near 02134h ; e9 8a 00 ; 0xf20a7 + test bl, 008h ; f6 c3 08 ; 0xf20aa ata.c:306 + jne short 020beh ; 75 0f ; 0xf20ad + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20af ata.c:309 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf20b2 + mov AL, strict byte 008h ; b0 08 ; 0xf20b5 + out DX, AL ; ee ; 0xf20b7 + mov ax, strict word 00003h ; b8 03 00 ; 0xf20b8 ata.c:310 + jmp near 02134h ; e9 76 00 ; 0xf20bb + sti ; fb ; 0xf20be ata.c:315 + cmp di, 0f800h ; 81 ff 00 f8 ; 0xf20bf ata.c:320 + jc short 020d2h ; 72 0d ; 0xf20c3 + sub di, 00800h ; 81 ef 00 08 ; 0xf20c5 ata.c:321 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf20c9 + add ax, 00080h ; 05 80 00 ; 0xf20cc + mov word [bp-012h], ax ; 89 46 ee ; 0xf20cf + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf20d2 ata.c:328 + mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf20d5 + mov es, [bp-012h] ; 8e 46 ee ; 0xf20d8 + rep insw ; f3 6d ; 0xf20db + mov es, [bp-018h] ; 8e 46 e8 ; 0xf20dd ata.c:329 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf20e0 + add word [es:bx+018h], si ; 26 01 77 18 ; 0xf20e3 + dec word [bp-01ch] ; ff 4e e4 ; 0xf20e7 ata.c:330 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf20ea ata.c:332 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf20ed + in AL, DX ; ec ; 0xf20f0 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf20f1 + mov bl, al ; 88 c3 ; 0xf20f3 + test AL, strict byte 080h ; a8 80 ; 0xf20f5 ata.c:333 + jne short 020eah ; 75 f1 ; 0xf20f7 + cmp word [bp-01ch], strict byte 00000h ; 83 7e e4 00 ; 0xf20f9 ata.c:336 + jne short 02113h ; 75 14 ; 0xf20fd + and AL, strict byte 0c9h ; 24 c9 ; 0xf20ff ata.c:337 + cmp AL, strict byte 040h ; 3c 40 ; 0xf2101 + je short 02129h ; 74 24 ; 0xf2103 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2105 ata.c:341 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2108 + mov AL, strict byte 008h ; b0 08 ; 0xf210b + out DX, AL ; ee ; 0xf210d + mov ax, strict word 00004h ; b8 04 00 ; 0xf210e ata.c:342 + jmp short 02134h ; eb 21 ; 0xf2111 + mov al, bl ; 88 d8 ; 0xf2113 ata.c:347 + and AL, strict byte 0c9h ; 24 c9 ; 0xf2115 + cmp AL, strict byte 048h ; 3c 48 ; 0xf2117 + je short 020bfh ; 74 a4 ; 0xf2119 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf211b ata.c:351 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf211e + mov AL, strict byte 008h ; b0 08 ; 0xf2121 + out DX, AL ; ee ; 0xf2123 + mov ax, strict word 00005h ; b8 05 00 ; 0xf2124 ata.c:352 + jmp short 02134h ; eb 0b ; 0xf2127 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2129 ata.c:358 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf212c + mov AL, strict byte 008h ; b0 08 ; 0xf212f + out DX, AL ; ee ; 0xf2131 + xor ax, ax ; 31 c0 ; 0xf2132 ata.c:359 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2134 ata.c:360 + pop di ; 5f ; 0xf2137 + pop si ; 5e ; 0xf2138 + pop bp ; 5d ; 0xf2139 + retn ; c3 ; 0xf213a + ; disGetNextSymbol 0xf213b LB 0x8d1d -> off=0x0 cb=0000000000000094 uValue=00000000000f0b3b 'ata_signature' +ata_signature: ; 0xf213b LB 0x94 + push bp ; 55 ; 0xf213b ata.c:366 + mov bp, sp ; 89 e5 ; 0xf213c + push cx ; 51 ; 0xf213e + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf213f + mov cx, ax ; 89 c1 ; 0xf2142 + mov al, bl ; 88 d8 ; 0xf2144 + xor bx, bx ; 31 db ; 0xf2146 ata.c:368 + test al, al ; 84 c0 ; 0xf2148 ata.c:376 + je short 02151h ; 74 05 ; 0xf214a + mov ax, 000b0h ; b8 b0 00 ; 0xf214c + jmp short 02154h ; eb 03 ; 0xf214f + mov ax, 000a0h ; b8 a0 00 ; 0xf2151 + mov dx, cx ; 89 ca ; 0xf2154 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2156 + out DX, AL ; ee ; 0xf2159 + mov dx, cx ; 89 ca ; 0xf215a ata.c:378 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf215c + in AL, DX ; ec ; 0xf215f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2160 + mov byte [bp-006h], al ; 88 46 fa ; 0xf2162 + test AL, strict byte 080h ; a8 80 ; 0xf2165 ata.c:379 + jne short 0215ah ; 75 f1 ; 0xf2167 + mov dx, cx ; 89 ca ; 0xf2169 ata.c:387 + inc dx ; 42 ; 0xf216b + inc dx ; 42 ; 0xf216c + in AL, DX ; ec ; 0xf216d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf216e + mov word [bp-008h], ax ; 89 46 f8 ; 0xf2170 + mov dx, cx ; 89 ca ; 0xf2173 ata.c:388 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf2175 + in AL, DX ; ec ; 0xf2178 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2179 + cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf217b ata.c:389 + jne short 021c7h ; 75 46 ; 0xf217f + cmp AL, strict byte 001h ; 3c 01 ; 0xf2181 + jne short 021c7h ; 75 42 ; 0xf2183 + mov dx, cx ; 89 ca ; 0xf2185 ata.c:390 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2187 + in AL, DX ; ec ; 0xf218a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf218b + mov word [bp-008h], ax ; 89 46 f8 ; 0xf218d + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2190 + mov byte [bp-004h], al ; 88 46 fc ; 0xf2193 + mov dx, cx ; 89 ca ; 0xf2196 ata.c:391 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2198 + in AL, DX ; ec ; 0xf219b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf219c + mov dl, al ; 88 c2 ; 0xf219e + cmp byte [bp-008h], 014h ; 80 7e f8 14 ; 0xf21a0 ata.c:398 + jne short 021afh ; 75 09 ; 0xf21a4 + cmp AL, strict byte 0ebh ; 3c eb ; 0xf21a6 + jne short 021afh ; 75 05 ; 0xf21a8 + mov bx, strict word 00003h ; bb 03 00 ; 0xf21aa ata.c:399 + jmp short 021c7h ; eb 18 ; 0xf21ad ata.c:401 + cmp byte [bp-004h], 000h ; 80 7e fc 00 ; 0xf21af + jne short 021c4h ; 75 0f ; 0xf21b3 + test dl, dl ; 84 d2 ; 0xf21b5 + jne short 021c4h ; 75 0b ; 0xf21b7 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf21b9 ata.c:402 + je short 021c7h ; 74 08 ; 0xf21bd + mov bx, strict word 00002h ; bb 02 00 ; 0xf21bf ata.c:403 + jmp short 021c7h ; eb 03 ; 0xf21c2 ata.c:408 + mov bx, strict word 00001h ; bb 01 00 ; 0xf21c4 ata.c:409 + mov ax, bx ; 89 d8 ; 0xf21c7 ata.c:416 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf21c9 + pop cx ; 59 ; 0xf21cc + pop bp ; 5d ; 0xf21cd + retn ; c3 ; 0xf21ce + ; disGetNextSymbol 0xf21cf LB 0x8c89 -> off=0x0 cb=0000000000000631 uValue=00000000000f0bcf 'ata_detect' +ata_detect: ; 0xf21cf LB 0x631 + push bp ; 55 ; 0xf21cf ata.c:418 + mov bp, sp ; 89 e5 ; 0xf21d0 + push si ; 56 ; 0xf21d2 + push di ; 57 ; 0xf21d3 + sub sp, 00260h ; 81 ec 60 02 ; 0xf21d4 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf21d8 ata.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf21db + mov es, ax ; 8e c0 ; 0xf21de + mov ax, word [es:bx] ; 26 8b 07 ; 0xf21e0 + mov word [bp-02ch], ax ; 89 46 d4 ; 0xf21e3 ata.c:59 + mov bx, strict word 0005eh ; bb 5e 00 ; 0xf21e6 ata.c:441 + mov es, ax ; 8e c0 ; 0xf21e9 + mov word [bp-028h], bx ; 89 5e d8 ; 0xf21eb + mov word [bp-026h], ax ; 89 46 da ; 0xf21ee + mov byte [es:bx+00278h], 000h ; 26 c6 87 78 02 00 ; 0xf21f1 ata.c:444 + mov word [es:bx+0027ah], 001f0h ; 26 c7 87 7a 02 f0 01 ; 0xf21f7 ata.c:445 + mov word [es:bx+0027ch], 003f0h ; 26 c7 87 7c 02 f0 03 ; 0xf21fe ata.c:446 + mov byte [es:bx+00279h], 00eh ; 26 c6 87 79 02 0e ; 0xf2205 ata.c:447 + mov byte [es:bx+0027eh], 000h ; 26 c6 87 7e 02 00 ; 0xf220b ata.c:450 + mov word [es:bx+00280h], 00170h ; 26 c7 87 80 02 70 01 ; 0xf2211 ata.c:451 + mov word [es:bx+00282h], 00370h ; 26 c7 87 82 02 70 03 ; 0xf2218 ata.c:452 + mov byte [es:bx+0027fh], 00fh ; 26 c6 87 7f 02 0f ; 0xf221f ata.c:453 + mov byte [es:bx+00284h], 000h ; 26 c6 87 84 02 00 ; 0xf2225 ata.c:456 + mov word [es:bx+00286h], 001e8h ; 26 c7 87 86 02 e8 01 ; 0xf222b ata.c:457 + mov word [es:bx+00288h], 003e0h ; 26 c7 87 88 02 e0 03 ; 0xf2232 ata.c:458 + mov byte [es:bx+00285h], 00ch ; 26 c6 87 85 02 0c ; 0xf2239 ata.c:459 + mov byte [es:bx+0028ah], 000h ; 26 c6 87 8a 02 00 ; 0xf223f ata.c:462 + mov word [es:bx+0028ch], 00168h ; 26 c7 87 8c 02 68 01 ; 0xf2245 ata.c:463 + mov word [es:bx+0028eh], 00360h ; 26 c7 87 8e 02 60 03 ; 0xf224c ata.c:464 + mov byte [es:bx+0028bh], 00bh ; 26 c6 87 8b 02 0b ; 0xf2253 ata.c:465 + xor al, al ; 30 c0 ; 0xf2259 ata.c:472 + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf225b + mov byte [bp-012h], al ; 88 46 ee ; 0xf225e + mov byte [bp-010h], al ; 88 46 f0 ; 0xf2261 ata.c:474 + jmp near 0278eh ; e9 27 05 ; 0xf2264 + test cl, cl ; 84 c9 ; 0xf2267 ata.c:519 + jne short 022d5h ; 75 6a ; 0xf2269 + lea dx, [di+006h] ; 8d 55 06 ; 0xf226b ata.c:520 + mov AL, strict byte 00eh ; b0 0e ; 0xf226e + out DX, AL ; ee ; 0xf2270 + mov bx, strict word 00020h ; bb 20 00 ; 0xf2271 ata.c:526 + dec bx ; 4b ; 0xf2274 ata.c:527 + test bx, bx ; 85 db ; 0xf2275 + jbe short 02283h ; 76 0a ; 0xf2277 + lea dx, [si+007h] ; 8d 54 07 ; 0xf2279 ata.c:528 + in AL, DX ; ec ; 0xf227c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf227d + test AL, strict byte 080h ; a8 80 ; 0xf227f ata.c:529 + je short 02274h ; 74 f1 ; 0xf2281 + lea dx, [di+006h] ; 8d 55 06 ; 0xf2283 ata.c:533 + mov AL, strict byte 00ah ; b0 0a ; 0xf2286 + out DX, AL ; ee ; 0xf2288 + mov cl, byte [bp-018h] ; 8a 4e e8 ; 0xf2289 ata.c:540 + xor ch, ch ; 30 ed ; 0xf228c + xor bx, bx ; 31 db ; 0xf228e + mov dx, cx ; 89 ca ; 0xf2290 + mov ax, si ; 89 f0 ; 0xf2292 + call 0213bh ; e8 a4 fe ; 0xf2294 + mov word [bp-034h], ax ; 89 46 cc ; 0xf2297 + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf229a + mov byte [bp-030h], al ; 88 46 d0 ; 0xf229d + mov byte [bp-02fh], ch ; 88 6e d1 ; 0xf22a0 + mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf22a3 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf22a6 + imul dx ; f7 ea ; 0xf22a9 + les bx, [bp-028h] ; c4 5e d8 ; 0xf22ab + add bx, ax ; 01 c3 ; 0xf22ae + mov al, byte [bp-034h] ; 8a 46 cc ; 0xf22b0 + mov byte [es:bx+01eh], al ; 26 88 47 1e ; 0xf22b3 + mov bx, strict word 00001h ; bb 01 00 ; 0xf22b7 ata.c:541 + mov dx, cx ; 89 ca ; 0xf22ba + mov ax, si ; 89 f0 ; 0xf22bc + call 0213bh ; e8 7a fe ; 0xf22be + mov cx, ax ; 89 c1 ; 0xf22c1 + mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf22c3 + inc ax ; 40 ; 0xf22c6 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf22c7 + imul dx ; f7 ea ; 0xf22ca + les bx, [bp-028h] ; c4 5e d8 ; 0xf22cc + add bx, ax ; 01 c3 ; 0xf22cf + mov byte [es:bx+01eh], cl ; 26 88 4f 1e ; 0xf22d1 + lea dx, [di+006h] ; 8d 55 06 ; 0xf22d5 ata.c:545 + mov AL, strict byte 008h ; b0 08 ; 0xf22d8 + out DX, AL ; ee ; 0xf22da + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf22db ata.c:547 + xor ah, ah ; 30 e4 ; 0xf22de + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf22e0 + imul dx ; f7 ea ; 0xf22e3 + les bx, [bp-028h] ; c4 5e d8 ; 0xf22e5 + add bx, ax ; 01 c3 ; 0xf22e8 + mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf22ea + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf22ee + cmp AL, strict byte 002h ; 3c 02 ; 0xf22f1 ata.c:550 + jne short 02341h ; 75 4c ; 0xf22f3 + mov byte [es:bx+01fh], 0ffh ; 26 c6 47 1f ff ; 0xf22f5 ata.c:558 + mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf22fa ata.c:559 + lea dx, [bp-00264h] ; 8d 96 9c fd ; 0xf22ff ata.c:560 + mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf2303 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf2306 + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf230a + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf230e ata.c:561 + mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf2311 + mov cx, strict word 00001h ; b9 01 00 ; 0xf2315 ata.c:563 + mov bx, 000ech ; bb ec 00 ; 0xf2318 + mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf231b + mov dx, es ; 8c c2 ; 0xf231e + call 01e84h ; e8 61 fb ; 0xf2320 + test ax, ax ; 85 c0 ; 0xf2323 + je short 02335h ; 74 0e ; 0xf2325 + mov ax, 0015ch ; b8 5c 01 ; 0xf2327 ata.c:564 + push ax ; 50 ; 0xf232a + mov ax, strict word 00007h ; b8 07 00 ; 0xf232b + push ax ; 50 ; 0xf232e + call 0195ch ; e8 2a f6 ; 0xf232f + add sp, strict byte 00004h ; 83 c4 04 ; 0xf2332 + test byte [bp-00264h], 080h ; f6 86 9c fd 80 ; 0xf2335 ata.c:566 + je short 02344h ; 74 08 ; 0xf233a + mov ax, strict word 00001h ; b8 01 00 ; 0xf233c + jmp short 02346h ; eb 05 ; 0xf233f + jmp near 02545h ; e9 01 02 ; 0xf2341 + xor ax, ax ; 31 c0 ; 0xf2344 + mov byte [bp-014h], al ; 88 46 ec ; 0xf2346 + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf2349 ata.c:570 + mov word [bp-02eh], 00200h ; c7 46 d2 00 02 ; 0xf234d ata.c:572 + mov ax, word [bp-00262h] ; 8b 86 9e fd ; 0xf2352 ata.c:574 + mov word [bp-024h], ax ; 89 46 dc ; 0xf2356 + mov ax, word [bp-0025eh] ; 8b 86 a2 fd ; 0xf2359 ata.c:575 + mov word [bp-02ah], ax ; 89 46 d6 ; 0xf235d + mov ax, word [bp-00258h] ; 8b 86 a8 fd ; 0xf2360 ata.c:576 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf2364 + mov si, word [bp-001ech] ; 8b b6 14 fe ; 0xf2367 ata.c:578 + mov ax, word [bp-001eah] ; 8b 86 16 fe ; 0xf236b + mov word [bp-022h], ax ; 89 46 de ; 0xf236f + xor ax, ax ; 31 c0 ; 0xf2372 + mov word [bp-020h], ax ; 89 46 e0 ; 0xf2374 + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf2377 + cmp word [bp-022h], 00fffh ; 81 7e de ff 0f ; 0xf237a ata.c:579 + jne short 0239fh ; 75 1e ; 0xf237f + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf2381 + jne short 0239fh ; 75 19 ; 0xf2384 + mov ax, word [bp-00196h] ; 8b 86 6a fe ; 0xf2386 ata.c:580 + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf238a + mov ax, word [bp-00198h] ; 8b 86 68 fe ; 0xf238d + mov word [bp-020h], ax ; 89 46 e0 ; 0xf2391 + mov ax, word [bp-0019ah] ; 8b 86 66 fe ; 0xf2394 + mov word [bp-022h], ax ; 89 46 de ; 0xf2398 + mov si, word [bp-0019ch] ; 8b b6 64 fe ; 0xf239b + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf239f ata.c:581 + cmp AL, strict byte 001h ; 3c 01 ; 0xf23a2 + jc short 023b2h ; 72 0c ; 0xf23a4 + jbe short 023bah ; 76 12 ; 0xf23a6 + cmp AL, strict byte 003h ; 3c 03 ; 0xf23a8 + je short 023c2h ; 74 16 ; 0xf23aa + cmp AL, strict byte 002h ; 3c 02 ; 0xf23ac + je short 023beh ; 74 0e ; 0xf23ae + jmp short 023eah ; eb 38 ; 0xf23b0 + test al, al ; 84 c0 ; 0xf23b2 + jne short 023eah ; 75 34 ; 0xf23b4 + mov BL, strict byte 01eh ; b3 1e ; 0xf23b6 ata.c:584 + jmp short 023c4h ; eb 0a ; 0xf23b8 ata.c:585 + mov BL, strict byte 026h ; b3 26 ; 0xf23ba ata.c:587 + jmp short 023c4h ; eb 06 ; 0xf23bc ata.c:588 + mov BL, strict byte 067h ; b3 67 ; 0xf23be ata.c:590 + jmp short 023c4h ; eb 02 ; 0xf23c0 ata.c:591 + mov BL, strict byte 070h ; b3 70 ; 0xf23c2 ata.c:593 + mov al, bl ; 88 d8 ; 0xf23c4 ata.c:600 + xor ah, ah ; 30 e4 ; 0xf23c6 + call 0169ch ; e8 d1 f2 ; 0xf23c8 + mov word [bp-038h], ax ; 89 46 c8 ; 0xf23cb + mov al, bl ; 88 d8 ; 0xf23ce ata.c:601 + add AL, strict byte 002h ; 04 02 ; 0xf23d0 + xor ah, ah ; 30 e4 ; 0xf23d2 + call 01664h ; e8 8d f2 ; 0xf23d4 + xor ah, ah ; 30 e4 ; 0xf23d7 + mov word [bp-03ah], ax ; 89 46 c6 ; 0xf23d9 + mov al, bl ; 88 d8 ; 0xf23dc ata.c:602 + add AL, strict byte 007h ; 04 07 ; 0xf23de + call 01664h ; e8 81 f2 ; 0xf23e0 + xor ah, ah ; 30 e4 ; 0xf23e3 + mov word [bp-036h], ax ; 89 46 ca ; 0xf23e5 + jmp short 023fch ; eb 12 ; 0xf23e8 ata.c:604 + push word [bp-01eh] ; ff 76 e2 ; 0xf23ea ata.c:605 + push word [bp-020h] ; ff 76 e0 ; 0xf23ed + push word [bp-022h] ; ff 76 de ; 0xf23f0 + push si ; 56 ; 0xf23f3 + mov dx, ss ; 8c d2 ; 0xf23f4 + lea ax, [bp-03ah] ; 8d 46 c6 ; 0xf23f6 + call 05891h ; e8 95 34 ; 0xf23f9 + mov bx, 00dcch ; bb cc 0d ; 0xf23fc ata.c:608 + mov cx, ds ; 8c d9 ; 0xf23ff + mov ax, strict word 00004h ; b8 04 00 ; 0xf2401 + call 01919h ; e8 12 f5 ; 0xf2404 + mov ax, word [bp-036h] ; 8b 46 ca ; 0xf2407 + push ax ; 50 ; 0xf240a + mov ax, word [bp-03ah] ; 8b 46 c6 ; 0xf240b + push ax ; 50 ; 0xf240e + mov ax, word [bp-038h] ; 8b 46 c8 ; 0xf240f + push ax ; 50 ; 0xf2412 + push word [bp-01ch] ; ff 76 e4 ; 0xf2413 + push word [bp-02ah] ; ff 76 d6 ; 0xf2416 + push word [bp-024h] ; ff 76 dc ; 0xf2419 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf241c + xor ah, ah ; 30 e4 ; 0xf241f + push ax ; 50 ; 0xf2421 + mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf2422 + push ax ; 50 ; 0xf2425 + mov ax, 00185h ; b8 85 01 ; 0xf2426 + push ax ; 50 ; 0xf2429 + mov ax, strict word 00004h ; b8 04 00 ; 0xf242a + push ax ; 50 ; 0xf242d + call 0195ch ; e8 2b f5 ; 0xf242e + add sp, strict byte 00014h ; 83 c4 14 ; 0xf2431 + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf2434 ata.c:610 + xor ah, ah ; 30 e4 ; 0xf2437 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2439 + imul dx ; f7 ea ; 0xf243c + les di, [bp-028h] ; c4 7e d8 ; 0xf243e + add di, ax ; 01 c7 ; 0xf2441 + mov byte [es:di+01fh], 0ffh ; 26 c6 45 1f ff ; 0xf2443 + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2448 ata.c:611 + mov byte [es:di+020h], al ; 26 88 45 20 ; 0xf244b + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf244f ata.c:612 + mov byte [es:di+022h], al ; 26 88 45 22 ; 0xf2452 + mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf2456 ata.c:613 + mov word [es:di+024h], ax ; 26 89 45 24 ; 0xf2459 + mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf245d ata.c:614 + mov word [es:di+02ch], ax ; 26 89 45 2c ; 0xf2460 + mov ax, word [bp-024h] ; 8b 46 dc ; 0xf2464 ata.c:615 + mov word [es:di+02eh], ax ; 26 89 45 2e ; 0xf2467 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf246b ata.c:616 + mov word [es:di+030h], ax ; 26 89 45 30 ; 0xf246e + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf2472 ata.c:617 + mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf2475 + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf2479 + mov word [es:di+036h], ax ; 26 89 45 36 ; 0xf247c + mov ax, word [bp-022h] ; 8b 46 de ; 0xf2480 + mov word [es:di+034h], ax ; 26 89 45 34 ; 0xf2483 + mov word [es:di+032h], si ; 26 89 75 32 ; 0xf2487 + lea di, [di+026h] ; 8d 7d 26 ; 0xf248b ata.c:618 + push DS ; 1e ; 0xf248e + push SS ; 16 ; 0xf248f + pop DS ; 1f ; 0xf2490 + lea si, [bp-03ah] ; 8d 76 c6 ; 0xf2491 + movsw ; a5 ; 0xf2494 + movsw ; a5 ; 0xf2495 + movsw ; a5 ; 0xf2496 + pop DS ; 1f ; 0xf2497 + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf2498 ata.c:619 + cmp AL, strict byte 002h ; 3c 02 ; 0xf249b + jnc short 0250fh ; 73 70 ; 0xf249d + test al, al ; 84 c0 ; 0xf249f ata.c:625 + jne short 024a8h ; 75 05 ; 0xf24a1 + mov si, strict word 0003dh ; be 3d 00 ; 0xf24a3 ata.c:626 + jmp short 024abh ; eb 03 ; 0xf24a6 ata.c:627 + mov si, strict word 0004dh ; be 4d 00 ; 0xf24a8 ata.c:628 + mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xf24ab + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf24ae ata.c:640 + xor ah, ah ; 30 e4 ; 0xf24b1 + mov dx, strict word 00005h ; ba 05 00 ; 0xf24b3 + imul dx ; f7 ea ; 0xf24b6 + mov bx, ax ; 89 c3 ; 0xf24b8 + sal bx, 1 ; d1 e3 ; 0xf24ba + sal bx, 1 ; d1 e3 ; 0xf24bc + add bx, 00104h ; 81 c3 04 01 ; 0xf24be + xor ax, ax ; 31 c0 ; 0xf24c2 + mov es, ax ; 8e c0 ; 0xf24c4 + mov word [es:bx], si ; 26 89 37 ; 0xf24c6 ata.c:641 + mov word [es:bx+002h], cx ; 26 89 4f 02 ; 0xf24c9 + mov es, cx ; 8e c1 ; 0xf24cd ata.c:647 + mov word [es:si+00ch], ax ; 26 89 44 0c ; 0xf24cf + mov word [es:si+005h], ax ; 26 89 44 05 ; 0xf24d3 + mov word [es:si+007h], ax ; 26 89 44 07 ; 0xf24d7 + mov bx, word [bp-038h] ; 8b 5e c8 ; 0xf24db ata.c:649 + mov word [es:si], bx ; 26 89 1c ; 0xf24de + mov bl, byte [bp-03ah] ; 8a 5e c6 ; 0xf24e1 ata.c:650 + mov byte [es:si+002h], bl ; 26 88 5c 02 ; 0xf24e4 + mov byte [es:si+003h], 0a0h ; 26 c6 44 03 a0 ; 0xf24e8 ata.c:651 + mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf24ed ata.c:652 + mov byte [es:si+004h], al ; 26 88 44 04 ; 0xf24f0 + mov ax, word [bp-024h] ; 8b 46 dc ; 0xf24f4 ata.c:653 + mov word [es:si+009h], ax ; 26 89 44 09 ; 0xf24f7 + mov al, byte [bp-02ah] ; 8a 46 d6 ; 0xf24fb ata.c:654 + mov byte [es:si+00bh], al ; 26 88 44 0b ; 0xf24fe + mov bl, byte [bp-036h] ; 8a 5e ca ; 0xf2502 ata.c:655 + mov byte [es:si+00eh], bl ; 26 88 5c 0e ; 0xf2505 + xor bl, bl ; 30 db ; 0xf2509 ata.c:656 + xor bh, bh ; 30 ff ; 0xf250b ata.c:657 + jmp short 02516h ; eb 07 ; 0xf250d + jmp short 0252fh ; eb 1e ; 0xf250f + cmp bh, 00fh ; 80 ff 0f ; 0xf2511 + jnc short 02527h ; 73 11 ; 0xf2514 + mov al, bh ; 88 f8 ; 0xf2516 ata.c:658 + xor ah, ah ; 30 e4 ; 0xf2518 + mov es, cx ; 8e c1 ; 0xf251a + mov di, si ; 89 f7 ; 0xf251c + add di, ax ; 01 c7 ; 0xf251e + add bl, byte [es:di] ; 26 02 1d ; 0xf2520 + db 0feh, 0c7h + ; inc bh ; fe c7 ; 0xf2523 + jmp short 02511h ; eb ea ; 0xf2525 + neg bl ; f6 db ; 0xf2527 ata.c:659 + mov es, cx ; 8e c1 ; 0xf2529 ata.c:660 + mov byte [es:si+00fh], bl ; 26 88 5c 0f ; 0xf252b + mov bl, byte [bp-012h] ; 8a 5e ee ; 0xf252f ata.c:664 + xor bh, bh ; 30 ff ; 0xf2532 + mov es, [bp-026h] ; 8e 46 da ; 0xf2534 + add bx, word [bp-028h] ; 03 5e d8 ; 0xf2537 + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf253a + mov byte [es:bx+0024fh], al ; 26 88 87 4f 02 ; 0xf253d + inc byte [bp-012h] ; fe 46 ee ; 0xf2542 ata.c:665 + cmp byte [bp-00ah], 003h ; 80 7e f6 03 ; 0xf2545 ata.c:669 + jne short 025afh ; 75 64 ; 0xf2549 + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf254b ata.c:674 + xor ah, ah ; 30 e4 ; 0xf254e + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2550 + imul dx ; f7 ea ; 0xf2553 + les bx, [bp-028h] ; c4 5e d8 ; 0xf2555 + add bx, ax ; 01 c3 ; 0xf2558 + mov byte [es:bx+01fh], 005h ; 26 c6 47 1f 05 ; 0xf255a + mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf255f ata.c:675 + lea dx, [bp-00264h] ; 8d 96 9c fd ; 0xf2564 ata.c:676 + mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf2568 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf256b + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf256f + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf2573 ata.c:677 + mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf2576 + mov cx, strict word 00001h ; b9 01 00 ; 0xf257a ata.c:679 + mov bx, 000a1h ; bb a1 00 ; 0xf257d + mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf2580 + mov dx, es ; 8c c2 ; 0xf2583 + call 01e84h ; e8 fc f8 ; 0xf2585 + test ax, ax ; 85 c0 ; 0xf2588 + je short 0259ah ; 74 0e ; 0xf258a + mov ax, 001ach ; b8 ac 01 ; 0xf258c ata.c:680 + push ax ; 50 ; 0xf258f + mov ax, strict word 00007h ; b8 07 00 ; 0xf2590 + push ax ; 50 ; 0xf2593 + call 0195ch ; e8 c5 f3 ; 0xf2594 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf2597 + mov al, byte [bp-00263h] ; 8a 86 9d fd ; 0xf259a ata.c:682 + and AL, strict byte 01fh ; 24 1f ; 0xf259e + mov byte [bp-016h], al ; 88 46 ea ; 0xf25a0 + test byte [bp-00264h], 080h ; f6 86 9c fd 80 ; 0xf25a3 ata.c:683 + je short 025b1h ; 74 07 ; 0xf25a8 + mov cx, strict word 00001h ; b9 01 00 ; 0xf25aa + jmp short 025b3h ; eb 04 ; 0xf25ad + jmp short 025ebh ; eb 3a ; 0xf25af + xor cx, cx ; 31 c9 ; 0xf25b1 + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf25b3 ata.c:691 + xor ah, ah ; 30 e4 ; 0xf25b6 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf25b8 + imul dx ; f7 ea ; 0xf25bb + les bx, [bp-028h] ; c4 5e d8 ; 0xf25bd + add bx, ax ; 01 c3 ; 0xf25c0 + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf25c2 + mov byte [es:bx+01fh], al ; 26 88 47 1f ; 0xf25c5 + mov byte [es:bx+020h], cl ; 26 88 4f 20 ; 0xf25c9 ata.c:692 + mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf25cd ata.c:693 + mov word [es:bx+024h], 00800h ; 26 c7 47 24 00 08 ; 0xf25d2 ata.c:694 + mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf25d8 ata.c:697 + xor bh, bh ; 30 ff ; 0xf25db + add bx, word [bp-028h] ; 03 5e d8 ; 0xf25dd + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf25e0 + mov byte [es:bx+00264h], al ; 26 88 87 64 02 ; 0xf25e3 + inc byte [bp-00eh] ; fe 46 f2 ; 0xf25e8 ata.c:698 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf25eb ata.c:707 + cmp AL, strict byte 003h ; 3c 03 ; 0xf25ee + je short 02621h ; 74 2f ; 0xf25f0 + cmp AL, strict byte 002h ; 3c 02 ; 0xf25f2 + jne short 02648h ; 75 52 ; 0xf25f4 + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf25f6 ata.c:709 + xor ah, ah ; 30 e4 ; 0xf25f9 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf25fb + imul dx ; f7 ea ; 0xf25fe + les si, [bp-028h] ; c4 76 d8 ; 0xf2600 + add si, ax ; 01 c6 ; 0xf2603 + mov ax, word [es:si+038h] ; 26 8b 44 38 ; 0xf2605 + mov bx, word [es:si+036h] ; 26 8b 5c 36 ; 0xf2609 + mov cx, word [es:si+034h] ; 26 8b 4c 34 ; 0xf260d + mov dx, word [es:si+032h] ; 26 8b 54 32 ; 0xf2611 + mov si, strict word 0000bh ; be 0b 00 ; 0xf2615 + call 0ab10h ; e8 f5 84 ; 0xf2618 + mov word [bp-032h], dx ; 89 56 ce ; 0xf261b + mov word [bp-01ah], cx ; 89 4e e6 ; 0xf261e + mov dh, byte [bp-001c3h] ; 8a b6 3d fe ; 0xf2621 ata.c:712 + mov dl, byte [bp-001c4h] ; 8a 96 3c fe ; 0xf2625 + mov byte [bp-008h], 00fh ; c6 46 f8 0f ; 0xf2629 ata.c:713 + jmp short 02638h ; eb 09 ; 0xf262d + dec byte [bp-008h] ; fe 4e f8 ; 0xf262f ata.c:716 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2632 + jbe short 02644h ; 76 0c ; 0xf2636 + mov cl, byte [bp-008h] ; 8a 4e f8 ; 0xf2638 + mov ax, strict word 00001h ; b8 01 00 ; 0xf263b + sal ax, CL ; d3 e0 ; 0xf263e + test dx, ax ; 85 c2 ; 0xf2640 + je short 0262fh ; 74 eb ; 0xf2642 + xor si, si ; 31 f6 ; 0xf2644 ata.c:719 + jmp short 0264fh ; eb 07 ; 0xf2646 + jmp short 0267eh ; eb 34 ; 0xf2648 + cmp si, strict byte 00014h ; 83 fe 14 ; 0xf264a + jnl short 02664h ; 7d 15 ; 0xf264d + mov di, si ; 89 f7 ; 0xf264f ata.c:720 + sal di, 1 ; d1 e7 ; 0xf2651 + mov al, byte [bp+di-0022dh] ; 8a 83 d3 fd ; 0xf2653 + mov byte [bp+di-064h], al ; 88 43 9c ; 0xf2657 + mov al, byte [bp+di-0022eh] ; 8a 83 d2 fd ; 0xf265a ata.c:721 + mov byte [bp+di-063h], al ; 88 43 9d ; 0xf265e + inc si ; 46 ; 0xf2661 ata.c:722 + jmp short 0264ah ; eb e6 ; 0xf2662 + mov byte [bp-03ch], 000h ; c6 46 c4 00 ; 0xf2664 ata.c:725 + mov si, strict word 00027h ; be 27 00 ; 0xf2668 ata.c:726 + jmp short 02672h ; eb 05 ; 0xf266b + dec si ; 4e ; 0xf266d ata.c:731 + test si, si ; 85 f6 ; 0xf266e + jle short 0267eh ; 7e 0c ; 0xf2670 + cmp byte [bp+si-064h], 020h ; 80 7a 9c 20 ; 0xf2672 + jne short 0267eh ; 75 06 ; 0xf2676 + mov byte [bp+si-064h], 000h ; c6 42 9c 00 ; 0xf2678 + jmp short 0266dh ; eb ef ; 0xf267c + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf267e ata.c:738 + cmp AL, strict byte 003h ; 3c 03 ; 0xf2681 + je short 026ebh ; 74 66 ; 0xf2683 + cmp AL, strict byte 002h ; 3c 02 ; 0xf2685 + je short 02690h ; 74 07 ; 0xf2687 + cmp AL, strict byte 001h ; 3c 01 ; 0xf2689 + je short 026f6h ; 74 69 ; 0xf268b + jmp near 02785h ; e9 f5 00 ; 0xf268d + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf2690 ata.c:741 + je short 0269bh ; 74 05 ; 0xf2694 + mov ax, 001d7h ; b8 d7 01 ; 0xf2696 + jmp short 0269eh ; eb 03 ; 0xf2699 + mov ax, 001deh ; b8 de 01 ; 0xf269b + push ax ; 50 ; 0xf269e + mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf269f + xor ah, ah ; 30 e4 ; 0xf26a2 + push ax ; 50 ; 0xf26a4 + mov ax, 001e5h ; b8 e5 01 ; 0xf26a5 + push ax ; 50 ; 0xf26a8 + mov ax, strict word 00002h ; b8 02 00 ; 0xf26a9 + push ax ; 50 ; 0xf26ac + call 0195ch ; e8 ac f2 ; 0xf26ad + add sp, strict byte 00008h ; 83 c4 08 ; 0xf26b0 + xor si, si ; 31 f6 ; 0xf26b3 ata.c:742 + mov al, byte [bp+si-064h] ; 8a 42 9c ; 0xf26b5 ata.c:743 + xor ah, ah ; 30 e4 ; 0xf26b8 + inc si ; 46 ; 0xf26ba + test ax, ax ; 85 c0 ; 0xf26bb + je short 026d0h ; 74 11 ; 0xf26bd + push ax ; 50 ; 0xf26bf ata.c:744 + mov ax, 001f0h ; b8 f0 01 ; 0xf26c0 + push ax ; 50 ; 0xf26c3 + mov ax, strict word 00002h ; b8 02 00 ; 0xf26c4 + push ax ; 50 ; 0xf26c7 + call 0195ch ; e8 91 f2 ; 0xf26c8 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf26cb + jmp short 026b5h ; eb e5 ; 0xf26ce + push word [bp-01ah] ; ff 76 e6 ; 0xf26d0 ata.c:745 + push word [bp-032h] ; ff 76 ce ; 0xf26d3 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf26d6 + push ax ; 50 ; 0xf26d9 + mov ax, 001f3h ; b8 f3 01 ; 0xf26da + push ax ; 50 ; 0xf26dd + mov ax, strict word 00002h ; b8 02 00 ; 0xf26de + push ax ; 50 ; 0xf26e1 + call 0195ch ; e8 77 f2 ; 0xf26e2 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf26e5 + jmp near 02785h ; e9 9a 00 ; 0xf26e8 ata.c:746 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf26eb ata.c:748 + je short 026f8h ; 74 07 ; 0xf26ef + mov ax, 001d7h ; b8 d7 01 ; 0xf26f1 + jmp short 026fbh ; eb 05 ; 0xf26f4 + jmp short 02762h ; eb 6a ; 0xf26f6 + mov ax, 001deh ; b8 de 01 ; 0xf26f8 + push ax ; 50 ; 0xf26fb + mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf26fc + xor ah, ah ; 30 e4 ; 0xf26ff + push ax ; 50 ; 0xf2701 + mov ax, 001e5h ; b8 e5 01 ; 0xf2702 + push ax ; 50 ; 0xf2705 + mov ax, strict word 00002h ; b8 02 00 ; 0xf2706 + push ax ; 50 ; 0xf2709 + call 0195ch ; e8 4f f2 ; 0xf270a + add sp, strict byte 00008h ; 83 c4 08 ; 0xf270d + xor si, si ; 31 f6 ; 0xf2710 ata.c:749 + mov al, byte [bp+si-064h] ; 8a 42 9c ; 0xf2712 ata.c:750 + xor ah, ah ; 30 e4 ; 0xf2715 + inc si ; 46 ; 0xf2717 + test ax, ax ; 85 c0 ; 0xf2718 + je short 0272dh ; 74 11 ; 0xf271a + push ax ; 50 ; 0xf271c ata.c:751 + mov ax, 001f0h ; b8 f0 01 ; 0xf271d + push ax ; 50 ; 0xf2720 + mov ax, strict word 00002h ; b8 02 00 ; 0xf2721 + push ax ; 50 ; 0xf2724 + call 0195ch ; e8 34 f2 ; 0xf2725 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf2728 + jmp short 02712h ; eb e5 ; 0xf272b + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf272d ata.c:752 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2730 + imul dx ; f7 ea ; 0xf2733 + les bx, [bp-028h] ; c4 5e d8 ; 0xf2735 + add bx, ax ; 01 c3 ; 0xf2738 + cmp byte [es:bx+01fh], 005h ; 26 80 7f 1f 05 ; 0xf273a + jne short 0274ch ; 75 0b ; 0xf273f + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2741 ata.c:753 + xor ah, ah ; 30 e4 ; 0xf2744 + push ax ; 50 ; 0xf2746 + mov ax, 00213h ; b8 13 02 ; 0xf2747 + jmp short 02755h ; eb 09 ; 0xf274a ata.c:754 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf274c ata.c:755 + xor ah, ah ; 30 e4 ; 0xf274f + push ax ; 50 ; 0xf2751 + mov ax, 0022dh ; b8 2d 02 ; 0xf2752 + push ax ; 50 ; 0xf2755 + mov ax, strict word 00002h ; b8 02 00 ; 0xf2756 + push ax ; 50 ; 0xf2759 + call 0195ch ; e8 ff f1 ; 0xf275a + add sp, strict byte 00006h ; 83 c4 06 ; 0xf275d + jmp short 02785h ; eb 23 ; 0xf2760 ata.c:756 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf2762 ata.c:758 + je short 0276dh ; 74 05 ; 0xf2766 + mov ax, 001d7h ; b8 d7 01 ; 0xf2768 + jmp short 02770h ; eb 03 ; 0xf276b + mov ax, 001deh ; b8 de 01 ; 0xf276d + push ax ; 50 ; 0xf2770 + mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf2771 + xor ah, ah ; 30 e4 ; 0xf2774 + push ax ; 50 ; 0xf2776 + mov ax, 0023fh ; b8 3f 02 ; 0xf2777 + push ax ; 50 ; 0xf277a + mov ax, strict word 00002h ; b8 02 00 ; 0xf277b + push ax ; 50 ; 0xf277e + call 0195ch ; e8 da f1 ; 0xf277f + add sp, strict byte 00008h ; 83 c4 08 ; 0xf2782 + inc byte [bp-010h] ; fe 46 f0 ; 0xf2785 ata.c:763 + cmp byte [bp-010h], 008h ; 80 7e f0 08 ; 0xf2788 + jnc short 027d8h ; 73 4a ; 0xf278c + mov bl, byte [bp-010h] ; 8a 5e f0 ; 0xf278e + xor bh, bh ; 30 ff ; 0xf2791 + mov ax, bx ; 89 d8 ; 0xf2793 + cwd ; 99 ; 0xf2795 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf2796 + sar ax, 1 ; d1 f8 ; 0xf2798 + mov word [bp-030h], ax ; 89 46 d0 ; 0xf279a + mov al, byte [bp-030h] ; 8a 46 d0 ; 0xf279d + mov byte [bp-018h], al ; 88 46 e8 ; 0xf27a0 + mov ax, bx ; 89 d8 ; 0xf27a3 + cwd ; 99 ; 0xf27a5 + mov bx, strict word 00002h ; bb 02 00 ; 0xf27a6 + idiv bx ; f7 fb ; 0xf27a9 + mov cx, dx ; 89 d1 ; 0xf27ab + mov byte [bp-00ch], dl ; 88 56 f4 ; 0xf27ad + mov al, byte [bp-030h] ; 8a 46 d0 ; 0xf27b0 + xor ah, ah ; 30 e4 ; 0xf27b3 + mov dx, strict word 00006h ; ba 06 00 ; 0xf27b5 + imul dx ; f7 ea ; 0xf27b8 + les bx, [bp-028h] ; c4 5e d8 ; 0xf27ba + add bx, ax ; 01 c3 ; 0xf27bd + mov si, word [es:bx+0027ah] ; 26 8b b7 7a 02 ; 0xf27bf + mov di, word [es:bx+0027ch] ; 26 8b bf 7c 02 ; 0xf27c4 + lea dx, [si+007h] ; 8d 54 07 ; 0xf27c9 + in AL, DX ; ec ; 0xf27cc + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf27cd + cmp AL, strict byte 0ffh ; 3c ff ; 0xf27cf + je short 027d6h ; 74 03 ; 0xf27d1 + jmp near 02267h ; e9 91 fa ; 0xf27d3 + jmp short 02785h ; eb ad ; 0xf27d6 + mov al, byte [bp-012h] ; 8a 46 ee ; 0xf27d8 ata.c:766 + les bx, [bp-028h] ; c4 5e d8 ; 0xf27db + mov byte [es:bx+0024eh], al ; 26 88 87 4e 02 ; 0xf27de + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf27e3 ata.c:767 + mov byte [es:bx+00263h], al ; 26 88 87 63 02 ; 0xf27e6 + mov bx, strict word 00075h ; bb 75 00 ; 0xf27eb ata.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf27ee + mov es, ax ; 8e c0 ; 0xf27f1 + mov al, byte [bp-012h] ; 8a 46 ee ; 0xf27f3 + mov byte [es:bx], al ; 26 88 07 ; 0xf27f6 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf27f9 ata.c:780 + pop di ; 5f ; 0xf27fc + pop si ; 5e ; 0xf27fd + pop bp ; 5d ; 0xf27fe + retn ; c3 ; 0xf27ff + ; disGetNextSymbol 0xf2800 LB 0x8658 -> off=0x0 cb=000000000000028e uValue=00000000000f1200 'ata_cmd_data_out' +ata_cmd_data_out: ; 0xf2800 LB 0x28e + push bp ; 55 ; 0xf2800 ata.c:794 + mov bp, sp ; 89 e5 ; 0xf2801 + push si ; 56 ; 0xf2803 + push di ; 57 ; 0xf2804 + sub sp, strict byte 00020h ; 83 ec 20 ; 0xf2805 + mov di, ax ; 89 c7 ; 0xf2808 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf280a + mov word [bp-01eh], bx ; 89 5e e2 ; 0xf280d + mov word [bp-01ah], cx ; 89 4e e6 ; 0xf2810 + mov es, dx ; 8e c2 ; 0xf2813 ata.c:806 + mov al, byte [es:di+00ch] ; 26 8a 45 0c ; 0xf2815 + xor ah, ah ; 30 e4 ; 0xf2819 + mov dx, ax ; 89 c2 ; 0xf281b + shr ax, 1 ; d1 e8 ; 0xf281d ata.c:807 + and dl, 001h ; 80 e2 01 ; 0xf281f ata.c:808 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf2822 + xor ah, ah ; 30 e4 ; 0xf2825 ata.c:810 + mov dx, strict word 00006h ; ba 06 00 ; 0xf2827 + imul dx ; f7 ea ; 0xf282a + mov bx, di ; 89 fb ; 0xf282c + add bx, ax ; 01 c3 ; 0xf282e + mov ax, word [es:bx+0027ah] ; 26 8b 87 7a 02 ; 0xf2830 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf2835 + mov ax, word [es:bx+0027ch] ; 26 8b 87 7c 02 ; 0xf2838 ata.c:811 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf283d + mov word [bp-01ch], 00100h ; c7 46 e4 00 01 ; 0xf2840 ata.c:819 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2845 ata.c:821 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2848 + in AL, DX ; ec ; 0xf284b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf284c + test AL, strict byte 080h ; a8 80 ; 0xf284e ata.c:822 + je short 02861h ; 74 0f ; 0xf2850 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2852 ata.c:825 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2855 + mov AL, strict byte 008h ; b0 08 ; 0xf2858 + out DX, AL ; ee ; 0xf285a + mov ax, strict word 00001h ; b8 01 00 ; 0xf285b ata.c:826 + jmp near 02a87h ; e9 26 02 ; 0xf285e + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2861 ata.c:829 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf2864 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2868 + mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf286b + mov word [bp-020h], ax ; 89 46 e0 ; 0xf286f + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf2872 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf2876 + mov ax, word [es:di] ; 26 8b 05 ; 0xf2879 + mov word [bp-022h], ax ; 89 46 de ; 0xf287c + mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf287f ata.c:830 + mov word [bp-016h], ax ; 89 46 ea ; 0xf2883 + mov ax, word [es:di+00ah] ; 26 8b 45 0a ; 0xf2886 + mov word [bp-012h], ax ; 89 46 ee ; 0xf288a + mov ax, word [es:di+016h] ; 26 8b 45 16 ; 0xf288d ata.c:831 + mov word [bp-014h], ax ; 89 46 ec ; 0xf2891 + mov ax, word [es:di+012h] ; 26 8b 45 12 ; 0xf2894 ata.c:832 + mov word [bp-024h], ax ; 89 46 dc ; 0xf2898 + mov ax, word [es:di+014h] ; 26 8b 45 14 ; 0xf289b ata.c:833 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf289f + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf28a2 ata.c:836 + test ax, ax ; 85 c0 ; 0xf28a5 + je short 028ach ; 74 03 ; 0xf28a7 + jmp near 02973h ; e9 c7 00 ; 0xf28a9 + xor bx, bx ; 31 db ; 0xf28ac ata.c:837 + xor dx, dx ; 31 d2 ; 0xf28ae + mov si, word [bp-022h] ; 8b 76 de ; 0xf28b0 + add si, word [bp-01ah] ; 03 76 e6 ; 0xf28b3 + adc bx, word [bp-010h] ; 13 5e f0 ; 0xf28b6 + adc dx, word [bp-020h] ; 13 56 e0 ; 0xf28b9 + adc ax, word [bp-00ch] ; 13 46 f4 ; 0xf28bc + test ax, ax ; 85 c0 ; 0xf28bf + jnbe short 028d3h ; 77 10 ; 0xf28c1 + jne short 02936h ; 75 71 ; 0xf28c3 + test dx, dx ; 85 d2 ; 0xf28c5 + jnbe short 028d3h ; 77 0a ; 0xf28c7 + jne short 02936h ; 75 6b ; 0xf28c9 + cmp bx, 01000h ; 81 fb 00 10 ; 0xf28cb + jnbe short 028d3h ; 77 02 ; 0xf28cf + jne short 02936h ; 75 63 ; 0xf28d1 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf28d3 ata.c:839 + mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf28d6 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf28d9 + mov dx, word [bp-022h] ; 8b 56 de ; 0xf28dc + mov si, strict word 00018h ; be 18 00 ; 0xf28df + call 0ab10h ; e8 2b 82 ; 0xf28e2 + xor dh, dh ; 30 f6 ; 0xf28e5 + mov word [bp-014h], dx ; 89 56 ec ; 0xf28e7 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf28ea ata.c:840 + mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf28ed + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf28f0 + mov dx, word [bp-022h] ; 8b 56 de ; 0xf28f3 + mov si, strict word 00020h ; be 20 00 ; 0xf28f6 + call 0ab10h ; e8 14 82 ; 0xf28f9 + mov bx, dx ; 89 d3 ; 0xf28fc + mov word [bp-024h], dx ; 89 56 dc ; 0xf28fe + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf2901 ata.c:841 + mov al, ah ; 88 e0 ; 0xf2904 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2906 + inc dx ; 42 ; 0xf2909 + inc dx ; 42 ; 0xf290a + out DX, AL ; ee ; 0xf290b + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf290c ata.c:842 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf290f + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2912 + out DX, AL ; ee ; 0xf2915 + xor bh, bh ; 30 ff ; 0xf2916 ata.c:843 + mov ax, bx ; 89 d8 ; 0xf2918 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf291a + add dx, strict byte 00004h ; 83 c2 04 ; 0xf291d + out DX, AL ; ee ; 0xf2920 + mov al, byte [bp-023h] ; 8a 46 dd ; 0xf2921 ata.c:844 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2924 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2927 + out DX, AL ; ee ; 0xf292a + xor al, al ; 30 c0 ; 0xf292b ata.c:847 + mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf292d + mov word [bp-020h], ax ; 89 46 e0 ; 0xf2930 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2933 + mov ax, word [bp-022h] ; 8b 46 de ; 0xf2936 ata.c:849 + xor ah, ah ; 30 e4 ; 0xf2939 + mov word [bp-014h], ax ; 89 46 ec ; 0xf293b + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf293e ata.c:850 + mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf2941 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf2944 + mov dx, word [bp-022h] ; 8b 56 de ; 0xf2947 + mov si, strict word 00008h ; be 08 00 ; 0xf294a + call 0ab10h ; e8 c0 81 ; 0xf294d + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2950 + mov word [bp-020h], bx ; 89 5e e0 ; 0xf2953 + mov word [bp-010h], cx ; 89 4e f0 ; 0xf2956 + mov word [bp-022h], dx ; 89 56 de ; 0xf2959 + mov word [bp-024h], dx ; 89 56 dc ; 0xf295c ata.c:851 + mov si, strict word 00010h ; be 10 00 ; 0xf295f ata.c:852 + call 0ab10h ; e8 ab 81 ; 0xf2962 + mov word [bp-022h], dx ; 89 56 de ; 0xf2965 + mov ax, dx ; 89 d0 ; 0xf2968 ata.c:853 + xor ah, dh ; 30 f4 ; 0xf296a + and AL, strict byte 00fh ; 24 0f ; 0xf296c + or AL, strict byte 040h ; 0c 40 ; 0xf296e + mov word [bp-018h], ax ; 89 46 e8 ; 0xf2970 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2973 ata.c:856 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2976 + mov AL, strict byte 00ah ; b0 0a ; 0xf2979 + out DX, AL ; ee ; 0xf297b + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf297c ata.c:857 + inc dx ; 42 ; 0xf297f + xor al, al ; 30 c0 ; 0xf2980 + out DX, AL ; ee ; 0xf2982 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2983 ata.c:858 + inc dx ; 42 ; 0xf2986 + inc dx ; 42 ; 0xf2987 + mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf2988 + out DX, AL ; ee ; 0xf298b + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf298c ata.c:859 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf298f + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2992 + out DX, AL ; ee ; 0xf2995 + mov ax, word [bp-024h] ; 8b 46 dc ; 0xf2996 ata.c:860 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2999 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf299c + out DX, AL ; ee ; 0xf299f + mov al, byte [bp-023h] ; 8a 46 dd ; 0xf29a0 ata.c:861 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf29a3 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf29a6 + out DX, AL ; ee ; 0xf29a9 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf29aa ata.c:862 + je short 029b5h ; 74 05 ; 0xf29ae + mov ax, 000b0h ; b8 b0 00 ; 0xf29b0 + jmp short 029b8h ; eb 03 ; 0xf29b3 + mov ax, 000a0h ; b8 a0 00 ; 0xf29b5 + mov dl, byte [bp-018h] ; 8a 56 e8 ; 0xf29b8 + xor dh, dh ; 30 f6 ; 0xf29bb + or ax, dx ; 09 d0 ; 0xf29bd + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf29bf + add dx, strict byte 00006h ; 83 c2 06 ; 0xf29c2 + out DX, AL ; ee ; 0xf29c5 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf29c6 ata.c:863 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf29c9 + mov al, byte [bp-01eh] ; 8a 46 e2 ; 0xf29cc + out DX, AL ; ee ; 0xf29cf + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf29d0 ata.c:866 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf29d3 + in AL, DX ; ec ; 0xf29d6 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf29d7 + mov bl, al ; 88 c3 ; 0xf29d9 + test AL, strict byte 080h ; a8 80 ; 0xf29db ata.c:867 + jne short 029d0h ; 75 f1 ; 0xf29dd + test AL, strict byte 001h ; a8 01 ; 0xf29df ata.c:871 + je short 029f2h ; 74 0f ; 0xf29e1 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf29e3 ata.c:874 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf29e6 + mov AL, strict byte 008h ; b0 08 ; 0xf29e9 + out DX, AL ; ee ; 0xf29eb + mov ax, strict word 00002h ; b8 02 00 ; 0xf29ec ata.c:875 + jmp near 02a87h ; e9 95 00 ; 0xf29ef + test bl, 008h ; f6 c3 08 ; 0xf29f2 ata.c:876 + jne short 02a06h ; 75 0f ; 0xf29f5 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf29f7 ata.c:879 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf29fa + mov AL, strict byte 008h ; b0 08 ; 0xf29fd + out DX, AL ; ee ; 0xf29ff + mov ax, strict word 00003h ; b8 03 00 ; 0xf2a00 ata.c:880 + jmp near 02a87h ; e9 81 00 ; 0xf2a03 + sti ; fb ; 0xf2a06 ata.c:885 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf2a07 ata.c:890 + cmp ax, 0f800h ; 3d 00 f8 ; 0xf2a0a + jc short 02a21h ; 72 12 ; 0xf2a0d + mov dx, ax ; 89 c2 ; 0xf2a0f ata.c:891 + sub dx, 00800h ; 81 ea 00 08 ; 0xf2a11 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf2a15 + add ax, 00080h ; 05 80 00 ; 0xf2a18 + mov word [bp-016h], dx ; 89 56 ea ; 0xf2a1b + mov word [bp-012h], ax ; 89 46 ee ; 0xf2a1e + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2a21 ata.c:898 + mov cx, word [bp-01ch] ; 8b 4e e4 ; 0xf2a24 + mov si, word [bp-016h] ; 8b 76 ea ; 0xf2a27 + mov es, [bp-012h] ; 8e 46 ee ; 0xf2a2a + db 0f3h, 026h, 06fh + ; rep es outsw ; f3 26 6f ; 0xf2a2d + mov word [bp-016h], si ; 89 76 ea ; 0xf2a30 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2a33 ata.c:900 + inc word [es:di+018h] ; 26 ff 45 18 ; 0xf2a36 + dec word [bp-01ah] ; ff 4e e6 ; 0xf2a3a ata.c:901 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2a3d ata.c:903 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2a40 + in AL, DX ; ec ; 0xf2a43 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2a44 + mov bl, al ; 88 c3 ; 0xf2a46 + test AL, strict byte 080h ; a8 80 ; 0xf2a48 ata.c:904 + jne short 02a3dh ; 75 f1 ; 0xf2a4a + cmp word [bp-01ah], strict byte 00000h ; 83 7e e6 00 ; 0xf2a4c ata.c:907 + jne short 02a66h ; 75 14 ; 0xf2a50 + and AL, strict byte 0e9h ; 24 e9 ; 0xf2a52 ata.c:908 + cmp AL, strict byte 040h ; 3c 40 ; 0xf2a54 + je short 02a7ch ; 74 24 ; 0xf2a56 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2a58 ata.c:912 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a5b + mov AL, strict byte 008h ; b0 08 ; 0xf2a5e + out DX, AL ; ee ; 0xf2a60 + mov ax, strict word 00006h ; b8 06 00 ; 0xf2a61 ata.c:913 + jmp short 02a87h ; eb 21 ; 0xf2a64 + mov al, bl ; 88 d8 ; 0xf2a66 ata.c:918 + and AL, strict byte 0c9h ; 24 c9 ; 0xf2a68 + cmp AL, strict byte 048h ; 3c 48 ; 0xf2a6a + je short 02a07h ; 74 99 ; 0xf2a6c + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2a6e ata.c:922 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a71 + mov AL, strict byte 008h ; b0 08 ; 0xf2a74 + out DX, AL ; ee ; 0xf2a76 + mov ax, strict word 00007h ; b8 07 00 ; 0xf2a77 ata.c:923 + jmp short 02a87h ; eb 0b ; 0xf2a7a + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2a7c ata.c:929 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a7f + mov AL, strict byte 008h ; b0 08 ; 0xf2a82 + out DX, AL ; ee ; 0xf2a84 + xor ax, ax ; 31 c0 ; 0xf2a85 ata.c:930 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2a87 ata.c:931 + pop di ; 5f ; 0xf2a8a + pop si ; 5e ; 0xf2a8b + pop bp ; 5d ; 0xf2a8c + retn ; c3 ; 0xf2a8d + ; disGetNextSymbol 0xf2a8e LB 0x83ca -> off=0x0 cb=00000000000000c1 uValue=00000000000f148e 'ata_read_sectors' +ata_read_sectors: ; 0xf2a8e LB 0xc1 + push bp ; 55 ; 0xf2a8e ata.c:941 + mov bp, sp ; 89 e5 ; 0xf2a8f + push si ; 56 ; 0xf2a91 + push di ; 57 ; 0xf2a92 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf2a93 + mov si, word [bp+004h] ; 8b 76 04 ; 0xf2a96 + mov es, [bp+006h] ; 8e 46 06 ; 0xf2a99 ata.c:947 + mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf2a9c + mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf2aa0 ata.c:948 + mov CL, strict byte 009h ; b1 09 ; 0xf2aa4 + mov dx, bx ; 89 da ; 0xf2aa6 + sal dx, CL ; d3 e2 ; 0xf2aa8 + mov cx, dx ; 89 d1 ; 0xf2aaa + cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2aac ata.c:950 + je short 02ad6h ; 74 23 ; 0xf2ab1 + xor ah, ah ; 30 e4 ; 0xf2ab3 ata.c:952 + mov di, strict word 0001ch ; bf 1c 00 ; 0xf2ab5 + imul di ; f7 ef ; 0xf2ab8 + mov dx, es ; 8c c2 ; 0xf2aba + mov [bp-00ah], es ; 8c 46 f6 ; 0xf2abc + mov di, si ; 89 f7 ; 0xf2abf + add di, ax ; 01 c7 ; 0xf2ac1 + mov word [es:di+024h], cx ; 26 89 4d 24 ; 0xf2ac3 + mov cx, bx ; 89 d9 ; 0xf2ac7 ata.c:954 + mov bx, 000c4h ; bb c4 00 ; 0xf2ac9 + mov ax, si ; 89 f0 ; 0xf2acc + call 01e84h ; e8 b3 f3 ; 0xf2ace + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2ad1 ata.c:955 + jmp short 02b40h ; eb 6a ; 0xf2ad4 ata.c:956 + xor di, di ; 31 ff ; 0xf2ad6 ata.c:958 + mov word [bp-008h], di ; 89 7e f8 ; 0xf2ad8 + mov word [bp-00ah], di ; 89 7e f6 ; 0xf2adb + mov dx, word [es:si] ; 26 8b 14 ; 0xf2ade + add dx, bx ; 01 da ; 0xf2ae1 + mov word [bp-006h], dx ; 89 56 fa ; 0xf2ae3 + adc di, word [es:si+002h] ; 26 13 7c 02 ; 0xf2ae6 + mov dx, word [es:si+004h] ; 26 8b 54 04 ; 0xf2aea + adc dx, word [bp-008h] ; 13 56 f8 ; 0xf2aee + mov word [bp-008h], dx ; 89 56 f8 ; 0xf2af1 + mov dx, word [es:si+006h] ; 26 8b 54 06 ; 0xf2af4 + adc dx, word [bp-00ah] ; 13 56 f6 ; 0xf2af8 + test dx, dx ; 85 d2 ; 0xf2afb + jnbe short 02b11h ; 77 12 ; 0xf2afd + jne short 02b1fh ; 75 1e ; 0xf2aff + cmp word [bp-008h], strict byte 00000h ; 83 7e f8 00 ; 0xf2b01 + jnbe short 02b11h ; 77 0a ; 0xf2b05 + jne short 02b1fh ; 75 16 ; 0xf2b07 + cmp di, 01000h ; 81 ff 00 10 ; 0xf2b09 + jnbe short 02b11h ; 77 02 ; 0xf2b0d + jne short 02b1fh ; 75 0e ; 0xf2b0f + mov cx, bx ; 89 d9 ; 0xf2b11 ata.c:960 + mov bx, strict word 00024h ; bb 24 00 ; 0xf2b13 + mov ax, si ; 89 f0 ; 0xf2b16 + mov dx, es ; 8c c2 ; 0xf2b18 + call 01e84h ; e8 67 f3 ; 0xf2b1a + jmp short 02b46h ; eb 27 ; 0xf2b1d ata.c:961 + xor ah, ah ; 30 e4 ; 0xf2b1f ata.c:962 + mov di, strict word 0001ch ; bf 1c 00 ; 0xf2b21 + imul di ; f7 ef ; 0xf2b24 + mov dx, es ; 8c c2 ; 0xf2b26 + mov [bp-006h], es ; 8c 46 fa ; 0xf2b28 + mov di, si ; 89 f7 ; 0xf2b2b + add di, ax ; 01 c7 ; 0xf2b2d + mov word [es:di+024h], cx ; 26 89 4d 24 ; 0xf2b2f + mov cx, bx ; 89 d9 ; 0xf2b33 ata.c:964 + mov bx, 000c4h ; bb c4 00 ; 0xf2b35 + mov ax, si ; 89 f0 ; 0xf2b38 + call 01e84h ; e8 47 f3 ; 0xf2b3a + mov es, [bp-006h] ; 8e 46 fa ; 0xf2b3d ata.c:965 + mov word [es:di+024h], 00200h ; 26 c7 45 24 00 02 ; 0xf2b40 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2b46 ata.c:969 + pop di ; 5f ; 0xf2b49 + pop si ; 5e ; 0xf2b4a + pop bp ; 5d ; 0xf2b4b + retn 00004h ; c2 04 00 ; 0xf2b4c + ; disGetNextSymbol 0xf2b4f LB 0x8309 -> off=0x0 cb=000000000000005b uValue=00000000000f154f 'ata_write_sectors' +ata_write_sectors: ; 0xf2b4f LB 0x5b + push bp ; 55 ; 0xf2b4f ata.c:978 + mov bp, sp ; 89 e5 ; 0xf2b50 + push si ; 56 ; 0xf2b52 + push di ; 57 ; 0xf2b53 + push ax ; 50 ; 0xf2b54 + les si, [bp+004h] ; c4 76 04 ; 0xf2b55 + mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2b58 ata.c:982 + cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2b5c ata.c:984 + je short 02b6fh ; 74 0c ; 0xf2b61 + mov bx, strict word 00030h ; bb 30 00 ; 0xf2b63 ata.c:986 + mov ax, si ; 89 f0 ; 0xf2b66 + mov dx, es ; 8c c2 ; 0xf2b68 + call 02800h ; e8 93 fc ; 0xf2b6a + jmp short 02ba1h ; eb 32 ; 0xf2b6d + xor ax, ax ; 31 c0 ; 0xf2b6f ata.c:989 + xor bx, bx ; 31 db ; 0xf2b71 + xor dx, dx ; 31 d2 ; 0xf2b73 + mov di, word [es:si] ; 26 8b 3c ; 0xf2b75 + add di, cx ; 01 cf ; 0xf2b78 + mov word [bp-006h], di ; 89 7e fa ; 0xf2b7a + adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf2b7d + adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf2b81 + adc dx, word [es:si+006h] ; 26 13 54 06 ; 0xf2b85 + test dx, dx ; 85 d2 ; 0xf2b89 + jnbe short 02b9ch ; 77 0f ; 0xf2b8b + jne short 02b63h ; 75 d4 ; 0xf2b8d + test bx, bx ; 85 db ; 0xf2b8f + jnbe short 02b9ch ; 77 09 ; 0xf2b91 + jne short 02b63h ; 75 ce ; 0xf2b93 + cmp ax, 01000h ; 3d 00 10 ; 0xf2b95 + jnbe short 02b9ch ; 77 02 ; 0xf2b98 + jne short 02b63h ; 75 c7 ; 0xf2b9a + mov bx, strict word 00034h ; bb 34 00 ; 0xf2b9c ata.c:990 + jmp short 02b66h ; eb c5 ; 0xf2b9f + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2ba1 ata.c:994 + pop di ; 5f ; 0xf2ba4 + pop si ; 5e ; 0xf2ba5 + pop bp ; 5d ; 0xf2ba6 + retn 00004h ; c2 04 00 ; 0xf2ba7 + ; disGetNextSymbol 0xf2baa LB 0x82ae -> off=0x0 cb=000000000000020d uValue=00000000000f15aa 'ata_cmd_packet' +ata_cmd_packet: ; 0xf2baa LB 0x20d + push bp ; 55 ; 0xf2baa ata.c:1006 + mov bp, sp ; 89 e5 ; 0xf2bab + push si ; 56 ; 0xf2bad + push di ; 57 ; 0xf2bae + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf2baf + mov byte [bp-006h], dl ; 88 56 fa ; 0xf2bb2 + mov di, bx ; 89 df ; 0xf2bb5 + mov word [bp-010h], cx ; 89 4e f0 ; 0xf2bb7 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2bba ata.c:58 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2bbd + mov es, dx ; 8e c2 ; 0xf2bc0 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf2bc2 + mov bx, strict word 0005eh ; bb 5e 00 ; 0xf2bc5 ata.c:59 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf2bc8 + mov dx, ax ; 89 c2 ; 0xf2bcb ata.c:1018 + shr dx, 1 ; d1 ea ; 0xf2bcd + mov cl, al ; 88 c1 ; 0xf2bcf ata.c:1019 + and cl, 001h ; 80 e1 01 ; 0xf2bd1 + cmp byte [bp+008h], 002h ; 80 7e 08 02 ; 0xf2bd4 ata.c:1022 + jne short 02bfdh ; 75 23 ; 0xf2bd8 + mov bx, 00dcch ; bb cc 0d ; 0xf2bda ata.c:1023 + mov cx, ds ; 8c d9 ; 0xf2bdd + mov ax, strict word 00004h ; b8 04 00 ; 0xf2bdf + call 01919h ; e8 34 ed ; 0xf2be2 + mov ax, 00259h ; b8 59 02 ; 0xf2be5 + push ax ; 50 ; 0xf2be8 + mov ax, 00268h ; b8 68 02 ; 0xf2be9 + push ax ; 50 ; 0xf2bec + mov ax, strict word 00004h ; b8 04 00 ; 0xf2bed + push ax ; 50 ; 0xf2bf0 + call 0195ch ; e8 68 ed ; 0xf2bf1 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf2bf4 + mov ax, strict word 00001h ; b8 01 00 ; 0xf2bf7 ata.c:1024 + jmp near 02daeh ; e9 b1 01 ; 0xf2bfa + mov al, dl ; 88 d0 ; 0xf2bfd ata.c:1027 + xor ah, ah ; 30 e4 ; 0xf2bff + mov dx, strict word 00006h ; ba 06 00 ; 0xf2c01 + imul dx ; f7 ea ; 0xf2c04 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2c06 + mov si, bx ; 89 de ; 0xf2c09 + add si, ax ; 01 c6 ; 0xf2c0b + mov ax, word [es:si+0027ah] ; 26 8b 84 7a 02 ; 0xf2c0d + mov word [bp-012h], ax ; 89 46 ee ; 0xf2c12 + mov ax, word [es:si+0027ch] ; 26 8b 84 7c 02 ; 0xf2c15 ata.c:1028 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf2c1a + xor ax, ax ; 31 c0 ; 0xf2c1d ata.c:1030 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2c1f + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2c22 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2c25 ata.c:1032 + cmp AL, strict byte 00ch ; 3c 0c ; 0xf2c28 + jnc short 02c32h ; 73 06 ; 0xf2c2a + mov byte [bp-006h], 00ch ; c6 46 fa 0c ; 0xf2c2c ata.c:1033 + jmp short 02c38h ; eb 06 ; 0xf2c30 + jbe short 02c38h ; 76 04 ; 0xf2c32 ata.c:1034 + mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf2c34 ata.c:1035 + shr byte [bp-006h], 1 ; d0 6e fa ; 0xf2c38 ata.c:1036 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2c3b ata.c:1040 + mov word [es:bx+018h], strict word 00000h ; 26 c7 47 18 00 00 ; 0xf2c3e + mov word [es:bx+01ah], strict word 00000h ; 26 c7 47 1a 00 00 ; 0xf2c44 ata.c:1041 + mov word [es:bx+01ch], strict word 00000h ; 26 c7 47 1c 00 00 ; 0xf2c4a + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2c50 ata.c:1043 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c53 + in AL, DX ; ec ; 0xf2c56 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2c57 + test AL, strict byte 080h ; a8 80 ; 0xf2c59 ata.c:1044 + je short 02c63h ; 74 06 ; 0xf2c5b + mov ax, strict word 00002h ; b8 02 00 ; 0xf2c5d ata.c:1045 + jmp near 02daeh ; e9 4b 01 ; 0xf2c60 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c63 ata.c:1047 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c66 + mov AL, strict byte 00ah ; b0 0a ; 0xf2c69 + out DX, AL ; ee ; 0xf2c6b + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2c6c ata.c:1051 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2c6f + mov AL, strict byte 0f0h ; b0 f0 ; 0xf2c72 + out DX, AL ; ee ; 0xf2c74 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2c75 ata.c:1052 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2c78 + mov AL, strict byte 0ffh ; b0 ff ; 0xf2c7b + out DX, AL ; ee ; 0xf2c7d + test cl, cl ; 84 c9 ; 0xf2c7e ata.c:1053 + je short 02c87h ; 74 05 ; 0xf2c80 + mov ax, 000b0h ; b8 b0 00 ; 0xf2c82 + jmp short 02c8ah ; eb 03 ; 0xf2c85 + mov ax, 000a0h ; b8 a0 00 ; 0xf2c87 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2c8a + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c8d + out DX, AL ; ee ; 0xf2c90 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2c91 ata.c:1054 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c94 + mov AL, strict byte 0a0h ; b0 a0 ; 0xf2c97 + out DX, AL ; ee ; 0xf2c99 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2c9a ata.c:1058 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c9d + in AL, DX ; ec ; 0xf2ca0 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2ca1 + mov cx, ax ; 89 c1 ; 0xf2ca3 + test AL, strict byte 080h ; a8 80 ; 0xf2ca5 ata.c:1059 + jne short 02c9ah ; 75 f1 ; 0xf2ca7 + test AL, strict byte 001h ; a8 01 ; 0xf2ca9 ata.c:1062 + je short 02cbch ; 74 0f ; 0xf2cab + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2cad ata.c:1065 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2cb0 + mov AL, strict byte 008h ; b0 08 ; 0xf2cb3 + out DX, AL ; ee ; 0xf2cb5 + mov ax, strict word 00003h ; b8 03 00 ; 0xf2cb6 ata.c:1066 + jmp near 02daeh ; e9 f2 00 ; 0xf2cb9 + test AL, strict byte 008h ; a8 08 ; 0xf2cbc ata.c:1067 + jne short 02ccfh ; 75 0f ; 0xf2cbe + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2cc0 ata.c:1070 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2cc3 + mov AL, strict byte 008h ; b0 08 ; 0xf2cc6 + out DX, AL ; ee ; 0xf2cc8 + mov ax, strict word 00004h ; b8 04 00 ; 0xf2cc9 ata.c:1071 + jmp near 02daeh ; e9 df 00 ; 0xf2ccc + sti ; fb ; 0xf2ccf ata.c:1074 + mov CL, strict byte 004h ; b1 04 ; 0xf2cd0 ata.c:1078 + mov ax, di ; 89 f8 ; 0xf2cd2 + shr ax, CL ; d3 e8 ; 0xf2cd4 + add ax, word [bp-010h] ; 03 46 f0 ; 0xf2cd6 + mov si, di ; 89 fe ; 0xf2cd9 + and si, strict byte 0000fh ; 83 e6 0f ; 0xf2cdb + mov cl, byte [bp-006h] ; 8a 4e fa ; 0xf2cde ata.c:1083 + xor ch, ch ; 30 ed ; 0xf2ce1 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2ce3 + mov es, ax ; 8e c0 ; 0xf2ce6 + db 0f3h, 026h, 06fh + ; rep es outsw ; f3 26 6f ; 0xf2ce8 + cmp byte [bp+008h], 000h ; 80 7e 08 00 ; 0xf2ceb ata.c:1085 + jne short 02cfah ; 75 09 ; 0xf2cef + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2cf1 ata.c:1086 + in AL, DX ; ec ; 0xf2cf4 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2cf5 + jmp near 02d91h ; e9 97 00 ; 0xf2cf7 ata.c:1088 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2cfa ata.c:1092 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2cfd + in AL, DX ; ec ; 0xf2d00 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2d01 + mov cx, ax ; 89 c1 ; 0xf2d03 + test AL, strict byte 080h ; a8 80 ; 0xf2d05 ata.c:1093 + jne short 02cfah ; 75 f1 ; 0xf2d07 + test AL, strict byte 088h ; a8 88 ; 0xf2d09 ata.c:1098 + je short 02d2dh ; 74 20 ; 0xf2d0b + test AL, strict byte 001h ; a8 01 ; 0xf2d0d ata.c:1101 + je short 02d1ch ; 74 0b ; 0xf2d0f + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2d11 ata.c:1104 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d14 + mov AL, strict byte 008h ; b0 08 ; 0xf2d17 + out DX, AL ; ee ; 0xf2d19 + jmp short 02cb6h ; eb 9a ; 0xf2d1a + and AL, strict byte 0c9h ; 24 c9 ; 0xf2d1c ata.c:1109 + cmp AL, strict byte 048h ; 3c 48 ; 0xf2d1e + je short 02d2fh ; 74 0d ; 0xf2d20 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2d22 ata.c:1113 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d25 + mov AL, strict byte 008h ; b0 08 ; 0xf2d28 + out DX, AL ; ee ; 0xf2d2a + jmp short 02cc9h ; eb 9c ; 0xf2d2b + jmp short 02d91h ; eb 62 ; 0xf2d2d + mov CL, strict byte 004h ; b1 04 ; 0xf2d2f ata.c:1119 + mov dx, word [bp+00ah] ; 8b 56 0a ; 0xf2d31 + shr dx, CL ; d3 ea ; 0xf2d34 + add dx, word [bp+00ch] ; 03 56 0c ; 0xf2d36 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf2d39 + and ax, strict word 0000fh ; 25 0f 00 ; 0xf2d3c + mov word [bp+00ah], ax ; 89 46 0a ; 0xf2d3f + mov word [bp+00ch], dx ; 89 56 0c ; 0xf2d42 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2d45 ata.c:1124 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2d48 + in AL, DX ; ec ; 0xf2d4b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2d4c + mov ch, al ; 88 c5 ; 0xf2d4e + xor cl, cl ; 30 c9 ; 0xf2d50 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2d52 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2d55 + in AL, DX ; ec ; 0xf2d58 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2d59 + add cx, ax ; 01 c1 ; 0xf2d5b + mov ax, cx ; 89 c8 ; 0xf2d5d ata.c:1127 + test cl, 003h ; f6 c1 03 ; 0xf2d5f ata.c:1134 + test cl, 001h ; f6 c1 01 ; 0xf2d62 ata.c:1138 + je short 02d68h ; 74 01 ; 0xf2d65 + inc cx ; 41 ; 0xf2d67 ata.c:1139 + shr cx, 1 ; d1 e9 ; 0xf2d68 ata.c:1148 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2d6a ata.c:1157 + les di, [bp+00ah] ; c4 7e 0a ; 0xf2d6d + rep insw ; f3 6d ; 0xf2d70 + add word [bp+00ah], ax ; 01 46 0a ; 0xf2d72 ata.c:1162 + xor dx, dx ; 31 d2 ; 0xf2d75 ata.c:1165 + add word [bp-00eh], ax ; 01 46 f2 ; 0xf2d77 + adc word [bp-00ch], dx ; 11 56 f4 ; 0xf2d7a + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf2d7d ata.c:1166 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2d80 + mov word [es:bx+01ah], ax ; 26 89 47 1a ; 0xf2d83 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2d87 + mov word [es:bx+01ch], ax ; 26 89 47 1c ; 0xf2d8a + jmp near 02cfah ; e9 69 ff ; 0xf2d8e ata.c:1167 + and AL, strict byte 0e9h ; 24 e9 ; 0xf2d91 ata.c:1171 + cmp AL, strict byte 040h ; 3c 40 ; 0xf2d93 + je short 02da3h ; 74 0c ; 0xf2d95 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2d97 ata.c:1175 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d9a + mov AL, strict byte 008h ; b0 08 ; 0xf2d9d + out DX, AL ; ee ; 0xf2d9f + jmp near 02cc9h ; e9 26 ff ; 0xf2da0 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2da3 ata.c:1180 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2da6 + mov AL, strict byte 008h ; b0 08 ; 0xf2da9 + out DX, AL ; ee ; 0xf2dab + xor ax, ax ; 31 c0 ; 0xf2dac ata.c:1181 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2dae ata.c:1182 + pop di ; 5f ; 0xf2db1 + pop si ; 5e ; 0xf2db2 + pop bp ; 5d ; 0xf2db3 + retn 0000ah ; c2 0a 00 ; 0xf2db4 + ; disGetNextSymbol 0xf2db7 LB 0x80a1 -> off=0x0 cb=0000000000000082 uValue=00000000000f17b7 'ata_soft_reset' +ata_soft_reset: ; 0xf2db7 LB 0x82 + push bp ; 55 ; 0xf2db7 ata.c:1190 + mov bp, sp ; 89 e5 ; 0xf2db8 + push bx ; 53 ; 0xf2dba + push cx ; 51 ; 0xf2dbb + push dx ; 52 ; 0xf2dbc + push ax ; 50 ; 0xf2dbd + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2dbe ata.c:58 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2dc1 + mov es, dx ; 8e c2 ; 0xf2dc4 + mov es, [es:bx] ; 26 8e 07 ; 0xf2dc6 + mov dx, ax ; 89 c2 ; 0xf2dc9 ata.c:1199 + shr dx, 1 ; d1 ea ; 0xf2dcb + and AL, strict byte 001h ; 24 01 ; 0xf2dcd ata.c:1200 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf2dcf + mov al, dl ; 88 d0 ; 0xf2dd2 ata.c:1202 + xor ah, ah ; 30 e4 ; 0xf2dd4 + mov dx, strict word 00006h ; ba 06 00 ; 0xf2dd6 + imul dx ; f7 ea ; 0xf2dd9 + mov bx, ax ; 89 c3 ; 0xf2ddb + add bx, strict byte 0005eh ; 83 c3 5e ; 0xf2ddd + mov cx, word [es:bx+0027ah] ; 26 8b 8f 7a 02 ; 0xf2de0 + mov bx, word [es:bx+0027ch] ; 26 8b 9f 7c 02 ; 0xf2de5 ata.c:1203 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2dea ata.c:1206 + mov AL, strict byte 00ah ; b0 0a ; 0xf2ded + out DX, AL ; ee ; 0xf2def + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2df0 ata.c:1207 + je short 02dfbh ; 74 05 ; 0xf2df4 + mov ax, 000b0h ; b8 b0 00 ; 0xf2df6 + jmp short 02dfeh ; eb 03 ; 0xf2df9 + mov ax, 000a0h ; b8 a0 00 ; 0xf2dfb + mov dx, cx ; 89 ca ; 0xf2dfe + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2e00 + out DX, AL ; ee ; 0xf2e03 + mov dx, cx ; 89 ca ; 0xf2e04 ata.c:1208 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2e06 + mov AL, strict byte 008h ; b0 08 ; 0xf2e09 + out DX, AL ; ee ; 0xf2e0b + mov dx, cx ; 89 ca ; 0xf2e0c ata.c:1212 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2e0e + in AL, DX ; ec ; 0xf2e11 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2e12 + test AL, strict byte 080h ; a8 80 ; 0xf2e14 ata.c:1213 + jne short 02e0ch ; 75 f4 ; 0xf2e16 + and AL, strict byte 0e9h ; 24 e9 ; 0xf2e18 ata.c:1217 + cmp AL, strict byte 040h ; 3c 40 ; 0xf2e1a + je short 02e29h ; 74 0b ; 0xf2e1c + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2e1e ata.c:1221 + mov AL, strict byte 008h ; b0 08 ; 0xf2e21 + out DX, AL ; ee ; 0xf2e23 + mov ax, strict word 00001h ; b8 01 00 ; 0xf2e24 ata.c:1222 + jmp short 02e31h ; eb 08 ; 0xf2e27 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2e29 ata.c:1226 + mov AL, strict byte 008h ; b0 08 ; 0xf2e2c + out DX, AL ; ee ; 0xf2e2e + xor ax, ax ; 31 c0 ; 0xf2e2f ata.c:1227 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf2e31 ata.c:1228 + pop dx ; 5a ; 0xf2e34 + pop cx ; 59 ; 0xf2e35 + pop bx ; 5b ; 0xf2e36 + pop bp ; 5d ; 0xf2e37 + retn ; c3 ; 0xf2e38 + ; disGetNextSymbol 0xf2e39 LB 0x801f -> off=0x0 cb=000000000000002c uValue=00000000000f1839 'set_diskette_current_cyl' +set_diskette_current_cyl: ; 0xf2e39 LB 0x2c + push bp ; 55 ; 0xf2e39 floppy.c:81 + mov bp, sp ; 89 e5 ; 0xf2e3a + push bx ; 53 ; 0xf2e3c + mov bl, al ; 88 c3 ; 0xf2e3d + cmp AL, strict byte 001h ; 3c 01 ; 0xf2e3f floppy.c:83 + jbe short 02e51h ; 76 0e ; 0xf2e41 + mov ax, 00288h ; b8 88 02 ; 0xf2e43 floppy.c:84 + push ax ; 50 ; 0xf2e46 + mov ax, strict word 00007h ; b8 07 00 ; 0xf2e47 + push ax ; 50 ; 0xf2e4a + call 0195ch ; e8 0e eb ; 0xf2e4b + add sp, strict byte 00004h ; 83 c4 04 ; 0xf2e4e + xor bh, bh ; 30 ff ; 0xf2e51 floppy.c:85 + add bx, 00094h ; 81 c3 94 00 ; 0xf2e53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2e57 floppy.c:53 + mov es, ax ; 8e c0 ; 0xf2e5a + mov byte [es:bx], dl ; 26 88 17 ; 0xf2e5c + lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e5f floppy.c:86 + pop bx ; 5b ; 0xf2e62 + pop bp ; 5d ; 0xf2e63 + retn ; c3 ; 0xf2e64 + ; disGetNextSymbol 0xf2e65 LB 0x7ff3 -> off=0x0 cb=0000000000000023 uValue=00000000000f1865 'floppy_wait_for_interrupt' +floppy_wait_for_interrupt: ; 0xf2e65 LB 0x23 + push bp ; 55 ; 0xf2e65 floppy.c:106 + mov bp, sp ; 89 e5 ; 0xf2e66 + push bx ; 53 ; 0xf2e68 + cli ; fa ; 0xf2e69 floppy.c:108 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2e6a floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2e6d + mov es, ax ; 8e c0 ; 0xf2e70 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e72 + test AL, strict byte 080h ; a8 80 ; 0xf2e75 floppy.c:112 + je short 02e7dh ; 74 04 ; 0xf2e77 + and AL, strict byte 080h ; 24 80 ; 0xf2e79 floppy.c:113 + jmp short 02e82h ; eb 05 ; 0xf2e7b + sti ; fb ; 0xf2e7d floppy.c:114 + hlt ; f4 ; 0xf2e7e + cli ; fa ; 0xf2e7f + jmp short 02e6ah ; eb e8 ; 0xf2e80 floppy.c:115 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e82 floppy.c:116 + pop bx ; 5b ; 0xf2e85 + pop bp ; 5d ; 0xf2e86 + retn ; c3 ; 0xf2e87 + ; disGetNextSymbol 0xf2e88 LB 0x7fd0 -> off=0x0 cb=0000000000000038 uValue=00000000000f1888 'floppy_wait_for_interrupt_or_timeout' +floppy_wait_for_interrupt_or_timeout: ; 0xf2e88 LB 0x38 + push bp ; 55 ; 0xf2e88 floppy.c:126 + mov bp, sp ; 89 e5 ; 0xf2e89 + push bx ; 53 ; 0xf2e8b + cli ; fa ; 0xf2e8c floppy.c:128 + mov bx, strict word 00040h ; bb 40 00 ; 0xf2e8d floppy.c:48 + mov es, bx ; 8e c3 ; 0xf2e90 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e92 + test al, al ; 84 c0 ; 0xf2e95 floppy.c:132 + jne short 02e9ch ; 75 03 ; 0xf2e97 + sti ; fb ; 0xf2e99 floppy.c:133 + jmp short 02ebah ; eb 1e ; 0xf2e9a floppy.c:134 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2e9c floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2e9f + mov es, ax ; 8e c0 ; 0xf2ea2 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2ea4 + test AL, strict byte 080h ; a8 80 ; 0xf2ea7 floppy.c:138 + je short 02eb5h ; 74 0a ; 0xf2ea9 + mov ah, al ; 88 c4 ; 0xf2eab floppy.c:139 + and ah, 07fh ; 80 e4 7f ; 0xf2ead + mov byte [es:bx], ah ; 26 88 27 ; 0xf2eb0 floppy.c:53 + jmp short 02ebah ; eb 05 ; 0xf2eb3 floppy.c:140 + sti ; fb ; 0xf2eb5 floppy.c:142 + hlt ; f4 ; 0xf2eb6 + cli ; fa ; 0xf2eb7 + jmp short 02e8dh ; eb d3 ; 0xf2eb8 floppy.c:143 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf2eba floppy.c:144 + pop bx ; 5b ; 0xf2ebd + pop bp ; 5d ; 0xf2ebe + retn ; c3 ; 0xf2ebf + ; disGetNextSymbol 0xf2ec0 LB 0x7f98 -> off=0x0 cb=000000000000003f uValue=00000000000f18c0 'floppy_reset_controller' +floppy_reset_controller: ; 0xf2ec0 LB 0x3f + push bp ; 55 ; 0xf2ec0 floppy.c:148 + mov bp, sp ; 89 e5 ; 0xf2ec1 + push bx ; 53 ; 0xf2ec3 + push cx ; 51 ; 0xf2ec4 + push dx ; 52 ; 0xf2ec5 + mov cx, ax ; 89 c1 ; 0xf2ec6 + mov dx, 003f2h ; ba f2 03 ; 0xf2ec8 floppy.c:153 + in AL, DX ; ec ; 0xf2ecb + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2ecc + mov bx, ax ; 89 c3 ; 0xf2ece + and AL, strict byte 0fbh ; 24 fb ; 0xf2ed0 floppy.c:154 + out DX, AL ; ee ; 0xf2ed2 + mov al, bl ; 88 d8 ; 0xf2ed3 floppy.c:155 + or AL, strict byte 004h ; 0c 04 ; 0xf2ed5 + out DX, AL ; ee ; 0xf2ed7 + mov dx, 003f4h ; ba f4 03 ; 0xf2ed8 floppy.c:159 + in AL, DX ; ec ; 0xf2edb + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2edc + and AL, strict byte 0c0h ; 24 c0 ; 0xf2ede floppy.c:160 + cmp AL, strict byte 080h ; 3c 80 ; 0xf2ee0 + jne short 02ed8h ; 75 f4 ; 0xf2ee2 + mov bx, cx ; 89 cb ; 0xf2ee4 floppy.c:163 + add bx, 00090h ; 81 c3 90 00 ; 0xf2ee6 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2eea floppy.c:48 + mov es, ax ; 8e c0 ; 0xf2eed + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2eef + and AL, strict byte 0efh ; 24 ef ; 0xf2ef2 floppy.c:164 + mov byte [es:bx], al ; 26 88 07 ; 0xf2ef4 floppy.c:53 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf2ef7 floppy.c:167 + pop dx ; 5a ; 0xf2efa + pop cx ; 59 ; 0xf2efb + pop bx ; 5b ; 0xf2efc + pop bp ; 5d ; 0xf2efd + retn ; c3 ; 0xf2efe + ; disGetNextSymbol 0xf2eff LB 0x7f59 -> off=0x0 cb=0000000000000075 uValue=00000000000f18ff 'floppy_prepare_controller' +floppy_prepare_controller: ; 0xf2eff LB 0x75 + push bp ; 55 ; 0xf2eff floppy.c:169 + mov bp, sp ; 89 e5 ; 0xf2f00 + push bx ; 53 ; 0xf2f02 + push cx ; 51 ; 0xf2f03 + push dx ; 52 ; 0xf2f04 + push ax ; 50 ; 0xf2f05 + mov cx, ax ; 89 c1 ; 0xf2f06 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f08 floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2f0b + mov es, ax ; 8e c0 ; 0xf2f0e + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f10 + and AL, strict byte 07fh ; 24 7f ; 0xf2f13 floppy.c:175 + mov byte [es:bx], al ; 26 88 07 ; 0xf2f15 floppy.c:53 + mov dx, 003f2h ; ba f2 03 ; 0xf2f18 floppy.c:179 + in AL, DX ; ec ; 0xf2f1b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2f1c + and AL, strict byte 004h ; 24 04 ; 0xf2f1e + mov byte [bp-008h], al ; 88 46 f8 ; 0xf2f20 + test cx, cx ; 85 c9 ; 0xf2f23 floppy.c:180 + je short 02f2bh ; 74 04 ; 0xf2f25 + mov AL, strict byte 020h ; b0 20 ; 0xf2f27 floppy.c:181 + jmp short 02f2dh ; eb 02 ; 0xf2f29 floppy.c:182 + mov AL, strict byte 010h ; b0 10 ; 0xf2f2b floppy.c:183 + or AL, strict byte 00ch ; 0c 0c ; 0xf2f2d floppy.c:184 + or al, cl ; 08 c8 ; 0xf2f2f floppy.c:185 + mov dx, 003f2h ; ba f2 03 ; 0xf2f31 floppy.c:186 + out DX, AL ; ee ; 0xf2f34 + mov bx, strict word 00040h ; bb 40 00 ; 0xf2f35 floppy.c:53 + mov es, bx ; 8e c3 ; 0xf2f38 + mov byte [es:bx], 025h ; 26 c6 07 25 ; 0xf2f3a + mov bx, 0008bh ; bb 8b 00 ; 0xf2f3e floppy.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f41 + mov CL, strict byte 006h ; b1 06 ; 0xf2f44 floppy.c:193 + shr al, CL ; d2 e8 ; 0xf2f46 + mov dx, 003f7h ; ba f7 03 ; 0xf2f48 floppy.c:194 + out DX, AL ; ee ; 0xf2f4b + mov dx, 003f4h ; ba f4 03 ; 0xf2f4c floppy.c:198 + in AL, DX ; ec ; 0xf2f4f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2f50 + and AL, strict byte 0c0h ; 24 c0 ; 0xf2f52 floppy.c:199 + cmp AL, strict byte 080h ; 3c 80 ; 0xf2f54 + jne short 02f4ch ; 75 f4 ; 0xf2f56 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2f58 floppy.c:201 + jne short 02f6ch ; 75 0e ; 0xf2f5c + call 02e65h ; e8 04 ff ; 0xf2f5e floppy.c:212 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f61 floppy.c:53 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2f64 + mov es, dx ; 8e c2 ; 0xf2f67 + mov byte [es:bx], al ; 26 88 07 ; 0xf2f69 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf2f6c floppy.c:216 + pop dx ; 5a ; 0xf2f6f + pop cx ; 59 ; 0xf2f70 + pop bx ; 5b ; 0xf2f71 + pop bp ; 5d ; 0xf2f72 + retn ; c3 ; 0xf2f73 + ; disGetNextSymbol 0xf2f74 LB 0x7ee4 -> off=0x0 cb=000000000000004c uValue=00000000000f1974 'floppy_media_known' +floppy_media_known: ; 0xf2f74 LB 0x4c + push bx ; 53 ; 0xf2f74 floppy.c:218 + push cx ; 51 ; 0xf2f75 + push dx ; 52 ; 0xf2f76 + push bp ; 55 ; 0xf2f77 + mov bp, sp ; 89 e5 ; 0xf2f78 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f7a floppy.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2f7d + mov es, dx ; 8e c2 ; 0xf2f80 + mov bh, byte [es:bx] ; 26 8a 3f ; 0xf2f82 + mov bl, bh ; 88 fb ; 0xf2f85 floppy.c:49 + test ax, ax ; 85 c0 ; 0xf2f87 floppy.c:224 + je short 02f8dh ; 74 02 ; 0xf2f89 + shr bl, 1 ; d0 eb ; 0xf2f8b floppy.c:225 + and bl, 001h ; 80 e3 01 ; 0xf2f8d floppy.c:226 + jne short 02f96h ; 75 04 ; 0xf2f90 floppy.c:227 + xor bh, bh ; 30 ff ; 0xf2f92 floppy.c:228 + jmp short 02fb9h ; eb 23 ; 0xf2f94 + mov bx, 00090h ; bb 90 00 ; 0xf2f96 floppy.c:230 + test ax, ax ; 85 c0 ; 0xf2f99 floppy.c:231 + je short 02fa0h ; 74 03 ; 0xf2f9b + mov bx, 00091h ; bb 91 00 ; 0xf2f9d floppy.c:232 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2fa0 floppy.c:48 + mov es, ax ; 8e c0 ; 0xf2fa3 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2fa5 + xor ah, ah ; 30 e4 ; 0xf2fa8 floppy.c:235 + mov CL, strict byte 004h ; b1 04 ; 0xf2faa + sar ax, CL ; d3 f8 ; 0xf2fac + and AL, strict byte 001h ; 24 01 ; 0xf2fae + jne short 02fb6h ; 75 04 ; 0xf2fb0 floppy.c:236 + xor bx, bx ; 31 db ; 0xf2fb2 floppy.c:237 + jmp short 02fb9h ; eb 03 ; 0xf2fb4 + mov bx, strict word 00001h ; bb 01 00 ; 0xf2fb6 floppy.c:240 + mov ax, bx ; 89 d8 ; 0xf2fb9 floppy.c:241 + pop bp ; 5d ; 0xf2fbb + pop dx ; 5a ; 0xf2fbc + pop cx ; 59 ; 0xf2fbd + pop bx ; 5b ; 0xf2fbe + retn ; c3 ; 0xf2fbf + ; disGetNextSymbol 0xf2fc0 LB 0x7e98 -> off=0x0 cb=0000000000000052 uValue=00000000000f19c0 'floppy_read_id' +floppy_read_id: ; 0xf2fc0 LB 0x52 + push bp ; 55 ; 0xf2fc0 floppy.c:243 + mov bp, sp ; 89 e5 ; 0xf2fc1 + push bx ; 53 ; 0xf2fc3 + push dx ; 52 ; 0xf2fc4 + push si ; 56 ; 0xf2fc5 + mov bx, ax ; 89 c3 ; 0xf2fc6 + call 02effh ; e8 34 ff ; 0xf2fc8 floppy.c:250 + mov AL, strict byte 04ah ; b0 4a ; 0xf2fcb floppy.c:253 + mov dx, 003f5h ; ba f5 03 ; 0xf2fcd + out DX, AL ; ee ; 0xf2fd0 + mov al, bl ; 88 d8 ; 0xf2fd1 floppy.c:254 + out DX, AL ; ee ; 0xf2fd3 + call 02e65h ; e8 8e fe ; 0xf2fd4 floppy.c:269 + xor bx, bx ; 31 db ; 0xf2fd7 floppy.c:273 + jmp short 02fe0h ; eb 05 ; 0xf2fd9 + cmp bx, strict byte 00007h ; 83 fb 07 ; 0xf2fdb + jnl short 02ff4h ; 7d 14 ; 0xf2fde + mov dx, 003f5h ; ba f5 03 ; 0xf2fe0 floppy.c:274 + in AL, DX ; ec ; 0xf2fe3 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2fe4 + lea si, [bx+042h] ; 8d 77 42 ; 0xf2fe6 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2fe9 floppy.c:53 + mov es, dx ; 8e c2 ; 0xf2fec + mov byte [es:si], al ; 26 88 04 ; 0xf2fee + inc bx ; 43 ; 0xf2ff1 floppy.c:274 + jmp short 02fdbh ; eb e7 ; 0xf2ff2 + mov bx, strict word 00042h ; bb 42 00 ; 0xf2ff4 floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2ff7 + mov es, ax ; 8e c0 ; 0xf2ffa + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2ffc + test AL, strict byte 0c0h ; a8 c0 ; 0xf2fff floppy.c:49 + je short 03007h ; 74 04 ; 0xf3001 + xor ax, ax ; 31 c0 ; 0xf3003 floppy.c:277 + jmp short 0300ah ; eb 03 ; 0xf3005 + mov ax, strict word 00001h ; b8 01 00 ; 0xf3007 floppy.c:279 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf300a floppy.c:280 + pop si ; 5e ; 0xf300d + pop dx ; 5a ; 0xf300e + pop bx ; 5b ; 0xf300f + pop bp ; 5d ; 0xf3010 + retn ; c3 ; 0xf3011 + ; disGetNextSymbol 0xf3012 LB 0x7e46 -> off=0x0 cb=0000000000000041 uValue=00000000000f1a12 'floppy_drive_recal' +floppy_drive_recal: ; 0xf3012 LB 0x41 + push bp ; 55 ; 0xf3012 floppy.c:282 + mov bp, sp ; 89 e5 ; 0xf3013 + push bx ; 53 ; 0xf3015 + push dx ; 52 ; 0xf3016 + push si ; 56 ; 0xf3017 + mov bx, ax ; 89 c3 ; 0xf3018 + call 02effh ; e8 e2 fe ; 0xf301a floppy.c:287 + mov AL, strict byte 007h ; b0 07 ; 0xf301d floppy.c:290 + mov dx, 003f5h ; ba f5 03 ; 0xf301f + out DX, AL ; ee ; 0xf3022 + mov al, bl ; 88 d8 ; 0xf3023 floppy.c:291 + out DX, AL ; ee ; 0xf3025 + call 02e65h ; e8 3c fe ; 0xf3026 floppy.c:310 + test bx, bx ; 85 db ; 0xf3029 floppy.c:314 + je short 03034h ; 74 07 ; 0xf302b + or AL, strict byte 002h ; 0c 02 ; 0xf302d floppy.c:315 + mov bx, 00095h ; bb 95 00 ; 0xf302f floppy.c:316 + jmp short 03039h ; eb 05 ; 0xf3032 floppy.c:317 + or AL, strict byte 001h ; 0c 01 ; 0xf3034 floppy.c:318 + mov bx, 00094h ; bb 94 00 ; 0xf3036 floppy.c:319 + mov si, strict word 0003eh ; be 3e 00 ; 0xf3039 floppy.c:53 + mov dx, strict word 00040h ; ba 40 00 ; 0xf303c + mov es, dx ; 8e c2 ; 0xf303f + mov byte [es:si], al ; 26 88 04 ; 0xf3041 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3044 floppy.c:53 + mov ax, strict word 00001h ; b8 01 00 ; 0xf3048 floppy.c:325 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf304b + pop si ; 5e ; 0xf304e + pop dx ; 5a ; 0xf304f + pop bx ; 5b ; 0xf3050 + pop bp ; 5d ; 0xf3051 + retn ; c3 ; 0xf3052 + ; disGetNextSymbol 0xf3053 LB 0x7e05 -> off=0x0 cb=00000000000000e7 uValue=00000000000f1a53 'floppy_media_sense' +floppy_media_sense: ; 0xf3053 LB 0xe7 + push bp ; 55 ; 0xf3053 floppy.c:328 + mov bp, sp ; 89 e5 ; 0xf3054 + push bx ; 53 ; 0xf3056 + push cx ; 51 ; 0xf3057 + push dx ; 52 ; 0xf3058 + push si ; 56 ; 0xf3059 + push di ; 57 ; 0xf305a + mov si, ax ; 89 c6 ; 0xf305b + call 03012h ; e8 b2 ff ; 0xf305d floppy.c:334 + test ax, ax ; 85 c0 ; 0xf3060 + jne short 03069h ; 75 05 ; 0xf3062 + xor dx, dx ; 31 d2 ; 0xf3064 floppy.c:335 + jmp near 0312eh ; e9 c5 00 ; 0xf3066 + mov ax, strict word 00010h ; b8 10 00 ; 0xf3069 floppy.c:370 + call 01664h ; e8 f5 e5 ; 0xf306c + test si, si ; 85 f6 ; 0xf306f floppy.c:371 + jne short 0307bh ; 75 08 ; 0xf3071 + mov CL, strict byte 004h ; b1 04 ; 0xf3073 floppy.c:372 + mov dl, al ; 88 c2 ; 0xf3075 + shr dl, CL ; d2 ea ; 0xf3077 + jmp short 03080h ; eb 05 ; 0xf3079 floppy.c:373 + mov dl, al ; 88 c2 ; 0xf307b floppy.c:374 + and dl, 00fh ; 80 e2 0f ; 0xf307d + cmp dl, 001h ; 80 fa 01 ; 0xf3080 floppy.c:375 + jne short 0308eh ; 75 09 ; 0xf3083 + xor dl, dl ; 30 d2 ; 0xf3085 floppy.c:377 + mov DH, strict byte 015h ; b6 15 ; 0xf3087 floppy.c:378 + mov bx, strict word 00001h ; bb 01 00 ; 0xf3089 floppy.c:379 + jmp short 030cch ; eb 3e ; 0xf308c floppy.c:381 + cmp dl, 002h ; 80 fa 02 ; 0xf308e + jne short 03099h ; 75 06 ; 0xf3091 + xor dl, dl ; 30 d2 ; 0xf3093 floppy.c:383 + mov DH, strict byte 035h ; b6 35 ; 0xf3095 floppy.c:384 + jmp short 03089h ; eb f0 ; 0xf3097 + cmp dl, 003h ; 80 fa 03 ; 0xf3099 floppy.c:387 + jne short 030a4h ; 75 06 ; 0xf309c + xor dl, dl ; 30 d2 ; 0xf309e floppy.c:389 + mov DH, strict byte 017h ; b6 17 ; 0xf30a0 floppy.c:390 + jmp short 03089h ; eb e5 ; 0xf30a2 + cmp dl, 004h ; 80 fa 04 ; 0xf30a4 floppy.c:393 + jne short 030afh ; 75 06 ; 0xf30a7 + xor dl, dl ; 30 d2 ; 0xf30a9 floppy.c:395 + mov DH, strict byte 017h ; b6 17 ; 0xf30ab floppy.c:396 + jmp short 03089h ; eb da ; 0xf30ad + cmp dl, 005h ; 80 fa 05 ; 0xf30af floppy.c:399 + jne short 030bah ; 75 06 ; 0xf30b2 + mov DL, strict byte 0cch ; b2 cc ; 0xf30b4 floppy.c:401 + mov DH, strict byte 0d7h ; b6 d7 ; 0xf30b6 floppy.c:402 + jmp short 03089h ; eb cf ; 0xf30b8 + cmp dl, 00eh ; 80 fa 0e ; 0xf30ba floppy.c:406 + je short 030c4h ; 74 05 ; 0xf30bd + cmp dl, 00fh ; 80 fa 0f ; 0xf30bf + jne short 030c6h ; 75 02 ; 0xf30c2 + jmp short 030b4h ; eb ee ; 0xf30c4 + xor dl, dl ; 30 d2 ; 0xf30c6 floppy.c:414 + xor dh, dh ; 30 f6 ; 0xf30c8 floppy.c:415 + xor bx, bx ; 31 db ; 0xf30ca floppy.c:416 + mov di, 0008bh ; bf 8b 00 ; 0xf30cc floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf30cf + mov es, ax ; 8e c0 ; 0xf30d2 + mov byte [es:di], dl ; 26 88 15 ; 0xf30d4 + mov ax, si ; 89 f0 ; 0xf30d7 floppy.c:420 + call 02fc0h ; e8 e4 fe ; 0xf30d9 + test ax, ax ; 85 c0 ; 0xf30dc + jne short 03112h ; 75 32 ; 0xf30de + mov al, dl ; 88 d0 ; 0xf30e0 floppy.c:421 + and AL, strict byte 0c0h ; 24 c0 ; 0xf30e2 + cmp AL, strict byte 080h ; 3c 80 ; 0xf30e4 + je short 03112h ; 74 2a ; 0xf30e6 + mov al, dl ; 88 d0 ; 0xf30e8 floppy.c:425 + and AL, strict byte 0c0h ; 24 c0 ; 0xf30ea + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf30ec + je short 030ffh ; 74 0f ; 0xf30ee + mov ah, dl ; 88 d4 ; 0xf30f0 + and ah, 03fh ; 80 e4 3f ; 0xf30f2 + cmp AL, strict byte 040h ; 3c 40 ; 0xf30f5 + je short 0310bh ; 74 12 ; 0xf30f7 + test al, al ; 84 c0 ; 0xf30f9 + je short 03104h ; 74 07 ; 0xf30fb + jmp short 030cch ; eb cd ; 0xf30fd + and dl, 03fh ; 80 e2 3f ; 0xf30ff floppy.c:427 + jmp short 030cch ; eb c8 ; 0xf3102 floppy.c:428 + mov dl, ah ; 88 e2 ; 0xf3104 floppy.c:430 + or dl, 040h ; 80 ca 40 ; 0xf3106 + jmp short 030cch ; eb c1 ; 0xf3109 floppy.c:431 + mov dl, ah ; 88 e2 ; 0xf310b floppy.c:433 + or dl, 080h ; 80 ca 80 ; 0xf310d + jmp short 030cch ; eb ba ; 0xf3110 floppy.c:437 + test si, si ; 85 f6 ; 0xf3112 floppy.c:439 + jne short 0311bh ; 75 05 ; 0xf3114 + mov si, 00090h ; be 90 00 ; 0xf3116 floppy.c:440 + jmp short 0311eh ; eb 03 ; 0xf3119 floppy.c:441 + mov si, 00091h ; be 91 00 ; 0xf311b floppy.c:442 + mov di, 0008bh ; bf 8b 00 ; 0xf311e floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3121 + mov es, ax ; 8e c0 ; 0xf3124 + mov byte [es:di], dl ; 26 88 15 ; 0xf3126 + mov byte [es:si], dh ; 26 88 34 ; 0xf3129 floppy.c:53 + mov dx, bx ; 89 da ; 0xf312c floppy.c:446 + mov ax, dx ; 89 d0 ; 0xf312e floppy.c:447 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf3130 + pop di ; 5f ; 0xf3133 + pop si ; 5e ; 0xf3134 + pop dx ; 5a ; 0xf3135 + pop cx ; 59 ; 0xf3136 + pop bx ; 5b ; 0xf3137 + pop bp ; 5d ; 0xf3138 + retn ; c3 ; 0xf3139 + ; disGetNextSymbol 0xf313a LB 0x7d1e -> off=0x0 cb=000000000000002b uValue=00000000000f1b3a 'floppy_drive_exists' +floppy_drive_exists: ; 0xf313a LB 0x2b + push bp ; 55 ; 0xf313a floppy.c:450 + mov bp, sp ; 89 e5 ; 0xf313b + push cx ; 51 ; 0xf313d + push dx ; 52 ; 0xf313e + mov dx, ax ; 89 c2 ; 0xf313f + mov ax, strict word 00010h ; b8 10 00 ; 0xf3141 floppy.c:456 + call 01664h ; e8 1d e5 ; 0xf3144 + test dx, dx ; 85 d2 ; 0xf3147 floppy.c:457 + jne short 03151h ; 75 06 ; 0xf3149 + mov CL, strict byte 004h ; b1 04 ; 0xf314b floppy.c:458 + shr al, CL ; d2 e8 ; 0xf314d + jmp short 03153h ; eb 02 ; 0xf314f floppy.c:459 + and AL, strict byte 00fh ; 24 0f ; 0xf3151 floppy.c:460 + test al, al ; 84 c0 ; 0xf3153 floppy.c:461 + je short 0315ch ; 74 05 ; 0xf3155 + mov ax, strict word 00001h ; b8 01 00 ; 0xf3157 + jmp short 0315eh ; eb 02 ; 0xf315a + xor ah, ah ; 30 e4 ; 0xf315c + lea sp, [bp-004h] ; 8d 66 fc ; 0xf315e floppy.c:462 + pop dx ; 5a ; 0xf3161 + pop cx ; 59 ; 0xf3162 + pop bp ; 5d ; 0xf3163 + retn ; c3 ; 0xf3164 + ; disGetNextSymbol 0xf3165 LB 0x7cf3 -> off=0x23 cb=00000000000009fd uValue=00000000000f1b88 'int13_diskette_function' + db 018h, 017h, 016h, 015h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 05fh, 03bh, 0c6h, 031h, 048h + db 032h, 062h, 032h, 062h, 032h, 062h, 032h, 013h, 036h, 0f7h, 037h, 0f2h, 038h, 035h, 039h, 069h + db 039h, 0ddh, 039h +int13_diskette_function: ; 0xf3188 LB 0x9fd + push bp ; 55 ; 0xf3188 floppy.c:477 + mov bp, sp ; 89 e5 ; 0xf3189 + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf318b + or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf318e floppy.c:488 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3192 floppy.c:490 + xor ah, ah ; 30 e4 ; 0xf3195 + mov dx, ax ; 89 c2 ; 0xf3197 + cmp ax, strict word 00018h ; 3d 18 00 ; 0xf3199 + jnbe short 031fah ; 77 5c ; 0xf319c + push CS ; 0e ; 0xf319e + pop ES ; 07 ; 0xf319f + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf31a0 + mov di, 03165h ; bf 65 31 ; 0xf31a3 + repne scasb ; f2 ae ; 0xf31a6 + sal cx, 1 ; d1 e1 ; 0xf31a8 + mov di, cx ; 89 cf ; 0xf31aa + mov di, word [cs:di+03170h] ; 2e 8b bd 70 31 ; 0xf31ac + mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf31b1 + xor ch, ch ; 30 ed ; 0xf31b4 + mov dl, byte [bp+00eh] ; 8a 56 0e ; 0xf31b6 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf31b9 + or AL, strict byte 001h ; 0c 01 ; 0xf31bc + mov si, cx ; 89 ce ; 0xf31be + or si, 00100h ; 81 ce 00 01 ; 0xf31c0 + jmp di ; ff e7 ; 0xf31c4 + mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf31c6 floppy.c:493 + cmp bl, 001h ; 80 fb 01 ; 0xf31c9 floppy.c:494 + jbe short 031e8h ; 76 1a ; 0xf31cc + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf31ce floppy.c:495 + xor ah, ah ; 30 e4 ; 0xf31d1 + or ah, 001h ; 80 cc 01 ; 0xf31d3 + mov word [bp+016h], ax ; 89 46 16 ; 0xf31d6 + mov bx, strict word 00041h ; bb 41 00 ; 0xf31d9 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf31dc + mov es, ax ; 8e c0 ; 0xf31df + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf31e1 + jmp near 03a4ah ; e9 62 08 ; 0xf31e5 + mov ax, strict word 00010h ; b8 10 00 ; 0xf31e8 floppy.c:501 + call 01664h ; e8 76 e4 ; 0xf31eb + test bl, bl ; 84 db ; 0xf31ee floppy.c:502 + jne short 031fdh ; 75 0b ; 0xf31f0 + mov CL, strict byte 004h ; b1 04 ; 0xf31f2 floppy.c:503 + mov dl, al ; 88 c2 ; 0xf31f4 + shr dl, CL ; d2 ea ; 0xf31f6 + jmp short 03202h ; eb 08 ; 0xf31f8 floppy.c:504 + jmp near 03b5fh ; e9 62 09 ; 0xf31fa + mov dl, al ; 88 c2 ; 0xf31fd floppy.c:505 + and dl, 00fh ; 80 e2 0f ; 0xf31ff + test dl, dl ; 84 d2 ; 0xf3202 floppy.c:506 + jne short 03220h ; 75 1a ; 0xf3204 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3206 floppy.c:507 + xor ah, ah ; 30 e4 ; 0xf3209 + or ah, 080h ; 80 cc 80 ; 0xf320b + mov word [bp+016h], ax ; 89 46 16 ; 0xf320e + mov bx, strict word 00041h ; bb 41 00 ; 0xf3211 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3214 + mov es, ax ; 8e c0 ; 0xf3217 + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3219 + jmp near 03a4ah ; e9 2a 08 ; 0xf321d + mov si, strict word 0003eh ; be 3e 00 ; 0xf3220 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3223 + mov es, ax ; 8e c0 ; 0xf3226 + mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf3228 + xor al, al ; 30 c0 ; 0xf322c floppy.c:516 + mov byte [bp+017h], al ; 88 46 17 ; 0xf322e + mov si, strict word 00041h ; be 41 00 ; 0xf3231 floppy.c:53 + mov byte [es:si], al ; 26 88 04 ; 0xf3234 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3237 floppy.c:518 + mov al, bl ; 88 d8 ; 0xf323b floppy.c:519 + xor ah, ah ; 30 e4 ; 0xf323d + xor dx, dx ; 31 d2 ; 0xf323f + call 02e39h ; e8 f5 fb ; 0xf3241 + mov sp, bp ; 89 ec ; 0xf3244 floppy.c:520 + pop bp ; 5d ; 0xf3246 + retn ; c3 ; 0xf3247 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3248 floppy.c:523 + mov bx, 00441h ; bb 41 04 ; 0xf324c floppy.c:48 + xor ax, ax ; 31 c0 ; 0xf324f + mov es, ax ; 8e c0 ; 0xf3251 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf3253 + mov ch, dl ; 88 d5 ; 0xf3256 floppy.c:525 + mov word [bp+016h], cx ; 89 4e 16 ; 0xf3258 + test dl, dl ; 84 d2 ; 0xf325b floppy.c:526 + je short 03244h ; 74 e5 ; 0xf325d + jmp near 03a4ah ; e9 e8 07 ; 0xf325f + mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf3262 floppy.c:534 + mov al, byte [bp+015h] ; 8a 46 15 ; 0xf3265 floppy.c:535 + mov byte [bp-004h], al ; 88 46 fc ; 0xf3268 + mov al, byte [bp+014h] ; 8a 46 14 ; 0xf326b floppy.c:536 + mov byte [bp-002h], al ; 88 46 fe ; 0xf326e + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf3271 floppy.c:537 + xor ah, ah ; 30 e4 ; 0xf3274 + mov byte [bp-006h], al ; 88 46 fa ; 0xf3276 + mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf3279 floppy.c:538 + cmp bl, 001h ; 80 fb 01 ; 0xf327c floppy.c:540 + jnbe short 0328eh ; 77 0d ; 0xf327f + cmp AL, strict byte 001h ; 3c 01 ; 0xf3281 + jnbe short 0328eh ; 77 09 ; 0xf3283 + test bh, bh ; 84 ff ; 0xf3285 + je short 0328eh ; 74 05 ; 0xf3287 + cmp bh, 048h ; 80 ff 48 ; 0xf3289 + jbe short 032c5h ; 76 37 ; 0xf328c + mov bx, 00dcch ; bb cc 0d ; 0xf328e floppy.c:542 + mov cx, ds ; 8c d9 ; 0xf3291 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3293 + call 01919h ; e8 80 e6 ; 0xf3296 + mov ax, 002adh ; b8 ad 02 ; 0xf3299 + push ax ; 50 ; 0xf329c + mov ax, 002c5h ; b8 c5 02 ; 0xf329d + push ax ; 50 ; 0xf32a0 + mov ax, strict word 00004h ; b8 04 00 ; 0xf32a1 + push ax ; 50 ; 0xf32a4 + call 0195ch ; e8 b4 e6 ; 0xf32a5 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf32a8 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32ab floppy.c:543 + xor ah, ah ; 30 e4 ; 0xf32ae + or ah, 001h ; 80 cc 01 ; 0xf32b0 + mov word [bp+016h], ax ; 89 46 16 ; 0xf32b3 + mov bx, strict word 00041h ; bb 41 00 ; 0xf32b6 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf32b9 + mov es, ax ; 8e c0 ; 0xf32bc + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf32be + jmp near 0336fh ; e9 aa 00 ; 0xf32c2 + mov al, bl ; 88 d8 ; 0xf32c5 floppy.c:545 + xor ah, ah ; 30 e4 ; 0xf32c7 + call 0313ah ; e8 6e fe ; 0xf32c9 + test ax, ax ; 85 c0 ; 0xf32cc + jne short 032eah ; 75 1a ; 0xf32ce + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32d0 floppy.c:553 + xor ah, ah ; 30 e4 ; 0xf32d3 + or ah, 080h ; 80 cc 80 ; 0xf32d5 + mov word [bp+016h], ax ; 89 46 16 ; 0xf32d8 + mov bx, strict word 00041h ; bb 41 00 ; 0xf32db floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf32de + mov es, ax ; 8e c0 ; 0xf32e1 + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf32e3 + jmp near 0336fh ; e9 85 00 ; 0xf32e7 + mov cl, bl ; 88 d9 ; 0xf32ea floppy.c:561 + xor ch, ch ; 30 ed ; 0xf32ec + mov ax, cx ; 89 c8 ; 0xf32ee + call 02f74h ; e8 81 fc ; 0xf32f0 + test ax, ax ; 85 c0 ; 0xf32f3 + jne short 0331dh ; 75 26 ; 0xf32f5 + mov ax, cx ; 89 c8 ; 0xf32f7 floppy.c:562 + call 03053h ; e8 57 fd ; 0xf32f9 + test ax, ax ; 85 c0 ; 0xf32fc + jne short 0331dh ; 75 1d ; 0xf32fe + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3300 floppy.c:564 + xor ah, ah ; 30 e4 ; 0xf3303 + or ah, 00ch ; 80 cc 0c ; 0xf3305 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3308 + mov bx, strict word 00041h ; bb 41 00 ; 0xf330b floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf330e + mov es, ax ; 8e c0 ; 0xf3311 + mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3313 + mov byte [bp+016h], ch ; 88 6e 16 ; 0xf3317 + jmp near 03a4ah ; e9 2d 07 ; 0xf331a + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf331d floppy.c:566 + xor ah, ah ; 30 e4 ; 0xf3320 + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf3322 + jne short 03376h ; 75 4f ; 0xf3325 + mov CL, strict byte 00ch ; b1 0c ; 0xf3327 floppy.c:583 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf3329 + shr ax, CL ; d3 e8 ; 0xf332c + mov ch, al ; 88 c5 ; 0xf332e + mov CL, strict byte 004h ; b1 04 ; 0xf3330 floppy.c:584 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3332 + sal dx, CL ; d3 e2 ; 0xf3335 + mov si, word [bp+010h] ; 8b 76 10 ; 0xf3337 floppy.c:585 + add si, dx ; 01 d6 ; 0xf333a + mov word [bp-00ch], si ; 89 76 f4 ; 0xf333c + cmp dx, si ; 39 f2 ; 0xf333f floppy.c:587 + jbe short 03345h ; 76 02 ; 0xf3341 + db 0feh, 0c5h + ; inc ch ; fe c5 ; 0xf3343 floppy.c:589 + mov al, bh ; 88 f8 ; 0xf3345 floppy.c:591 + xor ah, ah ; 30 e4 ; 0xf3347 + mov CL, strict byte 009h ; b1 09 ; 0xf3349 + sal ax, CL ; d3 e0 ; 0xf334b + dec ax ; 48 ; 0xf334d + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf334e + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf3351 floppy.c:594 + add ax, word [bp-00eh] ; 03 46 f2 ; 0xf3354 + cmp ax, word [bp-00ch] ; 3b 46 f4 ; 0xf3357 floppy.c:595 + jnc short 03379h ; 73 1d ; 0xf335a + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf335c floppy.c:596 + mov ah, cl ; 88 cc ; 0xf335f + mov word [bp+016h], ax ; 89 46 16 ; 0xf3361 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3364 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3367 + mov es, ax ; 8e c0 ; 0xf336a + mov byte [es:bx], cl ; 26 88 0f ; 0xf336c + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf336f + jmp near 03a4ah ; e9 d4 06 ; 0xf3373 + jmp near 034c3h ; e9 4a 01 ; 0xf3376 + mov AL, strict byte 006h ; b0 06 ; 0xf3379 floppy.c:604 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf337b + out DX, AL ; ee ; 0xf337e + xor al, al ; 30 c0 ; 0xf337f floppy.c:607 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3381 + out DX, AL ; ee ; 0xf3384 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3385 floppy.c:608 + mov dx, strict word 00004h ; ba 04 00 ; 0xf3388 + out DX, AL ; ee ; 0xf338b + mov al, byte [bp-00bh] ; 8a 46 f5 ; 0xf338c floppy.c:609 + out DX, AL ; ee ; 0xf338f + xor al, al ; 30 c0 ; 0xf3390 floppy.c:611 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3392 + out DX, AL ; ee ; 0xf3395 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf3396 floppy.c:612 + mov dx, strict word 00005h ; ba 05 00 ; 0xf3399 + out DX, AL ; ee ; 0xf339c + mov al, byte [bp-00dh] ; 8a 46 f3 ; 0xf339d floppy.c:613 + out DX, AL ; ee ; 0xf33a0 + mov AL, strict byte 046h ; b0 46 ; 0xf33a1 floppy.c:621 + mov dx, strict word 0000bh ; ba 0b 00 ; 0xf33a3 + out DX, AL ; ee ; 0xf33a6 + mov al, ch ; 88 e8 ; 0xf33a7 floppy.c:625 + mov dx, 00081h ; ba 81 00 ; 0xf33a9 + out DX, AL ; ee ; 0xf33ac + mov AL, strict byte 002h ; b0 02 ; 0xf33ad floppy.c:628 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf33af + out DX, AL ; ee ; 0xf33b2 + mov cl, bl ; 88 d9 ; 0xf33b3 floppy.c:633 + xor ch, ch ; 30 ed ; 0xf33b5 + mov ax, cx ; 89 c8 ; 0xf33b7 + call 02effh ; e8 43 fb ; 0xf33b9 + mov AL, strict byte 0e6h ; b0 e6 ; 0xf33bc floppy.c:636 + mov dx, 003f5h ; ba f5 03 ; 0xf33be + out DX, AL ; ee ; 0xf33c1 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf33c2 floppy.c:637 + xor ah, ah ; 30 e4 ; 0xf33c5 + mov dx, ax ; 89 c2 ; 0xf33c7 + sal dx, 1 ; d1 e2 ; 0xf33c9 + sal dx, 1 ; d1 e2 ; 0xf33cb + mov al, bl ; 88 d8 ; 0xf33cd + or ax, dx ; 09 d0 ; 0xf33cf + mov dx, 003f5h ; ba f5 03 ; 0xf33d1 + out DX, AL ; ee ; 0xf33d4 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf33d5 floppy.c:638 + out DX, AL ; ee ; 0xf33d8 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf33d9 floppy.c:639 + out DX, AL ; ee ; 0xf33dc + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf33dd floppy.c:640 + out DX, AL ; ee ; 0xf33e0 + mov AL, strict byte 002h ; b0 02 ; 0xf33e1 floppy.c:641 + out DX, AL ; ee ; 0xf33e3 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf33e4 floppy.c:642 + xor ah, ah ; 30 e4 ; 0xf33e7 + mov dl, bh ; 88 fa ; 0xf33e9 + xor dh, dh ; 30 f6 ; 0xf33eb + add ax, dx ; 01 d0 ; 0xf33ed + dec ax ; 48 ; 0xf33ef + mov dx, 003f5h ; ba f5 03 ; 0xf33f0 + out DX, AL ; ee ; 0xf33f3 + xor al, al ; 30 c0 ; 0xf33f4 floppy.c:643 + out DX, AL ; ee ; 0xf33f6 + mov AL, strict byte 0ffh ; b0 ff ; 0xf33f7 floppy.c:644 + out DX, AL ; ee ; 0xf33f9 + call 02e88h ; e8 8b fa ; 0xf33fa floppy.c:676 + test al, al ; 84 c0 ; 0xf33fd floppy.c:677 + jne short 03420h ; 75 1f ; 0xf33ff + mov ax, cx ; 89 c8 ; 0xf3401 floppy.c:679 + call 02ec0h ; e8 ba fa ; 0xf3403 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3406 floppy.c:680 + xor ah, ah ; 30 e4 ; 0xf3409 + or ah, 080h ; 80 cc 80 ; 0xf340b + mov word [bp+016h], ax ; 89 46 16 ; 0xf340e + mov bx, strict word 00041h ; bb 41 00 ; 0xf3411 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3414 + mov es, ax ; 8e c0 ; 0xf3417 + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3419 + jmp near 03317h ; e9 f7 fe ; 0xf341d + mov dx, 003f4h ; ba f4 03 ; 0xf3420 floppy.c:689 + in AL, DX ; ec ; 0xf3423 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3424 + and AL, strict byte 0c0h ; 24 c0 ; 0xf3426 floppy.c:690 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3428 + je short 0343eh ; 74 12 ; 0xf342a + mov ax, 002adh ; b8 ad 02 ; 0xf342c floppy.c:691 + push ax ; 50 ; 0xf342f + mov ax, 002e0h ; b8 e0 02 ; 0xf3430 + push ax ; 50 ; 0xf3433 + mov ax, strict word 00007h ; b8 07 00 ; 0xf3434 + push ax ; 50 ; 0xf3437 + call 0195ch ; e8 21 e5 ; 0xf3438 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf343b + xor cx, cx ; 31 c9 ; 0xf343e floppy.c:694 + jmp short 03447h ; eb 05 ; 0xf3440 + cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3442 + jnl short 0345dh ; 7d 16 ; 0xf3445 + mov dx, 003f5h ; ba f5 03 ; 0xf3447 floppy.c:695 + in AL, DX ; ec ; 0xf344a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf344b + mov si, cx ; 89 ce ; 0xf344d + add si, strict byte 00042h ; 83 c6 42 ; 0xf344f + mov dx, strict word 00040h ; ba 40 00 ; 0xf3452 floppy.c:53 + mov es, dx ; 8e c2 ; 0xf3455 + mov byte [es:si], al ; 26 88 04 ; 0xf3457 + inc cx ; 41 ; 0xf345a floppy.c:695 + jmp short 03442h ; eb e5 ; 0xf345b + mov si, strict word 00042h ; be 42 00 ; 0xf345d floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3460 + mov es, ax ; 8e c0 ; 0xf3463 + mov al, byte [es:si] ; 26 8a 04 ; 0xf3465 + test AL, strict byte 0c0h ; a8 c0 ; 0xf3468 floppy.c:49 + je short 0348dh ; 74 21 ; 0xf346a + mov al, bl ; 88 d8 ; 0xf346c floppy.c:699 + xor ah, ah ; 30 e4 ; 0xf346e + call 02ec0h ; e8 4d fa ; 0xf3470 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3473 floppy.c:700 + xor ah, ah ; 30 e4 ; 0xf3476 + or ah, 020h ; 80 cc 20 ; 0xf3478 + mov word [bp+016h], ax ; 89 46 16 ; 0xf347b + mov bx, strict word 00041h ; bb 41 00 ; 0xf347e floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3481 + mov es, ax ; 8e c0 ; 0xf3484 + mov byte [es:bx], 020h ; 26 c6 07 20 ; 0xf3486 + jmp near 0336fh ; e9 e2 fe ; 0xf348a + mov al, bh ; 88 f8 ; 0xf348d floppy.c:708 + xor ah, ah ; 30 e4 ; 0xf348f + mov CL, strict byte 009h ; b1 09 ; 0xf3491 + sal ax, CL ; d3 e0 ; 0xf3493 + cwd ; 99 ; 0xf3495 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf3496 + sar ax, 1 ; d1 f8 ; 0xf3498 + mov si, word [bp+010h] ; 8b 76 10 ; 0xf349a + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf349d + mov di, si ; 89 f7 ; 0xf34a0 + mov cx, ax ; 89 c1 ; 0xf34a2 + mov es, dx ; 8e c2 ; 0xf34a4 + push DS ; 1e ; 0xf34a6 + mov ds, dx ; 8e da ; 0xf34a7 + rep movsw ; f3 a5 ; 0xf34a9 + pop DS ; 1f ; 0xf34ab + mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf34ac floppy.c:712 + xor dh, dh ; 30 f6 ; 0xf34af + mov al, bl ; 88 d8 ; 0xf34b1 + xor ah, ah ; 30 e4 ; 0xf34b3 + call 02e39h ; e8 81 f9 ; 0xf34b5 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf34b8 floppy.c:714 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf34bc floppy.c:715 + jmp near 03244h ; e9 81 fd ; 0xf34c0 floppy.c:716 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf34c3 floppy.c:717 + xor ah, ah ; 30 e4 ; 0xf34c6 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf34c8 + je short 034d0h ; 74 03 ; 0xf34cb + jmp near 035fch ; e9 2c 01 ; 0xf34cd + mov CL, strict byte 00ch ; b1 0c ; 0xf34d0 floppy.c:728 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf34d2 + shr dx, CL ; d3 ea ; 0xf34d5 + mov ch, dl ; 88 d5 ; 0xf34d7 + mov CL, strict byte 004h ; b1 04 ; 0xf34d9 floppy.c:729 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf34db + sal ax, CL ; d3 e0 ; 0xf34de + mov si, word [bp+010h] ; 8b 76 10 ; 0xf34e0 floppy.c:730 + add si, ax ; 01 c6 ; 0xf34e3 + mov word [bp-00ch], si ; 89 76 f4 ; 0xf34e5 + cmp ax, si ; 39 f0 ; 0xf34e8 floppy.c:732 + jbe short 034eeh ; 76 02 ; 0xf34ea + db 0feh, 0c5h + ; inc ch ; fe c5 ; 0xf34ec floppy.c:734 + mov al, bh ; 88 f8 ; 0xf34ee floppy.c:736 + xor ah, ah ; 30 e4 ; 0xf34f0 + mov CL, strict byte 009h ; b1 09 ; 0xf34f2 + sal ax, CL ; d3 e0 ; 0xf34f4 + dec ax ; 48 ; 0xf34f6 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf34f7 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf34fa floppy.c:739 + add ax, word [bp-00eh] ; 03 46 f2 ; 0xf34fd + cmp ax, word [bp-00ch] ; 3b 46 f4 ; 0xf3500 floppy.c:740 + jnc short 03508h ; 73 03 ; 0xf3503 + jmp near 0335ch ; e9 54 fe ; 0xf3505 + mov AL, strict byte 006h ; b0 06 ; 0xf3508 floppy.c:749 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf350a + out DX, AL ; ee ; 0xf350d + xor al, al ; 30 c0 ; 0xf350e floppy.c:751 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3510 + out DX, AL ; ee ; 0xf3513 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3514 floppy.c:752 + mov dx, strict word 00004h ; ba 04 00 ; 0xf3517 + out DX, AL ; ee ; 0xf351a + mov al, byte [bp-00bh] ; 8a 46 f5 ; 0xf351b floppy.c:753 + out DX, AL ; ee ; 0xf351e + xor al, al ; 30 c0 ; 0xf351f floppy.c:754 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3521 + out DX, AL ; ee ; 0xf3524 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf3525 floppy.c:755 + mov dx, strict word 00005h ; ba 05 00 ; 0xf3528 + out DX, AL ; ee ; 0xf352b + mov al, byte [bp-00dh] ; 8a 46 f3 ; 0xf352c floppy.c:756 + out DX, AL ; ee ; 0xf352f + mov AL, strict byte 04ah ; b0 4a ; 0xf3530 floppy.c:763 + mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3532 + out DX, AL ; ee ; 0xf3535 + mov al, ch ; 88 e8 ; 0xf3536 floppy.c:766 + mov dx, 00081h ; ba 81 00 ; 0xf3538 + out DX, AL ; ee ; 0xf353b + mov AL, strict byte 002h ; b0 02 ; 0xf353c floppy.c:769 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf353e + out DX, AL ; ee ; 0xf3541 + mov cl, bl ; 88 d9 ; 0xf3542 floppy.c:774 + xor ch, ch ; 30 ed ; 0xf3544 + mov ax, cx ; 89 c8 ; 0xf3546 + call 02effh ; e8 b4 f9 ; 0xf3548 + mov AL, strict byte 0c5h ; b0 c5 ; 0xf354b floppy.c:777 + mov dx, 003f5h ; ba f5 03 ; 0xf354d + out DX, AL ; ee ; 0xf3550 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3551 floppy.c:778 + xor ah, ah ; 30 e4 ; 0xf3554 + mov dx, ax ; 89 c2 ; 0xf3556 + sal dx, 1 ; d1 e2 ; 0xf3558 + sal dx, 1 ; d1 e2 ; 0xf355a + mov al, bl ; 88 d8 ; 0xf355c + or ax, dx ; 09 d0 ; 0xf355e + mov dx, 003f5h ; ba f5 03 ; 0xf3560 + out DX, AL ; ee ; 0xf3563 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3564 floppy.c:779 + out DX, AL ; ee ; 0xf3567 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3568 floppy.c:780 + out DX, AL ; ee ; 0xf356b + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf356c floppy.c:781 + out DX, AL ; ee ; 0xf356f + mov AL, strict byte 002h ; b0 02 ; 0xf3570 floppy.c:782 + out DX, AL ; ee ; 0xf3572 + mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf3573 floppy.c:783 + xor dh, dh ; 30 f6 ; 0xf3576 + mov al, bh ; 88 f8 ; 0xf3578 + xor ah, ah ; 30 e4 ; 0xf357a + add ax, dx ; 01 d0 ; 0xf357c + dec ax ; 48 ; 0xf357e + mov dx, 003f5h ; ba f5 03 ; 0xf357f + out DX, AL ; ee ; 0xf3582 + xor al, al ; 30 c0 ; 0xf3583 floppy.c:784 + out DX, AL ; ee ; 0xf3585 + mov AL, strict byte 0ffh ; b0 ff ; 0xf3586 floppy.c:785 + out DX, AL ; ee ; 0xf3588 + call 02e88h ; e8 fc f8 ; 0xf3589 floppy.c:814 + test al, al ; 84 c0 ; 0xf358c floppy.c:815 + jne short 03593h ; 75 03 ; 0xf358e + jmp near 03401h ; e9 6e fe ; 0xf3590 + mov dx, 003f4h ; ba f4 03 ; 0xf3593 floppy.c:826 + in AL, DX ; ec ; 0xf3596 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3597 + and AL, strict byte 0c0h ; 24 c0 ; 0xf3599 floppy.c:827 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf359b + je short 035b1h ; 74 12 ; 0xf359d + mov ax, 002adh ; b8 ad 02 ; 0xf359f floppy.c:828 + push ax ; 50 ; 0xf35a2 + mov ax, 002e0h ; b8 e0 02 ; 0xf35a3 + push ax ; 50 ; 0xf35a6 + mov ax, strict word 00007h ; b8 07 00 ; 0xf35a7 + push ax ; 50 ; 0xf35aa + call 0195ch ; e8 ae e3 ; 0xf35ab + add sp, strict byte 00006h ; 83 c4 06 ; 0xf35ae + xor cx, cx ; 31 c9 ; 0xf35b1 floppy.c:831 + jmp short 035bah ; eb 05 ; 0xf35b3 + cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf35b5 + jnl short 035d0h ; 7d 16 ; 0xf35b8 + mov dx, 003f5h ; ba f5 03 ; 0xf35ba floppy.c:832 + in AL, DX ; ec ; 0xf35bd + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf35be + mov si, cx ; 89 ce ; 0xf35c0 + add si, strict byte 00042h ; 83 c6 42 ; 0xf35c2 + mov dx, strict word 00040h ; ba 40 00 ; 0xf35c5 floppy.c:53 + mov es, dx ; 8e c2 ; 0xf35c8 + mov byte [es:si], al ; 26 88 04 ; 0xf35ca + inc cx ; 41 ; 0xf35cd floppy.c:832 + jmp short 035b5h ; eb e5 ; 0xf35ce + mov si, strict word 00042h ; be 42 00 ; 0xf35d0 floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf35d3 + mov es, ax ; 8e c0 ; 0xf35d6 + mov al, byte [es:si] ; 26 8a 04 ; 0xf35d8 + test AL, strict byte 0c0h ; a8 c0 ; 0xf35db floppy.c:49 + jne short 035e2h ; 75 03 ; 0xf35dd + jmp near 034ach ; e9 ca fe ; 0xf35df + mov bx, strict word 00043h ; bb 43 00 ; 0xf35e2 floppy.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf35e5 + test AL, strict byte 002h ; a8 02 ; 0xf35e8 floppy.c:49 + je short 035f4h ; 74 08 ; 0xf35ea + mov word [bp+016h], 00300h ; c7 46 16 00 03 ; 0xf35ec floppy.c:839 + jmp near 03a4ah ; e9 56 04 ; 0xf35f1 + mov word [bp+016h], 00100h ; c7 46 16 00 01 ; 0xf35f4 floppy.c:842 + jmp near 03a4ah ; e9 4e 04 ; 0xf35f9 floppy.c:843 + mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf35fc floppy.c:858 + xor dh, dh ; 30 f6 ; 0xf35ff + mov al, bl ; 88 d8 ; 0xf3601 + xor ah, ah ; 30 e4 ; 0xf3603 + call 02e39h ; e8 31 f8 ; 0xf3605 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3608 floppy.c:860 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf360c floppy.c:861 + jmp near 03244h ; e9 31 fc ; 0xf3610 floppy.c:862 + mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf3613 floppy.c:869 + mov dl, byte [bp+015h] ; 8a 56 15 ; 0xf3616 floppy.c:870 + xor dh, dh ; 30 f6 ; 0xf3619 + mov byte [bp-004h], dl ; 88 56 fc ; 0xf361b + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf361e floppy.c:871 + xor ah, ah ; 30 e4 ; 0xf3621 + mov byte [bp-006h], al ; 88 46 fa ; 0xf3623 + mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf3626 floppy.c:872 + cmp bl, 001h ; 80 fb 01 ; 0xf3629 floppy.c:874 + jnbe short 03640h ; 77 12 ; 0xf362c + cmp AL, strict byte 001h ; 3c 01 ; 0xf362e + jnbe short 03640h ; 77 0e ; 0xf3630 + cmp dl, 04fh ; 80 fa 4f ; 0xf3632 + jnbe short 03640h ; 77 09 ; 0xf3635 + test bh, bh ; 84 ff ; 0xf3637 + je short 03640h ; 74 05 ; 0xf3639 + cmp bh, 012h ; 80 ff 12 ; 0xf363b + jbe short 0365bh ; 76 1b ; 0xf363e + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3640 floppy.c:876 + xor ah, ah ; 30 e4 ; 0xf3643 + or ah, 001h ; 80 cc 01 ; 0xf3645 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3648 + mov si, strict word 00041h ; be 41 00 ; 0xf364b floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf364e + mov es, ax ; 8e c0 ; 0xf3651 + mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf3653 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3657 floppy.c:878 + mov al, bl ; 88 d8 ; 0xf365b floppy.c:882 + xor ah, ah ; 30 e4 ; 0xf365d + call 0313ah ; e8 d8 fa ; 0xf365f + test ax, ax ; 85 c0 ; 0xf3662 + jne short 03680h ; 75 1a ; 0xf3664 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3666 floppy.c:883 + xor ah, ah ; 30 e4 ; 0xf3669 + or ah, 080h ; 80 cc 80 ; 0xf366b + mov word [bp+016h], ax ; 89 46 16 ; 0xf366e + mov bx, strict word 00041h ; bb 41 00 ; 0xf3671 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3674 + mov es, ax ; 8e c0 ; 0xf3677 + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3679 + jmp near 03a4ah ; e9 ca 03 ; 0xf367d + mov cl, bl ; 88 d9 ; 0xf3680 floppy.c:890 + xor ch, ch ; 30 ed ; 0xf3682 + mov ax, cx ; 89 c8 ; 0xf3684 + call 02f74h ; e8 eb f8 ; 0xf3686 + test ax, ax ; 85 c0 ; 0xf3689 + jne short 03699h ; 75 0c ; 0xf368b + mov ax, cx ; 89 c8 ; 0xf368d floppy.c:891 + call 03053h ; e8 c1 f9 ; 0xf368f + test ax, ax ; 85 c0 ; 0xf3692 + jne short 03699h ; 75 03 ; 0xf3694 + jmp near 03300h ; e9 67 fc ; 0xf3696 + mov CL, strict byte 00ch ; b1 0c ; 0xf3699 floppy.c:902 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf369b + shr ax, CL ; d3 e8 ; 0xf369e + mov ch, al ; 88 c5 ; 0xf36a0 + mov CL, strict byte 004h ; b1 04 ; 0xf36a2 floppy.c:903 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf36a4 + sal dx, CL ; d3 e2 ; 0xf36a7 + mov si, word [bp+010h] ; 8b 76 10 ; 0xf36a9 floppy.c:904 + add si, dx ; 01 d6 ; 0xf36ac + mov word [bp-00ch], si ; 89 76 f4 ; 0xf36ae + cmp dx, si ; 39 f2 ; 0xf36b1 floppy.c:906 + jbe short 036b7h ; 76 02 ; 0xf36b3 + db 0feh, 0c5h + ; inc ch ; fe c5 ; 0xf36b5 floppy.c:908 + mov al, bh ; 88 f8 ; 0xf36b7 floppy.c:910 + xor ah, ah ; 30 e4 ; 0xf36b9 + sal ax, 1 ; d1 e0 ; 0xf36bb + sal ax, 1 ; d1 e0 ; 0xf36bd + dec ax ; 48 ; 0xf36bf + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf36c0 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf36c3 floppy.c:913 + add ax, word [bp-00eh] ; 03 46 f2 ; 0xf36c6 + cmp ax, word [bp-00ch] ; 3b 46 f4 ; 0xf36c9 floppy.c:914 + jnc short 036e8h ; 73 1a ; 0xf36cc + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf36ce floppy.c:915 + xor ah, ah ; 30 e4 ; 0xf36d1 + or ah, 009h ; 80 cc 09 ; 0xf36d3 + mov word [bp+016h], ax ; 89 46 16 ; 0xf36d6 + mov bx, strict word 00041h ; bb 41 00 ; 0xf36d9 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf36dc + mov es, ax ; 8e c0 ; 0xf36df + mov byte [es:bx], 009h ; 26 c6 07 09 ; 0xf36e1 + jmp near 0336fh ; e9 87 fc ; 0xf36e5 + mov AL, strict byte 006h ; b0 06 ; 0xf36e8 floppy.c:922 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf36ea + out DX, AL ; ee ; 0xf36ed + xor al, al ; 30 c0 ; 0xf36ee floppy.c:923 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf36f0 + out DX, AL ; ee ; 0xf36f3 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf36f4 floppy.c:924 + mov dx, strict word 00004h ; ba 04 00 ; 0xf36f7 + out DX, AL ; ee ; 0xf36fa + mov al, byte [bp-00bh] ; 8a 46 f5 ; 0xf36fb floppy.c:925 + out DX, AL ; ee ; 0xf36fe + xor al, al ; 30 c0 ; 0xf36ff floppy.c:926 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3701 + out DX, AL ; ee ; 0xf3704 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf3705 floppy.c:927 + mov dx, strict word 00005h ; ba 05 00 ; 0xf3708 + out DX, AL ; ee ; 0xf370b + mov al, byte [bp-00dh] ; 8a 46 f3 ; 0xf370c floppy.c:928 + out DX, AL ; ee ; 0xf370f + mov AL, strict byte 04ah ; b0 4a ; 0xf3710 floppy.c:931 + mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3712 + out DX, AL ; ee ; 0xf3715 + mov al, ch ; 88 e8 ; 0xf3716 floppy.c:933 + mov dx, 00081h ; ba 81 00 ; 0xf3718 + out DX, AL ; ee ; 0xf371b + mov AL, strict byte 002h ; b0 02 ; 0xf371c floppy.c:934 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf371e + out DX, AL ; ee ; 0xf3721 + mov cl, bl ; 88 d9 ; 0xf3722 floppy.c:937 + xor ch, ch ; 30 ed ; 0xf3724 + mov ax, cx ; 89 c8 ; 0xf3726 + call 02effh ; e8 d4 f7 ; 0xf3728 + mov AL, strict byte 00fh ; b0 0f ; 0xf372b floppy.c:940 + mov dx, 003f5h ; ba f5 03 ; 0xf372d + out DX, AL ; ee ; 0xf3730 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3731 floppy.c:941 + xor ah, ah ; 30 e4 ; 0xf3734 + mov dx, ax ; 89 c2 ; 0xf3736 + sal dx, 1 ; d1 e2 ; 0xf3738 + sal dx, 1 ; d1 e2 ; 0xf373a + mov al, bl ; 88 d8 ; 0xf373c + or dx, ax ; 09 c2 ; 0xf373e + mov word [bp-008h], dx ; 89 56 f8 ; 0xf3740 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3743 + mov dx, 003f5h ; ba f5 03 ; 0xf3746 + out DX, AL ; ee ; 0xf3749 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf374a floppy.c:942 + out DX, AL ; ee ; 0xf374d + mov AL, strict byte 04dh ; b0 4d ; 0xf374e floppy.c:945 + out DX, AL ; ee ; 0xf3750 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3751 floppy.c:946 + out DX, AL ; ee ; 0xf3754 + mov AL, strict byte 002h ; b0 02 ; 0xf3755 floppy.c:947 + out DX, AL ; ee ; 0xf3757 + mov al, bh ; 88 f8 ; 0xf3758 floppy.c:948 + out DX, AL ; ee ; 0xf375a + xor al, bh ; 30 f8 ; 0xf375b floppy.c:949 + out DX, AL ; ee ; 0xf375d + mov AL, strict byte 0f6h ; b0 f6 ; 0xf375e floppy.c:950 + out DX, AL ; ee ; 0xf3760 + call 02e88h ; e8 24 f7 ; 0xf3761 floppy.c:978 + test al, al ; 84 c0 ; 0xf3764 floppy.c:979 + jne short 03770h ; 75 08 ; 0xf3766 + mov ax, cx ; 89 c8 ; 0xf3768 floppy.c:980 + call 02ec0h ; e8 53 f7 ; 0xf376a + jmp near 03666h ; e9 f6 fe ; 0xf376d floppy.c:78 + mov dx, 003f4h ; ba f4 03 ; 0xf3770 floppy.c:989 + in AL, DX ; ec ; 0xf3773 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3774 + and AL, strict byte 0c0h ; 24 c0 ; 0xf3776 floppy.c:990 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3778 + je short 0378eh ; 74 12 ; 0xf377a + mov ax, 002adh ; b8 ad 02 ; 0xf377c floppy.c:991 + push ax ; 50 ; 0xf377f + mov ax, 002e0h ; b8 e0 02 ; 0xf3780 + push ax ; 50 ; 0xf3783 + mov ax, strict word 00007h ; b8 07 00 ; 0xf3784 + push ax ; 50 ; 0xf3787 + call 0195ch ; e8 d1 e1 ; 0xf3788 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf378b + xor cx, cx ; 31 c9 ; 0xf378e floppy.c:994 + jmp short 03797h ; eb 05 ; 0xf3790 + cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3792 + jnl short 037adh ; 7d 16 ; 0xf3795 + mov dx, 003f5h ; ba f5 03 ; 0xf3797 floppy.c:995 + in AL, DX ; ec ; 0xf379a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf379b + mov si, cx ; 89 ce ; 0xf379d + add si, strict byte 00042h ; 83 c6 42 ; 0xf379f + mov dx, strict word 00040h ; ba 40 00 ; 0xf37a2 floppy.c:53 + mov es, dx ; 8e c2 ; 0xf37a5 + mov byte [es:si], al ; 26 88 04 ; 0xf37a7 + inc cx ; 41 ; 0xf37aa floppy.c:995 + jmp short 03792h ; eb e5 ; 0xf37ab + mov si, strict word 00042h ; be 42 00 ; 0xf37ad floppy.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf37b0 + mov es, ax ; 8e c0 ; 0xf37b3 + mov al, byte [es:si] ; 26 8a 04 ; 0xf37b5 + test AL, strict byte 0c0h ; a8 c0 ; 0xf37b8 floppy.c:49 + je short 037dbh ; 74 1f ; 0xf37ba + mov si, strict word 00043h ; be 43 00 ; 0xf37bc floppy.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf37bf + test AL, strict byte 002h ; a8 02 ; 0xf37c2 floppy.c:49 + je short 037c9h ; 74 03 ; 0xf37c4 + jmp near 035ech ; e9 23 fe ; 0xf37c6 + mov ax, 002adh ; b8 ad 02 ; 0xf37c9 floppy.c:1006 + push ax ; 50 ; 0xf37cc + mov ax, 002f4h ; b8 f4 02 ; 0xf37cd + push ax ; 50 ; 0xf37d0 + mov ax, strict word 00007h ; b8 07 00 ; 0xf37d1 + push ax ; 50 ; 0xf37d4 + call 0195ch ; e8 84 e1 ; 0xf37d5 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf37d8 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf37db floppy.c:1010 + mov si, strict word 00041h ; be 41 00 ; 0xf37df floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf37e2 + mov es, ax ; 8e c0 ; 0xf37e5 + mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf37e7 + mov al, bl ; 88 d8 ; 0xf37eb floppy.c:1012 + xor ah, ah ; 30 e4 ; 0xf37ed + xor dx, dx ; 31 d2 ; 0xf37ef + call 02e39h ; e8 45 f6 ; 0xf37f1 + jmp near 034bch ; e9 c5 fc ; 0xf37f4 + mov bl, dl ; 88 d3 ; 0xf37f7 floppy.c:1019 + cmp dl, 001h ; 80 fa 01 ; 0xf37f9 floppy.c:1021 + jbe short 03824h ; 76 26 ; 0xf37fc + mov word [bp+016h], strict word 00000h ; c7 46 16 00 00 ; 0xf37fe floppy.c:1022 + mov word [bp+010h], strict word 00000h ; c7 46 10 00 00 ; 0xf3803 floppy.c:1023 + mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf3808 floppy.c:1024 + mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf380d floppy.c:1025 + mov word [bp+006h], strict word 00000h ; c7 46 06 00 00 ; 0xf3812 floppy.c:1026 + mov word [bp+008h], strict word 00000h ; c7 46 08 00 00 ; 0xf3817 floppy.c:1027 + mov dl, bh ; 88 fa ; 0xf381c floppy.c:1028 + mov word [bp+012h], dx ; 89 56 12 ; 0xf381e + jmp near 03949h ; e9 25 01 ; 0xf3821 + mov ax, strict word 00010h ; b8 10 00 ; 0xf3824 floppy.c:1029 + call 01664h ; e8 3a de ; 0xf3827 + mov dl, al ; 88 c2 ; 0xf382a + xor bh, bh ; 30 ff ; 0xf382c floppy.c:1035 + test AL, strict byte 0f0h ; a8 f0 ; 0xf382e floppy.c:1036 + je short 03834h ; 74 02 ; 0xf3830 + mov BH, strict byte 001h ; b7 01 ; 0xf3832 floppy.c:1037 + test dl, 00fh ; f6 c2 0f ; 0xf3834 floppy.c:1038 + je short 0383bh ; 74 02 ; 0xf3837 + db 0feh, 0c7h + ; inc bh ; fe c7 ; 0xf3839 floppy.c:1039 + test bl, bl ; 84 db ; 0xf383b floppy.c:1041 + jne short 03845h ; 75 06 ; 0xf383d + mov CL, strict byte 004h ; b1 04 ; 0xf383f floppy.c:1042 + shr dl, CL ; d2 ea ; 0xf3841 + jmp short 03848h ; eb 03 ; 0xf3843 floppy.c:1043 + and dl, 00fh ; 80 e2 0f ; 0xf3845 floppy.c:1044 + mov byte [bp+011h], 000h ; c6 46 11 00 ; 0xf3848 floppy.c:1047 + mov al, dl ; 88 d0 ; 0xf384c + xor ah, ah ; 30 e4 ; 0xf384e + mov word [bp+010h], ax ; 89 46 10 ; 0xf3850 + xor al, dl ; 30 d0 ; 0xf3853 floppy.c:1048 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3855 + mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf3858 floppy.c:1050 + mov cl, bh ; 88 f9 ; 0xf385b + mov word [bp+012h], cx ; 89 4e 12 ; 0xf385d + mov ax, cx ; 89 c8 ; 0xf3860 floppy.c:1051 + xor ah, ch ; 30 ec ; 0xf3862 + or ah, 001h ; 80 cc 01 ; 0xf3864 + mov word [bp+012h], ax ; 89 46 12 ; 0xf3867 + cmp dl, 003h ; 80 fa 03 ; 0xf386a floppy.c:1053 + jc short 03884h ; 72 15 ; 0xf386d + jbe short 038abh ; 76 3a ; 0xf386f + cmp dl, 005h ; 80 fa 05 ; 0xf3871 + jc short 038b2h ; 72 3c ; 0xf3874 + jbe short 038b9h ; 76 41 ; 0xf3876 + cmp dl, 00fh ; 80 fa 0f ; 0xf3878 + je short 038c7h ; 74 4a ; 0xf387b + cmp dl, 00eh ; 80 fa 0e ; 0xf387d + je short 038c0h ; 74 3e ; 0xf3880 + jmp short 038ceh ; eb 4a ; 0xf3882 + cmp dl, 002h ; 80 fa 02 ; 0xf3884 + je short 038a4h ; 74 1b ; 0xf3887 + cmp dl, 001h ; 80 fa 01 ; 0xf3889 + je short 0389dh ; 74 0f ; 0xf388c + test dl, dl ; 84 d2 ; 0xf388e + jne short 038ceh ; 75 3c ; 0xf3890 + mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf3892 floppy.c:1055 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf3897 floppy.c:1056 + jmp short 038e0h ; eb 43 ; 0xf389b floppy.c:1057 + mov word [bp+014h], 02709h ; c7 46 14 09 27 ; 0xf389d floppy.c:1060 + jmp short 038e0h ; eb 3c ; 0xf38a2 floppy.c:1061 + mov word [bp+014h], 04f0fh ; c7 46 14 0f 4f ; 0xf38a4 floppy.c:1064 + jmp short 038e0h ; eb 35 ; 0xf38a9 floppy.c:1065 + mov word [bp+014h], 04f09h ; c7 46 14 09 4f ; 0xf38ab floppy.c:1068 + jmp short 038e0h ; eb 2e ; 0xf38b0 floppy.c:1069 + mov word [bp+014h], 04f12h ; c7 46 14 12 4f ; 0xf38b2 floppy.c:1072 + jmp short 038e0h ; eb 27 ; 0xf38b7 floppy.c:1073 + mov word [bp+014h], 04f24h ; c7 46 14 24 4f ; 0xf38b9 floppy.c:1076 + jmp short 038e0h ; eb 20 ; 0xf38be floppy.c:1077 + mov word [bp+014h], 0fe3fh ; c7 46 14 3f fe ; 0xf38c0 floppy.c:1080 + jmp short 038e0h ; eb 19 ; 0xf38c5 floppy.c:1081 + mov word [bp+014h], 0feffh ; c7 46 14 ff fe ; 0xf38c7 floppy.c:1084 + jmp short 038e0h ; eb 12 ; 0xf38cc floppy.c:1085 + mov ax, 002adh ; b8 ad 02 ; 0xf38ce floppy.c:1089 + push ax ; 50 ; 0xf38d1 + mov ax, 00305h ; b8 05 03 ; 0xf38d2 + push ax ; 50 ; 0xf38d5 + mov ax, strict word 00007h ; b8 07 00 ; 0xf38d6 + push ax ; 50 ; 0xf38d9 + call 0195ch ; e8 7f e0 ; 0xf38da + add sp, strict byte 00006h ; 83 c4 06 ; 0xf38dd + mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf38e0 floppy.c:1093 + mov al, dl ; 88 d0 ; 0xf38e5 floppy.c:1094 + xor ah, ah ; 30 e4 ; 0xf38e7 + call 03b85h ; e8 99 02 ; 0xf38e9 + mov word [bp+008h], ax ; 89 46 08 ; 0xf38ec + jmp near 034bch ; e9 ca fb ; 0xf38ef + mov bl, dl ; 88 d3 ; 0xf38f2 floppy.c:1101 + cmp dl, 001h ; 80 fa 01 ; 0xf38f4 floppy.c:1102 + jbe short 038feh ; 76 05 ; 0xf38f7 + mov word [bp+016h], cx ; 89 4e 16 ; 0xf38f9 floppy.c:1103 + jmp short 03949h ; eb 4b ; 0xf38fc + mov ax, strict word 00010h ; b8 10 00 ; 0xf38fe floppy.c:1109 + call 01664h ; e8 60 dd ; 0xf3901 + test bl, bl ; 84 db ; 0xf3904 floppy.c:1110 + jne short 03910h ; 75 08 ; 0xf3906 + mov CL, strict byte 004h ; b1 04 ; 0xf3908 floppy.c:1111 + mov dl, al ; 88 c2 ; 0xf390a + shr dl, CL ; d2 ea ; 0xf390c + jmp short 03915h ; eb 05 ; 0xf390e floppy.c:1112 + mov dl, al ; 88 c2 ; 0xf3910 floppy.c:1113 + and dl, 00fh ; 80 e2 0f ; 0xf3912 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3915 floppy.c:1114 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3919 + xor ah, ah ; 30 e4 ; 0xf391c + test dl, dl ; 84 d2 ; 0xf391e floppy.c:1115 + je short 0392fh ; 74 0d ; 0xf3920 + cmp dl, 001h ; 80 fa 01 ; 0xf3922 floppy.c:1116 + jbe short 0392ch ; 76 05 ; 0xf3925 + or ah, 002h ; 80 cc 02 ; 0xf3927 floppy.c:1118 + jmp short 0392fh ; eb 03 ; 0xf392a floppy.c:1119 + or ah, 001h ; 80 cc 01 ; 0xf392c floppy.c:1120 + mov word [bp+016h], ax ; 89 46 16 ; 0xf392f + jmp near 03244h ; e9 0f f9 ; 0xf3932 floppy.c:1123 + cmp dl, 001h ; 80 fa 01 ; 0xf3935 floppy.c:1128 + jbe short 0394fh ; 76 15 ; 0xf3938 + mov word [bp+016h], si ; 89 76 16 ; 0xf393a floppy.c:1129 + mov bx, strict word 00041h ; bb 41 00 ; 0xf393d floppy.c:53 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3940 + mov es, dx ; 8e c2 ; 0xf3943 + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3945 + mov word [bp+01ch], ax ; 89 46 1c ; 0xf3949 + jmp near 03244h ; e9 f5 f8 ; 0xf394c + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf394f floppy.c:1135 + xor ah, ah ; 30 e4 ; 0xf3952 + or ah, 006h ; 80 cc 06 ; 0xf3954 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3957 + mov bx, strict word 00041h ; bb 41 00 ; 0xf395a floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf395d + mov es, ax ; 8e c0 ; 0xf3960 + mov byte [es:bx], 006h ; 26 c6 07 06 ; 0xf3962 + jmp near 03a4ah ; e9 e1 00 ; 0xf3966 + mov bl, dl ; 88 d3 ; 0xf3969 floppy.c:1144 + mov cl, byte [bp+016h] ; 8a 4e 16 ; 0xf396b floppy.c:1152 + cmp dl, 001h ; 80 fa 01 ; 0xf396e floppy.c:1156 + jnbe short 0393ah ; 77 c7 ; 0xf3971 + mov al, bl ; 88 d8 ; 0xf3973 floppy.c:1164 + xor ah, ah ; 30 e4 ; 0xf3975 + call 0313ah ; e8 c0 f7 ; 0xf3977 + test ax, ax ; 85 c0 ; 0xf397a + jne short 03981h ; 75 03 ; 0xf397c + jmp near 03666h ; e9 e5 fc ; 0xf397e + test bl, bl ; 84 db ; 0xf3981 floppy.c:1172 + je short 0398ah ; 74 05 ; 0xf3983 + mov bx, 00091h ; bb 91 00 ; 0xf3985 + jmp short 0398dh ; eb 03 ; 0xf3988 + mov bx, 00090h ; bb 90 00 ; 0xf398a + mov word [bp-00ch], bx ; 89 5e f4 ; 0xf398d + mov ax, strict word 00040h ; b8 40 00 ; 0xf3990 floppy.c:48 + mov es, ax ; 8e c0 ; 0xf3993 + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf3995 + and bl, 00fh ; 80 e3 0f ; 0xf3998 floppy.c:1176 + cmp cl, 002h ; 80 f9 02 ; 0xf399b floppy.c:1178 + jc short 039afh ; 72 0f ; 0xf399e + jbe short 039bch ; 76 1a ; 0xf39a0 + cmp cl, 004h ; 80 f9 04 ; 0xf39a2 + je short 039b7h ; 74 10 ; 0xf39a5 + cmp cl, 003h ; 80 f9 03 ; 0xf39a7 + je short 039c1h ; 74 15 ; 0xf39aa + jmp near 031ceh ; e9 1f f8 ; 0xf39ac + cmp cl, 001h ; 80 f9 01 ; 0xf39af + je short 039b7h ; 74 03 ; 0xf39b2 + jmp near 031ceh ; e9 17 f8 ; 0xf39b4 + or bl, 090h ; 80 cb 90 ; 0xf39b7 floppy.c:1181 + jmp short 039c4h ; eb 08 ; 0xf39ba floppy.c:1182 + or bl, 070h ; 80 cb 70 ; 0xf39bc floppy.c:1185 + jmp short 039c4h ; eb 03 ; 0xf39bf floppy.c:1186 + or bl, 010h ; 80 cb 10 ; 0xf39c1 floppy.c:1189 + mov ax, strict word 00040h ; b8 40 00 ; 0xf39c4 floppy.c:53 + mov es, ax ; 8e c0 ; 0xf39c7 + mov si, word [bp-00ch] ; 8b 76 f4 ; 0xf39c9 + mov byte [es:si], bl ; 26 88 1c ; 0xf39cc + xor al, al ; 30 c0 ; 0xf39cf floppy.c:1208 + mov byte [bp+017h], al ; 88 46 17 ; 0xf39d1 + mov bx, strict word 00041h ; bb 41 00 ; 0xf39d4 floppy.c:53 + mov byte [es:bx], al ; 26 88 07 ; 0xf39d7 + jmp near 034bch ; e9 df fa ; 0xf39da + mov bl, dl ; 88 d3 ; 0xf39dd floppy.c:1218 + mov cl, byte [bp+014h] ; 8a 4e 14 ; 0xf39df floppy.c:1220 + mov bh, cl ; 88 cf ; 0xf39e2 floppy.c:1221 + and bh, 03fh ; 80 e7 3f ; 0xf39e4 + mov byte [bp-00ah], cl ; 88 4e f6 ; 0xf39e7 floppy.c:1222 + mov byte [bp-009h], dh ; 88 76 f7 ; 0xf39ea + mov CL, strict byte 006h ; b1 06 ; 0xf39ed + mov di, word [bp-00ah] ; 8b 7e f6 ; 0xf39ef + sar di, CL ; d3 ff ; 0xf39f2 + mov cx, di ; 89 f9 ; 0xf39f4 + mov byte [bp-009h], cl ; 88 4e f7 ; 0xf39f6 + mov byte [bp-00ah], dh ; 88 76 f6 ; 0xf39f9 + mov cl, byte [bp+015h] ; 8a 4e 15 ; 0xf39fc + xor ch, ch ; 30 ed ; 0xf39ff + add cx, word [bp-00ah] ; 03 4e f6 ; 0xf3a01 + mov byte [bp-004h], cl ; 88 4e fc ; 0xf3a04 + cmp dl, 001h ; 80 fa 01 ; 0xf3a07 floppy.c:1227 + jbe short 03a0fh ; 76 03 ; 0xf3a0a + jmp near 0393ah ; e9 2b ff ; 0xf3a0c + mov al, bl ; 88 d8 ; 0xf3a0f floppy.c:1235 + xor ah, ah ; 30 e4 ; 0xf3a11 + call 0313ah ; e8 24 f7 ; 0xf3a13 + test ax, ax ; 85 c0 ; 0xf3a16 + jne short 03a1dh ; 75 03 ; 0xf3a18 + jmp near 03666h ; e9 49 fc ; 0xf3a1a + mov cl, bl ; 88 d9 ; 0xf3a1d floppy.c:1243 + xor ch, ch ; 30 ed ; 0xf3a1f + mov ax, cx ; 89 c8 ; 0xf3a21 + call 02f74h ; e8 4e f5 ; 0xf3a23 + test ax, ax ; 85 c0 ; 0xf3a26 + jne short 03a51h ; 75 27 ; 0xf3a28 + mov ax, cx ; 89 c8 ; 0xf3a2a floppy.c:1244 + call 03053h ; e8 24 f6 ; 0xf3a2c + test ax, ax ; 85 c0 ; 0xf3a2f + jne short 03a51h ; 75 1e ; 0xf3a31 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3a33 floppy.c:1245 + xor ah, ah ; 30 e4 ; 0xf3a36 + or ah, 00ch ; 80 cc 0c ; 0xf3a38 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3a3b + mov bx, strict word 00041h ; bb 41 00 ; 0xf3a3e floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3a41 + mov es, ax ; 8e c0 ; 0xf3a44 + mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3a46 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3a4a + jmp near 03244h ; e9 f3 f7 ; 0xf3a4e + mov ax, strict word 00010h ; b8 10 00 ; 0xf3a51 floppy.c:1253 + call 01664h ; e8 0d dc ; 0xf3a54 + test bl, bl ; 84 db ; 0xf3a57 floppy.c:1254 + jne short 03a63h ; 75 08 ; 0xf3a59 + mov CL, strict byte 004h ; b1 04 ; 0xf3a5b floppy.c:1255 + mov dl, al ; 88 c2 ; 0xf3a5d + shr dl, CL ; d2 ea ; 0xf3a5f + jmp short 03a68h ; eb 05 ; 0xf3a61 floppy.c:1256 + mov dl, al ; 88 c2 ; 0xf3a63 floppy.c:1257 + and dl, 00fh ; 80 e2 0f ; 0xf3a65 + test bl, bl ; 84 db ; 0xf3a68 floppy.c:1260 + je short 03a71h ; 74 05 ; 0xf3a6a + mov si, 00091h ; be 91 00 ; 0xf3a6c + jmp short 03a74h ; eb 03 ; 0xf3a6f + mov si, 00090h ; be 90 00 ; 0xf3a71 + mov word [bp-00ch], si ; 89 76 f4 ; 0xf3a74 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3a77 floppy.c:48 + mov es, ax ; 8e c0 ; 0xf3a7a + mov bl, byte [es:si] ; 26 8a 1c ; 0xf3a7c + and bl, 00fh ; 80 e3 0f ; 0xf3a7f floppy.c:49 + cmp dl, 003h ; 80 fa 03 ; 0xf3a82 floppy.c:1266 + jc short 03aa2h ; 72 1b ; 0xf3a85 + mov al, bl ; 88 d8 ; 0xf3a87 + or AL, strict byte 090h ; 0c 90 ; 0xf3a89 + cmp dl, 003h ; 80 fa 03 ; 0xf3a8b + jbe short 03adeh ; 76 4e ; 0xf3a8e + mov ah, bl ; 88 dc ; 0xf3a90 + or ah, 010h ; 80 cc 10 ; 0xf3a92 + cmp dl, 005h ; 80 fa 05 ; 0xf3a95 + je short 03adch ; 74 42 ; 0xf3a98 + cmp dl, 004h ; 80 fa 04 ; 0xf3a9a + je short 03aebh ; 74 4c ; 0xf3a9d + jmp near 03b23h ; e9 81 00 ; 0xf3a9f + cmp dl, 002h ; 80 fa 02 ; 0xf3aa2 + je short 03abch ; 74 15 ; 0xf3aa5 + cmp dl, 001h ; 80 fa 01 ; 0xf3aa7 + jne short 03aefh ; 75 43 ; 0xf3aaa + cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf3aac floppy.c:1268 + jne short 03aefh ; 75 3d ; 0xf3ab0 + cmp bh, 009h ; 80 ff 09 ; 0xf3ab2 + jne short 03b05h ; 75 4e ; 0xf3ab5 + or bl, 090h ; 80 cb 90 ; 0xf3ab7 floppy.c:1269 + jmp short 03b05h ; eb 49 ; 0xf3aba floppy.c:1271 + cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf3abc floppy.c:1273 + jne short 03acch ; 75 0a ; 0xf3ac0 + cmp bh, 009h ; 80 ff 09 ; 0xf3ac2 + jne short 03acch ; 75 05 ; 0xf3ac5 + or bl, 070h ; 80 cb 70 ; 0xf3ac7 floppy.c:1274 + jmp short 03b05h ; eb 39 ; 0xf3aca floppy.c:1275 + cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3acc + jne short 03b23h ; 75 51 ; 0xf3ad0 + cmp bh, 00fh ; 80 ff 0f ; 0xf3ad2 + jne short 03b23h ; 75 4c ; 0xf3ad5 + or bl, 010h ; 80 cb 10 ; 0xf3ad7 floppy.c:1276 + jmp short 03b23h ; eb 47 ; 0xf3ada floppy.c:1278 + jmp short 03b07h ; eb 29 ; 0xf3adc + cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3ade floppy.c:1280 + jne short 03b23h ; 75 3f ; 0xf3ae2 + cmp bh, 009h ; 80 ff 09 ; 0xf3ae4 + je short 03aedh ; 74 04 ; 0xf3ae7 + jmp short 03b23h ; eb 38 ; 0xf3ae9 + jmp short 03af1h ; eb 04 ; 0xf3aeb + mov bl, al ; 88 c3 ; 0xf3aed floppy.c:1281 + jmp short 03b23h ; eb 32 ; 0xf3aef floppy.c:1283 + cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3af1 floppy.c:1285 + jne short 03b23h ; 75 2c ; 0xf3af5 + cmp bh, 009h ; 80 ff 09 ; 0xf3af7 floppy.c:1286 + jne short 03afeh ; 75 02 ; 0xf3afa + jmp short 03aedh ; eb ef ; 0xf3afc + cmp bh, 012h ; 80 ff 12 ; 0xf3afe floppy.c:1287 + jne short 03b23h ; 75 20 ; 0xf3b01 + mov bl, ah ; 88 e3 ; 0xf3b03 floppy.c:1289 + jmp short 03b23h ; eb 1c ; 0xf3b05 floppy.c:1292 + cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3b07 floppy.c:1294 + jne short 03b23h ; 75 16 ; 0xf3b0b + cmp bh, 009h ; 80 ff 09 ; 0xf3b0d floppy.c:1295 + jne short 03b14h ; 75 02 ; 0xf3b10 + jmp short 03aedh ; eb d9 ; 0xf3b12 + cmp bh, 012h ; 80 ff 12 ; 0xf3b14 floppy.c:1296 + jne short 03b1bh ; 75 02 ; 0xf3b17 + jmp short 03b03h ; eb e8 ; 0xf3b19 + cmp bh, 024h ; 80 ff 24 ; 0xf3b1b floppy.c:1298 + jne short 03b23h ; 75 03 ; 0xf3b1e + or bl, 0d0h ; 80 cb d0 ; 0xf3b20 floppy.c:1300 + mov al, bl ; 88 d8 ; 0xf3b23 floppy.c:1309 + xor ah, ah ; 30 e4 ; 0xf3b25 + mov CL, strict byte 004h ; b1 04 ; 0xf3b27 + sar ax, CL ; d3 f8 ; 0xf3b29 + test AL, strict byte 001h ; a8 01 ; 0xf3b2b + jne short 03b32h ; 75 03 ; 0xf3b2d + jmp near 03a33h ; e9 01 ff ; 0xf3b2f + mov ax, strict word 00040h ; b8 40 00 ; 0xf3b32 floppy.c:53 + mov es, ax ; 8e c0 ; 0xf3b35 + mov si, word [bp-00ch] ; 8b 76 f4 ; 0xf3b37 + mov byte [es:si], bl ; 26 88 1c ; 0xf3b3a + mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3b3d floppy.c:1322 + mov al, dl ; 88 d0 ; 0xf3b42 floppy.c:1323 + xor ah, ah ; 30 e4 ; 0xf3b44 + call 03b85h ; e8 3c 00 ; 0xf3b46 + mov word [bp+008h], ax ; 89 46 08 ; 0xf3b49 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3b4c floppy.c:1326 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3b50 floppy.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3b53 + mov es, ax ; 8e c0 ; 0xf3b56 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3b58 + jmp near 034bch ; e9 5d f9 ; 0xf3b5c + mov bx, 00dcch ; bb cc 0d ; 0xf3b5f floppy.c:1332 + mov cx, ds ; 8c d9 ; 0xf3b62 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3b64 + call 01919h ; e8 af dd ; 0xf3b67 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3b6a + xor ah, ah ; 30 e4 ; 0xf3b6d + push ax ; 50 ; 0xf3b6f + mov ax, 002adh ; b8 ad 02 ; 0xf3b70 + push ax ; 50 ; 0xf3b73 + mov ax, 0031ah ; b8 1a 03 ; 0xf3b74 + push ax ; 50 ; 0xf3b77 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3b78 + push ax ; 50 ; 0xf3b7b + call 0195ch ; e8 dd dd ; 0xf3b7c + add sp, strict byte 00008h ; 83 c4 08 ; 0xf3b7f + jmp near 031ceh ; e9 49 f6 ; 0xf3b82 floppy.c:78 + ; disGetNextSymbol 0xf3b85 LB 0x72d3 -> off=0x0 cb=0000000000000032 uValue=00000000000f2585 'get_floppy_dpt' +get_floppy_dpt: ; 0xf3b85 LB 0x32 + push bx ; 53 ; 0xf3b85 floppyt.c:104 + push dx ; 52 ; 0xf3b86 + push bp ; 55 ; 0xf3b87 + mov bp, sp ; 89 e5 ; 0xf3b88 + mov dl, al ; 88 c2 ; 0xf3b8a + xor ax, ax ; 31 c0 ; 0xf3b8c floppyt.c:108 + jmp short 03b96h ; eb 06 ; 0xf3b8e + inc ax ; 40 ; 0xf3b90 floppyt.c:110 + cmp ax, strict word 00007h ; 3d 07 00 ; 0xf3b91 + jnc short 03bb0h ; 73 1a ; 0xf3b94 + mov bx, ax ; 89 c3 ; 0xf3b96 + sal bx, 1 ; d1 e3 ; 0xf3b98 + cmp dl, byte [word bx+0005bh] ; 3a 97 5b 00 ; 0xf3b9a + jne short 03b90h ; 75 f0 ; 0xf3b9e + mov al, byte [word bx+0005ch] ; 8a 87 5c 00 ; 0xf3ba0 + xor ah, ah ; 30 e4 ; 0xf3ba4 + mov bx, strict word 0000dh ; bb 0d 00 ; 0xf3ba6 + imul bx ; f7 eb ; 0xf3ba9 + add ax, strict word 00000h ; 05 00 00 ; 0xf3bab + jmp short 03bb3h ; eb 03 ; 0xf3bae + mov ax, strict word 00041h ; b8 41 00 ; 0xf3bb0 floppyt.c:113 + pop bp ; 5d ; 0xf3bb3 floppyt.c:114 + pop dx ; 5a ; 0xf3bb4 + pop bx ; 5b ; 0xf3bb5 + retn ; c3 ; 0xf3bb6 + ; disGetNextSymbol 0xf3bb7 LB 0x72a1 -> off=0x0 cb=0000000000000007 uValue=00000000000f25b7 'dummy_soft_reset' +dummy_soft_reset: ; 0xf3bb7 LB 0x7 + push bp ; 55 ; 0xf3bb7 eltorito.c:137 + mov bp, sp ; 89 e5 ; 0xf3bb8 + xor ax, ax ; 31 c0 ; 0xf3bba eltorito.c:140 + pop bp ; 5d ; 0xf3bbc + retn ; c3 ; 0xf3bbd + ; disGetNextSymbol 0xf3bbe LB 0x729a -> off=0x0 cb=000000000000003b uValue=00000000000f25be 'cdemu_bounce_buf_alloc' +cdemu_bounce_buf_alloc: ; 0xf3bbe LB 0x3b + push bx ; 53 ; 0xf3bbe eltorito.c:169 + push cx ; 51 ; 0xf3bbf + push dx ; 52 ; 0xf3bc0 + push di ; 57 ; 0xf3bc1 + push bp ; 55 ; 0xf3bc2 + mov bp, sp ; 89 e5 ; 0xf3bc3 + mov di, 00413h ; bf 13 04 ; 0xf3bc5 eltorito.c:58 + xor ax, ax ; 31 c0 ; 0xf3bc8 + mov es, ax ; 8e c0 ; 0xf3bca + mov ax, word [es:di] ; 26 8b 05 ; 0xf3bcc + test ax, ax ; 85 c0 ; 0xf3bcf eltorito.c:175 + je short 03bf3h ; 74 20 ; 0xf3bd1 + dec ax ; 48 ; 0xf3bd3 eltorito.c:176 + dec ax ; 48 ; 0xf3bd4 + mov bx, ax ; 89 c3 ; 0xf3bd5 + xor dx, dx ; 31 d2 ; 0xf3bd7 eltorito.c:179 + mov cx, strict word 0000ah ; b9 0a 00 ; 0xf3bd9 + sal ax, 1 ; d1 e0 ; 0xf3bdc + rcl dx, 1 ; d1 d2 ; 0xf3bde + loop 03bdch ; e2 fa ; 0xf3be0 + mov di, dx ; 89 d7 ; 0xf3be2 + mov cx, strict word 00004h ; b9 04 00 ; 0xf3be4 + shr di, 1 ; d1 ef ; 0xf3be7 + rcr ax, 1 ; d1 d8 ; 0xf3be9 + loop 03be7h ; e2 fa ; 0xf3beb + mov di, 00413h ; bf 13 04 ; 0xf3bed eltorito.c:63 + mov word [es:di], bx ; 26 89 1d ; 0xf3bf0 + pop bp ; 5d ; 0xf3bf3 eltorito.c:184 + pop di ; 5f ; 0xf3bf4 + pop dx ; 5a ; 0xf3bf5 + pop cx ; 59 ; 0xf3bf6 + pop bx ; 5b ; 0xf3bf7 + retn ; c3 ; 0xf3bf8 + ; disGetNextSymbol 0xf3bf9 LB 0x725f -> off=0x0 cb=0000000000000017 uValue=00000000000f25f9 'cdemu_init' +cdemu_init: ; 0xf3bf9 LB 0x17 + push bp ; 55 ; 0xf3bf9 eltorito.c:186 + mov bp, sp ; 89 e5 ; 0xf3bfa + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3bfc eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3bff + mov es, ax ; 8e c0 ; 0xf3c02 + mov es, [es:bx] ; 26 8e 07 ; 0xf3c04 + mov bx, 00316h ; bb 16 03 ; 0xf3c07 eltorito.c:190 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3c0a eltorito.c:193 + pop bp ; 5d ; 0xf3c0e eltorito.c:194 + retn ; c3 ; 0xf3c0f + ; disGetNextSymbol 0xf3c10 LB 0x7248 -> off=0x0 cb=0000000000000016 uValue=00000000000f2610 'cdemu_isactive' +cdemu_isactive: ; 0xf3c10 LB 0x16 + push bp ; 55 ; 0xf3c10 eltorito.c:196 + mov bp, sp ; 89 e5 ; 0xf3c11 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c13 eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3c16 + mov es, ax ; 8e c0 ; 0xf3c19 + mov es, [es:bx] ; 26 8e 07 ; 0xf3c1b + mov bx, 00316h ; bb 16 03 ; 0xf3c1e eltorito.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3c21 + pop bp ; 5d ; 0xf3c24 eltorito.c:202 + retn ; c3 ; 0xf3c25 + ; disGetNextSymbol 0xf3c26 LB 0x7232 -> off=0x0 cb=0000000000000016 uValue=00000000000f2626 'cdemu_emulated_drive' +cdemu_emulated_drive: ; 0xf3c26 LB 0x16 + push bp ; 55 ; 0xf3c26 eltorito.c:204 + mov bp, sp ; 89 e5 ; 0xf3c27 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c29 eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3c2c + mov es, ax ; 8e c0 ; 0xf3c2f + mov es, [es:bx] ; 26 8e 07 ; 0xf3c31 + mov bx, 00318h ; bb 18 03 ; 0xf3c34 eltorito.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3c37 + pop bp ; 5d ; 0xf3c3a eltorito.c:210 + retn ; c3 ; 0xf3c3b + ; disGetNextSymbol 0xf3c3c LB 0x721c -> off=0x0 cb=0000000000000180 uValue=00000000000f263c 'int13_eltorito' +int13_eltorito: ; 0xf3c3c LB 0x180 + push bp ; 55 ; 0xf3c3c eltorito.c:216 + mov bp, sp ; 89 e5 ; 0xf3c3d + push si ; 56 ; 0xf3c3f + push di ; 57 ; 0xf3c40 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c41 eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3c44 + mov es, ax ; 8e c0 ; 0xf3c47 + mov di, word [es:bx] ; 26 8b 3f ; 0xf3c49 + mov bx, 00316h ; bb 16 03 ; 0xf3c4c eltorito.c:222 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3c4f eltorito.c:228 + xor ah, ah ; 30 e4 ; 0xf3c52 + cmp ax, strict word 0004bh ; 3d 4b 00 ; 0xf3c54 + jc short 03c63h ; 72 0a ; 0xf3c57 + jbe short 03c8eh ; 76 33 ; 0xf3c59 + cmp ax, strict word 0004dh ; 3d 4d 00 ; 0xf3c5b + jbe short 03c68h ; 76 08 ; 0xf3c5e + jmp near 03d80h ; e9 1d 01 ; 0xf3c60 + cmp ax, strict word 0004ah ; 3d 4a 00 ; 0xf3c63 + jne short 03c8bh ; 75 23 ; 0xf3c66 + mov bx, 00dcch ; bb cc 0d ; 0xf3c68 eltorito.c:234 + mov cx, ds ; 8c d9 ; 0xf3c6b + mov ax, strict word 00004h ; b8 04 00 ; 0xf3c6d + call 01919h ; e8 a6 dc ; 0xf3c70 + push word [bp+016h] ; ff 76 16 ; 0xf3c73 + mov ax, 00334h ; b8 34 03 ; 0xf3c76 + push ax ; 50 ; 0xf3c79 + mov ax, 00343h ; b8 43 03 ; 0xf3c7a + push ax ; 50 ; 0xf3c7d + mov ax, strict word 00004h ; b8 04 00 ; 0xf3c7e + push ax ; 50 ; 0xf3c81 + call 0195ch ; e8 d7 dc ; 0xf3c82 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf3c85 + jmp near 03d9bh ; e9 10 01 ; 0xf3c88 eltorito.c:235 + jmp near 03d80h ; e9 f2 00 ; 0xf3c8b + mov es, [bp+004h] ; 8e 46 04 ; 0xf3c8e eltorito.c:51 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c91 + mov byte [es:si], 013h ; 26 c6 04 13 ; 0xf3c94 + inc si ; 46 ; 0xf3c98 eltorito.c:242 + mov ax, es ; 8c c0 ; 0xf3c99 eltorito.c:51 + mov es, di ; 8e c7 ; 0xf3c9b + mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf3c9d + mov es, ax ; 8e c0 ; 0xf3ca1 eltorito.c:53 + mov byte [es:si], dl ; 26 88 14 ; 0xf3ca3 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3ca6 eltorito.c:243 + inc si ; 46 ; 0xf3ca9 + inc si ; 46 ; 0xf3caa + mov es, di ; 8e c7 ; 0xf3cab eltorito.c:51 + mov dl, byte [es:bx+002h] ; 26 8a 57 02 ; 0xf3cad + mov es, ax ; 8e c0 ; 0xf3cb1 eltorito.c:53 + mov byte [es:si], dl ; 26 88 14 ; 0xf3cb3 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cb6 eltorito.c:244 + add si, strict byte 00003h ; 83 c6 03 ; 0xf3cb9 + mov es, di ; 8e c7 ; 0xf3cbc eltorito.c:51 + mov dl, byte [es:bx+003h] ; 26 8a 57 03 ; 0xf3cbe + mov es, ax ; 8e c0 ; 0xf3cc2 eltorito.c:53 + mov byte [es:si], dl ; 26 88 14 ; 0xf3cc4 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cc7 eltorito.c:245 + add si, strict byte 00004h ; 83 c6 04 ; 0xf3cca + mov es, di ; 8e c7 ; 0xf3ccd eltorito.c:71 + mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf3ccf + mov cx, word [es:bx+00ah] ; 26 8b 4f 0a ; 0xf3cd3 + mov es, ax ; 8e c0 ; 0xf3cd7 eltorito.c:73 + mov word [es:si], dx ; 26 89 14 ; 0xf3cd9 + mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf3cdc + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3ce0 eltorito.c:246 + add si, strict byte 00008h ; 83 c6 08 ; 0xf3ce3 + mov es, di ; 8e c7 ; 0xf3ce6 eltorito.c:61 + mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf3ce8 + mov es, ax ; 8e c0 ; 0xf3cec eltorito.c:63 + mov word [es:si], dx ; 26 89 14 ; 0xf3cee + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cf1 eltorito.c:247 + add si, strict byte 0000ah ; 83 c6 0a ; 0xf3cf4 + mov es, di ; 8e c7 ; 0xf3cf7 eltorito.c:61 + mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf3cf9 + mov es, ax ; 8e c0 ; 0xf3cfd eltorito.c:63 + mov word [es:si], dx ; 26 89 14 ; 0xf3cff + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d02 eltorito.c:248 + add si, strict byte 0000ch ; 83 c6 0c ; 0xf3d05 + mov es, di ; 8e c7 ; 0xf3d08 eltorito.c:61 + mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf3d0a + mov es, ax ; 8e c0 ; 0xf3d0e eltorito.c:63 + mov word [es:si], dx ; 26 89 14 ; 0xf3d10 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d13 eltorito.c:249 + add si, strict byte 0000eh ; 83 c6 0e ; 0xf3d16 + mov es, di ; 8e c7 ; 0xf3d19 eltorito.c:61 + mov dx, word [es:bx+00eh] ; 26 8b 57 0e ; 0xf3d1b + mov es, ax ; 8e c0 ; 0xf3d1f eltorito.c:63 + mov word [es:si], dx ; 26 89 14 ; 0xf3d21 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d24 eltorito.c:250 + add si, strict byte 00010h ; 83 c6 10 ; 0xf3d27 + mov es, di ; 8e c7 ; 0xf3d2a eltorito.c:51 + mov dl, byte [es:bx+012h] ; 26 8a 57 12 ; 0xf3d2c + mov es, ax ; 8e c0 ; 0xf3d30 eltorito.c:53 + mov byte [es:si], dl ; 26 88 14 ; 0xf3d32 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d35 eltorito.c:251 + add si, strict byte 00011h ; 83 c6 11 ; 0xf3d38 + mov dx, ax ; 89 c2 ; 0xf3d3b eltorito.c:51 + mov es, di ; 8e c7 ; 0xf3d3d + mov al, byte [es:bx+014h] ; 26 8a 47 14 ; 0xf3d3f + mov es, dx ; 8e c2 ; 0xf3d43 eltorito.c:53 + mov byte [es:si], al ; 26 88 04 ; 0xf3d45 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d48 eltorito.c:252 + add si, strict byte 00012h ; 83 c6 12 ; 0xf3d4b + mov es, di ; 8e c7 ; 0xf3d4e eltorito.c:51 + mov al, byte [es:bx+010h] ; 26 8a 47 10 ; 0xf3d50 + mov es, dx ; 8e c2 ; 0xf3d54 eltorito.c:53 + mov byte [es:si], al ; 26 88 04 ; 0xf3d56 + test byte [bp+016h], 0ffh ; f6 46 16 ff ; 0xf3d59 eltorito.c:255 + jne short 03d65h ; 75 06 ; 0xf3d5d + mov es, di ; 8e c7 ; 0xf3d5f eltorito.c:257 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3d61 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3d65 eltorito.c:260 + mov bx, strict word 00074h ; bb 74 00 ; 0xf3d69 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3d6c + mov es, ax ; 8e c0 ; 0xf3d6f + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3d71 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3d75 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf3d79 + pop di ; 5f ; 0xf3d7c + pop si ; 5e ; 0xf3d7d + pop bp ; 5d ; 0xf3d7e + retn ; c3 ; 0xf3d7f + mov bx, 00dcch ; bb cc 0d ; 0xf3d80 eltorito.c:264 + mov cx, ds ; 8c d9 ; 0xf3d83 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3d85 + call 01919h ; e8 8e db ; 0xf3d88 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3d8b + xor ah, ah ; 30 e4 ; 0xf3d8e + push ax ; 50 ; 0xf3d90 + mov ax, 00334h ; b8 34 03 ; 0xf3d91 + push ax ; 50 ; 0xf3d94 + mov ax, 0036bh ; b8 6b 03 ; 0xf3d95 + jmp near 03c7dh ; e9 e2 fe ; 0xf3d98 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3d9b eltorito.c:270 + xor ah, ah ; 30 e4 ; 0xf3d9e + or ah, 001h ; 80 cc 01 ; 0xf3da0 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3da3 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3da6 eltorito.c:271 + xor ah, ah ; 30 e4 ; 0xf3da9 + mov bx, strict word 00074h ; bb 74 00 ; 0xf3dab eltorito.c:53 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3dae + mov es, dx ; 8e c2 ; 0xf3db1 + mov byte [es:bx], al ; 26 88 07 ; 0xf3db3 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3db6 eltorito.c:272 + jmp short 03d79h ; eb bd ; 0xf3dba eltorito.c:273 + ; disGetNextSymbol 0xf3dbc LB 0x709c -> off=0x0 cb=0000000000000034 uValue=00000000000f27bc 'device_is_cdrom' +device_is_cdrom: ; 0xf3dbc LB 0x34 + push bx ; 53 ; 0xf3dbc eltorito.c:288 + push dx ; 52 ; 0xf3dbd + push bp ; 55 ; 0xf3dbe + mov bp, sp ; 89 e5 ; 0xf3dbf + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3dc1 eltorito.c:58 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3dc4 + mov es, dx ; 8e c2 ; 0xf3dc7 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf3dc9 + cmp AL, strict byte 014h ; 3c 14 ; 0xf3dcc eltorito.c:294 + jc short 03dd4h ; 72 04 ; 0xf3dce + xor ax, ax ; 31 c0 ; 0xf3dd0 eltorito.c:295 + jmp short 03dech ; eb 18 ; 0xf3dd2 + xor ah, ah ; 30 e4 ; 0xf3dd4 eltorito.c:300 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf3dd6 + imul dx ; f7 ea ; 0xf3dd9 + mov es, bx ; 8e c3 ; 0xf3ddb + mov bx, ax ; 89 c3 ; 0xf3ddd + add bx, strict byte 0005eh ; 83 c3 5e ; 0xf3ddf + cmp byte [es:bx+01fh], 005h ; 26 80 7f 1f 05 ; 0xf3de2 + jne short 03dd0h ; 75 e7 ; 0xf3de7 + mov ax, strict word 00001h ; b8 01 00 ; 0xf3de9 eltorito.c:301 + pop bp ; 5d ; 0xf3dec eltorito.c:304 + pop dx ; 5a ; 0xf3ded + pop bx ; 5b ; 0xf3dee + retn ; c3 ; 0xf3def + ; disGetNextSymbol 0xf3df0 LB 0x7068 -> off=0x0 cb=000000000000008c uValue=00000000000f27f0 'cdrom_read' +cdrom_read: ; 0xf3df0 LB 0x8c + push bp ; 55 ; 0xf3df0 eltorito.c:306 + mov bp, sp ; 89 e5 ; 0xf3df1 + push si ; 56 ; 0xf3df3 + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf3df4 + mov byte [bp-004h], al ; 88 46 fc ; 0xf3df7 + mov ax, bx ; 89 d8 ; 0xf3dfa + mov si, cx ; 89 ce ; 0xf3dfc + mov cx, dx ; 89 d1 ; 0xf3dfe + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3e00 eltorito.c:58 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3e03 + mov es, dx ; 8e c2 ; 0xf3e06 + mov es, [es:bx] ; 26 8e 07 ; 0xf3e08 + mov bx, strict word 0005eh ; bb 5e 00 ; 0xf3e0b eltorito.c:310 + mov word [bp-010h], strict word 00028h ; c7 46 f0 28 00 ; 0xf3e0e eltorito.c:312 + mov dx, si ; 89 f2 ; 0xf3e13 eltorito.c:313 + xchg ah, al ; 86 c4 ; 0xf3e15 + xchg dh, dl ; 86 d6 ; 0xf3e17 + xchg dx, ax ; 92 ; 0xf3e19 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf3e1a + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf3e1d + mov ax, cx ; 89 c8 ; 0xf3e20 eltorito.c:314 + xchg ah, al ; 86 c4 ; 0xf3e22 + mov word [bp-009h], ax ; 89 46 f7 ; 0xf3e24 + mov word [es:bx+00eh], cx ; 26 89 4f 0e ; 0xf3e27 eltorito.c:316 + mov word [es:bx+010h], 00800h ; 26 c7 47 10 00 08 ; 0xf3e2b eltorito.c:317 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3e31 eltorito.c:319 + xor ah, ah ; 30 e4 ; 0xf3e34 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf3e36 + imul dx ; f7 ea ; 0xf3e39 + mov bx, ax ; 89 c3 ; 0xf3e3b + add bx, strict byte 0005eh ; 83 c3 5e ; 0xf3e3d + mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf3e40 + xor ah, ah ; 30 e4 ; 0xf3e44 + mov si, ax ; 89 c6 ; 0xf3e46 + sal si, 1 ; d1 e6 ; 0xf3e48 + push word [bp+006h] ; ff 76 06 ; 0xf3e4a + push word [bp+004h] ; ff 76 04 ; 0xf3e4d + mov ax, strict word 00001h ; b8 01 00 ; 0xf3e50 + push ax ; 50 ; 0xf3e53 + mov ax, cx ; 89 c8 ; 0xf3e54 + xor dx, dx ; 31 d2 ; 0xf3e56 + mov cx, strict word 0000bh ; b9 0b 00 ; 0xf3e58 + sal ax, 1 ; d1 e0 ; 0xf3e5b + rcl dx, 1 ; d1 d2 ; 0xf3e5d + loop 03e5bh ; e2 fa ; 0xf3e5f + push dx ; 52 ; 0xf3e61 + push ax ; 50 ; 0xf3e62 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3e63 + xor ah, ah ; 30 e4 ; 0xf3e66 + mov cx, ss ; 8c d1 ; 0xf3e68 + lea bx, [bp-010h] ; 8d 5e f0 ; 0xf3e6a + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3e6d + call word [word si+0006ah] ; ff 94 6a 00 ; 0xf3e70 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf3e74 eltorito.c:320 + pop si ; 5e ; 0xf3e77 + pop bp ; 5d ; 0xf3e78 + retn 00004h ; c2 04 00 ; 0xf3e79 + ; disGetNextSymbol 0xf3e7c LB 0x6fdc -> off=0x0 cb=0000000000000174 uValue=00000000000f287c 'cdemu_read' +cdemu_read: ; 0xf3e7c LB 0x174 + push bp ; 55 ; 0xf3e7c eltorito.c:322 + mov bp, sp ; 89 e5 ; 0xf3e7d + push si ; 56 ; 0xf3e7f + push di ; 57 ; 0xf3e80 + sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf3e81 + mov byte [bp-006h], al ; 88 46 fa ; 0xf3e84 + mov word [bp-01eh], bx ; 89 5e e2 ; 0xf3e87 + mov di, dx ; 89 d7 ; 0xf3e8a + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3e8c eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3e8f + mov es, ax ; 8e c0 ; 0xf3e92 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf3e94 + mov bx, 00316h ; bb 16 03 ; 0xf3e97 eltorito.c:326 + mov es, ax ; 8e c0 ; 0xf3e9a + mov si, bx ; 89 de ; 0xf3e9c + mov word [bp-008h], ax ; 89 46 f8 ; 0xf3e9e + mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf3ea1 eltorito.c:327 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf3ea5 + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf3ea8 + mov word [bp-016h], ax ; 89 46 ea ; 0xf3eac + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf3eaf eltorito.c:330 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf3eb2 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf3eb5 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf3eb8 + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf3ebb eltorito.c:335 + mov dx, cx ; 89 ca ; 0xf3ebe + shr dx, 1 ; d1 ea ; 0xf3ec0 + rcr ax, 1 ; d1 d8 ; 0xf3ec2 + shr dx, 1 ; d1 ea ; 0xf3ec4 + rcr ax, 1 ; d1 d8 ; 0xf3ec6 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf3ec8 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf3ecb + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf3ece eltorito.c:336 + and ax, strict word 00003h ; 25 03 00 ; 0xf3ed1 + mov word [bp-012h], ax ; 89 46 ee ; 0xf3ed4 + test ax, ax ; 85 c0 ; 0xf3ed7 eltorito.c:339 + je short 03f4dh ; 74 72 ; 0xf3ed9 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3edb eltorito.c:341 + sub ax, word [bp-012h] ; 2b 46 ee ; 0xf3ede + cmp di, ax ; 39 c7 ; 0xf3ee1 + jnc short 03eeah ; 73 05 ; 0xf3ee3 + mov word [bp-01ch], di ; 89 7e e4 ; 0xf3ee5 + jmp short 03eedh ; eb 03 ; 0xf3ee8 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf3eea + mov es, [bp-008h] ; 8e 46 f8 ; 0xf3eed eltorito.c:343 + push word [es:si+018h] ; 26 ff 74 18 ; 0xf3ef0 + push word [es:si+016h] ; 26 ff 74 16 ; 0xf3ef4 + mov bx, word [bp-01ah] ; 8b 5e e6 ; 0xf3ef8 + add bx, word [bp-00ch] ; 03 5e f4 ; 0xf3efb + mov cx, word [bp-016h] ; 8b 4e ea ; 0xf3efe + adc cx, word [bp-00ah] ; 13 4e f6 ; 0xf3f01 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3f04 + xor ah, ah ; 30 e4 ; 0xf3f07 + mov dx, strict word 00001h ; ba 01 00 ; 0xf3f09 + call 03df0h ; e8 e1 fe ; 0xf3f0c + mov word [bp-014h], ax ; 89 46 ec ; 0xf3f0f + test ax, ax ; 85 c0 ; 0xf3f12 eltorito.c:344 + jne short 03f7eh ; 75 68 ; 0xf3f14 + mov CL, strict byte 009h ; b1 09 ; 0xf3f16 eltorito.c:345 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf3f18 + sal ax, CL ; d3 e0 ; 0xf3f1b + mov word [bp-020h], ax ; 89 46 e0 ; 0xf3f1d + push ax ; 50 ; 0xf3f20 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf3f21 + sal ax, CL ; d3 e0 ; 0xf3f24 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf3f26 + mov bx, word [es:si+016h] ; 26 8b 5c 16 ; 0xf3f29 + mov cx, word [es:si+018h] ; 26 8b 4c 18 ; 0xf3f2d + add bx, ax ; 01 c3 ; 0xf3f31 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf3f33 + mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf3f36 + call 0ab40h ; e8 04 6c ; 0xf3f39 + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf3f3c eltorito.c:348 + add word [bp-00eh], ax ; 01 46 f2 ; 0xf3f3f + sub di, word [bp-01ch] ; 2b 7e e4 ; 0xf3f42 eltorito.c:349 + add word [bp-00ch], strict byte 00001h ; 83 46 f4 01 ; 0xf3f45 eltorito.c:350 + adc word [bp-00ah], strict byte 00000h ; 83 56 f6 00 ; 0xf3f49 + mov ax, di ; 89 f8 ; 0xf3f4d eltorito.c:354 + shr ax, 1 ; d1 e8 ; 0xf3f4f + shr ax, 1 ; d1 e8 ; 0xf3f51 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf3f53 + test ax, ax ; 85 c0 ; 0xf3f56 + je short 03f9eh ; 74 44 ; 0xf3f58 + push word [bp-018h] ; ff 76 e8 ; 0xf3f5a eltorito.c:358 + push word [bp-00eh] ; ff 76 f2 ; 0xf3f5d + mov bx, word [bp-01ah] ; 8b 5e e6 ; 0xf3f60 + add bx, word [bp-00ch] ; 03 5e f4 ; 0xf3f63 + mov cx, word [bp-016h] ; 8b 4e ea ; 0xf3f66 + adc cx, word [bp-00ah] ; 13 4e f6 ; 0xf3f69 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3f6c + xor ah, ah ; 30 e4 ; 0xf3f6f + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf3f71 + call 03df0h ; e8 79 fe ; 0xf3f74 + mov word [bp-014h], ax ; 89 46 ec ; 0xf3f77 + test ax, ax ; 85 c0 ; 0xf3f7a eltorito.c:359 + je short 03f80h ; 74 02 ; 0xf3f7c + jmp short 03fe7h ; eb 67 ; 0xf3f7e eltorito.c:360 + mov CL, strict byte 00bh ; b1 0b ; 0xf3f80 eltorito.c:361 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf3f82 + sal ax, CL ; d3 e0 ; 0xf3f85 + add word [bp-00eh], ax ; 01 46 f2 ; 0xf3f87 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf3f8a eltorito.c:362 + sal ax, 1 ; d1 e0 ; 0xf3f8d + sal ax, 1 ; d1 e0 ; 0xf3f8f + sub di, ax ; 29 c7 ; 0xf3f91 + xor ax, ax ; 31 c0 ; 0xf3f93 eltorito.c:363 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf3f95 + add word [bp-00ch], dx ; 01 56 f4 ; 0xf3f98 + adc word [bp-00ah], ax ; 11 46 f6 ; 0xf3f9b + test di, di ; 85 ff ; 0xf3f9e eltorito.c:367 + je short 03fe4h ; 74 42 ; 0xf3fa0 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf3fa2 eltorito.c:369 + push word [es:si+018h] ; 26 ff 74 18 ; 0xf3fa5 + push word [es:si+016h] ; 26 ff 74 16 ; 0xf3fa9 + mov bx, word [bp-01ah] ; 8b 5e e6 ; 0xf3fad + add bx, word [bp-00ch] ; 03 5e f4 ; 0xf3fb0 + mov cx, word [bp-016h] ; 8b 4e ea ; 0xf3fb3 + adc cx, word [bp-00ah] ; 13 4e f6 ; 0xf3fb6 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3fb9 + xor ah, ah ; 30 e4 ; 0xf3fbc + mov dx, strict word 00001h ; ba 01 00 ; 0xf3fbe + call 03df0h ; e8 2c fe ; 0xf3fc1 + mov word [bp-014h], ax ; 89 46 ec ; 0xf3fc4 + test ax, ax ; 85 c0 ; 0xf3fc7 eltorito.c:370 + jne short 03fe7h ; 75 1c ; 0xf3fc9 + mov CL, strict byte 009h ; b1 09 ; 0xf3fcb eltorito.c:371 + sal di, CL ; d3 e7 ; 0xf3fcd + push di ; 57 ; 0xf3fcf + mov es, [bp-008h] ; 8e 46 f8 ; 0xf3fd0 + mov bx, word [es:si+016h] ; 26 8b 5c 16 ; 0xf3fd3 + mov cx, word [es:si+018h] ; 26 8b 4c 18 ; 0xf3fd7 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf3fdb + mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf3fde + call 0ab40h ; e8 5c 6b ; 0xf3fe1 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf3fe4 eltorito.c:376 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf3fe7 eltorito.c:377 + pop di ; 5f ; 0xf3fea + pop si ; 5e ; 0xf3feb + pop bp ; 5d ; 0xf3fec + retn 00004h ; c2 04 00 ; 0xf3fed + ; disGetNextSymbol 0xf3ff0 LB 0x6e68 -> off=0x0 cb=00000000000002b7 uValue=00000000000f29f0 'cdrom_boot' +cdrom_boot: ; 0xf3ff0 LB 0x2b7 + push bp ; 55 ; 0xf3ff0 eltorito.c:387 + mov bp, sp ; 89 e5 ; 0xf3ff1 + push bx ; 53 ; 0xf3ff3 + push cx ; 51 ; 0xf3ff4 + push dx ; 52 ; 0xf3ff5 + push si ; 56 ; 0xf3ff6 + push di ; 57 ; 0xf3ff7 + sub sp, 00808h ; 81 ec 08 08 ; 0xf3ff8 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3ffc eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3fff + mov es, ax ; 8e c0 ; 0xf4002 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf4004 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf4007 eltorito.c:59 + mov si, 00316h ; be 16 03 ; 0xf400a eltorito.c:399 + mov word [bp-012h], ax ; 89 46 ee ; 0xf400d + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf4010 eltorito.c:403 + jmp short 0401fh ; eb 09 ; 0xf4014 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf4016 eltorito.c:406 + cmp byte [bp-00ch], 014h ; 80 7e f4 14 ; 0xf4019 + jnc short 0402bh ; 73 0c ; 0xf401d + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf401f + xor ah, ah ; 30 e4 ; 0xf4022 + call 03dbch ; e8 95 fd ; 0xf4024 + test ax, ax ; 85 c0 ; 0xf4027 + je short 04016h ; 74 eb ; 0xf4029 + cmp byte [bp-00ch], 014h ; 80 7e f4 14 ; 0xf402b eltorito.c:409 + jc short 04037h ; 72 06 ; 0xf402f + mov ax, strict word 00002h ; b8 02 00 ; 0xf4031 eltorito.c:410 + jmp near 0429dh ; e9 66 02 ; 0xf4034 + mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf4037 eltorito.c:413 + jmp short 04046h ; eb 09 ; 0xf403b + inc byte [bp-00eh] ; fe 46 f2 ; 0xf403d eltorito.c:418 + cmp byte [bp-00eh], 004h ; 80 7e f2 04 ; 0xf4040 + jnbe short 04060h ; 77 1a ; 0xf4044 + lea dx, [bp-00812h] ; 8d 96 ee f7 ; 0xf4046 + push SS ; 16 ; 0xf404a + push dx ; 52 ; 0xf404b + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf404c + xor ah, ah ; 30 e4 ; 0xf404f + mov dx, strict word 00001h ; ba 01 00 ; 0xf4051 + mov bx, strict word 00011h ; bb 11 00 ; 0xf4054 + xor cx, cx ; 31 c9 ; 0xf4057 + call 03df0h ; e8 94 fd ; 0xf4059 + test ax, ax ; 85 c0 ; 0xf405c + jne short 0403dh ; 75 dd ; 0xf405e + test ax, ax ; 85 c0 ; 0xf4060 eltorito.c:419 + je short 0406ah ; 74 06 ; 0xf4062 + mov ax, strict word 00003h ; b8 03 00 ; 0xf4064 eltorito.c:420 + jmp near 0429dh ; e9 33 02 ; 0xf4067 + cmp byte [bp-00812h], 000h ; 80 be ee f7 00 ; 0xf406a eltorito.c:423 + je short 04077h ; 74 06 ; 0xf406f + mov ax, strict word 00004h ; b8 04 00 ; 0xf4071 eltorito.c:424 + jmp near 0429dh ; e9 26 02 ; 0xf4074 + xor di, di ; 31 ff ; 0xf4077 eltorito.c:426 + jmp short 04081h ; eb 06 ; 0xf4079 + inc di ; 47 ; 0xf407b eltorito.c:428 + cmp di, strict byte 00005h ; 83 ff 05 ; 0xf407c + jnc short 04091h ; 73 10 ; 0xf407f + mov al, byte [bp+di-00811h] ; 8a 83 ef f7 ; 0xf4081 + cmp al, byte [di+00dd4h] ; 3a 85 d4 0d ; 0xf4085 + je short 0407bh ; 74 f0 ; 0xf4089 + mov ax, strict word 00005h ; b8 05 00 ; 0xf408b + jmp near 0429dh ; e9 0c 02 ; 0xf408e + xor di, di ; 31 ff ; 0xf4091 eltorito.c:430 + jmp short 0409bh ; eb 06 ; 0xf4093 + inc di ; 47 ; 0xf4095 eltorito.c:432 + cmp di, strict byte 00017h ; 83 ff 17 ; 0xf4096 + jnc short 040abh ; 73 10 ; 0xf4099 + mov al, byte [bp+di-0080bh] ; 8a 83 f5 f7 ; 0xf409b + cmp al, byte [di+00ddah] ; 3a 85 da 0d ; 0xf409f + je short 04095h ; 74 f0 ; 0xf40a3 + mov ax, strict word 00006h ; b8 06 00 ; 0xf40a5 + jmp near 0429dh ; e9 f2 01 ; 0xf40a8 + mov bx, word [bp-007cbh] ; 8b 9e 35 f8 ; 0xf40ab eltorito.c:435 + mov cx, word [bp-007c9h] ; 8b 8e 37 f8 ; 0xf40af + lea dx, [bp-00812h] ; 8d 96 ee f7 ; 0xf40b3 eltorito.c:439 + push SS ; 16 ; 0xf40b7 + push dx ; 52 ; 0xf40b8 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf40b9 + xor ah, ah ; 30 e4 ; 0xf40bc + mov dx, strict word 00001h ; ba 01 00 ; 0xf40be + call 03df0h ; e8 2c fd ; 0xf40c1 + test ax, ax ; 85 c0 ; 0xf40c4 eltorito.c:440 + je short 040ceh ; 74 06 ; 0xf40c6 + mov ax, strict word 00007h ; b8 07 00 ; 0xf40c8 eltorito.c:441 + jmp near 0429dh ; e9 cf 01 ; 0xf40cb + cmp byte [bp-00812h], 001h ; 80 be ee f7 01 ; 0xf40ce eltorito.c:446 + je short 040dbh ; 74 06 ; 0xf40d3 + mov ax, strict word 00008h ; b8 08 00 ; 0xf40d5 eltorito.c:447 + jmp near 0429dh ; e9 c2 01 ; 0xf40d8 + cmp byte [bp-00811h], 000h ; 80 be ef f7 00 ; 0xf40db eltorito.c:448 + je short 040e8h ; 74 06 ; 0xf40e0 + mov ax, strict word 00009h ; b8 09 00 ; 0xf40e2 eltorito.c:449 + jmp near 0429dh ; e9 b5 01 ; 0xf40e5 + cmp byte [bp-007f4h], 055h ; 80 be 0c f8 55 ; 0xf40e8 eltorito.c:450 + je short 040f5h ; 74 06 ; 0xf40ed + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf40ef eltorito.c:451 + jmp near 0429dh ; e9 a8 01 ; 0xf40f2 + cmp byte [bp-007f3h], 0aah ; 80 be 0d f8 aa ; 0xf40f5 eltorito.c:452 + jne short 040efh ; 75 f3 ; 0xf40fa + cmp byte [bp-007f2h], 088h ; 80 be 0e f8 88 ; 0xf40fc eltorito.c:453 + je short 04109h ; 74 06 ; 0xf4101 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf4103 eltorito.c:457 + jmp near 0429dh ; e9 94 01 ; 0xf4106 + mov al, byte [bp-007f1h] ; 8a 86 0f f8 ; 0xf4109 eltorito.c:459 + mov es, [bp-012h] ; 8e 46 ee ; 0xf410d + mov byte [es:si+001h], al ; 26 88 44 01 ; 0xf4110 + cmp byte [bp-007f1h], 000h ; 80 be 0f f8 00 ; 0xf4114 eltorito.c:460 + jne short 04122h ; 75 07 ; 0xf4119 + mov byte [es:si+002h], 0e0h ; 26 c6 44 02 e0 ; 0xf411b eltorito.c:463 + jmp short 04135h ; eb 13 ; 0xf4120 eltorito.c:465 + cmp byte [bp-007f1h], 004h ; 80 be 0f f8 04 ; 0xf4122 + jnc short 04130h ; 73 07 ; 0xf4127 + mov byte [es:si+002h], 000h ; 26 c6 44 02 00 ; 0xf4129 eltorito.c:466 + jmp short 04135h ; eb 05 ; 0xf412e eltorito.c:467 + mov byte [es:si+002h], 080h ; 26 c6 44 02 80 ; 0xf4130 eltorito.c:468 + mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf4135 eltorito.c:470 + xor bh, bh ; 30 ff ; 0xf4138 + mov ax, bx ; 89 d8 ; 0xf413a + cwd ; 99 ; 0xf413c + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf413d + sar ax, 1 ; d1 f8 ; 0xf413f + mov es, [bp-012h] ; 8e 46 ee ; 0xf4141 + mov byte [es:si+003h], al ; 26 88 44 03 ; 0xf4144 + mov ax, bx ; 89 d8 ; 0xf4148 eltorito.c:471 + cwd ; 99 ; 0xf414a + mov bx, strict word 00002h ; bb 02 00 ; 0xf414b + idiv bx ; f7 fb ; 0xf414e + mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf4150 + mov di, word [bp-007f0h] ; 8b be 10 f8 ; 0xf4154 eltorito.c:473 + test di, di ; 85 ff ; 0xf4158 eltorito.c:474 + jne short 0415fh ; 75 03 ; 0xf415a + mov di, 007c0h ; bf c0 07 ; 0xf415c eltorito.c:475 + mov es, [bp-012h] ; 8e 46 ee ; 0xf415f eltorito.c:477 + mov word [es:si+00ch], di ; 26 89 7c 0c ; 0xf4162 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf4166 eltorito.c:478 + mov dx, word [bp-007ech] ; 8b 96 14 f8 ; 0xf416c eltorito.c:480 + mov word [es:si+00eh], dx ; 26 89 54 0e ; 0xf4170 eltorito.c:481 + test dx, dx ; 85 d2 ; 0xf4174 eltorito.c:486 + je short 0417eh ; 74 06 ; 0xf4176 + cmp dx, 00400h ; 81 fa 00 04 ; 0xf4178 + jbe short 04184h ; 76 06 ; 0xf417c + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf417e eltorito.c:487 + jmp near 0429dh ; e9 19 01 ; 0xf4181 + mov ax, word [bp-007eah] ; 8b 86 16 f8 ; 0xf4184 eltorito.c:489 + mov bx, word [bp-007e8h] ; 8b 9e 18 f8 ; 0xf4188 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf418c eltorito.c:490 + mov word [es:si+00ah], bx ; 26 89 5c 0a ; 0xf4190 + call 03bbeh ; e8 27 fa ; 0xf4194 eltorito.c:496 + mov es, [bp-012h] ; 8e 46 ee ; 0xf4197 + mov word [es:si+016h], strict word 00000h ; 26 c7 44 16 00 00 ; 0xf419a + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf41a0 + mov ax, word [es:si+016h] ; 26 8b 44 16 ; 0xf41a4 eltorito.c:497 + mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf41a8 + test bx, bx ; 85 db ; 0xf41ac + jne short 041bah ; 75 0a ; 0xf41ae + test ax, ax ; 85 c0 ; 0xf41b0 + jne short 041bah ; 75 06 ; 0xf41b2 + mov ax, strict word 0000dh ; b8 0d 00 ; 0xf41b4 eltorito.c:498 + jmp near 0429dh ; e9 e3 00 ; 0xf41b7 + push di ; 57 ; 0xf41ba eltorito.c:501 + xor ax, ax ; 31 c0 ; 0xf41bb + push ax ; 50 ; 0xf41bd + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf41be + xor ah, ah ; 30 e4 ; 0xf41c1 + xor bx, bx ; 31 db ; 0xf41c3 + xor cx, cx ; 31 c9 ; 0xf41c5 + call 03e7ch ; e8 b2 fc ; 0xf41c7 + test ax, ax ; 85 c0 ; 0xf41ca eltorito.c:502 + je short 041d4h ; 74 06 ; 0xf41cc + mov ax, strict word 0000eh ; b8 0e 00 ; 0xf41ce eltorito.c:503 + jmp near 0429dh ; e9 c9 00 ; 0xf41d1 + mov es, [bp-012h] ; 8e 46 ee ; 0xf41d4 eltorito.c:508 + mov al, byte [es:si+001h] ; 26 8a 44 01 ; 0xf41d7 + cmp AL, strict byte 002h ; 3c 02 ; 0xf41db + jc short 041ebh ; 72 0c ; 0xf41dd + jbe short 04206h ; 76 25 ; 0xf41df + cmp AL, strict byte 004h ; 3c 04 ; 0xf41e1 + je short 04216h ; 74 31 ; 0xf41e3 + cmp AL, strict byte 003h ; 3c 03 ; 0xf41e5 + je short 0420eh ; 74 25 ; 0xf41e7 + jmp short 04258h ; eb 6d ; 0xf41e9 + cmp AL, strict byte 001h ; 3c 01 ; 0xf41eb + jne short 04258h ; 75 69 ; 0xf41ed + mov es, [bp-012h] ; 8e 46 ee ; 0xf41ef eltorito.c:510 + mov word [es:si+014h], strict word 0000fh ; 26 c7 44 14 0f 00 ; 0xf41f2 + mov word [es:si+012h], strict word 00050h ; 26 c7 44 12 50 00 ; 0xf41f8 eltorito.c:511 + mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00 ; 0xf41fe eltorito.c:512 + jmp short 04258h ; eb 52 ; 0xf4204 eltorito.c:513 + mov word [es:si+014h], strict word 00012h ; 26 c7 44 14 12 00 ; 0xf4206 eltorito.c:515 + jmp short 041f8h ; eb ea ; 0xf420c + mov word [es:si+014h], strict word 00024h ; 26 c7 44 14 24 00 ; 0xf420e eltorito.c:520 + jmp short 041f8h ; eb e2 ; 0xf4214 + mov bx, 001c4h ; bb c4 01 ; 0xf4216 eltorito.c:48 + mov es, di ; 8e c7 ; 0xf4219 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf421b + and AL, strict byte 03fh ; 24 3f ; 0xf421e eltorito.c:49 + xor ah, ah ; 30 e4 ; 0xf4220 + mov es, [bp-012h] ; 8e 46 ee ; 0xf4222 + mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf4225 + mov es, di ; 8e c7 ; 0xf4229 eltorito.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf422b + and AL, strict byte 0c0h ; 24 c0 ; 0xf422e eltorito.c:49 + mov dx, ax ; 89 c2 ; 0xf4230 + sal dx, 1 ; d1 e2 ; 0xf4232 + sal dx, 1 ; d1 e2 ; 0xf4234 + mov bx, 001c5h ; bb c5 01 ; 0xf4236 eltorito.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4239 + add ax, dx ; 01 d0 ; 0xf423c eltorito.c:49 + inc ax ; 40 ; 0xf423e + mov es, [bp-012h] ; 8e 46 ee ; 0xf423f + mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf4242 + mov bx, 001c3h ; bb c3 01 ; 0xf4246 eltorito.c:48 + mov es, di ; 8e c7 ; 0xf4249 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf424b + xor ah, ah ; 30 e4 ; 0xf424e eltorito.c:49 + inc ax ; 40 ; 0xf4250 + mov es, [bp-012h] ; 8e 46 ee ; 0xf4251 + mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf4254 + mov es, [bp-012h] ; 8e 46 ee ; 0xf4258 eltorito.c:533 + cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf425b + je short 04286h ; 74 24 ; 0xf4260 + cmp byte [es:si+002h], 000h ; 26 80 7c 02 00 ; 0xf4262 eltorito.c:535 + jne short 04278h ; 75 0f ; 0xf4267 + mov bx, strict word 00010h ; bb 10 00 ; 0xf4269 eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf426c + mov es, ax ; 8e c0 ; 0xf426f + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4271 + or AL, strict byte 041h ; 0c 41 ; 0xf4274 eltorito.c:49 + jmp short 04283h ; eb 0b ; 0xf4276 eltorito.c:537 + mov bx, 002ach ; bb ac 02 ; 0xf4278 eltorito.c:48 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf427b + mov al, byte [es:bx] ; 26 8a 07 ; 0xf427e + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf4281 eltorito.c:49 + mov byte [es:bx], al ; 26 88 07 ; 0xf4283 eltorito.c:53 + mov es, [bp-012h] ; 8e 46 ee ; 0xf4286 eltorito.c:542 + cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf4289 + je short 04294h ; 74 04 ; 0xf428e + mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf4290 eltorito.c:543 + mov es, [bp-012h] ; 8e 46 ee ; 0xf4294 eltorito.c:546 + mov ah, byte [es:si+002h] ; 26 8a 64 02 ; 0xf4297 + xor al, al ; 30 c0 ; 0xf429b + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf429d eltorito.c:547 + pop di ; 5f ; 0xf42a0 + pop si ; 5e ; 0xf42a1 + pop dx ; 5a ; 0xf42a2 + pop cx ; 59 ; 0xf42a3 + pop bx ; 5b ; 0xf42a4 + pop bp ; 5d ; 0xf42a5 + retn ; c3 ; 0xf42a6 + ; disGetNextSymbol 0xf42a7 LB 0x6bb1 -> off=0x59 cb=00000000000003ff uValue=00000000000f2d00 '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, 0e0h, 046h, 0aah + db 043h, 0e1h, 043h, 0ffh, 043h, 0d6h, 043h, 0ffh, 043h, 0d6h, 043h, 0f5h, 044h, 099h, 045h, 0e0h + db 046h, 0e0h, 046h, 099h, 045h, 099h, 045h, 099h, 045h, 099h, 045h, 099h, 045h, 0b4h, 045h, 099h + db 045h, 0e0h, 046h, 0bch, 045h, 0ceh, 045h, 0e0h, 046h, 0ceh, 045h, 0e0h, 046h, 0e0h, 046h, 0ceh + db 045h, 0a4h, 046h, 0e0h, 046h, 0e0h, 046h, 0e0h, 046h +int13_cdemu: ; 0xf4300 LB 0x3ff + push bp ; 55 ; 0xf4300 eltorito.c:557 + mov bp, sp ; 89 e5 ; 0xf4301 + push si ; 56 ; 0xf4303 + push di ; 57 ; 0xf4304 + sub sp, strict byte 00018h ; 83 ec 18 ; 0xf4305 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4308 eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf430b + mov es, ax ; 8e c0 ; 0xf430e + mov ax, word [es:bx] ; 26 8b 07 ; 0xf4310 + mov si, 00316h ; be 16 03 ; 0xf4313 eltorito.c:572 + mov dx, ax ; 89 c2 ; 0xf4316 + mov bx, si ; 89 f3 ; 0xf4318 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf431a + mov word [bp-014h], strict word 0005eh ; c7 46 ec 5e 00 ; 0xf431d eltorito.c:573 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf4322 + mov es, ax ; 8e c0 ; 0xf4325 eltorito.c:580 + mov al, byte [es:si+003h] ; 26 8a 44 03 ; 0xf4327 + sal al, 1 ; d0 e0 ; 0xf432b + mov byte [bp-006h], al ; 88 46 fa ; 0xf432d + mov al, byte [es:si+004h] ; 26 8a 44 04 ; 0xf4330 eltorito.c:581 + add byte [bp-006h], al ; 00 46 fa ; 0xf4334 + mov di, strict word 00074h ; bf 74 00 ; 0xf4337 eltorito.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf433a + mov es, ax ; 8e c0 ; 0xf433d + mov byte [es:di], 000h ; 26 c6 05 00 ; 0xf433f + mov es, dx ; 8e c2 ; 0xf4343 eltorito.c:586 + cmp byte [es:si], 000h ; 26 80 3c 00 ; 0xf4345 + je short 0435ah ; 74 0f ; 0xf4349 + mov al, byte [es:si+002h] ; 26 8a 44 02 ; 0xf434b + xor ah, ah ; 30 e4 ; 0xf434f + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf4351 + xor dh, dh ; 30 f6 ; 0xf4354 + cmp ax, dx ; 39 d0 ; 0xf4356 + je short 04384h ; 74 2a ; 0xf4358 + mov bx, 00dcch ; bb cc 0d ; 0xf435a eltorito.c:587 + mov cx, ds ; 8c d9 ; 0xf435d + mov ax, strict word 00004h ; b8 04 00 ; 0xf435f + call 01919h ; e8 b4 d5 ; 0xf4362 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf4365 + xor ah, ah ; 30 e4 ; 0xf4368 + push ax ; 50 ; 0xf436a + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf436b + push ax ; 50 ; 0xf436e + mov ax, 00384h ; b8 84 03 ; 0xf436f + push ax ; 50 ; 0xf4372 + mov ax, 00390h ; b8 90 03 ; 0xf4373 + push ax ; 50 ; 0xf4376 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4377 + push ax ; 50 ; 0xf437a + call 0195ch ; e8 de d5 ; 0xf437b + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf437e + jmp near 046beh ; e9 3a 03 ; 0xf4381 eltorito.c:588 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf4384 eltorito.c:591 + xor ah, ah ; 30 e4 ; 0xf4387 + mov dx, ax ; 89 c2 ; 0xf4389 + cmp ax, strict word 00050h ; 3d 50 00 ; 0xf438b + jnbe short 043fch ; 77 6c ; 0xf438e + push CS ; 0e ; 0xf4390 + pop ES ; 07 ; 0xf4391 + mov cx, strict word 0001eh ; b9 1e 00 ; 0xf4392 + mov di, 042a7h ; bf a7 42 ; 0xf4395 + repne scasb ; f2 ae ; 0xf4398 + sal cx, 1 ; d1 e1 ; 0xf439a + mov di, cx ; 89 cf ; 0xf439c + mov dx, word [cs:di+042c4h] ; 2e 8b 95 c4 42 ; 0xf439e + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf43a3 + xor ah, ah ; 30 e4 ; 0xf43a6 + jmp dx ; ff e2 ; 0xf43a8 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf43aa eltorito.c:594 + xor ah, ah ; 30 e4 ; 0xf43ad + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf43af + imul dx ; f7 ea ; 0xf43b2 + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf43b4 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf43b7 + add bx, ax ; 01 c3 ; 0xf43ba + mov bl, byte [es:bx+01eh] ; 26 8a 5f 1e ; 0xf43bc + xor bh, bh ; 30 ff ; 0xf43c0 + sal bx, 1 ; d1 e3 ; 0xf43c2 + cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00 ; 0xf43c4 + je short 0443eh ; 74 73 ; 0xf43c9 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf43cb eltorito.c:596 + xor ah, ah ; 30 e4 ; 0xf43ce + call word [word bx+00076h] ; ff 97 76 00 ; 0xf43d0 + jmp short 0443eh ; eb 68 ; 0xf43d4 eltorito.c:598 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf43d6 eltorito.c:614 + xor ah, ah ; 30 e4 ; 0xf43d9 + or ah, 003h ; 80 cc 03 ; 0xf43db + jmp near 046c6h ; e9 e5 02 ; 0xf43de eltorito.c:615 + mov bx, strict word 00074h ; bb 74 00 ; 0xf43e1 eltorito.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf43e4 + mov es, dx ; 8e c2 ; 0xf43e7 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf43e9 + mov ah, dl ; 88 d4 ; 0xf43ec eltorito.c:620 + mov word [bp+016h], ax ; 89 46 16 ; 0xf43ee + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf43f1 eltorito.c:53 + test dl, dl ; 84 d2 ; 0xf43f5 eltorito.c:624 + je short 0445eh ; 74 65 ; 0xf43f7 + jmp near 046d9h ; e9 dd 02 ; 0xf43f9 eltorito.c:625 + jmp near 046e0h ; e9 e1 02 ; 0xf43fc + mov es, [bp-01ah] ; 8e 46 e6 ; 0xf43ff eltorito.c:632 + mov si, word [es:bx+014h] ; 26 8b 77 14 ; 0xf4402 + mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf4406 eltorito.c:633 + mov dx, word [es:bx+010h] ; 26 8b 57 10 ; 0xf440a eltorito.c:634 + mov word [bp-016h], dx ; 89 56 ea ; 0xf440e + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf4411 eltorito.c:636 + and dx, strict byte 0003fh ; 83 e2 3f ; 0xf4414 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf4417 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf441a eltorito.c:637 + xor dh, dh ; 30 f6 ; 0xf441d + and dl, 0c0h ; 80 e2 c0 ; 0xf441f + sal dx, 1 ; d1 e2 ; 0xf4422 + sal dx, 1 ; d1 e2 ; 0xf4424 + mov bl, byte [bp+015h] ; 8a 5e 15 ; 0xf4426 + xor bh, bh ; 30 ff ; 0xf4429 + or bx, dx ; 09 d3 ; 0xf442b + mov dl, byte [bp+013h] ; 8a 56 13 ; 0xf442d eltorito.c:638 + xor dh, dh ; 30 f6 ; 0xf4430 + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf4432 + mov di, word [bp+016h] ; 8b 7e 16 ; 0xf4435 eltorito.c:639 + and di, 000ffh ; 81 e7 ff 00 ; 0xf4438 + jne short 04441h ; 75 03 ; 0xf443c eltorito.c:647 + jmp near 04599h ; e9 58 01 ; 0xf443e eltorito.c:648 + cmp si, word [bp-00ah] ; 3b 76 f6 ; 0xf4441 eltorito.c:651 + jc short 0444fh ; 72 09 ; 0xf4444 + cmp bx, ax ; 39 c3 ; 0xf4446 + jnc short 0444fh ; 73 05 ; 0xf4448 + cmp dx, word [bp-016h] ; 3b 56 ea ; 0xf444a + jc short 04452h ; 72 03 ; 0xf444d + jmp near 046beh ; e9 6c 02 ; 0xf444f eltorito.c:654 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf4452 eltorito.c:658 + xor ah, ah ; 30 e4 ; 0xf4455 + cmp ax, strict word 00004h ; 3d 04 00 ; 0xf4457 + jne short 04461h ; 75 05 ; 0xf445a + jmp short 0443eh ; eb e0 ; 0xf445c eltorito.c:659 + jmp near 0459dh ; e9 3c 01 ; 0xf445e + mov CL, strict byte 004h ; b1 04 ; 0xf4461 eltorito.c:661 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4463 + shr ax, CL ; d3 e8 ; 0xf4466 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf4468 + add dx, ax ; 01 c2 ; 0xf446b + mov word [bp-010h], dx ; 89 56 f0 ; 0xf446d + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4470 eltorito.c:662 + and ax, strict word 0000fh ; 25 0f 00 ; 0xf4473 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf4476 + mov ax, bx ; 89 d8 ; 0xf4479 eltorito.c:665 + xor dx, dx ; 31 d2 ; 0xf447b + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf447d + xor cx, cx ; 31 c9 ; 0xf4480 + call 0aac0h ; e8 3b 66 ; 0xf4482 + xor bx, bx ; 31 db ; 0xf4485 + add ax, word [bp-00eh] ; 03 46 f2 ; 0xf4487 + adc dx, bx ; 11 da ; 0xf448a + mov bx, si ; 89 f3 ; 0xf448c + xor cx, cx ; 31 c9 ; 0xf448e + call 0aac0h ; e8 2d 66 ; 0xf4490 + mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf4493 + dec bx ; 4b ; 0xf4496 + xor cx, cx ; 31 c9 ; 0xf4497 + add bx, ax ; 01 c3 ; 0xf4499 + adc cx, dx ; 11 d1 ; 0xf449b + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf449d eltorito.c:668 + xor al, al ; 30 c0 ; 0xf44a0 + or ax, di ; 09 f8 ; 0xf44a2 + mov word [bp+016h], ax ; 89 46 16 ; 0xf44a4 + push word [bp-010h] ; ff 76 f0 ; 0xf44a7 eltorito.c:670 + push word [bp-008h] ; ff 76 f8 ; 0xf44aa + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf44ad + xor ah, ah ; 30 e4 ; 0xf44b0 + mov dx, di ; 89 fa ; 0xf44b2 + call 03e7ch ; e8 c5 f9 ; 0xf44b4 + mov dx, ax ; 89 c2 ; 0xf44b7 + test al, al ; 84 c0 ; 0xf44b9 eltorito.c:671 + je short 0443eh ; 74 81 ; 0xf44bb + mov bx, 00dcch ; bb cc 0d ; 0xf44bd eltorito.c:672 + mov cx, ds ; 8c d9 ; 0xf44c0 + mov ax, strict word 00004h ; b8 04 00 ; 0xf44c2 + call 01919h ; e8 51 d4 ; 0xf44c5 + mov al, dl ; 88 d0 ; 0xf44c8 + xor ah, ah ; 30 e4 ; 0xf44ca + push ax ; 50 ; 0xf44cc + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf44cd + push ax ; 50 ; 0xf44d0 + mov ax, 00384h ; b8 84 03 ; 0xf44d1 + push ax ; 50 ; 0xf44d4 + mov ax, 003c6h ; b8 c6 03 ; 0xf44d5 + push ax ; 50 ; 0xf44d8 + mov ax, strict word 00004h ; b8 04 00 ; 0xf44d9 + push ax ; 50 ; 0xf44dc + call 0195ch ; e8 7c d4 ; 0xf44dd + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf44e0 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf44e3 eltorito.c:673 + xor ah, ah ; 30 e4 ; 0xf44e6 + or ah, 002h ; 80 cc 02 ; 0xf44e8 + mov word [bp+016h], ax ; 89 46 16 ; 0xf44eb + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf44ee eltorito.c:674 + jmp near 046c9h ; e9 d4 01 ; 0xf44f2 eltorito.c:675 + mov es, [bp-01ah] ; 8e 46 e6 ; 0xf44f5 eltorito.c:682 + mov si, word [es:bx+014h] ; 26 8b 77 14 ; 0xf44f8 + mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf44fc eltorito.c:683 + dec ax ; 48 ; 0xf4500 + mov dx, word [es:bx+010h] ; 26 8b 57 10 ; 0xf4501 eltorito.c:684 + dec dx ; 4a ; 0xf4505 + mov word [bp-016h], dx ; 89 56 ea ; 0xf4506 + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf4509 eltorito.c:686 + mov dx, word [bp+010h] ; 8b 56 10 ; 0xf450d eltorito.c:687 + xor dl, dl ; 30 d2 ; 0xf4510 + mov di, word [bp+014h] ; 8b 7e 14 ; 0xf4512 eltorito.c:688 + and di, 000ffh ; 81 e7 ff 00 ; 0xf4515 + mov cx, ax ; 89 c1 ; 0xf4519 + xor ch, ah ; 30 e5 ; 0xf451b + mov word [bp-012h], cx ; 89 4e ee ; 0xf451d + mov cl, byte [bp-012h] ; 8a 4e ee ; 0xf4520 + mov byte [bp-011h], cl ; 88 4e ef ; 0xf4523 + mov byte [bp-012h], dl ; 88 56 ee ; 0xf4526 + mov cx, word [bp-012h] ; 8b 4e ee ; 0xf4529 + or cx, di ; 09 f9 ; 0xf452c + mov word [bp+014h], cx ; 89 4e 14 ; 0xf452e + shr ax, 1 ; d1 e8 ; 0xf4531 eltorito.c:689 + shr ax, 1 ; d1 e8 ; 0xf4533 + xor ah, ah ; 30 e4 ; 0xf4535 + and AL, strict byte 0c0h ; 24 c0 ; 0xf4537 + and si, strict byte 0003fh ; 83 e6 3f ; 0xf4539 + or si, ax ; 09 c6 ; 0xf453c + mov ax, cx ; 89 c8 ; 0xf453e + xor al, cl ; 30 c8 ; 0xf4540 + or ax, si ; 09 f0 ; 0xf4542 + mov word [bp+014h], ax ; 89 46 14 ; 0xf4544 + mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf4547 eltorito.c:690 + mov ch, byte [bp-016h] ; 8a 6e ea ; 0xf454a + mov word [bp+012h], cx ; 89 4e 12 ; 0xf454d + mov ax, cx ; 89 c8 ; 0xf4550 eltorito.c:691 + xor al, cl ; 30 c8 ; 0xf4552 + or AL, strict byte 002h ; 0c 02 ; 0xf4554 + mov word [bp+012h], ax ; 89 46 12 ; 0xf4556 + mov al, byte [es:bx+001h] ; 26 8a 47 01 ; 0xf4559 eltorito.c:694 + mov word [bp+010h], dx ; 89 56 10 ; 0xf455d + cmp AL, strict byte 003h ; 3c 03 ; 0xf4560 + je short 04580h ; 74 1c ; 0xf4562 + cmp AL, strict byte 002h ; 3c 02 ; 0xf4564 + je short 04578h ; 74 10 ; 0xf4566 + cmp AL, strict byte 001h ; 3c 01 ; 0xf4568 + jne short 04585h ; 75 19 ; 0xf456a + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf456c eltorito.c:695 + xor al, al ; 30 c0 ; 0xf456f + or AL, strict byte 002h ; 0c 02 ; 0xf4571 + mov word [bp+010h], ax ; 89 46 10 ; 0xf4573 + jmp short 04585h ; eb 0d ; 0xf4576 + or dl, 004h ; 80 ca 04 ; 0xf4578 eltorito.c:696 + mov word [bp+010h], dx ; 89 56 10 ; 0xf457b + jmp short 04585h ; eb 05 ; 0xf457e + or dl, 005h ; 80 ca 05 ; 0xf4580 eltorito.c:697 + jmp short 0457bh ; eb f6 ; 0xf4583 + mov es, [bp-01ah] ; 8e 46 e6 ; 0xf4585 eltorito.c:701 + cmp byte [es:bx+001h], 004h ; 26 80 7f 01 04 ; 0xf4588 + jnc short 04599h ; 73 0a ; 0xf458d + mov word [bp+008h], 0efc7h ; c7 46 08 c7 ef ; 0xf458f eltorito.c:702 + mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf4594 eltorito.c:703 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf4599 eltorito.c:705 + mov bx, strict word 00074h ; bb 74 00 ; 0xf459d + mov ax, strict word 00040h ; b8 40 00 ; 0xf45a0 + mov es, ax ; 8e c0 ; 0xf45a3 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf45a5 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf45a9 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf45ad + pop di ; 5f ; 0xf45b0 + pop si ; 5e ; 0xf45b1 + pop bp ; 5d ; 0xf45b2 + retn ; c3 ; 0xf45b3 + or ah, 003h ; 80 cc 03 ; 0xf45b4 eltorito.c:710 + mov word [bp+016h], ax ; 89 46 16 ; 0xf45b7 + jmp short 0459dh ; eb e1 ; 0xf45ba eltorito.c:711 + mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf45bc eltorito.c:715 + or ah, 030h ; 80 cc 30 ; 0xf45c1 eltorito.c:716 + mov word [bp+016h], ax ; 89 46 16 ; 0xf45c4 + mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf45c7 eltorito.c:717 + jmp short 0459dh ; eb cf ; 0xf45cc eltorito.c:718 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf45ce eltorito.c:726 + mov es, [bp+004h] ; 8e 46 04 ; 0xf45d1 + mov si, bx ; 89 de ; 0xf45d4 + mov di, es ; 8c c7 ; 0xf45d6 + mov dx, word [es:bx+002h] ; 26 8b 57 02 ; 0xf45d8 eltorito.c:728 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf45dc eltorito.c:729 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf45e0 + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf45e3 eltorito.c:730 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf45e7 + mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf45ea eltorito.c:733 + mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf45ee + or ax, cx ; 09 c8 ; 0xf45f2 eltorito.c:734 + je short 04611h ; 74 1b ; 0xf45f4 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf45f6 eltorito.c:735 + xor ah, ah ; 30 e4 ; 0xf45f9 + push ax ; 50 ; 0xf45fb + mov ax, 00384h ; b8 84 03 ; 0xf45fc + push ax ; 50 ; 0xf45ff + mov ax, 003e7h ; b8 e7 03 ; 0xf4600 + push ax ; 50 ; 0xf4603 + mov ax, strict word 00007h ; b8 07 00 ; 0xf4604 + push ax ; 50 ; 0xf4607 + call 0195ch ; e8 51 d3 ; 0xf4608 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf460b + jmp near 046beh ; e9 ad 00 ; 0xf460e eltorito.c:736 + mov es, di ; 8e c7 ; 0xf4611 eltorito.c:740 + mov ax, word [es:si+008h] ; 26 8b 44 08 ; 0xf4613 + mov cx, word [es:si+00ah] ; 26 8b 4c 0a ; 0xf4617 + mov bl, byte [bp+017h] ; 8a 5e 17 ; 0xf461b eltorito.c:743 + mov byte [bp-018h], bl ; 88 5e e8 ; 0xf461e + mov byte [bp-017h], 000h ; c6 46 e9 00 ; 0xf4621 + cmp word [bp-018h], strict byte 00044h ; 83 7e e8 44 ; 0xf4625 + jne short 0462eh ; 75 03 ; 0xf4629 + jmp near 04599h ; e9 6b ff ; 0xf462b + cmp word [bp-018h], strict byte 00047h ; 83 7e e8 47 ; 0xf462e + jne short 04636h ; 75 02 ; 0xf4632 + jmp short 0462bh ; eb f5 ; 0xf4634 eltorito.c:744 + push word [bp-010h] ; ff 76 f0 ; 0xf4636 eltorito.c:749 + push word [bp-008h] ; ff 76 f8 ; 0xf4639 + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf463c + mov byte [bp-012h], bl ; 88 5e ee ; 0xf463f + mov byte [bp-011h], 000h ; c6 46 ef 00 ; 0xf4642 + mov bx, ax ; 89 c3 ; 0xf4646 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf4648 + call 03e7ch ; e8 2e f8 ; 0xf464b + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf464e + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf4651 eltorito.c:750 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf4654 + mov ax, word [es:bx+01ah] ; 26 8b 47 1a ; 0xf4657 + mov dx, word [es:bx+01ch] ; 26 8b 57 1c ; 0xf465b + mov cx, strict word 00009h ; b9 09 00 ; 0xf465f + shr dx, 1 ; d1 ea ; 0xf4662 + rcr ax, 1 ; d1 d8 ; 0xf4664 + loop 04662h ; e2 fa ; 0xf4666 + mov es, di ; 8e c7 ; 0xf4668 eltorito.c:751 + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf466a + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf466e eltorito.c:753 + je short 0462bh ; 74 b7 ; 0xf4672 + mov bx, 00dcch ; bb cc 0d ; 0xf4674 eltorito.c:754 + mov cx, ds ; 8c d9 ; 0xf4677 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4679 + call 01919h ; e8 9a d2 ; 0xf467c + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf467f + xor ah, ah ; 30 e4 ; 0xf4682 + push ax ; 50 ; 0xf4684 + push word [bp-018h] ; ff 76 e8 ; 0xf4685 + mov ax, 00384h ; b8 84 03 ; 0xf4688 + push ax ; 50 ; 0xf468b + mov ax, 00410h ; b8 10 04 ; 0xf468c + push ax ; 50 ; 0xf468f + mov ax, strict word 00004h ; b8 04 00 ; 0xf4690 + push ax ; 50 ; 0xf4693 + call 0195ch ; e8 c5 d2 ; 0xf4694 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4697 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf469a eltorito.c:755 + xor ah, ah ; 30 e4 ; 0xf469d + or ah, 00ch ; 80 cc 0c ; 0xf469f + jmp short 046c6h ; eb 22 ; 0xf46a2 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf46a4 eltorito.c:763 + push ax ; 50 ; 0xf46a7 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf46a8 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf46ab + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf46ae + mov cx, word [bp-01ch] ; 8b 4e e4 ; 0xf46b1 + call 0594ah ; e8 93 12 ; 0xf46b4 + test ax, ax ; 85 c0 ; 0xf46b7 + jne short 046beh ; 75 03 ; 0xf46b9 + jmp near 04599h ; e9 db fe ; 0xf46bb + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf46be eltorito.c:764 + xor ah, ah ; 30 e4 ; 0xf46c1 + or ah, 001h ; 80 cc 01 ; 0xf46c3 + mov word [bp+016h], ax ; 89 46 16 ; 0xf46c6 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf46c9 + xor ah, ah ; 30 e4 ; 0xf46cc + mov bx, strict word 00074h ; bb 74 00 ; 0xf46ce + mov dx, strict word 00040h ; ba 40 00 ; 0xf46d1 + mov es, dx ; 8e c2 ; 0xf46d4 + mov byte [es:bx], al ; 26 88 07 ; 0xf46d6 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf46d9 + jmp near 045adh ; e9 cd fe ; 0xf46dd + mov bx, 00dcch ; bb cc 0d ; 0xf46e0 eltorito.c:780 + mov cx, ds ; 8c d9 ; 0xf46e3 + mov ax, strict word 00004h ; b8 04 00 ; 0xf46e5 + call 01919h ; e8 2e d2 ; 0xf46e8 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf46eb + xor ah, ah ; 30 e4 ; 0xf46ee + push ax ; 50 ; 0xf46f0 + mov ax, 00384h ; b8 84 03 ; 0xf46f1 + push ax ; 50 ; 0xf46f4 + mov ax, 00432h ; b8 32 04 ; 0xf46f5 + push ax ; 50 ; 0xf46f8 + mov ax, strict word 00004h ; b8 04 00 ; 0xf46f9 + jmp near 04607h ; e9 08 ff ; 0xf46fc + ; disGetNextSymbol 0xf46ff LB 0x6759 -> off=0x59 cb=000000000000030e uValue=00000000000f3158 '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, 036h, 048h, 04bh + db 04ah, 0feh, 047h, 036h, 048h, 0f3h, 047h, 036h, 048h, 0f3h, 047h, 036h, 048h, 04bh, 04ah, 036h + db 048h, 036h, 048h, 04bh, 04ah, 04bh, 04ah, 04bh, 04ah, 04bh, 04ah, 04bh, 04ah, 01ah, 048h, 04bh + db 04ah, 036h, 048h, 023h, 048h, 054h, 048h, 0f3h, 047h, 054h, 048h, 029h, 049h, 0c9h, 049h, 054h + db 048h, 0f2h, 049h, 00ch, 04ah, 014h, 04ah, 036h, 048h +int13_cdrom: ; 0xf4758 LB 0x30e + push bp ; 55 ; 0xf4758 eltorito.c:805 + mov bp, sp ; 89 e5 ; 0xf4759 + push si ; 56 ; 0xf475b + push di ; 57 ; 0xf475c + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf475d + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4760 eltorito.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4763 + mov es, ax ; 8e c0 ; 0xf4766 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf4768 + mov si, strict word 0005eh ; be 5e 00 ; 0xf476b eltorito.c:814 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf476e + mov bx, strict word 00074h ; bb 74 00 ; 0xf4771 eltorito.c:53 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4774 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4778 eltorito.c:821 + xor ah, ah ; 30 e4 ; 0xf477b + cmp ax, 000e0h ; 3d e0 00 ; 0xf477d + jc short 04787h ; 72 05 ; 0xf4780 + cmp ax, 000f4h ; 3d f4 00 ; 0xf4782 + jc short 047a6h ; 72 1f ; 0xf4785 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4787 eltorito.c:822 + xor ah, ah ; 30 e4 ; 0xf478a + push ax ; 50 ; 0xf478c + mov al, byte [bp+019h] ; 8a 46 19 ; 0xf478d + push ax ; 50 ; 0xf4790 + mov ax, 00462h ; b8 62 04 ; 0xf4791 + push ax ; 50 ; 0xf4794 + mov ax, 0046eh ; b8 6e 04 ; 0xf4795 + push ax ; 50 ; 0xf4798 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4799 + push ax ; 50 ; 0xf479c + call 0195ch ; e8 bc d1 ; 0xf479d + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf47a0 + jmp near 04a2ah ; e9 84 02 ; 0xf47a3 eltorito.c:823 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf47a6 eltorito.c:827 + xor ah, ah ; 30 e4 ; 0xf47a9 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf47ab + mov bx, si ; 89 f3 ; 0xf47ae + add bx, ax ; 01 c3 ; 0xf47b0 + mov dl, byte [es:bx+00184h] ; 26 8a 97 84 01 ; 0xf47b2 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf47b7 + cmp dl, 014h ; 80 fa 14 ; 0xf47ba eltorito.c:830 + jc short 047cdh ; 72 0e ; 0xf47bd + push ax ; 50 ; 0xf47bf eltorito.c:831 + mov al, byte [bp+019h] ; 8a 46 19 ; 0xf47c0 + push ax ; 50 ; 0xf47c3 + mov ax, 00462h ; b8 62 04 ; 0xf47c4 + push ax ; 50 ; 0xf47c7 + mov ax, 00499h ; b8 99 04 ; 0xf47c8 + jmp short 04798h ; eb cb ; 0xf47cb + mov al, byte [bp+019h] ; 8a 46 19 ; 0xf47cd eltorito.c:835 + xor ah, ah ; 30 e4 ; 0xf47d0 + mov dx, ax ; 89 c2 ; 0xf47d2 + cmp ax, strict word 00050h ; 3d 50 00 ; 0xf47d4 + jnbe short 04836h ; 77 5d ; 0xf47d7 + push CS ; 0e ; 0xf47d9 + pop ES ; 07 ; 0xf47da + mov cx, strict word 0001eh ; b9 1e 00 ; 0xf47db + mov di, 046ffh ; bf ff 46 ; 0xf47de + repne scasb ; f2 ae ; 0xf47e1 + sal cx, 1 ; d1 e1 ; 0xf47e3 + mov di, cx ; 89 cf ; 0xf47e5 + mov ax, word [cs:di+0471ch] ; 2e 8b 85 1c 47 ; 0xf47e7 + mov bx, word [bp+018h] ; 8b 5e 18 ; 0xf47ec + xor bh, bh ; 30 ff ; 0xf47ef + jmp ax ; ff e0 ; 0xf47f1 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf47f3 eltorito.c:853 + xor ah, ah ; 30 e4 ; 0xf47f6 + or ah, 003h ; 80 cc 03 ; 0xf47f8 + jmp near 04a32h ; e9 34 02 ; 0xf47fb eltorito.c:854 + mov si, strict word 00074h ; be 74 00 ; 0xf47fe eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4801 + mov es, ax ; 8e c0 ; 0xf4804 + mov al, byte [es:si] ; 26 8a 04 ; 0xf4806 + mov bh, al ; 88 c7 ; 0xf4809 eltorito.c:859 + mov word [bp+018h], bx ; 89 5e 18 ; 0xf480b + mov bx, si ; 89 f3 ; 0xf480e eltorito.c:53 + mov byte [es:bx], dh ; 26 88 37 ; 0xf4810 + test al, al ; 84 c0 ; 0xf4813 eltorito.c:863 + je short 04833h ; 74 1c ; 0xf4815 + jmp near 04a45h ; e9 2b 02 ; 0xf4817 eltorito.c:864 + or bh, 002h ; 80 cf 02 ; 0xf481a eltorito.c:870 + mov word [bp+018h], bx ; 89 5e 18 ; 0xf481d + jmp near 04a35h ; e9 12 02 ; 0xf4820 eltorito.c:871 + mov word [bp+012h], 0aa55h ; c7 46 12 55 aa ; 0xf4823 eltorito.c:875 + or bh, 030h ; 80 cf 30 ; 0xf4828 eltorito.c:876 + mov word [bp+018h], bx ; 89 5e 18 ; 0xf482b + mov word [bp+016h], strict word 00007h ; c7 46 16 07 00 ; 0xf482e eltorito.c:877 + jmp near 04a4fh ; e9 19 02 ; 0xf4833 eltorito.c:878 + mov bx, 00dcch ; bb cc 0d ; 0xf4836 + mov cx, ds ; 8c d9 ; 0xf4839 + mov ax, strict word 00004h ; b8 04 00 ; 0xf483b + call 01919h ; e8 d8 d0 ; 0xf483e + mov al, byte [bp+019h] ; 8a 46 19 ; 0xf4841 + xor ah, ah ; 30 e4 ; 0xf4844 + push ax ; 50 ; 0xf4846 + mov ax, 00462h ; b8 62 04 ; 0xf4847 + push ax ; 50 ; 0xf484a + mov ax, 0036bh ; b8 6b 03 ; 0xf484b + push ax ; 50 ; 0xf484e + mov ax, strict word 00004h ; b8 04 00 ; 0xf484f + jmp short 0488eh ; eb 3a ; 0xf4852 + mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf4854 eltorito.c:886 + mov es, [bp+006h] ; 8e 46 06 ; 0xf4857 + mov di, bx ; 89 df ; 0xf485a + mov [bp-008h], es ; 8c 46 f8 ; 0xf485c + mov dx, word [es:bx+002h] ; 26 8b 57 02 ; 0xf485f eltorito.c:888 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf4863 eltorito.c:889 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf4867 + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf486a eltorito.c:890 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf486e + mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf4871 eltorito.c:893 + mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf4875 + or ax, cx ; 09 c8 ; 0xf4879 eltorito.c:894 + je short 04898h ; 74 1b ; 0xf487b + mov al, byte [bp+019h] ; 8a 46 19 ; 0xf487d eltorito.c:895 + xor ah, ah ; 30 e4 ; 0xf4880 + push ax ; 50 ; 0xf4882 + mov ax, 00462h ; b8 62 04 ; 0xf4883 + push ax ; 50 ; 0xf4886 + mov ax, 003e7h ; b8 e7 03 ; 0xf4887 + push ax ; 50 ; 0xf488a + mov ax, strict word 00007h ; b8 07 00 ; 0xf488b + push ax ; 50 ; 0xf488e + call 0195ch ; e8 ca d0 ; 0xf488f + add sp, strict byte 00008h ; 83 c4 08 ; 0xf4892 + jmp near 04a2ah ; e9 92 01 ; 0xf4895 eltorito.c:896 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4898 eltorito.c:900 + mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf489b + mov cx, word [es:di+00ah] ; 26 8b 4d 0a ; 0xf489f + mov bl, byte [bp+019h] ; 8a 5e 19 ; 0xf48a3 eltorito.c:903 + mov byte [bp-012h], bl ; 88 5e ee ; 0xf48a6 + mov byte [bp-011h], 000h ; c6 46 ef 00 ; 0xf48a9 + cmp word [bp-012h], strict byte 00044h ; 83 7e ee 44 ; 0xf48ad + je short 048b9h ; 74 06 ; 0xf48b1 + cmp word [bp-012h], strict byte 00047h ; 83 7e ee 47 ; 0xf48b3 + jne short 048bch ; 75 03 ; 0xf48b7 + jmp near 04a4bh ; e9 8f 01 ; 0xf48b9 eltorito.c:904 + push word [bp-00eh] ; ff 76 f2 ; 0xf48bc eltorito.c:909 + push word [bp-00ch] ; ff 76 f4 ; 0xf48bf + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf48c2 + mov byte [bp-014h], bl ; 88 5e ec ; 0xf48c5 + mov byte [bp-013h], 000h ; c6 46 ed 00 ; 0xf48c8 + mov bx, ax ; 89 c3 ; 0xf48cc + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf48ce + call 03df0h ; e8 1c f5 ; 0xf48d1 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf48d4 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf48d7 eltorito.c:910 + mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf48da + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf48de + mov cx, strict word 0000bh ; b9 0b 00 ; 0xf48e2 + shr dx, 1 ; d1 ea ; 0xf48e5 + rcr ax, 1 ; d1 d8 ; 0xf48e7 + loop 048e5h ; e2 fa ; 0xf48e9 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf48eb eltorito.c:911 + mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf48ee + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf48f2 eltorito.c:913 + je short 048b9h ; 74 c1 ; 0xf48f6 + mov bx, 00dcch ; bb cc 0d ; 0xf48f8 eltorito.c:914 + mov cx, ds ; 8c d9 ; 0xf48fb + mov ax, strict word 00004h ; b8 04 00 ; 0xf48fd + call 01919h ; e8 16 d0 ; 0xf4900 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf4903 + xor ah, ah ; 30 e4 ; 0xf4906 + push ax ; 50 ; 0xf4908 + push word [bp-012h] ; ff 76 ee ; 0xf4909 + mov ax, 00462h ; b8 62 04 ; 0xf490c + push ax ; 50 ; 0xf490f + mov ax, 00410h ; b8 10 04 ; 0xf4910 + push ax ; 50 ; 0xf4913 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4914 + push ax ; 50 ; 0xf4917 + call 0195ch ; e8 41 d0 ; 0xf4918 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf491b + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf491e eltorito.c:915 + xor ah, ah ; 30 e4 ; 0xf4921 + or ah, 00ch ; 80 cc 0c ; 0xf4923 + jmp near 04a32h ; e9 09 01 ; 0xf4926 + cmp bx, strict byte 00002h ; 83 fb 02 ; 0xf4929 eltorito.c:923 + jnbe short 04999h ; 77 6b ; 0xf492c + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf492e eltorito.c:926 + xor ah, ah ; 30 e4 ; 0xf4931 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4933 + imul dx ; f7 ea ; 0xf4936 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf4938 + mov di, si ; 89 f7 ; 0xf493b + add di, ax ; 01 c7 ; 0xf493d + mov cl, byte [es:di+021h] ; 26 8a 4d 21 ; 0xf493f + cmp bx, strict byte 00002h ; 83 fb 02 ; 0xf4943 eltorito.c:928 + je short 049b1h ; 74 69 ; 0xf4946 + cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf4948 + je short 04989h ; 74 3c ; 0xf494b + test bx, bx ; 85 db ; 0xf494d + jne short 049c1h ; 75 70 ; 0xf494f + cmp cl, 0ffh ; 80 f9 ff ; 0xf4951 eltorito.c:930 + jne short 04968h ; 75 12 ; 0xf4954 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4956 eltorito.c:931 + xor ah, ah ; 30 e4 ; 0xf4959 + or ah, 0b4h ; 80 cc b4 ; 0xf495b + mov word [bp+018h], ax ; 89 46 18 ; 0xf495e + xor al, al ; 30 c0 ; 0xf4961 eltorito.c:932 + or AL, strict byte 001h ; 0c 01 ; 0xf4963 + jmp near 04a32h ; e9 ca 00 ; 0xf4965 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4968 eltorito.c:934 + xor ah, ah ; 30 e4 ; 0xf496b + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf496d + imul dx ; f7 ea ; 0xf4970 + db 0feh, 0c1h + ; inc cl ; fe c1 ; 0xf4972 eltorito.c:935 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf4974 + add si, ax ; 01 c6 ; 0xf4977 + mov byte [es:si+021h], cl ; 26 88 4c 21 ; 0xf4979 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf497d eltorito.c:936 + xor al, al ; 30 c0 ; 0xf4980 + or AL, strict byte 001h ; 0c 01 ; 0xf4982 + mov word [bp+018h], ax ; 89 46 18 ; 0xf4984 + jmp short 049c1h ; eb 38 ; 0xf4987 eltorito.c:937 + test cl, cl ; 84 c9 ; 0xf4989 eltorito.c:939 + jne short 0499ch ; 75 0f ; 0xf498b + or bh, 0b0h ; 80 cf b0 ; 0xf498d eltorito.c:940 + mov word [bp+018h], bx ; 89 5e 18 ; 0xf4990 + mov byte [bp+018h], cl ; 88 4e 18 ; 0xf4993 eltorito.c:941 + jmp near 04a35h ; e9 9c 00 ; 0xf4996 eltorito.c:942 + jmp near 04a2ah ; e9 8e 00 ; 0xf4999 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf499c eltorito.c:943 + xor ah, ah ; 30 e4 ; 0xf499f + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf49a1 + imul dx ; f7 ea ; 0xf49a4 + db 0feh, 0c9h + ; dec cl ; fe c9 ; 0xf49a6 eltorito.c:944 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf49a8 + add si, ax ; 01 c6 ; 0xf49ab + mov byte [es:si+021h], cl ; 26 88 4c 21 ; 0xf49ad + test cl, cl ; 84 c9 ; 0xf49b1 eltorito.c:945 + jne short 049c4h ; 75 0f ; 0xf49b3 + xor ax, ax ; 31 c0 ; 0xf49b5 + mov dx, word [bp+018h] ; 8b 56 18 ; 0xf49b7 + xor dl, dl ; 30 d2 ; 0xf49ba + or dx, ax ; 09 c2 ; 0xf49bc + mov word [bp+018h], dx ; 89 56 18 ; 0xf49be + jmp near 04a4bh ; e9 87 00 ; 0xf49c1 + mov ax, strict word 00001h ; b8 01 00 ; 0xf49c4 + jmp short 049b7h ; eb ee ; 0xf49c7 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf49c9 eltorito.c:955 + xor ah, ah ; 30 e4 ; 0xf49cc + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf49ce + imul dx ; f7 ea ; 0xf49d1 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf49d3 + add si, ax ; 01 c6 ; 0xf49d6 + mov cl, byte [es:si+021h] ; 26 8a 4c 21 ; 0xf49d8 + test cl, cl ; 84 c9 ; 0xf49dc eltorito.c:957 + je short 049e6h ; 74 06 ; 0xf49de + or bh, 0b1h ; 80 cf b1 ; 0xf49e0 eltorito.c:958 + jmp near 0481dh ; e9 37 fe ; 0xf49e3 + je short 04a4bh ; 74 63 ; 0xf49e6 eltorito.c:980 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf49e8 eltorito.c:981 + xor ah, ah ; 30 e4 ; 0xf49eb + or ah, 0b1h ; 80 cc b1 ; 0xf49ed + jmp short 04a32h ; eb 40 ; 0xf49f0 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf49f2 eltorito.c:989 + xor ah, ah ; 30 e4 ; 0xf49f5 + push ax ; 50 ; 0xf49f7 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf49f8 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf49fb + mov bx, si ; 89 f3 ; 0xf49fe + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf4a00 + call 0594ah ; e8 44 0f ; 0xf4a03 + test ax, ax ; 85 c0 ; 0xf4a06 + je short 04a4bh ; 74 41 ; 0xf4a08 + jmp short 04a2ah ; eb 1e ; 0xf4a0a eltorito.c:990 + or bh, 006h ; 80 cf 06 ; 0xf4a0c eltorito.c:997 + mov word [bp+018h], bx ; 89 5e 18 ; 0xf4a0f + jmp short 04a45h ; eb 31 ; 0xf4a12 eltorito.c:998 + cmp bx, strict byte 00006h ; 83 fb 06 ; 0xf4a14 eltorito.c:1003 + je short 04a4bh ; 74 32 ; 0xf4a17 + cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf4a19 + jc short 04a2ah ; 72 0c ; 0xf4a1c + jbe short 04a4bh ; 76 2b ; 0xf4a1e + cmp bx, strict byte 00003h ; 83 fb 03 ; 0xf4a20 + jc short 04a2ah ; 72 05 ; 0xf4a23 + cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf4a25 + jbe short 04a4bh ; 76 21 ; 0xf4a28 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4a2a eltorito.c:1030 + xor ah, ah ; 30 e4 ; 0xf4a2d + or ah, 001h ; 80 cc 01 ; 0xf4a2f + mov word [bp+018h], ax ; 89 46 18 ; 0xf4a32 + mov al, byte [bp+019h] ; 8a 46 19 ; 0xf4a35 eltorito.c:1032 + xor ah, ah ; 30 e4 ; 0xf4a38 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4a3a eltorito.c:53 + mov dx, strict word 00040h ; ba 40 00 ; 0xf4a3d + mov es, dx ; 8e c2 ; 0xf4a40 + mov byte [es:bx], al ; 26 88 07 ; 0xf4a42 + or byte [bp+01eh], 001h ; 80 4e 1e 01 ; 0xf4a45 eltorito.c:1034 + jmp short 04a5fh ; eb 14 ; 0xf4a49 eltorito.c:1035 + mov byte [bp+019h], 000h ; c6 46 19 00 ; 0xf4a4b eltorito.c:1038 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4a4f eltorito.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4a52 + mov es, ax ; 8e c0 ; 0xf4a55 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4a57 + and byte [bp+01eh], 0feh ; 80 66 1e fe ; 0xf4a5b eltorito.c:1041 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf4a5f eltorito.c:1043 + pop di ; 5f ; 0xf4a62 + pop si ; 5e ; 0xf4a63 + pop bp ; 5d ; 0xf4a64 + retn ; c3 ; 0xf4a65 + ; disGetNextSymbol 0xf4a66 LB 0x63f2 -> off=0x0 cb=0000000000000051 uValue=00000000000f3466 'print_boot_device' +print_boot_device: ; 0xf4a66 LB 0x51 + push bp ; 55 ; 0xf4a66 boot.c:119 + mov bp, sp ; 89 e5 ; 0xf4a67 + push cx ; 51 ; 0xf4a69 + test al, al ; 84 c0 ; 0xf4a6a boot.c:127 + je short 04a73h ; 74 05 ; 0xf4a6c + mov dx, strict word 00002h ; ba 02 00 ; 0xf4a6e + jmp short 04a8dh ; eb 1a ; 0xf4a71 boot.c:128 + test dl, dl ; 84 d2 ; 0xf4a73 + je short 04a7ch ; 74 05 ; 0xf4a75 + mov dx, strict word 00003h ; ba 03 00 ; 0xf4a77 + jmp short 04a8dh ; eb 11 ; 0xf4a7a boot.c:129 + test bl, 080h ; f6 c3 80 ; 0xf4a7c + jne short 04a85h ; 75 04 ; 0xf4a7f + xor dh, dh ; 30 f6 ; 0xf4a81 + jmp short 04a8dh ; eb 08 ; 0xf4a83 boot.c:130 + test bl, 080h ; f6 c3 80 ; 0xf4a85 + je short 04ab1h ; 74 27 ; 0xf4a88 + mov dx, strict word 00001h ; ba 01 00 ; 0xf4a8a + mov bx, 00dcch ; bb cc 0d ; 0xf4a8d boot.c:133 + mov cx, ds ; 8c d9 ; 0xf4a90 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4a92 + call 01919h ; e8 81 ce ; 0xf4a95 + mov ax, dx ; 89 d0 ; 0xf4a98 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf4a9a + imul dx ; f7 ea ; 0xf4a9d + add ax, 00df2h ; 05 f2 0d ; 0xf4a9f + push ax ; 50 ; 0xf4aa2 + mov ax, 004cch ; b8 cc 04 ; 0xf4aa3 + push ax ; 50 ; 0xf4aa6 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4aa7 + push ax ; 50 ; 0xf4aaa + call 0195ch ; e8 ae ce ; 0xf4aab + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4aae + lea sp, [bp-002h] ; 8d 66 fe ; 0xf4ab1 boot.c:134 + pop cx ; 59 ; 0xf4ab4 + pop bp ; 5d ; 0xf4ab5 + retn ; c3 ; 0xf4ab6 + ; disGetNextSymbol 0xf4ab7 LB 0x63a1 -> off=0x0 cb=00000000000000ce uValue=00000000000f34b7 'print_boot_failure' +print_boot_failure: ; 0xf4ab7 LB 0xce + push bp ; 55 ; 0xf4ab7 boot.c:141 + mov bp, sp ; 89 e5 ; 0xf4ab8 + push si ; 56 ; 0xf4aba + mov dh, cl ; 88 ce ; 0xf4abb + mov cl, bl ; 88 d9 ; 0xf4abd boot.c:144 + and cl, 07fh ; 80 e1 7f ; 0xf4abf + xor ch, ch ; 30 ed ; 0xf4ac2 + mov si, cx ; 89 ce ; 0xf4ac4 + test al, al ; 84 c0 ; 0xf4ac6 boot.c:152 + je short 04ae9h ; 74 1f ; 0xf4ac8 + mov bx, 00dcch ; bb cc 0d ; 0xf4aca boot.c:153 + mov cx, ds ; 8c d9 ; 0xf4acd + mov ax, strict word 00004h ; b8 04 00 ; 0xf4acf + call 01919h ; e8 44 ce ; 0xf4ad2 + mov cx, 00e06h ; b9 06 0e ; 0xf4ad5 + push cx ; 51 ; 0xf4ad8 + mov cx, 004e0h ; b9 e0 04 ; 0xf4ad9 + push cx ; 51 ; 0xf4adc + mov cx, strict word 00004h ; b9 04 00 ; 0xf4add + push cx ; 51 ; 0xf4ae0 + call 0195ch ; e8 78 ce ; 0xf4ae1 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4ae4 + jmp short 04b31h ; eb 48 ; 0xf4ae7 boot.c:154 + test dl, dl ; 84 d2 ; 0xf4ae9 + je short 04afdh ; 74 10 ; 0xf4aeb + mov bx, 00dcch ; bb cc 0d ; 0xf4aed boot.c:155 + mov cx, ds ; 8c d9 ; 0xf4af0 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4af2 + call 01919h ; e8 21 ce ; 0xf4af5 + mov cx, 00e10h ; b9 10 0e ; 0xf4af8 + jmp short 04ad8h ; eb db ; 0xf4afb + test bl, 080h ; f6 c3 80 ; 0xf4afd boot.c:156 + je short 04b13h ; 74 11 ; 0xf4b00 + mov bx, 00dcch ; bb cc 0d ; 0xf4b02 boot.c:157 + mov cx, ds ; 8c d9 ; 0xf4b05 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4b07 + call 01919h ; e8 0c ce ; 0xf4b0a + push si ; 56 ; 0xf4b0d + mov cx, 00dfch ; b9 fc 0d ; 0xf4b0e + jmp short 04b22h ; eb 0f ; 0xf4b11 boot.c:158 + mov bx, 00dcch ; bb cc 0d ; 0xf4b13 boot.c:159 + mov cx, ds ; 8c d9 ; 0xf4b16 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4b18 + call 01919h ; e8 fb cd ; 0xf4b1b + push si ; 56 ; 0xf4b1e + mov cx, 00df2h ; b9 f2 0d ; 0xf4b1f + push cx ; 51 ; 0xf4b22 + mov cx, 004f5h ; b9 f5 04 ; 0xf4b23 + push cx ; 51 ; 0xf4b26 + mov cx, strict word 00004h ; b9 04 00 ; 0xf4b27 + push cx ; 51 ; 0xf4b2a + call 0195ch ; e8 2e ce ; 0xf4b2b + add sp, strict byte 00008h ; 83 c4 08 ; 0xf4b2e + cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4b31 boot.c:161 + jne short 04b7dh ; 75 46 ; 0xf4b35 + test dh, dh ; 84 f6 ; 0xf4b37 boot.c:162 + jne short 04b4bh ; 75 10 ; 0xf4b39 + mov bx, 00dcch ; bb cc 0d ; 0xf4b3b boot.c:163 + mov cx, ds ; 8c d9 ; 0xf4b3e + mov ax, strict word 00004h ; b8 04 00 ; 0xf4b40 + call 01919h ; e8 d3 cd ; 0xf4b43 + mov dx, 0050dh ; ba 0d 05 ; 0xf4b46 + jmp short 04b59h ; eb 0e ; 0xf4b49 boot.c:164 + mov bx, 00dcch ; bb cc 0d ; 0xf4b4b boot.c:165 + mov cx, ds ; 8c d9 ; 0xf4b4e + mov ax, strict word 00004h ; b8 04 00 ; 0xf4b50 + call 01919h ; e8 c3 cd ; 0xf4b53 + mov dx, 00528h ; ba 28 05 ; 0xf4b56 + push dx ; 52 ; 0xf4b59 + mov dx, strict word 00006h ; ba 06 00 ; 0xf4b5a + push dx ; 52 ; 0xf4b5d + call 0195ch ; e8 fb cd ; 0xf4b5e + add sp, strict byte 00004h ; 83 c4 04 ; 0xf4b61 + mov bx, 00dcch ; bb cc 0d ; 0xf4b64 boot.c:166 + mov cx, ds ; 8c d9 ; 0xf4b67 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4b69 + call 01919h ; e8 aa cd ; 0xf4b6c + mov dx, 0054eh ; ba 4e 05 ; 0xf4b6f + push dx ; 52 ; 0xf4b72 + mov dx, strict word 00006h ; ba 06 00 ; 0xf4b73 + push dx ; 52 ; 0xf4b76 + call 0195ch ; e8 e2 cd ; 0xf4b77 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf4b7a + lea sp, [bp-002h] ; 8d 66 fe ; 0xf4b7d boot.c:168 + pop si ; 5e ; 0xf4b80 + pop bp ; 5d ; 0xf4b81 + retn 00002h ; c2 02 00 ; 0xf4b82 + ; disGetNextSymbol 0xf4b85 LB 0x62d3 -> off=0x0 cb=000000000000002a uValue=00000000000f3585 'print_cdromboot_failure' +print_cdromboot_failure: ; 0xf4b85 LB 0x2a + push bp ; 55 ; 0xf4b85 boot.c:174 + mov bp, sp ; 89 e5 ; 0xf4b86 + push bx ; 53 ; 0xf4b88 + push cx ; 51 ; 0xf4b89 + push dx ; 52 ; 0xf4b8a + mov dx, ax ; 89 c2 ; 0xf4b8b + mov bx, 00dcch ; bb cc 0d ; 0xf4b8d boot.c:176 + mov cx, ds ; 8c d9 ; 0xf4b90 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4b92 + call 01919h ; e8 81 cd ; 0xf4b95 + push dx ; 52 ; 0xf4b98 + mov dx, 0057bh ; ba 7b 05 ; 0xf4b99 + push dx ; 52 ; 0xf4b9c + mov dx, strict word 00004h ; ba 04 00 ; 0xf4b9d + push dx ; 52 ; 0xf4ba0 + call 0195ch ; e8 b8 cd ; 0xf4ba1 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4ba4 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf4ba7 boot.c:178 + pop dx ; 5a ; 0xf4baa + pop cx ; 59 ; 0xf4bab + pop bx ; 5b ; 0xf4bac + pop bp ; 5d ; 0xf4bad + retn ; c3 ; 0xf4bae + ; disGetNextSymbol 0xf4baf LB 0x62a9 -> off=0x0 cb=0000000000000266 uValue=00000000000f35af 'int19_function' +int19_function: ; 0xf4baf LB 0x266 + push bp ; 55 ; 0xf4baf boot.c:181 + mov bp, sp ; 89 e5 ; 0xf4bb0 + push si ; 56 ; 0xf4bb2 + push di ; 57 ; 0xf4bb3 + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf4bb4 + mov di, strict word 0000eh ; bf 0e 00 ; 0xf4bb7 boot.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4bba + mov es, ax ; 8e c0 ; 0xf4bbd + mov di, word [es:di] ; 26 8b 3d ; 0xf4bbf + mov word [bp-00eh], di ; 89 7e f2 ; 0xf4bc2 boot.c:59 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf4bc5 boot.c:192 + mov ax, strict word 0003dh ; b8 3d 00 ; 0xf4bc9 boot.c:215 + call 01664h ; e8 95 ca ; 0xf4bcc + mov bl, al ; 88 c3 ; 0xf4bcf + xor bh, bh ; 30 ff ; 0xf4bd1 + mov ax, strict word 00038h ; b8 38 00 ; 0xf4bd3 boot.c:216 + call 01664h ; e8 8b ca ; 0xf4bd6 + and AL, strict byte 0f0h ; 24 f0 ; 0xf4bd9 + xor ah, ah ; 30 e4 ; 0xf4bdb + mov CL, strict byte 004h ; b1 04 ; 0xf4bdd + sal ax, CL ; d3 e0 ; 0xf4bdf + mov dx, bx ; 89 da ; 0xf4be1 + or dx, ax ; 09 c2 ; 0xf4be3 + mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4be5 boot.c:217 + call 01664h ; e8 79 ca ; 0xf4be8 + and AL, strict byte 00fh ; 24 0f ; 0xf4beb + xor ah, ah ; 30 e4 ; 0xf4bed + mov CL, strict byte 00ch ; b1 0c ; 0xf4bef + sal ax, CL ; d3 e0 ; 0xf4bf1 + or dx, ax ; 09 c2 ; 0xf4bf3 + mov bx, 00331h ; bb 31 03 ; 0xf4bf5 boot.c:48 + mov es, di ; 8e c7 ; 0xf4bf8 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4bfa + test al, al ; 84 c0 ; 0xf4bfd boot.c:49 + je short 04c05h ; 74 04 ; 0xf4bff + mov dl, al ; 88 c2 ; 0xf4c01 boot.c:48 + xor dh, dh ; 30 f6 ; 0xf4c03 boot.c:49 + cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4c05 boot.c:221 + jne short 04c1ch ; 75 11 ; 0xf4c09 + mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4c0b boot.c:222 + call 01664h ; e8 53 ca ; 0xf4c0e + and AL, strict byte 0f0h ; 24 f0 ; 0xf4c11 + xor ah, ah ; 30 e4 ; 0xf4c13 + mov CL, strict byte 004h ; b1 04 ; 0xf4c15 + sar ax, CL ; d3 f8 ; 0xf4c17 + call 07784h ; e8 68 2b ; 0xf4c19 + cmp byte [bp+004h], 002h ; 80 7e 04 02 ; 0xf4c1c boot.c:224 + jne short 04c26h ; 75 04 ; 0xf4c20 + mov CL, strict byte 004h ; b1 04 ; 0xf4c22 + shr dx, CL ; d3 ea ; 0xf4c24 + cmp byte [bp+004h], 003h ; 80 7e 04 03 ; 0xf4c26 boot.c:225 + jne short 04c30h ; 75 04 ; 0xf4c2a + mov dl, dh ; 88 f2 ; 0xf4c2c + xor dh, dh ; 30 f6 ; 0xf4c2e + cmp byte [bp+004h], 004h ; 80 7e 04 04 ; 0xf4c30 boot.c:226 + jne short 04c3ah ; 75 04 ; 0xf4c34 + mov CL, strict byte 00ch ; b1 0c ; 0xf4c36 + shr dx, CL ; d3 ea ; 0xf4c38 + cmp dx, strict byte 00010h ; 83 fa 10 ; 0xf4c3a boot.c:227 + jnc short 04c43h ; 73 04 ; 0xf4c3d + mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf4c3f + xor al, al ; 30 c0 ; 0xf4c43 boot.c:228 + mov byte [bp-006h], al ; 88 46 fa ; 0xf4c45 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf4c48 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4c4b boot.c:229 + mov bx, 00dcch ; bb cc 0d ; 0xf4c4e boot.c:230 + mov cx, ds ; 8c d9 ; 0xf4c51 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4c53 + call 01919h ; e8 c0 cc ; 0xf4c56 + push dx ; 52 ; 0xf4c59 + mov al, byte [bp+004h] ; 8a 46 04 ; 0xf4c5a + xor ah, ah ; 30 e4 ; 0xf4c5d + push ax ; 50 ; 0xf4c5f + mov ax, 0059bh ; b8 9b 05 ; 0xf4c60 + push ax ; 50 ; 0xf4c63 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4c64 + push ax ; 50 ; 0xf4c67 + call 0195ch ; e8 f1 cc ; 0xf4c68 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf4c6b + and dx, strict byte 0000fh ; 83 e2 0f ; 0xf4c6e boot.c:232 + cmp dx, strict byte 00002h ; 83 fa 02 ; 0xf4c71 + jc short 04c84h ; 72 0e ; 0xf4c74 + jbe short 04c93h ; 76 1b ; 0xf4c76 + cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4c78 + je short 04cb0h ; 74 33 ; 0xf4c7b + cmp dx, strict byte 00003h ; 83 fa 03 ; 0xf4c7d + je short 04ca6h ; 74 24 ; 0xf4c80 + jmp short 04cdfh ; eb 5b ; 0xf4c82 + cmp dx, strict byte 00001h ; 83 fa 01 ; 0xf4c84 + jne short 04cdfh ; 75 56 ; 0xf4c87 + xor al, al ; 30 c0 ; 0xf4c89 boot.c:234 + mov byte [bp-006h], al ; 88 46 fa ; 0xf4c8b + mov byte [bp-008h], al ; 88 46 f8 ; 0xf4c8e boot.c:235 + jmp short 04cf2h ; eb 5f ; 0xf4c91 boot.c:236 + mov bx, 00330h ; bb 30 03 ; 0xf4c93 boot.c:48 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4c96 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4c99 + add AL, strict byte 080h ; 04 80 ; 0xf4c9c boot.c:242 + mov byte [bp-006h], al ; 88 46 fa ; 0xf4c9e + mov byte [bp-008h], dh ; 88 76 f8 ; 0xf4ca1 boot.c:243 + jmp short 04cf2h ; eb 4c ; 0xf4ca4 boot.c:244 + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf4ca6 boot.c:247 + mov byte [bp-008h], 001h ; c6 46 f8 01 ; 0xf4caa boot.c:248 + jmp short 04cbah ; eb 0a ; 0xf4cae boot.c:249 + mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf4cb0 boot.c:250 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4cb4 boot.c:266 + je short 04cf2h ; 74 38 ; 0xf4cb8 + call 03ff0h ; e8 33 f3 ; 0xf4cba boot.c:267 + mov dx, ax ; 89 c2 ; 0xf4cbd + test AL, strict byte 0ffh ; a8 ff ; 0xf4cbf boot.c:270 + je short 04ce6h ; 74 23 ; 0xf4cc1 + call 04b85h ; e8 bf fe ; 0xf4cc3 boot.c:271 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4cc6 boot.c:272 + xor ah, ah ; 30 e4 ; 0xf4cc9 + push ax ; 50 ; 0xf4ccb + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4ccc + xor bh, bh ; 30 ff ; 0xf4ccf + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4cd1 + xor dh, dh ; 30 f6 ; 0xf4cd4 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4cd6 + mov cx, strict word 00001h ; b9 01 00 ; 0xf4cd9 + call 04ab7h ; e8 d8 fd ; 0xf4cdc + xor ax, ax ; 31 c0 ; 0xf4cdf + xor dx, dx ; 31 d2 ; 0xf4ce1 + jmp near 04e0eh ; e9 28 01 ; 0xf4ce3 + mov bx, 00322h ; bb 22 03 ; 0xf4ce6 boot.c:58 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4ce9 + mov si, word [es:bx] ; 26 8b 37 ; 0xf4cec + mov byte [bp-006h], dh ; 88 76 fa ; 0xf4cef boot.c:277 + cmp byte [bp-00ah], 001h ; 80 7e f6 01 ; 0xf4cf2 boot.c:283 + jne short 04d4dh ; 75 55 ; 0xf4cf6 + xor si, si ; 31 f6 ; 0xf4cf8 boot.c:286 + mov ax, 0e200h ; b8 00 e2 ; 0xf4cfa + mov es, ax ; 8e c0 ; 0xf4cfd + cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf4cff boot.c:287 + jne short 04cc6h ; 75 c0 ; 0xf4d04 + mov di, ax ; 89 c7 ; 0xf4d06 boot.c:293 + mov si, word [es:si+01ah] ; 26 8b 74 1a ; 0xf4d08 + cmp word [es:si+002h], 0506eh ; 26 81 7c 02 6e 50 ; 0xf4d0c boot.c:294 + jne short 04cc6h ; 75 b2 ; 0xf4d12 + cmp word [es:si], 05024h ; 26 81 3c 24 50 ; 0xf4d14 + jne short 04cc6h ; 75 ab ; 0xf4d19 + mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf4d1b boot.c:296 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf4d1f + mov dx, word [es:bx+002h] ; 26 8b 57 02 ; 0xf4d22 + cmp dx, 06568h ; 81 fa 68 65 ; 0xf4d26 boot.c:297 + jne short 04d4fh ; 75 23 ; 0xf4d2a + cmp ax, 07445h ; 3d 45 74 ; 0xf4d2c + jne short 04d4fh ; 75 1e ; 0xf4d2f + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4d31 boot.c:299 + xor bh, bh ; 30 ff ; 0xf4d34 + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4d36 + xor dh, dh ; 30 f6 ; 0xf4d39 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4d3b + xor ah, ah ; 30 e4 ; 0xf4d3e + call 04a66h ; e8 23 fd ; 0xf4d40 + mov word [bp-012h], strict word 00006h ; c7 46 ee 06 00 ; 0xf4d43 boot.c:300 + mov word [bp-010h], di ; 89 7e f0 ; 0xf4d48 + jmp short 04d6eh ; eb 21 ; 0xf4d4b boot.c:303 + jmp short 04d74h ; eb 25 ; 0xf4d4d + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4d4f boot.c:306 + xor bh, bh ; 30 ff ; 0xf4d52 + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4d54 + xor dh, dh ; 30 f6 ; 0xf4d57 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4d59 + xor ah, ah ; 30 e4 ; 0xf4d5c + call 04a66h ; e8 05 fd ; 0xf4d5e + sti ; fb ; 0xf4d61 boot.c:307 + mov word [bp-010h], di ; 89 7e f0 ; 0xf4d62 boot.c:308 + mov es, di ; 8e c7 ; 0xf4d65 + mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4d67 + mov word [bp-012h], ax ; 89 46 ee ; 0xf4d6b + call far [bp-012h] ; ff 5e ee ; 0xf4d6e boot.c:309 + jmp near 04cc6h ; e9 52 ff ; 0xf4d71 boot.c:312 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4d74 boot.c:320 + jne short 04da1h ; 75 27 ; 0xf4d78 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4d7a + jne short 04da1h ; 75 21 ; 0xf4d7e + mov si, 007c0h ; be c0 07 ; 0xf4d80 boot.c:321 + mov es, si ; 8e c6 ; 0xf4d83 boot.c:323 + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf4d85 + mov ax, 00201h ; b8 01 02 ; 0xf4d88 + mov DH, strict byte 000h ; b6 00 ; 0xf4d8b + mov cx, strict word 00001h ; b9 01 00 ; 0xf4d8d + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xf4d90 + int 013h ; cd 13 ; 0xf4d92 + mov ax, strict word 00000h ; b8 00 00 ; 0xf4d94 + sbb ax, strict byte 00000h ; 83 d8 00 ; 0xf4d97 + test ax, ax ; 85 c0 ; 0xf4d9a boot.c:324 + je short 04da1h ; 74 03 ; 0xf4d9c + jmp near 04cc6h ; e9 25 ff ; 0xf4d9e + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf4da1 boot.c:339 + je short 04dabh ; 74 04 ; 0xf4da5 + xor al, al ; 30 c0 ; 0xf4da7 + jmp short 04dadh ; eb 02 ; 0xf4da9 boot.c:340 + mov AL, strict byte 001h ; b0 01 ; 0xf4dab + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4dad boot.c:344 + je short 04db5h ; 74 02 ; 0xf4db1 + mov AL, strict byte 001h ; b0 01 ; 0xf4db3 boot.c:345 + xor bx, bx ; 31 db ; 0xf4db5 boot.c:58 + mov es, si ; 8e c6 ; 0xf4db7 + mov di, word [es:bx] ; 26 8b 3f ; 0xf4db9 + mov bx, strict word 00004h ; bb 04 00 ; 0xf4dbc boot.c:58 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf4dbf + cmp di, dx ; 39 d7 ; 0xf4dc2 boot.c:59 + je short 04dd5h ; 74 0f ; 0xf4dc4 + test al, al ; 84 c0 ; 0xf4dc6 + jne short 04dedh ; 75 23 ; 0xf4dc8 + mov bx, 001feh ; bb fe 01 ; 0xf4dca boot.c:58 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf4dcd + cmp ax, 0aa55h ; 3d 55 aa ; 0xf4dd0 boot.c:59 + je short 04dedh ; 74 18 ; 0xf4dd3 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4dd5 boot.c:351 + xor ah, ah ; 30 e4 ; 0xf4dd8 + push ax ; 50 ; 0xf4dda + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4ddb + xor bh, bh ; 30 ff ; 0xf4dde + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4de0 + xor dh, dh ; 30 f6 ; 0xf4de3 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4de5 + xor cx, cx ; 31 c9 ; 0xf4de8 + jmp near 04cdch ; e9 ef fe ; 0xf4dea + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4ded boot.c:357 + xor bh, bh ; 30 ff ; 0xf4df0 + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4df2 + xor dh, dh ; 30 f6 ; 0xf4df5 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4df7 + xor ah, ah ; 30 e4 ; 0xf4dfa + call 04a66h ; e8 67 fc ; 0xf4dfc + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4dff boot.c:363 + xor ah, ah ; 30 e4 ; 0xf4e02 + mov bx, ax ; 89 c3 ; 0xf4e04 + xor dx, dx ; 31 d2 ; 0xf4e06 + xor al, al ; 30 c0 ; 0xf4e08 + add ax, si ; 01 f0 ; 0xf4e0a + adc dx, bx ; 11 da ; 0xf4e0c + lea sp, [bp-004h] ; 8d 66 fc ; 0xf4e0e boot.c:364 + pop di ; 5f ; 0xf4e11 + pop si ; 5e ; 0xf4e12 + pop bp ; 5d ; 0xf4e13 + retn ; c3 ; 0xf4e14 + ; disGetNextSymbol 0xf4e15 LB 0x6043 -> off=0x0 cb=0000000000000016 uValue=00000000000f3815 'keyboard_panic' +keyboard_panic: ; 0xf4e15 LB 0x16 + push bp ; 55 ; 0xf4e15 keyboard.c:204 + mov bp, sp ; 89 e5 ; 0xf4e16 + push ax ; 50 ; 0xf4e18 keyboard.c:209 + mov ax, 005bah ; b8 ba 05 ; 0xf4e19 + push ax ; 50 ; 0xf4e1c + mov ax, strict word 00007h ; b8 07 00 ; 0xf4e1d + push ax ; 50 ; 0xf4e20 + call 0195ch ; e8 38 cb ; 0xf4e21 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4e24 + mov sp, bp ; 89 ec ; 0xf4e27 keyboard.c:210 + pop bp ; 5d ; 0xf4e29 + retn ; c3 ; 0xf4e2a + ; disGetNextSymbol 0xf4e2b LB 0x602d -> off=0x0 cb=000000000000026a uValue=00000000000f382b 'keyboard_init' +keyboard_init: ; 0xf4e2b LB 0x26a + push bp ; 55 ; 0xf4e2b keyboard.c:218 + mov bp, sp ; 89 e5 ; 0xf4e2c + mov AL, strict byte 0aah ; b0 aa ; 0xf4e2e keyboard.c:224 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4e30 + out DX, AL ; ee ; 0xf4e33 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4e34 keyboard.c:227 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4e37 keyboard.c:228 + in AL, DX ; ec ; 0xf4e3a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4e3b + test AL, strict byte 002h ; a8 02 ; 0xf4e3d + je short 04e4eh ; 74 0d ; 0xf4e3f + dec bx ; 4b ; 0xf4e41 + test bx, bx ; 85 db ; 0xf4e42 + jbe short 04e4eh ; 76 08 ; 0xf4e44 + xor al, al ; 30 c0 ; 0xf4e46 + mov dx, 00080h ; ba 80 00 ; 0xf4e48 + out DX, AL ; ee ; 0xf4e4b + jmp short 04e37h ; eb e9 ; 0xf4e4c + test bx, bx ; 85 db ; 0xf4e4e keyboard.c:229 + jne short 04e57h ; 75 05 ; 0xf4e50 + xor ax, ax ; 31 c0 ; 0xf4e52 + call 04e15h ; e8 be ff ; 0xf4e54 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4e57 keyboard.c:232 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4e5a keyboard.c:233 + in AL, DX ; ec ; 0xf4e5d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4e5e + test AL, strict byte 001h ; a8 01 ; 0xf4e60 + jne short 04e71h ; 75 0d ; 0xf4e62 + dec bx ; 4b ; 0xf4e64 + test bx, bx ; 85 db ; 0xf4e65 + jbe short 04e71h ; 76 08 ; 0xf4e67 + mov AL, strict byte 001h ; b0 01 ; 0xf4e69 + mov dx, 00080h ; ba 80 00 ; 0xf4e6b + out DX, AL ; ee ; 0xf4e6e + jmp short 04e5ah ; eb e9 ; 0xf4e6f + test bx, bx ; 85 db ; 0xf4e71 keyboard.c:234 + jne short 04e7bh ; 75 06 ; 0xf4e73 + mov ax, strict word 00001h ; b8 01 00 ; 0xf4e75 + call 04e15h ; e8 9a ff ; 0xf4e78 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4e7b keyboard.c:237 + in AL, DX ; ec ; 0xf4e7e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4e7f + cmp ax, strict word 00055h ; 3d 55 00 ; 0xf4e81 + je short 04e8ch ; 74 06 ; 0xf4e84 + mov ax, 003dfh ; b8 df 03 ; 0xf4e86 keyboard.c:238 + call 04e15h ; e8 89 ff ; 0xf4e89 + mov AL, strict byte 0abh ; b0 ab ; 0xf4e8c keyboard.c:242 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4e8e + out DX, AL ; ee ; 0xf4e91 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4e92 keyboard.c:245 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4e95 keyboard.c:246 + in AL, DX ; ec ; 0xf4e98 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4e99 + test AL, strict byte 002h ; a8 02 ; 0xf4e9b + je short 04each ; 74 0d ; 0xf4e9d + dec bx ; 4b ; 0xf4e9f + test bx, bx ; 85 db ; 0xf4ea0 + jbe short 04each ; 76 08 ; 0xf4ea2 + mov AL, strict byte 010h ; b0 10 ; 0xf4ea4 + mov dx, 00080h ; ba 80 00 ; 0xf4ea6 + out DX, AL ; ee ; 0xf4ea9 + jmp short 04e95h ; eb e9 ; 0xf4eaa + test bx, bx ; 85 db ; 0xf4eac keyboard.c:247 + jne short 04eb6h ; 75 06 ; 0xf4eae + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4eb0 + call 04e15h ; e8 5f ff ; 0xf4eb3 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4eb6 keyboard.c:250 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4eb9 keyboard.c:251 + in AL, DX ; ec ; 0xf4ebc + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4ebd + test AL, strict byte 001h ; a8 01 ; 0xf4ebf + jne short 04ed0h ; 75 0d ; 0xf4ec1 + dec bx ; 4b ; 0xf4ec3 + test bx, bx ; 85 db ; 0xf4ec4 + jbe short 04ed0h ; 76 08 ; 0xf4ec6 + mov AL, strict byte 011h ; b0 11 ; 0xf4ec8 + mov dx, 00080h ; ba 80 00 ; 0xf4eca + out DX, AL ; ee ; 0xf4ecd + jmp short 04eb9h ; eb e9 ; 0xf4ece + test bx, bx ; 85 db ; 0xf4ed0 keyboard.c:252 + jne short 04edah ; 75 06 ; 0xf4ed2 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf4ed4 + call 04e15h ; e8 3b ff ; 0xf4ed7 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4eda keyboard.c:256 + in AL, DX ; ec ; 0xf4edd + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4ede + test ax, ax ; 85 c0 ; 0xf4ee0 + je short 04eeah ; 74 06 ; 0xf4ee2 + mov ax, 003e0h ; b8 e0 03 ; 0xf4ee4 keyboard.c:257 + call 04e15h ; e8 2b ff ; 0xf4ee7 + mov AL, strict byte 0ffh ; b0 ff ; 0xf4eea keyboard.c:263 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4eec + out DX, AL ; ee ; 0xf4eef + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4ef0 keyboard.c:266 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4ef3 keyboard.c:267 + in AL, DX ; ec ; 0xf4ef6 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4ef7 + test AL, strict byte 002h ; a8 02 ; 0xf4ef9 + je short 04f0ah ; 74 0d ; 0xf4efb + dec bx ; 4b ; 0xf4efd + test bx, bx ; 85 db ; 0xf4efe + jbe short 04f0ah ; 76 08 ; 0xf4f00 + mov AL, strict byte 020h ; b0 20 ; 0xf4f02 + mov dx, 00080h ; ba 80 00 ; 0xf4f04 + out DX, AL ; ee ; 0xf4f07 + jmp short 04ef3h ; eb e9 ; 0xf4f08 + test bx, bx ; 85 db ; 0xf4f0a keyboard.c:268 + jne short 04f14h ; 75 06 ; 0xf4f0c + mov ax, strict word 00014h ; b8 14 00 ; 0xf4f0e + call 04e15h ; e8 01 ff ; 0xf4f11 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f14 keyboard.c:271 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f17 keyboard.c:272 + in AL, DX ; ec ; 0xf4f1a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f1b + test AL, strict byte 001h ; a8 01 ; 0xf4f1d + jne short 04f2eh ; 75 0d ; 0xf4f1f + dec bx ; 4b ; 0xf4f21 + test bx, bx ; 85 db ; 0xf4f22 + jbe short 04f2eh ; 76 08 ; 0xf4f24 + mov AL, strict byte 021h ; b0 21 ; 0xf4f26 + mov dx, 00080h ; ba 80 00 ; 0xf4f28 + out DX, AL ; ee ; 0xf4f2b + jmp short 04f17h ; eb e9 ; 0xf4f2c + test bx, bx ; 85 db ; 0xf4f2e keyboard.c:273 + jne short 04f38h ; 75 06 ; 0xf4f30 + mov ax, strict word 00015h ; b8 15 00 ; 0xf4f32 + call 04e15h ; e8 dd fe ; 0xf4f35 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4f38 keyboard.c:276 + in AL, DX ; ec ; 0xf4f3b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f3c + cmp ax, 000fah ; 3d fa 00 ; 0xf4f3e + je short 04f49h ; 74 06 ; 0xf4f41 + mov ax, 003e1h ; b8 e1 03 ; 0xf4f43 keyboard.c:277 + call 04e15h ; e8 cc fe ; 0xf4f46 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f49 keyboard.c:281 + in AL, DX ; ec ; 0xf4f4c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f4d + test AL, strict byte 001h ; a8 01 ; 0xf4f4f + jne short 04f5bh ; 75 08 ; 0xf4f51 + mov AL, strict byte 031h ; b0 31 ; 0xf4f53 + mov dx, 00080h ; ba 80 00 ; 0xf4f55 + out DX, AL ; ee ; 0xf4f58 + jmp short 04f49h ; eb ee ; 0xf4f59 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4f5b keyboard.c:283 + in AL, DX ; ec ; 0xf4f5e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f5f + cmp ax, 000aah ; 3d aa 00 ; 0xf4f61 + je short 04f74h ; 74 0e ; 0xf4f64 + in AL, DX ; ec ; 0xf4f66 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f67 + cmp ax, 000aah ; 3d aa 00 ; 0xf4f69 + je short 04f74h ; 74 06 ; 0xf4f6c + mov ax, 003e2h ; b8 e2 03 ; 0xf4f6e keyboard.c:284 + call 04e15h ; e8 a1 fe ; 0xf4f71 + mov AL, strict byte 0f5h ; b0 f5 ; 0xf4f74 keyboard.c:288 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4f76 + out DX, AL ; ee ; 0xf4f79 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f7a keyboard.c:291 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f7d keyboard.c:292 + in AL, DX ; ec ; 0xf4f80 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f81 + test AL, strict byte 002h ; a8 02 ; 0xf4f83 + je short 04f94h ; 74 0d ; 0xf4f85 + dec bx ; 4b ; 0xf4f87 + test bx, bx ; 85 db ; 0xf4f88 + jbe short 04f94h ; 76 08 ; 0xf4f8a + mov AL, strict byte 040h ; b0 40 ; 0xf4f8c + mov dx, 00080h ; ba 80 00 ; 0xf4f8e + out DX, AL ; ee ; 0xf4f91 + jmp short 04f7dh ; eb e9 ; 0xf4f92 + test bx, bx ; 85 db ; 0xf4f94 keyboard.c:293 + jne short 04f9eh ; 75 06 ; 0xf4f96 + mov ax, strict word 00028h ; b8 28 00 ; 0xf4f98 + call 04e15h ; e8 77 fe ; 0xf4f9b + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f9e keyboard.c:296 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4fa1 keyboard.c:297 + in AL, DX ; ec ; 0xf4fa4 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4fa5 + test AL, strict byte 001h ; a8 01 ; 0xf4fa7 + jne short 04fb8h ; 75 0d ; 0xf4fa9 + dec bx ; 4b ; 0xf4fab + test bx, bx ; 85 db ; 0xf4fac + jbe short 04fb8h ; 76 08 ; 0xf4fae + mov AL, strict byte 041h ; b0 41 ; 0xf4fb0 + mov dx, 00080h ; ba 80 00 ; 0xf4fb2 + out DX, AL ; ee ; 0xf4fb5 + jmp short 04fa1h ; eb e9 ; 0xf4fb6 + test bx, bx ; 85 db ; 0xf4fb8 keyboard.c:298 + jne short 04fc2h ; 75 06 ; 0xf4fba + mov ax, strict word 00029h ; b8 29 00 ; 0xf4fbc + call 04e15h ; e8 53 fe ; 0xf4fbf + mov dx, strict word 00060h ; ba 60 00 ; 0xf4fc2 keyboard.c:301 + in AL, DX ; ec ; 0xf4fc5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4fc6 + cmp ax, 000fah ; 3d fa 00 ; 0xf4fc8 + je short 04fd3h ; 74 06 ; 0xf4fcb + mov ax, 003e3h ; b8 e3 03 ; 0xf4fcd keyboard.c:302 + call 04e15h ; e8 42 fe ; 0xf4fd0 + mov AL, strict byte 060h ; b0 60 ; 0xf4fd3 keyboard.c:306 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4fd5 + out DX, AL ; ee ; 0xf4fd8 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4fd9 keyboard.c:309 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4fdc keyboard.c:310 + in AL, DX ; ec ; 0xf4fdf + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4fe0 + test AL, strict byte 002h ; a8 02 ; 0xf4fe2 + je short 04ff3h ; 74 0d ; 0xf4fe4 + dec bx ; 4b ; 0xf4fe6 + test bx, bx ; 85 db ; 0xf4fe7 + jbe short 04ff3h ; 76 08 ; 0xf4fe9 + mov AL, strict byte 050h ; b0 50 ; 0xf4feb + mov dx, 00080h ; ba 80 00 ; 0xf4fed + out DX, AL ; ee ; 0xf4ff0 + jmp short 04fdch ; eb e9 ; 0xf4ff1 + test bx, bx ; 85 db ; 0xf4ff3 keyboard.c:311 + jne short 04ffdh ; 75 06 ; 0xf4ff5 + mov ax, strict word 00032h ; b8 32 00 ; 0xf4ff7 + call 04e15h ; e8 18 fe ; 0xf4ffa + mov AL, strict byte 065h ; b0 65 ; 0xf4ffd keyboard.c:314 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4fff + out DX, AL ; ee ; 0xf5002 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf5003 keyboard.c:317 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5006 keyboard.c:318 + in AL, DX ; ec ; 0xf5009 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf500a + test AL, strict byte 002h ; a8 02 ; 0xf500c + je short 0501dh ; 74 0d ; 0xf500e + dec bx ; 4b ; 0xf5010 + test bx, bx ; 85 db ; 0xf5011 + jbe short 0501dh ; 76 08 ; 0xf5013 + mov AL, strict byte 060h ; b0 60 ; 0xf5015 + mov dx, 00080h ; ba 80 00 ; 0xf5017 + out DX, AL ; ee ; 0xf501a + jmp short 05006h ; eb e9 ; 0xf501b + test bx, bx ; 85 db ; 0xf501d keyboard.c:319 + jne short 05027h ; 75 06 ; 0xf501f + mov ax, strict word 0003ch ; b8 3c 00 ; 0xf5021 + call 04e15h ; e8 ee fd ; 0xf5024 + mov AL, strict byte 0f4h ; b0 f4 ; 0xf5027 keyboard.c:322 + 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:325 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5030 keyboard.c:326 + 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 070h ; b0 70 ; 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:327 + jne short 05051h ; 75 06 ; 0xf5049 + mov ax, strict word 00046h ; b8 46 00 ; 0xf504b + call 04e15h ; e8 c4 fd ; 0xf504e + mov bx, strict word 0ffffh ; bb ff ff ; 0xf5051 keyboard.c:330 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5054 keyboard.c:331 + 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 071h ; b0 71 ; 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:332 + jne short 05075h ; 75 06 ; 0xf506d + mov ax, strict word 00046h ; b8 46 00 ; 0xf506f + call 04e15h ; e8 a0 fd ; 0xf5072 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5075 keyboard.c:335 + 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, 003e4h ; b8 e4 03 ; 0xf5080 keyboard.c:336 + call 04e15h ; e8 8f fd ; 0xf5083 + mov AL, strict byte 0a8h ; b0 a8 ; 0xf5086 keyboard.c:340 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5088 + out DX, AL ; ee ; 0xf508b + xor ax, ax ; 31 c0 ; 0xf508c keyboard.c:345 + call 064ebh ; e8 5a 14 ; 0xf508e + mov sp, bp ; 89 ec ; 0xf5091 keyboard.c:346 + pop bp ; 5d ; 0xf5093 + retn ; c3 ; 0xf5094 + ; disGetNextSymbol 0xf5095 LB 0x5dc3 -> off=0x0 cb=0000000000000045 uValue=00000000000f3a95 'enqueue_key' +enqueue_key: ; 0xf5095 LB 0x45 + push bx ; 53 ; 0xf5095 keyboard.c:349 + push cx ; 51 ; 0xf5096 + push bp ; 55 ; 0xf5097 + mov bp, sp ; 89 e5 ; 0xf5098 + mov dh, al ; 88 c6 ; 0xf509a + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf509c keyboard.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf509f + mov es, ax ; 8e c0 ; 0xf50a2 + mov cx, word [es:bx] ; 26 8b 0f ; 0xf50a4 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf50a7 keyboard.c:58 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf50aa + mov bx, ax ; 89 c3 ; 0xf50ad keyboard.c:364 + inc ax ; 40 ; 0xf50af keyboard.c:365 + inc ax ; 40 ; 0xf50b0 + cmp ax, strict word 0003eh ; 3d 3e 00 ; 0xf50b1 keyboard.c:366 + jc short 050b9h ; 72 03 ; 0xf50b4 + mov ax, strict word 0001eh ; b8 1e 00 ; 0xf50b6 keyboard.c:367 + cmp ax, cx ; 39 c8 ; 0xf50b9 keyboard.c:369 + jne short 050c1h ; 75 04 ; 0xf50bb + xor ax, cx ; 31 c8 ; 0xf50bd keyboard.c:370 + jmp short 050d6h ; eb 15 ; 0xf50bf + mov cx, strict word 00040h ; b9 40 00 ; 0xf50c1 keyboard.c:53 + mov es, cx ; 8e c1 ; 0xf50c4 + mov byte [es:bx], dl ; 26 88 17 ; 0xf50c6 + inc bx ; 43 ; 0xf50c9 keyboard.c:373 + mov byte [es:bx], dh ; 26 88 37 ; 0xf50ca keyboard.c:53 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf50cd keyboard.c:63 + mov word [es:bx], ax ; 26 89 07 ; 0xf50d0 + mov ax, strict word 00001h ; b8 01 00 ; 0xf50d3 keyboard.c:375 + pop bp ; 5d ; 0xf50d6 keyboard.c:376 + pop cx ; 59 ; 0xf50d7 + pop bx ; 5b ; 0xf50d8 + retn ; c3 ; 0xf50d9 + ; disGetNextSymbol 0xf50da LB 0x5d7e -> off=0x35 cb=000000000000040a uValue=00000000000f3b0f 'int09_function' + db 0d4h, 0c6h, 0c5h, 0bah, 0b8h, 0b6h, 0aah, 09dh, 054h, 053h, 046h, 045h, 03ah, 038h, 036h, 02ah + db 01dh, 09eh, 053h, 0cah, 051h, 098h, 051h, 098h, 051h, 02fh, 052h, 073h, 051h, 0a9h, 052h, 004h + db 053h, 083h, 053h, 068h, 053h, 0feh, 051h, 098h, 051h, 098h, 051h, 082h, 052h, 08ah, 051h, 0ech + db 052h, 053h, 053h, 07eh, 053h +int09_function: ; 0xf510f LB 0x40a + push bp ; 55 ; 0xf510f keyboard.c:381 + mov bp, sp ; 89 e5 ; 0xf5110 + push si ; 56 ; 0xf5112 + push di ; 57 ; 0xf5113 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf5114 + mov al, byte [bp+014h] ; 8a 46 14 ; 0xf5117 keyboard.c:392 + mov byte [bp-006h], al ; 88 46 fa ; 0xf511a + test al, al ; 84 c0 ; 0xf511d keyboard.c:394 + jne short 0513dh ; 75 1c ; 0xf511f + mov bx, 00dcch ; bb cc 0d ; 0xf5121 keyboard.c:395 + mov cx, ds ; 8c d9 ; 0xf5124 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5126 + call 01919h ; e8 ed c7 ; 0xf5129 + mov ax, 005cdh ; b8 cd 05 ; 0xf512c + push ax ; 50 ; 0xf512f + mov ax, strict word 00004h ; b8 04 00 ; 0xf5130 + push ax ; 50 ; 0xf5133 + call 0195ch ; e8 25 c8 ; 0xf5134 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf5137 + jmp near 0527bh ; e9 3e 01 ; 0xf513a keyboard.c:396 + mov bx, strict word 00018h ; bb 18 00 ; 0xf513d keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5140 + mov es, ax ; 8e c0 ; 0xf5143 + mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5145 + mov dl, ah ; 88 e2 ; 0xf5148 keyboard.c:49 + mov bx, 00096h ; bb 96 00 ; 0xf514a keyboard.c:48 + mov dh, byte [es:bx] ; 26 8a 37 ; 0xf514d + mov byte [bp-008h], dh ; 88 76 f8 ; 0xf5150 keyboard.c:49 + mov bx, strict word 00017h ; bb 17 00 ; 0xf5153 keyboard.c:48 + mov bh, byte [es:bx] ; 26 8a 3f ; 0xf5156 + mov bl, bh ; 88 fb ; 0xf5159 keyboard.c:49 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf515b keyboard.c:404 + push CS ; 0e ; 0xf515e + pop ES ; 07 ; 0xf515f + mov cx, strict word 00012h ; b9 12 00 ; 0xf5160 + mov di, 050dah ; bf da 50 ; 0xf5163 + repne scasb ; f2 ae ; 0xf5166 + sal cx, 1 ; d1 e1 ; 0xf5168 + mov di, cx ; 89 cf ; 0xf516a + mov cx, word [cs:di+050ebh] ; 2e 8b 8d eb 50 ; 0xf516c + jmp cx ; ff e1 ; 0xf5171 + xor bl, 040h ; 80 f3 40 ; 0xf5173 keyboard.c:406 + mov si, strict word 00017h ; be 17 00 ; 0xf5176 keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5179 + mov es, ax ; 8e c0 ; 0xf517c + mov byte [es:si], bl ; 26 88 1c ; 0xf517e + or dl, 040h ; 80 ca 40 ; 0xf5181 keyboard.c:408 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5184 keyboard.c:53 + jmp near 05378h ; e9 ee 01 ; 0xf5187 + and dl, 0bfh ; 80 e2 bf ; 0xf518a keyboard.c:412 + mov bx, strict word 00018h ; bb 18 00 ; 0xf518d keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5190 + mov es, ax ; 8e c0 ; 0xf5193 + jmp near 05378h ; e9 e0 01 ; 0xf5195 + test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf5198 keyboard.c:421 + jne short 051fch ; 75 5e ; 0xf519c + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf519e keyboard.c:422 + and AL, strict byte 07fh ; 24 7f ; 0xf51a1 + cmp AL, strict byte 02ah ; 3c 2a ; 0xf51a3 + jne short 051ach ; 75 05 ; 0xf51a5 + mov ax, strict word 00002h ; b8 02 00 ; 0xf51a7 + jmp short 051afh ; eb 03 ; 0xf51aa + mov ax, strict word 00001h ; b8 01 00 ; 0xf51ac + test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xf51af keyboard.c:423 + je short 051bbh ; 74 06 ; 0xf51b3 + not al ; f6 d0 ; 0xf51b5 keyboard.c:424 + and bl, al ; 20 c3 ; 0xf51b7 + jmp short 051bdh ; eb 02 ; 0xf51b9 keyboard.c:425 + or bl, al ; 08 c3 ; 0xf51bb keyboard.c:426 + mov si, strict word 00017h ; be 17 00 ; 0xf51bd keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf51c0 + mov es, ax ; 8e c0 ; 0xf51c3 + mov byte [es:si], bl ; 26 88 1c ; 0xf51c5 + jmp short 051fch ; eb 32 ; 0xf51c8 keyboard.c:429 + test dh, 001h ; f6 c6 01 ; 0xf51ca keyboard.c:432 + jne short 0522dh ; 75 5e ; 0xf51cd + or bl, 004h ; 80 cb 04 ; 0xf51cf keyboard.c:433 + mov cx, strict word 00040h ; b9 40 00 ; 0xf51d2 keyboard.c:51 + mov ax, strict word 00017h ; b8 17 00 ; 0xf51d5 + mov dh, bl ; 88 de ; 0xf51d8 + mov bx, ax ; 89 c3 ; 0xf51da keyboard.c:53 + mov es, cx ; 8e c1 ; 0xf51dc + mov byte [es:bx], dh ; 26 88 37 ; 0xf51de + test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf51e1 keyboard.c:435 + je short 051f3h ; 74 0c ; 0xf51e5 + or byte [bp-008h], 004h ; 80 4e f8 04 ; 0xf51e7 keyboard.c:436 + mov bx, 00096h ; bb 96 00 ; 0xf51eb keyboard.c:51 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf51ee + jmp short 051f9h ; eb 06 ; 0xf51f1 keyboard.c:438 + or dl, 001h ; 80 ca 01 ; 0xf51f3 keyboard.c:439 + mov bx, strict word 00018h ; bb 18 00 ; 0xf51f6 keyboard.c:51 + mov byte [es:bx], dl ; 26 88 17 ; 0xf51f9 keyboard.c:53 + jmp short 0522dh ; eb 2f ; 0xf51fc keyboard.c:443 + test dh, 001h ; f6 c6 01 ; 0xf51fe keyboard.c:445 + jne short 0525ch ; 75 59 ; 0xf5201 + and bl, 0fbh ; 80 e3 fb ; 0xf5203 keyboard.c:446 + mov si, strict word 00017h ; be 17 00 ; 0xf5206 keyboard.c:53 + mov cx, strict word 00040h ; b9 40 00 ; 0xf5209 + mov es, cx ; 8e c1 ; 0xf520c + mov byte [es:si], bl ; 26 88 1c ; 0xf520e + test dh, 002h ; f6 c6 02 ; 0xf5211 keyboard.c:448 + je short 05224h ; 74 0e ; 0xf5214 + and dh, 0fbh ; 80 e6 fb ; 0xf5216 keyboard.c:449 + mov byte [bp-008h], dh ; 88 76 f8 ; 0xf5219 + mov bx, 00096h ; bb 96 00 ; 0xf521c keyboard.c:53 + mov byte [es:bx], dh ; 26 88 37 ; 0xf521f + jmp short 0525ch ; eb 38 ; 0xf5222 keyboard.c:451 + and dl, 0feh ; 80 e2 fe ; 0xf5224 keyboard.c:452 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5227 keyboard.c:53 + mov byte [es:bx], dl ; 26 88 17 ; 0xf522a + jmp short 0525ch ; eb 2d ; 0xf522d keyboard.c:456 + or bl, 008h ; 80 cb 08 ; 0xf522f keyboard.c:459 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5232 keyboard.c:51 + mov cx, strict word 00017h ; b9 17 00 ; 0xf5235 + mov dh, bl ; 88 de ; 0xf5238 + mov bx, cx ; 89 cb ; 0xf523a keyboard.c:53 + mov es, ax ; 8e c0 ; 0xf523c + mov byte [es:bx], dh ; 26 88 37 ; 0xf523e + test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf5241 keyboard.c:461 + je short 05253h ; 74 0c ; 0xf5245 + or byte [bp-008h], 008h ; 80 4e f8 08 ; 0xf5247 keyboard.c:462 + mov bx, 00096h ; bb 96 00 ; 0xf524b keyboard.c:51 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf524e + jmp short 05259h ; eb 06 ; 0xf5251 keyboard.c:464 + or dl, 002h ; 80 ca 02 ; 0xf5253 keyboard.c:465 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5256 keyboard.c:51 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5259 keyboard.c:53 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf525c keyboard.c:468 + and AL, strict byte 07fh ; 24 7f ; 0xf525f + cmp AL, strict byte 01dh ; 3c 1d ; 0xf5261 + je short 05269h ; 74 04 ; 0xf5263 + and byte [bp-008h], 0feh ; 80 66 f8 fe ; 0xf5265 + and byte [bp-008h], 0fdh ; 80 66 f8 fd ; 0xf5269 + mov bx, 00096h ; bb 96 00 ; 0xf526d + mov ax, strict word 00040h ; b8 40 00 ; 0xf5270 + mov es, ax ; 8e c0 ; 0xf5273 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5275 + mov byte [es:bx], al ; 26 88 07 ; 0xf5278 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf527b + pop di ; 5f ; 0xf527e + pop si ; 5e ; 0xf527f + pop bp ; 5d ; 0xf5280 + retn ; c3 ; 0xf5281 + and bl, 0f7h ; 80 e3 f7 ; 0xf5282 keyboard.c:470 + mov si, strict word 00017h ; be 17 00 ; 0xf5285 keyboard.c:53 + mov cx, strict word 00040h ; b9 40 00 ; 0xf5288 + mov es, cx ; 8e c1 ; 0xf528b + mov byte [es:si], bl ; 26 88 1c ; 0xf528d + test dh, 002h ; f6 c6 02 ; 0xf5290 keyboard.c:472 + je short 0529eh ; 74 09 ; 0xf5293 + and dh, 0f7h ; 80 e6 f7 ; 0xf5295 keyboard.c:473 + mov byte [bp-008h], dh ; 88 76 f8 ; 0xf5298 + jmp near 0521ch ; e9 7e ff ; 0xf529b keyboard.c:474 + and dl, 0fdh ; 80 e2 fd ; 0xf529e keyboard.c:476 + mov bx, strict word 00018h ; bb 18 00 ; 0xf52a1 keyboard.c:53 + mov byte [es:bx], dl ; 26 88 17 ; 0xf52a4 + jmp short 0525ch ; eb b3 ; 0xf52a7 keyboard.c:479 + test dh, 003h ; f6 c6 03 ; 0xf52a9 keyboard.c:482 + jne short 052c2h ; 75 14 ; 0xf52ac + or dl, 020h ; 80 ca 20 ; 0xf52ae keyboard.c:484 + mov ax, strict word 00040h ; b8 40 00 ; 0xf52b1 keyboard.c:51 + mov si, strict word 00018h ; be 18 00 ; 0xf52b4 + mov es, ax ; 8e c0 ; 0xf52b7 keyboard.c:53 + mov byte [es:si], dl ; 26 88 14 ; 0xf52b9 + xor bl, 020h ; 80 f3 20 ; 0xf52bc keyboard.c:486 + jmp near 05347h ; e9 85 00 ; 0xf52bf keyboard.c:487 + or dl, 008h ; 80 ca 08 ; 0xf52c2 keyboard.c:490 + mov ax, strict word 00040h ; b8 40 00 ; 0xf52c5 keyboard.c:51 + mov bx, strict word 00018h ; bb 18 00 ; 0xf52c8 + mov es, ax ; 8e c0 ; 0xf52cb keyboard.c:53 + mov byte [es:bx], dl ; 26 88 17 ; 0xf52cd + mov ax, 000aeh ; b8 ae 00 ; 0xf52d0 keyboard.c:494 + mov dx, strict word 00064h ; ba 64 00 ; 0xf52d3 + out DX, AL ; ee ; 0xf52d6 + call 0e034h ; e8 5a 8d ; 0xf52d7 keyboard.c:495 + mov bx, strict word 00018h ; bb 18 00 ; 0xf52da keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf52dd + mov es, ax ; 8e c0 ; 0xf52e0 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf52e2 + test AL, strict byte 008h ; a8 08 ; 0xf52e5 keyboard.c:49 + jne short 052dah ; 75 f1 ; 0xf52e7 + jmp near 0525ch ; e9 70 ff ; 0xf52e9 keyboard.c:502 + test dh, 003h ; f6 c6 03 ; 0xf52ec keyboard.c:504 + je short 052f4h ; 74 03 ; 0xf52ef + jmp near 0525ch ; e9 68 ff ; 0xf52f1 + and dl, 0dfh ; 80 e2 df ; 0xf52f4 keyboard.c:505 + mov bx, strict word 00018h ; bb 18 00 ; 0xf52f7 keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf52fa + mov es, ax ; 8e c0 ; 0xf52fd + mov byte [es:bx], dl ; 26 88 17 ; 0xf52ff + jmp short 052f1h ; eb ed ; 0xf5302 keyboard.c:508 + test dh, 002h ; f6 c6 02 ; 0xf5304 keyboard.c:511 + je short 05336h ; 74 2d ; 0xf5307 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5309 keyboard.c:56 + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf530c + mov es, ax ; 8e c0 ; 0xf530f keyboard.c:58 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf5311 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf5314 keyboard.c:61 + mov word [es:bx], ax ; 26 89 07 ; 0xf5317 keyboard.c:63 + mov bx, strict word 00071h ; bb 71 00 ; 0xf531a keyboard.c:51 + mov AL, strict byte 080h ; b0 80 ; 0xf531d + mov byte [es:bx], al ; 26 88 07 ; 0xf531f keyboard.c:53 + mov ax, 000aeh ; b8 ae 00 ; 0xf5322 keyboard.c:516 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5325 + out DX, AL ; ee ; 0xf5328 + push bp ; 55 ; 0xf5329 keyboard.c:517 + int 01bh ; cd 1b ; 0xf532a + pop bp ; 5d ; 0xf532c + xor dx, dx ; 31 d2 ; 0xf532d keyboard.c:518 + xor ax, ax ; 31 c0 ; 0xf532f + call 05095h ; e8 61 fd ; 0xf5331 + jmp short 052f1h ; eb bb ; 0xf5334 keyboard.c:519 + or dl, 010h ; 80 ca 10 ; 0xf5336 keyboard.c:520 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5339 keyboard.c:51 + mov es, ax ; 8e c0 ; 0xf533c + mov si, strict word 00018h ; be 18 00 ; 0xf533e + mov byte [es:si], dl ; 26 88 14 ; 0xf5341 keyboard.c:53 + xor bl, 010h ; 80 f3 10 ; 0xf5344 keyboard.c:522 + mov ax, strict word 00017h ; b8 17 00 ; 0xf5347 keyboard.c:51 + mov dl, bl ; 88 da ; 0xf534a + mov bx, ax ; 89 c3 ; 0xf534c keyboard.c:53 + mov byte [es:bx], dl ; 26 88 17 ; 0xf534e + jmp short 052f1h ; eb 9e ; 0xf5351 keyboard.c:525 + test dh, 002h ; f6 c6 02 ; 0xf5353 keyboard.c:528 + jne short 052f1h ; 75 99 ; 0xf5356 + and dl, 0efh ; 80 e2 ef ; 0xf5358 keyboard.c:529 + mov bx, strict word 00018h ; bb 18 00 ; 0xf535b keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf535e + mov es, ax ; 8e c0 ; 0xf5361 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5363 + jmp short 052f1h ; eb 89 ; 0xf5366 keyboard.c:532 + test ah, 004h ; f6 c4 04 ; 0xf5368 keyboard.c:535 + jne short 052f1h ; 75 84 ; 0xf536b + or dl, 004h ; 80 ca 04 ; 0xf536d keyboard.c:536 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5370 keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5373 + mov es, ax ; 8e c0 ; 0xf5376 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5378 + jmp near 0525ch ; e9 de fe ; 0xf537b keyboard.c:540 + and dl, 0fbh ; 80 e2 fb ; 0xf537e keyboard.c:543 + jmp short 05370h ; eb ed ; 0xf5381 keyboard.c:544 + mov al, bh ; 88 f8 ; 0xf5383 keyboard.c:549 + and AL, strict byte 00ch ; 24 0c ; 0xf5385 + cmp AL, strict byte 00ch ; 3c 0c ; 0xf5387 + jne short 0539eh ; 75 13 ; 0xf5389 + mov ax, strict word 00040h ; b8 40 00 ; 0xf538b keyboard.c:61 + mov si, strict word 00072h ; be 72 00 ; 0xf538e + mov cx, 01234h ; b9 34 12 ; 0xf5391 + mov es, ax ; 8e c0 ; 0xf5394 keyboard.c:63 + mov word [es:si], cx ; 26 89 0c ; 0xf5396 + jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xf5399 keyboard.c:552 + test dl, 008h ; f6 c2 08 ; 0xf539e keyboard.c:558 + je short 053b4h ; 74 11 ; 0xf53a1 + and dl, 0f7h ; 80 e2 f7 ; 0xf53a3 keyboard.c:560 + mov bx, strict word 00018h ; bb 18 00 ; 0xf53a6 keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf53a9 + mov es, ax ; 8e c0 ; 0xf53ac + mov byte [es:bx], dl ; 26 88 17 ; 0xf53ae + jmp near 0527bh ; e9 c7 fe ; 0xf53b1 keyboard.c:562 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf53b4 keyboard.c:565 + test AL, strict byte 080h ; a8 80 ; 0xf53b7 + je short 053e9h ; 74 2e ; 0xf53b9 + cmp AL, strict byte 0fah ; 3c fa ; 0xf53bb keyboard.c:567 + jne short 053cfh ; 75 10 ; 0xf53bd + mov bx, 00097h ; bb 97 00 ; 0xf53bf keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf53c2 + mov es, ax ; 8e c0 ; 0xf53c5 + mov ah, byte [es:bx] ; 26 8a 27 ; 0xf53c7 + or ah, 010h ; 80 cc 10 ; 0xf53ca keyboard.c:49 + jmp short 053e4h ; eb 15 ; 0xf53cd keyboard.c:570 + cmp AL, strict byte 0feh ; 3c fe ; 0xf53cf + je short 053d6h ; 74 03 ; 0xf53d1 + jmp near 0525ch ; e9 86 fe ; 0xf53d3 + mov bx, 00097h ; bb 97 00 ; 0xf53d6 keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf53d9 + mov es, ax ; 8e c0 ; 0xf53dc + mov ah, byte [es:bx] ; 26 8a 27 ; 0xf53de + or ah, 020h ; 80 cc 20 ; 0xf53e1 keyboard.c:49 + mov byte [es:bx], ah ; 26 88 27 ; 0xf53e4 keyboard.c:53 + jmp short 053d3h ; eb ea ; 0xf53e7 keyboard.c:574 + cmp byte [bp-006h], 058h ; 80 7e fa 58 ; 0xf53e9 keyboard.c:576 + jbe short 05411h ; 76 22 ; 0xf53ed + mov bx, 00dcch ; bb cc 0d ; 0xf53ef keyboard.c:577 + mov cx, ds ; 8c d9 ; 0xf53f2 + mov ax, strict word 00004h ; b8 04 00 ; 0xf53f4 + call 01919h ; e8 1f c5 ; 0xf53f7 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf53fa + xor ah, ah ; 30 e4 ; 0xf53fd + push ax ; 50 ; 0xf53ff + mov ax, 005e7h ; b8 e7 05 ; 0xf5400 + push ax ; 50 ; 0xf5403 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5404 + push ax ; 50 ; 0xf5407 + call 0195ch ; e8 51 c5 ; 0xf5408 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf540b + jmp near 0527bh ; e9 6a fe ; 0xf540e keyboard.c:578 + test bl, 008h ; f6 c3 08 ; 0xf5411 keyboard.c:580 + je short 05430h ; 74 1a ; 0xf5414 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5416 keyboard.c:581 + xor ah, ah ; 30 e4 ; 0xf5419 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf541b + imul dx ; f7 ea ; 0xf541e + mov si, ax ; 89 c6 ; 0xf5420 + mov al, byte [si+00e20h] ; 8a 84 20 0e ; 0xf5422 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf5426 + mov al, byte [si+00e21h] ; 8a 84 21 0e ; 0xf5429 keyboard.c:582 + jmp near 054e4h ; e9 b4 00 ; 0xf542d keyboard.c:583 + test bl, 004h ; f6 c3 04 ; 0xf5430 + je short 0544fh ; 74 1a ; 0xf5433 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5435 keyboard.c:584 + xor ah, ah ; 30 e4 ; 0xf5438 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf543a + imul dx ; f7 ea ; 0xf543d + mov si, ax ; 89 c6 ; 0xf543f + mov al, byte [si+00e1eh] ; 8a 84 1e 0e ; 0xf5441 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf5445 + mov al, byte [si+00e1fh] ; 8a 84 1f 0e ; 0xf5448 keyboard.c:585 + jmp near 054e4h ; e9 95 00 ; 0xf544c keyboard.c:586 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf544f + and AL, strict byte 002h ; 24 02 ; 0xf5452 + test al, al ; 84 c0 ; 0xf5454 + jbe short 05476h ; 76 1e ; 0xf5456 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5458 + cmp AL, strict byte 047h ; 3c 47 ; 0xf545b + jc short 05476h ; 72 17 ; 0xf545d + cmp AL, strict byte 053h ; 3c 53 ; 0xf545f + jnbe short 05476h ; 77 13 ; 0xf5461 + mov byte [bp-00ah], 0e0h ; c6 46 f6 e0 ; 0xf5463 keyboard.c:588 + xor ah, ah ; 30 e4 ; 0xf5467 keyboard.c:589 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf5469 + imul dx ; f7 ea ; 0xf546c + mov bx, ax ; 89 c3 ; 0xf546e + mov al, byte [bx+00e1bh] ; 8a 87 1b 0e ; 0xf5470 + jmp short 054e4h ; eb 6e ; 0xf5474 keyboard.c:590 + test bl, 003h ; f6 c3 03 ; 0xf5476 + je short 054b2h ; 74 37 ; 0xf5479 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf547b keyboard.c:594 + xor ah, ah ; 30 e4 ; 0xf547e + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf5480 + imul dx ; f7 ea ; 0xf5483 + mov si, ax ; 89 c6 ; 0xf5485 + mov al, byte [si+00e22h] ; 8a 84 22 0e ; 0xf5487 + xor ah, ah ; 30 e4 ; 0xf548b + mov dl, bl ; 88 da ; 0xf548d + xor dh, dh ; 30 f6 ; 0xf548f + test dx, ax ; 85 c2 ; 0xf5491 + je short 054a2h ; 74 0d ; 0xf5493 + mov al, byte [si+00e1ah] ; 8a 84 1a 0e ; 0xf5495 keyboard.c:595 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf5499 + mov al, byte [si+00e1bh] ; 8a 84 1b 0e ; 0xf549c keyboard.c:596 + jmp short 054adh ; eb 0b ; 0xf54a0 keyboard.c:597 + mov al, byte [si+00e1ch] ; 8a 84 1c 0e ; 0xf54a2 keyboard.c:598 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf54a6 + mov al, byte [si+00e1dh] ; 8a 84 1d 0e ; 0xf54a9 keyboard.c:599 + mov byte [bp-006h], al ; 88 46 fa ; 0xf54ad + jmp short 054e7h ; eb 35 ; 0xf54b0 keyboard.c:601 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf54b2 keyboard.c:603 + xor ah, ah ; 30 e4 ; 0xf54b5 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf54b7 + imul dx ; f7 ea ; 0xf54ba + mov si, ax ; 89 c6 ; 0xf54bc + mov dl, byte [si+00e22h] ; 8a 94 22 0e ; 0xf54be + xor dh, dh ; 30 f6 ; 0xf54c2 + mov al, bl ; 88 d8 ; 0xf54c4 + xor ah, ah ; 30 e4 ; 0xf54c6 + test ax, dx ; 85 d0 ; 0xf54c8 + je short 054d9h ; 74 0d ; 0xf54ca + mov al, byte [si+00e1ch] ; 8a 84 1c 0e ; 0xf54cc keyboard.c:604 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf54d0 + mov al, byte [si+00e1dh] ; 8a 84 1d 0e ; 0xf54d3 keyboard.c:605 + jmp short 054e4h ; eb 0b ; 0xf54d7 keyboard.c:606 + mov al, byte [si+00e1ah] ; 8a 84 1a 0e ; 0xf54d9 keyboard.c:607 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf54dd + mov al, byte [si+00e1bh] ; 8a 84 1b 0e ; 0xf54e0 keyboard.c:608 + mov byte [bp-006h], al ; 88 46 fa ; 0xf54e4 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf54e7 keyboard.c:611 + jne short 0550ch ; 75 1f ; 0xf54eb + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf54ed + jne short 0550ch ; 75 19 ; 0xf54f1 + mov bx, 00dcch ; bb cc 0d ; 0xf54f3 keyboard.c:612 + mov cx, ds ; 8c d9 ; 0xf54f6 + mov ax, strict word 00004h ; b8 04 00 ; 0xf54f8 + call 01919h ; e8 1b c4 ; 0xf54fb + mov ax, 0061eh ; b8 1e 06 ; 0xf54fe + push ax ; 50 ; 0xf5501 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5502 + push ax ; 50 ; 0xf5505 + call 0195ch ; e8 53 c4 ; 0xf5506 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf5509 + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf550c keyboard.c:614 + xor dh, dh ; 30 f6 ; 0xf550f + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5511 + xor ah, ah ; 30 e4 ; 0xf5514 + jmp near 05331h ; e9 18 fe ; 0xf5516 + ; disGetNextSymbol 0xf5519 LB 0x593f -> off=0x0 cb=0000000000000061 uValue=00000000000f3f19 'dequeue_key' +dequeue_key: ; 0xf5519 LB 0x61 + push si ; 56 ; 0xf5519 keyboard.c:624 + push di ; 57 ; 0xf551a + push bp ; 55 ; 0xf551b + mov bp, sp ; 89 e5 ; 0xf551c + push ax ; 50 ; 0xf551e + mov si, ax ; 89 c6 ; 0xf551f + mov word [bp-002h], bx ; 89 5e fe ; 0xf5521 + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5524 keyboard.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5527 + mov es, ax ; 8e c0 ; 0xf552a + mov bx, word [es:bx] ; 26 8b 1f ; 0xf552c + mov di, strict word 0001ch ; bf 1c 00 ; 0xf552f keyboard.c:58 + mov ax, word [es:di] ; 26 8b 05 ; 0xf5532 + cmp bx, ax ; 39 c3 ; 0xf5535 keyboard.c:640 + je short 05570h ; 74 37 ; 0xf5537 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf5539 keyboard.c:48 + lea di, [bx+001h] ; 8d 7f 01 ; 0xf553c keyboard.c:642 + mov ah, byte [es:di] ; 26 8a 25 ; 0xf553f keyboard.c:48 + mov es, cx ; 8e c1 ; 0xf5542 keyboard.c:643 + mov di, word [bp-002h] ; 8b 7e fe ; 0xf5544 + mov byte [es:di], al ; 26 88 05 ; 0xf5547 + mov es, dx ; 8e c2 ; 0xf554a keyboard.c:644 + mov byte [es:si], ah ; 26 88 24 ; 0xf554c + cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf554f keyboard.c:647 + je short 0556bh ; 74 16 ; 0xf5553 + lea si, [bx+002h] ; 8d 77 02 ; 0xf5555 keyboard.c:648 + cmp si, strict byte 0003eh ; 83 fe 3e ; 0xf5558 keyboard.c:649 + jc short 05560h ; 72 03 ; 0xf555b + mov si, strict word 0001eh ; be 1e 00 ; 0xf555d keyboard.c:650 + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5560 keyboard.c:63 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5563 + mov es, ax ; 8e c0 ; 0xf5566 + mov word [es:bx], si ; 26 89 37 ; 0xf5568 + mov ax, strict word 00001h ; b8 01 00 ; 0xf556b keyboard.c:653 + jmp short 05572h ; eb 02 ; 0xf556e + xor ax, ax ; 31 c0 ; 0xf5570 keyboard.c:656 + mov sp, bp ; 89 ec ; 0xf5572 keyboard.c:658 + pop bp ; 5d ; 0xf5574 + pop di ; 5f ; 0xf5575 + pop si ; 5e ; 0xf5576 + retn 00002h ; c2 02 00 ; 0xf5577 + ; disGetNextSymbol 0xf557a LB 0x58de -> off=0x23 cb=00000000000002f4 uValue=00000000000f3f9d 'int16_function' + db 0a2h, 092h, 012h, 011h, 010h, 00ah, 009h, 005h, 002h, 001h, 000h, 09fh, 056h, 05ah, 056h, 0f0h + db 056h, 035h, 057h, 04ah, 057h, 071h, 057h, 07bh, 057h, 0eah, 057h, 026h, 058h, 057h, 058h, 086h + db 058h, 0e9h, 056h +int16_function: ; 0xf559d LB 0x2f4 + push bp ; 55 ; 0xf559d keyboard.c:675 + mov bp, sp ; 89 e5 ; 0xf559e + push si ; 56 ; 0xf55a0 + push di ; 57 ; 0xf55a1 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf55a2 + mov bx, strict word 00017h ; bb 17 00 ; 0xf55a5 keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf55a8 + mov es, ax ; 8e c0 ; 0xf55ab + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf55ad + mov bh, dl ; 88 d7 ; 0xf55b0 keyboard.c:49 + mov si, 00097h ; be 97 00 ; 0xf55b2 keyboard.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf55b5 + mov bl, al ; 88 c3 ; 0xf55b8 keyboard.c:49 + xor dh, dh ; 30 f6 ; 0xf55ba keyboard.c:684 + mov CL, strict byte 004h ; b1 04 ; 0xf55bc + sar dx, CL ; d3 fa ; 0xf55be + and dl, 007h ; 80 e2 07 ; 0xf55c0 + and AL, strict byte 007h ; 24 07 ; 0xf55c3 + xor ah, ah ; 30 e4 ; 0xf55c5 + xor al, dl ; 30 d0 ; 0xf55c7 + test ax, ax ; 85 c0 ; 0xf55c9 + je short 05639h ; 74 6c ; 0xf55cb + cli ; fa ; 0xf55cd keyboard.c:685 + mov AL, strict byte 0edh ; b0 ed ; 0xf55ce keyboard.c:686 + mov dx, strict word 00060h ; ba 60 00 ; 0xf55d0 + out DX, AL ; ee ; 0xf55d3 + mov dx, strict word 00064h ; ba 64 00 ; 0xf55d4 keyboard.c:687 + in AL, DX ; ec ; 0xf55d7 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf55d8 + test AL, strict byte 001h ; a8 01 ; 0xf55da + jne short 055e6h ; 75 08 ; 0xf55dc + mov AL, strict byte 021h ; b0 21 ; 0xf55de + mov dx, 00080h ; ba 80 00 ; 0xf55e0 + out DX, AL ; ee ; 0xf55e3 + jmp short 055d4h ; eb ee ; 0xf55e4 + mov dx, strict word 00060h ; ba 60 00 ; 0xf55e6 keyboard.c:688 + in AL, DX ; ec ; 0xf55e9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf55ea + cmp ax, 000fah ; 3d fa 00 ; 0xf55ec + jne short 05638h ; 75 47 ; 0xf55ef + and bl, 0c8h ; 80 e3 c8 ; 0xf55f1 keyboard.c:689 + mov al, bh ; 88 f8 ; 0xf55f4 keyboard.c:690 + xor ah, ah ; 30 e4 ; 0xf55f6 + mov CL, strict byte 004h ; b1 04 ; 0xf55f8 + sar ax, CL ; d3 f8 ; 0xf55fa + mov cx, ax ; 89 c1 ; 0xf55fc + xor ch, ah ; 30 e5 ; 0xf55fe + and cl, 007h ; 80 e1 07 ; 0xf5600 + mov al, bl ; 88 d8 ; 0xf5603 + xor ah, ah ; 30 e4 ; 0xf5605 + mov dx, ax ; 89 c2 ; 0xf5607 + or dx, cx ; 09 ca ; 0xf5609 + mov bl, dl ; 88 d3 ; 0xf560b + mov al, dl ; 88 d0 ; 0xf560d keyboard.c:691 + and AL, strict byte 007h ; 24 07 ; 0xf560f + mov dx, strict word 00060h ; ba 60 00 ; 0xf5611 + out DX, AL ; ee ; 0xf5614 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5615 keyboard.c:692 + in AL, DX ; ec ; 0xf5618 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5619 + test AL, strict byte 001h ; a8 01 ; 0xf561b + jne short 05627h ; 75 08 ; 0xf561d + mov AL, strict byte 021h ; b0 21 ; 0xf561f keyboard.c:693 + mov dx, 00080h ; ba 80 00 ; 0xf5621 + out DX, AL ; ee ; 0xf5624 + jmp short 05615h ; eb ee ; 0xf5625 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5627 keyboard.c:694 + in AL, DX ; ec ; 0xf562a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf562b + mov si, 00097h ; be 97 00 ; 0xf562d keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5630 + mov es, ax ; 8e c0 ; 0xf5633 + mov byte [es:si], bl ; 26 88 1c ; 0xf5635 + sti ; fb ; 0xf5638 keyboard.c:697 + mov CL, strict byte 008h ; b1 08 ; 0xf5639 keyboard.c:700 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf563b + shr ax, CL ; d3 e8 ; 0xf563e + cmp ax, 000a2h ; 3d a2 00 ; 0xf5640 + jnbe short 0569fh ; 77 5a ; 0xf5643 + push CS ; 0e ; 0xf5645 + pop ES ; 07 ; 0xf5646 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf5647 + mov di, 0557ah ; bf 7a 55 ; 0xf564a + repne scasb ; f2 ae ; 0xf564d + sal cx, 1 ; d1 e1 ; 0xf564f + mov di, cx ; 89 cf ; 0xf5651 + mov ax, word [cs:di+05585h] ; 2e 8b 85 85 55 ; 0xf5653 + jmp ax ; ff e0 ; 0xf5658 + mov ax, strict word 00001h ; b8 01 00 ; 0xf565a keyboard.c:702 + push ax ; 50 ; 0xf565d + mov cx, ss ; 8c d1 ; 0xf565e + lea bx, [bp-008h] ; 8d 5e f8 ; 0xf5660 + mov dx, ss ; 8c d2 ; 0xf5663 + lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5665 + call 05519h ; e8 ae fe ; 0xf5668 + test ax, ax ; 85 c0 ; 0xf566b + jne short 0567dh ; 75 0e ; 0xf566d + mov ax, 00655h ; b8 55 06 ; 0xf566f keyboard.c:703 + push ax ; 50 ; 0xf5672 + mov ax, strict word 00007h ; b8 07 00 ; 0xf5673 + push ax ; 50 ; 0xf5676 + call 0195ch ; e8 e2 c2 ; 0xf5677 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf567a + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf567d keyboard.c:705 + je short 05689h ; 74 06 ; 0xf5681 + cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf5683 + je short 0568fh ; 74 06 ; 0xf5687 + cmp byte [bp-008h], 0e0h ; 80 7e f8 e0 ; 0xf5689 keyboard.c:707 + jne short 05693h ; 75 04 ; 0xf568d + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf568f keyboard.c:708 + mov ah, byte [bp-00ah] ; 8a 66 f6 ; 0xf5693 keyboard.c:709 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5696 + mov word [bp+012h], ax ; 89 46 12 ; 0xf5699 + jmp near 056e9h ; e9 4a 00 ; 0xf569c keyboard.c:710 + mov bx, 00dcch ; bb cc 0d ; 0xf569f + mov cx, ds ; 8c d9 ; 0xf56a2 + mov ax, strict word 00004h ; b8 04 00 ; 0xf56a4 + call 01919h ; e8 6f c2 ; 0xf56a7 + mov CL, strict byte 008h ; b1 08 ; 0xf56aa + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf56ac + shr ax, CL ; d3 e8 ; 0xf56af + push ax ; 50 ; 0xf56b1 + mov ax, 00679h ; b8 79 06 ; 0xf56b2 + push ax ; 50 ; 0xf56b5 + mov ax, strict word 00004h ; b8 04 00 ; 0xf56b6 + push ax ; 50 ; 0xf56b9 + call 0195ch ; e8 9f c2 ; 0xf56ba + add sp, strict byte 00006h ; 83 c4 06 ; 0xf56bd + mov bx, 00dcch ; bb cc 0d ; 0xf56c0 + mov cx, ds ; 8c d9 ; 0xf56c3 + mov ax, strict word 00004h ; b8 04 00 ; 0xf56c5 + call 01919h ; e8 4e c2 ; 0xf56c8 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf56cb + push ax ; 50 ; 0xf56ce + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf56cf + push ax ; 50 ; 0xf56d2 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf56d3 + push ax ; 50 ; 0xf56d6 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf56d7 + push ax ; 50 ; 0xf56da + mov ax, 006a1h ; b8 a1 06 ; 0xf56db + push ax ; 50 ; 0xf56de + mov ax, strict word 00004h ; b8 04 00 ; 0xf56df + push ax ; 50 ; 0xf56e2 + call 0195ch ; e8 76 c2 ; 0xf56e3 + add sp, strict byte 0000ch ; 83 c4 0c ; 0xf56e6 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf56e9 + pop di ; 5f ; 0xf56ec + pop si ; 5e ; 0xf56ed + pop bp ; 5d ; 0xf56ee + retn ; c3 ; 0xf56ef + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf56f0 keyboard.c:714 + mov word [bp+01eh], ax ; 89 46 1e ; 0xf56f3 + xor ax, ax ; 31 c0 ; 0xf56f6 keyboard.c:715 + push ax ; 50 ; 0xf56f8 + mov cx, ss ; 8c d1 ; 0xf56f9 + lea bx, [bp-008h] ; 8d 5e f8 ; 0xf56fb + mov dx, ss ; 8c d2 ; 0xf56fe + lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5700 + call 05519h ; e8 13 fe ; 0xf5703 + test ax, ax ; 85 c0 ; 0xf5706 + jne short 05710h ; 75 06 ; 0xf5708 + or word [bp+01eh], strict byte 00040h ; 83 4e 1e 40 ; 0xf570a keyboard.c:716 + jmp short 056e9h ; eb d9 ; 0xf570e keyboard.c:717 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf5710 keyboard.c:719 + je short 0571ch ; 74 06 ; 0xf5714 + cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf5716 + je short 05722h ; 74 06 ; 0xf571a + cmp byte [bp-008h], 0e0h ; 80 7e f8 e0 ; 0xf571c keyboard.c:721 + jne short 05726h ; 75 04 ; 0xf5720 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf5722 keyboard.c:722 + mov dh, byte [bp-00ah] ; 8a 76 f6 ; 0xf5726 keyboard.c:723 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf5729 + mov word [bp+012h], dx ; 89 56 12 ; 0xf572c + and word [bp+01eh], strict byte 0ffbfh ; 83 66 1e bf ; 0xf572f keyboard.c:724 + jmp short 056e9h ; eb b4 ; 0xf5733 keyboard.c:725 + mov bx, strict word 00017h ; bb 17 00 ; 0xf5735 keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5738 + mov es, ax ; 8e c0 ; 0xf573b + mov al, byte [es:bx] ; 26 8a 07 ; 0xf573d + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5740 keyboard.c:729 + mov dl, al ; 88 c2 ; 0xf5743 + mov word [bp+012h], dx ; 89 56 12 ; 0xf5745 + jmp short 056e9h ; eb 9f ; 0xf5748 keyboard.c:730 + mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf574a keyboard.c:733 + xor dh, dh ; 30 f6 ; 0xf574d + mov CL, strict byte 008h ; b1 08 ; 0xf574f + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5751 + shr ax, CL ; d3 e8 ; 0xf5754 + xor ah, ah ; 30 e4 ; 0xf5756 + call 05095h ; e8 3a f9 ; 0xf5758 + test ax, ax ; 85 c0 ; 0xf575b + jne short 05769h ; 75 0a ; 0xf575d + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf575f keyboard.c:734 + xor al, al ; 30 c0 ; 0xf5762 + or AL, strict byte 001h ; 0c 01 ; 0xf5764 + jmp near 05699h ; e9 30 ff ; 0xf5766 + and word [bp+012h], 0ff00h ; 81 66 12 00 ff ; 0xf5769 keyboard.c:737 + jmp near 056e9h ; e9 78 ff ; 0xf576e keyboard.c:739 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5771 keyboard.c:752 + xor al, al ; 30 c0 ; 0xf5774 + or AL, strict byte 030h ; 0c 30 ; 0xf5776 + jmp near 05699h ; e9 1e ff ; 0xf5778 + mov byte [bp-006h], 002h ; c6 46 fa 02 ; 0xf577b keyboard.c:756 + xor cx, cx ; 31 c9 ; 0xf577f keyboard.c:757 + cli ; fa ; 0xf5781 keyboard.c:759 + mov AL, strict byte 0f2h ; b0 f2 ; 0xf5782 keyboard.c:760 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5784 + out DX, AL ; ee ; 0xf5787 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf5788 keyboard.c:762 + mov dx, strict word 00064h ; ba 64 00 ; 0xf578b keyboard.c:763 + in AL, DX ; ec ; 0xf578e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf578f + test AL, strict byte 001h ; a8 01 ; 0xf5791 + jne short 057a2h ; 75 0d ; 0xf5793 + dec bx ; 4b ; 0xf5795 + test bx, bx ; 85 db ; 0xf5796 + jbe short 057a2h ; 76 08 ; 0xf5798 + mov dx, 00080h ; ba 80 00 ; 0xf579a keyboard.c:764 + in AL, DX ; ec ; 0xf579d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf579e + jmp short 0578bh ; eb e9 ; 0xf57a0 + test bx, bx ; 85 db ; 0xf57a2 keyboard.c:765 + jbe short 057e4h ; 76 3e ; 0xf57a4 + mov dx, strict word 00060h ; ba 60 00 ; 0xf57a6 keyboard.c:766 + in AL, DX ; ec ; 0xf57a9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf57aa + cmp ax, 000fah ; 3d fa 00 ; 0xf57ac + jne short 057e4h ; 75 33 ; 0xf57af + mov bx, strict word 0ffffh ; bb ff ff ; 0xf57b1 keyboard.c:768 + mov dx, strict word 00064h ; ba 64 00 ; 0xf57b4 keyboard.c:769 + in AL, DX ; ec ; 0xf57b7 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf57b8 + test AL, strict byte 001h ; a8 01 ; 0xf57ba + jne short 057cbh ; 75 0d ; 0xf57bc + dec bx ; 4b ; 0xf57be + test bx, bx ; 85 db ; 0xf57bf + jbe short 057cbh ; 76 08 ; 0xf57c1 + mov dx, 00080h ; ba 80 00 ; 0xf57c3 keyboard.c:770 + in AL, DX ; ec ; 0xf57c6 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf57c7 + jmp short 057b4h ; eb e9 ; 0xf57c9 + test bx, bx ; 85 db ; 0xf57cb keyboard.c:771 + jbe short 057dbh ; 76 0c ; 0xf57cd + mov bl, ch ; 88 eb ; 0xf57cf keyboard.c:772 + mov dx, strict word 00060h ; ba 60 00 ; 0xf57d1 keyboard.c:773 + in AL, DX ; ec ; 0xf57d4 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf57d5 + mov ch, al ; 88 c5 ; 0xf57d7 + mov cl, bl ; 88 d9 ; 0xf57d9 + dec byte [bp-006h] ; fe 4e fa ; 0xf57db keyboard.c:775 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf57de + jnbe short 057b1h ; 77 cd ; 0xf57e2 + mov word [bp+00ch], cx ; 89 4e 0c ; 0xf57e4 keyboard.c:778 + jmp near 056e9h ; e9 ff fe ; 0xf57e7 keyboard.c:779 + mov ax, strict word 00001h ; b8 01 00 ; 0xf57ea keyboard.c:782 + push ax ; 50 ; 0xf57ed + mov cx, ss ; 8c d1 ; 0xf57ee + lea bx, [bp-008h] ; 8d 5e f8 ; 0xf57f0 + mov dx, ss ; 8c d2 ; 0xf57f3 + lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf57f5 + call 05519h ; e8 1e fd ; 0xf57f8 + test ax, ax ; 85 c0 ; 0xf57fb + jne short 0580dh ; 75 0e ; 0xf57fd + mov ax, 00655h ; b8 55 06 ; 0xf57ff keyboard.c:783 + push ax ; 50 ; 0xf5802 + mov ax, strict word 00007h ; b8 07 00 ; 0xf5803 + push ax ; 50 ; 0xf5806 + call 0195ch ; e8 52 c1 ; 0xf5807 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf580a + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf580d keyboard.c:785 + je short 0581dh ; 74 0a ; 0xf5811 + cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf5813 + jne short 0581dh ; 75 04 ; 0xf5817 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf5819 keyboard.c:786 + mov dh, byte [bp-00ah] ; 8a 76 f6 ; 0xf581d keyboard.c:787 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf5820 + jmp near 05745h ; e9 1f ff ; 0xf5823 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf5826 keyboard.c:792 + mov word [bp+01eh], ax ; 89 46 1e ; 0xf5829 + xor ax, ax ; 31 c0 ; 0xf582c keyboard.c:793 + push ax ; 50 ; 0xf582e + mov cx, ss ; 8c d1 ; 0xf582f + lea bx, [bp-008h] ; 8d 5e f8 ; 0xf5831 + mov dx, ss ; 8c d2 ; 0xf5834 + lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5836 + call 05519h ; e8 dd fc ; 0xf5839 + test ax, ax ; 85 c0 ; 0xf583c + jne short 05843h ; 75 03 ; 0xf583e + jmp near 0570ah ; e9 c7 fe ; 0xf5840 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf5843 keyboard.c:797 + jne short 0584ch ; 75 03 ; 0xf5847 + jmp near 05726h ; e9 da fe ; 0xf5849 + cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf584c + jne short 05855h ; 75 03 ; 0xf5850 + jmp near 05722h ; e9 cd fe ; 0xf5852 + jmp short 05849h ; eb f2 ; 0xf5855 + mov bx, strict word 00017h ; bb 17 00 ; 0xf5857 keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf585a + mov es, ax ; 8e c0 ; 0xf585d + mov al, byte [es:bx] ; 26 8a 07 ; 0xf585f + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5862 keyboard.c:805 + mov dl, al ; 88 c2 ; 0xf5865 + mov word [bp+012h], dx ; 89 56 12 ; 0xf5867 + mov bx, strict word 00018h ; bb 18 00 ; 0xf586a keyboard.c:48 + mov bh, byte [es:bx] ; 26 8a 3f ; 0xf586d + and bh, 073h ; 80 e7 73 ; 0xf5870 keyboard.c:49 + mov si, 00096h ; be 96 00 ; 0xf5873 keyboard.c:48 + mov ah, byte [es:si] ; 26 8a 24 ; 0xf5876 + and ah, 00ch ; 80 e4 0c ; 0xf5879 keyboard.c:49 + or ah, bh ; 08 fc ; 0xf587c + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf587e keyboard.c:808 + mov dh, ah ; 88 e6 ; 0xf5881 + jmp near 05745h ; e9 bf fe ; 0xf5883 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5886 keyboard.c:813 + xor ah, ah ; 30 e4 ; 0xf5889 + or ah, 080h ; 80 cc 80 ; 0xf588b + jmp near 05699h ; e9 08 fe ; 0xf588e + ; disGetNextSymbol 0xf5891 LB 0x55c7 -> off=0x0 cb=00000000000000b9 uValue=00000000000f4291 'set_geom_lba' +set_geom_lba: ; 0xf5891 LB 0xb9 + push bx ; 53 ; 0xf5891 disk.c:125 + push cx ; 51 ; 0xf5892 + push si ; 56 ; 0xf5893 + push di ; 57 ; 0xf5894 + push bp ; 55 ; 0xf5895 + mov bp, sp ; 89 e5 ; 0xf5896 + sub sp, strict byte 00008h ; 83 ec 08 ; 0xf5898 + mov di, ax ; 89 c7 ; 0xf589b + mov es, dx ; 8e c2 ; 0xf589d + mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf589f disk.c:127 + mov word [bp-006h], strict word 0007eh ; c7 46 fa 7e 00 ; 0xf58a4 + mov word [bp-002h], 000ffh ; c7 46 fe ff 00 ; 0xf58a9 disk.c:129 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf58ae disk.c:132 + mov bx, word [bp+010h] ; 8b 5e 10 ; 0xf58b1 + mov cx, word [bp+00eh] ; 8b 4e 0e ; 0xf58b4 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf58b7 + mov si, strict word 00020h ; be 20 00 ; 0xf58ba + call 0ab10h ; e8 50 52 ; 0xf58bd + test ax, ax ; 85 c0 ; 0xf58c0 + jne short 058d0h ; 75 0c ; 0xf58c2 + test bx, bx ; 85 db ; 0xf58c4 + jne short 058d0h ; 75 08 ; 0xf58c6 + test cx, cx ; 85 c9 ; 0xf58c8 + jne short 058d0h ; 75 04 ; 0xf58ca + test dx, dx ; 85 d2 ; 0xf58cc + je short 058d7h ; 74 07 ; 0xf58ce + mov bx, strict word 0ffffh ; bb ff ff ; 0xf58d0 + mov si, bx ; 89 de ; 0xf58d3 + jmp short 058ddh ; eb 06 ; 0xf58d5 + mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf58d7 + mov si, word [bp+00eh] ; 8b 76 0e ; 0xf58da + mov word [bp-004h], bx ; 89 5e fc ; 0xf58dd + xor bx, bx ; 31 db ; 0xf58e0 disk.c:134 + jmp short 058e9h ; eb 05 ; 0xf58e2 + cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf58e4 + jnl short 0590ch ; 7d 23 ; 0xf58e7 + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf58e9 disk.c:135 + cmp si, ax ; 39 c6 ; 0xf58ec + jc short 058fah ; 72 0a ; 0xf58ee + jne short 05903h ; 75 11 ; 0xf58f0 + mov ax, word [bp-004h] ; 8b 46 fc ; 0xf58f2 + cmp ax, word [bp-008h] ; 3b 46 f8 ; 0xf58f5 + jnbe short 05903h ; 77 09 ; 0xf58f8 + mov ax, word [bp-002h] ; 8b 46 fe ; 0xf58fa disk.c:136 + inc ax ; 40 ; 0xf58fd + shr ax, 1 ; d1 e8 ; 0xf58fe + mov word [bp-002h], ax ; 89 46 fe ; 0xf5900 + shr word [bp-006h], 1 ; d1 6e fa ; 0xf5903 disk.c:137 + rcr word [bp-008h], 1 ; d1 5e f8 ; 0xf5906 + inc bx ; 43 ; 0xf5909 disk.c:138 + jmp short 058e4h ; eb d8 ; 0xf590a + mov ax, word [bp-002h] ; 8b 46 fe ; 0xf590c disk.c:140 + xor dx, dx ; 31 d2 ; 0xf590f + mov bx, strict word 0003fh ; bb 3f 00 ; 0xf5911 + xor cx, cx ; 31 c9 ; 0xf5914 + call 0aac0h ; e8 a7 51 ; 0xf5916 + mov bx, ax ; 89 c3 ; 0xf5919 + mov cx, dx ; 89 d1 ; 0xf591b + mov ax, word [bp-004h] ; 8b 46 fc ; 0xf591d + mov dx, si ; 89 f2 ; 0xf5920 + call 0aae0h ; e8 bb 51 ; 0xf5922 + mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf5925 + cmp ax, 00400h ; 3d 00 04 ; 0xf5929 disk.c:141 + jbe short 05934h ; 76 06 ; 0xf592c + mov word [es:di+002h], 00400h ; 26 c7 45 02 00 04 ; 0xf592e disk.c:142 + mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5934 disk.c:143 + mov word [es:di], ax ; 26 89 05 ; 0xf5937 + mov word [es:di+004h], strict word 0003fh ; 26 c7 45 04 3f 00 ; 0xf593a disk.c:144 + mov sp, bp ; 89 ec ; 0xf5940 disk.c:145 + pop bp ; 5d ; 0xf5942 + pop di ; 5f ; 0xf5943 + pop si ; 5e ; 0xf5944 + pop cx ; 59 ; 0xf5945 + pop bx ; 5b ; 0xf5946 + retn 00008h ; c2 08 00 ; 0xf5947 + ; disGetNextSymbol 0xf594a LB 0x550e -> off=0x0 cb=000000000000031e uValue=00000000000f434a 'edd_fill_dpt' +edd_fill_dpt: ; 0xf594a LB 0x31e + push si ; 56 ; 0xf594a disk.c:147 + push di ; 57 ; 0xf594b + push bp ; 55 ; 0xf594c + mov bp, sp ; 89 e5 ; 0xf594d + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf594f + mov di, ax ; 89 c7 ; 0xf5952 + mov word [bp-004h], dx ; 89 56 fc ; 0xf5954 + mov word [bp-008h], bx ; 89 5e f8 ; 0xf5957 + mov word [bp-006h], cx ; 89 4e fa ; 0xf595a + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf595d disk.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5960 + mov es, ax ; 8e c0 ; 0xf5963 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf5965 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf5968 disk.c:59 + mov es, dx ; 8e c2 ; 0xf596b disk.c:152 + mov ax, word [es:di] ; 26 8b 05 ; 0xf596d + cmp ax, strict word 0001ah ; 3d 1a 00 ; 0xf5970 + jnc short 0597bh ; 73 06 ; 0xf5973 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf5975 disk.c:153 + jmp near 05c60h ; e9 e5 02 ; 0xf5978 + jc short 059eeh ; 72 71 ; 0xf597b disk.c:156 + mov word [es:di], strict word 0001ah ; 26 c7 05 1a 00 ; 0xf597d disk.c:159 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5982 disk.c:160 + xor ah, ah ; 30 e4 ; 0xf5985 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5987 + imul dx ; f7 ea ; 0xf598a + mov dx, cx ; 89 ca ; 0xf598c + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf598e + add bx, ax ; 01 c3 ; 0xf5991 + mov es, cx ; 8e c1 ; 0xf5993 + mov ax, word [es:bx+024h] ; 26 8b 47 24 ; 0xf5995 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5999 + mov word [es:di+018h], ax ; 26 89 45 18 ; 0xf599c + mov es, cx ; 8e c1 ; 0xf59a0 disk.c:162 + cmp byte [es:bx+01fh], 005h ; 26 80 7f 1f 05 ; 0xf59a2 + jne short 059f0h ; 75 47 ; 0xf59a7 + mov es, [bp-004h] ; 8e 46 fc ; 0xf59a9 disk.c:163 + mov word [es:di+002h], strict word 00074h ; 26 c7 45 02 74 00 ; 0xf59ac + mov word [es:di+004h], strict word 0ffffh ; 26 c7 45 04 ff ff ; 0xf59b2 disk.c:164 + mov word [es:di+006h], strict word 0ffffh ; 26 c7 45 06 ff ff ; 0xf59b8 + mov word [es:di+008h], strict word 0ffffh ; 26 c7 45 08 ff ff ; 0xf59be disk.c:165 + mov word [es:di+00ah], strict word 0ffffh ; 26 c7 45 0a ff ff ; 0xf59c4 + mov word [es:di+00ch], strict word 0ffffh ; 26 c7 45 0c ff ff ; 0xf59ca disk.c:166 + mov word [es:di+00eh], strict word 0ffffh ; 26 c7 45 0e ff ff ; 0xf59d0 + mov word [es:di+010h], strict word 0ffffh ; 26 c7 45 10 ff ff ; 0xf59d6 disk.c:167 + mov word [es:di+012h], strict word 0ffffh ; 26 c7 45 12 ff ff ; 0xf59dc + mov word [es:di+014h], strict word 0ffffh ; 26 c7 45 14 ff ff ; 0xf59e2 disk.c:168 + mov word [es:di+016h], strict word 0ffffh ; 26 c7 45 16 ff ff ; 0xf59e8 + jmp short 05a5fh ; eb 6f ; 0xf59ee disk.c:169 + mov es, [bp-004h] ; 8e 46 fc ; 0xf59f0 disk.c:170 + mov word [es:di+002h], strict word 00002h ; 26 c7 45 02 02 00 ; 0xf59f3 + mov es, cx ; 8e c1 ; 0xf59f9 disk.c:171 + mov ax, word [es:bx+02eh] ; 26 8b 47 2e ; 0xf59fb + mov es, [bp-004h] ; 8e 46 fc ; 0xf59ff + mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf5a02 + mov word [es:di+006h], strict word 00000h ; 26 c7 45 06 00 00 ; 0xf5a06 + mov es, cx ; 8e c1 ; 0xf5a0c disk.c:172 + mov ax, word [es:bx+02ch] ; 26 8b 47 2c ; 0xf5a0e + mov es, [bp-004h] ; 8e 46 fc ; 0xf5a12 + mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf5a15 + mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xf5a19 + mov es, cx ; 8e c1 ; 0xf5a1f disk.c:173 + mov ax, word [es:bx+030h] ; 26 8b 47 30 ; 0xf5a21 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5a25 + mov word [es:di+00ch], ax ; 26 89 45 0c ; 0xf5a28 + mov word [es:di+00eh], strict word 00000h ; 26 c7 45 0e 00 00 ; 0xf5a2c + mov es, cx ; 8e c1 ; 0xf5a32 disk.c:174 + mov ax, word [es:bx+038h] ; 26 8b 47 38 ; 0xf5a34 + mov si, word [es:bx+036h] ; 26 8b 77 36 ; 0xf5a38 + mov cx, word [es:bx+034h] ; 26 8b 4f 34 ; 0xf5a3c + mov dx, word [es:bx+032h] ; 26 8b 57 32 ; 0xf5a40 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5a44 disk.c:175 + mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf5a47 + mov word [es:di+012h], cx ; 26 89 4d 12 ; 0xf5a4b + mov bx, si ; 89 f3 ; 0xf5a4f disk.c:176 + mov si, strict word 00020h ; be 20 00 ; 0xf5a51 + call 0ab10h ; e8 b9 50 ; 0xf5a54 + mov word [es:di+014h], dx ; 26 89 55 14 ; 0xf5a57 + mov word [es:di+016h], cx ; 26 89 4d 16 ; 0xf5a5b + mov es, [bp-004h] ; 8e 46 fc ; 0xf5a5f disk.c:181 + cmp word [es:di], strict byte 0001eh ; 26 83 3d 1e ; 0xf5a62 + jc short 05ac2h ; 72 5a ; 0xf5a66 + mov word [es:di], strict word 0001eh ; 26 c7 05 1e 00 ; 0xf5a68 disk.c:185 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf5a6d disk.c:186 + mov word [es:di+01ch], ax ; 26 89 45 1c ; 0xf5a70 + mov word [es:di+01ah], 00306h ; 26 c7 45 1a 06 03 ; 0xf5a74 disk.c:187 + mov cl, byte [bp+008h] ; 8a 4e 08 ; 0xf5a7a disk.c:190 + xor ch, ch ; 30 ed ; 0xf5a7d + mov ax, cx ; 89 c8 ; 0xf5a7f + cwd ; 99 ; 0xf5a81 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf5a82 + sar ax, 1 ; d1 f8 ; 0xf5a84 + xor ah, ah ; 30 e4 ; 0xf5a86 disk.c:191 + mov dx, strict word 00006h ; ba 06 00 ; 0xf5a88 + imul dx ; f7 ea ; 0xf5a8b + les bx, [bp-008h] ; c4 5e f8 ; 0xf5a8d + add bx, ax ; 01 c3 ; 0xf5a90 + mov ax, word [es:bx+0027ah] ; 26 8b 87 7a 02 ; 0xf5a92 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf5a97 + mov ax, word [es:bx+0027ch] ; 26 8b 87 7c 02 ; 0xf5a9a disk.c:192 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5a9f + mov al, byte [es:bx+00279h] ; 26 8a 87 79 02 ; 0xf5aa2 disk.c:193 + mov byte [bp-002h], al ; 88 46 fe ; 0xf5aa7 + mov ax, cx ; 89 c8 ; 0xf5aaa disk.c:195 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5aac + imul dx ; f7 ea ; 0xf5aaf + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5ab1 + add bx, ax ; 01 c3 ; 0xf5ab4 + mov bl, byte [es:bx+023h] ; 26 8a 5f 23 ; 0xf5ab6 + test bl, bl ; 84 db ; 0xf5aba disk.c:197 + jne short 05ac5h ; 75 07 ; 0xf5abc + xor ax, ax ; 31 c0 ; 0xf5abe + jmp short 05ac8h ; eb 06 ; 0xf5ac0 + jmp near 05b8dh ; e9 c8 00 ; 0xf5ac2 + mov ax, strict word 00008h ; b8 08 00 ; 0xf5ac5 + or AL, strict byte 010h ; 0c 10 ; 0xf5ac8 disk.c:198 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5aca + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5acd disk.c:199 + xor ah, ah ; 30 e4 ; 0xf5ad0 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5ad2 + imul dx ; f7 ea ; 0xf5ad5 + les si, [bp-008h] ; c4 76 f8 ; 0xf5ad7 + add si, ax ; 01 c6 ; 0xf5ada + cmp byte [es:si+01fh], 005h ; 26 80 7c 1f 05 ; 0xf5adc + jne short 05ae7h ; 75 04 ; 0xf5ae1 + or byte [bp-00ah], 060h ; 80 4e f6 60 ; 0xf5ae3 disk.c:200 + cmp bl, 001h ; 80 fb 01 ; 0xf5ae7 disk.c:206 + jne short 05af1h ; 75 05 ; 0xf5aea + mov ax, strict word 00001h ; b8 01 00 ; 0xf5aec + jmp short 05af3h ; eb 02 ; 0xf5aef + xor ax, ax ; 31 c0 ; 0xf5af1 + or word [bp-00ah], ax ; 09 46 f6 ; 0xf5af3 + cmp bl, 003h ; 80 fb 03 ; 0xf5af6 disk.c:207 + jne short 05b00h ; 75 05 ; 0xf5af9 + mov ax, strict word 00003h ; b8 03 00 ; 0xf5afb + jmp short 05b02h ; eb 02 ; 0xf5afe + xor ax, ax ; 31 c0 ; 0xf5b00 + or word [bp-00ah], ax ; 09 46 f6 ; 0xf5b02 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf5b05 disk.c:209 + les bx, [bp-008h] ; c4 5e f8 ; 0xf5b08 + mov word [es:bx+002a8h], ax ; 26 89 87 a8 02 ; 0xf5b0b + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5b10 disk.c:210 + mov word [es:bx+002aah], ax ; 26 89 87 aa 02 ; 0xf5b13 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5b18 disk.c:211 + xor ah, ah ; 30 e4 ; 0xf5b1b + cwd ; 99 ; 0xf5b1d + mov bx, strict word 00002h ; bb 02 00 ; 0xf5b1e + idiv bx ; f7 fb ; 0xf5b21 + or dl, 00eh ; 80 ca 0e ; 0xf5b23 + mov CL, strict byte 004h ; b1 04 ; 0xf5b26 + sal dx, CL ; d3 e2 ; 0xf5b28 + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5b2a + mov byte [es:bx+002ach], dl ; 26 88 97 ac 02 ; 0xf5b2d + mov byte [es:bx+002adh], 0cbh ; 26 c6 87 ad 02 cb ; 0xf5b32 disk.c:212 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5b38 disk.c:213 + mov byte [es:bx+002aeh], al ; 26 88 87 ae 02 ; 0xf5b3b + mov word [es:bx+002afh], strict word 00001h ; 26 c7 87 af 02 01 00 ; 0xf5b40 disk.c:214 + mov byte [es:bx+002b1h], 000h ; 26 c6 87 b1 02 00 ; 0xf5b47 disk.c:216 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5b4d disk.c:217 + mov word [es:bx+002b2h], ax ; 26 89 87 b2 02 ; 0xf5b50 + mov word [es:bx+002b4h], strict word 00000h ; 26 c7 87 b4 02 00 00 ; 0xf5b55 disk.c:218 + mov byte [es:bx+002b6h], 011h ; 26 c6 87 b6 02 11 ; 0xf5b5c disk.c:219 + xor bl, bl ; 30 db ; 0xf5b62 disk.c:221 + xor bh, bh ; 30 ff ; 0xf5b64 disk.c:222 + jmp short 05b6dh ; eb 05 ; 0xf5b66 + cmp bh, 00fh ; 80 ff 0f ; 0xf5b68 + jnc short 05b83h ; 73 16 ; 0xf5b6b + mov al, bh ; 88 f8 ; 0xf5b6d disk.c:223 + xor ah, ah ; 30 e4 ; 0xf5b6f + mov si, ax ; 89 c6 ; 0xf5b71 + add si, 00306h ; 81 c6 06 03 ; 0xf5b73 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf5b77 disk.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf5b7a + add bl, al ; 00 c3 ; 0xf5b7d disk.c:49 + db 0feh, 0c7h + ; inc bh ; fe c7 ; 0xf5b7f disk.c:223 + jmp short 05b68h ; eb e5 ; 0xf5b81 + neg bl ; f6 db ; 0xf5b83 disk.c:224 + les si, [bp-008h] ; c4 76 f8 ; 0xf5b85 disk.c:225 + mov byte [es:si+002b7h], bl ; 26 88 9c b7 02 ; 0xf5b88 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5b8d disk.c:229 + cmp word [es:di], strict byte 00042h ; 26 83 3d 42 ; 0xf5b90 + jnc short 05b99h ; 73 03 ; 0xf5b94 + jmp near 05c5eh ; e9 c5 00 ; 0xf5b96 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5b99 disk.c:233 + xor ah, ah ; 30 e4 ; 0xf5b9c + cwd ; 99 ; 0xf5b9e + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf5b9f + sar ax, 1 ; d1 f8 ; 0xf5ba1 + xor ah, ah ; 30 e4 ; 0xf5ba3 disk.c:234 + mov dx, strict word 00006h ; ba 06 00 ; 0xf5ba5 + imul dx ; f7 ea ; 0xf5ba8 + les bx, [bp-008h] ; c4 5e f8 ; 0xf5baa + add bx, ax ; 01 c3 ; 0xf5bad + mov al, byte [es:bx+00278h] ; 26 8a 87 78 02 ; 0xf5baf + mov dx, word [es:bx+0027ah] ; 26 8b 97 7a 02 ; 0xf5bb4 disk.c:235 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5bb9 disk.c:237 + mov word [es:di], strict word 00042h ; 26 c7 05 42 00 ; 0xf5bbc + mov word [es:di+01eh], 0beddh ; 26 c7 45 1e dd be ; 0xf5bc1 disk.c:238 + mov word [es:di+020h], strict word 00024h ; 26 c7 45 20 24 00 ; 0xf5bc7 disk.c:239 + mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00 ; 0xf5bcd disk.c:241 + test al, al ; 84 c0 ; 0xf5bd3 disk.c:243 + jne short 05be3h ; 75 0c ; 0xf5bd5 + mov word [es:di+024h], 05349h ; 26 c7 45 24 49 53 ; 0xf5bd7 disk.c:244 + mov word [es:di+026h], 02041h ; 26 c7 45 26 41 20 ; 0xf5bdd disk.c:246 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5be3 disk.c:252 + mov word [es:di+028h], 05441h ; 26 c7 45 28 41 54 ; 0xf5be6 + mov word [es:di+02ah], 02041h ; 26 c7 45 2a 41 20 ; 0xf5bec disk.c:254 + mov word [es:di+02ch], 02020h ; 26 c7 45 2c 20 20 ; 0xf5bf2 disk.c:256 + mov word [es:di+02eh], 02020h ; 26 c7 45 2e 20 20 ; 0xf5bf8 disk.c:258 + test al, al ; 84 c0 ; 0xf5bfe disk.c:261 + jne short 05c18h ; 75 16 ; 0xf5c00 + mov word [es:di+030h], dx ; 26 89 55 30 ; 0xf5c02 disk.c:262 + mov word [es:di+032h], strict word 00000h ; 26 c7 45 32 00 00 ; 0xf5c06 disk.c:263 + mov word [es:di+034h], strict word 00000h ; 26 c7 45 34 00 00 ; 0xf5c0c disk.c:264 + mov word [es:di+036h], strict word 00000h ; 26 c7 45 36 00 00 ; 0xf5c12 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5c18 disk.c:269 + and AL, strict byte 001h ; 24 01 ; 0xf5c1b + xor ah, ah ; 30 e4 ; 0xf5c1d + mov es, [bp-004h] ; 8e 46 fc ; 0xf5c1f + mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf5c22 + mov word [es:di+03ah], strict word 00000h ; 26 c7 45 3a 00 00 ; 0xf5c26 disk.c:270 + mov word [es:di+03ch], strict word 00000h ; 26 c7 45 3c 00 00 ; 0xf5c2c disk.c:271 + mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00 ; 0xf5c32 + xor bl, bl ; 30 db ; 0xf5c38 disk.c:273 + mov BH, strict byte 01eh ; b7 1e ; 0xf5c3a disk.c:274 + jmp short 05c43h ; eb 05 ; 0xf5c3c + cmp bh, 040h ; 80 ff 40 ; 0xf5c3e + jnc short 05c55h ; 73 12 ; 0xf5c41 + mov al, bh ; 88 f8 ; 0xf5c43 disk.c:275 + xor ah, ah ; 30 e4 ; 0xf5c45 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5c47 + mov si, di ; 89 fe ; 0xf5c4a + add si, ax ; 01 c6 ; 0xf5c4c + add bl, byte [es:si] ; 26 02 1c ; 0xf5c4e + db 0feh, 0c7h + ; inc bh ; fe c7 ; 0xf5c51 + jmp short 05c3eh ; eb e9 ; 0xf5c53 + neg bl ; f6 db ; 0xf5c55 disk.c:276 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5c57 disk.c:277 + mov byte [es:di+041h], bl ; 26 88 5d 41 ; 0xf5c5a + xor ax, ax ; 31 c0 ; 0xf5c5e disk.c:279 + mov sp, bp ; 89 ec ; 0xf5c60 disk.c:280 + pop bp ; 5d ; 0xf5c62 + pop di ; 5f ; 0xf5c63 + pop si ; 5e ; 0xf5c64 + retn 00002h ; c2 02 00 ; 0xf5c65 + ; disGetNextSymbol 0xf5c68 LB 0x51f0 -> off=0x32 cb=0000000000000436 uValue=00000000000f469a 'int13_harddisk' + db 02ah, 05dh, 03bh, 05dh, 062h, 05dh, 062h, 05dh, 062h, 05dh, 050h, 05fh, 093h, 060h, 093h, 060h + db 081h, 05fh, 06dh, 060h, 093h, 060h, 093h, 060h, 06dh, 060h, 06dh, 060h, 093h, 060h, 093h, 060h + db 0e7h, 05fh, 06dh, 060h, 093h, 060h, 093h, 060h, 06dh, 060h, 022h, 060h, 093h, 060h, 093h, 060h + db 093h, 060h +int13_harddisk: ; 0xf5c9a LB 0x436 + push bp ; 55 ; 0xf5c9a disk.c:282 + mov bp, sp ; 89 e5 ; 0xf5c9b + sub sp, strict byte 00012h ; 83 ec 12 ; 0xf5c9d + or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf5ca0 disk.c:293 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5ca4 disk.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5ca7 + mov es, ax ; 8e c0 ; 0xf5caa + mov ax, word [es:bx] ; 26 8b 07 ; 0xf5cac + mov si, strict word 0005eh ; be 5e 00 ; 0xf5caf disk.c:59 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf5cb2 + mov bx, 0008eh ; bb 8e 00 ; 0xf5cb5 disk.c:53 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5cb8 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5cbc disk.c:299 + xor ah, ah ; 30 e4 ; 0xf5cbf + cmp ax, 00080h ; 3d 80 00 ; 0xf5cc1 + jc short 05ccbh ; 72 05 ; 0xf5cc4 + cmp ax, 00094h ; 3d 94 00 ; 0xf5cc6 + jc short 05ceah ; 72 1f ; 0xf5cc9 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5ccb disk.c:300 + xor ah, ah ; 30 e4 ; 0xf5cce + push ax ; 50 ; 0xf5cd0 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5cd1 + push ax ; 50 ; 0xf5cd4 + mov ax, 006c4h ; b8 c4 06 ; 0xf5cd5 + push ax ; 50 ; 0xf5cd8 + mov ax, 006d3h ; b8 d3 06 ; 0xf5cd9 + push ax ; 50 ; 0xf5cdc + mov ax, strict word 00004h ; b8 04 00 ; 0xf5cdd + push ax ; 50 ; 0xf5ce0 + call 0195ch ; e8 78 bc ; 0xf5ce1 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5ce4 + jmp near 060aeh ; e9 c4 03 ; 0xf5ce7 disk.c:301 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5cea disk.c:305 + xor ah, ah ; 30 e4 ; 0xf5ced + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5cef + mov bx, si ; 89 f3 ; 0xf5cf2 + add bx, ax ; 01 c3 ; 0xf5cf4 + mov dl, byte [es:bx+001cfh] ; 26 8a 97 cf 01 ; 0xf5cf6 + mov byte [bp-002h], dl ; 88 56 fe ; 0xf5cfb + cmp dl, 014h ; 80 fa 14 ; 0xf5cfe disk.c:308 + jc short 05d11h ; 72 0e ; 0xf5d01 + push ax ; 50 ; 0xf5d03 disk.c:309 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5d04 + push ax ; 50 ; 0xf5d07 + mov ax, 006c4h ; b8 c4 06 ; 0xf5d08 + push ax ; 50 ; 0xf5d0b + mov ax, 006feh ; b8 fe 06 ; 0xf5d0c + jmp short 05cdch ; eb cb ; 0xf5d0f + mov bl, byte [bp+017h] ; 8a 5e 17 ; 0xf5d11 disk.c:313 + xor bh, bh ; 30 ff ; 0xf5d14 + cmp bx, strict byte 00018h ; 83 fb 18 ; 0xf5d16 + jnbe short 05d5fh ; 77 44 ; 0xf5d19 + sal bx, 1 ; d1 e3 ; 0xf5d1b + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5d1d + xor ah, ah ; 30 e4 ; 0xf5d20 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf5d22 + jmp word [cs:bx+05c68h] ; 2e ff a7 68 5c ; 0xf5d25 + cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5d2a disk.c:318 + jnc short 05d38h ; 73 08 ; 0xf5d2e + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5d30 disk.c:320 + xor ah, ah ; 30 e4 ; 0xf5d33 + call 01d9bh ; e8 63 c0 ; 0xf5d35 + jmp near 05f69h ; e9 2e 02 ; 0xf5d38 disk.c:321 + mov bx, strict word 00074h ; bb 74 00 ; 0xf5d3b disk.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5d3e + mov es, ax ; 8e c0 ; 0xf5d41 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf5d43 + mov ah, dl ; 88 d4 ; 0xf5d46 disk.c:326 + xor al, al ; 30 c0 ; 0xf5d48 + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5d4a + or bx, ax ; 09 c3 ; 0xf5d4d + mov word [bp+016h], bx ; 89 5e 16 ; 0xf5d4f + mov bx, strict word 00074h ; bb 74 00 ; 0xf5d52 disk.c:53 + mov byte [es:bx], al ; 26 88 07 ; 0xf5d55 + test dl, dl ; 84 d2 ; 0xf5d58 disk.c:329 + je short 05dbeh ; 74 62 ; 0xf5d5a + jmp near 060c9h ; e9 6a 03 ; 0xf5d5c + jmp near 06093h ; e9 31 03 ; 0xf5d5f + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5d62 disk.c:337 + xor ah, ah ; 30 e4 ; 0xf5d65 + mov word [bp-012h], ax ; 89 46 ee ; 0xf5d67 + mov al, byte [bp+015h] ; 8a 46 15 ; 0xf5d6a disk.c:338 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5d6d disk.c:339 + xor dh, dh ; 30 f6 ; 0xf5d70 + sal dx, 1 ; d1 e2 ; 0xf5d72 + sal dx, 1 ; d1 e2 ; 0xf5d74 + and dh, 003h ; 80 e6 03 ; 0xf5d76 + mov ah, dh ; 88 f4 ; 0xf5d79 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5d7b + mov di, word [bp+014h] ; 8b 7e 14 ; 0xf5d7e disk.c:340 + and di, strict byte 0003fh ; 83 e7 3f ; 0xf5d81 + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf5d84 disk.c:341 + xor ah, dh ; 30 f4 ; 0xf5d87 + mov word [bp-004h], ax ; 89 46 fc ; 0xf5d89 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf5d8c disk.c:344 + cmp ax, 00080h ; 3d 80 00 ; 0xf5d8f + jnbe short 05d98h ; 77 04 ; 0xf5d92 + test ax, ax ; 85 c0 ; 0xf5d94 + jne short 05dc1h ; 75 29 ; 0xf5d96 + mov bx, 00dcch ; bb cc 0d ; 0xf5d98 disk.c:345 + mov cx, ds ; 8c d9 ; 0xf5d9b + mov ax, strict word 00004h ; b8 04 00 ; 0xf5d9d + call 01919h ; e8 76 bb ; 0xf5da0 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5da3 + xor ah, ah ; 30 e4 ; 0xf5da6 + push ax ; 50 ; 0xf5da8 + mov ax, 006c4h ; b8 c4 06 ; 0xf5da9 + push ax ; 50 ; 0xf5dac + mov ax, 00730h ; b8 30 07 ; 0xf5dad + push ax ; 50 ; 0xf5db0 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5db1 + push ax ; 50 ; 0xf5db4 + call 0195ch ; e8 a4 bb ; 0xf5db5 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf5db8 + jmp near 060aeh ; e9 f0 02 ; 0xf5dbb disk.c:346 + jmp near 05f6dh ; e9 ac 01 ; 0xf5dbe + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5dc1 disk.c:350 + xor ah, ah ; 30 e4 ; 0xf5dc4 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5dc6 + imul dx ; f7 ea ; 0xf5dc9 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5dcb + mov bx, si ; 89 f3 ; 0xf5dce + add bx, ax ; 01 c3 ; 0xf5dd0 + mov ax, word [es:bx+028h] ; 26 8b 47 28 ; 0xf5dd2 + mov cx, word [es:bx+026h] ; 26 8b 4f 26 ; 0xf5dd6 disk.c:351 + mov dx, word [es:bx+02ah] ; 26 8b 57 2a ; 0xf5dda disk.c:352 + mov word [bp-010h], dx ; 89 56 f0 ; 0xf5dde + cmp ax, word [bp-00ah] ; 3b 46 f6 ; 0xf5de1 disk.c:355 + jbe short 05defh ; 76 09 ; 0xf5de4 + cmp cx, word [bp-004h] ; 3b 4e fc ; 0xf5de6 + jbe short 05defh ; 76 04 ; 0xf5de9 + cmp di, dx ; 39 d7 ; 0xf5deb + jbe short 05e20h ; 76 31 ; 0xf5ded + mov bx, 00dcch ; bb cc 0d ; 0xf5def disk.c:356 + mov cx, ds ; 8c d9 ; 0xf5df2 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5df4 + call 01919h ; e8 1f bb ; 0xf5df7 + push di ; 57 ; 0xf5dfa + push word [bp-004h] ; ff 76 fc ; 0xf5dfb + push word [bp-00ah] ; ff 76 f6 ; 0xf5dfe + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5e01 + xor ah, ah ; 30 e4 ; 0xf5e04 + push ax ; 50 ; 0xf5e06 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5e07 + push ax ; 50 ; 0xf5e0a + mov ax, 006c4h ; b8 c4 06 ; 0xf5e0b + push ax ; 50 ; 0xf5e0e + mov ax, 00758h ; b8 58 07 ; 0xf5e0f + push ax ; 50 ; 0xf5e12 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5e13 + push ax ; 50 ; 0xf5e16 + call 0195ch ; e8 42 bb ; 0xf5e17 + add sp, strict byte 00010h ; 83 c4 10 ; 0xf5e1a + jmp near 060aeh ; e9 8e 02 ; 0xf5e1d disk.c:357 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5e20 disk.c:361 + xor ah, ah ; 30 e4 ; 0xf5e23 + cmp ax, strict word 00004h ; 3d 04 00 ; 0xf5e25 + je short 05e4ah ; 74 20 ; 0xf5e28 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5e2a disk.c:366 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5e2d + imul dx ; f7 ea ; 0xf5e30 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5e32 + mov bx, si ; 89 f3 ; 0xf5e35 + add bx, ax ; 01 c3 ; 0xf5e37 + cmp cx, word [es:bx+02ch] ; 26 3b 4f 2c ; 0xf5e39 + jne short 05e53h ; 75 14 ; 0xf5e3d + mov ax, word [es:bx+030h] ; 26 8b 47 30 ; 0xf5e3f + cmp ax, word [bp-010h] ; 3b 46 f0 ; 0xf5e43 + je short 05e4dh ; 74 05 ; 0xf5e46 + jmp short 05e53h ; eb 09 ; 0xf5e48 + jmp near 05f69h ; e9 1c 01 ; 0xf5e4a + cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5e4d + jc short 05e82h ; 72 2f ; 0xf5e51 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5e53 disk.c:367 + xor dx, dx ; 31 d2 ; 0xf5e56 + mov bx, cx ; 89 cb ; 0xf5e58 + xor cx, cx ; 31 c9 ; 0xf5e5a + call 0aac0h ; e8 61 4c ; 0xf5e5c + xor bx, bx ; 31 db ; 0xf5e5f + add ax, word [bp-004h] ; 03 46 fc ; 0xf5e61 + adc dx, bx ; 11 da ; 0xf5e64 + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf5e66 + xor cx, cx ; 31 c9 ; 0xf5e69 + call 0aac0h ; e8 52 4c ; 0xf5e6b + xor bx, bx ; 31 db ; 0xf5e6e + add ax, di ; 01 f8 ; 0xf5e70 + adc dx, bx ; 11 da ; 0xf5e72 + add ax, strict word 0ffffh ; 05 ff ff ; 0xf5e74 + mov word [bp-006h], ax ; 89 46 fa ; 0xf5e77 + adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf5e7a + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf5e7d + xor di, di ; 31 ff ; 0xf5e80 disk.c:368 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5e82 disk.c:378 + mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00 ; 0xf5e85 + mov word [es:si+01ah], strict word 00000h ; 26 c7 44 1a 00 00 ; 0xf5e8b disk.c:379 + mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf5e91 + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5e97 disk.c:382 + mov word [es:si], ax ; 26 89 04 ; 0xf5e9a + mov ax, word [bp-00ch] ; 8b 46 f4 ; 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:383 + 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-012h] ; 8b 46 ee ; 0xf5ebe disk.c:384 + 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:385 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5ecb disk.c:386 + mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf5ece + mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5ed2 disk.c:387 + mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf5ed5 + mov word [es:si+016h], di ; 26 89 7c 16 ; 0xf5ed9 disk.c:388 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5edd disk.c:389 + mov byte [es:si+00ch], al ; 26 88 44 0c ; 0xf5ee0 + xor ah, ah ; 30 e4 ; 0xf5ee4 disk.c:391 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5ee6 + imul dx ; f7 ea ; 0xf5ee9 + mov bx, si ; 89 f3 ; 0xf5eeb + add bx, ax ; 01 c3 ; 0xf5eed + mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf5eef + xor ah, ah ; 30 e4 ; 0xf5ef3 + mov bx, ax ; 89 c3 ; 0xf5ef5 + sal bx, 1 ; d1 e3 ; 0xf5ef7 + sal bx, 1 ; d1 e3 ; 0xf5ef9 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5efb + sal ax, 1 ; d1 e0 ; 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:394 + 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:396 + je short 05f69h ; 74 4a ; 0xf5f1d + mov bx, 00dcch ; bb cc 0d ; 0xf5f1f disk.c:397 + mov cx, ds ; 8c d9 ; 0xf5f22 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5f24 + call 01919h ; e8 ef b9 ; 0xf5f27 + mov al, dl ; 88 d0 ; 0xf5f2a + xor ah, ah ; 30 e4 ; 0xf5f2c + push ax ; 50 ; 0xf5f2e + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5f2f + push ax ; 50 ; 0xf5f32 + mov ax, 006c4h ; b8 c4 06 ; 0xf5f33 + push ax ; 50 ; 0xf5f36 + mov ax, 0079fh ; b8 9f 07 ; 0xf5f37 + push ax ; 50 ; 0xf5f3a + mov ax, strict word 00004h ; b8 04 00 ; 0xf5f3b + push ax ; 50 ; 0xf5f3e + call 0195ch ; e8 1a ba ; 0xf5f3f + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5f42 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f45 disk.c:398 + xor ah, ah ; 30 e4 ; 0xf5f48 + or ah, 00ch ; 80 cc 0c ; 0xf5f4a + jmp near 060b6h ; e9 66 01 ; 0xf5f4d disk.c:399 + mov bx, 00dcch ; bb cc 0d ; 0xf5f50 disk.c:406 + mov cx, ds ; 8c d9 ; 0xf5f53 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5f55 + call 01919h ; e8 be b9 ; 0xf5f58 + mov ax, 007c0h ; b8 c0 07 ; 0xf5f5b + push ax ; 50 ; 0xf5f5e + mov ax, strict word 00004h ; b8 04 00 ; 0xf5f5f + push ax ; 50 ; 0xf5f62 + call 0195ch ; e8 f6 b9 ; 0xf5f63 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf5f66 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf5f69 disk.c:407 + mov bx, strict word 00074h ; bb 74 00 ; 0xf5f6d + mov ax, strict word 00040h ; b8 40 00 ; 0xf5f70 + mov es, ax ; 8e c0 ; 0xf5f73 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5f75 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf5f79 + mov sp, bp ; 89 ec ; 0xf5f7d + pop bp ; 5d ; 0xf5f7f + retn ; c3 ; 0xf5f80 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5f81 disk.c:413 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5f84 + imul dx ; f7 ea ; 0xf5f87 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5f89 + mov bx, si ; 89 f3 ; 0xf5f8c + add bx, ax ; 01 c3 ; 0xf5f8e + mov di, word [es:bx+028h] ; 26 8b 7f 28 ; 0xf5f90 + mov cx, word [es:bx+026h] ; 26 8b 4f 26 ; 0xf5f94 disk.c:414 + mov ax, word [es:bx+02ah] ; 26 8b 47 2a ; 0xf5f98 disk.c:415 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf5f9c + mov dl, byte [es:si+0024eh] ; 26 8a 94 4e 02 ; 0xf5f9f disk.c:417 + xor dh, dh ; 30 f6 ; 0xf5fa4 + mov byte [bp+016h], dh ; 88 76 16 ; 0xf5fa6 disk.c:423 + mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf5fa9 disk.c:424 + dec di ; 4f ; 0xf5fac disk.c:422 + mov ax, di ; 89 f8 ; 0xf5fad + mov bh, al ; 88 c7 ; 0xf5faf + mov word [bp+014h], bx ; 89 5e 14 ; 0xf5fb1 + shr di, 1 ; d1 ef ; 0xf5fb4 disk.c:425 + shr di, 1 ; d1 ef ; 0xf5fb6 + and di, 000c0h ; 81 e7 c0 00 ; 0xf5fb8 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf5fbc + and ax, strict word 0003fh ; 25 3f 00 ; 0xf5fbf + or ax, di ; 09 f8 ; 0xf5fc2 + xor bl, bl ; 30 db ; 0xf5fc4 + or bx, ax ; 09 c3 ; 0xf5fc6 + mov word [bp+014h], bx ; 89 5e 14 ; 0xf5fc8 + mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf5fcb disk.c:426 + xor bh, bh ; 30 ff ; 0xf5fce + mov ah, cl ; 88 cc ; 0xf5fd0 + xor al, al ; 30 c0 ; 0xf5fd2 + sub ax, 00100h ; 2d 00 01 ; 0xf5fd4 + or bx, ax ; 09 c3 ; 0xf5fd7 + mov word [bp+012h], bx ; 89 5e 12 ; 0xf5fd9 + mov ax, bx ; 89 d8 ; 0xf5fdc disk.c:427 + xor al, bl ; 30 d8 ; 0xf5fde + or ax, dx ; 09 d0 ; 0xf5fe0 + mov word [bp+012h], ax ; 89 46 12 ; 0xf5fe2 + jmp short 05f69h ; eb 82 ; 0xf5fe5 disk.c:432 + cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5fe7 disk.c:440 + jc short 05ff0h ; 72 03 ; 0xf5feb + jmp near 05f69h ; e9 79 ff ; 0xf5fed + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5ff0 disk.c:443 + xor ah, ah ; 30 e4 ; 0xf5ff3 + cwd ; 99 ; 0xf5ff5 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf5ff6 + sar ax, 1 ; d1 f8 ; 0xf5ff8 + mov dx, strict word 00006h ; ba 06 00 ; 0xf5ffa + imul dx ; f7 ea ; 0xf5ffd + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5fff + add si, ax ; 01 c6 ; 0xf6002 + mov dx, word [es:si+0027ah] ; 26 8b 94 7a 02 ; 0xf6004 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf6009 + in AL, DX ; ec ; 0xf600c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf600d + and AL, strict byte 0c0h ; 24 c0 ; 0xf600f disk.c:444 + cmp AL, strict byte 040h ; 3c 40 ; 0xf6011 + jne short 06017h ; 75 02 ; 0xf6013 + jmp short 05fedh ; eb d6 ; 0xf6015 disk.c:445 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6017 disk.c:447 + xor ah, ah ; 30 e4 ; 0xf601a + or ah, 0aah ; 80 cc aa ; 0xf601c + jmp near 060b6h ; e9 94 00 ; 0xf601f + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6022 disk.c:459 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf6025 + imul dx ; f7 ea ; 0xf6028 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf602a + add si, ax ; 01 c6 ; 0xf602d + mov ax, word [es:si+02eh] ; 26 8b 44 2e ; 0xf602f + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf6033 + mov ax, word [es:si+02ch] ; 26 8b 44 2c ; 0xf6036 disk.c:460 + mov word [bp-004h], ax ; 89 46 fc ; 0xf603a + mov di, word [es:si+030h] ; 26 8b 7c 30 ; 0xf603d disk.c:461 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf6041 disk.c:464 + xor dx, dx ; 31 d2 ; 0xf6044 + mov bx, word [bp-004h] ; 8b 5e fc ; 0xf6046 + xor cx, cx ; 31 c9 ; 0xf6049 + call 0aac0h ; e8 72 4a ; 0xf604b + mov bx, di ; 89 fb ; 0xf604e + xor cx, cx ; 31 c9 ; 0xf6050 + call 0aac0h ; e8 6b 4a ; 0xf6052 + mov word [bp-006h], ax ; 89 46 fa ; 0xf6055 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf6058 + mov word [bp+014h], dx ; 89 56 14 ; 0xf605b disk.c:465 + mov word [bp+012h], ax ; 89 46 12 ; 0xf605e disk.c:466 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf6061 disk.c:468 + or ah, 003h ; 80 cc 03 ; 0xf6064 + mov word [bp+016h], ax ; 89 46 16 ; 0xf6067 + jmp near 05f6dh ; e9 00 ff ; 0xf606a disk.c:469 + mov bx, 00dcch ; bb cc 0d ; 0xf606d disk.c:477 + mov cx, ds ; 8c d9 ; 0xf6070 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6072 + call 01919h ; e8 a1 b8 ; 0xf6075 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf6078 + xor ah, ah ; 30 e4 ; 0xf607b + push ax ; 50 ; 0xf607d + mov ax, 006c4h ; b8 c4 06 ; 0xf607e + push ax ; 50 ; 0xf6081 + mov ax, 007dah ; b8 da 07 ; 0xf6082 + push ax ; 50 ; 0xf6085 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6086 + push ax ; 50 ; 0xf6089 + call 0195ch ; e8 cf b8 ; 0xf608a + add sp, strict byte 00008h ; 83 c4 08 ; 0xf608d + jmp near 05f69h ; e9 d6 fe ; 0xf6090 disk.c:478 + mov bx, 00dcch ; bb cc 0d ; 0xf6093 disk.c:485 + mov cx, ds ; 8c d9 ; 0xf6096 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6098 + call 01919h ; e8 7b b8 ; 0xf609b + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf609e + xor ah, ah ; 30 e4 ; 0xf60a1 + push ax ; 50 ; 0xf60a3 + mov ax, 006c4h ; b8 c4 06 ; 0xf60a4 + push ax ; 50 ; 0xf60a7 + mov ax, 0080dh ; b8 0d 08 ; 0xf60a8 + jmp near 05db0h ; e9 02 fd ; 0xf60ab + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf60ae disk.c:491 + xor ah, ah ; 30 e4 ; 0xf60b1 + or ah, 001h ; 80 cc 01 ; 0xf60b3 + mov word [bp+016h], ax ; 89 46 16 ; 0xf60b6 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf60b9 disk.c:493 + xor ah, ah ; 30 e4 ; 0xf60bc + mov bx, strict word 00074h ; bb 74 00 ; 0xf60be disk.c:53 + mov dx, strict word 00040h ; ba 40 00 ; 0xf60c1 + mov es, dx ; 8e c2 ; 0xf60c4 + mov byte [es:bx], al ; 26 88 07 ; 0xf60c6 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf60c9 disk.c:495 + jmp near 05f7dh ; e9 ad fe ; 0xf60cd disk.c:496 + ; disGetNextSymbol 0xf60d0 LB 0x4d88 -> off=0x20 cb=00000000000002a8 uValue=00000000000f4af0 'int13_harddisk_ext' + db 07eh, 061h, 0b1h, 061h, 0b1h, 061h, 0b1h, 061h, 080h, 063h, 02ch, 063h, 0b1h, 061h, 031h, 063h + db 080h, 063h, 096h, 061h, 096h, 061h, 096h, 061h, 096h, 061h, 049h, 063h, 096h, 061h, 096h, 061h +int13_harddisk_ext: ; 0xf60f0 LB 0x2a8 + push bp ; 55 ; 0xf60f0 disk.c:506 + mov bp, sp ; 89 e5 ; 0xf60f1 + sub sp, strict byte 00016h ; 83 ec 16 ; 0xf60f3 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf60f6 disk.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf60f9 + mov es, ax ; 8e c0 ; 0xf60fc + mov ax, word [es:bx] ; 26 8b 07 ; 0xf60fe + mov di, strict word 0005eh ; bf 5e 00 ; 0xf6101 disk.c:59 + mov word [bp-014h], ax ; 89 46 ec ; 0xf6104 + mov bx, 0008eh ; bb 8e 00 ; 0xf6107 disk.c:53 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf610a + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf610e disk.c:530 + xor ah, ah ; 30 e4 ; 0xf6111 + cmp ax, 00080h ; 3d 80 00 ; 0xf6113 + jc short 0611dh ; 72 05 ; 0xf6116 + cmp ax, 00094h ; 3d 94 00 ; 0xf6118 + jc short 0613ch ; 72 1f ; 0xf611b + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf611d disk.c:531 + xor ah, ah ; 30 e4 ; 0xf6120 + push ax ; 50 ; 0xf6122 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf6123 + push ax ; 50 ; 0xf6126 + mov ax, 0083bh ; b8 3b 08 ; 0xf6127 + push ax ; 50 ; 0xf612a + mov ax, 006d3h ; b8 d3 06 ; 0xf612b + push ax ; 50 ; 0xf612e + mov ax, strict word 00004h ; b8 04 00 ; 0xf612f + push ax ; 50 ; 0xf6132 + call 0195ch ; e8 26 b8 ; 0xf6133 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf6136 + jmp near 0635fh ; e9 23 02 ; 0xf6139 disk.c:532 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf613c disk.c:536 + xor ah, ah ; 30 e4 ; 0xf613f + mov es, [bp-014h] ; 8e 46 ec ; 0xf6141 + mov bx, di ; 89 fb ; 0xf6144 + add bx, ax ; 01 c3 ; 0xf6146 + mov dl, byte [es:bx+001cfh] ; 26 8a 97 cf 01 ; 0xf6148 + mov byte [bp-002h], dl ; 88 56 fe ; 0xf614d + cmp dl, 014h ; 80 fa 14 ; 0xf6150 disk.c:539 + jc short 06163h ; 72 0e ; 0xf6153 + push ax ; 50 ; 0xf6155 disk.c:540 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf6156 + push ax ; 50 ; 0xf6159 + mov ax, 0083bh ; b8 3b 08 ; 0xf615a + push ax ; 50 ; 0xf615d + mov ax, 006feh ; b8 fe 06 ; 0xf615e + jmp short 0612eh ; eb cb ; 0xf6161 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf6163 disk.c:544 + xor ah, ah ; 30 e4 ; 0xf6166 + sub ax, strict word 00041h ; 2d 41 00 ; 0xf6168 + cmp ax, strict word 0000fh ; 3d 0f 00 ; 0xf616b + jnbe short 06196h ; 77 26 ; 0xf616e + mov bx, ax ; 89 c3 ; 0xf6170 + sal bx, 1 ; d1 e3 ; 0xf6172 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6174 + xor ah, ah ; 30 e4 ; 0xf6177 + jmp word [cs:bx+060d0h] ; 2e ff a7 d0 60 ; 0xf6179 + mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf617e disk.c:546 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6183 disk.c:547 + xor ah, ah ; 30 e4 ; 0xf6186 + or ah, 030h ; 80 cc 30 ; 0xf6188 + mov word [bp+016h], ax ; 89 46 16 ; 0xf618b + mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf618e disk.c:548 + jmp near 06384h ; e9 ee 01 ; 0xf6193 disk.c:549 + mov bx, 00dcch ; bb cc 0d ; 0xf6196 + mov cx, ds ; 8c d9 ; 0xf6199 + mov ax, strict word 00004h ; b8 04 00 ; 0xf619b + call 01919h ; e8 78 b7 ; 0xf619e + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf61a1 + xor ah, ah ; 30 e4 ; 0xf61a4 + push ax ; 50 ; 0xf61a6 + mov ax, 0083bh ; b8 3b 08 ; 0xf61a7 + push ax ; 50 ; 0xf61aa + mov ax, 0080dh ; b8 0d 08 ; 0xf61ab + jmp near 0625ah ; e9 a9 00 ; 0xf61ae + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf61b1 disk.c:558 + mov word [bp-016h], bx ; 89 5e ea ; 0xf61b4 + mov es, [bp+004h] ; 8e 46 04 ; 0xf61b7 + mov word [bp-012h], bx ; 89 5e ee ; 0xf61ba + mov [bp-010h], es ; 8c 46 f0 ; 0xf61bd + mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf61c0 disk.c:560 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf61c4 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf61c7 disk.c:561 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf61cb + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf61ce disk.c:562 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf61d2 + mov si, bx ; 89 de ; 0xf61d5 disk.c:565 + mov si, word [es:si+00ch] ; 26 8b 74 0c ; 0xf61d7 + mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf61db + xor ax, ax ; 31 c0 ; 0xf61df disk.c:566 + xor bx, bx ; 31 db ; 0xf61e1 + mov dx, si ; 89 f2 ; 0xf61e3 + mov si, strict word 00020h ; be 20 00 ; 0xf61e5 + call 0ab20h ; e8 35 49 ; 0xf61e8 + mov word [bp-004h], ax ; 89 46 fc ; 0xf61eb + mov word [bp-006h], bx ; 89 5e fa ; 0xf61ee + mov si, dx ; 89 d6 ; 0xf61f1 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf61f3 disk.c:567 + mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf61f6 + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf61fa + or si, dx ; 09 d6 ; 0xf61fe + or cx, ax ; 09 c1 ; 0xf6200 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6202 disk.c:572 + xor ah, ah ; 30 e4 ; 0xf6205 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf6207 + imul dx ; f7 ea ; 0xf620a + mov es, [bp-014h] ; 8e 46 ec ; 0xf620c + mov bx, di ; 89 fb ; 0xf620f + add bx, ax ; 01 c3 ; 0xf6211 + mov al, byte [es:bx+01eh] ; 26 8a 47 1e ; 0xf6213 + mov dx, word [bp-004h] ; 8b 56 fc ; 0xf6217 disk.c:573 + cmp dx, word [es:bx+038h] ; 26 3b 57 38 ; 0xf621a + jnbe short 06242h ; 77 22 ; 0xf621e + jne short 06268h ; 75 46 ; 0xf6220 + mov dx, word [bp-006h] ; 8b 56 fa ; 0xf6222 + cmp dx, word [es:bx+036h] ; 26 3b 57 36 ; 0xf6225 + jnbe short 06242h ; 77 17 ; 0xf6229 + mov dx, word [bp-006h] ; 8b 56 fa ; 0xf622b + cmp dx, word [es:bx+036h] ; 26 3b 57 36 ; 0xf622e + jne short 06268h ; 75 34 ; 0xf6232 + cmp cx, word [es:bx+034h] ; 26 3b 4f 34 ; 0xf6234 + jnbe short 06242h ; 77 08 ; 0xf6238 + jne short 06268h ; 75 2c ; 0xf623a + cmp si, word [es:bx+032h] ; 26 3b 77 32 ; 0xf623c + jc short 06268h ; 72 26 ; 0xf6240 + mov bx, 00dcch ; bb cc 0d ; 0xf6242 disk.c:574 + mov cx, ds ; 8c d9 ; 0xf6245 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6247 + call 01919h ; e8 cc b6 ; 0xf624a + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf624d + xor ah, ah ; 30 e4 ; 0xf6250 + push ax ; 50 ; 0xf6252 + mov ax, 0083bh ; b8 3b 08 ; 0xf6253 + push ax ; 50 ; 0xf6256 + mov ax, 0084eh ; b8 4e 08 ; 0xf6257 + push ax ; 50 ; 0xf625a + mov ax, strict word 00004h ; b8 04 00 ; 0xf625b + push ax ; 50 ; 0xf625e + call 0195ch ; e8 fa b6 ; 0xf625f + add sp, strict byte 00008h ; 83 c4 08 ; 0xf6262 + jmp near 0635fh ; e9 f7 00 ; 0xf6265 disk.c:575 + mov ah, byte [bp+017h] ; 8a 66 17 ; 0xf6268 disk.c:579 + mov byte [bp-008h], ah ; 88 66 f8 ; 0xf626b + mov byte [bp-007h], 000h ; c6 46 f9 00 ; 0xf626e + cmp word [bp-008h], strict byte 00044h ; 83 7e f8 44 ; 0xf6272 + je short 0627eh ; 74 06 ; 0xf6276 + cmp word [bp-008h], strict byte 00047h ; 83 7e f8 47 ; 0xf6278 + jne short 06281h ; 75 03 ; 0xf627c + jmp near 06380h ; e9 ff 00 ; 0xf627e disk.c:580 + mov es, [bp-014h] ; 8e 46 ec ; 0xf6281 disk.c:583 + mov word [es:di+018h], strict word 00000h ; 26 c7 45 18 00 00 ; 0xf6284 + mov word [es:di+01ah], strict word 00000h ; 26 c7 45 1a 00 00 ; 0xf628a disk.c:584 + mov word [es:di+01ch], strict word 00000h ; 26 c7 45 1c 00 00 ; 0xf6290 + mov dx, word [bp-004h] ; 8b 56 fc ; 0xf6296 disk.c:587 + mov word [es:di+006h], dx ; 26 89 55 06 ; 0xf6299 + mov dx, word [bp-006h] ; 8b 56 fa ; 0xf629d + mov word [es:di+004h], dx ; 26 89 55 04 ; 0xf62a0 + mov word [es:di+002h], cx ; 26 89 4d 02 ; 0xf62a4 + mov word [es:di], si ; 26 89 35 ; 0xf62a8 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf62ab disk.c:588 + mov word [es:di+008h], dx ; 26 89 55 08 ; 0xf62ae + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf62b2 + mov word [es:di+00ah], dx ; 26 89 55 0a ; 0xf62b5 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf62b9 disk.c:589 + mov word [es:di+00eh], dx ; 26 89 55 0e ; 0xf62bc + mov word [es:di+010h], 00200h ; 26 c7 45 10 00 02 ; 0xf62c0 disk.c:590 + mov word [es:di+016h], strict word 00000h ; 26 c7 45 16 00 00 ; 0xf62c6 disk.c:591 + mov ah, byte [bp-002h] ; 8a 66 fe ; 0xf62cc disk.c:592 + mov byte [es:di+00ch], ah ; 26 88 65 0c ; 0xf62cf + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf62d3 disk.c:595 + sal bx, 1 ; d1 e3 ; 0xf62d6 + xor ah, ah ; 30 e4 ; 0xf62d8 + sal ax, 1 ; d1 e0 ; 0xf62da + sal ax, 1 ; d1 e0 ; 0xf62dc + add bx, ax ; 01 c3 ; 0xf62de + push ES ; 06 ; 0xf62e0 + push di ; 57 ; 0xf62e1 + call word [word bx-00002h] ; ff 97 fe ff ; 0xf62e2 + mov dx, ax ; 89 c2 ; 0xf62e6 + mov es, [bp-014h] ; 8e 46 ec ; 0xf62e8 disk.c:596 + mov ax, word [es:di+018h] ; 26 8b 45 18 ; 0xf62eb + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf62ef + les bx, [bp-012h] ; c4 5e ee ; 0xf62f2 disk.c:597 + mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf62f5 + test dl, dl ; 84 d2 ; 0xf62f9 disk.c:599 + je short 0627eh ; 74 81 ; 0xf62fb + mov bx, 00dcch ; bb cc 0d ; 0xf62fd disk.c:600 + mov cx, ds ; 8c d9 ; 0xf6300 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6302 + call 01919h ; e8 11 b6 ; 0xf6305 + mov al, dl ; 88 d0 ; 0xf6308 + xor ah, ah ; 30 e4 ; 0xf630a + push ax ; 50 ; 0xf630c + push word [bp-008h] ; ff 76 f8 ; 0xf630d + mov ax, 0083bh ; b8 3b 08 ; 0xf6310 + push ax ; 50 ; 0xf6313 + mov ax, 0079fh ; b8 9f 07 ; 0xf6314 + push ax ; 50 ; 0xf6317 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6318 + push ax ; 50 ; 0xf631b + call 0195ch ; e8 3d b6 ; 0xf631c + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf631f + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6322 disk.c:601 + xor ah, ah ; 30 e4 ; 0xf6325 + or ah, 00ch ; 80 cc 0c ; 0xf6327 + jmp short 06367h ; eb 3b ; 0xf632a disk.c:602 + or ah, 0b2h ; 80 cc b2 ; 0xf632c disk.c:614 + jmp short 06367h ; eb 36 ; 0xf632f + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6331 disk.c:619 + push ax ; 50 ; 0xf6334 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf6335 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6338 + mov bx, di ; 89 fb ; 0xf633b + mov cx, word [bp-014h] ; 8b 4e ec ; 0xf633d + call 0594ah ; e8 07 f6 ; 0xf6340 + test ax, ax ; 85 c0 ; 0xf6343 + je short 06380h ; 74 39 ; 0xf6345 + jmp short 0635fh ; eb 16 ; 0xf6347 disk.c:620 + cmp ax, strict word 00006h ; 3d 06 00 ; 0xf6349 disk.c:627 + je short 06380h ; 74 32 ; 0xf634c + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf634e + jc short 0635fh ; 72 0c ; 0xf6351 + jbe short 06380h ; 76 2b ; 0xf6353 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf6355 + jc short 0635fh ; 72 05 ; 0xf6358 + cmp ax, strict word 00004h ; 3d 04 00 ; 0xf635a + jbe short 06380h ; 76 21 ; 0xf635d + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf635f disk.c:647 + xor ah, ah ; 30 e4 ; 0xf6362 + or ah, 001h ; 80 cc 01 ; 0xf6364 + mov word [bp+016h], ax ; 89 46 16 ; 0xf6367 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf636a disk.c:649 + xor ah, ah ; 30 e4 ; 0xf636d + mov bx, strict word 00074h ; bb 74 00 ; 0xf636f disk.c:53 + mov dx, strict word 00040h ; ba 40 00 ; 0xf6372 + mov es, dx ; 8e c2 ; 0xf6375 + mov byte [es:bx], al ; 26 88 07 ; 0xf6377 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf637a disk.c:650 + jmp short 06394h ; eb 14 ; 0xf637e disk.c:651 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf6380 disk.c:654 + mov bx, strict word 00074h ; bb 74 00 ; 0xf6384 disk.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6387 + mov es, ax ; 8e c0 ; 0xf638a + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf638c + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6390 disk.c:657 + mov sp, bp ; 89 ec ; 0xf6394 disk.c:659 + pop bp ; 5d ; 0xf6396 + retn ; c3 ; 0xf6397 + ; disGetNextSymbol 0xf6398 LB 0x4ac0 -> off=0x0 cb=0000000000000153 uValue=00000000000f4d98 'int14_function' +int14_function: ; 0xf6398 LB 0x153 + push bp ; 55 ; 0xf6398 serial.c:70 + mov bp, sp ; 89 e5 ; 0xf6399 + push si ; 56 ; 0xf639b + push di ; 57 ; 0xf639c + sti ; fb ; 0xf639d serial.c:75 + mov si, word [bp+00eh] ; 8b 76 0e ; 0xf639e serial.c:77 + sal si, 1 ; d1 e6 ; 0xf63a1 + mov ax, strict word 00040h ; b8 40 00 ; 0xf63a3 serial.c:58 + mov es, ax ; 8e c0 ; 0xf63a6 + mov si, word [es:si] ; 26 8b 34 ; 0xf63a8 + mov bx, si ; 89 f3 ; 0xf63ab serial.c:59 + mov di, word [bp+00eh] ; 8b 7e 0e ; 0xf63ad serial.c:78 + add di, strict byte 0007ch ; 83 c7 7c ; 0xf63b0 + mov cl, byte [es:di] ; 26 8a 0d ; 0xf63b3 serial.c:48 + cmp word [bp+00eh], strict byte 00004h ; 83 7e 0e 04 ; 0xf63b6 serial.c:79 + jnc short 063c0h ; 73 04 ; 0xf63ba + test si, si ; 85 f6 ; 0xf63bc + jnbe short 063c3h ; 77 03 ; 0xf63be + jmp near 064e0h ; e9 1d 01 ; 0xf63c0 + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf63c3 serial.c:80 + cmp AL, strict byte 001h ; 3c 01 ; 0xf63c6 + jc short 063d7h ; 72 0d ; 0xf63c8 + jbe short 06437h ; 76 6b ; 0xf63ca + cmp AL, strict byte 003h ; 3c 03 ; 0xf63cc + je short 0642fh ; 74 5f ; 0xf63ce + cmp AL, strict byte 002h ; 3c 02 ; 0xf63d0 + je short 06432h ; 74 5e ; 0xf63d2 + jmp near 064dah ; e9 03 01 ; 0xf63d4 + test al, al ; 84 c0 ; 0xf63d7 + jne short 06434h ; 75 59 ; 0xf63d9 + lea dx, [bx+003h] ; 8d 57 03 ; 0xf63db serial.c:82 + in AL, DX ; ec ; 0xf63de + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf63df + or AL, strict byte 080h ; 0c 80 ; 0xf63e1 + out DX, AL ; ee ; 0xf63e3 + lea si, [bx+001h] ; 8d 77 01 ; 0xf63e4 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf63e7 serial.c:83 + test AL, strict byte 0e0h ; a8 e0 ; 0xf63ea + jne short 063fah ; 75 0c ; 0xf63ec + mov AL, strict byte 017h ; b0 17 ; 0xf63ee serial.c:84 + mov dx, bx ; 89 da ; 0xf63f0 + out DX, AL ; ee ; 0xf63f2 + mov AL, strict byte 004h ; b0 04 ; 0xf63f3 serial.c:85 + mov dx, si ; 89 f2 ; 0xf63f5 + out DX, AL ; ee ; 0xf63f7 + jmp short 06411h ; eb 17 ; 0xf63f8 serial.c:86 + and AL, strict byte 0e0h ; 24 e0 ; 0xf63fa serial.c:87 + xor ah, ah ; 30 e4 ; 0xf63fc + mov CL, strict byte 005h ; b1 05 ; 0xf63fe + sar ax, CL ; d3 f8 ; 0xf6400 + mov cl, al ; 88 c1 ; 0xf6402 + mov ax, 00600h ; b8 00 06 ; 0xf6404 + sar ax, CL ; d3 f8 ; 0xf6407 + mov dx, bx ; 89 da ; 0xf6409 serial.c:88 + out DX, AL ; ee ; 0xf640b + mov al, ah ; 88 e0 ; 0xf640c serial.c:89 + mov dx, si ; 89 f2 ; 0xf640e + out DX, AL ; ee ; 0xf6410 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6411 serial.c:91 + and AL, strict byte 01fh ; 24 1f ; 0xf6414 + lea dx, [bx+003h] ; 8d 57 03 ; 0xf6416 + out DX, AL ; ee ; 0xf6419 + lea dx, [bx+005h] ; 8d 57 05 ; 0xf641a serial.c:92 + in AL, DX ; ec ; 0xf641d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf641e + mov byte [bp+013h], al ; 88 46 13 ; 0xf6420 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf6423 serial.c:93 + in AL, DX ; ec ; 0xf6426 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6427 + mov byte [bp+012h], al ; 88 46 12 ; 0xf6429 + jmp near 064bbh ; e9 8c 00 ; 0xf642c + jmp near 064c9h ; e9 97 00 ; 0xf642f + jmp short 06482h ; eb 4e ; 0xf6432 + jmp near 064dah ; e9 a3 00 ; 0xf6434 + mov si, strict word 0006ch ; be 6c 00 ; 0xf6437 serial.c:58 + mov si, word [es:si] ; 26 8b 34 ; 0xf643a + lea dx, [bx+005h] ; 8d 57 05 ; 0xf643d serial.c:98 + in AL, DX ; ec ; 0xf6440 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6441 + and ax, strict word 00060h ; 25 60 00 ; 0xf6443 + cmp ax, strict word 00060h ; 3d 60 00 ; 0xf6446 + je short 06464h ; 74 19 ; 0xf6449 + test cl, cl ; 84 c9 ; 0xf644b + je short 06464h ; 74 15 ; 0xf644d + mov di, strict word 0006ch ; bf 6c 00 ; 0xf644f serial.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6452 + mov es, ax ; 8e c0 ; 0xf6455 + mov ax, word [es:di] ; 26 8b 05 ; 0xf6457 + cmp ax, si ; 39 f0 ; 0xf645a serial.c:100 + je short 0643dh ; 74 df ; 0xf645c + mov si, ax ; 89 c6 ; 0xf645e serial.c:101 + db 0feh, 0c9h + ; dec cl ; fe c9 ; 0xf6460 serial.c:102 + jmp short 0643dh ; eb d9 ; 0xf6462 serial.c:104 + test cl, cl ; 84 c9 ; 0xf6464 serial.c:105 + je short 0646eh ; 74 06 ; 0xf6466 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6468 + mov dx, bx ; 89 da ; 0xf646b + out DX, AL ; ee ; 0xf646d + lea dx, [bx+005h] ; 8d 57 05 ; 0xf646e serial.c:106 + in AL, DX ; ec ; 0xf6471 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6472 + mov byte [bp+013h], al ; 88 46 13 ; 0xf6474 + test cl, cl ; 84 c9 ; 0xf6477 serial.c:107 + jne short 064bbh ; 75 40 ; 0xf6479 + or AL, strict byte 080h ; 0c 80 ; 0xf647b + mov byte [bp+013h], al ; 88 46 13 ; 0xf647d + jmp short 064bbh ; eb 39 ; 0xf6480 + mov si, strict word 0006ch ; be 6c 00 ; 0xf6482 serial.c:58 + mov si, word [es:si] ; 26 8b 34 ; 0xf6485 + lea dx, [bx+005h] ; 8d 57 05 ; 0xf6488 serial.c:112 + in AL, DX ; ec ; 0xf648b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf648c + test AL, strict byte 001h ; a8 01 ; 0xf648e + jne short 064abh ; 75 19 ; 0xf6490 + test cl, cl ; 84 c9 ; 0xf6492 + je short 064abh ; 74 15 ; 0xf6494 + mov di, strict word 0006ch ; bf 6c 00 ; 0xf6496 serial.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6499 + mov es, ax ; 8e c0 ; 0xf649c + mov ax, word [es:di] ; 26 8b 05 ; 0xf649e + cmp ax, si ; 39 f0 ; 0xf64a1 serial.c:114 + je short 06488h ; 74 e3 ; 0xf64a3 + mov si, ax ; 89 c6 ; 0xf64a5 serial.c:115 + db 0feh, 0c9h + ; dec cl ; fe c9 ; 0xf64a7 serial.c:116 + jmp short 06488h ; eb dd ; 0xf64a9 serial.c:118 + test cl, cl ; 84 c9 ; 0xf64ab serial.c:119 + je short 064c1h ; 74 12 ; 0xf64ad + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf64af serial.c:120 + mov dx, bx ; 89 da ; 0xf64b3 serial.c:121 + in AL, DX ; ec ; 0xf64b5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf64b6 + mov byte [bp+012h], al ; 88 46 12 ; 0xf64b8 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf64bb serial.c:122 + jmp short 064e4h ; eb 23 ; 0xf64bf + lea dx, [bx+005h] ; 8d 57 05 ; 0xf64c1 serial.c:123 + in AL, DX ; ec ; 0xf64c4 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf64c5 + jmp short 0647dh ; eb b4 ; 0xf64c7 + lea dx, [si+005h] ; 8d 54 05 ; 0xf64c9 serial.c:128 + in AL, DX ; ec ; 0xf64cc + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf64cd + mov byte [bp+013h], al ; 88 46 13 ; 0xf64cf + lea dx, [si+006h] ; 8d 54 06 ; 0xf64d2 serial.c:129 + in AL, DX ; ec ; 0xf64d5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf64d6 + jmp short 064b8h ; eb de ; 0xf64d8 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf64da serial.c:133 + jmp short 064e4h ; eb 04 ; 0xf64de serial.c:135 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf64e0 serial.c:136 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf64e4 serial.c:138 + pop di ; 5f ; 0xf64e7 + pop si ; 5e ; 0xf64e8 + pop bp ; 5d ; 0xf64e9 + retn ; c3 ; 0xf64ea + ; disGetNextSymbol 0xf64eb LB 0x496d -> off=0x0 cb=0000000000000030 uValue=00000000000f4eeb 'set_enable_a20' +set_enable_a20: ; 0xf64eb LB 0x30 + push bp ; 55 ; 0xf64eb system.c:298 + mov bp, sp ; 89 e5 ; 0xf64ec + push bx ; 53 ; 0xf64ee + push cx ; 51 ; 0xf64ef + push dx ; 52 ; 0xf64f0 + mov bx, ax ; 89 c3 ; 0xf64f1 + mov dx, 00092h ; ba 92 00 ; 0xf64f3 system.c:305 + in AL, DX ; ec ; 0xf64f6 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf64f7 + mov cl, al ; 88 c1 ; 0xf64f9 + test bx, bx ; 85 db ; 0xf64fb system.c:308 + je short 06504h ; 74 05 ; 0xf64fd + or AL, strict byte 002h ; 0c 02 ; 0xf64ff system.c:309 + out DX, AL ; ee ; 0xf6501 + jmp short 06507h ; eb 03 ; 0xf6502 system.c:310 + and AL, strict byte 0fdh ; 24 fd ; 0xf6504 system.c:311 + out DX, AL ; ee ; 0xf6506 + test cl, 002h ; f6 c1 02 ; 0xf6507 system.c:313 + je short 06511h ; 74 05 ; 0xf650a + mov ax, strict word 00001h ; b8 01 00 ; 0xf650c + jmp short 06513h ; eb 02 ; 0xf650f + xor ax, ax ; 31 c0 ; 0xf6511 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf6513 system.c:314 + pop dx ; 5a ; 0xf6516 + pop cx ; 59 ; 0xf6517 + pop bx ; 5b ; 0xf6518 + pop bp ; 5d ; 0xf6519 + retn ; c3 ; 0xf651a + ; disGetNextSymbol 0xf651b LB 0x493d -> off=0x3b cb=0000000000000362 uValue=00000000000f4f56 'int15_function' + db 0ech, 0e9h, 0d8h, 0c7h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 086h, 083h, 052h, 04fh, 041h + db 024h, 022h, 000h, 096h, 068h, 091h, 065h, 02fh, 068h, 0a5h, 065h, 02fh, 068h, 02dh, 066h, 0d7h + db 065h, 03bh, 066h, 0dbh, 066h, 04bh, 067h, 051h, 067h, 0d4h, 066h, 0d4h, 066h, 016h, 068h, 041h + db 068h, 054h, 068h, 02fh, 068h, 068h, 068h, 071h, 068h, 077h, 068h +int15_function: ; 0xf6556 LB 0x362 + push bp ; 55 ; 0xf6556 system.c:335 + mov bp, sp ; 89 e5 ; 0xf6557 + push si ; 56 ; 0xf6559 + push di ; 57 ; 0xf655a + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf655b system.c:342 + xor ah, ah ; 30 e4 ; 0xf655e + mov dx, ax ; 89 c2 ; 0xf6560 + cmp ax, 000ech ; 3d ec 00 ; 0xf6562 + jnbe short 0659bh ; 77 34 ; 0xf6565 + push CS ; 0e ; 0xf6567 + pop ES ; 07 ; 0xf6568 + mov cx, strict word 00014h ; b9 14 00 ; 0xf6569 + mov di, 0651bh ; bf 1b 65 ; 0xf656c + repne scasb ; f2 ae ; 0xf656f + sal cx, 1 ; d1 e1 ; 0xf6571 + mov di, cx ; 89 cf ; 0xf6573 + mov si, word [cs:di+0652eh] ; 2e 8b b5 2e 65 ; 0xf6575 + mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf657a + xor bh, bh ; 30 ff ; 0xf657d + mov cx, word [bp+018h] ; 8b 4e 18 ; 0xf657f + and cl, 0feh ; 80 e1 fe ; 0xf6582 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf6585 + or AL, strict byte 001h ; 0c 01 ; 0xf6588 + mov dx, bx ; 89 da ; 0xf658a + or dh, 086h ; 80 ce 86 ; 0xf658c + jmp si ; ff e6 ; 0xf658f + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6591 system.c:344 + xor ah, ah ; 30 e4 ; 0xf6594 + cmp ax, 000c0h ; 3d c0 00 ; 0xf6596 + je short 0659eh ; 74 03 ; 0xf6599 + jmp near 06896h ; e9 f8 02 ; 0xf659b system.c:345 + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf659e system.c:351 + jmp near 06838h ; e9 93 02 ; 0xf65a2 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf65a5 system.c:355 + xor ah, ah ; 30 e4 ; 0xf65a8 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf65aa + jc short 065bdh ; 72 0e ; 0xf65ad + jbe short 065d1h ; 76 20 ; 0xf65af + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf65b1 + je short 065feh ; 74 48 ; 0xf65b4 + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf65b6 + je short 065e1h ; 74 26 ; 0xf65b9 + jmp short 0660bh ; eb 4e ; 0xf65bb + test ax, ax ; 85 c0 ; 0xf65bd + jne short 0660bh ; 75 4a ; 0xf65bf + xor ax, ax ; 31 c0 ; 0xf65c1 system.c:357 + call 064ebh ; e8 25 ff ; 0xf65c3 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf65c6 system.c:358 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf65ca system.c:359 + jmp near 066d4h ; e9 03 01 ; 0xf65ce system.c:360 + mov ax, strict word 00001h ; b8 01 00 ; 0xf65d1 system.c:362 + call 064ebh ; e8 14 ff ; 0xf65d4 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf65d7 system.c:363 + mov byte [bp+013h], bh ; 88 7e 13 ; 0xf65db system.c:364 + jmp near 066d4h ; e9 f3 00 ; 0xf65de system.c:365 + mov dx, 00092h ; ba 92 00 ; 0xf65e1 system.c:367 + in AL, DX ; ec ; 0xf65e4 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf65e5 + shr ax, 1 ; d1 e8 ; 0xf65e7 + and ax, strict word 00001h ; 25 01 00 ; 0xf65e9 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf65ec + mov dl, al ; 88 c2 ; 0xf65ef + mov word [bp+012h], dx ; 89 56 12 ; 0xf65f1 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf65f4 system.c:368 + mov byte [bp+013h], ah ; 88 66 13 ; 0xf65f8 system.c:369 + jmp near 066d4h ; e9 d6 00 ; 0xf65fb system.c:370 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf65fe system.c:372 + mov byte [bp+013h], ah ; 88 66 13 ; 0xf6602 system.c:373 + mov word [bp+00ch], ax ; 89 46 0c ; 0xf6605 system.c:374 + jmp near 066d4h ; e9 c9 00 ; 0xf6608 system.c:375 + mov bx, 00dcch ; bb cc 0d ; 0xf660b system.c:377 + mov cx, ds ; 8c d9 ; 0xf660e + mov ax, strict word 00004h ; b8 04 00 ; 0xf6610 + call 01919h ; e8 03 b3 ; 0xf6613 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6616 + xor ah, ah ; 30 e4 ; 0xf6619 + push ax ; 50 ; 0xf661b + mov ax, 00874h ; b8 74 08 ; 0xf661c + push ax ; 50 ; 0xf661f + mov ax, strict word 00004h ; b8 04 00 ; 0xf6620 + push ax ; 50 ; 0xf6623 + call 0195ch ; e8 35 b3 ; 0xf6624 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6627 + jmp near 0682fh ; e9 02 02 ; 0xf662a + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf662d system.c:398 + xor ah, ah ; 30 e4 ; 0xf6630 + or ah, 086h ; 80 cc 86 ; 0xf6632 + mov word [bp+012h], ax ; 89 46 12 ; 0xf6635 + jmp near 0688fh ; e9 54 02 ; 0xf6638 + test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf663b system.c:409 + jne short 066a3h ; 75 62 ; 0xf663f + mov bx, 000a0h ; bb a0 00 ; 0xf6641 system.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf6644 + mov es, dx ; 8e c2 ; 0xf6647 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf6649 + test dl, 001h ; f6 c2 01 ; 0xf664c system.c:49 + jne short 0669dh ; 75 4c ; 0xf664f + mov DL, strict byte 001h ; b2 01 ; 0xf6651 system.c:51 + mov byte [es:bx], dl ; 26 88 17 ; 0xf6653 system.c:53 + mov bx, 00098h ; bb 98 00 ; 0xf6656 system.c:61 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf6659 + mov word [es:bx], dx ; 26 89 17 ; 0xf665c system.c:63 + mov bx, 0009ah ; bb 9a 00 ; 0xf665f system.c:61 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf6662 + mov word [es:bx], dx ; 26 89 17 ; 0xf6665 system.c:63 + mov bx, 0009ch ; bb 9c 00 ; 0xf6668 system.c:61 + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf666b + mov word [es:bx], dx ; 26 89 17 ; 0xf666e system.c:63 + mov bx, 0009eh ; bb 9e 00 ; 0xf6671 system.c:61 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6674 + mov word [es:bx], ax ; 26 89 07 ; 0xf6677 system.c:63 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf667a system.c:418 + mov dx, 000a1h ; ba a1 00 ; 0xf667e system.c:420 + in AL, DX ; ec ; 0xf6681 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6682 + and AL, strict byte 0feh ; 24 fe ; 0xf6684 system.c:421 + out DX, AL ; ee ; 0xf6686 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6687 system.c:422 + call 01664h ; e8 d7 af ; 0xf668a + mov dl, al ; 88 c2 ; 0xf668d system.c:424 + or dl, 040h ; 80 ca 40 ; 0xf668f + xor dh, dh ; 30 f6 ; 0xf6692 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6694 + call 0167fh ; e8 e5 af ; 0xf6697 + jmp near 066d4h ; e9 37 00 ; 0xf669a system.c:425 + mov word [bp+018h], ax ; 89 46 18 ; 0xf669d system.c:428 + jmp near 066d4h ; e9 31 00 ; 0xf66a0 system.c:430 + cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf66a3 + jne short 066c5h ; 75 1d ; 0xf66a6 + mov bx, 000a0h ; bb a0 00 ; 0xf66a8 system.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf66ab + mov es, ax ; 8e c0 ; 0xf66ae + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf66b0 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf66b4 system.c:433 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf66b8 system.c:434 + call 01664h ; e8 a6 af ; 0xf66bb + mov dl, al ; 88 c2 ; 0xf66be system.c:435 + and dl, 0bfh ; 80 e2 bf ; 0xf66c0 + jmp short 06692h ; eb cd ; 0xf66c3 + mov word [bp+018h], ax ; 89 46 18 ; 0xf66c5 system.c:438 + mov ax, dx ; 89 d0 ; 0xf66c8 system.c:440 + xor ah, dh ; 30 f4 ; 0xf66ca + xor dl, bl ; 30 da ; 0xf66cc + dec ax ; 48 ; 0xf66ce + or dx, ax ; 09 c2 ; 0xf66cf + mov word [bp+012h], dx ; 89 56 12 ; 0xf66d1 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf66d4 system.c:443 + pop di ; 5f ; 0xf66d7 + pop si ; 5e ; 0xf66d8 + pop bp ; 5d ; 0xf66d9 + retn ; c3 ; 0xf66da + mov bx, 000a0h ; bb a0 00 ; 0xf66db system.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf66de + mov es, ax ; 8e c0 ; 0xf66e1 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf66e3 + test AL, strict byte 001h ; a8 01 ; 0xf66e6 system.c:49 + jne short 06745h ; 75 5b ; 0xf66e8 + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf66ea system.c:53 + mov bx, 00098h ; bb 98 00 ; 0xf66ee system.c:63 + mov [es:bx], es ; 26 8c 07 ; 0xf66f1 + mov bx, 0009ah ; bb 9a 00 ; 0xf66f4 system.c:63 + mov word [es:bx], 000a0h ; 26 c7 07 a0 00 ; 0xf66f7 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf66fc system.c:61 + mov bx, 0009ch ; bb 9c 00 ; 0xf66ff system.c:63 + mov word [es:bx], ax ; 26 89 07 ; 0xf6702 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6705 system.c:61 + mov bx, 0009eh ; bb 9e 00 ; 0xf6708 system.c:63 + mov word [es:bx], ax ; 26 89 07 ; 0xf670b + mov dx, 000a1h ; ba a1 00 ; 0xf670e system.c:456 + in AL, DX ; ec ; 0xf6711 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6712 + and AL, strict byte 0feh ; 24 fe ; 0xf6714 system.c:457 + out DX, AL ; ee ; 0xf6716 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6717 system.c:458 + call 01664h ; e8 47 af ; 0xf671a + mov dl, al ; 88 c2 ; 0xf671d system.c:460 + or dl, 040h ; 80 ca 40 ; 0xf671f + xor dh, dh ; 30 f6 ; 0xf6722 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6724 + call 0167fh ; e8 55 af ; 0xf6727 + sti ; fb ; 0xf672a system.c:462 + hlt ; f4 ; 0xf672b system.c:464 + mov bx, 000a0h ; bb a0 00 ; 0xf672c system.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf672f + mov es, ax ; 8e c0 ; 0xf6732 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6734 + test AL, strict byte 080h ; a8 80 ; 0xf6737 system.c:467 + je short 0672bh ; 74 f0 ; 0xf6739 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf673b system.c:53 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf673f system.c:469 + jmp short 066d4h ; eb 8f ; 0xf6743 system.c:470 + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf6745 system.c:473 + jmp short 066d4h ; eb 89 ; 0xf6749 system.c:475 + mov word [bp+012h], dx ; 89 56 12 ; 0xf674b system.c:497 + jmp near 0669dh ; e9 4c ff ; 0xf674e + cli ; fa ; 0xf6751 system.c:509 + mov ax, strict word 00001h ; b8 01 00 ; 0xf6752 system.c:511 + call 064ebh ; e8 93 fd ; 0xf6755 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6758 system.c:514 + add bx, strict byte 00038h ; 83 c3 38 ; 0xf675b + mov es, [bp+014h] ; 8e 46 14 ; 0xf675e system.c:61 + mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6761 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6766 system.c:515 + add bx, strict byte 0003ah ; 83 c3 3a ; 0xf6769 + mov es, [bp+014h] ; 8e 46 14 ; 0xf676c system.c:61 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf676f + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6774 system.c:516 + add bx, strict byte 0003ch ; 83 c3 3c ; 0xf6777 + mov es, [bp+014h] ; 8e 46 14 ; 0xf677a system.c:51 + mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf677d system.c:53 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6781 system.c:517 + add bx, strict byte 0003dh ; 83 c3 3d ; 0xf6784 + mov es, [bp+014h] ; 8e 46 14 ; 0xf6787 system.c:51 + mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf678a + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf678e system.c:518 + add bx, strict byte 0003eh ; 83 c3 3e ; 0xf6791 + mov es, [bp+014h] ; 8e 46 14 ; 0xf6794 system.c:61 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6797 system.c:63 + mov AL, strict byte 011h ; b0 11 ; 0xf679c system.c:521 + mov dx, strict word 00020h ; ba 20 00 ; 0xf679e + out DX, AL ; ee ; 0xf67a1 + mov dx, 000a0h ; ba a0 00 ; 0xf67a2 system.c:522 + out DX, AL ; ee ; 0xf67a5 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf67a6 system.c:523 + mov dx, strict word 00021h ; ba 21 00 ; 0xf67a9 + out DX, AL ; ee ; 0xf67ac + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf67ad system.c:524 + mov dx, 000a1h ; ba a1 00 ; 0xf67b0 + out DX, AL ; ee ; 0xf67b3 + mov AL, strict byte 004h ; b0 04 ; 0xf67b4 system.c:525 + mov dx, strict word 00021h ; ba 21 00 ; 0xf67b6 + out DX, AL ; ee ; 0xf67b9 + mov AL, strict byte 002h ; b0 02 ; 0xf67ba system.c:526 + mov dx, 000a1h ; ba a1 00 ; 0xf67bc + out DX, AL ; ee ; 0xf67bf + mov AL, strict byte 001h ; b0 01 ; 0xf67c0 system.c:527 + mov dx, strict word 00021h ; ba 21 00 ; 0xf67c2 + out DX, AL ; ee ; 0xf67c5 + mov dx, 000a1h ; ba a1 00 ; 0xf67c6 system.c:528 + out DX, AL ; ee ; 0xf67c9 + mov AL, strict byte 0ffh ; b0 ff ; 0xf67ca system.c:530 + mov dx, strict word 00021h ; ba 21 00 ; 0xf67cc + out DX, AL ; ee ; 0xf67cf + mov dx, 000a1h ; ba a1 00 ; 0xf67d0 system.c:531 + out DX, AL ; ee ; 0xf67d3 + mov si, word [bp+006h] ; 8b 76 06 ; 0xf67d4 system.c:533 + lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf67d7 + lidt [es:si+010h] ; 26 0f 01 5c 10 ; 0xf67dc + push strict byte 00038h ; 6a 38 ; 0xf67e1 + call 067e6h ; e8 00 00 ; 0xf67e3 + pop ax ; 58 ; 0xf67e6 + add ax, strict byte 0000eh ; 83 c0 0e ; 0xf67e7 + push ax ; 50 ; 0xf67ea + smsw ax ; 0f 01 e0 ; 0xf67eb + or AL, strict byte 001h ; 0c 01 ; 0xf67ee + lmsw ax ; 0f 01 f0 ; 0xf67f0 + retf ; cb ; 0xf67f3 + mov ax, strict word 00018h ; b8 18 00 ; 0xf67f4 + mov ds, ax ; 8e d8 ; 0xf67f7 + add AL, strict byte 008h ; 04 08 ; 0xf67f9 + mov es, ax ; 8e c0 ; 0xf67fb + add AL, strict byte 008h ; 04 08 ; 0xf67fd + mov ss, ax ; 8e d0 ; 0xf67ff + lea ax, [bp+004h] ; 8d 46 04 ; 0xf6801 system.c:534 + db 08bh, 0e0h + ; mov sp, ax ; 8b e0 ; 0xf6804 + popaw ; 61 ; 0xf6806 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6807 + pop cx ; 59 ; 0xf680a + pop ax ; 58 ; 0xf680b + pop ax ; 58 ; 0xf680c + mov ax, strict word 00030h ; b8 30 00 ; 0xf680d + push ax ; 50 ; 0xf6810 + push cx ; 51 ; 0xf6811 + retf ; cb ; 0xf6812 + jmp near 066d4h ; e9 be fe ; 0xf6813 system.c:540 + mov bx, 00dcch ; bb cc 0d ; 0xf6816 system.c:547 + mov cx, ds ; 8c d9 ; 0xf6819 + mov ax, strict word 00004h ; b8 04 00 ; 0xf681b + call 01919h ; e8 f8 b0 ; 0xf681e + mov ax, 008b4h ; b8 b4 08 ; 0xf6821 + push ax ; 50 ; 0xf6824 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6825 + push ax ; 50 ; 0xf6828 + call 0195ch ; e8 30 b1 ; 0xf6829 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf682c + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf682f + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6833 + xor ah, ah ; 30 e4 ; 0xf6836 + or ah, 086h ; 80 cc 86 ; 0xf6838 + mov word [bp+012h], ax ; 89 46 12 ; 0xf683b + jmp near 066d4h ; e9 93 fe ; 0xf683e + mov word [bp+018h], cx ; 89 4e 18 ; 0xf6841 system.c:553 + mov word [bp+012h], bx ; 89 5e 12 ; 0xf6844 system.c:554 + mov word [bp+00ch], 0e6f5h ; c7 46 0c f5 e6 ; 0xf6847 system.c:555 + mov word [bp+014h], 0f000h ; c7 46 14 00 f0 ; 0xf684c system.c:556 + jmp near 066d4h ; e9 80 fe ; 0xf6851 system.c:557 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6854 system.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6857 + mov es, ax ; 8e c0 ; 0xf685a + mov ax, word [es:bx] ; 26 8b 07 ; 0xf685c + mov word [bp+014h], ax ; 89 46 14 ; 0xf685f system.c:59 + mov word [bp+018h], cx ; 89 4e 18 ; 0xf6862 system.c:561 + jmp near 066d4h ; e9 6c fe ; 0xf6865 system.c:562 + mov ax, 008e3h ; b8 e3 08 ; 0xf6868 system.c:565 + push ax ; 50 ; 0xf686b + mov ax, strict word 00008h ; b8 08 00 ; 0xf686c + jmp short 06828h ; eb b7 ; 0xf686f + mov word [bp+018h], ax ; 89 46 18 ; 0xf6871 system.c:573 + jmp near 066d1h ; e9 5a fe ; 0xf6874 + test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf6877 system.c:577 + jne short 06896h ; 75 19 ; 0xf687b + mov word [bp+012h], bx ; 89 5e 12 ; 0xf687d system.c:579 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6880 system.c:580 + xor ah, ah ; 30 e4 ; 0xf6883 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf6885 + jc short 0688fh ; 72 05 ; 0xf6888 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf688a + jbe short 06862h ; 76 d3 ; 0xf688d + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf688f system.c:583 + jmp near 066d4h ; e9 3e fe ; 0xf6893 system.c:584 + mov bx, 00dcch ; bb cc 0d ; 0xf6896 system.c:588 + mov cx, ds ; 8c d9 ; 0xf6899 + mov ax, strict word 00004h ; b8 04 00 ; 0xf689b + call 01919h ; e8 78 b0 ; 0xf689e + push word [bp+00ch] ; ff 76 0c ; 0xf68a1 + push word [bp+012h] ; ff 76 12 ; 0xf68a4 + mov ax, 008fah ; b8 fa 08 ; 0xf68a7 + push ax ; 50 ; 0xf68aa + mov ax, strict word 00004h ; b8 04 00 ; 0xf68ab + push ax ; 50 ; 0xf68ae + call 0195ch ; e8 aa b0 ; 0xf68af + add sp, strict byte 00008h ; 83 c4 08 ; 0xf68b2 + jmp near 0682fh ; e9 77 ff ; 0xf68b5 + ; disGetNextSymbol 0xf68b8 LB 0x45a0 -> off=0x0 cb=000000000000018f uValue=00000000000f52b8 'inv_op_handler' +inv_op_handler: ; 0xf68b8 LB 0x18f + push bp ; 55 ; 0xf68b8 invop.c:247 + mov bp, sp ; 89 e5 ; 0xf68b9 + push si ; 56 ; 0xf68bb + push di ; 57 ; 0xf68bc + push ax ; 50 ; 0xf68bd + push ax ; 50 ; 0xf68be + les bx, [bp+018h] ; c4 5e 18 ; 0xf68bf invop.c:249 + cmp byte [es:bx], 0f0h ; 26 80 3f f0 ; 0xf68c2 invop.c:251 + jne short 068ceh ; 75 06 ; 0xf68c6 + inc word [bp+018h] ; ff 46 18 ; 0xf68c8 invop.c:253 + jmp near 06a40h ; e9 72 01 ; 0xf68cb invop.c:254 + cmp word [es:bx], 0050fh ; 26 81 3f 0f 05 ; 0xf68ce + je short 068d8h ; 74 03 ; 0xf68d3 + jmp near 06a3ch ; e9 64 01 ; 0xf68d5 + mov si, 00800h ; be 00 08 ; 0xf68d8 invop.c:256 + xor ax, ax ; 31 c0 ; 0xf68db + mov word [bp-008h], ax ; 89 46 f8 ; 0xf68dd + mov word [bp-006h], ax ; 89 46 fa ; 0xf68e0 invop.c:259 + mov es, ax ; 8e c0 ; 0xf68e3 invop.c:267 + mov bx, word [es:si+02ch] ; 26 8b 5c 2c ; 0xf68e5 + sub bx, strict byte 00006h ; 83 eb 06 ; 0xf68e9 + mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf68ec + mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf68f0 invop.c:268 + mov es, dx ; 8e c2 ; 0xf68f4 + mov word [es:bx], ax ; 26 89 07 ; 0xf68f6 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf68f9 invop.c:269 + mov ax, word [es:si+022h] ; 26 8b 44 22 ; 0xf68fc + mov es, dx ; 8e c2 ; 0xf6900 + mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6902 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf6906 invop.c:270 + mov ax, word [es:si+018h] ; 26 8b 44 18 ; 0xf6909 + mov es, dx ; 8e c2 ; 0xf690d + mov word [es:bx+004h], ax ; 26 89 47 04 ; 0xf690f + mov es, [bp-008h] ; 8e 46 f8 ; 0xf6913 invop.c:273 + mov bl, byte [es:si+038h] ; 26 8a 5c 38 ; 0xf6916 + xor bh, bh ; 30 ff ; 0xf691a + mov di, word [es:si+036h] ; 26 8b 7c 36 ; 0xf691c + mov ax, word [es:si+024h] ; 26 8b 44 24 ; 0xf6920 invop.c:274 + xor dx, dx ; 31 d2 ; 0xf6924 + mov cx, strict word 00004h ; b9 04 00 ; 0xf6926 + sal ax, 1 ; d1 e0 ; 0xf6929 + rcl dx, 1 ; d1 d2 ; 0xf692b + loop 06929h ; e2 fa ; 0xf692d + cmp bx, dx ; 39 d3 ; 0xf692f + jne short 06937h ; 75 04 ; 0xf6931 + cmp di, ax ; 39 c7 ; 0xf6933 + je short 0693ch ; 74 05 ; 0xf6935 + mov word [bp-006h], strict word 00001h ; c7 46 fa 01 00 ; 0xf6937 invop.c:275 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf693c invop.c:276 + mov bl, byte [es:si+04ah] ; 26 8a 5c 4a ; 0xf693f + xor bh, bh ; 30 ff ; 0xf6943 + mov di, word [es:si+048h] ; 26 8b 7c 48 ; 0xf6945 + mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf6949 invop.c:277 + xor dx, dx ; 31 d2 ; 0xf694d + mov cx, strict word 00004h ; b9 04 00 ; 0xf694f + sal ax, 1 ; d1 e0 ; 0xf6952 + rcl dx, 1 ; d1 d2 ; 0xf6954 + loop 06952h ; e2 fa ; 0xf6956 + cmp bx, dx ; 39 d3 ; 0xf6958 + jne short 06960h ; 75 04 ; 0xf695a + cmp di, ax ; 39 c7 ; 0xf695c + je short 06964h ; 74 04 ; 0xf695e + or byte [bp-006h], 002h ; 80 4e fa 02 ; 0xf6960 invop.c:278 + xor ax, ax ; 31 c0 ; 0xf6964 invop.c:281 + push ax ; 50 ; 0xf6966 + mov ax, 00800h ; b8 00 08 ; 0xf6967 + push ax ; 50 ; 0xf696a + mov ax, strict word 0001fh ; b8 1f 00 ; 0xf696b + push ax ; 50 ; 0xf696e + db 08bh, 0dch + ; mov bx, sp ; 8b dc ; 0xf696f + lgdt [ss:bx] ; 36 0f 01 17 ; 0xf6971 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6975 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf6978 invop.c:284 + mov ax, word [es:si+03ah] ; 26 8b 44 3a ; 0xf697b + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf697f + mov ax, word [es:si+036h] ; 26 8b 44 36 ; 0xf6983 invop.c:285 + mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf6987 + mov dh, byte [es:si+039h] ; 26 8a 74 39 ; 0xf698b invop.c:286 + mov dl, byte [es:si+038h] ; 26 8a 54 38 ; 0xf698f + mov word [es:si+00ch], dx ; 26 89 54 0c ; 0xf6993 + mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00 ; 0xf6997 invop.c:287 + mov ax, word [es:si+04ch] ; 26 8b 44 4c ; 0xf699d invop.c:290 + mov word [es:si], ax ; 26 89 04 ; 0xf69a1 + mov ax, word [es:si+048h] ; 26 8b 44 48 ; 0xf69a4 invop.c:291 + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf69a8 + mov dh, byte [es:si+04bh] ; 26 8a 74 4b ; 0xf69ac invop.c:292 + mov dl, byte [es:si+04ah] ; 26 8a 54 4a ; 0xf69b0 + xor ah, ah ; 30 e4 ; 0xf69b4 + mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf69b6 + mov al, byte [es:si+05ch] ; 26 8a 44 5c ; 0xf69ba invop.c:295 + mov dx, word [es:si+05ah] ; 26 8b 54 5a ; 0xf69be + push ax ; 50 ; 0xf69c2 invop.c:296 + push dx ; 52 ; 0xf69c3 + push word [es:si+05eh] ; 26 ff 74 5e ; 0xf69c4 + db 08bh, 0dch + ; mov bx, sp ; 8b dc ; 0xf69c8 + lidt [ss:bx] ; 36 0f 01 1f ; 0xf69ca + add sp, strict byte 00006h ; 83 c4 06 ; 0xf69ce + mov cx, word [bp-006h] ; 8b 4e fa ; 0xf69d1 invop.c:299 + mov ax, 00080h ; b8 80 00 ; 0xf69d4 + mov ss, ax ; 8e d0 ; 0xf69d7 + mov ax, word [ss:0001eh] ; 36 a1 1e 00 ; 0xf69d9 + mov ds, ax ; 8e d8 ; 0xf69dd + mov ax, word [ss:00024h] ; 36 a1 24 00 ; 0xf69df + mov es, ax ; 8e c0 ; 0xf69e3 + smsw ax ; 0f 01 e0 ; 0xf69e5 invop.c:300 + inc ax ; 40 ; 0xf69e8 + lmsw ax ; 0f 01 f0 ; 0xf69e9 + mov ax, strict word 00008h ; b8 08 00 ; 0xf69ec + test cx, strict word 00001h ; f7 c1 01 00 ; 0xf69ef + je near 069f9h ; 0f 84 02 00 ; 0xf69f3 + mov es, ax ; 8e c0 ; 0xf69f7 + test cx, strict word 00002h ; f7 c1 02 00 ; 0xf69f9 + je near 06a21h ; 0f 84 20 00 ; 0xf69fd + mov bx, word [word ss:00000h] ; 36 8b 1e 00 00 ; 0xf6a01 + mov word [word ss:00008h], bx ; 36 89 1e 08 00 ; 0xf6a06 + mov bx, word [word ss:00002h] ; 36 8b 1e 02 00 ; 0xf6a0b + mov word [word ss:0000ah], bx ; 36 89 1e 0a 00 ; 0xf6a10 + mov bx, word [word ss:00004h] ; 36 8b 1e 04 00 ; 0xf6a15 + mov word [word ss:0000ch], bx ; 36 89 1e 0c 00 ; 0xf6a1a + mov ds, ax ; 8e d8 ; 0xf6a1f + mov eax, cr0 ; 0f 20 c0 ; 0xf6a21 + dec ax ; 48 ; 0xf6a24 + mov cr0, eax ; 0f 22 c0 ; 0xf6a25 + mov sp, strict word 00026h ; bc 26 00 ; 0xf6a28 invop.c:301 + popaw ; 61 ; 0xf6a2b + mov sp, word [word ss:0002ch] ; 36 8b 26 2c 00 ; 0xf6a2c + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6a31 + mov ss, [word ss:00020h] ; 36 8e 16 20 00 ; 0xf6a34 + iret ; cf ; 0xf6a39 + jmp short 06a40h ; eb 04 ; 0xf6a3a invop.c:353 + sti ; fb ; 0xf6a3c invop.c:357 + hlt ; f4 ; 0xf6a3d invop.c:358 + jmp short 06a3dh ; eb fd ; 0xf6a3e + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6a40 invop.c:360 + pop di ; 5f ; 0xf6a43 + pop si ; 5e ; 0xf6a44 + pop bp ; 5d ; 0xf6a45 + retn ; c3 ; 0xf6a46 + ; disGetNextSymbol 0xf6a47 LB 0x4411 -> off=0x0 cb=0000000000000028 uValue=00000000000f5447 'init_rtc' +init_rtc: ; 0xf6a47 LB 0x28 + push bp ; 55 ; 0xf6a47 timepci.c:84 + mov bp, sp ; 89 e5 ; 0xf6a48 + push dx ; 52 ; 0xf6a4a + mov dx, strict word 00026h ; ba 26 00 ; 0xf6a4b timepci.c:86 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6a4e + call 0167fh ; e8 2b ac ; 0xf6a51 + mov dx, strict word 00002h ; ba 02 00 ; 0xf6a54 timepci.c:87 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6a57 + call 0167fh ; e8 22 ac ; 0xf6a5a + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6a5d timepci.c:88 + call 01664h ; e8 01 ac ; 0xf6a60 + mov ax, strict word 0000dh ; b8 0d 00 ; 0xf6a63 timepci.c:89 + call 01664h ; e8 fb ab ; 0xf6a66 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6a69 timepci.c:90 + pop dx ; 5a ; 0xf6a6c + pop bp ; 5d ; 0xf6a6d + retn ; c3 ; 0xf6a6e + ; disGetNextSymbol 0xf6a6f LB 0x43e9 -> off=0x0 cb=0000000000000021 uValue=00000000000f546f 'rtc_updating' +rtc_updating: ; 0xf6a6f LB 0x21 + push bp ; 55 ; 0xf6a6f timepci.c:92 + mov bp, sp ; 89 e5 ; 0xf6a70 + push dx ; 52 ; 0xf6a72 + mov dx, 061a8h ; ba a8 61 ; 0xf6a73 timepci.c:105 + dec dx ; 4a ; 0xf6a76 timepci.c:106 + je short 06a87h ; 74 0e ; 0xf6a77 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6a79 timepci.c:107 + call 01664h ; e8 e5 ab ; 0xf6a7c + test AL, strict byte 080h ; a8 80 ; 0xf6a7f + jne short 06a76h ; 75 f3 ; 0xf6a81 + xor ax, ax ; 31 c0 ; 0xf6a83 timepci.c:108 + jmp short 06a8ah ; eb 03 ; 0xf6a85 + mov ax, strict word 00001h ; b8 01 00 ; 0xf6a87 timepci.c:110 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6a8a timepci.c:111 + pop dx ; 5a ; 0xf6a8d + pop bp ; 5d ; 0xf6a8e + retn ; c3 ; 0xf6a8f + ; disGetNextSymbol 0xf6a90 LB 0x43c8 -> off=0x0 cb=0000000000000098 uValue=00000000000f5490 'int70_function' +int70_function: ; 0xf6a90 LB 0x98 + push bp ; 55 ; 0xf6a90 timepci.c:120 + mov bp, sp ; 89 e5 ; 0xf6a91 + push si ; 56 ; 0xf6a93 + push ax ; 50 ; 0xf6a94 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6a95 timepci.c:126 + call 01664h ; e8 c9 ab ; 0xf6a98 + mov bl, al ; 88 c3 ; 0xf6a9b + mov byte [bp-004h], al ; 88 46 fc ; 0xf6a9d + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6aa0 timepci.c:127 + call 01664h ; e8 be ab ; 0xf6aa3 + mov dl, al ; 88 c2 ; 0xf6aa6 + test bl, 060h ; f6 c3 60 ; 0xf6aa8 timepci.c:129 + je short 06b08h ; 74 5b ; 0xf6aab + test AL, strict byte 020h ; a8 20 ; 0xf6aad timepci.c:130 + je short 06ab5h ; 74 04 ; 0xf6aaf + sti ; fb ; 0xf6ab1 timepci.c:132 + int 04ah ; cd 4a ; 0xf6ab2 timepci.c:133 + cli ; fa ; 0xf6ab4 timepci.c:134 + test dl, 040h ; f6 c2 40 ; 0xf6ab5 timepci.c:136 + je short 06b1fh ; 74 65 ; 0xf6ab8 + mov bx, 000a0h ; bb a0 00 ; 0xf6aba timepci.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf6abd + mov es, dx ; 8e c2 ; 0xf6ac0 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6ac2 + test al, al ; 84 c0 ; 0xf6ac5 timepci.c:49 + je short 06b1fh ; 74 56 ; 0xf6ac7 + mov bx, 0009ch ; bb 9c 00 ; 0xf6ac9 timepci.c:68 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf6acc + mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf6acf + test bx, bx ; 85 db ; 0xf6ad3 timepci.c:144 + jne short 06b0ah ; 75 33 ; 0xf6ad5 + cmp dx, 003d1h ; 81 fa d1 03 ; 0xf6ad7 + jnc short 06b0ah ; 73 2d ; 0xf6adb + mov bx, 00098h ; bb 98 00 ; 0xf6add timepci.c:58 + mov cx, word [es:bx] ; 26 8b 0f ; 0xf6ae0 + mov bx, 0009ah ; bb 9a 00 ; 0xf6ae3 timepci.c:58 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf6ae6 + mov si, 000a0h ; be a0 00 ; 0xf6ae9 timepci.c:53 + mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf6aec + mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6af0 timepci.c:151 + and dl, 037h ; 80 e2 37 ; 0xf6af3 + xor dh, dh ; 30 f6 ; 0xf6af6 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6af8 + call 0167fh ; e8 81 ab ; 0xf6afb + mov es, cx ; 8e c1 ; 0xf6afe timepci.c:48 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6b00 + or AL, strict byte 080h ; 0c 80 ; 0xf6b03 timepci.c:49 + mov byte [es:bx], al ; 26 88 07 ; 0xf6b05 timepci.c:53 + jmp short 06b1fh ; eb 15 ; 0xf6b08 timepci.c:153 + mov cx, dx ; 89 d1 ; 0xf6b0a timepci.c:155 + add cx, 0fc2fh ; 81 c1 2f fc ; 0xf6b0c + mov dx, bx ; 89 da ; 0xf6b10 + adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf6b12 + mov bx, 0009ch ; bb 9c 00 ; 0xf6b15 timepci.c:73 + mov word [es:bx], cx ; 26 89 0f ; 0xf6b18 + mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf6b1b + call 0e030h ; e8 0e 75 ; 0xf6b1f timepci.c:161 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6b22 timepci.c:162 + pop si ; 5e ; 0xf6b25 + pop bp ; 5d ; 0xf6b26 + retn ; c3 ; 0xf6b27 + ; disGetNextSymbol 0xf6b28 LB 0x4330 -> off=0x10 cb=00000000000001d9 uValue=00000000000f5538 'int1a_function' + db 04eh, 06bh, 075h, 06bh, 09ah, 06bh, 0d6h, 06bh, 028h, 06ch, 05fh, 06ch, 0a6h, 06ch, 001h, 06dh +int1a_function: ; 0xf6b38 LB 0x1d9 + push bp ; 55 ; 0xf6b38 timepci.c:167 + mov bp, sp ; 89 e5 ; 0xf6b39 + sti ; fb ; 0xf6b3b timepci.c:173 + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6b3c timepci.c:175 + cmp AL, strict byte 007h ; 3c 07 ; 0xf6b3f + jnbe short 06ba1h ; 77 5e ; 0xf6b41 + mov bl, al ; 88 c3 ; 0xf6b43 + xor bh, bh ; 30 ff ; 0xf6b45 + sal bx, 1 ; d1 e3 ; 0xf6b47 + jmp word [cs:bx+06b28h] ; 2e ff a7 28 6b ; 0xf6b49 + cli ; fa ; 0xf6b4e timepci.c:177 + mov bx, 0046eh ; bb 6e 04 ; 0xf6b4f timepci.c:178 + xor ax, ax ; 31 c0 ; 0xf6b52 + mov es, ax ; 8e c0 ; 0xf6b54 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf6b56 + mov word [bp+010h], ax ; 89 46 10 ; 0xf6b59 + mov bx, 0046ch ; bb 6c 04 ; 0xf6b5c timepci.c:179 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf6b5f + mov word [bp+00eh], ax ; 89 46 0e ; 0xf6b62 + mov bx, 00470h ; bb 70 04 ; 0xf6b65 timepci.c:180 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6b68 + mov byte [bp+012h], al ; 88 46 12 ; 0xf6b6b + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6b6e timepci.c:181 + sti ; fb ; 0xf6b72 timepci.c:182 + jmp short 06ba1h ; eb 2c ; 0xf6b73 timepci.c:185 + cli ; fa ; 0xf6b75 timepci.c:188 + mov bx, 0046eh ; bb 6e 04 ; 0xf6b76 timepci.c:189 + xor ax, ax ; 31 c0 ; 0xf6b79 + mov es, ax ; 8e c0 ; 0xf6b7b + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6b7d + mov word [es:bx], ax ; 26 89 07 ; 0xf6b80 + mov bx, 0046ch ; bb 6c 04 ; 0xf6b83 timepci.c:190 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6b86 + mov word [es:bx], ax ; 26 89 07 ; 0xf6b89 + mov bx, 00470h ; bb 70 04 ; 0xf6b8c timepci.c:191 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6b8f + sti ; fb ; 0xf6b93 timepci.c:192 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6b94 timepci.c:193 + jmp short 06ba1h ; eb 07 ; 0xf6b98 timepci.c:195 + call 06a6fh ; e8 d2 fe ; 0xf6b9a timepci.c:198 + test ax, ax ; 85 c0 ; 0xf6b9d + je short 06ba4h ; 74 03 ; 0xf6b9f + jmp near 06bd2h ; e9 2e 00 ; 0xf6ba1 timepci.c:200 + xor ax, ax ; 31 c0 ; 0xf6ba4 timepci.c:203 + call 01664h ; e8 bb aa ; 0xf6ba6 + mov byte [bp+00fh], al ; 88 46 0f ; 0xf6ba9 + mov ax, strict word 00002h ; b8 02 00 ; 0xf6bac timepci.c:204 + call 01664h ; e8 b2 aa ; 0xf6baf + mov byte [bp+010h], al ; 88 46 10 ; 0xf6bb2 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6bb5 timepci.c:205 + call 01664h ; e8 a9 aa ; 0xf6bb8 + mov dl, al ; 88 c2 ; 0xf6bbb + mov byte [bp+011h], al ; 88 46 11 ; 0xf6bbd + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6bc0 timepci.c:206 + call 01664h ; e8 9e aa ; 0xf6bc3 + and AL, strict byte 001h ; 24 01 ; 0xf6bc6 + mov byte [bp+00eh], al ; 88 46 0e ; 0xf6bc8 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6bcb timepci.c:207 + mov byte [bp+012h], dl ; 88 56 12 ; 0xf6bcf timepci.c:208 + mov sp, bp ; 89 ec ; 0xf6bd2 timepci.c:210 + pop bp ; 5d ; 0xf6bd4 + retn ; c3 ; 0xf6bd5 + call 06a6fh ; e8 96 fe ; 0xf6bd6 timepci.c:223 + test ax, ax ; 85 c0 ; 0xf6bd9 + je short 06be0h ; 74 03 ; 0xf6bdb + call 06a47h ; e8 67 fe ; 0xf6bdd timepci.c:224 + mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6be0 timepci.c:227 + xor dh, dh ; 30 f6 ; 0xf6be3 + xor ax, ax ; 31 c0 ; 0xf6be5 + call 0167fh ; e8 95 aa ; 0xf6be7 + mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6bea timepci.c:228 + xor dh, dh ; 30 f6 ; 0xf6bed + mov ax, strict word 00002h ; b8 02 00 ; 0xf6bef + call 0167fh ; e8 8a aa ; 0xf6bf2 + mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6bf5 timepci.c:229 + xor dh, dh ; 30 f6 ; 0xf6bf8 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6bfa + call 0167fh ; e8 7f aa ; 0xf6bfd + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6c00 timepci.c:231 + call 01664h ; e8 5e aa ; 0xf6c03 + mov bl, al ; 88 c3 ; 0xf6c06 + and bl, 060h ; 80 e3 60 ; 0xf6c08 + or bl, 002h ; 80 cb 02 ; 0xf6c0b + mov al, byte [bp+00eh] ; 8a 46 0e ; 0xf6c0e + and AL, strict byte 001h ; 24 01 ; 0xf6c11 + or bl, al ; 08 c3 ; 0xf6c13 + mov dl, bl ; 88 da ; 0xf6c15 timepci.c:233 + xor dh, dh ; 30 f6 ; 0xf6c17 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6c19 + call 0167fh ; e8 60 aa ; 0xf6c1c + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6c1f timepci.c:234 + mov byte [bp+012h], bl ; 88 5e 12 ; 0xf6c23 timepci.c:235 + jmp short 06bd2h ; eb aa ; 0xf6c26 timepci.c:237 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6c28 timepci.c:240 + call 06a6fh ; e8 40 fe ; 0xf6c2c timepci.c:241 + test ax, ax ; 85 c0 ; 0xf6c2f + je short 06c35h ; 74 02 ; 0xf6c31 + jmp short 06bd2h ; eb 9d ; 0xf6c33 timepci.c:243 + mov ax, strict word 00009h ; b8 09 00 ; 0xf6c35 timepci.c:245 + call 01664h ; e8 29 aa ; 0xf6c38 + mov byte [bp+010h], al ; 88 46 10 ; 0xf6c3b + mov ax, strict word 00008h ; b8 08 00 ; 0xf6c3e timepci.c:246 + call 01664h ; e8 20 aa ; 0xf6c41 + mov byte [bp+00fh], al ; 88 46 0f ; 0xf6c44 + mov ax, strict word 00007h ; b8 07 00 ; 0xf6c47 timepci.c:247 + call 01664h ; e8 17 aa ; 0xf6c4a + mov byte [bp+00eh], al ; 88 46 0e ; 0xf6c4d + mov ax, strict word 00032h ; b8 32 00 ; 0xf6c50 timepci.c:248 + call 01664h ; e8 0e aa ; 0xf6c53 + mov byte [bp+011h], al ; 88 46 11 ; 0xf6c56 + mov byte [bp+012h], al ; 88 46 12 ; 0xf6c59 timepci.c:249 + jmp near 06bd2h ; e9 73 ff ; 0xf6c5c timepci.c:251 + call 06a6fh ; e8 0d fe ; 0xf6c5f timepci.c:264 + test ax, ax ; 85 c0 ; 0xf6c62 + je short 06c6ch ; 74 06 ; 0xf6c64 + call 06a47h ; e8 de fd ; 0xf6c66 timepci.c:265 + jmp near 06bd2h ; e9 66 ff ; 0xf6c69 timepci.c:267 + mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6c6c timepci.c:269 + xor dh, dh ; 30 f6 ; 0xf6c6f + mov ax, strict word 00009h ; b8 09 00 ; 0xf6c71 + call 0167fh ; e8 08 aa ; 0xf6c74 + mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6c77 timepci.c:270 + xor dh, dh ; 30 f6 ; 0xf6c7a + mov ax, strict word 00008h ; b8 08 00 ; 0xf6c7c + call 0167fh ; e8 fd a9 ; 0xf6c7f + mov dl, byte [bp+00eh] ; 8a 56 0e ; 0xf6c82 timepci.c:271 + xor dh, dh ; 30 f6 ; 0xf6c85 + mov ax, strict word 00007h ; b8 07 00 ; 0xf6c87 + call 0167fh ; e8 f2 a9 ; 0xf6c8a + mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6c8d timepci.c:272 + xor dh, dh ; 30 f6 ; 0xf6c90 + mov ax, strict word 00032h ; b8 32 00 ; 0xf6c92 + call 0167fh ; e8 e7 a9 ; 0xf6c95 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6c98 timepci.c:273 + call 01664h ; e8 c6 a9 ; 0xf6c9b + mov bl, al ; 88 c3 ; 0xf6c9e + and bl, 07fh ; 80 e3 7f ; 0xf6ca0 + jmp near 06c15h ; e9 6f ff ; 0xf6ca3 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6ca6 timepci.c:291 + call 01664h ; e8 b8 a9 ; 0xf6ca9 + mov bl, al ; 88 c3 ; 0xf6cac + mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf6cae timepci.c:292 + test AL, strict byte 020h ; a8 20 ; 0xf6cb3 timepci.c:293 + je short 06cbah ; 74 03 ; 0xf6cb5 + jmp near 06bd2h ; e9 18 ff ; 0xf6cb7 timepci.c:296 + call 06a6fh ; e8 b2 fd ; 0xf6cba timepci.c:298 + test ax, ax ; 85 c0 ; 0xf6cbd + je short 06cc4h ; 74 03 ; 0xf6cbf + call 06a47h ; e8 83 fd ; 0xf6cc1 timepci.c:299 + mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6cc4 timepci.c:302 + xor dh, dh ; 30 f6 ; 0xf6cc7 + mov ax, strict word 00001h ; b8 01 00 ; 0xf6cc9 + call 0167fh ; e8 b0 a9 ; 0xf6ccc + mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6ccf timepci.c:303 + xor dh, dh ; 30 f6 ; 0xf6cd2 + mov ax, strict word 00003h ; b8 03 00 ; 0xf6cd4 + call 0167fh ; e8 a5 a9 ; 0xf6cd7 + mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6cda timepci.c:304 + xor dh, dh ; 30 f6 ; 0xf6cdd + mov ax, strict word 00005h ; b8 05 00 ; 0xf6cdf + call 0167fh ; e8 9a a9 ; 0xf6ce2 + mov dx, 000a1h ; ba a1 00 ; 0xf6ce5 timepci.c:305 + in AL, DX ; ec ; 0xf6ce8 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6ce9 + and AL, strict byte 0feh ; 24 fe ; 0xf6ceb + out DX, AL ; ee ; 0xf6ced + mov dl, bl ; 88 da ; 0xf6cee timepci.c:307 + and dl, 05fh ; 80 e2 5f ; 0xf6cf0 + or dl, 020h ; 80 ca 20 ; 0xf6cf3 + xor dh, dh ; 30 f6 ; 0xf6cf6 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6cf8 + call 0167fh ; e8 81 a9 ; 0xf6cfb + jmp near 06bd2h ; e9 d1 fe ; 0xf6cfe timepci.c:309 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6d01 timepci.c:322 + call 01664h ; e8 5d a9 ; 0xf6d04 + mov bl, al ; 88 c3 ; 0xf6d07 + mov dl, al ; 88 c2 ; 0xf6d09 timepci.c:324 + and dl, 057h ; 80 e2 57 ; 0xf6d0b + jmp near 06c17h ; e9 06 ff ; 0xf6d0e + ; disGetNextSymbol 0xf6d11 LB 0x4147 -> off=0x0 cb=0000000000000038 uValue=00000000000f5711 'send_to_mouse_ctrl' +send_to_mouse_ctrl: ; 0xf6d11 LB 0x38 + push bp ; 55 ; 0xf6d11 ps2mouse.c:87 + mov bp, sp ; 89 e5 ; 0xf6d12 + push bx ; 53 ; 0xf6d14 + push dx ; 52 ; 0xf6d15 + mov bl, al ; 88 c3 ; 0xf6d16 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6d18 ps2mouse.c:91 + in AL, DX ; ec ; 0xf6d1b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6d1c + test AL, strict byte 002h ; a8 02 ; 0xf6d1e + je short 06d34h ; 74 12 ; 0xf6d20 + mov ax, 00934h ; b8 34 09 ; 0xf6d22 ps2mouse.c:92 + push ax ; 50 ; 0xf6d25 + mov ax, 01194h ; b8 94 11 ; 0xf6d26 + push ax ; 50 ; 0xf6d29 + mov ax, strict word 00007h ; b8 07 00 ; 0xf6d2a + push ax ; 50 ; 0xf6d2d + call 0195ch ; e8 2b ac ; 0xf6d2e + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6d31 + mov AL, strict byte 0d4h ; b0 d4 ; 0xf6d34 ps2mouse.c:93 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6d36 + out DX, AL ; ee ; 0xf6d39 + mov al, bl ; 88 d8 ; 0xf6d3a ps2mouse.c:94 + mov dx, strict word 00060h ; ba 60 00 ; 0xf6d3c + out DX, AL ; ee ; 0xf6d3f + xor al, bl ; 30 d8 ; 0xf6d40 ps2mouse.c:96 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6d42 + pop dx ; 5a ; 0xf6d45 + pop bx ; 5b ; 0xf6d46 + pop bp ; 5d ; 0xf6d47 + retn ; c3 ; 0xf6d48 + ; disGetNextSymbol 0xf6d49 LB 0x410f -> off=0x0 cb=000000000000005d uValue=00000000000f5749 'get_mouse_data' +get_mouse_data: ; 0xf6d49 LB 0x5d + push bp ; 55 ; 0xf6d49 ps2mouse.c:99 + mov bp, sp ; 89 e5 ; 0xf6d4a + push bx ; 53 ; 0xf6d4c + push cx ; 51 ; 0xf6d4d + push ax ; 50 ; 0xf6d4e + mov bx, ax ; 89 c3 ; 0xf6d4f + mov es, dx ; 8e c2 ; 0xf6d51 + mov cx, 02710h ; b9 10 27 ; 0xf6d53 ps2mouse.c:101 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6d56 ps2mouse.c:104 + in AL, DX ; ec ; 0xf6d59 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6d5a + and ax, strict word 00021h ; 25 21 00 ; 0xf6d5c + cmp ax, strict word 00021h ; 3d 21 00 ; 0xf6d5f + je short 06d8ch ; 74 28 ; 0xf6d62 + test cx, cx ; 85 c9 ; 0xf6d64 + je short 06d8ch ; 74 24 ; 0xf6d66 + mov dx, strict word 00061h ; ba 61 00 ; 0xf6d68 ps2mouse.c:107 + in AL, DX ; ec ; 0xf6d6b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6d6c + and AL, strict byte 010h ; 24 10 ; 0xf6d6e + mov byte [bp-006h], al ; 88 46 fa ; 0xf6d70 + mov dx, strict word 00061h ; ba 61 00 ; 0xf6d73 ps2mouse.c:108 + in AL, DX ; ec ; 0xf6d76 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6d77 + mov dx, ax ; 89 c2 ; 0xf6d79 + xor dh, ah ; 30 e6 ; 0xf6d7b + and dl, 010h ; 80 e2 10 ; 0xf6d7d + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6d80 + xor ah, ah ; 30 e4 ; 0xf6d83 + cmp dx, ax ; 39 c2 ; 0xf6d85 + je short 06d73h ; 74 ea ; 0xf6d87 + dec cx ; 49 ; 0xf6d89 ps2mouse.c:110 + jmp short 06d56h ; eb ca ; 0xf6d8a ps2mouse.c:111 + test cx, cx ; 85 c9 ; 0xf6d8c ps2mouse.c:113 + jne short 06d94h ; 75 04 ; 0xf6d8e + mov AL, strict byte 001h ; b0 01 ; 0xf6d90 ps2mouse.c:114 + jmp short 06d9fh ; eb 0b ; 0xf6d92 + mov dx, strict word 00060h ; ba 60 00 ; 0xf6d94 ps2mouse.c:116 + in AL, DX ; ec ; 0xf6d97 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6d98 + mov byte [es:bx], al ; 26 88 07 ; 0xf6d9a ps2mouse.c:117 + xor al, al ; 30 c0 ; 0xf6d9d ps2mouse.c:118 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6d9f ps2mouse.c:119 + pop cx ; 59 ; 0xf6da2 + pop bx ; 5b ; 0xf6da3 + pop bp ; 5d ; 0xf6da4 + retn ; c3 ; 0xf6da5 + ; disGetNextSymbol 0xf6da6 LB 0x40b2 -> off=0x0 cb=0000000000000036 uValue=00000000000f57a6 'set_kbd_command_byte' +set_kbd_command_byte: ; 0xf6da6 LB 0x36 + push bp ; 55 ; 0xf6da6 ps2mouse.c:121 + mov bp, sp ; 89 e5 ; 0xf6da7 + push bx ; 53 ; 0xf6da9 + push dx ; 52 ; 0xf6daa + mov bl, al ; 88 c3 ; 0xf6dab + mov dx, strict word 00064h ; ba 64 00 ; 0xf6dad ps2mouse.c:123 + in AL, DX ; ec ; 0xf6db0 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6db1 + test AL, strict byte 002h ; a8 02 ; 0xf6db3 + je short 06dc9h ; 74 12 ; 0xf6db5 + mov ax, 0093eh ; b8 3e 09 ; 0xf6db7 ps2mouse.c:124 + push ax ; 50 ; 0xf6dba + mov ax, 01194h ; b8 94 11 ; 0xf6dbb + push ax ; 50 ; 0xf6dbe + mov ax, strict word 00007h ; b8 07 00 ; 0xf6dbf + push ax ; 50 ; 0xf6dc2 + call 0195ch ; e8 96 ab ; 0xf6dc3 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6dc6 + mov AL, strict byte 060h ; b0 60 ; 0xf6dc9 ps2mouse.c:126 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6dcb + out DX, AL ; ee ; 0xf6dce + mov al, bl ; 88 d8 ; 0xf6dcf ps2mouse.c:127 + mov dx, strict word 00060h ; ba 60 00 ; 0xf6dd1 + out DX, AL ; ee ; 0xf6dd4 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6dd5 ps2mouse.c:128 + pop dx ; 5a ; 0xf6dd8 + pop bx ; 5b ; 0xf6dd9 + pop bp ; 5d ; 0xf6dda + retn ; c3 ; 0xf6ddb + ; disGetNextSymbol 0xf6ddc LB 0x407c -> off=0x0 cb=000000000000009e uValue=00000000000f57dc 'int74_function' +int74_function: ; 0xf6ddc LB 0x9e + push bp ; 55 ; 0xf6ddc ps2mouse.c:131 + mov bp, sp ; 89 e5 ; 0xf6ddd + push si ; 56 ; 0xf6ddf + push ax ; 50 ; 0xf6de0 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6de1 ps2mouse.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6de4 + mov es, ax ; 8e c0 ; 0xf6de7 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf6de9 + mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf6dec ps2mouse.c:139 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6df1 ps2mouse.c:141 + in AL, DX ; ec ; 0xf6df4 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6df5 + and AL, strict byte 021h ; 24 21 ; 0xf6df7 ps2mouse.c:142 + cmp AL, strict byte 021h ; 3c 21 ; 0xf6df9 + jne short 06e1bh ; 75 1e ; 0xf6dfb + mov dx, strict word 00060h ; ba 60 00 ; 0xf6dfd ps2mouse.c:145 + in AL, DX ; ec ; 0xf6e00 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6e01 + mov byte [bp-004h], al ; 88 46 fc ; 0xf6e03 + mov si, strict word 00026h ; be 26 00 ; 0xf6e06 ps2mouse.c:48 + mov es, bx ; 8e c3 ; 0xf6e09 + mov al, byte [es:si] ; 26 8a 04 ; 0xf6e0b + mov si, strict word 00027h ; be 27 00 ; 0xf6e0e ps2mouse.c:48 + mov ah, byte [es:si] ; 26 8a 24 ; 0xf6e11 + mov cl, ah ; 88 e1 ; 0xf6e14 ps2mouse.c:49 + test ah, 080h ; f6 c4 80 ; 0xf6e16 ps2mouse.c:151 + jne short 06e1dh ; 75 02 ; 0xf6e19 + jmp short 06e74h ; eb 57 ; 0xf6e1b ps2mouse.c:152 + mov ch, cl ; 88 cd ; 0xf6e1d ps2mouse.c:155 + and ch, 007h ; 80 e5 07 ; 0xf6e1f + mov ah, al ; 88 c4 ; 0xf6e22 ps2mouse.c:156 + and ah, 007h ; 80 e4 07 ; 0xf6e24 + mov dl, ah ; 88 e2 ; 0xf6e27 ps2mouse.c:157 + xor dh, dh ; 30 f6 ; 0xf6e29 + mov si, dx ; 89 d6 ; 0xf6e2b + add si, strict byte 00028h ; 83 c6 28 ; 0xf6e2d + mov es, bx ; 8e c3 ; 0xf6e30 ps2mouse.c:53 + mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6e32 + mov byte [es:si], dl ; 26 88 14 ; 0xf6e35 + cmp ah, ch ; 38 ec ; 0xf6e38 ps2mouse.c:159 + jc short 06e6ah ; 72 2e ; 0xf6e3a + mov si, strict word 00028h ; be 28 00 ; 0xf6e3c ps2mouse.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf6e3f + xor ah, ah ; 30 e4 ; 0xf6e42 ps2mouse.c:49 + mov word [bp+00ch], ax ; 89 46 0c ; 0xf6e44 + mov si, strict word 00029h ; be 29 00 ; 0xf6e47 ps2mouse.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf6e4a + mov word [bp+00ah], ax ; 89 46 0a ; 0xf6e4d ps2mouse.c:49 + mov si, strict word 0002ah ; be 2a 00 ; 0xf6e50 ps2mouse.c:48 + mov al, byte [es:si] ; 26 8a 04 ; 0xf6e53 + mov word [bp+008h], ax ; 89 46 08 ; 0xf6e56 ps2mouse.c:49 + xor al, al ; 30 c0 ; 0xf6e59 ps2mouse.c:164 + mov word [bp+006h], ax ; 89 46 06 ; 0xf6e5b + test cl, 080h ; f6 c1 80 ; 0xf6e5e ps2mouse.c:167 + je short 06e6ch ; 74 09 ; 0xf6e61 + mov word [bp+004h], strict word 00001h ; c7 46 04 01 00 ; 0xf6e63 ps2mouse.c:168 + jmp short 06e6ch ; eb 02 ; 0xf6e68 ps2mouse.c:170 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf6e6a ps2mouse.c:171 + mov si, strict word 00026h ; be 26 00 ; 0xf6e6c ps2mouse.c:53 + mov es, bx ; 8e c3 ; 0xf6e6f + mov byte [es:si], al ; 26 88 04 ; 0xf6e71 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6e74 ps2mouse.c:174 + pop si ; 5e ; 0xf6e77 + pop bp ; 5d ; 0xf6e78 + retn ; c3 ; 0xf6e79 + ; disGetNextSymbol 0xf6e7a LB 0x3fde -> off=0x10 cb=0000000000000380 uValue=00000000000f588a 'int15_function_mouse' + db 0cbh, 06eh, 03ch, 06fh, 0b2h, 06fh, 044h, 070h, 0b6h, 070h, 011h, 06fh, 0deh, 070h, 0afh, 071h +int15_function_mouse: ; 0xf6e8a LB 0x380 + push bp ; 55 ; 0xf6e8a ps2mouse.c:176 + mov bp, sp ; 89 e5 ; 0xf6e8b + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6e8d + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6e90 ps2mouse.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6e93 + mov es, ax ; 8e c0 ; 0xf6e96 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf6e98 + cmp byte [bp+012h], 007h ; 80 7e 12 07 ; 0xf6e9b ps2mouse.c:198 + jbe short 06each ; 76 0b ; 0xf6e9f + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf6ea1 ps2mouse.c:201 + mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf6ea5 ps2mouse.c:202 + jmp near 07206h ; e9 5a 03 ; 0xf6ea9 ps2mouse.c:203 + mov ax, strict word 00065h ; b8 65 00 ; 0xf6eac ps2mouse.c:207 + call 06da6h ; e8 f4 fe ; 0xf6eaf + and word [bp+018h], strict byte 0fffeh ; 83 66 18 fe ; 0xf6eb2 ps2mouse.c:208 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6eb6 ps2mouse.c:209 + mov bl, byte [bp+012h] ; 8a 5e 12 ; 0xf6eba ps2mouse.c:211 + cmp bl, 007h ; 80 fb 07 ; 0xf6ebd + jnbe short 06f1fh ; 77 5d ; 0xf6ec0 + xor bh, bh ; 30 ff ; 0xf6ec2 + sal bx, 1 ; d1 e3 ; 0xf6ec4 + jmp word [cs:bx+06e7ah] ; 2e ff a7 7a 6e ; 0xf6ec6 + cmp byte [bp+00dh], 001h ; 80 7e 0d 01 ; 0xf6ecb ps2mouse.c:214 + jnbe short 06f22h ; 77 51 ; 0xf6ecf + mov bx, strict word 00027h ; bb 27 00 ; 0xf6ed1 ps2mouse.c:48 + mov es, dx ; 8e c2 ; 0xf6ed4 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6ed6 + test AL, strict byte 080h ; a8 80 ; 0xf6ed9 ps2mouse.c:222 + jne short 06ee8h ; 75 0b ; 0xf6edb + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf6edd ps2mouse.c:224 + mov byte [bp+013h], 005h ; c6 46 13 05 ; 0xf6ee1 ps2mouse.c:225 + jmp near 07200h ; e9 18 03 ; 0xf6ee5 ps2mouse.c:226 + cmp byte [bp+00dh], 000h ; 80 7e 0d 00 ; 0xf6ee8 ps2mouse.c:228 + jne short 06ef2h ; 75 04 ; 0xf6eec + mov AL, strict byte 0f5h ; b0 f5 ; 0xf6eee ps2mouse.c:230 + jmp short 06ef4h ; eb 02 ; 0xf6ef0 ps2mouse.c:231 + mov AL, strict byte 0f4h ; b0 f4 ; 0xf6ef2 ps2mouse.c:233 + xor ah, ah ; 30 e4 ; 0xf6ef4 ps2mouse.c:236 + call 06d11h ; e8 18 fe ; 0xf6ef6 + test al, al ; 84 c0 ; 0xf6ef9 ps2mouse.c:237 + jne short 06f25h ; 75 28 ; 0xf6efb + mov dx, ss ; 8c d2 ; 0xf6efd ps2mouse.c:238 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf6eff + call 06d49h ; e8 44 fe ; 0xf6f02 + test al, al ; 84 c0 ; 0xf6f05 ps2mouse.c:239 + je short 06f6bh ; 74 62 ; 0xf6f07 + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf6f09 + jne short 06f25h ; 75 16 ; 0xf6f0d + jmp short 06f6bh ; eb 5a ; 0xf6f0f ps2mouse.c:241 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf6f11 ps2mouse.c:252 + cmp AL, strict byte 001h ; 3c 01 ; 0xf6f14 + jc short 06f1ch ; 72 04 ; 0xf6f16 + cmp AL, strict byte 008h ; 3c 08 ; 0xf6f18 + jbe short 06f28h ; 76 0c ; 0xf6f1a + jmp near 070ach ; e9 8d 01 ; 0xf6f1c + jmp near 071eah ; e9 c8 02 ; 0xf6f1f + jmp near 071f8h ; e9 d3 02 ; 0xf6f22 + jmp near 07187h ; e9 5f 02 ; 0xf6f25 + mov bx, strict word 00027h ; bb 27 00 ; 0xf6f28 ps2mouse.c:48 + mov es, dx ; 8e c2 ; 0xf6f2b + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6f2d + mov ah, byte [bp+00dh] ; 8a 66 0d ; 0xf6f30 ps2mouse.c:258 + db 0feh, 0cch + ; dec ah ; fe cc ; 0xf6f33 + and AL, strict byte 0f8h ; 24 f8 ; 0xf6f35 + or al, ah ; 08 e0 ; 0xf6f37 + mov byte [es:bx], al ; 26 88 07 ; 0xf6f39 ps2mouse.c:53 + mov bx, strict word 00026h ; bb 26 00 ; 0xf6f3c ps2mouse.c:48 + mov es, dx ; 8e c2 ; 0xf6f3f + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6f41 + and AL, strict byte 0f8h ; 24 f8 ; 0xf6f44 ps2mouse.c:266 + mov byte [es:bx], al ; 26 88 07 ; 0xf6f46 ps2mouse.c:53 + mov ax, 000ffh ; b8 ff 00 ; 0xf6f49 ps2mouse.c:268 + call 06d11h ; e8 c2 fd ; 0xf6f4c + test al, al ; 84 c0 ; 0xf6f4f ps2mouse.c:269 + jne short 06f25h ; 75 d2 ; 0xf6f51 + mov dx, ss ; 8c d2 ; 0xf6f53 ps2mouse.c:270 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf6f55 + call 06d49h ; e8 ee fd ; 0xf6f58 + mov dl, al ; 88 c2 ; 0xf6f5b + cmp byte [bp-002h], 0feh ; 80 7e fe fe ; 0xf6f5d ps2mouse.c:272 + jne short 06f6eh ; 75 0b ; 0xf6f61 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf6f63 ps2mouse.c:273 + mov byte [bp+013h], 004h ; c6 46 13 04 ; 0xf6f67 ps2mouse.c:274 + jmp near 07200h ; e9 92 02 ; 0xf6f6b ps2mouse.c:275 + cmp byte [bp-002h], 0fah ; 80 7e fe fa ; 0xf6f6e ps2mouse.c:277 + je short 06f88h ; 74 14 ; 0xf6f72 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6f74 ps2mouse.c:278 + xor ah, ah ; 30 e4 ; 0xf6f77 + push ax ; 50 ; 0xf6f79 + mov ax, 00949h ; b8 49 09 ; 0xf6f7a + push ax ; 50 ; 0xf6f7d + mov ax, strict word 00007h ; b8 07 00 ; 0xf6f7e + push ax ; 50 ; 0xf6f81 + call 0195ch ; e8 d7 a9 ; 0xf6f82 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6f85 + test dl, dl ; 84 d2 ; 0xf6f88 ps2mouse.c:279 + jne short 06f25h ; 75 99 ; 0xf6f8a + mov dx, ss ; 8c d2 ; 0xf6f8c ps2mouse.c:280 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf6f8e + call 06d49h ; e8 b5 fd ; 0xf6f91 + test al, al ; 84 c0 ; 0xf6f94 ps2mouse.c:281 + jne short 06f25h ; 75 8d ; 0xf6f96 + mov dx, ss ; 8c d2 ; 0xf6f98 ps2mouse.c:282 + lea ax, [bp-004h] ; 8d 46 fc ; 0xf6f9a + call 06d49h ; e8 a9 fd ; 0xf6f9d + test al, al ; 84 c0 ; 0xf6fa0 ps2mouse.c:283 + jne short 06f25h ; 75 81 ; 0xf6fa2 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6fa4 ps2mouse.c:285 + mov byte [bp+00ch], al ; 88 46 0c ; 0xf6fa7 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf6faa ps2mouse.c:286 + mov byte [bp+00dh], al ; 88 46 0d ; 0xf6fad + jmp short 06f6bh ; eb b9 ; 0xf6fb0 ps2mouse.c:287 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf6fb2 ps2mouse.c:300 + cmp AL, strict byte 003h ; 3c 03 ; 0xf6fb5 + jc short 06fc9h ; 72 10 ; 0xf6fb7 + jbe short 06fe7h ; 76 2c ; 0xf6fb9 + cmp AL, strict byte 006h ; 3c 06 ; 0xf6fbb + je short 06ff9h ; 74 3a ; 0xf6fbd + cmp AL, strict byte 005h ; 3c 05 ; 0xf6fbf + je short 06ff3h ; 74 30 ; 0xf6fc1 + cmp AL, strict byte 004h ; 3c 04 ; 0xf6fc3 + je short 06fedh ; 74 26 ; 0xf6fc5 + jmp short 06fffh ; eb 36 ; 0xf6fc7 + cmp AL, strict byte 002h ; 3c 02 ; 0xf6fc9 + je short 06fe1h ; 74 14 ; 0xf6fcb + cmp AL, strict byte 001h ; 3c 01 ; 0xf6fcd + je short 06fdbh ; 74 0a ; 0xf6fcf + test al, al ; 84 c0 ; 0xf6fd1 + jne short 06fffh ; 75 2a ; 0xf6fd3 + mov byte [bp-006h], 00ah ; c6 46 fa 0a ; 0xf6fd5 ps2mouse.c:301 + jmp short 07003h ; eb 28 ; 0xf6fd9 + mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf6fdb ps2mouse.c:302 + jmp short 07003h ; eb 22 ; 0xf6fdf + mov byte [bp-006h], 028h ; c6 46 fa 28 ; 0xf6fe1 ps2mouse.c:303 + jmp short 07003h ; eb 1c ; 0xf6fe5 + mov byte [bp-006h], 03ch ; c6 46 fa 3c ; 0xf6fe7 ps2mouse.c:304 + jmp short 07003h ; eb 16 ; 0xf6feb + mov byte [bp-006h], 050h ; c6 46 fa 50 ; 0xf6fed ps2mouse.c:305 + jmp short 07003h ; eb 10 ; 0xf6ff1 + mov byte [bp-006h], 064h ; c6 46 fa 64 ; 0xf6ff3 ps2mouse.c:306 + jmp short 07003h ; eb 0a ; 0xf6ff7 + mov byte [bp-006h], 0c8h ; c6 46 fa c8 ; 0xf6ff9 ps2mouse.c:307 + jmp short 07003h ; eb 04 ; 0xf6ffd + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf6fff ps2mouse.c:308 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf7003 ps2mouse.c:310 + jbe short 07039h ; 76 30 ; 0xf7007 + mov ax, 000f3h ; b8 f3 00 ; 0xf7009 ps2mouse.c:311 + call 06d11h ; e8 02 fd ; 0xf700c + test al, al ; 84 c0 ; 0xf700f ps2mouse.c:312 + jne short 0702eh ; 75 1b ; 0xf7011 + mov dx, ss ; 8c d2 ; 0xf7013 ps2mouse.c:313 + lea ax, [bp-004h] ; 8d 46 fc ; 0xf7015 + call 06d49h ; e8 2e fd ; 0xf7018 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf701b ps2mouse.c:314 + xor ah, ah ; 30 e4 ; 0xf701e + call 06d11h ; e8 ee fc ; 0xf7020 + mov dx, ss ; 8c d2 ; 0xf7023 ps2mouse.c:315 + lea ax, [bp-004h] ; 8d 46 fc ; 0xf7025 + call 06d49h ; e8 1e fd ; 0xf7028 + jmp near 07200h ; e9 d2 01 ; 0xf702b ps2mouse.c:317 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf702e ps2mouse.c:319 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7032 ps2mouse.c:320 + jmp near 07200h ; e9 c7 01 ; 0xf7036 ps2mouse.c:322 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7039 ps2mouse.c:324 + mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf703d ps2mouse.c:325 + jmp near 07200h ; e9 bc 01 ; 0xf7041 ps2mouse.c:327 + cmp byte [bp+00dh], 004h ; 80 7e 0d 04 ; 0xf7044 ps2mouse.c:336 + jnc short 070ach ; 73 62 ; 0xf7048 + mov ax, 000e8h ; b8 e8 00 ; 0xf704a ps2mouse.c:337 + call 06d11h ; e8 c1 fc ; 0xf704d + test al, al ; 84 c0 ; 0xf7050 ps2mouse.c:338 + jne short 070a2h ; 75 4e ; 0xf7052 + mov dx, ss ; 8c d2 ; 0xf7054 ps2mouse.c:339 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7056 + call 06d49h ; e8 ed fc ; 0xf7059 + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf705c ps2mouse.c:340 + je short 07076h ; 74 14 ; 0xf7060 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7062 ps2mouse.c:341 + xor ah, ah ; 30 e4 ; 0xf7065 + push ax ; 50 ; 0xf7067 + mov ax, 00974h ; b8 74 09 ; 0xf7068 + push ax ; 50 ; 0xf706b + mov ax, strict word 00007h ; b8 07 00 ; 0xf706c + push ax ; 50 ; 0xf706f + call 0195ch ; e8 e9 a8 ; 0xf7070 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7073 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7076 ps2mouse.c:342 + xor ah, ah ; 30 e4 ; 0xf7079 + call 06d11h ; e8 93 fc ; 0xf707b + mov dx, ss ; 8c d2 ; 0xf707e ps2mouse.c:343 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7080 + call 06d49h ; e8 c3 fc ; 0xf7083 + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7086 ps2mouse.c:344 + je short 070dbh ; 74 4f ; 0xf708a + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf708c ps2mouse.c:345 + xor ah, ah ; 30 e4 ; 0xf708f + push ax ; 50 ; 0xf7091 + mov ax, 00974h ; b8 74 09 ; 0xf7092 + push ax ; 50 ; 0xf7095 + mov ax, strict word 00007h ; b8 07 00 ; 0xf7096 + push ax ; 50 ; 0xf7099 + call 0195ch ; e8 bf a8 ; 0xf709a + add sp, strict byte 00006h ; 83 c4 06 ; 0xf709d + jmp short 070dbh ; eb 39 ; 0xf70a0 ps2mouse.c:347 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf70a2 ps2mouse.c:349 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf70a6 ps2mouse.c:350 + jmp short 070dbh ; eb 2f ; 0xf70aa ps2mouse.c:352 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf70ac ps2mouse.c:354 + mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf70b0 ps2mouse.c:355 + jmp short 070dbh ; eb 25 ; 0xf70b4 ps2mouse.c:357 + mov ax, 000f2h ; b8 f2 00 ; 0xf70b6 ps2mouse.c:361 + call 06d11h ; e8 55 fc ; 0xf70b9 + test al, al ; 84 c0 ; 0xf70bc ps2mouse.c:362 + jne short 070d3h ; 75 13 ; 0xf70be + mov dx, ss ; 8c d2 ; 0xf70c0 ps2mouse.c:363 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf70c2 + call 06d49h ; e8 81 fc ; 0xf70c5 + mov dx, ss ; 8c d2 ; 0xf70c8 ps2mouse.c:364 + lea ax, [bp-004h] ; 8d 46 fc ; 0xf70ca + call 06d49h ; e8 79 fc ; 0xf70cd + jmp near 06faah ; e9 d7 fe ; 0xf70d0 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf70d3 ps2mouse.c:365 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf70d7 ps2mouse.c:370 + jmp near 07200h ; e9 22 01 ; 0xf70db ps2mouse.c:372 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf70de ps2mouse.c:376 + test al, al ; 84 c0 ; 0xf70e1 + jbe short 070eeh ; 76 09 ; 0xf70e3 + cmp AL, strict byte 002h ; 3c 02 ; 0xf70e5 + jbe short 070ech ; 76 03 ; 0xf70e7 + jmp near 07191h ; e9 a5 00 ; 0xf70e9 + jmp short 07158h ; eb 6a ; 0xf70ec + mov ax, 000e9h ; b8 e9 00 ; 0xf70ee ps2mouse.c:378 + call 06d11h ; e8 1d fc ; 0xf70f1 + test al, al ; 84 c0 ; 0xf70f4 ps2mouse.c:379 + jne short 07161h ; 75 69 ; 0xf70f6 + mov dx, ss ; 8c d2 ; 0xf70f8 ps2mouse.c:380 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf70fa + call 06d49h ; e8 49 fc ; 0xf70fd + mov dl, al ; 88 c2 ; 0xf7100 + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7102 ps2mouse.c:381 + je short 0711ch ; 74 14 ; 0xf7106 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7108 ps2mouse.c:382 + xor ah, ah ; 30 e4 ; 0xf710b + push ax ; 50 ; 0xf710d + mov ax, 00974h ; b8 74 09 ; 0xf710e + push ax ; 50 ; 0xf7111 + mov ax, strict word 00007h ; b8 07 00 ; 0xf7112 + push ax ; 50 ; 0xf7115 + call 0195ch ; e8 43 a8 ; 0xf7116 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7119 + test dl, dl ; 84 d2 ; 0xf711c ps2mouse.c:383 + jne short 07161h ; 75 41 ; 0xf711e + mov dx, ss ; 8c d2 ; 0xf7120 ps2mouse.c:384 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7122 + call 06d49h ; e8 21 fc ; 0xf7125 + test al, al ; 84 c0 ; 0xf7128 ps2mouse.c:385 + jne short 07187h ; 75 5b ; 0xf712a + mov dx, ss ; 8c d2 ; 0xf712c ps2mouse.c:386 + lea ax, [bp-004h] ; 8d 46 fc ; 0xf712e + call 06d49h ; e8 15 fc ; 0xf7131 + test al, al ; 84 c0 ; 0xf7134 ps2mouse.c:387 + jne short 07187h ; 75 4f ; 0xf7136 + mov dx, ss ; 8c d2 ; 0xf7138 ps2mouse.c:388 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf713a + call 06d49h ; e8 09 fc ; 0xf713d + test al, al ; 84 c0 ; 0xf7140 ps2mouse.c:389 + jne short 07187h ; 75 43 ; 0xf7142 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7144 ps2mouse.c:390 + mov byte [bp+00ch], al ; 88 46 0c ; 0xf7147 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf714a ps2mouse.c:391 + mov byte [bp+010h], al ; 88 46 10 ; 0xf714d + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf7150 ps2mouse.c:392 + mov byte [bp+00eh], al ; 88 46 0e ; 0xf7153 + jmp short 070dbh ; eb 83 ; 0xf7156 ps2mouse.c:394 + cmp AL, strict byte 001h ; 3c 01 ; 0xf7158 ps2mouse.c:408 + jne short 07163h ; 75 07 ; 0xf715a + mov ax, 000e6h ; b8 e6 00 ; 0xf715c ps2mouse.c:409 + jmp short 07166h ; eb 05 ; 0xf715f ps2mouse.c:410 + jmp short 07187h ; eb 24 ; 0xf7161 + mov ax, 000e7h ; b8 e7 00 ; 0xf7163 ps2mouse.c:411 + call 06d11h ; e8 a8 fb ; 0xf7166 + mov dl, al ; 88 c2 ; 0xf7169 + test dl, dl ; 84 d2 ; 0xf716b ps2mouse.c:413 + jne short 07183h ; 75 14 ; 0xf716d + mov dx, ss ; 8c d2 ; 0xf716f ps2mouse.c:414 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7171 + call 06d49h ; e8 d2 fb ; 0xf7174 + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7177 ps2mouse.c:415 + je short 07181h ; 74 04 ; 0xf717b + mov DL, strict byte 001h ; b2 01 ; 0xf717d + jmp short 07183h ; eb 02 ; 0xf717f + xor dl, dl ; 30 d2 ; 0xf7181 + test dl, dl ; 84 d2 ; 0xf7183 ps2mouse.c:417 + je short 071e8h ; 74 61 ; 0xf7185 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7187 ps2mouse.c:419 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf718b ps2mouse.c:420 + jmp short 071e8h ; eb 57 ; 0xf718f ps2mouse.c:422 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7191 ps2mouse.c:425 + xor ah, ah ; 30 e4 ; 0xf7194 + push ax ; 50 ; 0xf7196 + mov ax, 009a0h ; b8 a0 09 ; 0xf7197 + push ax ; 50 ; 0xf719a + mov ax, strict word 00007h ; b8 07 00 ; 0xf719b + push ax ; 50 ; 0xf719e + call 0195ch ; e8 ba a7 ; 0xf719f + add sp, strict byte 00006h ; 83 c4 06 ; 0xf71a2 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf71a5 ps2mouse.c:427 + mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf71a9 ps2mouse.c:428 + jmp short 07200h ; eb 51 ; 0xf71ad ps2mouse.c:430 + mov cx, word [bp+00ch] ; 8b 4e 0c ; 0xf71af ps2mouse.c:435 + mov bx, strict word 00022h ; bb 22 00 ; 0xf71b2 ps2mouse.c:63 + mov es, dx ; 8e c2 ; 0xf71b5 + mov word [es:bx], cx ; 26 89 0f ; 0xf71b7 + mov bx, strict word 00024h ; bb 24 00 ; 0xf71ba ps2mouse.c:63 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf71bd + mov word [es:bx], ax ; 26 89 07 ; 0xf71c0 + mov bx, strict word 00027h ; bb 27 00 ; 0xf71c3 ps2mouse.c:48 + mov ah, byte [es:bx] ; 26 8a 27 ; 0xf71c6 + mov al, ah ; 88 e0 ; 0xf71c9 ps2mouse.c:49 + test cx, cx ; 85 c9 ; 0xf71cb ps2mouse.c:439 + jne short 071deh ; 75 0f ; 0xf71cd + cmp word [bp+014h], strict byte 00000h ; 83 7e 14 00 ; 0xf71cf + jne short 071deh ; 75 09 ; 0xf71d3 + test ah, 080h ; f6 c4 80 ; 0xf71d5 ps2mouse.c:441 + je short 071e0h ; 74 06 ; 0xf71d8 + and AL, strict byte 07fh ; 24 7f ; 0xf71da ps2mouse.c:442 + jmp short 071e0h ; eb 02 ; 0xf71dc ps2mouse.c:445 + or AL, strict byte 080h ; 0c 80 ; 0xf71de ps2mouse.c:447 + mov bx, strict word 00027h ; bb 27 00 ; 0xf71e0 ps2mouse.c:53 + mov es, dx ; 8e c2 ; 0xf71e3 + mov byte [es:bx], al ; 26 88 07 ; 0xf71e5 + jmp short 07200h ; eb 16 ; 0xf71e8 ps2mouse.c:450 + mov ax, 009bah ; b8 ba 09 ; 0xf71ea ps2mouse.c:453 + push ax ; 50 ; 0xf71ed + mov ax, strict word 00007h ; b8 07 00 ; 0xf71ee + push ax ; 50 ; 0xf71f1 + call 0195ch ; e8 67 a7 ; 0xf71f2 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf71f5 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf71f8 ps2mouse.c:455 + mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf71fc ps2mouse.c:456 + mov ax, strict word 00047h ; b8 47 00 ; 0xf7200 ps2mouse.c:460 + call 06da6h ; e8 a0 fb ; 0xf7203 + mov sp, bp ; 89 ec ; 0xf7206 ps2mouse.c:461 + pop bp ; 5d ; 0xf7208 + retn ; c3 ; 0xf7209 + ; disGetNextSymbol 0xf720a LB 0x3c4e -> off=0x0 cb=00000000000000a9 uValue=00000000000f5c0a 'int17_function' +int17_function: ; 0xf720a LB 0xa9 + push bp ; 55 ; 0xf720a parallel.c:70 + mov bp, sp ; 89 e5 ; 0xf720b + push si ; 56 ; 0xf720d + push di ; 57 ; 0xf720e + push ax ; 50 ; 0xf720f + sti ; fb ; 0xf7210 parallel.c:75 + mov bx, word [bp+00eh] ; 8b 5e 0e ; 0xf7211 parallel.c:77 + sal bx, 1 ; d1 e3 ; 0xf7214 + add bx, strict byte 00008h ; 83 c3 08 ; 0xf7216 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7219 parallel.c:58 + mov es, ax ; 8e c0 ; 0xf721c + mov bx, word [es:bx] ; 26 8b 1f ; 0xf721e + mov di, bx ; 89 df ; 0xf7221 parallel.c:59 + cmp byte [bp+013h], 003h ; 80 7e 13 03 ; 0xf7223 parallel.c:78 + jnc short 07235h ; 73 0c ; 0xf7227 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf7229 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf722c + jnc short 07235h ; 73 04 ; 0xf722f + test bx, bx ; 85 db ; 0xf7231 + jnbe short 07238h ; 77 03 ; 0xf7233 + jmp near 072a8h ; e9 70 00 ; 0xf7235 + mov si, ax ; 89 c6 ; 0xf7238 parallel.c:79 + add si, strict byte 00078h ; 83 c6 78 ; 0xf723a + mov ch, byte [es:si] ; 26 8a 2c ; 0xf723d parallel.c:48 + xor cl, cl ; 30 c9 ; 0xf7240 parallel.c:49 + cmp byte [bp+013h], 000h ; 80 7e 13 00 ; 0xf7242 parallel.c:80 + jne short 07274h ; 75 2c ; 0xf7246 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf7248 parallel.c:81 + mov dx, bx ; 89 da ; 0xf724b + out DX, AL ; ee ; 0xf724d + lea dx, [bx+002h] ; 8d 57 02 ; 0xf724e parallel.c:82 + in AL, DX ; ec ; 0xf7251 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7252 + mov word [bp-006h], ax ; 89 46 fa ; 0xf7254 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7257 parallel.c:83 + or AL, strict byte 001h ; 0c 01 ; 0xf725a + out DX, AL ; ee ; 0xf725c + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf725d parallel.c:84 + and AL, strict byte 0feh ; 24 fe ; 0xf7260 + out DX, AL ; ee ; 0xf7262 + lea dx, [di+001h] ; 8d 55 01 ; 0xf7263 parallel.c:85 + in AL, DX ; ec ; 0xf7266 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7267 + test AL, strict byte 040h ; a8 40 ; 0xf7269 + je short 07274h ; 74 07 ; 0xf726b + test cx, cx ; 85 c9 ; 0xf726d + je short 07274h ; 74 03 ; 0xf726f + dec cx ; 49 ; 0xf7271 parallel.c:86 + jmp short 07263h ; eb ef ; 0xf7272 parallel.c:87 + cmp byte [bp+013h], 001h ; 80 7e 13 01 ; 0xf7274 parallel.c:89 + jne short 0728fh ; 75 15 ; 0xf7278 + lea dx, [di+002h] ; 8d 55 02 ; 0xf727a parallel.c:90 + in AL, DX ; ec ; 0xf727d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf727e + mov word [bp-006h], ax ; 89 46 fa ; 0xf7280 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7283 parallel.c:91 + and AL, strict byte 0fbh ; 24 fb ; 0xf7286 + out DX, AL ; ee ; 0xf7288 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7289 parallel.c:92 + or AL, strict byte 004h ; 0c 04 ; 0xf728c + out DX, AL ; ee ; 0xf728e + lea dx, [di+001h] ; 8d 55 01 ; 0xf728f parallel.c:94 + in AL, DX ; ec ; 0xf7292 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7293 + xor AL, strict byte 048h ; 34 48 ; 0xf7295 parallel.c:95 + mov byte [bp+013h], al ; 88 46 13 ; 0xf7297 + test cx, cx ; 85 c9 ; 0xf729a parallel.c:96 + jne short 072a2h ; 75 04 ; 0xf729c + or byte [bp+013h], 001h ; 80 4e 13 01 ; 0xf729e + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf72a2 parallel.c:97 + jmp short 072ach ; eb 04 ; 0xf72a6 parallel.c:98 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf72a8 parallel.c:99 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf72ac parallel.c:101 + pop di ; 5f ; 0xf72af + pop si ; 5e ; 0xf72b0 + pop bp ; 5d ; 0xf72b1 + retn ; c3 ; 0xf72b2 + ; disGetNextSymbol 0xf72b3 LB 0x3ba5 -> off=0x0 cb=00000000000000c8 uValue=00000000000f5cb3 '_wait_' +_wait_: ; 0xf72b3 LB 0xc8 + push bp ; 55 ; 0xf72b3 logo.c:181 + mov bp, sp ; 89 e5 ; 0xf72b4 + push bx ; 53 ; 0xf72b6 + push cx ; 51 ; 0xf72b7 + push si ; 56 ; 0xf72b8 + push di ; 57 ; 0xf72b9 + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf72ba + mov cx, ax ; 89 c1 ; 0xf72bd + mov byte [bp-00ch], dl ; 88 56 f4 ; 0xf72bf + mov byte [bp-00ah], 000h ; c6 46 f6 00 ; 0xf72c2 logo.c:186 + pushfw ; 9c ; 0xf72c6 logo.c:192 + pop ax ; 58 ; 0xf72c7 + mov word [bp-014h], ax ; 89 46 ec ; 0xf72c8 + sti ; fb ; 0xf72cb logo.c:193 + xor dx, dx ; 31 d2 ; 0xf72cc logo.c:199 + mov bx, 0046ch ; bb 6c 04 ; 0xf72ce logo.c:68 + mov es, dx ; 8e c2 ; 0xf72d1 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf72d3 + mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf72d6 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf72da logo.c:69 + hlt ; f4 ; 0xf72dd logo.c:203 + mov si, 0046ch ; be 6c 04 ; 0xf72de logo.c:68 + xor ax, ax ; 31 c0 ; 0xf72e1 + mov es, ax ; 8e c0 ; 0xf72e3 + mov di, word [es:si] ; 26 8b 3c ; 0xf72e5 + mov ax, word [es:si+002h] ; 26 8b 44 02 ; 0xf72e8 + mov word [bp-016h], di ; 89 7e ea ; 0xf72ec logo.c:69 + mov word [bp-012h], ax ; 89 46 ee ; 0xf72ef + cmp ax, bx ; 39 d8 ; 0xf72f2 logo.c:205 + jnbe short 072fdh ; 77 07 ; 0xf72f4 + jne short 07304h ; 75 0c ; 0xf72f6 + cmp di, word [bp-010h] ; 3b 7e f0 ; 0xf72f8 + jbe short 07304h ; 76 07 ; 0xf72fb + sub di, word [bp-010h] ; 2b 7e f0 ; 0xf72fd logo.c:207 + sbb ax, bx ; 19 d8 ; 0xf7300 + jmp short 0730fh ; eb 0b ; 0xf7302 logo.c:210 + cmp ax, bx ; 39 d8 ; 0xf7304 + jc short 0730fh ; 72 07 ; 0xf7306 + jne short 07313h ; 75 09 ; 0xf7308 + cmp di, word [bp-010h] ; 3b 7e f0 ; 0xf730a + jnc short 07313h ; 73 04 ; 0xf730d + sub cx, di ; 29 f9 ; 0xf730f logo.c:211 + sbb dx, ax ; 19 c2 ; 0xf7311 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf7313 logo.c:212 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf7316 + mov bx, word [bp-012h] ; 8b 5e ee ; 0xf7319 + mov ax, 00100h ; b8 00 01 ; 0xf731c logo.c:214 + int 016h ; cd 16 ; 0xf731f + je short 07328h ; 74 05 ; 0xf7321 + mov AL, strict byte 001h ; b0 01 ; 0xf7323 + jmp near 0732ah ; e9 02 00 ; 0xf7325 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xf7328 + test al, al ; 84 c0 ; 0xf732a + je short 0735dh ; 74 2f ; 0xf732c + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf732e logo.c:216 + int 016h ; cd 16 ; 0xf7330 + xchg ah, al ; 86 c4 ; 0xf7332 + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf7334 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf7337 + mov byte [bp-018h], al ; 88 46 e8 ; 0xf733a logo.c:217 + mov byte [bp-017h], 000h ; c6 46 e9 00 ; 0xf733d + push word [bp-018h] ; ff 76 e8 ; 0xf7341 + mov ax, 009dch ; b8 dc 09 ; 0xf7344 + push ax ; 50 ; 0xf7347 + mov ax, strict word 00004h ; b8 04 00 ; 0xf7348 + push ax ; 50 ; 0xf734b + call 0195ch ; e8 0d a6 ; 0xf734c + add sp, strict byte 00006h ; 83 c4 06 ; 0xf734f + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7352 logo.c:218 + je short 0735dh ; 74 05 ; 0xf7356 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7358 logo.c:219 + jmp short 07372h ; eb 15 ; 0xf735b + test dx, dx ; 85 d2 ; 0xf735d logo.c:221 + jle short 07364h ; 7e 03 ; 0xf735f + jmp near 072ddh ; e9 79 ff ; 0xf7361 + jne short 0736ah ; 75 04 ; 0xf7364 + test cx, cx ; 85 c9 ; 0xf7366 + jnbe short 07361h ; 77 f7 ; 0xf7368 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf736a logo.c:222 + push ax ; 50 ; 0xf736d + popfw ; 9d ; 0xf736e + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf736f logo.c:223 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf7372 logo.c:224 + pop di ; 5f ; 0xf7375 + pop si ; 5e ; 0xf7376 + pop cx ; 59 ; 0xf7377 + pop bx ; 5b ; 0xf7378 + pop bp ; 5d ; 0xf7379 + retn ; c3 ; 0xf737a + ; disGetNextSymbol 0xf737b LB 0x3add -> off=0x0 cb=0000000000000016 uValue=00000000000f5d7b 'read_logo_byte' +read_logo_byte: ; 0xf737b LB 0x16 + push bp ; 55 ; 0xf737b logo.c:226 + mov bp, sp ; 89 e5 ; 0xf737c + push dx ; 52 ; 0xf737e + xor ah, ah ; 30 e4 ; 0xf737f logo.c:228 + or ah, 001h ; 80 cc 01 ; 0xf7381 + mov dx, 003b8h ; ba b8 03 ; 0xf7384 + out DX, ax ; ef ; 0xf7387 + in AL, DX ; ec ; 0xf7388 logo.c:229 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7389 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf738b logo.c:230 + pop dx ; 5a ; 0xf738e + pop bp ; 5d ; 0xf738f + retn ; c3 ; 0xf7390 + ; disGetNextSymbol 0xf7391 LB 0x3ac7 -> off=0x0 cb=0000000000000014 uValue=00000000000f5d91 'read_logo_word' +read_logo_word: ; 0xf7391 LB 0x14 + push bp ; 55 ; 0xf7391 logo.c:232 + mov bp, sp ; 89 e5 ; 0xf7392 + push dx ; 52 ; 0xf7394 + xor ah, ah ; 30 e4 ; 0xf7395 logo.c:234 + or ah, 001h ; 80 cc 01 ; 0xf7397 + mov dx, 003b8h ; ba b8 03 ; 0xf739a + out DX, ax ; ef ; 0xf739d + in ax, DX ; ed ; 0xf739e logo.c:235 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf739f logo.c:236 + pop dx ; 5a ; 0xf73a2 + pop bp ; 5d ; 0xf73a3 + retn ; c3 ; 0xf73a4 + ; disGetNextSymbol 0xf73a5 LB 0x3ab3 -> off=0x0 cb=000000000000015f uValue=00000000000f5da5 'print_detected_harddisks' +print_detected_harddisks: ; 0xf73a5 LB 0x15f + push bp ; 55 ; 0xf73a5 logo.c:255 + mov bp, sp ; 89 e5 ; 0xf73a6 + push bx ; 53 ; 0xf73a8 + push cx ; 51 ; 0xf73a9 + push dx ; 52 ; 0xf73aa + push si ; 56 ; 0xf73ab + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf73ac + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf73af logo.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf73b2 + mov es, ax ; 8e c0 ; 0xf73b5 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf73b7 + mov si, ax ; 89 c6 ; 0xf73ba logo.c:59 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf73bc logo.c:260 + xor ch, ch ; 30 ed ; 0xf73c0 logo.c:261 + mov byte [bp-00ah], ch ; 88 6e f6 ; 0xf73c2 logo.c:262 + mov bx, 002ach ; bb ac 02 ; 0xf73c5 logo.c:48 + mov es, ax ; 8e c0 ; 0xf73c8 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf73ca + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf73cd logo.c:49 + xor cl, cl ; 30 c9 ; 0xf73d0 logo.c:267 + cmp cl, byte [bp-00eh] ; 3a 4e f2 ; 0xf73d2 + jnc short 07435h ; 73 5e ; 0xf73d5 + mov bl, cl ; 88 cb ; 0xf73d7 logo.c:269 + xor bh, bh ; 30 ff ; 0xf73d9 + add bx, 002adh ; 81 c3 ad 02 ; 0xf73db + mov es, si ; 8e c6 ; 0xf73df logo.c:48 + mov bh, byte [es:bx] ; 26 8a 3f ; 0xf73e1 + mov bl, bh ; 88 fb ; 0xf73e4 logo.c:49 + cmp bh, 00ch ; 80 ff 0c ; 0xf73e6 logo.c:272 + jc short 07416h ; 72 2b ; 0xf73e9 + test ch, ch ; 84 ed ; 0xf73eb logo.c:274 + jne short 073ffh ; 75 10 ; 0xf73ed + mov ax, 009edh ; b8 ed 09 ; 0xf73ef logo.c:276 + push ax ; 50 ; 0xf73f2 + mov ax, strict word 00002h ; b8 02 00 ; 0xf73f3 + push ax ; 50 ; 0xf73f6 + call 0195ch ; e8 62 a5 ; 0xf73f7 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf73fa + mov CH, strict byte 001h ; b5 01 ; 0xf73fd logo.c:277 + mov al, cl ; 88 c8 ; 0xf73ff logo.c:280 + xor ah, ah ; 30 e4 ; 0xf7401 + inc ax ; 40 ; 0xf7403 + push ax ; 50 ; 0xf7404 + mov ax, 00a02h ; b8 02 0a ; 0xf7405 + push ax ; 50 ; 0xf7408 + mov ax, strict word 00002h ; b8 02 00 ; 0xf7409 + push ax ; 50 ; 0xf740c + call 0195ch ; e8 4c a5 ; 0xf740d + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7410 + jmp near 074cah ; e9 b4 00 ; 0xf7413 logo.c:283 + cmp bh, 008h ; 80 ff 08 ; 0xf7416 logo.c:286 + jc short 07438h ; 72 1d ; 0xf7419 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf741b logo.c:288 + jne short 07433h ; 75 12 ; 0xf741f + mov ax, 00a15h ; b8 15 0a ; 0xf7421 logo.c:290 + push ax ; 50 ; 0xf7424 + mov ax, strict word 00002h ; b8 02 00 ; 0xf7425 + push ax ; 50 ; 0xf7428 + call 0195ch ; e8 30 a5 ; 0xf7429 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf742c + mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf742f logo.c:291 + jmp short 073ffh ; eb ca ; 0xf7433 logo.c:292 + jmp near 074cfh ; e9 97 00 ; 0xf7435 + cmp bh, 004h ; 80 ff 04 ; 0xf7438 logo.c:301 + jnc short 07457h ; 73 1a ; 0xf743b + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf743d + jne short 07457h ; 75 14 ; 0xf7441 + mov ax, 00a2ah ; b8 2a 0a ; 0xf7443 logo.c:303 + push ax ; 50 ; 0xf7446 + mov ax, strict word 00002h ; b8 02 00 ; 0xf7447 + push ax ; 50 ; 0xf744a + call 0195ch ; e8 0e a5 ; 0xf744b + add sp, strict byte 00004h ; 83 c4 04 ; 0xf744e + mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7451 logo.c:304 + jmp short 07470h ; eb 19 ; 0xf7455 logo.c:306 + cmp bl, 004h ; 80 fb 04 ; 0xf7457 + jc short 07470h ; 72 14 ; 0xf745a + test ch, ch ; 84 ed ; 0xf745c + jne short 07470h ; 75 10 ; 0xf745e + mov ax, 00a3ch ; b8 3c 0a ; 0xf7460 logo.c:308 + push ax ; 50 ; 0xf7463 + mov ax, strict word 00002h ; b8 02 00 ; 0xf7464 + push ax ; 50 ; 0xf7467 + call 0195ch ; e8 f1 a4 ; 0xf7468 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf746b + mov CH, strict byte 001h ; b5 01 ; 0xf746e logo.c:309 + mov al, cl ; 88 c8 ; 0xf7470 logo.c:312 + xor ah, ah ; 30 e4 ; 0xf7472 + inc ax ; 40 ; 0xf7474 + push ax ; 50 ; 0xf7475 + mov ax, 00a50h ; b8 50 0a ; 0xf7476 + push ax ; 50 ; 0xf7479 + mov ax, strict word 00002h ; b8 02 00 ; 0xf747a + push ax ; 50 ; 0xf747d + call 0195ch ; e8 db a4 ; 0xf747e + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7481 + cmp bl, 004h ; 80 fb 04 ; 0xf7484 logo.c:319 + jc short 0748ch ; 72 03 ; 0xf7487 + sub bl, 004h ; 80 eb 04 ; 0xf7489 logo.c:320 + mov al, bl ; 88 d8 ; 0xf748c logo.c:322 + xor ah, ah ; 30 e4 ; 0xf748e + cwd ; 99 ; 0xf7490 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf7491 + sar ax, 1 ; d1 f8 ; 0xf7493 + test ax, ax ; 85 c0 ; 0xf7495 + je short 0749eh ; 74 05 ; 0xf7497 + mov ax, 00a5ah ; b8 5a 0a ; 0xf7499 logo.c:323 + jmp short 074a1h ; eb 03 ; 0xf749c logo.c:324 + mov ax, 00a65h ; b8 65 0a ; 0xf749e logo.c:325 + push ax ; 50 ; 0xf74a1 + mov ax, strict word 00002h ; b8 02 00 ; 0xf74a2 + push ax ; 50 ; 0xf74a5 + call 0195ch ; e8 b3 a4 ; 0xf74a6 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf74a9 + mov al, bl ; 88 d8 ; 0xf74ac logo.c:327 + xor ah, ah ; 30 e4 ; 0xf74ae + cwd ; 99 ; 0xf74b0 + mov bx, strict word 00002h ; bb 02 00 ; 0xf74b1 + idiv bx ; f7 fb ; 0xf74b4 + test dx, dx ; 85 d2 ; 0xf74b6 + je short 074bfh ; 74 05 ; 0xf74b8 + mov ax, 00a6eh ; b8 6e 0a ; 0xf74ba logo.c:328 + jmp short 074c2h ; eb 03 ; 0xf74bd logo.c:329 + mov ax, 00a74h ; b8 74 0a ; 0xf74bf logo.c:330 + push ax ; 50 ; 0xf74c2 + push bx ; 53 ; 0xf74c3 + call 0195ch ; e8 95 a4 ; 0xf74c4 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf74c7 + db 0feh, 0c1h + ; inc cl ; fe c1 ; 0xf74ca logo.c:332 + jmp near 073d2h ; e9 03 ff ; 0xf74cc + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf74cf logo.c:334 + jne short 074edh ; 75 18 ; 0xf74d3 + test ch, ch ; 84 ed ; 0xf74d5 + jne short 074edh ; 75 14 ; 0xf74d7 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf74d9 + jne short 074edh ; 75 0e ; 0xf74dd + mov ax, 00a7bh ; b8 7b 0a ; 0xf74df logo.c:337 + push ax ; 50 ; 0xf74e2 + mov ax, strict word 00002h ; b8 02 00 ; 0xf74e3 + push ax ; 50 ; 0xf74e6 + call 0195ch ; e8 72 a4 ; 0xf74e7 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf74ea + mov ax, 00a8fh ; b8 8f 0a ; 0xf74ed logo.c:339 + push ax ; 50 ; 0xf74f0 + mov ax, strict word 00002h ; b8 02 00 ; 0xf74f1 + push ax ; 50 ; 0xf74f4 + call 0195ch ; e8 64 a4 ; 0xf74f5 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf74f8 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf74fb logo.c:340 + pop si ; 5e ; 0xf74fe + pop dx ; 5a ; 0xf74ff + pop cx ; 59 ; 0xf7500 + pop bx ; 5b ; 0xf7501 + pop bp ; 5d ; 0xf7502 + retn ; c3 ; 0xf7503 + ; disGetNextSymbol 0xf7504 LB 0x3954 -> off=0x0 cb=0000000000000024 uValue=00000000000f5f04 'get_boot_drive' +get_boot_drive: ; 0xf7504 LB 0x24 + push bx ; 53 ; 0xf7504 logo.c:342 + push dx ; 52 ; 0xf7505 + push bp ; 55 ; 0xf7506 + mov bp, sp ; 89 e5 ; 0xf7507 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7509 logo.c:58 + mov dx, strict word 00040h ; ba 40 00 ; 0xf750c + mov es, dx ; 8e c2 ; 0xf750f + mov dx, word [es:bx] ; 26 8b 17 ; 0xf7511 + mov bx, 002ach ; bb ac 02 ; 0xf7514 logo.c:48 + mov es, dx ; 8e c2 ; 0xf7517 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf7519 + sub AL, strict byte 002h ; 2c 02 ; 0xf751c logo.c:350 + cmp al, dl ; 38 d0 ; 0xf751e logo.c:352 + jc short 07524h ; 72 02 ; 0xf7520 + mov AL, strict byte 0ffh ; b0 ff ; 0xf7522 logo.c:353 + pop bp ; 5d ; 0xf7524 logo.c:357 + pop dx ; 5a ; 0xf7525 + pop bx ; 5b ; 0xf7526 + retn ; c3 ; 0xf7527 + ; disGetNextSymbol 0xf7528 LB 0x3930 -> off=0x0 cb=000000000000025c uValue=00000000000f5f28 'show_logo' +show_logo: ; 0xf7528 LB 0x25c + push bp ; 55 ; 0xf7528 logo.c:359 + mov bp, sp ; 89 e5 ; 0xf7529 + push bx ; 53 ; 0xf752b + push cx ; 51 ; 0xf752c + push dx ; 52 ; 0xf752d + push si ; 56 ; 0xf752e + push di ; 57 ; 0xf752f + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf7530 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7533 logo.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7536 + mov es, ax ; 8e c0 ; 0xf7539 + mov si, word [es:bx] ; 26 8b 37 ; 0xf753b + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf753e logo.c:362 + xor cx, cx ; 31 c9 ; 0xf7542 logo.c:366 + mov AL, strict byte 034h ; b0 34 ; 0xf7544 logo.c:373 + out strict byte 043h, AL ; e6 43 ; 0xf7546 + mov AL, strict byte 0d3h ; b0 d3 ; 0xf7548 + out strict byte 040h, AL ; e6 40 ; 0xf754a + mov AL, strict byte 048h ; b0 48 ; 0xf754c + out strict byte 040h, AL ; e6 40 ; 0xf754e + mov al, cl ; 88 c8 ; 0xf7550 logo.c:376 + xor ah, ah ; 30 e4 ; 0xf7552 + call 07391h ; e8 3a fe ; 0xf7554 + cmp ax, 066bbh ; 3d bb 66 ; 0xf7557 logo.c:377 + jne short 0756eh ; 75 12 ; 0xf755a + push SS ; 16 ; 0xf755c logo.c:381 + pop ES ; 07 ; 0xf755d + lea di, [bp-018h] ; 8d 7e e8 ; 0xf755e + mov ax, 04f03h ; b8 03 4f ; 0xf7561 + int 010h ; cd 10 ; 0xf7564 + mov word [es:di], bx ; 26 89 1d ; 0xf7566 + cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf7569 + je short 07571h ; 74 03 ; 0xf756c + jmp near 0765ah ; e9 e9 00 ; 0xf756e logo.c:382 + mov al, cl ; 88 c8 ; 0xf7571 logo.c:385 + add AL, strict byte 004h ; 04 04 ; 0xf7573 + xor ah, ah ; 30 e4 ; 0xf7575 + call 0737bh ; e8 01 fe ; 0xf7577 + mov dl, al ; 88 c2 ; 0xf757a + mov byte [bp-014h], al ; 88 46 ec ; 0xf757c + mov al, cl ; 88 c8 ; 0xf757f logo.c:386 + add AL, strict byte 005h ; 04 05 ; 0xf7581 + xor ah, ah ; 30 e4 ; 0xf7583 + call 0737bh ; e8 f3 fd ; 0xf7585 + mov ch, al ; 88 c5 ; 0xf7588 + mov byte [bp-010h], al ; 88 46 f0 ; 0xf758a + mov al, cl ; 88 c8 ; 0xf758d logo.c:387 + add AL, strict byte 002h ; 04 02 ; 0xf758f + xor ah, ah ; 30 e4 ; 0xf7591 + call 07391h ; e8 fb fd ; 0xf7593 + mov bx, ax ; 89 c3 ; 0xf7596 + mov word [bp-016h], ax ; 89 46 ea ; 0xf7598 + mov al, cl ; 88 c8 ; 0xf759b logo.c:388 + add AL, strict byte 006h ; 04 06 ; 0xf759d + xor ah, ah ; 30 e4 ; 0xf759f + call 0737bh ; e8 d7 fd ; 0xf75a1 + mov byte [bp-012h], al ; 88 46 ee ; 0xf75a4 + test dl, dl ; 84 d2 ; 0xf75a7 logo.c:391 + jne short 075b3h ; 75 08 ; 0xf75a9 + test ch, ch ; 84 ed ; 0xf75ab + jne short 075b3h ; 75 04 ; 0xf75ad + test bx, bx ; 85 db ; 0xf75af + je short 0756eh ; 74 bb ; 0xf75b1 + mov BH, strict byte 020h ; b7 20 ; 0xf75b3 logo.c:395 + mov dx, 001e0h ; ba e0 01 ; 0xf75b5 + mov cx, 00280h ; b9 80 02 ; 0xf75b8 + mov ax, 05642h ; b8 42 56 ; 0xf75bb + mov BL, strict byte 000h ; b3 00 ; 0xf75be + int 010h ; cd 10 ; 0xf75c0 + cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf75c2 logo.c:397 + je short 075cfh ; 74 08 ; 0xf75c5 + mov bx, 00142h ; bb 42 01 ; 0xf75c7 logo.c:398 + mov ax, 04f02h ; b8 02 4f ; 0xf75ca + int 010h ; cd 10 ; 0xf75cd + cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf75cf logo.c:400 + je short 075fah ; 74 25 ; 0xf75d3 + xor cx, cx ; 31 c9 ; 0xf75d5 logo.c:402 + jmp short 075dfh ; eb 06 ; 0xf75d7 + inc cx ; 41 ; 0xf75d9 logo.c:404 + cmp cx, strict byte 00010h ; 83 f9 10 ; 0xf75da + jnbe short 07601h ; 77 22 ; 0xf75dd + mov ax, cx ; 89 c8 ; 0xf75df + or ah, 002h ; 80 cc 02 ; 0xf75e1 + mov dx, 003b8h ; ba b8 03 ; 0xf75e4 + out DX, ax ; ef ; 0xf75e7 + xor dx, dx ; 31 d2 ; 0xf75e8 + mov ax, strict word 00001h ; b8 01 00 ; 0xf75ea + call 072b3h ; e8 c3 fc ; 0xf75ed + cmp AL, strict byte 086h ; 3c 86 ; 0xf75f0 + jne short 075d9h ; 75 e5 ; 0xf75f2 + mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf75f4 + jmp short 07601h ; eb 07 ; 0xf75f8 + mov ax, 00210h ; b8 10 02 ; 0xf75fa logo.c:414 + mov dx, 003b8h ; ba b8 03 ; 0xf75fd + out DX, ax ; ef ; 0xf7600 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7601 logo.c:417 + jne short 0761ch ; 75 15 ; 0xf7605 + mov CL, strict byte 004h ; b1 04 ; 0xf7607 logo.c:419 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf7609 + shr ax, CL ; d3 e8 ; 0xf760c + mov dx, strict word 00001h ; ba 01 00 ; 0xf760e + call 072b3h ; e8 9f fc ; 0xf7611 + cmp AL, strict byte 086h ; 3c 86 ; 0xf7614 logo.c:420 + jne short 0761ch ; 75 04 ; 0xf7616 + mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7618 logo.c:421 + cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf761c logo.c:425 + je short 0764dh ; 74 2b ; 0xf7620 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7622 + jne short 0764dh ; 75 25 ; 0xf7626 + mov cx, strict word 00010h ; b9 10 00 ; 0xf7628 logo.c:427 + jmp short 07632h ; eb 05 ; 0xf762b + dec cx ; 49 ; 0xf762d logo.c:429 + test cx, cx ; 85 c9 ; 0xf762e + jbe short 0765ah ; 76 28 ; 0xf7630 + mov ax, cx ; 89 c8 ; 0xf7632 + or ah, 002h ; 80 cc 02 ; 0xf7634 + mov dx, 003b8h ; ba b8 03 ; 0xf7637 + out DX, ax ; ef ; 0xf763a + xor dx, dx ; 31 d2 ; 0xf763b + mov ax, strict word 00001h ; b8 01 00 ; 0xf763d + call 072b3h ; e8 70 fc ; 0xf7640 + cmp AL, strict byte 086h ; 3c 86 ; 0xf7643 + jne short 0762dh ; 75 e6 ; 0xf7645 + mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7647 + jmp short 0765ah ; eb 0d ; 0xf764b + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf764d logo.c:438 + jne short 0765ah ; 75 07 ; 0xf7651 + mov ax, 00200h ; b8 00 02 ; 0xf7653 logo.c:439 + mov dx, 003b8h ; ba b8 03 ; 0xf7656 + out DX, ax ; ef ; 0xf7659 + mov bx, 00331h ; bb 31 03 ; 0xf765a logo.c:53 + mov es, si ; 8e c6 ; 0xf765d + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf765f + mov AL, strict byte 003h ; b0 03 ; 0xf7663 logo.c:447 + mov AH, strict byte 000h ; b4 00 ; 0xf7665 + int 010h ; cd 10 ; 0xf7667 + cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf7669 logo.c:450 + je short 07683h ; 74 14 ; 0xf766d + cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf766f logo.c:453 + jne short 076b1h ; 75 3c ; 0xf7673 + cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf7675 + jne short 076b1h ; 75 36 ; 0xf7679 + cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf767b + je short 07686h ; 74 05 ; 0xf767f + jmp short 076b1h ; eb 2e ; 0xf7681 + jmp near 07767h ; e9 e1 00 ; 0xf7683 + cmp byte [bp-012h], 002h ; 80 7e ee 02 ; 0xf7686 logo.c:455 + jne short 0769ah ; 75 0e ; 0xf768a + mov ax, 00a91h ; b8 91 0a ; 0xf768c logo.c:456 + push ax ; 50 ; 0xf768f + mov ax, strict word 00002h ; b8 02 00 ; 0xf7690 + push ax ; 50 ; 0xf7693 + call 0195ch ; e8 c5 a2 ; 0xf7694 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7697 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf769a logo.c:459 + jne short 076b1h ; 75 11 ; 0xf769e + mov dx, strict word 00001h ; ba 01 00 ; 0xf76a0 logo.c:462 + mov ax, 000c0h ; b8 c0 00 ; 0xf76a3 + call 072b3h ; e8 0a fc ; 0xf76a6 + cmp AL, strict byte 086h ; 3c 86 ; 0xf76a9 logo.c:463 + jne short 076b1h ; 75 04 ; 0xf76ab + mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf76ad logo.c:464 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf76b1 logo.c:469 + je short 07683h ; 74 cc ; 0xf76b5 + mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf76b7 logo.c:471 + mov ax, 00100h ; b8 00 01 ; 0xf76bb logo.c:474 + mov cx, 01000h ; b9 00 10 ; 0xf76be + int 010h ; cd 10 ; 0xf76c1 + mov ax, 00700h ; b8 00 07 ; 0xf76c3 + mov BH, strict byte 007h ; b7 07 ; 0xf76c6 + db 033h, 0c9h + ; xor cx, cx ; 33 c9 ; 0xf76c8 + mov dx, 0184fh ; ba 4f 18 ; 0xf76ca + int 010h ; cd 10 ; 0xf76cd + mov ax, 00200h ; b8 00 02 ; 0xf76cf + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xf76d2 + db 033h, 0d2h + ; xor dx, dx ; 33 d2 ; 0xf76d4 + int 010h ; cd 10 ; 0xf76d6 + mov ax, 00ab3h ; b8 b3 0a ; 0xf76d8 logo.c:477 + push ax ; 50 ; 0xf76db + mov ax, strict word 00002h ; b8 02 00 ; 0xf76dc + push ax ; 50 ; 0xf76df + call 0195ch ; e8 79 a2 ; 0xf76e0 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf76e3 + call 073a5h ; e8 bc fc ; 0xf76e6 logo.c:478 + mov ax, 00af7h ; b8 f7 0a ; 0xf76e9 logo.c:479 + push ax ; 50 ; 0xf76ec + mov ax, strict word 00002h ; b8 02 00 ; 0xf76ed + push ax ; 50 ; 0xf76f0 + call 0195ch ; e8 68 a2 ; 0xf76f1 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf76f4 + mov dx, strict word 00001h ; ba 01 00 ; 0xf76f7 logo.c:488 + mov ax, strict word 00040h ; b8 40 00 ; 0xf76fa + call 072b3h ; e8 b3 fb ; 0xf76fd + mov cl, al ; 88 c1 ; 0xf7700 + test al, al ; 84 c0 ; 0xf7702 logo.c:489 + je short 076f7h ; 74 f1 ; 0xf7704 + cmp AL, strict byte 030h ; 3c 30 ; 0xf7706 logo.c:491 + je short 07756h ; 74 4c ; 0xf7708 + cmp cl, 002h ; 80 f9 02 ; 0xf770a logo.c:498 + jc short 0772fh ; 72 20 ; 0xf770d + cmp cl, 009h ; 80 f9 09 ; 0xf770f + jnbe short 0772fh ; 77 1b ; 0xf7712 + mov al, cl ; 88 c8 ; 0xf7714 logo.c:500 + xor ah, ah ; 30 e4 ; 0xf7716 + call 07504h ; e8 e9 fd ; 0xf7718 + cmp AL, strict byte 0ffh ; 3c ff ; 0xf771b logo.c:507 + jne short 07721h ; 75 02 ; 0xf771d + jmp short 076f7h ; eb d6 ; 0xf771f logo.c:508 + mov bx, 00330h ; bb 30 03 ; 0xf7721 logo.c:53 + mov es, si ; 8e c6 ; 0xf7724 + mov byte [es:bx], al ; 26 88 07 ; 0xf7726 + mov byte [bp-00eh], 002h ; c6 46 f2 02 ; 0xf7729 logo.c:511 + jmp short 07756h ; eb 27 ; 0xf772d logo.c:512 + cmp cl, 02eh ; 80 f9 2e ; 0xf772f logo.c:515 + je short 07744h ; 74 10 ; 0xf7732 + cmp cl, 026h ; 80 f9 26 ; 0xf7734 + je short 0774ah ; 74 11 ; 0xf7737 + cmp cl, 021h ; 80 f9 21 ; 0xf7739 + jne short 07750h ; 75 12 ; 0xf773c + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf773e logo.c:519 + jmp short 07756h ; eb 12 ; 0xf7742 logo.c:520 + mov byte [bp-00eh], 003h ; c6 46 f2 03 ; 0xf7744 logo.c:523 + jmp short 07756h ; eb 0c ; 0xf7748 logo.c:524 + mov byte [bp-00eh], 004h ; c6 46 f2 04 ; 0xf774a logo.c:527 + jmp short 07756h ; eb 06 ; 0xf774e logo.c:528 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7750 logo.c:531 + je short 076f7h ; 74 a1 ; 0xf7754 + mov bx, 00331h ; bb 31 03 ; 0xf7756 logo.c:53 + mov es, si ; 8e c6 ; 0xf7759 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf775b + mov byte [es:bx], al ; 26 88 07 ; 0xf775e + mov AL, strict byte 003h ; b0 03 ; 0xf7761 logo.c:538 + mov AH, strict byte 000h ; b4 00 ; 0xf7763 + int 010h ; cd 10 ; 0xf7765 + mov AL, strict byte 034h ; b0 34 ; 0xf7767 logo.c:543 + out strict byte 043h, AL ; e6 43 ; 0xf7769 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf776b + out strict byte 040h, AL ; e6 40 ; 0xf776d + out strict byte 040h, AL ; e6 40 ; 0xf776f + push bp ; 55 ; 0xf7771 + push DS ; 1e ; 0xf7772 + mov ds, ax ; 8e d8 ; 0xf7773 + call 0ede3h ; e8 6b 76 ; 0xf7775 + pop DS ; 1f ; 0xf7778 + pop bp ; 5d ; 0xf7779 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf777a logo.c:546 + pop di ; 5f ; 0xf777d + pop si ; 5e ; 0xf777e + pop dx ; 5a ; 0xf777f + pop cx ; 59 ; 0xf7780 + pop bx ; 5b ; 0xf7781 + pop bp ; 5d ; 0xf7782 + retn ; c3 ; 0xf7783 + ; disGetNextSymbol 0xf7784 LB 0x36d4 -> off=0x0 cb=0000000000000072 uValue=00000000000f6184 'delay_boot' +delay_boot: ; 0xf7784 LB 0x72 + push bp ; 55 ; 0xf7784 logo.c:549 + mov bp, sp ; 89 e5 ; 0xf7785 + push bx ; 53 ; 0xf7787 + push cx ; 51 ; 0xf7788 + push dx ; 52 ; 0xf7789 + push si ; 56 ; 0xf778a + push di ; 57 ; 0xf778b + mov bx, ax ; 89 c3 ; 0xf778c + test ax, ax ; 85 c0 ; 0xf778e logo.c:553 + je short 077ech ; 74 5a ; 0xf7790 + mov AL, strict byte 034h ; b0 34 ; 0xf7792 logo.c:557 + out strict byte 043h, AL ; e6 43 ; 0xf7794 + mov AL, strict byte 0d3h ; b0 d3 ; 0xf7796 + out strict byte 040h, AL ; e6 40 ; 0xf7798 + mov AL, strict byte 048h ; b0 48 ; 0xf779a + out strict byte 040h, AL ; e6 40 ; 0xf779c + push bx ; 53 ; 0xf779e logo.c:559 + mov ax, 00b41h ; b8 41 0b ; 0xf779f + push ax ; 50 ; 0xf77a2 + mov ax, strict word 00002h ; b8 02 00 ; 0xf77a3 + push ax ; 50 ; 0xf77a6 + call 0195ch ; e8 b2 a1 ; 0xf77a7 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf77aa + test bx, bx ; 85 db ; 0xf77ad logo.c:560 + jbe short 077cbh ; 76 1a ; 0xf77af + push bx ; 53 ; 0xf77b1 logo.c:562 + mov ax, 00b5fh ; b8 5f 0b ; 0xf77b2 + push ax ; 50 ; 0xf77b5 + mov ax, strict word 00002h ; b8 02 00 ; 0xf77b6 + push ax ; 50 ; 0xf77b9 + call 0195ch ; e8 9f a1 ; 0xf77ba + add sp, strict byte 00006h ; 83 c4 06 ; 0xf77bd + xor dx, dx ; 31 d2 ; 0xf77c0 logo.c:563 + mov ax, strict word 00040h ; b8 40 00 ; 0xf77c2 + call 072b3h ; e8 eb fa ; 0xf77c5 + dec bx ; 4b ; 0xf77c8 logo.c:564 + jmp short 077adh ; eb e2 ; 0xf77c9 + mov bx, 00a8fh ; bb 8f 0a ; 0xf77cb logo.c:565 + push bx ; 53 ; 0xf77ce + mov bx, strict word 00002h ; bb 02 00 ; 0xf77cf + push bx ; 53 ; 0xf77d2 + call 0195ch ; e8 86 a1 ; 0xf77d3 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf77d6 + mov AL, strict byte 034h ; b0 34 ; 0xf77d9 logo.c:567 + out strict byte 043h, AL ; e6 43 ; 0xf77db + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf77dd + out strict byte 040h, AL ; e6 40 ; 0xf77df + out strict byte 040h, AL ; e6 40 ; 0xf77e1 + push bp ; 55 ; 0xf77e3 + push DS ; 1e ; 0xf77e4 + mov ds, ax ; 8e d8 ; 0xf77e5 + call 0ede3h ; e8 f9 75 ; 0xf77e7 + pop DS ; 1f ; 0xf77ea + pop bp ; 5d ; 0xf77eb + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf77ec logo.c:568 + pop di ; 5f ; 0xf77ef + pop si ; 5e ; 0xf77f0 + pop dx ; 5a ; 0xf77f1 + pop cx ; 59 ; 0xf77f2 + pop bx ; 5b ; 0xf77f3 + pop bp ; 5d ; 0xf77f4 + retn ; c3 ; 0xf77f5 + ; disGetNextSymbol 0xf77f6 LB 0x3662 -> off=0x0 cb=000000000000003a uValue=00000000000f61f6 'scsi_hba_mem_alloc' +scsi_hba_mem_alloc: ; 0xf77f6 LB 0x3a + push bx ; 53 ; 0xf77f6 scsi.c:105 + push cx ; 51 ; 0xf77f7 + push dx ; 52 ; 0xf77f8 + push di ; 57 ; 0xf77f9 + push bp ; 55 ; 0xf77fa + mov bp, sp ; 89 e5 ; 0xf77fb + mov di, 00413h ; bf 13 04 ; 0xf77fd scsi.c:58 + xor ax, ax ; 31 c0 ; 0xf7800 + mov es, ax ; 8e c0 ; 0xf7802 + mov ax, word [es:di] ; 26 8b 05 ; 0xf7804 + test ax, ax ; 85 c0 ; 0xf7807 scsi.c:114 + je short 0782ah ; 74 1f ; 0xf7809 + dec ax ; 48 ; 0xf780b scsi.c:115 + mov bx, ax ; 89 c3 ; 0xf780c + xor dx, dx ; 31 d2 ; 0xf780e scsi.c:118 + mov cx, strict word 0000ah ; b9 0a 00 ; 0xf7810 + sal ax, 1 ; d1 e0 ; 0xf7813 + rcl dx, 1 ; d1 d2 ; 0xf7815 + loop 07813h ; e2 fa ; 0xf7817 + mov di, dx ; 89 d7 ; 0xf7819 + mov cx, strict word 00004h ; b9 04 00 ; 0xf781b + shr di, 1 ; d1 ef ; 0xf781e + rcr ax, 1 ; d1 d8 ; 0xf7820 + loop 0781eh ; e2 fa ; 0xf7822 + mov di, 00413h ; bf 13 04 ; 0xf7824 scsi.c:63 + mov word [es:di], bx ; 26 89 1d ; 0xf7827 + pop bp ; 5d ; 0xf782a scsi.c:123 + pop di ; 5f ; 0xf782b + pop dx ; 5a ; 0xf782c + pop cx ; 59 ; 0xf782d + pop bx ; 5b ; 0xf782e + retn ; c3 ; 0xf782f + ; disGetNextSymbol 0xf7830 LB 0x3628 -> off=0x0 cb=0000000000000119 uValue=00000000000f6230 'scsi_read_sectors' +scsi_read_sectors: ; 0xf7830 LB 0x119 + push bp ; 55 ; 0xf7830 scsi.c:132 + mov bp, sp ; 89 e5 ; 0xf7831 + push si ; 56 ; 0xf7833 + push di ; 57 ; 0xf7834 + sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf7835 + mov si, word [bp+004h] ; 8b 76 04 ; 0xf7838 + mov es, [bp+006h] ; 8e 46 06 ; 0xf783b scsi.c:143 + mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf783e + sub AL, strict byte 008h ; 2c 08 ; 0xf7842 + mov byte [bp-006h], al ; 88 46 fa ; 0xf7844 + cmp AL, strict byte 004h ; 3c 04 ; 0xf7847 scsi.c:144 + jbe short 07860h ; 76 15 ; 0xf7849 + xor ah, ah ; 30 e4 ; 0xf784b scsi.c:145 + push ax ; 50 ; 0xf784d + mov ax, 00b64h ; b8 64 0b ; 0xf784e + push ax ; 50 ; 0xf7851 + mov ax, 00b76h ; b8 76 0b ; 0xf7852 + push ax ; 50 ; 0xf7855 + mov ax, strict word 00007h ; b8 07 00 ; 0xf7856 + push ax ; 50 ; 0xf7859 + call 0195ch ; e8 ff a0 ; 0xf785a + add sp, strict byte 00008h ; 83 c4 08 ; 0xf785d + mov es, [bp+006h] ; 8e 46 06 ; 0xf7860 scsi.c:147 + mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf7863 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf7867 + shr eax, 010h ; 66 c1 e8 10 ; 0xf786a scsi.c:83 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf786e + mov word [bp-020h], 00088h ; c7 46 e0 88 00 ; 0xf7871 scsi.c:152 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7876 scsi.c:153 + mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7879 + mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf787d + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7881 + mov dx, word [es:si] ; 26 8b 14 ; 0xf7885 + xchg ah, al ; 86 c4 ; 0xf7888 + xchg bh, bl ; 86 df ; 0xf788a + xchg ch, cl ; 86 cd ; 0xf788c + xchg dh, dl ; 86 d6 ; 0xf788e + xchg dx, ax ; 92 ; 0xf7890 + xchg bx, cx ; 87 cb ; 0xf7891 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf7893 + mov word [bp-01ah], bx ; 89 5e e6 ; 0xf7896 + mov word [bp-01ch], cx ; 89 4e e4 ; 0xf7899 + mov word [bp-01eh], dx ; 89 56 e2 ; 0xf789c + mov byte [bp-012h], 000h ; c6 46 ee 00 ; 0xf789f scsi.c:154 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf78a3 scsi.c:155 + xor dx, dx ; 31 d2 ; 0xf78a6 + xchg ah, al ; 86 c4 ; 0xf78a8 + xchg dh, dl ; 86 d6 ; 0xf78aa + xchg dx, ax ; 92 ; 0xf78ac + mov word [bp-016h], ax ; 89 46 ea ; 0xf78ad + mov word [bp-014h], dx ; 89 56 ec ; 0xf78b0 + mov byte [bp-011h], 000h ; c6 46 ef 00 ; 0xf78b3 scsi.c:156 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf78b7 scsi.c:159 + xor ah, ah ; 30 e4 ; 0xf78ba + sal ax, 1 ; d1 e0 ; 0xf78bc + sal ax, 1 ; d1 e0 ; 0xf78be + mov bx, si ; 89 f3 ; 0xf78c0 + add bx, ax ; 01 c3 ; 0xf78c2 + mov ax, word [es:bx+00290h] ; 26 8b 87 90 02 ; 0xf78c4 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf78c9 + mov al, byte [es:bx+00292h] ; 26 8a 87 92 02 ; 0xf78cc scsi.c:160 + mov bl, byte [es:bx+00293h] ; 26 8a 9f 93 02 ; 0xf78d1 scsi.c:161 + xor ah, ah ; 30 e4 ; 0xf78d6 scsi.c:166 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf78d8 + imul dx ; f7 ea ; 0xf78db + mov di, ax ; 89 c7 ; 0xf78dd + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf78df + mov word [bp-010h], ax ; 89 46 f0 ; 0xf78e2 + mov word [bp-00eh], strict word 00000h ; c7 46 f2 00 00 ; 0xf78e5 + mov cx, strict word 00009h ; b9 09 00 ; 0xf78ea + sal word [bp-010h], 1 ; d1 66 f0 ; 0xf78ed + rcl word [bp-00eh], 1 ; d1 56 f2 ; 0xf78f0 + loop 078edh ; e2 f8 ; 0xf78f3 + push word [bp-00eh] ; ff 76 f2 ; 0xf78f5 + push word [bp-010h] ; ff 76 f0 ; 0xf78f8 + push word [es:si+00ah] ; 26 ff 74 0a ; 0xf78fb + push word [es:si+008h] ; 26 ff 74 08 ; 0xf78ff + mov ax, strict word 00010h ; b8 10 00 ; 0xf7903 + push ax ; 50 ; 0xf7906 + lea dx, [bp-020h] ; 8d 56 e0 ; 0xf7907 + push SS ; 16 ; 0xf790a + push dx ; 52 ; 0xf790b + xor bh, bh ; 30 ff ; 0xf790c + xor ax, ax ; 31 c0 ; 0xf790e + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf7910 + call word [di+000a2h] ; ff 95 a2 00 ; 0xf7913 + mov dl, al ; 88 c2 ; 0xf7917 + test al, al ; 84 c0 ; 0xf7919 scsi.c:168 + jne short 07935h ; 75 18 ; 0xf791b + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf791d scsi.c:170 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7920 + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf7923 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf7927 scsi.c:171 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf792a + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf792e + mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7931 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf7935 scsi.c:86 + sal eax, 010h ; 66 c1 e0 10 ; 0xf7938 scsi.c:88 + mov al, dl ; 88 d0 ; 0xf793c scsi.c:176 + xor ah, ah ; 30 e4 ; 0xf793e + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7940 scsi.c:177 + pop di ; 5f ; 0xf7943 + pop si ; 5e ; 0xf7944 + pop bp ; 5d ; 0xf7945 + retn 00004h ; c2 04 00 ; 0xf7946 + ; disGetNextSymbol 0xf7949 LB 0x350f -> off=0x0 cb=0000000000000119 uValue=00000000000f6349 'scsi_write_sectors' +scsi_write_sectors: ; 0xf7949 LB 0x119 + push bp ; 55 ; 0xf7949 scsi.c:186 + mov bp, sp ; 89 e5 ; 0xf794a + push si ; 56 ; 0xf794c + push di ; 57 ; 0xf794d + sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf794e + mov si, word [bp+004h] ; 8b 76 04 ; 0xf7951 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7954 scsi.c:197 + mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7957 + sub AL, strict byte 008h ; 2c 08 ; 0xf795b + mov byte [bp-006h], al ; 88 46 fa ; 0xf795d + cmp AL, strict byte 004h ; 3c 04 ; 0xf7960 scsi.c:198 + jbe short 07979h ; 76 15 ; 0xf7962 + xor ah, ah ; 30 e4 ; 0xf7964 scsi.c:199 + push ax ; 50 ; 0xf7966 + mov ax, 00b95h ; b8 95 0b ; 0xf7967 + push ax ; 50 ; 0xf796a + mov ax, 00b76h ; b8 76 0b ; 0xf796b + push ax ; 50 ; 0xf796e + mov ax, strict word 00007h ; b8 07 00 ; 0xf796f + push ax ; 50 ; 0xf7972 + call 0195ch ; e8 e6 9f ; 0xf7973 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf7976 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7979 scsi.c:201 + mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf797c + mov word [bp-008h], ax ; 89 46 f8 ; 0xf7980 + shr eax, 010h ; 66 c1 e8 10 ; 0xf7983 scsi.c:83 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf7987 + mov word [bp-020h], 0008ah ; c7 46 e0 8a 00 ; 0xf798a scsi.c:206 + mov es, [bp+006h] ; 8e 46 06 ; 0xf798f scsi.c:207 + mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7992 + mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7996 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf799a + mov dx, word [es:si] ; 26 8b 14 ; 0xf799e + xchg ah, al ; 86 c4 ; 0xf79a1 + xchg bh, bl ; 86 df ; 0xf79a3 + xchg ch, cl ; 86 cd ; 0xf79a5 + xchg dh, dl ; 86 d6 ; 0xf79a7 + xchg dx, ax ; 92 ; 0xf79a9 + xchg bx, cx ; 87 cb ; 0xf79aa + mov word [bp-018h], ax ; 89 46 e8 ; 0xf79ac + mov word [bp-01ah], bx ; 89 5e e6 ; 0xf79af + mov word [bp-01ch], cx ; 89 4e e4 ; 0xf79b2 + mov word [bp-01eh], dx ; 89 56 e2 ; 0xf79b5 + mov byte [bp-012h], 000h ; c6 46 ee 00 ; 0xf79b8 scsi.c:208 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf79bc scsi.c:209 + xor dx, dx ; 31 d2 ; 0xf79bf + xchg ah, al ; 86 c4 ; 0xf79c1 + xchg dh, dl ; 86 d6 ; 0xf79c3 + xchg dx, ax ; 92 ; 0xf79c5 + mov word [bp-016h], ax ; 89 46 ea ; 0xf79c6 + mov word [bp-014h], dx ; 89 56 ec ; 0xf79c9 + mov byte [bp-011h], 000h ; c6 46 ef 00 ; 0xf79cc scsi.c:210 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf79d0 scsi.c:212 + xor ah, ah ; 30 e4 ; 0xf79d3 + sal ax, 1 ; d1 e0 ; 0xf79d5 + sal ax, 1 ; d1 e0 ; 0xf79d7 + mov bx, si ; 89 f3 ; 0xf79d9 + add bx, ax ; 01 c3 ; 0xf79db + mov ax, word [es:bx+00290h] ; 26 8b 87 90 02 ; 0xf79dd + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf79e2 + mov al, byte [es:bx+00292h] ; 26 8a 87 92 02 ; 0xf79e5 scsi.c:213 + mov bl, byte [es:bx+00293h] ; 26 8a 9f 93 02 ; 0xf79ea scsi.c:214 + xor ah, ah ; 30 e4 ; 0xf79ef scsi.c:219 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf79f1 + imul dx ; f7 ea ; 0xf79f4 + mov di, ax ; 89 c7 ; 0xf79f6 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf79f8 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf79fb + mov word [bp-00eh], strict word 00000h ; c7 46 f2 00 00 ; 0xf79fe + mov cx, strict word 00009h ; b9 09 00 ; 0xf7a03 + sal word [bp-010h], 1 ; d1 66 f0 ; 0xf7a06 + rcl word [bp-00eh], 1 ; d1 56 f2 ; 0xf7a09 + loop 07a06h ; e2 f8 ; 0xf7a0c + push word [bp-00eh] ; ff 76 f2 ; 0xf7a0e + push word [bp-010h] ; ff 76 f0 ; 0xf7a11 + push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7a14 + push word [es:si+008h] ; 26 ff 74 08 ; 0xf7a18 + mov ax, strict word 00010h ; b8 10 00 ; 0xf7a1c + push ax ; 50 ; 0xf7a1f + lea dx, [bp-020h] ; 8d 56 e0 ; 0xf7a20 + push SS ; 16 ; 0xf7a23 + push dx ; 52 ; 0xf7a24 + xor bh, bh ; 30 ff ; 0xf7a25 + xor ax, ax ; 31 c0 ; 0xf7a27 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf7a29 + call word [di+000a0h] ; ff 95 a0 00 ; 0xf7a2c + mov dl, al ; 88 c2 ; 0xf7a30 + test al, al ; 84 c0 ; 0xf7a32 scsi.c:221 + jne short 07a4eh ; 75 18 ; 0xf7a34 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf7a36 scsi.c:223 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7a39 + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf7a3c + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf7a40 scsi.c:224 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf7a43 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf7a47 + mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7a4a + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf7a4e scsi.c:86 + sal eax, 010h ; 66 c1 e0 10 ; 0xf7a51 scsi.c:88 + mov al, dl ; 88 d0 ; 0xf7a55 scsi.c:229 + xor ah, ah ; 30 e4 ; 0xf7a57 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7a59 scsi.c:230 + pop di ; 5f ; 0xf7a5c + pop si ; 5e ; 0xf7a5d + pop bp ; 5d ; 0xf7a5e + retn 00004h ; c2 04 00 ; 0xf7a5f + ; disGetNextSymbol 0xf7a62 LB 0x33f6 -> off=0x0 cb=000000000000011c uValue=00000000000f6462 'scsi_cmd_packet' +scsi_cmd_packet: ; 0xf7a62 LB 0x11c + push bp ; 55 ; 0xf7a62 scsi.c:249 + mov bp, sp ; 89 e5 ; 0xf7a63 + push si ; 56 ; 0xf7a65 + push di ; 57 ; 0xf7a66 + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf7a67 + mov di, ax ; 89 c7 ; 0xf7a6a + mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf7a6c + mov word [bp-00eh], bx ; 89 5e f2 ; 0xf7a6f + mov word [bp-00ch], cx ; 89 4e f4 ; 0xf7a72 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7a75 scsi.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7a78 + mov es, ax ; 8e c0 ; 0xf7a7b + mov ax, word [es:bx] ; 26 8b 07 ; 0xf7a7d + mov si, strict word 0005eh ; be 5e 00 ; 0xf7a80 scsi.c:59 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf7a83 + cmp byte [bp+008h], 002h ; 80 7e 08 02 ; 0xf7a86 scsi.c:260 + jne short 07aafh ; 75 23 ; 0xf7a8a + mov bx, 00dcch ; bb cc 0d ; 0xf7a8c scsi.c:261 + mov cx, ds ; 8c d9 ; 0xf7a8f + mov ax, strict word 00004h ; b8 04 00 ; 0xf7a91 + call 01919h ; e8 82 9e ; 0xf7a94 + mov ax, 00ba8h ; b8 a8 0b ; 0xf7a97 + push ax ; 50 ; 0xf7a9a + mov ax, 00bb8h ; b8 b8 0b ; 0xf7a9b + push ax ; 50 ; 0xf7a9e + mov ax, strict word 00004h ; b8 04 00 ; 0xf7a9f + push ax ; 50 ; 0xf7aa2 + call 0195ch ; e8 b6 9e ; 0xf7aa3 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7aa6 + mov ax, strict word 00001h ; b8 01 00 ; 0xf7aa9 scsi.c:262 + jmp near 07b75h ; e9 c6 00 ; 0xf7aac + sub di, strict byte 00008h ; 83 ef 08 ; 0xf7aaf scsi.c:266 + shr eax, 010h ; 66 c1 e8 10 ; 0xf7ab2 scsi.c:83 + mov word [bp-014h], ax ; 89 46 ec ; 0xf7ab6 + mov bx, di ; 89 fb ; 0xf7ab9 scsi.c:274 + sal bx, 1 ; d1 e3 ; 0xf7abb + sal bx, 1 ; d1 e3 ; 0xf7abd + mov es, [bp-010h] ; 8e 46 f0 ; 0xf7abf + add bx, si ; 01 f3 ; 0xf7ac2 + mov ax, word [es:bx+00290h] ; 26 8b 87 90 02 ; 0xf7ac4 + mov word [bp-012h], ax ; 89 46 ee ; 0xf7ac9 + mov al, byte [es:bx+00292h] ; 26 8a 87 92 02 ; 0xf7acc scsi.c:275 + mov byte [bp-006h], al ; 88 46 fa ; 0xf7ad1 + mov al, byte [es:bx+00293h] ; 26 8a 87 93 02 ; 0xf7ad4 scsi.c:276 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf7ad9 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7adc scsi.c:278 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf7adf + mov cx, strict word 00008h ; b9 08 00 ; 0xf7ae2 + sal ax, 1 ; d1 e0 ; 0xf7ae5 + rcl dx, 1 ; d1 d2 ; 0xf7ae7 + loop 07ae5h ; e2 fa ; 0xf7ae9 + mov word [es:si], ax ; 26 89 04 ; 0xf7aeb + mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf7aee + mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf7af2 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf7af8 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf7afe scsi.c:279 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf7b01 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf7b05 + mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf7b08 + mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf7b0c scsi.c:280 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7b10 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf7b13 + xor cx, cx ; 31 c9 ; 0xf7b16 + call 0aae0h ; e8 c5 2f ; 0xf7b18 + mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf7b1b + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7b1f scsi.c:285 + xor ah, ah ; 30 e4 ; 0xf7b22 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf7b24 + imul dx ; f7 ea ; 0xf7b27 + mov di, ax ; 89 c7 ; 0xf7b29 + push word [bp+006h] ; ff 76 06 ; 0xf7b2b + push word [bp+004h] ; ff 76 04 ; 0xf7b2e + push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7b31 + push word [es:si+008h] ; 26 ff 74 08 ; 0xf7b35 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf7b39 + xor ah, ah ; 30 e4 ; 0xf7b3c + push ax ; 50 ; 0xf7b3e + push word [bp-00ch] ; ff 76 f4 ; 0xf7b3f + push word [bp-00eh] ; ff 76 f2 ; 0xf7b42 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf7b45 + xor bh, bh ; 30 ff ; 0xf7b48 + xor al, al ; 30 c0 ; 0xf7b4a + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf7b4c + call word [di+000a2h] ; ff 95 a2 00 ; 0xf7b4f + mov dl, al ; 88 c2 ; 0xf7b53 + test al, al ; 84 c0 ; 0xf7b55 scsi.c:287 + jne short 07b6ah ; 75 11 ; 0xf7b57 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7b59 scsi.c:288 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf7b5c + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf7b5f + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf7b63 + mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7b66 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf7b6a scsi.c:86 + sal eax, 010h ; 66 c1 e0 10 ; 0xf7b6d scsi.c:88 + mov al, dl ; 88 d0 ; 0xf7b71 scsi.c:293 + xor ah, ah ; 30 e4 ; 0xf7b73 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7b75 scsi.c:294 + pop di ; 5f ; 0xf7b78 + pop si ; 5e ; 0xf7b79 + pop bp ; 5d ; 0xf7b7a + retn 0000ah ; c2 0a 00 ; 0xf7b7b + ; disGetNextSymbol 0xf7b7e LB 0x32da -> off=0x0 cb=00000000000004d8 uValue=00000000000f657e 'scsi_enumerate_attached_devices' +scsi_enumerate_attached_devices: ; 0xf7b7e LB 0x4d8 + push bp ; 55 ; 0xf7b7e scsi.c:303 + mov bp, sp ; 89 e5 ; 0xf7b7f + push bx ; 53 ; 0xf7b81 + push cx ; 51 ; 0xf7b82 + push si ; 56 ; 0xf7b83 + push di ; 57 ; 0xf7b84 + sub sp, 00240h ; 81 ec 40 02 ; 0xf7b85 + push ax ; 50 ; 0xf7b89 + mov byte [bp-00eh], dl ; 88 56 f2 ; 0xf7b8a + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7b8d scsi.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7b90 + mov es, ax ; 8e c0 ; 0xf7b93 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf7b95 + mov di, strict word 0005eh ; bf 5e 00 ; 0xf7b98 scsi.c:59 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf7b9b + mov word [bp-01ah], strict word 00000h ; c7 46 e6 00 00 ; 0xf7b9e scsi.c:312 + jmp near 07ffdh ; e9 57 04 ; 0xf7ba3 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf7ba6 scsi.c:318 + mov al, byte [es:di+002a0h] ; 26 8a 85 a0 02 ; 0xf7ba9 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf7bae + test byte [bp-00248h], 0e0h ; f6 86 b8 fd e0 ; 0xf7bb1 scsi.c:335 + jne short 07bbfh ; 75 07 ; 0xf7bb6 + test byte [bp-00248h], 01fh ; f6 86 b8 fd 1f ; 0xf7bb8 + je short 07bc2h ; 74 03 ; 0xf7bbd + jmp near 07f31h ; e9 6f 03 ; 0xf7bbf + cmp AL, strict byte 004h ; 3c 04 ; 0xf7bc2 scsi.c:341 + jc short 07bc9h ; 72 03 ; 0xf7bc4 + jmp near 0804dh ; e9 84 04 ; 0xf7bc6 + mov cx, strict word 00010h ; b9 10 00 ; 0xf7bc9 scsi.c:350 + xor bx, bx ; 31 db ; 0xf7bcc + mov dx, ss ; 8c d2 ; 0xf7bce + lea ax, [bp-048h] ; 8d 46 b8 ; 0xf7bd0 + call 0ab30h ; e8 5a 2f ; 0xf7bd3 + mov byte [bp-048h], 09eh ; c6 46 b8 9e ; 0xf7bd6 scsi.c:351 + mov byte [bp-047h], 010h ; c6 46 b9 10 ; 0xf7bda scsi.c:352 + mov byte [bp-03bh], 020h ; c6 46 c5 20 ; 0xf7bde scsi.c:353 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7be2 scsi.c:355 + xor ah, ah ; 30 e4 ; 0xf7be5 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf7be7 + imul dx ; f7 ea ; 0xf7bea + mov si, ax ; 89 c6 ; 0xf7bec + xor ax, ax ; 31 c0 ; 0xf7bee + push ax ; 50 ; 0xf7bf0 + mov ax, strict word 00020h ; b8 20 00 ; 0xf7bf1 + push ax ; 50 ; 0xf7bf4 + lea dx, [bp-00248h] ; 8d 96 b8 fd ; 0xf7bf5 + push SS ; 16 ; 0xf7bf9 + push dx ; 52 ; 0xf7bfa + mov ax, strict word 00010h ; b8 10 00 ; 0xf7bfb + push ax ; 50 ; 0xf7bfe + lea dx, [bp-048h] ; 8d 56 b8 ; 0xf7bff + push SS ; 16 ; 0xf7c02 + push dx ; 52 ; 0xf7c03 + mov bl, byte [bp-01ah] ; 8a 5e e6 ; 0xf7c04 + xor bh, bh ; 30 ff ; 0xf7c07 + xor ax, ax ; 31 c0 ; 0xf7c09 + mov dx, word [bp-0024ah] ; 8b 96 b6 fd ; 0xf7c0b + call word [si+000a2h] ; ff 94 a2 00 ; 0xf7c0f + test al, al ; 84 c0 ; 0xf7c13 scsi.c:356 + je short 07c29h ; 74 12 ; 0xf7c15 + mov ax, 00bd8h ; b8 d8 0b ; 0xf7c17 scsi.c:357 + push ax ; 50 ; 0xf7c1a + mov ax, 00bf8h ; b8 f8 0b ; 0xf7c1b + push ax ; 50 ; 0xf7c1e + mov ax, strict word 00007h ; b8 07 00 ; 0xf7c1f + push ax ; 50 ; 0xf7c22 + call 0195ch ; e8 36 9d ; 0xf7c23 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7c26 + mov ax, word [bp-00242h] ; 8b 86 be fd ; 0xf7c29 scsi.c:362 + mov bx, word [bp-00244h] ; 8b 9e bc fd ; 0xf7c2d + mov cx, word [bp-00246h] ; 8b 8e ba fd ; 0xf7c31 + mov dx, word [bp-00248h] ; 8b 96 b8 fd ; 0xf7c35 + xchg ah, al ; 86 c4 ; 0xf7c39 + xchg bh, bl ; 86 df ; 0xf7c3b + xchg ch, cl ; 86 cd ; 0xf7c3d + xchg dh, dl ; 86 d6 ; 0xf7c3f + xchg dx, ax ; 92 ; 0xf7c41 + xchg bx, cx ; 87 cb ; 0xf7c42 + add dx, strict byte 00001h ; 83 c2 01 ; 0xf7c44 + mov word [bp-01eh], dx ; 89 56 e2 ; 0xf7c47 + adc cx, strict byte 00000h ; 83 d1 00 ; 0xf7c4a + mov word [bp-02ch], cx ; 89 4e d4 ; 0xf7c4d + adc bx, strict byte 00000h ; 83 d3 00 ; 0xf7c50 + mov word [bp-01ch], bx ; 89 5e e4 ; 0xf7c53 + adc ax, strict word 00000h ; 15 00 00 ; 0xf7c56 + mov word [bp-02ah], ax ; 89 46 d6 ; 0xf7c59 + mov dh, byte [bp-00240h] ; 8a b6 c0 fd ; 0xf7c5c scsi.c:364 + xor dl, dl ; 30 d2 ; 0xf7c60 + mov al, byte [bp-0023fh] ; 8a 86 c1 fd ; 0xf7c62 + xor ah, ah ; 30 e4 ; 0xf7c66 + xor bx, bx ; 31 db ; 0xf7c68 + mov si, dx ; 89 d6 ; 0xf7c6a + or si, ax ; 09 c6 ; 0xf7c6c + mov al, byte [bp-0023eh] ; 8a 86 c2 fd ; 0xf7c6e + xor dh, dh ; 30 f6 ; 0xf7c72 + mov cx, strict word 00008h ; b9 08 00 ; 0xf7c74 + sal ax, 1 ; d1 e0 ; 0xf7c77 + rcl dx, 1 ; d1 d2 ; 0xf7c79 + loop 07c77h ; e2 fa ; 0xf7c7b + or bx, ax ; 09 c3 ; 0xf7c7d + or dx, si ; 09 f2 ; 0xf7c7f + mov al, byte [bp-0023dh] ; 8a 86 c3 fd ; 0xf7c81 + xor ah, ah ; 30 e4 ; 0xf7c85 + or bx, ax ; 09 c3 ; 0xf7c87 + mov word [bp-014h], bx ; 89 5e ec ; 0xf7c89 + test dx, dx ; 85 d2 ; 0xf7c8c scsi.c:370 + jne short 07c96h ; 75 06 ; 0xf7c8e + cmp bx, 00200h ; 81 fb 00 02 ; 0xf7c90 + je short 07cb9h ; 74 23 ; 0xf7c94 + mov bx, 00dcch ; bb cc 0d ; 0xf7c96 scsi.c:373 + mov cx, ds ; 8c d9 ; 0xf7c99 + mov ax, strict word 00004h ; b8 04 00 ; 0xf7c9b + call 01919h ; e8 78 9c ; 0xf7c9e + push dx ; 52 ; 0xf7ca1 + push word [bp-014h] ; ff 76 ec ; 0xf7ca2 + push word [bp-01ah] ; ff 76 e6 ; 0xf7ca5 + mov ax, 00c17h ; b8 17 0c ; 0xf7ca8 + push ax ; 50 ; 0xf7cab + mov ax, strict word 00004h ; b8 04 00 ; 0xf7cac + push ax ; 50 ; 0xf7caf + call 0195ch ; e8 a9 9c ; 0xf7cb0 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf7cb3 + jmp near 07ff4h ; e9 3b 03 ; 0xf7cb6 scsi.c:374 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7cb9 scsi.c:378 + cmp AL, strict byte 001h ; 3c 01 ; 0xf7cbc + jc short 07ccch ; 72 0c ; 0xf7cbe + jbe short 07cd4h ; 76 12 ; 0xf7cc0 + cmp AL, strict byte 003h ; 3c 03 ; 0xf7cc2 + je short 07cdch ; 74 16 ; 0xf7cc4 + cmp AL, strict byte 002h ; 3c 02 ; 0xf7cc6 + je short 07cd8h ; 74 0e ; 0xf7cc8 + jmp short 07d17h ; eb 4b ; 0xf7cca + test al, al ; 84 c0 ; 0xf7ccc + jne short 07d17h ; 75 47 ; 0xf7cce + mov DL, strict byte 090h ; b2 90 ; 0xf7cd0 scsi.c:381 + jmp short 07cdeh ; eb 0a ; 0xf7cd2 scsi.c:382 + mov DL, strict byte 098h ; b2 98 ; 0xf7cd4 scsi.c:384 + jmp short 07cdeh ; eb 06 ; 0xf7cd6 scsi.c:385 + mov DL, strict byte 0a0h ; b2 a0 ; 0xf7cd8 scsi.c:387 + jmp short 07cdeh ; eb 02 ; 0xf7cda scsi.c:388 + mov DL, strict byte 0a8h ; b2 a8 ; 0xf7cdc scsi.c:390 + mov bl, dl ; 88 d3 ; 0xf7cde scsi.c:394 + add bl, 007h ; 80 c3 07 ; 0xf7ce0 + xor bh, bh ; 30 ff ; 0xf7ce3 + mov ax, bx ; 89 d8 ; 0xf7ce5 + call 01664h ; e8 7a 99 ; 0xf7ce7 + test al, al ; 84 c0 ; 0xf7cea + je short 07d17h ; 74 29 ; 0xf7cec + mov al, dl ; 88 d0 ; 0xf7cee scsi.c:399 + xor ah, ah ; 30 e4 ; 0xf7cf0 + call 0169ch ; e8 a7 99 ; 0xf7cf2 + mov si, ax ; 89 c6 ; 0xf7cf5 + mov word [bp-012h], strict word 00000h ; c7 46 ee 00 00 ; 0xf7cf7 + mov al, dl ; 88 d0 ; 0xf7cfc scsi.c:400 + add AL, strict byte 002h ; 04 02 ; 0xf7cfe + xor ah, ah ; 30 e4 ; 0xf7d00 + call 01664h ; e8 5f 99 ; 0xf7d02 + xor ah, ah ; 30 e4 ; 0xf7d05 + mov word [bp-022h], ax ; 89 46 de ; 0xf7d07 + mov ax, bx ; 89 d8 ; 0xf7d0a scsi.c:401 + call 01664h ; e8 55 99 ; 0xf7d0c + xor ah, ah ; 30 e4 ; 0xf7d0f + mov word [bp-020h], ax ; 89 46 e0 ; 0xf7d11 + jmp near 07e04h ; e9 ed 00 ; 0xf7d14 scsi.c:403 + mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf7d17 scsi.c:404 + mov bx, word [bp-01ch] ; 8b 5e e4 ; 0xf7d1a + mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xf7d1d + mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf7d20 + mov si, strict word 0000ch ; be 0c 00 ; 0xf7d23 + call 0ab10h ; e8 e7 2d ; 0xf7d26 + mov word [bp-016h], ax ; 89 46 ea ; 0xf7d29 + mov word [bp-024h], bx ; 89 5e dc ; 0xf7d2c + mov word [bp-028h], cx ; 89 4e d8 ; 0xf7d2f + mov word [bp-026h], dx ; 89 56 da ; 0xf7d32 + mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf7d35 scsi.c:408 + test ax, ax ; 85 c0 ; 0xf7d38 + jnbe short 07d51h ; 77 15 ; 0xf7d3a + je short 07d41h ; 74 03 ; 0xf7d3c + jmp near 07dc4h ; e9 83 00 ; 0xf7d3e + cmp word [bp-01ch], strict byte 00000h ; 83 7e e4 00 ; 0xf7d41 + jnbe short 07d51h ; 77 0a ; 0xf7d45 + jne short 07d3eh ; 75 f5 ; 0xf7d47 + cmp word [bp-02ch], strict byte 00040h ; 83 7e d4 40 ; 0xf7d49 + jnbe short 07d51h ; 77 02 ; 0xf7d4d + jne short 07dc4h ; 75 73 ; 0xf7d4f + mov word [bp-022h], 000ffh ; c7 46 de ff 00 ; 0xf7d51 scsi.c:410 + mov word [bp-020h], strict word 0003fh ; c7 46 e0 3f 00 ; 0xf7d56 scsi.c:411 + mov bx, word [bp-01ch] ; 8b 5e e4 ; 0xf7d5b scsi.c:413 + mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xf7d5e + mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf7d61 + mov si, strict word 00006h ; be 06 00 ; 0xf7d64 + call 0ab10h ; e8 a6 2d ; 0xf7d67 + mov si, word [bp-026h] ; 8b 76 da ; 0xf7d6a + add si, dx ; 01 d6 ; 0xf7d6d + mov word [bp-036h], si ; 89 76 ca ; 0xf7d6f + mov dx, word [bp-028h] ; 8b 56 d8 ; 0xf7d72 + adc dx, cx ; 11 ca ; 0xf7d75 + mov word [bp-030h], dx ; 89 56 d0 ; 0xf7d77 + mov dx, word [bp-024h] ; 8b 56 dc ; 0xf7d7a + adc dx, bx ; 11 da ; 0xf7d7d + mov word [bp-034h], dx ; 89 56 cc ; 0xf7d7f + mov dx, word [bp-016h] ; 8b 56 ea ; 0xf7d82 + adc dx, ax ; 11 c2 ; 0xf7d85 + mov word [bp-018h], dx ; 89 56 e8 ; 0xf7d87 + mov ax, dx ; 89 d0 ; 0xf7d8a scsi.c:414 + mov bx, word [bp-034h] ; 8b 5e cc ; 0xf7d8c + mov cx, word [bp-030h] ; 8b 4e d0 ; 0xf7d8f + mov dx, si ; 89 f2 ; 0xf7d92 + mov si, strict word 00008h ; be 08 00 ; 0xf7d94 + call 0ab10h ; e8 76 2d ; 0xf7d97 + mov word [bp-02eh], bx ; 89 5e d2 ; 0xf7d9a + mov word [bp-038h], cx ; 89 4e c8 ; 0xf7d9d + mov word [bp-032h], dx ; 89 56 ce ; 0xf7da0 + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf7da3 + mov bx, word [bp-034h] ; 8b 5e cc ; 0xf7da6 + mov cx, word [bp-030h] ; 8b 4e d0 ; 0xf7da9 + mov dx, word [bp-036h] ; 8b 56 ca ; 0xf7dac + mov si, strict word 00010h ; be 10 00 ; 0xf7daf + call 0ab10h ; e8 5b 2d ; 0xf7db2 + mov si, word [bp-032h] ; 8b 76 ce ; 0xf7db5 + add si, dx ; 01 d6 ; 0xf7db8 + adc cx, word [bp-038h] ; 13 4e c8 ; 0xf7dba + mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf7dbd + adc ax, bx ; 11 d8 ; 0xf7dc0 + jmp short 07e01h ; eb 3d ; 0xf7dc2 scsi.c:416 + test ax, ax ; 85 c0 ; 0xf7dc4 + jnbe short 07ddah ; 77 12 ; 0xf7dc6 + jne short 07de6h ; 75 1c ; 0xf7dc8 + cmp word [bp-01ch], strict byte 00000h ; 83 7e e4 00 ; 0xf7dca + jnbe short 07ddah ; 77 0a ; 0xf7dce + jne short 07de6h ; 75 14 ; 0xf7dd0 + cmp word [bp-02ch], strict byte 00020h ; 83 7e d4 20 ; 0xf7dd2 + jnbe short 07ddah ; 77 02 ; 0xf7dd6 + jne short 07de6h ; 75 0c ; 0xf7dd8 + mov word [bp-022h], 00080h ; c7 46 de 80 00 ; 0xf7dda scsi.c:418 + mov word [bp-020h], strict word 00020h ; c7 46 e0 20 00 ; 0xf7ddf scsi.c:419 + jmp short 07dffh ; eb 19 ; 0xf7de4 scsi.c:422 + mov word [bp-022h], strict word 00040h ; c7 46 de 40 00 ; 0xf7de6 scsi.c:424 + mov word [bp-020h], strict word 00020h ; c7 46 e0 20 00 ; 0xf7deb scsi.c:425 + mov bx, word [bp-01ch] ; 8b 5e e4 ; 0xf7df0 scsi.c:426 + mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xf7df3 + mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf7df6 + mov si, strict word 0000bh ; be 0b 00 ; 0xf7df9 + call 0ab10h ; e8 11 2d ; 0xf7dfc + mov si, dx ; 89 d6 ; 0xf7dff + mov word [bp-012h], cx ; 89 4e ee ; 0xf7e01 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7e04 scsi.c:431 + add AL, strict byte 008h ; 04 08 ; 0xf7e07 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf7e09 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7e0c scsi.c:433 + xor ah, ah ; 30 e4 ; 0xf7e0f + sal ax, 1 ; d1 e0 ; 0xf7e11 + sal ax, 1 ; d1 e0 ; 0xf7e13 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf7e15 + mov bx, di ; 89 fb ; 0xf7e18 + add bx, ax ; 01 c3 ; 0xf7e1a + mov ax, word [bp-0024ah] ; 8b 86 b6 fd ; 0xf7e1c + mov word [es:bx+00290h], ax ; 26 89 87 90 02 ; 0xf7e20 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7e25 scsi.c:434 + mov byte [es:bx+00292h], al ; 26 88 87 92 02 ; 0xf7e28 + mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf7e2d scsi.c:435 + mov byte [es:bx+00293h], al ; 26 88 87 93 02 ; 0xf7e30 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf7e35 scsi.c:436 + xor ah, ah ; 30 e4 ; 0xf7e38 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf7e3a + imul dx ; f7 ea ; 0xf7e3d + mov bx, di ; 89 fb ; 0xf7e3f + add bx, ax ; 01 c3 ; 0xf7e41 + mov word [es:bx+01eh], 0ff04h ; 26 c7 47 1e 04 ff ; 0xf7e43 + mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00 ; 0xf7e49 scsi.c:438 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf7e4f scsi.c:440 + mov word [es:bx+024h], ax ; 26 89 47 24 ; 0xf7e52 + mov byte [es:bx+023h], 001h ; 26 c6 47 23 01 ; 0xf7e56 scsi.c:441 + mov ax, word [bp-022h] ; 8b 46 de ; 0xf7e5b scsi.c:444 + mov word [es:bx+026h], ax ; 26 89 47 26 ; 0xf7e5e + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf7e62 scsi.c:445 + mov word [es:bx+02ah], ax ; 26 89 47 2a ; 0xf7e65 + mov ax, word [bp-022h] ; 8b 46 de ; 0xf7e69 scsi.c:446 + mov word [es:bx+02ch], ax ; 26 89 47 2c ; 0xf7e6c + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf7e70 scsi.c:447 + mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf7e73 + cmp word [bp-012h], strict byte 00000h ; 83 7e ee 00 ; 0xf7e77 scsi.c:449 + jne short 07e83h ; 75 06 ; 0xf7e7b + cmp si, 00400h ; 81 fe 00 04 ; 0xf7e7d + jbe short 07e91h ; 76 0e ; 0xf7e81 + mov word [es:bx+028h], 00400h ; 26 c7 47 28 00 04 ; 0xf7e83 scsi.c:450 + mov word [es:bx+02eh], 00400h ; 26 c7 47 2e 00 04 ; 0xf7e89 scsi.c:451 + jmp short 07e99h ; eb 08 ; 0xf7e8f scsi.c:452 + mov word [es:bx+028h], si ; 26 89 77 28 ; 0xf7e91 scsi.c:453 + mov word [es:bx+02eh], si ; 26 89 77 2e ; 0xf7e95 scsi.c:454 + mov bx, 00dcch ; bb cc 0d ; 0xf7e99 scsi.c:458 + mov cx, ds ; 8c d9 ; 0xf7e9c + mov ax, strict word 00004h ; b8 04 00 ; 0xf7e9e + call 01919h ; e8 75 9a ; 0xf7ea1 + push word [bp-02ah] ; ff 76 d6 ; 0xf7ea4 + push word [bp-01ch] ; ff 76 e4 ; 0xf7ea7 + push word [bp-02ch] ; ff 76 d4 ; 0xf7eaa + push word [bp-01eh] ; ff 76 e2 ; 0xf7ead + push word [bp-020h] ; ff 76 e0 ; 0xf7eb0 + push word [bp-022h] ; ff 76 de ; 0xf7eb3 + push word [bp-012h] ; ff 76 ee ; 0xf7eb6 + push si ; 56 ; 0xf7eb9 + push word [bp-01ah] ; ff 76 e6 ; 0xf7eba + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7ebd + xor ah, ah ; 30 e4 ; 0xf7ec0 + push ax ; 50 ; 0xf7ec2 + mov ax, 00c45h ; b8 45 0c ; 0xf7ec3 + push ax ; 50 ; 0xf7ec6 + mov ax, strict word 00004h ; b8 04 00 ; 0xf7ec7 + push ax ; 50 ; 0xf7eca + call 0195ch ; e8 8e 9a ; 0xf7ecb + add sp, strict byte 00018h ; 83 c4 18 ; 0xf7ece + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf7ed1 scsi.c:460 + xor ah, ah ; 30 e4 ; 0xf7ed4 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf7ed6 + imul dx ; f7 ea ; 0xf7ed9 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf7edb + mov bx, di ; 89 fb ; 0xf7ede + add bx, ax ; 01 c3 ; 0xf7ee0 + mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf7ee2 + mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf7ee5 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf7ee9 + mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf7eec + mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf7ef0 + mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf7ef3 + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf7ef7 + mov word [es:bx+032h], ax ; 26 89 47 32 ; 0xf7efa + mov al, byte [es:di+0024eh] ; 26 8a 85 4e 02 ; 0xf7efe scsi.c:463 + mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf7f03 scsi.c:464 + add ah, 008h ; 80 c4 08 ; 0xf7f06 + mov bl, al ; 88 c3 ; 0xf7f09 + xor bh, bh ; 30 ff ; 0xf7f0b + add bx, di ; 01 fb ; 0xf7f0d + mov byte [es:bx+0024fh], ah ; 26 88 a7 4f 02 ; 0xf7f0f + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf7f14 scsi.c:465 + mov byte [es:di+0024eh], al ; 26 88 85 4e 02 ; 0xf7f16 scsi.c:466 + mov bx, strict word 00075h ; bb 75 00 ; 0xf7f1b scsi.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7f1e + mov es, ax ; 8e c0 ; 0xf7f21 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf7f23 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf7f26 scsi.c:470 + mov byte [es:bx], al ; 26 88 07 ; 0xf7f28 scsi.c:53 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf7f2b scsi.c:473 + jmp near 07fe9h ; e9 b8 00 ; 0xf7f2e scsi.c:475 + test byte [bp-00248h], 0e0h ; f6 86 b8 fd e0 ; 0xf7f31 scsi.c:481 + jne short 07f42h ; 75 0a ; 0xf7f36 + mov al, byte [bp-00248h] ; 8a 86 b8 fd ; 0xf7f38 + and AL, strict byte 01fh ; 24 1f ; 0xf7f3c + cmp AL, strict byte 005h ; 3c 05 ; 0xf7f3e + je short 07f45h ; 74 03 ; 0xf7f40 + jmp near 07fe9h ; e9 a4 00 ; 0xf7f42 + mov bx, 00dcch ; bb cc 0d ; 0xf7f45 scsi.c:487 + mov cx, ds ; 8c d9 ; 0xf7f48 + mov ax, strict word 00004h ; b8 04 00 ; 0xf7f4a + call 01919h ; e8 c9 99 ; 0xf7f4d + push word [bp-01ah] ; ff 76 e6 ; 0xf7f50 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7f53 + xor ah, ah ; 30 e4 ; 0xf7f56 + push ax ; 50 ; 0xf7f58 + mov ax, 00c73h ; b8 73 0c ; 0xf7f59 + push ax ; 50 ; 0xf7f5c + mov ax, strict word 00004h ; b8 04 00 ; 0xf7f5d + push ax ; 50 ; 0xf7f60 + call 0195ch ; e8 f8 99 ; 0xf7f61 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf7f64 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7f67 scsi.c:490 + add AL, strict byte 008h ; 04 08 ; 0xf7f6a + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf7f6c + test byte [bp-00247h], 080h ; f6 86 b9 fd 80 ; 0xf7f6f scsi.c:492 + je short 07f7bh ; 74 05 ; 0xf7f74 + mov cx, strict word 00001h ; b9 01 00 ; 0xf7f76 + jmp short 07f7dh ; eb 02 ; 0xf7f79 + xor cx, cx ; 31 c9 ; 0xf7f7b + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7f7d scsi.c:494 + xor ah, ah ; 30 e4 ; 0xf7f80 + sal ax, 1 ; d1 e0 ; 0xf7f82 + sal ax, 1 ; d1 e0 ; 0xf7f84 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf7f86 + mov bx, di ; 89 fb ; 0xf7f89 + add bx, ax ; 01 c3 ; 0xf7f8b + mov ax, word [bp-0024ah] ; 8b 86 b6 fd ; 0xf7f8d + mov word [es:bx+00290h], ax ; 26 89 87 90 02 ; 0xf7f91 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7f96 scsi.c:495 + mov byte [es:bx+00292h], al ; 26 88 87 92 02 ; 0xf7f99 + mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf7f9e scsi.c:496 + mov byte [es:bx+00293h], al ; 26 88 87 93 02 ; 0xf7fa1 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf7fa6 scsi.c:497 + xor ah, ah ; 30 e4 ; 0xf7fa9 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf7fab + imul dx ; f7 ea ; 0xf7fae + mov bx, di ; 89 fb ; 0xf7fb0 + add bx, ax ; 01 c3 ; 0xf7fb2 + mov word [es:bx+01eh], 00504h ; 26 c7 47 1e 04 05 ; 0xf7fb4 + mov byte [es:bx+020h], cl ; 26 88 4f 20 ; 0xf7fba scsi.c:499 + mov word [es:bx+024h], 00800h ; 26 c7 47 24 00 08 ; 0xf7fbe scsi.c:500 + mov byte [es:bx+023h], 000h ; 26 c6 47 23 00 ; 0xf7fc4 scsi.c:501 + mov al, byte [es:di+00263h] ; 26 8a 85 63 02 ; 0xf7fc9 scsi.c:504 + mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf7fce scsi.c:505 + add ah, 008h ; 80 c4 08 ; 0xf7fd1 + mov bl, al ; 88 c3 ; 0xf7fd4 + xor bh, bh ; 30 ff ; 0xf7fd6 + add bx, di ; 01 fb ; 0xf7fd8 + mov byte [es:bx+00264h], ah ; 26 88 a7 64 02 ; 0xf7fda + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf7fdf scsi.c:506 + mov byte [es:di+00263h], al ; 26 88 85 63 02 ; 0xf7fe1 scsi.c:507 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf7fe6 scsi.c:509 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7fe9 scsi.c:514 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf7fec + mov byte [es:di+002a0h], al ; 26 88 85 a0 02 ; 0xf7fef + inc word [bp-01ah] ; ff 46 e6 ; 0xf7ff4 scsi.c:515 + cmp word [bp-01ah], strict byte 00010h ; 83 7e e6 10 ; 0xf7ff7 + jnl short 0804dh ; 7d 50 ; 0xf7ffb + mov byte [bp-048h], 012h ; c6 46 b8 12 ; 0xf7ffd + xor al, al ; 30 c0 ; 0xf8001 + mov byte [bp-047h], al ; 88 46 b9 ; 0xf8003 + mov byte [bp-046h], al ; 88 46 ba ; 0xf8006 + mov byte [bp-045h], al ; 88 46 bb ; 0xf8009 + mov byte [bp-044h], 005h ; c6 46 bc 05 ; 0xf800c + mov byte [bp-043h], al ; 88 46 bd ; 0xf8010 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf8013 + xor ah, ah ; 30 e4 ; 0xf8016 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf8018 + imul dx ; f7 ea ; 0xf801b + mov si, ax ; 89 c6 ; 0xf801d + xor ax, ax ; 31 c0 ; 0xf801f + push ax ; 50 ; 0xf8021 + mov ax, strict word 00005h ; b8 05 00 ; 0xf8022 + push ax ; 50 ; 0xf8025 + lea dx, [bp-00248h] ; 8d 96 b8 fd ; 0xf8026 + push SS ; 16 ; 0xf802a + push dx ; 52 ; 0xf802b + mov ax, strict word 00006h ; b8 06 00 ; 0xf802c + push ax ; 50 ; 0xf802f + lea dx, [bp-048h] ; 8d 56 b8 ; 0xf8030 + push SS ; 16 ; 0xf8033 + push dx ; 52 ; 0xf8034 + mov bl, byte [bp-01ah] ; 8a 5e e6 ; 0xf8035 + xor bh, bh ; 30 ff ; 0xf8038 + xor ax, ax ; 31 c0 ; 0xf803a + mov dx, word [bp-0024ah] ; 8b 96 b6 fd ; 0xf803c + call word [si+000a2h] ; ff 94 a2 00 ; 0xf8040 + test al, al ; 84 c0 ; 0xf8044 + jne short 0804bh ; 75 03 ; 0xf8046 + jmp near 07ba6h ; e9 5b fb ; 0xf8048 + jmp short 07ff4h ; eb a7 ; 0xf804b + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf804d scsi.c:516 + pop di ; 5f ; 0xf8050 + pop si ; 5e ; 0xf8051 + pop cx ; 59 ; 0xf8052 + pop bx ; 5b ; 0xf8053 + pop bp ; 5d ; 0xf8054 + retn ; c3 ; 0xf8055 + ; disGetNextSymbol 0xf8056 LB 0x2e02 -> off=0x0 cb=0000000000000076 uValue=00000000000f6a56 'scsi_init' +scsi_init: ; 0xf8056 LB 0x76 + push bp ; 55 ; 0xf8056 scsi.c:521 + mov bp, sp ; 89 e5 ; 0xf8057 + push si ; 56 ; 0xf8059 + push di ; 57 ; 0xf805a + push ax ; 50 ; 0xf805b + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf805c scsi.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf805f + mov es, ax ; 8e c0 ; 0xf8062 + mov es, [es:bx] ; 26 8e 07 ; 0xf8064 + mov bx, strict word 0005eh ; bb 5e 00 ; 0xf8067 scsi.c:59 + mov byte [es:bx+002a0h], 000h ; 26 c6 87 a0 02 00 ; 0xf806a scsi.c:527 + mov word [bp-006h], strict word 00000h ; c7 46 fa 00 00 ; 0xf8070 scsi.c:530 + jmp short 0809eh ; eb 27 ; 0xf8075 + mov di, bx ; 89 df ; 0xf8077 scsi.c:545 + xor ch, dh ; 30 f5 ; 0xf8079 + mov bl, dh ; 88 f3 ; 0xf807b + xor bh, bh ; 30 ff ; 0xf807d + xor ax, ax ; 31 c0 ; 0xf807f + mov dx, si ; 89 f2 ; 0xf8081 + call word [di+0009eh] ; ff 95 9e 00 ; 0xf8083 + test ax, ax ; 85 c0 ; 0xf8087 scsi.c:546 + jne short 08095h ; 75 0a ; 0xf8089 + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf808b scsi.c:547 + xor dh, dh ; 30 f6 ; 0xf808e + mov ax, si ; 89 f0 ; 0xf8090 + call 07b7eh ; e8 e9 fa ; 0xf8092 + inc word [bp-006h] ; ff 46 fa ; 0xf8095 scsi.c:550 + cmp word [bp-006h], strict byte 00004h ; 83 7e fa 04 ; 0xf8098 + jnc short 080c5h ; 73 27 ; 0xf809c + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf809e + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf80a1 + imul dx ; f7 ea ; 0xf80a4 + mov bx, ax ; 89 c3 ; 0xf80a6 + mov dx, word [bx+0009ch] ; 8b 97 9c 00 ; 0xf80a8 + mov ax, word [bx+0009ah] ; 8b 87 9a 00 ; 0xf80ac + call 0a8b9h ; e8 06 28 ; 0xf80b0 + mov dx, ax ; 89 c2 ; 0xf80b3 + mov cx, ax ; 89 c1 ; 0xf80b5 + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf80b7 + je short 08095h ; 74 d9 ; 0xf80ba + call 077f6h ; e8 37 f7 ; 0xf80bc + mov si, ax ; 89 c6 ; 0xf80bf + test ax, ax ; 85 c0 ; 0xf80c1 + jne short 08077h ; 75 b2 ; 0xf80c3 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf80c5 scsi.c:551 + pop di ; 5f ; 0xf80c8 + pop si ; 5e ; 0xf80c9 + pop bp ; 5d ; 0xf80ca + retn ; c3 ; 0xf80cb + ; disGetNextSymbol 0xf80cc LB 0x2d8c -> off=0x0 cb=000000000000001c uValue=00000000000f6acc 'ahci_ctrl_extract_bits' +ahci_ctrl_extract_bits: ; 0xf80cc LB 0x1c + push si ; 56 ; 0xf80cc ahci.c:287 + push bp ; 55 ; 0xf80cd + mov bp, sp ; 89 e5 ; 0xf80ce + mov si, ax ; 89 c6 ; 0xf80d0 + and ax, bx ; 21 d8 ; 0xf80d2 ahci.c:289 + and dx, cx ; 21 ca ; 0xf80d4 + mov cl, byte [bp+006h] ; 8a 4e 06 ; 0xf80d6 + xor ch, ch ; 30 ed ; 0xf80d9 + jcxz 080e3h ; e3 06 ; 0xf80db + shr dx, 1 ; d1 ea ; 0xf80dd + rcr ax, 1 ; d1 d8 ; 0xf80df + loop 080ddh ; e2 fa ; 0xf80e1 + pop bp ; 5d ; 0xf80e3 ahci.c:290 + pop si ; 5e ; 0xf80e4 + retn 00002h ; c2 02 00 ; 0xf80e5 + ; disGetNextSymbol 0xf80e8 LB 0x2d70 -> off=0x0 cb=000000000000001e uValue=00000000000f6ae8 'ahci_addr_to_phys' +ahci_addr_to_phys: ; 0xf80e8 LB 0x1e + push bx ; 53 ; 0xf80e8 ahci.c:295 + push cx ; 51 ; 0xf80e9 + push bp ; 55 ; 0xf80ea + mov bp, sp ; 89 e5 ; 0xf80eb + mov bx, ax ; 89 c3 ; 0xf80ed + mov ax, dx ; 89 d0 ; 0xf80ef + xor dx, dx ; 31 d2 ; 0xf80f1 ahci.c:297 + mov cx, strict word 00004h ; b9 04 00 ; 0xf80f3 + sal ax, 1 ; d1 e0 ; 0xf80f6 + rcl dx, 1 ; d1 d2 ; 0xf80f8 + loop 080f6h ; e2 fa ; 0xf80fa + xor cx, cx ; 31 c9 ; 0xf80fc + add ax, bx ; 01 d8 ; 0xf80fe + adc dx, cx ; 11 ca ; 0xf8100 + pop bp ; 5d ; 0xf8102 ahci.c:298 + pop cx ; 59 ; 0xf8103 + pop bx ; 5b ; 0xf8104 + retn ; c3 ; 0xf8105 + ; disGetNextSymbol 0xf8106 LB 0x2d52 -> off=0x0 cb=0000000000000159 uValue=00000000000f6b06 'ahci_port_cmd_sync' +ahci_port_cmd_sync: ; 0xf8106 LB 0x159 + push bp ; 55 ; 0xf8106 ahci.c:303 + mov bp, sp ; 89 e5 ; 0xf8107 + push cx ; 51 ; 0xf8109 + push si ; 56 ; 0xf810a + push di ; 57 ; 0xf810b + push ax ; 50 ; 0xf810c + mov si, ax ; 89 c6 ; 0xf810d + mov cx, dx ; 89 d1 ; 0xf810f + mov dl, bl ; 88 da ; 0xf8111 + mov es, cx ; 8e c1 ; 0xf8113 ahci.c:308 + mov al, byte [es:si+00262h] ; 26 8a 84 62 02 ; 0xf8115 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf811a + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf811d ahci.c:309 + cmp AL, strict byte 0ffh ; 3c ff ; 0xf8122 ahci.c:311 + jne short 08129h ; 75 03 ; 0xf8124 + jmp near 08257h ; e9 2e 01 ; 0xf8126 + mov al, byte [es:si+00263h] ; 26 8a 84 63 02 ; 0xf8129 ahci.c:314 + xor ah, ah ; 30 e4 ; 0xf812e + xor di, di ; 31 ff ; 0xf8130 + or di, 00080h ; 81 cf 80 00 ; 0xf8132 + xor dh, dh ; 30 f6 ; 0xf8136 + or di, dx ; 09 d7 ; 0xf8138 + mov word [es:si], di ; 26 89 3c ; 0xf813a + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf813d + mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf8141 ahci.c:315 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf8147 + lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf814d ahci.c:316 + mov dx, cx ; 89 ca ; 0xf8151 + call 080e8h ; e8 92 ff ; 0xf8153 + mov es, cx ; 8e c1 ; 0xf8156 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8158 + mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf815c + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8160 ahci.c:319 + xor ah, ah ; 30 e4 ; 0xf8163 + mov CL, strict byte 007h ; b1 07 ; 0xf8165 + mov di, ax ; 89 c7 ; 0xf8167 + sal di, CL ; d3 e7 ; 0xf8169 + lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf816b + xor cx, cx ; 31 c9 ; 0xf816f ahci.c:260 + mov dx, bx ; 89 da ; 0xf8171 + xchg cx, ax ; 91 ; 0xf8173 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8174 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8178 + out DX, eax ; 66 ef ; 0xf817a + lea si, [bx+004h] ; 8d 77 04 ; 0xf817c ahci.c:261 + mov dx, si ; 89 f2 ; 0xf817f + in eax, DX ; 66 ed ; 0xf8181 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8183 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8185 + xchg dx, ax ; 92 ; 0xf8189 + or AL, strict byte 011h ; 0c 11 ; 0xf818a + mov cx, dx ; 89 d1 ; 0xf818c + mov dx, si ; 89 f2 ; 0xf818e + xchg cx, ax ; 91 ; 0xf8190 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8191 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8195 + out DX, eax ; 66 ef ; 0xf8197 + lea ax, [di+00138h] ; 8d 85 38 01 ; 0xf8199 ahci.c:323 + cwd ; 99 ; 0xf819d + mov cx, dx ; 89 d1 ; 0xf819e + mov dx, bx ; 89 da ; 0xf81a0 + xchg cx, ax ; 91 ; 0xf81a2 + sal eax, 010h ; 66 c1 e0 10 ; 0xf81a3 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf81a7 + out DX, eax ; 66 ef ; 0xf81a9 + mov ax, strict word 00001h ; b8 01 00 ; 0xf81ab + xor cx, cx ; 31 c9 ; 0xf81ae + mov dx, si ; 89 f2 ; 0xf81b0 + xchg cx, ax ; 91 ; 0xf81b2 + sal eax, 010h ; 66 c1 e0 10 ; 0xf81b3 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf81b7 + out DX, eax ; 66 ef ; 0xf81b9 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf81bb ahci.c:327 + xor ah, ah ; 30 e4 ; 0xf81be + mov CL, strict byte 007h ; b1 07 ; 0xf81c0 + sal ax, CL ; d3 e0 ; 0xf81c2 + add ax, 00110h ; 05 10 01 ; 0xf81c4 + xor cx, cx ; 31 c9 ; 0xf81c7 ahci.c:279 + mov dx, bx ; 89 da ; 0xf81c9 + xchg cx, ax ; 91 ; 0xf81cb + sal eax, 010h ; 66 c1 e0 10 ; 0xf81cc + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf81d0 + out DX, eax ; 66 ef ; 0xf81d2 + lea dx, [bx+004h] ; 8d 57 04 ; 0xf81d4 ahci.c:280 + in eax, DX ; 66 ed ; 0xf81d7 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf81d9 + shr eax, 010h ; 66 c1 e8 10 ; 0xf81db + xchg dx, ax ; 92 ; 0xf81df + test dh, 040h ; f6 c6 40 ; 0xf81e0 + jne short 081e9h ; 75 04 ; 0xf81e3 + test AL, strict byte 001h ; a8 01 ; 0xf81e5 + je short 081edh ; 74 04 ; 0xf81e7 + mov AL, strict byte 001h ; b0 01 ; 0xf81e9 + jmp short 081efh ; eb 02 ; 0xf81eb + xor al, al ; 30 c0 ; 0xf81ed + test al, al ; 84 c0 ; 0xf81ef ahci.c:281 + je short 081bbh ; 74 c8 ; 0xf81f1 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf81f3 ahci.c:333 + xor ah, ah ; 30 e4 ; 0xf81f6 + mov CL, strict byte 007h ; b1 07 ; 0xf81f8 + mov di, ax ; 89 c7 ; 0xf81fa + sal di, CL ; d3 e7 ; 0xf81fc + lea ax, [di+00110h] ; 8d 85 10 01 ; 0xf81fe + xor cx, cx ; 31 c9 ; 0xf8202 ahci.c:260 + mov dx, bx ; 89 da ; 0xf8204 + xchg cx, ax ; 91 ; 0xf8206 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8207 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf820b + out DX, eax ; 66 ef ; 0xf820d + lea si, [bx+004h] ; 8d 77 04 ; 0xf820f ahci.c:261 + mov dx, si ; 89 f2 ; 0xf8212 + in eax, DX ; 66 ed ; 0xf8214 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8216 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8218 + xchg dx, ax ; 92 ; 0xf821c + or AL, strict byte 001h ; 0c 01 ; 0xf821d + mov cx, dx ; 89 d1 ; 0xf821f + mov dx, si ; 89 f2 ; 0xf8221 + xchg cx, ax ; 91 ; 0xf8223 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8224 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8228 + out DX, eax ; 66 ef ; 0xf822a + lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf822c ahci.c:337 + xor cx, cx ; 31 c9 ; 0xf8230 ahci.c:269 + mov dx, bx ; 89 da ; 0xf8232 + xchg cx, ax ; 91 ; 0xf8234 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8235 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8239 + out DX, eax ; 66 ef ; 0xf823b + mov dx, si ; 89 f2 ; 0xf823d ahci.c:270 + in eax, DX ; 66 ed ; 0xf823f + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8241 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8243 + xchg dx, ax ; 92 ; 0xf8247 + and AL, strict byte 0feh ; 24 fe ; 0xf8248 + mov cx, dx ; 89 d1 ; 0xf824a + mov dx, si ; 89 f2 ; 0xf824c + xchg cx, ax ; 91 ; 0xf824e + sal eax, 010h ; 66 c1 e0 10 ; 0xf824f + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8253 + out DX, eax ; 66 ef ; 0xf8255 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf8257 ahci.c:343 + pop di ; 5f ; 0xf825a + pop si ; 5e ; 0xf825b + pop cx ; 59 ; 0xf825c + pop bp ; 5d ; 0xf825d + retn ; c3 ; 0xf825e + ; disGetNextSymbol 0xf825f LB 0x2bf9 -> off=0x0 cb=0000000000000217 uValue=00000000000f6c5f 'ahci_cmd_data' +ahci_cmd_data: ; 0xf825f LB 0x217 + push bp ; 55 ; 0xf825f ahci.c:348 + mov bp, sp ; 89 e5 ; 0xf8260 + push cx ; 51 ; 0xf8262 + push si ; 56 ; 0xf8263 + push di ; 57 ; 0xf8264 + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf8265 + mov di, ax ; 89 c7 ; 0xf8268 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf826a + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf826d + mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf8270 ahci.c:350 + mov es, dx ; 8e c2 ; 0xf8275 + mov ax, word [es:di+002a6h] ; 26 8b 85 a6 02 ; 0xf8277 + mov word [bp-014h], ax ; 89 46 ec ; 0xf827c + mov word [bp-010h], strict word 00000h ; c7 46 f0 00 00 ; 0xf827f + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf8284 + mov ax, word [es:di+00eh] ; 26 8b 45 0e ; 0xf8287 ahci.c:351 + mov word [bp-012h], ax ; 89 46 ee ; 0xf828b + mov ax, word [es:di+010h] ; 26 8b 45 10 ; 0xf828e ahci.c:352 + mov word [bp-016h], ax ; 89 46 ea ; 0xf8292 + mov cx, strict word 00040h ; b9 40 00 ; 0xf8295 ahci.c:355 + xor bx, bx ; 31 db ; 0xf8298 + mov ax, 00080h ; b8 80 00 ; 0xf829a + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf829d + call 0ab30h ; e8 8d 28 ; 0xf82a0 + mov es, [bp-014h] ; 8e 46 ec ; 0xf82a3 ahci.c:358 + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf82a6 + mov word [es:bx+00080h], 08027h ; 26 c7 87 80 00 27 80 ; 0xf82a9 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf82b0 ahci.c:360 + mov byte [es:bx+00082h], al ; 26 88 87 82 00 ; 0xf82b3 + mov byte [es:bx+00083h], 000h ; 26 c6 87 83 00 00 ; 0xf82b8 ahci.c:361 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf82be ahci.c:363 + mov ax, word [es:di] ; 26 8b 05 ; 0xf82c1 + mov es, [bp-014h] ; 8e 46 ec ; 0xf82c4 + mov byte [es:bx+00084h], al ; 26 88 87 84 00 ; 0xf82c7 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf82cc ahci.c:364 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf82cf + mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf82d3 + mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf82d7 + mov dx, word [es:di] ; 26 8b 15 ; 0xf82db + mov si, strict word 00008h ; be 08 00 ; 0xf82de + call 0ab10h ; e8 2c 28 ; 0xf82e1 + mov es, [bp-014h] ; 8e 46 ec ; 0xf82e4 + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf82e7 + mov byte [es:bx+00085h], dl ; 26 88 97 85 00 ; 0xf82ea + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf82ef ahci.c:365 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf82f2 + mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf82f6 + mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf82fa + mov dx, word [es:di] ; 26 8b 15 ; 0xf82fe + mov si, strict word 00010h ; be 10 00 ; 0xf8301 + call 0ab10h ; e8 09 28 ; 0xf8304 + mov es, [bp-014h] ; 8e 46 ec ; 0xf8307 + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf830a + mov byte [es:bx+00086h], dl ; 26 88 97 86 00 ; 0xf830d + mov byte [es:bx+00087h], 040h ; 26 c6 87 87 00 40 ; 0xf8312 ahci.c:366 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8318 ahci.c:368 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf831b + mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf831f + mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf8323 + mov dx, word [es:di] ; 26 8b 15 ; 0xf8327 + mov si, strict word 00018h ; be 18 00 ; 0xf832a + call 0ab10h ; e8 e0 27 ; 0xf832d + mov es, [bp-014h] ; 8e 46 ec ; 0xf8330 + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf8333 + mov byte [es:bx+00088h], dl ; 26 88 97 88 00 ; 0xf8336 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf833b ahci.c:369 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf833e + mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf8342 + mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf8346 + mov dx, word [es:di] ; 26 8b 15 ; 0xf834a + mov si, strict word 00020h ; be 20 00 ; 0xf834d + call 0ab10h ; e8 bd 27 ; 0xf8350 + mov es, [bp-014h] ; 8e 46 ec ; 0xf8353 + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf8356 + mov byte [es:bx+00089h], dl ; 26 88 97 89 00 ; 0xf8359 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf835e ahci.c:370 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf8361 + mov bx, word [es:di+004h] ; 26 8b 5d 04 ; 0xf8365 + mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xf8369 + mov dx, word [es:di] ; 26 8b 15 ; 0xf836d + mov si, strict word 00028h ; be 28 00 ; 0xf8370 + call 0ab10h ; e8 9a 27 ; 0xf8373 + mov es, [bp-014h] ; 8e 46 ec ; 0xf8376 + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf8379 + mov byte [es:bx+0008ah], dl ; 26 88 97 8a 00 ; 0xf837c + mov byte [es:bx+0008bh], 000h ; 26 c6 87 8b 00 00 ; 0xf8381 ahci.c:371 + mov al, byte [bp-012h] ; 8a 46 ee ; 0xf8387 ahci.c:373 + mov byte [es:bx+0008ch], al ; 26 88 87 8c 00 ; 0xf838a + mov al, byte [bp-011h] ; 8a 46 ef ; 0xf838f ahci.c:374 + mov byte [es:bx+0008dh], al ; 26 88 87 8d 00 ; 0xf8392 + mov word [es:bx+00272h], strict word 00010h ; 26 c7 87 72 02 10 00 ; 0xf8397 ahci.c:377 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf839e ahci.c:379 + xor dx, dx ; 31 d2 ; 0xf83a1 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf83a3 + xor cx, cx ; 31 c9 ; 0xf83a6 + call 0aac0h ; e8 15 27 ; 0xf83a8 + push dx ; 52 ; 0xf83ab + push ax ; 50 ; 0xf83ac + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf83ad + mov bx, word [es:di+008h] ; 26 8b 5d 08 ; 0xf83b0 + mov cx, word [es:di+00ah] ; 26 8b 4d 0a ; 0xf83b4 + mov ax, 00266h ; b8 66 02 ; 0xf83b8 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf83bb + call 0aa17h ; e8 56 26 ; 0xf83be + mov es, [bp-014h] ; 8e 46 ec ; 0xf83c1 ahci.c:382 + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf83c4 + mov dx, word [es:bx+0027ah] ; 26 8b 97 7a 02 ; 0xf83c7 + add dx, strict byte 0ffffh ; 83 c2 ff ; 0xf83cc + mov bx, word [es:bx+0027ch] ; 26 8b 9f 7c 02 ; 0xf83cf + adc bx, strict byte 0ffffh ; 83 d3 ff ; 0xf83d4 + mov si, word [bp-00ch] ; 8b 76 f4 ; 0xf83d7 + mov al, byte [es:si+00263h] ; 26 8a 84 63 02 ; 0xf83da + xor ah, ah ; 30 e4 ; 0xf83df + mov CL, strict byte 004h ; b1 04 ; 0xf83e1 + mov di, ax ; 89 c7 ; 0xf83e3 + sal di, CL ; d3 e7 ; 0xf83e5 + mov word [es:di+0010ch], dx ; 26 89 95 0c 01 ; 0xf83e7 + mov word [es:di+0010eh], bx ; 26 89 9d 0e 01 ; 0xf83ec + mov bx, si ; 89 f3 ; 0xf83f1 ahci.c:383 + mov al, byte [es:bx+00263h] ; 26 8a 87 63 02 ; 0xf83f3 + mov di, ax ; 89 c7 ; 0xf83f8 + sal di, CL ; d3 e7 ; 0xf83fa + mov dx, word [es:si+00276h] ; 26 8b 94 76 02 ; 0xf83fc + mov ax, word [es:si+00278h] ; 26 8b 84 78 02 ; 0xf8401 + mov word [es:di+00100h], dx ; 26 89 95 00 01 ; 0xf8406 + mov word [es:di+00102h], ax ; 26 89 85 02 01 ; 0xf840b + inc byte [es:bx+00263h] ; 26 fe 87 63 02 ; 0xf8410 ahci.c:384 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8415 ahci.c:398 + cmp AL, strict byte 035h ; 3c 35 ; 0xf8418 + jne short 08422h ; 75 06 ; 0xf841a + mov byte [bp-008h], 040h ; c6 46 f8 40 ; 0xf841c ahci.c:399 + jmp short 08436h ; eb 14 ; 0xf8420 ahci.c:400 + cmp AL, strict byte 0a0h ; 3c a0 ; 0xf8422 + jne short 08432h ; 75 0c ; 0xf8424 + or byte [bp-008h], 020h ; 80 4e f8 20 ; 0xf8426 ahci.c:401 + or byte [es:bx+00083h], 001h ; 26 80 8f 83 00 01 ; 0xf842a ahci.c:402 + jmp short 08436h ; eb 04 ; 0xf8430 ahci.c:403 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf8432 ahci.c:404 + or byte [bp-008h], 005h ; 80 4e f8 05 ; 0xf8436 ahci.c:406 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf843a ahci.c:408 + xor bh, bh ; 30 ff ; 0xf843d + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf843f + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8442 + call 08106h ; e8 be fc ; 0xf8445 + mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf8448 ahci.c:411 + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf844b + add bx, 00240h ; 81 c3 40 02 ; 0xf844e + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8452 ahci.c:415 + add ax, 00266h ; 05 66 02 ; 0xf8455 + mov dx, cx ; 89 ca ; 0xf8458 + call 0aa8eh ; e8 31 26 ; 0xf845a + mov es, cx ; 8e c1 ; 0xf845d ahci.c:416 + mov al, byte [es:bx+003h] ; 26 8a 47 03 ; 0xf845f + test al, al ; 84 c0 ; 0xf8463 + je short 0846ch ; 74 05 ; 0xf8465 + mov ax, strict word 00004h ; b8 04 00 ; 0xf8467 + jmp short 0846eh ; eb 02 ; 0xf846a + xor ah, ah ; 30 e4 ; 0xf846c + lea sp, [bp-006h] ; 8d 66 fa ; 0xf846e ahci.c:417 + pop di ; 5f ; 0xf8471 + pop si ; 5e ; 0xf8472 + pop cx ; 59 ; 0xf8473 + pop bp ; 5d ; 0xf8474 + retn ; c3 ; 0xf8475 + ; disGetNextSymbol 0xf8476 LB 0x29e2 -> off=0x0 cb=0000000000000183 uValue=00000000000f6e76 'ahci_port_deinit_current' +ahci_port_deinit_current: ; 0xf8476 LB 0x183 + push bp ; 55 ; 0xf8476 ahci.c:422 + mov bp, sp ; 89 e5 ; 0xf8477 + push bx ; 53 ; 0xf8479 + push cx ; 51 ; 0xf847a + push si ; 56 ; 0xf847b + push di ; 57 ; 0xf847c + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf847d + mov di, ax ; 89 c7 ; 0xf8480 + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf8482 + mov es, dx ; 8e c2 ; 0xf8485 ahci.c:427 + mov si, word [es:di+00260h] ; 26 8b b5 60 02 ; 0xf8487 + mov al, byte [es:di+00262h] ; 26 8a 85 62 02 ; 0xf848c ahci.c:428 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf8491 + cmp AL, strict byte 0ffh ; 3c ff ; 0xf8494 ahci.c:430 + je short 084f9h ; 74 61 ; 0xf8496 + xor ah, ah ; 30 e4 ; 0xf8498 ahci.c:433 + mov CL, strict byte 007h ; b1 07 ; 0xf849a + sal ax, CL ; d3 e0 ; 0xf849c + add ax, 00118h ; 05 18 01 ; 0xf849e + xor cx, cx ; 31 c9 ; 0xf84a1 ahci.c:269 + mov dx, si ; 89 f2 ; 0xf84a3 + xchg cx, ax ; 91 ; 0xf84a5 + sal eax, 010h ; 66 c1 e0 10 ; 0xf84a6 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf84aa + out DX, eax ; 66 ef ; 0xf84ac + lea bx, [si+004h] ; 8d 5c 04 ; 0xf84ae ahci.c:270 + mov dx, bx ; 89 da ; 0xf84b1 + in eax, DX ; 66 ed ; 0xf84b3 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf84b5 + shr eax, 010h ; 66 c1 e8 10 ; 0xf84b7 + xchg dx, ax ; 92 ; 0xf84bb + and AL, strict byte 0eeh ; 24 ee ; 0xf84bc + mov cx, dx ; 89 d1 ; 0xf84be + mov dx, bx ; 89 da ; 0xf84c0 + xchg cx, ax ; 91 ; 0xf84c2 + sal eax, 010h ; 66 c1 e0 10 ; 0xf84c3 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf84c7 + out DX, eax ; 66 ef ; 0xf84c9 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf84cb ahci.c:436 + xor ah, ah ; 30 e4 ; 0xf84ce + mov CL, strict byte 007h ; b1 07 ; 0xf84d0 + sal ax, CL ; d3 e0 ; 0xf84d2 + add ax, 00118h ; 05 18 01 ; 0xf84d4 + xor cx, cx ; 31 c9 ; 0xf84d7 ahci.c:279 + mov dx, si ; 89 f2 ; 0xf84d9 + xchg cx, ax ; 91 ; 0xf84db + sal eax, 010h ; 66 c1 e0 10 ; 0xf84dc + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf84e0 + out DX, eax ; 66 ef ; 0xf84e2 + lea dx, [si+004h] ; 8d 54 04 ; 0xf84e4 ahci.c:280 + in eax, DX ; 66 ed ; 0xf84e7 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf84e9 + shr eax, 010h ; 66 c1 e8 10 ; 0xf84eb + xchg dx, ax ; 92 ; 0xf84ef + test ax, 0c011h ; a9 11 c0 ; 0xf84f0 + je short 084fch ; 74 07 ; 0xf84f3 + mov AL, strict byte 001h ; b0 01 ; 0xf84f5 + jmp short 084feh ; eb 05 ; 0xf84f7 + jmp near 085f0h ; e9 f4 00 ; 0xf84f9 + xor al, al ; 30 c0 ; 0xf84fc + cmp AL, strict byte 001h ; 3c 01 ; 0xf84fe ahci.c:281 + je short 084cbh ; 74 c9 ; 0xf8500 + mov cx, strict word 00020h ; b9 20 00 ; 0xf8502 ahci.c:447 + xor bx, bx ; 31 db ; 0xf8505 + mov ax, di ; 89 f8 ; 0xf8507 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8509 + call 0ab30h ; e8 21 26 ; 0xf850c + lea ax, [di+00080h] ; 8d 85 80 00 ; 0xf850f ahci.c:448 + mov cx, strict word 00040h ; b9 40 00 ; 0xf8513 + xor bx, bx ; 31 db ; 0xf8516 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8518 + call 0ab30h ; e8 12 26 ; 0xf851b + lea ax, [di+00200h] ; 8d 85 00 02 ; 0xf851e ahci.c:449 + mov cx, strict word 00060h ; b9 60 00 ; 0xf8522 + xor bx, bx ; 31 db ; 0xf8525 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8527 + call 0ab30h ; e8 03 26 ; 0xf852a + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf852d ahci.c:451 + xor ah, ah ; 30 e4 ; 0xf8530 + mov CL, strict byte 007h ; b1 07 ; 0xf8532 + sal ax, CL ; d3 e0 ; 0xf8534 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf8536 + add ax, 00108h ; 05 08 01 ; 0xf8539 + cwd ; 99 ; 0xf853c + mov cx, dx ; 89 d1 ; 0xf853d + mov dx, si ; 89 f2 ; 0xf853f + xchg cx, ax ; 91 ; 0xf8541 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8542 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8546 + out DX, eax ; 66 ef ; 0xf8548 + lea bx, [si+004h] ; 8d 5c 04 ; 0xf854a + xor ax, ax ; 31 c0 ; 0xf854d + xor cx, cx ; 31 c9 ; 0xf854f + mov dx, bx ; 89 da ; 0xf8551 + xchg cx, ax ; 91 ; 0xf8553 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8554 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8558 + out DX, eax ; 66 ef ; 0xf855a + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf855c ahci.c:452 + add ax, 0010ch ; 05 0c 01 ; 0xf855f + cwd ; 99 ; 0xf8562 + mov cx, dx ; 89 d1 ; 0xf8563 + mov dx, si ; 89 f2 ; 0xf8565 + xchg cx, ax ; 91 ; 0xf8567 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8568 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf856c + out DX, eax ; 66 ef ; 0xf856e + xor ax, ax ; 31 c0 ; 0xf8570 + xor cx, cx ; 31 c9 ; 0xf8572 + mov dx, bx ; 89 da ; 0xf8574 + xchg cx, ax ; 91 ; 0xf8576 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8577 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf857b + out DX, eax ; 66 ef ; 0xf857d + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf857f ahci.c:454 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf8582 + cwd ; 99 ; 0xf8584 + mov cx, dx ; 89 d1 ; 0xf8585 + mov dx, si ; 89 f2 ; 0xf8587 + xchg cx, ax ; 91 ; 0xf8589 + sal eax, 010h ; 66 c1 e0 10 ; 0xf858a + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf858e + out DX, eax ; 66 ef ; 0xf8590 + xor ax, ax ; 31 c0 ; 0xf8592 + xor cx, cx ; 31 c9 ; 0xf8594 + mov dx, bx ; 89 da ; 0xf8596 + xchg cx, ax ; 91 ; 0xf8598 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8599 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf859d + out DX, eax ; 66 ef ; 0xf859f + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf85a1 ahci.c:455 + add ax, 00104h ; 05 04 01 ; 0xf85a4 + cwd ; 99 ; 0xf85a7 + mov cx, dx ; 89 d1 ; 0xf85a8 + mov dx, si ; 89 f2 ; 0xf85aa + xchg cx, ax ; 91 ; 0xf85ac + sal eax, 010h ; 66 c1 e0 10 ; 0xf85ad + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf85b1 + out DX, eax ; 66 ef ; 0xf85b3 + xor ax, ax ; 31 c0 ; 0xf85b5 + xor cx, cx ; 31 c9 ; 0xf85b7 + mov dx, bx ; 89 da ; 0xf85b9 + xchg cx, ax ; 91 ; 0xf85bb + sal eax, 010h ; 66 c1 e0 10 ; 0xf85bc + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf85c0 + out DX, eax ; 66 ef ; 0xf85c2 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf85c4 ahci.c:458 + add ax, 00114h ; 05 14 01 ; 0xf85c7 + cwd ; 99 ; 0xf85ca + mov cx, dx ; 89 d1 ; 0xf85cb + mov dx, si ; 89 f2 ; 0xf85cd + xchg cx, ax ; 91 ; 0xf85cf + sal eax, 010h ; 66 c1 e0 10 ; 0xf85d0 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf85d4 + out DX, eax ; 66 ef ; 0xf85d6 + xor ax, ax ; 31 c0 ; 0xf85d8 + xor cx, cx ; 31 c9 ; 0xf85da + mov dx, bx ; 89 da ; 0xf85dc + xchg cx, ax ; 91 ; 0xf85de + sal eax, 010h ; 66 c1 e0 10 ; 0xf85df + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf85e3 + out DX, eax ; 66 ef ; 0xf85e5 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf85e7 ahci.c:460 + mov byte [es:di+00262h], 0ffh ; 26 c6 85 62 02 ff ; 0xf85ea + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf85f0 ahci.c:462 + pop di ; 5f ; 0xf85f3 + pop si ; 5e ; 0xf85f4 + pop cx ; 59 ; 0xf85f5 + pop bx ; 5b ; 0xf85f6 + pop bp ; 5d ; 0xf85f7 + retn ; c3 ; 0xf85f8 + ; disGetNextSymbol 0xf85f9 LB 0x285f -> off=0x0 cb=0000000000000250 uValue=00000000000f6ff9 'ahci_port_init' +ahci_port_init: ; 0xf85f9 LB 0x250 + push bp ; 55 ; 0xf85f9 ahci.c:468 + mov bp, sp ; 89 e5 ; 0xf85fa + push cx ; 51 ; 0xf85fc + push si ; 56 ; 0xf85fd + push di ; 57 ; 0xf85fe + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf85ff + mov si, ax ; 89 c6 ; 0xf8602 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf8604 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8607 + call 08476h ; e8 69 fe ; 0xf860a ahci.c:471 + mov al, bl ; 88 d8 ; 0xf860d ahci.c:474 + xor ah, ah ; 30 e4 ; 0xf860f + mov CL, strict byte 007h ; b1 07 ; 0xf8611 + sal ax, CL ; d3 e0 ; 0xf8613 + add ax, 00118h ; 05 18 01 ; 0xf8615 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8618 ahci.c:267 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf861b + xor cx, cx ; 31 c9 ; 0xf8620 ahci.c:269 + mov dx, bx ; 89 da ; 0xf8622 + xchg cx, ax ; 91 ; 0xf8624 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8625 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8629 + out DX, eax ; 66 ef ; 0xf862b + add bx, strict byte 00004h ; 83 c3 04 ; 0xf862d ahci.c:270 + mov dx, bx ; 89 da ; 0xf8630 + in eax, DX ; 66 ed ; 0xf8632 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8634 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8636 + xchg dx, ax ; 92 ; 0xf863a + and AL, strict byte 0eeh ; 24 ee ; 0xf863b + mov cx, dx ; 89 d1 ; 0xf863d + mov dx, bx ; 89 da ; 0xf863f + xchg cx, ax ; 91 ; 0xf8641 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8642 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8646 + out DX, eax ; 66 ef ; 0xf8648 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf864a ahci.c:477 + xor ah, ah ; 30 e4 ; 0xf864d + mov CL, strict byte 007h ; b1 07 ; 0xf864f + sal ax, CL ; d3 e0 ; 0xf8651 + add ax, 00118h ; 05 18 01 ; 0xf8653 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8656 ahci.c:277 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8659 + xor cx, cx ; 31 c9 ; 0xf865e ahci.c:279 + mov dx, bx ; 89 da ; 0xf8660 + xchg cx, ax ; 91 ; 0xf8662 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8663 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8667 + out DX, eax ; 66 ef ; 0xf8669 + lea dx, [bx+004h] ; 8d 57 04 ; 0xf866b ahci.c:280 + in eax, DX ; 66 ed ; 0xf866e + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8670 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8672 + xchg dx, ax ; 92 ; 0xf8676 + test ax, 0c011h ; a9 11 c0 ; 0xf8677 + je short 08680h ; 74 04 ; 0xf867a + mov AL, strict byte 001h ; b0 01 ; 0xf867c + jmp short 08682h ; eb 02 ; 0xf867e + xor al, al ; 30 c0 ; 0xf8680 + cmp AL, strict byte 001h ; 3c 01 ; 0xf8682 ahci.c:281 + je short 0864ah ; 74 c4 ; 0xf8684 + mov cx, strict word 00020h ; b9 20 00 ; 0xf8686 ahci.c:488 + xor bx, bx ; 31 db ; 0xf8689 + mov ax, si ; 89 f0 ; 0xf868b + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf868d + call 0ab30h ; e8 9d 24 ; 0xf8690 + lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf8693 ahci.c:489 + mov cx, strict word 00040h ; b9 40 00 ; 0xf8697 + xor bx, bx ; 31 db ; 0xf869a + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf869c + call 0ab30h ; e8 8e 24 ; 0xf869f + lea di, [si+00200h] ; 8d bc 00 02 ; 0xf86a2 ahci.c:490 + mov cx, strict word 00060h ; b9 60 00 ; 0xf86a6 + xor bx, bx ; 31 db ; 0xf86a9 + mov ax, di ; 89 f8 ; 0xf86ab + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf86ad + call 0ab30h ; e8 7d 24 ; 0xf86b0 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf86b3 ahci.c:494 + xor bh, bh ; 30 ff ; 0xf86b6 + mov CL, strict byte 007h ; b1 07 ; 0xf86b8 + sal bx, CL ; d3 e3 ; 0xf86ba + lea ax, [bx+00108h] ; 8d 87 08 01 ; 0xf86bc + cwd ; 99 ; 0xf86c0 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf86c1 + mov cx, word [es:si+00260h] ; 26 8b 8c 60 02 ; 0xf86c4 + mov word [bp-00ch], cx ; 89 4e f4 ; 0xf86c9 + mov cx, dx ; 89 d1 ; 0xf86cc + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf86ce + xchg cx, ax ; 91 ; 0xf86d1 + sal eax, 010h ; 66 c1 e0 10 ; 0xf86d2 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf86d6 + out DX, eax ; 66 ef ; 0xf86d8 + mov ax, di ; 89 f8 ; 0xf86da + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf86dc + call 080e8h ; e8 06 fa ; 0xf86df + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf86e2 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf86e5 + add di, strict byte 00004h ; 83 c7 04 ; 0xf86ea + mov cx, dx ; 89 d1 ; 0xf86ed + mov dx, di ; 89 fa ; 0xf86ef + xchg cx, ax ; 91 ; 0xf86f1 + sal eax, 010h ; 66 c1 e0 10 ; 0xf86f2 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf86f6 + out DX, eax ; 66 ef ; 0xf86f8 + lea ax, [bx+0010ch] ; 8d 87 0c 01 ; 0xf86fa ahci.c:495 + cwd ; 99 ; 0xf86fe + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf86ff + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8702 + mov cx, dx ; 89 d1 ; 0xf8707 + mov dx, di ; 89 fa ; 0xf8709 + xchg cx, ax ; 91 ; 0xf870b + sal eax, 010h ; 66 c1 e0 10 ; 0xf870c + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8710 + out DX, eax ; 66 ef ; 0xf8712 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8714 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8717 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf871c + xor ax, ax ; 31 c0 ; 0xf871f + xor cx, cx ; 31 c9 ; 0xf8721 + xchg cx, ax ; 91 ; 0xf8723 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8724 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8728 + out DX, eax ; 66 ef ; 0xf872a + lea ax, [bx+00100h] ; 8d 87 00 01 ; 0xf872c ahci.c:498 + cwd ; 99 ; 0xf8730 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8731 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8734 + mov cx, dx ; 89 d1 ; 0xf8739 + mov dx, di ; 89 fa ; 0xf873b + xchg cx, ax ; 91 ; 0xf873d + sal eax, 010h ; 66 c1 e0 10 ; 0xf873e + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8742 + out DX, eax ; 66 ef ; 0xf8744 + mov ax, si ; 89 f0 ; 0xf8746 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8748 + call 080e8h ; e8 9a f9 ; 0xf874b + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf874e + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8751 + add di, strict byte 00004h ; 83 c7 04 ; 0xf8756 + mov cx, dx ; 89 d1 ; 0xf8759 + mov dx, di ; 89 fa ; 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 + lea ax, [bx+00104h] ; 8d 87 04 01 ; 0xf8766 ahci.c:499 + cwd ; 99 ; 0xf876a + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf876b + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf876e + mov cx, dx ; 89 d1 ; 0xf8773 + mov dx, di ; 89 fa ; 0xf8775 + xchg cx, ax ; 91 ; 0xf8777 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8778 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf877c + out DX, eax ; 66 ef ; 0xf877e + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8780 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8783 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8788 + xor ax, ax ; 31 c0 ; 0xf878b + xor cx, cx ; 31 c9 ; 0xf878d + xchg cx, ax ; 91 ; 0xf878f + sal eax, 010h ; 66 c1 e0 10 ; 0xf8790 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8794 + out DX, eax ; 66 ef ; 0xf8796 + lea ax, [bx+00114h] ; 8d 87 14 01 ; 0xf8798 ahci.c:502 + cwd ; 99 ; 0xf879c + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf879d + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf87a0 + mov cx, dx ; 89 d1 ; 0xf87a5 + mov dx, di ; 89 fa ; 0xf87a7 + xchg cx, ax ; 91 ; 0xf87a9 + sal eax, 010h ; 66 c1 e0 10 ; 0xf87aa + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf87ae + out DX, eax ; 66 ef ; 0xf87b0 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf87b2 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf87b5 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf87ba + xor ax, ax ; 31 c0 ; 0xf87bd + xor cx, cx ; 31 c9 ; 0xf87bf + xchg cx, ax ; 91 ; 0xf87c1 + sal eax, 010h ; 66 c1 e0 10 ; 0xf87c2 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf87c6 + out DX, eax ; 66 ef ; 0xf87c8 + lea ax, [bx+00110h] ; 8d 87 10 01 ; 0xf87ca ahci.c:503 + cwd ; 99 ; 0xf87ce + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf87cf + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf87d2 + mov cx, dx ; 89 d1 ; 0xf87d7 + mov dx, di ; 89 fa ; 0xf87d9 + xchg cx, ax ; 91 ; 0xf87db + sal eax, 010h ; 66 c1 e0 10 ; 0xf87dc + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf87e0 + out DX, eax ; 66 ef ; 0xf87e2 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf87e4 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf87e7 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf87ec + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf87ef + mov cx, ax ; 89 c1 ; 0xf87f2 + xchg cx, ax ; 91 ; 0xf87f4 + sal eax, 010h ; 66 c1 e0 10 ; 0xf87f5 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf87f9 + out DX, eax ; 66 ef ; 0xf87fb + lea ax, [bx+00130h] ; 8d 87 30 01 ; 0xf87fd ahci.c:505 + cwd ; 99 ; 0xf8801 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8802 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8805 + mov cx, dx ; 89 d1 ; 0xf880a + mov dx, bx ; 89 da ; 0xf880c + xchg cx, ax ; 91 ; 0xf880e + sal eax, 010h ; 66 c1 e0 10 ; 0xf880f + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8813 + out DX, eax ; 66 ef ; 0xf8815 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8817 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf881a + add dx, strict byte 00004h ; 83 c2 04 ; 0xf881f + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8822 + mov cx, ax ; 89 c1 ; 0xf8825 + xchg cx, ax ; 91 ; 0xf8827 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8828 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf882c + out DX, eax ; 66 ef ; 0xf882e + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8830 ahci.c:507 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8833 + mov byte [es:si+00262h], al ; 26 88 84 62 02 ; 0xf8836 + mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf883b ahci.c:508 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf8841 ahci.c:509 + pop di ; 5f ; 0xf8844 + pop si ; 5e ; 0xf8845 + pop cx ; 59 ; 0xf8846 + pop bp ; 5d ; 0xf8847 + retn ; c3 ; 0xf8848 + ; disGetNextSymbol 0xf8849 LB 0x260f -> off=0x0 cb=00000000000000aa uValue=00000000000f7249 'ahci_read_sectors' +ahci_read_sectors: ; 0xf8849 LB 0xaa + push bp ; 55 ; 0xf8849 ahci.c:518 + mov bp, sp ; 89 e5 ; 0xf884a + push si ; 56 ; 0xf884c + push di ; 57 ; 0xf884d + les bx, [bp+004h] ; c4 5e 04 ; 0xf884e ahci.c:523 + mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf8851 + xor ah, ah ; 30 e4 ; 0xf8855 + mov di, ax ; 89 c7 ; 0xf8857 + sub di, strict byte 0000ch ; 83 ef 0c ; 0xf8859 + cmp di, strict byte 00004h ; 83 ff 04 ; 0xf885c ahci.c:524 + jbe short 08874h ; 76 13 ; 0xf885f + push di ; 57 ; 0xf8861 ahci.c:525 + mov ax, 00c8eh ; b8 8e 0c ; 0xf8862 + push ax ; 50 ; 0xf8865 + mov ax, 00ca0h ; b8 a0 0c ; 0xf8866 + push ax ; 50 ; 0xf8869 + mov ax, strict word 00007h ; b8 07 00 ; 0xf886a + push ax ; 50 ; 0xf886d + call 0195ch ; e8 eb 90 ; 0xf886e + add sp, strict byte 00008h ; 83 c4 08 ; 0xf8871 + xor bx, bx ; 31 db ; 0xf8874 ahci.c:531 + les si, [bp+004h] ; c4 76 04 ; 0xf8876 + mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf8879 + shr eax, 010h ; 66 c1 e8 10 ; 0xf887e ahci.c:247 + mov es, dx ; 8e c2 ; 0xf8882 + mov word [es:bx+00264h], ax ; 26 89 87 64 02 ; 0xf8884 + mov es, [bp+006h] ; 8e 46 06 ; 0xf8889 ahci.c:532 + add di, si ; 01 f7 ; 0xf888c + mov bl, byte [es:di+002a1h] ; 26 8a 9d a1 02 ; 0xf888e + xor bh, bh ; 30 ff ; 0xf8893 + mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf8895 + xor ax, ax ; 31 c0 ; 0xf889a + call 085f9h ; e8 5a fd ; 0xf889c + mov bx, strict word 00025h ; bb 25 00 ; 0xf889f ahci.c:533 + mov ax, si ; 89 f0 ; 0xf88a2 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf88a4 + call 0825fh ; e8 b5 f9 ; 0xf88a7 + mov bx, ax ; 89 c3 ; 0xf88aa + mov es, [bp+006h] ; 8e 46 06 ; 0xf88ac ahci.c:535 + mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf88af + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf88b3 + mov CL, strict byte 009h ; b1 09 ; 0xf88b7 ahci.c:537 + sal ax, CL ; d3 e0 ; 0xf88b9 + mov cx, ax ; 89 c1 ; 0xf88bb + shr cx, 1 ; d1 e9 ; 0xf88bd + mov di, si ; 89 f7 ; 0xf88bf + mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf88c1 + mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf88c5 + mov si, di ; 89 fe ; 0xf88c9 + mov dx, ax ; 89 c2 ; 0xf88cb + mov es, ax ; 8e c0 ; 0xf88cd + push DS ; 1e ; 0xf88cf + mov ds, dx ; 8e da ; 0xf88d0 + rep movsw ; f3 a5 ; 0xf88d2 + pop DS ; 1f ; 0xf88d4 + xor di, di ; 31 ff ; 0xf88d5 ahci.c:539 + les si, [bp+004h] ; c4 76 04 ; 0xf88d7 + mov es, [es:si+002a6h] ; 26 8e 84 a6 02 ; 0xf88da + mov ax, word [es:di+00264h] ; 26 8b 85 64 02 ; 0xf88df ahci.c:252 + sal eax, 010h ; 66 c1 e0 10 ; 0xf88e4 + mov ax, bx ; 89 d8 ; 0xf88e8 ahci.c:541 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf88ea + pop di ; 5f ; 0xf88ed + pop si ; 5e ; 0xf88ee + pop bp ; 5d ; 0xf88ef + retn 00004h ; c2 04 00 ; 0xf88f0 + ; disGetNextSymbol 0xf88f3 LB 0x2565 -> off=0x0 cb=0000000000000088 uValue=00000000000f72f3 'ahci_write_sectors' +ahci_write_sectors: ; 0xf88f3 LB 0x88 + push bp ; 55 ; 0xf88f3 ahci.c:550 + mov bp, sp ; 89 e5 ; 0xf88f4 + push si ; 56 ; 0xf88f6 + push di ; 57 ; 0xf88f7 + mov si, word [bp+004h] ; 8b 76 04 ; 0xf88f8 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf88fb + mov es, cx ; 8e c1 ; 0xf88fe ahci.c:555 + mov bl, byte [es:si+00ch] ; 26 8a 5c 0c ; 0xf8900 + xor bh, bh ; 30 ff ; 0xf8904 + sub bx, strict byte 0000ch ; 83 eb 0c ; 0xf8906 + cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf8909 ahci.c:556 + jbe short 08921h ; 76 13 ; 0xf890c + push bx ; 53 ; 0xf890e ahci.c:557 + mov ax, 00cbfh ; b8 bf 0c ; 0xf890f + push ax ; 50 ; 0xf8912 + mov ax, 00ca0h ; b8 a0 0c ; 0xf8913 + push ax ; 50 ; 0xf8916 + mov ax, strict word 00007h ; b8 07 00 ; 0xf8917 + push ax ; 50 ; 0xf891a + call 0195ch ; e8 3e 90 ; 0xf891b + add sp, strict byte 00008h ; 83 c4 08 ; 0xf891e + xor di, di ; 31 ff ; 0xf8921 ahci.c:563 + mov es, cx ; 8e c1 ; 0xf8923 + mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf8925 + shr eax, 010h ; 66 c1 e8 10 ; 0xf892a ahci.c:247 + mov es, dx ; 8e c2 ; 0xf892e + mov word [es:di+00264h], ax ; 26 89 85 64 02 ; 0xf8930 + mov es, cx ; 8e c1 ; 0xf8935 ahci.c:564 + add bx, si ; 01 f3 ; 0xf8937 + mov bl, byte [es:bx+002a1h] ; 26 8a 9f a1 02 ; 0xf8939 + xor bh, bh ; 30 ff ; 0xf893e + mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf8940 + xor ax, ax ; 31 c0 ; 0xf8945 + call 085f9h ; e8 af fc ; 0xf8947 + mov bx, strict word 00035h ; bb 35 00 ; 0xf894a ahci.c:565 + mov ax, si ; 89 f0 ; 0xf894d + mov dx, cx ; 89 ca ; 0xf894f + call 0825fh ; e8 0b f9 ; 0xf8951 + mov dx, ax ; 89 c2 ; 0xf8954 + mov es, cx ; 8e c1 ; 0xf8956 ahci.c:567 + mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf8958 + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf895c + xor bx, bx ; 31 db ; 0xf8960 ahci.c:568 + mov es, [es:si+002a6h] ; 26 8e 84 a6 02 ; 0xf8962 + mov ax, word [es:bx+00264h] ; 26 8b 87 64 02 ; 0xf8967 ahci.c:252 + sal eax, 010h ; 66 c1 e0 10 ; 0xf896c + mov ax, dx ; 89 d0 ; 0xf8970 ahci.c:570 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf8972 + pop di ; 5f ; 0xf8975 + pop si ; 5e ; 0xf8976 + pop bp ; 5d ; 0xf8977 + retn 00004h ; c2 04 00 ; 0xf8978 + ; disGetNextSymbol 0xf897b LB 0x24dd -> off=0x0 cb=000000000000015a uValue=00000000000f737b 'ahci_cmd_packet' +ahci_cmd_packet: ; 0xf897b LB 0x15a + push bp ; 55 ; 0xf897b ahci.c:577 + mov bp, sp ; 89 e5 ; 0xf897c + push si ; 56 ; 0xf897e + push di ; 57 ; 0xf897f + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf8980 + mov di, ax ; 89 c7 ; 0xf8983 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf8985 + mov word [bp-010h], bx ; 89 5e f0 ; 0xf8988 + mov word [bp-00eh], cx ; 89 4e f2 ; 0xf898b + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf898e ahci.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8991 + mov es, ax ; 8e c0 ; 0xf8994 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf8996 + mov si, strict word 0005eh ; be 5e 00 ; 0xf8999 ahci.c:59 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf899c + cmp byte [bp+008h], 002h ; 80 7e 08 02 ; 0xf899f ahci.c:584 + jne short 089c8h ; 75 23 ; 0xf89a3 + mov bx, 00dcch ; bb cc 0d ; 0xf89a5 ahci.c:585 + mov cx, ds ; 8c d9 ; 0xf89a8 + mov ax, strict word 00004h ; b8 04 00 ; 0xf89aa + call 01919h ; e8 69 8f ; 0xf89ad + mov ax, 00cd2h ; b8 d2 0c ; 0xf89b0 + push ax ; 50 ; 0xf89b3 + mov ax, 00ce2h ; b8 e2 0c ; 0xf89b4 + push ax ; 50 ; 0xf89b7 + mov ax, strict word 00004h ; b8 04 00 ; 0xf89b8 + push ax ; 50 ; 0xf89bb + call 0195ch ; e8 9d 8f ; 0xf89bc + add sp, strict byte 00006h ; 83 c4 06 ; 0xf89bf + mov ax, strict word 00001h ; b8 01 00 ; 0xf89c2 ahci.c:586 + jmp near 08acch ; e9 04 01 ; 0xf89c5 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf89c8 ahci.c:597 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf89cb + mov cx, strict word 00008h ; b9 08 00 ; 0xf89ce + sal ax, 1 ; d1 e0 ; 0xf89d1 + rcl dx, 1 ; d1 d2 ; 0xf89d3 + loop 089d1h ; e2 fa ; 0xf89d5 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf89d7 + mov word [es:si], ax ; 26 89 04 ; 0xf89da + mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf89dd + mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf89e1 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf89e7 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf89ed ahci.c:598 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf89f0 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf89f4 + mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf89f7 + mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf89fb ahci.c:599 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf89ff + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8a02 + xor cx, cx ; 31 c9 ; 0xf8a05 + call 0aae0h ; e8 d6 20 ; 0xf8a07 + mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf8a0a + mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf8a0e ahci.c:602 + mov ax, word [es:si+002a6h] ; 26 8b 84 a6 02 ; 0xf8a13 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf8a18 + sub di, strict byte 0000ch ; 83 ef 0c ; 0xf8a1b ahci.c:590 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8a1e ahci.c:247 + les bx, [bp-00ch] ; c4 5e f4 ; 0xf8a22 + mov word [es:bx+00264h], ax ; 26 89 87 64 02 ; 0xf8a25 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf8a2a ahci.c:605 + mov bx, si ; 89 f3 ; 0xf8a2d + add bx, di ; 01 fb ; 0xf8a2f + mov bl, byte [es:bx+002a1h] ; 26 8a 9f a1 02 ; 0xf8a31 + xor bh, bh ; 30 ff ; 0xf8a36 + mov dx, word [es:si+002a6h] ; 26 8b 94 a6 02 ; 0xf8a38 + xor ax, ax ; 31 c0 ; 0xf8a3d + call 085f9h ; e8 b7 fb ; 0xf8a3f + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf8a42 ahci.c:608 + xor ah, ah ; 30 e4 ; 0xf8a45 + push ax ; 50 ; 0xf8a47 + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf8a48 + mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf8a4b + mov ax, 000c0h ; b8 c0 00 ; 0xf8a4e + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8a51 + call 0ab40h ; e8 e9 20 ; 0xf8a54 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf8a57 ahci.c:612 + mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00 ; 0xf8a5a + mov word [es:si+01ah], strict word 00000h ; 26 c7 44 1a 00 00 ; 0xf8a60 ahci.c:613 + mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf8a66 + mov bx, 000a0h ; bb a0 00 ; 0xf8a6c ahci.c:615 + mov ax, si ; 89 f0 ; 0xf8a6f + mov dx, es ; 8c c2 ; 0xf8a71 + call 0825fh ; e8 e9 f7 ; 0xf8a73 + les bx, [bp-00ch] ; c4 5e f4 ; 0xf8a76 ahci.c:617 + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf8a79 + mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf8a7d + mov es, [bp-008h] ; 8e 46 f8 ; 0xf8a81 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf8a84 + mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf8a88 + mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf8a8c ahci.c:619 + mov cx, dx ; 89 d1 ; 0xf8a90 + shr cx, 1 ; d1 e9 ; 0xf8a92 + rcr bx, 1 ; d1 db ; 0xf8a94 + mov di, word [es:si+008h] ; 26 8b 7c 08 ; 0xf8a96 + mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf8a9a + mov cx, bx ; 89 d9 ; 0xf8a9e + mov si, di ; 89 fe ; 0xf8aa0 + mov dx, ax ; 89 c2 ; 0xf8aa2 + mov es, ax ; 8e c0 ; 0xf8aa4 + push DS ; 1e ; 0xf8aa6 + mov ds, dx ; 8e da ; 0xf8aa7 + rep movsw ; f3 a5 ; 0xf8aa9 + pop DS ; 1f ; 0xf8aab + les bx, [bp-00ch] ; c4 5e f4 ; 0xf8aac ahci.c:252 + mov ax, word [es:bx+00264h] ; 26 8b 87 64 02 ; 0xf8aaf + sal eax, 010h ; 66 c1 e0 10 ; 0xf8ab4 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8ab8 ahci.c:623 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8abb + or ax, word [es:bx+004h] ; 26 0b 47 04 ; 0xf8abf + jne short 08acah ; 75 05 ; 0xf8ac3 + mov ax, strict word 00004h ; b8 04 00 ; 0xf8ac5 + jmp short 08acch ; eb 02 ; 0xf8ac8 + xor ax, ax ; 31 c0 ; 0xf8aca + lea sp, [bp-004h] ; 8d 66 fc ; 0xf8acc ahci.c:624 + pop di ; 5f ; 0xf8acf + pop si ; 5e ; 0xf8ad0 + pop bp ; 5d ; 0xf8ad1 + retn 0000ah ; c2 0a 00 ; 0xf8ad2 + ; disGetNextSymbol 0xf8ad5 LB 0x2383 -> off=0x0 cb=0000000000000005 uValue=00000000000f74d5 'wait_ticks_device_init' +wait_ticks_device_init: ; 0xf8ad5 LB 0x5 + push bp ; 55 ; 0xf8ad5 ahci.c:627 + mov bp, sp ; 89 e5 ; 0xf8ad6 + pop bp ; 5d ; 0xf8ad8 ahci.c:629 + retn ; c3 ; 0xf8ad9 + ; disGetNextSymbol 0xf8ada LB 0x237e -> off=0x0 cb=00000000000004e1 uValue=00000000000f74da 'ahci_port_detect_device' +ahci_port_detect_device: ; 0xf8ada LB 0x4e1 + push bp ; 55 ; 0xf8ada ahci.c:631 + mov bp, sp ; 89 e5 ; 0xf8adb + push cx ; 51 ; 0xf8add + push si ; 56 ; 0xf8ade + push di ; 57 ; 0xf8adf + sub sp, 0022ah ; 81 ec 2a 02 ; 0xf8ae0 + mov si, ax ; 89 c6 ; 0xf8ae4 + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf8ae6 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8ae9 + mov word [bp-01eh], strict word 00000h ; c7 46 e2 00 00 ; 0xf8aec ahci.c:637 + mov al, bl ; 88 d8 ; 0xf8af1 ahci.c:639 + mov byte [bp-028h], bl ; 88 5e d8 ; 0xf8af3 + xor al, bl ; 30 d8 ; 0xf8af6 + mov byte [bp-027h], al ; 88 46 d9 ; 0xf8af8 + mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf8afb + mov ax, si ; 89 f0 ; 0xf8afe + call 085f9h ; e8 f6 fa ; 0xf8b00 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8b03 ahci.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8b06 + mov es, ax ; 8e c0 ; 0xf8b09 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf8b0b + mov word [bp-026h], strict word 0005eh ; c7 46 da 5e 00 ; 0xf8b0e ahci.c:59 + mov word [bp-024h], ax ; 89 46 dc ; 0xf8b13 + mov CL, strict byte 007h ; b1 07 ; 0xf8b16 ahci.c:644 + mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf8b18 + sal ax, CL ; d3 e0 ; 0xf8b1b + add ax, 0012ch ; 05 2c 01 ; 0xf8b1d + cwd ; 99 ; 0xf8b20 + mov di, ax ; 89 c7 ; 0xf8b21 + mov bx, dx ; 89 d3 ; 0xf8b23 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8b25 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8b28 + mov cx, bx ; 89 d9 ; 0xf8b2d + xchg cx, ax ; 91 ; 0xf8b2f + sal eax, 010h ; 66 c1 e0 10 ; 0xf8b30 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8b34 + out DX, eax ; 66 ef ; 0xf8b36 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8b38 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8b3b + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8b40 + mov ax, strict word 00001h ; b8 01 00 ; 0xf8b43 + xor cx, cx ; 31 c9 ; 0xf8b46 + xchg cx, ax ; 91 ; 0xf8b48 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8b49 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8b4d + out DX, eax ; 66 ef ; 0xf8b4f + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8b51 ahci.c:649 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8b54 + mov ax, di ; 89 f8 ; 0xf8b59 + mov cx, bx ; 89 d9 ; 0xf8b5b + xchg cx, ax ; 91 ; 0xf8b5d + sal eax, 010h ; 66 c1 e0 10 ; 0xf8b5e + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8b62 + out DX, eax ; 66 ef ; 0xf8b64 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8b66 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8b69 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8b6e + xor ax, ax ; 31 c0 ; 0xf8b71 + xor cx, cx ; 31 c9 ; 0xf8b73 + xchg cx, ax ; 91 ; 0xf8b75 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8b76 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8b7a + out DX, eax ; 66 ef ; 0xf8b7c + mov di, strict word 0006ch ; bf 6c 00 ; 0xf8b7e ahci.c:658 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8b81 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf8b84 + mov es, ax ; 8e c0 ; 0xf8b87 ahci.c:659 + mov ax, word [es:di] ; 26 8b 05 ; 0xf8b89 + add ax, strict word 00003h ; 05 03 00 ; 0xf8b8c + mov word [bp-022h], ax ; 89 46 de ; 0xf8b8f + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8b92 + adc ax, strict word 00000h ; 15 00 00 ; 0xf8b96 + mov word [bp-016h], ax ; 89 46 ea ; 0xf8b99 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8b9c ahci.c:661 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8b9f + cmp ax, word [bp-016h] ; 3b 46 ea ; 0xf8ba3 + jc short 08bb9h ; 72 11 ; 0xf8ba6 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8ba8 + cmp ax, word [bp-016h] ; 3b 46 ea ; 0xf8bac + jne short 08c07h ; 75 56 ; 0xf8baf + mov ax, word [es:di] ; 26 8b 05 ; 0xf8bb1 + cmp ax, word [bp-022h] ; 3b 46 de ; 0xf8bb4 + jnc short 08c07h ; 73 4e ; 0xf8bb7 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8bb9 ahci.c:664 + xor ah, ah ; 30 e4 ; 0xf8bbc + mov CL, strict byte 007h ; b1 07 ; 0xf8bbe + sal ax, CL ; d3 e0 ; 0xf8bc0 + add ax, 00128h ; 05 28 01 ; 0xf8bc2 + cwd ; 99 ; 0xf8bc5 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8bc6 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8bc9 + mov cx, dx ; 89 d1 ; 0xf8bce + mov dx, bx ; 89 da ; 0xf8bd0 + xchg cx, ax ; 91 ; 0xf8bd2 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8bd3 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8bd7 + out DX, eax ; 66 ef ; 0xf8bd9 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8bdb + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8bde + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8be3 + in eax, DX ; 66 ed ; 0xf8be6 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8be8 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8bea + xchg dx, ax ; 92 ; 0xf8bee + mov word [bp-020h], ax ; 89 46 e0 ; 0xf8bef + mov word [bp-01ch], dx ; 89 56 e4 ; 0xf8bf2 + xor bx, bx ; 31 db ; 0xf8bf5 ahci.c:665 + push bx ; 53 ; 0xf8bf7 + mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8bf8 + xor cx, cx ; 31 c9 ; 0xf8bfb + call 080cch ; e8 cc f4 ; 0xf8bfd + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8c00 + jne short 08b9ch ; 75 97 ; 0xf8c03 + jmp short 08c10h ; eb 09 ; 0xf8c05 ahci.c:667 + cmp word [bp-01eh], strict byte 00000h ; 83 7e e2 00 ; 0xf8c07 ahci.c:672 + jne short 08c10h ; 75 03 ; 0xf8c0b + jmp near 08fb3h ; e9 a3 03 ; 0xf8c0d + xor ax, ax ; 31 c0 ; 0xf8c10 ahci.c:677 + push ax ; 50 ; 0xf8c12 + mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8c13 + xor cx, cx ; 31 c9 ; 0xf8c16 + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf8c18 + mov dx, word [bp-01ch] ; 8b 56 e4 ; 0xf8c1b + call 080cch ; e8 ab f4 ; 0xf8c1e + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8c21 + jne short 08c0dh ; 75 e7 ; 0xf8c24 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8c26 ahci.c:685 + xor ah, ah ; 30 e4 ; 0xf8c29 + mov CL, strict byte 007h ; b1 07 ; 0xf8c2b + mov di, ax ; 89 c7 ; 0xf8c2d + sal di, CL ; d3 e7 ; 0xf8c2f + lea ax, [di+00130h] ; 8d 85 30 01 ; 0xf8c31 + cwd ; 99 ; 0xf8c35 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8c36 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8c39 + mov cx, dx ; 89 d1 ; 0xf8c3e + mov dx, bx ; 89 da ; 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 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8c4b + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8c4e + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8c53 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8c56 + mov cx, ax ; 89 c1 ; 0xf8c59 + xchg cx, ax ; 91 ; 0xf8c5b + sal eax, 010h ; 66 c1 e0 10 ; 0xf8c5c + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8c60 + out DX, eax ; 66 ef ; 0xf8c62 + les bx, [bp-026h] ; c4 5e da ; 0xf8c64 ahci.c:687 + mov al, byte [es:bx+002a5h] ; 26 8a 87 a5 02 ; 0xf8c67 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf8c6c + cmp AL, strict byte 004h ; 3c 04 ; 0xf8c6f ahci.c:692 + jnc short 08c0dh ; 73 9a ; 0xf8c71 + lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8c73 ahci.c:695 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8c77 ahci.c:258 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8c7a + xor cx, cx ; 31 c9 ; 0xf8c7f ahci.c:260 + mov dx, bx ; 89 da ; 0xf8c81 + xchg cx, ax ; 91 ; 0xf8c83 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8c84 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8c88 + out DX, eax ; 66 ef ; 0xf8c8a + add bx, strict byte 00004h ; 83 c3 04 ; 0xf8c8c ahci.c:261 + mov dx, bx ; 89 da ; 0xf8c8f + in eax, DX ; 66 ed ; 0xf8c91 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8c93 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8c95 + xchg dx, ax ; 92 ; 0xf8c99 + or AL, strict byte 010h ; 0c 10 ; 0xf8c9a + mov cx, dx ; 89 d1 ; 0xf8c9c + mov dx, bx ; 89 da ; 0xf8c9e + xchg cx, ax ; 91 ; 0xf8ca0 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8ca1 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8ca5 + out DX, eax ; 66 ef ; 0xf8ca7 + lea ax, [di+00124h] ; 8d 85 24 01 ; 0xf8ca9 ahci.c:699 + cwd ; 99 ; 0xf8cad + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8cae + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8cb1 + mov cx, dx ; 89 d1 ; 0xf8cb6 + mov dx, bx ; 89 da ; 0xf8cb8 + xchg cx, ax ; 91 ; 0xf8cba + sal eax, 010h ; 66 c1 e0 10 ; 0xf8cbb + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8cbf + out DX, eax ; 66 ef ; 0xf8cc1 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8cc3 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8cc6 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8ccb + in eax, DX ; 66 ed ; 0xf8cce + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8cd0 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8cd2 + xchg dx, ax ; 92 ; 0xf8cd6 + mov bx, ax ; 89 c3 ; 0xf8cd7 + mov ax, dx ; 89 d0 ; 0xf8cd9 + mov cl, byte [bp-00ch] ; 8a 4e f4 ; 0xf8cdb + add cl, 00ch ; 80 c1 0c ; 0xf8cde + test dx, dx ; 85 d2 ; 0xf8ce1 ahci.c:700 + jne short 08d37h ; 75 52 ; 0xf8ce3 + cmp bx, 00101h ; 81 fb 01 01 ; 0xf8ce5 + jne short 08d37h ; 75 4c ; 0xf8ce9 + les bx, [bp-026h] ; c4 5e da ; 0xf8ceb ahci.c:710 + mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf8cee + mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf8cf4 + mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf8cfa + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf8d00 + lea dx, [bp-00230h] ; 8d 96 d0 fd ; 0xf8d05 ahci.c:711 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf8d09 + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf8d0d + mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf8d11 ahci.c:712 + mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf8d17 ahci.c:713 + mov bx, 000ech ; bb ec 00 ; 0xf8d1d ahci.c:714 + mov ax, word [bp-026h] ; 8b 46 da ; 0xf8d20 + mov dx, es ; 8c c2 ; 0xf8d23 + call 0825fh ; e8 37 f5 ; 0xf8d25 + mov byte [bp-00ah], cl ; 88 4e f6 ; 0xf8d28 ahci.c:717 + test byte [bp-00230h], 080h ; f6 86 d0 fd 80 ; 0xf8d2b ahci.c:719 + je short 08d3ah ; 74 08 ; 0xf8d30 + mov ax, strict word 00001h ; b8 01 00 ; 0xf8d32 + jmp short 08d3ch ; eb 05 ; 0xf8d35 + jmp near 08eefh ; e9 b5 01 ; 0xf8d37 + xor ax, ax ; 31 c0 ; 0xf8d3a + mov cl, al ; 88 c1 ; 0xf8d3c + mov ax, word [bp-0022eh] ; 8b 86 d2 fd ; 0xf8d3e ahci.c:720 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf8d42 + mov ax, word [bp-0022ah] ; 8b 86 d6 fd ; 0xf8d45 ahci.c:721 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf8d49 + mov ax, word [bp-00224h] ; 8b 86 dc fd ; 0xf8d4c ahci.c:722 + mov word [bp-02ah], ax ; 89 46 d6 ; 0xf8d50 + mov si, word [bp-001b8h] ; 8b b6 48 fe ; 0xf8d53 ahci.c:723 + mov di, word [bp-001b6h] ; 8b be 4a fe ; 0xf8d57 + xor ax, ax ; 31 c0 ; 0xf8d5b + mov word [bp-014h], ax ; 89 46 ec ; 0xf8d5d + mov word [bp-012h], ax ; 89 46 ee ; 0xf8d60 + cmp di, 00fffh ; 81 ff ff 0f ; 0xf8d63 ahci.c:725 + jne short 08d84h ; 75 1b ; 0xf8d67 + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf8d69 + jne short 08d84h ; 75 16 ; 0xf8d6c + mov ax, word [bp-00162h] ; 8b 86 9e fe ; 0xf8d6e ahci.c:726 + mov word [bp-012h], ax ; 89 46 ee ; 0xf8d72 + mov ax, word [bp-00164h] ; 8b 86 9c fe ; 0xf8d75 + mov word [bp-014h], ax ; 89 46 ec ; 0xf8d79 + mov di, word [bp-00166h] ; 8b be 9a fe ; 0xf8d7c + mov si, word [bp-00168h] ; 8b b6 98 fe ; 0xf8d80 + mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf8d84 ahci.c:730 + xor bh, bh ; 30 ff ; 0xf8d87 + mov es, [bp-024h] ; 8e 46 dc ; 0xf8d89 + add bx, word [bp-026h] ; 03 5e da ; 0xf8d8c + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8d8f + mov byte [es:bx+002a1h], al ; 26 88 87 a1 02 ; 0xf8d92 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8d97 ahci.c:731 + xor ah, ah ; 30 e4 ; 0xf8d9a + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf8d9c + imul dx ; f7 ea ; 0xf8d9f + mov bx, word [bp-026h] ; 8b 5e da ; 0xf8da1 + add bx, ax ; 01 c3 ; 0xf8da4 + mov word [es:bx+01eh], 0ff05h ; 26 c7 47 1e 05 ff ; 0xf8da6 + mov byte [es:bx+020h], cl ; 26 88 4f 20 ; 0xf8dac ahci.c:733 + mov byte [es:bx+021h], 000h ; 26 c6 47 21 00 ; 0xf8db0 ahci.c:734 + mov word [es:bx+024h], 00200h ; 26 c7 47 24 00 02 ; 0xf8db5 ahci.c:735 + mov byte [es:bx+023h], 001h ; 26 c6 47 23 01 ; 0xf8dbb ahci.c:736 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf8dc0 ahci.c:737 + mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf8dc3 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf8dc7 + mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf8dca + mov word [es:bx+034h], di ; 26 89 7f 34 ; 0xf8dce + mov word [es:bx+032h], si ; 26 89 77 32 ; 0xf8dd2 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf8dd6 ahci.c:739 + mov word [es:bx+02ch], ax ; 26 89 47 2c ; 0xf8dd9 + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf8ddd ahci.c:740 + mov word [es:bx+02eh], ax ; 26 89 47 2e ; 0xf8de0 + mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf8de4 ahci.c:741 + mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf8de7 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8deb ahci.c:744 + cmp AL, strict byte 001h ; 3c 01 ; 0xf8dee + jc short 08dfeh ; 72 0c ; 0xf8df0 + jbe short 08e06h ; 76 12 ; 0xf8df2 + cmp AL, strict byte 003h ; 3c 03 ; 0xf8df4 + je short 08e0eh ; 74 16 ; 0xf8df6 + cmp AL, strict byte 002h ; 3c 02 ; 0xf8df8 + je short 08e0ah ; 74 0e ; 0xf8dfa + jmp short 08e44h ; eb 46 ; 0xf8dfc + test al, al ; 84 c0 ; 0xf8dfe + jne short 08e44h ; 75 42 ; 0xf8e00 + mov BL, strict byte 040h ; b3 40 ; 0xf8e02 ahci.c:747 + jmp short 08e10h ; eb 0a ; 0xf8e04 ahci.c:748 + mov BL, strict byte 048h ; b3 48 ; 0xf8e06 ahci.c:750 + jmp short 08e10h ; eb 06 ; 0xf8e08 ahci.c:751 + mov BL, strict byte 050h ; b3 50 ; 0xf8e0a ahci.c:753 + jmp short 08e10h ; eb 02 ; 0xf8e0c ahci.c:754 + mov BL, strict byte 058h ; b3 58 ; 0xf8e0e ahci.c:756 + mov dl, bl ; 88 da ; 0xf8e10 ahci.c:760 + add dl, 007h ; 80 c2 07 ; 0xf8e12 + xor dh, dh ; 30 f6 ; 0xf8e15 + mov ax, dx ; 89 d0 ; 0xf8e17 + call 01664h ; e8 48 88 ; 0xf8e19 + test al, al ; 84 c0 ; 0xf8e1c + je short 08e44h ; 74 24 ; 0xf8e1e + mov al, bl ; 88 d8 ; 0xf8e20 ahci.c:763 + xor ah, ah ; 30 e4 ; 0xf8e22 + call 0169ch ; e8 75 88 ; 0xf8e24 + mov word [bp-02eh], ax ; 89 46 d2 ; 0xf8e27 + mov al, bl ; 88 d8 ; 0xf8e2a ahci.c:764 + add AL, strict byte 002h ; 04 02 ; 0xf8e2c + xor ah, ah ; 30 e4 ; 0xf8e2e + call 01664h ; e8 31 88 ; 0xf8e30 + xor ah, ah ; 30 e4 ; 0xf8e33 + mov word [bp-030h], ax ; 89 46 d0 ; 0xf8e35 + mov ax, dx ; 89 d0 ; 0xf8e38 ahci.c:765 + call 01664h ; e8 27 88 ; 0xf8e3a + xor ah, ah ; 30 e4 ; 0xf8e3d + mov word [bp-02ch], ax ; 89 46 d4 ; 0xf8e3f + jmp short 08e54h ; eb 10 ; 0xf8e42 ahci.c:767 + push word [bp-012h] ; ff 76 ee ; 0xf8e44 ahci.c:768 + push word [bp-014h] ; ff 76 ec ; 0xf8e47 + push di ; 57 ; 0xf8e4a + push si ; 56 ; 0xf8e4b + mov dx, ss ; 8c d2 ; 0xf8e4c + lea ax, [bp-030h] ; 8d 46 d0 ; 0xf8e4e + call 05891h ; e8 3d ca ; 0xf8e51 + mov bx, 00dcch ; bb cc 0d ; 0xf8e54 ahci.c:772 + mov cx, ds ; 8c d9 ; 0xf8e57 + mov ax, strict word 00004h ; b8 04 00 ; 0xf8e59 + call 01919h ; e8 ba 8a ; 0xf8e5c + push word [bp-012h] ; ff 76 ee ; 0xf8e5f + push word [bp-014h] ; ff 76 ec ; 0xf8e62 + push di ; 57 ; 0xf8e65 + push si ; 56 ; 0xf8e66 + mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf8e67 + push ax ; 50 ; 0xf8e6a + mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf8e6b + push ax ; 50 ; 0xf8e6e + mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf8e6f + push ax ; 50 ; 0xf8e72 + push word [bp-02ah] ; ff 76 d6 ; 0xf8e73 + push word [bp-01ah] ; ff 76 e6 ; 0xf8e76 + push word [bp-018h] ; ff 76 e8 ; 0xf8e79 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8e7c + xor ah, ah ; 30 e4 ; 0xf8e7f + push ax ; 50 ; 0xf8e81 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8e82 + push ax ; 50 ; 0xf8e85 + mov ax, 00d02h ; b8 02 0d ; 0xf8e86 + push ax ; 50 ; 0xf8e89 + mov ax, strict word 00004h ; b8 04 00 ; 0xf8e8a + push ax ; 50 ; 0xf8e8d + call 0195ch ; e8 cb 8a ; 0xf8e8e + add sp, strict byte 0001ch ; 83 c4 1c ; 0xf8e91 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8e94 ahci.c:774 + xor ah, ah ; 30 e4 ; 0xf8e97 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf8e99 + imul dx ; f7 ea ; 0xf8e9c + mov di, word [bp-026h] ; 8b 7e da ; 0xf8e9e + add di, ax ; 01 c7 ; 0xf8ea1 + mov es, [bp-024h] ; 8e 46 dc ; 0xf8ea3 + lea di, [di+026h] ; 8d 7d 26 ; 0xf8ea6 + push DS ; 1e ; 0xf8ea9 + push SS ; 16 ; 0xf8eaa + pop DS ; 1f ; 0xf8eab + lea si, [bp-030h] ; 8d 76 d0 ; 0xf8eac + movsw ; a5 ; 0xf8eaf + movsw ; a5 ; 0xf8eb0 + movsw ; a5 ; 0xf8eb1 + pop DS ; 1f ; 0xf8eb2 + mov bx, word [bp-026h] ; 8b 5e da ; 0xf8eb3 ahci.c:777 + mov bl, byte [es:bx+0024eh] ; 26 8a 9f 4e 02 ; 0xf8eb6 + mov dl, byte [bp-00ch] ; 8a 56 f4 ; 0xf8ebb ahci.c:778 + add dl, 00ch ; 80 c2 0c ; 0xf8ebe + mov al, bl ; 88 d8 ; 0xf8ec1 + xor ah, ah ; 30 e4 ; 0xf8ec3 + mov si, word [bp-026h] ; 8b 76 da ; 0xf8ec5 + add si, ax ; 01 c6 ; 0xf8ec8 + mov byte [es:si+0024fh], dl ; 26 88 94 4f 02 ; 0xf8eca + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf8ecf ahci.c:779 + mov si, word [bp-026h] ; 8b 76 da ; 0xf8ed1 ahci.c:780 + mov byte [es:si+0024eh], bl ; 26 88 9c 4e 02 ; 0xf8ed4 + mov bx, strict word 00075h ; bb 75 00 ; 0xf8ed9 ahci.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8edc + mov es, ax ; 8e c0 ; 0xf8edf + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf8ee1 + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf8ee4 ahci.c:784 + mov si, strict word 00075h ; be 75 00 ; 0xf8ee6 ahci.c:53 + mov byte [es:si], bl ; 26 88 1c ; 0xf8ee9 + jmp near 08fa5h ; e9 b6 00 ; 0xf8eec ahci.c:787 + cmp dx, 0eb14h ; 81 fa 14 eb ; 0xf8eef + jne short 08f47h ; 75 52 ; 0xf8ef3 + cmp bx, 00101h ; 81 fb 01 01 ; 0xf8ef5 + jne short 08f47h ; 75 4c ; 0xf8ef9 + les bx, [bp-026h] ; c4 5e da ; 0xf8efb ahci.c:792 + mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf8efe + mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf8f04 + mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf8f0a + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf8f10 + lea dx, [bp-00230h] ; 8d 96 d0 fd ; 0xf8f15 ahci.c:793 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf8f19 + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf8f1d + mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf8f21 ahci.c:794 + mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf8f27 ahci.c:795 + mov bx, 000a1h ; bb a1 00 ; 0xf8f2d ahci.c:796 + mov ax, word [bp-026h] ; 8b 46 da ; 0xf8f30 + mov dx, es ; 8c c2 ; 0xf8f33 + call 0825fh ; e8 27 f3 ; 0xf8f35 + mov byte [bp-00ah], cl ; 88 4e f6 ; 0xf8f38 ahci.c:799 + test byte [bp-00230h], 080h ; f6 86 d0 fd 80 ; 0xf8f3b ahci.c:801 + je short 08f49h ; 74 07 ; 0xf8f40 + mov cx, strict word 00001h ; b9 01 00 ; 0xf8f42 + jmp short 08f4bh ; eb 04 ; 0xf8f45 + jmp short 08fa5h ; eb 5c ; 0xf8f47 + xor cx, cx ; 31 c9 ; 0xf8f49 + mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf8f4b ahci.c:803 + xor bh, bh ; 30 ff ; 0xf8f4e + mov es, [bp-024h] ; 8e 46 dc ; 0xf8f50 + add bx, word [bp-026h] ; 03 5e da ; 0xf8f53 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8f56 + mov byte [es:bx+002a1h], al ; 26 88 87 a1 02 ; 0xf8f59 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8f5e ahci.c:804 + xor ah, ah ; 30 e4 ; 0xf8f61 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf8f63 + imul dx ; f7 ea ; 0xf8f66 + mov bx, word [bp-026h] ; 8b 5e da ; 0xf8f68 + add bx, ax ; 01 c3 ; 0xf8f6b + mov word [es:bx+01eh], 00505h ; 26 c7 47 1e 05 05 ; 0xf8f6d + mov byte [es:bx+020h], cl ; 26 88 4f 20 ; 0xf8f73 ahci.c:806 + mov word [es:bx+024h], 00800h ; 26 c7 47 24 00 08 ; 0xf8f77 ahci.c:807 + mov byte [es:bx+023h], 000h ; 26 c6 47 23 00 ; 0xf8f7d ahci.c:808 + mov bx, word [bp-026h] ; 8b 5e da ; 0xf8f82 ahci.c:811 + mov dl, byte [es:bx+00263h] ; 26 8a 97 63 02 ; 0xf8f85 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8f8a ahci.c:812 + add AL, strict byte 00ch ; 04 0c ; 0xf8f8d + mov bl, dl ; 88 d3 ; 0xf8f8f + xor bh, bh ; 30 ff ; 0xf8f91 + add bx, word [bp-026h] ; 03 5e da ; 0xf8f93 + mov byte [es:bx+00264h], al ; 26 88 87 64 02 ; 0xf8f96 + db 0feh, 0c2h + ; inc dl ; fe c2 ; 0xf8f9b ahci.c:813 + mov bx, word [bp-026h] ; 8b 5e da ; 0xf8f9d ahci.c:814 + mov byte [es:bx+00263h], dl ; 26 88 97 63 02 ; 0xf8fa0 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf8fa5 ahci.c:819 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8fa8 ahci.c:820 + les bx, [bp-026h] ; c4 5e da ; 0xf8fab + mov byte [es:bx+002a5h], al ; 26 88 87 a5 02 ; 0xf8fae + lea sp, [bp-006h] ; 8d 66 fa ; 0xf8fb3 ahci.c:825 + pop di ; 5f ; 0xf8fb6 + pop si ; 5e ; 0xf8fb7 + pop cx ; 59 ; 0xf8fb8 + pop bp ; 5d ; 0xf8fb9 + retn ; c3 ; 0xf8fba + ; disGetNextSymbol 0xf8fbb LB 0x1e9d -> off=0x0 cb=000000000000003a uValue=00000000000f79bb 'ahci_mem_alloc' +ahci_mem_alloc: ; 0xf8fbb LB 0x3a + push bx ; 53 ; 0xf8fbb ahci.c:830 + push cx ; 51 ; 0xf8fbc + push dx ; 52 ; 0xf8fbd + push di ; 57 ; 0xf8fbe + push bp ; 55 ; 0xf8fbf + mov bp, sp ; 89 e5 ; 0xf8fc0 + mov di, 00413h ; bf 13 04 ; 0xf8fc2 ahci.c:58 + xor ax, ax ; 31 c0 ; 0xf8fc5 + mov es, ax ; 8e c0 ; 0xf8fc7 + mov ax, word [es:di] ; 26 8b 05 ; 0xf8fc9 + test ax, ax ; 85 c0 ; 0xf8fcc ahci.c:839 + je short 08fefh ; 74 1f ; 0xf8fce + dec ax ; 48 ; 0xf8fd0 ahci.c:840 + mov bx, ax ; 89 c3 ; 0xf8fd1 + xor dx, dx ; 31 d2 ; 0xf8fd3 ahci.c:843 + mov cx, strict word 0000ah ; b9 0a 00 ; 0xf8fd5 + sal ax, 1 ; d1 e0 ; 0xf8fd8 + rcl dx, 1 ; d1 d2 ; 0xf8fda + loop 08fd8h ; e2 fa ; 0xf8fdc + mov di, dx ; 89 d7 ; 0xf8fde + mov cx, strict word 00004h ; b9 04 00 ; 0xf8fe0 + shr di, 1 ; d1 ef ; 0xf8fe3 + rcr ax, 1 ; d1 d8 ; 0xf8fe5 + loop 08fe3h ; e2 fa ; 0xf8fe7 + mov di, 00413h ; bf 13 04 ; 0xf8fe9 ahci.c:63 + mov word [es:di], bx ; 26 89 1d ; 0xf8fec + pop bp ; 5d ; 0xf8fef ahci.c:848 + pop di ; 5f ; 0xf8ff0 + pop dx ; 5a ; 0xf8ff1 + pop cx ; 59 ; 0xf8ff2 + pop bx ; 5b ; 0xf8ff3 + retn ; c3 ; 0xf8ff4 + ; disGetNextSymbol 0xf8ff5 LB 0x1e63 -> off=0x0 cb=0000000000000149 uValue=00000000000f79f5 'ahci_hba_init' +ahci_hba_init: ; 0xf8ff5 LB 0x149 + push bp ; 55 ; 0xf8ff5 ahci.c:853 + mov bp, sp ; 89 e5 ; 0xf8ff6 + push bx ; 53 ; 0xf8ff8 + push cx ; 51 ; 0xf8ff9 + push dx ; 52 ; 0xf8ffa + push si ; 56 ; 0xf8ffb + push di ; 57 ; 0xf8ffc + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8ffd + mov si, ax ; 89 c6 ; 0xf9000 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf9002 ahci.c:58 + mov ax, strict word 00040h ; b8 40 00 ; 0xf9005 + mov es, ax ; 8e c0 ; 0xf9008 + mov di, word [es:bx] ; 26 8b 3f ; 0xf900a + mov bx, strict word 0005eh ; bb 5e 00 ; 0xf900d ahci.c:864 + mov ax, strict word 00010h ; b8 10 00 ; 0xf9010 ahci.c:866 + xor cx, cx ; 31 c9 ; 0xf9013 + mov dx, si ; 89 f2 ; 0xf9015 + xchg cx, ax ; 91 ; 0xf9017 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9018 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf901c + out DX, eax ; 66 ef ; 0xf901e + lea dx, [si+004h] ; 8d 54 04 ; 0xf9020 + in eax, DX ; 66 ed ; 0xf9023 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9025 + shr eax, 010h ; 66 c1 e8 10 ; 0xf9027 + xchg dx, ax ; 92 ; 0xf902b + call 08fbbh ; e8 8c ff ; 0xf902c ahci.c:872 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf902f + test ax, ax ; 85 c0 ; 0xf9032 ahci.c:873 + jne short 09039h ; 75 03 ; 0xf9034 + jmp near 09134h ; e9 fb 00 ; 0xf9036 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf9039 ahci.c:876 + mov es, di ; 8e c7 ; 0xf903c + mov word [es:bx+002a6h], ax ; 26 89 87 a6 02 ; 0xf903e + mov byte [es:bx+002a5h], 000h ; 26 c6 87 a5 02 00 ; 0xf9043 ahci.c:882 + xor bx, bx ; 31 db ; 0xf9049 ahci.c:884 + mov es, ax ; 8e c0 ; 0xf904b + mov byte [es:bx+00262h], 0ffh ; 26 c6 87 62 02 ff ; 0xf904d ahci.c:885 + mov word [es:bx+00260h], si ; 26 89 b7 60 02 ; 0xf9053 ahci.c:886 + mov ax, strict word 00004h ; b8 04 00 ; 0xf9058 ahci.c:260 + xor cx, cx ; 31 c9 ; 0xf905b + mov dx, si ; 89 f2 ; 0xf905d + xchg cx, ax ; 91 ; 0xf905f + sal eax, 010h ; 66 c1 e0 10 ; 0xf9060 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9064 + out DX, eax ; 66 ef ; 0xf9066 + lea bx, [si+004h] ; 8d 5c 04 ; 0xf9068 ahci.c:261 + mov dx, bx ; 89 da ; 0xf906b + in eax, DX ; 66 ed ; 0xf906d + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf906f + shr eax, 010h ; 66 c1 e8 10 ; 0xf9071 + xchg dx, ax ; 92 ; 0xf9075 + or AL, strict byte 001h ; 0c 01 ; 0xf9076 + mov cx, dx ; 89 d1 ; 0xf9078 + mov dx, bx ; 89 da ; 0xf907a + xchg cx, ax ; 91 ; 0xf907c + sal eax, 010h ; 66 c1 e0 10 ; 0xf907d + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9081 + out DX, eax ; 66 ef ; 0xf9083 + mov ax, strict word 00004h ; b8 04 00 ; 0xf9085 ahci.c:892 + xor cx, cx ; 31 c9 ; 0xf9088 + mov dx, si ; 89 f2 ; 0xf908a + xchg cx, ax ; 91 ; 0xf908c + sal eax, 010h ; 66 c1 e0 10 ; 0xf908d + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9091 + out DX, eax ; 66 ef ; 0xf9093 + lea bx, [si+004h] ; 8d 5c 04 ; 0xf9095 + mov dx, bx ; 89 da ; 0xf9098 + in eax, DX ; 66 ed ; 0xf909a + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf909c + shr eax, 010h ; 66 c1 e8 10 ; 0xf909e + xchg dx, ax ; 92 ; 0xf90a2 + test AL, strict byte 001h ; a8 01 ; 0xf90a3 ahci.c:893 + jne short 09085h ; 75 de ; 0xf90a5 + xor ax, ax ; 31 c0 ; 0xf90a7 ahci.c:895 + xor cx, cx ; 31 c9 ; 0xf90a9 + mov dx, si ; 89 f2 ; 0xf90ab + xchg cx, ax ; 91 ; 0xf90ad + sal eax, 010h ; 66 c1 e0 10 ; 0xf90ae + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf90b2 + out DX, eax ; 66 ef ; 0xf90b4 + mov dx, bx ; 89 da ; 0xf90b6 + in eax, DX ; 66 ed ; 0xf90b8 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf90ba + shr eax, 010h ; 66 c1 e8 10 ; 0xf90bc + xchg dx, ax ; 92 ; 0xf90c0 + xor bx, bx ; 31 db ; 0xf90c1 ahci.c:896 + push bx ; 53 ; 0xf90c3 + mov bx, strict word 0001fh ; bb 1f 00 ; 0xf90c4 + xor cx, cx ; 31 c9 ; 0xf90c7 + call 080cch ; e8 00 f0 ; 0xf90c9 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf90cc + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf90ce + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf90d1 ahci.c:901 + jmp short 090f8h ; eb 21 ; 0xf90d5 ahci.c:902 + xor al, al ; 30 c0 ; 0xf90d7 ahci.c:280 + test al, al ; 84 c0 ; 0xf90d9 ahci.c:281 + je short 090efh ; 74 12 ; 0xf90db + mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf90dd ahci.c:907 + xor bh, bh ; 30 ff ; 0xf90e0 + xor ax, ax ; 31 c0 ; 0xf90e2 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf90e4 + call 08adah ; e8 f0 f9 ; 0xf90e7 + dec byte [bp-00eh] ; fe 4e f2 ; 0xf90ea ahci.c:908 + je short 09132h ; 74 43 ; 0xf90ed ahci.c:909 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf90ef ahci.c:912 + cmp byte [bp-00ch], 020h ; 80 7e f4 20 ; 0xf90f2 ahci.c:913 + jnc short 09132h ; 73 3a ; 0xf90f6 + mov cl, byte [bp-00ch] ; 8a 4e f4 ; 0xf90f8 + xor ch, ch ; 30 ed ; 0xf90fb + mov bx, strict word 00001h ; bb 01 00 ; 0xf90fd + xor di, di ; 31 ff ; 0xf9100 + jcxz 0910ah ; e3 06 ; 0xf9102 + sal bx, 1 ; d1 e3 ; 0xf9104 + rcl di, 1 ; d1 d7 ; 0xf9106 + loop 09104h ; e2 fa ; 0xf9108 + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf910a + xor cx, cx ; 31 c9 ; 0xf910d + mov dx, si ; 89 f2 ; 0xf910f + xchg cx, ax ; 91 ; 0xf9111 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9112 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9116 + out DX, eax ; 66 ef ; 0xf9118 + lea dx, [si+004h] ; 8d 54 04 ; 0xf911a + in eax, DX ; 66 ed ; 0xf911d + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf911f + shr eax, 010h ; 66 c1 e8 10 ; 0xf9121 + xchg dx, ax ; 92 ; 0xf9125 + test dx, di ; 85 fa ; 0xf9126 + jne short 0912eh ; 75 04 ; 0xf9128 + test ax, bx ; 85 d8 ; 0xf912a + je short 090d7h ; 74 a9 ; 0xf912c + mov AL, strict byte 001h ; b0 01 ; 0xf912e + jmp short 090d9h ; eb a7 ; 0xf9130 + xor ax, ax ; 31 c0 ; 0xf9132 ahci.c:915 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf9134 ahci.c:916 + pop di ; 5f ; 0xf9137 + pop si ; 5e ; 0xf9138 + pop dx ; 5a ; 0xf9139 + pop cx ; 59 ; 0xf913a + pop bx ; 5b ; 0xf913b + pop bp ; 5d ; 0xf913c + retn ; c3 ; 0xf913d + ; disGetNextSymbol 0xf913e LB 0x1d1a -> off=0x17 cb=0000000000000139 uValue=00000000000f7b55 'ahci_init' + db 00bh, 005h, 004h, 003h, 002h, 001h, 000h, 03bh, 092h, 019h, 092h, 01fh, 092h, 025h, 092h, 02bh + db 092h, 031h, 092h, 037h, 092h, 03bh, 092h +ahci_init: ; 0xf9155 LB 0x139 + push bp ; 55 ; 0xf9155 ahci.c:921 + mov bp, sp ; 89 e5 ; 0xf9156 + push si ; 56 ; 0xf9158 + push di ; 57 ; 0xf9159 + sub sp, strict byte 00012h ; 83 ec 12 ; 0xf915a + mov ax, 00601h ; b8 01 06 ; 0xf915d ahci.c:925 + mov dx, strict word 00001h ; ba 01 00 ; 0xf9160 + call 0a8a9h ; e8 43 17 ; 0xf9163 + mov dx, ax ; 89 c2 ; 0xf9166 + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf9168 ahci.c:926 + je short 091b6h ; 74 49 ; 0xf916b + mov al, ah ; 88 e0 ; 0xf916d ahci.c:931 + mov byte [bp-008h], ah ; 88 66 f8 ; 0xf916f + mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf9172 ahci.c:932 + xor dh, ah ; 30 e6 ; 0xf9175 ahci.c:937 + xor ah, ah ; 30 e4 ; 0xf9177 + mov bx, strict word 00034h ; bb 34 00 ; 0xf9179 + call 0a8dch ; e8 5d 17 ; 0xf917c + mov cl, al ; 88 c1 ; 0xf917f + test cl, cl ; 84 c9 ; 0xf9181 ahci.c:939 + je short 091b9h ; 74 34 ; 0xf9183 + mov bl, cl ; 88 cb ; 0xf9185 ahci.c:941 + xor bh, bh ; 30 ff ; 0xf9187 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9189 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf918c + mov byte [bp-00bh], bh ; 88 7e f5 ; 0xf918f + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9192 + mov byte [bp-012h], al ; 88 46 ee ; 0xf9195 + mov byte [bp-011h], bh ; 88 7e ef ; 0xf9198 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf919b + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf919e + call 0a8dch ; e8 38 17 ; 0xf91a1 + cmp AL, strict byte 012h ; 3c 12 ; 0xf91a4 ahci.c:945 + je short 091b9h ; 74 11 ; 0xf91a6 + mov bl, cl ; 88 cb ; 0xf91a8 ahci.c:949 + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf91aa + xor bh, bh ; 30 ff ; 0xf91ac + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf91ae + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf91b1 + jmp short 0917ch ; eb c6 ; 0xf91b4 ahci.c:950 + jmp near 09287h ; e9 ce 00 ; 0xf91b6 + test cl, cl ; 84 c9 ; 0xf91b9 ahci.c:952 + je short 091b6h ; 74 f9 ; 0xf91bb + add cl, 002h ; 80 c1 02 ; 0xf91bd ahci.c:959 + mov bl, cl ; 88 cb ; 0xf91c0 ahci.c:961 + xor bh, bh ; 30 ff ; 0xf91c2 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf91c4 + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf91c7 + mov byte [bp-00dh], bh ; 88 7e f3 ; 0xf91ca + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf91cd + mov byte [bp-014h], al ; 88 46 ec ; 0xf91d0 + mov byte [bp-013h], bh ; 88 7e ed ; 0xf91d3 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf91d6 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf91d9 + call 0a8dch ; e8 fd 16 ; 0xf91dc + cmp AL, strict byte 010h ; 3c 10 ; 0xf91df ahci.c:962 + jne short 091b6h ; 75 d3 ; 0xf91e1 + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf91e3 ahci.c:965 + mov bl, cl ; 88 cb ; 0xf91e7 ahci.c:967 + add bl, 002h ; 80 c3 02 ; 0xf91e9 + xor bh, bh ; 30 ff ; 0xf91ec + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf91ee + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf91f1 + call 0a903h ; e8 0c 17 ; 0xf91f4 + mov dx, ax ; 89 c2 ; 0xf91f7 + and ax, strict word 0000fh ; 25 0f 00 ; 0xf91f9 ahci.c:971 + sub ax, strict word 00004h ; 2d 04 00 ; 0xf91fc + cmp ax, strict word 0000bh ; 3d 0b 00 ; 0xf91ff + jnbe short 0923bh ; 77 37 ; 0xf9202 + push CS ; 0e ; 0xf9204 + pop ES ; 07 ; 0xf9205 + mov cx, strict word 00008h ; b9 08 00 ; 0xf9206 + mov di, 0913eh ; bf 3e 91 ; 0xf9209 + repne scasb ; f2 ae ; 0xf920c + sal cx, 1 ; d1 e1 ; 0xf920e + mov di, cx ; 89 cf ; 0xf9210 + mov ax, word [cs:di-06ebbh] ; 2e 8b 85 45 91 ; 0xf9212 + jmp ax ; ff e0 ; 0xf9217 + mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf9219 ahci.c:974 + jmp short 0923bh ; eb 1c ; 0xf921d ahci.c:975 + mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf921f ahci.c:977 + jmp short 0923bh ; eb 16 ; 0xf9223 ahci.c:978 + mov byte [bp-006h], 018h ; c6 46 fa 18 ; 0xf9225 ahci.c:980 + jmp short 0923bh ; eb 10 ; 0xf9229 ahci.c:981 + mov byte [bp-006h], 01ch ; c6 46 fa 1c ; 0xf922b ahci.c:983 + jmp short 0923bh ; eb 0a ; 0xf922f ahci.c:984 + mov byte [bp-006h], 020h ; c6 46 fa 20 ; 0xf9231 ahci.c:986 + jmp short 0923bh ; eb 04 ; 0xf9235 ahci.c:987 + mov byte [bp-006h], 024h ; c6 46 fa 24 ; 0xf9237 ahci.c:989 + mov CL, strict byte 004h ; b1 04 ; 0xf923b ahci.c:998 + mov si, dx ; 89 d6 ; 0xf923d + shr si, CL ; d3 ee ; 0xf923f + sal si, 1 ; d1 e6 ; 0xf9241 + sal si, 1 ; d1 e6 ; 0xf9243 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9245 ahci.c:1000 + test al, al ; 84 c0 ; 0xf9248 + je short 09287h ; 74 3b ; 0xf924a + mov bl, al ; 88 c3 ; 0xf924c ahci.c:1002 + xor bh, bh ; 30 ff ; 0xf924e + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9250 + mov byte [bp-010h], al ; 88 46 f0 ; 0xf9253 + mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf9256 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9259 + mov byte [bp-016h], al ; 88 46 ea ; 0xf925c + mov byte [bp-015h], bh ; 88 7e eb ; 0xf925f + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf9262 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9265 + call 0a928h ; e8 bd 16 ; 0xf9268 + test AL, strict byte 001h ; a8 01 ; 0xf926b ahci.c:1006 + je short 09287h ; 74 18 ; 0xf926d + and AL, strict byte 0f0h ; 24 f0 ; 0xf926f ahci.c:1009 + add si, ax ; 01 c6 ; 0xf9271 + mov cx, strict word 00007h ; b9 07 00 ; 0xf9273 ahci.c:1012 + mov bx, strict word 00004h ; bb 04 00 ; 0xf9276 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf9279 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf927c + call 0a967h ; e8 e5 16 ; 0xf927f + mov ax, si ; 89 f0 ; 0xf9282 ahci.c:1015 + call 08ff5h ; e8 6e fd ; 0xf9284 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9287 ahci.c:1029 + pop di ; 5f ; 0xf928a + pop si ; 5e ; 0xf928b + pop bp ; 5d ; 0xf928c + retn ; c3 ; 0xf928d + ; disGetNextSymbol 0xf928e LB 0x1bca -> off=0x0 cb=000000000000007b uValue=00000000000f7c8e 'virtio_reg_set_bar_offset_length' +virtio_reg_set_bar_offset_length: ; 0xf928e LB 0x7b + push bp ; 55 ; 0xf928e virtio.c:287 + mov bp, sp ; 89 e5 ; 0xf928f + push cx ; 51 ; 0xf9291 + push si ; 56 ; 0xf9292 + push di ; 57 ; 0xf9293 + mov si, ax ; 89 c6 ; 0xf9294 + mov di, dx ; 89 d7 ; 0xf9296 + mov cl, bl ; 88 d9 ; 0xf9298 virtio.c:289 + xor ch, ch ; 30 ed ; 0xf929a + mov es, dx ; 8e c2 ; 0xf929c + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf929e + add bl, 004h ; 80 c3 04 ; 0xf92a3 + xor bh, bh ; 30 ff ; 0xf92a6 + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf92a8 + xor dh, dh ; 30 f6 ; 0xf92ad + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf92af + xor ah, ah ; 30 e4 ; 0xf92b4 + call 0a985h ; e8 cc 16 ; 0xf92b6 + push word [bp+006h] ; ff 76 06 ; 0xf92b9 virtio.c:290 + push word [bp+004h] ; ff 76 04 ; 0xf92bc + mov es, di ; 8e c7 ; 0xf92bf + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf92c1 + add bl, 008h ; 80 c3 08 ; 0xf92c6 + xor bh, bh ; 30 ff ; 0xf92c9 + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf92cb + xor dh, dh ; 30 f6 ; 0xf92d0 + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf92d2 + xor ah, ah ; 30 e4 ; 0xf92d7 + call 0a9a3h ; e8 c7 16 ; 0xf92d9 + push word [bp+00ah] ; ff 76 0a ; 0xf92dc virtio.c:291 + push word [bp+008h] ; ff 76 08 ; 0xf92df + mov es, di ; 8e c7 ; 0xf92e2 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf92e4 + add bl, 00ch ; 80 c3 0c ; 0xf92e9 + xor bh, bh ; 30 ff ; 0xf92ec + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf92ee + xor dh, dh ; 30 f6 ; 0xf92f3 + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf92f5 + xor ah, ah ; 30 e4 ; 0xf92fa + call 0a9a3h ; e8 a4 16 ; 0xf92fc + lea sp, [bp-006h] ; 8d 66 fa ; 0xf92ff virtio.c:292 + pop di ; 5f ; 0xf9302 + pop si ; 5e ; 0xf9303 + pop cx ; 59 ; 0xf9304 + pop bp ; 5d ; 0xf9305 + retn 00008h ; c2 08 00 ; 0xf9306 + ; disGetNextSymbol 0xf9309 LB 0x1b4f -> off=0x0 cb=0000000000000033 uValue=00000000000f7d09 'virtio_reg_common_access_prepare' +virtio_reg_common_access_prepare: ; 0xf9309 LB 0x33 + push bp ; 55 ; 0xf9309 virtio.c:294 + mov bp, sp ; 89 e5 ; 0xf930a + push si ; 56 ; 0xf930c + mov si, ax ; 89 c6 ; 0xf930d + mov es, dx ; 8e c2 ; 0xf930f + push word [bp+006h] ; ff 76 06 ; 0xf9311 virtio.c:296 + push word [bp+004h] ; ff 76 04 ; 0xf9314 + xor dx, dx ; 31 d2 ; 0xf9317 + mov ax, word [es:si+060h] ; 26 8b 44 60 ; 0xf9319 + add ax, bx ; 01 d8 ; 0xf931d + mov bx, word [es:si+062h] ; 26 8b 5c 62 ; 0xf931f + adc bx, dx ; 11 d3 ; 0xf9323 + push bx ; 53 ; 0xf9325 + push ax ; 50 ; 0xf9326 + mov bl, byte [es:si+05ch] ; 26 8a 5c 5c ; 0xf9327 + xor bh, bh ; 30 ff ; 0xf932b + mov ax, si ; 89 f0 ; 0xf932d + mov dx, es ; 8c c2 ; 0xf932f + call 0928eh ; e8 5a ff ; 0xf9331 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf9334 virtio.c:300 + pop si ; 5e ; 0xf9337 + pop bp ; 5d ; 0xf9338 + retn 00004h ; c2 04 00 ; 0xf9339 + ; disGetNextSymbol 0xf933c LB 0x1b1c -> off=0x0 cb=0000000000000036 uValue=00000000000f7d3c 'virtio_reg_dev_access_prepare' +virtio_reg_dev_access_prepare: ; 0xf933c LB 0x36 + push bp ; 55 ; 0xf933c virtio.c:302 + mov bp, sp ; 89 e5 ; 0xf933d + push si ; 56 ; 0xf933f + mov si, ax ; 89 c6 ; 0xf9340 + mov es, dx ; 8e c2 ; 0xf9342 + push word [bp+006h] ; ff 76 06 ; 0xf9344 virtio.c:304 + push word [bp+004h] ; ff 76 04 ; 0xf9347 + xor dx, dx ; 31 d2 ; 0xf934a + mov ax, word [es:si+00084h] ; 26 8b 84 84 00 ; 0xf934c + add ax, bx ; 01 d8 ; 0xf9351 + mov bx, word [es:si+00086h] ; 26 8b 9c 86 00 ; 0xf9353 + adc bx, dx ; 11 d3 ; 0xf9358 + push bx ; 53 ; 0xf935a + push ax ; 50 ; 0xf935b + mov bl, byte [es:si+00080h] ; 26 8a 9c 80 00 ; 0xf935c + xor bh, bh ; 30 ff ; 0xf9361 + mov ax, si ; 89 f0 ; 0xf9363 + mov dx, es ; 8c c2 ; 0xf9365 + call 0928eh ; e8 24 ff ; 0xf9367 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf936a virtio.c:308 + pop si ; 5e ; 0xf936d + pop bp ; 5d ; 0xf936e + retn 00004h ; c2 04 00 ; 0xf936f + ; disGetNextSymbol 0xf9372 LB 0x1ae6 -> off=0x0 cb=0000000000000033 uValue=00000000000f7d72 'virtio_reg_notify_access_prepare' +virtio_reg_notify_access_prepare: ; 0xf9372 LB 0x33 + push bp ; 55 ; 0xf9372 virtio.c:310 + mov bp, sp ; 89 e5 ; 0xf9373 + push si ; 56 ; 0xf9375 + mov si, ax ; 89 c6 ; 0xf9376 + mov es, dx ; 8e c2 ; 0xf9378 + push word [bp+006h] ; ff 76 06 ; 0xf937a virtio.c:312 + push word [bp+004h] ; ff 76 04 ; 0xf937d + xor dx, dx ; 31 d2 ; 0xf9380 + mov ax, word [es:si+06ch] ; 26 8b 44 6c ; 0xf9382 + add ax, bx ; 01 d8 ; 0xf9386 + mov bx, word [es:si+06eh] ; 26 8b 5c 6e ; 0xf9388 + adc bx, dx ; 11 d3 ; 0xf938c + push bx ; 53 ; 0xf938e + push ax ; 50 ; 0xf938f + mov bl, byte [es:si+068h] ; 26 8a 5c 68 ; 0xf9390 + xor bh, bh ; 30 ff ; 0xf9394 + mov ax, si ; 89 f0 ; 0xf9396 + mov dx, es ; 8c c2 ; 0xf9398 + call 0928eh ; e8 f1 fe ; 0xf939a + lea sp, [bp-002h] ; 8d 66 fe ; 0xf939d virtio.c:316 + pop si ; 5e ; 0xf93a0 + pop bp ; 5d ; 0xf93a1 + retn 00004h ; c2 04 00 ; 0xf93a2 + ; disGetNextSymbol 0xf93a5 LB 0x1ab3 -> off=0x0 cb=0000000000000021 uValue=00000000000f7da5 'virtio_reg_isr_prepare' +virtio_reg_isr_prepare: ; 0xf93a5 LB 0x21 + push bp ; 55 ; 0xf93a5 virtio.c:318 + mov bp, sp ; 89 e5 ; 0xf93a6 + push si ; 56 ; 0xf93a8 + mov si, ax ; 89 c6 ; 0xf93a9 + mov es, dx ; 8e c2 ; 0xf93ab + push cx ; 51 ; 0xf93ad virtio.c:320 + push bx ; 53 ; 0xf93ae + push word [es:si+07ah] ; 26 ff 74 7a ; 0xf93af + push word [es:si+078h] ; 26 ff 74 78 ; 0xf93b3 + mov bl, byte [es:si+074h] ; 26 8a 5c 74 ; 0xf93b7 + xor bh, bh ; 30 ff ; 0xf93bb + call 0928eh ; e8 ce fe ; 0xf93bd + lea sp, [bp-002h] ; 8d 66 fe ; 0xf93c0 virtio.c:324 + pop si ; 5e ; 0xf93c3 + pop bp ; 5d ; 0xf93c4 + retn ; c3 ; 0xf93c5 + ; disGetNextSymbol 0xf93c6 LB 0x1a92 -> off=0x0 cb=0000000000000039 uValue=00000000000f7dc6 'virtio_reg_common_read_u8' +virtio_reg_common_read_u8: ; 0xf93c6 LB 0x39 + push bp ; 55 ; 0xf93c6 virtio.c:326 + mov bp, sp ; 89 e5 ; 0xf93c7 + push cx ; 51 ; 0xf93c9 + push si ; 56 ; 0xf93ca + mov si, ax ; 89 c6 ; 0xf93cb + mov cx, dx ; 89 d1 ; 0xf93cd + xor ax, ax ; 31 c0 ; 0xf93cf virtio.c:328 + push ax ; 50 ; 0xf93d1 + mov ax, strict word 00001h ; b8 01 00 ; 0xf93d2 + push ax ; 50 ; 0xf93d5 + mov ax, si ; 89 f0 ; 0xf93d6 + call 09309h ; e8 2e ff ; 0xf93d8 + mov es, cx ; 8e c1 ; 0xf93db virtio.c:329 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf93dd + add bl, 010h ; 80 c3 10 ; 0xf93e2 + xor bh, bh ; 30 ff ; 0xf93e5 + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf93e7 + xor dh, dh ; 30 f6 ; 0xf93ec + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf93ee + xor ah, ah ; 30 e4 ; 0xf93f3 + call 0a8dch ; e8 e4 14 ; 0xf93f5 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf93f8 virtio.c:330 + pop si ; 5e ; 0xf93fb + pop cx ; 59 ; 0xf93fc + pop bp ; 5d ; 0xf93fd + retn ; c3 ; 0xf93fe + ; disGetNextSymbol 0xf93ff LB 0x1a59 -> off=0x0 cb=000000000000003b uValue=00000000000f7dff 'virtio_reg_common_write_u8' +virtio_reg_common_write_u8: ; 0xf93ff LB 0x3b + push bp ; 55 ; 0xf93ff virtio.c:332 + mov bp, sp ; 89 e5 ; 0xf9400 + push si ; 56 ; 0xf9402 + push di ; 57 ; 0xf9403 + mov si, ax ; 89 c6 ; 0xf9404 + mov di, dx ; 89 d7 ; 0xf9406 + xor ax, ax ; 31 c0 ; 0xf9408 virtio.c:334 + push ax ; 50 ; 0xf940a + mov ax, strict word 00001h ; b8 01 00 ; 0xf940b + push ax ; 50 ; 0xf940e + mov ax, si ; 89 f0 ; 0xf940f + call 09309h ; e8 f5 fe ; 0xf9411 + xor ch, ch ; 30 ed ; 0xf9414 virtio.c:335 + mov es, di ; 8e c7 ; 0xf9416 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf9418 + add bl, 010h ; 80 c3 10 ; 0xf941d + xor bh, bh ; 30 ff ; 0xf9420 + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf9422 + xor dh, dh ; 30 f6 ; 0xf9427 + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf9429 + xor ah, ah ; 30 e4 ; 0xf942e + call 0a985h ; e8 52 15 ; 0xf9430 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9433 virtio.c:336 + pop di ; 5f ; 0xf9436 + pop si ; 5e ; 0xf9437 + pop bp ; 5d ; 0xf9438 + retn ; c3 ; 0xf9439 + ; disGetNextSymbol 0xf943a LB 0x1a1e -> off=0x0 cb=0000000000000039 uValue=00000000000f7e3a 'virtio_reg_common_read_u16' +virtio_reg_common_read_u16: ; 0xf943a LB 0x39 + push bp ; 55 ; 0xf943a virtio.c:338 + mov bp, sp ; 89 e5 ; 0xf943b + push cx ; 51 ; 0xf943d + push si ; 56 ; 0xf943e + mov si, ax ; 89 c6 ; 0xf943f + mov cx, dx ; 89 d1 ; 0xf9441 + xor ax, ax ; 31 c0 ; 0xf9443 virtio.c:340 + push ax ; 50 ; 0xf9445 + mov ax, strict word 00002h ; b8 02 00 ; 0xf9446 + push ax ; 50 ; 0xf9449 + mov ax, si ; 89 f0 ; 0xf944a + call 09309h ; e8 ba fe ; 0xf944c + mov es, cx ; 8e c1 ; 0xf944f virtio.c:341 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf9451 + add bl, 010h ; 80 c3 10 ; 0xf9456 + xor bh, bh ; 30 ff ; 0xf9459 + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf945b + xor dh, dh ; 30 f6 ; 0xf9460 + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf9462 + xor ah, ah ; 30 e4 ; 0xf9467 + call 0a903h ; e8 97 14 ; 0xf9469 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf946c virtio.c:342 + pop si ; 5e ; 0xf946f + pop cx ; 59 ; 0xf9470 + pop bp ; 5d ; 0xf9471 + retn ; c3 ; 0xf9472 + ; disGetNextSymbol 0xf9473 LB 0x19e5 -> off=0x0 cb=0000000000000039 uValue=00000000000f7e73 'virtio_reg_common_write_u16' +virtio_reg_common_write_u16: ; 0xf9473 LB 0x39 + push bp ; 55 ; 0xf9473 virtio.c:344 + mov bp, sp ; 89 e5 ; 0xf9474 + push si ; 56 ; 0xf9476 + push di ; 57 ; 0xf9477 + mov si, ax ; 89 c6 ; 0xf9478 + mov di, dx ; 89 d7 ; 0xf947a + xor ax, ax ; 31 c0 ; 0xf947c virtio.c:346 + push ax ; 50 ; 0xf947e + mov ax, strict word 00002h ; b8 02 00 ; 0xf947f + push ax ; 50 ; 0xf9482 + mov ax, si ; 89 f0 ; 0xf9483 + call 09309h ; e8 81 fe ; 0xf9485 + mov es, di ; 8e c7 ; 0xf9488 virtio.c:347 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf948a + add bl, 010h ; 80 c3 10 ; 0xf948f + xor bh, bh ; 30 ff ; 0xf9492 + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf9494 + xor dh, dh ; 30 f6 ; 0xf9499 + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf949b + xor ah, ah ; 30 e4 ; 0xf94a0 + call 0a967h ; e8 c2 14 ; 0xf94a2 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf94a5 virtio.c:348 + pop di ; 5f ; 0xf94a8 + pop si ; 5e ; 0xf94a9 + pop bp ; 5d ; 0xf94aa + retn ; c3 ; 0xf94ab + ; disGetNextSymbol 0xf94ac LB 0x19ac -> off=0x0 cb=0000000000000041 uValue=00000000000f7eac 'virtio_reg_common_write_u32' +virtio_reg_common_write_u32: ; 0xf94ac LB 0x41 + push bp ; 55 ; 0xf94ac virtio.c:350 + mov bp, sp ; 89 e5 ; 0xf94ad + push cx ; 51 ; 0xf94af + push si ; 56 ; 0xf94b0 + mov si, ax ; 89 c6 ; 0xf94b1 + mov cx, dx ; 89 d1 ; 0xf94b3 + xor ax, ax ; 31 c0 ; 0xf94b5 virtio.c:352 + push ax ; 50 ; 0xf94b7 + mov ax, strict word 00004h ; b8 04 00 ; 0xf94b8 + push ax ; 50 ; 0xf94bb + mov ax, si ; 89 f0 ; 0xf94bc + call 09309h ; e8 48 fe ; 0xf94be + push word [bp+006h] ; ff 76 06 ; 0xf94c1 virtio.c:353 + push word [bp+004h] ; ff 76 04 ; 0xf94c4 + mov es, cx ; 8e c1 ; 0xf94c7 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf94c9 + add bl, 010h ; 80 c3 10 ; 0xf94ce + xor bh, bh ; 30 ff ; 0xf94d1 + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf94d3 + xor dh, dh ; 30 f6 ; 0xf94d8 + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf94da + xor ah, ah ; 30 e4 ; 0xf94df + call 0a9a3h ; e8 bf 14 ; 0xf94e1 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf94e4 virtio.c:354 + pop si ; 5e ; 0xf94e7 + pop cx ; 59 ; 0xf94e8 + pop bp ; 5d ; 0xf94e9 + retn 00004h ; c2 04 00 ; 0xf94ea + ; disGetNextSymbol 0xf94ed LB 0x196b -> off=0x0 cb=0000000000000039 uValue=00000000000f7eed 'virtio_reg_dev_cfg_read_u32' +virtio_reg_dev_cfg_read_u32: ; 0xf94ed LB 0x39 + push bp ; 55 ; 0xf94ed virtio.c:356 + mov bp, sp ; 89 e5 ; 0xf94ee + push cx ; 51 ; 0xf94f0 + push si ; 56 ; 0xf94f1 + mov si, ax ; 89 c6 ; 0xf94f2 + mov cx, dx ; 89 d1 ; 0xf94f4 + xor ax, ax ; 31 c0 ; 0xf94f6 virtio.c:358 + push ax ; 50 ; 0xf94f8 + mov ax, strict word 00004h ; b8 04 00 ; 0xf94f9 + push ax ; 50 ; 0xf94fc + mov ax, si ; 89 f0 ; 0xf94fd + call 0933ch ; e8 3a fe ; 0xf94ff + mov es, cx ; 8e c1 ; 0xf9502 virtio.c:359 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf9504 + add bl, 010h ; 80 c3 10 ; 0xf9509 + xor bh, bh ; 30 ff ; 0xf950c + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf950e + xor dh, dh ; 30 f6 ; 0xf9513 + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf9515 + xor ah, ah ; 30 e4 ; 0xf951a + call 0a928h ; e8 09 14 ; 0xf951c + lea sp, [bp-004h] ; 8d 66 fc ; 0xf951f virtio.c:360 + pop si ; 5e ; 0xf9522 + pop cx ; 59 ; 0xf9523 + pop bp ; 5d ; 0xf9524 + retn ; c3 ; 0xf9525 + ; disGetNextSymbol 0xf9526 LB 0x1932 -> off=0x0 cb=0000000000000041 uValue=00000000000f7f26 'virtio_reg_dev_cfg_write_u32' +virtio_reg_dev_cfg_write_u32: ; 0xf9526 LB 0x41 + push bp ; 55 ; 0xf9526 virtio.c:362 + mov bp, sp ; 89 e5 ; 0xf9527 + push cx ; 51 ; 0xf9529 + push si ; 56 ; 0xf952a + mov si, ax ; 89 c6 ; 0xf952b + mov cx, dx ; 89 d1 ; 0xf952d + xor ax, ax ; 31 c0 ; 0xf952f virtio.c:364 + push ax ; 50 ; 0xf9531 + mov ax, strict word 00004h ; b8 04 00 ; 0xf9532 + push ax ; 50 ; 0xf9535 + mov ax, si ; 89 f0 ; 0xf9536 + call 0933ch ; e8 01 fe ; 0xf9538 + push word [bp+006h] ; ff 76 06 ; 0xf953b virtio.c:365 + push word [bp+004h] ; ff 76 04 ; 0xf953e + mov es, cx ; 8e c1 ; 0xf9541 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf9543 + add bl, 010h ; 80 c3 10 ; 0xf9548 + xor bh, bh ; 30 ff ; 0xf954b + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf954d + xor dh, dh ; 30 f6 ; 0xf9552 + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf9554 + xor ah, ah ; 30 e4 ; 0xf9559 + call 0a9a3h ; e8 45 14 ; 0xf955b + lea sp, [bp-004h] ; 8d 66 fc ; 0xf955e virtio.c:366 + pop si ; 5e ; 0xf9561 + pop cx ; 59 ; 0xf9562 + pop bp ; 5d ; 0xf9563 + retn 00004h ; c2 04 00 ; 0xf9564 + ; disGetNextSymbol 0xf9567 LB 0x18f1 -> off=0x0 cb=0000000000000039 uValue=00000000000f7f67 'virtio_reg_notify_write_u16' +virtio_reg_notify_write_u16: ; 0xf9567 LB 0x39 + push bp ; 55 ; 0xf9567 virtio.c:368 + mov bp, sp ; 89 e5 ; 0xf9568 + push si ; 56 ; 0xf956a + push di ; 57 ; 0xf956b + mov si, ax ; 89 c6 ; 0xf956c + mov di, dx ; 89 d7 ; 0xf956e + xor ax, ax ; 31 c0 ; 0xf9570 virtio.c:370 + push ax ; 50 ; 0xf9572 + mov ax, strict word 00002h ; b8 02 00 ; 0xf9573 + push ax ; 50 ; 0xf9576 + mov ax, si ; 89 f0 ; 0xf9577 + call 09372h ; e8 f6 fd ; 0xf9579 + mov es, di ; 8e c7 ; 0xf957c virtio.c:371 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf957e + add bl, 010h ; 80 c3 10 ; 0xf9583 + xor bh, bh ; 30 ff ; 0xf9586 + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf9588 + xor dh, dh ; 30 f6 ; 0xf958d + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf958f + xor ah, ah ; 30 e4 ; 0xf9594 + call 0a967h ; e8 ce 13 ; 0xf9596 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9599 virtio.c:372 + pop di ; 5f ; 0xf959c + pop si ; 5e ; 0xf959d + pop bp ; 5d ; 0xf959e + retn ; c3 ; 0xf959f + ; disGetNextSymbol 0xf95a0 LB 0x18b8 -> off=0x0 cb=0000000000000039 uValue=00000000000f7fa0 'virtio_reg_isr_read_u8' +virtio_reg_isr_read_u8: ; 0xf95a0 LB 0x39 + push bp ; 55 ; 0xf95a0 virtio.c:374 + mov bp, sp ; 89 e5 ; 0xf95a1 + push bx ; 53 ; 0xf95a3 + push cx ; 51 ; 0xf95a4 + push si ; 56 ; 0xf95a5 + push di ; 57 ; 0xf95a6 + mov si, ax ; 89 c6 ; 0xf95a7 + mov di, dx ; 89 d7 ; 0xf95a9 + mov bx, strict word 00001h ; bb 01 00 ; 0xf95ab virtio.c:376 + xor cx, cx ; 31 c9 ; 0xf95ae + call 093a5h ; e8 f2 fd ; 0xf95b0 + mov es, di ; 8e c7 ; 0xf95b3 virtio.c:377 + mov bl, byte [es:si+0008ch] ; 26 8a 9c 8c 00 ; 0xf95b5 + add bl, 010h ; 80 c3 10 ; 0xf95ba + xor bh, bh ; 30 ff ; 0xf95bd + mov dl, byte [es:si+00093h] ; 26 8a 94 93 00 ; 0xf95bf + xor dh, dh ; 30 f6 ; 0xf95c4 + mov al, byte [es:si+00092h] ; 26 8a 84 92 00 ; 0xf95c6 + xor ah, ah ; 30 e4 ; 0xf95cb + call 0a8dch ; e8 0c 13 ; 0xf95cd + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf95d0 virtio.c:378 + pop di ; 5f ; 0xf95d3 + pop si ; 5e ; 0xf95d4 + pop cx ; 59 ; 0xf95d5 + pop bx ; 5b ; 0xf95d6 + pop bp ; 5d ; 0xf95d7 + retn ; c3 ; 0xf95d8 + ; disGetNextSymbol 0xf95d9 LB 0x187f -> off=0x0 cb=000000000000001e uValue=00000000000f7fd9 'virtio_addr_to_phys' +virtio_addr_to_phys: ; 0xf95d9 LB 0x1e + push bx ; 53 ; 0xf95d9 virtio.c:383 + push cx ; 51 ; 0xf95da + push bp ; 55 ; 0xf95db + mov bp, sp ; 89 e5 ; 0xf95dc + mov bx, ax ; 89 c3 ; 0xf95de + mov ax, dx ; 89 d0 ; 0xf95e0 + xor dx, dx ; 31 d2 ; 0xf95e2 virtio.c:385 + mov cx, strict word 00004h ; b9 04 00 ; 0xf95e4 + sal ax, 1 ; d1 e0 ; 0xf95e7 + rcl dx, 1 ; d1 d2 ; 0xf95e9 + loop 095e7h ; e2 fa ; 0xf95eb + xor cx, cx ; 31 c9 ; 0xf95ed + add ax, bx ; 01 d8 ; 0xf95ef + adc dx, cx ; 11 ca ; 0xf95f1 + pop bp ; 5d ; 0xf95f3 virtio.c:386 + pop cx ; 59 ; 0xf95f4 + pop bx ; 5b ; 0xf95f5 + retn ; c3 ; 0xf95f6 + ; disGetNextSymbol 0xf95f7 LB 0x1861 -> off=0x0 cb=0000000000000172 uValue=00000000000f7ff7 'virtio_scsi_cmd_data_out' +virtio_scsi_cmd_data_out: ; 0xf95f7 LB 0x172 + push bp ; 55 ; 0xf95f7 virtio.c:388 + mov bp, sp ; 89 e5 ; 0xf95f8 + push cx ; 51 ; 0xf95fa + push si ; 56 ; 0xf95fb + push di ; 57 ; 0xf95fc + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf95fd + mov si, ax ; 89 c6 ; 0xf9600 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf9602 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9605 + mov di, ax ; 89 c7 ; 0xf9608 virtio.c:391 + mov es, dx ; 8e c2 ; 0xf960a + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf960c + mov ax, word [es:si+03eh] ; 26 8b 44 3e ; 0xf960f + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf9613 + lea ax, [si+00094h] ; 8d 84 94 00 ; 0xf9616 virtio.c:394 + mov word [bp-012h], ax ; 89 46 ee ; 0xf961a + mov cx, strict word 00024h ; b9 24 00 ; 0xf961d + xor bx, bx ; 31 db ; 0xf9620 + call 0ab30h ; e8 0b 15 ; 0xf9622 + lea ax, [si+000b8h] ; 8d 84 b8 00 ; 0xf9625 virtio.c:395 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf9629 + mov cx, strict word 0002ch ; b9 2c 00 ; 0xf962c + xor bx, bx ; 31 db ; 0xf962f + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9631 + call 0ab30h ; e8 f9 14 ; 0xf9634 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9637 virtio.c:397 + mov byte [es:si+00094h], 001h ; 26 c6 84 94 00 01 ; 0xf963a + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9640 virtio.c:398 + mov byte [es:si+00095h], al ; 26 88 84 95 00 ; 0xf9643 + mov word [es:si+00096h], strict word 00000h ; 26 c7 84 96 00 00 00 ; 0xf9648 virtio.c:399 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf964f virtio.c:401 + xor ah, ah ; 30 e4 ; 0xf9652 + push ax ; 50 ; 0xf9654 + lea ax, [si+000a7h] ; 8d 84 a7 00 ; 0xf9655 + mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9659 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf965c + mov dx, es ; 8c c2 ; 0xf965f + call 0ab40h ; e8 dc 14 ; 0xf9661 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf9664 virtio.c:404 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9667 + call 095d9h ; e8 6c ff ; 0xf966a + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf966d + mov word [es:si], ax ; 26 89 04 ; 0xf9670 + mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf9673 + mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf9677 virtio.c:405 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf967d + mov word [es:si+008h], strict word 00024h ; 26 c7 44 08 24 00 ; 0xf9683 virtio.c:406 + mov word [es:si+00ah], strict word 00000h ; 26 c7 44 0a 00 00 ; 0xf9689 + mov word [es:si+00ch], strict word 00001h ; 26 c7 44 0c 01 00 ; 0xf968f virtio.c:407 + mov word [es:si+00eh], strict word 00001h ; 26 c7 44 0e 01 00 ; 0xf9695 virtio.c:408 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf969b virtio.c:410 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf969e + call 095d9h ; e8 35 ff ; 0xf96a1 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf96a4 + mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf96a7 + mov word [es:si+012h], dx ; 26 89 54 12 ; 0xf96ab + mov word [es:si+014h], strict word 00000h ; 26 c7 44 14 00 00 ; 0xf96af virtio.c:411 + mov word [es:si+016h], strict word 00000h ; 26 c7 44 16 00 00 ; 0xf96b5 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf96bb virtio.c:412 + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf96be + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf96c2 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf96c5 + mov word [es:si+01ch], strict word 00001h ; 26 c7 44 1c 01 00 ; 0xf96c9 virtio.c:413 + mov word [es:si+01eh], strict word 00002h ; 26 c7 44 1e 02 00 ; 0xf96cf virtio.c:414 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf96d5 virtio.c:416 + mov dx, es ; 8c c2 ; 0xf96d8 + call 095d9h ; e8 fc fe ; 0xf96da + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf96dd + mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf96e0 + mov word [es:si+022h], dx ; 26 89 54 22 ; 0xf96e4 + mov word [es:si+024h], strict word 00000h ; 26 c7 44 24 00 00 ; 0xf96e8 virtio.c:417 + mov word [es:si+026h], strict word 00000h ; 26 c7 44 26 00 00 ; 0xf96ee + mov word [es:si+028h], strict word 0002ch ; 26 c7 44 28 2c 00 ; 0xf96f4 virtio.c:418 + mov word [es:si+02ah], strict word 00000h ; 26 c7 44 2a 00 00 ; 0xf96fa + mov word [es:si+02ch], strict word 00002h ; 26 c7 44 2c 02 00 ; 0xf9700 virtio.c:419 + mov word [es:si+02eh], strict word 00000h ; 26 c7 44 2e 00 00 ; 0xf9706 virtio.c:420 + mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf970c virtio.c:423 + xor dx, dx ; 31 d2 ; 0xf9710 + mov bx, strict word 00003h ; bb 03 00 ; 0xf9712 + div bx ; f7 f3 ; 0xf9715 + sal dx, 1 ; d1 e2 ; 0xf9717 + mov bx, si ; 89 f3 ; 0xf9719 + add bx, dx ; 01 d3 ; 0xf971b + mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf971d + mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf9723 virtio.c:424 + inc word [es:si+032h] ; 26 ff 44 32 ; 0xf9727 + mov bx, word [es:si+058h] ; 26 8b 5c 58 ; 0xf972b virtio.c:428 + mov cx, strict word 00002h ; b9 02 00 ; 0xf972f + mov ax, si ; 89 f0 ; 0xf9732 + mov dx, es ; 8c c2 ; 0xf9734 + call 09567h ; e8 2e fe ; 0xf9736 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf9739 virtio.c:431 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf973c + cmp ax, word [es:di+03eh] ; 26 3b 45 3e ; 0xf973f + je short 09739h ; 74 f4 ; 0xf9743 + mov ax, di ; 89 f8 ; 0xf9745 virtio.c:436 + mov dx, es ; 8c c2 ; 0xf9747 + call 095a0h ; e8 54 fe ; 0xf9749 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf974c virtio.c:438 + mov al, byte [es:di+000c3h] ; 26 8a 85 c3 00 ; 0xf974f + test al, al ; 84 c0 ; 0xf9754 + je short 0975dh ; 74 05 ; 0xf9756 + mov ax, strict word 00004h ; b8 04 00 ; 0xf9758 virtio.c:439 + jmp short 0975fh ; eb 02 ; 0xf975b + xor ah, ah ; 30 e4 ; 0xf975d virtio.c:441 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf975f virtio.c:442 + pop di ; 5f ; 0xf9762 + pop si ; 5e ; 0xf9763 + pop cx ; 59 ; 0xf9764 + pop bp ; 5d ; 0xf9765 + retn 0000eh ; c2 0e 00 ; 0xf9766 + ; disGetNextSymbol 0xf9769 LB 0x16ef -> off=0x0 cb=0000000000000172 uValue=00000000000f8169 'virtio_scsi_cmd_data_in' +virtio_scsi_cmd_data_in: ; 0xf9769 LB 0x172 + push bp ; 55 ; 0xf9769 virtio.c:444 + mov bp, sp ; 89 e5 ; 0xf976a + push cx ; 51 ; 0xf976c + push si ; 56 ; 0xf976d + push di ; 57 ; 0xf976e + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf976f + mov si, ax ; 89 c6 ; 0xf9772 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf9774 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9777 + mov di, ax ; 89 c7 ; 0xf977a virtio.c:447 + mov es, dx ; 8e c2 ; 0xf977c + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf977e + mov ax, word [es:si+03eh] ; 26 8b 44 3e ; 0xf9781 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf9785 + lea ax, [si+00094h] ; 8d 84 94 00 ; 0xf9788 virtio.c:450 + mov word [bp-012h], ax ; 89 46 ee ; 0xf978c + mov cx, strict word 00024h ; b9 24 00 ; 0xf978f + xor bx, bx ; 31 db ; 0xf9792 + call 0ab30h ; e8 99 13 ; 0xf9794 + lea ax, [si+000b8h] ; 8d 84 b8 00 ; 0xf9797 virtio.c:451 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf979b + mov cx, strict word 0002ch ; b9 2c 00 ; 0xf979e + xor bx, bx ; 31 db ; 0xf97a1 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf97a3 + call 0ab30h ; e8 87 13 ; 0xf97a6 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf97a9 virtio.c:453 + mov byte [es:si+00094h], 001h ; 26 c6 84 94 00 01 ; 0xf97ac + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf97b2 virtio.c:454 + mov byte [es:si+00095h], al ; 26 88 84 95 00 ; 0xf97b5 + mov word [es:si+00096h], strict word 00000h ; 26 c7 84 96 00 00 00 ; 0xf97ba virtio.c:455 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf97c1 virtio.c:457 + xor ah, ah ; 30 e4 ; 0xf97c4 + push ax ; 50 ; 0xf97c6 + lea ax, [si+000a7h] ; 8d 84 a7 00 ; 0xf97c7 + mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf97cb + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf97ce + mov dx, es ; 8c c2 ; 0xf97d1 + call 0ab40h ; e8 6a 13 ; 0xf97d3 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf97d6 virtio.c:460 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf97d9 + call 095d9h ; e8 fa fd ; 0xf97dc + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf97df + mov word [es:si], ax ; 26 89 04 ; 0xf97e2 + mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf97e5 + mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf97e9 virtio.c:461 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf97ef + mov word [es:si+008h], strict word 00024h ; 26 c7 44 08 24 00 ; 0xf97f5 virtio.c:462 + mov word [es:si+00ah], strict word 00000h ; 26 c7 44 0a 00 00 ; 0xf97fb + mov word [es:si+00ch], strict word 00001h ; 26 c7 44 0c 01 00 ; 0xf9801 virtio.c:463 + mov word [es:si+00eh], strict word 00001h ; 26 c7 44 0e 01 00 ; 0xf9807 virtio.c:464 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf980d virtio.c:467 + mov dx, es ; 8c c2 ; 0xf9810 + call 095d9h ; e8 c4 fd ; 0xf9812 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf9815 + mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf9818 + mov word [es:si+012h], dx ; 26 89 54 12 ; 0xf981c + mov word [es:si+014h], strict word 00000h ; 26 c7 44 14 00 00 ; 0xf9820 virtio.c:468 + mov word [es:si+016h], strict word 00000h ; 26 c7 44 16 00 00 ; 0xf9826 + mov word [es:si+018h], strict word 0002ch ; 26 c7 44 18 2c 00 ; 0xf982c virtio.c:469 + mov word [es:si+01ah], strict word 00000h ; 26 c7 44 1a 00 00 ; 0xf9832 + mov word [es:si+01ch], strict word 00003h ; 26 c7 44 1c 03 00 ; 0xf9838 virtio.c:470 + mov word [es:si+01eh], strict word 00002h ; 26 c7 44 1e 02 00 ; 0xf983e virtio.c:471 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9844 virtio.c:473 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9847 + call 095d9h ; e8 8c fd ; 0xf984a + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf984d + mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf9850 + mov word [es:si+022h], dx ; 26 89 54 22 ; 0xf9854 + mov word [es:si+024h], strict word 00000h ; 26 c7 44 24 00 00 ; 0xf9858 virtio.c:474 + mov word [es:si+026h], strict word 00000h ; 26 c7 44 26 00 00 ; 0xf985e + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9864 virtio.c:475 + mov word [es:si+028h], ax ; 26 89 44 28 ; 0xf9867 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf986b + mov word [es:si+02ah], ax ; 26 89 44 2a ; 0xf986e + mov word [es:si+02ch], strict word 00002h ; 26 c7 44 2c 02 00 ; 0xf9872 virtio.c:476 + mov word [es:si+02eh], strict word 00000h ; 26 c7 44 2e 00 00 ; 0xf9878 virtio.c:477 + mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf987e virtio.c:481 + xor dx, dx ; 31 d2 ; 0xf9882 + mov bx, strict word 00003h ; bb 03 00 ; 0xf9884 + div bx ; f7 f3 ; 0xf9887 + sal dx, 1 ; d1 e2 ; 0xf9889 + mov bx, si ; 89 f3 ; 0xf988b + add bx, dx ; 01 d3 ; 0xf988d + mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf988f + mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf9895 virtio.c:482 + inc word [es:si+032h] ; 26 ff 44 32 ; 0xf9899 + mov bx, word [es:si+058h] ; 26 8b 5c 58 ; 0xf989d virtio.c:486 + mov cx, strict word 00002h ; b9 02 00 ; 0xf98a1 + mov ax, si ; 89 f0 ; 0xf98a4 + mov dx, es ; 8c c2 ; 0xf98a6 + call 09567h ; e8 bc fc ; 0xf98a8 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf98ab virtio.c:489 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf98ae + cmp ax, word [es:di+03eh] ; 26 3b 45 3e ; 0xf98b1 + je short 098abh ; 74 f4 ; 0xf98b5 + mov ax, di ; 89 f8 ; 0xf98b7 virtio.c:494 + mov dx, es ; 8c c2 ; 0xf98b9 + call 095a0h ; e8 e2 fc ; 0xf98bb + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf98be virtio.c:496 + mov al, byte [es:di+000c3h] ; 26 8a 85 c3 00 ; 0xf98c1 + test al, al ; 84 c0 ; 0xf98c6 + je short 098cfh ; 74 05 ; 0xf98c8 + mov ax, strict word 00004h ; b8 04 00 ; 0xf98ca virtio.c:497 + jmp short 098d1h ; eb 02 ; 0xf98cd + xor ah, ah ; 30 e4 ; 0xf98cf virtio.c:499 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf98d1 virtio.c:500 + pop di ; 5f ; 0xf98d4 + pop si ; 5e ; 0xf98d5 + pop cx ; 59 ; 0xf98d6 + pop bp ; 5d ; 0xf98d7 + retn 0000eh ; c2 0e 00 ; 0xf98d8 + ; disGetNextSymbol 0xf98db LB 0x157d -> off=0x0 cb=0000000000000340 uValue=00000000000f82db 'virtio_scsi_hba_init' +virtio_scsi_hba_init: ; 0xf98db LB 0x340 + push bp ; 55 ; 0xf98db virtio.c:505 + mov bp, sp ; 89 e5 ; 0xf98dc + push si ; 56 ; 0xf98de + push di ; 57 ; 0xf98df + sub sp, strict byte 00014h ; 83 ec 14 ; 0xf98e0 + mov si, ax ; 89 c6 ; 0xf98e3 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf98e5 + mov ch, bl ; 88 dd ; 0xf98e8 + mov byte [bp-006h], cl ; 88 4e fa ; 0xf98ea + mov es, dx ; 8e c2 ; 0xf98ed virtio.c:510 + mov byte [es:si+00092h], bl ; 26 88 9c 92 00 ; 0xf98ef + mov byte [es:si+00093h], cl ; 26 88 8c 93 00 ; 0xf98f4 virtio.c:511 + mov cl, byte [bp+004h] ; 8a 4e 04 ; 0xf98f9 virtio.c:517 + test cl, cl ; 84 c9 ; 0xf98fc virtio.c:518 + je short 0995bh ; 74 5b ; 0xf98fe + mov bl, cl ; 88 cb ; 0xf9900 virtio.c:520 + xor bh, bh ; 30 ff ; 0xf9902 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9904 + mov byte [bp-012h], al ; 88 46 ee ; 0xf9907 + mov byte [bp-011h], bh ; 88 7e ef ; 0xf990a + mov byte [bp-014h], ch ; 88 6e ec ; 0xf990d + mov byte [bp-013h], bh ; 88 7e ed ; 0xf9910 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf9913 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9916 + call 0a8dch ; e8 c0 0f ; 0xf9919 + mov word [bp-016h], ax ; 89 46 ea ; 0xf991c + mov bl, cl ; 88 cb ; 0xf991f virtio.c:521 + add bl, 002h ; 80 c3 02 ; 0xf9921 + xor bh, bh ; 30 ff ; 0xf9924 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf9926 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9929 + call 0a8dch ; e8 ad 0f ; 0xf992c + cmp byte [bp-016h], 009h ; 80 7e ea 09 ; 0xf992f virtio.c:525 + jne short 09958h ; 75 23 ; 0xf9933 + cmp AL, strict byte 010h ; 3c 10 ; 0xf9935 + jc short 09958h ; 72 1f ; 0xf9937 + mov bl, cl ; 88 cb ; 0xf9939 virtio.c:529 + add bl, 003h ; 80 c3 03 ; 0xf993b + xor bh, bh ; 30 ff ; 0xf993e + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf9940 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9943 + call 0a8dch ; e8 93 0f ; 0xf9946 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf9949 + cmp AL, strict byte 005h ; 3c 05 ; 0xf994c virtio.c:532 + je short 0995eh ; 74 0e ; 0xf994e + cmp AL, strict byte 001h ; 3c 01 ; 0xf9950 + jc short 09958h ; 72 04 ; 0xf9952 + cmp AL, strict byte 004h ; 3c 04 ; 0xf9954 + jbe short 09961h ; 76 09 ; 0xf9956 + jmp near 099ffh ; e9 a4 00 ; 0xf9958 + jmp near 09a16h ; e9 b8 00 ; 0xf995b + jmp near 099f7h ; e9 96 00 ; 0xf995e + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9961 virtio.c:539 + xor ah, ah ; 30 e4 ; 0xf9964 + dec ax ; 48 ; 0xf9966 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf9967 + imul dx ; f7 ea ; 0xf996a + lea di, [si+05ch] ; 8d 7c 5c ; 0xf996c + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf996f + mov word [bp-018h], dx ; 89 56 e8 ; 0xf9972 + add di, ax ; 01 c7 ; 0xf9975 + mov bl, cl ; 88 cb ; 0xf9977 virtio.c:541 + add bl, 004h ; 80 c3 04 ; 0xf9979 + xor bh, bh ; 30 ff ; 0xf997c + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf997e + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf9981 + mov byte [bp-00dh], bh ; 88 7e f3 ; 0xf9984 + mov byte [bp-010h], ch ; 88 6e f0 ; 0xf9987 + mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf998a + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf998d + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf9990 + call 0a8dch ; e8 46 0f ; 0xf9993 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf9996 + mov byte [es:di], al ; 26 88 05 ; 0xf9999 + mov bl, cl ; 88 cb ; 0xf999c virtio.c:542 + add bl, 008h ; 80 c3 08 ; 0xf999e + xor bh, bh ; 30 ff ; 0xf99a1 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf99a3 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf99a6 + call 0a928h ; e8 7c 0f ; 0xf99a9 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf99ac + mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf99af + mov word [es:di+006h], dx ; 26 89 55 06 ; 0xf99b3 + mov bl, cl ; 88 cb ; 0xf99b7 virtio.c:543 + add bl, 00ch ; 80 c3 0c ; 0xf99b9 + xor bh, bh ; 30 ff ; 0xf99bc + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf99be + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf99c1 + call 0a928h ; e8 61 0f ; 0xf99c4 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf99c7 + mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf99ca + mov word [es:di+00ah], dx ; 26 89 55 0a ; 0xf99ce + cmp byte [bp-008h], 002h ; 80 7e f8 02 ; 0xf99d2 virtio.c:544 + jne short 099ffh ; 75 27 ; 0xf99d6 + mov bl, cl ; 88 cb ; 0xf99d8 virtio.c:546 + add bl, 010h ; 80 c3 10 ; 0xf99da + xor bh, bh ; 30 ff ; 0xf99dd + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf99df + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf99e2 + call 0a928h ; e8 40 0f ; 0xf99e5 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf99e8 + mov word [es:si+0008eh], ax ; 26 89 84 8e 00 ; 0xf99eb + mov word [es:si+00090h], dx ; 26 89 94 90 00 ; 0xf99f0 + jmp short 099ffh ; eb 08 ; 0xf99f5 virtio.c:549 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf99f7 virtio.c:552 + mov byte [es:si+0008ch], cl ; 26 88 8c 8c 00 ; 0xf99fa + mov bl, cl ; 88 cb ; 0xf99ff virtio.c:561 + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf9a01 + xor bh, bh ; 30 ff ; 0xf9a03 + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf9a05 + xor dh, dh ; 30 f6 ; 0xf9a08 + mov al, ch ; 88 e8 ; 0xf9a0a + xor ah, ah ; 30 e4 ; 0xf9a0c + call 0a8dch ; e8 cb 0e ; 0xf9a0e + mov cl, al ; 88 c1 ; 0xf9a11 + jmp near 098fch ; e9 e6 fe ; 0xf9a13 virtio.c:562 + xor ch, ch ; 30 ed ; 0xf9a16 virtio.c:566 + mov bx, strict word 00014h ; bb 14 00 ; 0xf9a18 + mov ax, si ; 89 f0 ; 0xf9a1b + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a1d + call 093ffh ; e8 dc f9 ; 0xf9a20 + mov cx, strict word 00001h ; b9 01 00 ; 0xf9a23 virtio.c:569 + mov bx, strict word 00014h ; bb 14 00 ; 0xf9a26 + mov ax, si ; 89 f0 ; 0xf9a29 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a2b + call 093ffh ; e8 ce f9 ; 0xf9a2e + mov byte [bp-00ah], 003h ; c6 46 f6 03 ; 0xf9a31 virtio.c:571 + mov cx, strict word 00003h ; b9 03 00 ; 0xf9a35 virtio.c:572 + mov bx, strict word 00014h ; bb 14 00 ; 0xf9a38 + mov ax, si ; 89 f0 ; 0xf9a3b + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a3d + call 093ffh ; e8 bc f9 ; 0xf9a40 + xor bx, bx ; 31 db ; 0xf9a43 virtio.c:581 + mov ax, si ; 89 f0 ; 0xf9a45 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a47 + call 094edh ; e8 a0 fa ; 0xf9a4a + test dx, dx ; 85 d2 ; 0xf9a4d + jne short 09a56h ; 75 05 ; 0xf9a4f + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf9a51 + jc short 09a92h ; 72 3c ; 0xf9a54 + mov bx, strict word 00018h ; bb 18 00 ; 0xf9a56 + mov ax, si ; 89 f0 ; 0xf9a59 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a5b + call 094edh ; e8 8c fa ; 0xf9a5e + test dx, dx ; 85 d2 ; 0xf9a61 + jne short 09a6ah ; 75 05 ; 0xf9a63 + cmp ax, strict word 00010h ; 3d 10 00 ; 0xf9a65 + jc short 09a92h ; 72 28 ; 0xf9a68 + mov bx, strict word 00014h ; bb 14 00 ; 0xf9a6a + mov ax, si ; 89 f0 ; 0xf9a6d + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a6f + call 094edh ; e8 78 fa ; 0xf9a72 + test dx, dx ; 85 d2 ; 0xf9a75 + jne short 09a7eh ; 75 05 ; 0xf9a77 + cmp ax, strict word 00020h ; 3d 20 00 ; 0xf9a79 + jc short 09a92h ; 72 14 ; 0xf9a7c + mov bx, strict word 00008h ; bb 08 00 ; 0xf9a7e + mov ax, si ; 89 f0 ; 0xf9a81 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9a83 + call 094edh ; e8 64 fa ; 0xf9a86 + test dx, dx ; 85 d2 ; 0xf9a89 + jne short 09a98h ; 75 0b ; 0xf9a8b + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf9a8d + jnc short 09a98h ; 73 06 ; 0xf9a90 + mov ax, strict word 00001h ; b8 01 00 ; 0xf9a92 virtio.c:587 + jmp near 09c12h ; e9 7a 01 ; 0xf9a95 + xor ax, ax ; 31 c0 ; 0xf9a98 virtio.c:590 + push ax ; 50 ; 0xf9a9a + mov ax, strict word 00001h ; b8 01 00 ; 0xf9a9b + push ax ; 50 ; 0xf9a9e + mov bx, strict word 0000ch ; bb 0c 00 ; 0xf9a9f + mov ax, si ; 89 f0 ; 0xf9aa2 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9aa4 + call 094ach ; e8 02 fa ; 0xf9aa7 + or byte [bp-00ah], 008h ; 80 4e f6 08 ; 0xf9aaa virtio.c:593 + mov cl, byte [bp-00ah] ; 8a 4e f6 ; 0xf9aae virtio.c:594 + xor ch, ch ; 30 ed ; 0xf9ab1 + mov bx, strict word 00014h ; bb 14 00 ; 0xf9ab3 + mov ax, si ; 89 f0 ; 0xf9ab6 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9ab8 + call 093ffh ; e8 41 f9 ; 0xf9abb + mov bx, strict word 00014h ; bb 14 00 ; 0xf9abe virtio.c:597 + mov ax, si ; 89 f0 ; 0xf9ac1 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9ac3 + call 093c6h ; e8 fd f8 ; 0xf9ac6 + test AL, strict byte 008h ; a8 08 ; 0xf9ac9 + je short 09a92h ; 74 c5 ; 0xf9acb + xor cx, cx ; 31 c9 ; 0xf9acd virtio.c:604 + mov bx, strict word 00016h ; bb 16 00 ; 0xf9acf + mov ax, si ; 89 f0 ; 0xf9ad2 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9ad4 + call 09473h ; e8 99 f9 ; 0xf9ad7 + xor cx, cx ; 31 c9 ; 0xf9ada virtio.c:605 + mov bx, strict word 00018h ; bb 18 00 ; 0xf9adc + mov ax, si ; 89 f0 ; 0xf9adf + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9ae1 + call 09473h ; e8 8c f9 ; 0xf9ae4 + xor cx, cx ; 31 c9 ; 0xf9ae7 virtio.c:606 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf9ae9 + mov ax, si ; 89 f0 ; 0xf9aec + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9aee + call 09473h ; e8 7f f9 ; 0xf9af1 + mov cx, strict word 00001h ; b9 01 00 ; 0xf9af4 virtio.c:608 + mov bx, strict word 00016h ; bb 16 00 ; 0xf9af7 + mov ax, si ; 89 f0 ; 0xf9afa + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9afc + call 09473h ; e8 71 f9 ; 0xf9aff + xor cx, cx ; 31 c9 ; 0xf9b02 virtio.c:609 + mov bx, strict word 00018h ; bb 18 00 ; 0xf9b04 + mov ax, si ; 89 f0 ; 0xf9b07 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b09 + call 09473h ; e8 64 f9 ; 0xf9b0c + xor cx, cx ; 31 c9 ; 0xf9b0f virtio.c:610 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf9b11 + mov ax, si ; 89 f0 ; 0xf9b14 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b16 + call 09473h ; e8 57 f9 ; 0xf9b19 + mov cx, strict word 00002h ; b9 02 00 ; 0xf9b1c virtio.c:613 + mov bx, strict word 00016h ; bb 16 00 ; 0xf9b1f + mov ax, si ; 89 f0 ; 0xf9b22 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b24 + call 09473h ; e8 49 f9 ; 0xf9b27 + mov cx, strict word 00003h ; b9 03 00 ; 0xf9b2a virtio.c:614 + mov bx, strict word 00018h ; bb 18 00 ; 0xf9b2d + mov ax, si ; 89 f0 ; 0xf9b30 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b32 + call 09473h ; e8 3b f9 ; 0xf9b35 + mov cx, strict word 00001h ; b9 01 00 ; 0xf9b38 virtio.c:615 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf9b3b + mov ax, si ; 89 f0 ; 0xf9b3e + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b40 + call 09473h ; e8 2d f9 ; 0xf9b43 + mov ax, si ; 89 f0 ; 0xf9b46 virtio.c:618 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b48 + call 095d9h ; e8 8b fa ; 0xf9b4b + push dx ; 52 ; 0xf9b4e + push ax ; 50 ; 0xf9b4f + mov bx, strict word 00020h ; bb 20 00 ; 0xf9b50 + mov ax, si ; 89 f0 ; 0xf9b53 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b55 + call 094ach ; e8 51 f9 ; 0xf9b58 + xor ax, ax ; 31 c0 ; 0xf9b5b virtio.c:619 + push ax ; 50 ; 0xf9b5d + push ax ; 50 ; 0xf9b5e + mov bx, strict word 00024h ; bb 24 00 ; 0xf9b5f + mov ax, si ; 89 f0 ; 0xf9b62 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b64 + call 094ach ; e8 42 f9 ; 0xf9b67 + lea ax, [si+030h] ; 8d 44 30 ; 0xf9b6a virtio.c:621 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b6d + call 095d9h ; e8 66 fa ; 0xf9b70 + push dx ; 52 ; 0xf9b73 + push ax ; 50 ; 0xf9b74 + mov bx, strict word 00028h ; bb 28 00 ; 0xf9b75 + mov ax, si ; 89 f0 ; 0xf9b78 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b7a + call 094ach ; e8 2c f9 ; 0xf9b7d + xor ax, ax ; 31 c0 ; 0xf9b80 virtio.c:622 + push ax ; 50 ; 0xf9b82 + push ax ; 50 ; 0xf9b83 + mov bx, strict word 0002ch ; bb 2c 00 ; 0xf9b84 + mov ax, si ; 89 f0 ; 0xf9b87 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b89 + call 094ach ; e8 1d f9 ; 0xf9b8c + lea ax, [si+03ch] ; 8d 44 3c ; 0xf9b8f virtio.c:624 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b92 + call 095d9h ; e8 41 fa ; 0xf9b95 + push dx ; 52 ; 0xf9b98 + push ax ; 50 ; 0xf9b99 + mov bx, strict word 00030h ; bb 30 00 ; 0xf9b9a + mov ax, si ; 89 f0 ; 0xf9b9d + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9b9f + call 094ach ; e8 07 f9 ; 0xf9ba2 + xor ax, ax ; 31 c0 ; 0xf9ba5 virtio.c:625 + push ax ; 50 ; 0xf9ba7 + push ax ; 50 ; 0xf9ba8 + mov bx, strict word 00034h ; bb 34 00 ; 0xf9ba9 + mov ax, si ; 89 f0 ; 0xf9bac + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9bae + call 094ach ; e8 f8 f8 ; 0xf9bb1 + xor ax, ax ; 31 c0 ; 0xf9bb4 virtio.c:627 + push ax ; 50 ; 0xf9bb6 + mov ax, strict word 00010h ; b8 10 00 ; 0xf9bb7 + push ax ; 50 ; 0xf9bba + mov bx, strict word 00018h ; bb 18 00 ; 0xf9bbb + mov ax, si ; 89 f0 ; 0xf9bbe + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9bc0 + call 09526h ; e8 60 f9 ; 0xf9bc3 + xor ax, ax ; 31 c0 ; 0xf9bc6 virtio.c:628 + push ax ; 50 ; 0xf9bc8 + mov ax, strict word 00020h ; b8 20 00 ; 0xf9bc9 + push ax ; 50 ; 0xf9bcc + mov bx, strict word 00014h ; bb 14 00 ; 0xf9bcd + mov ax, si ; 89 f0 ; 0xf9bd0 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9bd2 + call 09526h ; e8 4e f9 ; 0xf9bd5 + mov bx, strict word 0001eh ; bb 1e 00 ; 0xf9bd8 virtio.c:631 + mov ax, si ; 89 f0 ; 0xf9bdb + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9bdd + call 0943ah ; e8 57 f8 ; 0xf9be0 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf9be3 + mov bx, word [es:si+0008eh] ; 26 8b 9c 8e 00 ; 0xf9be6 + mov cx, word [es:si+00090h] ; 26 8b 8c 90 00 ; 0xf9beb + xor dx, dx ; 31 d2 ; 0xf9bf0 + call 0aac0h ; e8 cb 0e ; 0xf9bf2 + mov word [es:si+058h], ax ; 26 89 44 58 ; 0xf9bf5 + mov word [es:si+05ah], dx ; 26 89 54 5a ; 0xf9bf9 + or byte [bp-00ah], 004h ; 80 4e f6 04 ; 0xf9bfd virtio.c:634 + mov cl, byte [bp-00ah] ; 8a 4e f6 ; 0xf9c01 virtio.c:635 + xor ch, ch ; 30 ed ; 0xf9c04 + mov bx, strict word 00014h ; bb 14 00 ; 0xf9c06 + mov ax, si ; 89 f0 ; 0xf9c09 + mov dx, es ; 8c c2 ; 0xf9c0b + call 093ffh ; e8 ef f7 ; 0xf9c0d + xor ax, ax ; 31 c0 ; 0xf9c10 virtio.c:637 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9c12 virtio.c:638 + pop di ; 5f ; 0xf9c15 + pop si ; 5e ; 0xf9c16 + pop bp ; 5d ; 0xf9c17 + retn 00002h ; c2 02 00 ; 0xf9c18 + ; disGetNextSymbol 0xf9c1b LB 0x123d -> off=0x0 cb=00000000000000f9 uValue=00000000000f861b 'virtio_scsi_init' +virtio_scsi_init: ; 0xf9c1b LB 0xf9 + push bp ; 55 ; 0xf9c1b virtio.c:643 + mov bp, sp ; 89 e5 ; 0xf9c1c + push si ; 56 ; 0xf9c1e + push di ; 57 ; 0xf9c1f + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf9c20 + mov byte [bp-006h], bl ; 88 5e fa ; 0xf9c23 + mov byte [bp-00ah], cl ; 88 4e f6 ; 0xf9c26 + mov di, ax ; 89 c7 ; 0xf9c29 virtio.c:645 + mov si, dx ; 89 d6 ; 0xf9c2b + mov byte [bp-008h], 0ffh ; c6 46 f8 ff ; 0xf9c2d virtio.c:647 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf9c31 virtio.c:648 + mov dl, cl ; 88 ca ; 0xf9c35 virtio.c:651 + xor dh, dh ; 30 f6 ; 0xf9c37 + mov al, bl ; 88 d8 ; 0xf9c39 + xor ah, ah ; 30 e4 ; 0xf9c3b + mov bx, strict word 00034h ; bb 34 00 ; 0xf9c3d + call 0a8dch ; e8 99 0c ; 0xf9c40 + mov ch, al ; 88 c5 ; 0xf9c43 + test ch, ch ; 84 ed ; 0xf9c45 virtio.c:653 + je short 09ca8h ; 74 5f ; 0xf9c47 + mov bl, ch ; 88 eb ; 0xf9c49 virtio.c:655 + xor bh, bh ; 30 ff ; 0xf9c4b + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9c4d + mov byte [bp-014h], al ; 88 46 ec ; 0xf9c50 + mov byte [bp-013h], bh ; 88 7e ed ; 0xf9c53 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9c56 + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf9c59 + mov byte [bp-00dh], bh ; 88 7e f3 ; 0xf9c5c + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9c5f + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9c62 + call 0a8dch ; e8 74 0c ; 0xf9c65 + mov word [bp-012h], ax ; 89 46 ee ; 0xf9c68 + mov bl, ch ; 88 eb ; 0xf9c6b virtio.c:656 + add bl, 002h ; 80 c3 02 ; 0xf9c6d + xor bh, bh ; 30 ff ; 0xf9c70 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9c72 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9c75 + call 0a8dch ; e8 61 0c ; 0xf9c78 + cmp byte [bp-012h], 009h ; 80 7e ee 09 ; 0xf9c7b virtio.c:660 + jne short 09cb5h ; 75 34 ; 0xf9c7f + cmp AL, strict byte 010h ; 3c 10 ; 0xf9c81 + jc short 09cb5h ; 72 30 ; 0xf9c83 + mov bl, ch ; 88 eb ; 0xf9c85 virtio.c:664 + add bl, 003h ; 80 c3 03 ; 0xf9c87 + xor bh, bh ; 30 ff ; 0xf9c8a + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9c8c + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9c8f + call 0a8dch ; e8 47 0c ; 0xf9c92 + cmp byte [bp-008h], 0ffh ; 80 7e f8 ff ; 0xf9c95 virtio.c:666 + jne short 09c9eh ; 75 03 ; 0xf9c99 + mov byte [bp-008h], ch ; 88 6e f8 ; 0xf9c9b virtio.c:667 + cmp AL, strict byte 001h ; 3c 01 ; 0xf9c9e virtio.c:670 + jc short 09cb5h ; 72 13 ; 0xf9ca0 + cmp AL, strict byte 005h ; 3c 05 ; 0xf9ca2 + jbe short 09caah ; 76 04 ; 0xf9ca4 + jmp short 09cb5h ; eb 0d ; 0xf9ca6 + jmp short 09cc8h ; eb 1e ; 0xf9ca8 + mov cl, al ; 88 c1 ; 0xf9caa virtio.c:677 + db 0feh, 0c9h + ; dec cl ; fe c9 ; 0xf9cac + mov AL, strict byte 001h ; b0 01 ; 0xf9cae + sal al, CL ; d2 e0 ; 0xf9cb0 + or byte [bp-00ch], al ; 08 46 f4 ; 0xf9cb2 + mov bl, ch ; 88 eb ; 0xf9cb5 virtio.c:684 + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf9cb7 + xor bh, bh ; 30 ff ; 0xf9cb9 + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf9cbb + xor dh, dh ; 30 f6 ; 0xf9cbe + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9cc0 + xor ah, ah ; 30 e4 ; 0xf9cc3 + jmp near 09c40h ; e9 78 ff ; 0xf9cc5 virtio.c:685 + cmp byte [bp-008h], 0ffh ; 80 7e f8 ff ; 0xf9cc8 virtio.c:688 + je short 09d0ah ; 74 3c ; 0xf9ccc + cmp byte [bp-00ch], 01fh ; 80 7e f4 1f ; 0xf9cce + jne short 09d0ah ; 75 36 ; 0xf9cd2 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9cd4 virtio.c:694 + mov byte [bp-012h], al ; 88 46 ee ; 0xf9cd7 + mov byte [bp-011h], ch ; 88 6e ef ; 0xf9cda + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9cdd + mov byte [bp-010h], al ; 88 46 f0 ; 0xf9ce0 + mov byte [bp-00fh], ch ; 88 6e f1 ; 0xf9ce3 + mov cx, strict word 00007h ; b9 07 00 ; 0xf9ce6 + mov bx, strict word 00004h ; bb 04 00 ; 0xf9ce9 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf9cec + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf9cef + call 0a967h ; e8 72 0c ; 0xf9cf2 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9cf5 virtio.c:695 + xor ah, ah ; 30 e4 ; 0xf9cf8 + push ax ; 50 ; 0xf9cfa + mov cx, word [bp-012h] ; 8b 4e ee ; 0xf9cfb + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf9cfe + mov ax, di ; 89 f8 ; 0xf9d01 + mov dx, si ; 89 f2 ; 0xf9d03 + call 098dbh ; e8 d3 fb ; 0xf9d05 + jmp short 09d0dh ; eb 03 ; 0xf9d08 + mov ax, strict word 00001h ; b8 01 00 ; 0xf9d0a virtio.c:700 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9d0d virtio.c:701 + pop di ; 5f ; 0xf9d10 + pop si ; 5e ; 0xf9d11 + pop bp ; 5d ; 0xf9d12 + retn ; c3 ; 0xf9d13 + ; disGetNextSymbol 0xf9d14 LB 0x1144 -> off=0x0 cb=000000000000001e uValue=00000000000f8714 'buslogic_addr_to_phys' +buslogic_addr_to_phys: ; 0xf9d14 LB 0x1e + push bx ; 53 ; 0xf9d14 buslogic.c:120 + push cx ; 51 ; 0xf9d15 + push bp ; 55 ; 0xf9d16 + mov bp, sp ; 89 e5 ; 0xf9d17 + mov bx, ax ; 89 c3 ; 0xf9d19 + mov ax, dx ; 89 d0 ; 0xf9d1b + xor dx, dx ; 31 d2 ; 0xf9d1d buslogic.c:122 + mov cx, strict word 00004h ; b9 04 00 ; 0xf9d1f + sal ax, 1 ; d1 e0 ; 0xf9d22 + rcl dx, 1 ; d1 d2 ; 0xf9d24 + loop 09d22h ; e2 fa ; 0xf9d26 + xor cx, cx ; 31 c9 ; 0xf9d28 + add ax, bx ; 01 d8 ; 0xf9d2a + adc dx, cx ; 11 ca ; 0xf9d2c + pop bp ; 5d ; 0xf9d2e buslogic.c:123 + pop cx ; 59 ; 0xf9d2f + pop bx ; 5b ; 0xf9d30 + retn ; c3 ; 0xf9d31 + ; disGetNextSymbol 0xf9d32 LB 0x1126 -> off=0x0 cb=0000000000000084 uValue=00000000000f8732 'buslogic_cmd' +buslogic_cmd: ; 0xf9d32 LB 0x84 + push bp ; 55 ; 0xf9d32 buslogic.c:125 + mov bp, sp ; 89 e5 ; 0xf9d33 + push cx ; 51 ; 0xf9d35 + push si ; 56 ; 0xf9d36 + push di ; 57 ; 0xf9d37 + mov si, ax ; 89 c6 ; 0xf9d38 + mov cx, dx ; 89 d1 ; 0xf9d3a + mov es, dx ; 8e c2 ; 0xf9d3c buslogic.c:130 + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9d3e + inc dx ; 42 ; 0xf9d42 + mov al, bl ; 88 d8 ; 0xf9d43 + out DX, AL ; ee ; 0xf9d45 + xor bx, bx ; 31 db ; 0xf9d46 buslogic.c:131 + cmp bx, word [bp+008h] ; 3b 5e 08 ; 0xf9d48 + jnc short 09d66h ; 73 19 ; 0xf9d4b + mov di, word [bp+004h] ; 8b 7e 04 ; 0xf9d4d buslogic.c:132 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf9d50 + inc word [bp+004h] ; ff 46 04 ; 0xf9d53 + mov es, cx ; 8e c1 ; 0xf9d56 + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9d58 + inc dx ; 42 ; 0xf9d5c + mov es, ax ; 8e c0 ; 0xf9d5d + mov al, byte [es:di] ; 26 8a 05 ; 0xf9d5f + out DX, AL ; ee ; 0xf9d62 + inc bx ; 43 ; 0xf9d63 + jmp short 09d48h ; eb e2 ; 0xf9d64 + cmp word [bp+00eh], strict byte 00000h ; 83 7e 0e 00 ; 0xf9d66 buslogic.c:135 + je short 09d96h ; 74 2a ; 0xf9d6a + mov es, cx ; 8e c1 ; 0xf9d6c buslogic.c:137 + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9d6e + in AL, DX ; ec ; 0xf9d72 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf9d73 + test AL, strict byte 004h ; a8 04 ; 0xf9d75 + je short 09d6ch ; 74 f3 ; 0xf9d77 + xor bx, bx ; 31 db ; 0xf9d79 buslogic.c:138 + cmp bx, word [bp+00eh] ; 3b 5e 0e ; 0xf9d7b + jnc short 09d96h ; 73 16 ; 0xf9d7e + mov es, cx ; 8e c1 ; 0xf9d80 buslogic.c:139 + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9d82 + inc dx ; 42 ; 0xf9d86 + in AL, DX ; ec ; 0xf9d87 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf9d88 + les di, [bp+00ah] ; c4 7e 0a ; 0xf9d8a + mov byte [es:di], al ; 26 88 05 ; 0xf9d8d + inc word [bp+00ah] ; ff 46 0a ; 0xf9d90 + inc bx ; 43 ; 0xf9d93 + jmp short 09d7bh ; eb e5 ; 0xf9d94 + mov es, cx ; 8e c1 ; 0xf9d96 buslogic.c:142 + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9d98 + in AL, DX ; ec ; 0xf9d9c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf9d9d + test AL, strict byte 010h ; a8 10 ; 0xf9d9f + je short 09d96h ; 74 f3 ; 0xf9da1 + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf9da3 buslogic.c:145 + mov AL, strict byte 020h ; b0 20 ; 0xf9da7 + out DX, AL ; ee ; 0xf9da9 + xor ax, ax ; 31 c0 ; 0xf9daa buslogic.c:148 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9dac + pop di ; 5f ; 0xf9daf + pop si ; 5e ; 0xf9db0 + pop cx ; 59 ; 0xf9db1 + pop bp ; 5d ; 0xf9db2 + retn 0000ch ; c2 0c 00 ; 0xf9db3 + ; disGetNextSymbol 0xf9db6 LB 0x10a2 -> off=0x0 cb=00000000000000b9 uValue=00000000000f87b6 'buslogic_scsi_cmd_data_out' +buslogic_scsi_cmd_data_out: ; 0xf9db6 LB 0xb9 + push bp ; 55 ; 0xf9db6 buslogic.c:150 + mov bp, sp ; 89 e5 ; 0xf9db7 + push cx ; 51 ; 0xf9db9 + push si ; 56 ; 0xf9dba + push di ; 57 ; 0xf9dbb + sub sp, strict byte 00008h ; 83 ec 08 ; 0xf9dbc + mov si, ax ; 89 c6 ; 0xf9dbf + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9dc1 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf9dc4 buslogic.c:153 + mov di, dx ; 89 d7 ; 0xf9dc7 + mov cx, strict word 0001ch ; b9 1c 00 ; 0xf9dc9 buslogic.c:158 + xor bx, bx ; 31 db ; 0xf9dcc + call 0ab30h ; e8 5f 0d ; 0xf9dce + mov cx, strict word 00004h ; b9 04 00 ; 0xf9dd1 buslogic.c:159 + xor bx, bx ; 31 db ; 0xf9dd4 + mov dx, ss ; 8c d2 ; 0xf9dd6 + lea ax, [bp-00eh] ; 8d 46 f2 ; 0xf9dd8 + call 0ab30h ; e8 52 0d ; 0xf9ddb + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9dde buslogic.c:161 + mov es, di ; 8e c7 ; 0xf9de1 + mov word [es:si], ax ; 26 89 04 ; 0xf9de3 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf9de6 + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf9de9 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9ded buslogic.c:162 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9df0 + call 09d14h ; e8 1e ff ; 0xf9df3 + mov es, di ; 8e c7 ; 0xf9df6 + mov word [es:si+004h], ax ; 26 89 44 04 ; 0xf9df8 + mov word [es:si+006h], dx ; 26 89 54 06 ; 0xf9dfc + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9e00 buslogic.c:163 + mov byte [es:si+008h], al ; 26 88 44 08 ; 0xf9e03 + mov byte [es:si+009h], 000h ; 26 c6 44 09 00 ; 0xf9e07 buslogic.c:164 + and byte [es:si+00ah], 0e7h ; 26 80 64 0a e7 ; 0xf9e0c buslogic.c:165 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9e11 buslogic.c:166 + mov byte [es:si+00bh], al ; 26 88 44 0b ; 0xf9e14 + xor si, si ; 31 f6 ; 0xf9e18 buslogic.c:168 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9e1a + xor ah, ah ; 30 e4 ; 0xf9e1d + cmp si, ax ; 39 c6 ; 0xf9e1f + jnl short 09e3bh ; 7d 18 ; 0xf9e21 + les bx, [bp+004h] ; c4 5e 04 ; 0xf9e23 buslogic.c:169 + add bx, si ; 01 f3 ; 0xf9e26 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9e28 + add dx, si ; 01 f2 ; 0xf9e2b + mov al, byte [es:bx] ; 26 8a 07 ; 0xf9e2d + mov es, di ; 8e c7 ; 0xf9e30 + mov bx, dx ; 89 d3 ; 0xf9e32 + mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf9e34 + inc si ; 46 ; 0xf9e38 + jmp short 09e1ah ; eb df ; 0xf9e39 + mov ax, strict word 00004h ; b8 04 00 ; 0xf9e3b buslogic.c:171 + push ax ; 50 ; 0xf9e3e + lea dx, [bp-00eh] ; 8d 56 f2 ; 0xf9e3f + push SS ; 16 ; 0xf9e42 + push dx ; 52 ; 0xf9e43 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9e44 + xor ah, ah ; 30 e4 ; 0xf9e47 + add ax, strict word 0000ch ; 05 0c 00 ; 0xf9e49 + push ax ; 50 ; 0xf9e4c + push di ; 57 ; 0xf9e4d + push word [bp-00ah] ; ff 76 f6 ; 0xf9e4e + mov bx, 00083h ; bb 83 00 ; 0xf9e51 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9e54 + mov dx, di ; 89 fa ; 0xf9e57 + call 09d32h ; e8 d6 fe ; 0xf9e59 + test ax, ax ; 85 c0 ; 0xf9e5c buslogic.c:173 + jne short 09e65h ; 75 05 ; 0xf9e5e + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf9e60 buslogic.c:174 + xor ah, ah ; 30 e4 ; 0xf9e63 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9e65 buslogic.c:177 + pop di ; 5f ; 0xf9e68 + pop si ; 5e ; 0xf9e69 + pop cx ; 59 ; 0xf9e6a + pop bp ; 5d ; 0xf9e6b + retn 0000eh ; c2 0e 00 ; 0xf9e6c + ; disGetNextSymbol 0xf9e6f LB 0xfe9 -> off=0x0 cb=00000000000000b9 uValue=00000000000f886f 'buslogic_scsi_cmd_data_in' +buslogic_scsi_cmd_data_in: ; 0xf9e6f LB 0xb9 + push bp ; 55 ; 0xf9e6f buslogic.c:179 + mov bp, sp ; 89 e5 ; 0xf9e70 + push cx ; 51 ; 0xf9e72 + push si ; 56 ; 0xf9e73 + push di ; 57 ; 0xf9e74 + sub sp, strict byte 00008h ; 83 ec 08 ; 0xf9e75 + mov si, ax ; 89 c6 ; 0xf9e78 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf9e7a + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf9e7d buslogic.c:182 + mov di, dx ; 89 d7 ; 0xf9e80 + mov cx, strict word 0001ch ; b9 1c 00 ; 0xf9e82 buslogic.c:189 + xor bx, bx ; 31 db ; 0xf9e85 + call 0ab30h ; e8 a6 0c ; 0xf9e87 + mov cx, strict word 00004h ; b9 04 00 ; 0xf9e8a buslogic.c:190 + xor bx, bx ; 31 db ; 0xf9e8d + mov dx, ss ; 8c d2 ; 0xf9e8f + lea ax, [bp-00eh] ; 8d 46 f2 ; 0xf9e91 + call 0ab30h ; e8 99 0c ; 0xf9e94 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf9e97 buslogic.c:192 + mov es, di ; 8e c7 ; 0xf9e9a + mov word [es:si], ax ; 26 89 04 ; 0xf9e9c + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf9e9f + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf9ea2 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf9ea6 buslogic.c:193 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf9ea9 + call 09d14h ; e8 65 fe ; 0xf9eac + mov es, di ; 8e c7 ; 0xf9eaf + mov word [es:si+004h], ax ; 26 89 44 04 ; 0xf9eb1 + mov word [es:si+006h], dx ; 26 89 54 06 ; 0xf9eb5 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9eb9 buslogic.c:194 + mov byte [es:si+008h], al ; 26 88 44 08 ; 0xf9ebc + mov byte [es:si+009h], 000h ; 26 c6 44 09 00 ; 0xf9ec0 buslogic.c:195 + and byte [es:si+00ah], 0e7h ; 26 80 64 0a e7 ; 0xf9ec5 buslogic.c:196 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9eca buslogic.c:197 + mov byte [es:si+00bh], al ; 26 88 44 0b ; 0xf9ecd + xor si, si ; 31 f6 ; 0xf9ed1 buslogic.c:199 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9ed3 + xor ah, ah ; 30 e4 ; 0xf9ed6 + cmp si, ax ; 39 c6 ; 0xf9ed8 + jnl short 09ef4h ; 7d 18 ; 0xf9eda + les bx, [bp+004h] ; c4 5e 04 ; 0xf9edc buslogic.c:200 + add bx, si ; 01 f3 ; 0xf9edf + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf9ee1 + add dx, si ; 01 f2 ; 0xf9ee4 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf9ee6 + mov es, di ; 8e c7 ; 0xf9ee9 + mov bx, dx ; 89 d3 ; 0xf9eeb + mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf9eed + inc si ; 46 ; 0xf9ef1 + jmp short 09ed3h ; eb df ; 0xf9ef2 + mov ax, strict word 00004h ; b8 04 00 ; 0xf9ef4 buslogic.c:202 + push ax ; 50 ; 0xf9ef7 + lea dx, [bp-00eh] ; 8d 56 f2 ; 0xf9ef8 + push SS ; 16 ; 0xf9efb + push dx ; 52 ; 0xf9efc + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf9efd + xor ah, ah ; 30 e4 ; 0xf9f00 + add ax, strict word 0000ch ; 05 0c 00 ; 0xf9f02 + push ax ; 50 ; 0xf9f05 + push di ; 57 ; 0xf9f06 + push word [bp-00ah] ; ff 76 f6 ; 0xf9f07 + mov bx, 00083h ; bb 83 00 ; 0xf9f0a + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9f0d + mov dx, di ; 89 fa ; 0xf9f10 + call 09d32h ; e8 1d fe ; 0xf9f12 + test ax, ax ; 85 c0 ; 0xf9f15 buslogic.c:204 + jne short 09f1eh ; 75 05 ; 0xf9f17 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf9f19 buslogic.c:205 + xor ah, ah ; 30 e4 ; 0xf9f1c + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9f1e buslogic.c:208 + pop di ; 5f ; 0xf9f21 + pop si ; 5e ; 0xf9f22 + pop cx ; 59 ; 0xf9f23 + pop bp ; 5d ; 0xf9f24 + retn 0000eh ; c2 0e 00 ; 0xf9f25 + ; disGetNextSymbol 0xf9f28 LB 0xf30 -> off=0x0 cb=0000000000000022 uValue=00000000000f8928 'buslogic_scsi_hba_init' +buslogic_scsi_hba_init: ; 0xf9f28 LB 0x22 + push bp ; 55 ; 0xf9f28 buslogic.c:213 + mov bp, sp ; 89 e5 ; 0xf9f29 + push bx ; 53 ; 0xf9f2b + mov bx, ax ; 89 c3 ; 0xf9f2c + mov es, dx ; 8e c2 ; 0xf9f2e + mov dx, word [es:bx+01ch] ; 26 8b 57 1c ; 0xf9f30 buslogic.c:216 + mov AL, strict byte 080h ; b0 80 ; 0xf9f34 + out DX, AL ; ee ; 0xf9f36 + mov dx, word [es:bx+01ch] ; 26 8b 57 1c ; 0xf9f37 buslogic.c:217 + in AL, DX ; ec ; 0xf9f3b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf9f3c + test AL, strict byte 010h ; a8 10 ; 0xf9f3e + je short 09f37h ; 74 f5 ; 0xf9f40 + xor ax, ax ; 31 c0 ; 0xf9f42 buslogic.c:220 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf9f44 + pop bx ; 5b ; 0xf9f47 + pop bp ; 5d ; 0xf9f48 + retn ; c3 ; 0xf9f49 + ; disGetNextSymbol 0xf9f4a LB 0xf0e -> off=0x0 cb=0000000000000058 uValue=00000000000f894a 'buslogic_scsi_init' +buslogic_scsi_init: ; 0xf9f4a LB 0x58 + push bp ; 55 ; 0xf9f4a buslogic.c:225 + mov bp, sp ; 89 e5 ; 0xf9f4b + push si ; 56 ; 0xf9f4d + push di ; 57 ; 0xf9f4e + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf9f4f + mov si, ax ; 89 c6 ; 0xf9f52 + mov word [bp-008h], dx ; 89 56 f8 ; 0xf9f54 + mov byte [bp-006h], cl ; 88 4e fa ; 0xf9f57 buslogic.c:232 + xor al, al ; 30 c0 ; 0xf9f5a + mov byte [bp-005h], al ; 88 46 fb ; 0xf9f5c + mov byte [bp-00ah], bl ; 88 5e f6 ; 0xf9f5f + mov byte [bp-009h], al ; 88 46 f7 ; 0xf9f62 + mov bx, strict word 00010h ; bb 10 00 ; 0xf9f65 + mov dx, word [bp-006h] ; 8b 56 fa ; 0xf9f68 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9f6b + call 0a928h ; e8 b7 09 ; 0xf9f6e + test AL, strict byte 001h ; a8 01 ; 0xf9f71 buslogic.c:236 + je short 09f98h ; 74 23 ; 0xf9f73 + and AL, strict byte 0f0h ; 24 f0 ; 0xf9f75 buslogic.c:238 + mov di, ax ; 89 c7 ; 0xf9f77 + mov cx, strict word 00007h ; b9 07 00 ; 0xf9f79 buslogic.c:241 + mov bx, strict word 00004h ; bb 04 00 ; 0xf9f7c + mov dx, word [bp-006h] ; 8b 56 fa ; 0xf9f7f + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9f82 + call 0a967h ; e8 df 09 ; 0xf9f85 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf9f88 buslogic.c:244 + mov word [es:si+01ch], di ; 26 89 7c 1c ; 0xf9f8b + mov ax, si ; 89 f0 ; 0xf9f8f buslogic.c:245 + mov dx, es ; 8c c2 ; 0xf9f91 + call 09f28h ; e8 92 ff ; 0xf9f93 + jmp short 09f9bh ; eb 03 ; 0xf9f96 + mov ax, strict word 00001h ; b8 01 00 ; 0xf9f98 buslogic.c:250 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9f9b buslogic.c:251 + pop di ; 5f ; 0xf9f9e + pop si ; 5e ; 0xf9f9f + pop bp ; 5d ; 0xf9fa0 + retn ; c3 ; 0xf9fa1 + ; disGetNextSymbol 0xf9fa2 LB 0xeb6 -> off=0x0 cb=000000000000001e uValue=00000000000f89a2 'lsilogic_addr_to_phys' +lsilogic_addr_to_phys: ; 0xf9fa2 LB 0x1e + push bx ; 53 ; 0xf9fa2 lsilogic.c:331 + push cx ; 51 ; 0xf9fa3 + push bp ; 55 ; 0xf9fa4 + mov bp, sp ; 89 e5 ; 0xf9fa5 + mov bx, ax ; 89 c3 ; 0xf9fa7 + mov ax, dx ; 89 d0 ; 0xf9fa9 + xor dx, dx ; 31 d2 ; 0xf9fab lsilogic.c:333 + mov cx, strict word 00004h ; b9 04 00 ; 0xf9fad + sal ax, 1 ; d1 e0 ; 0xf9fb0 + rcl dx, 1 ; d1 d2 ; 0xf9fb2 + loop 09fb0h ; e2 fa ; 0xf9fb4 + xor cx, cx ; 31 c9 ; 0xf9fb6 + add ax, bx ; 01 d8 ; 0xf9fb8 + adc dx, cx ; 11 ca ; 0xf9fba + pop bp ; 5d ; 0xf9fbc lsilogic.c:334 + pop cx ; 59 ; 0xf9fbd + pop bx ; 5b ; 0xf9fbe + retn ; c3 ; 0xf9fbf + ; disGetNextSymbol 0xf9fc0 LB 0xe98 -> off=0x0 cb=00000000000000f8 uValue=00000000000f89c0 'lsilogic_cmd' +lsilogic_cmd: ; 0xf9fc0 LB 0xf8 + push bp ; 55 ; 0xf9fc0 lsilogic.c:336 + mov bp, sp ; 89 e5 ; 0xf9fc1 + push si ; 56 ; 0xf9fc3 + push di ; 57 ; 0xf9fc4 + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf9fc5 + mov si, ax ; 89 c6 ; 0xf9fc8 + mov word [bp-006h], dx ; 89 56 fa ; 0xf9fca + mov word [bp-00ah], bx ; 89 5e f6 ; 0xf9fcd lsilogic.c:340 + mov word [bp-014h], cx ; 89 4e ec ; 0xf9fd0 + mov [bp-00ch], ds ; 8c 5e f4 ; 0xf9fd3 lsilogic.c:341 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf9fd6 + mov word [bp-012h], ax ; 89 46 ee ; 0xf9fd9 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf9fdc lsilogic.c:342 + shr ax, 1 ; d1 e8 ; 0xf9fdf + shr ax, 1 ; d1 e8 ; 0xf9fe1 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf9fe3 + mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf9fe6 + mov dx, word [bp+00ah] ; 8b 56 0a ; 0xf9feb lsilogic.c:343 + shr dx, 1 ; d1 ea ; 0xf9fee + mov word [bp-010h], dx ; 89 56 f0 ; 0xf9ff0 + or ah, 042h ; 80 cc 42 ; 0xf9ff3 lsilogic.c:344 + mov cx, ax ; 89 c1 ; 0xf9ff6 + test byte [bp+004h], 003h ; f6 46 04 03 ; 0xf9ff8 lsilogic.c:346 + jne short 0a004h ; 75 06 ; 0xf9ffc + test byte [bp+00ah], 001h ; f6 46 0a 01 ; 0xf9ffe + je short 0a00ah ; 74 06 ; 0xfa002 + mov ax, strict word 00001h ; b8 01 00 ; 0xfa004 lsilogic.c:348 + jmp near 0a0afh ; e9 a5 00 ; 0xfa007 + mov es, [bp-006h] ; 8e 46 fa ; 0xfa00a lsilogic.c:350 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa00d + xor ax, ax ; 31 c0 ; 0xfa012 + xchg cx, ax ; 91 ; 0xfa014 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa015 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa019 + out DX, eax ; 66 ef ; 0xfa01b + xor bx, bx ; 31 db ; 0xfa01d lsilogic.c:351 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xfa01f + test ax, ax ; 85 c0 ; 0xfa022 + jnbe short 0a02dh ; 77 07 ; 0xfa024 + jne short 0a054h ; 75 2c ; 0xfa026 + cmp bx, word [bp-00eh] ; 3b 5e f2 ; 0xfa028 + jnc short 0a054h ; 73 27 ; 0xfa02b + mov di, bx ; 89 df ; 0xfa02d lsilogic.c:352 + sal di, 1 ; d1 e7 ; 0xfa02f + sal di, 1 ; d1 e7 ; 0xfa031 + mov es, [bp-014h] ; 8e 46 ec ; 0xfa033 + add di, word [bp-00ah] ; 03 7e f6 ; 0xfa036 + mov ax, word [es:di] ; 26 8b 05 ; 0xfa039 + mov cx, word [es:di+002h] ; 26 8b 4d 02 ; 0xfa03c + mov es, [bp-006h] ; 8e 46 fa ; 0xfa040 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa043 + xchg cx, ax ; 91 ; 0xfa048 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa049 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa04d + out DX, eax ; 66 ef ; 0xfa04f + inc bx ; 43 ; 0xfa051 + jmp short 0a01fh ; eb cb ; 0xfa052 + xor bx, bx ; 31 db ; 0xfa054 lsilogic.c:354 + cmp bx, word [bp-010h] ; 3b 5e f0 ; 0xfa056 + jnc short 0a0adh ; 73 52 ; 0xfa059 + mov es, [bp-006h] ; 8e 46 fa ; 0xfa05b lsilogic.c:357 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa05e + add dx, strict byte 00030h ; 83 c2 30 ; 0xfa063 + in eax, DX ; 66 ed ; 0xfa066 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xfa068 + shr eax, 010h ; 66 c1 e8 10 ; 0xfa06a + xchg dx, ax ; 92 ; 0xfa06e + test AL, strict byte 001h ; a8 01 ; 0xfa06f + je short 0a05bh ; 74 e8 ; 0xfa071 + mov es, [bp-006h] ; 8e 46 fa ; 0xfa073 lsilogic.c:359 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa076 + in eax, DX ; 66 ed ; 0xfa07b + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xfa07d + shr eax, 010h ; 66 c1 e8 10 ; 0xfa07f + xchg dx, ax ; 92 ; 0xfa083 + mov di, bx ; 89 df ; 0xfa084 + sal di, 1 ; d1 e7 ; 0xfa086 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa088 + add di, word [bp-012h] ; 03 7e ee ; 0xfa08b + mov word [es:di], ax ; 26 89 05 ; 0xfa08e + mov es, [bp-006h] ; 8e 46 fa ; 0xfa091 lsilogic.c:360 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa094 + add dx, strict byte 00030h ; 83 c2 30 ; 0xfa099 + mov ax, strict word 00001h ; b8 01 00 ; 0xfa09c + xor cx, cx ; 31 c9 ; 0xfa09f + xchg cx, ax ; 91 ; 0xfa0a1 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa0a2 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa0a6 + out DX, eax ; 66 ef ; 0xfa0a8 + inc bx ; 43 ; 0xfa0aa lsilogic.c:361 + jmp short 0a056h ; eb a9 ; 0xfa0ab + xor ax, ax ; 31 c0 ; 0xfa0ad lsilogic.c:363 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa0af lsilogic.c:364 + pop di ; 5f ; 0xfa0b2 + pop si ; 5e ; 0xfa0b3 + pop bp ; 5d ; 0xfa0b4 + retn 00008h ; c2 08 00 ; 0xfa0b5 + ; disGetNextSymbol 0xfa0b8 LB 0xda0 -> off=0x0 cb=00000000000000d7 uValue=00000000000f8ab8 'lsilogic_scsi_cmd_exec' +lsilogic_scsi_cmd_exec: ; 0xfa0b8 LB 0xd7 + push bp ; 55 ; 0xfa0b8 lsilogic.c:366 + mov bp, sp ; 89 e5 ; 0xfa0b9 + push bx ; 53 ; 0xfa0bb + push cx ; 51 ; 0xfa0bc + push si ; 56 ; 0xfa0bd + push di ; 57 ; 0xfa0be + push ax ; 50 ; 0xfa0bf + mov bx, ax ; 89 c3 ; 0xfa0c0 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa0c2 + call 09fa2h ; e8 da fe ; 0xfa0c5 lsilogic.c:372 + mov cx, dx ; 89 d1 ; 0xfa0c8 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa0ca + mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa0cd + add dx, strict byte 00040h ; 83 c2 40 ; 0xfa0d2 + xchg cx, ax ; 91 ; 0xfa0d5 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa0d6 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa0da + out DX, eax ; 66 ef ; 0xfa0dc + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa0de lsilogic.c:375 + mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa0e1 + add dx, strict byte 00030h ; 83 c2 30 ; 0xfa0e6 + in eax, DX ; 66 ed ; 0xfa0e9 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xfa0eb + shr eax, 010h ; 66 c1 e8 10 ; 0xfa0ed + xchg dx, ax ; 92 ; 0xfa0f1 + test AL, strict byte 008h ; a8 08 ; 0xfa0f2 + je short 0a0deh ; 74 e8 ; 0xfa0f4 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa0f6 lsilogic.c:377 + mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa0f9 + add dx, strict byte 00030h ; 83 c2 30 ; 0xfa0fe + mov ax, strict word 00001h ; b8 01 00 ; 0xfa101 + xor cx, cx ; 31 c9 ; 0xfa104 + xchg cx, ax ; 91 ; 0xfa106 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa107 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa10b + out DX, eax ; 66 ef ; 0xfa10d + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa10f lsilogic.c:380 + mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa112 + add dx, strict byte 00044h ; 83 c2 44 ; 0xfa117 + in eax, DX ; 66 ed ; 0xfa11a + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xfa11c + shr eax, 010h ; 66 c1 e8 10 ; 0xfa11e + xchg dx, ax ; 92 ; 0xfa122 + mov cx, dx ; 89 d1 ; 0xfa123 + mov di, ax ; 89 c7 ; 0xfa125 + mov si, dx ; 89 d6 ; 0xfa127 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa129 lsilogic.c:381 + mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa12c + add dx, strict byte 00044h ; 83 c2 44 ; 0xfa131 + in eax, DX ; 66 ed ; 0xfa134 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xfa136 + shr eax, 010h ; 66 c1 e8 10 ; 0xfa138 + xchg dx, ax ; 92 ; 0xfa13c + cmp dx, strict byte 0ffffh ; 83 fa ff ; 0xfa13d lsilogic.c:382 + jne short 0a147h ; 75 05 ; 0xfa140 + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa142 + je short 0a14ch ; 74 05 ; 0xfa145 + mov ax, strict word 00005h ; b8 05 00 ; 0xfa147 lsilogic.c:383 + jmp short 0a186h ; eb 3a ; 0xfa14a + test ch, 080h ; f6 c5 80 ; 0xfa14c lsilogic.c:384 + je short 0a175h ; 74 24 ; 0xfa14f + lea ax, [bx+038h] ; 8d 47 38 ; 0xfa151 lsilogic.c:392 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xfa154 + call 09fa2h ; e8 48 fe ; 0xfa157 + mov cx, dx ; 89 d1 ; 0xfa15a + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa15c + mov dx, word [es:bx+000b8h] ; 26 8b 97 b8 00 ; 0xfa15f + add dx, strict byte 00044h ; 83 c2 44 ; 0xfa164 + xchg cx, ax ; 91 ; 0xfa167 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa168 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa16c + out DX, eax ; 66 ef ; 0xfa16e + mov ax, strict word 00004h ; b8 04 00 ; 0xfa170 lsilogic.c:393 + jmp short 0a186h ; eb 11 ; 0xfa173 + test si, si ; 85 f6 ; 0xfa175 lsilogic.c:396 + jne short 0a17fh ; 75 06 ; 0xfa177 + cmp di, 0cafeh ; 81 ff fe ca ; 0xfa179 + je short 0a184h ; 74 05 ; 0xfa17d + mov ax, strict word 00003h ; b8 03 00 ; 0xfa17f lsilogic.c:397 + jmp short 0a186h ; eb 02 ; 0xfa182 + xor ax, ax ; 31 c0 ; 0xfa184 lsilogic.c:399 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xfa186 lsilogic.c:400 + pop di ; 5f ; 0xfa189 + pop si ; 5e ; 0xfa18a + pop cx ; 59 ; 0xfa18b + pop bx ; 5b ; 0xfa18c + pop bp ; 5d ; 0xfa18d + retn ; c3 ; 0xfa18e + ; disGetNextSymbol 0xfa18f LB 0xcc9 -> off=0x0 cb=00000000000000e0 uValue=00000000000f8b8f 'lsilogic_scsi_cmd_data_out' +lsilogic_scsi_cmd_data_out: ; 0xfa18f LB 0xe0 + push bp ; 55 ; 0xfa18f lsilogic.c:402 + mov bp, sp ; 89 e5 ; 0xfa190 + push cx ; 51 ; 0xfa192 + push si ; 56 ; 0xfa193 + push di ; 57 ; 0xfa194 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa195 + mov di, ax ; 89 c7 ; 0xfa198 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa19a + mov byte [bp-008h], bl ; 88 5e f8 ; 0xfa19d + mov si, ax ; 89 c6 ; 0xfa1a0 lsilogic.c:405 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xfa1a2 + mov cx, strict word 00030h ; b9 30 00 ; 0xfa1a5 lsilogic.c:408 + xor bx, bx ; 31 db ; 0xfa1a8 + call 0ab30h ; e8 83 09 ; 0xfa1aa + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa1ad lsilogic.c:410 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa1b0 + mov byte [es:di], al ; 26 88 05 ; 0xfa1b3 + mov word [es:di+001h], strict word 00000h ; 26 c7 45 01 00 00 ; 0xfa1b6 lsilogic.c:411 + mov byte [es:di+003h], 000h ; 26 c6 45 03 00 ; 0xfa1bc lsilogic.c:413 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa1c1 lsilogic.c:414 + mov byte [es:di+004h], al ; 26 88 45 04 ; 0xfa1c4 + mov byte [es:di+005h], 000h ; 26 c6 45 05 00 ; 0xfa1c8 lsilogic.c:415 + mov word [es:di+008h], 0cafeh ; 26 c7 45 08 fe ca ; 0xfa1cd lsilogic.c:416 + mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xfa1d3 + mov word [es:di+014h], strict word 00000h ; 26 c7 45 14 00 00 ; 0xfa1d9 lsilogic.c:417 + mov word [es:di+016h], 00100h ; 26 c7 45 16 00 01 ; 0xfa1df + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xfa1e5 lsilogic.c:418 + mov word [es:di+028h], ax ; 26 89 45 28 ; 0xfa1e8 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa1ec + mov word [es:di+02ah], ax ; 26 89 45 2a ; 0xfa1ef + xor di, di ; 31 ff ; 0xfa1f3 lsilogic.c:419 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa1f5 + xor ah, ah ; 30 e4 ; 0xfa1f8 + cmp di, ax ; 39 c7 ; 0xfa1fa + jnl short 0a218h ; 7d 1a ; 0xfa1fc + les bx, [bp+004h] ; c4 5e 04 ; 0xfa1fe lsilogic.c:420 + add bx, di ; 01 fb ; 0xfa201 + mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xfa203 + mov dx, si ; 89 f2 ; 0xfa206 + add dx, di ; 01 fa ; 0xfa208 + mov al, byte [es:bx] ; 26 8a 07 ; 0xfa20a + mov es, cx ; 8e c1 ; 0xfa20d + mov bx, dx ; 89 d3 ; 0xfa20f + mov byte [es:bx+018h], al ; 26 88 47 18 ; 0xfa211 + inc di ; 47 ; 0xfa215 + jmp short 0a1f5h ; eb dd ; 0xfa216 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa218 lsilogic.c:422 + xor ah, ah ; 30 e4 ; 0xfa21b + mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa21d + mov word [es:si+030h], strict word 00000h ; 26 c7 44 30 00 00 ; 0xfa220 + mov byte [es:si+032h], ah ; 26 88 64 32 ; 0xfa226 + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xfa22a + or word [es:si+030h], dx ; 26 09 54 30 ; 0xfa22d + or word [es:si+032h], ax ; 26 09 44 32 ; 0xfa231 + mov byte [es:si+033h], ah ; 26 88 64 33 ; 0xfa235 lsilogic.c:423 + or byte [es:si+033h], 0d1h ; 26 80 4c 33 d1 ; 0xfa239 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xfa23e lsilogic.c:430 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xfa241 + call 09fa2h ; e8 5b fd ; 0xfa244 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa247 + mov word [es:si+034h], strict word 00000h ; 26 c7 44 34 00 00 ; 0xfa24a + mov word [es:si+036h], strict word 00000h ; 26 c7 44 36 00 00 ; 0xfa250 + or word [es:si+034h], ax ; 26 09 44 34 ; 0xfa256 + or word [es:si+036h], dx ; 26 09 54 36 ; 0xfa25a + mov ax, si ; 89 f0 ; 0xfa25e lsilogic.c:432 + mov dx, es ; 8c c2 ; 0xfa260 + call 0a0b8h ; e8 53 fe ; 0xfa262 + lea sp, [bp-006h] ; 8d 66 fa ; 0xfa265 lsilogic.c:433 + pop di ; 5f ; 0xfa268 + pop si ; 5e ; 0xfa269 + pop cx ; 59 ; 0xfa26a + pop bp ; 5d ; 0xfa26b + retn 0000eh ; c2 0e 00 ; 0xfa26c + ; disGetNextSymbol 0xfa26f LB 0xbe9 -> off=0x0 cb=00000000000000e0 uValue=00000000000f8c6f 'lsilogic_scsi_cmd_data_in' +lsilogic_scsi_cmd_data_in: ; 0xfa26f LB 0xe0 + push bp ; 55 ; 0xfa26f lsilogic.c:435 + mov bp, sp ; 89 e5 ; 0xfa270 + push cx ; 51 ; 0xfa272 + push si ; 56 ; 0xfa273 + push di ; 57 ; 0xfa274 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa275 + mov di, ax ; 89 c7 ; 0xfa278 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xfa27a + mov byte [bp-008h], bl ; 88 5e f8 ; 0xfa27d + mov si, ax ; 89 c6 ; 0xfa280 lsilogic.c:438 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xfa282 + mov cx, strict word 00030h ; b9 30 00 ; 0xfa285 lsilogic.c:441 + xor bx, bx ; 31 db ; 0xfa288 + call 0ab30h ; e8 a3 08 ; 0xfa28a + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xfa28d lsilogic.c:443 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xfa290 + mov byte [es:di], al ; 26 88 05 ; 0xfa293 + mov word [es:di+001h], strict word 00000h ; 26 c7 45 01 00 00 ; 0xfa296 lsilogic.c:444 + mov byte [es:di+003h], 000h ; 26 c6 45 03 00 ; 0xfa29c lsilogic.c:446 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa2a1 lsilogic.c:447 + mov byte [es:di+004h], al ; 26 88 45 04 ; 0xfa2a4 + mov byte [es:di+005h], 000h ; 26 c6 45 05 00 ; 0xfa2a8 lsilogic.c:448 + mov word [es:di+008h], 0cafeh ; 26 c7 45 08 fe ca ; 0xfa2ad lsilogic.c:449 + mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xfa2b3 + mov word [es:di+014h], strict word 00000h ; 26 c7 45 14 00 00 ; 0xfa2b9 lsilogic.c:450 + mov word [es:di+016h], 00200h ; 26 c7 45 16 00 02 ; 0xfa2bf + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xfa2c5 lsilogic.c:451 + mov word [es:di+028h], ax ; 26 89 45 28 ; 0xfa2c8 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa2cc + mov word [es:di+02ah], ax ; 26 89 45 2a ; 0xfa2cf + xor di, di ; 31 ff ; 0xfa2d3 lsilogic.c:452 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xfa2d5 + xor ah, ah ; 30 e4 ; 0xfa2d8 + cmp di, ax ; 39 c7 ; 0xfa2da + jnl short 0a2f8h ; 7d 1a ; 0xfa2dc + les bx, [bp+004h] ; c4 5e 04 ; 0xfa2de lsilogic.c:453 + add bx, di ; 01 fb ; 0xfa2e1 + mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xfa2e3 + mov dx, si ; 89 f2 ; 0xfa2e6 + add dx, di ; 01 fa ; 0xfa2e8 + mov al, byte [es:bx] ; 26 8a 07 ; 0xfa2ea + mov es, cx ; 8e c1 ; 0xfa2ed + mov bx, dx ; 89 d3 ; 0xfa2ef + mov byte [es:bx+018h], al ; 26 88 47 18 ; 0xfa2f1 + inc di ; 47 ; 0xfa2f5 + jmp short 0a2d5h ; eb dd ; 0xfa2f6 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xfa2f8 lsilogic.c:455 + xor ah, ah ; 30 e4 ; 0xfa2fb + mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa2fd + mov word [es:si+030h], strict word 00000h ; 26 c7 44 30 00 00 ; 0xfa300 + mov byte [es:si+032h], ah ; 26 88 64 32 ; 0xfa306 + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xfa30a + or word [es:si+030h], dx ; 26 09 54 30 ; 0xfa30d + or word [es:si+032h], ax ; 26 09 44 32 ; 0xfa311 + mov byte [es:si+033h], ah ; 26 88 64 33 ; 0xfa315 lsilogic.c:456 + or byte [es:si+033h], 0d1h ; 26 80 4c 33 d1 ; 0xfa319 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xfa31e lsilogic.c:463 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xfa321 + call 09fa2h ; e8 7b fc ; 0xfa324 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xfa327 + mov word [es:si+034h], strict word 00000h ; 26 c7 44 34 00 00 ; 0xfa32a + mov word [es:si+036h], strict word 00000h ; 26 c7 44 36 00 00 ; 0xfa330 + or word [es:si+034h], ax ; 26 09 44 34 ; 0xfa336 + or word [es:si+036h], dx ; 26 09 54 36 ; 0xfa33a + mov ax, si ; 89 f0 ; 0xfa33e lsilogic.c:465 + mov dx, es ; 8c c2 ; 0xfa340 + call 0a0b8h ; e8 73 fd ; 0xfa342 + lea sp, [bp-006h] ; 8d 66 fa ; 0xfa345 lsilogic.c:466 + pop di ; 5f ; 0xfa348 + pop si ; 5e ; 0xfa349 + pop cx ; 59 ; 0xfa34a + pop bp ; 5d ; 0xfa34b + retn 0000eh ; c2 0e 00 ; 0xfa34c + ; disGetNextSymbol 0xfa34f LB 0xb09 -> off=0x0 cb=00000000000000f3 uValue=00000000000f8d4f 'lsilogic_scsi_hba_init' +lsilogic_scsi_hba_init: ; 0xfa34f LB 0xf3 + push bp ; 55 ; 0xfa34f lsilogic.c:471 + mov bp, sp ; 89 e5 ; 0xfa350 + push bx ; 53 ; 0xfa352 + push cx ; 51 ; 0xfa353 + push si ; 56 ; 0xfa354 + push di ; 57 ; 0xfa355 + sub sp, strict byte 0002ch ; 83 ec 2c ; 0xfa356 + mov si, ax ; 89 c6 ; 0xfa359 + mov di, dx ; 89 d7 ; 0xfa35b + mov es, dx ; 8e c2 ; 0xfa35d lsilogic.c:483 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa35f + add dx, strict byte 00004h ; 83 c2 04 ; 0xfa364 + mov ax, strict word 00004h ; b8 04 00 ; 0xfa367 + xor cx, cx ; 31 c9 ; 0xfa36a + xchg cx, ax ; 91 ; 0xfa36c + sal eax, 010h ; 66 c1 e0 10 ; 0xfa36d + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa371 + out DX, eax ; 66 ef ; 0xfa373 + mov es, di ; 8e c7 ; 0xfa375 lsilogic.c:484 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa377 + add dx, strict byte 00004h ; 83 c2 04 ; 0xfa37c + mov ax, strict word 00002h ; b8 02 00 ; 0xfa37f + xor cx, cx ; 31 c9 ; 0xfa382 + xchg cx, ax ; 91 ; 0xfa384 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa385 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa389 + out DX, eax ; 66 ef ; 0xfa38b + mov es, di ; 8e c7 ; 0xfa38d lsilogic.c:485 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa38f + add dx, strict byte 00004h ; 83 c2 04 ; 0xfa394 + mov ax, strict word 00007h ; b8 07 00 ; 0xfa397 + xor cx, cx ; 31 c9 ; 0xfa39a + xchg cx, ax ; 91 ; 0xfa39c + sal eax, 010h ; 66 c1 e0 10 ; 0xfa39d + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa3a1 + out DX, eax ; 66 ef ; 0xfa3a3 + mov es, di ; 8e c7 ; 0xfa3a5 lsilogic.c:486 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa3a7 + add dx, strict byte 00004h ; 83 c2 04 ; 0xfa3ac + mov ax, strict word 0000dh ; b8 0d 00 ; 0xfa3af + xor cx, cx ; 31 c9 ; 0xfa3b2 + xchg cx, ax ; 91 ; 0xfa3b4 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa3b5 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa3b9 + out DX, eax ; 66 ef ; 0xfa3bb + mov es, di ; 8e c7 ; 0xfa3bd lsilogic.c:487 + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa3bf + add dx, strict byte 00008h ; 83 c2 08 ; 0xfa3c4 + mov ax, strict word 00004h ; b8 04 00 ; 0xfa3c7 + xor cx, cx ; 31 c9 ; 0xfa3ca + xchg cx, ax ; 91 ; 0xfa3cc + sal eax, 010h ; 66 c1 e0 10 ; 0xfa3cd + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa3d1 + out DX, eax ; 66 ef ; 0xfa3d3 + mov byte [bp-034h], 001h ; c6 46 cc 01 ; 0xfa3d5 lsilogic.c:489 + mov byte [bp-031h], 002h ; c6 46 cf 02 ; 0xfa3d9 lsilogic.c:490 + xor ax, ax ; 31 c0 ; 0xfa3dd lsilogic.c:491 + mov word [bp-024h], ax ; 89 46 dc ; 0xfa3df + mov word [bp-022h], ax ; 89 46 de ; 0xfa3e2 + mov word [bp-020h], ax ; 89 46 e0 ; 0xfa3e5 lsilogic.c:492 + mov word [bp-01eh], ax ; 89 46 e2 ; 0xfa3e8 + mov byte [bp-02eh], 001h ; c6 46 d2 01 ; 0xfa3eb lsilogic.c:493 + mov byte [bp-02fh], 004h ; c6 46 d1 04 ; 0xfa3ef lsilogic.c:494 + mov word [bp-028h], 00080h ; c7 46 d8 80 00 ; 0xfa3f3 lsilogic.c:495 + mov ax, strict word 00014h ; b8 14 00 ; 0xfa3f8 lsilogic.c:496 + push ax ; 50 ; 0xfa3fb + lea dx, [bp-01ch] ; 8d 56 e4 ; 0xfa3fc + push SS ; 16 ; 0xfa3ff + push dx ; 52 ; 0xfa400 + mov ax, strict word 00018h ; b8 18 00 ; 0xfa401 + push ax ; 50 ; 0xfa404 + mov cx, ss ; 8c d1 ; 0xfa405 + lea bx, [bp-034h] ; 8d 5e cc ; 0xfa407 + mov ax, si ; 89 f0 ; 0xfa40a + mov dx, di ; 89 fa ; 0xfa40c + call 09fc0h ; e8 af fb ; 0xfa40e + test ax, ax ; 85 c0 ; 0xfa411 lsilogic.c:497 + jne short 0a436h ; 75 21 ; 0xfa413 + lea ax, [si+038h] ; 8d 44 38 ; 0xfa415 lsilogic.c:500 + mov dx, di ; 89 fa ; 0xfa418 + call 09fa2h ; e8 85 fb ; 0xfa41a + mov cx, dx ; 89 d1 ; 0xfa41d + mov es, di ; 8e c7 ; 0xfa41f + mov dx, word [es:si+000b8h] ; 26 8b 94 b8 00 ; 0xfa421 + add dx, strict byte 00044h ; 83 c2 44 ; 0xfa426 + xchg cx, ax ; 91 ; 0xfa429 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa42a + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa42e + out DX, eax ; 66 ef ; 0xfa430 + xor ax, ax ; 31 c0 ; 0xfa432 lsilogic.c:501 + jmp short 0a439h ; eb 03 ; 0xfa434 + mov ax, strict word 00001h ; b8 01 00 ; 0xfa436 lsilogic.c:504 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xfa439 lsilogic.c:505 + pop di ; 5f ; 0xfa43c + pop si ; 5e ; 0xfa43d + pop cx ; 59 ; 0xfa43e + pop bx ; 5b ; 0xfa43f + pop bp ; 5d ; 0xfa440 + retn ; c3 ; 0xfa441 + ; disGetNextSymbol 0xfa442 LB 0xa16 -> off=0x0 cb=0000000000000059 uValue=00000000000f8e42 'lsilogic_scsi_init' +lsilogic_scsi_init: ; 0xfa442 LB 0x59 + push bp ; 55 ; 0xfa442 lsilogic.c:510 + mov bp, sp ; 89 e5 ; 0xfa443 + push si ; 56 ; 0xfa445 + push di ; 57 ; 0xfa446 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xfa447 + mov si, ax ; 89 c6 ; 0xfa44a + mov word [bp-008h], dx ; 89 56 f8 ; 0xfa44c + mov byte [bp-006h], cl ; 88 4e fa ; 0xfa44f lsilogic.c:517 + xor al, al ; 30 c0 ; 0xfa452 + mov byte [bp-005h], al ; 88 46 fb ; 0xfa454 + mov byte [bp-00ah], bl ; 88 5e f6 ; 0xfa457 + mov byte [bp-009h], al ; 88 46 f7 ; 0xfa45a + mov bx, strict word 00010h ; bb 10 00 ; 0xfa45d + mov dx, word [bp-006h] ; 8b 56 fa ; 0xfa460 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa463 + call 0a928h ; e8 bf 04 ; 0xfa466 + test AL, strict byte 001h ; a8 01 ; 0xfa469 lsilogic.c:521 + je short 0a491h ; 74 24 ; 0xfa46b + and AL, strict byte 0f0h ; 24 f0 ; 0xfa46d lsilogic.c:523 + mov di, ax ; 89 c7 ; 0xfa46f + mov cx, strict word 00007h ; b9 07 00 ; 0xfa471 lsilogic.c:526 + mov bx, strict word 00004h ; bb 04 00 ; 0xfa474 + mov dx, word [bp-006h] ; 8b 56 fa ; 0xfa477 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xfa47a + call 0a967h ; e8 e7 04 ; 0xfa47d + mov es, [bp-008h] ; 8e 46 f8 ; 0xfa480 lsilogic.c:529 + mov word [es:si+000b8h], di ; 26 89 bc b8 00 ; 0xfa483 + mov ax, si ; 89 f0 ; 0xfa488 lsilogic.c:530 + mov dx, es ; 8c c2 ; 0xfa48a + call 0a34fh ; e8 c0 fe ; 0xfa48c + jmp short 0a494h ; eb 03 ; 0xfa48f + mov ax, strict word 00001h ; b8 01 00 ; 0xfa491 lsilogic.c:535 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa494 lsilogic.c:536 + pop di ; 5f ; 0xfa497 + pop si ; 5e ; 0xfa498 + pop bp ; 5d ; 0xfa499 + retn ; c3 ; 0xfa49a + ; disGetNextSymbol 0xfa49b LB 0x9bd -> off=0x0 cb=0000000000000020 uValue=00000000000f8e9b 'apm_out_str' +apm_out_str: ; 0xfa49b LB 0x20 + push bp ; 55 ; 0xfa49b apm.c:142 + mov bp, sp ; 89 e5 ; 0xfa49c + push bx ; 53 ; 0xfa49e + push dx ; 52 ; 0xfa49f + mov bx, ax ; 89 c3 ; 0xfa4a0 + cmp byte [bx], 000h ; 80 3f 00 ; 0xfa4a2 apm.c:144 + je short 0a4b4h ; 74 0d ; 0xfa4a5 + mov dx, 0040fh ; ba 0f 04 ; 0xfa4a7 apm.c:145 + mov al, byte [bx] ; 8a 07 ; 0xfa4aa + out DX, AL ; ee ; 0xfa4ac + inc bx ; 43 ; 0xfa4ad + mov al, byte [bx] ; 8a 07 ; 0xfa4ae + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xfa4b0 + jne short 0a4ach ; 75 f8 ; 0xfa4b2 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa4b4 apm.c:146 + pop dx ; 5a ; 0xfa4b7 + pop bx ; 5b ; 0xfa4b8 + pop bp ; 5d ; 0xfa4b9 + retn ; c3 ; 0xfa4ba + ; disGetNextSymbol 0xfa4bb LB 0x99d -> off=0x1e cb=00000000000000d2 uValue=00000000000f8ed9 'apm_function' + db 0f9h, 0a4h, 0a7h, 0a5h, 00bh, 0a5h, 079h, 0a5h, 0a7h, 0a5h, 026h, 0a5h, 0a7h, 0a5h, 02bh, 0a5h + db 079h, 0a5h, 079h, 0a5h, 063h, 0a5h, 074h, 0a5h, 079h, 0a5h, 079h, 0a5h, 05ch, 0a5h +apm_function: ; 0xfa4d9 LB 0xd2 + push bp ; 55 ; 0xfa4d9 apm.c:148 + mov bp, sp ; 89 e5 ; 0xfa4da + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xfa4dc apm.c:152 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xfa4e0 apm.c:153 + xor ah, ah ; 30 e4 ; 0xfa4e3 + cmp ax, strict word 0000eh ; 3d 0e 00 ; 0xfa4e5 + jnbe short 0a54fh ; 77 65 ; 0xfa4e8 + mov bx, ax ; 89 c3 ; 0xfa4ea + sal bx, 1 ; d1 e3 ; 0xfa4ec + mov dx, word [bp+018h] ; 8b 56 18 ; 0xfa4ee + or dl, 001h ; 80 ca 01 ; 0xfa4f1 + jmp word [cs:bx-05b45h] ; 2e ff a7 bb a4 ; 0xfa4f4 + mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xfa4f9 apm.c:155 + mov word [bp+00ch], 0504dh ; c7 46 0c 4d 50 ; 0xfa4fe apm.c:156 + mov word [bp+010h], strict word 00003h ; c7 46 10 03 00 ; 0xfa503 apm.c:157 + jmp near 0a5a7h ; e9 9c 00 ; 0xfa508 apm.c:158 + mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xfa50b apm.c:168 + mov word [bp+00ch], 0abbbh ; c7 46 0c bb ab ; 0xfa510 apm.c:169 + mov word [bp+010h], 0f000h ; c7 46 10 00 f0 ; 0xfa515 apm.c:170 + mov ax, strict word 0fff0h ; b8 f0 ff ; 0xfa51a apm.c:171 + mov word [bp+006h], ax ; 89 46 06 ; 0xfa51d + mov word [bp+004h], ax ; 89 46 04 ; 0xfa520 apm.c:172 + jmp near 0a5a7h ; e9 81 00 ; 0xfa523 apm.c:173 + sti ; fb ; 0xfa526 apm.c:190 + hlt ; f4 ; 0xfa527 apm.c:191 + jmp near 0a5a7h ; e9 7c 00 ; 0xfa528 apm.c:192 + cmp word [bp+010h], strict byte 00003h ; 83 7e 10 03 ; 0xfa52b apm.c:196 + je short 0a54ah ; 74 19 ; 0xfa52f + cmp word [bp+010h], strict byte 00002h ; 83 7e 10 02 ; 0xfa531 + je short 0a545h ; 74 0e ; 0xfa535 + cmp word [bp+010h], strict byte 00001h ; 83 7e 10 01 ; 0xfa537 + jne short 0a551h ; 75 14 ; 0xfa53b + mov ax, 00d3ch ; b8 3c 0d ; 0xfa53d apm.c:198 + call 0a49bh ; e8 58 ff ; 0xfa540 + jmp short 0a5a7h ; eb 62 ; 0xfa543 apm.c:199 + mov ax, 00d44h ; b8 44 0d ; 0xfa545 apm.c:201 + jmp short 0a540h ; eb f6 ; 0xfa548 + mov ax, 00d4ch ; b8 4c 0d ; 0xfa54a apm.c:204 + jmp short 0a540h ; eb f1 ; 0xfa54d + jmp short 0a579h ; eb 28 ; 0xfa54f + or ah, 00ah ; 80 cc 0a ; 0xfa551 apm.c:207 + mov word [bp+012h], ax ; 89 46 12 ; 0xfa554 + mov word [bp+018h], dx ; 89 56 18 ; 0xfa557 apm.c:208 + jmp short 0a5a7h ; eb 4b ; 0xfa55a apm.c:210 + mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xfa55c apm.c:212 + jmp short 0a5a7h ; eb 44 ; 0xfa561 apm.c:213 + mov word [bp+00ch], 001ffh ; c7 46 0c ff 01 ; 0xfa563 apm.c:220 + mov word [bp+010h], 080ffh ; c7 46 10 ff 80 ; 0xfa568 apm.c:221 + mov word [bp+00eh], strict word 0ffffh ; c7 46 0e ff ff ; 0xfa56d apm.c:222 + jmp short 0a5a7h ; eb 33 ; 0xfa572 apm.c:223 + or ah, 080h ; 80 cc 80 ; 0xfa574 apm.c:226 + jmp short 0a554h ; eb db ; 0xfa577 + mov bx, 00dcch ; bb cc 0d ; 0xfa579 apm.c:230 + mov cx, ds ; 8c d9 ; 0xfa57c + mov ax, strict word 00004h ; b8 04 00 ; 0xfa57e + call 01919h ; e8 95 73 ; 0xfa581 + push word [bp+00ch] ; ff 76 0c ; 0xfa584 + push word [bp+012h] ; ff 76 12 ; 0xfa587 + mov ax, 00d55h ; b8 55 0d ; 0xfa58a + push ax ; 50 ; 0xfa58d + mov ax, strict word 00004h ; b8 04 00 ; 0xfa58e + push ax ; 50 ; 0xfa591 + call 0195ch ; e8 c7 73 ; 0xfa592 + add sp, strict byte 00008h ; 83 c4 08 ; 0xfa595 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xfa598 apm.c:231 + xor ah, ah ; 30 e4 ; 0xfa59b + or ah, 00ch ; 80 cc 0c ; 0xfa59d + mov word [bp+012h], ax ; 89 46 12 ; 0xfa5a0 + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xfa5a3 apm.c:232 + mov sp, bp ; 89 ec ; 0xfa5a7 apm.c:234 + pop bp ; 5d ; 0xfa5a9 + retn ; c3 ; 0xfa5aa + ; disGetNextSymbol 0xfa5ab LB 0x8ad -> off=0x0 cb=0000000000000024 uValue=00000000000f8fab 'pci16_select_reg' +pci16_select_reg: ; 0xfa5ab LB 0x24 + push bp ; 55 ; 0xfa5ab pcibios.c:198 + mov bp, sp ; 89 e5 ; 0xfa5ac + push bx ; 53 ; 0xfa5ae + and dl, 0fch ; 80 e2 fc ; 0xfa5af pcibios.c:200 + mov bx, dx ; 89 d3 ; 0xfa5b2 + mov dx, 00cf8h ; ba f8 0c ; 0xfa5b4 + movzx eax, ax ; 66 0f b7 c0 ; 0xfa5b7 + sal eax, 008h ; 66 c1 e0 08 ; 0xfa5bb + or eax, strict dword 080000000h ; 66 0d 00 00 00 80 ; 0xfa5bf + db 08ah, 0c3h + ; mov al, bl ; 8a c3 ; 0xfa5c5 + out DX, eax ; 66 ef ; 0xfa5c7 + lea sp, [bp-002h] ; 8d 66 fe ; 0xfa5c9 pcibios.c:201 + pop bx ; 5b ; 0xfa5cc + pop bp ; 5d ; 0xfa5cd + retn ; c3 ; 0xfa5ce + ; disGetNextSymbol 0xfa5cf LB 0x889 -> off=0x0 cb=00000000000000f3 uValue=00000000000f8fcf 'pci16_find_device' +pci16_find_device: ; 0xfa5cf LB 0xf3 + push bp ; 55 ; 0xfa5cf pcibios.c:233 + mov bp, sp ; 89 e5 ; 0xfa5d0 + push si ; 56 ; 0xfa5d2 + push di ; 57 ; 0xfa5d3 + sub sp, strict byte 0000ah ; 83 ec 0a ; 0xfa5d4 + push ax ; 50 ; 0xfa5d7 + push dx ; 52 ; 0xfa5d8 + mov si, bx ; 89 de ; 0xfa5d9 + mov di, cx ; 89 cf ; 0xfa5db + test cx, cx ; 85 c9 ; 0xfa5dd pcibios.c:243 + xor bx, bx ; 31 db ; 0xfa5df pcibios.c:250 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xfa5e1 pcibios.c:251 + test bl, 007h ; f6 c3 07 ; 0xfa5e5 pcibios.c:261 + jne short 0a617h ; 75 2d ; 0xfa5e8 + mov dx, strict word 0000eh ; ba 0e 00 ; 0xfa5ea pcibios.c:262 + mov ax, bx ; 89 d8 ; 0xfa5ed + call 0a5abh ; e8 b9 ff ; 0xfa5ef + mov dx, 00cfeh ; ba fe 0c ; 0xfa5f2 pcibios.c:263 + in AL, DX ; ec ; 0xfa5f5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xfa5f6 + mov byte [bp-006h], al ; 88 46 fa ; 0xfa5f8 + cmp AL, strict byte 0ffh ; 3c ff ; 0xfa5fb pcibios.c:264 + jne short 0a605h ; 75 06 ; 0xfa5fd + add bx, strict byte 00008h ; 83 c3 08 ; 0xfa5ff pcibios.c:265 + jmp near 0a69dh ; e9 98 00 ; 0xfa602 pcibios.c:266 + test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xfa605 pcibios.c:268 + je short 0a612h ; 74 07 ; 0xfa609 + mov word [bp-00ah], strict word 00001h ; c7 46 f6 01 00 ; 0xfa60b pcibios.c:269 + jmp short 0a617h ; eb 05 ; 0xfa610 pcibios.c:270 + mov word [bp-00ah], strict word 00008h ; c7 46 f6 08 00 ; 0xfa612 pcibios.c:271 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xfa617 pcibios.c:282 + and AL, strict byte 007h ; 24 07 ; 0xfa61a + cmp AL, strict byte 001h ; 3c 01 ; 0xfa61c + jne short 0a63eh ; 75 1e ; 0xfa61e + mov al, bh ; 88 f8 ; 0xfa620 + xor ah, ah ; 30 e4 ; 0xfa622 + test ax, ax ; 85 c0 ; 0xfa624 + jne short 0a63eh ; 75 16 ; 0xfa626 + mov dx, strict word 0001ah ; ba 1a 00 ; 0xfa628 pcibios.c:284 + mov ax, bx ; 89 d8 ; 0xfa62b + call 0a5abh ; e8 7b ff ; 0xfa62d + mov dx, 00cfeh ; ba fe 0c ; 0xfa630 pcibios.c:285 + in AL, DX ; ec ; 0xfa633 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xfa634 + cmp al, byte [bp-008h] ; 3a 46 f8 ; 0xfa636 pcibios.c:286 + jbe short 0a63eh ; 76 03 ; 0xfa639 + mov byte [bp-008h], al ; 88 46 f8 ; 0xfa63b pcibios.c:287 + test di, di ; 85 ff ; 0xfa63e pcibios.c:291 + je short 0a647h ; 74 05 ; 0xfa640 + mov dx, strict word 00008h ; ba 08 00 ; 0xfa642 + jmp short 0a649h ; eb 02 ; 0xfa645 + xor dx, dx ; 31 d2 ; 0xfa647 + mov ax, bx ; 89 d8 ; 0xfa649 + call 0a5abh ; e8 5d ff ; 0xfa64b + mov dx, 00cfch ; ba fc 0c ; 0xfa64e pcibios.c:292 + in eax, DX ; 66 ed ; 0xfa651 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xfa653 + shr eax, 010h ; 66 c1 e8 10 ; 0xfa655 + xchg dx, ax ; 92 ; 0xfa659 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xfa65a + mov word [bp-00eh], strict word 00000h ; c7 46 f2 00 00 ; 0xfa65d pcibios.c:293 + test di, di ; 85 ff ; 0xfa662 pcibios.c:296 + je short 0a681h ; 74 1b ; 0xfa664 + cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xfa666 pcibios.c:297 + je short 0a675h ; 74 09 ; 0xfa66a + mov ax, dx ; 89 d0 ; 0xfa66c pcibios.c:298 + mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xfa66e + jmp short 0a681h ; eb 0c ; 0xfa673 pcibios.c:299 + mov cx, strict word 00008h ; b9 08 00 ; 0xfa675 pcibios.c:300 + shr dx, 1 ; d1 ea ; 0xfa678 + rcr ax, 1 ; d1 d8 ; 0xfa67a + loop 0a678h ; e2 fa ; 0xfa67c + mov word [bp-00ch], dx ; 89 56 f4 ; 0xfa67e + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xfa681 pcibios.c:307 + cmp dx, word [bp-012h] ; 3b 56 ee ; 0xfa684 + jne short 0a68eh ; 75 05 ; 0xfa687 + cmp ax, word [bp-010h] ; 3b 46 f0 ; 0xfa689 + je short 0a694h ; 74 06 ; 0xfa68c + cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xfa68e pcibios.c:308 + je short 0a69ah ; 74 06 ; 0xfa692 + dec si ; 4e ; 0xfa694 + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xfa695 + je short 0a6adh ; 74 13 ; 0xfa698 + add bx, word [bp-00ah] ; 03 5e f6 ; 0xfa69a pcibios.c:316 + mov al, bh ; 88 f8 ; 0xfa69d pcibios.c:317 + xor ah, ah ; 30 e4 ; 0xfa69f + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xfa6a1 + xor dh, dh ; 30 f6 ; 0xfa6a4 + cmp ax, dx ; 39 d0 ; 0xfa6a6 + jnbe short 0a6adh ; 77 03 ; 0xfa6a8 + jmp near 0a5e5h ; e9 38 ff ; 0xfa6aa + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xfa6ad pcibios.c:319 + jne short 0a6b6h ; 75 04 ; 0xfa6b0 pcibios.c:323 + mov ax, bx ; 89 d8 ; 0xfa6b2 + jmp short 0a6b9h ; eb 03 ; 0xfa6b4 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xfa6b6 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa6b9 pcibios.c:324 + pop di ; 5f ; 0xfa6bc + pop si ; 5e ; 0xfa6bd + pop bp ; 5d ; 0xfa6be + retn 00002h ; c2 02 00 ; 0xfa6bf + ; disGetNextSymbol 0xfa6c2 LB 0x796 -> off=0xc cb=00000000000001db uValue=00000000000f90ce 'pci16_function' + db 0b5h, 0a7h, 0ceh, 0a7h, 0e0h, 0a7h, 0f4h, 0a7h, 006h, 0a8h, 019h, 0a8h +pci16_function: ; 0xfa6ce LB 0x1db + push bp ; 55 ; 0xfa6ce pcibios.c:326 + mov bp, sp ; 89 e5 ; 0xfa6cf + push si ; 56 ; 0xfa6d1 + push di ; 57 ; 0xfa6d2 + push ax ; 50 ; 0xfa6d3 + push ax ; 50 ; 0xfa6d4 + and word [bp+020h], 000ffh ; 81 66 20 ff 00 ; 0xfa6d5 pcibios.c:333 + and word [bp+02ch], strict byte 0fffeh ; 83 66 2c fe ; 0xfa6da pcibios.c:334 + mov bx, word [bp+020h] ; 8b 5e 20 ; 0xfa6de pcibios.c:336 + xor bh, bh ; 30 ff ; 0xfa6e1 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa6e3 + xor ah, ah ; 30 e4 ; 0xfa6e6 + cmp bx, strict byte 00003h ; 83 fb 03 ; 0xfa6e8 + jc short 0a700h ; 72 13 ; 0xfa6eb + jbe short 0a756h ; 76 67 ; 0xfa6ed + cmp bx, strict byte 0000eh ; 83 fb 0e ; 0xfa6ef + je short 0a758h ; 74 64 ; 0xfa6f2 + cmp bx, strict byte 00008h ; 83 fb 08 ; 0xfa6f4 + jc short 0a70ah ; 72 11 ; 0xfa6f7 + cmp bx, strict byte 0000dh ; 83 fb 0d ; 0xfa6f9 + jbe short 0a761h ; 76 63 ; 0xfa6fc + jmp short 0a70ah ; eb 0a ; 0xfa6fe + cmp bx, strict byte 00002h ; 83 fb 02 ; 0xfa700 + je short 0a729h ; 74 24 ; 0xfa703 + cmp bx, strict byte 00001h ; 83 fb 01 ; 0xfa705 + je short 0a70dh ; 74 03 ; 0xfa708 + jmp near 0a872h ; e9 65 01 ; 0xfa70a + mov word [bp+020h], strict word 00001h ; c7 46 20 01 00 ; 0xfa70d pcibios.c:338 + mov word [bp+014h], 00210h ; c7 46 14 10 02 ; 0xfa712 pcibios.c:339 + mov word [bp+01ch], strict word 00000h ; c7 46 1c 00 00 ; 0xfa717 pcibios.c:341 + mov word [bp+018h], 04350h ; c7 46 18 50 43 ; 0xfa71c pcibios.c:342 + mov word [bp+01ah], 02049h ; c7 46 1a 49 20 ; 0xfa721 + jmp near 0a8a2h ; e9 79 01 ; 0xfa726 pcibios.c:343 + cmp word [bp+018h], strict byte 0ffffh ; 83 7e 18 ff ; 0xfa729 pcibios.c:348 + jne short 0a735h ; 75 06 ; 0xfa72d + or ah, 083h ; 80 cc 83 ; 0xfa72f pcibios.c:349 + jmp near 0a89bh ; e9 66 01 ; 0xfa732 pcibios.c:350 + xor al, al ; 30 c0 ; 0xfa735 pcibios.c:352 + push ax ; 50 ; 0xfa737 + mov bx, word [bp+008h] ; 8b 5e 08 ; 0xfa738 + mov dx, word [bp+01ch] ; 8b 56 1c ; 0xfa73b + mov ax, word [bp+018h] ; 8b 46 18 ; 0xfa73e + xor cx, cx ; 31 c9 ; 0xfa741 + call 0a5cfh ; e8 89 fe ; 0xfa743 + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa746 pcibios.c:353 + jne short 0a75bh ; 75 10 ; 0xfa749 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa74b pcibios.c:354 + xor ah, ah ; 30 e4 ; 0xfa74e + or ah, 086h ; 80 cc 86 ; 0xfa750 + jmp near 0a89bh ; e9 45 01 ; 0xfa753 + jmp short 0a763h ; eb 0b ; 0xfa756 + jmp near 0a82dh ; e9 d2 00 ; 0xfa758 + mov word [bp+014h], ax ; 89 46 14 ; 0xfa75b pcibios.c:355 + jmp near 0a8a2h ; e9 41 01 ; 0xfa75e pcibios.c:360 + jmp short 0a78bh ; eb 28 ; 0xfa761 + xor al, al ; 30 c0 ; 0xfa763 pcibios.c:362 + push ax ; 50 ; 0xfa765 + mov bx, word [bp+008h] ; 8b 5e 08 ; 0xfa766 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa769 + mov dx, word [bp+01eh] ; 8b 56 1e ; 0xfa76c + mov cx, strict word 00001h ; b9 01 00 ; 0xfa76f + call 0a5cfh ; e8 5a fe ; 0xfa772 + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xfa775 pcibios.c:363 + jne short 0a785h ; 75 0b ; 0xfa778 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa77a pcibios.c:364 + xor ah, ah ; 30 e4 ; 0xfa77d + or ah, 086h ; 80 cc 86 ; 0xfa77f + jmp near 0a89bh ; e9 16 01 ; 0xfa782 pcibios.c:365 + mov word [bp+014h], ax ; 89 46 14 ; 0xfa785 pcibios.c:367 + jmp near 0a8a2h ; e9 17 01 ; 0xfa788 pcibios.c:369 + cmp word [bp+004h], 00100h ; 81 7e 04 00 01 ; 0xfa78b pcibios.c:376 + jc short 0a798h ; 72 06 ; 0xfa790 + or ah, 087h ; 80 cc 87 ; 0xfa792 pcibios.c:377 + jmp near 0a89bh ; e9 03 01 ; 0xfa795 pcibios.c:378 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa798 pcibios.c:380 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xfa79b + call 0a5abh ; e8 0a fe ; 0xfa79e + mov bx, word [bp+020h] ; 8b 5e 20 ; 0xfa7a1 pcibios.c:381 + xor bh, bh ; 30 ff ; 0xfa7a4 + sub bx, strict byte 00008h ; 83 eb 08 ; 0xfa7a6 + cmp bx, strict byte 00005h ; 83 fb 05 ; 0xfa7a9 + jnbe short 0a816h ; 77 68 ; 0xfa7ac + sal bx, 1 ; d1 e3 ; 0xfa7ae + jmp word [cs:bx-0593eh] ; 2e ff a7 c2 a6 ; 0xfa7b0 + mov bx, word [bp+01ch] ; 8b 5e 1c ; 0xfa7b5 pcibios.c:383 + xor bl, bl ; 30 db ; 0xfa7b8 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa7ba + and dx, strict byte 00003h ; 83 e2 03 ; 0xfa7bd + add dx, 00cfch ; 81 c2 fc 0c ; 0xfa7c0 + in AL, DX ; ec ; 0xfa7c4 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xfa7c5 + or bx, ax ; 09 c3 ; 0xfa7c7 + mov word [bp+01ch], bx ; 89 5e 1c ; 0xfa7c9 + jmp short 0a816h ; eb 48 ; 0xfa7cc pcibios.c:384 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa7ce pcibios.c:386 + xor dh, dh ; 30 f6 ; 0xfa7d1 + and dl, 002h ; 80 e2 02 ; 0xfa7d3 + add dx, 00cfch ; 81 c2 fc 0c ; 0xfa7d6 + in ax, DX ; ed ; 0xfa7da + mov word [bp+01ch], ax ; 89 46 1c ; 0xfa7db + jmp short 0a816h ; eb 36 ; 0xfa7de pcibios.c:387 + mov dx, 00cfch ; ba fc 0c ; 0xfa7e0 pcibios.c:389 + in eax, DX ; 66 ed ; 0xfa7e3 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xfa7e5 + shr eax, 010h ; 66 c1 e8 10 ; 0xfa7e7 + xchg dx, ax ; 92 ; 0xfa7eb + mov word [bp+01ch], ax ; 89 46 1c ; 0xfa7ec + mov word [bp+01eh], dx ; 89 56 1e ; 0xfa7ef + jmp short 0a816h ; eb 22 ; 0xfa7f2 pcibios.c:390 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa7f4 pcibios.c:392 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa7f7 + xor dh, dh ; 30 f6 ; 0xfa7fa + and dl, 003h ; 80 e2 03 ; 0xfa7fc + add dx, 00cfch ; 81 c2 fc 0c ; 0xfa7ff + out DX, AL ; ee ; 0xfa803 + jmp short 0a816h ; eb 10 ; 0xfa804 pcibios.c:393 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa806 pcibios.c:395 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xfa809 + xor dh, dh ; 30 f6 ; 0xfa80c + and dl, 002h ; 80 e2 02 ; 0xfa80e + add dx, 00cfch ; 81 c2 fc 0c ; 0xfa811 + out DX, ax ; ef ; 0xfa815 + jmp near 0a8a2h ; e9 89 00 ; 0xfa816 pcibios.c:396 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xfa819 pcibios.c:398 + mov cx, word [bp+01eh] ; 8b 4e 1e ; 0xfa81c + mov dx, 00cfch ; ba fc 0c ; 0xfa81f + xchg cx, ax ; 91 ; 0xfa822 + sal eax, 010h ; 66 c1 e0 10 ; 0xfa823 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xfa827 + out DX, eax ; 66 ef ; 0xfa829 + jmp short 0a8a2h ; eb 75 ; 0xfa82b pcibios.c:402 + mov bx, word [bp+004h] ; 8b 5e 04 ; 0xfa82d pcibios.c:404 + mov es, [bp+026h] ; 8e 46 26 ; 0xfa830 + mov word [bp-008h], bx ; 89 5e f8 ; 0xfa833 + mov [bp-006h], es ; 8c 46 fa ; 0xfa836 + mov cx, word [0f370h] ; 8b 0e 70 f3 ; 0xfa839 pcibios.c:408 + cmp cx, word [es:bx] ; 26 3b 0f ; 0xfa83d + jbe short 0a853h ; 76 11 ; 0xfa840 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa842 pcibios.c:409 + xor ah, ah ; 30 e4 ; 0xfa845 + or ah, 089h ; 80 cc 89 ; 0xfa847 + mov word [bp+020h], ax ; 89 46 20 ; 0xfa84a + or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xfa84d pcibios.c:410 + jmp short 0a867h ; eb 14 ; 0xfa851 pcibios.c:411 + les di, [es:bx+002h] ; 26 c4 7f 02 ; 0xfa853 pcibios.c:412 + mov si, 0f190h ; be 90 f1 ; 0xfa857 + mov dx, ds ; 8c da ; 0xfa85a + push DS ; 1e ; 0xfa85c + mov ds, dx ; 8e da ; 0xfa85d + rep movsb ; f3 a4 ; 0xfa85f + pop DS ; 1f ; 0xfa861 + mov word [bp+014h], 00a00h ; c7 46 14 00 0a ; 0xfa862 pcibios.c:414 + mov ax, word [0f370h] ; a1 70 f3 ; 0xfa867 pcibios.c:416 + les bx, [bp-008h] ; c4 5e f8 ; 0xfa86a + mov word [es:bx], ax ; 26 89 07 ; 0xfa86d + jmp short 0a8a2h ; eb 30 ; 0xfa870 pcibios.c:417 + mov bx, 00dcch ; bb cc 0d ; 0xfa872 pcibios.c:419 + mov cx, ds ; 8c d9 ; 0xfa875 + mov ax, strict word 00004h ; b8 04 00 ; 0xfa877 + call 01919h ; e8 9c 70 ; 0xfa87a + mov ax, word [bp+014h] ; 8b 46 14 ; 0xfa87d + push ax ; 50 ; 0xfa880 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa881 + push ax ; 50 ; 0xfa884 + mov ax, 00d88h ; b8 88 0d ; 0xfa885 + push ax ; 50 ; 0xfa888 + mov ax, strict word 00004h ; b8 04 00 ; 0xfa889 + push ax ; 50 ; 0xfa88c + call 0195ch ; e8 cc 70 ; 0xfa88d + add sp, strict byte 00008h ; 83 c4 08 ; 0xfa890 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xfa893 pcibios.c:420 + xor ah, ah ; 30 e4 ; 0xfa896 + or ah, 081h ; 80 cc 81 ; 0xfa898 + mov word [bp+020h], ax ; 89 46 20 ; 0xfa89b + or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xfa89e pcibios.c:421 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa8a2 pcibios.c:423 + pop di ; 5f ; 0xfa8a5 + pop si ; 5e ; 0xfa8a6 + pop bp ; 5d ; 0xfa8a7 + retn ; c3 ; 0xfa8a8 + ; disGetNextSymbol 0xfa8a9 LB 0x5af -> off=0x0 cb=0000000000000008 uValue=00000000000f92a9 'pci_find_classcode' +pci_find_classcode: ; 0xfa8a9 LB 0x8 + push bp ; 55 ; 0xfa8a9 pciutil.c:135 + mov bp, sp ; 89 e5 ; 0xfa8aa + mov ax, strict word 0ffffh ; b8 ff ff ; 0xfa8ac pciutil.c:142 + pop bp ; 5d ; 0xfa8af + retn ; c3 ; 0xfa8b0 + ; disGetNextSymbol 0xfa8b1 LB 0x5a7 -> off=0x0 cb=0000000000000008 uValue=00000000000f92b1 'pci_find_class_noif' +pci_find_class_noif: ; 0xfa8b1 LB 0x8 + push bp ; 55 ; 0xfa8b1 pciutil.c:155 + mov bp, sp ; 89 e5 ; 0xfa8b2 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xfa8b4 pciutil.c:163 + pop bp ; 5d ; 0xfa8b7 + retn ; c3 ; 0xfa8b8 + ; disGetNextSymbol 0xfa8b9 LB 0x59f -> off=0x0 cb=0000000000000023 uValue=00000000000f92b9 'pci_find_device' +pci_find_device: ; 0xfa8b9 LB 0x23 + push bp ; 55 ; 0xfa8b9 pciutil.c:176 + mov bp, sp ; 89 e5 ; 0xfa8ba + push bx ; 53 ; 0xfa8bc + push cx ; 51 ; 0xfa8bd + push si ; 56 ; 0xfa8be + mov cx, dx ; 89 d1 ; 0xfa8bf + xor si, si ; 31 f6 ; 0xfa8c1 pciutil.c:178 + mov dx, ax ; 89 c2 ; 0xfa8c3 + mov ax, 0b102h ; b8 02 b1 ; 0xfa8c5 + int 01ah ; cd 1a ; 0xfa8c8 + cmp ah, 000h ; 80 fc 00 ; 0xfa8ca + je short 0a8d2h ; 74 03 ; 0xfa8cd + mov bx, strict word 0ffffh ; bb ff ff ; 0xfa8cf + mov ax, bx ; 89 d8 ; 0xfa8d2 + lea sp, [bp-006h] ; 8d 66 fa ; 0xfa8d4 pciutil.c:179 + pop si ; 5e ; 0xfa8d7 + pop cx ; 59 ; 0xfa8d8 + pop bx ; 5b ; 0xfa8d9 + pop bp ; 5d ; 0xfa8da + retn ; c3 ; 0xfa8db + ; disGetNextSymbol 0xfa8dc LB 0x57c -> off=0x0 cb=0000000000000027 uValue=00000000000f92dc 'pci_read_config_byte' +pci_read_config_byte: ; 0xfa8dc LB 0x27 + push bp ; 55 ; 0xfa8dc pciutil.c:181 + mov bp, sp ; 89 e5 ; 0xfa8dd + push cx ; 51 ; 0xfa8df + push di ; 57 ; 0xfa8e0 + mov dh, al ; 88 c6 ; 0xfa8e1 + mov bh, dl ; 88 d7 ; 0xfa8e3 + mov al, bl ; 88 d8 ; 0xfa8e5 + xor ah, ah ; 30 e4 ; 0xfa8e7 pciutil.c:183 + xor dl, dl ; 30 d2 ; 0xfa8e9 + mov bl, bh ; 88 fb ; 0xfa8eb + mov bh, dh ; 88 f7 ; 0xfa8ed + mov di, ax ; 89 c7 ; 0xfa8ef + mov ax, 0b108h ; b8 08 b1 ; 0xfa8f1 + int 01ah ; cd 1a ; 0xfa8f4 + mov al, cl ; 88 c8 ; 0xfa8f6 + xor ah, ah ; 30 e4 ; 0xfa8f8 + xor dh, dh ; 30 f6 ; 0xfa8fa pciutil.c:184 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa8fc + pop di ; 5f ; 0xfa8ff + pop cx ; 59 ; 0xfa900 + pop bp ; 5d ; 0xfa901 + retn ; c3 ; 0xfa902 + ; disGetNextSymbol 0xfa903 LB 0x555 -> off=0x0 cb=0000000000000025 uValue=00000000000f9303 'pci_read_config_word' +pci_read_config_word: ; 0xfa903 LB 0x25 + push bp ; 55 ; 0xfa903 pciutil.c:186 + mov bp, sp ; 89 e5 ; 0xfa904 + push cx ; 51 ; 0xfa906 + push di ; 57 ; 0xfa907 + mov dh, al ; 88 c6 ; 0xfa908 + mov cl, dl ; 88 d1 ; 0xfa90a + mov al, bl ; 88 d8 ; 0xfa90c + xor ah, ah ; 30 e4 ; 0xfa90e pciutil.c:188 + mov bh, dh ; 88 f7 ; 0xfa910 + xor dh, dh ; 30 f6 ; 0xfa912 + mov bl, dl ; 88 d3 ; 0xfa914 + mov di, ax ; 89 c7 ; 0xfa916 + mov ax, 0b109h ; b8 09 b1 ; 0xfa918 + int 01ah ; cd 1a ; 0xfa91b + mov ax, cx ; 89 c8 ; 0xfa91d + xor dl, dl ; 30 d2 ; 0xfa91f pciutil.c:189 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa921 + pop di ; 5f ; 0xfa924 + pop cx ; 59 ; 0xfa925 + pop bp ; 5d ; 0xfa926 + retn ; c3 ; 0xfa927 + ; disGetNextSymbol 0xfa928 LB 0x530 -> off=0x0 cb=000000000000003f uValue=00000000000f9328 'pci_read_config_dword' +pci_read_config_dword: ; 0xfa928 LB 0x3f + push bp ; 55 ; 0xfa928 pciutil.c:191 + mov bp, sp ; 89 e5 ; 0xfa929 + push cx ; 51 ; 0xfa92b + push di ; 57 ; 0xfa92c + push ax ; 50 ; 0xfa92d + mov dh, al ; 88 c6 ; 0xfa92e + mov byte [bp-006h], bl ; 88 5e fa ; 0xfa930 + mov al, bl ; 88 d8 ; 0xfa933 pciutil.c:196 + xor ah, ah ; 30 e4 ; 0xfa935 + mov di, ax ; 89 c7 ; 0xfa937 + mov bx, dx ; 89 d3 ; 0xfa939 + mov ax, 0b109h ; b8 09 b1 ; 0xfa93b + int 01ah ; cd 1a ; 0xfa93e + test cx, cx ; 85 c9 ; 0xfa940 + jne short 0a958h ; 75 14 ; 0xfa942 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xfa944 + xor ah, ah ; 30 e4 ; 0xfa947 + mov di, ax ; 89 c7 ; 0xfa949 + inc di ; 47 ; 0xfa94b + inc di ; 47 ; 0xfa94c + mov bx, dx ; 89 d3 ; 0xfa94d + mov ax, 0b109h ; b8 09 b1 ; 0xfa94f + int 01ah ; cd 1a ; 0xfa952 + test cx, cx ; 85 c9 ; 0xfa954 + je short 0a95dh ; 74 05 ; 0xfa956 + mov ax, strict word 00001h ; b8 01 00 ; 0xfa958 + jmp short 0a95fh ; eb 02 ; 0xfa95b + xor ax, ax ; 31 c0 ; 0xfa95d + cwd ; 99 ; 0xfa95f + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa960 pciutil.c:199 + pop di ; 5f ; 0xfa963 + pop cx ; 59 ; 0xfa964 + pop bp ; 5d ; 0xfa965 + retn ; c3 ; 0xfa966 + ; disGetNextSymbol 0xfa967 LB 0x4f1 -> off=0x0 cb=000000000000001e uValue=00000000000f9367 'pci_write_config_word' +pci_write_config_word: ; 0xfa967 LB 0x1e + push bp ; 55 ; 0xfa967 pciutil.c:201 + mov bp, sp ; 89 e5 ; 0xfa968 + push di ; 57 ; 0xfa96a + push ax ; 50 ; 0xfa96b + mov byte [bp-004h], al ; 88 46 fc ; 0xfa96c + mov al, bl ; 88 d8 ; 0xfa96f + xor ah, ah ; 30 e4 ; 0xfa971 pciutil.c:203 + mov di, ax ; 89 c7 ; 0xfa973 + mov bh, byte [bp-004h] ; 8a 7e fc ; 0xfa975 + mov bl, dl ; 88 d3 ; 0xfa978 + mov ax, 0b10ch ; b8 0c b1 ; 0xfa97a + int 01ah ; cd 1a ; 0xfa97d + lea sp, [bp-002h] ; 8d 66 fe ; 0xfa97f pciutil.c:204 + pop di ; 5f ; 0xfa982 + pop bp ; 5d ; 0xfa983 + retn ; c3 ; 0xfa984 + ; disGetNextSymbol 0xfa985 LB 0x4d3 -> off=0x0 cb=000000000000001e uValue=00000000000f9385 'pci_write_config_byte' +pci_write_config_byte: ; 0xfa985 LB 0x1e + push bp ; 55 ; 0xfa985 pciutil.c:206 + mov bp, sp ; 89 e5 ; 0xfa986 + push di ; 57 ; 0xfa988 + push ax ; 50 ; 0xfa989 + mov byte [bp-004h], al ; 88 46 fc ; 0xfa98a + mov al, bl ; 88 d8 ; 0xfa98d + xor ah, ah ; 30 e4 ; 0xfa98f pciutil.c:208 + mov di, ax ; 89 c7 ; 0xfa991 + mov bh, byte [bp-004h] ; 8a 7e fc ; 0xfa993 + mov bl, dl ; 88 d3 ; 0xfa996 + mov ax, 0b10bh ; b8 0b b1 ; 0xfa998 + int 01ah ; cd 1a ; 0xfa99b + lea sp, [bp-002h] ; 8d 66 fe ; 0xfa99d pciutil.c:209 + pop di ; 5f ; 0xfa9a0 + pop bp ; 5d ; 0xfa9a1 + retn ; c3 ; 0xfa9a2 + ; disGetNextSymbol 0xfa9a3 LB 0x4b5 -> off=0x0 cb=0000000000000039 uValue=00000000000f93a3 'pci_write_config_dword' +pci_write_config_dword: ; 0xfa9a3 LB 0x39 + push bp ; 55 ; 0xfa9a3 pciutil.c:211 + mov bp, sp ; 89 e5 ; 0xfa9a4 + push cx ; 51 ; 0xfa9a6 + push di ; 57 ; 0xfa9a7 + push ax ; 50 ; 0xfa9a8 + mov dh, al ; 88 c6 ; 0xfa9a9 + mov cl, dl ; 88 d1 ; 0xfa9ab + mov byte [bp-006h], bl ; 88 5e fa ; 0xfa9ad + mov al, bl ; 88 d8 ; 0xfa9b0 pciutil.c:216 + xor ah, ah ; 30 e4 ; 0xfa9b2 + mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfa9b4 + mov di, ax ; 89 c7 ; 0xfa9b7 + mov bx, dx ; 89 d3 ; 0xfa9b9 + mov ax, 0b10ch ; b8 0c b1 ; 0xfa9bb + int 01ah ; cd 1a ; 0xfa9be + mov al, byte [bp-006h] ; 8a 46 fa ; 0xfa9c0 pciutil.c:217 + xor ah, ah ; 30 e4 ; 0xfa9c3 + mov di, ax ; 89 c7 ; 0xfa9c5 + inc di ; 47 ; 0xfa9c7 + inc di ; 47 ; 0xfa9c8 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xfa9c9 + mov bx, dx ; 89 d3 ; 0xfa9cc + mov ax, 0b10ch ; b8 0c b1 ; 0xfa9ce + int 01ah ; cd 1a ; 0xfa9d1 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfa9d3 pciutil.c:219 + pop di ; 5f ; 0xfa9d6 + pop cx ; 59 ; 0xfa9d7 + pop bp ; 5d ; 0xfa9d8 + retn 00004h ; c2 04 00 ; 0xfa9d9 + ; disGetNextSymbol 0xfa9dc LB 0x47c -> off=0x0 cb=000000000000001d uValue=00000000000f93dc 'vds_is_present' +vds_is_present: ; 0xfa9dc LB 0x1d + push bx ; 53 ; 0xfa9dc vds.c:42 + push bp ; 55 ; 0xfa9dd + mov bp, sp ; 89 e5 ; 0xfa9de + mov bx, strict word 0007bh ; bb 7b 00 ; 0xfa9e0 vds.c:46 + mov ax, strict word 00040h ; b8 40 00 ; 0xfa9e3 + mov es, ax ; 8e c0 ; 0xfa9e6 + test byte [es:bx], 020h ; 26 f6 07 20 ; 0xfa9e8 vds.c:47 + je short 0a9f4h ; 74 06 ; 0xfa9ec + mov ax, strict word 00001h ; b8 01 00 ; 0xfa9ee + pop bp ; 5d ; 0xfa9f1 + pop bx ; 5b ; 0xfa9f2 + retn ; c3 ; 0xfa9f3 + xor ax, ax ; 31 c0 ; 0xfa9f4 + pop bp ; 5d ; 0xfa9f6 vds.c:48 + pop bx ; 5b ; 0xfa9f7 + retn ; c3 ; 0xfa9f8 + ; disGetNextSymbol 0xfa9f9 LB 0x45f -> off=0x0 cb=000000000000001e uValue=00000000000f93f9 'vds_real_to_lin' +vds_real_to_lin: ; 0xfa9f9 LB 0x1e + push bx ; 53 ; 0xfa9f9 vds.c:77 + push cx ; 51 ; 0xfa9fa + push bp ; 55 ; 0xfa9fb + mov bp, sp ; 89 e5 ; 0xfa9fc + mov bx, ax ; 89 c3 ; 0xfa9fe + mov ax, dx ; 89 d0 ; 0xfaa00 + xor dx, dx ; 31 d2 ; 0xfaa02 vds.c:79 + mov cx, strict word 00004h ; b9 04 00 ; 0xfaa04 + sal ax, 1 ; d1 e0 ; 0xfaa07 + rcl dx, 1 ; d1 d2 ; 0xfaa09 + loop 0aa07h ; e2 fa ; 0xfaa0b + xor cx, cx ; 31 c9 ; 0xfaa0d + add ax, bx ; 01 d8 ; 0xfaa0f + adc dx, cx ; 11 ca ; 0xfaa11 + pop bp ; 5d ; 0xfaa13 vds.c:80 + pop cx ; 59 ; 0xfaa14 + pop bx ; 5b ; 0xfaa15 + retn ; c3 ; 0xfaa16 + ; disGetNextSymbol 0xfaa17 LB 0x441 -> off=0x0 cb=0000000000000077 uValue=00000000000f9417 'vds_build_sg_list' +vds_build_sg_list: ; 0xfaa17 LB 0x77 + push bp ; 55 ; 0xfaa17 vds.c:87 + mov bp, sp ; 89 e5 ; 0xfaa18 + push si ; 56 ; 0xfaa1a + push di ; 57 ; 0xfaa1b + mov di, ax ; 89 c7 ; 0xfaa1c + mov si, dx ; 89 d6 ; 0xfaa1e + mov ax, bx ; 89 d8 ; 0xfaa20 + mov dx, cx ; 89 ca ; 0xfaa22 + mov bx, word [bp+004h] ; 8b 5e 04 ; 0xfaa24 vds.c:92 + mov es, si ; 8e c6 ; 0xfaa27 + mov word [es:di], bx ; 26 89 1d ; 0xfaa29 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xfaa2c + mov word [es:di+002h], bx ; 26 89 5d 02 ; 0xfaa2f + call 0a9f9h ; e8 c3 ff ; 0xfaa33 vds.c:93 + mov es, si ; 8e c6 ; 0xfaa36 + mov word [es:di+004h], ax ; 26 89 45 04 ; 0xfaa38 + mov word [es:di+006h], dx ; 26 89 55 06 ; 0xfaa3c + mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00 ; 0xfaa40 vds.c:94 + call 0a9dch ; e8 93 ff ; 0xfaa46 vds.c:95 + test ax, ax ; 85 c0 ; 0xfaa49 + je short 0aa5eh ; 74 11 ; 0xfaa4b + mov es, si ; 8e c6 ; 0xfaa4d vds.c:97 + mov ax, 08105h ; b8 05 81 ; 0xfaa4f + mov dx, strict word 00000h ; ba 00 00 ; 0xfaa52 + int 04bh ; cd 4b ; 0xfaa55 + jc short 0aa5bh ; 72 02 ; 0xfaa57 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfaa59 + cbw ; 98 ; 0xfaa5b + jmp short 0aa85h ; eb 27 ; 0xfaa5c vds.c:98 + mov es, si ; 8e c6 ; 0xfaa5e vds.c:100 + mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00 ; 0xfaa60 + mov dx, word [es:di+004h] ; 26 8b 55 04 ; 0xfaa66 vds.c:101 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xfaa6a + mov word [es:di+010h], dx ; 26 89 55 10 ; 0xfaa6e + mov word [es:di+012h], ax ; 26 89 45 12 ; 0xfaa72 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xfaa76 vds.c:102 + mov word [es:di+014h], ax ; 26 89 45 14 ; 0xfaa79 + mov ax, bx ; 89 d8 ; 0xfaa7d + mov word [es:di+016h], bx ; 26 89 5d 16 ; 0xfaa7f + xor ax, bx ; 31 d8 ; 0xfaa83 vds.c:103 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfaa85 vds.c:106 + pop di ; 5f ; 0xfaa88 + pop si ; 5e ; 0xfaa89 + pop bp ; 5d ; 0xfaa8a + retn 00004h ; c2 04 00 ; 0xfaa8b + ; disGetNextSymbol 0xfaa8e LB 0x3ca -> off=0x0 cb=000000000000002e uValue=00000000000f948e 'vds_free_sg_list' +vds_free_sg_list: ; 0xfaa8e LB 0x2e + push bp ; 55 ; 0xfaa8e vds.c:112 + mov bp, sp ; 89 e5 ; 0xfaa8f + push bx ; 53 ; 0xfaa91 + push di ; 57 ; 0xfaa92 + mov bx, ax ; 89 c3 ; 0xfaa93 + call 0a9dch ; e8 44 ff ; 0xfaa95 vds.c:116 + test ax, ax ; 85 c0 ; 0xfaa98 + je short 0aaadh ; 74 11 ; 0xfaa9a + mov di, bx ; 89 df ; 0xfaa9c vds.c:118 + mov es, dx ; 8e c2 ; 0xfaa9e + mov ax, 08106h ; b8 06 81 ; 0xfaaa0 + mov dx, strict word 00000h ; ba 00 00 ; 0xfaaa3 + int 04bh ; cd 4b ; 0xfaaa6 + jc short 0aaach ; 72 02 ; 0xfaaa8 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfaaaa + cbw ; 98 ; 0xfaaac + mov es, dx ; 8e c2 ; 0xfaaad vds.c:126 + mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00 ; 0xfaaaf + lea sp, [bp-004h] ; 8d 66 fc ; 0xfaab5 vds.c:128 + pop di ; 5f ; 0xfaab8 + pop bx ; 5b ; 0xfaab9 + pop bp ; 5d ; 0xfaaba + retn ; c3 ; 0xfaabb + ; disGetNextSymbol 0xfaabc LB 0x39c -> off=0x4 cb=0000000000000020 uValue=00000000000f94c0 '__U4M' + db 000h, 000h, 000h, 000h +__U4M: ; 0xfaac0 LB 0x20 + pushfw ; 9c ; 0xfaac0 __U4M.asm:51 + push si ; 56 ; 0xfaac1 __U4M.asm:81 + push di ; 57 ; 0xfaac2 __U4M.asm:82 + push ax ; 50 ; 0xfaac3 __U4M.asm:95 + db 08bh, 0fah + ; mov di, dx ; 8b fa ; 0xfaac4 __U4M.asm:96 + mul bx ; f7 e3 ; 0xfaac6 __U4M.asm:99 + db 08bh, 0f2h + ; mov si, dx ; 8b f2 ; 0xfaac8 __U4M.asm:100 + xchg di, ax ; 97 ; 0xfaaca __U4M.asm:101 + mul bx ; f7 e3 ; 0xfaacb __U4M.asm:104 + db 003h, 0f0h + ; add si, ax ; 03 f0 ; 0xfaacd __U4M.asm:105 + pop ax ; 58 ; 0xfaacf __U4M.asm:108 + mul cx ; f7 e1 ; 0xfaad0 __U4M.asm:109 + db 003h, 0f0h + ; add si, ax ; 03 f0 ; 0xfaad2 __U4M.asm:110 + db 08bh, 0d6h + ; mov dx, si ; 8b d6 ; 0xfaad4 __U4M.asm:113 + db 08bh, 0c7h + ; mov ax, di ; 8b c7 ; 0xfaad6 __U4M.asm:114 + pop di ; 5f ; 0xfaad8 __U4M.asm:116 + pop si ; 5e ; 0xfaad9 __U4M.asm:117 + popfw ; 9d ; 0xfaada __U4M.asm:119 + retn ; c3 ; 0xfaadb __U4M.asm:120 + times 0x4 db 0 + ; disGetNextSymbol 0xfaae0 LB 0x378 -> off=0x0 cb=0000000000000030 uValue=00000000000f94e0 '__U4D' +__U4D: ; 0xfaae0 LB 0x30 + pushfw ; 9c ; 0xfaae0 __U4D.asm:59 + test cx, cx ; 85 c9 ; 0xfaae1 __U4D.asm:94 + jne short 0aaedh ; 75 08 ; 0xfaae3 __U4D.asm:95 + div bx ; f7 f3 ; 0xfaae5 __U4D.asm:97 + db 08bh, 0dah + ; mov bx, dx ; 8b da ; 0xfaae7 __U4D.asm:99 + db 033h, 0d2h + ; xor dx, dx ; 33 d2 ; 0xfaae9 __U4D.asm:101 + popfw ; 9d ; 0xfaaeb __U4D.asm:103 + retn ; c3 ; 0xfaaec __U4D.asm:104 + push DS ; 1e ; 0xfaaed __U4D.asm:108 + push ES ; 06 ; 0xfaaee __U4D.asm:109 + push bp ; 55 ; 0xfaaef __U4D.asm:116 + sub sp, strict byte 00004h ; 83 ec 04 ; 0xfaaf0 __U4D.asm:117 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xfaaf3 __U4D.asm:118 + push SS ; 16 ; 0xfaaf5 __U4D.asm:121 + push bp ; 55 ; 0xfaaf6 __U4D.asm:122 + add bp, strict byte 00004h ; 83 c5 04 ; 0xfaaf7 __U4D.asm:123 + push cx ; 51 ; 0xfaafa __U4D.asm:126 + push bx ; 53 ; 0xfaafb __U4D.asm:127 + push dx ; 52 ; 0xfaafc __U4D.asm:130 + push ax ; 50 ; 0xfaafd __U4D.asm:131 + call 0abcch ; e8 cb 00 ; 0xfaafe __U4D.asm:133 + mov cx, word [bp-002h] ; 8b 4e fe ; 0xfab01 __U4D.asm:136 + mov bx, word [bp-004h] ; 8b 5e fc ; 0xfab04 __U4D.asm:137 + db 08bh, 0e5h + ; mov sp, bp ; 8b e5 ; 0xfab07 __U4D.asm:141 + pop bp ; 5d ; 0xfab09 __U4D.asm:142 + pop ES ; 07 ; 0xfab0a __U4D.asm:143 + pop DS ; 1f ; 0xfab0b __U4D.asm:144 + popfw ; 9d ; 0xfab0c __U4D.asm:146 + retn ; c3 ; 0xfab0d __U4D.asm:147 + times 0x2 db 0 + ; disGetNextSymbol 0xfab10 LB 0x348 -> off=0x0 cb=0000000000000010 uValue=00000000000f9510 '__U8RS' +__U8RS: ; 0xfab10 LB 0x10 + test si, si ; 85 f6 ; 0xfab10 __U8RS.asm:50 + je short 0ab1fh ; 74 0b ; 0xfab12 __U8RS.asm:51 + shr ax, 1 ; d1 e8 ; 0xfab14 __U8RS.asm:53 + rcr bx, 1 ; d1 db ; 0xfab16 __U8RS.asm:54 + rcr cx, 1 ; d1 d9 ; 0xfab18 __U8RS.asm:55 + rcr dx, 1 ; d1 da ; 0xfab1a __U8RS.asm:56 + dec si ; 4e ; 0xfab1c __U8RS.asm:57 + jne short 0ab14h ; 75 f5 ; 0xfab1d __U8RS.asm:58 + retn ; c3 ; 0xfab1f __U8RS.asm:60 + ; disGetNextSymbol 0xfab20 LB 0x338 -> off=0x0 cb=0000000000000010 uValue=00000000000f9520 '__U8LS' +__U8LS: ; 0xfab20 LB 0x10 + test si, si ; 85 f6 ; 0xfab20 __U8LS.asm:50 + je short 0ab2fh ; 74 0b ; 0xfab22 __U8LS.asm:51 + sal dx, 1 ; d1 e2 ; 0xfab24 __U8LS.asm:53 + rcl cx, 1 ; d1 d1 ; 0xfab26 __U8LS.asm:54 + rcl bx, 1 ; d1 d3 ; 0xfab28 __U8LS.asm:55 + rcl ax, 1 ; d1 d0 ; 0xfab2a __U8LS.asm:56 + dec si ; 4e ; 0xfab2c __U8LS.asm:57 + jne short 0ab24h ; 75 f5 ; 0xfab2d __U8LS.asm:58 + retn ; c3 ; 0xfab2f __U8LS.asm:60 + ; disGetNextSymbol 0xfab30 LB 0x328 -> off=0x0 cb=0000000000000010 uValue=00000000000f9530 '_fmemset_' +_fmemset_: ; 0xfab30 LB 0x10 + push di ; 57 ; 0xfab30 fmemset.asm:52 + mov es, dx ; 8e c2 ; 0xfab31 fmemset.asm:54 + db 08bh, 0f8h + ; mov di, ax ; 8b f8 ; 0xfab33 fmemset.asm:55 + xchg al, bl ; 86 d8 ; 0xfab35 fmemset.asm:56 + rep stosb ; f3 aa ; 0xfab37 fmemset.asm:57 + xchg al, bl ; 86 d8 ; 0xfab39 fmemset.asm:58 + pop di ; 5f ; 0xfab3b fmemset.asm:60 + retn ; c3 ; 0xfab3c fmemset.asm:61 + times 0x3 db 0 + ; disGetNextSymbol 0xfab40 LB 0x318 -> off=0x0 cb=000000000000003a uValue=00000000000f9540 '_fmemcpy_' +_fmemcpy_: ; 0xfab40 LB 0x3a + push bp ; 55 ; 0xfab40 fmemcpy.asm:52 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xfab41 fmemcpy.asm:53 + push di ; 57 ; 0xfab43 fmemcpy.asm:54 + push DS ; 1e ; 0xfab44 fmemcpy.asm:55 + push si ; 56 ; 0xfab45 fmemcpy.asm:56 + mov es, dx ; 8e c2 ; 0xfab46 fmemcpy.asm:58 + db 08bh, 0f8h + ; mov di, ax ; 8b f8 ; 0xfab48 fmemcpy.asm:59 + mov ds, cx ; 8e d9 ; 0xfab4a fmemcpy.asm:60 + db 08bh, 0f3h + ; mov si, bx ; 8b f3 ; 0xfab4c fmemcpy.asm:61 + mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfab4e fmemcpy.asm:62 + rep movsb ; f3 a4 ; 0xfab51 fmemcpy.asm:63 + pop si ; 5e ; 0xfab53 fmemcpy.asm:65 + pop DS ; 1f ; 0xfab54 fmemcpy.asm:66 + pop di ; 5f ; 0xfab55 fmemcpy.asm:67 + db 08bh, 0e5h + ; mov sp, bp ; 8b e5 ; 0xfab56 fmemcpy.asm:68 + pop bp ; 5d ; 0xfab58 fmemcpy.asm:69 + retn ; c3 ; 0xfab59 fmemcpy.asm:70 + add byte [bx+si], al ; 00 00 ; 0xfab5a + add byte [bx+si], al ; 00 00 ; 0xfab5c + add byte [bx+si], al ; 00 00 ; 0xfab5e + nop ; 90 ; 0xfab60 + stosw ; ab ; 0xfab61 + xchg dx, ax ; 92 ; 0xfab62 + stosw ; ab ; 0xfab63 + popfw ; 9d ; 0xfab64 + stosw ; ab ; 0xfab65 + popfw ; 9d ; 0xfab66 + stosw ; ab ; 0xfab67 + popfw ; 9d ; 0xfab68 + stosw ; ab ; 0xfab69 + lahf ; 9f ; 0xfab6a + stosw ; ab ; 0xfab6b + lahf ; 9f ; 0xfab6c + stosw ; ab ; 0xfab6d + mov ax, word [0a5abh] ; a1 ab a5 ; 0xfab6e + stosw ; ab ; 0xfab71 + movsw ; a5 ; 0xfab72 + stosw ; ab ; 0xfab73 + cmpsw ; a7 ; 0xfab74 + stosw ; ab ; 0xfab75 + lodsb ; ac ; 0xfab76 + stosw ; ab ; 0xfab77 + scasb ; ae ; 0xfab78 + stosw ; ab ; 0xfab79 + ; disGetNextSymbol 0xfab7a LB 0x2de -> off=0x0 cb=0000000000000041 uValue=000000000000957a 'apm_worker' +apm_worker: ; 0xfab7a LB 0x41 + sti ; fb ; 0xfab7a apm_pm.asm:66 + push ax ; 50 ; 0xfab7b apm_pm.asm:68 + db 032h, 0e4h + ; xor ah, ah ; 32 e4 ; 0xfab7c apm_pm.asm:69 + sub AL, strict byte 004h ; 2c 04 ; 0xfab7e apm_pm.asm:70 + db 08bh, 0e8h + ; mov bp, ax ; 8b e8 ; 0xfab80 apm_pm.asm:71 + sal bp, 1 ; d1 e5 ; 0xfab82 apm_pm.asm:72 + cmp AL, strict byte 00dh ; 3c 0d ; 0xfab84 apm_pm.asm:73 + pop ax ; 58 ; 0xfab86 apm_pm.asm:74 + mov AH, strict byte 053h ; b4 53 ; 0xfab87 apm_pm.asm:75 + jnc short 0abb7h ; 73 2c ; 0xfab89 apm_pm.asm:76 + jmp word [cs:bp-054a0h] ; 2e ff a6 60 ab ; 0xfab8b apm_pm.asm:78 + jmp short 0abb5h ; eb 23 ; 0xfab90 apm_pm.asm:81 + push CS ; 0e ; 0xfab92 apm_pm.asm:90 + pop ax ; 58 ; 0xfab93 apm_pm.asm:91 + test ax, strict word 00003h ; a9 03 00 ; 0xfab94 apm_pm.asm:92 + jne short 0abb5h ; 75 1c ; 0xfab97 apm_pm.asm:93 + sti ; fb ; 0xfab99 apm_pm.asm:94 + hlt ; f4 ; 0xfab9a apm_pm.asm:95 + jmp short 0abb5h ; eb 18 ; 0xfab9b apm_pm.asm:96 + jmp short 0abb5h ; eb 16 ; 0xfab9d apm_pm.asm:105 + jmp short 0abb7h ; eb 16 ; 0xfab9f apm_pm.asm:111 + mov AH, strict byte 080h ; b4 80 ; 0xfaba1 apm_pm.asm:114 + jmp short 0abb9h ; eb 14 ; 0xfaba3 apm_pm.asm:115 + jmp short 0abb7h ; eb 10 ; 0xfaba5 apm_pm.asm:120 + mov ax, 00102h ; b8 02 01 ; 0xfaba7 apm_pm.asm:123 + jmp short 0abb5h ; eb 09 ; 0xfabaa apm_pm.asm:124 + jmp short 0abb5h ; eb 07 ; 0xfabac apm_pm.asm:128 + mov BL, strict byte 000h ; b3 00 ; 0xfabae apm_pm.asm:131 + mov cx, strict word 00000h ; b9 00 00 ; 0xfabb0 apm_pm.asm:132 + jmp short 0abb5h ; eb 00 ; 0xfabb3 apm_pm.asm:133 + clc ; f8 ; 0xfabb5 apm_pm.asm:136 + retn ; c3 ; 0xfabb6 apm_pm.asm:137 + mov AH, strict byte 009h ; b4 09 ; 0xfabb7 apm_pm.asm:140 + stc ; f9 ; 0xfabb9 apm_pm.asm:143 + retn ; c3 ; 0xfabba apm_pm.asm:144 + ; disGetNextSymbol 0xfabbb LB 0x29d -> off=0x0 cb=0000000000000011 uValue=00000000000f95bb 'apm_pm16_entry' +apm_pm16_entry: ; 0xfabbb LB 0x11 + mov AH, strict byte 002h ; b4 02 ; 0xfabbb apm_pm.asm:156 + push DS ; 1e ; 0xfabbd apm_pm.asm:162 + push bp ; 55 ; 0xfabbe apm_pm.asm:163 + push CS ; 0e ; 0xfabbf apm_pm.asm:165 + pop bp ; 5d ; 0xfabc0 apm_pm.asm:166 + add bp, strict byte 00008h ; 83 c5 08 ; 0xfabc1 apm_pm.asm:167 + mov ds, bp ; 8e dd ; 0xfabc4 apm_pm.asm:168 + call 0ab7ah ; e8 b1 ff ; 0xfabc6 apm_pm.asm:170 + pop bp ; 5d ; 0xfabc9 apm_pm.asm:172 + pop DS ; 1f ; 0xfabca apm_pm.asm:173 + retf ; cb ; 0xfabcb apm_pm.asm:175 + ; disGetNextSymbol 0xfabcc LB 0x28c -> off=0x0 cb=0000000000000265 uValue=00000000000f95cc 'DoUInt32Div' +DoUInt32Div: ; 0xfabcc LB 0x265 + push bp ; 55 ; 0xfabcc DoUInt32Div.c:37 + mov bp, sp ; 89 e5 ; 0xfabcd + push si ; 56 ; 0xfabcf + push di ; 57 ; 0xfabd0 + sub sp, strict byte 00018h ; 83 ec 18 ; 0xfabd1 + lds bx, [bp+00ch] ; c5 5e 0c ; 0xfabd4 + lea si, [bp+004h] ; 8d 76 04 ; 0xfabd7 DoUInt32Div.c:982 + mov word [bp-010h], si ; 89 76 f0 ; 0xfabda + mov [bp-00eh], ss ; 8c 56 f2 ; 0xfabdd + lea di, [bp+008h] ; 8d 7e 08 ; 0xfabe0 + mov [bp-008h], ss ; 8c 56 f8 ; 0xfabe3 + lea si, [bp-01ch] ; 8d 76 e4 ; 0xfabe6 + mov word [bp-00ch], si ; 89 76 f4 ; 0xfabe9 + mov [bp-00ah], ss ; 8c 56 f6 ; 0xfabec + mov si, bx ; 89 de ; 0xfabef + mov [bp-006h], ds ; 8c 5e fa ; 0xfabf1 + cmp word [bx+002h], strict byte 00000h ; 83 7f 02 00 ; 0xfabf4 DoUInt32Div.c:990 + jne short 0ac1ch ; 75 22 ; 0xfabf8 + mov ax, word [bx] ; 8b 07 ; 0xfabfa DoUInt32Div.c:992 + test ax, ax ; 85 c0 ; 0xfabfc + je short 0ac19h ; 74 19 ; 0xfabfe + cmp ax, strict word 00001h ; 3d 01 00 ; 0xfac00 DoUInt32Div.c:995 + jne short 0ac1ch ; 75 17 ; 0xfac03 + xor ax, ax ; 31 c0 ; 0xfac05 DoUInt32Div.c:77 + mov word [bp+00ah], ax ; 89 46 0a ; 0xfac07 + mov word [bp+008h], ax ; 89 46 08 ; 0xfac0a DoUInt32Div.c:78 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xfac0d DoUInt32Div.c:998 + mov word [bp+004h], ax ; 89 46 04 ; 0xfac10 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xfac13 + mov word [bp+006h], ax ; 89 46 06 ; 0xfac16 + jmp near 0ae24h ; e9 08 02 ; 0xfac19 + lds bx, [bp-00ch] ; c5 5e f4 ; 0xfac1c DoUInt32Div.c:736 + mov ax, word [bx+002h] ; 8b 47 02 ; 0xfac1f + mov ds, [bp-006h] ; 8e 5e fa ; 0xfac22 + cmp ax, word [si+002h] ; 3b 44 02 ; 0xfac25 + je short 0ac42h ; 74 18 ; 0xfac28 + mov ds, [bp-00ah] ; 8e 5e f6 ; 0xfac2a DoUInt32Div.c:737 + mov ax, word [bx+002h] ; 8b 47 02 ; 0xfac2d + mov ds, [bp-006h] ; 8e 5e fa ; 0xfac30 + cmp ax, word [si+002h] ; 3b 44 02 ; 0xfac33 + jbe short 0ac3dh ; 76 05 ; 0xfac36 + mov ax, strict word 00001h ; b8 01 00 ; 0xfac38 + jmp short 0ac63h ; eb 26 ; 0xfac3b + mov ax, strict word 0ffffh ; b8 ff ff ; 0xfac3d + jmp short 0ac63h ; eb 21 ; 0xfac40 + mov ds, [bp-00ah] ; 8e 5e f6 ; 0xfac42 DoUInt32Div.c:738 + mov ax, word [bx] ; 8b 07 ; 0xfac45 + mov ds, [bp-006h] ; 8e 5e fa ; 0xfac47 + cmp ax, word [si] ; 3b 04 ; 0xfac4a + je short 0ac61h ; 74 13 ; 0xfac4c + mov ds, [bp-00ah] ; 8e 5e f6 ; 0xfac4e DoUInt32Div.c:739 + mov ax, word [bx] ; 8b 07 ; 0xfac51 + mov ds, [bp-006h] ; 8e 5e fa ; 0xfac53 + cmp ax, word [si] ; 3b 04 ; 0xfac56 + jbe short 0ac5ch ; 76 02 ; 0xfac58 + jmp short 0ac38h ; eb dc ; 0xfac5a + mov ax, strict word 0ffffh ; b8 ff ff ; 0xfac5c + jmp short 0ac63h ; eb 02 ; 0xfac5f + xor ax, ax ; 31 c0 ; 0xfac61 DoUInt32Div.c:740 + test ax, ax ; 85 c0 ; 0xfac63 DoUInt32Div.c:1006 + jnl short 0ac85h ; 7d 1e ; 0xfac65 + lds bx, [bp-00ch] ; c5 5e f4 ; 0xfac67 DoUInt32Div.c:1008 + mov ax, word [bx] ; 8b 07 ; 0xfac6a + mov dx, word [bx+002h] ; 8b 57 02 ; 0xfac6c + mov ds, [bp-008h] ; 8e 5e f8 ; 0xfac6f + mov word [di], ax ; 89 05 ; 0xfac72 + mov word [di+002h], dx ; 89 55 02 ; 0xfac74 + lds bx, [bp-010h] ; c5 5e f0 ; 0xfac77 DoUInt32Div.c:77 + mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xfac7a + mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xfac7f DoUInt32Div.c:78 + jmp short 0ac19h ; eb 94 ; 0xfac83 DoUInt32Div.c:1013 + jne short 0ac9ch ; 75 15 ; 0xfac85 + mov ds, [bp-008h] ; 8e 5e f8 ; 0xfac87 DoUInt32Div.c:77 + mov word [di+002h], ax ; 89 45 02 ; 0xfac8a + mov word [di], ax ; 89 05 ; 0xfac8d DoUInt32Div.c:78 + lds bx, [bp-010h] ; c5 5e f0 ; 0xfac8f DoUInt32Div.c:407 + mov word [bx], strict word 00001h ; c7 07 01 00 ; 0xfac92 + mov word [bx+002h], ax ; 89 47 02 ; 0xfac96 DoUInt32Div.c:408 + jmp near 0ae24h ; e9 88 01 ; 0xfac99 DoUInt32Div.c:1018 + lds bx, [bp-00ch] ; c5 5e f4 ; 0xfac9c DoUInt32Div.c:964 + mov ax, word [bx+002h] ; 8b 47 02 ; 0xfac9f + test ax, ax ; 85 c0 ; 0xfaca2 + je short 0acb7h ; 74 11 ; 0xfaca4 + push ax ; 50 ; 0xfaca6 DoUInt32Div.c:965 + mov ax, 0f000h ; b8 00 f0 ; 0xfaca7 + mov ds, ax ; 8e d8 ; 0xfacaa + call 0ae40h ; e8 91 01 ; 0xfacac + add sp, strict byte 00002h ; 83 c4 02 ; 0xfacaf + add ax, strict word 00010h ; 05 10 00 ; 0xfacb2 + jmp short 0acc4h ; eb 0d ; 0xfacb5 DoUInt32Div.c:966 + push word [bx] ; ff 37 ; 0xfacb7 DoUInt32Div.c:967 + mov ax, 0f000h ; b8 00 f0 ; 0xfacb9 + mov ds, ax ; 8e d8 ; 0xfacbc + call 0ae40h ; e8 7f 01 ; 0xfacbe + add sp, strict byte 00002h ; 83 c4 02 ; 0xfacc1 + mov word [bp-014h], ax ; 89 46 ec ; 0xfacc4 DoUInt32Div.c:969 + mov ds, [bp-006h] ; 8e 5e fa ; 0xfacc7 DoUInt32Div.c:964 + mov ax, word [si+002h] ; 8b 44 02 ; 0xfacca + test ax, ax ; 85 c0 ; 0xfaccd + je short 0ace2h ; 74 11 ; 0xfaccf + push ax ; 50 ; 0xfacd1 DoUInt32Div.c:965 + mov ax, 0f000h ; b8 00 f0 ; 0xfacd2 + mov ds, ax ; 8e d8 ; 0xfacd5 + call 0ae40h ; e8 66 01 ; 0xfacd7 + add sp, strict byte 00002h ; 83 c4 02 ; 0xfacda + add ax, strict word 00010h ; 05 10 00 ; 0xfacdd + jmp short 0acefh ; eb 0d ; 0xface0 DoUInt32Div.c:966 + push word [si] ; ff 34 ; 0xface2 DoUInt32Div.c:967 + mov ax, 0f000h ; b8 00 f0 ; 0xface4 + mov ds, ax ; 8e d8 ; 0xface7 + call 0ae40h ; e8 54 01 ; 0xface9 + add sp, strict byte 00002h ; 83 c4 02 ; 0xfacec + mov dx, word [bp-014h] ; 8b 56 ec ; 0xfacef DoUInt32Div.c:969 + sub dx, ax ; 29 c2 ; 0xfacf2 + mov word [bp-012h], dx ; 89 56 ee ; 0xfacf4 + mov ds, [bp-006h] ; 8e 5e fa ; 0xfacf7 DoUInt32Div.c:1024 + mov ax, word [si] ; 8b 04 ; 0xfacfa + mov word [bp-018h], ax ; 89 46 e8 ; 0xfacfc + mov ax, word [si+002h] ; 8b 44 02 ; 0xfacff + mov word [bp-016h], ax ; 89 46 ea ; 0xfad02 + test dx, dx ; 85 d2 ; 0xfad05 DoUInt32Div.c:1025 + je short 0ad5fh ; 74 56 ; 0xfad07 + mov cx, dx ; 89 d1 ; 0xfad09 DoUInt32Div.c:290 + xor ch, dh ; 30 f5 ; 0xfad0b + and cl, 01fh ; 80 e1 1f ; 0xfad0d + mov ax, word [si] ; 8b 04 ; 0xfad10 DoUInt32Div.c:292 + mov dx, word [si+002h] ; 8b 54 02 ; 0xfad12 + jcxz 0ad1dh ; e3 06 ; 0xfad15 + sal ax, 1 ; d1 e0 ; 0xfad17 + rcl dx, 1 ; d1 d2 ; 0xfad19 + loop 0ad17h ; e2 fa ; 0xfad1b + mov word [bp-018h], ax ; 89 46 e8 ; 0xfad1d + mov word [bp-016h], dx ; 89 56 ea ; 0xfad20 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xfad23 DoUInt32Div.c:773 + lds bx, [bp-00ch] ; c5 5e f4 ; 0xfad26 + cmp ax, word [bx+002h] ; 3b 47 02 ; 0xfad29 + jnbe short 0ad3dh ; 77 0f ; 0xfad2c + mov ax, word [bp-016h] ; 8b 46 ea ; 0xfad2e + cmp ax, word [bx+002h] ; 3b 47 02 ; 0xfad31 + jne short 0ad41h ; 75 0b ; 0xfad34 + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xfad36 + cmp ax, word [bx] ; 3b 07 ; 0xfad39 + jbe short 0ad41h ; 76 04 ; 0xfad3b + mov AL, strict byte 001h ; b0 01 ; 0xfad3d + jmp short 0ad43h ; eb 02 ; 0xfad3f + xor al, al ; 30 c0 ; 0xfad41 + test al, al ; 84 c0 ; 0xfad43 DoUInt32Div.c:779 + je short 0ad6ah ; 74 23 ; 0xfad45 + shr word [bp-016h], 1 ; d1 6e ea ; 0xfad47 DoUInt32Div.c:690 + rcr word [bp-018h], 1 ; d1 5e e8 ; 0xfad4a + dec word [bp-012h] ; ff 4e ee ; 0xfad4d + jmp short 0ad6ah ; eb 18 ; 0xfad50 + mov cx, strict word 0001fh ; b9 1f 00 ; 0xfad52 DoUInt32Div.c:642 + sal word [bp-018h], 1 ; d1 66 e8 ; 0xfad55 + rcl word [bp-016h], 1 ; d1 56 ea ; 0xfad58 + loop 0ad55h ; e2 f8 ; 0xfad5b + jmp short 0ad4dh ; eb ee ; 0xfad5d DoUInt32Div.c:657 + mov ax, word [si] ; 8b 04 ; 0xfad5f DoUInt32Div.c:1035 + mov word [bp-018h], ax ; 89 46 e8 ; 0xfad61 + mov ax, word [si+002h] ; 8b 44 02 ; 0xfad64 + mov word [bp-016h], ax ; 89 46 ea ; 0xfad67 + lds bx, [bp-010h] ; c5 5e f0 ; 0xfad6a DoUInt32Div.c:77 + mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xfad6d + mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xfad72 DoUInt32Div.c:78 + lds bx, [bp-00ch] ; c5 5e f4 ; 0xfad76 DoUInt32Div.c:1038 + mov dx, word [bx] ; 8b 17 ; 0xfad79 + mov ax, word [bx+002h] ; 8b 47 02 ; 0xfad7b + mov ds, [bp-008h] ; 8e 5e f8 ; 0xfad7e + mov word [di], dx ; 89 15 ; 0xfad81 + mov word [di+002h], ax ; 89 45 02 ; 0xfad83 + mov dx, word [di] ; 8b 15 ; 0xfad86 DoUInt32Div.c:792 + mov ds, [bp-006h] ; 8e 5e fa ; 0xfad88 + cmp ax, word [si+002h] ; 3b 44 02 ; 0xfad8b + jnbe short 0ad96h ; 77 06 ; 0xfad8e + jne short 0ad9ah ; 75 08 ; 0xfad90 + cmp dx, word [si] ; 3b 14 ; 0xfad92 + jc short 0ad9ah ; 72 04 ; 0xfad94 + mov AL, strict byte 001h ; b0 01 ; 0xfad96 + jmp short 0ad9ch ; eb 02 ; 0xfad98 + xor al, al ; 30 c0 ; 0xfad9a + test al, al ; 84 c0 ; 0xfad9c DoUInt32Div.c:798 + je short 0ae01h ; 74 61 ; 0xfad9e + mov ds, [bp-008h] ; 8e 5e f8 ; 0xfada0 DoUInt32Div.c:792 + mov ax, word [di+002h] ; 8b 45 02 ; 0xfada3 + cmp ax, word [bp-016h] ; 3b 46 ea ; 0xfada6 + jnbe short 0adb7h ; 77 0c ; 0xfada9 + cmp ax, word [bp-016h] ; 3b 46 ea ; 0xfadab + jne short 0adbbh ; 75 0b ; 0xfadae + mov ax, word [di] ; 8b 05 ; 0xfadb0 + cmp ax, word [bp-018h] ; 3b 46 e8 ; 0xfadb2 + jc short 0adbbh ; 72 04 ; 0xfadb5 + mov AL, strict byte 001h ; b0 01 ; 0xfadb7 + jmp short 0adbdh ; eb 02 ; 0xfadb9 + xor al, al ; 30 c0 ; 0xfadbb + test al, al ; 84 c0 ; 0xfadbd DoUInt32Div.c:798 + je short 0ade7h ; 74 26 ; 0xfadbf + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xfadc1 DoUInt32Div.c:461 + mov ds, [bp-008h] ; 8e 5e f8 ; 0xfadc4 + sub word [di], ax ; 29 05 ; 0xfadc7 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xfadc9 + sbb word [di+002h], ax ; 19 45 02 ; 0xfadcc + mov ax, strict word 00001h ; b8 01 00 ; 0xfadcf DoUInt32Div.c:596 + xor dx, dx ; 31 d2 ; 0xfadd2 + mov cx, word [bp-012h] ; 8b 4e ee ; 0xfadd4 + jcxz 0addfh ; e3 06 ; 0xfadd7 + sal ax, 1 ; d1 e0 ; 0xfadd9 + rcl dx, 1 ; d1 d2 ; 0xfaddb + loop 0add9h ; e2 fa ; 0xfaddd + lds bx, [bp-010h] ; c5 5e f0 ; 0xfaddf + or word [bx], ax ; 09 07 ; 0xfade2 + or word [bx+002h], dx ; 09 57 02 ; 0xfade4 + mov ds, [bp-008h] ; 8e 5e f8 ; 0xfade7 DoUInt32Div.c:754 + mov dx, word [di] ; 8b 15 ; 0xfadea + mov ax, word [di+002h] ; 8b 45 02 ; 0xfadec + mov ds, [bp-006h] ; 8e 5e fa ; 0xfadef + cmp ax, word [si+002h] ; 3b 44 02 ; 0xfadf2 + jc short 0adfdh ; 72 06 ; 0xfadf5 + jne short 0ae03h ; 75 0a ; 0xfadf7 + cmp dx, word [si] ; 3b 14 ; 0xfadf9 + jnc short 0ae03h ; 73 06 ; 0xfadfb + mov AL, strict byte 001h ; b0 01 ; 0xfadfd + jmp short 0ae05h ; eb 04 ; 0xfadff + jmp short 0ae24h ; eb 21 ; 0xfae01 + xor al, al ; 30 c0 ; 0xfae03 + test al, al ; 84 c0 ; 0xfae05 DoUInt32Div.c:760 + je short 0ae18h ; 74 0f ; 0xfae07 + jmp short 0ae24h ; eb 19 ; 0xfae09 DoUInt32Div.c:1053 + mov cx, strict word 0001fh ; b9 1f 00 ; 0xfae0b DoUInt32Div.c:690 + sal word [bp-018h], 1 ; d1 66 e8 ; 0xfae0e + rcl word [bp-016h], 1 ; d1 56 ea ; 0xfae11 + loop 0ae0eh ; e2 f8 ; 0xfae14 + jmp short 0ae1eh ; eb 06 ; 0xfae16 DoUInt32Div.c:657 + shr word [bp-016h], 1 ; d1 6e ea ; 0xfae18 DoUInt32Div.c:663 + rcr word [bp-018h], 1 ; d1 5e e8 ; 0xfae1b + dec word [bp-012h] ; ff 4e ee ; 0xfae1e DoUInt32Div.c:1055 + jmp near 0ada0h ; e9 7c ff ; 0xfae21 DoUInt32Div.c:1056 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xfae24 DoUInt32Div.c:41 + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xfae27 + lea sp, [bp-004h] ; 8d 66 fc ; 0xfae2a DoUInt32Div.c:42 + pop di ; 5f ; 0xfae2d + pop si ; 5e ; 0xfae2e + pop bp ; 5d ; 0xfae2f + retn ; c3 ; 0xfae30 + ; disGetNextSymbol 0xfae31 LB 0x27 -> off=0xf cb=0000000000000018 uValue=00000000000f9840 '_ASMBitLastSetU16' + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h +_ASMBitLastSetU16: ; 0xfae40 LB 0x18 + push bp ; 55 ; 0xfae40 ASMBitLastSetU16.asm:53 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xfae41 ASMBitLastSetU16.asm:54 + mov cx, word [bp+004h] ; 8b 4e 04 ; 0xfae43 ASMBitLastSetU16.asm:56 + test cx, cx ; 85 c9 ; 0xfae46 ASMBitLastSetU16.asm:57 + je short 0ae54h ; 74 0a ; 0xfae48 ASMBitLastSetU16.asm:58 + mov ax, strict word 00010h ; b8 10 00 ; 0xfae4a ASMBitLastSetU16.asm:60 + sal cx, 1 ; d1 e1 ; 0xfae4d ASMBitLastSetU16.asm:62 + jc short 0ae56h ; 72 05 ; 0xfae4f ASMBitLastSetU16.asm:63 + dec ax ; 48 ; 0xfae51 ASMBitLastSetU16.asm:64 + jmp short 0ae4dh ; eb f9 ; 0xfae52 ASMBitLastSetU16.asm:65 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfae54 ASMBitLastSetU16.asm:68 + pop bp ; 5d ; 0xfae56 ASMBitLastSetU16.asm:70 + retn ; c3 ; 0xfae57 ASMBitLastSetU16.asm:71 + + ; Padding 0x2ba8 bytes at 0xfae58 + times 11176 db 0 + +section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3a6 class=CODE group=AUTO + ; disGetNextSymbol 0xfda00 LB 0x3a6 -> off=0x0 cb=0000000000000026 uValue=00000000000f0000 'bios32_service' +bios32_service: ; 0xfda00 LB 0x26 + pushfw ; 9c ; 0xfda00 pcibio32.asm:62 + cmp bl, 000h ; 80 fb 00 ; 0xfda01 pcibio32.asm:64 + jne short 0da22h ; 75 1c ; 0xfda04 pcibio32.asm:65 + cmp ax, 05024h ; 3d 24 50 ; 0xfda06 pcibio32.asm:67 + inc bx ; 43 ; 0xfda09 + dec cx ; 49 ; 0xfda0a + mov AL, strict byte 080h ; b0 80 ; 0xfda0b pcibio32.asm:68 + jne short 0da20h ; 75 11 ; 0xfda0d pcibio32.asm:69 + mov bx, strict word 00000h ; bb 00 00 ; 0xfda0f pcibio32.asm:71 + 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:73 + add byte [bx+si], al ; 00 00 ; 0xfda1c + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfda1e pcibio32.asm:74 + popfw ; 9d ; 0xfda20 pcibio32.asm:76 + retf ; cb ; 0xfda21 pcibio32.asm:77 + mov AL, strict byte 081h ; b0 81 ; 0xfda22 pcibio32.asm:80 + jmp short 0da20h ; eb fa ; 0xfda24 pcibio32.asm:81 + ; disGetNextSymbol 0xfda26 LB 0x380 -> off=0x0 cb=000000000000000d uValue=00000000000f0026 'pcibios32_entry' +pcibios32_entry: ; 0xfda26 LB 0xd + pushfw ; 9c ; 0xfda26 pcibio32.asm:90 + cld ; fc ; 0xfda27 pcibio32.asm:91 + push ES ; 06 ; 0xfda28 pcibio32.asm:93 + pushaw ; 60 ; 0xfda29 pcibio32.asm:94 + call 0db52h ; e8 25 01 ; 0xfda2a pcibio32.asm:95 + add byte [bx+si], al ; 00 00 ; 0xfda2d + popaw ; 61 ; 0xfda2f pcibio32.asm:96 + pop ES ; 07 ; 0xfda30 pcibio32.asm:97 + popfw ; 9d ; 0xfda31 pcibio32.asm:99 + retf ; cb ; 0xfda32 pcibio32.asm:100 + ; disGetNextSymbol 0xfda33 LB 0x373 -> off=0x0 cb=0000000000000022 uValue=00000000000f0033 'pci32_select_reg_' +pci32_select_reg_: ; 0xfda33 LB 0x22 + push bp ; 55 ; 0xfda33 pci32.c:198 + mov bp, sp ; 89 e5 ; 0xfda34 + push bx ; 53 ; 0xfda36 + and dl, 0fch ; 80 e2 fc ; 0xfda37 pci32.c:200 + 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:201 + pop bx ; 5b ; 0xfda52 + pop bp ; 5d ; 0xfda53 + retn ; c3 ; 0xfda54 + ; disGetNextSymbol 0xfda55 LB 0x351 -> off=0x0 cb=00000000000000ff uValue=00000000000f0055 'pci32_find_device_' +pci32_find_device_: ; 0xfda55 LB 0xff + push bp ; 55 ; 0xfda55 pci32.c:233 + mov bp, sp ; 89 e5 ; 0xfda56 + push si ; 56 ; 0xfda58 + push di ; 57 ; 0xfda59 + sub sp, strict byte 00014h ; 83 ec 14 ; 0xfda5a + push ax ; 50 ; 0xfda5d + mov si, dx ; 89 d6 ; 0xfda5e + mov di, bx ; 89 df ; 0xfda60 + mov word [di-01ch], cx ; 89 4d e4 ; 0xfda62 + test bx, bx ; 85 db ; 0xfda65 pci32.c:243 + xor bx, bx ; 31 db ; 0xfda67 pci32.c:250 + xor cl, cl ; 30 c9 ; 0xfda69 pci32.c:251 + test bl, 007h ; f6 c3 07 ; 0xfda6b pci32.c:261 + jne short 0daaah ; 75 3a ; 0xfda6e + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfda70 pci32.c:262 + 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:263 + 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-00ch], al ; 88 45 f4 ; 0xfda85 + cmp AL, strict byte 0ffh ; 3c ff ; 0xfda88 pci32.c:264 + jne short 0da94h ; 75 08 ; 0xfda8a + add bx, strict byte 00008h ; 83 c3 08 ; 0xfda8c pci32.c:265 + jmp near 0db2ah ; e9 98 00 ; 0xfda8f pci32.c:266 + add byte [bx+si], al ; 00 00 ; 0xfda92 + test byte [di-00ch], 080h ; f6 45 f4 80 ; 0xfda94 pci32.c:268 + je short 0daa3h ; 74 09 ; 0xfda98 + mov word [di-010h], strict word 00001h ; c7 45 f0 01 00 ; 0xfda9a pci32.c:269 + add byte [bx+si], al ; 00 00 ; 0xfda9f + jmp short 0daaah ; eb 07 ; 0xfdaa1 pci32.c:270 + mov word [di-010h], strict word 00008h ; c7 45 f0 08 00 ; 0xfdaa3 pci32.c:271 + add byte [bx+si], al ; 00 00 ; 0xfdaa8 + mov al, byte [di-00ch] ; 8a 45 f4 ; 0xfdaaa pci32.c:282 + and AL, strict byte 007h ; 24 07 ; 0xfdaad + cmp AL, strict byte 001h ; 3c 01 ; 0xfdaaf + jne short 0dad7h ; 75 24 ; 0xfdab1 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdab3 + mov dx, ax ; 89 c2 ; 0xfdab6 + sar dx, 008h ; c1 fa 08 ; 0xfdab8 + test dx, dx ; 85 d2 ; 0xfdabb + jne short 0dad7h ; 75 18 ; 0xfdabd + mov dx, strict word 0001ah ; ba 1a 00 ; 0xfdabf pci32.c:284 + add byte [bx+si], al ; 00 00 ; 0xfdac2 + call 0da31h ; e8 6a ff ; 0xfdac4 + db 0ffh + db 0ffh + mov dx, 00cfeh ; ba fe 0c ; 0xfdac9 pci32.c:285 + add byte [bx+si], al ; 00 00 ; 0xfdacc + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdace + in AL, DX ; ec ; 0xfdad0 + cmp al, cl ; 38 c8 ; 0xfdad1 pci32.c:286 + jbe short 0dad7h ; 76 02 ; 0xfdad3 + mov cl, al ; 88 c1 ; 0xfdad5 pci32.c:287 + test di, di ; 85 ff ; 0xfdad7 pci32.c:291 + je short 0dae2h ; 74 07 ; 0xfdad9 + mov ax, strict word 00008h ; b8 08 00 ; 0xfdadb + add byte [bx+si], al ; 00 00 ; 0xfdade + jmp short 0dae4h ; eb 02 ; 0xfdae0 + xor ax, ax ; 31 c0 ; 0xfdae2 + db 00fh, 0b7h, 0d0h + ; movzx dx, ax ; 0f b7 d0 ; 0xfdae4 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdae7 + call 0da31h ; e8 44 ff ; 0xfdaea + db 0ffh + db 0ffh + mov dx, 00cfch ; ba fc 0c ; 0xfdaef pci32.c:292 + add byte [bx+si], al ; 00 00 ; 0xfdaf2 + in ax, DX ; ed ; 0xfdaf4 + mov word [di-014h], ax ; 89 45 ec ; 0xfdaf5 + mov word [di-018h], strict word 00000h ; c7 45 e8 00 00 ; 0xfdaf8 pci32.c:293 + add byte [bx+si], al ; 00 00 ; 0xfdafd + test di, di ; 85 ff ; 0xfdaff pci32.c:296 + je short 0db14h ; 74 11 ; 0xfdb01 + cmp word [di-01ch], strict byte 00000h ; 83 7d e4 00 ; 0xfdb03 pci32.c:297 + je short 0db0eh ; 74 05 ; 0xfdb07 + shr ax, 010h ; c1 e8 10 ; 0xfdb09 pci32.c:298 + jmp short 0db11h ; eb 03 ; 0xfdb0c pci32.c:299 + shr ax, 008h ; c1 e8 08 ; 0xfdb0e pci32.c:300 + mov word [di-014h], ax ; 89 45 ec ; 0xfdb11 + mov ax, word [di-014h] ; 8b 45 ec ; 0xfdb14 pci32.c:307 + cmp ax, word [di-020h] ; 3b 45 e0 ; 0xfdb17 + je short 0db22h ; 74 06 ; 0xfdb1a + cmp word [di-018h], strict byte 00000h ; 83 7d e8 00 ; 0xfdb1c pci32.c:308 + je short 0db29h ; 74 07 ; 0xfdb20 + dec si ; 4e ; 0xfdb22 + cmp esi, strict byte 0ffffffffh ; 66 83 fe ff ; 0xfdb23 + je short 0db3dh ; 74 14 ; 0xfdb27 + add bx, word [di-010h] ; 03 5d f0 ; 0xfdb29 pci32.c:316 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdb2c pci32.c:317 + sar ax, 008h ; c1 f8 08 ; 0xfdb2f + movzx dx, cl ; 0f b6 d1 ; 0xfdb32 + cmp ax, dx ; 39 d0 ; 0xfdb35 + jle near 0da69h ; 0f 8e 2e ff ; 0xfdb37 + db 0ffh + jmp word [bp-07dh] ; ff 66 83 ; 0xfdb3c + db 0feh + push word [di+005h] ; ff 75 05 ; 0xfdb40 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdb43 + jmp short 0db4dh ; eb 05 ; 0xfdb46 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xfdb48 + add byte [bx+si], al ; 00 00 ; 0xfdb4b + lea sp, [di-008h] ; 8d 65 f8 ; 0xfdb4d pci32.c:324 + pop di ; 5f ; 0xfdb50 + pop si ; 5e ; 0xfdb51 + pop bp ; 5d ; 0xfdb52 + retn ; c3 ; 0xfdb53 + ; disGetNextSymbol 0xfdb54 LB 0x252 -> off=0x0 cb=0000000000000252 uValue=00000000000f0154 '_pci32_function' +_pci32_function: ; 0xfdb54 LB 0x252 + push bp ; 55 ; 0xfdb54 pci32.c:326 + mov bp, sp ; 89 e5 ; 0xfdb55 + push bx ; 53 ; 0xfdb57 + push si ; 56 ; 0xfdb58 + push di ; 57 ; 0xfdb59 + push ax ; 50 ; 0xfdb5a + and dword [di+024h], strict dword 0658100ffh ; 66 81 65 24 ff 00 81 65 ; 0xfdb5b pci32.c:333 + sub AL, strict byte 0feh ; 2c fe ; 0xfdb63 + inc word [bx+si] ; ff 00 ; 0xfdb65 + add byte [bp+di+02445h], cl ; 00 8b 45 24 ; 0xfdb67 + xor ah, ah ; 30 e4 ; 0xfdb6b + cmp eax, strict dword 029720003h ; 66 3d 03 00 72 29 ; 0xfdb6d + jbe near 0dc12h ; 0f 86 9b 00 ; 0xfdb73 + add byte [bx+si], al ; 00 00 ; 0xfdb77 + cmp eax, strict dword 0840f000eh ; 66 3d 0e 00 0f 84 ; 0xfdb79 + lodsw ; ad ; 0xfdb7f + add word [bx+si], ax ; 01 00 ; 0xfdb80 + add byte [bp+03dh], ah ; 00 66 3d ; 0xfdb82 + or byte [bx+si], al ; 08 00 ; 0xfdb85 + jc near 0dd8ch ; 0f 82 01 02 ; 0xfdb87 + add byte [bx+si], al ; 00 00 ; 0xfdb8b + cmp eax, strict dword 0860f000dh ; 66 3d 0d 00 0f 86 ; 0xfdb8d + lodsb ; ac ; 0xfdb93 + add byte [bx+si], al ; 00 00 ; 0xfdb94 + add cl, ch ; 00 e9 ; 0xfdb96 + repne add word [bx+si], ax ; f2 01 00 ; 0xfdb98 + add byte [bp+03dh], ah ; 00 66 3d ; 0xfdb9b + add al, byte [bx+si] ; 02 00 ; 0xfdb9e + je short 0dbcah ; 74 28 ; 0xfdba0 + cmp eax, strict dword 0850f0001h ; 66 3d 01 00 0f 85 ; 0xfdba2 + loop 0dbabh ; e2 01 ; 0xfdba8 + add byte [bx+si], al ; 00 00 ; 0xfdbaa + mov dword [di+024h], strict dword 0c7660001h ; 66 c7 45 24 01 00 66 c7 ; 0xfdbac pci32.c:338 + inc bp ; 45 ; 0xfdbb4 + sbb byte [bx+si], dl ; 18 10 ; 0xfdbb5 + add dh, byte [bx+di] ; 02 31 ; 0xfdbb7 + sal byte [bp-077h], 045h ; c0 66 89 45 ; 0xfdbb9 + and bh, al ; 20 c7 ; 0xfdbbd + inc bp ; 45 ; 0xfdbbf + sbb AL, strict byte 050h ; 1c 50 ; 0xfdbc0 + inc bx ; 43 ; 0xfdbc2 + dec cx ; 49 ; 0xfdbc3 + and cl, ch ; 20 e9 ; 0xfdbc4 + aam 001h ; d4 01 ; 0xfdbc6 + add byte [bx+si], al ; 00 00 ; 0xfdbc8 + cmp dword [di+01ch], strict byte 0ffffffffh ; 66 83 7d 1c ff ; 0xfdbca pci32.c:348 + jne short 0dbdeh ; 75 0d ; 0xfdbcf + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbd1 pci32.c:349 + xor ah, ah ; 30 e4 ; 0xfdbd4 + or ah, 083h ; 80 cc 83 ; 0xfdbd6 + jmp near 0dd94h ; e9 b8 01 ; 0xfdbd9 pci32.c:350 + add byte [bx+si], al ; 00 00 ; 0xfdbdc + xor cx, cx ; 31 c9 ; 0xfdbde pci32.c:352 + xor bx, bx ; 31 db ; 0xfdbe0 + db 00fh, 0b7h, 055h, 00ch + ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdbe2 + db 00fh, 0b7h, 045h, 020h + ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdbe6 + sal ax, 010h ; c1 e0 10 ; 0xfdbea + db 00fh, 0b7h, 075h, 01ch + ; movzx si, [di+01ch] ; 0f b7 75 1c ; 0xfdbed + or ax, si ; 09 f0 ; 0xfdbf1 + call 0da53h ; e8 5d fe ; 0xfdbf3 + db 0ffh + jmp word [bp+03dh] ; ff 66 3d ; 0xfdbf7 + db 0ffh + push word [di+00dh] ; ff 75 0d ; 0xfdbfb + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbfe pci32.c:354 + xor ah, ah ; 30 e4 ; 0xfdc01 + or ah, 086h ; 80 cc 86 ; 0xfdc03 + jmp near 0dd94h ; e9 8b 01 ; 0xfdc06 + add byte [bx+si], al ; 00 00 ; 0xfdc09 + mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc0b pci32.c:355 + jmp near 0dd9ch ; e9 8a 01 ; 0xfdc0f pci32.c:360 + add byte [bx+si], al ; 00 00 ; 0xfdc12 + db 00fh, 0b7h, 055h, 00ch + ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc14 pci32.c:362 + mov ax, word [di+020h] ; 8b 45 20 ; 0xfdc18 + xor cx, cx ; 31 c9 ; 0xfdc1b + mov bx, strict word 00001h ; bb 01 00 ; 0xfdc1d + add byte [bx+si], al ; 00 00 ; 0xfdc20 + call 0da53h ; e8 2e fe ; 0xfdc22 + db 0ffh + jmp word [bp+03dh] ; ff 66 3d ; 0xfdc26 + db 0ffh + push word [di+00dh] ; ff 75 0d ; 0xfdc2a + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc2d pci32.c:364 + xor ah, ah ; 30 e4 ; 0xfdc30 + or ah, 086h ; 80 cc 86 ; 0xfdc32 + jmp near 0dd94h ; e9 5c 01 ; 0xfdc35 pci32.c:365 + add byte [bx+si], al ; 00 00 ; 0xfdc38 + mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc3a pci32.c:367 + jmp near 0dd9ch ; e9 5b 01 ; 0xfdc3e pci32.c:369 + add byte [bx+si], al ; 00 00 ; 0xfdc41 + cmp dword [di+008h], strict dword 00d720100h ; 66 81 7d 08 00 01 72 0d ; 0xfdc43 pci32.c:376 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc4b pci32.c:377 + xor ah, ah ; 30 e4 ; 0xfdc4e + or ah, 087h ; 80 cc 87 ; 0xfdc50 + jmp near 0dd94h ; e9 3e 01 ; 0xfdc53 pci32.c:378 + add byte [bx+si], al ; 00 00 ; 0xfdc56 + db 00fh, 0b7h, 055h, 008h + ; movzx dx, [di+008h] ; 0f b7 55 08 ; 0xfdc58 pci32.c:380 + db 00fh, 0b7h, 045h, 018h + ; movzx ax, [di+018h] ; 0f b7 45 18 ; 0xfdc5c + call 0da31h ; e8 ce fd ; 0xfdc60 + db 0ffh + dec word [bp+di+02445h] ; ff 8b 45 24 ; 0xfdc64 + xor ah, ah ; 30 e4 ; 0xfdc68 + cmp eax, strict dword 02172000ah ; 66 3d 0a 00 72 21 ; 0xfdc6a + jbe short 0dce1h ; 76 6f ; 0xfdc70 + cmp eax, strict dword 0840f000dh ; 66 3d 0d 00 0f 84 ; 0xfdc72 + test ax, strict word 00000h ; a9 00 00 ; 0xfdc78 + add byte [bp+03dh], ah ; 00 66 3d ; 0xfdc7b + or AL, strict byte 000h ; 0c 00 ; 0xfdc7e + je near 0dd07h ; 0f 84 83 00 ; 0xfdc80 + add byte [bx+si], al ; 00 00 ; 0xfdc84 + cmp eax, strict dword 06374000bh ; 66 3d 0b 00 74 63 ; 0xfdc86 + jmp near 0dd9ch ; e9 0d 01 ; 0xfdc8c + add byte [bx+si], al ; 00 00 ; 0xfdc8f + cmp eax, strict dword 02d740009h ; 66 3d 09 00 74 2d ; 0xfdc91 + cmp eax, strict dword 0850f0008h ; 66 3d 08 00 0f 85 ; 0xfdc97 + std ; fd ; 0xfdc9d + add byte [bx+si], al ; 00 00 ; 0xfdc9e + add byte [bp+di+0205dh], cl ; 00 8b 5d 20 ; 0xfdca0 + xor bl, bl ; 30 db ; 0xfdca4 + mov ax, word [di+008h] ; 8b 45 08 ; 0xfdca6 + xor ah, ah ; 30 e4 ; 0xfdca9 + and AL, strict byte 003h ; 24 03 ; 0xfdcab + db 00fh, 0b7h, 0d0h + ; movzx dx, ax ; 0f b7 d0 ; 0xfdcad + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcb0 + add byte [bx+si], al ; 00 00 ; 0xfdcb4 + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdcb6 + in AL, DX ; ec ; 0xfdcb8 + or bx, ax ; 09 c3 ; 0xfdcb9 + mov dword [di+020h], ebx ; 66 89 5d 20 ; 0xfdcbb + jmp near 0dd9ch ; e9 da 00 ; 0xfdcbf pci32.c:384 + add byte [bx+si], al ; 00 00 ; 0xfdcc2 + mov ax, word [di+008h] ; 8b 45 08 ; 0xfdcc4 pci32.c:386 + xor ah, ah ; 30 e4 ; 0xfdcc7 + and AL, strict byte 002h ; 24 02 ; 0xfdcc9 + db 00fh, 0b7h, 0d0h + ; movzx dx, ax ; 0f b7 d0 ; 0xfdccb + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcce + add byte [bx+si], al ; 00 00 ; 0xfdcd2 + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdcd4 + in eax, DX ; 66 ed ; 0xfdcd6 + mov dword [di+020h], eax ; 66 89 45 20 ; 0xfdcd8 + jmp near 0dd9ch ; e9 bd 00 ; 0xfdcdc pci32.c:387 + add byte [bx+si], al ; 00 00 ; 0xfdcdf + mov dx, 00cfch ; ba fc 0c ; 0xfdce1 pci32.c:389 + add byte [bx+si], al ; 00 00 ; 0xfdce4 + in ax, DX ; ed ; 0xfdce6 + mov word [di+020h], ax ; 89 45 20 ; 0xfdce7 + jmp near 0dd9ch ; e9 af 00 ; 0xfdcea pci32.c:390 + add byte [bx+si], al ; 00 00 ; 0xfdced + mov ax, word [di+020h] ; 8b 45 20 ; 0xfdcef pci32.c:392 + mov dx, word [di+008h] ; 8b 55 08 ; 0xfdcf2 + xor dh, dh ; 30 f6 ; 0xfdcf5 + and dl, 003h ; 80 e2 03 ; 0xfdcf7 + db 00fh, 0b7h, 0d2h + ; movzx dx, dx ; 0f b7 d2 ; 0xfdcfa + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcfd + add byte [bx+si], al ; 00 00 ; 0xfdd01 + out DX, AL ; ee ; 0xfdd03 + jmp near 0dd9ch ; e9 95 00 ; 0xfdd04 pci32.c:393 + add byte [bx+si], al ; 00 00 ; 0xfdd07 + db 00fh, 0b7h, 045h, 020h + ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdd09 pci32.c:395 + mov dx, word [di+008h] ; 8b 55 08 ; 0xfdd0d + xor dh, dh ; 30 f6 ; 0xfdd10 + and dl, 002h ; 80 e2 02 ; 0xfdd12 + db 00fh, 0b7h, 0d2h + ; movzx dx, dx ; 0f b7 d2 ; 0xfdd15 + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdd18 + add byte [bx+si], al ; 00 00 ; 0xfdd1c + out DX, eax ; 66 ef ; 0xfdd1e + jmp near 0dd9ch ; e9 79 00 ; 0xfdd20 pci32.c:396 + add byte [bx+si], al ; 00 00 ; 0xfdd23 + mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd25 pci32.c:398 + mov dx, 00cfch ; ba fc 0c ; 0xfdd28 + add byte [bx+si], al ; 00 00 ; 0xfdd2b + out DX, ax ; ef ; 0xfdd2d + jmp short 0dd9eh ; eb 6e ; 0xfdd2e pci32.c:402 + db 00fh, 0b7h, 045h, 008h + ; movzx ax, [di+008h] ; 0f b7 45 08 ; 0xfdd30 pci32.c:404 + mov es, [di+028h] ; 8e 45 28 ; 0xfdd34 + mov [di-010h], es ; 8c 45 f0 ; 0xfdd37 + mov bx, ax ; 89 c3 ; 0xfdd3a + mov edx, dword [di] ; 66 8b 15 ; 0xfdd3c pci32.c:408 + jo short 0dd34h ; 70 f3 ; 0xfdd3f + add byte [bx+si], al ; 00 00 ; 0xfdd41 + db 066h, 026h, 03bh, 010h + ; cmp edx, dword [es:bx+si] ; 66 26 3b 10 ; 0xfdd43 + jbe short 0dd5bh ; 76 12 ; 0xfdd47 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd49 pci32.c:409 + xor ah, ah ; 30 e4 ; 0xfdd4c + or ah, 089h ; 80 cc 89 ; 0xfdd4e + mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd51 + or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd55 pci32.c:410 + jmp short 0dd7fh ; eb 24 ; 0xfdd59 pci32.c:411 + db 00fh, 0b7h, 0cah + ; movzx cx, dx ; 0f b7 ca ; 0xfdd5b pci32.c:412 + db 066h, 026h, 08bh, 078h, 006h + ; mov edi, dword [es:bx+si+006h] ; 66 26 8b 78 06 ; 0xfdd5e + mov ax, word [es:bx+si+002h] ; 26 8b 40 02 ; 0xfdd63 + mov dx, ds ; 8c da ; 0xfdd67 + mov si, 0f190h ; be 90 f1 ; 0xfdd69 + add byte [bx+si], al ; 00 00 ; 0xfdd6c + mov es, di ; 8e c7 ; 0xfdd6e + mov di, ax ; 89 c7 ; 0xfdd70 + push DS ; 1e ; 0xfdd72 + db 066h, 08eh, 0dah + ; mov ds, edx ; 66 8e da ; 0xfdd73 + rep movsb ; f3 a4 ; 0xfdd76 + pop DS ; 1f ; 0xfdd78 + mov dword [di+018h], strict dword 0a1660a00h ; 66 c7 45 18 00 0a 66 a1 ; 0xfdd79 pci32.c:414 + jo short 0dd76h ; 70 f3 ; 0xfdd81 + add byte [bx+si], al ; 00 00 ; 0xfdd83 + mov es, [di-010h] ; 8e 45 f0 ; 0xfdd85 + db 066h, 026h, 089h, 003h + ; mov dword [es:bp+di], eax ; 66 26 89 03 ; 0xfdd88 + jmp short 0dd9eh ; eb 10 ; 0xfdd8c pci32.c:417 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd8e pci32.c:420 + xor ah, ah ; 30 e4 ; 0xfdd91 + or ah, 081h ; 80 cc 81 ; 0xfdd93 + mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd96 + or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd9a pci32.c:421 + lea sp, [di-00ch] ; 8d 65 f4 ; 0xfdd9e pci32.c:423 + pop di ; 5f ; 0xfdda1 + pop si ; 5e ; 0xfdda2 + pop bx ; 5b ; 0xfdda3 + pop bp ; 5d ; 0xfdda4 + retn ; c3 ; 0xfdda5 + + ; Padding 0x2 bytes at 0xfdda6 + times 2 db 0 + +section BIOS32CONST progbits vstart=0xdda8 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP + +section BIOS32CONST2 progbits vstart=0xdda8 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP + +section BIOS32_DATA progbits vstart=0xdda8 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP + + ; Padding 0x258 bytes at 0xfdda8 + times 600 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:247 + out strict byte 0a0h, AL ; e6 a0 ; 0xfe032 orgs.asm:248 + ; 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:250 + out strict byte 020h, AL ; e6 20 ; 0xfe036 orgs.asm:251 + retn ; c3 ; 0xfe038 orgs.asm:252 + ; 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:259 + mov word [bx+002h], dx ; 89 57 02 ; 0xfe03b orgs.asm:260 + add bx, strict byte 00004h ; 83 c3 04 ; 0xfe03e orgs.asm:261 + loop 0e039h ; e2 f6 ; 0xfe041 orgs.asm:262 + retn ; c3 ; 0xfe043 orgs.asm:263 + ; 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:271 + mov AL, strict byte 020h ; b0 20 ; 0xfe046 orgs.asm:272 + out strict byte 020h, AL ; e6 20 ; 0xfe048 orgs.asm:273 + ; 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:276 + mov ds, ax ; 8e d8 ; 0xfe04d orgs.asm:277 + jmp far [word 00067h] ; ff 2e 67 00 ; 0xfe04f orgs.asm:278 + ; 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:287 + jmp short 0e064h ; eb 06 ; 0xfe05c orgs.asm:298 + mov AL, strict byte 001h ; b0 01 ; 0xfe05e orgs.asm:304 + out strict byte 092h, AL ; e6 92 ; 0xfe060 orgs.asm:305 + jmp short 0e062h ; eb fe ; 0xfe062 orgs.asm:306 + mov AL, strict byte 00fh ; b0 0f ; 0xfe064 orgs.asm:311 + out strict byte 070h, AL ; e6 70 ; 0xfe066 orgs.asm:312 + in AL, strict byte 071h ; e4 71 ; 0xfe068 orgs.asm:313 + xchg ah, al ; 86 c4 ; 0xfe06a orgs.asm:316 + in AL, strict byte 064h ; e4 64 ; 0xfe06c orgs.asm:320 + test AL, strict byte 004h ; a8 04 ; 0xfe06e orgs.asm:321 + je short 0e085h ; 74 13 ; 0xfe070 orgs.asm:322 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfe072 orgs.asm:325 + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xfe074 orgs.asm:326 + jne short 0e085h ; 75 0d ; 0xfe076 orgs.asm:327 + mov ds, [cs:0e053h] ; 2e 8e 1e 53 e0 ; 0xfe078 orgs.asm:333 + cmp word [word 00072h], 01234h ; 81 3e 72 00 34 12 ; 0xfe07d orgs.asm:334 + jne short 0e05eh ; 75 d9 ; 0xfe083 orgs.asm:335 + mov AL, strict byte 00fh ; b0 0f ; 0xfe085 orgs.asm:339 + out strict byte 070h, AL ; e6 70 ; 0xfe087 orgs.asm:340 + mov AL, strict byte 000h ; b0 00 ; 0xfe089 orgs.asm:341 + out strict byte 071h, AL ; e6 71 ; 0xfe08b orgs.asm:342 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfe08d orgs.asm:346 + cmp AL, strict byte 009h ; 3c 09 ; 0xfe08f orgs.asm:347 + je short 0e0a5h ; 74 12 ; 0xfe091 orgs.asm:348 + cmp AL, strict byte 00ah ; 3c 0a ; 0xfe093 orgs.asm:349 + je short 0e0a5h ; 74 0e ; 0xfe095 orgs.asm:350 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfe097 orgs.asm:352 + out strict byte 00dh, AL ; e6 0d ; 0xfe099 orgs.asm:355 + out strict byte 0dah, AL ; e6 da ; 0xfe09b orgs.asm:356 + mov AL, strict byte 0c0h ; b0 c0 ; 0xfe09d orgs.asm:359 + out strict byte 0d6h, AL ; e6 d6 ; 0xfe09f orgs.asm:360 + mov AL, strict byte 000h ; b0 00 ; 0xfe0a1 orgs.asm:361 + out strict byte 0d4h, AL ; e6 d4 ; 0xfe0a3 orgs.asm:362 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfe0a5 orgs.asm:366 + cmp AL, strict byte 000h ; 3c 00 ; 0xfe0a7 orgs.asm:367 + je short 0e0c3h ; 74 18 ; 0xfe0a9 orgs.asm:368 + cmp AL, strict byte 00dh ; 3c 0d ; 0xfe0ab orgs.asm:370 + jnc short 0e0c3h ; 73 14 ; 0xfe0ad orgs.asm:371 + cmp AL, strict byte 009h ; 3c 09 ; 0xfe0af orgs.asm:372 + jne short 0e0b6h ; 75 03 ; 0xfe0b1 orgs.asm:373 + jmp near 0e350h ; e9 9a 02 ; 0xfe0b3 orgs.asm:374 + mov sp, 00400h ; bc 00 04 ; 0xfe0b6 orgs.asm:377 + cmp AL, strict byte 005h ; 3c 05 ; 0xfe0b9 orgs.asm:379 + je short 0e044h ; 74 87 ; 0xfe0bb orgs.asm:380 + cmp AL, strict byte 00ah ; 3c 0a ; 0xfe0bd orgs.asm:382 + je short 0e04ah ; 74 89 ; 0xfe0bf orgs.asm:383 + jmp short 0e0c3h ; eb 00 ; 0xfe0c1 orgs.asm:387 + ; disGetNextSymbol 0xfe0c3 LB 0x1f3d -> off=0x0 cb=00000000000001f2 uValue=00000000000f00c3 'normal_post' +normal_post: ; 0xfe0c3 LB 0x1f2 + mov ax, 07800h ; b8 00 78 ; 0xfe0c3 orgs.asm:396 + db 08bh, 0e0h + ; mov sp, ax ; 8b e0 ; 0xfe0c6 orgs.asm:397 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe0c8 orgs.asm:398 + mov ds, ax ; 8e d8 ; 0xfe0ca orgs.asm:399 + mov ss, ax ; 8e d0 ; 0xfe0cc orgs.asm:400 + mov es, ax ; 8e c0 ; 0xfe0ce orgs.asm:404 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xfe0d0 orgs.asm:405 + cld ; fc ; 0xfe0d2 orgs.asm:406 + mov cx, 00239h ; b9 39 02 ; 0xfe0d3 orgs.asm:407 + rep stosw ; f3 ab ; 0xfe0d6 orgs.asm:408 + inc di ; 47 ; 0xfe0d8 orgs.asm:409 + inc di ; 47 ; 0xfe0d9 orgs.asm:410 + mov cx, 005c6h ; b9 c6 05 ; 0xfe0da orgs.asm:411 + rep stosw ; f3 ab ; 0xfe0dd orgs.asm:412 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe0df orgs.asm:416 + add bx, 01000h ; 81 c3 00 10 ; 0xfe0e1 orgs.asm:418 + cmp bx, 09000h ; 81 fb 00 90 ; 0xfe0e5 orgs.asm:419 + jnc short 0e0f6h ; 73 0b ; 0xfe0e9 orgs.asm:420 + mov es, bx ; 8e c3 ; 0xfe0eb orgs.asm:421 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xfe0ed orgs.asm:422 + mov cx, 08000h ; b9 00 80 ; 0xfe0ef orgs.asm:423 + rep stosw ; f3 ab ; 0xfe0f2 orgs.asm:424 + jmp short 0e0e1h ; eb eb ; 0xfe0f4 orgs.asm:425 + mov es, bx ; 8e c3 ; 0xfe0f6 orgs.asm:427 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xfe0f8 orgs.asm:428 + mov cx, 07ff8h ; b9 f8 7f ; 0xfe0fa orgs.asm:429 + rep stosw ; f3 ab ; 0xfe0fd orgs.asm:430 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe0ff orgs.asm:431 + push CS ; 0e ; 0xfe101 orgs.asm:113 + pop DS ; 1f ; 0xfe102 orgs.asm:114 + cld ; fc ; 0xfe103 orgs.asm:115 + call 01762h ; e8 5b 36 ; 0xfe104 orgs.asm:435 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe107 orgs.asm:442 + mov ds, bx ; 8e db ; 0xfe109 orgs.asm:443 + mov cx, strict word 00060h ; b9 60 00 ; 0xfe10b orgs.asm:444 + mov ax, 0ff53h ; b8 53 ff ; 0xfe10e orgs.asm:445 + mov dx, 0f000h ; ba 00 f0 ; 0xfe111 orgs.asm:446 + call 0e039h ; e8 22 ff ; 0xfe114 orgs.asm:447 + mov bx, 001a0h ; bb a0 01 ; 0xfe117 orgs.asm:452 + mov cx, strict word 00010h ; b9 10 00 ; 0xfe11a orgs.asm:453 + call 0e039h ; e8 19 ff ; 0xfe11d orgs.asm:454 + mov AL, strict byte 016h ; b0 16 ; 0xfe120 orgs.asm:457 + out strict byte 070h, AL ; e6 70 ; 0xfe122 orgs.asm:458 + in AL, strict byte 071h ; e4 71 ; 0xfe124 orgs.asm:459 + db 08ah, 0e0h + ; mov ah, al ; 8a e0 ; 0xfe126 orgs.asm:460 + mov AL, strict byte 015h ; b0 15 ; 0xfe128 orgs.asm:461 + out strict byte 070h, AL ; e6 70 ; 0xfe12a orgs.asm:462 + in AL, strict byte 071h ; e4 71 ; 0xfe12c orgs.asm:463 + sub ax, strict byte 00001h ; 83 e8 01 ; 0xfe12e orgs.asm:464 + mov word [00413h], ax ; a3 13 04 ; 0xfe131 orgs.asm:465 + mov ax, 0e9dah ; b8 da e9 ; 0xfe134 orgs.asm:104 + mov word [00018h], ax ; a3 18 00 ; 0xfe137 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe13a orgs.asm:106 + mov word [0001ah], ax ; a3 1a 00 ; 0xfe13d orgs.asm:107 + mov ax, 0f84dh ; b8 4d f8 ; 0xfe140 orgs.asm:104 + mov word [00044h], ax ; a3 44 00 ; 0xfe143 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe146 orgs.asm:106 + mov word [00046h], ax ; a3 46 00 ; 0xfe149 orgs.asm:107 + mov ax, 0f841h ; b8 41 f8 ; 0xfe14c orgs.asm:104 + mov word [00048h], ax ; a3 48 00 ; 0xfe14f orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe152 orgs.asm:106 + mov word [0004ah], ax ; a3 4a 00 ; 0xfe155 orgs.asm:107 + mov ax, 0f859h ; b8 59 f8 ; 0xfe158 orgs.asm:104 + mov word [00054h], ax ; a3 54 00 ; 0xfe15b orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe15e orgs.asm:106 + mov word [00056h], ax ; a3 56 00 ; 0xfe161 orgs.asm:107 + mov ax, 0efd4h ; b8 d4 ef ; 0xfe164 orgs.asm:104 + mov word [0005ch], ax ; a3 5c 00 ; 0xfe167 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe16a orgs.asm:106 + mov word [0005eh], ax ; a3 5e 00 ; 0xfe16d orgs.asm:107 + mov ax, 0f0a4h ; b8 a4 f0 ; 0xfe170 orgs.asm:104 + mov word [00060h], ax ; a3 60 00 ; 0xfe173 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe176 orgs.asm:106 + mov word [00062h], ax ; a3 62 00 ; 0xfe179 orgs.asm:107 + mov ax, 0e6f2h ; b8 f2 e6 ; 0xfe17c orgs.asm:104 + mov word [00064h], ax ; a3 64 00 ; 0xfe17f orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe182 orgs.asm:106 + mov word [00066h], ax ; a3 66 00 ; 0xfe185 orgs.asm:107 + mov ax, 0effbh ; b8 fb ef ; 0xfe188 orgs.asm:104 + mov word [00070h], ax ; a3 70 00 ; 0xfe18b orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe18e orgs.asm:106 + mov word [00072h], ax ; a3 72 00 ; 0xfe191 orgs.asm:107 + call 0e794h ; e8 fd 05 ; 0xfe194 orgs.asm:481 + mov ax, 0fe6eh ; b8 6e fe ; 0xfe197 orgs.asm:104 + mov word [00068h], ax ; a3 68 00 ; 0xfe19a orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe19d orgs.asm:106 + mov word [0006ah], ax ; a3 6a 00 ; 0xfe1a0 orgs.asm:107 + mov ax, 0fea5h ; b8 a5 fe ; 0xfe1a3 orgs.asm:104 + mov word [00020h], ax ; a3 20 00 ; 0xfe1a6 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1a9 orgs.asm:106 + mov word [00022h], ax ; a3 22 00 ; 0xfe1ac orgs.asm:107 + mov AL, strict byte 034h ; b0 34 ; 0xfe1af orgs.asm:492 + out strict byte 043h, AL ; e6 43 ; 0xfe1b1 orgs.asm:493 + mov AL, strict byte 000h ; b0 00 ; 0xfe1b3 orgs.asm:494 + out strict byte 040h, AL ; e6 40 ; 0xfe1b5 orgs.asm:495 + out strict byte 040h, AL ; e6 40 ; 0xfe1b7 orgs.asm:496 + mov ax, 0f065h ; b8 65 f0 ; 0xfe1b9 orgs.asm:104 + mov word [00040h], ax ; a3 40 00 ; 0xfe1bc orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1bf orgs.asm:106 + mov word [00042h], ax ; a3 42 00 ; 0xfe1c2 orgs.asm:107 + mov ax, 0e987h ; b8 87 e9 ; 0xfe1c5 orgs.asm:104 + mov word [00024h], ax ; a3 24 00 ; 0xfe1c8 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1cb orgs.asm:106 + mov word [00026h], ax ; a3 26 00 ; 0xfe1ce orgs.asm:107 + mov ax, 0e82eh ; b8 2e e8 ; 0xfe1d1 orgs.asm:104 + mov word [00058h], ax ; a3 58 00 ; 0xfe1d4 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1d7 orgs.asm:106 + mov word [0005ah], ax ; a3 5a 00 ; 0xfe1da orgs.asm:107 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe1dd orgs.asm:505 + mov ds, ax ; 8e d8 ; 0xfe1df orgs.asm:506 + mov AL, strict byte 010h ; b0 10 ; 0xfe1e1 orgs.asm:507 + mov byte [00496h], AL ; a2 96 04 ; 0xfe1e3 orgs.asm:508 + mov bx, strict word 0001eh ; bb 1e 00 ; 0xfe1e6 orgs.asm:510 + mov word [0041ah], bx ; 89 1e 1a 04 ; 0xfe1e9 orgs.asm:511 + mov word [0041ch], bx ; 89 1e 1c 04 ; 0xfe1ed orgs.asm:512 + mov word [00480h], bx ; 89 1e 80 04 ; 0xfe1f1 orgs.asm:513 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xfe1f5 orgs.asm:514 + mov word [00482h], bx ; 89 1e 82 04 ; 0xfe1f8 orgs.asm:515 + mov AL, strict byte 014h ; b0 14 ; 0xfe1fc orgs.asm:518 + out strict byte 070h, AL ; e6 70 ; 0xfe1fe orgs.asm:519 + in AL, strict byte 071h ; e4 71 ; 0xfe200 orgs.asm:520 + mov byte [00410h], AL ; a2 10 04 ; 0xfe202 orgs.asm:521 + push DS ; 1e ; 0xfe205 orgs.asm:523 + push CS ; 0e ; 0xfe206 orgs.asm:113 + pop DS ; 1f ; 0xfe207 orgs.asm:114 + cld ; fc ; 0xfe208 orgs.asm:115 + mov ax, 0c000h ; b8 00 c0 ; 0xfe209 orgs.asm:528 + mov dx, 0c800h ; ba 00 c8 ; 0xfe20c orgs.asm:529 + call 01600h ; e8 ee 33 ; 0xfe20f orgs.asm:530 + call 04e2bh ; e8 16 6c ; 0xfe212 orgs.asm:533 + pop DS ; 1f ; 0xfe215 orgs.asm:534 + mov ax, 0ff53h ; b8 53 ff ; 0xfe216 orgs.asm:104 + mov word [0003ch], ax ; a3 3c 00 ; 0xfe219 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe21c orgs.asm:106 + mov word [0003eh], ax ; a3 3e 00 ; 0xfe21f orgs.asm:107 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe222 orgs.asm:538 + mov ds, ax ; 8e d8 ; 0xfe224 orgs.asm:539 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe226 orgs.asm:540 + mov CL, strict byte 014h ; b1 14 ; 0xfe228 orgs.asm:541 + mov dx, 00378h ; ba 78 03 ; 0xfe22a orgs.asm:542 + call 0ed0ah ; e8 da 0a ; 0xfe22d orgs.asm:543 + mov dx, 00278h ; ba 78 02 ; 0xfe230 orgs.asm:544 + call 0ed0ah ; e8 d4 0a ; 0xfe233 orgs.asm:545 + push cx ; 51 ; 0xfe236 orgs.asm:213 + mov CL, strict byte 00eh ; b1 0e ; 0xfe237 orgs.asm:214 + sal bx, CL ; d3 e3 ; 0xfe239 orgs.asm:215 + pop cx ; 59 ; 0xfe23b orgs.asm:216 + mov ax, word [00410h] ; a1 10 04 ; 0xfe23c orgs.asm:547 + and ax, 03fffh ; 25 ff 3f ; 0xfe23f orgs.asm:548 + db 00bh, 0c3h + ; or ax, bx ; 0b c3 ; 0xfe242 orgs.asm:549 + mov word [00410h], ax ; a3 10 04 ; 0xfe244 orgs.asm:550 + mov ax, 0e754h ; b8 54 e7 ; 0xfe247 orgs.asm:104 + mov word [0002ch], ax ; a3 2c 00 ; 0xfe24a orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe24d orgs.asm:106 + mov word [0002eh], ax ; a3 2e 00 ; 0xfe250 orgs.asm:107 + mov ax, 0e754h ; b8 54 e7 ; 0xfe253 orgs.asm:104 + mov word [00030h], ax ; a3 30 00 ; 0xfe256 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe259 orgs.asm:106 + mov word [00032h], ax ; a3 32 00 ; 0xfe25c orgs.asm:107 + mov ax, 0e739h ; b8 39 e7 ; 0xfe25f orgs.asm:104 + mov word [00050h], ax ; a3 50 00 ; 0xfe262 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe265 orgs.asm:106 + mov word [00052h], ax ; a3 52 00 ; 0xfe268 orgs.asm:107 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe26b orgs.asm:556 + mov CL, strict byte 00ah ; b1 0a ; 0xfe26d orgs.asm:557 + mov dx, 003f8h ; ba f8 03 ; 0xfe26f orgs.asm:558 + call 0ed28h ; e8 b3 0a ; 0xfe272 orgs.asm:559 + mov dx, 002f8h ; ba f8 02 ; 0xfe275 orgs.asm:560 + call 0ed28h ; e8 ad 0a ; 0xfe278 orgs.asm:561 + mov dx, 003e8h ; ba e8 03 ; 0xfe27b orgs.asm:562 + call 0ed28h ; e8 a7 0a ; 0xfe27e orgs.asm:563 + mov dx, 002e8h ; ba e8 02 ; 0xfe281 orgs.asm:564 + call 0ed28h ; e8 a1 0a ; 0xfe284 orgs.asm:565 + push cx ; 51 ; 0xfe287 orgs.asm:213 + mov CL, strict byte 009h ; b1 09 ; 0xfe288 orgs.asm:214 + sal bx, CL ; d3 e3 ; 0xfe28a orgs.asm:215 + pop cx ; 59 ; 0xfe28c orgs.asm:216 + mov ax, word [00410h] ; a1 10 04 ; 0xfe28d orgs.asm:567 + and ax, 0f1ffh ; 25 ff f1 ; 0xfe290 orgs.asm:568 + db 00bh, 0c3h + ; or ax, bx ; 0b c3 ; 0xfe293 orgs.asm:569 + mov word [00410h], ax ; a3 10 04 ; 0xfe295 orgs.asm:570 + mov ax, 0ff53h ; b8 53 ff ; 0xfe298 orgs.asm:104 + mov word [00128h], ax ; a3 28 01 ; 0xfe29b orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe29e orgs.asm:106 + mov word [0012ah], ax ; a3 2a 01 ; 0xfe2a1 orgs.asm:107 + mov ax, 0f8f1h ; b8 f1 f8 ; 0xfe2a4 orgs.asm:104 + mov word [001c0h], ax ; a3 c0 01 ; 0xfe2a7 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2aa orgs.asm:106 + mov word [001c2h], ax ; a3 c2 01 ; 0xfe2ad orgs.asm:107 + call 0ede3h ; e8 30 0b ; 0xfe2b0 orgs.asm:576 + jmp short 0e303h ; eb 4e ; 0xfe2b3 orgs.asm:578 + ; disGetNextSymbol 0xfe2b5 LB 0x1d4b -> off=0x0 cb=000000000000000e uValue=00000000000f02b5 'biosorg_check_before_or_at_0E2C1h' +biosorg_check_before_or_at_0E2C1h: ; 0xfe2b5 LB 0xe + times 0xc 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:113 + pop DS ; 1f ; 0xfe2c4 orgs.asm:114 + cld ; fc ; 0xfe2c5 orgs.asm:115 + call 0171dh ; e8 54 34 ; 0xfe2c6 orgs.asm:587 + iret ; cf ; 0xfe2c9 orgs.asm:588 + ; 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:591 + call 0e030h ; e8 61 fd ; 0xfe2cc orgs.asm:592 + int 002h ; cd 02 ; 0xfe2cf orgs.asm:593 + iret ; cf ; 0xfe2d1 orgs.asm:594 + ; 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:599 + mov ds, ax ; 8e d8 ; 0xfe2d4 orgs.asm:600 + mov byte [00474h], AL ; a2 74 04 ; 0xfe2d6 orgs.asm:602 + mov byte [00477h], AL ; a2 77 04 ; 0xfe2d9 orgs.asm:603 + mov byte [0048ch], AL ; a2 8c 04 ; 0xfe2dc orgs.asm:604 + mov byte [0048dh], AL ; a2 8d 04 ; 0xfe2df orgs.asm:605 + mov byte [0048eh], AL ; a2 8e 04 ; 0xfe2e2 orgs.asm:606 + mov AL, strict byte 0c0h ; b0 c0 ; 0xfe2e5 orgs.asm:607 + mov byte [00476h], AL ; a2 76 04 ; 0xfe2e7 orgs.asm:608 + mov ax, 0e3feh ; b8 fe e3 ; 0xfe2ea orgs.asm:104 + mov word [0004ch], ax ; a3 4c 00 ; 0xfe2ed orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2f0 orgs.asm:106 + mov word [0004eh], ax ; a3 4e 00 ; 0xfe2f3 orgs.asm:107 + mov ax, 0f8dfh ; b8 df f8 ; 0xfe2f6 orgs.asm:104 + mov word [001d8h], ax ; a3 d8 01 ; 0xfe2f9 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2fc orgs.asm:106 + mov word [001dah], ax ; a3 da 01 ; 0xfe2ff orgs.asm:107 + retn ; c3 ; 0xfe302 orgs.asm:613 + mov ax, 0f8a5h ; b8 a5 f8 ; 0xfe303 orgs.asm:104 + mov word [001d0h], ax ; a3 d0 01 ; 0xfe306 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe309 orgs.asm:106 + mov word [001d2h], ax ; a3 d2 01 ; 0xfe30c orgs.asm:107 + mov ax, 0e2cah ; b8 ca e2 ; 0xfe30f orgs.asm:104 + mov word [001d4h], ax ; a3 d4 01 ; 0xfe312 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe315 orgs.asm:106 + mov word [001d6h], ax ; a3 d6 01 ; 0xfe318 orgs.asm:107 + call 0e76fh ; e8 51 04 ; 0xfe31b orgs.asm:625 + push CS ; 0e ; 0xfe31e orgs.asm:113 + pop DS ; 1f ; 0xfe31f orgs.asm:114 + cld ; fc ; 0xfe320 orgs.asm:115 + call 01cabh ; e8 87 39 ; 0xfe321 orgs.asm:639 + call 021cfh ; e8 a8 3e ; 0xfe324 orgs.asm:640 + sti ; fb ; 0xfe327 orgs.asm:647 + call 09155h ; e8 2a ae ; 0xfe328 orgs.asm:648 + cli ; fa ; 0xfe32b orgs.asm:649 + call 08056h ; e8 27 9d ; 0xfe32c orgs.asm:654 + call 0ed4ch ; e8 1a 0a ; 0xfe32f orgs.asm:658 + call 0e2d2h ; e8 9d ff ; 0xfe332 orgs.asm:661 + push CS ; 0e ; 0xfe335 orgs.asm:113 + pop DS ; 1f ; 0xfe336 orgs.asm:114 + cld ; fc ; 0xfe337 orgs.asm:115 + mov ax, 0c800h ; b8 00 c8 ; 0xfe338 orgs.asm:665 + mov dx, 0f000h ; ba 00 f0 ; 0xfe33b orgs.asm:666 + call 01600h ; e8 bf 32 ; 0xfe33e orgs.asm:667 + call 01786h ; e8 42 34 ; 0xfe341 orgs.asm:681 + call 03bf9h ; e8 b2 58 ; 0xfe344 orgs.asm:684 + sti ; fb ; 0xfe347 orgs.asm:687 + int 019h ; cd 19 ; 0xfe348 orgs.asm:688 + sti ; fb ; 0xfe34a orgs.asm:690 + hlt ; f4 ; 0xfe34b orgs.asm:692 + jmp short 0e34bh ; eb fd ; 0xfe34c orgs.asm:693 + cli ; fa ; 0xfe34e orgs.asm:694 + hlt ; f4 ; 0xfe34f orgs.asm:695 + mov ax, strict word 00040h ; b8 40 00 ; 0xfe350 orgs.asm:704 + mov ds, ax ; 8e d8 ; 0xfe353 orgs.asm:705 + mov ss, [word 00069h] ; 8e 16 69 00 ; 0xfe355 orgs.asm:707 + mov sp, word [word 00067h] ; 8b 26 67 00 ; 0xfe359 orgs.asm:708 + in AL, strict byte 092h ; e4 92 ; 0xfe35d orgs.asm:710 + and AL, strict byte 0fdh ; 24 fd ; 0xfe35f orgs.asm:711 + out strict byte 092h, AL ; e6 92 ; 0xfe361 orgs.asm:712 + lidt [cs:0eff5h] ; 2e 0f 01 1e f5 ef ; 0xfe363 orgs.asm:714 + pop DS ; 1f ; 0xfe369 orgs.asm:716 + pop ES ; 07 ; 0xfe36a orgs.asm:717 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xfe36b orgs.asm:719 + in AL, strict byte 080h ; e4 80 ; 0xfe36d orgs.asm:721 + mov byte [bp+00fh], al ; 88 46 0f ; 0xfe36f orgs.asm:722 + db 03ah, 0e0h + ; cmp ah, al ; 3a e0 ; 0xfe372 orgs.asm:724 + popaw ; 61 ; 0xfe374 orgs.asm:726 + sti ; fb ; 0xfe375 orgs.asm:727 + retf 00002h ; ca 02 00 ; 0xfe376 orgs.asm:728 + ; 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:738 + ; disGetNextSymbol 0xfe401 LB 0x1bff -> off=0x0 cb=0000000000000170 uValue=00000000000f0401 'rom_fdpt' +rom_fdpt: ; 0xfe401 LB 0x170 + db 032h, 001h, 004h, 000h, 000h, 080h, 000h, 000h, 000h, 000h, 000h, 000h, 031h, 001h, 011h, 000h + db 067h, 002h, 004h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 067h, 002h, 011h, 000h + db 067h, 002h, 006h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 067h, 002h, 011h, 000h + db 0ach, 003h, 008h, 000h, 000h, 000h, 002h, 000h, 000h, 000h, 000h, 000h, 0ach, 003h, 011h, 000h + db 0ach, 003h, 006h, 000h, 000h, 000h, 002h, 000h, 000h, 000h, 000h, 000h, 0ach, 003h, 011h, 000h + db 067h, 002h, 004h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 067h, 002h, 011h, 000h + db 0ceh, 001h, 008h, 000h, 000h, 000h, 001h, 000h, 000h, 000h, 000h, 000h, 0ffh, 001h, 011h, 000h + db 0ddh, 002h, 005h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 0ddh, 002h, 011h, 000h + db 084h, 003h, 00fh, 000h, 000h, 0ffh, 0ffh, 000h, 008h, 000h, 000h, 000h, 085h, 003h, 011h, 000h + db 034h, 003h, 003h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 034h, 003h, 011h, 000h + db 057h, 003h, 005h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 057h, 003h, 011h, 000h + db 057h, 003h, 007h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 057h, 003h, 011h, 000h + db 032h, 001h, 008h, 000h, 000h, 080h, 000h, 000h, 000h, 000h, 000h, 000h, 03fh, 001h, 011h, 000h + db 0ddh, 002h, 007h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 0ddh, 002h, 011h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 064h, 002h, 004h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 079h, 002h, 011h, 000h + db 0d1h, 003h, 005h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0d1h, 003h, 011h, 000h + db 0d1h, 003h, 007h, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 000h, 000h, 0d1h, 003h, 011h, 000h + db 000h, 004h, 007h, 000h, 000h, 000h, 002h, 000h, 000h, 000h, 000h, 000h, 0ffh, 003h, 011h, 000h + db 0ddh, 002h, 005h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0dch, 002h, 011h, 000h + db 0ddh, 002h, 007h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0dch, 002h, 011h, 000h + db 0ddh, 002h, 005h, 000h, 000h, 02ch, 001h, 000h, 000h, 000h, 000h, 000h, 0ddh, 002h, 011h, 000h + db 032h, 001h, 004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 050h, 001h, 011h, 000h + ; disGetNextSymbol 0xfe571 LB 0x1a8f -> off=0x0 cb=0000000000000181 uValue=00000000000f0571 'biosorg_check_before_or_at_0E6F0h' +biosorg_check_before_or_at_0E6F0h: ; 0xfe571 LB 0x181 + times 0x17f db 0 + db 'XM' + ; disGetNextSymbol 0xfe6f2 LB 0x190e -> off=0x0 cb=0000000000000003 uValue=00000000000f06f2 'int19_handler' +int19_handler: ; 0xfe6f2 LB 0x3 + jmp near 0f0aeh ; e9 b9 09 ; 0xfe6f2 orgs.asm:795 + ; 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:868 + push ES ; 06 ; 0xfe73a orgs.asm:869 + push ax ; 50 ; 0xfe73b orgs.asm:109 + push cx ; 51 ; 0xfe73c orgs.asm:110 + push dx ; 52 ; 0xfe73d orgs.asm:111 + push bx ; 53 ; 0xfe73e orgs.asm:112 + push sp ; 54 ; 0xfe73f orgs.asm:113 + push bp ; 55 ; 0xfe740 orgs.asm:114 + push si ; 56 ; 0xfe741 orgs.asm:115 + push di ; 57 ; 0xfe742 orgs.asm:116 + push CS ; 0e ; 0xfe743 orgs.asm:113 + pop DS ; 1f ; 0xfe744 orgs.asm:114 + cld ; fc ; 0xfe745 orgs.asm:115 + call 06398h ; e8 4f 7c ; 0xfe746 orgs.asm:872 + pop di ; 5f ; 0xfe749 orgs.asm:126 + pop si ; 5e ; 0xfe74a orgs.asm:127 + pop bp ; 5d ; 0xfe74b orgs.asm:128 + pop bx ; 5b ; 0xfe74c orgs.asm:129 + pop bx ; 5b ; 0xfe74d orgs.asm:130 + pop dx ; 5a ; 0xfe74e orgs.asm:131 + pop cx ; 59 ; 0xfe74f orgs.asm:132 + pop ax ; 58 ; 0xfe750 orgs.asm:133 + pop ES ; 07 ; 0xfe751 orgs.asm:874 + pop DS ; 1f ; 0xfe752 orgs.asm:875 + iret ; cf ; 0xfe753 orgs.asm:876 + push DS ; 1e ; 0xfe754 orgs.asm:884 + push ES ; 06 ; 0xfe755 orgs.asm:885 + push ax ; 50 ; 0xfe756 orgs.asm:109 + push cx ; 51 ; 0xfe757 orgs.asm:110 + push dx ; 52 ; 0xfe758 orgs.asm:111 + push bx ; 53 ; 0xfe759 orgs.asm:112 + push sp ; 54 ; 0xfe75a orgs.asm:113 + push bp ; 55 ; 0xfe75b orgs.asm:114 + push si ; 56 ; 0xfe75c orgs.asm:115 + push di ; 57 ; 0xfe75d orgs.asm:116 + push CS ; 0e ; 0xfe75e orgs.asm:113 + pop DS ; 1f ; 0xfe75f orgs.asm:114 + cld ; fc ; 0xfe760 orgs.asm:115 + call 016bch ; e8 58 2f ; 0xfe761 orgs.asm:888 + pop di ; 5f ; 0xfe764 orgs.asm:126 + pop si ; 5e ; 0xfe765 orgs.asm:127 + pop bp ; 5d ; 0xfe766 orgs.asm:128 + pop bx ; 5b ; 0xfe767 orgs.asm:129 + pop bx ; 5b ; 0xfe768 orgs.asm:130 + pop dx ; 5a ; 0xfe769 orgs.asm:131 + pop cx ; 59 ; 0xfe76a orgs.asm:132 + pop ax ; 58 ; 0xfe76b orgs.asm:133 + pop ES ; 07 ; 0xfe76c orgs.asm:890 + pop DS ; 1f ; 0xfe76d orgs.asm:891 + iret ; cf ; 0xfe76e orgs.asm:892 + ; 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:897 + out strict byte 020h, AL ; e6 20 ; 0xfe771 orgs.asm:898 + out strict byte 0a0h, AL ; e6 a0 ; 0xfe773 orgs.asm:899 + mov AL, strict byte 008h ; b0 08 ; 0xfe775 orgs.asm:900 + out strict byte 021h, AL ; e6 21 ; 0xfe777 orgs.asm:901 + mov AL, strict byte 070h ; b0 70 ; 0xfe779 orgs.asm:902 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe77b orgs.asm:903 + mov AL, strict byte 004h ; b0 04 ; 0xfe77d orgs.asm:904 + out strict byte 021h, AL ; e6 21 ; 0xfe77f orgs.asm:905 + mov AL, strict byte 002h ; b0 02 ; 0xfe781 orgs.asm:906 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe783 orgs.asm:907 + mov AL, strict byte 001h ; b0 01 ; 0xfe785 orgs.asm:908 + out strict byte 021h, AL ; e6 21 ; 0xfe787 orgs.asm:909 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe789 orgs.asm:910 + mov AL, strict byte 0b8h ; b0 b8 ; 0xfe78b orgs.asm:911 + out strict byte 021h, AL ; e6 21 ; 0xfe78d orgs.asm:912 + mov AL, strict byte 08fh ; b0 8f ; 0xfe78f orgs.asm:913 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe791 orgs.asm:914 + retn ; c3 ; 0xfe793 orgs.asm:915 + ; disGetNextSymbol 0xfe794 LB 0x186c -> off=0x0 cb=0000000000000057 uValue=00000000000f0794 'ebda_post' +ebda_post: ; 0xfe794 LB 0x57 + mov ax, 0e754h ; b8 54 e7 ; 0xfe794 orgs.asm:104 + mov word [00034h], ax ; a3 34 00 ; 0xfe797 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe79a orgs.asm:106 + mov word [00036h], ax ; a3 36 00 ; 0xfe79d orgs.asm:107 + mov ax, 0e754h ; b8 54 e7 ; 0xfe7a0 orgs.asm:104 + mov word [0003ch], ax ; a3 3c 00 ; 0xfe7a3 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe7a6 orgs.asm:106 + mov word [0003eh], ax ; a3 3e 00 ; 0xfe7a9 orgs.asm:107 + mov ax, 0e754h ; b8 54 e7 ; 0xfe7ac orgs.asm:104 + mov word [001c8h], ax ; a3 c8 01 ; 0xfe7af orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe7b2 orgs.asm:106 + mov word [001cah], ax ; a3 ca 01 ; 0xfe7b5 orgs.asm:107 + mov ax, 0e754h ; b8 54 e7 ; 0xfe7b8 orgs.asm:104 + mov word [001cch], ax ; a3 cc 01 ; 0xfe7bb orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe7be orgs.asm:106 + mov word [001ceh], ax ; a3 ce 01 ; 0xfe7c1 orgs.asm:107 + mov ax, 0e754h ; b8 54 e7 ; 0xfe7c4 orgs.asm:104 + mov word [001dch], ax ; a3 dc 01 ; 0xfe7c7 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfe7ca orgs.asm:106 + mov word [001deh], ax ; a3 de 01 ; 0xfe7cd orgs.asm:107 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe7d0 orgs.asm:928 + mov ds, ax ; 8e d8 ; 0xfe7d2 orgs.asm:929 + mov ax, word [00413h] ; a1 13 04 ; 0xfe7d4 orgs.asm:930 + mov cx, strict word 00040h ; b9 40 00 ; 0xfe7d7 orgs.asm:931 + mul cx ; f7 e1 ; 0xfe7da orgs.asm:932 + mov word [0040eh], ax ; a3 0e 04 ; 0xfe7dc orgs.asm:934 + mov ds, ax ; 8e d8 ; 0xfe7df orgs.asm:936 + mov byte [word 00000h], 001h ; c6 06 00 00 01 ; 0xfe7e1 orgs.asm:937 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe7e6 orgs.asm:939 + mov ds, ax ; 8e d8 ; 0xfe7e8 orgs.asm:940 + retn ; c3 ; 0xfe7ea orgs.asm:941 + ; disGetNextSymbol 0xfe7eb LB 0x1815 -> off=0x0 cb=0000000000000043 uValue=00000000000f07eb 'biosorg_check_before_or_at_0E82Ch' +biosorg_check_before_or_at_0E82Ch: ; 0xfe7eb LB 0x43 + times 0x41 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:952 + pushfw ; 9c ; 0xfe82f orgs.asm:955 + push ES ; 06 ; 0xfe830 orgs.asm:956 + push DS ; 1e ; 0xfe831 orgs.asm:957 + push ax ; 50 ; 0xfe832 orgs.asm:109 + push cx ; 51 ; 0xfe833 orgs.asm:110 + push dx ; 52 ; 0xfe834 orgs.asm:111 + push bx ; 53 ; 0xfe835 orgs.asm:112 + push sp ; 54 ; 0xfe836 orgs.asm:113 + push bp ; 55 ; 0xfe837 orgs.asm:114 + push si ; 56 ; 0xfe838 orgs.asm:115 + push di ; 57 ; 0xfe839 orgs.asm:116 + cmp ah, 000h ; 80 fc 00 ; 0xfe83a orgs.asm:960 + je short 0e858h ; 74 19 ; 0xfe83d orgs.asm:961 + cmp ah, 010h ; 80 fc 10 ; 0xfe83f orgs.asm:963 + je short 0e858h ; 74 14 ; 0xfe842 orgs.asm:964 + push CS ; 0e ; 0xfe844 orgs.asm:113 + pop DS ; 1f ; 0xfe845 orgs.asm:114 + cld ; fc ; 0xfe846 orgs.asm:115 + call 0559dh ; e8 53 6d ; 0xfe847 orgs.asm:967 + pop di ; 5f ; 0xfe84a orgs.asm:126 + pop si ; 5e ; 0xfe84b orgs.asm:127 + pop bp ; 5d ; 0xfe84c orgs.asm:128 + pop bx ; 5b ; 0xfe84d orgs.asm:129 + pop bx ; 5b ; 0xfe84e orgs.asm:130 + pop dx ; 5a ; 0xfe84f orgs.asm:131 + pop cx ; 59 ; 0xfe850 orgs.asm:132 + pop ax ; 58 ; 0xfe851 orgs.asm:133 + pop DS ; 1f ; 0xfe852 orgs.asm:969 + pop ES ; 07 ; 0xfe853 orgs.asm:970 + add sp, strict byte 00002h ; 83 c4 02 ; 0xfe854 orgs.asm:971 + iret ; cf ; 0xfe857 orgs.asm:972 + mov bx, strict word 00040h ; bb 40 00 ; 0xfe858 orgs.asm:975 + mov ds, bx ; 8e db ; 0xfe85b orgs.asm:976 + cli ; fa ; 0xfe85d orgs.asm:978 + mov bx, word [word 0001ah] ; 8b 1e 1a 00 ; 0xfe85e orgs.asm:979 + cmp bx, word [word 0001ch] ; 3b 1e 1c 00 ; 0xfe862 orgs.asm:980 + jne short 0e86ch ; 75 04 ; 0xfe866 orgs.asm:981 + sti ; fb ; 0xfe868 orgs.asm:982 + nop ; 90 ; 0xfe869 orgs.asm:983 + jmp short 0e85dh ; eb f1 ; 0xfe86a orgs.asm:991 + push CS ; 0e ; 0xfe86c orgs.asm:113 + pop DS ; 1f ; 0xfe86d orgs.asm:114 + cld ; fc ; 0xfe86e orgs.asm:115 + call 0559dh ; e8 2b 6d ; 0xfe86f orgs.asm:995 + pop di ; 5f ; 0xfe872 orgs.asm:126 + pop si ; 5e ; 0xfe873 orgs.asm:127 + pop bp ; 5d ; 0xfe874 orgs.asm:128 + pop bx ; 5b ; 0xfe875 orgs.asm:129 + pop bx ; 5b ; 0xfe876 orgs.asm:130 + pop dx ; 5a ; 0xfe877 orgs.asm:131 + pop cx ; 59 ; 0xfe878 orgs.asm:132 + pop ax ; 58 ; 0xfe879 orgs.asm:133 + pop DS ; 1f ; 0xfe87a orgs.asm:997 + pop ES ; 07 ; 0xfe87b orgs.asm:998 + add sp, strict byte 00002h ; 83 c4 02 ; 0xfe87c orgs.asm:999 + iret ; cf ; 0xfe87f orgs.asm:1007 + ; 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:1024 + push ax ; 50 ; 0xfe988 orgs.asm:1025 + mov AL, strict byte 0adh ; b0 ad ; 0xfe989 orgs.asm:1026 + out strict byte 064h, AL ; e6 64 ; 0xfe98b orgs.asm:1027 + in AL, strict byte 060h ; e4 60 ; 0xfe98d orgs.asm:1029 + push DS ; 1e ; 0xfe98f orgs.asm:1030 + push ax ; 50 ; 0xfe990 orgs.asm:109 + push cx ; 51 ; 0xfe991 orgs.asm:110 + push dx ; 52 ; 0xfe992 orgs.asm:111 + push bx ; 53 ; 0xfe993 orgs.asm:112 + push sp ; 54 ; 0xfe994 orgs.asm:113 + push bp ; 55 ; 0xfe995 orgs.asm:114 + push si ; 56 ; 0xfe996 orgs.asm:115 + push di ; 57 ; 0xfe997 orgs.asm:116 + cld ; fc ; 0xfe998 orgs.asm:1032 + mov AH, strict byte 04fh ; b4 4f ; 0xfe999 orgs.asm:1034 + stc ; f9 ; 0xfe99b orgs.asm:1035 + int 015h ; cd 15 ; 0xfe99c orgs.asm:1036 + jnc short 0e9c7h ; 73 27 ; 0xfe99e orgs.asm:1037 + sti ; fb ; 0xfe9a0 orgs.asm:1039 + cmp AL, strict byte 0e0h ; 3c e0 ; 0xfe9a1 orgs.asm:1042 + jne short 0e9b0h ; 75 0b ; 0xfe9a3 orgs.asm:1043 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe9a5 orgs.asm:1044 + mov ds, ax ; 8e d8 ; 0xfe9a7 orgs.asm:1045 + or byte [00496h], 002h ; 80 0e 96 04 02 ; 0xfe9a9 orgs.asm:1046 + jmp short 0e9c7h ; eb 17 ; 0xfe9ae orgs.asm:1047 + cmp AL, strict byte 0e1h ; 3c e1 ; 0xfe9b0 orgs.asm:1050 + jne short 0e9bfh ; 75 0b ; 0xfe9b2 orgs.asm:1051 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe9b4 orgs.asm:1052 + mov ds, ax ; 8e d8 ; 0xfe9b6 orgs.asm:1053 + or byte [00496h], 001h ; 80 0e 96 04 01 ; 0xfe9b8 orgs.asm:1054 + jmp short 0e9c7h ; eb 08 ; 0xfe9bd orgs.asm:1055 + push ES ; 06 ; 0xfe9bf orgs.asm:1058 + push CS ; 0e ; 0xfe9c0 orgs.asm:113 + pop DS ; 1f ; 0xfe9c1 orgs.asm:114 + cld ; fc ; 0xfe9c2 orgs.asm:115 + call 0510fh ; e8 49 67 ; 0xfe9c3 orgs.asm:1060 + pop ES ; 07 ; 0xfe9c6 orgs.asm:1061 + pop di ; 5f ; 0xfe9c7 orgs.asm:126 + pop si ; 5e ; 0xfe9c8 orgs.asm:127 + pop bp ; 5d ; 0xfe9c9 orgs.asm:128 + pop bx ; 5b ; 0xfe9ca orgs.asm:129 + pop bx ; 5b ; 0xfe9cb orgs.asm:130 + pop dx ; 5a ; 0xfe9cc orgs.asm:131 + pop cx ; 59 ; 0xfe9cd orgs.asm:132 + pop ax ; 58 ; 0xfe9ce orgs.asm:133 + pop DS ; 1f ; 0xfe9cf orgs.asm:1065 + cli ; fa ; 0xfe9d0 orgs.asm:1066 + call 0e034h ; e8 60 f6 ; 0xfe9d1 orgs.asm:1067 + mov AL, strict byte 0aeh ; b0 ae ; 0xfe9d4 orgs.asm:1069 + out strict byte 064h, AL ; e6 64 ; 0xfe9d6 orgs.asm:1070 + pop ax ; 58 ; 0xfe9d8 orgs.asm:1071 + iret ; cf ; 0xfe9d9 orgs.asm:1072 + push ax ; 50 ; 0xfe9da orgs.asm:109 + push cx ; 51 ; 0xfe9db orgs.asm:110 + push dx ; 52 ; 0xfe9dc orgs.asm:111 + push bx ; 53 ; 0xfe9dd orgs.asm:112 + push sp ; 54 ; 0xfe9de orgs.asm:113 + push bp ; 55 ; 0xfe9df orgs.asm:114 + push si ; 56 ; 0xfe9e0 orgs.asm:115 + push di ; 57 ; 0xfe9e1 orgs.asm:116 + push ES ; 06 ; 0xfe9e2 orgs.asm:1081 + push DS ; 1e ; 0xfe9e3 orgs.asm:1082 + push CS ; 0e ; 0xfe9e4 orgs.asm:113 + pop DS ; 1f ; 0xfe9e5 orgs.asm:114 + cld ; fc ; 0xfe9e6 orgs.asm:115 + call 068b8h ; e8 ce 7e ; 0xfe9e7 orgs.asm:1084 + pop DS ; 1f ; 0xfe9ea orgs.asm:1085 + pop ES ; 07 ; 0xfe9eb orgs.asm:1086 + pop di ; 5f ; 0xfe9ec orgs.asm:126 + pop si ; 5e ; 0xfe9ed orgs.asm:127 + pop bp ; 5d ; 0xfe9ee orgs.asm:128 + pop bx ; 5b ; 0xfe9ef orgs.asm:129 + pop bx ; 5b ; 0xfe9f0 orgs.asm:130 + pop dx ; 5a ; 0xfe9f1 orgs.asm:131 + pop cx ; 59 ; 0xfe9f2 orgs.asm:132 + pop ax ; 58 ; 0xfe9f3 orgs.asm:133 + iret ; cf ; 0xfe9f4 orgs.asm:1088 + ; 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:1095 + ; 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:1104 + jc short 0ec7ch ; 72 1c ; 0xfec5e orgs.asm:1105 + cmp ah, 04dh ; 80 fc 4d ; 0xfec60 orgs.asm:1107 + jnbe short 0ec7ch ; 77 17 ; 0xfec63 orgs.asm:1108 + push ax ; 50 ; 0xfec65 orgs.asm:109 + push cx ; 51 ; 0xfec66 orgs.asm:110 + push dx ; 52 ; 0xfec67 orgs.asm:111 + push bx ; 53 ; 0xfec68 orgs.asm:112 + push sp ; 54 ; 0xfec69 orgs.asm:113 + push bp ; 55 ; 0xfec6a orgs.asm:114 + push si ; 56 ; 0xfec6b orgs.asm:115 + push di ; 57 ; 0xfec6c orgs.asm:116 + push ES ; 06 ; 0xfec6d orgs.asm:1111 + push DS ; 1e ; 0xfec6e orgs.asm:1112 + push CS ; 0e ; 0xfec6f orgs.asm:113 + pop DS ; 1f ; 0xfec70 orgs.asm:114 + cld ; fc ; 0xfec71 orgs.asm:115 + push word [cs:0ec7ah] ; 2e ff 36 7a ec ; 0xfec72 orgs.asm:96 + jmp near 03c3ch ; e9 c2 4f ; 0xfec77 orgs.asm:97 + ; 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:1120 + push ax ; 50 ; 0xfec7d orgs.asm:1121 + push bx ; 53 ; 0xfec7e orgs.asm:1122 + push cx ; 51 ; 0xfec7f orgs.asm:1123 + push dx ; 52 ; 0xfec80 orgs.asm:1124 + call 03c10h ; e8 8c 4f ; 0xfec81 orgs.asm:1127 + cmp AL, strict byte 000h ; 3c 00 ; 0xfec84 orgs.asm:1128 + je short 0ecbfh ; 74 37 ; 0xfec86 orgs.asm:1129 + call 03c26h ; e8 9b 4f ; 0xfec88 orgs.asm:1132 + pop dx ; 5a ; 0xfec8b orgs.asm:1133 + push dx ; 52 ; 0xfec8c orgs.asm:1134 + db 03ah, 0c2h + ; cmp al, dl ; 3a c2 ; 0xfec8d orgs.asm:1135 + jne short 0ecabh ; 75 1a ; 0xfec8f orgs.asm:1136 + pop dx ; 5a ; 0xfec91 orgs.asm:1138 + pop cx ; 59 ; 0xfec92 orgs.asm:1139 + pop bx ; 5b ; 0xfec93 orgs.asm:1140 + pop ax ; 58 ; 0xfec94 orgs.asm:1141 + pop ES ; 07 ; 0xfec95 orgs.asm:1142 + push ax ; 50 ; 0xfec96 orgs.asm:109 + push cx ; 51 ; 0xfec97 orgs.asm:110 + push dx ; 52 ; 0xfec98 orgs.asm:111 + push bx ; 53 ; 0xfec99 orgs.asm:112 + push sp ; 54 ; 0xfec9a orgs.asm:113 + push bp ; 55 ; 0xfec9b orgs.asm:114 + push si ; 56 ; 0xfec9c orgs.asm:115 + push di ; 57 ; 0xfec9d orgs.asm:116 + push ES ; 06 ; 0xfec9e orgs.asm:1145 + push DS ; 1e ; 0xfec9f orgs.asm:1146 + push CS ; 0e ; 0xfeca0 orgs.asm:113 + pop DS ; 1f ; 0xfeca1 orgs.asm:114 + cld ; fc ; 0xfeca2 orgs.asm:115 + push word [cs:0ec7ah] ; 2e ff 36 7a ec ; 0xfeca3 orgs.asm:96 + jmp near 04300h ; e9 55 56 ; 0xfeca8 orgs.asm:97 + and dl, 0e0h ; 80 e2 e0 ; 0xfecab orgs.asm:1152 + db 03ah, 0c2h + ; cmp al, dl ; 3a c2 ; 0xfecae orgs.asm:1153 + jne short 0ecbfh ; 75 0d ; 0xfecb0 orgs.asm:1154 + pop dx ; 5a ; 0xfecb2 orgs.asm:1156 + pop cx ; 59 ; 0xfecb3 orgs.asm:1157 + pop bx ; 5b ; 0xfecb4 orgs.asm:1158 + pop ax ; 58 ; 0xfecb5 orgs.asm:1159 + pop ES ; 07 ; 0xfecb6 orgs.asm:1160 + push ax ; 50 ; 0xfecb7 orgs.asm:1162 + push cx ; 51 ; 0xfecb8 orgs.asm:1163 + push dx ; 52 ; 0xfecb9 orgs.asm:1164 + push bx ; 53 ; 0xfecba orgs.asm:1165 + db 0feh, 0cah + ; dec dl ; fe ca ; 0xfecbb orgs.asm:1167 + jmp short 0ecc8h ; eb 09 ; 0xfecbd orgs.asm:1168 + pop dx ; 5a ; 0xfecbf orgs.asm:1171 + pop cx ; 59 ; 0xfecc0 orgs.asm:1172 + pop bx ; 5b ; 0xfecc1 orgs.asm:1173 + pop ax ; 58 ; 0xfecc2 orgs.asm:1174 + pop ES ; 07 ; 0xfecc3 orgs.asm:1175 + ; disGetNextSymbol 0xfecc4 LB 0x133c -> off=0x0 cb=0000000000000004 uValue=00000000000f0cc4 'int13_noeltorito' +int13_noeltorito: ; 0xfecc4 LB 0x4 + push ax ; 50 ; 0xfecc4 orgs.asm:1178 + push cx ; 51 ; 0xfecc5 orgs.asm:1179 + push dx ; 52 ; 0xfecc6 orgs.asm:1180 + push bx ; 53 ; 0xfecc7 orgs.asm:1181 + ; disGetNextSymbol 0xfecc8 LB 0x1338 -> off=0x0 cb=0000000000000016 uValue=00000000000f0cc8 'int13_legacy' +int13_legacy: ; 0xfecc8 LB 0x16 + push dx ; 52 ; 0xfecc8 orgs.asm:1183 + push bp ; 55 ; 0xfecc9 orgs.asm:1184 + push si ; 56 ; 0xfecca orgs.asm:1185 + push di ; 57 ; 0xfeccb orgs.asm:1186 + push ES ; 06 ; 0xfeccc orgs.asm:1187 + push DS ; 1e ; 0xfeccd orgs.asm:1188 + push CS ; 0e ; 0xfecce orgs.asm:113 + pop DS ; 1f ; 0xfeccf orgs.asm:114 + cld ; fc ; 0xfecd0 orgs.asm:115 + test dl, 080h ; f6 c2 80 ; 0xfecd1 orgs.asm:1193 + jne short 0ecdeh ; 75 08 ; 0xfecd4 orgs.asm:1194 + push word [cs:0ec7ah] ; 2e ff 36 7a ec ; 0xfecd6 orgs.asm:96 + jmp near 03188h ; e9 aa 44 ; 0xfecdb orgs.asm:97 + ; 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:1199 + jc short 0ecf2h ; 72 0f ; 0xfece1 orgs.asm:1200 + shr ebx, 010h ; 66 c1 eb 10 ; 0xfece3 orgs.asm:1206 + push bx ; 53 ; 0xfece7 orgs.asm:1207 + call 04758h ; e8 6d 5a ; 0xfece8 orgs.asm:1208 + pop bx ; 5b ; 0xfeceb orgs.asm:1209 + sal ebx, 010h ; 66 c1 e3 10 ; 0xfecec orgs.asm:1210 + jmp short 0ecffh ; eb 0d ; 0xfecf0 orgs.asm:1212 + ; 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:1216 + jnbe short 0ecfch ; 77 05 ; 0xfecf5 orgs.asm:1217 + call 05c9ah ; e8 a0 6f ; 0xfecf7 orgs.asm:1218 + jmp short 0ecffh ; eb 03 ; 0xfecfa orgs.asm:1219 + call 060f0h ; e8 f1 73 ; 0xfecfc orgs.asm:1222 + ; disGetNextSymbol 0xfecff LB 0x1301 -> off=0x0 cb=000000000000000b uValue=00000000000f0cff 'int13_out' +int13_out: ; 0xfecff LB 0xb + pop DS ; 1f ; 0xfecff orgs.asm:1225 + pop ES ; 07 ; 0xfed00 orgs.asm:1226 + pop di ; 5f ; 0xfed01 orgs.asm:126 + pop si ; 5e ; 0xfed02 orgs.asm:127 + pop bp ; 5d ; 0xfed03 orgs.asm:128 + pop bx ; 5b ; 0xfed04 orgs.asm:129 + pop bx ; 5b ; 0xfed05 orgs.asm:130 + pop dx ; 5a ; 0xfed06 orgs.asm:131 + pop cx ; 59 ; 0xfed07 orgs.asm:132 + pop ax ; 58 ; 0xfed08 orgs.asm:133 + iret ; cf ; 0xfed09 orgs.asm:1228 + ; disGetNextSymbol 0xfed0a LB 0x12f6 -> off=0x0 cb=000000000000001e uValue=00000000000f0d0a 'detect_parport' +detect_parport: ; 0xfed0a LB 0x1e + push dx ; 52 ; 0xfed0a orgs.asm:1235 + inc dx ; 42 ; 0xfed0b orgs.asm:1236 + inc dx ; 42 ; 0xfed0c orgs.asm:1237 + in AL, DX ; ec ; 0xfed0d orgs.asm:1238 + and AL, strict byte 0dfh ; 24 df ; 0xfed0e orgs.asm:1239 + out DX, AL ; ee ; 0xfed10 orgs.asm:1240 + pop dx ; 5a ; 0xfed11 orgs.asm:1241 + mov AL, strict byte 0aah ; b0 aa ; 0xfed12 orgs.asm:1242 + out DX, AL ; ee ; 0xfed14 orgs.asm:1243 + in AL, DX ; ec ; 0xfed15 orgs.asm:1244 + cmp AL, strict byte 0aah ; 3c aa ; 0xfed16 orgs.asm:1245 + jne short 0ed27h ; 75 0d ; 0xfed18 orgs.asm:1246 + push bx ; 53 ; 0xfed1a orgs.asm:1248 + sal bx, 1 ; d1 e3 ; 0xfed1b orgs.asm:1249 + mov word [bx+00408h], dx ; 89 97 08 04 ; 0xfed1d orgs.asm:1250 + pop bx ; 5b ; 0xfed21 orgs.asm:1251 + mov byte [bx+00478h], cl ; 88 8f 78 04 ; 0xfed22 orgs.asm:1252 + inc bx ; 43 ; 0xfed26 orgs.asm:1253 + retn ; c3 ; 0xfed27 orgs.asm:1255 + ; disGetNextSymbol 0xfed28 LB 0x12d8 -> off=0x0 cb=0000000000000024 uValue=00000000000f0d28 'detect_serial' +detect_serial: ; 0xfed28 LB 0x24 + push dx ; 52 ; 0xfed28 orgs.asm:1262 + inc dx ; 42 ; 0xfed29 orgs.asm:1263 + mov AL, strict byte 002h ; b0 02 ; 0xfed2a orgs.asm:1264 + out DX, AL ; ee ; 0xfed2c orgs.asm:1265 + in AL, DX ; ec ; 0xfed2d orgs.asm:1266 + cmp AL, strict byte 002h ; 3c 02 ; 0xfed2e orgs.asm:1267 + jne short 0ed4ah ; 75 18 ; 0xfed30 orgs.asm:1268 + inc dx ; 42 ; 0xfed32 orgs.asm:1270 + in AL, DX ; ec ; 0xfed33 orgs.asm:1271 + cmp AL, strict byte 002h ; 3c 02 ; 0xfed34 orgs.asm:1272 + jne short 0ed4ah ; 75 12 ; 0xfed36 orgs.asm:1273 + dec dx ; 4a ; 0xfed38 orgs.asm:1275 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfed39 orgs.asm:1276 + pop dx ; 5a ; 0xfed3b orgs.asm:1277 + push bx ; 53 ; 0xfed3c orgs.asm:1278 + sal bx, 1 ; d1 e3 ; 0xfed3d orgs.asm:1279 + mov word [bx+00400h], dx ; 89 97 00 04 ; 0xfed3f orgs.asm:1280 + pop bx ; 5b ; 0xfed43 orgs.asm:1281 + mov byte [bx+0047ch], cl ; 88 8f 7c 04 ; 0xfed44 orgs.asm:1282 + inc bx ; 43 ; 0xfed48 orgs.asm:1283 + retn ; c3 ; 0xfed49 orgs.asm:1284 + pop dx ; 5a ; 0xfed4a orgs.asm:1287 + retn ; c3 ; 0xfed4b orgs.asm:1288 + ; 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:1298 + mov ds, ax ; 8e d8 ; 0xfed4e orgs.asm:1299 + mov AL, strict byte 000h ; b0 00 ; 0xfed50 orgs.asm:1303 + mov byte [0043eh], AL ; a2 3e 04 ; 0xfed52 orgs.asm:1304 + mov byte [0043fh], AL ; a2 3f 04 ; 0xfed55 orgs.asm:1305 + mov byte [00440h], AL ; a2 40 04 ; 0xfed58 orgs.asm:1306 + mov byte [00441h], AL ; a2 41 04 ; 0xfed5b orgs.asm:1307 + mov byte [00442h], AL ; a2 42 04 ; 0xfed5e orgs.asm:1308 + mov byte [00443h], AL ; a2 43 04 ; 0xfed61 orgs.asm:1309 + mov byte [00444h], AL ; a2 44 04 ; 0xfed64 orgs.asm:1310 + mov byte [00445h], AL ; a2 45 04 ; 0xfed67 orgs.asm:1311 + mov byte [00446h], AL ; a2 46 04 ; 0xfed6a orgs.asm:1312 + mov byte [00447h], AL ; a2 47 04 ; 0xfed6d orgs.asm:1313 + mov byte [00448h], AL ; a2 48 04 ; 0xfed70 orgs.asm:1314 + mov byte [0048bh], AL ; a2 8b 04 ; 0xfed73 orgs.asm:1316 + mov AL, strict byte 010h ; b0 10 ; 0xfed76 orgs.asm:1318 + out strict byte 070h, AL ; e6 70 ; 0xfed78 orgs.asm:1319 + in AL, strict byte 071h ; e4 71 ; 0xfed7a orgs.asm:1320 + db 08ah, 0e0h + ; mov ah, al ; 8a e0 ; 0xfed7c orgs.asm:1321 + shr al, 1 ; d0 e8 ; 0xfed7e orgs.asm:191 + shr al, 1 ; d0 e8 ; 0xfed80 orgs.asm:194 + shr al, 1 ; d0 e8 ; 0xfed82 orgs.asm:197 + shr al, 1 ; d0 e8 ; 0xfed84 orgs.asm:200 + je short 0ed8ch ; 74 04 ; 0xfed86 orgs.asm:1326 + mov BL, strict byte 007h ; b3 07 ; 0xfed88 orgs.asm:1327 + jmp short 0ed8eh ; eb 02 ; 0xfed8a orgs.asm:1328 + mov BL, strict byte 000h ; b3 00 ; 0xfed8c orgs.asm:1331 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfed8e orgs.asm:1334 + and AL, strict byte 00fh ; 24 0f ; 0xfed90 orgs.asm:1335 + je short 0ed97h ; 74 03 ; 0xfed92 orgs.asm:1336 + or bl, 070h ; 80 cb 70 ; 0xfed94 orgs.asm:1337 + mov byte [0048fh], bl ; 88 1e 8f 04 ; 0xfed97 orgs.asm:1339 + mov AL, strict byte 000h ; b0 00 ; 0xfed9b orgs.asm:1342 + mov byte [00490h], AL ; a2 90 04 ; 0xfed9d orgs.asm:1343 + mov byte [00491h], AL ; a2 91 04 ; 0xfeda0 orgs.asm:1344 + mov byte [00492h], AL ; a2 92 04 ; 0xfeda3 orgs.asm:1345 + mov byte [00493h], AL ; a2 93 04 ; 0xfeda6 orgs.asm:1346 + mov byte [00494h], AL ; a2 94 04 ; 0xfeda9 orgs.asm:1347 + mov byte [00495h], AL ; a2 95 04 ; 0xfedac orgs.asm:1348 + mov AL, strict byte 002h ; b0 02 ; 0xfedaf orgs.asm:1350 + out strict byte 00ah, AL ; e6 0a ; 0xfedb1 orgs.asm:1351 + mov ax, 0efc7h ; b8 c7 ef ; 0xfedb3 orgs.asm:104 + mov word [00078h], ax ; a3 78 00 ; 0xfedb6 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfedb9 orgs.asm:106 + mov word [0007ah], ax ; a3 7a 00 ; 0xfedbc orgs.asm:107 + mov ax, 0ec59h ; b8 59 ec ; 0xfedbf orgs.asm:104 + mov word [00100h], ax ; a3 00 01 ; 0xfedc2 orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfedc5 orgs.asm:106 + mov word [00102h], ax ; a3 02 01 ; 0xfedc8 orgs.asm:107 + mov ax, 0ef57h ; b8 57 ef ; 0xfedcb orgs.asm:104 + mov word [00038h], ax ; a3 38 00 ; 0xfedce orgs.asm:105 + mov ax, 0f000h ; b8 00 f0 ; 0xfedd1 orgs.asm:106 + mov word [0003ah], ax ; a3 3a 00 ; 0xfedd4 orgs.asm:107 + retn ; c3 ; 0xfedd7 orgs.asm:1357 + ; 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:1370 + mov CL, strict byte 004h ; b1 04 ; 0xfedd9 orgs.asm:1371 + sal ax, CL ; d3 e0 ; 0xfeddb orgs.asm:1372 + shr al, CL ; d2 e8 ; 0xfeddd orgs.asm:1373 + pop cx ; 59 ; 0xfeddf orgs.asm:1374 + aad 00ah ; d5 0a ; 0xfede0 orgs.asm:1376 + retn ; c3 ; 0xfede2 orgs.asm:1377 + ; 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:1385 + out strict byte 070h, AL ; e6 70 ; 0xfede5 orgs.asm:1386 + in AL, strict byte 071h ; e4 71 ; 0xfede7 orgs.asm:1387 + call 0edd8h ; e8 ec ff ; 0xfede9 orgs.asm:1388 + test al, al ; 84 c0 ; 0xfedec orgs.asm:1389 + db 032h, 0e4h + ; xor ah, ah ; 32 e4 ; 0xfedee orgs.asm:1390 + mov dx, 01234h ; ba 34 12 ; 0xfedf0 orgs.asm:1391 + mul dx ; f7 e2 ; 0xfedf3 orgs.asm:1392 + db 08bh, 0c8h + ; mov cx, ax ; 8b c8 ; 0xfedf5 orgs.asm:1393 + mov AL, strict byte 002h ; b0 02 ; 0xfedf7 orgs.asm:1396 + out strict byte 070h, AL ; e6 70 ; 0xfedf9 orgs.asm:1397 + in AL, strict byte 071h ; e4 71 ; 0xfedfb orgs.asm:1398 + call 0edd8h ; e8 d8 ff ; 0xfedfd orgs.asm:1399 + test al, al ; 84 c0 ; 0xfee00 orgs.asm:1400 + je short 0ee0fh ; 74 0b ; 0xfee02 orgs.asm:1401 + add cx, 04463h ; 81 c1 63 44 ; 0xfee04 orgs.asm:1403 + adc dx, strict byte 00004h ; 83 d2 04 ; 0xfee08 orgs.asm:1404 + db 0feh, 0c8h + ; dec al ; fe c8 ; 0xfee0b orgs.asm:1405 + jne short 0ee04h ; 75 f5 ; 0xfee0d orgs.asm:1406 + mov AL, strict byte 004h ; b0 04 ; 0xfee0f orgs.asm:1410 + out strict byte 070h, AL ; e6 70 ; 0xfee11 orgs.asm:1411 + in AL, strict byte 071h ; e4 71 ; 0xfee13 orgs.asm:1412 + call 0edd8h ; e8 c0 ff ; 0xfee15 orgs.asm:1413 + test al, al ; 84 c0 ; 0xfee18 orgs.asm:1414 + je short 0ee28h ; 74 0c ; 0xfee1a orgs.asm:1415 + add cx, 0076ch ; 81 c1 6c 07 ; 0xfee1c orgs.asm:1417 + adc dx, 00100h ; 81 d2 00 01 ; 0xfee20 orgs.asm:1418 + db 0feh, 0c8h + ; dec al ; fe c8 ; 0xfee24 orgs.asm:1419 + jne short 0ee1ch ; 75 f4 ; 0xfee26 orgs.asm:1420 + db 08ah, 0cdh + ; mov cl, ch ; 8a cd ; 0xfee28 orgs.asm:1423 + db 08ah, 0eah + ; mov ch, dl ; 8a ea ; 0xfee2a orgs.asm:1424 + db 08ah, 0d6h + ; mov dl, dh ; 8a d6 ; 0xfee2c orgs.asm:1425 + db 032h, 0f6h + ; xor dh, dh ; 32 f6 ; 0xfee2e orgs.asm:1426 + mov word [0046ch], cx ; 89 0e 6c 04 ; 0xfee30 orgs.asm:1427 + mov word [0046eh], dx ; 89 16 6e 04 ; 0xfee34 orgs.asm:1428 + mov byte [00470h], dh ; 88 36 70 04 ; 0xfee38 orgs.asm:1429 + retn ; c3 ; 0xfee3c orgs.asm:1477 + ; 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:1488 + push dx ; 52 ; 0xfef58 orgs.asm:1489 + mov dx, 003f4h ; ba f4 03 ; 0xfef59 orgs.asm:1490 + in AL, DX ; ec ; 0xfef5c orgs.asm:1491 + and AL, strict byte 0c0h ; 24 c0 ; 0xfef5d orgs.asm:1492 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef5f orgs.asm:1493 + je short 0ef81h ; 74 1e ; 0xfef61 orgs.asm:1494 + mov dx, 003f5h ; ba f5 03 ; 0xfef63 orgs.asm:1495 + mov AL, strict byte 008h ; b0 08 ; 0xfef66 orgs.asm:1496 + out DX, AL ; ee ; 0xfef68 orgs.asm:1497 + mov dx, 003f4h ; ba f4 03 ; 0xfef69 orgs.asm:1499 + in AL, DX ; ec ; 0xfef6c orgs.asm:1500 + and AL, strict byte 0c0h ; 24 c0 ; 0xfef6d orgs.asm:1501 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef6f orgs.asm:1502 + jne short 0ef69h ; 75 f6 ; 0xfef71 orgs.asm:1503 + mov dx, 003f5h ; ba f5 03 ; 0xfef73 orgs.asm:1506 + in AL, DX ; ec ; 0xfef76 orgs.asm:1507 + mov dx, 003f4h ; ba f4 03 ; 0xfef77 orgs.asm:1508 + in AL, DX ; ec ; 0xfef7a orgs.asm:1509 + and AL, strict byte 0c0h ; 24 c0 ; 0xfef7b orgs.asm:1510 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef7d orgs.asm:1511 + je short 0ef73h ; 74 f2 ; 0xfef7f orgs.asm:1512 + push DS ; 1e ; 0xfef81 orgs.asm:1515 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfef82 orgs.asm:1516 + mov ds, ax ; 8e d8 ; 0xfef84 orgs.asm:1517 + call 0e034h ; e8 ab f0 ; 0xfef86 orgs.asm:1518 + or byte [0043eh], 080h ; 80 0e 3e 04 80 ; 0xfef89 orgs.asm:1520 + pop DS ; 1f ; 0xfef8e orgs.asm:1521 + pop dx ; 5a ; 0xfef8f orgs.asm:1522 + pop ax ; 58 ; 0xfef90 orgs.asm:1523 + iret ; cf ; 0xfef91 orgs.asm:1524 + ; 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:1551 + ; disGetNextSymbol 0xfefd4 LB 0x102c -> off=0x0 cb=000000000000001b uValue=00000000000f0fd4 'int17_handler' +int17_handler: ; 0xfefd4 LB 0x1b + push DS ; 1e ; 0xfefd4 orgs.asm:1554 + push ES ; 06 ; 0xfefd5 orgs.asm:1555 + push ax ; 50 ; 0xfefd6 orgs.asm:109 + push cx ; 51 ; 0xfefd7 orgs.asm:110 + push dx ; 52 ; 0xfefd8 orgs.asm:111 + push bx ; 53 ; 0xfefd9 orgs.asm:112 + push sp ; 54 ; 0xfefda orgs.asm:113 + push bp ; 55 ; 0xfefdb orgs.asm:114 + push si ; 56 ; 0xfefdc orgs.asm:115 + push di ; 57 ; 0xfefdd orgs.asm:116 + push CS ; 0e ; 0xfefde orgs.asm:113 + pop DS ; 1f ; 0xfefdf orgs.asm:114 + cld ; fc ; 0xfefe0 orgs.asm:115 + call 0720ah ; e8 26 82 ; 0xfefe1 orgs.asm:1558 + pop di ; 5f ; 0xfefe4 orgs.asm:126 + pop si ; 5e ; 0xfefe5 orgs.asm:127 + pop bp ; 5d ; 0xfefe6 orgs.asm:128 + pop bx ; 5b ; 0xfefe7 orgs.asm:129 + pop bx ; 5b ; 0xfefe8 orgs.asm:130 + pop dx ; 5a ; 0xfefe9 orgs.asm:131 + pop cx ; 59 ; 0xfefea orgs.asm:132 + pop ax ; 58 ; 0xfefeb orgs.asm:133 + pop ES ; 07 ; 0xfefec orgs.asm:1560 + pop DS ; 1f ; 0xfefed orgs.asm:1561 + iret ; cf ; 0xfefee orgs.asm:1562 + ; 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:1597 + ; 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:1606 + ; 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:1615 + ; 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=000000000000000a uValue=00000000000f10a4 'biosorg_check_at_0F0A4h' +biosorg_check_at_0F0A4h: ; 0xff0a4 LB 0xa + push CS ; 0e ; 0xff0a4 orgs.asm:113 + pop DS ; 1f ; 0xff0a5 orgs.asm:114 + cld ; fc ; 0xff0a6 orgs.asm:115 + call 01732h ; e8 88 26 ; 0xff0a7 orgs.asm:1630 + sti ; fb ; 0xff0aa orgs.asm:1632 + hlt ; f4 ; 0xff0ab orgs.asm:1634 + jmp short 0f0abh ; eb fd ; 0xff0ac orgs.asm:1635 + ; disGetNextSymbol 0xff0ae LB 0xf52 -> off=0x0 cb=000000000000007e uValue=00000000000f10ae 'int19_relocated' +int19_relocated: ; 0xff0ae LB 0x7e + push CS ; 0e ; 0xff0ae orgs.asm:113 + pop DS ; 1f ; 0xff0af orgs.asm:114 + cld ; fc ; 0xff0b0 orgs.asm:115 + push bp ; 55 ; 0xff0b1 orgs.asm:1645 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff0b2 orgs.asm:1646 + mov ax, strict word 00001h ; b8 01 00 ; 0xff0b4 orgs.asm:1649 + push ax ; 50 ; 0xff0b7 orgs.asm:1650 + call 04bafh ; e8 f4 5a ; 0xff0b8 orgs.asm:1651 + inc sp ; 44 ; 0xff0bb orgs.asm:1652 + inc sp ; 44 ; 0xff0bc orgs.asm:1653 + test ax, ax ; 85 c0 ; 0xff0bd orgs.asm:1654 + jne short 0f0e8h ; 75 27 ; 0xff0bf orgs.asm:1655 + mov ax, strict word 00002h ; b8 02 00 ; 0xff0c1 orgs.asm:1658 + push ax ; 50 ; 0xff0c4 orgs.asm:1659 + call 04bafh ; e8 e7 5a ; 0xff0c5 orgs.asm:1660 + inc sp ; 44 ; 0xff0c8 orgs.asm:1661 + inc sp ; 44 ; 0xff0c9 orgs.asm:1662 + test ax, ax ; 85 c0 ; 0xff0ca orgs.asm:1663 + jne short 0f0e8h ; 75 1a ; 0xff0cc orgs.asm:1664 + mov ax, strict word 00003h ; b8 03 00 ; 0xff0ce orgs.asm:1667 + push ax ; 50 ; 0xff0d1 orgs.asm:1668 + call 04bafh ; e8 da 5a ; 0xff0d2 orgs.asm:1669 + inc sp ; 44 ; 0xff0d5 orgs.asm:1670 + inc sp ; 44 ; 0xff0d6 orgs.asm:1671 + test ax, ax ; 85 c0 ; 0xff0d7 orgs.asm:1672 + jne short 0f0e8h ; 75 0d ; 0xff0d9 orgs.asm:1673 + mov ax, strict word 00004h ; b8 04 00 ; 0xff0db orgs.asm:1676 + push ax ; 50 ; 0xff0de orgs.asm:1677 + call 04bafh ; e8 cd 5a ; 0xff0df orgs.asm:1678 + inc sp ; 44 ; 0xff0e2 orgs.asm:1679 + inc sp ; 44 ; 0xff0e3 orgs.asm:1680 + test ax, ax ; 85 c0 ; 0xff0e4 orgs.asm:1681 + je short 0f0a4h ; 74 bc ; 0xff0e6 orgs.asm:1682 + mov word [byte bp+000h], ax ; 89 46 00 ; 0xff0e8 orgs.asm:1688 + sal ax, 1 ; d1 e0 ; 0xff0eb orgs.asm:222 + sal ax, 1 ; d1 e0 ; 0xff0ed orgs.asm:225 + sal ax, 1 ; d1 e0 ; 0xff0ef orgs.asm:228 + sal ax, 1 ; d1 e0 ; 0xff0f1 orgs.asm:231 + mov word [bp+002h], ax ; 89 46 02 ; 0xff0f3 orgs.asm:1690 + mov ax, word [byte bp+000h] ; 8b 46 00 ; 0xff0f6 orgs.asm:1691 + and ax, 0f000h ; 25 00 f0 ; 0xff0f9 orgs.asm:1700 + mov word [bp+004h], ax ; 89 46 04 ; 0xff0fc orgs.asm:1701 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff0ff orgs.asm:1702 + mov ds, ax ; 8e d8 ; 0xff101 orgs.asm:1703 + mov es, ax ; 8e c0 ; 0xff103 orgs.asm:1704 + mov word [byte bp+000h], ax ; 89 46 00 ; 0xff105 orgs.asm:1705 + mov ax, 0aa55h ; b8 55 aa ; 0xff108 orgs.asm:1706 + pop bp ; 5d ; 0xff10b orgs.asm:1708 + iret ; cf ; 0xff10c orgs.asm:1709 + or cx, word [bp+si] ; 0b 0a ; 0xff10d + or word [bp+di], cx ; 09 0b ; 0xff10f + push eax ; 66 50 ; 0xff111 orgs.asm:98 + mov eax, strict dword 000800000h ; 66 b8 00 00 80 00 ; 0xff113 orgs.asm:99 + db 08bh, 0c3h + ; mov ax, bx ; 8b c3 ; 0xff119 orgs.asm:100 + sal eax, 008h ; 66 c1 e0 08 ; 0xff11b orgs.asm:101 + and dl, 0fch ; 80 e2 fc ; 0xff11f orgs.asm:102 + db 00ah, 0c2h + ; or al, dl ; 0a c2 ; 0xff122 orgs.asm:103 + mov dx, 00cf8h ; ba f8 0c ; 0xff124 orgs.asm:104 + out DX, eax ; 66 ef ; 0xff127 orgs.asm:105 + pop eax ; 66 58 ; 0xff129 orgs.asm:106 + retn ; c3 ; 0xff12b orgs.asm:107 + ; disGetNextSymbol 0xff12c LB 0xed4 -> off=0x0 cb=0000000000000012 uValue=00000000000f112c 'pcibios_init_iomem_bases' +pcibios_init_iomem_bases: ; 0xff12c LB 0x12 + push bp ; 55 ; 0xff12c orgs.asm:110 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff12d orgs.asm:111 + mov eax, strict dword 00124f9fdh ; 66 b8 fd f9 24 01 ; 0xff12f orgs.asm:113 + mov dx, 00410h ; ba 10 04 ; 0xff135 orgs.asm:114 + out DX, eax ; 66 ef ; 0xff138 orgs.asm:115 + db 08bh, 0e5h + ; mov sp, bp ; 8b e5 ; 0xff13a orgs.asm:228 + pop bp ; 5d ; 0xff13c orgs.asm:229 + retn ; c3 ; 0xff13d orgs.asm:230 + ; disGetNextSymbol 0xff13e LB 0xec2 -> off=0x0 cb=000000000000000c uValue=00000000000f113e 'pcibios_init_set_elcr' +pcibios_init_set_elcr: ; 0xff13e LB 0xc + push ax ; 50 ; 0xff13e orgs.asm:233 + push cx ; 51 ; 0xff13f orgs.asm:234 + mov dx, 004d0h ; ba d0 04 ; 0xff140 orgs.asm:235 + test AL, strict byte 008h ; a8 08 ; 0xff143 orgs.asm:236 + je short 0f14ah ; 74 03 ; 0xff145 orgs.asm:237 + inc dx ; 42 ; 0xff147 orgs.asm:239 + and AL, strict byte 007h ; 24 07 ; 0xff148 orgs.asm:240 + ; disGetNextSymbol 0xff14a LB 0xeb6 -> off=0x0 cb=000000000000000d uValue=00000000000f114a 'is_master_pic' +is_master_pic: ; 0xff14a LB 0xd + db 08ah, 0c8h + ; mov cl, al ; 8a c8 ; 0xff14a orgs.asm:242 + mov BL, strict byte 001h ; b3 01 ; 0xff14c orgs.asm:243 + sal bl, CL ; d2 e3 ; 0xff14e orgs.asm:244 + in AL, DX ; ec ; 0xff150 orgs.asm:245 + db 00ah, 0c3h + ; or al, bl ; 0a c3 ; 0xff151 orgs.asm:246 + out DX, AL ; ee ; 0xff153 orgs.asm:247 + pop cx ; 59 ; 0xff154 orgs.asm:248 + pop ax ; 58 ; 0xff155 orgs.asm:249 + retn ; c3 ; 0xff156 orgs.asm:250 + ; disGetNextSymbol 0xff157 LB 0xea9 -> off=0x0 cb=0000000000000039 uValue=00000000000f1157 'pcibios_init_irqs' +pcibios_init_irqs: ; 0xff157 LB 0x39 + push DS ; 1e ; 0xff157 orgs.asm:253 + push bp ; 55 ; 0xff158 orgs.asm:254 + mov ax, 0f000h ; b8 00 f0 ; 0xff159 orgs.asm:255 + mov ds, ax ; 8e d8 ; 0xff15c orgs.asm:256 + pop bp ; 5d ; 0xff15e orgs.asm:363 + pop DS ; 1f ; 0xff15f orgs.asm:364 + retn ; c3 ; 0xff160 orgs.asm:365 + mov ax, ax ; 89 c0 ; 0xff161 + mov ax, ax ; 89 c0 ; 0xff163 + mov ax, ax ; 89 c0 ; 0xff165 + mov ax, ax ; 89 c0 ; 0xff167 + mov ax, ax ; 89 c0 ; 0xff169 + mov ax, ax ; 89 c0 ; 0xff16b + mov ax, ax ; 89 c0 ; 0xff16d + cld ; fc ; 0xff16f + 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:1739 + push DS ; 1e ; 0xff842 orgs.asm:1740 + mov ax, strict word 00040h ; b8 40 00 ; 0xff843 orgs.asm:1741 + mov ds, ax ; 8e d8 ; 0xff846 orgs.asm:1742 + mov ax, word [00013h] ; a1 13 00 ; 0xff848 orgs.asm:1743 + pop DS ; 1f ; 0xff84b orgs.asm:1744 + iret ; cf ; 0xff84c orgs.asm:1745 + ; disGetNextSymbol 0xff84d LB 0x7b3 -> off=0x0 cb=000000000000000c uValue=00000000000f184d 'int11_handler' +int11_handler: ; 0xff84d LB 0xc + sti ; fb ; 0xff84d orgs.asm:1754 + push DS ; 1e ; 0xff84e orgs.asm:1755 + mov ax, strict word 00040h ; b8 40 00 ; 0xff84f orgs.asm:1756 + mov ds, ax ; 8e d8 ; 0xff852 orgs.asm:1757 + mov ax, word [00010h] ; a1 10 00 ; 0xff854 orgs.asm:1758 + pop DS ; 1f ; 0xff857 orgs.asm:1759 + iret ; cf ; 0xff858 orgs.asm:1760 + ; disGetNextSymbol 0xff859 LB 0x7a7 -> off=0x0 cb=000000000000002d uValue=00000000000f1859 'int15_handler' +int15_handler: ; 0xff859 LB 0x2d + pushfw ; 9c ; 0xff859 orgs.asm:1789 + push DS ; 1e ; 0xff85a orgs.asm:1790 + push ES ; 06 ; 0xff85b orgs.asm:1791 + push CS ; 0e ; 0xff85c orgs.asm:113 + pop DS ; 1f ; 0xff85d orgs.asm:114 + cld ; fc ; 0xff85e orgs.asm:115 + push ax ; 50 ; 0xff85f orgs.asm:109 + push cx ; 51 ; 0xff860 orgs.asm:110 + push dx ; 52 ; 0xff861 orgs.asm:111 + push bx ; 53 ; 0xff862 orgs.asm:112 + push sp ; 54 ; 0xff863 orgs.asm:113 + push bp ; 55 ; 0xff864 orgs.asm:114 + push si ; 56 ; 0xff865 orgs.asm:115 + push di ; 57 ; 0xff866 orgs.asm:116 + cmp ah, 053h ; 80 fc 53 ; 0xff867 orgs.asm:1802 + je short 0f881h ; 74 15 ; 0xff86a orgs.asm:1803 + cmp ah, 0c2h ; 80 fc c2 ; 0xff86c orgs.asm:1804 + je short 0f886h ; 74 15 ; 0xff86f orgs.asm:1805 + call 06556h ; e8 e2 6c ; 0xff871 orgs.asm:1807 + pop di ; 5f ; 0xff874 orgs.asm:126 + pop si ; 5e ; 0xff875 orgs.asm:127 + pop bp ; 5d ; 0xff876 orgs.asm:128 + pop bx ; 5b ; 0xff877 orgs.asm:129 + pop bx ; 5b ; 0xff878 orgs.asm:130 + pop dx ; 5a ; 0xff879 orgs.asm:131 + pop cx ; 59 ; 0xff87a orgs.asm:132 + pop ax ; 58 ; 0xff87b orgs.asm:133 + pop ES ; 07 ; 0xff87c orgs.asm:1813 + pop DS ; 1f ; 0xff87d orgs.asm:1814 + popfw ; 9d ; 0xff87e orgs.asm:1815 + jmp short 0f88bh ; eb 0a ; 0xff87f orgs.asm:1816 + call 0a4d9h ; e8 55 ac ; 0xff881 orgs.asm:1819 + jmp short 0f874h ; eb ee ; 0xff884 orgs.asm:1820 + ; disGetNextSymbol 0xff886 LB 0x77a -> off=0x0 cb=0000000000000005 uValue=00000000000f1886 'int15_handler_mouse' +int15_handler_mouse: ; 0xff886 LB 0x5 + call 06e8ah ; e8 01 76 ; 0xff886 orgs.asm:1823 + jmp short 0f874h ; eb e9 ; 0xff889 orgs.asm:1824 + ; 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:1841 + push bp ; 55 ; 0xff88d orgs.asm:1842 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff88e orgs.asm:1843 + and byte [bp+006h], 0feh ; 80 66 06 fe ; 0xff890 orgs.asm:1844 + or word [bp+006h], 00200h ; 81 4e 06 00 02 ; 0xff894 orgs.asm:1845 + pop bp ; 5d ; 0xff899 orgs.asm:1846 + iret ; cf ; 0xff89a orgs.asm:1847 + push bp ; 55 ; 0xff89b orgs.asm:1849 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff89c orgs.asm:1850 + or word [bp+006h], 00201h ; 81 4e 06 01 02 ; 0xff89e orgs.asm:1851 + pop bp ; 5d ; 0xff8a3 orgs.asm:1852 + iret ; cf ; 0xff8a4 orgs.asm:1853 + ; disGetNextSymbol 0xff8a5 LB 0x75b -> off=0x0 cb=000000000000003a uValue=00000000000f18a5 'int74_handler' +int74_handler: ; 0xff8a5 LB 0x3a + sti ; fb ; 0xff8a5 orgs.asm:1860 + push ax ; 50 ; 0xff8a6 orgs.asm:109 + push cx ; 51 ; 0xff8a7 orgs.asm:110 + push dx ; 52 ; 0xff8a8 orgs.asm:111 + push bx ; 53 ; 0xff8a9 orgs.asm:112 + push sp ; 54 ; 0xff8aa orgs.asm:113 + push bp ; 55 ; 0xff8ab orgs.asm:114 + push si ; 56 ; 0xff8ac orgs.asm:115 + push di ; 57 ; 0xff8ad orgs.asm:116 + push ES ; 06 ; 0xff8ae orgs.asm:1862 + push DS ; 1e ; 0xff8af orgs.asm:1863 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff8b0 orgs.asm:1864 + push ax ; 50 ; 0xff8b2 orgs.asm:1865 + push ax ; 50 ; 0xff8b3 orgs.asm:1866 + push ax ; 50 ; 0xff8b4 orgs.asm:1867 + push ax ; 50 ; 0xff8b5 orgs.asm:1868 + push ax ; 50 ; 0xff8b6 orgs.asm:1869 + push CS ; 0e ; 0xff8b7 orgs.asm:113 + pop DS ; 1f ; 0xff8b8 orgs.asm:114 + cld ; fc ; 0xff8b9 orgs.asm:115 + call 06ddch ; e8 1f 75 ; 0xff8ba orgs.asm:1871 + pop cx ; 59 ; 0xff8bd orgs.asm:1872 + jcxz 0f8cdh ; e3 0d ; 0xff8be orgs.asm:1873 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff8c0 orgs.asm:1879 + push ax ; 50 ; 0xff8c2 orgs.asm:1880 + pop DS ; 1f ; 0xff8c3 orgs.asm:1882 + push word [0040eh] ; ff 36 0e 04 ; 0xff8c4 orgs.asm:1883 + pop DS ; 1f ; 0xff8c8 orgs.asm:1884 + call far [word 00022h] ; ff 1e 22 00 ; 0xff8c9 orgs.asm:1885 + cli ; fa ; 0xff8cd orgs.asm:1887 + call 0e030h ; e8 5f e7 ; 0xff8ce orgs.asm:1888 + add sp, strict byte 00008h ; 83 c4 08 ; 0xff8d1 orgs.asm:1889 + pop DS ; 1f ; 0xff8d4 orgs.asm:1890 + pop ES ; 07 ; 0xff8d5 orgs.asm:1891 + pop di ; 5f ; 0xff8d6 orgs.asm:126 + pop si ; 5e ; 0xff8d7 orgs.asm:127 + pop bp ; 5d ; 0xff8d8 orgs.asm:128 + pop bx ; 5b ; 0xff8d9 orgs.asm:129 + pop bx ; 5b ; 0xff8da orgs.asm:130 + pop dx ; 5a ; 0xff8db orgs.asm:131 + pop cx ; 59 ; 0xff8dc orgs.asm:132 + pop ax ; 58 ; 0xff8dd orgs.asm:133 + iret ; cf ; 0xff8de orgs.asm:1893 + ; disGetNextSymbol 0xff8df LB 0x721 -> off=0x0 cb=0000000000000012 uValue=00000000000f18df 'int76_handler' +int76_handler: ; 0xff8df LB 0x12 + push ax ; 50 ; 0xff8df orgs.asm:1900 + push DS ; 1e ; 0xff8e0 orgs.asm:1901 + mov ax, strict word 00040h ; b8 40 00 ; 0xff8e1 orgs.asm:1902 + mov ds, ax ; 8e d8 ; 0xff8e4 orgs.asm:1903 + mov byte [0008eh], 0ffh ; c6 06 8e 00 ff ; 0xff8e6 orgs.asm:1904 + call 0e030h ; e8 42 e7 ; 0xff8eb orgs.asm:1905 + pop DS ; 1f ; 0xff8ee orgs.asm:1906 + pop ax ; 58 ; 0xff8ef orgs.asm:1907 + iret ; cf ; 0xff8f0 orgs.asm:1908 + ; disGetNextSymbol 0xff8f1 LB 0x70f -> off=0x0 cb=000000000000002d uValue=00000000000f18f1 'int70_handler' +int70_handler: ; 0xff8f1 LB 0x2d + push ES ; 06 ; 0xff8f1 orgs.asm:1917 + push DS ; 1e ; 0xff8f2 orgs.asm:1918 + push ax ; 50 ; 0xff8f3 orgs.asm:109 + push cx ; 51 ; 0xff8f4 orgs.asm:110 + push dx ; 52 ; 0xff8f5 orgs.asm:111 + push bx ; 53 ; 0xff8f6 orgs.asm:112 + push sp ; 54 ; 0xff8f7 orgs.asm:113 + push bp ; 55 ; 0xff8f8 orgs.asm:114 + push si ; 56 ; 0xff8f9 orgs.asm:115 + push di ; 57 ; 0xff8fa orgs.asm:116 + push CS ; 0e ; 0xff8fb orgs.asm:113 + pop DS ; 1f ; 0xff8fc orgs.asm:114 + cld ; fc ; 0xff8fd orgs.asm:115 + call 06a90h ; e8 8f 71 ; 0xff8fe orgs.asm:1921 + pop di ; 5f ; 0xff901 orgs.asm:126 + pop si ; 5e ; 0xff902 orgs.asm:127 + pop bp ; 5d ; 0xff903 orgs.asm:128 + pop bx ; 5b ; 0xff904 orgs.asm:129 + pop bx ; 5b ; 0xff905 orgs.asm:130 + pop dx ; 5a ; 0xff906 orgs.asm:131 + pop cx ; 59 ; 0xff907 orgs.asm:132 + pop ax ; 58 ; 0xff908 orgs.asm:133 + pop DS ; 1f ; 0xff909 orgs.asm:1923 + pop ES ; 07 ; 0xff90a orgs.asm:1924 + iret ; cf ; 0xff90b orgs.asm:1925 + jnbe short 0f913h ; 77 05 ; 0xff90c orgs.asm:1935 + cmp ax, 000b0h ; 3d b0 00 ; 0xff90e orgs.asm:1936 + jc short 0f91bh ; 72 08 ; 0xff911 orgs.asm:1937 + db 033h, 0d2h + ; xor dx, dx ; 33 d2 ; 0xff913 orgs.asm:1940 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff915 orgs.asm:1941 + inc byte [word 00070h] ; fe 06 70 00 ; 0xff917 orgs.asm:1943 + jmp near 0fec1h ; e9 a3 05 ; 0xff91b orgs.asm:1945 + ; 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:1979 + push DS ; 1e ; 0xffe6f orgs.asm:1980 + push ax ; 50 ; 0xffe70 orgs.asm:109 + push cx ; 51 ; 0xffe71 orgs.asm:110 + push dx ; 52 ; 0xffe72 orgs.asm:111 + push bx ; 53 ; 0xffe73 orgs.asm:112 + push sp ; 54 ; 0xffe74 orgs.asm:113 + push bp ; 55 ; 0xffe75 orgs.asm:114 + push si ; 56 ; 0xffe76 orgs.asm:115 + push di ; 57 ; 0xffe77 orgs.asm:116 + push CS ; 0e ; 0xffe78 orgs.asm:113 + pop DS ; 1f ; 0xffe79 orgs.asm:114 + cld ; fc ; 0xffe7a orgs.asm:115 + call 06b38h ; e8 ba 6c ; 0xffe7b orgs.asm:1984 + pop di ; 5f ; 0xffe7e orgs.asm:126 + pop si ; 5e ; 0xffe7f orgs.asm:127 + pop bp ; 5d ; 0xffe80 orgs.asm:128 + pop bx ; 5b ; 0xffe81 orgs.asm:129 + pop bx ; 5b ; 0xffe82 orgs.asm:130 + pop dx ; 5a ; 0xffe83 orgs.asm:131 + pop cx ; 59 ; 0xffe84 orgs.asm:132 + pop ax ; 58 ; 0xffe85 orgs.asm:133 + pop DS ; 1f ; 0xffe86 orgs.asm:1986 + pop ES ; 07 ; 0xffe87 orgs.asm:1987 + iret ; cf ; 0xffe88 orgs.asm:1988 + ; 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:2001 + push ax ; 50 ; 0xffea6 orgs.asm:2002 + push DS ; 1e ; 0xffea7 orgs.asm:2004 + push dx ; 52 ; 0xffea8 orgs.asm:2005 + mov ax, strict word 00040h ; b8 40 00 ; 0xffea9 orgs.asm:2006 + mov ds, ax ; 8e d8 ; 0xffeac orgs.asm:2007 + mov ax, word [0006ch] ; a1 6c 00 ; 0xffeae orgs.asm:2013 + mov dx, word [word 0006eh] ; 8b 16 6e 00 ; 0xffeb1 orgs.asm:2014 + inc ax ; 40 ; 0xffeb5 orgs.asm:2015 + jne short 0feb9h ; 75 01 ; 0xffeb6 orgs.asm:2016 + inc dx ; 42 ; 0xffeb8 orgs.asm:2017 + cmp dx, strict byte 00018h ; 83 fa 18 ; 0xffeb9 orgs.asm:2026 + jc short 0fec1h ; 72 03 ; 0xffebc orgs.asm:2027 + jmp near 0f90ch ; e9 4b fa ; 0xffebe orgs.asm:2028 + mov word [0006ch], ax ; a3 6c 00 ; 0xffec1 orgs.asm:2040 + mov word [word 0006eh], dx ; 89 16 6e 00 ; 0xffec4 orgs.asm:2041 + mov AL, byte [00040h] ; a0 40 00 ; 0xffec8 orgs.asm:2045 + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xffecb orgs.asm:2046 + je short 0feddh ; 74 0e ; 0xffecd orgs.asm:2047 + db 0feh, 0c8h + ; dec al ; fe c8 ; 0xffecf orgs.asm:2048 + mov byte [00040h], AL ; a2 40 00 ; 0xffed1 orgs.asm:2049 + jne short 0feddh ; 75 07 ; 0xffed4 orgs.asm:2050 + mov dx, 003f2h ; ba f2 03 ; 0xffed6 orgs.asm:2052 + in AL, DX ; ec ; 0xffed9 orgs.asm:2053 + and AL, strict byte 0cfh ; 24 cf ; 0xffeda orgs.asm:2054 + out DX, AL ; ee ; 0xffedc orgs.asm:2055 + int 01ch ; cd 1c ; 0xffedd orgs.asm:2058 + cli ; fa ; 0xffedf orgs.asm:2060 + call 0e034h ; e8 51 e1 ; 0xffee0 orgs.asm:2061 + pop dx ; 5a ; 0xffee3 orgs.asm:2062 + pop DS ; 1f ; 0xffee4 orgs.asm:2063 + pop ax ; 58 ; 0xffee5 orgs.asm:2068 + iret ; cf ; 0xffee6 orgs.asm:2070 + ; 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:2095 + ; 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:2104 + 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:2114 + ; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000' + db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 0e2h diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum new file mode 100644 index 00000000..ddd11246 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum @@ -0,0 +1 @@ +45a8167de669f038f6831b9b26f0cf86 *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..08e72d7d --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/ahci.c @@ -0,0 +1,1029 @@ +/* $Id: ahci.c $ */ +/** @file + * AHCI host adapter driver to boot from SATA disks. + */ + +/* + * Copyright (C) 2011-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#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; + /** 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\n", (uint32_t)n_sect * sectsz); + 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 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, + 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; + } + + /* Convert to AHCI specific device number. */ + device_id = VBOX_GET_AHCI_DEVICE(device_id); + + DBG_AHCI("%s: reading %lu bytes, device %d, port %d\n", __func__, + length, 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; + + 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 = get_cmos_word(idxCmosChsBase /*, idxCmosChsBase+1*/); + 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; + + /* 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..8f392243 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/apm.c @@ -0,0 +1,234 @@ +/* $Id: apm.c $ */ +/** @file + * APM BIOS support. Implements APM version 1.2. + */ + +/* + * Copyright (C) 2004-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#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 + * ensure 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. + */ + +/* Wrapper to avoid unnecessary inlining. */ +void apm_out_str(const char *s) +{ + if (*s) + out_ctrl_str_asm(VBOX_BIOS_SHUTDOWN_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"); + break; + case APM_PS_SUSPEND: + apm_out_str("Suspend"); + break; + case APM_PS_OFF: + apm_out_str("Shutdown"); /* 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_STATUS: + /* We do not attempt to report battery status. */ + BX = 0x01FF; /* AC line power, battery unknown. */ + CX = 0x80FF; /* No battery. */ + DX = 0xFFFF; /* No idea about remaining battery life. */ + 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..99022c18 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/apm_pm.asm @@ -0,0 +1,229 @@ +; $Id: +;; @file +; Protected-mode APM implementation. +; + +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + + +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 + ; + ; Windows 3.1 POWER.DRV in Standard mode calls into APM + ; with CPL=3. If that happens, the HLT instruction will fault + ; and Windows will crash. To prevent that, we check the CPL + ; and do nothing (better than crashing). + ; + push cs + pop ax + test ax, 3 ; CPL > 0? + jnz apmw_success + 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..d5fff261 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/ata.c @@ -0,0 +1,1233 @@ +/* $Id: ata.c $ */ +/** @file + * PC BIOS - ATA disk support. + */ + +/* + * Copyright (C) 2006-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + * -------------------------------------------------------------------- + * + * 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" +#include "pciutil.h" + + +#if DEBUG_ATA +# define BX_DEBUG_ATA(...) BX_DEBUG(__VA_ARGS__) +#else +# define BX_DEBUG_ATA(...) +#endif + + +// --------------------------------------------------------------------------- +// Start of ATA/ATAPI Driver +// --------------------------------------------------------------------------- + +// --------------------------------------------------------------------------- +// 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); + + // 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 */ + } + } + + 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 (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 +// --------------------------------------------------------------------------- + +int ata_signature(uint16_t iobase1, uint8_t channel, uint8_t slave) +{ + int dsk_type = DSK_TYPE_NONE; + uint8_t sc, sn, st, cl, ch; + + /* + * Wait for BSY=0 so that the signature can be read. We already determined that + * an ATA interface is present, and rely on the fact that for non-existent + * devices, the BSY bit will always be clear. + */ + outb(iobase1+ATA_CB_DH, slave ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0); + do { + st = inb(iobase1+ATA_CB_STAT); + } while (st & ATA_CB_STAT_BSY); + + /* + * Look for ATA/ATAPI signature. Fun Fact #1: If there's a Device 1 but no + * Device 0, Device 1 can't tell and does not respond for it. Accessing + * non-existent Device 0 behaves the same regardless of whether Device 1 + * is present or not. + */ + sc = inb(iobase1+ATA_CB_SC); + sn = inb(iobase1+ATA_CB_SN); + if ((sc == 1) && (sn == 1)) { + cl = inb(iobase1+ATA_CB_CL); + ch = inb(iobase1+ATA_CB_CH); + + /* + * Fun fact #2: If Device 0 responds for Device 1, an ATA device generally + * returns the values of its own registers, while an ATAPI device returns + * zeros. In both cases, the Status register is read as zero. + */ + if ((cl == 0x14) && (ch == 0xEB)) { + dsk_type = DSK_TYPE_ATAPI; + BX_DEBUG_ATA("ata%d-%d: ATAPI device\n", channel, slave); + } else if ((cl == 0) && (ch == 0)) { + if (st != 0) { + dsk_type = DSK_TYPE_ATA; + BX_DEBUG_ATA("ata%d-%d: ATA device\n", channel, slave); + } else { + BX_DEBUG_ATA("ata%d-%d: ATA master responding for slave\n", channel, slave); + } + } else { + dsk_type = DSK_TYPE_UNKNOWN; + BX_DEBUG_ATA("ata%d-%d: something else (%02X/%02X/%02X)\n", channel, slave, cl, ch, st); + } + } else /* Possibly ATAPI Device 0 responding for Device 1. */ + BX_DEBUG_ATA("ata%d-%d: bad sc/sn signature (%02X/%02X)\n", channel, slave, sc, sn); + + return dsk_type; +} + +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; + + /* If we have PCI support, look for an IDE controller (it has to be a PCI device) + * so that we can skip silly probing. If there's no PCI, assume IDE is present. + * + * Needs an internal PCI function because the Programming Interface byte can be + * almost anything, and we conly care about the base-class and sub-class code. + */ +#if VBOX_BIOS_CPU >= 80386 + uint16_t busdevfn; + + busdevfn = pci_find_class_noif(0x0101); + if (busdevfn == 0xffff) { + BX_INFO("No PCI IDE controller, not probing IDE\n"); + return; + } +#endif + + 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 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 +#if BX_MAX_ATA_INTERFACES > 4 +#error Please fill the ATA interface information +#endif + + // Device detection + hdcount = cdcount = 0; + + for (device = 0; device < BX_MAX_ATA_DEVICES; device++) { + uint16_t iobase1, iobase2; + uint16_t retries; + uint8_t channel, slave; + uint8_t st; + + channel = device / 2; + slave = device % 2; + + iobase1 = bios_dsk->channels[channel].iobase1; + iobase2 = bios_dsk->channels[channel].iobase2; + + /* + * Here we are in a tricky situation. We do not know if an ATA + * interface is even present at a given address. If it is present, + * we don't know if a device is present. We also need to consider + * the case of only a slave device being present, which does not + * respond for the missing master device. If a device is present, + * it may be still powering up or processing reset, which means it + * may be busy. + * + * If a device is busy, we can't reliably write any registers, and + * reads will return the Status register. If the Status register + * value is 0FFh, there might be no ATA controller at all, or it + * might be a busy drive. Fortunately we know that our own devices + * never return such a value when busy, and we use that knowledge + * to detect non-existent interfaces. + * + * We also know that our ATA interface will not return 0FFh even when + * no device is present on a given channel. This knowledge is handy + * when only a slave device exists because we won't read 0FFh and + * think there is no ATA interface at all. + */ + + st = inb(iobase1+ATA_CB_STAT); + BX_DEBUG_ATA("ata%d-%d: Status=%02X\n", channel, slave, st); + if (st == 0xff) + continue; + + /* + * Perform a software reset by setting and clearing the SRST bit. This + * can be done at any time, and forces device signature into the task file + * registers. If present, both devices are reset at once, so we only do + * this once per channel. + */ + if (!slave) { + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN | ATA_CB_DC_SRST); + + /* + * Ensure reasonable SRST pulse width, but do not wait long for + * non-existent devices. + */ + retries = 32; + while (--retries > 0) { + st = inb(iobase1+ATA_CB_STAT); + if (st & ATA_CB_STAT_BSY) + break; + } + + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN); + + /* After reset, device signature will be placed in registers. But + * executing any commands will overwrite it for Device 1. So that + * we don't have to reset twice, look for both Device 0 and Device 1 + * signatures here right after reset. + */ + bios_dsk->devices[device + 0].type = ata_signature(iobase1, channel, 0); + bios_dsk->devices[device + 1].type = ata_signature(iobase1, channel, 1); + } + + // 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 = get_cmos_word(chsgeo_base /*, chsgeo_base + 1*/); + 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, + uint32_t length, uint8_t inout, char __far *buffer) +{ + uint16_t iobase1, iobase2; + uint16_t lcount, 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; + } + + 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); + + // Save byte count + count = lcount; + + BX_DEBUG_ATA("Trying to read %04x bytes ",lcount); + 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 (lcount & 0x03) + lmode = ATA_MODE_PIO16; + + // adds an extra byte if count are odd. before is always even + if (lcount & 0x01) { + lcount += 1; + } + +#if VBOX_BIOS_CPU >= 80386 + if (lmode == ATA_MODE_PIO32) { + lcount >>= 2; + } else +#endif + { + lcount >>= 1; + } + +#if VBOX_BIOS_CPU >= 80386 + if (lmode == ATA_MODE_PIO32) { + rep_insd(buffer, lcount, iobase1); + } else +#endif + { + rep_insw(buffer, lcount, 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..5be465db --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/ata.h @@ -0,0 +1,200 @@ +/* $Id: ata.h $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + * -------------------------------------------------------------------- + * + * 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..c8f8c30b --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/bios.c @@ -0,0 +1,212 @@ +/* $Id: bios.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + * -------------------------------------------------------------------- + * + * 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" +#include "VBox/bios.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); +} + +/** + * Reads two adjacent cmos bytes and return their values as a 16-bit word. + */ +uint16_t get_cmos_word(uint8_t idxFirst) +{ + return ((uint16_t)inb_cmos(idxFirst + 1) << 8) + | inb_cmos(idxFirst); +} + +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_INFO("INT18: BOOT FAILURE\n"); + out_ctrl_str_asm(VBOX_BIOS_SHUTDOWN_PORT, "Bootfail"); +} + +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..4be4242f --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/biosint.h @@ -0,0 +1,325 @@ +/* $Id: biosint.h $ */ +/** @file + * PC BIOS - BIOS internal definitions. + */ + +/* + * Copyright (C) 2006-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + * -------------------------------------------------------------------- + * + * 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 get_cmos_word(uint8_t idxFirst); +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) +#define BX_INFO_CON(...)do { put_str(BIOS_PRINTF_INFO, bios_prefix_string); bios_printf(BIOS_PRINTF_ALL, __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__) + +uint16_t pci16_find_device(uint32_t search_item, uint16_t index, int search_class, int ignore_if); + +/* 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..6f0fa84e --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/boot.c @@ -0,0 +1,365 @@ +/* $Id: boot.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + * -------------------------------------------------------------------- + * + * 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_INFO_CON("No bootable medium found!\n"); + else + BX_INFO_CON("Could not read from the boot medium!\n"); + BX_INFO_CON("Please insert a bootable medium and reboot.\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/buslogic.c b/src/VBox/Devices/PC/BIOS/buslogic.c new file mode 100644 index 00000000..e41ac418 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/buslogic.c @@ -0,0 +1,251 @@ +/* $Id: buslogic.c $ */ +/** @file + * BusLogic SCSI host adapter driver to boot from disks. + */ + +/* + * Copyright (C) 2021-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#include <stdint.h> +#include <string.h> +#include "biosint.h" +#include "ebda.h" +#include "inlines.h" +#include "pciutil.h" +#include "vds.h" +#include "scsi.h" + +//#define DEBUG_BUSLOGIC 1 +#if DEBUG_BUSLOGIC +# define DBG_BUSLOGIC(...) BX_INFO(__VA_ARGS__) +#else +# define DBG_BUSLOGIC(...) +#endif + +#define BUSLOGICCOMMAND_DISABLE_HOST_ADAPTER_INTERRUPT 0x25 +#define BUSLOGICCOMMAND_EXECUTE_SCSI_COMMAND 0x83 + + +#define RT_BIT(bit) (1 << (bit)) + +/** Register offsets in the I/O port space. */ +#define BUSLOGIC_REGISTER_CONTROL 0 /**< Writeonly */ +/** Fields for the control register. */ +# define BL_CTRL_RSBUS RT_BIT(4) /* Reset SCSI Bus. */ +# define BL_CTRL_RINT RT_BIT(5) /* Reset Interrupt. */ +# define BL_CTRL_RSOFT RT_BIT(6) /* Soft Reset. */ +# define BL_CTRL_RHARD RT_BIT(7) /* Hard Reset. */ + +#define BUSLOGIC_REGISTER_STATUS 0 /**< Readonly */ +/** Fields for the status register. */ +# define BL_STAT_CMDINV RT_BIT(0) /* Command Invalid. */ +# define BL_STAT_DIRRDY RT_BIT(2) /* Data In Register Ready. */ +# define BL_STAT_CPRBSY RT_BIT(3) /* Command/Parameter Out Register Busy. */ +# define BL_STAT_HARDY RT_BIT(4) /* Host Adapter Ready. */ +# define BL_STAT_INREQ RT_BIT(5) /* Initialization Required. */ +# define BL_STAT_DFAIL RT_BIT(6) /* Diagnostic Failure. */ +# define BL_STAT_DACT RT_BIT(7) /* Diagnistic Active. */ + +#define BUSLOGIC_REGISTER_COMMAND 1 /**< Writeonly */ +#define BUSLOGIC_REGISTER_DATAIN 1 /**< Readonly */ +#define BUSLOGIC_REGISTER_INTERRUPT 2 /**< Readonly */ +/** Fields for the interrupt register. */ +# define BL_INTR_IMBL RT_BIT(0) /* Incoming Mailbox Loaded. */ +# define BL_INTR_OMBR RT_BIT(1) /* Outgoing Mailbox Available. */ +# define BL_INTR_CMDC RT_BIT(2) /* Command Complete. */ +# define BL_INTR_RSTS RT_BIT(3) /* SCSI Bus Reset State. */ +# define BL_INTR_INTV RT_BIT(7) /* Interrupt Valid. */ + +/** + * The structure for the "Execute SCSI Command" command. + */ +typedef struct ESCMD +{ + /** Data length. */ + uint32_t cbData; + /** Data pointer. */ + uint32_t u32PhysAddrData; + /** The device the request is sent to. */ + uint8_t uTargetId; + /** The LUN in the device. */ + uint8_t uLogicalUnit; + /** Reserved */ + unsigned char uReserved1 : 3; + /** Data direction for the request. */ + unsigned char uDataDirection : 2; + /** Reserved */ + unsigned char uReserved2 : 3; + /** Length of the SCSI CDB. */ + uint8_t cbCDB; + /** The SCSI CDB. (A CDB can be 12 bytes long.) */ + uint8_t abCDB[16]; +} ESCMD, *PESCMD; + +/** + * BusLogic-SCSI controller data. + */ +typedef struct +{ + /** The execute SCSI command. */ + ESCMD EsCmd; + /** I/O base of device. */ + uint16_t u16IoBase; +} buslogic_t; + +/* The BusLogic specific data must fit into 1KB (statically allocated). */ +ct_assert(sizeof(buslogic_t) <= 1024); + +/** + * Converts a segment:offset pair into a 32bit physical address. + */ +static uint32_t buslogic_addr_to_phys(void __far *ptr) +{ + return ((uint32_t)FP_SEG(ptr) << 4) + FP_OFF(ptr); +} + +static int buslogic_cmd(buslogic_t __far *buslogic, uint8_t uCmd, uint8_t __far *pbReq, uint16_t cbReq, + uint8_t __far *pbReply, uint16_t cbReply) +{ + uint16_t i; + + outb(buslogic->u16IoBase + BUSLOGIC_REGISTER_COMMAND, uCmd); + for (i = 0; i < cbReq; i++) + outb(buslogic->u16IoBase + BUSLOGIC_REGISTER_COMMAND, *pbReq++); + + /* Wait for the HBA to finish processing the command. */ + if (cbReply) + { + while (!(inb(buslogic->u16IoBase + BUSLOGIC_REGISTER_STATUS) & BL_STAT_DIRRDY)); + for (i = 0; i < cbReply; i++) + *pbReply++ = inb(buslogic->u16IoBase + BUSLOGIC_REGISTER_DATAIN); + } + + while (!(inb(buslogic->u16IoBase + BUSLOGIC_REGISTER_STATUS) & BL_STAT_HARDY)); + + /* Clear interrupt status. */ + outb(buslogic->u16IoBase + BUSLOGIC_REGISTER_CONTROL, BL_CTRL_RINT); + + return 0; +} + +int buslogic_scsi_cmd_data_out(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB, + uint8_t cbCDB, uint8_t __far *buffer, uint32_t length) +{ + buslogic_t __far *buslogic = (buslogic_t __far *)pvHba; + uint8_t abReply[4]; + int i; + int rc; + + _fmemset(&buslogic->EsCmd, 0, sizeof(buslogic->EsCmd)); + _fmemset(abReply, 0, sizeof(abReply)); + + buslogic->EsCmd.cbData = length; + buslogic->EsCmd.u32PhysAddrData = buslogic_addr_to_phys(buffer); + buslogic->EsCmd.uTargetId = idTgt; + buslogic->EsCmd.uLogicalUnit = 0; + buslogic->EsCmd.uDataDirection = 0; + buslogic->EsCmd.cbCDB = cbCDB; + + for (i = 0; i < cbCDB; i++) + buslogic->EsCmd.abCDB[i] = aCDB[i]; + + rc = buslogic_cmd(buslogic, BUSLOGICCOMMAND_EXECUTE_SCSI_COMMAND, (uint8_t __far *)&buslogic->EsCmd, + sizeof(buslogic->EsCmd) - sizeof(buslogic->EsCmd.abCDB) + cbCDB, &abReply[0], sizeof(abReply)); + if (!rc) + rc = abReply[2]; + + return rc; +} + +int buslogic_scsi_cmd_data_in(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB, + uint8_t cbCDB, uint8_t __far *buffer, uint32_t length) +{ + buslogic_t __far *buslogic = (buslogic_t __far *)pvHba; + uint8_t abReply[4]; + int i; + int rc; + + DBG_BUSLOGIC("buslogic_scsi_cmd_data_in:\n"); + + _fmemset(&buslogic->EsCmd, 0, sizeof(buslogic->EsCmd)); + _fmemset(abReply, 0, sizeof(abReply)); + + buslogic->EsCmd.cbData = length; + buslogic->EsCmd.u32PhysAddrData = buslogic_addr_to_phys(buffer); + buslogic->EsCmd.uTargetId = idTgt; + buslogic->EsCmd.uLogicalUnit = 0; + buslogic->EsCmd.uDataDirection = 0; + buslogic->EsCmd.cbCDB = cbCDB; + + for (i = 0; i < cbCDB; i++) + buslogic->EsCmd.abCDB[i] = aCDB[i]; + + rc = buslogic_cmd(buslogic, BUSLOGICCOMMAND_EXECUTE_SCSI_COMMAND, (uint8_t __far *)&buslogic->EsCmd, + sizeof(buslogic->EsCmd) - sizeof(buslogic->EsCmd.abCDB) + cbCDB, &abReply[0], sizeof(abReply)); + if (!rc) + rc = abReply[2]; + + return rc; +} + +/** + * Initializes the BusLogic SCSI HBA and detects attached devices. + */ +static int buslogic_scsi_hba_init(buslogic_t __far *buslogic) +{ + /* Hard reset. */ + outb(buslogic->u16IoBase + BUSLOGIC_REGISTER_CONTROL, BL_CTRL_RHARD); + while (!(inb(buslogic->u16IoBase + BUSLOGIC_REGISTER_STATUS) & BL_STAT_HARDY)); + + return 0; +} + +/** + * Init the BusLogic SCSI driver and detect attached disks. + */ +int buslogic_scsi_init(void __far *pvHba, uint8_t u8Bus, uint8_t u8DevFn) +{ + buslogic_t __far *buslogic = (buslogic_t __far *)pvHba; + uint32_t u32Bar; + + DBG_BUSLOGIC("BusLogic SCSI HBA at Bus %u DevFn 0x%x (raw 0x%x)\n", u8Bus, u8DevFn); + + u32Bar = pci_read_config_dword(u8Bus, u8DevFn, 0x10); + + DBG_BUSLOGIC("BAR at 0x10 : 0x%x\n", u32Bar); + + if ((u32Bar & 0x01) != 0) + { + uint16_t u16IoBase = (u32Bar & 0xfff0); + + /* Enable PCI memory, I/O, bus mastering access in command register. */ + pci_write_config_word(u8Bus, u8DevFn, 4, 0x7); + + DBG_BUSLOGIC("I/O base: 0x%x\n", u16IoBase); + buslogic->u16IoBase = u16IoBase; + return buslogic_scsi_hba_init(buslogic); + } + else + DBG_BUSLOGIC("BAR is MMIO\n"); + + return 1; +} diff --git a/src/VBox/Devices/PC/BIOS/disk.c b/src/VBox/Devices/PC/BIOS/disk.c new file mode 100644 index 00000000..ca97622a --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/disk.c @@ -0,0 +1,664 @@ +/* $Id: disk.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + * -------------------------------------------------------------------- + * + * 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 int __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); + } else { + BX_DEBUG_INT13_HD("%s: %d sectors from C/H/S %u/%u/%u @ %04x:%04x\n", __func__, + count, cylinder, head, sector, 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. */ + /* To make Windows 3.1x WDCTRL.386 happy, we'd have to subtract 2, not 1, + * to account for a diagnostic cylinder. + */ + 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??? + +#ifdef VBOX_WITH_SCSI + /* SCSI drives are always "ready". */ + if (!VBOX_IS_SCSI_DEVICE(device)) { +#endif + // 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; + } +#ifdef VBOX_WITH_SCSI + } else /* It's not an ATA drive. */ + goto int13_success; +#endif + 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..3e4eecec --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/ebda.h @@ -0,0 +1,405 @@ +/* $Id: ebda.h $ */ +/** @file + * PC BIOS - EBDA (Extended BIOS Data Area) Definition + */ + +/* + * Copyright (C) 2006-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + * -------------------------------------------------------------------- + * + * 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 + +#ifdef VBOX_WITH_VIRTIO_SCSI + /* Four should be enough for now */ + #define BX_MAX_VIRTIO_SCSI_DEVICES 4 + + /* An AHCI device starts always at BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES. */ + #define VBOX_IS_VIRTIO_SCSI_DEVICE(device_id) (device_id >= (BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES + BX_MAX_AHCI_DEVICES)) + #define VBOX_GET_VIRTIO_SCSI_DEVICE(device_id) (device_id - (BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES + BX_MAX_AHCI_DEVICES)) +#else + #define BX_MAX_VIRTIO_SCSI_DEVICES 0 +#endif + +#define BX_MAX_STORAGE_DEVICES (BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES + BX_MAX_AHCI_DEVICES + BX_MAX_VIRTIO_SCSI_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 hba_seg; /* Segment of HBA driver data block. */ + uint8_t idx_hba; /* The HBA driver to use. */ + 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. */ +} disk_req_t; + +extern uint16_t ahci_cmd_packet(uint16_t device_id, uint8_t cmdlen, char __far *cmdbuf, + uint32_t length, uint8_t inout, char __far *buffer); +extern uint16_t scsi_cmd_packet(uint16_t device, uint8_t cmdlen, char __far *cmdbuf, + uint32_t length, uint8_t inout, char __far *buffer); +extern uint16_t ata_cmd_packet(uint16_t device, uint8_t cmdlen, char __far *cmdbuf, + 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. */ + uint8_t __far *ptr_unaligned; /* Bounce buffer for sector unaligned reads. */ +} 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; + +#ifndef VBOX_WITH_VIRTIO_SCSI /** @todo For development only, need to find a real solution to voercome the 1KB limit. */ + uint8_t filler2[0xC4]; +#endif + + 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..8cf45371 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/eltorito.c @@ -0,0 +1,1048 @@ +/* $Id: eltorito.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + * -------------------------------------------------------------------- + * + * 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 + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + +/// @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, + 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; + +/** + * Allocates 2K of conventional memory. + */ +static uint16_t cdemu_bounce_buf_alloc(void) +{ + uint16_t base_mem_kb; + uint16_t bounce_seg; + + base_mem_kb = read_word(0x00, 0x0413); + if (base_mem_kb == 0) + return 0; + + base_mem_kb -= 2; + bounce_seg = (((uint32_t)base_mem_kb * 1024) >> 4); /* Calculate start segment. */ + + write_word(0x00, 0x0413, base_mem_kb); + + return bounce_seg; +} + +void BIOSCALL cdemu_init(void) +{ + /// @todo a macro or a function for getting the EBDA segment + uint16_t ebda_seg = read_word(0x0040,0x000E); + cdemu_t __far *cdemu = ebda_seg :> &EbdaData->cdemu; + + // the only important data is this one for now + 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; +} + +static uint16_t cdrom_read(uint8_t device, uint32_t lba, uint16_t nbsectors, void __far *buf) +{ + uint16_t ebda_seg=read_word(0x0040,0x000E); + cdb_atapi atapicmd; + bio_dsk_t __far *bios_dsk = ebda_seg :> &EbdaData->bdisk; + + atapicmd.command = 0x28; // READ 10 command + atapicmd.lba = swap_32(lba); + atapicmd.nsect = swap_16(nbsectors); + + bios_dsk->drqp.nsect = nbsectors; + bios_dsk->drqp.sect_sz = 2048L; + + return pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, nbsectors*2048L, ATA_DATA_IN, buf); +} + +static uint16_t cdemu_read(uint8_t device, uint32_t lba, uint16_t nbsectors, void __far *buf) +{ + uint16_t ebda_seg=read_word(0x0040,0x000E); + uint16_t error; + cdemu_t __far *cdemu = ebda_seg :> &EbdaData->cdemu; + uint32_t ilba = cdemu->ilba; + uint32_t slba; + uint16_t before; + uint8_t __far *dst = (uint8_t __far *)buf; + + BX_DEBUG_ELTORITO("cdemu_read: lba=%lu nbsectors=%u\n", lba, nbsectors); + + // start lba on cd + slba = (uint32_t)lba / 4; + before = (uint32_t)lba % 4; + + // Unaligned start will go to a bounce buffer first. + if (before) + { + uint16_t xfer_sect = MIN(nbsectors, 4 - before); + + error = cdrom_read(device, ilba + slba, 1, cdemu->ptr_unaligned); + if (error != 0) + return error; + + _fmemcpy(dst, cdemu->ptr_unaligned + before * 512L, xfer_sect * 512L); + dst += xfer_sect * 512L; + nbsectors -= xfer_sect; + slba++; + } + + // Now for the aligned part. + if (nbsectors / 4) + { + uint16_t xfer_sect = nbsectors / 4; + + error = cdrom_read(device, ilba + slba, xfer_sect, dst); + if (error != 0) + return error; + dst += xfer_sect * 2048L; + nbsectors -= xfer_sect * 4; + slba += xfer_sect; + } + + // Now for the unaligned end. + if (nbsectors) + { + error = cdrom_read(device, ilba + slba, 1, cdemu->ptr_unaligned); + if (error != 0) + return error; + + _fmemcpy(dst, cdemu->ptr_unaligned, nbsectors * 512); + } + + return error; +} + +// --------------------------------------------------------------------------- +// 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]; + 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). */ + for (read_try = 0; read_try <= 4; ++read_try) + { + error = cdrom_read(device, 0x11, 1, &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. */ + error = cdrom_read(device, lba, 1, 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); + + /* Now that we know El Torito emulation is in use, allocate buffer. */ + cdemu->ptr_unaligned = cdemu_bounce_buf_alloc() :> 0; + if (cdemu->ptr_unaligned == NULL) + return 13; + + /* Read the disk image's boot sector into memory. */ + error = cdemu_read(device, 0, nbsectors, MK_FP(boot_segment,0)); + if (error != 0) + return 14; + + 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; + uint16_t segment, offset; + 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; + + 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); + + status = cdemu_read(device, vlba, nbsectors, MK_FP(segment,offset)); + 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); + + status = cdemu_read(device, lba, count, MK_FP(segment,offset)); + 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; + 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); + + status = cdrom_read(device, lba, count, 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..2ac2b299 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/floppy.c @@ -0,0 +1,1370 @@ +/* $Id: floppy.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + * -------------------------------------------------------------------- + * + * 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..78020839 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/floppyt.c @@ -0,0 +1,114 @@ +/* $Id: floppyt.c $ */ +/** @file + * Floppy drive tables. + */ + +/* + * Copyright (C) 2011-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#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..13c81adf --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/inlines.h @@ -0,0 +1,271 @@ +/* $Id: inlines.h $ */ +/** @file + * Inline routines for Watcom C. + */ + +/* + * Copyright (C) 2010-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#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; + +/* Output a null-terminated string to a specified port, without the + * terminating null character. + */ +static void out_ctrl_str_asm(uint16_t port, const char *s); +#pragma aux out_ctrl_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; + +#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..f8c77144 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/invop.c @@ -0,0 +1,360 @@ +/* $Id: invop.c $ */ +/** @file + * Real mode invalid opcode handler. + */ + +/* + * Copyright (C) 2013-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#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..29cc5095 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/keyboard.c @@ -0,0 +1,832 @@ +/* $Id: keyboard.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + * -------------------------------------------------------------------- + * + * 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..47f758d8 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/logo.c @@ -0,0 +1,568 @@ +/* $Id: logo.c $ */ +/** @file + * Stuff for drawing the BIOS logo. + */ + +/* + * Copyright (C) 2004-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#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/lsilogic.c b/src/VBox/Devices/PC/BIOS/lsilogic.c new file mode 100644 index 00000000..9137fd8c --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/lsilogic.c @@ -0,0 +1,537 @@ +/* $Id: lsilogic.c $ */ +/** @file + * LsiLogic SCSI host adapter driver to boot from disks. + */ + +/* + * Copyright (C) 2021-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#include <stdint.h> +#include <string.h> +#include "biosint.h" +#include "ebda.h" +#include "inlines.h" +#include "pciutil.h" +#include "vds.h" +#include "scsi.h" + +//#define DEBUG_LSILOGIC 1 +#if DEBUG_LSILOGIC +# define DBG_LSILOGIC(...) BX_INFO(__VA_ARGS__) +#else +# define DBG_LSILOGIC(...) +#endif + +#define RT_BIT(bit) (1L << (bit)) + +/** + * A simple SG element for a 32bit address. + */ +typedef struct MptSGEntrySimple32 +{ + /** Length of the buffer this entry describes. */ + uint32_t u24Length: 24; + /** Flag whether this element is the end of the list. */ + uint32_t fEndOfList: 1; + /** Flag whether the address is 32bit or 64bits wide. */ + uint32_t f64BitAddress: 1; + /** Flag whether this buffer contains data to be transferred or is the destination. */ + uint32_t fBufferContainsData: 1; + /** Flag whether this is a local address or a system address. */ + uint32_t fLocalAddress: 1; + /** Element type. */ + uint32_t u2ElementType: 2; + /** Flag whether this is the last element of the buffer. */ + uint32_t fEndOfBuffer: 1; + /** Flag whether this is the last element of the current segment. */ + uint32_t fLastElement: 1; + /** Lower 32bits of the address of the data buffer. */ + uint32_t u32DataBufferAddressLow: 32; +} MptSGEntrySimple32, *PMptSGEntrySimple32; + +/** Defined function codes found in the message header. */ +#define MPT_MESSAGE_HDR_FUNCTION_SCSI_IO_REQUEST (0x00) +#define MPT_MESSAGE_HDR_FUNCTION_IOC_INIT (0x02) + +/** + * SCSI IO Request + */ +typedef struct MptSCSIIORequest +{ + /** Target ID */ + uint8_t u8TargetID; + /** Bus number */ + uint8_t u8Bus; + /** Chain offset */ + uint8_t u8ChainOffset; + /** Function number. */ + uint8_t u8Function; + /** CDB length. */ + uint8_t u8CDBLength; + /** Sense buffer length. */ + uint8_t u8SenseBufferLength; + /** Reserved */ + uint8_t u8Reserved; + /** Message flags. */ + uint8_t u8MessageFlags; + /** Message context ID. */ + uint32_t u32MessageContext; + /** LUN */ + uint8_t au8LUN[8]; + /** Control values. */ + uint32_t u32Control; + /** The CDB. */ + uint8_t au8CDB[16]; + /** Data length. */ + uint32_t u32DataLength; + /** Sense buffer low 32bit address. */ + uint32_t u32SenseBufferLowAddress; +} MptSCSIIORequest, *PMptSCSIIORequest; + +#define MPT_SCSIIO_REQUEST_CONTROL_TXDIR_NONE (0x0L) +#define MPT_SCSIIO_REQUEST_CONTROL_TXDIR_WRITE (0x1L) +#define MPT_SCSIIO_REQUEST_CONTROL_TXDIR_READ (0x2L) + +/** + * SCSI IO error reply. + */ +typedef struct MptSCSIIOErrorReply +{ + /** Target ID */ + uint8_t u8TargetID; + /** Bus number */ + uint8_t u8Bus; + /** Message length. */ + uint8_t u8MessageLength; + /** Function number. */ + uint8_t u8Function; + /** CDB length */ + uint8_t u8CDBLength; + /** Sense buffer length */ + uint8_t u8SenseBufferLength; + /** Reserved */ + uint8_t u8Reserved; + /** Message flags */ + uint8_t u8MessageFlags; + /** Message context ID */ + uint32_t u32MessageContext; + /** SCSI status. */ + uint8_t u8SCSIStatus; + /** SCSI state */ + uint8_t u8SCSIState; + /** IO controller status */ + uint16_t u16IOCStatus; + /** IO controller log information */ + uint32_t u32IOCLogInfo; + /** Transfer count */ + uint32_t u32TransferCount; + /** Sense count */ + uint32_t u32SenseCount; + /** Response information */ + uint32_t u32ResponseInfo; +} MptSCSIIOErrorReply, *PMptSCSIIOErrorReply; + +/** + * IO controller init request. + */ +typedef struct MptIOCInitRequest +{ + /** Which system send this init request. */ + uint8_t u8WhoInit; + /** Reserved */ + uint8_t u8Reserved; + /** Chain offset in the SG list. */ + uint8_t u8ChainOffset; + /** Function to execute. */ + uint8_t u8Function; + /** Flags */ + uint8_t u8Flags; + /** Maximum number of devices the driver can handle. */ + uint8_t u8MaxDevices; + /** Maximum number of buses the driver can handle. */ + uint8_t u8MaxBuses; + /** Message flags. */ + uint8_t u8MessageFlags; + /** Message context ID. */ + uint32_t u32MessageContext; + /** Reply frame size. */ + uint16_t u16ReplyFrameSize; + /** Reserved */ + uint16_t u16Reserved; + /** Upper 32bit part of the 64bit address the message frames are in. + * That means all frames must be in the same 4GB segment. */ + uint32_t u32HostMfaHighAddr; + /** Upper 32bit of the sense buffer. */ + uint32_t u32SenseBufferHighAddr; +} MptIOCInitRequest, *PMptIOCInitRequest; + +#define LSILOGICWHOINIT_SYSTEM_BIOS 0x01 + + +/** + * IO controller init reply. + */ +typedef struct MptIOCInitReply +{ + /** Which subsystem send this init request. */ + uint8_t u8WhoInit; + /** Reserved */ + uint8_t u8Reserved; + /** Message length */ + uint8_t u8MessageLength; + /** Function. */ + uint8_t u8Function; + /** Flags */ + uint8_t u8Flags; + /** Maximum number of devices the driver can handle. */ + uint8_t u8MaxDevices; + /** Maximum number of busses the driver can handle. */ + uint8_t u8MaxBuses; + /** Message flags. */ + uint8_t u8MessageFlags; + /** Message context ID */ + uint32_t u32MessageContext; + /** Reserved */ + uint16_t u16Reserved; + /** IO controller status. */ + uint16_t u16IOCStatus; + /** IO controller log information. */ + uint32_t u32IOCLogInfo; +} MptIOCInitReply, *PMptIOCInitReply; + +/** + * Doorbell register - Used to get the status of the controller and + * initialise it. + */ +#define LSILOGIC_REG_DOORBELL 0x00 +# define LSILOGIC_REG_DOORBELL_SET_STATE(enmState) (((enmState) & 0x0f) << 28) +# define LSILOGIC_REG_DOORBELL_SET_USED(enmDoorbell) (((enmDoorbell != LSILOGICDOORBELLSTATE_NOT_IN_USE) ? 1 : 0) << 27) +# define LSILOGIC_REG_DOORBELL_SET_WHOINIT(enmWhoInit) (((enmWhoInit) & 0x07) << 24) +# define LSILOGIC_REG_DOORBELL_SET_FAULT_CODE(u16Code) (u16Code) +# define LSILOGIC_REG_DOORBELL_GET_FUNCTION(x) (((x) & 0xff000000) >> 24) +# define LSILOGIC_REG_DOORBELL_GET_SIZE(x) (((x) & 0x00ff0000) >> 16) + +/** + * Functions which can be passed through the system doorbell. + */ +#define LSILOGIC_DOORBELL_FUNCTION_IOC_MSG_UNIT_RESET 0x40L +#define LSILOGIC_DOORBELL_FUNCTION_IO_UNIT_RESET 0x41L +#define LSILOGIC_DOORBELL_FUNCTION_HANDSHAKE 0x42L +#define LSILOGIC_DOORBELL_FUNCTION_REPLY_FRAME_REMOVAL 0x43L + +/** + * Write sequence register for the diagnostic register. + */ +#define LSILOGIC_REG_WRITE_SEQUENCE 0x04 + +/** + * Diagnostic register - used to reset the controller. + */ +#define LSILOGIC_REG_HOST_DIAGNOSTIC 0x08 +# define LSILOGIC_REG_HOST_DIAGNOSTIC_DIAG_MEM_ENABLE (RT_BIT(0)) +# define LSILOGIC_REG_HOST_DIAGNOSTIC_DISABLE_ARM (RT_BIT(1)) +# define LSILOGIC_REG_HOST_DIAGNOSTIC_RESET_ADAPTER (RT_BIT(2)) +# define LSILOGIC_REG_HOST_DIAGNOSTIC_DIAG_RW_ENABLE (RT_BIT(4)) +# define LSILOGIC_REG_HOST_DIAGNOSTIC_RESET_HISTORY (RT_BIT(5)) +# define LSILOGIC_REG_HOST_DIAGNOSTIC_FLASH_BAD_SIG (RT_BIT(6)) +# define LSILOGIC_REG_HOST_DIAGNOSTIC_DRWE (RT_BIT(7)) +# define LSILOGIC_REG_HOST_DIAGNOSTIC_PREVENT_IOC_BOOT (RT_BIT(9)) +# define LSILOGIC_REG_HOST_DIAGNOSTIC_CLEAR_FLASH_BAD_SIG (RT_BIT(10)) + +#define LSILOGIC_REG_TEST_BASE_ADDRESS 0x0c +#define LSILOGIC_REG_DIAG_RW_DATA 0x10 +#define LSILOGIC_REG_DIAG_RW_ADDRESS 0x14 + +/** + * Interrupt status register. + */ +#define LSILOGIC_REG_HOST_INTR_STATUS 0x30 +# define LSILOGIC_REG_HOST_INTR_STATUS_W_MASK (RT_BIT(3)) +# define LSILOGIC_REG_HOST_INTR_STATUS_DOORBELL_STS (RT_BIT(31)) +# define LSILOGIC_REG_HOST_INTR_STATUS_REPLY_INTR (RT_BIT(3)) +# define LSILOGIC_REG_HOST_INTR_STATUS_SYSTEM_DOORBELL (RT_BIT(0)) + +/** + * Interrupt mask register. + */ +#define LSILOGIC_REG_HOST_INTR_MASK 0x34 +# define LSILOGIC_REG_HOST_INTR_MASK_W_MASK (RT_BIT(0) | RT_BIT(3) | RT_BIT(8) | RT_BIT(9)) +# define LSILOGIC_REG_HOST_INTR_MASK_IRQ_ROUTING (RT_BIT(8) | RT_BIT(9)) +# define LSILOGIC_REG_HOST_INTR_MASK_DOORBELL RT_BIT(0) +# define LSILOGIC_REG_HOST_INTR_MASK_REPLY RT_BIT(3) + +/** + * Queue registers. + */ +#define LSILOGIC_REG_REQUEST_QUEUE 0x40 +#define LSILOGIC_REG_REPLY_QUEUE 0x44 + +/** + * LsiLogic-SCSI controller data. + */ +typedef struct +{ + /** The SCSI I/O request structure. */ + MptSCSIIORequest ScsiIoReq; + /** S/G elements being used, must come after the I/O request structure. */ + MptSGEntrySimple32 Sge; + /** The reply frame used for address replies. */ + uint8_t abReply[128]; + /** I/O base of device. */ + uint16_t u16IoBase; +} lsilogic_t; + +/* The BusLogic specific data must fit into 1KB (statically allocated). */ +ct_assert(sizeof(lsilogic_t) <= 1024); + +#define VBOX_LSILOGIC_NO_DEVICE 0xffff + +/* 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; + +/** + * Converts a segment:offset pair into a 32bit physical address. + */ +static uint32_t lsilogic_addr_to_phys(void __far *ptr) +{ + return ((uint32_t)FP_SEG(ptr) << 4) + FP_OFF(ptr); +} + +static int lsilogic_cmd(lsilogic_t __far *lsilogic, const void __far *pvReq, uint16_t cbReq, + void __far *pvReply, uint16_t cbReply) +{ + uint16_t i; + const uint32_t __far *pu32Req = (const uint32_t __far *)pvReq; + uint16_t __far *pu16Reply = (uint16_t *)pvReply; + uint32_t cMsg = cbReq / sizeof(uint32_t); + uint16_t cReply = cbReply / sizeof(uint16_t); + uint32_t u32Fn = (LSILOGIC_DOORBELL_FUNCTION_HANDSHAKE << 24) | (cMsg << 16); + + if ( cbReq % sizeof(uint32_t) + || cbReply % sizeof(uint16_t)) + return 1; + + outpd(lsilogic->u16IoBase + LSILOGIC_REG_DOORBELL, u32Fn); + for (i = 0; i < cMsg; i++) + outpd(lsilogic->u16IoBase + LSILOGIC_REG_DOORBELL, pu32Req[i]); + + for (i = 0; i < cReply; i++) + { + /* Wait for the system doorbell interrupt status to be set. */ + while (!(inpd(lsilogic->u16IoBase + LSILOGIC_REG_HOST_INTR_STATUS) & LSILOGIC_REG_HOST_INTR_STATUS_SYSTEM_DOORBELL)); + + pu16Reply[i] = (uint16_t)inpd(lsilogic->u16IoBase + LSILOGIC_REG_DOORBELL); /* The lower 16bits contain the reply data. */ + outpd(lsilogic->u16IoBase + LSILOGIC_REG_HOST_INTR_STATUS, 1); + } + + return 0; +} + +static int lsilogic_scsi_cmd_exec(lsilogic_t __far *lsilogic) +{ + uint32_t u32Reply = 0; + uint32_t u32ReplyDummy = 0; + + /* Send it off. */ + outpd(lsilogic->u16IoBase + LSILOGIC_REG_REQUEST_QUEUE, lsilogic_addr_to_phys(&lsilogic->ScsiIoReq)); + + /* Wait for it to finish. */ + while (!(inpd(lsilogic->u16IoBase + LSILOGIC_REG_HOST_INTR_STATUS) & LSILOGIC_REG_HOST_INTR_STATUS_REPLY_INTR)); + + outpd(lsilogic->u16IoBase + LSILOGIC_REG_HOST_INTR_STATUS, 1); + + /* Read the reply queue. */ + u32Reply = inpd(lsilogic->u16IoBase + LSILOGIC_REG_REPLY_QUEUE); + u32ReplyDummy = inpd(lsilogic->u16IoBase + LSILOGIC_REG_REPLY_QUEUE); + if (u32ReplyDummy != 0xffffffff) + return 5; + if (u32Reply & RT_BIT(31)) + { + /* + * This is an address reply indicating a failed transaction, so just return an error without + * bothering to check the exact failure reason for now. + * + * Just provide the reply frame to the reply queue again. + */ + outpd(lsilogic->u16IoBase + LSILOGIC_REG_REPLY_QUEUE, lsilogic_addr_to_phys(&lsilogic->abReply)); + return 4; + } + + if (u32Reply != 0xcafe) /* Getting a different context ID should never ever happen. */ + return 3; + + return 0; +} + +int lsilogic_scsi_cmd_data_out(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB, + uint8_t cbCDB, uint8_t __far *buffer, uint32_t length) +{ + lsilogic_t __far *lsilogic = (lsilogic_t __far *)pvHba; + int i; + + _fmemset(&lsilogic->ScsiIoReq, 0, sizeof(lsilogic->ScsiIoReq)); + + lsilogic->ScsiIoReq.u8TargetID = idTgt; + lsilogic->ScsiIoReq.u8Bus = 0; + lsilogic->ScsiIoReq.u8ChainOffset = 0; + lsilogic->ScsiIoReq.u8Function = MPT_MESSAGE_HDR_FUNCTION_SCSI_IO_REQUEST; + lsilogic->ScsiIoReq.u8CDBLength = cbCDB; + lsilogic->ScsiIoReq.u8SenseBufferLength = 0; + lsilogic->ScsiIoReq.u32MessageContext = 0xcafe; + lsilogic->ScsiIoReq.u32Control = MPT_SCSIIO_REQUEST_CONTROL_TXDIR_WRITE << 24; + lsilogic->ScsiIoReq.u32DataLength = length; + for (i = 0; i < cbCDB; i++) + lsilogic->ScsiIoReq.au8CDB[i] = aCDB[i]; + + lsilogic->Sge.u24Length = length; + lsilogic->Sge.fEndOfList = 1; + lsilogic->Sge.f64BitAddress = 0; + lsilogic->Sge.fBufferContainsData = 0; + lsilogic->Sge.fLocalAddress = 0; + lsilogic->Sge.u2ElementType = 0x01; /* Simple type */ + lsilogic->Sge.fEndOfBuffer = 1; + lsilogic->Sge.fLastElement = 1; + lsilogic->Sge.u32DataBufferAddressLow = lsilogic_addr_to_phys(buffer); + + return lsilogic_scsi_cmd_exec(lsilogic); +} + +int lsilogic_scsi_cmd_data_in(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB, + uint8_t cbCDB, uint8_t __far *buffer, uint32_t length) +{ + lsilogic_t __far *lsilogic = (lsilogic_t __far *)pvHba; + int i; + + _fmemset(&lsilogic->ScsiIoReq, 0, sizeof(lsilogic->ScsiIoReq)); + + lsilogic->ScsiIoReq.u8TargetID = idTgt; + lsilogic->ScsiIoReq.u8Bus = 0; + lsilogic->ScsiIoReq.u8ChainOffset = 0; + lsilogic->ScsiIoReq.u8Function = MPT_MESSAGE_HDR_FUNCTION_SCSI_IO_REQUEST; + lsilogic->ScsiIoReq.u8CDBLength = cbCDB; + lsilogic->ScsiIoReq.u8SenseBufferLength = 0; + lsilogic->ScsiIoReq.u32MessageContext = 0xcafe; + lsilogic->ScsiIoReq.u32Control = MPT_SCSIIO_REQUEST_CONTROL_TXDIR_READ << 24; + lsilogic->ScsiIoReq.u32DataLength = length; + for (i = 0; i < cbCDB; i++) + lsilogic->ScsiIoReq.au8CDB[i] = aCDB[i]; + + lsilogic->Sge.u24Length = length; + lsilogic->Sge.fEndOfList = 1; + lsilogic->Sge.f64BitAddress = 0; + lsilogic->Sge.fBufferContainsData = 0; + lsilogic->Sge.fLocalAddress = 0; + lsilogic->Sge.u2ElementType = 0x01; /* Simple type */ + lsilogic->Sge.fEndOfBuffer = 1; + lsilogic->Sge.fLastElement = 1; + lsilogic->Sge.u32DataBufferAddressLow = lsilogic_addr_to_phys(buffer); + + return lsilogic_scsi_cmd_exec(lsilogic); +} + +/** + * Initializes the LsiLogic SCSI HBA and detects attached devices. + */ +static int lsilogic_scsi_hba_init(lsilogic_t __far *lsilogic) +{ + int rc; + MptIOCInitRequest IocInitReq; + MptIOCInitReply IocInitReply; + + /* + * The following initialization sequence is stripped down to the point to work with + * our emulated LsiLogic controller, it will most certainly fail on real hardware. + */ + + /* Hard reset, write the sequence to enable the diagnostic access. */ + outpd(lsilogic->u16IoBase + LSILOGIC_REG_WRITE_SEQUENCE, 0x04); + outpd(lsilogic->u16IoBase + LSILOGIC_REG_WRITE_SEQUENCE, 0x02); + outpd(lsilogic->u16IoBase + LSILOGIC_REG_WRITE_SEQUENCE, 0x07); + outpd(lsilogic->u16IoBase + LSILOGIC_REG_WRITE_SEQUENCE, 0x0d); + outpd(lsilogic->u16IoBase + LSILOGIC_REG_HOST_DIAGNOSTIC, LSILOGIC_REG_HOST_DIAGNOSTIC_RESET_ADAPTER); + + IocInitReq.u8WhoInit = LSILOGICWHOINIT_SYSTEM_BIOS; + IocInitReq.u8Function = MPT_MESSAGE_HDR_FUNCTION_IOC_INIT; + IocInitReq.u32HostMfaHighAddr = 0; + IocInitReq.u32SenseBufferHighAddr = 0; + IocInitReq.u8MaxBuses = 1; + IocInitReq.u8MaxDevices = 4; + IocInitReq.u16ReplyFrameSize = sizeof(lsilogic->abReply); + rc = lsilogic_cmd(lsilogic, &IocInitReq, sizeof(IocInitReq), &IocInitReply, sizeof(IocInitReply)); + if (!rc) + { + /* Provide a single reply frame for SCSI I/O errors. */ + outpd(lsilogic->u16IoBase + LSILOGIC_REG_REPLY_QUEUE, lsilogic_addr_to_phys(&lsilogic->abReply)); + return 0; + } + + return 1; +} + +/** + * Init the LsiLogic SCSI driver and detect attached disks. + */ +int lsilogic_scsi_init(void __far *pvHba, uint8_t u8Bus, uint8_t u8DevFn) +{ + lsilogic_t __far *lsilogic = (lsilogic_t __far *)pvHba; + uint32_t u32Bar; + + DBG_LSILOGIC("LsiLogic SCSI HBA at Bus %u DevFn 0x%x (raw 0x%x)\n", u8Bus, u8DevFn); + + u32Bar = pci_read_config_dword(u8Bus, u8DevFn, 0x10); + + DBG_LSILOGIC("BAR at 0x10 : 0x%x\n", u32Bar); + + if ((u32Bar & 0x01) != 0) + { + uint16_t u16IoBase = (u32Bar & 0xfff0); + + /* Enable PCI memory, I/O, bus mastering access in command register. */ + pci_write_config_word(u8Bus, u8DevFn, 4, 0x7); + + DBG_LSILOGIC("I/O base: 0x%x\n", u16IoBase); + lsilogic->u16IoBase = u16IoBase; + return lsilogic_scsi_hba_init(lsilogic); + } + else + DBG_LSILOGIC("BAR is MMIO\n"); + + return 1; +} + 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..e62355d6 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/notes.txt @@ -0,0 +1,211 @@ + + 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. + +- NetWare 6.5 boot CD is a rare user of INT 15h/86h, asking for 1,000,000 + microsecond (1 second) delays. The initial NW 6.5 release boots to Caldera + DOS and does not exhibit this behavior. NetWare 6.5 SP2 and later boots + straight to NetWare and uses the 1-second sleep. + +- 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. + +- Older NetWare IDE disk drivers (IDE.DSK from 1993, likely older as well) + fall into the same category. If FDPT contains logical geometry, NetWare + malfunctions. NetWare 3.x/4.x is unusual in that it boots from a DOS + partition using BIOS, and only later switches to its own disk drivers. + NetWare reportedly understands FDPT cylinder values over 1024, but requires + physical disk geometry in the FDPT (only up to 16 heads). + +- 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, Windows 3.1 POWER.DRV and + OS/2 APM.SYS use 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. + +- Windows 3.1 Standard mode violates the APM specifications and calls into + APM with CPL=3, causing the HLT instruction to fault if used. 386 Enhanced + mode Windows 3.1 calls into APM with CPL=3. + +- 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..61437359 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/orgs.asm @@ -0,0 +1,2128 @@ +; $Id: orgs.asm $ +;; @file +; ??? +; + +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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_SIZE equ 1 ; 1K minimum -- other modules may add to it + +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 +SYS_SUBMODEL_ID equ 1 +else +SYS_MODEL_ID equ 0FBh ; PC/XT +SYS_SUBMODEL_ID equ 0 +endif +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 al, 16h + out CMOS_ADDR, al + in al, CMOS_DATA + mov ah, al + mov al, 15h + out CMOS_ADDR, al + in al, CMOS_DATA + sub ax, EBDA_SIZE + 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 + 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 table entry +fd_entry struc + cyls dw ? ; Cylinders + heads db ? ; Heads + res_1 dw ? + wpcomp dw ? ; Write pre-compensation start cylinder + res_2 db ? + ctrl db ? ; Control byte + res_3 db ? + res_4 db ? + res_5 db ? + lzone dw ? ; Landing zone cylinder + spt db ? ; Sectors per track + res_6 db ? +fd_entry ends + +;; -------------------------------------------------------- +;; Fixed Disk Parameter Table +;; -------------------------------------------------------- + BIOSORG_CHECK 0E401h ; fixed wrt preceding + +rom_fdpt: + fd_entry < 306, 4, 0, 128, 0, 0, 0, 0, 0, 305, 17, 0> ; Type 1, 10 MB + fd_entry < 615, 4, 0, 300, 0, 0, 0, 0, 0, 615, 17, 0> ; Type 2, 20 MB + fd_entry < 615, 6, 0, 300, 0, 0, 0, 0, 0, 615, 17, 0> ; Type 3, 30 MB + fd_entry < 940, 8, 0, 512, 0, 0, 0, 0, 0, 940, 17, 0> ; Type 4, 62 MB + fd_entry < 940, 6, 0, 512, 0, 0, 0, 0, 0, 940, 17, 0> ; Type 5, 46 MB + fd_entry < 615, 4, 0, -1, 0, 0, 0, 0, 0, 615, 17, 0> ; Type 6, 20 MB + fd_entry < 462, 8, 0, 256, 0, 0, 0, 0, 0, 511, 17, 0> ; Type 7, 31 MB + fd_entry < 733, 5, 0, -1, 0, 0, 0, 0, 0, 733, 17, 0> ; Type 8, 30 MB + fd_entry < 900, 15, 0, -1, 0, 8, 0, 0, 0, 901, 17, 0> ; Type 9, 112 MB + fd_entry < 820, 3, 0, -1, 0, 0, 0, 0, 0, 820, 17, 0> ; Type 10, 20 MB + + fd_entry < 855, 5, 0, -1, 0, 0, 0, 0, 0, 855, 17, 0> ; Type 11, 35 MB + fd_entry < 855, 7, 0, -1, 0, 0, 0, 0, 0, 855, 17, 0> ; Type 12, 49 MB + fd_entry < 306, 8, 0, 128, 0, 0, 0, 0, 0, 319, 17, 0> ; Type 13, 20 MB + fd_entry < 733, 7, 0, -1, 0, 0, 0, 0, 0, 733, 17, 0> ; Type 14, 42 MB + fd_entry < 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0> ; Reserved + fd_entry < 612, 4, 0, -1, 0, 0, 0, 0, 0, 633, 17, 0> ; Type 16, 20 MB + fd_entry < 977, 5, 0, 300, 0, 0, 0, 0, 0, 977, 17, 0> ; Type 17, 40 MB + fd_entry < 977, 7, 0, -1, 0, 0, 0, 0, 0, 977, 17, 0> ; Type 18, 56 MB + fd_entry <1024, 7, 0, 512, 0, 0, 0, 0, 0,1023, 17, 0> ; Type 19, 59 MB + fd_entry < 733, 5, 0, 300, 0, 0, 0, 0, 0, 732, 17, 0> ; Type 20, 30 MB + + fd_entry < 733, 7, 0, 300, 0, 0, 0, 0, 0, 732, 17, 0> ; Type 21, 42 MB + fd_entry < 733, 5, 0, 300, 0, 0, 0, 0, 0, 733, 17, 0> ; Type 22, 30 MB + fd_entry < 306, 4, 0, 0, 0, 0, 0, 0, 0, 336, 17, 0> ; Type 23, 10 MB + +;; -------------------------------------------------------- +;; 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 + + ;; calculate EBDA segment + xor ax, ax + mov ds, ax + mov ax, ds:[413h] ; conventional memory size minus EBDA size + mov cx, 64 ; 64 paras per KB + mul cx + ;; store EBDA seg in 40:0E + mov word ptr ds:[40Eh], ax + ;; store EBDA size in the first word of EBDA + mov ds, ax + mov byte ptr ds:[0], EBDA_SIZE + ;; must reset DS to zero again + xor ax, ax + mov ds, ax + 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? + sti +stay_here: + hlt + jmp stay_here + +;; +;; INT 19h - boot service - relocated +;; +int19_relocated: + ;; 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 + +if 0 ; Sample VPD table + +;; IBM style VPD (Vital Product Data) information. Most IBM systems +;; had a VPD table since about 1992, later the same information was +;; also reported through DMI. + +align 16 + db 0AAh, 055h, 'VPD' + db 48 ; VPD size + db 'RESERVE' ; reserved... for what? + db 'INET35WW ' ; BIOS build ID + db '5238NXU' ; system serial number + db 'J1Y3581338D' ; unique ID + db '8643MD0' ; IBM machine type + db 0 ; checksum (to be calculated) +endif + +;; -------------------------------------------------------- +;; 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 ; null terminator + ;; 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..2d8f1c2f --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/parallel.c @@ -0,0 +1,101 @@ +/* $Id: parallel.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + * -------------------------------------------------------------------- + * + * 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..da836da0 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pci32.c @@ -0,0 +1,32 @@ +/* $Id: pci32.c $ */ +/** @file + * 32-bit PCI BIOS wrapper. + */ + +/* + * Copyright (C) 2004-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#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..5250e123 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pcibio32.asm @@ -0,0 +1,108 @@ +; $Id: pcibio32.asm $ +;; @file +; BIOS32 service directory and 32-bit PCI BIOS entry point +; + +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- + + +; 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..00fff6b1 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pcibios.c @@ -0,0 +1,423 @@ +/* $Id: pcibios.c $ */ +/** @file + * PCI BIOS support. + */ + +/* + * Copyright (C) 2004-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#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. When searching + * by class, the ignore_if flag only compares the base and sub-class code, + * ignoring the programming interface code. + * + * 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, int ignore_if) +{ + 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 or even just 2 bytes are compared for class searches. */ + if (search_class) + if (ignore_if) + data >>= 16; + else + 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, 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, 0); + 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..e91cc6b3 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pcibios.inc @@ -0,0 +1,372 @@ +; $Id: pcibios.inc $ +;; @file +; ??? +; + +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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..6c4adf4b --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pciutil.c @@ -0,0 +1,220 @@ +/* $Id: pciutil.c $ */ +/** @file + * Utility routines for calling the PCI BIOS. + */ + +/* + * Copyright (C) 2011-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#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" \ + "shl ecx, 16" \ + "mov cx, dx" \ + "int 0x1a" \ + parm [ax] [bx] [di] [cx dx]; +#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 base and sub-class code, ignoring the programming interface + * 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_class_noif(uint16_t dev_class) +{ +#if VBOX_BIOS_CPU >= 80386 + /* Internal call, not an interrupt service! */ + return pci16_find_device(dev_class, 0 /*index*/, 1 /*search class*/, 1 /*ignore prog if*/); +#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); +} + +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) +{ +#if VBOX_BIOS_CPU >= 80386 + pci_write_cfgd((PCIBIOS_ID << 8) | PCIBIOS_WRITE_CONFIG_DWORD, (bus << 8) | dev_fn, reg, val); +#else + pci_write_cfgw((PCIBIOS_ID << 8) | PCIBIOS_WRITE_CONFIG_WORD, (bus << 8) | dev_fn, reg, val & 0xffff); + pci_write_cfgw((PCIBIOS_ID << 8) | PCIBIOS_WRITE_CONFIG_WORD, (bus << 8) | dev_fn, reg + 2, val >> 16); +#endif +} + diff --git a/src/VBox/Devices/PC/BIOS/pciutil.h b/src/VBox/Devices/PC/BIOS/pciutil.h new file mode 100644 index 00000000..426040d0 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pciutil.h @@ -0,0 +1,48 @@ +/* $Id: pciutil.h $ */ +/** @file + * Utility routines for calling the PCI BIOS. + */ + +/* + * Copyright (C) 2011-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#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); +extern uint16_t pci_find_class_noif(uint16_t dev_class); + +#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..31f92fa9 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pirq.inc @@ -0,0 +1,487 @@ +; $Id: pirq.inc $ +;; @file +; ??? +; + +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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..2613de90 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pmode.inc @@ -0,0 +1,91 @@ +; $Id: pmode.inc $ +;; @file +; Enter and exit a minimal protected-mode environment. +; + +; +; Copyright (C) 2004-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +;; 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..21d54811 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pmsetup.inc @@ -0,0 +1,75 @@ +; $Id: pmsetup.inc $ +;; @file +; Initial system setup which needs to run in protected mode. +; + +; +; Copyright (C) 2004-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +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..d8bb55f9 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/post.c @@ -0,0 +1,218 @@ +/* $Id: post.c $ */ +/** @file + * BIOS POST routines. Used only during initialization. + */ + +/* + * Copyright (C) 2004-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#include <stdint.h> +#include <string.h> +#include "biosint.h" +#include "inlines.h" + +#if DEBUG_POST || 0 +# 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; +} + +/* The ROM init routine might trash register. Give the compiler a heads-up. */ +typedef void __far (rom_init_rtn)(void); +#pragma aux rom_init_rtn modify [ax bx cx dx si di es /*ignored:*/ bp] /*ignored:*/ loadds; + +/* The loadds bit is ignored for rom_init_rtn, the impression from the code + generator is that this is due to using a memory model where DS is fixed. + If we add DS as a modified register, we'll get run into compiler error + E1122 (BAD_REG) because FixedRegs() in cg/intel/386/c/386rgtbl.c returns + HW_DS as part of the fixed register set that cannot be modified. + + The problem of the vga bios trashing DS isn't a biggie, except when + something goes sideways before we can reload it. Setting a I/O port + breakpoint on port 80h and wait a while before resuming execution + (ba i 1 80 "sleep 400 ; g") will usually trigger a keyboard init panic and + showcase the issue. The panic message is garbage because it's read from + segment 0c000h instead of 0f000h. */ +static void restore_ds_as_dgroup(void); +#pragma aux restore_ds_as_dgroup = \ + "mov ax, 0f000h" \ + "mov ds, ax" \ + modify exact [ax]; + + +/* 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)) { + rom_init_rtn *rom_init; + + /* Checksum good, initialize ROM. */ + rom_init = (rom_init_rtn *)&rom->code; + rom_init(); + int_disable(); + restore_ds_as_dgroup(); + /** @todo BP is not restored. */ + 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..c9676419 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/print.c @@ -0,0 +1,306 @@ +/* $Id: print.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + * -------------------------------------------------------------------- + * + * 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..7ea20354 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/ps2mouse.c @@ -0,0 +1,462 @@ +/* $Id: ps2mouse.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + * -------------------------------------------------------------------- + * + * 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..fdf7ed2f --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/scsi.c @@ -0,0 +1,551 @@ +/* $Id: scsi.c $ */ +/** @file + * SCSI host adapter driver to boot from SCSI disks + */ + +/* + * Copyright (C) 2004-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#include <stdint.h> +#include <string.h> +#include "biosint.h" +#include "inlines.h" +#include "pciutil.h" +#include "ebda.h" +#include "scsi.h" + + +#if DEBUG_SCSI +# define DBG_SCSI(...) BX_INFO(__VA_ARGS__) +#else +# define DBG_SCSI(...) +#endif + +#define VBSCSI_MAX_DEVICES 16 /* Maximum number of devices a SCSI device currently supported. */ + +#define VBOX_SCSI_NO_HBA 0xffff + +typedef int (* scsi_hba_init)(void __far *pvHba, uint8_t u8Bus, uint8_t u8DevFn); +typedef int (* scsi_hba_cmd_data_out)(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB, + uint8_t cbCDB, uint8_t __far *buffer, uint32_t length); +typedef int (* scsi_hba_cmd_data_in)(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB, + uint8_t cbCDB, uint8_t __far *buffer, uint32_t length); + +typedef struct +{ + uint16_t idPciVendor; + uint16_t idPciDevice; + scsi_hba_init init; + scsi_hba_cmd_data_out cmd_data_out; + scsi_hba_cmd_data_in cmd_data_in; +} scsi_hba_t; + +/* 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(uint16_t __far *pu16EaxHi) +{ + *pu16EaxHi = eax_hi_rd(); +} + +void inline high_bits_restore(uint16_t u16EaxHi) +{ + eax_hi_wr(u16EaxHi); +} + +/* Pointers to the HBA specific access routines. */ +scsi_hba_t hbaacc[] = +{ + { 0x1000, 0x0030, lsilogic_scsi_init, lsilogic_scsi_cmd_data_out, lsilogic_scsi_cmd_data_in }, /* SPI */ + { 0x1000, 0x0054, lsilogic_scsi_init, lsilogic_scsi_cmd_data_out, lsilogic_scsi_cmd_data_in }, /* SAS */ + { 0x104b, 0x1040, buslogic_scsi_init, buslogic_scsi_cmd_data_out, buslogic_scsi_cmd_data_in }, +#ifdef VBOX_WITH_VIRTIO_SCSI + { 0x1af4, 0x1048, virtio_scsi_init, virtio_scsi_cmd_data_out, virtio_scsi_cmd_data_in } +#endif +}; + +/** + * Allocates 1K of conventional memory. + */ +static uint16_t scsi_hba_mem_alloc(void) +{ + uint16_t base_mem_kb; + uint16_t hba_seg; + + base_mem_kb = read_word(0x00, 0x0413); + + DBG_SCSI("SCSI: %dK of base mem\n", base_mem_kb); + + if (base_mem_kb == 0) + return 0; + + base_mem_kb--; /* Allocate one block. */ + hba_seg = (((uint32_t)base_mem_kb * 1024) >> 4); /* Calculate start segment. */ + + write_word(0x00, 0x0413, base_mem_kb); + + return hba_seg; +} + +/** + * 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 hba_seg; + uint8_t idx_hba; + uint8_t target_id; + uint8_t device_id; + uint16_t eax_hi; + + 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; + + high_bits_save(&eax_hi); + + /* 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; + + + hba_seg = bios_dsk->scsidev[device_id].hba_seg; + idx_hba = bios_dsk->scsidev[device_id].idx_hba; + 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 = hbaacc[idx_hba].cmd_data_in(hba_seg :> 0, 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); + high_bits_restore(eax_hi); + + 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 hba_seg; + uint8_t idx_hba; + uint8_t target_id; + uint8_t device_id; + uint16_t eax_hi; + + 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; + + high_bits_save(&eax_hi); + + /* 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; + + hba_seg = bios_dsk->scsidev[device_id].hba_seg; + idx_hba = bios_dsk->scsidev[device_id].idx_hba; + 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 = hbaacc[idx_hba].cmd_data_out(hba_seg :> 0, 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); + high_bits_restore(eax_hi); + + 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 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, + uint32_t length, uint8_t inout, char __far *buffer) +{ + bio_dsk_t __far *bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk; + uint8_t rc; + uint8_t target_id; + uint16_t hba_seg; + uint8_t idx_hba; + uint16_t eax_hi; + + /* 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, device %d, target %d\n", __func__, + length, 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); + + high_bits_save(&eax_hi); + hba_seg = bios_dsk->scsidev[device_id].hba_seg; + idx_hba = bios_dsk->scsidev[device_id].idx_hba; + target_id = bios_dsk->scsidev[device_id].target_id; + + 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; + + DBG_SCSI("%s: reading %u bytes, device %d, target %d\n", __func__, + length, device_id, bios_dsk->scsidev[device_id].target_id); + + rc = hbaacc[idx_hba].cmd_data_in(hba_seg :> 0, target_id, (void __far *)cmdbuf, cmdlen, + bios_dsk->drqp.buffer, length); + if (!rc) + bios_dsk->drqp.trsfbytes = length; + + DBG_SCSI("%s: transferred %u bytes\n", __func__, length); + high_bits_restore(eax_hi); + + return rc; +} + +/** + * Enumerate attached devices. + * + * @returns nothing. + * @param hba_seg Segement of the HBA controller block. + * @param idx_hba The HBA driver index used for accessing the enumerated devices. + */ +static void scsi_enumerate_attached_devices(uint16_t hba_seg, uint8_t idx_hba) +{ + 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 = hbaacc[idx_hba].cmd_data_in(hba_seg :> 0, i, aCDB, 6, buffer, 5); + if (rc != 0) + { + DBG_SCSI("%s: SCSI_INQUIRY failed\n", __func__); /* Not a fatal error if the device doesn't exist. */ + continue; + } + + 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 = hbaacc[idx_hba].cmd_data_in(hba_seg :> 0, 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 = get_cmos_word(cmos_base /*, cmos_base + 1*/); + 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].hba_seg = hba_seg; + bios_dsk->scsidev[devcount_scsi].idx_hba = idx_hba; + 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].hba_seg = hba_seg; + bios_dsk->scsidev[devcount_scsi].idx_hba = idx_hba; + 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; + } +} + +/** + * Init the SCSI driver and detect attached disks. + */ +void BIOSCALL scsi_init(void) +{ + int i; + bio_dsk_t __far *bios_dsk; + + bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk; + bios_dsk->scsi_devcount = 0; + + /* Walk the supported drivers and try to detect the HBA. */ + for (i = 0; i < sizeof(hbaacc)/sizeof(hbaacc[0]); i++) + { + uint16_t busdevfn = pci_find_device(hbaacc[i].idPciVendor, hbaacc[i].idPciDevice); + if (busdevfn != VBOX_SCSI_NO_HBA) + { + int rc; + uint8_t u8Bus, u8DevFn; + uint16_t hba_seg = scsi_hba_mem_alloc(); + if (hba_seg == 0) /* No point in trying the rest if we are out of memory. */ + break; + + u8Bus = (busdevfn & 0xff00) >> 8; + u8DevFn = busdevfn & 0x00ff; + + DBG_SCSI("SCSI HBA at Bus %u DevFn 0x%x (raw 0x%x)\n", u8Bus, u8DevFn, busdevfn); + rc = hbaacc[i].init(hba_seg :> 0, u8Bus, u8DevFn); + if (!rc) + scsi_enumerate_attached_devices(hba_seg, i); + /** @todo Free memory on error. */ + } + } +} diff --git a/src/VBox/Devices/PC/BIOS/scsi.h b/src/VBox/Devices/PC/BIOS/scsi.h new file mode 100644 index 00000000..74d60e4b --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/scsi.h @@ -0,0 +1,88 @@ +/* $Id: scsi.h $ */ +/** @file + * PC BIOS - SCSI definitions. + */ + +/* + * Copyright (C) 2019-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#ifndef VBOX_INCLUDED_SRC_PC_BIOS_scsi_h +#define VBOX_INCLUDED_SRC_PC_BIOS_scsi_h +#ifndef RT_WITHOUT_PRAGMA_ONCE +# pragma once +#endif + +/* 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 + +#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); + +extern int lsilogic_scsi_init(void __far *pvHba, uint8_t u8Bus, uint8_t u8DevFn); +extern int lsilogic_scsi_cmd_data_out(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB, + uint8_t cbCDB, uint8_t __far *buffer, uint32_t length); +extern int lsilogic_scsi_cmd_data_in(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB, + uint8_t cbCDB, uint8_t __far *buffer, uint32_t length); + +extern int buslogic_scsi_init(void __far *pvHba, uint8_t u8Bus, uint8_t u8DevFn); +extern int buslogic_scsi_cmd_data_out(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB, + uint8_t cbCDB, uint8_t __far *buffer, uint32_t length); +extern int buslogic_scsi_cmd_data_in(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB, + uint8_t cbCDB, uint8_t __far *buffer, uint32_t length); + +extern int virtio_scsi_init(void __far *pvHba, uint8_t u8Bus, uint8_t u8DevFn); +extern int virtio_scsi_cmd_data_out(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB, + uint8_t cbCDB, uint8_t __far *buffer, uint32_t length); +extern int virtio_scsi_cmd_data_in(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB, + uint8_t cbCDB, uint8_t __far *buffer, uint32_t length); + +#endif /* !VBOX_INCLUDED_SRC_PC_BIOS_scsi_h */ + diff --git a/src/VBox/Devices/PC/BIOS/serial.c b/src/VBox/Devices/PC/BIOS/serial.c new file mode 100644 index 00000000..c1259d5c --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/serial.c @@ -0,0 +1,138 @@ +/* $Id: serial.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + * -------------------------------------------------------------------- + * + * 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..24fd21cd --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/smidmi.inc @@ -0,0 +1,84 @@ +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; -------------------------------------------------------------------- +; +; 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 + +align 16 + ;; + ;; NOTE! These are placeholders, also required for correct BIOS + ;; checksum calculation. Overwritten by DevPcBios. + ;; + + ;; 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..f2404af2 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/system.c @@ -0,0 +1,897 @@ +/* $Id: system.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + * -------------------------------------------------------------------- + * + * 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 <iprt/cdefs.h> +#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; + +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( ); + // Unmask IRQ8 so INT70 will get through. + irqDisable = inb( 0xA1 ); + outb( 0xA1, irqDisable & 0xFE ); + bRegister = inb_cmos( 0xB ); + // Turn on the Periodic Interrupt timer + outb_cmos( 0xB, bRegister | 0x40 ); + } else { + // Interval already set. + BX_DEBUG_INT15("int15: Func 83h, failed, already waiting.\n" ); + SET_CF(); // AH is left unmodified + } + } 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: + // 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, 0x40 ); // Byte location, segment + write_word( 0x40, 0x9A, 0xA0 ); // Byte location, offset + write_word( 0x40, 0x9C, DX ); // Low word, delay + write_word( 0x40, 0x9E, CX ); // High word, delay. + // Unmask IRQ8 so INT70 will get through. + irqDisable = inb( 0xA1 ); + outb( 0xA1, irqDisable & 0xFE ); + bRegister = inb_cmos( 0xB ); + // Turn on the Periodic Interrupt timer + outb_cmos( 0xB, bRegister | 0x40 ); + // Now wait until timer interrupt says wait is done. + int_enable(); + do { + halt(); + bRegister = read_byte( 0x40, 0xA0 ); + } + while( !(bRegister & 0x80) ); + write_byte( 0x40, 0xA0, 0 ); // Deactivate wait. + CLEAR_CF( ); + } else { + // Interval already set. + BX_DEBUG_INT15("int15: Func 86h, failed, already waiting.\n" ); + SET_CF(); // AH is left unmodified + } + break; + + case 0x88: + // Get the amount of extended memory (above 1M) +#if VBOX_BIOS_CPU >= 80286 + AX = get_cmos_word(0x30 /*, 0x31*/); + +#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; + +static void set_e820_range_len(uint16_t reg_ES, uint16_t reg_DI, uint32_t start, uint32_t len, uint8_t type) +{ + mem_range_t __far *fpRange = reg_ES :> (mem_range_t *)reg_DI; + fpRange->start = start; + fpRange->len = len; + fpRange->type = type; + fpRange->xlen = 0; + fpRange->xstart = 0; +} + +#define set_e820_range_end(reg_ES, reg_DI, start, end, type) set_e820_range_len(reg_ES, reg_DI, start, end - start, type) + +static void set_e820_range_above_4g(uint16_t reg_ES, uint16_t reg_DI, uint16_t c64k_above_4G_low, uint16_t c64k_above_4G_high) +{ + mem_range_t __far *fpRange = reg_ES :> (mem_range_t *)reg_DI; + fpRange->start = 0; /* Starts at 4G, so low start address dword is zero */ + fpRange->xstart = 1; /* And the high start dword is 1. */ + fpRange->len = (uint32_t)c64k_above_4G_low << 16; + fpRange->xlen = c64k_above_4G_high; + fpRange->type = 1; /* type is usable */ +} + +void BIOSCALL int15_function32(sys32_regs_t r) +{ + 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) { + uint32_t extended_memory_size; // 64bits long + uint16_t c64k_above_4G_low; + uint16_t c64k_above_4G_high; +#ifdef BIOS_WITH_MCFG_E820 + uint32_t mcfgStart, mcfgSize; +#endif + + /* Go for the amount of memory above 16MB first. */ + extended_memory_size = get_cmos_word(0x34 /*, 0x35*/); + if (extended_memory_size > 0) + { + extended_memory_size += _16M / _64K; + extended_memory_size <<= 16; + } + else + { + /* No memory above 16MB, query memory above 1MB ASSUMING we have at least 1MB. */ + extended_memory_size = get_cmos_word(0x30 /*, 0x31*/); + extended_memory_size += _1M / _1K; + extended_memory_size *= _1K; + } + + /* This is the amount of memory above 4GB measured in 64KB units. + Note! 0x65 can be used when we need to go beyond 255 TiB */ + c64k_above_4G_low = get_cmos_word(0x61 /*, 0x62*/); + c64k_above_4G_high = get_cmos_word(0x63 /*, 0x64*/); + +#ifdef BIOS_WITH_MCFG_E820 /** @todo Actually implement the mcfg reporting. */ + mcfgStart = 0; + mcfgSize = 0; +#endif + switch (BX) + { + case 0: + set_e820_range_end(ES, DI, 0x0000000L, 0x0009fc00L, 1); + EBX = 1; + break; + case 1: + set_e820_range_end(ES, DI, 0x0009fc00L, 0x000a0000L, 2); + EBX = 2; + break; + case 2: + /* 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_end(ES, DI, 0x000f0000L, 0x00100000L, 2); + EBX = 3; + break; + case 3: + set_e820_range_end(ES, DI, 0x00100000L, extended_memory_size - ACPI_DATA_SIZE, 1); + EBX = 4; + break; + case 4: + set_e820_range_len(ES, DI, extended_memory_size - ACPI_DATA_SIZE, ACPI_DATA_SIZE, 3); // ACPI RAM + EBX = 5; + break; + case 5: + set_e820_range_len(ES, DI, 0xfec00000, 0x1000, 2); // I/O APIC + EBX = 6; + break; + case 6: + set_e820_range_len(ES, DI, 0xfee00000, 0x1000, 2); // Local APIC + EBX = 7; + break; + case 7: + /* 256KB BIOS area at the end of 4 GB */ + set_e820_range_len(ES, DI, 0xfffc0000L, 0x40000, 2); +#ifdef BIOS_WITH_MCFG_E820 + if (mcfgStart != 0) + EBX = 8; + else +#endif + if (c64k_above_4G_low || c64k_above_4G_high) + EBX = 9; + else + EBX = 0; + break; +#ifdef BIOS_WITH_MCFG_E820 + case 8: + /* PCI MMIO config space (MCFG) */ + set_e820_range_len(ES, DI, mcfgStart, mcfgSize, 2); + if (c64k_above_4G_low || c64k_above_4G_high) + EBX = 9; + else + EBX = 0; + break; +#endif + case 9: + /* Mapping of memory above 4 GB if present. */ + if (c64k_above_4G_low || c64k_above_4G_high) + { + set_e820_range_above_4g(ES, DI, c64k_above_4G_low, c64k_above_4G_high); + EBX = 0; + break; + } + /* fall thru */ + 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 = get_cmos_word(0x30 /*, 0x31*/); + + // limit to 15M + if(CX > 0x3c00) + CX = 0x3c00; + + // Get the amount of extended memory above 16M in 64k blocks + DX = get_cmos_word(0x34 /*, 0x35*/); + + // 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..3e902612 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/timepci.c @@ -0,0 +1,334 @@ +/* + * Copyright (C) 2006-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + * -------------------------------------------------------------------- + * + * 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 or AH=86) 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 off 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..6afadd4e --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/vbdmismi.inc @@ -0,0 +1,37 @@ +; $Id: vbdmismi.inc $ +;; @file +; DMI and SMBIOS definitions for VBox. +; + +; +; Copyright (C) 2006-2022 Oracle and/or its affiliates. +; +; This file is part of VirtualBox base platform packages, as +; available from https://www.virtualbox.org. +; +; This program is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License +; as published by the Free Software Foundation, in version 3 of the +; License. +; +; This program 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 +; General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, see <https://www.gnu.org/licenses>. +; +; SPDX-License-Identifier: GPL-3.0-only +; + +;; 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..69ed8de8 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/vds.c @@ -0,0 +1,128 @@ +/* $Id: vds.c $ */ +/** @file + * Utility routines for calling the Virtual DMA Services. + */ + +/* + * Copyright (C) 2011-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + + +#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..7b117168 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/vds.h @@ -0,0 +1,132 @@ +/* $Id: vds.h $ */ +/** @file + * Utility routines for calling the Virtual DMA Services. + */ + +/* + * Copyright (C) 2006-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#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 */ + diff --git a/src/VBox/Devices/PC/BIOS/virtio.c b/src/VBox/Devices/PC/BIOS/virtio.c new file mode 100644 index 00000000..681d8d9d --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/virtio.c @@ -0,0 +1,701 @@ +/* $Id: virtio.c $ */ +/** @file + * VirtIO-SCSI host adapter driver to boot from disks. + */ + +/* + * Copyright (C) 2019-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#include <stdint.h> +#include <string.h> +#include "biosint.h" +#include "ebda.h" +#include "inlines.h" +#include "pciutil.h" +#include "vds.h" +#include "scsi.h" + +//#define DEBUG_VIRTIO 1 +#if DEBUG_VIRTIO +# define DBG_VIRTIO(...) BX_INFO(__VA_ARGS__) +#else +# define DBG_VIRTIO(...) +#endif + +/* The maximum CDB size. */ +#define VIRTIO_SCSI_CDB_SZ 16 +/** Maximum sense data to return. */ +#define VIRTIO_SCSI_SENSE_SZ 32 + +#define VIRTIO_SCSI_RING_ELEM 3 + +/** + * VirtIO queue descriptor. + */ +typedef struct +{ + /** 64bit guest physical address of the buffer, split into high and low part because we work in real mode. */ + uint32_t GCPhysBufLow; + uint32_t GCPhysBufHigh; + /** Length of the buffer in bytes. */ + uint32_t cbBuf; + /** Flags for the buffer. */ + uint16_t fFlags; + /** Next field where the buffer is continued if _NEXT flag is set. */ + uint16_t idxNext; +} virtio_q_desc_t; + +#define VIRTIO_Q_DESC_F_NEXT 0x1 +#define VIRTIO_Q_DESC_F_WRITE 0x2 +#define VIRTIO_Q_DESC_F_INDIRECT 0x4 + +/** + * VirtIO available ring. + */ +typedef struct +{ + /** Flags. */ + volatile uint16_t fFlags; + /** Next index to write an available buffer by the driver. */ + volatile uint16_t idxNextFree; + /** The ring - we only provide one entry. */ + volatile uint16_t au16Ring[VIRTIO_SCSI_RING_ELEM]; + /** Used event index. */ + volatile uint16_t u16EvtUsed; +} virtio_q_avail_t; + +/** + * VirtIO queue used element. + */ +typedef struct +{ + /** Index of the start of the descriptor chain. */ + uint32_t u32Id; + /** Number of bytes used in the descriptor chain. */ + uint32_t cbUsed; +} virtio_q_used_elem_t; + +/** + * VirtIo used ring. + */ +typedef struct +{ + /** Flags. */ + volatile uint16_t fFlags; + /** Index where the next entry would be written by the device. */ + volatile uint16_t idxNextUsed; + /** The used ring. */ + virtio_q_used_elem_t aRing[VIRTIO_SCSI_RING_ELEM]; +} virtio_q_used_t; + +/** + * VirtIO queue structure we are using, needs to be aligned on a 16byte boundary. + */ +typedef struct +{ + /** The descriptor table, using 3 max. */ + virtio_q_desc_t aDescTbl[3]; + /** Available ring. */ + virtio_q_avail_t AvailRing; + /** Used ring. */ + virtio_q_used_t UsedRing; + /** The notification offset for the queue. */ + uint32_t offNotify; +} virtio_q_t; + +/** + * VirtIO SCSI request structure passed in the queue. + */ +typedef struct +{ + /** The LUN to address. */ + uint8_t au8Lun[8]; + /** Request ID - split into low and high part. */ + uint32_t u32IdLow; + uint32_t u32IdHigh; + /** Task attributes. */ + uint8_t u8TaskAttr; + /** Priority. */ + uint8_t u8Prio; + /** CRN value, usually 0. */ + uint8_t u8Crn; + /** The CDB. */ + uint8_t abCdb[VIRTIO_SCSI_CDB_SZ]; +} virtio_scsi_req_hdr_t; + +/** + * VirtIO SCSI status structure filled by the device. + */ +typedef struct +{ + /** Returned sense length. */ + uint32_t cbSense; + /** Residual amount of bytes left. */ + uint32_t cbResidual; + /** Status qualifier. */ + uint16_t u16StatusQual; + /** Status code. */ + uint8_t u8Status; + /** Response code. */ + uint8_t u8Response; + /** Sense data. */ + uint8_t abSense[VIRTIO_SCSI_SENSE_SZ]; +} virtio_scsi_req_sts_t; + +/** + * VirtIO config for the different data structures. + */ +typedef struct +{ + /** BAR where to find it. */ + uint8_t u8Bar; + /** Padding. */ + uint8_t abPad[3]; + /** Offset within the bar. */ + uint32_t u32Offset; + /** Length of the structure in bytes. */ + uint32_t u32Length; +} virtio_bar_cfg_t; + +/** + * VirtIO PCI capability structure. + */ +typedef struct +{ + /** Capability typem should always be PCI_CAP_ID_VNDR*/ + uint8_t u8PciCapId; + /** Offset where to find the next capability or 0 if last capability. */ + uint8_t u8PciCapNext; + /** Size of the capability in bytes. */ + uint8_t u8PciCapLen; + /** VirtIO capability type. */ + uint8_t u8VirtIoCfgType; + /** BAR where to find it. */ + uint8_t u8Bar; + /** Padding. */ + uint8_t abPad[3]; + /** Offset within the bar. */ + uint32_t u32Offset; + /** Length of the structure in bytes. */ + uint32_t u32Length; +} virtio_pci_cap_t; + +/** + * VirtIO-SCSI controller data. + */ +typedef struct +{ + /** The queue used - must be first for alignment reasons. */ + virtio_q_t Queue; + /** The BAR configs read from the PCI configuration space, see VIRTIO_PCI_CAP_*_CFG, + * only use 4 because VIRTIO_PCI_CAP_PCI_CFG is not part of this. */ + virtio_bar_cfg_t aBarCfgs[4]; + /** The start offset in the PCI configuration space where to find the VIRTIO_PCI_CAP_PCI_CFG + * capability for the alternate access method to the registers. */ + uint8_t u8PciCfgOff; + /** The notification offset multiplier. */ + uint32_t u32NotifyOffMult; + /** PCI bus where the device is located. */ + uint8_t u8Bus; + /** Device/Function number. */ + uint8_t u8DevFn; + /** The current executed command structure. */ + virtio_scsi_req_hdr_t ScsiReqHdr; + virtio_scsi_req_sts_t ScsiReqSts; +} virtio_t; + +/* The VirtIO specific data must fit into 1KB (statically allocated). */ +ct_assert(sizeof(virtio_t) <= 1024); + +/** PCI configuration fields. */ +#define PCI_CONFIG_CAP 0x34 + +#define PCI_CAP_ID_VNDR 0x09 + +#define VBOX_VIRTIO_NIL_CFG 0xff + +#define VIRTIO_PCI_CAP_COMMON_CFG 0x01 +#define VIRTIO_PCI_CAP_NOTIFY_CFG 0x02 +#define VIRTIO_PCI_CAP_ISR_CFG 0x03 +#define VIRTIO_PCI_CAP_DEVICE_CFG 0x04 +#define VIRTIO_PCI_CAP_PCI_CFG 0x05 + +#define RT_BIT_32(bit) ((uint32_t)(1L << (bit))) + +#define VIRTIO_COMMON_REG_DEV_FEAT_SLCT 0x00 +#define VIRTIO_COMMON_REG_DEV_FEAT 0x04 +# define VIRTIO_CMN_REG_DEV_FEAT_SCSI_INOUT 0x01 +#define VIRTIO_COMMON_REG_DRV_FEAT_SLCT 0x08 +#define VIRTIO_COMMON_REG_DRV_FEAT 0x0c +#define VIRTIO_COMMON_REG_MSIX_CFG 0x10 +#define VIRTIO_COMMON_REG_NUM_QUEUES 0x12 +#define VIRTIO_COMMON_REG_DEV_STS 0x14 +# define VIRTIO_CMN_REG_DEV_STS_F_RST 0x00 +# define VIRTIO_CMN_REG_DEV_STS_F_ACK 0x01 +# define VIRTIO_CMN_REG_DEV_STS_F_DRV 0x02 +# define VIRTIO_CMN_REG_DEV_STS_F_DRV_OK 0x04 +# define VIRTIO_CMN_REG_DEV_STS_F_FEAT_OK 0x08 +# define VIRTIO_CMN_REG_DEV_STS_F_DEV_RST 0x40 +# define VIRTIO_CMN_REG_DEV_STS_F_FAILED 0x80 +#define VIRTIO_COMMON_REG_CFG_GEN 0x15 + +#define VIRTIO_COMMON_REG_Q_SELECT 0x16 +#define VIRTIO_COMMON_REG_Q_SIZE 0x18 +#define VIRTIO_COMMON_REG_Q_MSIX_VEC 0x1a +#define VIRTIO_COMMON_REG_Q_ENABLE 0x1c +#define VIRTIO_COMMON_REG_Q_NOTIFY_OFF 0x1e +#define VIRTIO_COMMON_REG_Q_DESC 0x20 +#define VIRTIO_COMMON_REG_Q_DRIVER 0x28 +#define VIRTIO_COMMON_REG_Q_DEVICE 0x30 + +#define VIRTIO_DEV_CFG_REG_Q_NUM 0x00 +#define VIRTIO_DEV_CFG_REG_SEG_MAX 0x04 +#define VIRTIO_DEV_CFG_REG_SECT_MAX 0x08 +#define VIRTIO_DEV_CFG_REG_CMD_PER_LUN 0x0c +#define VIRTIO_DEV_CFG_REG_EVT_INFO_SZ 0x10 +#define VIRTIO_DEV_CFG_REG_SENSE_SZ 0x14 +#define VIRTIO_DEV_CFG_REG_CDB_SZ 0x18 +#define VIRTIO_DEV_CFG_REG_MAX_CHANNEL 0x1c +#define VIRTIO_DEV_CFG_REG_MAX_TGT 0x1e +#define VIRTIO_DEV_CFG_REG_MAX_LUN 0x20 + +#define VIRTIO_SCSI_Q_CONTROL 0x00 +#define VIRTIO_SCSI_Q_EVENT 0x01 +#define VIRTIO_SCSI_Q_REQUEST 0x02 + +#define VIRTIO_SCSI_STS_RESPONSE_OK 0x00 + +static void virtio_reg_set_bar_offset_length(virtio_t __far *virtio, uint8_t u8Bar, uint32_t offReg, uint32_t cb) +{ + pci_write_config_byte(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + 4, u8Bar); + pci_write_config_dword(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + 8, offReg); + pci_write_config_dword(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + 12, cb); +} + +static void virtio_reg_common_access_prepare(virtio_t __far *virtio, uint16_t offReg, uint32_t cbAcc) +{ + virtio_reg_set_bar_offset_length(virtio, + virtio->aBarCfgs[VIRTIO_PCI_CAP_COMMON_CFG - 1].u8Bar, + virtio->aBarCfgs[VIRTIO_PCI_CAP_COMMON_CFG - 1].u32Offset + offReg, + cbAcc); +} + +static void virtio_reg_dev_access_prepare(virtio_t __far *virtio, uint16_t offReg, uint32_t cbAcc) +{ + virtio_reg_set_bar_offset_length(virtio, + virtio->aBarCfgs[VIRTIO_PCI_CAP_DEVICE_CFG - 1].u8Bar, + virtio->aBarCfgs[VIRTIO_PCI_CAP_DEVICE_CFG - 1].u32Offset + offReg, + cbAcc); +} + +static void virtio_reg_notify_access_prepare(virtio_t __far *virtio, uint16_t offReg, uint32_t cbAcc) +{ + virtio_reg_set_bar_offset_length(virtio, + virtio->aBarCfgs[VIRTIO_PCI_CAP_NOTIFY_CFG - 1].u8Bar, + virtio->aBarCfgs[VIRTIO_PCI_CAP_NOTIFY_CFG - 1].u32Offset + offReg, + cbAcc); +} + +static void virtio_reg_isr_prepare(virtio_t __far *virtio, uint32_t cbAcc) +{ + virtio_reg_set_bar_offset_length(virtio, + virtio->aBarCfgs[VIRTIO_PCI_CAP_ISR_CFG - 1].u8Bar, + virtio->aBarCfgs[VIRTIO_PCI_CAP_ISR_CFG - 1].u32Offset, + cbAcc); +} + +static uint8_t virtio_reg_common_read_u8(virtio_t __far *virtio, uint16_t offReg) +{ + virtio_reg_common_access_prepare(virtio, offReg, sizeof(uint8_t)); + return pci_read_config_byte(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + sizeof(virtio_pci_cap_t)); +} + +static void virtio_reg_common_write_u8(virtio_t __far *virtio, uint16_t offReg, uint8_t u8Val) +{ + virtio_reg_common_access_prepare(virtio, offReg, sizeof(uint8_t)); + pci_write_config_byte(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + sizeof(virtio_pci_cap_t), u8Val); +} + +static uint16_t virtio_reg_common_read_u16(virtio_t __far *virtio, uint16_t offReg) +{ + virtio_reg_common_access_prepare(virtio, offReg, sizeof(uint16_t)); + return pci_read_config_word(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + sizeof(virtio_pci_cap_t)); +} + +static void virtio_reg_common_write_u16(virtio_t __far *virtio, uint16_t offReg, uint16_t u16Val) +{ + virtio_reg_common_access_prepare(virtio, offReg, sizeof(uint16_t)); + pci_write_config_word(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + sizeof(virtio_pci_cap_t), u16Val); +} + +static void virtio_reg_common_write_u32(virtio_t __far *virtio, uint16_t offReg, uint32_t u32Val) +{ + virtio_reg_common_access_prepare(virtio, offReg, sizeof(uint32_t)); + pci_write_config_dword(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + sizeof(virtio_pci_cap_t), u32Val); +} + +static uint32_t virtio_reg_dev_cfg_read_u32(virtio_t __far *virtio, uint16_t offReg) +{ + virtio_reg_dev_access_prepare(virtio, offReg, sizeof(uint32_t)); + return pci_read_config_dword(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + sizeof(virtio_pci_cap_t)); +} + +static void virtio_reg_dev_cfg_write_u32(virtio_t __far *virtio, uint16_t offReg, uint32_t u32Val) +{ + virtio_reg_dev_access_prepare(virtio, offReg, sizeof(uint32_t)); + pci_write_config_dword(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + sizeof(virtio_pci_cap_t), u32Val); +} + +static void virtio_reg_notify_write_u16(virtio_t __far *virtio, uint16_t offReg, uint16_t u16Val) +{ + virtio_reg_notify_access_prepare(virtio, offReg, sizeof(uint16_t)); + pci_write_config_word(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + sizeof(virtio_pci_cap_t), u16Val); +} + +static uint8_t virtio_reg_isr_read_u8(virtio_t __far *virtio) +{ + virtio_reg_isr_prepare(virtio, sizeof(uint8_t)); + return pci_read_config_byte(virtio->u8Bus, virtio->u8DevFn, virtio->u8PciCfgOff + sizeof(virtio_pci_cap_t)); +} + +/** + * Converts a segment:offset pair into a 32bit physical address. + */ +static uint32_t virtio_addr_to_phys(void __far *ptr) +{ + return ((uint32_t)FP_SEG(ptr) << 4) + FP_OFF(ptr); +} + +int virtio_scsi_cmd_data_out(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB, + uint8_t cbCDB, uint8_t __far *buffer, uint32_t length) +{ + virtio_t __far *virtio = (virtio_t __far *)pvHba; + uint16_t idxUsedOld = virtio->Queue.UsedRing.idxNextUsed; + + _fmemset(&virtio->ScsiReqHdr, 0, sizeof(virtio->ScsiReqHdr)); + _fmemset(&virtio->ScsiReqSts, 0, sizeof(virtio->ScsiReqSts)); + + virtio->ScsiReqHdr.au8Lun[0] = 0x1; + virtio->ScsiReqHdr.au8Lun[1] = idTgt; + virtio->ScsiReqHdr.au8Lun[2] = 0; + virtio->ScsiReqHdr.au8Lun[3] = 0; + _fmemcpy(&virtio->ScsiReqHdr.abCdb[0], aCDB, cbCDB); + + /* Fill in the descriptors. */ + virtio->Queue.aDescTbl[0].GCPhysBufLow = virtio_addr_to_phys(&virtio->ScsiReqHdr); + virtio->Queue.aDescTbl[0].GCPhysBufHigh = 0; + virtio->Queue.aDescTbl[0].cbBuf = sizeof(virtio->ScsiReqHdr); + virtio->Queue.aDescTbl[0].fFlags = VIRTIO_Q_DESC_F_NEXT; + virtio->Queue.aDescTbl[0].idxNext = 1; + + virtio->Queue.aDescTbl[1].GCPhysBufLow = virtio_addr_to_phys(buffer); + virtio->Queue.aDescTbl[1].GCPhysBufHigh = 0; + virtio->Queue.aDescTbl[1].cbBuf = length; + virtio->Queue.aDescTbl[1].fFlags = VIRTIO_Q_DESC_F_NEXT; + virtio->Queue.aDescTbl[1].idxNext = 2; + + virtio->Queue.aDescTbl[2].GCPhysBufLow = virtio_addr_to_phys(&virtio->ScsiReqSts); + virtio->Queue.aDescTbl[2].GCPhysBufHigh = 0; + virtio->Queue.aDescTbl[2].cbBuf = sizeof(virtio->ScsiReqSts); + virtio->Queue.aDescTbl[2].fFlags = VIRTIO_Q_DESC_F_WRITE; /* End of chain. */ + virtio->Queue.aDescTbl[2].idxNext = 0; + + /* Put it into the queue. */ + virtio->Queue.AvailRing.au16Ring[virtio->Queue.AvailRing.idxNextFree % VIRTIO_SCSI_RING_ELEM] = 0; + virtio->Queue.AvailRing.idxNextFree++; + + /* Notify the device about the new command. */ + DBG_VIRTIO("VirtIO: Submitting new request, Queue.offNotify=0x%x\n", virtio->Queue.offNotify); + virtio_reg_notify_write_u16(virtio, virtio->Queue.offNotify, VIRTIO_SCSI_Q_REQUEST); + + /* Wait for it to complete. */ + while (idxUsedOld == virtio->Queue.UsedRing.idxNextUsed); + + DBG_VIRTIO("VirtIO: Request complete u8Response=%u\n", virtio->ScsiReqSts.u8Response); + + /* Read ISR register to de-assert the interrupt, don't need to do anything with it. */ + virtio_reg_isr_read_u8(virtio); + + if (virtio->ScsiReqSts.u8Response != VIRTIO_SCSI_STS_RESPONSE_OK) + return 4; + + return 0; +} + +int virtio_scsi_cmd_data_in(void __far *pvHba, uint8_t idTgt, uint8_t __far *aCDB, + uint8_t cbCDB, uint8_t __far *buffer, uint32_t length) +{ + virtio_t __far *virtio = (virtio_t __far *)pvHba; + uint16_t idxUsedOld = virtio->Queue.UsedRing.idxNextUsed; + + _fmemset(&virtio->ScsiReqHdr, 0, sizeof(virtio->ScsiReqHdr)); + _fmemset(&virtio->ScsiReqSts, 0, sizeof(virtio->ScsiReqSts)); + + virtio->ScsiReqHdr.au8Lun[0] = 0x1; + virtio->ScsiReqHdr.au8Lun[1] = idTgt; + virtio->ScsiReqHdr.au8Lun[2] = 0; + virtio->ScsiReqHdr.au8Lun[3] = 0; + _fmemcpy(&virtio->ScsiReqHdr.abCdb[0], aCDB, cbCDB); + + /* Fill in the descriptors. */ + virtio->Queue.aDescTbl[0].GCPhysBufLow = virtio_addr_to_phys(&virtio->ScsiReqHdr); + virtio->Queue.aDescTbl[0].GCPhysBufHigh = 0; + virtio->Queue.aDescTbl[0].cbBuf = sizeof(virtio->ScsiReqHdr); + virtio->Queue.aDescTbl[0].fFlags = VIRTIO_Q_DESC_F_NEXT; + virtio->Queue.aDescTbl[0].idxNext = 1; + + /* No data out buffer, the status comes right after this in the next descriptor. */ + virtio->Queue.aDescTbl[1].GCPhysBufLow = virtio_addr_to_phys(&virtio->ScsiReqSts); + virtio->Queue.aDescTbl[1].GCPhysBufHigh = 0; + virtio->Queue.aDescTbl[1].cbBuf = sizeof(virtio->ScsiReqSts); + virtio->Queue.aDescTbl[1].fFlags = VIRTIO_Q_DESC_F_WRITE | VIRTIO_Q_DESC_F_NEXT; + virtio->Queue.aDescTbl[1].idxNext = 2; + + virtio->Queue.aDescTbl[2].GCPhysBufLow = virtio_addr_to_phys(buffer); + virtio->Queue.aDescTbl[2].GCPhysBufHigh = 0; + virtio->Queue.aDescTbl[2].cbBuf = length; + virtio->Queue.aDescTbl[2].fFlags = VIRTIO_Q_DESC_F_WRITE; /* End of chain. */ + virtio->Queue.aDescTbl[2].idxNext = 0; + + /* Put it into the queue, the index is supposed to be free-running and clipped to the ring size + * internally. The free running index is what the driver sees. */ + virtio->Queue.AvailRing.au16Ring[virtio->Queue.AvailRing.idxNextFree % VIRTIO_SCSI_RING_ELEM] = 0; + virtio->Queue.AvailRing.idxNextFree++; + + /* Notify the device about the new command. */ + DBG_VIRTIO("VirtIO: Submitting new request, Queue.offNotify=0x%x\n", virtio->Queue.offNotify); + virtio_reg_notify_write_u16(virtio, virtio->Queue.offNotify, VIRTIO_SCSI_Q_REQUEST); + + /* Wait for it to complete. */ + while (idxUsedOld == virtio->Queue.UsedRing.idxNextUsed); + + DBG_VIRTIO("VirtIO: Request complete u8Response=%u\n", virtio->ScsiReqSts.u8Response); + + /* Read ISR register to de-assert the interrupt, don't need to do anything with it. */ + virtio_reg_isr_read_u8(virtio); + + if (virtio->ScsiReqSts.u8Response != VIRTIO_SCSI_STS_RESPONSE_OK) + return 4; + + return 0; +} + +/** + * Initializes the VirtIO SCSI HBA and detects attached devices. + */ +static int virtio_scsi_hba_init(virtio_t __far *virtio, uint8_t u8Bus, uint8_t u8DevFn, uint8_t u8PciCapOffVirtIo) +{ + uint8_t u8PciCapOff; + uint8_t u8DevStat; + + virtio->u8Bus = u8Bus; + virtio->u8DevFn = u8DevFn; + + /* + * Go through the config space again, read the complete config capabilities + * this time and fill in the data. + */ + u8PciCapOff = u8PciCapOffVirtIo; + while (u8PciCapOff != 0) + { + uint8_t u8PciCapId = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff); + uint8_t cbPciCap = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff + 2); /* Capability length. */ + + DBG_VIRTIO("Capability ID 0x%x at 0x%x\n", u8PciCapId, u8PciCapOff); + + if ( u8PciCapId == PCI_CAP_ID_VNDR + && cbPciCap >= sizeof(virtio_pci_cap_t)) + { + /* Read in the config type and see what we got. */ + uint8_t u8PciVirtioCfg = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff + 3); + + DBG_VIRTIO("VirtIO: CFG ID 0x%x\n", u8PciVirtioCfg); + switch (u8PciVirtioCfg) + { + case VIRTIO_PCI_CAP_COMMON_CFG: + case VIRTIO_PCI_CAP_NOTIFY_CFG: + case VIRTIO_PCI_CAP_ISR_CFG: + case VIRTIO_PCI_CAP_DEVICE_CFG: + { + virtio_bar_cfg_t __far *pBarCfg = &virtio->aBarCfgs[u8PciVirtioCfg - 1]; + + pBarCfg->u8Bar = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff + 4); + pBarCfg->u32Offset = pci_read_config_dword(u8Bus, u8DevFn, u8PciCapOff + 8); + pBarCfg->u32Length = pci_read_config_dword(u8Bus, u8DevFn, u8PciCapOff + 12); + if (u8PciVirtioCfg == VIRTIO_PCI_CAP_NOTIFY_CFG) + { + virtio->u32NotifyOffMult = pci_read_config_dword(u8Bus, u8DevFn, u8PciCapOff + 16); + DBG_VIRTIO("VirtIO: u32NotifyOffMult 0x%x\n", virtio->u32NotifyOffMult); + } + break; + } + case VIRTIO_PCI_CAP_PCI_CFG: + virtio->u8PciCfgOff = u8PciCapOff; + DBG_VIRTIO("VirtIO PCI CAP window offset: %x\n", u8PciCapOff); + break; + default: + DBG_VIRTIO("VirtIO SCSI HBA with unknown PCI capability type 0x%x\n", u8PciVirtioCfg); + break; + } + } + + u8PciCapOff = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff + 1); + } + + /* Reset the device. */ + u8DevStat = VIRTIO_CMN_REG_DEV_STS_F_RST; + virtio_reg_common_write_u8(virtio, VIRTIO_COMMON_REG_DEV_STS, u8DevStat); + /* Acknowledge presence. */ + u8DevStat |= VIRTIO_CMN_REG_DEV_STS_F_ACK; + virtio_reg_common_write_u8(virtio, VIRTIO_COMMON_REG_DEV_STS, u8DevStat); + /* Our driver knows how to operate the device. */ + u8DevStat |= VIRTIO_CMN_REG_DEV_STS_F_DRV; + virtio_reg_common_write_u8(virtio, VIRTIO_COMMON_REG_DEV_STS, u8DevStat); + +#if 0 + /* Read the feature bits and only program the VIRTIO_CMN_REG_DEV_FEAT_SCSI_INOUT bit if available. */ + fFeatures = virtio_reg_common_read_u32(virtio, VIRTIO_COMMON_REG_DEV_FEAT); + fFeatures &= VIRTIO_CMN_REG_DEV_FEAT_SCSI_INOUT; +#endif + + /* Check that the device is sane. */ + if ( virtio_reg_dev_cfg_read_u32(virtio, VIRTIO_DEV_CFG_REG_Q_NUM) < 1 + || virtio_reg_dev_cfg_read_u32(virtio, VIRTIO_DEV_CFG_REG_CDB_SZ) < 16 + || virtio_reg_dev_cfg_read_u32(virtio, VIRTIO_DEV_CFG_REG_SENSE_SZ) < 32 + || virtio_reg_dev_cfg_read_u32(virtio, VIRTIO_DEV_CFG_REG_SECT_MAX) < 1) + { + DBG_VIRTIO("VirtIO-SCSI: Invalid SCSI device configuration, ignoring device\n"); + return 1; + } + + virtio_reg_common_write_u32(virtio, VIRTIO_COMMON_REG_DRV_FEAT, VIRTIO_CMN_REG_DEV_FEAT_SCSI_INOUT); + + /* Set the features OK bit. */ + u8DevStat |= VIRTIO_CMN_REG_DEV_STS_F_FEAT_OK; + virtio_reg_common_write_u8(virtio, VIRTIO_COMMON_REG_DEV_STS, u8DevStat); + + /* Read again and check the the okay bit is still set. */ + if (!(virtio_reg_common_read_u8(virtio, VIRTIO_COMMON_REG_DEV_STS) & VIRTIO_CMN_REG_DEV_STS_F_FEAT_OK)) + { + DBG_VIRTIO("VirtIO-SCSI: Device doesn't accept our feature set, ignoring device\n"); + return 1; + } + + /* Disable event and control queue. */ + virtio_reg_common_write_u16(virtio, VIRTIO_COMMON_REG_Q_SELECT, VIRTIO_SCSI_Q_CONTROL); + virtio_reg_common_write_u16(virtio, VIRTIO_COMMON_REG_Q_SIZE, 0); + virtio_reg_common_write_u16(virtio, VIRTIO_COMMON_REG_Q_ENABLE, 0); + + virtio_reg_common_write_u16(virtio, VIRTIO_COMMON_REG_Q_SELECT, VIRTIO_SCSI_Q_EVENT); + virtio_reg_common_write_u16(virtio, VIRTIO_COMMON_REG_Q_SIZE, 0); + virtio_reg_common_write_u16(virtio, VIRTIO_COMMON_REG_Q_ENABLE, 0); + + /* Setup the request queue. */ + virtio_reg_common_write_u16(virtio, VIRTIO_COMMON_REG_Q_SELECT, VIRTIO_SCSI_Q_REQUEST); + virtio_reg_common_write_u16(virtio, VIRTIO_COMMON_REG_Q_SIZE, VIRTIO_SCSI_RING_ELEM); + virtio_reg_common_write_u16(virtio, VIRTIO_COMMON_REG_Q_ENABLE, 1); + + /* Set queue area addresses (only low part, leave high part 0). */ + virtio_reg_common_write_u32(virtio, VIRTIO_COMMON_REG_Q_DESC, virtio_addr_to_phys(&virtio->Queue.aDescTbl[0])); + virtio_reg_common_write_u32(virtio, VIRTIO_COMMON_REG_Q_DESC + 4, 0); + + virtio_reg_common_write_u32(virtio, VIRTIO_COMMON_REG_Q_DRIVER, virtio_addr_to_phys(&virtio->Queue.AvailRing)); + virtio_reg_common_write_u32(virtio, VIRTIO_COMMON_REG_Q_DRIVER + 4, 0); + + virtio_reg_common_write_u32(virtio, VIRTIO_COMMON_REG_Q_DEVICE, virtio_addr_to_phys(&virtio->Queue.UsedRing)); + virtio_reg_common_write_u32(virtio, VIRTIO_COMMON_REG_Q_DEVICE + 4, 0); + + virtio_reg_dev_cfg_write_u32(virtio, VIRTIO_DEV_CFG_REG_CDB_SZ, VIRTIO_SCSI_CDB_SZ); + virtio_reg_dev_cfg_write_u32(virtio, VIRTIO_DEV_CFG_REG_SENSE_SZ, VIRTIO_SCSI_SENSE_SZ); + + DBG_VIRTIO("VirtIO: Q notify offset 0x%x\n", virtio_reg_common_read_u16(virtio, VIRTIO_COMMON_REG_Q_NOTIFY_OFF)); + virtio->Queue.offNotify = virtio_reg_common_read_u16(virtio, VIRTIO_COMMON_REG_Q_NOTIFY_OFF) * virtio->u32NotifyOffMult; + + /* Bring the device into operational mode. */ + u8DevStat |= VIRTIO_CMN_REG_DEV_STS_F_DRV_OK; + virtio_reg_common_write_u8(virtio, VIRTIO_COMMON_REG_DEV_STS, u8DevStat); + + return 0; +} + +/** + * Init the VirtIO SCSI driver and detect attached disks. + */ +int virtio_scsi_init(void __far *pvHba, uint8_t u8Bus, uint8_t u8DevFn) +{ + virtio_t __far *virtio = (virtio_t __far *)pvHba; + uint8_t u8PciCapOff; + uint8_t u8PciCapOffVirtIo = VBOX_VIRTIO_NIL_CFG; + uint8_t u8PciCapVirtioSeen = 0; + + /* Examine the capability list and search for the VirtIO specific capabilities. */ + u8PciCapOff = pci_read_config_byte(u8Bus, u8DevFn, PCI_CONFIG_CAP); + + while (u8PciCapOff != 0) + { + uint8_t u8PciCapId = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff); + uint8_t cbPciCap = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff + 2); /* Capability length. */ + + DBG_VIRTIO("Capability ID 0x%x at 0x%x\n", u8PciCapId, u8PciCapOff); + + if ( u8PciCapId == PCI_CAP_ID_VNDR + && cbPciCap >= sizeof(virtio_pci_cap_t)) + { + /* Read in the config type and see what we got. */ + uint8_t u8PciVirtioCfg = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff + 3); + + if (u8PciCapOffVirtIo == VBOX_VIRTIO_NIL_CFG) + u8PciCapOffVirtIo = u8PciCapOff; + + DBG_VIRTIO("VirtIO: CFG ID 0x%x\n", u8PciVirtioCfg); + switch (u8PciVirtioCfg) + { + case VIRTIO_PCI_CAP_COMMON_CFG: + case VIRTIO_PCI_CAP_NOTIFY_CFG: + case VIRTIO_PCI_CAP_ISR_CFG: + case VIRTIO_PCI_CAP_DEVICE_CFG: + case VIRTIO_PCI_CAP_PCI_CFG: + u8PciCapVirtioSeen |= 1 << (u8PciVirtioCfg - 1); + break; + default: + DBG_VIRTIO("VirtIO SCSI HBA with unknown PCI capability type 0x%x\n", u8PciVirtioCfg); + } + } + + u8PciCapOff = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff + 1); + } + + /* Initialize the controller if all required PCI capabilities where found. */ + if ( u8PciCapOffVirtIo != VBOX_VIRTIO_NIL_CFG + && u8PciCapVirtioSeen == 0x1f) + { + DBG_VIRTIO("VirtIO SCSI HBA with all required capabilities at 0x%x\n", u8PciCapOffVirtIo); + + /* Enable PCI memory, I/O, bus mastering access in command register. */ + pci_write_config_word(u8Bus, u8DevFn, 4, 0x7); + return virtio_scsi_hba_init(virtio, u8Bus, u8DevFn, u8PciCapOffVirtIo); + } + else + DBG_VIRTIO("VirtIO SCSI HBA with no usable PCI config access!\n"); + + return 1; +} |