Merging upstream version 7.1.10-dfsg.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
This commit is contained in:
parent
fce0adf0a0
commit
6b15cd43cb
108 changed files with 6337 additions and 5507 deletions
55
CONTRIBUTING.md
Normal file
55
CONTRIBUTING.md
Normal file
|
@ -0,0 +1,55 @@
|
|||
# Contributing to this repository
|
||||
|
||||
We welcome your contributions! There are multiple ways to contribute.
|
||||
|
||||
## Opening issues
|
||||
|
||||
For bugs or enhancement requests, please file a GitHub issue unless it's
|
||||
security related. When filing a bug remember that the better written the bug is,
|
||||
the more likely it is to be fixed. If you think you've found a security
|
||||
vulnerability, do not raise a GitHub issue and follow the instructions in our
|
||||
[security policy](./SECURITY.md).
|
||||
|
||||
## Contributing code
|
||||
|
||||
We welcome your code contributions. Before submitting code via a pull request,
|
||||
you will need to have signed the [Oracle Contributor Agreement][OCA] (OCA) and
|
||||
your commits need to include the following line using the name and e-mail
|
||||
address you used to sign the OCA:
|
||||
|
||||
```text
|
||||
Signed-off-by: Your Name <you@example.org>
|
||||
```
|
||||
|
||||
This can be automatically added to pull requests by committing with `--sign-off`
|
||||
or `-s`, e.g.
|
||||
|
||||
```text
|
||||
git commit --signoff
|
||||
```
|
||||
|
||||
Only pull requests from committers that can be verified as having signed the OCA
|
||||
can be accepted.
|
||||
|
||||
## Pull request process
|
||||
|
||||
1. Ensure there is an issue created to track and discuss the fix or enhancement
|
||||
you intend to submit.
|
||||
1. Fork this repository.
|
||||
1. Create a branch in your fork to implement the changes. We recommend using
|
||||
the issue number as part of your branch name, e.g. `1234-fixes`.
|
||||
1. Ensure that any documentation is updated with the changes that are required
|
||||
by your change.
|
||||
1. Ensure that any samples are updated if the base image has been changed.
|
||||
1. Submit the pull request. *Do not leave the pull request blank*. Explain exactly
|
||||
what your changes are meant to do and provide simple steps on how to validate.
|
||||
your changes. Ensure that you reference the issue you created as well.
|
||||
1. We will assign the pull request to 2-3 people for review before it is merged.
|
||||
|
||||
## Code of conduct
|
||||
|
||||
Follow the [Golden Rule](https://en.wikipedia.org/wiki/Golden_Rule). If you'd
|
||||
like more specific guidelines, see the [Contributor Covenant Code of Conduct][COC].
|
||||
|
||||
[OCA]: https://oca.opensource.oracle.com
|
||||
[COC]: https://www.contributor-covenant.org/version/1/4/code-of-conduct/
|
29
Config.kmk
29
Config.kmk
|
@ -880,8 +880,6 @@ if1of ($(KBUILD_TARGET), darwin linux solaris)
|
|||
# Enable Java<->JAX-WS bridge
|
||||
VBOX_WITH_JWS ?= 1
|
||||
endif
|
||||
# Use XPIDL instead of XSLT stylesheet
|
||||
VBOX_WITH_JAVA_SUPPORT_IN_XPIDL ?=
|
||||
# Build against multiple Python versions present in the system (only up to 3.2,
|
||||
# unless VBOX_WITH_ONLY_PYTHON_LIMITED_API is overridden).
|
||||
VBOX_WITH_MULTIVERSION_PYTHON ?= 1
|
||||
|
@ -2649,7 +2647,7 @@ else
|
|||
endif
|
||||
|
||||
# Makeself for the linux installers.
|
||||
VBOX_MAKESELF ?= $(KBUILD_DEVTOOLS)/common/makeself/v2.4.5-r2/makeself.sh
|
||||
VBOX_MAKESELF ?= $(KBUILD_DEVTOOLS)/common/makeself/v2.5.0-r2/makeself.sh
|
||||
|
||||
# Microsoft HTML Help Workshop.
|
||||
VBOX_PATH_HTML_HELP_WORKSHOP ?= $(KBUILD_DEVTOOLS)/win.x86/HTML_Help_Workshop/v1.3/
|
||||
|
@ -2772,15 +2770,6 @@ ifneq ($(KBUILD_TARGET),win)
|
|||
$(VBOX_PATH_SDK)/bindings/xpcom/include/xpcom \
|
||||
$(VBOX_PATH_SDK)/bindings/xpcom/include/nsprpub \
|
||||
$(VBOX_PATH_SDK)/bindings/xpcom/include/ipcd
|
||||
ifneq ($(KBUILD_TARGET),os2)
|
||||
# libIDL-config (for xpcom18a4)
|
||||
ifeq ($(origin VBOX_LIBIDL_CONFIG),undefined)
|
||||
ifeq ($(KBUILD_HOST),solaris)
|
||||
VBOX_LIBIDL_CONFIG_FALLBACK = $(lastword $(wildcard $(KBUILD_DEVTOOLS)/solaris.amd64/libIDL/*/bin/libIDL-config-2))
|
||||
endif
|
||||
export VBOX_LIBIDL_CONFIG := $(firstword $(which libIDL-config-2 libIDL-config) $(VBOX_LIBIDL_CONFIG_FALLBACK) libIDL-config-2-not-found)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# The X11 LIBPATH. (The amd64 hack is for RHEL4.)
|
||||
|
@ -4232,7 +4221,9 @@ ifdef VBOX_SIGNING_MODE
|
|||
$(KBUILD_DEVTOOLS)/common/ccs/notfound/Client.jar )
|
||||
VBOX_CCS_USER ?= virtualbox_grp
|
||||
VBOX_CCS_GLOBAL_UID ?= non-of-your-business
|
||||
VBOX_CCS_SERVER ?= UK
|
||||
VBOX_CCS_SERVER.solaris ?= SCA
|
||||
VBOX_CCS_SERVER.win ?= PHX
|
||||
VBOX_CCS_SERVER.darwin ?= SCA
|
||||
##
|
||||
# Corp Code Signing command line.
|
||||
# @param $1 Signing method: solaris_elf, solaris_pkg, driver (microsoft), ...
|
||||
|
@ -4241,7 +4232,7 @@ ifdef VBOX_SIGNING_MODE
|
|||
# @param $4 Additional options.
|
||||
VBOX_CCS_SIGN_CMD = $(VBOX_RETRY) $(VBOX_JAVA) -Xmx256m -jar "$(VBOX_CCS_CLIENT_JAR)" \
|
||||
sign -user "$(VBOX_CCS_USER)" -global_uid "$(VBOX_CCS_GLOBAL_UID)" \
|
||||
-job_timeout 90 -server_timeout 75 -server "$(VBOX_CCS_SERVER)" \
|
||||
-job_timeout 90 -server_timeout 75 -server "$(VBOX_CCS_SERVER.$(KBUILD_TARGET))" \
|
||||
-sign_method "$1" -file_to_sign "$2" -signed_location "$(if $3,$3,$(call VBOX_DIRX,$2))" $4
|
||||
|
||||
ifeq ($(KBUILD_HOST),win)
|
||||
|
@ -4661,7 +4652,7 @@ ifdef VBOX_SIGNING_MODE
|
|||
# @param 3 The directory to put the notarized file in. Defaults to $(dir $1).
|
||||
VBOX_CCS_NOTARIZE_CMD = $(VBOX_RETRY) $(VBOX_JAVA) -jar "$(VBOX_CCS_CLIENT_JAR)" \
|
||||
mac_notarize -user "$(VBOX_CCS_USER)" -global_uid "$(VBOX_CCS_GLOBAL_UID)" \
|
||||
-job_timeout 90 -server_timeout 75 -server "$(VBOX_CCS_SERVER)" \
|
||||
-job_timeout 90 -server_timeout 75 -server "$(VBOX_CCS_SERVER.$(KBUILD_TARGET))" \
|
||||
-file_to_notarize "$1" -bundle_id "$2" -download_location "$(if $3,$3,$(call VBOX_DIRX,$1))"
|
||||
|
||||
## Sign an application bundle, framework or kernel extension.
|
||||
|
@ -5162,7 +5153,7 @@ endif
|
|||
|
||||
# openssl
|
||||
SDK_VBoxOpenSslStatic := OpenSSL - Only for VBoxRT and/or statically linked programs.
|
||||
SDK_VBoxOpenSslStatic_VBOX_DEFAULT_INCS := $(PATH_OUT)/obj/crypto-3.3.2-headers/include
|
||||
SDK_VBoxOpenSslStatic_VBOX_DEFAULT_INCS := $(PATH_OUT)/obj/crypto-3.4.1-headers/include
|
||||
SDK_VBoxOpenSslStatic_INCS ?= $(SDK_VBoxOpenSslStatic_VBOX_DEFAULT_INCS)
|
||||
SDK_VBoxOpenSslStatic_ORDERDEPS ?= $(crypto-headers_1_TARGET)
|
||||
if !defined(VBOX_ONLY_SDK) \
|
||||
|
@ -5176,7 +5167,7 @@ SDK_VBoxOpenSslStatic_LIBS ?= \
|
|||
$(PATH_STAGE_LIB)/VBox-libcrypto$(VBOX_SUFF_LIB)
|
||||
|
||||
SDK_VBoxOpenSslStatic-x86 := OpenSSL/x86 - Only for VBoxRT and/or statically linked programs.
|
||||
SDK_VBoxOpenSslStatic-x86_VBOX_DEFAULT_INCS := $(PATH_OUT)/obj/crypto-3.3.2-headers/include
|
||||
SDK_VBoxOpenSslStatic-x86_VBOX_DEFAULT_INCS := $(PATH_OUT)/obj/crypto-3.4.1-headers/include
|
||||
SDK_VBoxOpenSslStatic-x86_INCS ?= $(SDK_VBoxOpenSslStatic_VBOX_DEFAULT_INCS)
|
||||
SDK_VBoxOpenSslStatic-x86_ORDERDEPS ?= $(crypto-headers_1_TARGET)
|
||||
if ("$(SDK_VBoxOpenSslStatic_INCS)" == "$(SDK_VBoxOpenSslStatic_VBOX_DEFAULT_INCS)")
|
||||
|
@ -5280,7 +5271,7 @@ endif
|
|||
|
||||
ifdef VBOX_WITH_LIBLZMA
|
||||
SDK_VBoxLibLzma := liblzma for dll linking.
|
||||
SDK_VBoxLibLzma_DEFAULT_INCS := $(PATH_ROOT)/src/libs/liblzma-5.4.1/api
|
||||
SDK_VBoxLibLzma_DEFAULT_INCS := $(PATH_ROOT)/src/libs/liblzma-5.8.1/api
|
||||
SDK_VBoxLibLzma_INCS ?= $(SDK_VBoxLibLzma_DEFAULT_INCS)
|
||||
SDK_VBoxLibLzma_LIBS ?= $(PATH_STAGE_LIB)/VBox-liblzma$(VBOX_SUFF_LIB)
|
||||
|
||||
|
@ -9287,7 +9278,7 @@ endif
|
|||
SVN ?= svn$(HOSTSUFF_EXE)
|
||||
VBOX_SVN_REV_KMK = $(PATH_OUT)/revision.kmk
|
||||
ifndef VBOX_SVN_REV
|
||||
VBOX_SVN_REV_CONFIG_FALLBACK := $(patsubst %:,, $Rev: 168374 $ )
|
||||
VBOX_SVN_REV_CONFIG_FALLBACK := $(patsubst %:,, $Rev: 168816 $ )
|
||||
VBOX_SVN_REV_FALLBACK := $(if-expr $(VBOX_SVN_REV_CONFIG_FALLBACK) > $(VBOX_SVN_REV_VERSION_FALLBACK),$(VBOX_SVN_REV_CONFIG_FALLBACK),$(VBOX_SVN_REV_VERSION_FALLBACK))
|
||||
VBOX_SVN_DEP := $(firstword $(wildcard $(PATH_ROOT)/.svn/wc.db $(abspath $(PATH_ROOT)/../.svn/wc.db) $(abspath $(PATH_ROOT)/../../.svn/wc.db) $(PATH_ROOT)/.svn/entries))
|
||||
ifeq ($(which $(SVN)),)
|
||||
|
|
674
LICENSE.txt
Normal file
674
LICENSE.txt
Normal file
|
@ -0,0 +1,674 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
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, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<https://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
91
README.md
Normal file
91
README.md
Normal file
|
@ -0,0 +1,91 @@
|
|||
# Oracle VirtualBox
|
||||
|
||||
VirtualBox is a general-purpose full virtualization software for x86_64
|
||||
hardware (with version 7.1 additionally for macOS/Arm), targeted at laptop,
|
||||
desktop, server and embedded use.
|
||||
|
||||
It features a very user friendly graphical user interface and is available for
|
||||
many popular operating systems (Linux, Windows, macOS and Solaris). Flexible
|
||||
networking setup and interactive performance are the strong points.
|
||||
|
||||
Anyone with the need to run multiple operating systems simultaneously with some
|
||||
basic knowledge about PCs and operating system installation can use it to
|
||||
reduce effort with a large number of tasks including software testing.
|
||||
|
||||
## Getting started
|
||||
|
||||
VirtualBox is a complex product with multiple dependencies, some of them
|
||||
specific to the operating system on which you want to run it.
|
||||
|
||||
The basics for building VirtualBox are described on the [build
|
||||
instructions](https://www.virtualbox.org/wiki/Build_instructions) page.
|
||||
|
||||
## Documentation
|
||||
|
||||
The [VirtualBox User
|
||||
Guide](https://docs.oracle.com/en/virtualization/virtualbox/index.html)
|
||||
contains all information relevant for users, including the product features and
|
||||
their configuration.
|
||||
|
||||
For developers it is recommended to start with the [technical
|
||||
documentation](https://www.virtualbox.org/wiki/Technical_documentation) which
|
||||
contains links to a broad collection of pages related to development, covering
|
||||
many aspects of the project and its features.
|
||||
|
||||
## Examples
|
||||
|
||||
Tutorials on how to install and use Oracle VirtualBox are available at
|
||||
[Learn to Install Oracle VirtualBox and Run Virtual Machines](https://blogs.oracle.com/linux/post/learn-to-install-oracle-virtualbox-and-run-virtual-machines)
|
||||
and [Use Oracle VirtualBox on Oracle Linux](https://docs.oracle.com/en/learn/ol-vbox/index.html).
|
||||
|
||||
## Help
|
||||
|
||||
Oracle customers with a support contract covering Oracle VirtualBox should
|
||||
reach out to [Oracle Support](https://www.oracle.com/support/).
|
||||
|
||||
Everyone can use the [VirtualBox Forums](https://forums.virtualbox.org/)
|
||||
for questions about the product or discussing its functionality. Open an [issue](https://github.com/VirtualBox/virtualbox/issues)
|
||||
for bug reports or request for enhancements. Report a security vulnerability
|
||||
according to the [Reporting Vulnerabilities Guide](https://www.oracle.com/corporate/security-practices/assurance/vulnerability/reporting.html).
|
||||
|
||||
## Contributing
|
||||
|
||||
This project welcomes contributions from the community. Before submitting a
|
||||
pull request, please [review our contribution guide](./CONTRIBUTING.md)
|
||||
|
||||
## Security
|
||||
|
||||
Please consult the [security guide](./SECURITY.md) for our responsible security vulnerability disclosure process.
|
||||
|
||||
## License
|
||||
|
||||
The correct copyright notice format for both documentation and software is
|
||||
|
||||
Copyright (C) [year-]year 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>.
|
||||
|
||||
You must include the year the content was first released (on any platform) and
|
||||
the most recent year in which it was revised:
|
||||
|
||||
Copyright (C) 2025 Oracle and/or its affiliates.
|
||||
|
||||
Released under the GNU General Public License v3.0 as shown at
|
||||
[COPYING](./COPYING) which contains clarifications regarding allowed licenses
|
||||
for other code using parts of the project which are covered by multiple
|
||||
licenses.
|
||||
|
39
SECURITY.md
Normal file
39
SECURITY.md
Normal file
|
@ -0,0 +1,39 @@
|
|||
# Reporting security vulnerabilities
|
||||
|
||||
Oracle values the independent security research community and believes that
|
||||
responsible disclosure of security vulnerabilities helps us ensure the security
|
||||
and privacy of all our users.
|
||||
|
||||
Please do NOT raise a GitHub Issue to report a security vulnerability. If you
|
||||
believe you have found a security vulnerability, please submit a report to
|
||||
[secalert_us@oracle.com][1] preferably with a proof of concept. Please review
|
||||
some additional information on [how to report security vulnerabilities to Oracle][2].
|
||||
We encourage people who contact Oracle Security to use email encryption using
|
||||
[our encryption key][3].
|
||||
|
||||
We ask that you do not use other channels or contact the project maintainers
|
||||
directly.
|
||||
|
||||
Non-vulnerability related security issues including ideas for new or improved
|
||||
security features are welcome on GitHub Issues.
|
||||
|
||||
## Security updates, alerts and bulletins
|
||||
|
||||
Security updates will be released on a regular cadence. Many of our projects
|
||||
will typically release security fixes in conjunction with the
|
||||
Oracle Critical Patch Update program. Additional
|
||||
information, including past advisories, is available on our [security alerts][4]
|
||||
page.
|
||||
|
||||
## Security-related information
|
||||
|
||||
We will provide security related information such as a threat model, considerations
|
||||
for secure use, or any known security issues in our documentation. Please note
|
||||
that labs and sample code are intended to demonstrate a concept and may not be
|
||||
sufficiently hardened for production use.
|
||||
|
||||
[1]: mailto:secalert_us@oracle.com
|
||||
[2]: https://www.oracle.com/corporate/security-practices/assurance/vulnerability/reporting.html
|
||||
[3]: https://www.oracle.com/security-alerts/encryptionkey.html
|
||||
[4]: https://www.oracle.com/security-alerts/
|
||||
|
1
THIRD_PARTY_LICENSES.txt
Normal file
1
THIRD_PARTY_LICENSES.txt
Normal file
|
@ -0,0 +1 @@
|
|||
See doc/manual/en_US/dita/topics/licensing/vbox-base for all 3rd party licenses.
|
|
@ -34,7 +34,7 @@ VBOX_VERSION_MINOR = 1
|
|||
# This is the current build number. It should be increased every time we publish a
|
||||
# new build. The define is available in every source file. Only even build numbers
|
||||
# will be published, odd numbers are set during development.
|
||||
VBOX_VERSION_BUILD = 8
|
||||
VBOX_VERSION_BUILD = 10
|
||||
# This can be overridden in LocalConfig.kmk or elsewhere.
|
||||
# For the convention, see checks near the end of Config.kmk.
|
||||
VBOX_BUILD_PUBLISHER =
|
||||
|
@ -45,4 +45,4 @@ VBOX_VERSION_PRERELEASE =
|
|||
VBOX_RELEASE_EXACT_MATCH =
|
||||
|
||||
# Fallback revision when there is no other source. See Config.kmk.
|
||||
VBOX_SVN_REV_VERSION_FALLBACK := $(patsubst %:,, $Rev: 168469 $ )
|
||||
VBOX_SVN_REV_VERSION_FALLBACK := $(patsubst %:,, $Rev: 169112 $ )
|
||||
|
|
33
configure
vendored
33
configure
vendored
|
@ -90,7 +90,6 @@ WITH_XPCOM=1
|
|||
WITH_PYTHON=1
|
||||
WITH_JAVA=1
|
||||
WITH_VMMRAW=1
|
||||
WITH_LIBIDL=1
|
||||
WITH_QT6=1
|
||||
WITH_SDL=1
|
||||
WITH_SDL_TTF=1
|
||||
|
@ -786,36 +785,6 @@ EOF
|
|||
}
|
||||
|
||||
|
||||
#
|
||||
# Check for libIDL, needed by xpcom
|
||||
#
|
||||
check_libidl()
|
||||
{
|
||||
test_header libIDL
|
||||
|
||||
if which_wrapper libIDL-config-2 > /dev/null; then
|
||||
libidl_ver=`libIDL-config-2 --version`
|
||||
if [ $? -ne 0 ]; then
|
||||
log_failure "libIDL-config-2 not working"
|
||||
fail
|
||||
else
|
||||
log_success "found version $libidl_ver"
|
||||
cnf_append "VBOX_LIBIDL_CONFIG" \
|
||||
"PKG_CONFIG_PATH=`libIDL-config-2 --prefix`/$LIB/pkgconfig `which_wrapper libIDL-config-2`"
|
||||
fi
|
||||
elif check_avail "libIDL-config" libIDL-config; then
|
||||
libidl_ver=`libIDL-config --version`
|
||||
if [ $? -ne 0 ]; then
|
||||
log_failure "libIDL-config not working"
|
||||
fail
|
||||
else
|
||||
log_success "found version $libidl_ver"
|
||||
cnf_append "VBOX_LIBIDL_CONFIG" "`which_wrapper libIDL-config`"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# Check for libdevmapper, needed by the VBoxVolInfo
|
||||
#
|
||||
|
@ -2632,7 +2601,6 @@ elif [ "$OS" = "haiku" ]; then
|
|||
WITH_PULSE=0
|
||||
WITH_DBUS=0
|
||||
WITH_KMODS=0
|
||||
WITH_LIBIDL=0
|
||||
WITH_XPCOM=0
|
||||
BUILD_LIBXSLT=1
|
||||
BUILD_LIBXML2=1
|
||||
|
@ -3024,7 +2992,6 @@ fi
|
|||
if [ $ONLY_ADDITIONS -eq 0 ]; then
|
||||
[ "$OS" != "darwin" ] && check_pthread
|
||||
check_libxml2
|
||||
[ $WITH_LIBIDL -eq 1 ] && check_libidl
|
||||
check_z
|
||||
check_lzf
|
||||
check_ssl
|
||||
|
|
|
@ -71,6 +71,60 @@ Rules for adding a changelog entry to make them look more uniform:
|
|||
|
||||
<!-- HACK ALERT! Seems we must have a single top level element for xi:include to work.
|
||||
So, we use chapter and xpointer="xpointer(/chapter/)" with xi:include. -->
|
||||
<sect1>
|
||||
|
||||
<title>Version 7.1.10 (2025-06-03)</title>
|
||||
|
||||
<para>This is a maintenance release. The following items were fixed and/or
|
||||
added:</para>
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>VBoxManage: Fixed a crash when running 'guestcontrol run' on Windows
|
||||
hosts (bug #22175)</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Audio: Fixed device switching on Windows hosts (bug #22267)</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Windows host installer: Fixed multiple installation entries in the
|
||||
'Add or remove programs' dialog and upgrade issues</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Linux host: Fixed issue which caused VM Selector process crash
|
||||
due to missing libdl.so and libpthread.so libraries (bug #22193)</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Linux host: Removed libIDL as a build time dependency when
|
||||
building VirtualBox from source code (bug #21169)</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Linux guest and host: Added initial support for kernel 6.15 (bug #22420)</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Linux guest: Added initial support for kernel 6.16-RC0</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Linux guest and host: Fixed issue with building modules
|
||||
for UEK8 kernel on Oracle Linux 9 distribution</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>RDP: Fixed issue when it was not possible to paste clipboard buffer
|
||||
into a guest over RDP remote session</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
|
||||
<title>Version 7.1.8 (2025-04-15)</title>
|
||||
|
|
|
@ -833,14 +833,21 @@ public:
|
|||
if (!ensureCapacity(size() + 1))
|
||||
return false;
|
||||
|
||||
for (size_t i = size(); i > 0; --i)
|
||||
{
|
||||
#ifdef VBOX_WITH_XPCOM
|
||||
/* For XPCOM, size() is 0 and capacity() is 16 for the first time
|
||||
* this function is being called on an empty array.
|
||||
* See implementation of ensureCapacity(). */
|
||||
for (size_t i = size(); i > 0; --i)
|
||||
SafeArray::Copy(m.arr[i - 1], m.arr[i]);
|
||||
#else
|
||||
/* For Windows (COM), size() always matches the array's capacity.
|
||||
*
|
||||
* So we here need to make sure we don't read beyond the array
|
||||
* if this function is being called on an empty array
|
||||
* (size is 1 and there is no element on index 1 yet). */
|
||||
for (size_t i = size() - 1; i > 0; --i)
|
||||
SafeArray::Copy(m.raw[i - 1], m.raw[i]);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef VBOX_WITH_XPCOM
|
||||
SafeArray::Copy(aElement, m.arr[0]);
|
||||
|
|
|
@ -2015,6 +2015,8 @@
|
|||
# define RTScriptLexPeekCh RT_MANGLER(RTScriptLexPeekCh)
|
||||
# define RTScriptLexPeekChEx RT_MANGLER(RTScriptLexPeekChEx)
|
||||
# define RTScriptLexPeekNextTokenType RT_MANGLER(RTScriptLexPeekNextTokenType)
|
||||
# define RTScriptLexProduceTokError RT_MANGLER(RTScriptLexProduceTokError)
|
||||
# define RTScriptLexProduceTokIde RT_MANGLER(RTScriptLexProduceTokIde)
|
||||
# define RTScriptLexQueryToken RT_MANGLER(RTScriptLexQueryToken)
|
||||
# define RTScriptLexScanIdentifier RT_MANGLER(RTScriptLexScanIdentifier)
|
||||
# define RTScriptLexScanNumber RT_MANGLER(RTScriptLexScanNumber)
|
||||
|
|
|
@ -97,6 +97,10 @@ typedef enum RTSCRIPTLEXTOKTYPE
|
|||
RTSCRIPTLEXTOKTYPE_KEYWORD,
|
||||
/** Some punctuator. */
|
||||
RTSCRIPTLEXTOKTYPE_PUNCTUATOR,
|
||||
/** A single line comment. */
|
||||
RTSCRIPTLEXTOKTYPE_COMMENT_SINGLE_LINE,
|
||||
/** A multi line comment. */
|
||||
RTSCRIPTLEXTOKTYPE_COMMENT_MULTI_LINE,
|
||||
/** Special error token, conveying an error message from the lexer. */
|
||||
RTSCRIPTLEXTOKTYPE_ERROR,
|
||||
/** End of stream token. */
|
||||
|
@ -211,6 +215,14 @@ typedef struct RTSCRIPTLEXTOKEN
|
|||
/** Pointer to the matched punctuator descriptor. */
|
||||
PCRTSCRIPTLEXTOKMATCH pPunctuator;
|
||||
} Punctuator;
|
||||
/** Comment */
|
||||
struct
|
||||
{
|
||||
/** Pointer to the start of the comment (including the symbols starting the comment). */
|
||||
const char *pszComment;
|
||||
/** Number of characters of the comment, including the null terminator. */
|
||||
size_t cchComment;
|
||||
} Comment;
|
||||
/** Error. */
|
||||
struct
|
||||
{
|
||||
|
@ -311,7 +323,12 @@ typedef const RTSCRIPTLEXCFG *PCRTSCRIPTLEXCFG;
|
|||
#define RTSCRIPT_LEX_CFG_F_DEFAULT 0
|
||||
/** Case insensitive lexing, keywords and so on must be used lowercase to match
|
||||
* as the lexer will convert everything to lowercase internally. */
|
||||
#define RTSCRIPT_LEX_CFG_F_CASE_INSENSITIVE RT_BIT(0)
|
||||
#define RTSCRIPT_LEX_CFG_F_CASE_INSENSITIVE_LOWER RT_BIT(0)
|
||||
/** Case insensitive lexing, keywords and so on must be used uppercase to match
|
||||
* as the lexer will convert everything to uppercase internally. */
|
||||
#define RTSCRIPT_LEX_CFG_F_CASE_INSENSITIVE_UPPER RT_BIT(1)
|
||||
/** Comments are not skipped but passed back as tokens. */
|
||||
#define RTSCRIPT_LEX_CFG_F_COMMENTS_AS_TOKENS RT_BIT(2)
|
||||
|
||||
|
||||
/** Default character conversions (converting to lower case when the case insensitive flag is set). */
|
||||
|
@ -365,12 +382,17 @@ typedef FNRTSCRIPTLEXDTOR *PFNRTSCRIPTLEXDTOR;
|
|||
* scanned string literals on success, optional.
|
||||
* If not NULL the string cache must be freed by the caller when not used
|
||||
* anymore.
|
||||
* @param phStrCacheComments Where to store the pointer to the string cache containing all
|
||||
* comments on success when RTSCRIPT_LEX_CFG_F_COMMENTS_AS_TOKENS
|
||||
* is given, optional.
|
||||
* If not NULL the string cache must be freed by the caller when not used
|
||||
* anymore.
|
||||
* @param pCfg The lexer config to use for identifying the different tokens.
|
||||
*/
|
||||
RTDECL(int) RTScriptLexCreateFromReader(PRTSCRIPTLEX phScriptLex, PFNRTSCRIPTLEXRDR pfnReader,
|
||||
PFNRTSCRIPTLEXDTOR pfnDtor, void *pvUser,
|
||||
size_t cchBuf, PRTSTRCACHE phStrCacheId, PRTSTRCACHE phStrCacheStringLit,
|
||||
PCRTSCRIPTLEXCFG pCfg);
|
||||
PRTSTRCACHE phStrCacheComments, PCRTSCRIPTLEXCFG pCfg);
|
||||
|
||||
|
||||
/**
|
||||
|
@ -387,10 +409,16 @@ RTDECL(int) RTScriptLexCreateFromReader(PRTSCRIPTLEX phScriptLex, PFNRTSCRIPTLEX
|
|||
* scanned string literals on success, optional.
|
||||
* If not NULL the string cache must be freed by the caller when not used
|
||||
* anymore.
|
||||
* @param phStrCacheComments Where to store the pointer to the string cache containing all
|
||||
* comments on success when RTSCRIPT_LEX_CFG_F_COMMENTS_AS_TOKENS
|
||||
* is given, optional.
|
||||
* If not NULL the string cache must be freed by the caller when not used
|
||||
* anymore.
|
||||
* @param pCfg The lexer config to use for identifying the different tokens.
|
||||
*/
|
||||
RTDECL(int) RTScriptLexCreateFromString(PRTSCRIPTLEX phScriptLex, const char *pszSrc, PRTSTRCACHE phStrCacheId,
|
||||
PRTSTRCACHE phStrCacheStringLit, PCRTSCRIPTLEXCFG pCfg);
|
||||
PRTSTRCACHE phStrCacheStringLit, PRTSTRCACHE phStrCacheComments,
|
||||
PCRTSCRIPTLEXCFG pCfg);
|
||||
|
||||
|
||||
/**
|
||||
|
@ -407,10 +435,16 @@ RTDECL(int) RTScriptLexCreateFromString(PRTSCRIPTLEX phScriptLex, const char *ps
|
|||
* scanned string literals on success, optional.
|
||||
* If not NULL the string cache must be freed by the caller when not used
|
||||
* anymore.
|
||||
* @param phStrCacheComments Where to store the pointer to the string cache containing all
|
||||
* comments on success when RTSCRIPT_LEX_CFG_F_COMMENTS_AS_TOKENS
|
||||
* is given, optional.
|
||||
* If not NULL the string cache must be freed by the caller when not used
|
||||
* anymore.
|
||||
* @param pCfg The lexer config to use for identifying the different tokens.
|
||||
*/
|
||||
RTDECL(int) RTScriptLexCreateFromFile(PRTSCRIPTLEX phScriptLex, const char *pszFilename, PRTSTRCACHE phStrCacheId,
|
||||
PRTSTRCACHE phStrCacheStringLit, PCRTSCRIPTLEXCFG pCfg);
|
||||
PRTSTRCACHE phStrCacheStringLit, PRTSTRCACHE phStrCacheComments,
|
||||
PCRTSCRIPTLEXCFG pCfg);
|
||||
|
||||
|
||||
/**
|
||||
|
@ -601,6 +635,30 @@ RTDECL(int) RTScriptLexScanStringLiteralC(RTSCRIPTLEX hScriptLex, char ch, PRTSC
|
|||
*/
|
||||
RTDECL(int) RTScriptLexScanStringLiteralPascal(RTSCRIPTLEX hScriptLex, char ch, PRTSCRIPTLEXTOKEN pTok, void *pvUser);
|
||||
|
||||
|
||||
/**
|
||||
* Produces an error token with the given message, used for custom lexer rule implementations.
|
||||
*
|
||||
* @returns IPRT status code.
|
||||
* @param hScriptLex The lexer handle.
|
||||
* @param pTok The token to fill.
|
||||
* @param rc The status code to use in the message.
|
||||
* @param pszMsg The format string for the error message.
|
||||
* @param ... Arguments to the format string.
|
||||
*/
|
||||
RTDECL(int) RTScriptLexProduceTokError(RTSCRIPTLEX hScriptLex, PRTSCRIPTLEXTOKEN pTok, int rc, const char *pszMsg, ...);
|
||||
|
||||
|
||||
/**
|
||||
* Produces an identifier token with the given identifier, used for custom lexer rule implementations.
|
||||
*
|
||||
* @returns IPRT status code.
|
||||
* @param hScriptLex The lexer handle.
|
||||
* @param pTok The token to fill.
|
||||
* @param pszIde The identifier to add.
|
||||
* @param cchIde Number of characters in the identifier.
|
||||
*/
|
||||
RTDECL(int) RTScriptLexProduceTokIde(RTSCRIPTLEX hScriptLex, PRTSCRIPTLEXTOKEN pTok, const char *pszIde, size_t cchIde);
|
||||
/** @} */
|
||||
|
||||
/** @} */
|
||||
|
|
|
@ -42,7 +42,7 @@ Class=System
|
|||
DriverPackageType=PlugAndPlay
|
||||
;edit-DriverVer=08/26/2008,2.00.0000
|
||||
;cat CatalogFile=VBoxGuest.cat
|
||||
;PnpLockdown=1
|
||||
PnpLockdown=1
|
||||
|
||||
[SourceDisksNames]
|
||||
1 = %VBoxGuest_MediaDesc%,,,
|
||||
|
|
|
@ -43,6 +43,10 @@
|
|||
# include <drm/drm_probe_helper.h>
|
||||
#endif
|
||||
|
||||
#if RTLNX_VER_MIN(6,13,0) && defined(CONFIG_APERTURE_HELPERS)
|
||||
# include <linux/aperture.h>
|
||||
#endif
|
||||
|
||||
#if RTLNX_VER_RANGE(5,14,0, 6,13,0) || RTLNX_RHEL_RANGE(8,6, 8,99)
|
||||
# include <drm/drm_aperture.h>
|
||||
#endif
|
||||
|
@ -94,7 +98,9 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
}
|
||||
#endif
|
||||
|
||||
# if RTLNX_VER_RANGE(5,14,0, 6,13,0) || RTLNX_RHEL_RANGE(8,6, 8,99)
|
||||
# if RTLNX_VER_MIN(6,13,0) && defined(CONFIG_APERTURE_HELPERS)
|
||||
ret = aperture_remove_conflicting_pci_devices(pdev, driver.name);
|
||||
# elif RTLNX_VER_RANGE(5,14,0, 6,13,0) || RTLNX_RHEL_RANGE(8,6, 8,99)
|
||||
# if RTLNX_VER_MIN(5,15,0) || RTLNX_RHEL_RANGE(8,7, 8,99) || RTLNX_RHEL_MIN(9,1) || RTLNX_SUSE_MAJ_PREREQ(15,4)
|
||||
ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, &driver);
|
||||
# else
|
||||
|
@ -391,6 +397,9 @@ static struct drm_driver driver = {
|
|||
.desc = DRIVER_DESC,
|
||||
#if RTLNX_VER_MAX(6,14,0)
|
||||
.date = DRIVER_DATE,
|
||||
#endif
|
||||
#if RTLNX_VER_MIN(6,15,0)
|
||||
.fbdev_probe = vboxfb_create,
|
||||
#endif
|
||||
.major = DRIVER_MAJOR,
|
||||
.minor = DRIVER_MINOR,
|
||||
|
@ -411,7 +420,9 @@ static struct drm_driver driver = {
|
|||
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
|
||||
#endif
|
||||
.gem_prime_import = drm_gem_prime_import,
|
||||
#if RTLNX_VER_MAX(6,15,0)
|
||||
.gem_prime_import_sg_table = vbox_gem_prime_import_sg_table,
|
||||
#endif
|
||||
#if RTLNX_VER_MAX(6,6,0) && !RTLNX_RHEL_RANGE(9,4, 9,99) && !RTLNX_SUSE_MAJ_PREREQ(15, 6)
|
||||
.gem_prime_mmap = vbox_gem_prime_mmap,
|
||||
#endif
|
||||
|
|
|
@ -433,6 +433,8 @@ int vbox_framebuffer_init(struct drm_device *dev,
|
|||
#endif
|
||||
struct drm_gem_object *obj);
|
||||
|
||||
int vboxfb_create(struct drm_fb_helper *helper, struct drm_fb_helper_surface_size *sizes);
|
||||
|
||||
int vbox_fbdev_init(struct drm_device *dev);
|
||||
void vbox_fbdev_fini(struct drm_device *dev);
|
||||
void vbox_fbdev_set_base(struct vbox_private *vbox, unsigned long gpu_addr);
|
||||
|
|
|
@ -265,7 +265,7 @@ static struct fb_info *drm_fb_helper_alloc_fbi(struct drm_fb_helper *helper)
|
|||
}
|
||||
#endif
|
||||
|
||||
static int vboxfb_create(struct drm_fb_helper *helper,
|
||||
int vboxfb_create(struct drm_fb_helper *helper,
|
||||
struct drm_fb_helper_surface_size *sizes)
|
||||
{
|
||||
struct vbox_fbdev *fbdev =
|
||||
|
@ -413,9 +413,11 @@ static int vboxfb_create(struct drm_fb_helper *helper,
|
|||
return 0;
|
||||
}
|
||||
|
||||
#if RTLNX_VER_MAX(6,15,0)
|
||||
static struct drm_fb_helper_funcs vbox_fb_helper_funcs = {
|
||||
.fb_probe = vboxfb_create,
|
||||
};
|
||||
#endif
|
||||
|
||||
#if RTLNX_VER_MAX(4,3,0) && !RTLNX_RHEL_MAJ_PREREQ(7,3)
|
||||
static void drm_fb_helper_unregister_fbi(struct drm_fb_helper *fb_helper)
|
||||
|
@ -484,7 +486,9 @@ int vbox_fbdev_init(struct drm_device *dev)
|
|||
vbox->fbdev = fbdev;
|
||||
spin_lock_init(&fbdev->dirty_lock);
|
||||
|
||||
#if RTLNX_VER_MIN(6,3,0) || RTLNX_RHEL_RANGE(8,9, 8,99) || RTLNX_RHEL_RANGE(9,3, 9,99)
|
||||
#if RTLNX_VER_MIN(6,15,0)
|
||||
drm_fb_helper_prepare(dev, &fbdev->helper, 32, NULL);
|
||||
#elif RTLNX_VER_MIN(6,3,0) || RTLNX_RHEL_RANGE(8,9, 8,99) || RTLNX_RHEL_RANGE(9,3, 9,99)
|
||||
drm_fb_helper_prepare(dev, &fbdev->helper, 32, &vbox_fb_helper_funcs);
|
||||
#elif RTLNX_VER_MIN(3,17,0) || RTLNX_RHEL_MIN(7,2)
|
||||
drm_fb_helper_prepare(dev, &fbdev->helper, &vbox_fb_helper_funcs);
|
||||
|
|
|
@ -660,12 +660,13 @@ static int vbox_get_modes(struct drm_connector *connector)
|
|||
return num_modes;
|
||||
}
|
||||
|
||||
#if RTLNX_VER_MAX(3,14,0) && !RTLNX_RHEL_MAJ_PREREQ(7,1)
|
||||
static int vbox_mode_valid(struct drm_connector *connector,
|
||||
#if RTLNX_VER_MIN(6,15,0)
|
||||
static enum drm_mode_status vbox_mode_valid(struct drm_connector *connector, const struct drm_display_mode *mode)
|
||||
#elif RTLNX_VER_MIN(3,14,0) || RTLNX_RHEL_MAJ_PREREQ(7,1)
|
||||
static enum drm_mode_status vbox_mode_valid(struct drm_connector *connector, struct drm_display_mode *mode)
|
||||
#else
|
||||
static enum drm_mode_status vbox_mode_valid(struct drm_connector *connector,
|
||||
static int vbox_mode_valid(struct drm_connector *connector, struct drm_display_mode *mode)
|
||||
#endif
|
||||
struct drm_display_mode *mode)
|
||||
{
|
||||
return MODE_OK;
|
||||
}
|
||||
|
|
|
@ -49,18 +49,20 @@ struct sg_table *vbox_gem_prime_get_sg_table(struct drm_gem_object *obj)
|
|||
return ERR_PTR(-ENOSYS);
|
||||
}
|
||||
|
||||
#if RTLNX_VER_MAX(3,18,0) && !RTLNX_RHEL_MAJ_PREREQ(7,2)
|
||||
#if RTLNX_VER_MAX(6,15,0)
|
||||
# if RTLNX_VER_MAX(3,18,0) && !RTLNX_RHEL_MAJ_PREREQ(7,2)
|
||||
struct drm_gem_object *vbox_gem_prime_import_sg_table(
|
||||
struct drm_device *dev, size_t size, struct sg_table *table)
|
||||
#else
|
||||
# else
|
||||
struct drm_gem_object *vbox_gem_prime_import_sg_table(
|
||||
struct drm_device *dev, struct dma_buf_attachment *attach,
|
||||
struct sg_table *table)
|
||||
#endif
|
||||
# endif
|
||||
{
|
||||
WARN_ONCE(1, "not implemented");
|
||||
return ERR_PTR(-ENOSYS);
|
||||
}
|
||||
#endif
|
||||
|
||||
void *vbox_gem_prime_vmap(struct drm_gem_object *obj)
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#! /bin/sh
|
||||
# $Id: vboxadd.sh $
|
||||
## @file
|
||||
# Linux Additions kernel module init script ($Revision: 168394 $)
|
||||
# Linux Additions kernel module init script ($Revision: 168899 $)
|
||||
#
|
||||
|
||||
#
|
||||
|
@ -536,9 +536,10 @@ setup_modules()
|
|||
export KERN_VER
|
||||
info "Building the modules for kernel $KERN_VER."
|
||||
|
||||
# Prepend PATH for building UEK7 on OL8 distribution.
|
||||
# Prepend PATH for building UEK on OL8/9 distributions.
|
||||
case "$KERN_VER" in
|
||||
5.15.0-*.el8uek*) PATH="/opt/rh/gcc-toolset-11/root/usr/bin:$PATH";;
|
||||
6.12.0-*.el9uek*)PATH="/opt/rh/gcc-toolset-14/root/usr/bin:$PATH";;
|
||||
esac
|
||||
|
||||
# Detect if kernel was built with clang.
|
||||
|
@ -1041,6 +1042,8 @@ check_status_kernel()
|
|||
# Do not spoil $?.
|
||||
true
|
||||
fi
|
||||
else
|
||||
false
|
||||
fi
|
||||
|
||||
# Module vboxvideo is optional and expected to be loaded only when VM is
|
||||
|
|
|
@ -1088,7 +1088,9 @@ static int vbsf_inode_create(struct inode *parent, struct dentry *dentry, int mo
|
|||
* @param mode file mode
|
||||
* @returns 0 on success, Linux error code otherwise
|
||||
*/
|
||||
#if RTLNX_VER_MIN(6,3,0) || RTLNX_RHEL_RANGE(9,6, 9,99) || defined(DOXYGEN_RUNNING)
|
||||
#if RTLNX_VER_MIN(6,15,0)
|
||||
static struct dentry *vbsf_inode_mkdir(struct mnt_idmap *idmap, struct inode *parent, struct dentry *dentry, umode_t mode)
|
||||
#elif RTLNX_VER_MIN(6,3,0) || RTLNX_RHEL_RANGE(9,6, 9,99) || defined(DOXYGEN_RUNNING)
|
||||
static int vbsf_inode_mkdir(struct mnt_idmap *idmap, struct inode *parent, struct dentry *dentry, umode_t mode)
|
||||
#elif RTLNX_VER_MIN(5,12,0)
|
||||
static int vbsf_inode_mkdir(struct user_namespace *ns, struct inode *parent, struct dentry *dentry, umode_t mode)
|
||||
|
@ -1098,14 +1100,22 @@ static int vbsf_inode_mkdir(struct inode *parent, struct dentry *dentry, umode_t
|
|||
static int vbsf_inode_mkdir(struct inode *parent, struct dentry *dentry, int mode)
|
||||
#endif
|
||||
{
|
||||
int rc;
|
||||
|
||||
TRACE();
|
||||
AssertMsg(!(mode & S_IFMT) || (mode & S_IFMT) == S_IFDIR, ("0%o\n", mode));
|
||||
return vbsf_create_worker(parent, dentry, (mode & ~S_IFMT) | S_IFDIR,
|
||||
|
||||
rc = vbsf_create_worker(parent, dentry, (mode & ~S_IFMT) | S_IFDIR,
|
||||
SHFL_CF_ACT_CREATE_IF_NEW
|
||||
| SHFL_CF_ACT_FAIL_IF_EXISTS
|
||||
| SHFL_CF_ACCESS_READWRITE
|
||||
| SHFL_CF_DIRECTORY,
|
||||
false /*fStashHandle*/, false /*fDoLookup*/, NULL /*phHandle*/, NULL /*fCreated*/);
|
||||
#if RTLNX_VER_MIN(6,15,0)
|
||||
return ERR_PTR(rc);
|
||||
#else
|
||||
return rc;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -3695,11 +3695,12 @@ static int vbsf_readpage(struct file *file, struct page *page)
|
|||
* Needed for mmap and writes when the file is mmapped in a shared+writeable
|
||||
* fashion.
|
||||
*/
|
||||
#if RTLNX_VER_MIN(2,5,52)
|
||||
#if RTLNX_VER_MAX(6,16,0)
|
||||
# if RTLNX_VER_MIN(2,5,52)
|
||||
static int vbsf_writepage(struct page *page, struct writeback_control *wbc)
|
||||
#else
|
||||
# else
|
||||
static int vbsf_writepage(struct page *page)
|
||||
#endif
|
||||
# endif
|
||||
{
|
||||
struct address_space *mapping = page->mapping;
|
||||
struct inode *inode = mapping->host;
|
||||
|
@ -3742,11 +3743,11 @@ static int vbsf_writepage(struct page *page)
|
|||
&& offEndOfWrite > i_size_read(inode))
|
||||
i_size_write(inode, offEndOfWrite);
|
||||
|
||||
#if RTLNX_VER_MAX(6,12,0)
|
||||
# if RTLNX_VER_MAX(6,12,0)
|
||||
/* Update and unlock the page. */
|
||||
if (PageError(page))
|
||||
ClearPageError(page);
|
||||
#endif
|
||||
# endif
|
||||
SetPageUptodate(page);
|
||||
unlock_page(page);
|
||||
|
||||
|
@ -3768,12 +3769,13 @@ static int vbsf_writepage(struct page *page)
|
|||
printk("vbsf_writepage: no writable handle for %s..\n", sf_i->path->String.ach);
|
||||
err = -EIO;
|
||||
}
|
||||
#if RTLNX_VER_MAX(6,12,0)
|
||||
# if RTLNX_VER_MAX(6,12,0)
|
||||
SetPageError(page);
|
||||
#endif
|
||||
# endif
|
||||
unlock_page(page);
|
||||
return err;
|
||||
}
|
||||
#endif /* < 6.16.0 */
|
||||
|
||||
|
||||
#if RTLNX_VER_MIN(2,6,24)
|
||||
|
@ -3905,7 +3907,9 @@ struct address_space_operations vbsf_reg_aops = {
|
|||
#else
|
||||
.readpage = vbsf_readpage,
|
||||
#endif
|
||||
#if RTLNX_VER_MAX(6,16,0)
|
||||
.writepage = vbsf_writepage,
|
||||
#endif
|
||||
/** @todo Need .writepages if we want msync performance... */
|
||||
#if RTLNX_VER_MIN(5,18,0) || RTLNX_RHEL_RANGE(9,2, 9,99)
|
||||
.dirty_folio = filemap_dirty_folio,
|
||||
|
|
|
@ -3168,8 +3168,8 @@ static int drvAudioStreamPreBufComitting(PDRVAUDIO pThis, PDRVAUDIOSTREAM pStrea
|
|||
uint32_t cbPreBufWritten = 0;
|
||||
rc = pThis->pHostDrvAudio->pfnStreamPlay(pThis->pHostDrvAudio, pStreamEx->pBackend, &pStreamEx->Out.pbPreBuf[off],
|
||||
cbToWrite, &cbPreBufWritten);
|
||||
AssertRCBreak(rc);
|
||||
if (!cbPreBufWritten)
|
||||
if ( RT_FAILURE(rc)
|
||||
|| !cbPreBufWritten)
|
||||
break;
|
||||
AssertStmt(cbPreBufWritten <= cbToWrite, cbPreBufWritten = cbToWrite);
|
||||
off = (off + cbPreBufWritten) % cbAlloc;
|
||||
|
|
|
@ -154,6 +154,10 @@ typedef struct DRVHOSTAUDIOWASCACHEDEV
|
|||
/** Support for AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY: -1=unknown, 0=no, 1=yes. */
|
||||
int8_t fSupportsSrcDefaultQuality;
|
||||
#endif
|
||||
/** Flag indicating whether this device is considered as being 'stale'
|
||||
* (non-working / outdated interface / whatever) and can be removed
|
||||
* from the cache (if enabled). */
|
||||
bool fStale;
|
||||
/** List of cached configurations (DRVHOSTAUDIOWASCACHEDEVCFG). */
|
||||
RTLISTANCHOR ConfigList;
|
||||
/** The device ID length in RTUTF16 units. */
|
||||
|
@ -276,10 +280,10 @@ typedef struct DRVHOSTAUDIOWAS
|
|||
/** Semaphore for signalling that cache purge is done and that the destructor
|
||||
* can do cleanups. */
|
||||
RTSEMEVENTMULTI hEvtCachePurge;
|
||||
/** Total number of device config entire for capturing.
|
||||
/** Total number of device config entries for capturing.
|
||||
* This includes in-use ones. */
|
||||
uint32_t volatile cCacheEntriesIn;
|
||||
/** Total number of device config entire for playback.
|
||||
/** Total number of device config entries for playback.
|
||||
* This includes in-use ones. */
|
||||
uint32_t volatile cCacheEntriesOut;
|
||||
|
||||
|
@ -577,7 +581,7 @@ public:
|
|||
* of a device role, so we try avoiding that by only caring about eMultimedia.
|
||||
*
|
||||
* See @bugref{10844} */
|
||||
&& (enmRole == eMultimedia)
|
||||
&& enmRole == eMultimedia
|
||||
)
|
||||
{
|
||||
pIEnumerator = m_pDrvWas->pIEnumerator;
|
||||
|
@ -1158,6 +1162,7 @@ static int drvHostAudioWasCacheLookupOrCreateConfig(PDRVHOSTAUDIOWAS pThis, PDRV
|
|||
PCPDMAUDIOSTREAMCFG pCfgReq, bool fUseCache, bool fOnWorker,
|
||||
PDRVHOSTAUDIOWASCACHEDEVCFG *ppDevCfg)
|
||||
{
|
||||
Assert(!pDevEntry->fStale);
|
||||
PDRVHOSTAUDIOWASCACHEDEVCFG pDevCfg;
|
||||
|
||||
/*
|
||||
|
@ -1234,6 +1239,40 @@ static int drvHostAudioWasCacheLookupOrCreateConfig(PDRVHOSTAUDIOWAS pThis, PDRV
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Invalidates device cache entry configurations.
|
||||
*
|
||||
* @param pThis The WASAPI host audio driver instance data.
|
||||
* @param pDevEntry The device entry to invalidate.
|
||||
*/
|
||||
static void drvHostAudioWasCacheInvalidateDevEntryConfig(PDRVHOSTAUDIOWAS pThis, PDRVHOSTAUDIOWASCACHEDEV pDevEntry)
|
||||
{
|
||||
RT_NOREF(pThis);
|
||||
|
||||
LogRelFunc(("Invalidating cache entry configurations: %p - '%ls'\n", pDevEntry, pDevEntry->wszDevId));
|
||||
|
||||
PDRVHOSTAUDIOWASCACHEDEVCFG pDevCfg, pDevCfgNext;
|
||||
RTListForEachSafe(&pDevEntry->ConfigList, pDevCfg, pDevCfgNext, DRVHOSTAUDIOWASCACHEDEVCFG, ListEntry)
|
||||
{
|
||||
if (pDevCfg->pIAudioClient)
|
||||
{
|
||||
pDevCfg->pIAudioClient->Reset();
|
||||
pDevCfg->pIAudioClient->Release();
|
||||
pDevCfg->pIAudioClient = NULL;
|
||||
|
||||
}
|
||||
|
||||
if (pDevCfg->pIAudioRenderClient)
|
||||
{
|
||||
pDevCfg->pIAudioRenderClient->Release();
|
||||
pDevCfg->pIAudioRenderClient = NULL;
|
||||
}
|
||||
|
||||
pDevCfg->rcSetup = VERR_AUDIO_STREAM_INIT_IN_PROGRESS;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Looks up the given device + config combo in the cache, creating a new entry
|
||||
* if missing.
|
||||
|
@ -1256,13 +1295,12 @@ static int drvHostAudioWasCacheLookupOrCreate(PDRVHOSTAUDIOWAS pThis, IMMDevice
|
|||
{
|
||||
*ppDevCfg = NULL;
|
||||
|
||||
LogRel2(("WasAPI: Looking up or creating cache entry (caching is set to %s, iface %p)\n",
|
||||
pThis->fCacheEnabled ? "enabled" : "disabled", pIDevice));
|
||||
LogRel(("WasAPI: Looking up or creating cache entry (caching is set to %s, iface %p, %s init)\n",
|
||||
pThis->fCacheEnabled ? "enabled" : "disabled", pIDevice, fOnWorker ? "on worker" : "async"));
|
||||
|
||||
/*
|
||||
* Get the device ID so we can perform the lookup.
|
||||
*/
|
||||
int rc = VERR_AUDIO_STREAM_COULD_NOT_CREATE;
|
||||
LPWSTR pwszDevId = NULL;
|
||||
HRESULT hrc = pIDevice->GetId(&pwszDevId);
|
||||
if (SUCCEEDED(hrc))
|
||||
|
@ -1295,13 +1333,12 @@ static int drvHostAudioWasCacheLookupOrCreate(PDRVHOSTAUDIOWAS pThis, IMMDevice
|
|||
{
|
||||
LogRel2(("WasAPI: Checking for cached device '%ls' ...\n", pwszDevId));
|
||||
|
||||
#define DEVICE_STALE_OR_INVALID_BREAK(a_LogRel2What) \
|
||||
{ \
|
||||
#define DEVICE_STALE_OR_INVALID(a_LogRel2What) \
|
||||
do { \
|
||||
LogRel2(a_LogRel2What); \
|
||||
LogRel(("WasAPI: Stale or invalid audio interface '%ls' detected!\n", pDevEntry->wszDevId)); \
|
||||
rc = VERR_AUDIO_STREAM_NOT_READY; \
|
||||
break; \
|
||||
}
|
||||
pDevEntry->fStale = true; \
|
||||
} while (0)
|
||||
/*
|
||||
* The cache has two levels, so first the device entry.
|
||||
*/
|
||||
|
@ -1311,36 +1348,47 @@ static int drvHostAudioWasCacheLookupOrCreate(PDRVHOSTAUDIOWAS pThis, IMMDevice
|
|||
{
|
||||
if ( pDevEntry->cwcDevId == cwcDevId
|
||||
&& pDevEntry->enmDir == pCfgReq->enmDir
|
||||
&& RTUtf16Cmp(pDevEntry->wszDevId, pwszDevId) == 0)
|
||||
&& !pDevEntry->fStale
|
||||
&& memcmp(pDevEntry->wszDevId, pwszDevId, cwcDevId * sizeof(RTUTF16)) == 0)
|
||||
{
|
||||
/*
|
||||
* Cache hit.
|
||||
* First we need to check if the cached device interface is in a working (active) shape.
|
||||
*
|
||||
* First we need to check if the device interface we want to look up
|
||||
* actually matches the one we have in the cache entry. If it doesn't,
|
||||
* mark it as stale and continue looking. (We'll probably end up adding a
|
||||
* new device entry to the cache with the new interface below.)
|
||||
*
|
||||
* This is needed when switching audio interfaces and the device interface
|
||||
* becomes invalid via AUDCLNT_E_DEVICE_INVALIDATED. See @bugref{10503}.
|
||||
*/
|
||||
AssertPtrBreakStmt(pDevEntry->pIDevice, rc = VERR_AUDIO_STREAM_NOT_READY); /* Paranoia. */
|
||||
if (pDevEntry->pIDevice != pIDevice)
|
||||
DEVICE_STALE_OR_INVALID(("WasAPI: Cache hit for device '%ls': Stale interface detected (new: %p, old: %p)\n",
|
||||
pDevEntry->wszDevId, pIDevice, pDevEntry->pIDevice));
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Second, we need to check if the cached device interface is in a
|
||||
* working (active) shape.
|
||||
*/
|
||||
#if 0 /* However we've already checked this above, outside the loop and the pDevEntry->pIDevice == pIDevice! */
|
||||
hrc = pDevEntry->pIDevice->GetState(&dwState);
|
||||
if (SUCCEEDED(hrc))
|
||||
{
|
||||
if (dwState != DEVICE_STATE_ACTIVE)
|
||||
DEVICE_STALE_OR_INVALID_BREAK(("WasAPI: Cache hit for device '%ls': Is in non-active state (state is %s)\n",
|
||||
DEVICE_STALE_OR_INVALID(("WasAPI: Cache hit for device '%ls': Is in non-active state (state is %s)\n",
|
||||
pDevEntry->wszDevId, drvHostAudioWasMMDeviceStateToString(dwState)));
|
||||
}
|
||||
else
|
||||
DEVICE_STALE_OR_INVALID_BREAK(("WasAPI: Cache hit for device '%ls': Unable to retrieve state (hr=%#x)\n",
|
||||
DEVICE_STALE_OR_INVALID(("WasAPI: Cache hit for device '%ls': Unable to retrieve state (hr=%#x)\n",
|
||||
pDevEntry->wszDevId, hrc));
|
||||
/*
|
||||
* Next we now need to also check if the device interface we want to look up
|
||||
* actually matches the one we have in the cache entry.
|
||||
*
|
||||
* If it doesn't, bail out and add a new device entry to the cache with the new interface below then.
|
||||
*
|
||||
* This is needed when switching audio interfaces and the device interface becomes invalid via
|
||||
* AUDCLNT_E_DEVICE_INVALIDATED. See @bugref{10503}
|
||||
*/
|
||||
if (pDevEntry->pIDevice != pIDevice)
|
||||
DEVICE_STALE_OR_INVALID_BREAK(("WasAPI: Cache hit for device '%ls': Stale interface detected (new: %p, old: %p)\n",
|
||||
pDevEntry->wszDevId, pIDevice, pDevEntry->pIDevice));
|
||||
#endif
|
||||
}
|
||||
|
||||
LogRelFunc(("WasAPI: fOnWorker=%RTbool, fStaleDevice=%RTbool\n", fOnWorker, pDevEntry->fStale));
|
||||
|
||||
if (!pDevEntry->fStale)
|
||||
{
|
||||
LogRel2(("WasAPI: Cache hit for device '%ls' (iface %p)\n", pwszDevId, pIDevice));
|
||||
|
||||
CoTaskMemFree(pwszDevId);
|
||||
|
@ -1350,32 +1398,17 @@ static int drvHostAudioWasCacheLookupOrCreate(PDRVHOSTAUDIOWAS pThis, IMMDevice
|
|||
true /* fUseCache */, fOnWorker, ppDevCfg);
|
||||
}
|
||||
}
|
||||
}
|
||||
RTCritSectLeave(&pThis->CritSectCache);
|
||||
|
||||
if (!pDevEntry)
|
||||
LogRel2(("WasAPI: Cache miss for device '%ls' (iface %p)\n", pwszDevId, pIDevice));
|
||||
|
||||
#undef DEVICE_STALE_OR_INVALID_BREAK
|
||||
#undef DEVICE_STALE_OR_INVALID
|
||||
}
|
||||
|
||||
/*
|
||||
* If we got a stale or somehow other invalid cache entry, remove it first.
|
||||
*/
|
||||
if ( pThis->fCacheEnabled
|
||||
&& pDevEntry /* Cache hit? */
|
||||
&& rc == VERR_AUDIO_STREAM_NOT_READY)
|
||||
{
|
||||
LogRel2(("WasAPI: Removing stale device '%ls' from cache (iface %p)\n", pDevEntry->wszDevId, pDevEntry->pIDevice));
|
||||
|
||||
RTCritSectEnter(&pThis->CritSectCache);
|
||||
RTListNodeRemove(&pDevEntry->ListEntry);
|
||||
RTCritSectLeave(&pThis->CritSectCache);
|
||||
|
||||
drvHostAudioWasCacheDestroyDevEntry(pThis, pDevEntry);
|
||||
pDevEntry = NULL;
|
||||
|
||||
rc = VINF_SUCCESS;
|
||||
}
|
||||
/* Note: An active device marked as being stale will be removed from the cache
|
||||
after the device switch has been completed. */
|
||||
|
||||
/*
|
||||
* Device not in the cache (anymore), (re-)add it.
|
||||
|
@ -1411,11 +1444,13 @@ static int drvHostAudioWasCacheLookupOrCreate(PDRVHOSTAUDIOWAS pThis, IMMDevice
|
|||
RTListForEach(&pThis->CacheHead, pDevEntry2, DRVHOSTAUDIOWASCACHEDEV, ListEntry)
|
||||
{
|
||||
if ( pDevEntry2->cwcDevId == cwcDevId
|
||||
&& !pDevEntry->fStale
|
||||
/* Note: We have to compare the device interface here as well, as a cached device entry might
|
||||
* have a stale audio interface for the same device. In such a case a new device entry will be created below. */
|
||||
have a stale audio interface for the same device. In such a case a new device entry will be created below.
|
||||
Update: This predates the fStale flag and is just kept for safety. */
|
||||
&& pDevEntry2->pIDevice == pIDevice
|
||||
&& pDevEntry2->enmDir == pCfgReq->enmDir
|
||||
&& RTUtf16Cmp(pDevEntry2->wszDevId, pDevEntry->wszDevId) == 0)
|
||||
&& memcmp(pDevEntry2->wszDevId, pDevEntry->wszDevId, cwcDevId * sizeof(RTUTF16)) == 0)
|
||||
{
|
||||
pIDevice->Release();
|
||||
RTMemFree(pDevEntry);
|
||||
|
@ -1440,7 +1475,7 @@ static int drvHostAudioWasCacheLookupOrCreate(PDRVHOSTAUDIOWAS pThis, IMMDevice
|
|||
}
|
||||
else
|
||||
LogRelMax(64, ("WasAPI: GetId failed (lookup): %Rhrc\n", hrc));
|
||||
return rc;
|
||||
return VERR_AUDIO_STREAM_COULD_NOT_CREATE;
|
||||
}
|
||||
|
||||
|
||||
|
@ -2000,6 +2035,17 @@ static void drvHostAudioWasCompleteStreamDevSwitch(PDRVHOSTAUDIOWAS pThis, PDRVH
|
|||
/* Put the old config back into the cache. */
|
||||
drvHostAudioWasCachePutBack(pThis, pDevCfgOld);
|
||||
|
||||
AssertPtr(pDevCfgOld->pDevEntry);
|
||||
if (pDevCfgOld->pDevEntry->fStale)
|
||||
{
|
||||
LogRelFunc(("Removing stale device from cache\n"));
|
||||
RTListNodeRemove(&pDevCfgOld->pDevEntry->ListEntry);
|
||||
|
||||
drvHostAudioWasCacheInvalidateDevEntryConfig(pThis, pDevCfgOld->pDevEntry);
|
||||
drvHostAudioWasCacheDestroyDevEntry(pThis, pDevCfgOld->pDevEntry);
|
||||
pDevCfgOld = NULL; /* Got invalid due to drvHostAudioWasCacheDestroyDevEntry() above. */
|
||||
}
|
||||
|
||||
LogFlowFunc(("returns with '%s' state: %s\n", pStreamWas->Cfg.szName, drvHostWasStreamStatusString(pStreamWas) ));
|
||||
}
|
||||
|
||||
|
@ -2041,6 +2087,7 @@ static DECLCALLBACK(void) drvHostAudioWasHA_DoOnWorkerThread(PPDMIHOSTAUDIO pInt
|
|||
switch (uUser)
|
||||
{
|
||||
case DRVHOSTAUDIOWAS_DO_PURGE_CACHE:
|
||||
LogFlowFunc(("DRVHOSTAUDIOWAS_DO_PURGE_CACHE\n"));
|
||||
Assert(pStream == NULL);
|
||||
Assert(pvUser == NULL);
|
||||
Assert(pThis->fCacheEnabled);
|
||||
|
@ -2048,6 +2095,7 @@ static DECLCALLBACK(void) drvHostAudioWasHA_DoOnWorkerThread(PPDMIHOSTAUDIO pInt
|
|||
break;
|
||||
|
||||
case DRVHOSTAUDIOWAS_DO_PRUNE_CACHE:
|
||||
LogFlowFunc(("DRVHOSTAUDIOWAS_DO_PRUNE_CACHE\n"));
|
||||
Assert(pStream == NULL);
|
||||
Assert(pvUser == NULL);
|
||||
Assert(pThis->fCacheEnabled);
|
||||
|
@ -2055,6 +2103,7 @@ static DECLCALLBACK(void) drvHostAudioWasHA_DoOnWorkerThread(PPDMIHOSTAUDIO pInt
|
|||
break;
|
||||
|
||||
case DRVHOSTAUDIOWAS_DO_STREAM_DEV_SWITCH:
|
||||
LogFlowFunc(("DRVHOSTAUDIOWAS_DO_STREAM_DEV_SWITCH\n"));
|
||||
AssertPtr(pStream);
|
||||
AssertPtr(pvUser);
|
||||
drvHostAudioWasDoStreamDevSwitch(pThis, (PDRVHOSTAUDIOWASSTREAM)pStream, (PDRVHOSTAUDIOWASCACHEDEVCFG)pvUser);
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1513,7 +1513,7 @@ init_bios_area: ; 0xc0a27 LB 0x3e
|
|||
mov word [es:bx+00087h], 0f960h ; 26 c7 87 87 00 60 f9 ; 0xc0a44 vgabios.c:234
|
||||
mov byte [es:bx+00089h], 051h ; 26 c6 87 89 00 51 ; 0xc0a4b vgabios.c:238
|
||||
mov byte [es:bx+065h], 009h ; 26 c6 47 65 09 ; 0xc0a51 vgabios.c:240
|
||||
mov word [es:bx+000a8h], 0554dh ; 26 c7 87 a8 00 4d 55 ; 0xc0a56 vgabios.c:242
|
||||
mov word [es:bx+000a8h], 0554eh ; 26 c7 87 a8 00 4e 55 ; 0xc0a56 vgabios.c:242
|
||||
mov [es:bx+000aah], ds ; 26 8c 9f aa 00 ; 0xc0a5d
|
||||
pop bp ; 5d ; 0xc0a62 vgabios.c:243
|
||||
pop bx ; 5b ; 0xc0a63
|
||||
|
@ -2002,7 +2002,7 @@ vga_read_char_attr: ; 0xc0dd6 LB 0x130
|
|||
mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xc0e40 vgabios.c:557
|
||||
xor bh, bh ; 30 ff ; 0xc0e43
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc0e45
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc0e48
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc0e48
|
||||
jne short 00e7fh ; 75 30 ; 0xc0e4d
|
||||
mov ax, di ; 89 f8 ; 0xc0e4f vgabios.c:559
|
||||
mul word [bp-014h] ; f7 66 ec ; 0xc0e51
|
||||
|
@ -2020,13 +2020,13 @@ vga_read_char_attr: ; 0xc0dd6 LB 0x130
|
|||
add di, dx ; 01 d7 ; 0xc0e6b
|
||||
add di, di ; 01 ff ; 0xc0e6d
|
||||
add di, cx ; 01 cf ; 0xc0e6f
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc0e71 vgabios.c:55
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc0e71 vgabios.c:55
|
||||
mov ax, word [es:di] ; 26 8b 05 ; 0xc0e75
|
||||
push SS ; 16 ; 0xc0e78 vgabios.c:58
|
||||
pop ES ; 07 ; 0xc0e79
|
||||
mov word [es:si], ax ; 26 89 04 ; 0xc0e7a
|
||||
jmp short 00dffh ; eb 80 ; 0xc0e7d vgabios.c:561
|
||||
mov bl, byte [bx+047adh] ; 8a 9f ad 47 ; 0xc0e7f vgabios.c:562
|
||||
mov bl, byte [bx+047aeh] ; 8a 9f ae 47 ; 0xc0e7f vgabios.c:562
|
||||
cmp bl, 005h ; 80 fb 05 ; 0xc0e83
|
||||
je short 00ed6h ; 74 4e ; 0xc0e86
|
||||
cmp bl, 002h ; 80 fb 02 ; 0xc0e88
|
||||
|
@ -2129,18 +2129,18 @@ vga_get_font_info: ; 0xc0f16 LB 0x83
|
|||
retn 00002h ; c2 02 00 ; 0xc0f6f
|
||||
mov bx, 0010ch ; bb 0c 01 ; 0xc0f72 vgabios.c:67
|
||||
jmp short 00f30h ; eb b9 ; 0xc0f75
|
||||
mov dx, 05d69h ; ba 69 5d ; 0xc0f77 vgabios.c:601
|
||||
mov dx, 05d6ah ; ba 6a 5d ; 0xc0f77 vgabios.c:601
|
||||
mov ax, ds ; 8c d8 ; 0xc0f7a
|
||||
jmp short 00f3bh ; eb bd ; 0xc0f7c vgabios.c:602
|
||||
mov dx, 05569h ; ba 69 55 ; 0xc0f7e vgabios.c:604
|
||||
mov dx, 0556ah ; ba 6a 55 ; 0xc0f7e vgabios.c:604
|
||||
jmp short 00f7ah ; eb f7 ; 0xc0f81
|
||||
mov dx, 05969h ; ba 69 59 ; 0xc0f83 vgabios.c:607
|
||||
mov dx, 0596ah ; ba 6a 59 ; 0xc0f83 vgabios.c:607
|
||||
jmp short 00f7ah ; eb f2 ; 0xc0f86
|
||||
mov dx, 07b69h ; ba 69 7b ; 0xc0f88 vgabios.c:610
|
||||
mov dx, 07b6ah ; ba 6a 7b ; 0xc0f88 vgabios.c:610
|
||||
jmp short 00f7ah ; eb ed ; 0xc0f8b
|
||||
mov dx, 06b69h ; ba 69 6b ; 0xc0f8d vgabios.c:613
|
||||
mov dx, 06b6ah ; ba 6a 6b ; 0xc0f8d vgabios.c:613
|
||||
jmp short 00f7ah ; eb e8 ; 0xc0f90
|
||||
mov dx, 07c96h ; ba 96 7c ; 0xc0f92 vgabios.c:616
|
||||
mov dx, 07c97h ; ba 97 7c ; 0xc0f92 vgabios.c:616
|
||||
jmp short 00f7ah ; eb e3 ; 0xc0f95
|
||||
jmp short 00f6ch ; eb d3 ; 0xc0f97 vgabios.c:622
|
||||
; disGetNextSymbol 0xc0f99 LB 0x3599 -> off=0x0 cb=0000000000000166 uValue=00000000000c0f99 'vga_read_pixel'
|
||||
|
@ -2166,10 +2166,10 @@ vga_read_pixel: ; 0xc0f99 LB 0x166
|
|||
mov bl, al ; 88 c3 ; 0xc0fc1 vgabios.c:645
|
||||
xor bh, bh ; 30 ff ; 0xc0fc3
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc0fc5
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc0fc8
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc0fc8
|
||||
jne short 00fd2h ; 75 03 ; 0xc0fcd
|
||||
jmp near 010f8h ; e9 26 01 ; 0xc0fcf vgabios.c:646
|
||||
mov ch, byte [bx+047adh] ; 8a af ad 47 ; 0xc0fd2 vgabios.c:649
|
||||
mov ch, byte [bx+047aeh] ; 8a af ae 47 ; 0xc0fd2 vgabios.c:649
|
||||
cmp ch, 003h ; 80 fd 03 ; 0xc0fd6
|
||||
jc short 00feah ; 72 0f ; 0xc0fd9
|
||||
jbe short 00ff2h ; 76 15 ; 0xc0fdb
|
||||
|
@ -2225,7 +2225,7 @@ vga_read_pixel: ; 0xc0f99 LB 0x166
|
|||
inc byte [bp-006h] ; fe 46 fa ; 0xc1058 vgabios.c:661
|
||||
jmp short 0102ch ; eb cf ; 0xc105b
|
||||
jmp near 010f0h ; e9 90 00 ; 0xc105d
|
||||
mov cl, byte [bx+047aeh] ; 8a 8f ae 47 ; 0xc1060 vgabios.c:664
|
||||
mov cl, byte [bx+047afh] ; 8a 8f af 47 ; 0xc1060 vgabios.c:664
|
||||
xor ch, ch ; 30 ed ; 0xc1064
|
||||
mov bx, strict word 00004h ; bb 04 00 ; 0xc1066
|
||||
sub bx, cx ; 29 cb ; 0xc1069
|
||||
|
@ -2246,7 +2246,7 @@ vga_read_pixel: ; 0xc0f99 LB 0x166
|
|||
mov bl, ah ; 88 e3 ; 0xc108c vgabios.c:668
|
||||
xor bh, bh ; 30 ff ; 0xc108e
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc1090
|
||||
cmp byte [bx+047aeh], 002h ; 80 bf ae 47 02 ; 0xc1093
|
||||
cmp byte [bx+047afh], 002h ; 80 bf af 47 02 ; 0xc1093
|
||||
jne short 010b5h ; 75 1b ; 0xc1098
|
||||
mov cx, si ; 89 f1 ; 0xc109a vgabios.c:669
|
||||
xor ch, ch ; 30 ed ; 0xc109c
|
||||
|
@ -2610,7 +2610,7 @@ biosfn_set_active_page: ; 0xc1322 LB 0xd8
|
|||
xor bh, bh ; 30 ff ; 0xc135b
|
||||
mov si, bx ; 89 de ; 0xc135d
|
||||
sal si, 003h ; c1 e6 03 ; 0xc135f
|
||||
cmp byte [si+047ach], 000h ; 80 bc ac 47 00 ; 0xc1362
|
||||
cmp byte [si+047adh], 000h ; 80 bc ad 47 00 ; 0xc1362
|
||||
jne short 013a8h ; 75 3f ; 0xc1367
|
||||
mov bx, strict word 0004ah ; bb 4a 00 ; 0xc1369 vgabios.c:57
|
||||
mov ax, strict word 00040h ; b8 40 00 ; 0xc136c
|
||||
|
@ -2637,11 +2637,11 @@ biosfn_set_active_page: ; 0xc1322 LB 0xd8
|
|||
lea ax, [di+001h] ; 8d 45 01 ; 0xc13a0
|
||||
mul word [bp-00ch] ; f7 66 f4 ; 0xc13a3
|
||||
jmp short 013b7h ; eb 0f ; 0xc13a6 vgabios.c:860
|
||||
mov bl, byte [bx+0482bh] ; 8a 9f 2b 48 ; 0xc13a8 vgabios.c:862
|
||||
mov bl, byte [bx+0482ch] ; 8a 9f 2c 48 ; 0xc13a8 vgabios.c:862
|
||||
sal bx, 006h ; c1 e3 06 ; 0xc13ac
|
||||
mov al, cl ; 88 c8 ; 0xc13af
|
||||
xor ah, ah ; 30 e4 ; 0xc13b1
|
||||
mul word [bx+04842h] ; f7 a7 42 48 ; 0xc13b3
|
||||
mul word [bx+04843h] ; f7 a7 43 48 ; 0xc13b3
|
||||
mov bx, ax ; 89 c3 ; 0xc13b7
|
||||
mov si, strict word 00063h ; be 63 00 ; 0xc13b9 vgabios.c:57
|
||||
mov ax, strict word 00040h ; b8 40 00 ; 0xc13bc
|
||||
|
@ -2686,7 +2686,7 @@ find_vpti: ; 0xc13fa LB 0x45
|
|||
xor bh, bh ; 30 ff ; 0xc1401
|
||||
mov si, bx ; 89 de ; 0xc1403
|
||||
sal si, 003h ; c1 e6 03 ; 0xc1405
|
||||
cmp byte [si+047ach], 000h ; 80 bc ac 47 00 ; 0xc1408
|
||||
cmp byte [si+047adh], 000h ; 80 bc ad 47 00 ; 0xc1408
|
||||
jne short 01435h ; 75 26 ; 0xc140d
|
||||
mov si, 00089h ; be 89 00 ; 0xc140f vgabios.c:47
|
||||
mov ax, strict word 00040h ; b8 40 00 ; 0xc1412
|
||||
|
@ -2694,16 +2694,16 @@ find_vpti: ; 0xc13fa LB 0x45
|
|||
mov al, byte [es:si] ; 26 8a 04 ; 0xc1417
|
||||
test AL, strict byte 010h ; a8 10 ; 0xc141a vgabios.c:923
|
||||
je short 01424h ; 74 06 ; 0xc141c
|
||||
mov al, byte [bx+07df2h] ; 8a 87 f2 7d ; 0xc141e vgabios.c:924
|
||||
mov al, byte [bx+07df3h] ; 8a 87 f3 7d ; 0xc141e vgabios.c:924
|
||||
jmp short 01432h ; eb 0e ; 0xc1422 vgabios.c:925
|
||||
test AL, strict byte 080h ; a8 80 ; 0xc1424
|
||||
je short 0142eh ; 74 06 ; 0xc1426
|
||||
mov al, byte [bx+07de2h] ; 8a 87 e2 7d ; 0xc1428 vgabios.c:926
|
||||
mov al, byte [bx+07de3h] ; 8a 87 e3 7d ; 0xc1428 vgabios.c:926
|
||||
jmp short 01432h ; eb 04 ; 0xc142c vgabios.c:927
|
||||
mov al, byte [bx+07deah] ; 8a 87 ea 7d ; 0xc142e vgabios.c:928
|
||||
mov al, byte [bx+07debh] ; 8a 87 eb 7d ; 0xc142e vgabios.c:928
|
||||
cbw ; 98 ; 0xc1432
|
||||
jmp short 0143bh ; eb 06 ; 0xc1433 vgabios.c:929
|
||||
mov al, byte [bx+0482bh] ; 8a 87 2b 48 ; 0xc1435 vgabios.c:930
|
||||
mov al, byte [bx+0482ch] ; 8a 87 2c 48 ; 0xc1435 vgabios.c:930
|
||||
xor ah, ah ; 30 e4 ; 0xc1439
|
||||
pop bp ; 5d ; 0xc143b vgabios.c:933
|
||||
pop si ; 5e ; 0xc143c
|
||||
|
@ -2765,13 +2765,13 @@ biosfn_set_video_mode: ; 0xc143f LB 0x4d5
|
|||
jne short 01501h ; 75 46 ; 0xc14b9
|
||||
mov di, cx ; 89 cf ; 0xc14bb vgabios.c:999
|
||||
sal di, 003h ; c1 e7 03 ; 0xc14bd
|
||||
mov al, byte [di+047b1h] ; 8a 85 b1 47 ; 0xc14c0
|
||||
mov al, byte [di+047b2h] ; 8a 85 b2 47 ; 0xc14c0
|
||||
mov dx, 003c6h ; ba c6 03 ; 0xc14c4
|
||||
out DX, AL ; ee ; 0xc14c7
|
||||
xor al, al ; 30 c0 ; 0xc14c8 vgabios.c:1002
|
||||
mov dx, 003c8h ; ba c8 03 ; 0xc14ca
|
||||
out DX, AL ; ee ; 0xc14cd
|
||||
mov cl, byte [di+047b2h] ; 8a 8d b2 47 ; 0xc14ce vgabios.c:1005
|
||||
mov cl, byte [di+047b3h] ; 8a 8d b3 47 ; 0xc14ce vgabios.c:1005
|
||||
cmp cl, 001h ; 80 f9 01 ; 0xc14d2
|
||||
jc short 014e8h ; 72 11 ; 0xc14d5
|
||||
jbe short 014f3h ; 76 1a ; 0xc14d7
|
||||
|
@ -2783,24 +2783,24 @@ biosfn_set_video_mode: ; 0xc143f LB 0x4d5
|
|||
jmp near 0190ah ; e9 22 04 ; 0xc14e5
|
||||
test cl, cl ; 84 c9 ; 0xc14e8
|
||||
jne short 01509h ; 75 1d ; 0xc14ea
|
||||
mov word [bp-014h], 04fbfh ; c7 46 ec bf 4f ; 0xc14ec vgabios.c:1007
|
||||
mov word [bp-014h], 04fc0h ; c7 46 ec c0 4f ; 0xc14ec vgabios.c:1007
|
||||
jmp short 01509h ; eb 16 ; 0xc14f1 vgabios.c:1008
|
||||
mov word [bp-014h], 0507fh ; c7 46 ec 7f 50 ; 0xc14f3 vgabios.c:1010
|
||||
mov word [bp-014h], 05080h ; c7 46 ec 80 50 ; 0xc14f3 vgabios.c:1010
|
||||
jmp short 01509h ; eb 0f ; 0xc14f8 vgabios.c:1011
|
||||
mov word [bp-014h], 0513fh ; c7 46 ec 3f 51 ; 0xc14fa vgabios.c:1013
|
||||
mov word [bp-014h], 05140h ; c7 46 ec 40 51 ; 0xc14fa vgabios.c:1013
|
||||
jmp short 01509h ; eb 08 ; 0xc14ff vgabios.c:1014
|
||||
jmp near 01578h ; e9 74 00 ; 0xc1501
|
||||
mov word [bp-014h], 051ffh ; c7 46 ec ff 51 ; 0xc1504 vgabios.c:1016
|
||||
mov word [bp-014h], 05200h ; c7 46 ec 00 52 ; 0xc1504 vgabios.c:1016
|
||||
mov al, byte [bp-012h] ; 8a 46 ee ; 0xc1509 vgabios.c:1020
|
||||
xor ah, ah ; 30 e4 ; 0xc150c
|
||||
mov di, ax ; 89 c7 ; 0xc150e
|
||||
sal di, 003h ; c1 e7 03 ; 0xc1510
|
||||
cmp byte [di+047ach], 000h ; 80 bd ac 47 00 ; 0xc1513
|
||||
cmp byte [di+047adh], 000h ; 80 bd ad 47 00 ; 0xc1513
|
||||
jne short 01529h ; 75 0f ; 0xc1518
|
||||
mov es, [bp-01eh] ; 8e 46 e2 ; 0xc151a vgabios.c:1022
|
||||
cmp byte [es:si+002h], 008h ; 26 80 7c 02 08 ; 0xc151d
|
||||
jne short 01529h ; 75 05 ; 0xc1522
|
||||
mov word [bp-014h], 0507fh ; c7 46 ec 7f 50 ; 0xc1524 vgabios.c:1023
|
||||
mov word [bp-014h], 05080h ; c7 46 ec 80 50 ; 0xc1524 vgabios.c:1023
|
||||
xor cx, cx ; 31 c9 ; 0xc1529 vgabios.c:1026
|
||||
jmp short 0153ch ; eb 0f ; 0xc152b
|
||||
xor al, al ; 30 c0 ; 0xc152d vgabios.c:1033
|
||||
|
@ -2815,9 +2815,9 @@ biosfn_set_video_mode: ; 0xc143f LB 0x4d5
|
|||
xor ah, ah ; 30 e4 ; 0xc153f
|
||||
mov di, ax ; 89 c7 ; 0xc1541
|
||||
sal di, 003h ; c1 e7 03 ; 0xc1543
|
||||
mov al, byte [di+047b2h] ; 8a 85 b2 47 ; 0xc1546
|
||||
mov al, byte [di+047b3h] ; 8a 85 b3 47 ; 0xc1546
|
||||
mov di, ax ; 89 c7 ; 0xc154a
|
||||
mov al, byte [di+0483bh] ; 8a 85 3b 48 ; 0xc154c
|
||||
mov al, byte [di+0483ch] ; 8a 85 3c 48 ; 0xc154c
|
||||
cmp cx, ax ; 39 c1 ; 0xc1550
|
||||
jnbe short 0152dh ; 77 d9 ; 0xc1552
|
||||
imul di, cx, strict byte 00003h ; 6b f9 03 ; 0xc1554
|
||||
|
@ -2928,7 +2928,7 @@ biosfn_set_video_mode: ; 0xc143f LB 0x4d5
|
|||
xor ah, ah ; 30 e4 ; 0xc1647
|
||||
mov di, ax ; 89 c7 ; 0xc1649
|
||||
sal di, 003h ; c1 e7 03 ; 0xc164b
|
||||
cmp byte [di+047adh], 001h ; 80 bd ad 47 01 ; 0xc164e
|
||||
cmp byte [di+047aeh], 001h ; 80 bd ae 47 01 ; 0xc164e
|
||||
jne short 0165ah ; 75 05 ; 0xc1653
|
||||
mov cx, 003b4h ; b9 b4 03 ; 0xc1655
|
||||
jmp short 0165dh ; eb 03 ; 0xc1658
|
||||
|
@ -2970,9 +2970,9 @@ biosfn_set_video_mode: ; 0xc143f LB 0x4d5
|
|||
xor ah, ah ; 30 e4 ; 0xc16a8
|
||||
mov di, ax ; 89 c7 ; 0xc16aa
|
||||
sal di, 003h ; c1 e7 03 ; 0xc16ac
|
||||
cmp byte [di+047ach], 000h ; 80 bd ac 47 00 ; 0xc16af
|
||||
cmp byte [di+047adh], 000h ; 80 bd ad 47 00 ; 0xc16af
|
||||
jne short 016c8h ; 75 12 ; 0xc16b4
|
||||
mov es, [di+047afh] ; 8e 85 af 47 ; 0xc16b6 vgabios.c:1102
|
||||
mov es, [di+047b0h] ; 8e 85 b0 47 ; 0xc16b6 vgabios.c:1102
|
||||
mov cx, 04000h ; b9 00 40 ; 0xc16ba
|
||||
mov ax, 00720h ; b8 20 07 ; 0xc16bd
|
||||
xor di, di ; 31 ff ; 0xc16c0
|
||||
|
@ -2981,7 +2981,7 @@ biosfn_set_video_mode: ; 0xc143f LB 0x4d5
|
|||
jmp short 01704h ; eb 3c ; 0xc16c6 vgabios.c:1104
|
||||
cmp byte [bp-010h], 00dh ; 80 7e f0 0d ; 0xc16c8 vgabios.c:1106
|
||||
jnc short 016dfh ; 73 11 ; 0xc16cc
|
||||
mov es, [di+047afh] ; 8e 85 af 47 ; 0xc16ce vgabios.c:1108
|
||||
mov es, [di+047b0h] ; 8e 85 b0 47 ; 0xc16ce vgabios.c:1108
|
||||
mov cx, 04000h ; b9 00 40 ; 0xc16d2
|
||||
xor al, al ; 30 c0 ; 0xc16d5
|
||||
xor di, di ; 31 ff ; 0xc16d7
|
||||
|
@ -2998,7 +2998,7 @@ biosfn_set_video_mode: ; 0xc143f LB 0x4d5
|
|||
mov word [bp-020h], ax ; 89 46 e0 ; 0xc16eb
|
||||
mov AL, strict byte 00fh ; b0 0f ; 0xc16ee vgabios.c:1114
|
||||
out DX, AL ; ee ; 0xc16f0
|
||||
mov es, [di+047afh] ; 8e 85 af 47 ; 0xc16f1 vgabios.c:1115
|
||||
mov es, [di+047b0h] ; 8e 85 b0 47 ; 0xc16f1 vgabios.c:1115
|
||||
mov cx, 08000h ; b9 00 80 ; 0xc16f5
|
||||
xor ax, ax ; 31 c0 ; 0xc16f8
|
||||
xor di, di ; 31 ff ; 0xc16fa
|
||||
|
@ -3049,7 +3049,7 @@ biosfn_set_video_mode: ; 0xc143f LB 0x4d5
|
|||
cmp AL, strict byte 007h ; 3c 07 ; 0xc1779
|
||||
jnbe short 017a2h ; 77 25 ; 0xc177b
|
||||
mov di, ax ; 89 c7 ; 0xc177d vgabios.c:1136
|
||||
mov al, byte [di+07ddah] ; 8a 85 da 7d ; 0xc177f
|
||||
mov al, byte [di+07ddbh] ; 8a 85 db 7d ; 0xc177f
|
||||
mov di, strict word 00065h ; bf 65 00 ; 0xc1783 vgabios.c:52
|
||||
mov byte [es:di], al ; 26 88 05 ; 0xc1786
|
||||
cmp byte [bp-010h], 006h ; 80 7e f0 06 ; 0xc1789 vgabios.c:1137
|
||||
|
@ -3065,7 +3065,7 @@ biosfn_set_video_mode: ; 0xc143f LB 0x4d5
|
|||
xor ah, ah ; 30 e4 ; 0xc17a5
|
||||
mov di, ax ; 89 c7 ; 0xc17a7
|
||||
sal di, 003h ; c1 e7 03 ; 0xc17a9
|
||||
cmp byte [di+047ach], 000h ; 80 bd ac 47 00 ; 0xc17ac
|
||||
cmp byte [di+047adh], 000h ; 80 bd ad 47 00 ; 0xc17ac
|
||||
jne short 017bch ; 75 09 ; 0xc17b1
|
||||
mov dx, strict word 00007h ; ba 07 00 ; 0xc17b3 vgabios.c:1143
|
||||
mov ax, strict word 00006h ; b8 06 00 ; 0xc17b6
|
||||
|
@ -3086,7 +3086,7 @@ biosfn_set_video_mode: ; 0xc143f LB 0x4d5
|
|||
xor ah, ah ; 30 e4 ; 0xc17d9
|
||||
mov di, ax ; 89 c7 ; 0xc17db
|
||||
sal di, 003h ; c1 e7 03 ; 0xc17dd
|
||||
cmp byte [di+047ach], 000h ; 80 bd ac 47 00 ; 0xc17e0
|
||||
cmp byte [di+047adh], 000h ; 80 bd ad 47 00 ; 0xc17e0
|
||||
jne short 01851h ; 75 6a ; 0xc17e5
|
||||
mov es, [bp-018h] ; 8e 46 e8 ; 0xc17e7 vgabios.c:1157
|
||||
mov di, word [es:bx+008h] ; 26 8b 7f 08 ; 0xc17ea
|
||||
|
@ -3105,7 +3105,7 @@ biosfn_set_video_mode: ; 0xc143f LB 0x4d5
|
|||
push strict byte 00000h ; 6a 00 ; 0xc1810
|
||||
push strict byte 00000h ; 6a 00 ; 0xc1812
|
||||
mov cx, 00100h ; b9 00 01 ; 0xc1814
|
||||
mov bx, 05569h ; bb 69 55 ; 0xc1817
|
||||
mov bx, 0556ah ; bb 6a 55 ; 0xc1817
|
||||
mov dx, 0c000h ; ba 00 c0 ; 0xc181a
|
||||
xor al, al ; 30 c0 ; 0xc181d
|
||||
call 02e1ah ; e8 f8 15 ; 0xc181f
|
||||
|
@ -3116,7 +3116,7 @@ biosfn_set_video_mode: ; 0xc143f LB 0x4d5
|
|||
push strict byte 00000h ; 6a 00 ; 0xc1829
|
||||
push strict byte 00000h ; 6a 00 ; 0xc182b
|
||||
mov cx, 00100h ; b9 00 01 ; 0xc182d
|
||||
mov bx, 05d69h ; bb 69 5d ; 0xc1830
|
||||
mov bx, 05d6ah ; bb 6a 5d ; 0xc1830
|
||||
mov dx, 0c000h ; ba 00 c0 ; 0xc1833
|
||||
xor al, al ; 30 c0 ; 0xc1836
|
||||
call 02e1ah ; e8 df 15 ; 0xc1838
|
||||
|
@ -3124,7 +3124,7 @@ biosfn_set_video_mode: ; 0xc143f LB 0x4d5
|
|||
jne short 01879h ; 75 38 ; 0xc183f
|
||||
mov cx, strict word 0000eh ; b9 0e 00 ; 0xc1841 vgabios.c:1166
|
||||
xor bx, bx ; 31 db ; 0xc1844
|
||||
mov dx, 07b69h ; ba 69 7b ; 0xc1846
|
||||
mov dx, 07b6ah ; ba 6a 7b ; 0xc1846
|
||||
mov ax, 0c000h ; b8 00 c0 ; 0xc1849
|
||||
call 02da5h ; e8 56 15 ; 0xc184c
|
||||
jmp short 01879h ; eb 28 ; 0xc184f vgabios.c:1167
|
||||
|
@ -3135,13 +3135,13 @@ biosfn_set_video_mode: ; 0xc143f LB 0x4d5
|
|||
push strict byte 00000h ; 6a 00 ; 0xc1859
|
||||
push strict byte 00000h ; 6a 00 ; 0xc185b
|
||||
mov cx, 00100h ; b9 00 01 ; 0xc185d
|
||||
mov bx, 06b69h ; bb 69 6b ; 0xc1860
|
||||
mov bx, 06b6ah ; bb 6a 6b ; 0xc1860
|
||||
mov dx, 0c000h ; ba 00 c0 ; 0xc1863
|
||||
xor al, al ; 30 c0 ; 0xc1866
|
||||
call 02e1ah ; e8 af 15 ; 0xc1868
|
||||
mov cx, strict word 00010h ; b9 10 00 ; 0xc186b vgabios.c:1170
|
||||
xor bx, bx ; 31 db ; 0xc186e
|
||||
mov dx, 07c96h ; ba 96 7c ; 0xc1870
|
||||
mov dx, 07c97h ; ba 97 7c ; 0xc1870
|
||||
mov ax, 0c000h ; b8 00 c0 ; 0xc1873
|
||||
call 02da5h ; e8 2c 15 ; 0xc1876
|
||||
cmp word [bp-01ch], strict byte 00000h ; 83 7e e4 00 ; 0xc1879 vgabios.c:1172
|
||||
|
@ -3180,7 +3180,7 @@ biosfn_set_video_mode: ; 0xc143f LB 0x4d5
|
|||
mov AL, strict byte 003h ; b0 03 ; 0xc18cf
|
||||
mov AH, strict byte 011h ; b4 11 ; 0xc18d1
|
||||
int 06dh ; cd 6d ; 0xc18d3
|
||||
mov bx, 05969h ; bb 69 59 ; 0xc18d5 vgabios.c:1199
|
||||
mov bx, 0596ah ; bb 6a 59 ; 0xc18d5 vgabios.c:1199
|
||||
mov cx, ds ; 8c d9 ; 0xc18d8
|
||||
mov ax, strict word 0001fh ; b8 1f 00 ; 0xc18da
|
||||
call 009f0h ; e8 10 f1 ; 0xc18dd
|
||||
|
@ -3192,14 +3192,14 @@ biosfn_set_video_mode: ; 0xc143f LB 0x4d5
|
|||
je short 01900h ; 74 11 ; 0xc18ed
|
||||
cmp AL, strict byte 008h ; 3c 08 ; 0xc18ef
|
||||
jne short 0190ah ; 75 17 ; 0xc18f1
|
||||
mov bx, 05569h ; bb 69 55 ; 0xc18f3 vgabios.c:1203
|
||||
mov bx, 0556ah ; bb 6a 55 ; 0xc18f3 vgabios.c:1203
|
||||
mov cx, ds ; 8c d9 ; 0xc18f6
|
||||
mov ax, strict word 00043h ; b8 43 00 ; 0xc18f8
|
||||
call 009f0h ; e8 f2 f0 ; 0xc18fb
|
||||
jmp short 0190ah ; eb 0a ; 0xc18fe vgabios.c:1204
|
||||
mov bx, 05d69h ; bb 69 5d ; 0xc1900 vgabios.c:1206
|
||||
mov bx, 05d6ah ; bb 6a 5d ; 0xc1900 vgabios.c:1206
|
||||
jmp short 018f6h ; eb f1 ; 0xc1903
|
||||
mov bx, 06b69h ; bb 69 6b ; 0xc1905 vgabios.c:1209
|
||||
mov bx, 06b6ah ; bb 6a 6b ; 0xc1905 vgabios.c:1209
|
||||
jmp short 018f6h ; eb ec ; 0xc1908
|
||||
lea sp, [bp-00ah] ; 8d 66 f6 ; 0xc190a vgabios.c:1212
|
||||
pop di ; 5f ; 0xc190d
|
||||
|
@ -3676,7 +3676,7 @@ biosfn_scroll: ; 0xc1c55 LB 0x688
|
|||
mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xc1d0d
|
||||
mul word [bp-016h] ; f7 66 ea ; 0xc1d10
|
||||
mov cx, ax ; 89 c1 ; 0xc1d13
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc1d15
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc1d15
|
||||
jne short 01d65h ; 75 49 ; 0xc1d1a
|
||||
add ax, ax ; 01 c0 ; 0xc1d1c vgabios.c:1345
|
||||
or AL, strict byte 0ffh ; 0c ff ; 0xc1d1e
|
||||
|
@ -3701,7 +3701,7 @@ biosfn_scroll: ; 0xc1c55 LB 0x688
|
|||
mov al, byte [bp-010h] ; 8a 46 f0 ; 0xc1d4e vgabios.c:1352
|
||||
sal ax, 008h ; c1 e0 08 ; 0xc1d51
|
||||
add ax, strict word 00020h ; 05 20 00 ; 0xc1d54
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc1d57
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc1d57
|
||||
mov di, word [bp-020h] ; 8b 7e e0 ; 0xc1d5b
|
||||
jcxz 01d62h ; e3 02 ; 0xc1d5e
|
||||
rep stosw ; f3 ab ; 0xc1d60
|
||||
|
@ -3742,7 +3742,7 @@ biosfn_scroll: ; 0xc1c55 LB 0x688
|
|||
mov bl, byte [bp-012h] ; 8a 5e ee ; 0xc1dba
|
||||
xor bh, bh ; 30 ff ; 0xc1dbd
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc1dbf
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc1dc2
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc1dc2
|
||||
mov ax, si ; 89 f0 ; 0xc1dc6
|
||||
jcxz 01dcch ; e3 02 ; 0xc1dc8
|
||||
rep stosw ; f3 ab ; 0xc1dca
|
||||
|
@ -3761,7 +3761,7 @@ biosfn_scroll: ; 0xc1c55 LB 0x688
|
|||
mov bl, byte [bp-012h] ; 8a 5e ee ; 0xc1deb
|
||||
xor bh, bh ; 30 ff ; 0xc1dee
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc1df0
|
||||
mov bx, word [bx+047afh] ; 8b 9f af 47 ; 0xc1df3
|
||||
mov bx, word [bx+047b0h] ; 8b 9f b0 47 ; 0xc1df3
|
||||
mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xc1df7
|
||||
mul word [bp-01eh] ; f7 66 e2 ; 0xc1dfa
|
||||
add ax, word [bp-018h] ; 03 46 e8 ; 0xc1dfd
|
||||
|
@ -3811,7 +3811,7 @@ biosfn_scroll: ; 0xc1c55 LB 0x688
|
|||
mov bl, byte [bp-012h] ; 8a 5e ee ; 0xc1e67
|
||||
xor bh, bh ; 30 ff ; 0xc1e6a
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc1e6c
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc1e6f
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc1e6f
|
||||
mov ax, si ; 89 f0 ; 0xc1e73
|
||||
jcxz 01e79h ; e3 02 ; 0xc1e75
|
||||
rep stosw ; f3 ab ; 0xc1e77
|
||||
|
@ -3833,7 +3833,7 @@ biosfn_scroll: ; 0xc1c55 LB 0x688
|
|||
mov bl, byte [bp-012h] ; 8a 5e ee ; 0xc1e9e
|
||||
xor bh, bh ; 30 ff ; 0xc1ea1
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc1ea3
|
||||
mov bx, word [bx+047afh] ; 8b 9f af 47 ; 0xc1ea6
|
||||
mov bx, word [bx+047b0h] ; 8b 9f b0 47 ; 0xc1ea6
|
||||
mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xc1eaa
|
||||
mul word [bp-01eh] ; f7 66 e2 ; 0xc1ead
|
||||
add ax, cx ; 01 c8 ; 0xc1eb0
|
||||
|
@ -3855,13 +3855,13 @@ biosfn_scroll: ; 0xc1c55 LB 0x688
|
|||
dec word [bp-01ch] ; ff 4e e4 ; 0xc1ed2 vgabios.c:1373
|
||||
jmp near 01e21h ; e9 49 ff ; 0xc1ed5
|
||||
mov si, word [bp-01ah] ; 8b 76 e6 ; 0xc1ed8 vgabios.c:1379
|
||||
mov al, byte [si+0482bh] ; 8a 84 2b 48 ; 0xc1edb
|
||||
mov al, byte [si+0482ch] ; 8a 84 2c 48 ; 0xc1edb
|
||||
xor ah, ah ; 30 e4 ; 0xc1edf
|
||||
mov si, ax ; 89 c6 ; 0xc1ee1
|
||||
sal si, 006h ; c1 e6 06 ; 0xc1ee3
|
||||
mov al, byte [si+04841h] ; 8a 84 41 48 ; 0xc1ee6
|
||||
mov al, byte [si+04842h] ; 8a 84 42 48 ; 0xc1ee6
|
||||
mov byte [bp-00eh], al ; 88 46 f2 ; 0xc1eea
|
||||
mov al, byte [bx+047adh] ; 8a 87 ad 47 ; 0xc1eed vgabios.c:1380
|
||||
mov al, byte [bx+047aeh] ; 8a 87 ae 47 ; 0xc1eed vgabios.c:1380
|
||||
cmp AL, strict byte 003h ; 3c 03 ; 0xc1ef1
|
||||
jc short 01f01h ; 72 0c ; 0xc1ef3
|
||||
jbe short 01f08h ; 76 11 ; 0xc1ef5
|
||||
|
@ -3907,7 +3907,7 @@ biosfn_scroll: ; 0xc1c55 LB 0x688
|
|||
mov bl, byte [bp-012h] ; 8a 5e ee ; 0xc1f55
|
||||
xor bh, bh ; 30 ff ; 0xc1f58
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc1f5a
|
||||
mov bx, word [bx+047afh] ; 8b 9f af 47 ; 0xc1f5d
|
||||
mov bx, word [bx+047b0h] ; 8b 9f b0 47 ; 0xc1f5d
|
||||
mov cx, ax ; 89 c1 ; 0xc1f61
|
||||
mov ax, dx ; 89 d0 ; 0xc1f63
|
||||
xor di, di ; 31 ff ; 0xc1f65
|
||||
|
@ -4015,7 +4015,7 @@ biosfn_scroll: ; 0xc1c55 LB 0x688
|
|||
jc short 020afh ; 72 4e ; 0xc205f
|
||||
dec word [bp-01ch] ; ff 4e e4 ; 0xc2061 vgabios.c:1409
|
||||
jmp short 01ff9h ; eb 93 ; 0xc2064
|
||||
mov al, byte [bx+047aeh] ; 8a 87 ae 47 ; 0xc2066 vgabios.c:1414
|
||||
mov al, byte [bx+047afh] ; 8a 87 af 47 ; 0xc2066 vgabios.c:1414
|
||||
mov byte [bp-014h], al ; 88 46 ec ; 0xc206a
|
||||
cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xc206d vgabios.c:1415
|
||||
jne short 020b2h ; 75 3f ; 0xc2071
|
||||
|
@ -4039,7 +4039,7 @@ biosfn_scroll: ; 0xc1c55 LB 0x688
|
|||
mov cx, ax ; 89 c1 ; 0xc209e
|
||||
mov al, byte [bp-010h] ; 8a 46 f0 ; 0xc20a0
|
||||
xor ah, ah ; 30 e4 ; 0xc20a3
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc20a5
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc20a5
|
||||
xor di, di ; 31 ff ; 0xc20a9
|
||||
jcxz 020afh ; e3 02 ; 0xc20ab
|
||||
rep stosb ; f3 aa ; 0xc20ad
|
||||
|
@ -4165,7 +4165,7 @@ biosfn_scroll: ; 0xc1c55 LB 0x688
|
|||
sal cx, 003h ; c1 e1 03 ; 0xc21d8
|
||||
mov al, byte [bp-010h] ; 8a 46 f0 ; 0xc21db
|
||||
xor ah, ah ; 30 e4 ; 0xc21de
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc21e0
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc21e0
|
||||
xor di, di ; 31 ff ; 0xc21e4
|
||||
jcxz 021eah ; e3 02 ; 0xc21e6
|
||||
rep stosb ; f3 aa ; 0xc21e8
|
||||
|
@ -4392,7 +4392,7 @@ write_gfx_char_cga: ; 0xc23ee LB 0x112
|
|||
mov bh, al ; 88 c7 ; 0xc23f4
|
||||
mov ch, dl ; 88 d5 ; 0xc23f6
|
||||
mov al, bl ; 88 d8 ; 0xc23f8
|
||||
mov di, 05569h ; bf 69 55 ; 0xc23fa vgabios.c:1541
|
||||
mov di, 0556ah ; bf 6a 55 ; 0xc23fa vgabios.c:1541
|
||||
xor ah, ah ; 30 e4 ; 0xc23fd vgabios.c:1542
|
||||
mov dl, byte [bp+00ah] ; 8a 56 0a ; 0xc23ff
|
||||
xor dh, dh ; 30 f6 ; 0xc2402
|
||||
|
@ -4509,7 +4509,7 @@ write_gfx_char_lin: ; 0xc2500 LB 0x9b
|
|||
mov bh, al ; 88 c7 ; 0xc2506
|
||||
mov ch, dl ; 88 d5 ; 0xc2508
|
||||
mov al, cl ; 88 c8 ; 0xc250a
|
||||
mov di, 05569h ; bf 69 55 ; 0xc250c vgabios.c:1605
|
||||
mov di, 0556ah ; bf 6a 55 ; 0xc250c vgabios.c:1605
|
||||
xor ah, ah ; 30 e4 ; 0xc250f vgabios.c:1606
|
||||
mov dl, byte [bp+008h] ; 8a 56 08 ; 0xc2511
|
||||
xor dh, dh ; 30 f6 ; 0xc2514
|
||||
|
@ -4624,7 +4624,7 @@ biosfn_write_char_attr: ; 0xc259b LB 0x187
|
|||
xor bh, bh ; 30 ff ; 0xc260c
|
||||
mov di, bx ; 89 df ; 0xc260e
|
||||
sal di, 003h ; c1 e7 03 ; 0xc2610
|
||||
cmp byte [di+047ach], 000h ; 80 bd ac 47 00 ; 0xc2613
|
||||
cmp byte [di+047adh], 000h ; 80 bd ad 47 00 ; 0xc2613
|
||||
jne short 02663h ; 75 49 ; 0xc2618
|
||||
mul dx ; f7 e2 ; 0xc261a vgabios.c:1648
|
||||
add ax, ax ; 01 c0 ; 0xc261c
|
||||
|
@ -4651,17 +4651,17 @@ biosfn_write_char_attr: ; 0xc259b LB 0x187
|
|||
add bx, ax ; 01 c3 ; 0xc264c
|
||||
mov word [bp-020h], bx ; 89 5e e0 ; 0xc264e
|
||||
mov ax, word [bp-020h] ; 8b 46 e0 ; 0xc2651 vgabios.c:1651
|
||||
mov es, [di+047afh] ; 8e 85 af 47 ; 0xc2654
|
||||
mov es, [di+047b0h] ; 8e 85 b0 47 ; 0xc2654
|
||||
mov cx, si ; 89 f1 ; 0xc2658
|
||||
mov di, dx ; 89 d7 ; 0xc265a
|
||||
jcxz 02660h ; e3 02 ; 0xc265c
|
||||
rep stosw ; f3 ab ; 0xc265e
|
||||
jmp near 0271bh ; e9 b8 00 ; 0xc2660 vgabios.c:1653
|
||||
mov bl, byte [bx+0482bh] ; 8a 9f 2b 48 ; 0xc2663 vgabios.c:1656
|
||||
mov bl, byte [bx+0482ch] ; 8a 9f 2c 48 ; 0xc2663 vgabios.c:1656
|
||||
sal bx, 006h ; c1 e3 06 ; 0xc2667
|
||||
mov al, byte [bx+04841h] ; 8a 87 41 48 ; 0xc266a
|
||||
mov al, byte [bx+04842h] ; 8a 87 42 48 ; 0xc266a
|
||||
mov byte [bp-012h], al ; 88 46 ee ; 0xc266e
|
||||
mov al, byte [di+047aeh] ; 8a 85 ae 47 ; 0xc2671 vgabios.c:1657
|
||||
mov al, byte [di+047afh] ; 8a 85 af 47 ; 0xc2671 vgabios.c:1657
|
||||
mov byte [bp-014h], al ; 88 46 ec ; 0xc2675
|
||||
dec si ; 4e ; 0xc2678 vgabios.c:1658
|
||||
cmp si, strict byte 0ffffh ; 83 fe ff ; 0xc2679
|
||||
|
@ -4669,7 +4669,7 @@ biosfn_write_char_attr: ; 0xc259b LB 0x187
|
|||
mov bl, byte [bp-010h] ; 8a 5e f0 ; 0xc267e vgabios.c:1660
|
||||
xor bh, bh ; 30 ff ; 0xc2681
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc2683
|
||||
mov bl, byte [bx+047adh] ; 8a 9f ad 47 ; 0xc2686
|
||||
mov bl, byte [bx+047aeh] ; 8a 9f ae 47 ; 0xc2686
|
||||
cmp bl, 003h ; 80 fb 03 ; 0xc268a
|
||||
jc short 0269eh ; 72 0f ; 0xc268d
|
||||
jbe short 026a5h ; 76 14 ; 0xc268f
|
||||
|
@ -4782,7 +4782,7 @@ biosfn_write_char_only: ; 0xc2722 LB 0x181
|
|||
mov al, byte [bp-010h] ; 8a 46 f0 ; 0xc278f vgabios.c:1703
|
||||
mov bx, ax ; 89 c3 ; 0xc2792
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc2794
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc2797
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc2797
|
||||
jne short 027e0h ; 75 42 ; 0xc279c
|
||||
mov ax, cx ; 89 c8 ; 0xc279e vgabios.c:1706
|
||||
mul dx ; f7 e2 ; 0xc27a0
|
||||
|
@ -4808,19 +4808,19 @@ biosfn_write_char_only: ; 0xc2722 LB 0x181
|
|||
xor ah, ah ; 30 e4 ; 0xc27cb
|
||||
mov di, ax ; 89 c7 ; 0xc27cd
|
||||
sal di, 003h ; c1 e7 03 ; 0xc27cf
|
||||
mov es, [di+047afh] ; 8e 85 af 47 ; 0xc27d2 vgabios.c:50
|
||||
mov es, [di+047b0h] ; 8e 85 b0 47 ; 0xc27d2 vgabios.c:50
|
||||
mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xc27d6 vgabios.c:52
|
||||
mov byte [es:bx], al ; 26 88 07 ; 0xc27d9
|
||||
inc bx ; 43 ; 0xc27dc vgabios.c:1710
|
||||
inc bx ; 43 ; 0xc27dd
|
||||
jmp short 027c2h ; eb e2 ; 0xc27de vgabios.c:1711
|
||||
mov di, ax ; 89 c7 ; 0xc27e0 vgabios.c:1716
|
||||
mov al, byte [di+0482bh] ; 8a 85 2b 48 ; 0xc27e2
|
||||
mov al, byte [di+0482ch] ; 8a 85 2c 48 ; 0xc27e2
|
||||
mov di, ax ; 89 c7 ; 0xc27e6
|
||||
sal di, 006h ; c1 e7 06 ; 0xc27e8
|
||||
mov al, byte [di+04841h] ; 8a 85 41 48 ; 0xc27eb
|
||||
mov al, byte [di+04842h] ; 8a 85 42 48 ; 0xc27eb
|
||||
mov byte [bp-014h], al ; 88 46 ec ; 0xc27ef
|
||||
mov al, byte [bx+047aeh] ; 8a 87 ae 47 ; 0xc27f2 vgabios.c:1717
|
||||
mov al, byte [bx+047afh] ; 8a 87 af 47 ; 0xc27f2 vgabios.c:1717
|
||||
mov byte [bp-016h], al ; 88 46 ea ; 0xc27f6
|
||||
dec si ; 4e ; 0xc27f9 vgabios.c:1718
|
||||
cmp si, strict byte 0ffffh ; 83 fe ff ; 0xc27fa
|
||||
|
@ -4828,7 +4828,7 @@ biosfn_write_char_only: ; 0xc2722 LB 0x181
|
|||
mov bl, byte [bp-012h] ; 8a 5e ee ; 0xc27ff vgabios.c:1720
|
||||
xor bh, bh ; 30 ff ; 0xc2802
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc2804
|
||||
mov bl, byte [bx+047adh] ; 8a 9f ad 47 ; 0xc2807
|
||||
mov bl, byte [bx+047aeh] ; 8a 9f ae 47 ; 0xc2807
|
||||
cmp bl, 003h ; 80 fb 03 ; 0xc280b
|
||||
jc short 0281fh ; 72 0f ; 0xc280e
|
||||
jbe short 02826h ; 76 14 ; 0xc2810
|
||||
|
@ -4915,9 +4915,9 @@ biosfn_write_pixel: ; 0xc28a3 LB 0x173
|
|||
mov bl, al ; 88 c3 ; 0xc28cb vgabios.c:1753
|
||||
xor bh, bh ; 30 ff ; 0xc28cd
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc28cf
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc28d2
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc28d2
|
||||
je short 028f1h ; 74 18 ; 0xc28d7
|
||||
mov al, byte [bx+047adh] ; 8a 87 ad 47 ; 0xc28d9 vgabios.c:1755
|
||||
mov al, byte [bx+047aeh] ; 8a 87 ae 47 ; 0xc28d9 vgabios.c:1755
|
||||
cmp AL, strict byte 003h ; 3c 03 ; 0xc28dd
|
||||
jc short 028edh ; 72 0c ; 0xc28df
|
||||
jbe short 028f7h ; 76 14 ; 0xc28e1
|
||||
|
@ -4979,7 +4979,7 @@ biosfn_write_pixel: ; 0xc28a3 LB 0x173
|
|||
mov ax, dx ; 89 d0 ; 0xc2968 vgabios.c:1775
|
||||
shr ax, 1 ; d1 e8 ; 0xc296a
|
||||
imul ax, ax, strict byte 00050h ; 6b c0 50 ; 0xc296c
|
||||
cmp byte [bx+047aeh], 002h ; 80 bf ae 47 02 ; 0xc296f
|
||||
cmp byte [bx+047afh], 002h ; 80 bf af 47 02 ; 0xc296f
|
||||
jne short 0297eh ; 75 08 ; 0xc2974
|
||||
mov bx, word [bp-008h] ; 8b 5e f8 ; 0xc2976 vgabios.c:1777
|
||||
shr bx, 002h ; c1 eb 02 ; 0xc2979
|
||||
|
@ -4997,7 +4997,7 @@ biosfn_write_pixel: ; 0xc28a3 LB 0x173
|
|||
xor ah, ah ; 30 e4 ; 0xc2998
|
||||
mov si, ax ; 89 c6 ; 0xc299a
|
||||
sal si, 003h ; c1 e6 03 ; 0xc299c
|
||||
cmp byte [si+047aeh], 002h ; 80 bc ae 47 02 ; 0xc299f
|
||||
cmp byte [si+047afh], 002h ; 80 bc af 47 02 ; 0xc299f
|
||||
jne short 029bfh ; 75 19 ; 0xc29a4
|
||||
mov al, byte [bp-008h] ; 8a 46 f8 ; 0xc29a6 vgabios.c:1787
|
||||
and AL, strict byte 003h ; 24 03 ; 0xc29a9
|
||||
|
@ -5119,7 +5119,7 @@ biosfn_write_teletype: ; 0xc2a16 LB 0x258
|
|||
xor ah, ah ; 30 e4 ; 0xc2ac2
|
||||
mov bx, ax ; 89 c3 ; 0xc2ac4
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc2ac6
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc2ac9
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc2ac9
|
||||
jne short 02b12h ; 75 42 ; 0xc2ace
|
||||
mov ax, word [bp-010h] ; 8b 46 f0 ; 0xc2ad0 vgabios.c:1865
|
||||
mul word [bp-012h] ; f7 66 ee ; 0xc2ad3
|
||||
|
@ -5139,22 +5139,22 @@ biosfn_write_teletype: ; 0xc2a16 LB 0x258
|
|||
add ax, dx ; 01 d0 ; 0xc2af3
|
||||
add ax, ax ; 01 c0 ; 0xc2af5
|
||||
add si, ax ; 01 c6 ; 0xc2af7
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc2af9 vgabios.c:50
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc2af9 vgabios.c:50
|
||||
mov byte [es:si], ch ; 26 88 2c ; 0xc2afd vgabios.c:52
|
||||
cmp cl, 003h ; 80 f9 03 ; 0xc2b00 vgabios.c:1870
|
||||
jne short 02b41h ; 75 3c ; 0xc2b03
|
||||
inc si ; 46 ; 0xc2b05 vgabios.c:1871
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc2b06 vgabios.c:50
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc2b06 vgabios.c:50
|
||||
mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xc2b0a
|
||||
mov byte [es:si], al ; 26 88 04 ; 0xc2b0d
|
||||
jmp short 02b41h ; eb 2f ; 0xc2b10 vgabios.c:1873
|
||||
mov si, ax ; 89 c6 ; 0xc2b12 vgabios.c:1876
|
||||
mov al, byte [si+0482bh] ; 8a 84 2b 48 ; 0xc2b14
|
||||
mov al, byte [si+0482ch] ; 8a 84 2c 48 ; 0xc2b14
|
||||
mov si, ax ; 89 c6 ; 0xc2b18
|
||||
sal si, 006h ; c1 e6 06 ; 0xc2b1a
|
||||
mov dl, byte [si+04841h] ; 8a 94 41 48 ; 0xc2b1d
|
||||
mov al, byte [bx+047aeh] ; 8a 87 ae 47 ; 0xc2b21 vgabios.c:1877
|
||||
mov bl, byte [bx+047adh] ; 8a 9f ad 47 ; 0xc2b25 vgabios.c:1878
|
||||
mov dl, byte [si+04842h] ; 8a 94 42 48 ; 0xc2b1d
|
||||
mov al, byte [bx+047afh] ; 8a 87 af 47 ; 0xc2b21 vgabios.c:1877
|
||||
mov bl, byte [bx+047aeh] ; 8a 9f ae 47 ; 0xc2b25 vgabios.c:1878
|
||||
cmp bl, 003h ; 80 fb 03 ; 0xc2b29
|
||||
jc short 02b3ch ; 72 0e ; 0xc2b2c
|
||||
jbe short 02b43h ; 76 13 ; 0xc2b2e
|
||||
|
@ -5231,7 +5231,7 @@ biosfn_write_teletype: ; 0xc2a16 LB 0x258
|
|||
mov cl, byte [bp-010h] ; 8a 4e f0 ; 0xc2bdc
|
||||
db 0feh, 0c9h
|
||||
; dec cl ; fe c9 ; 0xc2bdf
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc2be1
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc2be1
|
||||
jne short 02c32h ; 75 4a ; 0xc2be6
|
||||
mov ax, word [bp-010h] ; 8b 46 f0 ; 0xc2be8 vgabios.c:1910
|
||||
mul word [bp-012h] ; f7 66 ee ; 0xc2beb
|
||||
|
@ -5253,7 +5253,7 @@ biosfn_write_teletype: ; 0xc2a16 LB 0x258
|
|||
add ax, ax ; 01 c0 ; 0xc2c0e
|
||||
add si, ax ; 01 c6 ; 0xc2c10
|
||||
inc si ; 46 ; 0xc2c12 vgabios.c:1911
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc2c13 vgabios.c:45
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc2c13 vgabios.c:45
|
||||
mov dl, byte [es:si] ; 26 8a 14 ; 0xc2c17
|
||||
push strict byte 00001h ; 6a 01 ; 0xc2c1a vgabios.c:1912
|
||||
mov al, byte [bp-008h] ; 8a 46 f8 ; 0xc2c1c
|
||||
|
@ -5616,7 +5616,7 @@ set_gfx_font: ; 0xc2eaf LB 0x4d
|
|||
mov DL, strict byte 002h ; b2 02 ; 0xc2ecf vgabios.c:2033
|
||||
mov bl, dl ; 88 d3 ; 0xc2ed1 vgabios.c:2034
|
||||
xor bh, bh ; 30 ff ; 0xc2ed3
|
||||
mov al, byte [bx+07dfah] ; 8a 87 fa 7d ; 0xc2ed5
|
||||
mov al, byte [bx+07dfbh] ; 8a 87 fb 7d ; 0xc2ed5
|
||||
mov byte [bp+004h], al ; 88 46 04 ; 0xc2ed9
|
||||
mov bx, 00085h ; bb 85 00 ; 0xc2edc vgabios.c:62
|
||||
mov ax, strict word 00040h ; b8 40 00 ; 0xc2edf
|
||||
|
@ -5662,7 +5662,7 @@ biosfn_load_gfx_8_14_chars: ; 0xc2f19 LB 0x22
|
|||
mov al, bl ; 88 d8 ; 0xc2f25
|
||||
mov cx, ax ; 89 c1 ; 0xc2f27
|
||||
mov bx, strict word 0000eh ; bb 0e 00 ; 0xc2f29
|
||||
mov ax, 05d69h ; b8 69 5d ; 0xc2f2c
|
||||
mov ax, 05d6ah ; b8 6a 5d ; 0xc2f2c
|
||||
mov dx, ds ; 8c da ; 0xc2f2f
|
||||
call 02eafh ; e8 7b ff ; 0xc2f31
|
||||
lea sp, [bp-004h] ; 8d 66 fc ; 0xc2f34 vgabios.c:2054
|
||||
|
@ -5683,7 +5683,7 @@ biosfn_load_gfx_8_8_dd_chars: ; 0xc2f3b LB 0x22
|
|||
mov al, bl ; 88 d8 ; 0xc2f47
|
||||
mov cx, ax ; 89 c1 ; 0xc2f49
|
||||
mov bx, strict word 00008h ; bb 08 00 ; 0xc2f4b
|
||||
mov ax, 05569h ; b8 69 55 ; 0xc2f4e
|
||||
mov ax, 0556ah ; b8 6a 55 ; 0xc2f4e
|
||||
mov dx, ds ; 8c da ; 0xc2f51
|
||||
call 02eafh ; e8 59 ff ; 0xc2f53
|
||||
lea sp, [bp-004h] ; 8d 66 fc ; 0xc2f56 vgabios.c:2058
|
||||
|
@ -5704,7 +5704,7 @@ biosfn_load_gfx_8_16_chars: ; 0xc2f5d LB 0x22
|
|||
mov al, bl ; 88 d8 ; 0xc2f69
|
||||
mov cx, ax ; 89 c1 ; 0xc2f6b
|
||||
mov bx, strict word 00010h ; bb 10 00 ; 0xc2f6d
|
||||
mov ax, 06b69h ; b8 69 6b ; 0xc2f70
|
||||
mov ax, 06b6ah ; b8 6a 6b ; 0xc2f70
|
||||
mov dx, ds ; 8c da ; 0xc2f73
|
||||
call 02eafh ; e8 37 ff ; 0xc2f75
|
||||
lea sp, [bp-004h] ; 8d 66 fc ; 0xc2f78 vgabios.c:2062
|
||||
|
@ -5843,7 +5843,7 @@ biosfn_read_state_info: ; 0xc305d LB 0x1ef
|
|||
mov word [bp-00ah], ax ; 89 46 f6 ; 0xc307a vgabios.c:58
|
||||
mov ax, ds ; 8c d8 ; 0xc307d vgabios.c:2150
|
||||
mov es, dx ; 8e c2 ; 0xc307f vgabios.c:72
|
||||
mov word [es:bx], 054ffh ; 26 c7 07 ff 54 ; 0xc3081
|
||||
mov word [es:bx], 05500h ; 26 c7 07 00 55 ; 0xc3081
|
||||
mov [es:bx+002h], ds ; 26 8c 5f 02 ; 0xc3086
|
||||
lea di, [bx+004h] ; 8d 7f 04 ; 0xc308a vgabios.c:2155
|
||||
mov cx, strict word 0001eh ; b9 1e 00 ; 0xc308d
|
||||
|
@ -6724,7 +6724,7 @@ find_vga_entry: ; 0xc3819 LB 0x28
|
|||
mov bl, al ; 88 c3 ; 0xc382c
|
||||
xor bh, bh ; 30 ff ; 0xc382e
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc3830
|
||||
cmp dl, byte [bx+047abh] ; 3a 97 ab 47 ; 0xc3833
|
||||
cmp dl, byte [bx+047ach] ; 3a 97 ac 47 ; 0xc3833
|
||||
jne short 03826h ; 75 ed ; 0xc3837
|
||||
mov ah, al ; 88 c4 ; 0xc3839
|
||||
mov al, ah ; 88 e0 ; 0xc383b vgabios.c:2438
|
||||
|
@ -6975,7 +6975,7 @@ int10_func: ; 0xc38d9 LB 0x49f
|
|||
push strict byte 00000h ; 6a 00 ; 0xc3afc
|
||||
mov al, byte [bp+012h] ; 8a 46 12 ; 0xc3afe
|
||||
mov cx, 00100h ; b9 00 01 ; 0xc3b01
|
||||
mov bx, 05d69h ; bb 69 5d ; 0xc3b04
|
||||
mov bx, 05d6ah ; bb 6a 5d ; 0xc3b04
|
||||
mov dx, 0c000h ; ba 00 c0 ; 0xc3b07
|
||||
call 02e1ah ; e8 0d f3 ; 0xc3b0a
|
||||
jmp short 03b2ch ; eb 1d ; 0xc3b0d
|
||||
|
@ -6986,7 +6986,7 @@ int10_func: ; 0xc38d9 LB 0x49f
|
|||
push strict byte 00000h ; 6a 00 ; 0xc3b17
|
||||
mov al, byte [bp+012h] ; 8a 46 12 ; 0xc3b19
|
||||
mov cx, 00100h ; b9 00 01 ; 0xc3b1c
|
||||
mov bx, 05569h ; bb 69 55 ; 0xc3b1f
|
||||
mov bx, 0556ah ; bb 6a 55 ; 0xc3b1f
|
||||
jmp short 03b07h ; eb e3 ; 0xc3b22
|
||||
mov al, byte [bp+00ch] ; 8a 46 0c ; 0xc3b24 vgabios.c:2629
|
||||
xor ah, ah ; 30 e4 ; 0xc3b27
|
||||
|
@ -6999,7 +6999,7 @@ int10_func: ; 0xc38d9 LB 0x49f
|
|||
push strict byte 00000h ; 6a 00 ; 0xc3b37
|
||||
mov al, byte [bp+012h] ; 8a 46 12 ; 0xc3b39
|
||||
mov cx, 00100h ; b9 00 01 ; 0xc3b3c
|
||||
mov bx, 06b69h ; bb 69 6b ; 0xc3b3f
|
||||
mov bx, 06b6ah ; bb 6a 6b ; 0xc3b3f
|
||||
jmp short 03b07h ; eb c3 ; 0xc3b42
|
||||
mov dx, word [bp+008h] ; 8b 56 08 ; 0xc3b44 vgabios.c:2636
|
||||
mov ax, word [bp+016h] ; 8b 46 16 ; 0xc3b47
|
||||
|
@ -7523,7 +7523,7 @@ vbe_biosfn_return_controller_information: ; 0xc3f42 LB 0x12b
|
|||
mov word [es:bx], 04556h ; 26 c7 07 56 45 ; 0xc3fad
|
||||
mov word [es:bx+002h], 04153h ; 26 c7 47 02 53 41 ; 0xc3fb2 vbe.c:334
|
||||
mov word [es:bx+004h], 00200h ; 26 c7 47 04 00 02 ; 0xc3fb8 vbe.c:338
|
||||
mov word [es:bx+006h], 07dfeh ; 26 c7 47 06 fe 7d ; 0xc3fbe vbe.c:341
|
||||
mov word [es:bx+006h], 07e00h ; 26 c7 47 06 00 7e ; 0xc3fbe vbe.c:341
|
||||
mov [es:bx+008h], ds ; 26 8c 5f 08 ; 0xc3fc4
|
||||
mov word [es:bx+00ah], strict word 00001h ; 26 c7 47 0a 01 00 ; 0xc3fc8 vbe.c:344
|
||||
mov word [es:bx+00ch], strict word 00000h ; 26 c7 47 0c 00 00 ; 0xc3fce vbe.c:346
|
||||
|
@ -7539,11 +7539,11 @@ vbe_biosfn_return_controller_information: ; 0xc3f42 LB 0x12b
|
|||
cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xc3ff2 vbe.c:356
|
||||
je short 0401ch ; 74 24 ; 0xc3ff6
|
||||
mov word [es:bx+014h], strict word 00003h ; 26 c7 47 14 03 00 ; 0xc3ff8 vbe.c:359
|
||||
mov word [es:bx+016h], 07e13h ; 26 c7 47 16 13 7e ; 0xc3ffe vbe.c:360
|
||||
mov word [es:bx+016h], 07e15h ; 26 c7 47 16 15 7e ; 0xc3ffe vbe.c:360
|
||||
mov [es:bx+018h], ds ; 26 8c 5f 18 ; 0xc4004
|
||||
mov word [es:bx+01ah], 07e30h ; 26 c7 47 1a 30 7e ; 0xc4008 vbe.c:361
|
||||
mov word [es:bx+01ah], 07e32h ; 26 c7 47 1a 32 7e ; 0xc4008 vbe.c:361
|
||||
mov [es:bx+01ch], ds ; 26 8c 5f 1c ; 0xc400e
|
||||
mov word [es:bx+01eh], 07e4eh ; 26 c7 47 1e 4e 7e ; 0xc4012 vbe.c:362
|
||||
mov word [es:bx+01eh], 07e50h ; 26 c7 47 1e 50 7e ; 0xc4012 vbe.c:362
|
||||
mov [es:bx+020h], ds ; 26 8c 5f 20 ; 0xc4018
|
||||
mov dx, cx ; 89 ca ; 0xc401c vbe.c:369
|
||||
add dx, strict byte 0001bh ; 83 c2 1b ; 0xc401e
|
||||
|
@ -8278,12 +8278,12 @@ vesa_pm_end: ; 0xc4754 LB 0x1
|
|||
; Padding 0x2b bytes at 0xc4755
|
||||
times 43 db 0
|
||||
|
||||
section _DATA progbits vstart=0x4780 align=1 ; size=0x3742 class=DATA group=DGROUP
|
||||
; disGetNextSymbol 0xc4780 LB 0x3742 -> off=0x0 cb=000000000000002b uValue=00000000000c0000 '_msg_vga_init'
|
||||
_msg_vga_init: ; 0xc4780 LB 0x2b
|
||||
db 'Oracle VirtualBox Version 7.1.8 VGA BIOS', 00dh, 00ah, 000h
|
||||
; disGetNextSymbol 0xc47ab LB 0x3717 -> off=0x0 cb=0000000000000080 uValue=00000000000c002b 'vga_modes'
|
||||
vga_modes: ; 0xc47ab LB 0x80
|
||||
section _DATA progbits vstart=0x4780 align=1 ; size=0x3745 class=DATA group=DGROUP
|
||||
; disGetNextSymbol 0xc4780 LB 0x3745 -> off=0x0 cb=000000000000002c uValue=00000000000c0000 '_msg_vga_init'
|
||||
_msg_vga_init: ; 0xc4780 LB 0x2c
|
||||
db 'Oracle VirtualBox Version 7.1.10 VGA BIOS', 00dh, 00ah, 000h
|
||||
; disGetNextSymbol 0xc47ac LB 0x3719 -> off=0x0 cb=0000000000000080 uValue=00000000000c002c 'vga_modes'
|
||||
vga_modes: ; 0xc47ac LB 0x80
|
||||
db 000h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 001h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
|
||||
db 002h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 003h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
|
||||
db 004h, 001h, 002h, 002h, 000h, 0b8h, 0ffh, 001h, 005h, 001h, 002h, 002h, 000h, 0b8h, 0ffh, 001h
|
||||
|
@ -8292,14 +8292,14 @@ vga_modes: ; 0xc47ab LB 0x80
|
|||
db 00fh, 001h, 003h, 001h, 000h, 0a0h, 0ffh, 000h, 010h, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
|
||||
db 011h, 001h, 003h, 001h, 000h, 0a0h, 0ffh, 002h, 012h, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
|
||||
db 013h, 001h, 005h, 008h, 000h, 0a0h, 0ffh, 003h, 06ah, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
|
||||
; disGetNextSymbol 0xc482b LB 0x3697 -> off=0x0 cb=0000000000000010 uValue=00000000000c00ab 'line_to_vpti'
|
||||
line_to_vpti: ; 0xc482b LB 0x10
|
||||
; disGetNextSymbol 0xc482c LB 0x3699 -> off=0x0 cb=0000000000000010 uValue=00000000000c00ac 'line_to_vpti'
|
||||
line_to_vpti: ; 0xc482c LB 0x10
|
||||
db 017h, 017h, 018h, 018h, 004h, 005h, 006h, 007h, 00dh, 00eh, 011h, 012h, 01ah, 01bh, 01ch, 01dh
|
||||
; disGetNextSymbol 0xc483b LB 0x3687 -> off=0x0 cb=0000000000000004 uValue=00000000000c00bb 'dac_regs'
|
||||
dac_regs: ; 0xc483b LB 0x4
|
||||
; disGetNextSymbol 0xc483c LB 0x3689 -> off=0x0 cb=0000000000000004 uValue=00000000000c00bc 'dac_regs'
|
||||
dac_regs: ; 0xc483c LB 0x4
|
||||
dd 0ff3f3f3fh
|
||||
; disGetNextSymbol 0xc483f LB 0x3683 -> off=0x0 cb=0000000000000780 uValue=00000000000c00bf 'video_param_table'
|
||||
video_param_table: ; 0xc483f LB 0x780
|
||||
; disGetNextSymbol 0xc4840 LB 0x3685 -> off=0x0 cb=0000000000000780 uValue=00000000000c00c0 'video_param_table'
|
||||
video_param_table: ; 0xc4840 LB 0x780
|
||||
db 028h, 018h, 008h, 000h, 008h, 009h, 003h, 000h, 002h, 063h, 02dh, 027h, 028h, 090h, 02bh, 0a0h
|
||||
db 0bfh, 01fh, 000h, 0c7h, 006h, 007h, 000h, 000h, 000h, 000h, 09ch, 08eh, 08fh, 014h, 01fh, 096h
|
||||
db 0b9h, 0a3h, 0ffh, 000h, 001h, 002h, 003h, 004h, 005h, 006h, 007h, 010h, 011h, 012h, 013h, 014h
|
||||
|
@ -8420,8 +8420,8 @@ video_param_table: ; 0xc483f LB 0x780
|
|||
db 072h, 0f0h, 000h, 060h, 000h, 000h, 000h, 000h, 000h, 000h, 059h, 08dh, 057h, 032h, 000h, 057h
|
||||
db 073h, 0e3h, 0ffh, 000h, 001h, 002h, 003h, 004h, 005h, 014h, 007h, 038h, 039h, 03ah, 03bh, 03ch
|
||||
db 03dh, 03eh, 03fh, 001h, 000h, 00fh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 005h, 00fh, 0ffh
|
||||
; disGetNextSymbol 0xc4fbf LB 0x2f03 -> off=0x0 cb=00000000000000c0 uValue=00000000000c083f 'palette0'
|
||||
palette0: ; 0xc4fbf LB 0xc0
|
||||
; disGetNextSymbol 0xc4fc0 LB 0x2f05 -> off=0x0 cb=00000000000000c0 uValue=00000000000c0840 'palette0'
|
||||
palette0: ; 0xc4fc0 LB 0xc0
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah
|
||||
db 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah
|
||||
|
@ -8434,8 +8434,8 @@ palette0: ; 0xc4fbf LB 0xc0
|
|||
db 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah
|
||||
db 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh
|
||||
db 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh
|
||||
; disGetNextSymbol 0xc507f LB 0x2e43 -> off=0x0 cb=00000000000000c0 uValue=00000000000c08ff 'palette1'
|
||||
palette1: ; 0xc507f LB 0xc0
|
||||
; disGetNextSymbol 0xc5080 LB 0x2e45 -> off=0x0 cb=00000000000000c0 uValue=00000000000c0900 'palette1'
|
||||
palette1: ; 0xc5080 LB 0xc0
|
||||
db 000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
|
||||
db 000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah
|
||||
db 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah, 000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah
|
||||
|
@ -8448,8 +8448,8 @@ palette1: ; 0xc507f LB 0xc0
|
|||
db 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh, 015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh
|
||||
db 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
|
||||
db 015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
|
||||
; disGetNextSymbol 0xc513f LB 0x2d83 -> off=0x0 cb=00000000000000c0 uValue=00000000000c09bf 'palette2'
|
||||
palette2: ; 0xc513f LB 0xc0
|
||||
; disGetNextSymbol 0xc5140 LB 0x2d85 -> off=0x0 cb=00000000000000c0 uValue=00000000000c09c0 'palette2'
|
||||
palette2: ; 0xc5140 LB 0xc0
|
||||
db 000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
|
||||
db 000h, 02ah, 02ah, 02ah, 000h, 02ah, 02ah, 02ah, 000h, 000h, 015h, 000h, 000h, 03fh, 000h, 02ah
|
||||
db 015h, 000h, 02ah, 03fh, 02ah, 000h, 015h, 02ah, 000h, 03fh, 02ah, 02ah, 015h, 02ah, 02ah, 03fh
|
||||
|
@ -8462,8 +8462,8 @@ palette2: ; 0xc513f LB 0xc0
|
|||
db 015h, 015h, 000h, 015h, 015h, 02ah, 015h, 03fh, 000h, 015h, 03fh, 02ah, 03fh, 015h, 000h, 03fh
|
||||
db 015h, 02ah, 03fh, 03fh, 000h, 03fh, 03fh, 02ah, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
|
||||
db 015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
|
||||
; disGetNextSymbol 0xc51ff LB 0x2cc3 -> off=0x0 cb=0000000000000300 uValue=00000000000c0a7f 'palette3'
|
||||
palette3: ; 0xc51ff LB 0x300
|
||||
; disGetNextSymbol 0xc5200 LB 0x2cc5 -> off=0x0 cb=0000000000000300 uValue=00000000000c0a80 'palette3'
|
||||
palette3: ; 0xc5200 LB 0x300
|
||||
db 000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
|
||||
db 000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
|
||||
db 015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
|
||||
|
@ -8512,24 +8512,24 @@ palette3: ; 0xc51ff LB 0x300
|
|||
db 00bh, 010h, 00bh, 00bh, 010h, 00ch, 00bh, 010h, 00dh, 00bh, 010h, 00fh, 00bh, 010h, 010h, 00bh
|
||||
db 00fh, 010h, 00bh, 00dh, 010h, 00bh, 00ch, 010h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc54ff LB 0x29c3 -> off=0x0 cb=0000000000000010 uValue=00000000000c0d7f 'static_functionality'
|
||||
static_functionality: ; 0xc54ff LB 0x10
|
||||
; disGetNextSymbol 0xc5500 LB 0x29c5 -> off=0x0 cb=0000000000000010 uValue=00000000000c0d80 'static_functionality'
|
||||
static_functionality: ; 0xc5500 LB 0x10
|
||||
db 0ffh, 0e0h, 00fh, 000h, 000h, 000h, 000h, 007h, 002h, 008h, 0e7h, 00ch, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc550f LB 0x29b3 -> off=0x0 cb=0000000000000024 uValue=00000000000c0d8f '_dcc_table'
|
||||
_dcc_table: ; 0xc550f LB 0x24
|
||||
; disGetNextSymbol 0xc5510 LB 0x29b5 -> off=0x0 cb=0000000000000024 uValue=00000000000c0d90 '_dcc_table'
|
||||
_dcc_table: ; 0xc5510 LB 0x24
|
||||
db 010h, 001h, 007h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc5533 LB 0x298f -> off=0x0 cb=000000000000001a uValue=00000000000c0db3 '_secondary_save_area'
|
||||
_secondary_save_area: ; 0xc5533 LB 0x1a
|
||||
db 01ah, 000h, 00fh, 055h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc5534 LB 0x2991 -> off=0x0 cb=000000000000001a uValue=00000000000c0db4 '_secondary_save_area'
|
||||
_secondary_save_area: ; 0xc5534 LB 0x1a
|
||||
db 01ah, 000h, 010h, 055h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc554d LB 0x2975 -> off=0x0 cb=000000000000001c uValue=00000000000c0dcd '_video_save_pointer_table'
|
||||
_video_save_pointer_table: ; 0xc554d LB 0x1c
|
||||
db 03fh, 048h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 033h, 055h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc5569 LB 0x2959 -> off=0x0 cb=0000000000000800 uValue=00000000000c0de9 'vgafont8'
|
||||
vgafont8: ; 0xc5569 LB 0x800
|
||||
; disGetNextSymbol 0xc554e LB 0x2977 -> off=0x0 cb=000000000000001c uValue=00000000000c0dce '_video_save_pointer_table'
|
||||
_video_save_pointer_table: ; 0xc554e LB 0x1c
|
||||
db 040h, 048h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 034h, 055h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc556a LB 0x295b -> off=0x0 cb=0000000000000800 uValue=00000000000c0dea 'vgafont8'
|
||||
vgafont8: ; 0xc556a LB 0x800
|
||||
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
|
||||
|
@ -8658,8 +8658,8 @@ vgafont8: ; 0xc5569 LB 0x800
|
|||
db 000h, 000h, 000h, 000h, 018h, 000h, 000h, 000h, 00fh, 00ch, 00ch, 00ch, 0ech, 06ch, 03ch, 01ch
|
||||
db 078h, 06ch, 06ch, 06ch, 06ch, 000h, 000h, 000h, 070h, 018h, 030h, 060h, 078h, 000h, 000h, 000h
|
||||
db 000h, 000h, 03ch, 03ch, 03ch, 03ch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc5d69 LB 0x2159 -> off=0x0 cb=0000000000000e00 uValue=00000000000c15e9 'vgafont14'
|
||||
vgafont14: ; 0xc5d69 LB 0xe00
|
||||
; disGetNextSymbol 0xc5d6a LB 0x215b -> off=0x0 cb=0000000000000e00 uValue=00000000000c15ea 'vgafont14'
|
||||
vgafont14: ; 0xc5d6a LB 0xe00
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 07eh, 081h, 0a5h, 081h, 081h, 0bdh, 099h, 081h, 07eh, 000h, 000h, 000h, 000h, 000h, 07eh, 0ffh
|
||||
db 0dbh, 0ffh, 0ffh, 0c3h, 0e7h, 0ffh, 07eh, 000h, 000h, 000h, 000h, 000h, 000h, 06ch, 0feh, 0feh
|
||||
|
@ -8884,8 +8884,8 @@ vgafont14: ; 0xc5d69 LB 0xe00
|
|||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 070h, 0d8h, 030h, 060h, 0c8h, 0f8h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc6b69 LB 0x1359 -> off=0x0 cb=0000000000001000 uValue=00000000000c23e9 'vgafont16'
|
||||
vgafont16: ; 0xc6b69 LB 0x1000
|
||||
; disGetNextSymbol 0xc6b6a LB 0x135b -> off=0x0 cb=0000000000001000 uValue=00000000000c23ea 'vgafont16'
|
||||
vgafont16: ; 0xc6b6a LB 0x1000
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 07eh, 081h, 0a5h, 081h, 081h, 0bdh, 099h, 081h, 081h, 07eh, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 07eh, 0ffh, 0dbh, 0ffh, 0ffh, 0c3h, 0e7h, 0ffh, 0ffh, 07eh, 000h, 000h, 000h, 000h
|
||||
|
@ -9142,8 +9142,8 @@ vgafont16: ; 0xc6b69 LB 0x1000
|
|||
db 000h, 070h, 0d8h, 030h, 060h, 0c8h, 0f8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc7b69 LB 0x359 -> off=0x0 cb=000000000000012d uValue=00000000000c33e9 'vgafont14alt'
|
||||
vgafont14alt: ; 0xc7b69 LB 0x12d
|
||||
; disGetNextSymbol 0xc7b6a LB 0x35b -> off=0x0 cb=000000000000012d uValue=00000000000c33ea 'vgafont14alt'
|
||||
vgafont14alt: ; 0xc7b6a LB 0x12d
|
||||
db 01dh, 000h, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h, 000h, 000h, 000h, 022h
|
||||
db 000h, 063h, 063h, 063h, 022h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 02bh, 000h
|
||||
db 000h, 000h, 018h, 018h, 018h, 0ffh, 018h, 018h, 018h, 000h, 000h, 000h, 000h, 02dh, 000h, 000h
|
||||
|
@ -9163,8 +9163,8 @@ vgafont14alt: ; 0xc7b69 LB 0x12d
|
|||
db 000h, 0fch, 066h, 066h, 07ch, 062h, 066h, 06fh, 066h, 066h, 0f3h, 000h, 000h, 000h, 0f1h, 000h
|
||||
db 000h, 018h, 018h, 018h, 0ffh, 018h, 018h, 018h, 000h, 0ffh, 000h, 000h, 000h, 0f6h, 000h, 000h
|
||||
db 018h, 018h, 000h, 000h, 0ffh, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc7c96 LB 0x22c -> off=0x0 cb=0000000000000144 uValue=00000000000c3516 'vgafont16alt'
|
||||
vgafont16alt: ; 0xc7c96 LB 0x144
|
||||
; disGetNextSymbol 0xc7c97 LB 0x22e -> off=0x0 cb=0000000000000144 uValue=00000000000c3517 'vgafont16alt'
|
||||
vgafont16alt: ; 0xc7c97 LB 0x144
|
||||
db 01dh, 000h, 000h, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 030h, 000h, 000h, 03ch, 066h, 0c3h, 0c3h, 0dbh, 0dbh, 0c3h, 0c3h, 066h, 03ch, 000h, 000h
|
||||
db 000h, 000h, 04dh, 000h, 000h, 0c3h, 0e7h, 0ffh, 0ffh, 0dbh, 0c3h, 0c3h, 0c3h, 0c3h, 0c3h, 000h
|
||||
|
@ -9186,53 +9186,56 @@ vgafont16alt: ; 0xc7c96 LB 0x144
|
|||
db 000h, 0abh, 000h, 0c0h, 0c0h, 0c2h, 0c6h, 0cch, 018h, 030h, 060h, 0ceh, 09bh, 006h, 00ch, 01fh
|
||||
db 000h, 000h, 0ach, 000h, 0c0h, 0c0h, 0c2h, 0c6h, 0cch, 018h, 030h, 066h, 0ceh, 096h, 03eh, 006h
|
||||
db 006h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc7dda LB 0xe8 -> off=0x0 cb=0000000000000008 uValue=00000000000c365a '_cga_msr'
|
||||
_cga_msr: ; 0xc7dda LB 0x8
|
||||
; disGetNextSymbol 0xc7ddb LB 0xea -> off=0x0 cb=0000000000000008 uValue=00000000000c365b '_cga_msr'
|
||||
_cga_msr: ; 0xc7ddb LB 0x8
|
||||
db 02ch, 028h, 02dh, 029h, 02ah, 02eh, 01eh, 029h
|
||||
; disGetNextSymbol 0xc7de2 LB 0xe0 -> off=0x0 cb=0000000000000008 uValue=00000000000c3662 'line_to_vpti_200'
|
||||
line_to_vpti_200: ; 0xc7de2 LB 0x8
|
||||
; disGetNextSymbol 0xc7de3 LB 0xe2 -> off=0x0 cb=0000000000000008 uValue=00000000000c3663 'line_to_vpti_200'
|
||||
line_to_vpti_200: ; 0xc7de3 LB 0x8
|
||||
db 000h, 001h, 002h, 003h, 0ffh, 0ffh, 0ffh, 007h
|
||||
; disGetNextSymbol 0xc7dea LB 0xd8 -> off=0x0 cb=0000000000000008 uValue=00000000000c366a 'line_to_vpti_350'
|
||||
line_to_vpti_350: ; 0xc7dea LB 0x8
|
||||
; disGetNextSymbol 0xc7deb LB 0xda -> off=0x0 cb=0000000000000008 uValue=00000000000c366b 'line_to_vpti_350'
|
||||
line_to_vpti_350: ; 0xc7deb LB 0x8
|
||||
db 013h, 014h, 015h, 016h, 0ffh, 0ffh, 0ffh, 007h
|
||||
; disGetNextSymbol 0xc7df2 LB 0xd0 -> off=0x0 cb=0000000000000008 uValue=00000000000c3672 'line_to_vpti_400'
|
||||
line_to_vpti_400: ; 0xc7df2 LB 0x8
|
||||
; disGetNextSymbol 0xc7df3 LB 0xd2 -> off=0x0 cb=0000000000000008 uValue=00000000000c3673 'line_to_vpti_400'
|
||||
line_to_vpti_400: ; 0xc7df3 LB 0x8
|
||||
db 017h, 017h, 018h, 018h, 0ffh, 0ffh, 0ffh, 019h
|
||||
; disGetNextSymbol 0xc7dfa LB 0xc8 -> off=0x0 cb=0000000000000004 uValue=00000000000c367a 'row_tbl'
|
||||
row_tbl: ; 0xc7dfa LB 0x4
|
||||
dd 02b190e00h
|
||||
; disGetNextSymbol 0xc7dfe LB 0xc4 -> off=0x0 cb=0000000000000015 uValue=00000000000c367e '_vbebios_copyright'
|
||||
_vbebios_copyright: ; 0xc7dfe LB 0x15
|
||||
; disGetNextSymbol 0xc7dfb LB 0xca -> off=0x0 cb=0000000000000005 uValue=00000000000c367b 'row_tbl'
|
||||
row_tbl: ; 0xc7dfb LB 0x5
|
||||
db 000h, 00eh, 019h, 02bh, 000h
|
||||
; disGetNextSymbol 0xc7e00 LB 0xc5 -> off=0x0 cb=0000000000000015 uValue=00000000000c3680 '_vbebios_copyright'
|
||||
_vbebios_copyright: ; 0xc7e00 LB 0x15
|
||||
db 'VirtualBox VESA BIOS', 000h
|
||||
; disGetNextSymbol 0xc7e13 LB 0xaf -> off=0x0 cb=000000000000001d uValue=00000000000c3693 '_vbebios_vendor_name'
|
||||
_vbebios_vendor_name: ; 0xc7e13 LB 0x1d
|
||||
; disGetNextSymbol 0xc7e15 LB 0xb0 -> off=0x0 cb=000000000000001d uValue=00000000000c3695 '_vbebios_vendor_name'
|
||||
_vbebios_vendor_name: ; 0xc7e15 LB 0x1d
|
||||
db 'Oracle and/or its affiliates', 000h
|
||||
; disGetNextSymbol 0xc7e30 LB 0x92 -> off=0x0 cb=000000000000001e uValue=00000000000c36b0 '_vbebios_product_name'
|
||||
_vbebios_product_name: ; 0xc7e30 LB 0x1e
|
||||
; disGetNextSymbol 0xc7e32 LB 0x93 -> off=0x0 cb=000000000000001e uValue=00000000000c36b2 '_vbebios_product_name'
|
||||
_vbebios_product_name: ; 0xc7e32 LB 0x1e
|
||||
db 'Oracle VirtualBox VBE Adapter', 000h
|
||||
; disGetNextSymbol 0xc7e4e LB 0x74 -> off=0x0 cb=0000000000000020 uValue=00000000000c36ce '_vbebios_product_revision'
|
||||
_vbebios_product_revision: ; 0xc7e4e LB 0x20
|
||||
db 'Oracle VirtualBox Version 7.1.8', 000h
|
||||
; disGetNextSymbol 0xc7e6e LB 0x54 -> off=0x0 cb=000000000000002b uValue=00000000000c36ee '_vbebios_info_string'
|
||||
_vbebios_info_string: ; 0xc7e6e LB 0x2b
|
||||
; disGetNextSymbol 0xc7e50 LB 0x75 -> off=0x0 cb=0000000000000021 uValue=00000000000c36d0 '_vbebios_product_revision'
|
||||
_vbebios_product_revision: ; 0xc7e50 LB 0x21
|
||||
db 'Oracle VirtualBox Version 7.1.10', 000h
|
||||
; disGetNextSymbol 0xc7e71 LB 0x54 -> off=0x0 cb=000000000000002b uValue=00000000000c36f1 '_vbebios_info_string'
|
||||
_vbebios_info_string: ; 0xc7e71 LB 0x2b
|
||||
db 'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h
|
||||
; disGetNextSymbol 0xc7e99 LB 0x29 -> off=0x0 cb=0000000000000029 uValue=00000000000c3719 '_no_vbebios_info_string'
|
||||
_no_vbebios_info_string: ; 0xc7e99 LB 0x29
|
||||
; disGetNextSymbol 0xc7e9c LB 0x29 -> off=0x0 cb=0000000000000029 uValue=00000000000c371c '_no_vbebios_info_string'
|
||||
_no_vbebios_info_string: ; 0xc7e9c LB 0x29
|
||||
db 'No VirtualBox VBE support available!', 00dh, 00ah, 00dh, 00ah, 000h
|
||||
|
||||
section CONST progbits vstart=0x7ec2 align=1 ; size=0x0 class=DATA group=DGROUP
|
||||
; Padding 0x1 bytes at 0xc7ec5
|
||||
db 001h
|
||||
|
||||
section CONST2 progbits vstart=0x7ec2 align=1 ; size=0x0 class=DATA group=DGROUP
|
||||
section CONST progbits vstart=0x7ec6 align=1 ; size=0x0 class=DATA group=DGROUP
|
||||
|
||||
; Padding 0x13e bytes at 0xc7ec2
|
||||
db 001h, 000h, 000h, 000h, 000h, 001h, 000h, 000h, 000h, 000h, 000h, 000h, 02fh, 068h, 06fh, 06dh
|
||||
db 065h, 02fh, 067h, 061h, 06ch, 069h, 074h, 073h, 079h, 06eh, 02fh, 063h, 06fh, 06dh, 070h, 069h
|
||||
db 06ch, 065h, 02dh, 063h, 061h, 063h, 068h, 065h, 02fh, 076h, 062h, 06fh, 078h, 02fh, 062h, 072h
|
||||
db 061h, 06eh, 063h, 068h, 065h, 073h, 02fh, 056h, 042h, 06fh, 078h, 02dh, 037h, 02eh, 031h, 02fh
|
||||
db 06fh, 075h, 074h, 02fh, 06ch, 069h, 06eh, 075h, 078h, 02eh, 061h, 06dh, 064h, 036h, 034h, 02fh
|
||||
db 072h, 065h, 06ch, 065h, 061h, 073h, 065h, 02fh, 06fh, 062h, 06ah, 02fh, 056h, 042h, 06fh, 078h
|
||||
db 056h, 067h, 061h, 042h, 069h, 06fh, 073h, 032h, 038h, 036h, 02fh, 056h, 042h, 06fh, 078h, 056h
|
||||
db 067h, 061h, 042h, 069h, 06fh, 073h, 032h, 038h, 036h, 02eh, 073h, 079h, 06dh, 000h, 000h, 000h
|
||||
section CONST2 progbits vstart=0x7ec6 align=1 ; size=0x0 class=DATA group=DGROUP
|
||||
|
||||
; Padding 0x13a bytes at 0xc7ec6
|
||||
db 000h, 000h, 000h, 000h, 001h, 000h, 000h, 000h, 000h, 000h, 000h, 02fh, 068h, 06fh, 06dh, 065h
|
||||
db 02fh, 067h, 061h, 06ch, 069h, 074h, 073h, 079h, 06eh, 02fh, 063h, 06fh, 06dh, 070h, 069h, 06ch
|
||||
db 065h, 02dh, 063h, 061h, 063h, 068h, 065h, 02fh, 076h, 062h, 06fh, 078h, 02fh, 062h, 072h, 061h
|
||||
db 06eh, 063h, 068h, 065h, 073h, 02fh, 056h, 042h, 06fh, 078h, 02dh, 037h, 02eh, 031h, 02fh, 06fh
|
||||
db 075h, 074h, 02fh, 06ch, 069h, 06eh, 075h, 078h, 02eh, 061h, 06dh, 064h, 036h, 034h, 02fh, 072h
|
||||
db 065h, 06ch, 065h, 061h, 073h, 065h, 02fh, 06fh, 062h, 06ah, 02fh, 056h, 042h, 06fh, 078h, 056h
|
||||
db 067h, 061h, 042h, 069h, 06fh, 073h, 032h, 038h, 036h, 02fh, 056h, 042h, 06fh, 078h, 056h, 067h
|
||||
db 061h, 042h, 069h, 06fh, 073h, 032h, 038h, 036h, 02eh, 073h, 079h, 06dh, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
|
@ -9244,4 +9247,4 @@ section CONST2 progbits vstart=0x7ec2 align=1 ; size=0x0 class=DATA group=DGROUP
|
|||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0a4h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0e2h
|
||||
|
|
|
@ -1 +1 @@
|
|||
0bdccfc777369284b7a55153fa821a6e *VBoxVgaBios286.rom
|
||||
29abc1e3e7d19d109b66388fcf76f7fb *VBoxVgaBios286.rom
|
||||
|
|
|
@ -1503,7 +1503,7 @@ init_bios_area: ; 0xc0a26 LB 0x3e
|
|||
mov word [es:bx+00087h], 0f960h ; 26 c7 87 87 00 60 f9 ; 0xc0a43 vgabios.c:234
|
||||
mov byte [es:bx+00089h], 051h ; 26 c6 87 89 00 51 ; 0xc0a4a vgabios.c:238
|
||||
mov byte [es:bx+065h], 009h ; 26 c6 47 65 09 ; 0xc0a50 vgabios.c:240
|
||||
mov word [es:bx+000a8h], 0554dh ; 26 c7 87 a8 00 4d 55 ; 0xc0a55 vgabios.c:242
|
||||
mov word [es:bx+000a8h], 0554eh ; 26 c7 87 a8 00 4e 55 ; 0xc0a55 vgabios.c:242
|
||||
mov [es:bx+000aah], ds ; 26 8c 9f aa 00 ; 0xc0a5c
|
||||
pop bp ; 5d ; 0xc0a61 vgabios.c:243
|
||||
pop bx ; 5b ; 0xc0a62
|
||||
|
@ -1969,7 +1969,7 @@ vga_read_char_attr: ; 0xc0db0 LB 0x127
|
|||
mov word [bp-014h], di ; 89 7e ec ; 0xc0e0f vgabios.c:58
|
||||
movzx bx, byte [bp-012h] ; 0f b6 5e ee ; 0xc0e12 vgabios.c:557
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc0e16
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc0e19
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc0e19
|
||||
jne short 00e56h ; 75 36 ; 0xc0e1e
|
||||
imul dx, di ; 0f af d7 ; 0xc0e20 vgabios.c:559
|
||||
add dx, dx ; 01 d2 ; 0xc0e23
|
||||
|
@ -1986,13 +1986,13 @@ vga_read_char_attr: ; 0xc0db0 LB 0x127
|
|||
add ax, ax ; 01 c0 ; 0xc0e41
|
||||
mov di, dx ; 89 d7 ; 0xc0e43
|
||||
add di, ax ; 01 c7 ; 0xc0e45
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc0e47 vgabios.c:55
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc0e47 vgabios.c:55
|
||||
mov ax, word [es:di] ; 26 8b 05 ; 0xc0e4b
|
||||
push SS ; 16 ; 0xc0e4e vgabios.c:58
|
||||
pop ES ; 07 ; 0xc0e4f
|
||||
mov word [es:si], ax ; 26 89 04 ; 0xc0e50
|
||||
jmp near 00eceh ; e9 78 00 ; 0xc0e53 vgabios.c:561
|
||||
mov bl, byte [bx+047adh] ; 8a 9f ad 47 ; 0xc0e56 vgabios.c:562
|
||||
mov bl, byte [bx+047aeh] ; 8a 9f ae 47 ; 0xc0e56 vgabios.c:562
|
||||
cmp bl, 005h ; 80 fb 05 ; 0xc0e5a
|
||||
je short 00eaah ; 74 4b ; 0xc0e5d
|
||||
cmp bl, 002h ; 80 fb 02 ; 0xc0e5f
|
||||
|
@ -2091,18 +2091,18 @@ vga_get_font_info: ; 0xc0ee7 LB 0x83
|
|||
retn 00002h ; c2 02 00 ; 0xc0f40
|
||||
mov bx, 0010ch ; bb 0c 01 ; 0xc0f43 vgabios.c:67
|
||||
jmp short 00f01h ; eb b9 ; 0xc0f46
|
||||
mov dx, 05d69h ; ba 69 5d ; 0xc0f48 vgabios.c:601
|
||||
mov dx, 05d6ah ; ba 6a 5d ; 0xc0f48 vgabios.c:601
|
||||
mov ax, ds ; 8c d8 ; 0xc0f4b
|
||||
jmp short 00f0ch ; eb bd ; 0xc0f4d vgabios.c:602
|
||||
mov dx, 05569h ; ba 69 55 ; 0xc0f4f vgabios.c:604
|
||||
mov dx, 0556ah ; ba 6a 55 ; 0xc0f4f vgabios.c:604
|
||||
jmp short 00f4bh ; eb f7 ; 0xc0f52
|
||||
mov dx, 05969h ; ba 69 59 ; 0xc0f54 vgabios.c:607
|
||||
mov dx, 0596ah ; ba 6a 59 ; 0xc0f54 vgabios.c:607
|
||||
jmp short 00f4bh ; eb f2 ; 0xc0f57
|
||||
mov dx, 07b69h ; ba 69 7b ; 0xc0f59 vgabios.c:610
|
||||
mov dx, 07b6ah ; ba 6a 7b ; 0xc0f59 vgabios.c:610
|
||||
jmp short 00f4bh ; eb ed ; 0xc0f5c
|
||||
mov dx, 06b69h ; ba 69 6b ; 0xc0f5e vgabios.c:613
|
||||
mov dx, 06b6ah ; ba 6a 6b ; 0xc0f5e vgabios.c:613
|
||||
jmp short 00f4bh ; eb e8 ; 0xc0f61
|
||||
mov dx, 07c96h ; ba 96 7c ; 0xc0f63 vgabios.c:616
|
||||
mov dx, 07c97h ; ba 97 7c ; 0xc0f63 vgabios.c:616
|
||||
jmp short 00f4bh ; eb e3 ; 0xc0f66
|
||||
jmp short 00f3dh ; eb d3 ; 0xc0f68 vgabios.c:622
|
||||
; disGetNextSymbol 0xc0f6a LB 0x334f -> off=0x0 cb=0000000000000156 uValue=00000000000c0f6a 'vga_read_pixel'
|
||||
|
@ -2126,9 +2126,9 @@ vga_read_pixel: ; 0xc0f6a LB 0x156
|
|||
je near 010b9h ; 0f 84 27 01 ; 0xc0f8e
|
||||
movzx bx, al ; 0f b6 d8 ; 0xc0f92 vgabios.c:645
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc0f95
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc0f98
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc0f98
|
||||
je near 010b9h ; 0f 84 18 01 ; 0xc0f9d
|
||||
mov ch, byte [bx+047adh] ; 8a af ad 47 ; 0xc0fa1 vgabios.c:649
|
||||
mov ch, byte [bx+047aeh] ; 8a af ae 47 ; 0xc0fa1 vgabios.c:649
|
||||
cmp ch, 003h ; 80 fd 03 ; 0xc0fa5
|
||||
jc short 00fbbh ; 72 11 ; 0xc0fa8
|
||||
jbe short 00fc3h ; 76 17 ; 0xc0faa
|
||||
|
@ -2180,7 +2180,7 @@ vga_read_pixel: ; 0xc0f6a LB 0x156
|
|||
or ch, al ; 08 c5 ; 0xc1027
|
||||
inc byte [bp-006h] ; fe 46 fa ; 0xc1029 vgabios.c:661
|
||||
jmp short 00ffch ; eb ce ; 0xc102c
|
||||
movzx cx, byte [bx+047aeh] ; 0f b6 8f ae 47 ; 0xc102e vgabios.c:664
|
||||
movzx cx, byte [bx+047afh] ; 0f b6 8f af 47 ; 0xc102e vgabios.c:664
|
||||
mov bx, strict word 00004h ; bb 04 00 ; 0xc1033
|
||||
sub bx, cx ; 29 cb ; 0xc1036
|
||||
mov cx, bx ; 89 d9 ; 0xc1038
|
||||
|
@ -2199,7 +2199,7 @@ vga_read_pixel: ; 0xc0f6a LB 0x156
|
|||
mov al, byte [es:bx] ; 26 8a 07 ; 0xc1058
|
||||
movzx bx, ah ; 0f b6 dc ; 0xc105b vgabios.c:668
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc105e
|
||||
cmp byte [bx+047aeh], 002h ; 80 bf ae 47 02 ; 0xc1061
|
||||
cmp byte [bx+047afh], 002h ; 80 bf af 47 02 ; 0xc1061
|
||||
jne short 0107dh ; 75 15 ; 0xc1066
|
||||
and dx, strict byte 00003h ; 83 e2 03 ; 0xc1068 vgabios.c:669
|
||||
mov cx, strict word 00003h ; b9 03 00 ; 0xc106b
|
||||
|
@ -2534,7 +2534,7 @@ biosfn_set_active_page: ; 0xc12cb LB 0xcd
|
|||
movzx bx, ch ; 0f b6 dd ; 0xc1301 vgabios.c:847
|
||||
mov si, bx ; 89 de ; 0xc1304
|
||||
sal si, 003h ; c1 e6 03 ; 0xc1306
|
||||
cmp byte [si+047ach], 000h ; 80 bc ac 47 00 ; 0xc1309
|
||||
cmp byte [si+047adh], 000h ; 80 bc ad 47 00 ; 0xc1309
|
||||
jne short 01344h ; 75 34 ; 0xc130e
|
||||
mov bx, strict word 0004ah ; bb 4a 00 ; 0xc1310 vgabios.c:57
|
||||
mov ax, strict word 00040h ; b8 40 00 ; 0xc1313
|
||||
|
@ -2558,10 +2558,10 @@ biosfn_set_active_page: ; 0xc12cb LB 0xcd
|
|||
mov bx, dx ; 89 d3 ; 0xc133f
|
||||
inc bx ; 43 ; 0xc1341
|
||||
jmp short 01353h ; eb 0f ; 0xc1342 vgabios.c:860
|
||||
movzx bx, byte [bx+0482bh] ; 0f b6 9f 2b 48 ; 0xc1344 vgabios.c:862
|
||||
movzx bx, byte [bx+0482ch] ; 0f b6 9f 2c 48 ; 0xc1344 vgabios.c:862
|
||||
sal bx, 006h ; c1 e3 06 ; 0xc1349
|
||||
movzx ax, cl ; 0f b6 c1 ; 0xc134c
|
||||
mov bx, word [bx+04842h] ; 8b 9f 42 48 ; 0xc134f
|
||||
mov bx, word [bx+04843h] ; 8b 9f 43 48 ; 0xc134f
|
||||
imul bx, ax ; 0f af d8 ; 0xc1353
|
||||
mov si, strict word 00063h ; be 63 00 ; 0xc1356 vgabios.c:57
|
||||
mov ax, strict word 00040h ; b8 40 00 ; 0xc1359
|
||||
|
@ -2605,7 +2605,7 @@ find_vpti: ; 0xc1398 LB 0x45
|
|||
movzx bx, al ; 0f b6 d8 ; 0xc139d vgabios.c:921
|
||||
mov si, bx ; 89 de ; 0xc13a0
|
||||
sal si, 003h ; c1 e6 03 ; 0xc13a2
|
||||
cmp byte [si+047ach], 000h ; 80 bc ac 47 00 ; 0xc13a5
|
||||
cmp byte [si+047adh], 000h ; 80 bc ad 47 00 ; 0xc13a5
|
||||
jne short 013d4h ; 75 28 ; 0xc13aa
|
||||
mov si, 00089h ; be 89 00 ; 0xc13ac vgabios.c:47
|
||||
mov ax, strict word 00040h ; b8 40 00 ; 0xc13af
|
||||
|
@ -2613,15 +2613,15 @@ find_vpti: ; 0xc1398 LB 0x45
|
|||
mov al, byte [es:si] ; 26 8a 04 ; 0xc13b4
|
||||
test AL, strict byte 010h ; a8 10 ; 0xc13b7 vgabios.c:923
|
||||
je short 013c2h ; 74 07 ; 0xc13b9
|
||||
movsx ax, byte [bx+07df2h] ; 0f be 87 f2 7d ; 0xc13bb vgabios.c:924
|
||||
movsx ax, byte [bx+07df3h] ; 0f be 87 f3 7d ; 0xc13bb vgabios.c:924
|
||||
jmp short 013d9h ; eb 17 ; 0xc13c0 vgabios.c:925
|
||||
test AL, strict byte 080h ; a8 80 ; 0xc13c2
|
||||
je short 013cdh ; 74 07 ; 0xc13c4
|
||||
movsx ax, byte [bx+07de2h] ; 0f be 87 e2 7d ; 0xc13c6 vgabios.c:926
|
||||
movsx ax, byte [bx+07de3h] ; 0f be 87 e3 7d ; 0xc13c6 vgabios.c:926
|
||||
jmp short 013d9h ; eb 0c ; 0xc13cb vgabios.c:927
|
||||
movsx ax, byte [bx+07deah] ; 0f be 87 ea 7d ; 0xc13cd vgabios.c:928
|
||||
movsx ax, byte [bx+07debh] ; 0f be 87 eb 7d ; 0xc13cd vgabios.c:928
|
||||
jmp short 013d9h ; eb 05 ; 0xc13d2 vgabios.c:929
|
||||
movzx ax, byte [bx+0482bh] ; 0f b6 87 2b 48 ; 0xc13d4 vgabios.c:930
|
||||
movzx ax, byte [bx+0482ch] ; 0f b6 87 2c 48 ; 0xc13d4 vgabios.c:930
|
||||
pop bp ; 5d ; 0xc13d9 vgabios.c:933
|
||||
pop si ; 5e ; 0xc13da
|
||||
pop bx ; 5b ; 0xc13db
|
||||
|
@ -2680,13 +2680,13 @@ biosfn_set_video_mode: ; 0xc13dd LB 0x4b2
|
|||
jne near 01509h ; 0f 85 b0 00 ; 0xc1455
|
||||
mov di, cx ; 89 cf ; 0xc1459 vgabios.c:999
|
||||
sal di, 003h ; c1 e7 03 ; 0xc145b
|
||||
mov al, byte [di+047b1h] ; 8a 85 b1 47 ; 0xc145e
|
||||
mov al, byte [di+047b2h] ; 8a 85 b2 47 ; 0xc145e
|
||||
mov dx, 003c6h ; ba c6 03 ; 0xc1462
|
||||
out DX, AL ; ee ; 0xc1465
|
||||
xor al, al ; 30 c0 ; 0xc1466 vgabios.c:1002
|
||||
mov dx, 003c8h ; ba c8 03 ; 0xc1468
|
||||
out DX, AL ; ee ; 0xc146b
|
||||
mov cl, byte [di+047b2h] ; 8a 8d b2 47 ; 0xc146c vgabios.c:1005
|
||||
mov cl, byte [di+047b3h] ; 8a 8d b3 47 ; 0xc146c vgabios.c:1005
|
||||
cmp cl, 001h ; 80 f9 01 ; 0xc1470
|
||||
jc short 01483h ; 72 0e ; 0xc1473
|
||||
jbe short 0148eh ; 76 17 ; 0xc1475
|
||||
|
@ -2697,21 +2697,21 @@ biosfn_set_video_mode: ; 0xc13dd LB 0x4b2
|
|||
jmp short 014a1h ; eb 1e ; 0xc1481
|
||||
test cl, cl ; 84 c9 ; 0xc1483
|
||||
jne short 014a1h ; 75 1a ; 0xc1485
|
||||
mov word [bp-016h], 04fbfh ; c7 46 ea bf 4f ; 0xc1487 vgabios.c:1007
|
||||
mov word [bp-016h], 04fc0h ; c7 46 ea c0 4f ; 0xc1487 vgabios.c:1007
|
||||
jmp short 014a1h ; eb 13 ; 0xc148c vgabios.c:1008
|
||||
mov word [bp-016h], 0507fh ; c7 46 ea 7f 50 ; 0xc148e vgabios.c:1010
|
||||
mov word [bp-016h], 05080h ; c7 46 ea 80 50 ; 0xc148e vgabios.c:1010
|
||||
jmp short 014a1h ; eb 0c ; 0xc1493 vgabios.c:1011
|
||||
mov word [bp-016h], 0513fh ; c7 46 ea 3f 51 ; 0xc1495 vgabios.c:1013
|
||||
mov word [bp-016h], 05140h ; c7 46 ea 40 51 ; 0xc1495 vgabios.c:1013
|
||||
jmp short 014a1h ; eb 05 ; 0xc149a vgabios.c:1014
|
||||
mov word [bp-016h], 051ffh ; c7 46 ea ff 51 ; 0xc149c vgabios.c:1016
|
||||
mov word [bp-016h], 05200h ; c7 46 ea 00 52 ; 0xc149c vgabios.c:1016
|
||||
movzx di, byte [bp-010h] ; 0f b6 7e f0 ; 0xc14a1 vgabios.c:1020
|
||||
sal di, 003h ; c1 e7 03 ; 0xc14a5
|
||||
cmp byte [di+047ach], 000h ; 80 bd ac 47 00 ; 0xc14a8
|
||||
cmp byte [di+047adh], 000h ; 80 bd ad 47 00 ; 0xc14a8
|
||||
jne short 014beh ; 75 0f ; 0xc14ad
|
||||
mov es, [bp-01ah] ; 8e 46 e6 ; 0xc14af vgabios.c:1022
|
||||
cmp byte [es:si+002h], 008h ; 26 80 7c 02 08 ; 0xc14b2
|
||||
jne short 014beh ; 75 05 ; 0xc14b7
|
||||
mov word [bp-016h], 0507fh ; c7 46 ea 7f 50 ; 0xc14b9 vgabios.c:1023
|
||||
mov word [bp-016h], 05080h ; c7 46 ea 80 50 ; 0xc14b9 vgabios.c:1023
|
||||
xor cx, cx ; 31 c9 ; 0xc14be vgabios.c:1026
|
||||
jmp short 014d1h ; eb 0f ; 0xc14c0
|
||||
xor al, al ; 30 c0 ; 0xc14c2 vgabios.c:1033
|
||||
|
@ -2724,8 +2724,8 @@ biosfn_set_video_mode: ; 0xc13dd LB 0x4b2
|
|||
jnc short 014fch ; 73 2b ; 0xc14cf
|
||||
movzx di, byte [bp-010h] ; 0f b6 7e f0 ; 0xc14d1
|
||||
sal di, 003h ; c1 e7 03 ; 0xc14d5
|
||||
movzx di, byte [di+047b2h] ; 0f b6 bd b2 47 ; 0xc14d8
|
||||
movzx di, byte [di+0483bh] ; 0f b6 bd 3b 48 ; 0xc14dd
|
||||
movzx di, byte [di+047b3h] ; 0f b6 bd b3 47 ; 0xc14d8
|
||||
movzx di, byte [di+0483ch] ; 0f b6 bd 3c 48 ; 0xc14dd
|
||||
cmp cx, di ; 39 f9 ; 0xc14e2
|
||||
jnbe short 014c2h ; 77 dc ; 0xc14e4
|
||||
imul di, cx, strict byte 00003h ; 6b f9 03 ; 0xc14e6
|
||||
|
@ -2835,7 +2835,7 @@ biosfn_set_video_mode: ; 0xc13dd LB 0x4b2
|
|||
jmp short 015bbh ; eb e3 ; 0xc15d6
|
||||
movzx di, byte [bp-010h] ; 0f b6 7e f0 ; 0xc15d8 vgabios.c:1081
|
||||
sal di, 003h ; c1 e7 03 ; 0xc15dc
|
||||
cmp byte [di+047adh], 001h ; 80 bd ad 47 01 ; 0xc15df
|
||||
cmp byte [di+047aeh], 001h ; 80 bd ae 47 01 ; 0xc15df
|
||||
jne short 015ebh ; 75 05 ; 0xc15e4
|
||||
mov cx, 003b4h ; b9 b4 03 ; 0xc15e6
|
||||
jmp short 015eeh ; eb 03 ; 0xc15e9
|
||||
|
@ -2875,9 +2875,9 @@ biosfn_set_video_mode: ; 0xc13dd LB 0x4b2
|
|||
jne short 01692h ; 75 5c ; 0xc1634
|
||||
movzx di, byte [bp-010h] ; 0f b6 7e f0 ; 0xc1636 vgabios.c:1100
|
||||
sal di, 003h ; c1 e7 03 ; 0xc163a
|
||||
cmp byte [di+047ach], 000h ; 80 bd ac 47 00 ; 0xc163d
|
||||
cmp byte [di+047adh], 000h ; 80 bd ad 47 00 ; 0xc163d
|
||||
jne short 01656h ; 75 12 ; 0xc1642
|
||||
mov es, [di+047afh] ; 8e 85 af 47 ; 0xc1644 vgabios.c:1102
|
||||
mov es, [di+047b0h] ; 8e 85 b0 47 ; 0xc1644 vgabios.c:1102
|
||||
mov cx, 04000h ; b9 00 40 ; 0xc1648
|
||||
mov ax, 00720h ; b8 20 07 ; 0xc164b
|
||||
xor di, di ; 31 ff ; 0xc164e
|
||||
|
@ -2886,7 +2886,7 @@ biosfn_set_video_mode: ; 0xc13dd LB 0x4b2
|
|||
jmp short 01692h ; eb 3c ; 0xc1654 vgabios.c:1104
|
||||
cmp byte [bp-00eh], 00dh ; 80 7e f2 0d ; 0xc1656 vgabios.c:1106
|
||||
jnc short 0166dh ; 73 11 ; 0xc165a
|
||||
mov es, [di+047afh] ; 8e 85 af 47 ; 0xc165c vgabios.c:1108
|
||||
mov es, [di+047b0h] ; 8e 85 b0 47 ; 0xc165c vgabios.c:1108
|
||||
mov cx, 04000h ; b9 00 40 ; 0xc1660
|
||||
xor ax, ax ; 31 c0 ; 0xc1663
|
||||
xor di, di ; 31 ff ; 0xc1665
|
||||
|
@ -2903,7 +2903,7 @@ biosfn_set_video_mode: ; 0xc13dd LB 0x4b2
|
|||
mov word [bp-01eh], ax ; 89 46 e2 ; 0xc1679
|
||||
mov AL, strict byte 00fh ; b0 0f ; 0xc167c vgabios.c:1114
|
||||
out DX, AL ; ee ; 0xc167e
|
||||
mov es, [di+047afh] ; 8e 85 af 47 ; 0xc167f vgabios.c:1115
|
||||
mov es, [di+047b0h] ; 8e 85 b0 47 ; 0xc167f vgabios.c:1115
|
||||
mov cx, 08000h ; b9 00 80 ; 0xc1683
|
||||
xor ax, ax ; 31 c0 ; 0xc1686
|
||||
xor di, di ; 31 ff ; 0xc1688
|
||||
|
@ -2952,7 +2952,7 @@ biosfn_set_video_mode: ; 0xc13dd LB 0x4b2
|
|||
cmp AL, strict byte 007h ; 3c 07 ; 0xc1705
|
||||
jnbe short 0172fh ; 77 26 ; 0xc1707
|
||||
movzx di, al ; 0f b6 f8 ; 0xc1709 vgabios.c:1136
|
||||
mov al, byte [di+07ddah] ; 8a 85 da 7d ; 0xc170c vgabios.c:50
|
||||
mov al, byte [di+07ddbh] ; 8a 85 db 7d ; 0xc170c vgabios.c:50
|
||||
mov di, strict word 00065h ; bf 65 00 ; 0xc1710 vgabios.c:52
|
||||
mov byte [es:di], al ; 26 88 05 ; 0xc1713
|
||||
cmp byte [bp-00eh], 006h ; 80 7e f2 06 ; 0xc1716 vgabios.c:1137
|
||||
|
@ -2966,7 +2966,7 @@ biosfn_set_video_mode: ; 0xc13dd LB 0x4b2
|
|||
mov byte [es:di], dl ; 26 88 15 ; 0xc172c
|
||||
movzx di, byte [bp-010h] ; 0f b6 7e f0 ; 0xc172f vgabios.c:1141
|
||||
sal di, 003h ; c1 e7 03 ; 0xc1733
|
||||
cmp byte [di+047ach], 000h ; 80 bd ac 47 00 ; 0xc1736
|
||||
cmp byte [di+047adh], 000h ; 80 bd ad 47 00 ; 0xc1736
|
||||
jne short 01746h ; 75 09 ; 0xc173b
|
||||
mov dx, strict word 00007h ; ba 07 00 ; 0xc173d vgabios.c:1143
|
||||
mov ax, strict word 00006h ; b8 06 00 ; 0xc1740
|
||||
|
@ -2984,7 +2984,7 @@ biosfn_set_video_mode: ; 0xc13dd LB 0x4b2
|
|||
call 012cbh ; e8 6c fb ; 0xc175c
|
||||
movzx di, byte [bp-010h] ; 0f b6 7e f0 ; 0xc175f vgabios.c:1155
|
||||
sal di, 003h ; c1 e7 03 ; 0xc1763
|
||||
cmp byte [di+047ach], 000h ; 80 bd ac 47 00 ; 0xc1766
|
||||
cmp byte [di+047adh], 000h ; 80 bd ad 47 00 ; 0xc1766
|
||||
jne near 01850h ; 0f 85 e1 00 ; 0xc176b
|
||||
mov es, [bp-014h] ; 8e 46 ec ; 0xc176f vgabios.c:1157
|
||||
mov di, word [es:bx+008h] ; 26 8b 7f 08 ; 0xc1772
|
||||
|
@ -3001,7 +3001,7 @@ biosfn_set_video_mode: ; 0xc13dd LB 0x4b2
|
|||
push ax ; 50 ; 0xc1794
|
||||
push dword 000000000h ; 66 6a 00 ; 0xc1795
|
||||
mov cx, 00100h ; b9 00 01 ; 0xc1798
|
||||
mov bx, 05569h ; bb 69 55 ; 0xc179b
|
||||
mov bx, 0556ah ; bb 6a 55 ; 0xc179b
|
||||
mov dx, 0c000h ; ba 00 c0 ; 0xc179e
|
||||
xor ax, ax ; 31 c0 ; 0xc17a1
|
||||
call 02c0ah ; e8 64 14 ; 0xc17a3
|
||||
|
@ -3010,7 +3010,7 @@ biosfn_set_video_mode: ; 0xc13dd LB 0x4b2
|
|||
push ax ; 50 ; 0xc17aa
|
||||
push dword 000000000h ; 66 6a 00 ; 0xc17ab
|
||||
mov cx, 00100h ; b9 00 01 ; 0xc17ae
|
||||
mov bx, 05d69h ; bb 69 5d ; 0xc17b1
|
||||
mov bx, 05d6ah ; bb 6a 5d ; 0xc17b1
|
||||
mov dx, 0c000h ; ba 00 c0 ; 0xc17b4
|
||||
xor al, al ; 30 c0 ; 0xc17b7
|
||||
call 02c0ah ; e8 4e 14 ; 0xc17b9
|
||||
|
@ -3018,7 +3018,7 @@ biosfn_set_video_mode: ; 0xc13dd LB 0x4b2
|
|||
jne short 017f4h ; 75 32 ; 0xc17c0
|
||||
mov cx, strict word 0000eh ; b9 0e 00 ; 0xc17c2 vgabios.c:1166
|
||||
xor bx, bx ; 31 db ; 0xc17c5
|
||||
mov dx, 07b69h ; ba 69 7b ; 0xc17c7
|
||||
mov dx, 07b6ah ; ba 6a 7b ; 0xc17c7
|
||||
mov ax, 0c000h ; b8 00 c0 ; 0xc17ca
|
||||
call 02b95h ; e8 c5 13 ; 0xc17cd
|
||||
jmp short 017f4h ; eb 22 ; 0xc17d0 vgabios.c:1167
|
||||
|
@ -3026,13 +3026,13 @@ biosfn_set_video_mode: ; 0xc13dd LB 0x4b2
|
|||
push ax ; 50 ; 0xc17d4
|
||||
push dword 000000000h ; 66 6a 00 ; 0xc17d5
|
||||
mov cx, 00100h ; b9 00 01 ; 0xc17d8
|
||||
mov bx, 06b69h ; bb 69 6b ; 0xc17db
|
||||
mov bx, 06b6ah ; bb 6a 6b ; 0xc17db
|
||||
mov dx, 0c000h ; ba 00 c0 ; 0xc17de
|
||||
xor al, al ; 30 c0 ; 0xc17e1
|
||||
call 02c0ah ; e8 24 14 ; 0xc17e3
|
||||
mov cx, strict word 00010h ; b9 10 00 ; 0xc17e6 vgabios.c:1170
|
||||
xor bx, bx ; 31 db ; 0xc17e9
|
||||
mov dx, 07c96h ; ba 96 7c ; 0xc17eb
|
||||
mov dx, 07c97h ; ba 97 7c ; 0xc17eb
|
||||
mov ax, 0c000h ; b8 00 c0 ; 0xc17ee
|
||||
call 02b95h ; e8 a1 13 ; 0xc17f1
|
||||
cmp word [bp-012h], strict byte 00000h ; 83 7e ee 00 ; 0xc17f4 vgabios.c:1172
|
||||
|
@ -3070,7 +3070,7 @@ biosfn_set_video_mode: ; 0xc13dd LB 0x4b2
|
|||
mov AL, strict byte 003h ; b0 03 ; 0xc184a
|
||||
mov AH, strict byte 011h ; b4 11 ; 0xc184c
|
||||
int 06dh ; cd 6d ; 0xc184e
|
||||
mov bx, 05969h ; bb 69 59 ; 0xc1850 vgabios.c:1199
|
||||
mov bx, 0596ah ; bb 6a 59 ; 0xc1850 vgabios.c:1199
|
||||
mov cx, ds ; 8c d9 ; 0xc1853
|
||||
mov ax, strict word 0001fh ; b8 1f 00 ; 0xc1855
|
||||
call 009f0h ; e8 95 f1 ; 0xc1858
|
||||
|
@ -3082,14 +3082,14 @@ biosfn_set_video_mode: ; 0xc13dd LB 0x4b2
|
|||
je short 0187bh ; 74 11 ; 0xc1868
|
||||
cmp AL, strict byte 008h ; 3c 08 ; 0xc186a
|
||||
jne short 01885h ; 75 17 ; 0xc186c
|
||||
mov bx, 05569h ; bb 69 55 ; 0xc186e vgabios.c:1203
|
||||
mov bx, 0556ah ; bb 6a 55 ; 0xc186e vgabios.c:1203
|
||||
mov cx, ds ; 8c d9 ; 0xc1871
|
||||
mov ax, strict word 00043h ; b8 43 00 ; 0xc1873
|
||||
call 009f0h ; e8 77 f1 ; 0xc1876
|
||||
jmp short 01885h ; eb 0a ; 0xc1879 vgabios.c:1204
|
||||
mov bx, 05d69h ; bb 69 5d ; 0xc187b vgabios.c:1206
|
||||
mov bx, 05d6ah ; bb 6a 5d ; 0xc187b vgabios.c:1206
|
||||
jmp short 01871h ; eb f1 ; 0xc187e
|
||||
mov bx, 06b69h ; bb 69 6b ; 0xc1880 vgabios.c:1209
|
||||
mov bx, 06b6ah ; bb 6a 6b ; 0xc1880 vgabios.c:1209
|
||||
jmp short 01871h ; eb ec ; 0xc1883
|
||||
lea sp, [bp-00ah] ; 8d 66 f6 ; 0xc1885 vgabios.c:1212
|
||||
pop di ; 5f ; 0xc1888
|
||||
|
@ -3485,7 +3485,7 @@ biosfn_scroll: ; 0xc1b5d LB 0x628
|
|||
mov word [bp-016h], ax ; 89 46 ea ; 0xc1c06
|
||||
mov ax, word [bp-014h] ; 8b 46 ec ; 0xc1c09
|
||||
imul ax, cx ; 0f af c1 ; 0xc1c0c
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc1c0f
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc1c0f
|
||||
jne near 01db3h ; 0f 85 9b 01 ; 0xc1c14
|
||||
mov cx, ax ; 89 c1 ; 0xc1c18 vgabios.c:1345
|
||||
add cx, ax ; 01 c1 ; 0xc1c1a
|
||||
|
@ -3509,7 +3509,7 @@ biosfn_scroll: ; 0xc1b5d LB 0x628
|
|||
movzx dx, byte [bp-012h] ; 0f b6 56 ee ; 0xc1c4d vgabios.c:1352
|
||||
sal dx, 008h ; c1 e2 08 ; 0xc1c51
|
||||
add dx, strict byte 00020h ; 83 c2 20 ; 0xc1c54
|
||||
mov bx, word [bx+047afh] ; 8b 9f af 47 ; 0xc1c57
|
||||
mov bx, word [bx+047b0h] ; 8b 9f b0 47 ; 0xc1c57
|
||||
mov cx, ax ; 89 c1 ; 0xc1c5b
|
||||
mov ax, dx ; 89 d0 ; 0xc1c5d
|
||||
mov di, word [bp-01ch] ; 8b 7e e4 ; 0xc1c5f
|
||||
|
@ -3543,7 +3543,7 @@ biosfn_scroll: ; 0xc1b5d LB 0x628
|
|||
add di, dx ; 01 d7 ; 0xc1cb6
|
||||
movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xc1cb8
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc1cbc
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc1cbf
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc1cbf
|
||||
jcxz 01cc7h ; e3 02 ; 0xc1cc3
|
||||
rep stosw ; f3 ab ; 0xc1cc5
|
||||
jmp short 01d02h ; eb 39 ; 0xc1cc7 vgabios.c:1361
|
||||
|
@ -3555,7 +3555,7 @@ biosfn_scroll: ; 0xc1b5d LB 0x628
|
|||
add si, si ; 01 f6 ; 0xc1cd9
|
||||
movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xc1cdb
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc1cdf
|
||||
mov ax, word [bx+047afh] ; 8b 87 af 47 ; 0xc1ce2
|
||||
mov ax, word [bx+047b0h] ; 8b 87 b0 47 ; 0xc1ce2
|
||||
mov bx, word [bp-01ah] ; 8b 5e e6 ; 0xc1ce6
|
||||
imul bx, word [bp-014h] ; 0f af 5e ec ; 0xc1ce9
|
||||
mov di, dx ; 89 d7 ; 0xc1ced
|
||||
|
@ -3596,7 +3596,7 @@ biosfn_scroll: ; 0xc1b5d LB 0x628
|
|||
add di, dx ; 01 d7 ; 0xc1d4f
|
||||
movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xc1d51
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc1d55
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc1d58
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc1d58
|
||||
jcxz 01d60h ; e3 02 ; 0xc1d5c
|
||||
rep stosw ; f3 ab ; 0xc1d5e
|
||||
jmp short 01da2h ; eb 40 ; 0xc1d60 vgabios.c:1370
|
||||
|
@ -3610,7 +3610,7 @@ biosfn_scroll: ; 0xc1b5d LB 0x628
|
|||
add si, si ; 01 f6 ; 0xc1d79
|
||||
movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xc1d7b
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc1d7f
|
||||
mov ax, word [bx+047afh] ; 8b 87 af 47 ; 0xc1d82
|
||||
mov ax, word [bx+047b0h] ; 8b 87 b0 47 ; 0xc1d82
|
||||
mov bx, word [bp-01ah] ; 8b 5e e6 ; 0xc1d86
|
||||
imul bx, word [bp-014h] ; 0f af 5e ec ; 0xc1d89
|
||||
add dx, bx ; 01 da ; 0xc1d8d
|
||||
|
@ -3629,11 +3629,11 @@ biosfn_scroll: ; 0xc1b5d LB 0x628
|
|||
jc near 0217ch ; 0f 82 cf 03 ; 0xc1da9
|
||||
dec word [bp-01ah] ; ff 4e e6 ; 0xc1dad vgabios.c:1373
|
||||
jmp near 01d0fh ; e9 5c ff ; 0xc1db0
|
||||
movzx di, byte [di+0482bh] ; 0f b6 bd 2b 48 ; 0xc1db3 vgabios.c:1379
|
||||
movzx di, byte [di+0482ch] ; 0f b6 bd 2c 48 ; 0xc1db3 vgabios.c:1379
|
||||
sal di, 006h ; c1 e7 06 ; 0xc1db8
|
||||
mov dl, byte [di+04841h] ; 8a 95 41 48 ; 0xc1dbb
|
||||
mov dl, byte [di+04842h] ; 8a 95 42 48 ; 0xc1dbb
|
||||
mov byte [bp-00eh], dl ; 88 56 f2 ; 0xc1dbf
|
||||
mov dl, byte [bx+047adh] ; 8a 97 ad 47 ; 0xc1dc2 vgabios.c:1380
|
||||
mov dl, byte [bx+047aeh] ; 8a 97 ae 47 ; 0xc1dc2 vgabios.c:1380
|
||||
cmp dl, 003h ; 80 fa 03 ; 0xc1dc6
|
||||
jc short 01ddch ; 72 11 ; 0xc1dc9
|
||||
jbe short 01de6h ; 76 19 ; 0xc1dcb
|
||||
|
@ -3671,7 +3671,7 @@ biosfn_scroll: ; 0xc1b5d LB 0x628
|
|||
movzx ax, byte [bp-012h] ; 0f b6 46 ee ; 0xc1e22
|
||||
movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xc1e26
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc1e2a
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc1e2d
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc1e2d
|
||||
xor di, di ; 31 ff ; 0xc1e31
|
||||
jcxz 01e37h ; e3 02 ; 0xc1e33
|
||||
rep stosb ; f3 aa ; 0xc1e35
|
||||
|
@ -3752,7 +3752,7 @@ biosfn_scroll: ; 0xc1b5d LB 0x628
|
|||
jc near 0217ch ; 0f 82 5c 02 ; 0xc1f1c
|
||||
dec word [bp-01ah] ; ff 4e e6 ; 0xc1f20 vgabios.c:1409
|
||||
jmp short 01eb4h ; eb 8f ; 0xc1f23
|
||||
mov dl, byte [bx+047aeh] ; 8a 97 ae 47 ; 0xc1f25 vgabios.c:1414
|
||||
mov dl, byte [bx+047afh] ; 8a 97 af 47 ; 0xc1f25 vgabios.c:1414
|
||||
cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xc1f29 vgabios.c:1415
|
||||
jne short 01f6ah ; 75 3b ; 0xc1f2d
|
||||
cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xc1f2f
|
||||
|
@ -3770,7 +3770,7 @@ biosfn_scroll: ; 0xc1b5d LB 0x628
|
|||
movzx cx, dl ; 0f b6 ca ; 0xc1f53
|
||||
imul cx, ax ; 0f af c8 ; 0xc1f56
|
||||
movzx ax, byte [bp-012h] ; 0f b6 46 ee ; 0xc1f59
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc1f5d
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc1f5d
|
||||
xor di, di ; 31 ff ; 0xc1f61
|
||||
jcxz 01f67h ; e3 02 ; 0xc1f63
|
||||
rep stosb ; f3 aa ; 0xc1f65
|
||||
|
@ -3871,7 +3871,7 @@ biosfn_scroll: ; 0xc1b5d LB 0x628
|
|||
imul cx, dx ; 0f af ca ; 0xc2088
|
||||
sal cx, 003h ; c1 e1 03 ; 0xc208b
|
||||
movzx ax, byte [bp-012h] ; 0f b6 46 ee ; 0xc208e
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc2092
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc2092
|
||||
xor di, di ; 31 ff ; 0xc2096
|
||||
jcxz 0209ch ; e3 02 ; 0xc2098
|
||||
rep stosb ; f3 aa ; 0xc209a
|
||||
|
@ -4061,7 +4061,7 @@ write_gfx_char_cga: ; 0xc2284 LB 0xdd
|
|||
push si ; 56 ; 0xc2284 vgabios.c:1534
|
||||
push di ; 57 ; 0xc2285
|
||||
enter 00006h, 000h ; c8 06 00 00 ; 0xc2286
|
||||
mov di, 05569h ; bf 69 55 ; 0xc228a vgabios.c:1541
|
||||
mov di, 0556ah ; bf 6a 55 ; 0xc228a vgabios.c:1541
|
||||
xor bh, bh ; 30 ff ; 0xc228d vgabios.c:1542
|
||||
movzx si, byte [bp+00ah] ; 0f b6 76 0a ; 0xc228f
|
||||
imul si, bx ; 0f af f3 ; 0xc2293
|
||||
|
@ -4154,7 +4154,7 @@ write_gfx_char_lin: ; 0xc2361 LB 0x85
|
|||
push di ; 57 ; 0xc2362
|
||||
enter 00006h, 000h ; c8 06 00 00 ; 0xc2363
|
||||
mov dh, dl ; 88 d6 ; 0xc2367
|
||||
mov word [bp-002h], 05569h ; c7 46 fe 69 55 ; 0xc2369 vgabios.c:1605
|
||||
mov word [bp-002h], 0556ah ; c7 46 fe 6a 55 ; 0xc2369 vgabios.c:1605
|
||||
movzx si, cl ; 0f b6 f1 ; 0xc236e vgabios.c:1606
|
||||
movzx cx, byte [bp+008h] ; 0f b6 4e 08 ; 0xc2371
|
||||
imul cx, si ; 0f af ce ; 0xc2375
|
||||
|
@ -4250,7 +4250,7 @@ biosfn_write_char_attr: ; 0xc23e6 LB 0x165
|
|||
movzx bx, cl ; 0f b6 d9 ; 0xc244b vgabios.c:1645
|
||||
mov di, bx ; 89 df ; 0xc244e
|
||||
sal di, 003h ; c1 e7 03 ; 0xc2450
|
||||
cmp byte [di+047ach], 000h ; 80 bd ac 47 00 ; 0xc2453
|
||||
cmp byte [di+047adh], 000h ; 80 bd ad 47 00 ; 0xc2453
|
||||
jne short 024a0h ; 75 46 ; 0xc2458
|
||||
mov bx, word [bp-018h] ; 8b 5e e8 ; 0xc245a vgabios.c:1648
|
||||
imul bx, ax ; 0f af d8 ; 0xc245d
|
||||
|
@ -4272,24 +4272,24 @@ biosfn_write_char_attr: ; 0xc23e6 LB 0x165
|
|||
add ax, bx ; 01 d8 ; 0xc2489
|
||||
mov word [bp-01ah], ax ; 89 46 e6 ; 0xc248b
|
||||
mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xc248e vgabios.c:1651
|
||||
mov es, [di+047afh] ; 8e 85 af 47 ; 0xc2491
|
||||
mov es, [di+047b0h] ; 8e 85 b0 47 ; 0xc2491
|
||||
mov cx, si ; 89 f1 ; 0xc2495
|
||||
mov di, dx ; 89 d7 ; 0xc2497
|
||||
jcxz 0249dh ; e3 02 ; 0xc2499
|
||||
rep stosw ; f3 ab ; 0xc249b
|
||||
jmp near 02544h ; e9 a4 00 ; 0xc249d vgabios.c:1653
|
||||
movzx bx, byte [bx+0482bh] ; 0f b6 9f 2b 48 ; 0xc24a0 vgabios.c:1656
|
||||
movzx bx, byte [bx+0482ch] ; 0f b6 9f 2c 48 ; 0xc24a0 vgabios.c:1656
|
||||
sal bx, 006h ; c1 e3 06 ; 0xc24a5
|
||||
mov al, byte [bx+04841h] ; 8a 87 41 48 ; 0xc24a8
|
||||
mov al, byte [bx+04842h] ; 8a 87 42 48 ; 0xc24a8
|
||||
mov byte [bp-006h], al ; 88 46 fa ; 0xc24ac
|
||||
mov al, byte [di+047aeh] ; 8a 85 ae 47 ; 0xc24af vgabios.c:1657
|
||||
mov al, byte [di+047afh] ; 8a 85 af 47 ; 0xc24af vgabios.c:1657
|
||||
mov byte [bp-00ch], al ; 88 46 f4 ; 0xc24b3
|
||||
dec si ; 4e ; 0xc24b6 vgabios.c:1658
|
||||
cmp si, strict byte 0ffffh ; 83 fe ff ; 0xc24b7
|
||||
je near 02544h ; 0f 84 86 00 ; 0xc24ba
|
||||
movzx bx, byte [bp-00ah] ; 0f b6 5e f6 ; 0xc24be vgabios.c:1660
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc24c2
|
||||
mov al, byte [bx+047adh] ; 8a 87 ad 47 ; 0xc24c5
|
||||
mov al, byte [bx+047aeh] ; 8a 87 ae 47 ; 0xc24c5
|
||||
cmp AL, strict byte 003h ; 3c 03 ; 0xc24c9
|
||||
jc short 024d9h ; 72 0c ; 0xc24cb
|
||||
jbe short 024dfh ; 76 10 ; 0xc24cd
|
||||
|
@ -4382,7 +4382,7 @@ biosfn_write_char_only: ; 0xc254b LB 0x162
|
|||
xor ch, ch ; 30 ed ; 0xc25af vgabios.c:1703
|
||||
mov bx, cx ; 89 cb ; 0xc25b1
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc25b3
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc25b6
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc25b6
|
||||
jne short 025fah ; 75 3d ; 0xc25bb
|
||||
imul di, ax ; 0f af f8 ; 0xc25bd vgabios.c:1706
|
||||
add di, di ; 01 ff ; 0xc25c0
|
||||
|
@ -4401,26 +4401,26 @@ biosfn_write_char_only: ; 0xc254b LB 0x162
|
|||
je near 026a6h ; 0f 84 c1 00 ; 0xc25e1
|
||||
movzx di, byte [bp-012h] ; 0f b6 7e ee ; 0xc25e5 vgabios.c:1709
|
||||
sal di, 003h ; c1 e7 03 ; 0xc25e9
|
||||
mov es, [di+047afh] ; 8e 85 af 47 ; 0xc25ec vgabios.c:50
|
||||
mov es, [di+047b0h] ; 8e 85 b0 47 ; 0xc25ec vgabios.c:50
|
||||
mov al, byte [bp-008h] ; 8a 46 f8 ; 0xc25f0
|
||||
mov byte [es:bx], al ; 26 88 07 ; 0xc25f3
|
||||
inc bx ; 43 ; 0xc25f6 vgabios.c:1710
|
||||
inc bx ; 43 ; 0xc25f7
|
||||
jmp short 025ddh ; eb e3 ; 0xc25f8 vgabios.c:1711
|
||||
mov di, cx ; 89 cf ; 0xc25fa vgabios.c:1716
|
||||
movzx ax, byte [di+0482bh] ; 0f b6 85 2b 48 ; 0xc25fc
|
||||
movzx ax, byte [di+0482ch] ; 0f b6 85 2c 48 ; 0xc25fc
|
||||
mov di, ax ; 89 c7 ; 0xc2601
|
||||
sal di, 006h ; c1 e7 06 ; 0xc2603
|
||||
mov al, byte [di+04841h] ; 8a 85 41 48 ; 0xc2606
|
||||
mov al, byte [di+04842h] ; 8a 85 42 48 ; 0xc2606
|
||||
mov byte [bp-00ch], al ; 88 46 f4 ; 0xc260a
|
||||
mov al, byte [bx+047aeh] ; 8a 87 ae 47 ; 0xc260d vgabios.c:1717
|
||||
mov al, byte [bx+047afh] ; 8a 87 af 47 ; 0xc260d vgabios.c:1717
|
||||
mov byte [bp-014h], al ; 88 46 ec ; 0xc2611
|
||||
dec si ; 4e ; 0xc2614 vgabios.c:1718
|
||||
cmp si, strict byte 0ffffh ; 83 fe ff ; 0xc2615
|
||||
je near 026a6h ; 0f 84 8a 00 ; 0xc2618
|
||||
movzx bx, byte [bp-012h] ; 0f b6 5e ee ; 0xc261c vgabios.c:1720
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc2620
|
||||
mov bl, byte [bx+047adh] ; 8a 9f ad 47 ; 0xc2623
|
||||
mov bl, byte [bx+047aeh] ; 8a 9f ae 47 ; 0xc2623
|
||||
cmp bl, 003h ; 80 fb 03 ; 0xc2627
|
||||
jc short 0263ah ; 72 0e ; 0xc262a
|
||||
jbe short 02641h ; 76 13 ; 0xc262c
|
||||
|
@ -4490,9 +4490,9 @@ biosfn_write_pixel: ; 0xc26ad LB 0x165
|
|||
je near 027edh ; 0f 84 1a 01 ; 0xc26cf
|
||||
movzx bx, al ; 0f b6 d8 ; 0xc26d3 vgabios.c:1753
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc26d6
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc26d9
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc26d9
|
||||
je near 027edh ; 0f 84 0b 01 ; 0xc26de
|
||||
mov al, byte [bx+047adh] ; 8a 87 ad 47 ; 0xc26e2 vgabios.c:1755
|
||||
mov al, byte [bx+047aeh] ; 8a 87 ae 47 ; 0xc26e2 vgabios.c:1755
|
||||
cmp AL, strict byte 003h ; 3c 03 ; 0xc26e6
|
||||
jc short 026f9h ; 72 0f ; 0xc26e8
|
||||
jbe short 02700h ; 76 14 ; 0xc26ea
|
||||
|
@ -4551,7 +4551,7 @@ biosfn_write_pixel: ; 0xc26ad LB 0x165
|
|||
mov si, cx ; 89 ce ; 0xc276f vgabios.c:1775
|
||||
shr si, 1 ; d1 ee ; 0xc2771
|
||||
imul si, si, strict byte 00050h ; 6b f6 50 ; 0xc2773
|
||||
cmp al, byte [bx+047aeh] ; 3a 87 ae 47 ; 0xc2776
|
||||
cmp al, byte [bx+047afh] ; 3a 87 af 47 ; 0xc2776
|
||||
jne short 02783h ; 75 07 ; 0xc277a
|
||||
mov bx, dx ; 89 d3 ; 0xc277c vgabios.c:1777
|
||||
shr bx, 002h ; c1 eb 02 ; 0xc277e
|
||||
|
@ -4567,7 +4567,7 @@ biosfn_write_pixel: ; 0xc26ad LB 0x165
|
|||
mov al, byte [es:bx] ; 26 8a 07 ; 0xc2797
|
||||
movzx si, ah ; 0f b6 f4 ; 0xc279a vgabios.c:1785
|
||||
sal si, 003h ; c1 e6 03 ; 0xc279d
|
||||
cmp byte [si+047aeh], 002h ; 80 bc ae 47 02 ; 0xc27a0
|
||||
cmp byte [si+047afh], 002h ; 80 bc af 47 02 ; 0xc27a0
|
||||
jne short 027beh ; 75 17 ; 0xc27a5
|
||||
mov ah, dl ; 88 d4 ; 0xc27a7 vgabios.c:1787
|
||||
and ah, 003h ; 80 e4 03 ; 0xc27a9
|
||||
|
@ -4684,7 +4684,7 @@ biosfn_write_teletype: ; 0xc2812 LB 0x24a
|
|||
movzx si, byte [bp-00ch] ; 0f b6 76 f4 ; 0xc28be vgabios.c:1862
|
||||
mov bx, si ; 89 f3 ; 0xc28c2
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc28c4
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc28c7
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc28c7
|
||||
jne short 02911h ; 75 43 ; 0xc28cc
|
||||
mov ax, word [bp-010h] ; 8b 46 f0 ; 0xc28ce vgabios.c:1865
|
||||
imul ax, word [bp-00eh] ; 0f af 46 f2 ; 0xc28d1
|
||||
|
@ -4700,20 +4700,20 @@ biosfn_write_teletype: ; 0xc2812 LB 0x24a
|
|||
add ax, dx ; 01 d0 ; 0xc28ef
|
||||
add ax, ax ; 01 c0 ; 0xc28f1
|
||||
add si, ax ; 01 c6 ; 0xc28f3
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc28f5 vgabios.c:50
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc28f5 vgabios.c:50
|
||||
mov byte [es:si], ch ; 26 88 2c ; 0xc28f9
|
||||
cmp cl, 003h ; 80 f9 03 ; 0xc28fc vgabios.c:1870
|
||||
jne near 0299fh ; 0f 85 9c 00 ; 0xc28ff
|
||||
inc si ; 46 ; 0xc2903 vgabios.c:1871
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc2904 vgabios.c:50
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc2904 vgabios.c:50
|
||||
mov al, byte [bp-008h] ; 8a 46 f8 ; 0xc2908
|
||||
mov byte [es:si], al ; 26 88 04 ; 0xc290b
|
||||
jmp near 0299fh ; e9 8e 00 ; 0xc290e vgabios.c:1873
|
||||
movzx si, byte [si+0482bh] ; 0f b6 b4 2b 48 ; 0xc2911 vgabios.c:1876
|
||||
movzx si, byte [si+0482ch] ; 0f b6 b4 2c 48 ; 0xc2911 vgabios.c:1876
|
||||
sal si, 006h ; c1 e6 06 ; 0xc2916
|
||||
mov ah, byte [si+04841h] ; 8a a4 41 48 ; 0xc2919
|
||||
mov dl, byte [bx+047aeh] ; 8a 97 ae 47 ; 0xc291d vgabios.c:1877
|
||||
mov al, byte [bx+047adh] ; 8a 87 ad 47 ; 0xc2921 vgabios.c:1878
|
||||
mov ah, byte [si+04842h] ; 8a a4 42 48 ; 0xc2919
|
||||
mov dl, byte [bx+047afh] ; 8a 97 af 47 ; 0xc291d vgabios.c:1877
|
||||
mov al, byte [bx+047aeh] ; 8a 87 ae 47 ; 0xc2921 vgabios.c:1878
|
||||
cmp AL, strict byte 003h ; 3c 03 ; 0xc2925
|
||||
jc short 02935h ; 72 0c ; 0xc2927
|
||||
jbe short 0293bh ; 76 10 ; 0xc2929
|
||||
|
@ -4777,7 +4777,7 @@ biosfn_write_teletype: ; 0xc2812 LB 0x24a
|
|||
mov ah, byte [bp-010h] ; 8a 66 f0 ; 0xc29c9
|
||||
db 0feh, 0cch
|
||||
; dec ah ; fe cc ; 0xc29cc
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc29ce
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc29ce
|
||||
jne short 02a1dh ; 75 48 ; 0xc29d3
|
||||
mov dx, word [bp-010h] ; 8b 56 f0 ; 0xc29d5 vgabios.c:1910
|
||||
imul dx, word [bp-00eh] ; 0f af 56 f2 ; 0xc29d8
|
||||
|
@ -4795,7 +4795,7 @@ biosfn_write_teletype: ; 0xc2812 LB 0x24a
|
|||
add dx, dx ; 01 d2 ; 0xc29fa
|
||||
add si, dx ; 01 d6 ; 0xc29fc
|
||||
inc si ; 46 ; 0xc29fe vgabios.c:1911
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc29ff vgabios.c:45
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc29ff vgabios.c:45
|
||||
mov bl, byte [es:si] ; 26 8a 1c ; 0xc2a03
|
||||
push strict byte 00001h ; 6a 01 ; 0xc2a06 vgabios.c:1912
|
||||
movzx dx, byte [bp-00ah] ; 0f b6 56 f6 ; 0xc2a08
|
||||
|
@ -5146,7 +5146,7 @@ set_gfx_font: ; 0xc2c9c LB 0x49
|
|||
jbe short 02cbch ; 76 02 ; 0xc2cb8
|
||||
mov DL, strict byte 002h ; b2 02 ; 0xc2cba vgabios.c:2033
|
||||
movzx bx, dl ; 0f b6 da ; 0xc2cbc vgabios.c:2034
|
||||
mov al, byte [bx+07dfah] ; 8a 87 fa 7d ; 0xc2cbf
|
||||
mov al, byte [bx+07dfbh] ; 8a 87 fb 7d ; 0xc2cbf
|
||||
mov byte [bp+004h], al ; 88 46 04 ; 0xc2cc3
|
||||
mov bx, 00085h ; bb 85 00 ; 0xc2cc6 vgabios.c:62
|
||||
mov ax, strict word 00040h ; b8 40 00 ; 0xc2cc9
|
||||
|
@ -5187,7 +5187,7 @@ biosfn_load_gfx_8_14_chars: ; 0xc2d01 LB 0x1e
|
|||
push cx ; 51 ; 0xc2d09
|
||||
movzx cx, al ; 0f b6 c8 ; 0xc2d0a
|
||||
mov bx, strict word 0000eh ; bb 0e 00 ; 0xc2d0d
|
||||
mov ax, 05d69h ; b8 69 5d ; 0xc2d10
|
||||
mov ax, 05d6ah ; b8 6a 5d ; 0xc2d10
|
||||
mov dx, ds ; 8c da ; 0xc2d13
|
||||
call 02c9ch ; e8 84 ff ; 0xc2d15
|
||||
lea sp, [bp-004h] ; 8d 66 fc ; 0xc2d18 vgabios.c:2054
|
||||
|
@ -5205,7 +5205,7 @@ biosfn_load_gfx_8_8_dd_chars: ; 0xc2d1f LB 0x1e
|
|||
push cx ; 51 ; 0xc2d27
|
||||
movzx cx, al ; 0f b6 c8 ; 0xc2d28
|
||||
mov bx, strict word 00008h ; bb 08 00 ; 0xc2d2b
|
||||
mov ax, 05569h ; b8 69 55 ; 0xc2d2e
|
||||
mov ax, 0556ah ; b8 6a 55 ; 0xc2d2e
|
||||
mov dx, ds ; 8c da ; 0xc2d31
|
||||
call 02c9ch ; e8 66 ff ; 0xc2d33
|
||||
lea sp, [bp-004h] ; 8d 66 fc ; 0xc2d36 vgabios.c:2058
|
||||
|
@ -5223,7 +5223,7 @@ biosfn_load_gfx_8_16_chars: ; 0xc2d3d LB 0x1e
|
|||
push cx ; 51 ; 0xc2d45
|
||||
movzx cx, al ; 0f b6 c8 ; 0xc2d46
|
||||
mov bx, strict word 00010h ; bb 10 00 ; 0xc2d49
|
||||
mov ax, 06b69h ; b8 69 6b ; 0xc2d4c
|
||||
mov ax, 06b6ah ; b8 6a 6b ; 0xc2d4c
|
||||
mov dx, ds ; 8c da ; 0xc2d4f
|
||||
call 02c9ch ; e8 48 ff ; 0xc2d51
|
||||
lea sp, [bp-004h] ; 8d 66 fc ; 0xc2d54 vgabios.c:2062
|
||||
|
@ -5355,7 +5355,7 @@ biosfn_read_state_info: ; 0xc2e32 LB 0x1f2
|
|||
mov word [bp-00ah], ax ; 89 46 f6 ; 0xc2e4f vgabios.c:58
|
||||
mov ax, ds ; 8c d8 ; 0xc2e52 vgabios.c:2150
|
||||
mov es, dx ; 8e c2 ; 0xc2e54 vgabios.c:72
|
||||
mov word [es:bx], 054ffh ; 26 c7 07 ff 54 ; 0xc2e56
|
||||
mov word [es:bx], 05500h ; 26 c7 07 00 55 ; 0xc2e56
|
||||
mov [es:bx+002h], ds ; 26 8c 5f 02 ; 0xc2e5b
|
||||
lea di, [bx+004h] ; 8d 7f 04 ; 0xc2e5f vgabios.c:2155
|
||||
mov cx, strict word 0001eh ; b9 1e 00 ; 0xc2e62
|
||||
|
@ -6231,7 +6231,7 @@ find_vga_entry: ; 0xc35ed LB 0x27
|
|||
jnbe short 0360eh ; 77 0e ; 0xc35fe
|
||||
movzx bx, al ; 0f b6 d8 ; 0xc3600
|
||||
sal bx, 003h ; c1 e3 03 ; 0xc3603
|
||||
cmp dl, byte [bx+047abh] ; 3a 97 ab 47 ; 0xc3606
|
||||
cmp dl, byte [bx+047ach] ; 3a 97 ac 47 ; 0xc3606
|
||||
jne short 035fah ; 75 ee ; 0xc360a
|
||||
mov ah, al ; 88 c4 ; 0xc360c
|
||||
mov al, ah ; 88 e0 ; 0xc360e vgabios.c:2438
|
||||
|
@ -6449,7 +6449,7 @@ int10_func: ; 0xc36ac LB 0x47c
|
|||
push strict byte 00000h ; 6a 00 ; 0xc389a
|
||||
movzx ax, byte [bp+012h] ; 0f b6 46 12 ; 0xc389c
|
||||
mov cx, 00100h ; b9 00 01 ; 0xc38a0
|
||||
mov bx, 05d69h ; bb 69 5d ; 0xc38a3
|
||||
mov bx, 05d6ah ; bb 6a 5d ; 0xc38a3
|
||||
mov dx, 0c000h ; ba 00 c0 ; 0xc38a6
|
||||
call 02c0ah ; e8 5e f3 ; 0xc38a9
|
||||
jmp near 03b21h ; e9 72 02 ; 0xc38ac
|
||||
|
@ -6459,7 +6459,7 @@ int10_func: ; 0xc36ac LB 0x47c
|
|||
push strict byte 00000h ; 6a 00 ; 0xc38b6
|
||||
movzx ax, byte [bp+012h] ; 0f b6 46 12 ; 0xc38b8
|
||||
mov cx, 00100h ; b9 00 01 ; 0xc38bc
|
||||
mov bx, 05569h ; bb 69 55 ; 0xc38bf
|
||||
mov bx, 0556ah ; bb 6a 55 ; 0xc38bf
|
||||
jmp short 038a6h ; eb e2 ; 0xc38c2
|
||||
mov al, byte [bp+00ch] ; 8a 46 0c ; 0xc38c4 vgabios.c:2629
|
||||
xor ah, ah ; 30 e4 ; 0xc38c7
|
||||
|
@ -6471,7 +6471,7 @@ int10_func: ; 0xc36ac LB 0x47c
|
|||
push strict byte 00000h ; 6a 00 ; 0xc38d6
|
||||
movzx ax, byte [bp+012h] ; 0f b6 46 12 ; 0xc38d8
|
||||
mov cx, 00100h ; b9 00 01 ; 0xc38dc
|
||||
mov bx, 06b69h ; bb 69 6b ; 0xc38df
|
||||
mov bx, 06b6ah ; bb 6a 6b ; 0xc38df
|
||||
jmp short 038a6h ; eb c2 ; 0xc38e2
|
||||
mov dx, word [bp+008h] ; 8b 56 08 ; 0xc38e4 vgabios.c:2636
|
||||
mov ax, word [bp+016h] ; 8b 46 16 ; 0xc38e7
|
||||
|
@ -6992,7 +6992,7 @@ vbe_biosfn_return_controller_information: ; 0xc3cf2 LB 0x125
|
|||
db 066h, 026h, 0c7h, 007h, 056h, 045h, 053h, 041h
|
||||
; mov dword [es:bx], strict dword 041534556h ; 66 26 c7 07 56 45 53 41 ; 0xc3d5d
|
||||
mov word [es:bx+004h], 00200h ; 26 c7 47 04 00 02 ; 0xc3d65 vbe.c:338
|
||||
mov word [es:bx+006h], 07dfeh ; 26 c7 47 06 fe 7d ; 0xc3d6b vbe.c:341
|
||||
mov word [es:bx+006h], 07e00h ; 26 c7 47 06 00 7e ; 0xc3d6b vbe.c:341
|
||||
mov [es:bx+008h], ds ; 26 8c 5f 08 ; 0xc3d71
|
||||
db 066h, 026h, 0c7h, 047h, 00ah, 001h, 000h, 000h, 000h
|
||||
; mov dword [es:bx+00ah], strict dword 000000001h ; 66 26 c7 47 0a 01 00 00 00; 0xc3d75 vbe.c:344
|
||||
|
@ -7008,11 +7008,11 @@ vbe_biosfn_return_controller_information: ; 0xc3cf2 LB 0x125
|
|||
cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xc3d9c vbe.c:356
|
||||
je short 03dc6h ; 74 24 ; 0xc3da0
|
||||
mov word [es:bx+014h], strict word 00003h ; 26 c7 47 14 03 00 ; 0xc3da2 vbe.c:359
|
||||
mov word [es:bx+016h], 07e13h ; 26 c7 47 16 13 7e ; 0xc3da8 vbe.c:360
|
||||
mov word [es:bx+016h], 07e15h ; 26 c7 47 16 15 7e ; 0xc3da8 vbe.c:360
|
||||
mov [es:bx+018h], ds ; 26 8c 5f 18 ; 0xc3dae
|
||||
mov word [es:bx+01ah], 07e30h ; 26 c7 47 1a 30 7e ; 0xc3db2 vbe.c:361
|
||||
mov word [es:bx+01ah], 07e32h ; 26 c7 47 1a 32 7e ; 0xc3db2 vbe.c:361
|
||||
mov [es:bx+01ch], ds ; 26 8c 5f 1c ; 0xc3db8
|
||||
mov word [es:bx+01eh], 07e4eh ; 26 c7 47 1e 4e 7e ; 0xc3dbc vbe.c:362
|
||||
mov word [es:bx+01eh], 07e50h ; 26 c7 47 1e 50 7e ; 0xc3dbc vbe.c:362
|
||||
mov [es:bx+020h], ds ; 26 8c 5f 20 ; 0xc3dc2
|
||||
mov dx, cx ; 89 ca ; 0xc3dc6 vbe.c:369
|
||||
add dx, strict byte 0001bh ; 83 c2 1b ; 0xc3dc8
|
||||
|
@ -7732,12 +7732,12 @@ vesa_pm_end: ; 0xc4754 LB 0x1
|
|||
; Padding 0x2b bytes at 0xc4755
|
||||
times 43 db 0
|
||||
|
||||
section _DATA progbits vstart=0x4780 align=1 ; size=0x3742 class=DATA group=DGROUP
|
||||
; disGetNextSymbol 0xc4780 LB 0x3742 -> off=0x0 cb=000000000000002b uValue=00000000000c0000 '_msg_vga_init'
|
||||
_msg_vga_init: ; 0xc4780 LB 0x2b
|
||||
db 'Oracle VirtualBox Version 7.1.8 VGA BIOS', 00dh, 00ah, 000h
|
||||
; disGetNextSymbol 0xc47ab LB 0x3717 -> off=0x0 cb=0000000000000080 uValue=00000000000c002b 'vga_modes'
|
||||
vga_modes: ; 0xc47ab LB 0x80
|
||||
section _DATA progbits vstart=0x4780 align=1 ; size=0x3745 class=DATA group=DGROUP
|
||||
; disGetNextSymbol 0xc4780 LB 0x3745 -> off=0x0 cb=000000000000002c uValue=00000000000c0000 '_msg_vga_init'
|
||||
_msg_vga_init: ; 0xc4780 LB 0x2c
|
||||
db 'Oracle VirtualBox Version 7.1.10 VGA BIOS', 00dh, 00ah, 000h
|
||||
; disGetNextSymbol 0xc47ac LB 0x3719 -> off=0x0 cb=0000000000000080 uValue=00000000000c002c 'vga_modes'
|
||||
vga_modes: ; 0xc47ac LB 0x80
|
||||
db 000h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 001h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
|
||||
db 002h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 003h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
|
||||
db 004h, 001h, 002h, 002h, 000h, 0b8h, 0ffh, 001h, 005h, 001h, 002h, 002h, 000h, 0b8h, 0ffh, 001h
|
||||
|
@ -7746,14 +7746,14 @@ vga_modes: ; 0xc47ab LB 0x80
|
|||
db 00fh, 001h, 003h, 001h, 000h, 0a0h, 0ffh, 000h, 010h, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
|
||||
db 011h, 001h, 003h, 001h, 000h, 0a0h, 0ffh, 002h, 012h, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
|
||||
db 013h, 001h, 005h, 008h, 000h, 0a0h, 0ffh, 003h, 06ah, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
|
||||
; disGetNextSymbol 0xc482b LB 0x3697 -> off=0x0 cb=0000000000000010 uValue=00000000000c00ab 'line_to_vpti'
|
||||
line_to_vpti: ; 0xc482b LB 0x10
|
||||
; disGetNextSymbol 0xc482c LB 0x3699 -> off=0x0 cb=0000000000000010 uValue=00000000000c00ac 'line_to_vpti'
|
||||
line_to_vpti: ; 0xc482c LB 0x10
|
||||
db 017h, 017h, 018h, 018h, 004h, 005h, 006h, 007h, 00dh, 00eh, 011h, 012h, 01ah, 01bh, 01ch, 01dh
|
||||
; disGetNextSymbol 0xc483b LB 0x3687 -> off=0x0 cb=0000000000000004 uValue=00000000000c00bb 'dac_regs'
|
||||
dac_regs: ; 0xc483b LB 0x4
|
||||
; disGetNextSymbol 0xc483c LB 0x3689 -> off=0x0 cb=0000000000000004 uValue=00000000000c00bc 'dac_regs'
|
||||
dac_regs: ; 0xc483c LB 0x4
|
||||
dd 0ff3f3f3fh
|
||||
; disGetNextSymbol 0xc483f LB 0x3683 -> off=0x0 cb=0000000000000780 uValue=00000000000c00bf 'video_param_table'
|
||||
video_param_table: ; 0xc483f LB 0x780
|
||||
; disGetNextSymbol 0xc4840 LB 0x3685 -> off=0x0 cb=0000000000000780 uValue=00000000000c00c0 'video_param_table'
|
||||
video_param_table: ; 0xc4840 LB 0x780
|
||||
db 028h, 018h, 008h, 000h, 008h, 009h, 003h, 000h, 002h, 063h, 02dh, 027h, 028h, 090h, 02bh, 0a0h
|
||||
db 0bfh, 01fh, 000h, 0c7h, 006h, 007h, 000h, 000h, 000h, 000h, 09ch, 08eh, 08fh, 014h, 01fh, 096h
|
||||
db 0b9h, 0a3h, 0ffh, 000h, 001h, 002h, 003h, 004h, 005h, 006h, 007h, 010h, 011h, 012h, 013h, 014h
|
||||
|
@ -7874,8 +7874,8 @@ video_param_table: ; 0xc483f LB 0x780
|
|||
db 072h, 0f0h, 000h, 060h, 000h, 000h, 000h, 000h, 000h, 000h, 059h, 08dh, 057h, 032h, 000h, 057h
|
||||
db 073h, 0e3h, 0ffh, 000h, 001h, 002h, 003h, 004h, 005h, 014h, 007h, 038h, 039h, 03ah, 03bh, 03ch
|
||||
db 03dh, 03eh, 03fh, 001h, 000h, 00fh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 005h, 00fh, 0ffh
|
||||
; disGetNextSymbol 0xc4fbf LB 0x2f03 -> off=0x0 cb=00000000000000c0 uValue=00000000000c083f 'palette0'
|
||||
palette0: ; 0xc4fbf LB 0xc0
|
||||
; disGetNextSymbol 0xc4fc0 LB 0x2f05 -> off=0x0 cb=00000000000000c0 uValue=00000000000c0840 'palette0'
|
||||
palette0: ; 0xc4fc0 LB 0xc0
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah
|
||||
db 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah
|
||||
|
@ -7888,8 +7888,8 @@ palette0: ; 0xc4fbf LB 0xc0
|
|||
db 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah
|
||||
db 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh
|
||||
db 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh
|
||||
; disGetNextSymbol 0xc507f LB 0x2e43 -> off=0x0 cb=00000000000000c0 uValue=00000000000c08ff 'palette1'
|
||||
palette1: ; 0xc507f LB 0xc0
|
||||
; disGetNextSymbol 0xc5080 LB 0x2e45 -> off=0x0 cb=00000000000000c0 uValue=00000000000c0900 'palette1'
|
||||
palette1: ; 0xc5080 LB 0xc0
|
||||
db 000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
|
||||
db 000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah
|
||||
db 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah, 000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah
|
||||
|
@ -7902,8 +7902,8 @@ palette1: ; 0xc507f LB 0xc0
|
|||
db 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh, 015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh
|
||||
db 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
|
||||
db 015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
|
||||
; disGetNextSymbol 0xc513f LB 0x2d83 -> off=0x0 cb=00000000000000c0 uValue=00000000000c09bf 'palette2'
|
||||
palette2: ; 0xc513f LB 0xc0
|
||||
; disGetNextSymbol 0xc5140 LB 0x2d85 -> off=0x0 cb=00000000000000c0 uValue=00000000000c09c0 'palette2'
|
||||
palette2: ; 0xc5140 LB 0xc0
|
||||
db 000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
|
||||
db 000h, 02ah, 02ah, 02ah, 000h, 02ah, 02ah, 02ah, 000h, 000h, 015h, 000h, 000h, 03fh, 000h, 02ah
|
||||
db 015h, 000h, 02ah, 03fh, 02ah, 000h, 015h, 02ah, 000h, 03fh, 02ah, 02ah, 015h, 02ah, 02ah, 03fh
|
||||
|
@ -7916,8 +7916,8 @@ palette2: ; 0xc513f LB 0xc0
|
|||
db 015h, 015h, 000h, 015h, 015h, 02ah, 015h, 03fh, 000h, 015h, 03fh, 02ah, 03fh, 015h, 000h, 03fh
|
||||
db 015h, 02ah, 03fh, 03fh, 000h, 03fh, 03fh, 02ah, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
|
||||
db 015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
|
||||
; disGetNextSymbol 0xc51ff LB 0x2cc3 -> off=0x0 cb=0000000000000300 uValue=00000000000c0a7f 'palette3'
|
||||
palette3: ; 0xc51ff LB 0x300
|
||||
; disGetNextSymbol 0xc5200 LB 0x2cc5 -> off=0x0 cb=0000000000000300 uValue=00000000000c0a80 'palette3'
|
||||
palette3: ; 0xc5200 LB 0x300
|
||||
db 000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
|
||||
db 000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
|
||||
db 015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
|
||||
|
@ -7966,24 +7966,24 @@ palette3: ; 0xc51ff LB 0x300
|
|||
db 00bh, 010h, 00bh, 00bh, 010h, 00ch, 00bh, 010h, 00dh, 00bh, 010h, 00fh, 00bh, 010h, 010h, 00bh
|
||||
db 00fh, 010h, 00bh, 00dh, 010h, 00bh, 00ch, 010h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc54ff LB 0x29c3 -> off=0x0 cb=0000000000000010 uValue=00000000000c0d7f 'static_functionality'
|
||||
static_functionality: ; 0xc54ff LB 0x10
|
||||
; disGetNextSymbol 0xc5500 LB 0x29c5 -> off=0x0 cb=0000000000000010 uValue=00000000000c0d80 'static_functionality'
|
||||
static_functionality: ; 0xc5500 LB 0x10
|
||||
db 0ffh, 0e0h, 00fh, 000h, 000h, 000h, 000h, 007h, 002h, 008h, 0e7h, 00ch, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc550f LB 0x29b3 -> off=0x0 cb=0000000000000024 uValue=00000000000c0d8f '_dcc_table'
|
||||
_dcc_table: ; 0xc550f LB 0x24
|
||||
; disGetNextSymbol 0xc5510 LB 0x29b5 -> off=0x0 cb=0000000000000024 uValue=00000000000c0d90 '_dcc_table'
|
||||
_dcc_table: ; 0xc5510 LB 0x24
|
||||
db 010h, 001h, 007h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc5533 LB 0x298f -> off=0x0 cb=000000000000001a uValue=00000000000c0db3 '_secondary_save_area'
|
||||
_secondary_save_area: ; 0xc5533 LB 0x1a
|
||||
db 01ah, 000h, 00fh, 055h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc5534 LB 0x2991 -> off=0x0 cb=000000000000001a uValue=00000000000c0db4 '_secondary_save_area'
|
||||
_secondary_save_area: ; 0xc5534 LB 0x1a
|
||||
db 01ah, 000h, 010h, 055h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc554d LB 0x2975 -> off=0x0 cb=000000000000001c uValue=00000000000c0dcd '_video_save_pointer_table'
|
||||
_video_save_pointer_table: ; 0xc554d LB 0x1c
|
||||
db 03fh, 048h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 033h, 055h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc5569 LB 0x2959 -> off=0x0 cb=0000000000000800 uValue=00000000000c0de9 'vgafont8'
|
||||
vgafont8: ; 0xc5569 LB 0x800
|
||||
; disGetNextSymbol 0xc554e LB 0x2977 -> off=0x0 cb=000000000000001c uValue=00000000000c0dce '_video_save_pointer_table'
|
||||
_video_save_pointer_table: ; 0xc554e LB 0x1c
|
||||
db 040h, 048h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 034h, 055h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc556a LB 0x295b -> off=0x0 cb=0000000000000800 uValue=00000000000c0dea 'vgafont8'
|
||||
vgafont8: ; 0xc556a LB 0x800
|
||||
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
|
||||
|
@ -8112,8 +8112,8 @@ vgafont8: ; 0xc5569 LB 0x800
|
|||
db 000h, 000h, 000h, 000h, 018h, 000h, 000h, 000h, 00fh, 00ch, 00ch, 00ch, 0ech, 06ch, 03ch, 01ch
|
||||
db 078h, 06ch, 06ch, 06ch, 06ch, 000h, 000h, 000h, 070h, 018h, 030h, 060h, 078h, 000h, 000h, 000h
|
||||
db 000h, 000h, 03ch, 03ch, 03ch, 03ch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc5d69 LB 0x2159 -> off=0x0 cb=0000000000000e00 uValue=00000000000c15e9 'vgafont14'
|
||||
vgafont14: ; 0xc5d69 LB 0xe00
|
||||
; disGetNextSymbol 0xc5d6a LB 0x215b -> off=0x0 cb=0000000000000e00 uValue=00000000000c15ea 'vgafont14'
|
||||
vgafont14: ; 0xc5d6a LB 0xe00
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 07eh, 081h, 0a5h, 081h, 081h, 0bdh, 099h, 081h, 07eh, 000h, 000h, 000h, 000h, 000h, 07eh, 0ffh
|
||||
db 0dbh, 0ffh, 0ffh, 0c3h, 0e7h, 0ffh, 07eh, 000h, 000h, 000h, 000h, 000h, 000h, 06ch, 0feh, 0feh
|
||||
|
@ -8338,8 +8338,8 @@ vgafont14: ; 0xc5d69 LB 0xe00
|
|||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 070h, 0d8h, 030h, 060h, 0c8h, 0f8h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc6b69 LB 0x1359 -> off=0x0 cb=0000000000001000 uValue=00000000000c23e9 'vgafont16'
|
||||
vgafont16: ; 0xc6b69 LB 0x1000
|
||||
; disGetNextSymbol 0xc6b6a LB 0x135b -> off=0x0 cb=0000000000001000 uValue=00000000000c23ea 'vgafont16'
|
||||
vgafont16: ; 0xc6b6a LB 0x1000
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 07eh, 081h, 0a5h, 081h, 081h, 0bdh, 099h, 081h, 081h, 07eh, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 07eh, 0ffh, 0dbh, 0ffh, 0ffh, 0c3h, 0e7h, 0ffh, 0ffh, 07eh, 000h, 000h, 000h, 000h
|
||||
|
@ -8596,8 +8596,8 @@ vgafont16: ; 0xc6b69 LB 0x1000
|
|||
db 000h, 070h, 0d8h, 030h, 060h, 0c8h, 0f8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc7b69 LB 0x359 -> off=0x0 cb=000000000000012d uValue=00000000000c33e9 'vgafont14alt'
|
||||
vgafont14alt: ; 0xc7b69 LB 0x12d
|
||||
; disGetNextSymbol 0xc7b6a LB 0x35b -> off=0x0 cb=000000000000012d uValue=00000000000c33ea 'vgafont14alt'
|
||||
vgafont14alt: ; 0xc7b6a LB 0x12d
|
||||
db 01dh, 000h, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h, 000h, 000h, 000h, 022h
|
||||
db 000h, 063h, 063h, 063h, 022h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 02bh, 000h
|
||||
db 000h, 000h, 018h, 018h, 018h, 0ffh, 018h, 018h, 018h, 000h, 000h, 000h, 000h, 02dh, 000h, 000h
|
||||
|
@ -8617,8 +8617,8 @@ vgafont14alt: ; 0xc7b69 LB 0x12d
|
|||
db 000h, 0fch, 066h, 066h, 07ch, 062h, 066h, 06fh, 066h, 066h, 0f3h, 000h, 000h, 000h, 0f1h, 000h
|
||||
db 000h, 018h, 018h, 018h, 0ffh, 018h, 018h, 018h, 000h, 0ffh, 000h, 000h, 000h, 0f6h, 000h, 000h
|
||||
db 018h, 018h, 000h, 000h, 0ffh, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc7c96 LB 0x22c -> off=0x0 cb=0000000000000144 uValue=00000000000c3516 'vgafont16alt'
|
||||
vgafont16alt: ; 0xc7c96 LB 0x144
|
||||
; disGetNextSymbol 0xc7c97 LB 0x22e -> off=0x0 cb=0000000000000144 uValue=00000000000c3517 'vgafont16alt'
|
||||
vgafont16alt: ; 0xc7c97 LB 0x144
|
||||
db 01dh, 000h, 000h, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 030h, 000h, 000h, 03ch, 066h, 0c3h, 0c3h, 0dbh, 0dbh, 0c3h, 0c3h, 066h, 03ch, 000h, 000h
|
||||
db 000h, 000h, 04dh, 000h, 000h, 0c3h, 0e7h, 0ffh, 0ffh, 0dbh, 0c3h, 0c3h, 0c3h, 0c3h, 0c3h, 000h
|
||||
|
@ -8640,53 +8640,56 @@ vgafont16alt: ; 0xc7c96 LB 0x144
|
|||
db 000h, 0abh, 000h, 0c0h, 0c0h, 0c2h, 0c6h, 0cch, 018h, 030h, 060h, 0ceh, 09bh, 006h, 00ch, 01fh
|
||||
db 000h, 000h, 0ach, 000h, 0c0h, 0c0h, 0c2h, 0c6h, 0cch, 018h, 030h, 066h, 0ceh, 096h, 03eh, 006h
|
||||
db 006h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc7dda LB 0xe8 -> off=0x0 cb=0000000000000008 uValue=00000000000c365a '_cga_msr'
|
||||
_cga_msr: ; 0xc7dda LB 0x8
|
||||
; disGetNextSymbol 0xc7ddb LB 0xea -> off=0x0 cb=0000000000000008 uValue=00000000000c365b '_cga_msr'
|
||||
_cga_msr: ; 0xc7ddb LB 0x8
|
||||
db 02ch, 028h, 02dh, 029h, 02ah, 02eh, 01eh, 029h
|
||||
; disGetNextSymbol 0xc7de2 LB 0xe0 -> off=0x0 cb=0000000000000008 uValue=00000000000c3662 'line_to_vpti_200'
|
||||
line_to_vpti_200: ; 0xc7de2 LB 0x8
|
||||
; disGetNextSymbol 0xc7de3 LB 0xe2 -> off=0x0 cb=0000000000000008 uValue=00000000000c3663 'line_to_vpti_200'
|
||||
line_to_vpti_200: ; 0xc7de3 LB 0x8
|
||||
db 000h, 001h, 002h, 003h, 0ffh, 0ffh, 0ffh, 007h
|
||||
; disGetNextSymbol 0xc7dea LB 0xd8 -> off=0x0 cb=0000000000000008 uValue=00000000000c366a 'line_to_vpti_350'
|
||||
line_to_vpti_350: ; 0xc7dea LB 0x8
|
||||
; disGetNextSymbol 0xc7deb LB 0xda -> off=0x0 cb=0000000000000008 uValue=00000000000c366b 'line_to_vpti_350'
|
||||
line_to_vpti_350: ; 0xc7deb LB 0x8
|
||||
db 013h, 014h, 015h, 016h, 0ffh, 0ffh, 0ffh, 007h
|
||||
; disGetNextSymbol 0xc7df2 LB 0xd0 -> off=0x0 cb=0000000000000008 uValue=00000000000c3672 'line_to_vpti_400'
|
||||
line_to_vpti_400: ; 0xc7df2 LB 0x8
|
||||
; disGetNextSymbol 0xc7df3 LB 0xd2 -> off=0x0 cb=0000000000000008 uValue=00000000000c3673 'line_to_vpti_400'
|
||||
line_to_vpti_400: ; 0xc7df3 LB 0x8
|
||||
db 017h, 017h, 018h, 018h, 0ffh, 0ffh, 0ffh, 019h
|
||||
; disGetNextSymbol 0xc7dfa LB 0xc8 -> off=0x0 cb=0000000000000004 uValue=00000000000c367a 'row_tbl'
|
||||
row_tbl: ; 0xc7dfa LB 0x4
|
||||
dd 02b190e00h
|
||||
; disGetNextSymbol 0xc7dfe LB 0xc4 -> off=0x0 cb=0000000000000015 uValue=00000000000c367e '_vbebios_copyright'
|
||||
_vbebios_copyright: ; 0xc7dfe LB 0x15
|
||||
; disGetNextSymbol 0xc7dfb LB 0xca -> off=0x0 cb=0000000000000005 uValue=00000000000c367b 'row_tbl'
|
||||
row_tbl: ; 0xc7dfb LB 0x5
|
||||
db 000h, 00eh, 019h, 02bh, 000h
|
||||
; disGetNextSymbol 0xc7e00 LB 0xc5 -> off=0x0 cb=0000000000000015 uValue=00000000000c3680 '_vbebios_copyright'
|
||||
_vbebios_copyright: ; 0xc7e00 LB 0x15
|
||||
db 'VirtualBox VESA BIOS', 000h
|
||||
; disGetNextSymbol 0xc7e13 LB 0xaf -> off=0x0 cb=000000000000001d uValue=00000000000c3693 '_vbebios_vendor_name'
|
||||
_vbebios_vendor_name: ; 0xc7e13 LB 0x1d
|
||||
; disGetNextSymbol 0xc7e15 LB 0xb0 -> off=0x0 cb=000000000000001d uValue=00000000000c3695 '_vbebios_vendor_name'
|
||||
_vbebios_vendor_name: ; 0xc7e15 LB 0x1d
|
||||
db 'Oracle and/or its affiliates', 000h
|
||||
; disGetNextSymbol 0xc7e30 LB 0x92 -> off=0x0 cb=000000000000001e uValue=00000000000c36b0 '_vbebios_product_name'
|
||||
_vbebios_product_name: ; 0xc7e30 LB 0x1e
|
||||
; disGetNextSymbol 0xc7e32 LB 0x93 -> off=0x0 cb=000000000000001e uValue=00000000000c36b2 '_vbebios_product_name'
|
||||
_vbebios_product_name: ; 0xc7e32 LB 0x1e
|
||||
db 'Oracle VirtualBox VBE Adapter', 000h
|
||||
; disGetNextSymbol 0xc7e4e LB 0x74 -> off=0x0 cb=0000000000000020 uValue=00000000000c36ce '_vbebios_product_revision'
|
||||
_vbebios_product_revision: ; 0xc7e4e LB 0x20
|
||||
db 'Oracle VirtualBox Version 7.1.8', 000h
|
||||
; disGetNextSymbol 0xc7e6e LB 0x54 -> off=0x0 cb=000000000000002b uValue=00000000000c36ee '_vbebios_info_string'
|
||||
_vbebios_info_string: ; 0xc7e6e LB 0x2b
|
||||
; disGetNextSymbol 0xc7e50 LB 0x75 -> off=0x0 cb=0000000000000021 uValue=00000000000c36d0 '_vbebios_product_revision'
|
||||
_vbebios_product_revision: ; 0xc7e50 LB 0x21
|
||||
db 'Oracle VirtualBox Version 7.1.10', 000h
|
||||
; disGetNextSymbol 0xc7e71 LB 0x54 -> off=0x0 cb=000000000000002b uValue=00000000000c36f1 '_vbebios_info_string'
|
||||
_vbebios_info_string: ; 0xc7e71 LB 0x2b
|
||||
db 'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h
|
||||
; disGetNextSymbol 0xc7e99 LB 0x29 -> off=0x0 cb=0000000000000029 uValue=00000000000c3719 '_no_vbebios_info_string'
|
||||
_no_vbebios_info_string: ; 0xc7e99 LB 0x29
|
||||
; disGetNextSymbol 0xc7e9c LB 0x29 -> off=0x0 cb=0000000000000029 uValue=00000000000c371c '_no_vbebios_info_string'
|
||||
_no_vbebios_info_string: ; 0xc7e9c LB 0x29
|
||||
db 'No VirtualBox VBE support available!', 00dh, 00ah, 00dh, 00ah, 000h
|
||||
|
||||
section CONST progbits vstart=0x7ec2 align=1 ; size=0x0 class=DATA group=DGROUP
|
||||
; Padding 0x1 bytes at 0xc7ec5
|
||||
db 001h
|
||||
|
||||
section CONST2 progbits vstart=0x7ec2 align=1 ; size=0x0 class=DATA group=DGROUP
|
||||
section CONST progbits vstart=0x7ec6 align=1 ; size=0x0 class=DATA group=DGROUP
|
||||
|
||||
; Padding 0x13e bytes at 0xc7ec2
|
||||
db 001h, 000h, 000h, 000h, 000h, 001h, 000h, 000h, 000h, 000h, 000h, 000h, 02fh, 068h, 06fh, 06dh
|
||||
db 065h, 02fh, 067h, 061h, 06ch, 069h, 074h, 073h, 079h, 06eh, 02fh, 063h, 06fh, 06dh, 070h, 069h
|
||||
db 06ch, 065h, 02dh, 063h, 061h, 063h, 068h, 065h, 02fh, 076h, 062h, 06fh, 078h, 02fh, 062h, 072h
|
||||
db 061h, 06eh, 063h, 068h, 065h, 073h, 02fh, 056h, 042h, 06fh, 078h, 02dh, 037h, 02eh, 031h, 02fh
|
||||
db 06fh, 075h, 074h, 02fh, 06ch, 069h, 06eh, 075h, 078h, 02eh, 061h, 06dh, 064h, 036h, 034h, 02fh
|
||||
db 072h, 065h, 06ch, 065h, 061h, 073h, 065h, 02fh, 06fh, 062h, 06ah, 02fh, 056h, 042h, 06fh, 078h
|
||||
db 056h, 067h, 061h, 042h, 069h, 06fh, 073h, 033h, 038h, 036h, 02fh, 056h, 042h, 06fh, 078h, 056h
|
||||
db 067h, 061h, 042h, 069h, 06fh, 073h, 033h, 038h, 036h, 02eh, 073h, 079h, 06dh, 000h, 000h, 000h
|
||||
section CONST2 progbits vstart=0x7ec6 align=1 ; size=0x0 class=DATA group=DGROUP
|
||||
|
||||
; Padding 0x13a bytes at 0xc7ec6
|
||||
db 000h, 000h, 000h, 000h, 001h, 000h, 000h, 000h, 000h, 000h, 000h, 02fh, 068h, 06fh, 06dh, 065h
|
||||
db 02fh, 067h, 061h, 06ch, 069h, 074h, 073h, 079h, 06eh, 02fh, 063h, 06fh, 06dh, 070h, 069h, 06ch
|
||||
db 065h, 02dh, 063h, 061h, 063h, 068h, 065h, 02fh, 076h, 062h, 06fh, 078h, 02fh, 062h, 072h, 061h
|
||||
db 06eh, 063h, 068h, 065h, 073h, 02fh, 056h, 042h, 06fh, 078h, 02dh, 037h, 02eh, 031h, 02fh, 06fh
|
||||
db 075h, 074h, 02fh, 06ch, 069h, 06eh, 075h, 078h, 02eh, 061h, 06dh, 064h, 036h, 034h, 02fh, 072h
|
||||
db 065h, 06ch, 065h, 061h, 073h, 065h, 02fh, 06fh, 062h, 06ah, 02fh, 056h, 042h, 06fh, 078h, 056h
|
||||
db 067h, 061h, 042h, 069h, 06fh, 073h, 033h, 038h, 036h, 02fh, 056h, 042h, 06fh, 078h, 056h, 067h
|
||||
db 061h, 042h, 069h, 06fh, 073h, 033h, 038h, 036h, 02eh, 073h, 079h, 06dh, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
|
@ -8698,4 +8701,4 @@ section CONST2 progbits vstart=0x7ec2 align=1 ; size=0x0 class=DATA group=DGROUP
|
|||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 019h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 057h
|
||||
|
|
|
@ -1 +1 @@
|
|||
ec45a9e8132927ccc79fa6a7e43bf94f *VBoxVgaBios386.rom
|
||||
f636d11bd1695ad6388b853545e0677d *VBoxVgaBios386.rom
|
||||
|
|
|
@ -1580,7 +1580,7 @@ init_bios_area: ; 0xc0a28 LB 0x3e
|
|||
mov word [es:bx+00087h], 0f960h ; 26 c7 87 87 00 60 f9 ; 0xc0a45 vgabios.c:234
|
||||
mov byte [es:bx+00089h], 051h ; 26 c6 87 89 00 51 ; 0xc0a4c vgabios.c:238
|
||||
mov byte [es:bx+065h], 009h ; 26 c6 47 65 09 ; 0xc0a52 vgabios.c:240
|
||||
mov word [es:bx+000a8h], 0554dh ; 26 c7 87 a8 00 4d 55 ; 0xc0a57 vgabios.c:242
|
||||
mov word [es:bx+000a8h], 0554eh ; 26 c7 87 a8 00 4e 55 ; 0xc0a57 vgabios.c:242
|
||||
mov [es:bx+000aah], ds ; 26 8c 9f aa 00 ; 0xc0a5e
|
||||
pop bp ; 5d ; 0xc0a63 vgabios.c:243
|
||||
pop bx ; 5b ; 0xc0a64
|
||||
|
@ -2093,7 +2093,7 @@ vga_read_char_attr: ; 0xc0ded LB 0x147
|
|||
xor bh, bh ; 30 ff ; 0xc0e5c
|
||||
mov CL, strict byte 003h ; b1 03 ; 0xc0e5e
|
||||
sal bx, CL ; d3 e3 ; 0xc0e60
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc0e62
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc0e62
|
||||
jne short 00e9fh ; 75 36 ; 0xc0e67
|
||||
mov ax, di ; 89 f8 ; 0xc0e69 vgabios.c:559
|
||||
mul dx ; f7 e2 ; 0xc0e6b
|
||||
|
@ -2113,13 +2113,13 @@ vga_read_char_attr: ; 0xc0ded LB 0x147
|
|||
sal ax, 1 ; d1 e0 ; 0xc0e89
|
||||
mov di, word [bp-010h] ; 8b 7e f0 ; 0xc0e8b
|
||||
add di, ax ; 01 c7 ; 0xc0e8e
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc0e90 vgabios.c:55
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc0e90 vgabios.c:55
|
||||
mov ax, word [es:di] ; 26 8b 05 ; 0xc0e94
|
||||
push SS ; 16 ; 0xc0e97 vgabios.c:58
|
||||
pop ES ; 07 ; 0xc0e98
|
||||
mov word [es:si], ax ; 26 89 04 ; 0xc0e99
|
||||
jmp near 00f2bh ; e9 8c 00 ; 0xc0e9c vgabios.c:561
|
||||
mov bl, byte [bx+047adh] ; 8a 9f ad 47 ; 0xc0e9f vgabios.c:562
|
||||
mov bl, byte [bx+047aeh] ; 8a 9f ae 47 ; 0xc0e9f vgabios.c:562
|
||||
cmp bl, 005h ; 80 fb 05 ; 0xc0ea3
|
||||
je short 00efeh ; 74 56 ; 0xc0ea6
|
||||
cmp bl, 002h ; 80 fb 02 ; 0xc0ea8
|
||||
|
@ -2227,18 +2227,18 @@ vga_get_font_info: ; 0xc0f44 LB 0x83
|
|||
retn 00002h ; c2 02 00 ; 0xc0f9d
|
||||
mov bx, 0010ch ; bb 0c 01 ; 0xc0fa0 vgabios.c:67
|
||||
jmp short 00f5eh ; eb b9 ; 0xc0fa3
|
||||
mov dx, 05d69h ; ba 69 5d ; 0xc0fa5 vgabios.c:601
|
||||
mov dx, 05d6ah ; ba 6a 5d ; 0xc0fa5 vgabios.c:601
|
||||
mov ax, ds ; 8c d8 ; 0xc0fa8
|
||||
jmp short 00f69h ; eb bd ; 0xc0faa vgabios.c:602
|
||||
mov dx, 05569h ; ba 69 55 ; 0xc0fac vgabios.c:604
|
||||
mov dx, 0556ah ; ba 6a 55 ; 0xc0fac vgabios.c:604
|
||||
jmp short 00fa8h ; eb f7 ; 0xc0faf
|
||||
mov dx, 05969h ; ba 69 59 ; 0xc0fb1 vgabios.c:607
|
||||
mov dx, 0596ah ; ba 6a 59 ; 0xc0fb1 vgabios.c:607
|
||||
jmp short 00fa8h ; eb f2 ; 0xc0fb4
|
||||
mov dx, 07b69h ; ba 69 7b ; 0xc0fb6 vgabios.c:610
|
||||
mov dx, 07b6ah ; ba 6a 7b ; 0xc0fb6 vgabios.c:610
|
||||
jmp short 00fa8h ; eb ed ; 0xc0fb9
|
||||
mov dx, 06b69h ; ba 69 6b ; 0xc0fbb vgabios.c:613
|
||||
mov dx, 06b6ah ; ba 6a 6b ; 0xc0fbb vgabios.c:613
|
||||
jmp short 00fa8h ; eb e8 ; 0xc0fbe
|
||||
mov dx, 07c96h ; ba 96 7c ; 0xc0fc0 vgabios.c:616
|
||||
mov dx, 07c97h ; ba 97 7c ; 0xc0fc0 vgabios.c:616
|
||||
jmp short 00fa8h ; eb e3 ; 0xc0fc3
|
||||
jmp short 00f9ah ; eb d3 ; 0xc0fc5 vgabios.c:622
|
||||
; disGetNextSymbol 0xc0fc7 LB 0x359d -> off=0x0 cb=000000000000016d uValue=00000000000c0fc7 'vga_read_pixel'
|
||||
|
@ -2265,10 +2265,10 @@ vga_read_pixel: ; 0xc0fc7 LB 0x16d
|
|||
xor bh, bh ; 30 ff ; 0xc0ff3
|
||||
mov CL, strict byte 003h ; b1 03 ; 0xc0ff5
|
||||
sal bx, CL ; d3 e3 ; 0xc0ff7
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc0ff9
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc0ff9
|
||||
jne short 01003h ; 75 03 ; 0xc0ffe
|
||||
jmp near 0112dh ; e9 2a 01 ; 0xc1000 vgabios.c:646
|
||||
mov ch, byte [bx+047adh] ; 8a af ad 47 ; 0xc1003 vgabios.c:649
|
||||
mov ch, byte [bx+047aeh] ; 8a af ae 47 ; 0xc1003 vgabios.c:649
|
||||
cmp ch, cl ; 38 cd ; 0xc1007
|
||||
jc short 0101ah ; 72 0f ; 0xc1009
|
||||
jbe short 01022h ; 76 15 ; 0xc100b
|
||||
|
@ -2324,7 +2324,7 @@ vga_read_pixel: ; 0xc0fc7 LB 0x16d
|
|||
inc byte [bp-008h] ; fe 46 f8 ; 0xc1087 vgabios.c:661
|
||||
jmp short 0105eh ; eb d2 ; 0xc108a
|
||||
jmp near 01125h ; e9 96 00 ; 0xc108c
|
||||
mov al, byte [bx+047aeh] ; 8a 87 ae 47 ; 0xc108f vgabios.c:664
|
||||
mov al, byte [bx+047afh] ; 8a 87 af 47 ; 0xc108f vgabios.c:664
|
||||
xor ah, ah ; 30 e4 ; 0xc1093
|
||||
mov cx, strict word 00004h ; b9 04 00 ; 0xc1095
|
||||
sub cx, ax ; 29 c1 ; 0xc1098
|
||||
|
@ -2347,7 +2347,7 @@ vga_read_pixel: ; 0xc0fc7 LB 0x16d
|
|||
xor bh, bh ; 30 ff ; 0xc10c2
|
||||
mov CL, strict byte 003h ; b1 03 ; 0xc10c4
|
||||
sal bx, CL ; d3 e3 ; 0xc10c6
|
||||
cmp byte [bx+047aeh], 002h ; 80 bf ae 47 02 ; 0xc10c8
|
||||
cmp byte [bx+047afh], 002h ; 80 bf af 47 02 ; 0xc10c8
|
||||
jne short 010eah ; 75 1b ; 0xc10cd
|
||||
mov cx, si ; 89 f1 ; 0xc10cf vgabios.c:669
|
||||
xor ch, ch ; 30 ed ; 0xc10d1
|
||||
|
@ -2717,7 +2717,7 @@ biosfn_set_active_page: ; 0xc135c LB 0xd5
|
|||
mov CL, strict byte 003h ; b1 03 ; 0xc1399
|
||||
mov si, bx ; 89 de ; 0xc139b
|
||||
sal si, CL ; d3 e6 ; 0xc139d
|
||||
cmp byte [si+047ach], 000h ; 80 bc ac 47 00 ; 0xc139f
|
||||
cmp byte [si+047adh], 000h ; 80 bc ad 47 00 ; 0xc139f
|
||||
jne short 013e1h ; 75 3b ; 0xc13a4
|
||||
mov bx, strict word 0004ah ; bb 4a 00 ; 0xc13a6 vgabios.c:57
|
||||
mov ax, strict word 00040h ; b8 40 00 ; 0xc13a9
|
||||
|
@ -2744,12 +2744,12 @@ biosfn_set_active_page: ; 0xc135c LB 0xd5
|
|||
lea ax, [di+001h] ; 8d 45 01 ; 0xc13da
|
||||
mul bx ; f7 e3 ; 0xc13dd
|
||||
jmp short 013f2h ; eb 11 ; 0xc13df vgabios.c:860
|
||||
mov bl, byte [bx+0482bh] ; 8a 9f 2b 48 ; 0xc13e1 vgabios.c:862
|
||||
mov bl, byte [bx+0482ch] ; 8a 9f 2c 48 ; 0xc13e1 vgabios.c:862
|
||||
mov CL, strict byte 006h ; b1 06 ; 0xc13e5
|
||||
sal bx, CL ; d3 e3 ; 0xc13e7
|
||||
mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xc13e9
|
||||
xor ah, ah ; 30 e4 ; 0xc13ec
|
||||
mul word [bx+04842h] ; f7 a7 42 48 ; 0xc13ee
|
||||
mul word [bx+04843h] ; f7 a7 43 48 ; 0xc13ee
|
||||
mov cx, ax ; 89 c1 ; 0xc13f2
|
||||
mov bx, strict word 00063h ; bb 63 00 ; 0xc13f4 vgabios.c:57
|
||||
mov ax, strict word 00040h ; b8 40 00 ; 0xc13f7
|
||||
|
@ -2794,7 +2794,7 @@ find_vpti: ; 0xc1431 LB 0x48
|
|||
mov CL, strict byte 003h ; b1 03 ; 0xc143b
|
||||
mov si, bx ; 89 de ; 0xc143d
|
||||
sal si, CL ; d3 e6 ; 0xc143f
|
||||
cmp byte [si+047ach], 000h ; 80 bc ac 47 00 ; 0xc1441
|
||||
cmp byte [si+047adh], 000h ; 80 bc ad 47 00 ; 0xc1441
|
||||
jne short 0146eh ; 75 26 ; 0xc1446
|
||||
mov si, 00089h ; be 89 00 ; 0xc1448 vgabios.c:47
|
||||
mov ax, strict word 00040h ; b8 40 00 ; 0xc144b
|
||||
|
@ -2802,16 +2802,16 @@ find_vpti: ; 0xc1431 LB 0x48
|
|||
mov al, byte [es:si] ; 26 8a 04 ; 0xc1450
|
||||
test AL, strict byte 010h ; a8 10 ; 0xc1453 vgabios.c:923
|
||||
je short 0145dh ; 74 06 ; 0xc1455
|
||||
mov al, byte [bx+07df2h] ; 8a 87 f2 7d ; 0xc1457 vgabios.c:924
|
||||
mov al, byte [bx+07df3h] ; 8a 87 f3 7d ; 0xc1457 vgabios.c:924
|
||||
jmp short 0146bh ; eb 0e ; 0xc145b vgabios.c:925
|
||||
test AL, strict byte 080h ; a8 80 ; 0xc145d
|
||||
je short 01467h ; 74 06 ; 0xc145f
|
||||
mov al, byte [bx+07de2h] ; 8a 87 e2 7d ; 0xc1461 vgabios.c:926
|
||||
mov al, byte [bx+07de3h] ; 8a 87 e3 7d ; 0xc1461 vgabios.c:926
|
||||
jmp short 0146bh ; eb 04 ; 0xc1465 vgabios.c:927
|
||||
mov al, byte [bx+07deah] ; 8a 87 ea 7d ; 0xc1467 vgabios.c:928
|
||||
mov al, byte [bx+07debh] ; 8a 87 eb 7d ; 0xc1467 vgabios.c:928
|
||||
cbw ; 98 ; 0xc146b
|
||||
jmp short 01474h ; eb 06 ; 0xc146c vgabios.c:929
|
||||
mov al, byte [bx+0482bh] ; 8a 87 2b 48 ; 0xc146e vgabios.c:930
|
||||
mov al, byte [bx+0482ch] ; 8a 87 2c 48 ; 0xc146e vgabios.c:930
|
||||
xor ah, ah ; 30 e4 ; 0xc1472
|
||||
pop bp ; 5d ; 0xc1474 vgabios.c:933
|
||||
pop si ; 5e ; 0xc1475
|
||||
|
@ -2876,13 +2876,13 @@ biosfn_set_video_mode: ; 0xc1479 LB 0x4e4
|
|||
mov CL, strict byte 003h ; b1 03 ; 0xc14f6 vgabios.c:999
|
||||
mov bx, dx ; 89 d3 ; 0xc14f8
|
||||
sal bx, CL ; d3 e3 ; 0xc14fa
|
||||
mov al, byte [bx+047b1h] ; 8a 87 b1 47 ; 0xc14fc
|
||||
mov al, byte [bx+047b2h] ; 8a 87 b2 47 ; 0xc14fc
|
||||
mov dx, 003c6h ; ba c6 03 ; 0xc1500
|
||||
out DX, AL ; ee ; 0xc1503
|
||||
xor al, al ; 30 c0 ; 0xc1504 vgabios.c:1002
|
||||
mov dx, 003c8h ; ba c8 03 ; 0xc1506
|
||||
out DX, AL ; ee ; 0xc1509
|
||||
mov bl, byte [bx+047b2h] ; 8a 9f b2 47 ; 0xc150a vgabios.c:1005
|
||||
mov bl, byte [bx+047b3h] ; 8a 9f b3 47 ; 0xc150a vgabios.c:1005
|
||||
cmp bl, 001h ; 80 fb 01 ; 0xc150e
|
||||
jc short 01523h ; 72 10 ; 0xc1511
|
||||
jbe short 0152eh ; 76 19 ; 0xc1513
|
||||
|
@ -2894,24 +2894,24 @@ biosfn_set_video_mode: ; 0xc1479 LB 0x4e4
|
|||
jmp near 01953h ; e9 30 04 ; 0xc1520
|
||||
test bl, bl ; 84 db ; 0xc1523
|
||||
jne short 01544h ; 75 1d ; 0xc1525
|
||||
mov word [bp-016h], 04fbfh ; c7 46 ea bf 4f ; 0xc1527 vgabios.c:1007
|
||||
mov word [bp-016h], 04fc0h ; c7 46 ea c0 4f ; 0xc1527 vgabios.c:1007
|
||||
jmp short 01544h ; eb 16 ; 0xc152c vgabios.c:1008
|
||||
mov word [bp-016h], 0507fh ; c7 46 ea 7f 50 ; 0xc152e vgabios.c:1010
|
||||
mov word [bp-016h], 05080h ; c7 46 ea 80 50 ; 0xc152e vgabios.c:1010
|
||||
jmp short 01544h ; eb 0f ; 0xc1533 vgabios.c:1011
|
||||
mov word [bp-016h], 0513fh ; c7 46 ea 3f 51 ; 0xc1535 vgabios.c:1013
|
||||
mov word [bp-016h], 05140h ; c7 46 ea 40 51 ; 0xc1535 vgabios.c:1013
|
||||
jmp short 01544h ; eb 08 ; 0xc153a vgabios.c:1014
|
||||
jmp near 015b8h ; e9 79 00 ; 0xc153c
|
||||
mov word [bp-016h], 051ffh ; c7 46 ea ff 51 ; 0xc153f vgabios.c:1016
|
||||
mov word [bp-016h], 05200h ; c7 46 ea 00 52 ; 0xc153f vgabios.c:1016
|
||||
mov bl, byte [bp-010h] ; 8a 5e f0 ; 0xc1544 vgabios.c:1020
|
||||
xor bh, bh ; 30 ff ; 0xc1547
|
||||
mov CL, strict byte 003h ; b1 03 ; 0xc1549
|
||||
sal bx, CL ; d3 e3 ; 0xc154b
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc154d
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc154d
|
||||
jne short 01563h ; 75 0f ; 0xc1552
|
||||
mov es, [bp-01ah] ; 8e 46 e6 ; 0xc1554 vgabios.c:1022
|
||||
cmp byte [es:si+002h], 008h ; 26 80 7c 02 08 ; 0xc1557
|
||||
jne short 01563h ; 75 05 ; 0xc155c
|
||||
mov word [bp-016h], 0507fh ; c7 46 ea 7f 50 ; 0xc155e vgabios.c:1023
|
||||
mov word [bp-016h], 05080h ; c7 46 ea 80 50 ; 0xc155e vgabios.c:1023
|
||||
xor bx, bx ; 31 db ; 0xc1563 vgabios.c:1026
|
||||
jmp short 01576h ; eb 0f ; 0xc1565
|
||||
xor al, al ; 30 c0 ; 0xc1567 vgabios.c:1033
|
||||
|
@ -2927,9 +2927,9 @@ biosfn_set_video_mode: ; 0xc1479 LB 0x4e4
|
|||
mov CL, strict byte 003h ; b1 03 ; 0xc157b
|
||||
mov di, ax ; 89 c7 ; 0xc157d
|
||||
sal di, CL ; d3 e7 ; 0xc157f
|
||||
mov al, byte [di+047b2h] ; 8a 85 b2 47 ; 0xc1581
|
||||
mov al, byte [di+047b3h] ; 8a 85 b3 47 ; 0xc1581
|
||||
mov di, ax ; 89 c7 ; 0xc1585
|
||||
mov al, byte [di+0483bh] ; 8a 85 3b 48 ; 0xc1587
|
||||
mov al, byte [di+0483ch] ; 8a 85 3c 48 ; 0xc1587
|
||||
cmp bx, ax ; 39 c3 ; 0xc158b
|
||||
jnbe short 01567h ; 77 d8 ; 0xc158d
|
||||
mov ax, bx ; 89 d8 ; 0xc158f
|
||||
|
@ -3043,7 +3043,7 @@ biosfn_set_video_mode: ; 0xc1479 LB 0x4e4
|
|||
xor bh, bh ; 30 ff ; 0xc1686
|
||||
mov CL, strict byte 003h ; b1 03 ; 0xc1688
|
||||
sal bx, CL ; d3 e3 ; 0xc168a
|
||||
cmp byte [bx+047adh], 001h ; 80 bf ad 47 01 ; 0xc168c
|
||||
cmp byte [bx+047aeh], 001h ; 80 bf ae 47 01 ; 0xc168c
|
||||
jne short 01698h ; 75 05 ; 0xc1691
|
||||
mov bx, 003b4h ; bb b4 03 ; 0xc1693
|
||||
jmp short 0169bh ; eb 03 ; 0xc1696
|
||||
|
@ -3085,9 +3085,9 @@ biosfn_set_video_mode: ; 0xc1479 LB 0x4e4
|
|||
xor bh, bh ; 30 ff ; 0xc16e6
|
||||
mov CL, strict byte 003h ; b1 03 ; 0xc16e8
|
||||
sal bx, CL ; d3 e3 ; 0xc16ea
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc16ec
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc16ec
|
||||
jne short 01705h ; 75 12 ; 0xc16f1
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc16f3 vgabios.c:1102
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc16f3 vgabios.c:1102
|
||||
mov cx, 04000h ; b9 00 40 ; 0xc16f7
|
||||
mov ax, 00720h ; b8 20 07 ; 0xc16fa
|
||||
xor di, di ; 31 ff ; 0xc16fd
|
||||
|
@ -3096,7 +3096,7 @@ biosfn_set_video_mode: ; 0xc1479 LB 0x4e4
|
|||
jmp short 01741h ; eb 3c ; 0xc1703 vgabios.c:1104
|
||||
cmp byte [bp-00ch], 00dh ; 80 7e f4 0d ; 0xc1705 vgabios.c:1106
|
||||
jnc short 0171ch ; 73 11 ; 0xc1709
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc170b vgabios.c:1108
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc170b vgabios.c:1108
|
||||
mov cx, 04000h ; b9 00 40 ; 0xc170f
|
||||
xor ax, ax ; 31 c0 ; 0xc1712
|
||||
xor di, di ; 31 ff ; 0xc1714
|
||||
|
@ -3113,7 +3113,7 @@ biosfn_set_video_mode: ; 0xc1479 LB 0x4e4
|
|||
mov word [bp-022h], ax ; 89 46 de ; 0xc1728
|
||||
mov AL, strict byte 00fh ; b0 0f ; 0xc172b vgabios.c:1114
|
||||
out DX, AL ; ee ; 0xc172d
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc172e vgabios.c:1115
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc172e vgabios.c:1115
|
||||
mov cx, 08000h ; b9 00 80 ; 0xc1732
|
||||
xor ax, ax ; 31 c0 ; 0xc1735
|
||||
xor di, di ; 31 ff ; 0xc1737
|
||||
|
@ -3165,7 +3165,7 @@ biosfn_set_video_mode: ; 0xc1479 LB 0x4e4
|
|||
jnbe short 017e1h ; 77 27 ; 0xc17b8
|
||||
mov bl, al ; 88 c3 ; 0xc17ba vgabios.c:1136
|
||||
xor bh, bh ; 30 ff ; 0xc17bc
|
||||
mov al, byte [bx+07ddah] ; 8a 87 da 7d ; 0xc17be vgabios.c:50
|
||||
mov al, byte [bx+07ddbh] ; 8a 87 db 7d ; 0xc17be vgabios.c:50
|
||||
mov bx, strict word 00065h ; bb 65 00 ; 0xc17c2 vgabios.c:52
|
||||
mov byte [es:bx], al ; 26 88 07 ; 0xc17c5
|
||||
cmp byte [bp-00ch], 006h ; 80 7e f4 06 ; 0xc17c8 vgabios.c:1137
|
||||
|
@ -3181,7 +3181,7 @@ biosfn_set_video_mode: ; 0xc1479 LB 0x4e4
|
|||
xor bh, bh ; 30 ff ; 0xc17e4
|
||||
mov CL, strict byte 003h ; b1 03 ; 0xc17e6
|
||||
sal bx, CL ; d3 e3 ; 0xc17e8
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc17ea
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc17ea
|
||||
jne short 017fah ; 75 09 ; 0xc17ef
|
||||
mov dx, strict word 00007h ; ba 07 00 ; 0xc17f1 vgabios.c:1143
|
||||
mov ax, strict word 00006h ; b8 06 00 ; 0xc17f4
|
||||
|
@ -3202,7 +3202,7 @@ biosfn_set_video_mode: ; 0xc1479 LB 0x4e4
|
|||
xor bh, bh ; 30 ff ; 0xc1817
|
||||
mov CL, strict byte 003h ; b1 03 ; 0xc1819
|
||||
sal bx, CL ; d3 e3 ; 0xc181b
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc181d
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc181d
|
||||
jne short 01892h ; 75 6e ; 0xc1822
|
||||
les bx, [bp-014h] ; c4 5e ec ; 0xc1824 vgabios.c:1157
|
||||
mov bx, word [es:bx+008h] ; 26 8b 5f 08 ; 0xc1827
|
||||
|
@ -3224,7 +3224,7 @@ biosfn_set_video_mode: ; 0xc1479 LB 0x4e4
|
|||
push ax ; 50 ; 0xc1855
|
||||
push ax ; 50 ; 0xc1856
|
||||
mov cx, 00100h ; b9 00 01 ; 0xc1857
|
||||
mov bx, 05569h ; bb 69 55 ; 0xc185a
|
||||
mov bx, 0556ah ; bb 6a 55 ; 0xc185a
|
||||
mov dx, 0c000h ; ba 00 c0 ; 0xc185d
|
||||
call 02e8ch ; e8 29 16 ; 0xc1860
|
||||
jmp short 018bah ; eb 55 ; 0xc1863 vgabios.c:1162
|
||||
|
@ -3236,14 +3236,14 @@ biosfn_set_video_mode: ; 0xc1479 LB 0x4e4
|
|||
xor al, al ; 30 c0 ; 0xc186d
|
||||
push ax ; 50 ; 0xc186f
|
||||
mov cx, 00100h ; b9 00 01 ; 0xc1870
|
||||
mov bx, 05d69h ; bb 69 5d ; 0xc1873
|
||||
mov bx, 05d6ah ; bb 6a 5d ; 0xc1873
|
||||
mov dx, 0c000h ; ba 00 c0 ; 0xc1876
|
||||
call 02e8ch ; e8 10 16 ; 0xc1879
|
||||
cmp byte [bp-00ch], 007h ; 80 7e f4 07 ; 0xc187c vgabios.c:1165
|
||||
jne short 018bah ; 75 38 ; 0xc1880
|
||||
mov cx, strict word 0000eh ; b9 0e 00 ; 0xc1882 vgabios.c:1166
|
||||
xor bx, bx ; 31 db ; 0xc1885
|
||||
mov dx, 07b69h ; ba 69 7b ; 0xc1887
|
||||
mov dx, 07b6ah ; ba 6a 7b ; 0xc1887
|
||||
mov ax, 0c000h ; b8 00 c0 ; 0xc188a
|
||||
call 02e14h ; e8 84 15 ; 0xc188d
|
||||
jmp short 018bah ; eb 28 ; 0xc1890 vgabios.c:1167
|
||||
|
@ -3256,12 +3256,12 @@ biosfn_set_video_mode: ; 0xc1479 LB 0x4e4
|
|||
xor al, al ; 30 c0 ; 0xc189d
|
||||
push ax ; 50 ; 0xc189f
|
||||
mov cx, 00100h ; b9 00 01 ; 0xc18a0
|
||||
mov bx, 06b69h ; bb 69 6b ; 0xc18a3
|
||||
mov bx, 06b6ah ; bb 6a 6b ; 0xc18a3
|
||||
mov dx, 0c000h ; ba 00 c0 ; 0xc18a6
|
||||
call 02e8ch ; e8 e0 15 ; 0xc18a9
|
||||
mov cx, strict word 00010h ; b9 10 00 ; 0xc18ac vgabios.c:1170
|
||||
xor bx, bx ; 31 db ; 0xc18af
|
||||
mov dx, 07c96h ; ba 96 7c ; 0xc18b1
|
||||
mov dx, 07c97h ; ba 97 7c ; 0xc18b1
|
||||
mov ax, 0c000h ; b8 00 c0 ; 0xc18b4
|
||||
call 02e14h ; e8 5a 15 ; 0xc18b7
|
||||
cmp word [bp-01ch], strict byte 00000h ; 83 7e e4 00 ; 0xc18ba vgabios.c:1172
|
||||
|
@ -3300,7 +3300,7 @@ biosfn_set_video_mode: ; 0xc1479 LB 0x4e4
|
|||
mov AL, strict byte 003h ; b0 03 ; 0xc1915
|
||||
mov AH, strict byte 011h ; b4 11 ; 0xc1917
|
||||
int 06dh ; cd 6d ; 0xc1919
|
||||
mov bx, 05969h ; bb 69 59 ; 0xc191b vgabios.c:1199
|
||||
mov bx, 0596ah ; bb 6a 59 ; 0xc191b vgabios.c:1199
|
||||
mov cx, ds ; 8c d9 ; 0xc191e
|
||||
mov ax, strict word 0001fh ; b8 1f 00 ; 0xc1920
|
||||
call 009f0h ; e8 ca f0 ; 0xc1923
|
||||
|
@ -3312,14 +3312,14 @@ biosfn_set_video_mode: ; 0xc1479 LB 0x4e4
|
|||
je short 01949h ; 74 12 ; 0xc1935
|
||||
cmp dl, 008h ; 80 fa 08 ; 0xc1937
|
||||
jne short 01953h ; 75 17 ; 0xc193a
|
||||
mov bx, 05569h ; bb 69 55 ; 0xc193c vgabios.c:1203
|
||||
mov bx, 0556ah ; bb 6a 55 ; 0xc193c vgabios.c:1203
|
||||
mov cx, ds ; 8c d9 ; 0xc193f
|
||||
mov ax, strict word 00043h ; b8 43 00 ; 0xc1941
|
||||
call 009f0h ; e8 a9 f0 ; 0xc1944
|
||||
jmp short 01953h ; eb 0a ; 0xc1947 vgabios.c:1204
|
||||
mov bx, 05d69h ; bb 69 5d ; 0xc1949 vgabios.c:1206
|
||||
mov bx, 05d6ah ; bb 6a 5d ; 0xc1949 vgabios.c:1206
|
||||
jmp short 0193fh ; eb f1 ; 0xc194c
|
||||
mov bx, 06b69h ; bb 69 6b ; 0xc194e vgabios.c:1209
|
||||
mov bx, 06b6ah ; bb 6a 6b ; 0xc194e vgabios.c:1209
|
||||
jmp short 0193fh ; eb ec ; 0xc1951
|
||||
lea sp, [bp-00ah] ; 8d 66 f6 ; 0xc1953 vgabios.c:1212
|
||||
pop di ; 5f ; 0xc1956
|
||||
|
@ -3800,7 +3800,7 @@ biosfn_scroll: ; 0xc1c9f LB 0x6a3
|
|||
mov ax, word [bp-018h] ; 8b 46 e8 ; 0xc1d58
|
||||
mul word [bp-024h] ; f7 66 dc ; 0xc1d5b
|
||||
mov di, ax ; 89 c7 ; 0xc1d5e
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc1d60
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc1d60
|
||||
jne short 01db1h ; 75 4a ; 0xc1d65
|
||||
sal ax, 1 ; d1 e0 ; 0xc1d67 vgabios.c:1345
|
||||
or AL, strict byte 0ffh ; 0c ff ; 0xc1d69
|
||||
|
@ -3825,7 +3825,7 @@ biosfn_scroll: ; 0xc1c9f LB 0x6a3
|
|||
mov ah, byte [bp-010h] ; 8a 66 f0 ; 0xc1d99 vgabios.c:1352
|
||||
xor al, ch ; 30 e8 ; 0xc1d9c
|
||||
add ax, strict word 00020h ; 05 20 00 ; 0xc1d9e
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc1da1
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc1da1
|
||||
mov cx, di ; 89 f9 ; 0xc1da5
|
||||
mov di, word [bp-01ch] ; 8b 7e e4 ; 0xc1da7
|
||||
jcxz 01daeh ; e3 02 ; 0xc1daa
|
||||
|
@ -3868,7 +3868,7 @@ biosfn_scroll: ; 0xc1c9f LB 0x6a3
|
|||
xor bh, bh ; 30 ff ; 0xc1e0a
|
||||
mov CL, strict byte 003h ; b1 03 ; 0xc1e0c
|
||||
sal bx, CL ; d3 e3 ; 0xc1e0e
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc1e10
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc1e10
|
||||
mov cx, word [bp-01ah] ; 8b 4e e6 ; 0xc1e14
|
||||
mov ax, si ; 89 f0 ; 0xc1e17
|
||||
jcxz 01e1dh ; e3 02 ; 0xc1e19
|
||||
|
@ -3890,7 +3890,7 @@ biosfn_scroll: ; 0xc1c9f LB 0x6a3
|
|||
xor bh, bh ; 30 ff ; 0xc1e44
|
||||
mov CL, strict byte 003h ; b1 03 ; 0xc1e46
|
||||
sal bx, CL ; d3 e3 ; 0xc1e48
|
||||
mov bx, word [bx+047afh] ; 8b 9f af 47 ; 0xc1e4a
|
||||
mov bx, word [bx+047b0h] ; 8b 9f b0 47 ; 0xc1e4a
|
||||
mov ax, word [bp-016h] ; 8b 46 ea ; 0xc1e4e
|
||||
mul word [bp-018h] ; f7 66 e8 ; 0xc1e51
|
||||
add ax, word [bp-01ah] ; 03 46 e6 ; 0xc1e54
|
||||
|
@ -3942,7 +3942,7 @@ biosfn_scroll: ; 0xc1c9f LB 0x6a3
|
|||
mov CL, strict byte 003h ; b1 03 ; 0xc1ec3
|
||||
mov di, ax ; 89 c7 ; 0xc1ec5
|
||||
sal di, CL ; d3 e7 ; 0xc1ec7
|
||||
mov es, [di+047afh] ; 8e 85 af 47 ; 0xc1ec9
|
||||
mov es, [di+047b0h] ; 8e 85 b0 47 ; 0xc1ec9
|
||||
mov cx, bx ; 89 d9 ; 0xc1ecd
|
||||
mov ax, si ; 89 f0 ; 0xc1ecf
|
||||
mov di, dx ; 89 d7 ; 0xc1ed1
|
||||
|
@ -3968,7 +3968,7 @@ biosfn_scroll: ; 0xc1c9f LB 0x6a3
|
|||
xor bh, bh ; 30 ff ; 0xc1f05
|
||||
mov CL, strict byte 003h ; b1 03 ; 0xc1f07
|
||||
sal bx, CL ; d3 e3 ; 0xc1f09
|
||||
mov bx, word [bx+047afh] ; 8b 9f af 47 ; 0xc1f0b
|
||||
mov bx, word [bx+047b0h] ; 8b 9f b0 47 ; 0xc1f0b
|
||||
mov ax, word [bp-016h] ; 8b 46 ea ; 0xc1f0f
|
||||
mul word [bp-018h] ; f7 66 e8 ; 0xc1f12
|
||||
add ax, word [bp-014h] ; 03 46 ec ; 0xc1f15
|
||||
|
@ -3990,14 +3990,14 @@ biosfn_scroll: ; 0xc1c9f LB 0x6a3
|
|||
dec word [bp-016h] ; ff 4e ea ; 0xc1f38 vgabios.c:1373
|
||||
jmp near 01e7bh ; e9 3d ff ; 0xc1f3b
|
||||
mov si, word [bp-01eh] ; 8b 76 e2 ; 0xc1f3e vgabios.c:1379
|
||||
mov al, byte [si+0482bh] ; 8a 84 2b 48 ; 0xc1f41
|
||||
mov al, byte [si+0482ch] ; 8a 84 2c 48 ; 0xc1f41
|
||||
xor ah, ah ; 30 e4 ; 0xc1f45
|
||||
mov CL, strict byte 006h ; b1 06 ; 0xc1f47
|
||||
mov si, ax ; 89 c6 ; 0xc1f49
|
||||
sal si, CL ; d3 e6 ; 0xc1f4b
|
||||
mov al, byte [si+04841h] ; 8a 84 41 48 ; 0xc1f4d
|
||||
mov al, byte [si+04842h] ; 8a 84 42 48 ; 0xc1f4d
|
||||
mov byte [bp-00eh], al ; 88 46 f2 ; 0xc1f51
|
||||
mov al, byte [bx+047adh] ; 8a 87 ad 47 ; 0xc1f54 vgabios.c:1380
|
||||
mov al, byte [bx+047aeh] ; 8a 87 ae 47 ; 0xc1f54 vgabios.c:1380
|
||||
cmp AL, strict byte 003h ; 3c 03 ; 0xc1f58
|
||||
jc short 01f68h ; 72 0c ; 0xc1f5a
|
||||
jbe short 01f6fh ; 76 11 ; 0xc1f5c
|
||||
|
@ -4045,7 +4045,7 @@ biosfn_scroll: ; 0xc1c9f LB 0x6a3
|
|||
xor bh, bh ; 30 ff ; 0xc1fc0
|
||||
mov CL, strict byte 003h ; b1 03 ; 0xc1fc2
|
||||
sal bx, CL ; d3 e3 ; 0xc1fc4
|
||||
mov bx, word [bx+047afh] ; 8b 9f af 47 ; 0xc1fc6
|
||||
mov bx, word [bx+047b0h] ; 8b 9f b0 47 ; 0xc1fc6
|
||||
mov cx, dx ; 89 d1 ; 0xc1fca
|
||||
xor di, di ; 31 ff ; 0xc1fcc
|
||||
mov es, bx ; 8e c3 ; 0xc1fce
|
||||
|
@ -4151,7 +4151,7 @@ biosfn_scroll: ; 0xc1c9f LB 0x6a3
|
|||
jc short 02112h ; 72 4e ; 0xc20c2
|
||||
dec word [bp-016h] ; ff 4e ea ; 0xc20c4 vgabios.c:1409
|
||||
jmp short 02057h ; eb 8e ; 0xc20c7
|
||||
mov cl, byte [bx+047aeh] ; 8a 8f ae 47 ; 0xc20c9 vgabios.c:1414
|
||||
mov cl, byte [bx+047afh] ; 8a 8f af 47 ; 0xc20c9 vgabios.c:1414
|
||||
cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xc20cd vgabios.c:1415
|
||||
jne short 02115h ; 75 42 ; 0xc20d1
|
||||
cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xc20d3
|
||||
|
@ -4173,7 +4173,7 @@ biosfn_scroll: ; 0xc1c9f LB 0x6a3
|
|||
mul dx ; f7 e2 ; 0xc20fb
|
||||
mov dl, byte [bp-010h] ; 8a 56 f0 ; 0xc20fd
|
||||
xor dh, dh ; 30 f6 ; 0xc2100
|
||||
mov bx, word [bx+047afh] ; 8b 9f af 47 ; 0xc2102
|
||||
mov bx, word [bx+047b0h] ; 8b 9f b0 47 ; 0xc2102
|
||||
mov cx, ax ; 89 c1 ; 0xc2106
|
||||
mov ax, dx ; 89 d0 ; 0xc2108
|
||||
xor di, di ; 31 ff ; 0xc210a
|
||||
|
@ -4307,7 +4307,7 @@ biosfn_scroll: ; 0xc1c9f LB 0x6a3
|
|||
mov cx, ax ; 89 c1 ; 0xc224b
|
||||
mov al, byte [bp-010h] ; 8a 46 f0 ; 0xc224d
|
||||
xor ah, ah ; 30 e4 ; 0xc2250
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc2252
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc2252
|
||||
xor di, di ; 31 ff ; 0xc2256
|
||||
jcxz 0225ch ; e3 02 ; 0xc2258
|
||||
rep stosb ; f3 aa ; 0xc225a
|
||||
|
@ -4532,7 +4532,7 @@ write_gfx_char_cga: ; 0xc2454 LB 0x112
|
|||
mov ch, al ; 88 c5 ; 0xc245c
|
||||
mov byte [bp-002h], dl ; 88 56 fe ; 0xc245e
|
||||
mov al, bl ; 88 d8 ; 0xc2461
|
||||
mov si, 05569h ; be 69 55 ; 0xc2463 vgabios.c:1541
|
||||
mov si, 0556ah ; be 6a 55 ; 0xc2463 vgabios.c:1541
|
||||
xor ah, ah ; 30 e4 ; 0xc2466 vgabios.c:1542
|
||||
mov bl, byte [bp+00ah] ; 8a 5e 0a ; 0xc2468
|
||||
xor bh, bh ; 30 ff ; 0xc246b
|
||||
|
@ -4653,7 +4653,7 @@ write_gfx_char_lin: ; 0xc2566 LB 0xa1
|
|||
mov bh, al ; 88 c7 ; 0xc256e
|
||||
mov ch, dl ; 88 d5 ; 0xc2570
|
||||
mov al, cl ; 88 c8 ; 0xc2572
|
||||
mov di, 05569h ; bf 69 55 ; 0xc2574 vgabios.c:1605
|
||||
mov di, 0556ah ; bf 6a 55 ; 0xc2574 vgabios.c:1605
|
||||
xor ah, ah ; 30 e4 ; 0xc2577 vgabios.c:1606
|
||||
mov dl, byte [bp+008h] ; 8a 56 08 ; 0xc2579
|
||||
xor dh, dh ; 30 f6 ; 0xc257c
|
||||
|
@ -4773,7 +4773,7 @@ biosfn_write_char_attr: ; 0xc2607 LB 0x172
|
|||
mov CL, strict byte 003h ; b1 03 ; 0xc2679
|
||||
mov di, bx ; 89 df ; 0xc267b
|
||||
sal di, CL ; d3 e7 ; 0xc267d
|
||||
cmp byte [di+047ach], 000h ; 80 bd ac 47 00 ; 0xc267f
|
||||
cmp byte [di+047adh], 000h ; 80 bd ad 47 00 ; 0xc267f
|
||||
jne short 026c6h ; 75 40 ; 0xc2684
|
||||
mul dx ; f7 e2 ; 0xc2686 vgabios.c:1648
|
||||
sal ax, 1 ; d1 e0 ; 0xc2688
|
||||
|
@ -4796,18 +4796,18 @@ biosfn_write_char_attr: ; 0xc2607 LB 0x172
|
|||
mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xc26ae
|
||||
mov word [bp-01eh], ax ; 89 46 e2 ; 0xc26b1
|
||||
mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xc26b4 vgabios.c:1651
|
||||
mov es, [di+047afh] ; 8e 85 af 47 ; 0xc26b7
|
||||
mov es, [di+047b0h] ; 8e 85 b0 47 ; 0xc26b7
|
||||
mov cx, si ; 89 f1 ; 0xc26bb
|
||||
mov di, bx ; 89 df ; 0xc26bd
|
||||
jcxz 026c3h ; e3 02 ; 0xc26bf
|
||||
rep stosw ; f3 ab ; 0xc26c1
|
||||
jmp near 02772h ; e9 ac 00 ; 0xc26c3 vgabios.c:1653
|
||||
mov bl, byte [bx+0482bh] ; 8a 9f 2b 48 ; 0xc26c6 vgabios.c:1656
|
||||
mov bl, byte [bx+0482ch] ; 8a 9f 2c 48 ; 0xc26c6 vgabios.c:1656
|
||||
mov CL, strict byte 006h ; b1 06 ; 0xc26ca
|
||||
sal bx, CL ; d3 e3 ; 0xc26cc
|
||||
mov al, byte [bx+04841h] ; 8a 87 41 48 ; 0xc26ce
|
||||
mov al, byte [bx+04842h] ; 8a 87 42 48 ; 0xc26ce
|
||||
mov byte [bp-010h], al ; 88 46 f0 ; 0xc26d2
|
||||
mov al, byte [di+047aeh] ; 8a 85 ae 47 ; 0xc26d5 vgabios.c:1657
|
||||
mov al, byte [di+047afh] ; 8a 85 af 47 ; 0xc26d5 vgabios.c:1657
|
||||
mov byte [bp-012h], al ; 88 46 ee ; 0xc26d9
|
||||
dec si ; 4e ; 0xc26dc vgabios.c:1658
|
||||
cmp si, strict byte 0ffffh ; 83 fe ff ; 0xc26dd
|
||||
|
@ -4816,7 +4816,7 @@ biosfn_write_char_attr: ; 0xc2607 LB 0x172
|
|||
xor bh, bh ; 30 ff ; 0xc26e5
|
||||
mov CL, strict byte 003h ; b1 03 ; 0xc26e7
|
||||
sal bx, CL ; d3 e3 ; 0xc26e9
|
||||
mov al, byte [bx+047adh] ; 8a 87 ad 47 ; 0xc26eb
|
||||
mov al, byte [bx+047aeh] ; 8a 87 ae 47 ; 0xc26eb
|
||||
cmp al, cl ; 38 c8 ; 0xc26ef
|
||||
jc short 026ffh ; 72 0c ; 0xc26f1
|
||||
jbe short 02705h ; 76 10 ; 0xc26f3
|
||||
|
@ -4927,7 +4927,7 @@ biosfn_write_char_only: ; 0xc2779 LB 0x183
|
|||
mov CL, strict byte 003h ; b1 03 ; 0xc27e6
|
||||
mov bx, ax ; 89 c3 ; 0xc27e8
|
||||
sal bx, CL ; d3 e3 ; 0xc27ea
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc27ec
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc27ec
|
||||
jne short 02838h ; 75 45 ; 0xc27f1
|
||||
mov ax, di ; 89 f8 ; 0xc27f3 vgabios.c:1706
|
||||
mul dx ; f7 e2 ; 0xc27f5
|
||||
|
@ -4955,20 +4955,20 @@ biosfn_write_char_only: ; 0xc2779 LB 0x183
|
|||
mov CL, strict byte 003h ; b1 03 ; 0xc2824
|
||||
mov di, ax ; 89 c7 ; 0xc2826
|
||||
sal di, CL ; d3 e7 ; 0xc2828
|
||||
mov es, [di+047afh] ; 8e 85 af 47 ; 0xc282a vgabios.c:50
|
||||
mov es, [di+047b0h] ; 8e 85 b0 47 ; 0xc282a vgabios.c:50
|
||||
mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xc282e vgabios.c:52
|
||||
mov byte [es:bx], al ; 26 88 07 ; 0xc2831
|
||||
inc bx ; 43 ; 0xc2834 vgabios.c:1710
|
||||
inc bx ; 43 ; 0xc2835
|
||||
jmp short 02819h ; eb e1 ; 0xc2836 vgabios.c:1711
|
||||
mov di, ax ; 89 c7 ; 0xc2838 vgabios.c:1716
|
||||
mov al, byte [di+0482bh] ; 8a 85 2b 48 ; 0xc283a
|
||||
mov al, byte [di+0482ch] ; 8a 85 2c 48 ; 0xc283a
|
||||
mov CL, strict byte 006h ; b1 06 ; 0xc283e
|
||||
mov di, ax ; 89 c7 ; 0xc2840
|
||||
sal di, CL ; d3 e7 ; 0xc2842
|
||||
mov al, byte [di+04841h] ; 8a 85 41 48 ; 0xc2844
|
||||
mov al, byte [di+04842h] ; 8a 85 42 48 ; 0xc2844
|
||||
mov byte [bp-012h], al ; 88 46 ee ; 0xc2848
|
||||
mov al, byte [bx+047aeh] ; 8a 87 ae 47 ; 0xc284b vgabios.c:1717
|
||||
mov al, byte [bx+047afh] ; 8a 87 af 47 ; 0xc284b vgabios.c:1717
|
||||
mov byte [bp-014h], al ; 88 46 ec ; 0xc284f
|
||||
dec si ; 4e ; 0xc2852 vgabios.c:1718
|
||||
cmp si, strict byte 0ffffh ; 83 fe ff ; 0xc2853
|
||||
|
@ -4977,7 +4977,7 @@ biosfn_write_char_only: ; 0xc2779 LB 0x183
|
|||
xor bh, bh ; 30 ff ; 0xc285b
|
||||
mov CL, strict byte 003h ; b1 03 ; 0xc285d
|
||||
sal bx, CL ; d3 e3 ; 0xc285f
|
||||
mov bl, byte [bx+047adh] ; 8a 9f ad 47 ; 0xc2861
|
||||
mov bl, byte [bx+047aeh] ; 8a 9f ae 47 ; 0xc2861
|
||||
cmp bl, cl ; 38 cb ; 0xc2865
|
||||
jc short 02878h ; 72 0f ; 0xc2867
|
||||
jbe short 0287fh ; 76 14 ; 0xc2869
|
||||
|
@ -5065,9 +5065,9 @@ biosfn_write_pixel: ; 0xc28fc LB 0x17a
|
|||
xor bh, bh ; 30 ff ; 0xc2927
|
||||
mov CL, strict byte 003h ; b1 03 ; 0xc2929
|
||||
sal bx, CL ; d3 e3 ; 0xc292b
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc292d
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc292d
|
||||
je short 0294ch ; 74 18 ; 0xc2932
|
||||
mov al, byte [bx+047adh] ; 8a 87 ad 47 ; 0xc2934 vgabios.c:1755
|
||||
mov al, byte [bx+047aeh] ; 8a 87 ae 47 ; 0xc2934 vgabios.c:1755
|
||||
cmp al, cl ; 38 c8 ; 0xc2938
|
||||
jc short 02948h ; 72 0c ; 0xc293a
|
||||
jbe short 02952h ; 76 14 ; 0xc293c
|
||||
|
@ -5131,7 +5131,7 @@ biosfn_write_pixel: ; 0xc28fc LB 0x17a
|
|||
shr ax, 1 ; d1 e8 ; 0xc29c7
|
||||
mov dx, strict word 00050h ; ba 50 00 ; 0xc29c9
|
||||
mul dx ; f7 e2 ; 0xc29cc
|
||||
cmp byte [bx+047aeh], 002h ; 80 bf ae 47 02 ; 0xc29ce
|
||||
cmp byte [bx+047afh], 002h ; 80 bf af 47 02 ; 0xc29ce
|
||||
jne short 029deh ; 75 09 ; 0xc29d3
|
||||
mov bx, word [bp-008h] ; 8b 5e f8 ; 0xc29d5 vgabios.c:1777
|
||||
shr bx, 1 ; d1 eb ; 0xc29d8
|
||||
|
@ -5151,7 +5151,7 @@ biosfn_write_pixel: ; 0xc28fc LB 0x17a
|
|||
mov CL, strict byte 003h ; b1 03 ; 0xc29fa
|
||||
mov si, dx ; 89 d6 ; 0xc29fc
|
||||
sal si, CL ; d3 e6 ; 0xc29fe
|
||||
cmp byte [si+047aeh], 002h ; 80 bc ae 47 02 ; 0xc2a00
|
||||
cmp byte [si+047afh], 002h ; 80 bc af 47 02 ; 0xc2a00
|
||||
jne short 02a21h ; 75 1a ; 0xc2a05
|
||||
mov ah, byte [bp-008h] ; 8a 66 f8 ; 0xc2a07 vgabios.c:1787
|
||||
and ah, cl ; 20 cc ; 0xc2a0a
|
||||
|
@ -5275,7 +5275,7 @@ biosfn_write_teletype: ; 0xc2a76 LB 0x263
|
|||
mov CL, strict byte 003h ; b1 03 ; 0xc2b25
|
||||
mov bx, ax ; 89 c3 ; 0xc2b27
|
||||
sal bx, CL ; d3 e3 ; 0xc2b29
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc2b2b
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc2b2b
|
||||
jne short 02b74h ; 75 42 ; 0xc2b30
|
||||
mov ax, word [bp-012h] ; 8b 46 ee ; 0xc2b32 vgabios.c:1865
|
||||
mul word [bp-014h] ; f7 66 ec ; 0xc2b35
|
||||
|
@ -5295,23 +5295,23 @@ biosfn_write_teletype: ; 0xc2a76 LB 0x263
|
|||
add ax, dx ; 01 d0 ; 0xc2b55
|
||||
sal ax, 1 ; d1 e0 ; 0xc2b57
|
||||
add si, ax ; 01 c6 ; 0xc2b59
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc2b5b vgabios.c:50
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc2b5b vgabios.c:50
|
||||
mov byte [es:si], ch ; 26 88 2c ; 0xc2b5f vgabios.c:52
|
||||
cmp cl, byte [bp-004h] ; 3a 4e fc ; 0xc2b62 vgabios.c:1870
|
||||
jne short 02ba4h ; 75 3d ; 0xc2b65
|
||||
inc si ; 46 ; 0xc2b67 vgabios.c:1871
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc2b68 vgabios.c:50
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc2b68 vgabios.c:50
|
||||
mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xc2b6c
|
||||
mov byte [es:si], al ; 26 88 04 ; 0xc2b6f
|
||||
jmp short 02ba4h ; eb 30 ; 0xc2b72 vgabios.c:1873
|
||||
mov si, ax ; 89 c6 ; 0xc2b74 vgabios.c:1876
|
||||
mov al, byte [si+0482bh] ; 8a 84 2b 48 ; 0xc2b76
|
||||
mov al, byte [si+0482ch] ; 8a 84 2c 48 ; 0xc2b76
|
||||
mov CL, strict byte 006h ; b1 06 ; 0xc2b7a
|
||||
mov si, ax ; 89 c6 ; 0xc2b7c
|
||||
sal si, CL ; d3 e6 ; 0xc2b7e
|
||||
mov dl, byte [si+04841h] ; 8a 94 41 48 ; 0xc2b80
|
||||
mov al, byte [bx+047aeh] ; 8a 87 ae 47 ; 0xc2b84 vgabios.c:1877
|
||||
mov bl, byte [bx+047adh] ; 8a 9f ad 47 ; 0xc2b88 vgabios.c:1878
|
||||
mov dl, byte [si+04842h] ; 8a 94 42 48 ; 0xc2b80
|
||||
mov al, byte [bx+047afh] ; 8a 87 af 47 ; 0xc2b84 vgabios.c:1877
|
||||
mov bl, byte [bx+047aeh] ; 8a 9f ae 47 ; 0xc2b88 vgabios.c:1878
|
||||
cmp bl, 003h ; 80 fb 03 ; 0xc2b8c
|
||||
jc short 02b9fh ; 72 0e ; 0xc2b8f
|
||||
jbe short 02ba6h ; 76 13 ; 0xc2b91
|
||||
|
@ -5389,7 +5389,7 @@ biosfn_write_teletype: ; 0xc2a76 LB 0x263
|
|||
mov ch, byte [bp-012h] ; 8a 6e ee ; 0xc2c40
|
||||
db 0feh, 0cdh
|
||||
; dec ch ; fe cd ; 0xc2c43
|
||||
cmp byte [bx+047ach], 000h ; 80 bf ac 47 00 ; 0xc2c45
|
||||
cmp byte [bx+047adh], 000h ; 80 bf ad 47 00 ; 0xc2c45
|
||||
jne short 02c98h ; 75 4c ; 0xc2c4a
|
||||
mov ax, word [bp-012h] ; 8b 46 ee ; 0xc2c4c vgabios.c:1910
|
||||
mul word [bp-014h] ; f7 66 ec ; 0xc2c4f
|
||||
|
@ -5411,7 +5411,7 @@ biosfn_write_teletype: ; 0xc2a76 LB 0x263
|
|||
sal ax, 1 ; d1 e0 ; 0xc2c72
|
||||
add si, ax ; 01 c6 ; 0xc2c74
|
||||
inc si ; 46 ; 0xc2c76 vgabios.c:1911
|
||||
mov es, [bx+047afh] ; 8e 87 af 47 ; 0xc2c77 vgabios.c:45
|
||||
mov es, [bx+047b0h] ; 8e 87 b0 47 ; 0xc2c77 vgabios.c:45
|
||||
mov dl, byte [es:si] ; 26 8a 14 ; 0xc2c7b vgabios.c:47
|
||||
mov ax, strict word 00001h ; b8 01 00 ; 0xc2c7e vgabios.c:1912
|
||||
push ax ; 50 ; 0xc2c81
|
||||
|
@ -5789,7 +5789,7 @@ set_gfx_font: ; 0xc2f26 LB 0x4d
|
|||
mov DL, strict byte 002h ; b2 02 ; 0xc2f46 vgabios.c:2033
|
||||
mov bl, dl ; 88 d3 ; 0xc2f48 vgabios.c:2034
|
||||
xor bh, bh ; 30 ff ; 0xc2f4a
|
||||
mov al, byte [bx+07dfah] ; 8a 87 fa 7d ; 0xc2f4c
|
||||
mov al, byte [bx+07dfbh] ; 8a 87 fb 7d ; 0xc2f4c
|
||||
mov byte [bp+004h], al ; 88 46 04 ; 0xc2f50
|
||||
mov bx, 00085h ; bb 85 00 ; 0xc2f53 vgabios.c:62
|
||||
mov ax, strict word 00040h ; b8 40 00 ; 0xc2f56
|
||||
|
@ -5835,7 +5835,7 @@ biosfn_load_gfx_8_14_chars: ; 0xc2f90 LB 0x22
|
|||
mov al, bl ; 88 d8 ; 0xc2f9c
|
||||
mov cx, ax ; 89 c1 ; 0xc2f9e
|
||||
mov bx, strict word 0000eh ; bb 0e 00 ; 0xc2fa0
|
||||
mov ax, 05d69h ; b8 69 5d ; 0xc2fa3
|
||||
mov ax, 05d6ah ; b8 6a 5d ; 0xc2fa3
|
||||
mov dx, ds ; 8c da ; 0xc2fa6
|
||||
call 02f26h ; e8 7b ff ; 0xc2fa8
|
||||
lea sp, [bp-004h] ; 8d 66 fc ; 0xc2fab vgabios.c:2054
|
||||
|
@ -5856,7 +5856,7 @@ biosfn_load_gfx_8_8_dd_chars: ; 0xc2fb2 LB 0x22
|
|||
mov al, bl ; 88 d8 ; 0xc2fbe
|
||||
mov cx, ax ; 89 c1 ; 0xc2fc0
|
||||
mov bx, strict word 00008h ; bb 08 00 ; 0xc2fc2
|
||||
mov ax, 05569h ; b8 69 55 ; 0xc2fc5
|
||||
mov ax, 0556ah ; b8 6a 55 ; 0xc2fc5
|
||||
mov dx, ds ; 8c da ; 0xc2fc8
|
||||
call 02f26h ; e8 59 ff ; 0xc2fca
|
||||
lea sp, [bp-004h] ; 8d 66 fc ; 0xc2fcd vgabios.c:2058
|
||||
|
@ -5877,7 +5877,7 @@ biosfn_load_gfx_8_16_chars: ; 0xc2fd4 LB 0x22
|
|||
mov al, bl ; 88 d8 ; 0xc2fe0
|
||||
mov cx, ax ; 89 c1 ; 0xc2fe2
|
||||
mov bx, strict word 00010h ; bb 10 00 ; 0xc2fe4
|
||||
mov ax, 06b69h ; b8 69 6b ; 0xc2fe7
|
||||
mov ax, 06b6ah ; b8 6a 6b ; 0xc2fe7
|
||||
mov dx, ds ; 8c da ; 0xc2fea
|
||||
call 02f26h ; e8 37 ff ; 0xc2fec
|
||||
lea sp, [bp-004h] ; 8d 66 fc ; 0xc2fef vgabios.c:2062
|
||||
|
@ -6010,7 +6010,7 @@ biosfn_read_state_info: ; 0xc30c6 LB 0x1f2
|
|||
mov word [bp-00ah], ax ; 89 46 f6 ; 0xc30e3 vgabios.c:58
|
||||
mov ax, ds ; 8c d8 ; 0xc30e6 vgabios.c:2150
|
||||
mov es, dx ; 8e c2 ; 0xc30e8 vgabios.c:72
|
||||
mov word [es:bx], 054ffh ; 26 c7 07 ff 54 ; 0xc30ea
|
||||
mov word [es:bx], 05500h ; 26 c7 07 00 55 ; 0xc30ea
|
||||
mov [es:bx+002h], ds ; 26 8c 5f 02 ; 0xc30ef
|
||||
lea di, [bx+004h] ; 8d 7f 04 ; 0xc30f3 vgabios.c:2155
|
||||
mov cx, strict word 0001eh ; b9 1e 00 ; 0xc30f6
|
||||
|
@ -6899,7 +6899,7 @@ find_vga_entry: ; 0xc3888 LB 0x2b
|
|||
xor bh, bh ; 30 ff ; 0xc389e
|
||||
mov CL, strict byte 003h ; b1 03 ; 0xc38a0
|
||||
sal bx, CL ; d3 e3 ; 0xc38a2
|
||||
cmp dl, byte [bx+047abh] ; 3a 97 ab 47 ; 0xc38a4
|
||||
cmp dl, byte [bx+047ach] ; 3a 97 ac 47 ; 0xc38a4
|
||||
jne short 03896h ; 75 ec ; 0xc38a8
|
||||
mov ah, al ; 88 c4 ; 0xc38aa
|
||||
mov al, ah ; 88 e0 ; 0xc38ac vgabios.c:2438
|
||||
|
@ -7125,7 +7125,7 @@ int10_func: ; 0xc394b LB 0x456
|
|||
push ax ; 50 ; 0xc3b26
|
||||
mov al, byte [bp+012h] ; 8a 46 12 ; 0xc3b27
|
||||
mov cx, 00100h ; b9 00 01 ; 0xc3b2a
|
||||
mov bx, 05d69h ; bb 69 5d ; 0xc3b2d
|
||||
mov bx, 05d6ah ; bb 6a 5d ; 0xc3b2d
|
||||
mov dx, 0c000h ; ba 00 c0 ; 0xc3b30
|
||||
call 02e8ch ; e8 56 f3 ; 0xc3b33
|
||||
jmp short 03b58h ; eb 20 ; 0xc3b36
|
||||
|
@ -7138,7 +7138,7 @@ int10_func: ; 0xc394b LB 0x456
|
|||
push ax ; 50 ; 0xc3b44
|
||||
mov al, byte [bp+012h] ; 8a 46 12 ; 0xc3b45
|
||||
mov cx, 00100h ; b9 00 01 ; 0xc3b48
|
||||
mov bx, 05569h ; bb 69 55 ; 0xc3b4b
|
||||
mov bx, 0556ah ; bb 6a 55 ; 0xc3b4b
|
||||
jmp short 03b30h ; eb e0 ; 0xc3b4e
|
||||
mov al, byte [bp+00ch] ; 8a 46 0c ; 0xc3b50 vgabios.c:2629
|
||||
xor ah, ah ; 30 e4 ; 0xc3b53
|
||||
|
@ -7153,7 +7153,7 @@ int10_func: ; 0xc394b LB 0x456
|
|||
push ax ; 50 ; 0xc3b67
|
||||
mov al, byte [bp+012h] ; 8a 46 12 ; 0xc3b68
|
||||
mov cx, 00100h ; b9 00 01 ; 0xc3b6b
|
||||
mov bx, 06b69h ; bb 69 6b ; 0xc3b6e
|
||||
mov bx, 06b6ah ; bb 6a 6b ; 0xc3b6e
|
||||
jmp short 03b30h ; eb bd ; 0xc3b71
|
||||
mov dx, word [bp+008h] ; 8b 56 08 ; 0xc3b73 vgabios.c:2636
|
||||
mov ax, word [bp+016h] ; 8b 46 16 ; 0xc3b76
|
||||
|
@ -7674,7 +7674,7 @@ vbe_biosfn_return_controller_information: ; 0xc3f6b LB 0x12b
|
|||
mov word [es:bx], 04556h ; 26 c7 07 56 45 ; 0xc3fd6
|
||||
mov word [es:bx+002h], 04153h ; 26 c7 47 02 53 41 ; 0xc3fdb vbe.c:334
|
||||
mov word [es:bx+004h], 00200h ; 26 c7 47 04 00 02 ; 0xc3fe1 vbe.c:338
|
||||
mov word [es:bx+006h], 07dfeh ; 26 c7 47 06 fe 7d ; 0xc3fe7 vbe.c:341
|
||||
mov word [es:bx+006h], 07e00h ; 26 c7 47 06 00 7e ; 0xc3fe7 vbe.c:341
|
||||
mov [es:bx+008h], ds ; 26 8c 5f 08 ; 0xc3fed
|
||||
mov word [es:bx+00ah], strict word 00001h ; 26 c7 47 0a 01 00 ; 0xc3ff1 vbe.c:344
|
||||
mov word [es:bx+00ch], strict word 00000h ; 26 c7 47 0c 00 00 ; 0xc3ff7 vbe.c:346
|
||||
|
@ -7690,11 +7690,11 @@ vbe_biosfn_return_controller_information: ; 0xc3f6b LB 0x12b
|
|||
cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xc401b vbe.c:356
|
||||
je short 04045h ; 74 24 ; 0xc401f
|
||||
mov word [es:bx+014h], strict word 00003h ; 26 c7 47 14 03 00 ; 0xc4021 vbe.c:359
|
||||
mov word [es:bx+016h], 07e13h ; 26 c7 47 16 13 7e ; 0xc4027 vbe.c:360
|
||||
mov word [es:bx+016h], 07e15h ; 26 c7 47 16 15 7e ; 0xc4027 vbe.c:360
|
||||
mov [es:bx+018h], ds ; 26 8c 5f 18 ; 0xc402d
|
||||
mov word [es:bx+01ah], 07e30h ; 26 c7 47 1a 30 7e ; 0xc4031 vbe.c:361
|
||||
mov word [es:bx+01ah], 07e32h ; 26 c7 47 1a 32 7e ; 0xc4031 vbe.c:361
|
||||
mov [es:bx+01ch], ds ; 26 8c 5f 1c ; 0xc4037
|
||||
mov word [es:bx+01eh], 07e4eh ; 26 c7 47 1e 4e 7e ; 0xc403b vbe.c:362
|
||||
mov word [es:bx+01eh], 07e50h ; 26 c7 47 1e 50 7e ; 0xc403b vbe.c:362
|
||||
mov [es:bx+020h], ds ; 26 8c 5f 20 ; 0xc4041
|
||||
mov dx, cx ; 89 ca ; 0xc4045 vbe.c:369
|
||||
add dx, strict byte 0001bh ; 83 c2 1b ; 0xc4047
|
||||
|
@ -8436,12 +8436,12 @@ vesa_pm_end: ; 0xc4754 LB 0x1
|
|||
; Padding 0x2b bytes at 0xc4755
|
||||
times 43 db 0
|
||||
|
||||
section _DATA progbits vstart=0x4780 align=1 ; size=0x3742 class=DATA group=DGROUP
|
||||
; disGetNextSymbol 0xc4780 LB 0x3742 -> off=0x0 cb=000000000000002b uValue=00000000000c0000 '_msg_vga_init'
|
||||
_msg_vga_init: ; 0xc4780 LB 0x2b
|
||||
db 'Oracle VirtualBox Version 7.1.8 VGA BIOS', 00dh, 00ah, 000h
|
||||
; disGetNextSymbol 0xc47ab LB 0x3717 -> off=0x0 cb=0000000000000080 uValue=00000000000c002b 'vga_modes'
|
||||
vga_modes: ; 0xc47ab LB 0x80
|
||||
section _DATA progbits vstart=0x4780 align=1 ; size=0x3745 class=DATA group=DGROUP
|
||||
; disGetNextSymbol 0xc4780 LB 0x3745 -> off=0x0 cb=000000000000002c uValue=00000000000c0000 '_msg_vga_init'
|
||||
_msg_vga_init: ; 0xc4780 LB 0x2c
|
||||
db 'Oracle VirtualBox Version 7.1.10 VGA BIOS', 00dh, 00ah, 000h
|
||||
; disGetNextSymbol 0xc47ac LB 0x3719 -> off=0x0 cb=0000000000000080 uValue=00000000000c002c 'vga_modes'
|
||||
vga_modes: ; 0xc47ac LB 0x80
|
||||
db 000h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 001h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
|
||||
db 002h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 003h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
|
||||
db 004h, 001h, 002h, 002h, 000h, 0b8h, 0ffh, 001h, 005h, 001h, 002h, 002h, 000h, 0b8h, 0ffh, 001h
|
||||
|
@ -8450,14 +8450,14 @@ vga_modes: ; 0xc47ab LB 0x80
|
|||
db 00fh, 001h, 003h, 001h, 000h, 0a0h, 0ffh, 000h, 010h, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
|
||||
db 011h, 001h, 003h, 001h, 000h, 0a0h, 0ffh, 002h, 012h, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
|
||||
db 013h, 001h, 005h, 008h, 000h, 0a0h, 0ffh, 003h, 06ah, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
|
||||
; disGetNextSymbol 0xc482b LB 0x3697 -> off=0x0 cb=0000000000000010 uValue=00000000000c00ab 'line_to_vpti'
|
||||
line_to_vpti: ; 0xc482b LB 0x10
|
||||
; disGetNextSymbol 0xc482c LB 0x3699 -> off=0x0 cb=0000000000000010 uValue=00000000000c00ac 'line_to_vpti'
|
||||
line_to_vpti: ; 0xc482c LB 0x10
|
||||
db 017h, 017h, 018h, 018h, 004h, 005h, 006h, 007h, 00dh, 00eh, 011h, 012h, 01ah, 01bh, 01ch, 01dh
|
||||
; disGetNextSymbol 0xc483b LB 0x3687 -> off=0x0 cb=0000000000000004 uValue=00000000000c00bb 'dac_regs'
|
||||
dac_regs: ; 0xc483b LB 0x4
|
||||
; disGetNextSymbol 0xc483c LB 0x3689 -> off=0x0 cb=0000000000000004 uValue=00000000000c00bc 'dac_regs'
|
||||
dac_regs: ; 0xc483c LB 0x4
|
||||
dd 0ff3f3f3fh
|
||||
; disGetNextSymbol 0xc483f LB 0x3683 -> off=0x0 cb=0000000000000780 uValue=00000000000c00bf 'video_param_table'
|
||||
video_param_table: ; 0xc483f LB 0x780
|
||||
; disGetNextSymbol 0xc4840 LB 0x3685 -> off=0x0 cb=0000000000000780 uValue=00000000000c00c0 'video_param_table'
|
||||
video_param_table: ; 0xc4840 LB 0x780
|
||||
db 028h, 018h, 008h, 000h, 008h, 009h, 003h, 000h, 002h, 063h, 02dh, 027h, 028h, 090h, 02bh, 0a0h
|
||||
db 0bfh, 01fh, 000h, 0c7h, 006h, 007h, 000h, 000h, 000h, 000h, 09ch, 08eh, 08fh, 014h, 01fh, 096h
|
||||
db 0b9h, 0a3h, 0ffh, 000h, 001h, 002h, 003h, 004h, 005h, 006h, 007h, 010h, 011h, 012h, 013h, 014h
|
||||
|
@ -8578,8 +8578,8 @@ video_param_table: ; 0xc483f LB 0x780
|
|||
db 072h, 0f0h, 000h, 060h, 000h, 000h, 000h, 000h, 000h, 000h, 059h, 08dh, 057h, 032h, 000h, 057h
|
||||
db 073h, 0e3h, 0ffh, 000h, 001h, 002h, 003h, 004h, 005h, 014h, 007h, 038h, 039h, 03ah, 03bh, 03ch
|
||||
db 03dh, 03eh, 03fh, 001h, 000h, 00fh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 005h, 00fh, 0ffh
|
||||
; disGetNextSymbol 0xc4fbf LB 0x2f03 -> off=0x0 cb=00000000000000c0 uValue=00000000000c083f 'palette0'
|
||||
palette0: ; 0xc4fbf LB 0xc0
|
||||
; disGetNextSymbol 0xc4fc0 LB 0x2f05 -> off=0x0 cb=00000000000000c0 uValue=00000000000c0840 'palette0'
|
||||
palette0: ; 0xc4fc0 LB 0xc0
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah
|
||||
db 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah
|
||||
|
@ -8592,8 +8592,8 @@ palette0: ; 0xc4fbf LB 0xc0
|
|||
db 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah
|
||||
db 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh
|
||||
db 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh
|
||||
; disGetNextSymbol 0xc507f LB 0x2e43 -> off=0x0 cb=00000000000000c0 uValue=00000000000c08ff 'palette1'
|
||||
palette1: ; 0xc507f LB 0xc0
|
||||
; disGetNextSymbol 0xc5080 LB 0x2e45 -> off=0x0 cb=00000000000000c0 uValue=00000000000c0900 'palette1'
|
||||
palette1: ; 0xc5080 LB 0xc0
|
||||
db 000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
|
||||
db 000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah
|
||||
db 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah, 000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah
|
||||
|
@ -8606,8 +8606,8 @@ palette1: ; 0xc507f LB 0xc0
|
|||
db 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh, 015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh
|
||||
db 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
|
||||
db 015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
|
||||
; disGetNextSymbol 0xc513f LB 0x2d83 -> off=0x0 cb=00000000000000c0 uValue=00000000000c09bf 'palette2'
|
||||
palette2: ; 0xc513f LB 0xc0
|
||||
; disGetNextSymbol 0xc5140 LB 0x2d85 -> off=0x0 cb=00000000000000c0 uValue=00000000000c09c0 'palette2'
|
||||
palette2: ; 0xc5140 LB 0xc0
|
||||
db 000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
|
||||
db 000h, 02ah, 02ah, 02ah, 000h, 02ah, 02ah, 02ah, 000h, 000h, 015h, 000h, 000h, 03fh, 000h, 02ah
|
||||
db 015h, 000h, 02ah, 03fh, 02ah, 000h, 015h, 02ah, 000h, 03fh, 02ah, 02ah, 015h, 02ah, 02ah, 03fh
|
||||
|
@ -8620,8 +8620,8 @@ palette2: ; 0xc513f LB 0xc0
|
|||
db 015h, 015h, 000h, 015h, 015h, 02ah, 015h, 03fh, 000h, 015h, 03fh, 02ah, 03fh, 015h, 000h, 03fh
|
||||
db 015h, 02ah, 03fh, 03fh, 000h, 03fh, 03fh, 02ah, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
|
||||
db 015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
|
||||
; disGetNextSymbol 0xc51ff LB 0x2cc3 -> off=0x0 cb=0000000000000300 uValue=00000000000c0a7f 'palette3'
|
||||
palette3: ; 0xc51ff LB 0x300
|
||||
; disGetNextSymbol 0xc5200 LB 0x2cc5 -> off=0x0 cb=0000000000000300 uValue=00000000000c0a80 'palette3'
|
||||
palette3: ; 0xc5200 LB 0x300
|
||||
db 000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
|
||||
db 000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
|
||||
db 015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
|
||||
|
@ -8670,24 +8670,24 @@ palette3: ; 0xc51ff LB 0x300
|
|||
db 00bh, 010h, 00bh, 00bh, 010h, 00ch, 00bh, 010h, 00dh, 00bh, 010h, 00fh, 00bh, 010h, 010h, 00bh
|
||||
db 00fh, 010h, 00bh, 00dh, 010h, 00bh, 00ch, 010h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc54ff LB 0x29c3 -> off=0x0 cb=0000000000000010 uValue=00000000000c0d7f 'static_functionality'
|
||||
static_functionality: ; 0xc54ff LB 0x10
|
||||
; disGetNextSymbol 0xc5500 LB 0x29c5 -> off=0x0 cb=0000000000000010 uValue=00000000000c0d80 'static_functionality'
|
||||
static_functionality: ; 0xc5500 LB 0x10
|
||||
db 0ffh, 0e0h, 00fh, 000h, 000h, 000h, 000h, 007h, 002h, 008h, 0e7h, 00ch, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc550f LB 0x29b3 -> off=0x0 cb=0000000000000024 uValue=00000000000c0d8f '_dcc_table'
|
||||
_dcc_table: ; 0xc550f LB 0x24
|
||||
; disGetNextSymbol 0xc5510 LB 0x29b5 -> off=0x0 cb=0000000000000024 uValue=00000000000c0d90 '_dcc_table'
|
||||
_dcc_table: ; 0xc5510 LB 0x24
|
||||
db 010h, 001h, 007h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc5533 LB 0x298f -> off=0x0 cb=000000000000001a uValue=00000000000c0db3 '_secondary_save_area'
|
||||
_secondary_save_area: ; 0xc5533 LB 0x1a
|
||||
db 01ah, 000h, 00fh, 055h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc5534 LB 0x2991 -> off=0x0 cb=000000000000001a uValue=00000000000c0db4 '_secondary_save_area'
|
||||
_secondary_save_area: ; 0xc5534 LB 0x1a
|
||||
db 01ah, 000h, 010h, 055h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc554d LB 0x2975 -> off=0x0 cb=000000000000001c uValue=00000000000c0dcd '_video_save_pointer_table'
|
||||
_video_save_pointer_table: ; 0xc554d LB 0x1c
|
||||
db 03fh, 048h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 033h, 055h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc5569 LB 0x2959 -> off=0x0 cb=0000000000000800 uValue=00000000000c0de9 'vgafont8'
|
||||
vgafont8: ; 0xc5569 LB 0x800
|
||||
; disGetNextSymbol 0xc554e LB 0x2977 -> off=0x0 cb=000000000000001c uValue=00000000000c0dce '_video_save_pointer_table'
|
||||
_video_save_pointer_table: ; 0xc554e LB 0x1c
|
||||
db 040h, 048h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 034h, 055h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc556a LB 0x295b -> off=0x0 cb=0000000000000800 uValue=00000000000c0dea 'vgafont8'
|
||||
vgafont8: ; 0xc556a LB 0x800
|
||||
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
|
||||
|
@ -8816,8 +8816,8 @@ vgafont8: ; 0xc5569 LB 0x800
|
|||
db 000h, 000h, 000h, 000h, 018h, 000h, 000h, 000h, 00fh, 00ch, 00ch, 00ch, 0ech, 06ch, 03ch, 01ch
|
||||
db 078h, 06ch, 06ch, 06ch, 06ch, 000h, 000h, 000h, 070h, 018h, 030h, 060h, 078h, 000h, 000h, 000h
|
||||
db 000h, 000h, 03ch, 03ch, 03ch, 03ch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc5d69 LB 0x2159 -> off=0x0 cb=0000000000000e00 uValue=00000000000c15e9 'vgafont14'
|
||||
vgafont14: ; 0xc5d69 LB 0xe00
|
||||
; disGetNextSymbol 0xc5d6a LB 0x215b -> off=0x0 cb=0000000000000e00 uValue=00000000000c15ea 'vgafont14'
|
||||
vgafont14: ; 0xc5d6a LB 0xe00
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 07eh, 081h, 0a5h, 081h, 081h, 0bdh, 099h, 081h, 07eh, 000h, 000h, 000h, 000h, 000h, 07eh, 0ffh
|
||||
db 0dbh, 0ffh, 0ffh, 0c3h, 0e7h, 0ffh, 07eh, 000h, 000h, 000h, 000h, 000h, 000h, 06ch, 0feh, 0feh
|
||||
|
@ -9042,8 +9042,8 @@ vgafont14: ; 0xc5d69 LB 0xe00
|
|||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 070h, 0d8h, 030h, 060h, 0c8h, 0f8h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc6b69 LB 0x1359 -> off=0x0 cb=0000000000001000 uValue=00000000000c23e9 'vgafont16'
|
||||
vgafont16: ; 0xc6b69 LB 0x1000
|
||||
; disGetNextSymbol 0xc6b6a LB 0x135b -> off=0x0 cb=0000000000001000 uValue=00000000000c23ea 'vgafont16'
|
||||
vgafont16: ; 0xc6b6a LB 0x1000
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 07eh, 081h, 0a5h, 081h, 081h, 0bdh, 099h, 081h, 081h, 07eh, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 07eh, 0ffh, 0dbh, 0ffh, 0ffh, 0c3h, 0e7h, 0ffh, 0ffh, 07eh, 000h, 000h, 000h, 000h
|
||||
|
@ -9300,8 +9300,8 @@ vgafont16: ; 0xc6b69 LB 0x1000
|
|||
db 000h, 070h, 0d8h, 030h, 060h, 0c8h, 0f8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc7b69 LB 0x359 -> off=0x0 cb=000000000000012d uValue=00000000000c33e9 'vgafont14alt'
|
||||
vgafont14alt: ; 0xc7b69 LB 0x12d
|
||||
; disGetNextSymbol 0xc7b6a LB 0x35b -> off=0x0 cb=000000000000012d uValue=00000000000c33ea 'vgafont14alt'
|
||||
vgafont14alt: ; 0xc7b6a LB 0x12d
|
||||
db 01dh, 000h, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h, 000h, 000h, 000h, 022h
|
||||
db 000h, 063h, 063h, 063h, 022h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 02bh, 000h
|
||||
db 000h, 000h, 018h, 018h, 018h, 0ffh, 018h, 018h, 018h, 000h, 000h, 000h, 000h, 02dh, 000h, 000h
|
||||
|
@ -9321,8 +9321,8 @@ vgafont14alt: ; 0xc7b69 LB 0x12d
|
|||
db 000h, 0fch, 066h, 066h, 07ch, 062h, 066h, 06fh, 066h, 066h, 0f3h, 000h, 000h, 000h, 0f1h, 000h
|
||||
db 000h, 018h, 018h, 018h, 0ffh, 018h, 018h, 018h, 000h, 0ffh, 000h, 000h, 000h, 0f6h, 000h, 000h
|
||||
db 018h, 018h, 000h, 000h, 0ffh, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc7c96 LB 0x22c -> off=0x0 cb=0000000000000144 uValue=00000000000c3516 'vgafont16alt'
|
||||
vgafont16alt: ; 0xc7c96 LB 0x144
|
||||
; disGetNextSymbol 0xc7c97 LB 0x22e -> off=0x0 cb=0000000000000144 uValue=00000000000c3517 'vgafont16alt'
|
||||
vgafont16alt: ; 0xc7c97 LB 0x144
|
||||
db 01dh, 000h, 000h, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 030h, 000h, 000h, 03ch, 066h, 0c3h, 0c3h, 0dbh, 0dbh, 0c3h, 0c3h, 066h, 03ch, 000h, 000h
|
||||
db 000h, 000h, 04dh, 000h, 000h, 0c3h, 0e7h, 0ffh, 0ffh, 0dbh, 0c3h, 0c3h, 0c3h, 0c3h, 0c3h, 000h
|
||||
|
@ -9344,53 +9344,56 @@ vgafont16alt: ; 0xc7c96 LB 0x144
|
|||
db 000h, 0abh, 000h, 0c0h, 0c0h, 0c2h, 0c6h, 0cch, 018h, 030h, 060h, 0ceh, 09bh, 006h, 00ch, 01fh
|
||||
db 000h, 000h, 0ach, 000h, 0c0h, 0c0h, 0c2h, 0c6h, 0cch, 018h, 030h, 066h, 0ceh, 096h, 03eh, 006h
|
||||
db 006h, 000h, 000h, 000h
|
||||
; disGetNextSymbol 0xc7dda LB 0xe8 -> off=0x0 cb=0000000000000008 uValue=00000000000c365a '_cga_msr'
|
||||
_cga_msr: ; 0xc7dda LB 0x8
|
||||
; disGetNextSymbol 0xc7ddb LB 0xea -> off=0x0 cb=0000000000000008 uValue=00000000000c365b '_cga_msr'
|
||||
_cga_msr: ; 0xc7ddb LB 0x8
|
||||
db 02ch, 028h, 02dh, 029h, 02ah, 02eh, 01eh, 029h
|
||||
; disGetNextSymbol 0xc7de2 LB 0xe0 -> off=0x0 cb=0000000000000008 uValue=00000000000c3662 'line_to_vpti_200'
|
||||
line_to_vpti_200: ; 0xc7de2 LB 0x8
|
||||
; disGetNextSymbol 0xc7de3 LB 0xe2 -> off=0x0 cb=0000000000000008 uValue=00000000000c3663 'line_to_vpti_200'
|
||||
line_to_vpti_200: ; 0xc7de3 LB 0x8
|
||||
db 000h, 001h, 002h, 003h, 0ffh, 0ffh, 0ffh, 007h
|
||||
; disGetNextSymbol 0xc7dea LB 0xd8 -> off=0x0 cb=0000000000000008 uValue=00000000000c366a 'line_to_vpti_350'
|
||||
line_to_vpti_350: ; 0xc7dea LB 0x8
|
||||
; disGetNextSymbol 0xc7deb LB 0xda -> off=0x0 cb=0000000000000008 uValue=00000000000c366b 'line_to_vpti_350'
|
||||
line_to_vpti_350: ; 0xc7deb LB 0x8
|
||||
db 013h, 014h, 015h, 016h, 0ffh, 0ffh, 0ffh, 007h
|
||||
; disGetNextSymbol 0xc7df2 LB 0xd0 -> off=0x0 cb=0000000000000008 uValue=00000000000c3672 'line_to_vpti_400'
|
||||
line_to_vpti_400: ; 0xc7df2 LB 0x8
|
||||
; disGetNextSymbol 0xc7df3 LB 0xd2 -> off=0x0 cb=0000000000000008 uValue=00000000000c3673 'line_to_vpti_400'
|
||||
line_to_vpti_400: ; 0xc7df3 LB 0x8
|
||||
db 017h, 017h, 018h, 018h, 0ffh, 0ffh, 0ffh, 019h
|
||||
; disGetNextSymbol 0xc7dfa LB 0xc8 -> off=0x0 cb=0000000000000004 uValue=00000000000c367a 'row_tbl'
|
||||
row_tbl: ; 0xc7dfa LB 0x4
|
||||
dd 02b190e00h
|
||||
; disGetNextSymbol 0xc7dfe LB 0xc4 -> off=0x0 cb=0000000000000015 uValue=00000000000c367e '_vbebios_copyright'
|
||||
_vbebios_copyright: ; 0xc7dfe LB 0x15
|
||||
; disGetNextSymbol 0xc7dfb LB 0xca -> off=0x0 cb=0000000000000005 uValue=00000000000c367b 'row_tbl'
|
||||
row_tbl: ; 0xc7dfb LB 0x5
|
||||
db 000h, 00eh, 019h, 02bh, 000h
|
||||
; disGetNextSymbol 0xc7e00 LB 0xc5 -> off=0x0 cb=0000000000000015 uValue=00000000000c3680 '_vbebios_copyright'
|
||||
_vbebios_copyright: ; 0xc7e00 LB 0x15
|
||||
db 'VirtualBox VESA BIOS', 000h
|
||||
; disGetNextSymbol 0xc7e13 LB 0xaf -> off=0x0 cb=000000000000001d uValue=00000000000c3693 '_vbebios_vendor_name'
|
||||
_vbebios_vendor_name: ; 0xc7e13 LB 0x1d
|
||||
; disGetNextSymbol 0xc7e15 LB 0xb0 -> off=0x0 cb=000000000000001d uValue=00000000000c3695 '_vbebios_vendor_name'
|
||||
_vbebios_vendor_name: ; 0xc7e15 LB 0x1d
|
||||
db 'Oracle and/or its affiliates', 000h
|
||||
; disGetNextSymbol 0xc7e30 LB 0x92 -> off=0x0 cb=000000000000001e uValue=00000000000c36b0 '_vbebios_product_name'
|
||||
_vbebios_product_name: ; 0xc7e30 LB 0x1e
|
||||
; disGetNextSymbol 0xc7e32 LB 0x93 -> off=0x0 cb=000000000000001e uValue=00000000000c36b2 '_vbebios_product_name'
|
||||
_vbebios_product_name: ; 0xc7e32 LB 0x1e
|
||||
db 'Oracle VirtualBox VBE Adapter', 000h
|
||||
; disGetNextSymbol 0xc7e4e LB 0x74 -> off=0x0 cb=0000000000000020 uValue=00000000000c36ce '_vbebios_product_revision'
|
||||
_vbebios_product_revision: ; 0xc7e4e LB 0x20
|
||||
db 'Oracle VirtualBox Version 7.1.8', 000h
|
||||
; disGetNextSymbol 0xc7e6e LB 0x54 -> off=0x0 cb=000000000000002b uValue=00000000000c36ee '_vbebios_info_string'
|
||||
_vbebios_info_string: ; 0xc7e6e LB 0x2b
|
||||
; disGetNextSymbol 0xc7e50 LB 0x75 -> off=0x0 cb=0000000000000021 uValue=00000000000c36d0 '_vbebios_product_revision'
|
||||
_vbebios_product_revision: ; 0xc7e50 LB 0x21
|
||||
db 'Oracle VirtualBox Version 7.1.10', 000h
|
||||
; disGetNextSymbol 0xc7e71 LB 0x54 -> off=0x0 cb=000000000000002b uValue=00000000000c36f1 '_vbebios_info_string'
|
||||
_vbebios_info_string: ; 0xc7e71 LB 0x2b
|
||||
db 'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h
|
||||
; disGetNextSymbol 0xc7e99 LB 0x29 -> off=0x0 cb=0000000000000029 uValue=00000000000c3719 '_no_vbebios_info_string'
|
||||
_no_vbebios_info_string: ; 0xc7e99 LB 0x29
|
||||
; disGetNextSymbol 0xc7e9c LB 0x29 -> off=0x0 cb=0000000000000029 uValue=00000000000c371c '_no_vbebios_info_string'
|
||||
_no_vbebios_info_string: ; 0xc7e9c LB 0x29
|
||||
db 'No VirtualBox VBE support available!', 00dh, 00ah, 00dh, 00ah, 000h
|
||||
|
||||
section CONST progbits vstart=0x7ec2 align=1 ; size=0x0 class=DATA group=DGROUP
|
||||
; Padding 0x1 bytes at 0xc7ec5
|
||||
db 001h
|
||||
|
||||
section CONST2 progbits vstart=0x7ec2 align=1 ; size=0x0 class=DATA group=DGROUP
|
||||
section CONST progbits vstart=0x7ec6 align=1 ; size=0x0 class=DATA group=DGROUP
|
||||
|
||||
; Padding 0x13e bytes at 0xc7ec2
|
||||
db 001h, 000h, 000h, 000h, 000h, 001h, 000h, 000h, 000h, 000h, 000h, 000h, 02fh, 068h, 06fh, 06dh
|
||||
db 065h, 02fh, 067h, 061h, 06ch, 069h, 074h, 073h, 079h, 06eh, 02fh, 063h, 06fh, 06dh, 070h, 069h
|
||||
db 06ch, 065h, 02dh, 063h, 061h, 063h, 068h, 065h, 02fh, 076h, 062h, 06fh, 078h, 02fh, 062h, 072h
|
||||
db 061h, 06eh, 063h, 068h, 065h, 073h, 02fh, 056h, 042h, 06fh, 078h, 02dh, 037h, 02eh, 031h, 02fh
|
||||
db 06fh, 075h, 074h, 02fh, 06ch, 069h, 06eh, 075h, 078h, 02eh, 061h, 06dh, 064h, 036h, 034h, 02fh
|
||||
db 072h, 065h, 06ch, 065h, 061h, 073h, 065h, 02fh, 06fh, 062h, 06ah, 02fh, 056h, 042h, 06fh, 078h
|
||||
db 056h, 067h, 061h, 042h, 069h, 06fh, 073h, 038h, 030h, 038h, 036h, 02fh, 056h, 042h, 06fh, 078h
|
||||
db 056h, 067h, 061h, 042h, 069h, 06fh, 073h, 038h, 030h, 038h, 036h, 02eh, 073h, 079h, 06dh, 000h
|
||||
section CONST2 progbits vstart=0x7ec6 align=1 ; size=0x0 class=DATA group=DGROUP
|
||||
|
||||
; Padding 0x13a bytes at 0xc7ec6
|
||||
db 000h, 000h, 000h, 000h, 001h, 000h, 000h, 000h, 000h, 000h, 000h, 02fh, 068h, 06fh, 06dh, 065h
|
||||
db 02fh, 067h, 061h, 06ch, 069h, 074h, 073h, 079h, 06eh, 02fh, 063h, 06fh, 06dh, 070h, 069h, 06ch
|
||||
db 065h, 02dh, 063h, 061h, 063h, 068h, 065h, 02fh, 076h, 062h, 06fh, 078h, 02fh, 062h, 072h, 061h
|
||||
db 06eh, 063h, 068h, 065h, 073h, 02fh, 056h, 042h, 06fh, 078h, 02dh, 037h, 02eh, 031h, 02fh, 06fh
|
||||
db 075h, 074h, 02fh, 06ch, 069h, 06eh, 075h, 078h, 02eh, 061h, 06dh, 064h, 036h, 034h, 02fh, 072h
|
||||
db 065h, 06ch, 065h, 061h, 073h, 065h, 02fh, 06fh, 062h, 06ah, 02fh, 056h, 042h, 06fh, 078h, 056h
|
||||
db 067h, 061h, 042h, 069h, 06fh, 073h, 038h, 030h, 038h, 036h, 02fh, 056h, 042h, 06fh, 078h, 056h
|
||||
db 067h, 061h, 042h, 069h, 06fh, 073h, 038h, 030h, 038h, 036h, 02eh, 073h, 079h, 06dh, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
|
@ -9402,4 +9405,4 @@ section CONST2 progbits vstart=0x7ec2 align=1 ; size=0x0 class=DATA group=DGROUP
|
|||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0e3h
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 021h
|
||||
|
|
|
@ -1 +1 @@
|
|||
85b4d4e69c0d498396a3ef5b1df3bfc1 *VBoxVgaBios8086.rom
|
||||
7834d260590101c10faf3453e3fb0f9f *VBoxVgaBios8086.rom
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
/* $Id: DevVirtioNet.cpp $ */
|
||||
|
||||
/* $Id: DevVirtioNet.cpp 169005 2025-05-26 19:56:17Z klaus $ */
|
||||
/** @file
|
||||
* VBox storage devices - Virtio NET Driver
|
||||
*
|
||||
|
@ -672,6 +671,10 @@ static DECLCALLBACK(void) virtioNetVirtqNotified(PPDMDEVINS pDevIns, PVIRTIOCORE
|
|||
PVIRTIONETVIRTQ pVirtq = &pThis->aVirtqs[uVirtqNbr];
|
||||
PVIRTIONETWORKER pWorker = &pThis->aWorkers[uVirtqNbr];
|
||||
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (ASMAtomicReadBool(&pVirtio->fRecovering))
|
||||
LogRel(("[%s] Received notification from the guest on queue %u\n", pThis->szInst, uVirtqNbr));
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
#if defined (IN_RING3) && defined (LOG_ENABLED)
|
||||
RTLogFlush(NULL);
|
||||
#endif
|
||||
|
@ -791,7 +794,11 @@ void virtioNetDumpGcPhysRxBuf(PPDMDEVINS pDevIns, PVIRTIONETPKTHDR pRxPktHdr,
|
|||
/**
|
||||
* @callback_method_impl{FNDBGFHANDLERDEV, virtio-net debugger info callback.}
|
||||
*/
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
DECLCALLBACK(void) virtioNetR3Info(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs)
|
||||
#else /* !VIRTIO_REL_INFO_DUMP */
|
||||
static DECLCALLBACK(void) virtioNetR3Info(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs)
|
||||
#endif /* !VIRTIO_REL_INFO_DUMP */
|
||||
{
|
||||
PVIRTIONET pThis = PDMDEVINS_2_DATA(pDevIns, PVIRTIONET);
|
||||
PVIRTIONETCC pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PVIRTIONETCC);
|
||||
|
@ -803,6 +810,14 @@ static DECLCALLBACK(void) virtioNetR3Info(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp
|
|||
bool fState = pszArgs && (*pszArgs == 's' || *pszArgs == 'S'); /* "state" */
|
||||
bool fPointers = pszArgs && (*pszArgs == 'p' || *pszArgs == 'P'); /* "pointers" */
|
||||
bool fVirtqs = pszArgs && (*pszArgs == 'q' || *pszArgs == 'Q'); /* "queues */
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (pszArgs && (*pszArgs == 't' || *pszArgs == 'T'))
|
||||
{
|
||||
ASMAtomicWriteBool(&pThis->Virtio.fTestRecovery, true);
|
||||
pHlp->pfnPrintf(pHlp, "Triggering recovery for %s\n", pThis->szInst);
|
||||
return;
|
||||
}
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
|
||||
/* Show basic information. */
|
||||
pHlp->pfnPrintf(pHlp,
|
||||
|
@ -1037,6 +1052,10 @@ static int virtioNetR3DevCfgAccess(PVIRTIONET pThis, uint32_t uOffsetOfAccess, v
|
|||
pThis->szInst, uOffsetOfAccess, uOffsetOfAccess, cb));
|
||||
return fWrite ? VINF_SUCCESS : VINF_IOM_MMIO_UNUSED_00;
|
||||
}
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (ASMAtomicReadBool(&pThis->Virtio.fRecovering))
|
||||
LogRel(("[%s] %s %u bytes @ dev cfg + %u: %.*Rhxs\n", pThis->szInst, fWrite ? "wrote" : "read", cb, uOffsetOfAccess, cb, pv));
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
return VINF_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -1536,6 +1555,42 @@ static DECLCALLBACK(int) virtioNetR3ModernSaveExec(PPDMDEVINS pDevIns, PSSMHANDL
|
|||
|
||||
#ifdef IN_RING3
|
||||
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
/**
|
||||
* Attempt to recover from the state when a descriptor loop is discovered in adapter queue.
|
||||
* The idea is to force device reset via setting the DEVICE_NEEDS_RESET bit in the device status field.
|
||||
* To prevent further accesses to the queue in invalid state we need to bring down the link temporarily.
|
||||
* Unfortunately it does not seem to be handled by Linux virtio at all, so the faulty queue will remain
|
||||
* disabled, preventing recovery.
|
||||
*
|
||||
* @param pDevIns PDM instance
|
||||
*
|
||||
*/
|
||||
DECLHIDDEN(int) virtioNetAttemptToRecover(PPDMDEVINS pDevIns)
|
||||
{
|
||||
PVIRTIONET pThis = PDMDEVINS_2_DATA(pDevIns, PVIRTIONET);
|
||||
PVIRTIONETCC pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PVIRTIONETCC);
|
||||
|
||||
if (IS_LINK_UP(pThis))
|
||||
{
|
||||
SET_LINK_DOWN(pThis);
|
||||
|
||||
/* Re-establish link in 10 seconds. */
|
||||
int rc = PDMDevHlpTimerSetMillies(pDevIns, pThisCC->hLinkUpTimer, 10000);
|
||||
AssertRC(rc);
|
||||
|
||||
LogRel(("[%s] Virtio disabled until device reset\n", pThis->szInst));
|
||||
pThis->fVirtioReady = false;
|
||||
}
|
||||
virtioCoreResetAll(&pThis->Virtio);
|
||||
|
||||
if (ASMAtomicXchgBool(&pThis->Virtio.fRecovering, true))
|
||||
LogRel(("[%s] Attempting recovery while in recovery!\n", pThis->szInst));
|
||||
|
||||
return VINF_SUCCESS;
|
||||
}
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
|
||||
/**
|
||||
* Perform 16-bit 1's compliment checksum on provided packet in accordance with VirtIO specification,
|
||||
* pertinent to VIRTIO_NET_F_CSUM feature, which 'offloads' the Checksum feature from the driver
|
||||
|
@ -1650,6 +1705,10 @@ static int virtioNetR3CheckRxBufsAvail(PPDMDEVINS pDevIns, PVIRTIONET pThis, PVI
|
|||
virtioCoreVirtqAvailBufCount(pDevIns, &pThis->Virtio, pRxVirtq->uIdx)));
|
||||
rc = VINF_SUCCESS;
|
||||
}
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (ASMAtomicReadBool(&pThis->Virtio.fRecovering))
|
||||
LogRel(("[%s] %sRX buffers available on %s\n", pThis->szInst, rc == VERR_INVALID_STATE ? "Enabling notify as no " : "", pRxVirtq->szName));
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
virtioCoreVirtqEnableNotify(&pThis->Virtio, pRxVirtq->uIdx, rc == VERR_INVALID_STATE /* fEnable */);
|
||||
return rc;
|
||||
}
|
||||
|
@ -2008,6 +2067,12 @@ static int virtioNetR3RxPktMultibufXfer(PPDMDEVINS pDevIns, PVIRTIONET pThis, ui
|
|||
{
|
||||
cbHdrEnqueued = cbPktHdr;
|
||||
int rc = virtioCoreR3VirtqAvailBufGet(pDevIns, &pThis->Virtio, pRxVirtq->uIdx, pVirtqBuf, true);
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (rc == VERR_INVALID_STATE)
|
||||
return virtioNetAttemptToRecover(pDevIns);
|
||||
if (rc == VERR_NOT_AVAILABLE)
|
||||
return VINF_SUCCESS;
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
AssertMsgReturn(rc == VINF_SUCCESS || rc == VERR_NOT_AVAILABLE, ("%Rrc\n", rc), rc);
|
||||
AssertMsgReturn(rc == VINF_SUCCESS && pVirtqBuf->cbPhysReturn,
|
||||
("Not enough Rx buffers in queue to accomodate ethernet packet\n"),
|
||||
|
@ -2052,6 +2117,12 @@ static int virtioNetR3CopyRxPktToGuest(PPDMDEVINS pDevIns, PVIRTIONET pThis, PVI
|
|||
|
||||
PVIRTQBUF pVirtqBuf = &VirtqBuf;
|
||||
int rc = virtioCoreR3VirtqAvailBufGet(pDevIns, &pThis->Virtio, pRxVirtq->uIdx, pVirtqBuf, true);
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (rc == VERR_INVALID_STATE)
|
||||
return virtioNetAttemptToRecover(pDevIns);
|
||||
if (rc == VERR_NOT_AVAILABLE)
|
||||
return VINF_SUCCESS;
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
AssertMsgReturn(rc == VINF_SUCCESS || rc == VERR_NOT_AVAILABLE, ("%Rrc\n", rc), rc);
|
||||
AssertMsgReturn(rc == VINF_SUCCESS && pVirtqBuf->cbPhysReturn,
|
||||
("Not enough Rx buffers or capacity to accommodate ethernet packet\n"),
|
||||
|
@ -2079,6 +2150,10 @@ static int virtioNetR3CopyRxPktToGuest(PPDMDEVINS pDevIns, PVIRTIONET pThis, PVI
|
|||
return rc;
|
||||
}
|
||||
STAM_PROFILE_STOP(&pThis->StatReceiveStore, a);
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (ASMAtomicXchgBool(&pThis->Virtio.fRecovering, false))
|
||||
LogRel(("[%s] Recovery complete on successfully receiving a packet\n", pThis->szInst));
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
return VINF_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -2720,6 +2795,10 @@ static int virtioNetR3TransmitPkts(PPDMDEVINS pDevIns, PVIRTIONET pThis, PVIRTIO
|
|||
int cPkts = virtioCoreVirtqAvailBufCount(pVirtio->pDevInsR3, pVirtio, pTxVirtq->uIdx);
|
||||
if (!cPkts)
|
||||
{
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (ASMAtomicReadBool(&pThis->Virtio.fRecovering))
|
||||
LogRel(("[%s] No packets to send found on %s\n", pThis->szInst, pTxVirtq->szName));
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
LogFunc(("[%s] No packets to send found on %s\n", pThis->szInst, pTxVirtq->szName));
|
||||
|
||||
if (pDrv)
|
||||
|
@ -2728,6 +2807,10 @@ static int virtioNetR3TransmitPkts(PPDMDEVINS pDevIns, PVIRTIONET pThis, PVIRTIO
|
|||
ASMAtomicWriteU32(&pThis->uIsTransmitting, 0);
|
||||
return VERR_MISSING;
|
||||
}
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (ASMAtomicReadBool(&pThis->Virtio.fRecovering))
|
||||
LogRel(("[%s] About to transmit %d pending packet%c\n", pThis->szInst, cPkts, cPkts == 1 ? ' ' : 's'));
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
LogFunc(("[%s] About to transmit %d pending packet%c\n", pThis->szInst, cPkts, cPkts == 1 ? ' ' : 's'));
|
||||
|
||||
virtioNetR3SetWriteLed(pThisCC, true);
|
||||
|
@ -2858,6 +2941,23 @@ static int virtioNetR3TransmitPkts(PPDMDEVINS pDevIns, PVIRTIONET pThis, PVIRTIO
|
|||
&& IS_VIRTQ_EMPTY(pDevIns, &pThis->Virtio, pTxVirtq->uIdx))
|
||||
virtioCoreVirtqEnableNotify(&pThis->Virtio, pTxVirtq->uIdx, true /* fEnable */);
|
||||
}
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (rc == VERR_INVALID_STATE)
|
||||
{
|
||||
/*
|
||||
* Our best bet for recovering from a bad queue state is to do a device reset, but
|
||||
* it is not enough because NetKVM driver does not complete NBLs on reset. We need to lower
|
||||
* the link in order to prevent adding new descriptors to the TX queue first. Then we
|
||||
* need to simulate processing of all outstanding descriptor chains by simply copying
|
||||
* all head indices from avail to used ring. Note that we have only 'peeked' into the avail
|
||||
* ring, so the avail index should not have moved yet. This is not the case for other queues.
|
||||
*/
|
||||
virtioNetAttemptToRecover(pDevIns);
|
||||
virtioCorePutAllAvailBufsToUsedRing(pDevIns, &pThis->Virtio, pTxVirtq->uIdx);
|
||||
}
|
||||
else if (ASMAtomicXchgBool(&pThis->Virtio.fRecovering, false))
|
||||
LogRel(("[%s] Recovery complete on successfully transmitting a packet\n", pThis->szInst));
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
virtioNetR3SetWriteLed(pThisCC, false);
|
||||
|
||||
if (pDrv)
|
||||
|
@ -2890,7 +2990,22 @@ static DECLCALLBACK(void) virtioNetR3LinkUpTimer(PPDMDEVINS pDevIns, TMTIMERHAND
|
|||
PVIRTIONET pThis = PDMDEVINS_2_DATA(pDevIns, PVIRTIONET);
|
||||
PVIRTIONETCC pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PVIRTIONETCC);
|
||||
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (RT_UNLIKELY(!pThis->fVirtioReady))
|
||||
{
|
||||
if (ASMAtomicXchgBool(&pThis->Virtio.fRecovering, false))
|
||||
{
|
||||
LogRel(("[%s] Recovery failed, VM reset is needed!\n", pThis->szInst));
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
|
||||
SET_LINK_UP(pThis);
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (ASMAtomicReadBool(&pThis->Virtio.fRecovering))
|
||||
LogRel(("[%s] Link is up\n", pThis->szInst));
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
virtioNetWakeupRxBufWaiter(pDevIns);
|
||||
|
||||
if (pThisCC->pDrv)
|
||||
|
@ -3139,6 +3254,13 @@ static DECLCALLBACK(int) virtioNetR3WorkerThread(PPDMDEVINS pDevIns, PPDMTHREAD
|
|||
VIRTQBUF_T VirtqBuf;
|
||||
PVIRTQBUF pVirtqBuf = &VirtqBuf;
|
||||
int rc = virtioCoreR3VirtqAvailBufGet(pDevIns, &pThis->Virtio, pVirtq->uIdx, pVirtqBuf, true);
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (rc == VERR_INVALID_STATE)
|
||||
{
|
||||
virtioNetAttemptToRecover(pDevIns);
|
||||
continue;
|
||||
}
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
if (rc == VERR_NOT_AVAILABLE)
|
||||
{
|
||||
Log10Func(("[%s] %s worker woken. Nothing found in queue\n", pThis->szInst, pVirtq->szName));
|
||||
|
@ -3204,6 +3326,10 @@ static DECLCALLBACK(void) virtioNetR3StatusChg(PVIRTIOCORE pVirtio, PVIRTIOCOREC
|
|||
}
|
||||
else
|
||||
{
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (ASMAtomicReadBool(&pThis->Virtio.fRecovering))
|
||||
LogRel(("[%s] Resetting...\n", pThis->szInst));
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
Log(("\n%-23s: %s VirtIO is resetting ***\n", __FUNCTION__, pThis->szInst));
|
||||
|
||||
pThis->virtioNetConfig.uStatus = pThis->fCableConnected ? VIRTIONET_F_LINK_UP : 0;
|
||||
|
@ -3232,6 +3358,11 @@ static DECLCALLBACK(void) virtioNetR3StatusChg(PVIRTIOCORE pVirtio, PVIRTIOCOREC
|
|||
pThis->aVirtqs[uVirtqNbr].fAttachedToVirtioCore = false;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (pThisCC->pDrv)
|
||||
pThisCC->pDrv->pfnNotifyLinkChanged(pThisCC->pDrv, pThis->virtioNetConfig.uStatus ? PDMNETWORKLINKSTATE_UP : PDMNETWORKLINKSTATE_DOWN);
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3242,6 +3373,10 @@ static DECLCALLBACK(void) pfnFeatureNegotiationComplete(PVIRTIOCORE pVirtio, uin
|
|||
PVIRTIONET pThis = PDMDEVINS_2_DATA(pVirtio->pDevInsR3, PVIRTIONET);
|
||||
|
||||
LogFunc(("[Feature Negotiation Complete] Guest Driver version is: %s\n", fLegacy ? "legacy" : "modern"));
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (ASMAtomicReadBool(&pThis->Virtio.fRecovering))
|
||||
LogRel(("[%s] Feature Negotiation Complete for %s driver\n", pThis->szInst, fLegacy ? "legacy" : "modern"));
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
virtioNetConfigurePktHdr(pThis, fLegacy);
|
||||
virtioNetR3SetVirtqNames(pThis, fLegacy);
|
||||
|
||||
|
|
|
@ -1312,7 +1312,7 @@ section CONST progbits vstart=0x9a align=1 ; size=0xa92 class=DATA group=DGROUP
|
|||
section CONST2 progbits vstart=0xb2c align=1 ; size=0x3fa class=DATA group=DGROUP
|
||||
; disGetNextSymbol 0xf0b2c LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0b2c 'bios_cvs_version_string'
|
||||
bios_cvs_version_string: ; 0xf0b2c LB 0x12
|
||||
db 'VirtualBox 7.1.8', 000h, 000h
|
||||
db 'VirtualBox 7.1.10', 000h
|
||||
; disGetNextSymbol 0xf0b3e LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0b3e '_bios_prefix_string'
|
||||
_bios_prefix_string: ; 0xf0b3e LB 0x8
|
||||
db 'BIOS: ', 000h, 000h
|
||||
|
@ -13465,4 +13465,4 @@ biosorg_check_before_or_at_0FFEEh: ; 0xfff80 LB 0x70
|
|||
cpu_reset: ; 0xffff0 LB 0x10
|
||||
jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xffff0 orgs.asm:2117
|
||||
; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000'
|
||||
db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 083h
|
||||
db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 05ah
|
||||
|
|
|
@ -1 +1 @@
|
|||
1c9c9eede8319eb5a58a1cd1a1a1d8ff *VBoxPcBios286.rom
|
||||
8e03a660126a6eb7cf21272f92517357 *VBoxPcBios286.rom
|
||||
|
|
|
@ -1566,7 +1566,7 @@ section CONST progbits vstart=0xf0 align=1 ; size=0xd14 class=DATA group=DGROUP
|
|||
section CONST2 progbits vstart=0xe04 align=1 ; size=0x3fa class=DATA group=DGROUP
|
||||
; disGetNextSymbol 0xf0e04 LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0e04 'bios_cvs_version_string'
|
||||
bios_cvs_version_string: ; 0xf0e04 LB 0x12
|
||||
db 'VirtualBox 7.1.8', 000h, 000h
|
||||
db 'VirtualBox 7.1.10', 000h
|
||||
; disGetNextSymbol 0xf0e16 LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0e16 '_bios_prefix_string'
|
||||
_bios_prefix_string: ; 0xf0e16 LB 0x8
|
||||
db 'BIOS: ', 000h, 000h
|
||||
|
@ -19401,4 +19401,4 @@ biosorg_check_before_or_at_0FFEEh: ; 0xfff80 LB 0x70
|
|||
cpu_reset: ; 0xffff0 LB 0x10
|
||||
jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xffff0 orgs.asm:2117
|
||||
; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000'
|
||||
db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 010h
|
||||
db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 0e7h
|
||||
|
|
|
@ -1 +1 @@
|
|||
cc36c118d0c3651a550c2548dc2517df *VBoxPcBios386.rom
|
||||
92abd9d7aa1caad12085bc339081a486 *VBoxPcBios386.rom
|
||||
|
|
|
@ -1283,7 +1283,7 @@ section CONST progbits vstart=0x9a align=1 ; size=0xa92 class=DATA group=DGROUP
|
|||
section CONST2 progbits vstart=0xb2c align=1 ; size=0x3fa class=DATA group=DGROUP
|
||||
; disGetNextSymbol 0xf0b2c LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0b2c 'bios_cvs_version_string'
|
||||
bios_cvs_version_string: ; 0xf0b2c LB 0x12
|
||||
db 'VirtualBox 7.1.8', 000h, 000h
|
||||
db 'VirtualBox 7.1.10', 000h
|
||||
; disGetNextSymbol 0xf0b3e LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0b3e '_bios_prefix_string'
|
||||
_bios_prefix_string: ; 0xf0b3e LB 0x8
|
||||
db 'BIOS: ', 000h, 000h
|
||||
|
@ -13698,4 +13698,4 @@ biosorg_check_before_or_at_0FFEEh: ; 0xfff80 LB 0x70
|
|||
cpu_reset: ; 0xffff0 LB 0x10
|
||||
jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xffff0 orgs.asm:2117
|
||||
; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000'
|
||||
db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 025h
|
||||
db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 0fch
|
||||
|
|
|
@ -1 +1 @@
|
|||
df102e2b6e2cb7be6efe290ed2ee033a *VBoxPcBios8086.rom
|
||||
1abccb29e5f0e3fc5a701a5982264143 *VBoxPcBios8086.rom
|
||||
|
|
|
@ -47,6 +47,9 @@
|
|||
#include <VBox/vmm/pdmdev.h>
|
||||
#include "VirtioCore.h"
|
||||
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
#include <iprt/trace.h>
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
|
||||
/*********************************************************************************************************************************
|
||||
* Defined Constants And Macros *
|
||||
|
@ -632,6 +635,74 @@ DECLINLINE(void) virtioCoreR3DescInfo(PCDBGFINFOHLP pHlp, PVIRTQ_DESC_T pDesc, u
|
|||
pDesc->cb, pDesc->GCPhysBuf, cszTail);
|
||||
}
|
||||
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
DECLHIDDEN(void) virtioCoreR3DumpAvailRing(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, PVIRTIOCORE pVirtio, PVIRTQUEUE pVirtq)
|
||||
{
|
||||
uint16_t auTmp[VIRTQ_SIZE];
|
||||
virtioCoreGCPhysRead(pVirtio, pDevIns,
|
||||
pVirtq->GCPhysVirtqAvail + RT_UOFFSETOF_DYN(VIRTQ_AVAIL_T, auRing[0]),
|
||||
auTmp, pVirtq->uQueueSize * sizeof(uint16_t));
|
||||
pHlp->pfnPrintf(pHlp, " avail ring dump:\n%.*RhXd\n", pVirtq->uQueueSize * sizeof(uint16_t), auTmp,
|
||||
pVirtq->GCPhysVirtqAvail + RT_UOFFSETOF_DYN(VIRTQ_AVAIL_T, auRing[0]));
|
||||
}
|
||||
|
||||
DECLHIDDEN(void) virtioCoreR3DumpUsedRing(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, PVIRTIOCORE pVirtio, PVIRTQUEUE pVirtq)
|
||||
{
|
||||
VIRTQ_USED_ELEM_T aTmp[VIRTQ_SIZE];
|
||||
virtioCoreGCPhysRead(pVirtio, pDevIns,
|
||||
pVirtq->GCPhysVirtqUsed + RT_UOFFSETOF_DYN(VIRTQ_USED_T, aRing[0]),
|
||||
aTmp, pVirtq->uQueueSize * sizeof(VIRTQ_USED_ELEM_T));
|
||||
pHlp->pfnPrintf(pHlp, " used ring dump:\n%.*RhXd\n", pVirtq->uQueueSize * sizeof(VIRTQ_USED_ELEM_T), aTmp,
|
||||
pVirtq->GCPhysVirtqUsed + RT_UOFFSETOF_DYN(VIRTQ_USED_T, aRing[0]));
|
||||
}
|
||||
|
||||
#define VIRTIO_CORE_EVENT_INVALID 0
|
||||
#define VIRTIO_CORE_EVENT_AVAIL_GET 1 // pVirtq->uAvailIdxShadow, pVirtqBuf->uHeadIdx
|
||||
#define VIRTIO_CORE_EVENT_AVAIL_PEEK 2 // pVirtq->uAvailIdxShadow, pVirtqBuf->uHeadIdx
|
||||
#define VIRTIO_CORE_EVENT_AVAIL_NEXT 3 // pVirtq->uAvailIdxShadow, N/A
|
||||
#define VIRTIO_CORE_EVENT_USED_PUT 4 // pVirtq->uUsedIdxShadow, pVirtqBuf->uHeadIdx
|
||||
#define VIRTIO_CORE_EVENT_USED_SYNC 5 // pVirtq->uUsedIdxShadow, N/A
|
||||
|
||||
static const char *virtioCoreEventText[] = {
|
||||
"none <n/a>",
|
||||
" get avail",
|
||||
"peek avail",
|
||||
"next avail",
|
||||
" put used",
|
||||
"sync used"
|
||||
};
|
||||
|
||||
static void virtioCoreTraceEvent(PVIRTIOCORE pVirtio, PVIRTQUEUE pVirtq, const uint8_t event, uint16_t ringIdx, uint16_t descIdx)
|
||||
{
|
||||
if (pVirtq->uQueueSize)
|
||||
{
|
||||
if (event == VIRTIO_CORE_EVENT_AVAIL_NEXT || event == VIRTIO_CORE_EVENT_USED_SYNC)
|
||||
RTTraceBufAddMsgF(pVirtio->hTraceBuf, "%s: %s[%u]\n", pVirtq->szName, virtioCoreEventText[event], ringIdx % pVirtq->uQueueSize);
|
||||
else
|
||||
RTTraceBufAddMsgF(pVirtio->hTraceBuf, "%s: %s[%u]=%u\n", pVirtq->szName, virtioCoreEventText[event], ringIdx % pVirtq->uQueueSize, descIdx);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (event == VIRTIO_CORE_EVENT_AVAIL_NEXT || event == VIRTIO_CORE_EVENT_USED_SYNC)
|
||||
RTTraceBufAddMsgF(pVirtio->hTraceBuf, "%s: %s[%u]\n", pVirtq->szName, virtioCoreEventText[event], ringIdx);
|
||||
else
|
||||
RTTraceBufAddMsgF(pVirtio->hTraceBuf, "%s: %s[%u]=%u\n", pVirtq->szName, virtioCoreEventText[event], ringIdx, descIdx);
|
||||
}
|
||||
}
|
||||
|
||||
static DECLCALLBACK(int) dumpOneEntryToRelLog(RTTRACEBUF hTraceBuf, uint32_t iEntry, uint64_t NanoTS, RTCPUID idCpu, const char *pszMsg, void *pvUser)
|
||||
{
|
||||
RT_NOREF(hTraceBuf, pvUser);
|
||||
LogRel(("%03u / %llu / %02u / %s", iEntry, NanoTS, idCpu, pszMsg));
|
||||
return VINF_SUCCESS;
|
||||
}
|
||||
|
||||
static inline void virtioCoreDumpTraceBufToRelLog(RTTRACEBUF hTraceBuf)
|
||||
{
|
||||
RTTraceBufEnumEntries(hTraceBuf, dumpOneEntryToRelLog, NULL);
|
||||
}
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
|
||||
/** API Fuunction: See header file */
|
||||
DECLHIDDEN(void) virtioCoreR3VirtqInfo(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, PVIRTIOCORE pVirtio, const char *pszArgs, int uVirtq)
|
||||
{
|
||||
|
@ -660,6 +731,7 @@ DECLHIDDEN(void) virtioCoreR3VirtqInfo(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, P
|
|||
&uAvailEventIdx, sizeof(uAvailEventIdx));
|
||||
}
|
||||
|
||||
#ifndef VIRTIO_REL_INFO_DUMP
|
||||
VIRTQBUF_T VirtqBuf;
|
||||
PVIRTQBUF pVirtqBuf = &VirtqBuf;
|
||||
RT_ZERO(VirtqBuf); /* Make sure pSgPhysSend and pSgPhysReturn are initialized. */
|
||||
|
@ -674,6 +746,7 @@ DECLHIDDEN(void) virtioCoreR3VirtqInfo(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, P
|
|||
cSendSegs = pVirtqBuf->pSgPhysSend ? pVirtqBuf->pSgPhysSend->cSegs : 0;
|
||||
cReturnSegs = pVirtqBuf->pSgPhysReturn ? pVirtqBuf->pSgPhysReturn->cSegs : 0;
|
||||
}
|
||||
#endif /* !VIRTIO_REL_INFO_DUMP */
|
||||
|
||||
bool fAvailNoInterrupt = virtioReadAvailRingFlags(pDevIns, pVirtio, pVirtq) & VIRTQ_AVAIL_F_NO_INTERRUPT;
|
||||
bool fUsedNoNotify = virtioReadUsedRingFlags(pDevIns, pVirtio, pVirtq) & VIRTQ_USED_F_NO_NOTIFY;
|
||||
|
@ -694,6 +767,7 @@ DECLHIDDEN(void) virtioCoreR3VirtqInfo(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, P
|
|||
pHlp->pfnPrintf(pHlp, " shadow: ............... %d (%d)\n", pVirtq->uQueueSize ? uUsedIdxShadow % pVirtq->uQueueSize : uUsedIdxShadow, uUsedIdxShadow);
|
||||
pHlp->pfnPrintf(pHlp, " flags: ................ %s\n", fUsedNoNotify ? "NO_NOTIFY" : "");
|
||||
pHlp->pfnPrintf(pHlp, "\n");
|
||||
#ifndef VIRTIO_REL_INFO_DUMP
|
||||
if (!fEmpty)
|
||||
{
|
||||
pHlp->pfnPrintf(pHlp, " desc chain:\n");
|
||||
|
@ -718,6 +792,7 @@ DECLHIDDEN(void) virtioCoreR3VirtqInfo(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, P
|
|||
}
|
||||
} else
|
||||
pHlp->pfnPrintf(pHlp, " no desc chains available\n");
|
||||
#endif /* !VIRTIO_REL_INFO_DUMP */
|
||||
pHlp->pfnPrintf(pHlp, "\n");
|
||||
|
||||
/* Avoid handling zero-sized queues, there is nothing to show anyway. */
|
||||
|
@ -782,6 +857,12 @@ DECLHIDDEN(void) virtioCoreR3VirtqInfo(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, P
|
|||
pHlp->pfnPrintf(pHlp, " ------ - ----------- ---------------- ------- -------- ------------------\n");
|
||||
for (uint16_t i = 0; i < pVirtq->uQueueSize; i++)
|
||||
virtioCoreR3DescInfo(pHlp, &descTable[i], i, aszTails[i]);
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
pHlp->pfnPrintf(pHlp, "\n");
|
||||
virtioCoreR3DumpAvailRing(pDevIns, pHlp, pVirtio, pVirtq);
|
||||
pHlp->pfnPrintf(pHlp, "\n");
|
||||
virtioCoreR3DumpUsedRing(pDevIns, pHlp, pVirtio, pVirtq);
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
}
|
||||
|
||||
|
||||
|
@ -889,10 +970,78 @@ DECLHIDDEN(int) virtioCoreR3VirtqAvailBufNext(PVIRTIOCORE pVirtio, uint16_t uVir
|
|||
|
||||
Log6Func(("%s avail shadow idx: %u\n", pVirtq->szName, pVirtq->uAvailIdxShadow));
|
||||
pVirtq->uAvailIdxShadow++;
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
virtioCoreTraceEvent(pVirtio, pVirtq, VIRTIO_CORE_EVENT_AVAIL_NEXT, pVirtq->uAvailIdxShadow, 0);
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
|
||||
return VINF_SUCCESS;
|
||||
}
|
||||
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
DECLCALLBACK(void) virtioNetR3Info(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs);
|
||||
|
||||
static DECLCALLBACK(void) dbgVirtio_Printf(PCDBGFINFOHLP pHlp, const char *pszFormat, ...)
|
||||
{
|
||||
RT_NOREF(pHlp);
|
||||
va_list va;
|
||||
va_start(va, pszFormat);
|
||||
RTLogRelPrintfV(pszFormat, va);
|
||||
va_end(va);
|
||||
}
|
||||
|
||||
|
||||
static DECLCALLBACK(void) dbgVirtio_PrintfV(PCDBGFINFOHLP pHlp, const char *pszFormat, va_list args)
|
||||
{
|
||||
RT_NOREF(pHlp);
|
||||
RTLogRelPrintfV(pszFormat, args);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @interface_method_impl{DBGCCMDHLP,pfnGetDbgfOutputHlp}
|
||||
*/
|
||||
static void dbgVirtioDump(PPDMDEVINS pDevIns)
|
||||
{
|
||||
PVIRTIOCORE pVirtio = PDMINS_2_DATA(pDevIns, PVIRTIOCORE);
|
||||
LogRel(("dbgVirtioDump(%s)\n", pVirtio->szInstance));
|
||||
if (RTStrNCmp("virtio-net", pVirtio->szInstance, 10) == 0)
|
||||
{
|
||||
DBGFINFOHLP DbgHlp;
|
||||
|
||||
DbgHlp.pfnPrintf = dbgVirtio_Printf;
|
||||
DbgHlp.pfnPrintfV = dbgVirtio_PrintfV;
|
||||
DbgHlp.pfnGetOptError = NULL;
|
||||
|
||||
virtioNetR3Info(pDevIns, &DbgHlp, "a"); // Print everything!
|
||||
}
|
||||
}
|
||||
|
||||
/** Temporary API function: See Header file */
|
||||
void virtioCorePutAllAvailBufsToUsedRing(PPDMDEVINS pDevIns, PVIRTIOCORE pVirtio, uint16_t uVirtq)
|
||||
{
|
||||
PVIRTQUEUE pVirtq = &pVirtio->aVirtqueues[uVirtq];
|
||||
uint16_t uStartAvailIdx = pVirtq->uAvailIdxShadow;
|
||||
uint16_t uStartUsedIdx = pVirtq->uUsedIdxShadow;
|
||||
|
||||
/*
|
||||
* Copy chain head indices from avail to used, specifying zero processed length, which should be ok
|
||||
* for TX queue of virtio-net only!
|
||||
*/
|
||||
while (pVirtq->uAvailIdxShadow != virtioReadAvailRingIdx(pDevIns, pVirtio, pVirtq))
|
||||
virtioWriteUsedElem(pDevIns, pVirtio, pVirtq, pVirtq->uUsedIdxShadow++,
|
||||
virtioReadAvailDescIdx(pDevIns, pVirtio, pVirtq, pVirtq->uAvailIdxShadow++), 0);
|
||||
|
||||
if (pVirtq->uAvailIdxShadow != uStartAvailIdx)
|
||||
{
|
||||
LogRel(("[%s] Copied indices for %s [avail(%u:%u) -> used(%u:%u)]\n", pVirtio->szInstance, pVirtq->szName,
|
||||
uStartAvailIdx, pVirtq->uAvailIdxShadow - 1, uStartUsedIdx, pVirtq->uUsedIdxShadow - 1));
|
||||
virtioWriteUsedRingIdx(pDevIns, pVirtio, pVirtq, pVirtq->uUsedIdxShadow);
|
||||
virtioCoreNotifyGuestDriver(pDevIns, pVirtio, uVirtq);
|
||||
}
|
||||
else
|
||||
LogRel(("[%s] Avail ring is empty for %s, nothing to copy.\n", pVirtio->szInstance, pVirtq->szName));
|
||||
}
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
/** API Function: See header file */
|
||||
DECLHIDDEN(int) virtioCoreR3VirtqAvailBufGet(PPDMDEVINS pDevIns, PVIRTIOCORE pVirtio, uint16_t uVirtq,
|
||||
uint16_t uHeadIdx, PVIRTQBUF pVirtqBuf)
|
||||
|
@ -940,20 +1089,39 @@ DECLHIDDEN(int) virtioCoreR3VirtqAvailBufGet(PPDMDEVINS pDevIns, PVIRTIOCORE pVi
|
|||
* linked descriptors exceeding the total number of descriptors in the ring (see @bugref{8620}),
|
||||
* the following aborts I/O if breach and employs a simple log throttling algorithm to notify.
|
||||
*/
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (cSegsIn + cSegsOut >= pVirtq->uQueueSize || ASMAtomicCmpXchgBool(&pVirtio->fTestRecovery, false, true))
|
||||
{
|
||||
static volatile uint32_t s_cMessages = 0;
|
||||
if (ASMAtomicIncU32(&s_cMessages) <= 10)
|
||||
{
|
||||
LogRel(("Too many linked descriptors; check if the guest arranges descriptors in a loop "
|
||||
"(cSegsIn=%u cSegsOut=%u uQueueSize=%u uDescIdx=%u uHeadIdx=%u uAvailIdxShadow=%u queue=%s).\n",
|
||||
cSegsIn, cSegsOut, pVirtq->uQueueSize, uDescIdx, pVirtqBuf->uHeadIdx, pVirtq->uAvailIdxShadow, pVirtq->szName));
|
||||
virtioCoreDumpTraceBufToRelLog(pVirtio->hTraceBuf);
|
||||
dbgVirtioDump(pDevIns);
|
||||
}
|
||||
/* Disable the queue to prevent its operation until it is re-initialized. */
|
||||
pVirtq->uEnable = false;
|
||||
return VERR_INVALID_STATE;
|
||||
}
|
||||
#else /* !VIRTIO_REL_INFO_DUMP */
|
||||
if (cSegsIn + cSegsOut >= pVirtq->uQueueSize)
|
||||
{
|
||||
static volatile uint32_t s_cMessages = 0;
|
||||
static volatile uint32_t s_cThreshold = 1;
|
||||
if (ASMAtomicIncU32(&s_cMessages) == ASMAtomicReadU32(&s_cThreshold))
|
||||
{
|
||||
LogRelMax(64, ("Too many linked descriptors; check if the guest arranges descriptors in a loop (cSegsIn=%u cSegsOut=%u uQueueSize=%u uDescIdx=%u queue=%s).\n",
|
||||
cSegsIn, cSegsOut, pVirtq->uQueueSize, uDescIdx, pVirtq->szName));
|
||||
LogRelMax(64, ("Too many linked descriptors; check if the guest arranges descriptors in a loop "
|
||||
"(cSegsIn=%u cSegsOut=%u uQueueSize=%u uDescIdx=%u uHeadIdx=%u uAvailIdxShadow=%u queue=%s).\n",
|
||||
cSegsIn, cSegsOut, pVirtq->uQueueSize, uDescIdx, pVirtqBuf->uHeadIdx, pVirtq->uAvailIdxShadow, pVirtq->szName));
|
||||
if (ASMAtomicReadU32(&s_cMessages) != 1)
|
||||
LogRelMax(64, ("(the above error has occured %u times so far)\n", ASMAtomicReadU32(&s_cMessages)));
|
||||
ASMAtomicWriteU32(&s_cThreshold, ASMAtomicReadU32(&s_cThreshold) * 10);
|
||||
}
|
||||
break;
|
||||
}
|
||||
#endif /* !VIRTIO_REL_INFO_DUMP */
|
||||
/* Check if the limit has been reached for input chain (see section 2.4.4.1 of virtio 1.0 spec). */
|
||||
if (cSegsIn >= RT_ELEMENTS(pVirtqBuf->aSegsIn))
|
||||
{
|
||||
|
@ -1041,6 +1209,9 @@ DECLHIDDEN(int) virtioCoreR3VirtqAvailBufGet(PPDMDEVINS pDevIns, PVIRTIOCORE pVi
|
|||
if (pVirtio->uDriverFeatures & VIRTIO_F_EVENT_IDX)
|
||||
virtioWriteUsedAvailEvent(pDevIns,pVirtio, pVirtq, pVirtq->uAvailIdxShadow + 1);
|
||||
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
virtioCoreTraceEvent(pVirtio, pVirtq, fRemove ? VIRTIO_CORE_EVENT_AVAIL_GET : VIRTIO_CORE_EVENT_AVAIL_PEEK, pVirtq->uAvailIdxShadow, uHeadIdx);
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
if (fRemove)
|
||||
pVirtq->uAvailIdxShadow++;
|
||||
|
||||
|
@ -1115,6 +1286,9 @@ DECLHIDDEN(int) virtioCoreR3VirtqUsedBufPut(PPDMDEVINS pDevIns, PVIRTIOCORE pVir
|
|||
* @todo r=aeichner: The increment of the shadow index is not atomic but this code can be called
|
||||
* concurrently!!
|
||||
*/
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
virtioCoreTraceEvent(pVirtio, pVirtq, VIRTIO_CORE_EVENT_USED_PUT, pVirtq->uUsedIdxShadow, pVirtqBuf->uHeadIdx);
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
virtioWriteUsedElem(pDevIns, pVirtio, pVirtq, pVirtq->uUsedIdxShadow++, pVirtqBuf->uHeadIdx, (uint32_t)cbTotal);
|
||||
|
||||
#ifdef LOG_ENABLED
|
||||
|
@ -1195,6 +1369,9 @@ DECLHIDDEN(int) virtioCoreR3VirtqUsedBufPut(PPDMDEVINS pDevIns, PVIRTIOCORE pVir
|
|||
Log6Func((" Enqueue desc chain head idx %u to %s used ring @ %u\n", pVirtqBuf->uHeadIdx,
|
||||
VIRTQNAME(pVirtio, uVirtq), pVirtq->uUsedIdxShadow));
|
||||
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
virtioCoreTraceEvent(pVirtio, pVirtq, VIRTIO_CORE_EVENT_USED_PUT, pVirtq->uUsedIdxShadow, pVirtqBuf->uHeadIdx);
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
virtioWriteUsedElem(pDevIns, pVirtio, pVirtq, pVirtq->uUsedIdxShadow++, pVirtqBuf->uHeadIdx, (uint32_t)cbEnqueue);
|
||||
|
||||
#ifdef LOG_ENABLED
|
||||
|
@ -1229,6 +1406,12 @@ DECLHIDDEN(int) virtioCoreVirtqUsedRingSync(PPDMDEVINS pDevIns, PVIRTIOCORE pVir
|
|||
Log6Func((" Sync %s used ring (%u -> idx)\n",
|
||||
pVirtq->szName, pVirtq->uUsedIdxShadow));
|
||||
|
||||
#ifdef IN_RING3
|
||||
// I believe virtioCoreVirtqUsedRingSync is only called from ring 3 in virtio-net
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
virtioCoreTraceEvent(pVirtio, pVirtq, VIRTIO_CORE_EVENT_USED_SYNC, pVirtq->uUsedIdxShadow, 0);
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
#endif /* IN_RING3 */
|
||||
virtioWriteUsedRingIdx(pDevIns, pVirtio, pVirtq, pVirtq->uUsedIdxShadow);
|
||||
virtioCoreNotifyGuestDriver(pDevIns, pVirtio, uVirtq);
|
||||
|
||||
|
@ -1331,6 +1514,11 @@ static void virtioCoreNotifyGuestDriver(PPDMDEVINS pDevIns, PVIRTIOCORE pVirtio,
|
|||
*/
|
||||
static int virtioNudgeGuest(PPDMDEVINS pDevIns, PVIRTIOCORE pVirtio, uint8_t uCause, uint16_t uMsixVector)
|
||||
{
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (ASMAtomicReadBool(&pVirtio->fRecovering))
|
||||
LogRel(("[%s] Raising%s interrupt, because of %s\n", pVirtio->szInstance, pVirtio->fMsiSupport ? " MSI" : "",
|
||||
uCause == VIRTIO_ISR_VIRTQ_INTERRUPT ? "added buffer" : "config change"));
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
if (uCause == VIRTIO_ISR_VIRTQ_INTERRUPT)
|
||||
Log6Func(("Reason for interrupt - buffer added to 'used' ring.\n"));
|
||||
else
|
||||
|
@ -1559,6 +1747,15 @@ static int virtioCommonCfgAccessed(PPDMDEVINS pDevIns, PVIRTIOCORE pVirtio, PVIR
|
|||
uint16_t uVirtq = pVirtio->uVirtqSelect;
|
||||
int rc = VINF_SUCCESS;
|
||||
uint64_t val;
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (ASMAtomicReadBool(&pVirtio->fRecovering))
|
||||
{
|
||||
if (fWrite)
|
||||
LogRel(("[%s] writes %u bytes @ cmn cfg + %u: %.*Rhxs\n", pVirtio->szInstance, cb, uOffsetOfAccess, cb, pv));
|
||||
else
|
||||
LogRel(("[%s] attempts to read %u bytes @ cmn cfg + %u\n", pVirtio->szInstance, cb, uOffsetOfAccess));
|
||||
}
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
if (VIRTIO_DEV_CONFIG_MATCH_MEMBER(uDeviceFeatures, VIRTIO_PCI_COMMON_CFG_T, uOffsetOfAccess))
|
||||
{
|
||||
if (fWrite) /* Guest WRITE pCommonCfg>uDeviceFeatures */
|
||||
|
@ -1724,6 +1921,10 @@ static int virtioCommonCfgAccessed(PPDMDEVINS pDevIns, PVIRTIOCORE pVirtio, PVIR
|
|||
fWrite ? "write" : "read ", uOffsetOfAccess, uOffsetOfAccess, cb));
|
||||
return fWrite ? VINF_SUCCESS : VINF_IOM_MMIO_UNUSED_00;
|
||||
}
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
if (ASMAtomicReadBool(&pVirtio->fRecovering) && !fWrite)
|
||||
LogRel(("[%s] read %u bytes @ cmn cfg + %u: %.*Rhxs\n", pVirtio->szInstance, cb, uOffsetOfAccess, cb, pv));
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
|
||||
#ifndef IN_RING3
|
||||
RT_NOREF(pDevIns, pVirtioCC);
|
||||
|
@ -2794,6 +2995,10 @@ DECLHIDDEN(void) virtioCoreR3VmStateChanged(PVIRTIOCORE pVirtio, VIRTIOVMSTATECH
|
|||
*/
|
||||
DECLHIDDEN(void) virtioCoreR3Term(PPDMDEVINS pDevIns, PVIRTIOCORE pVirtio, PVIRTIOCORECC pVirtioCC)
|
||||
{
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
RTTraceBufRelease(pVirtio->hTraceBuf);
|
||||
pVirtio->hTraceBuf = NIL_RTTRACEBUF;
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
if (pVirtioCC->pbPrevDevSpecificCfg)
|
||||
{
|
||||
RTMemFree(pVirtioCC->pbPrevDevSpecificCfg);
|
||||
|
@ -3150,6 +3355,15 @@ DECLHIDDEN(int) virtioCoreR3Init(PPDMDEVINS pDevIns, PVIRTIOCORE pVirtio, PVIRTI
|
|||
PDMDevHlpSTAMRegister(pDevIns, &pVirtio->StatWriteRC, STAMTYPE_PROFILE, "IO/WriteRC", STAMUNIT_TICKS_PER_CALL, "Profiling IO writes in RC");
|
||||
# endif /* VBOX_WITH_STATISTICS */
|
||||
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
pVirtio->fRecovering = false;
|
||||
pVirtio->fTestRecovery = false;
|
||||
size_t cbBlock = VIRTIO_CORE_TRACE_BUF_SIZE;
|
||||
rc = RTTraceBufCarve(&pVirtio->hTraceBuf, 0 /*cEntries*/, 0 /*cbEntry*/, 0 /*fFlags*/, pVirtio->aTraceBuf, &cbBlock);
|
||||
AssertRC(rc);
|
||||
if (RT_FAILURE(rc))
|
||||
LogRel(("virtioCore: Failed to initialize trace buffer (rc=%d)\n", rc));
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
return VINF_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
|
@ -36,6 +36,12 @@
|
|||
#include <iprt/sg.h>
|
||||
#include <iprt/types.h>
|
||||
|
||||
/*
|
||||
* WARNING! NEVER ENABLE IN PRODUCTION BUILDS!
|
||||
* Enables temporary printouts to release log in descriptor chain handling code.
|
||||
*/
|
||||
//#define VIRTIO_REL_INFO_DUMP 1
|
||||
|
||||
#ifdef LOG_ENABLED
|
||||
# define VIRTIO_HEX_DUMP(logLevel, pv, cb, base, title) \
|
||||
do { \
|
||||
|
@ -457,6 +463,13 @@ typedef struct VIRTIOCORE
|
|||
uint32_t fOfferLegacy; /**< Set at init call from dev-specific code */
|
||||
uint16_t uIrqMmio; /**< The interrupt number when Virtio-over-MMIO is used */
|
||||
uint8_t uDeviceType; /**< The implemented device type for Virtio-over-MMIO */
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
bool fRecovering;
|
||||
bool fTestRecovery;
|
||||
#define VIRTIO_CORE_TRACE_BUF_SIZE (256 /* header */ + 256 * 256 /* buffer*/)
|
||||
RTTRACEBUF hTraceBuf;
|
||||
uint8_t aTraceBuf[VIRTIO_CORE_TRACE_BUF_SIZE];
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
|
||||
/** @name The locations of the capability structures in PCI config space and the BAR.
|
||||
* @{ */
|
||||
|
@ -782,6 +795,19 @@ DECLHIDDEN(void) virtioCoreR3VirtqInfo(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, P
|
|||
*/
|
||||
DECLHIDDEN(uint16_t) virtioCoreVirtqAvailBufCount(PPDMDEVINS pDevIns, PVIRTIOCORE pVirtio, uint16_t uVirtqNbr);
|
||||
|
||||
#ifdef VIRTIO_REL_INFO_DUMP
|
||||
/**
|
||||
* Copies all available chains to used ring. Only indices of chains are copied, not the chains
|
||||
* themselves. This can only be done for virtionet TX ring to work around the issue in NetKVM
|
||||
* driver, which does not complete NBLs on device reset, if these NBLs are already in 'avail' ring.
|
||||
*
|
||||
* @param pDevIns The device instance.
|
||||
* @param pVirtio Pointer to the shared virtio state.
|
||||
* @param uVirtqNbr Virtqueue to modify.
|
||||
*/
|
||||
void virtioCorePutAllAvailBufsToUsedRing(PPDMDEVINS pDevIns, PVIRTIOCORE pVirtio, uint16_t uVirtqNbr);
|
||||
#endif /* VIRTIO_REL_INFO_DUMP */
|
||||
|
||||
/**
|
||||
* This function is identical to virtioCoreR3VirtqAvailBufGet(), *except* it doesn't consume
|
||||
* peeked buffer from avail ring of the virtq. The function *becomes* identical to the
|
||||
|
|
|
@ -121,7 +121,7 @@ static const RTSCRIPTLEXCFG s_LexCfg =
|
|||
/** pszDesc */
|
||||
"ARMv8 disassembler lexer",
|
||||
/** fFlags */
|
||||
RTSCRIPT_LEX_CFG_F_CASE_INSENSITIVE,
|
||||
RTSCRIPT_LEX_CFG_F_CASE_INSENSITIVE_LOWER,
|
||||
/** pszWhitespace */
|
||||
NULL,
|
||||
/** pszNewline */
|
||||
|
@ -173,7 +173,7 @@ static void testDisas(const char *pszSub, uint8_t const *pabInstrs, uintptr_t uE
|
|||
int rc = RTScriptLexCreateFromReader(&hLexSource, testDisasmLexerRead,
|
||||
NULL /*pfnDtor*/, &Rdr /*pvUser*/, cbSrc,
|
||||
NULL /*phStrCacheId*/, NULL /*phStrCacheStringLit*/,
|
||||
&s_LexCfg);
|
||||
NULL /*phStrCacheComments*/, &s_LexCfg);
|
||||
RTTESTI_CHECK_RC(rc, VINF_SUCCESS);
|
||||
if (RT_FAILURE(rc))
|
||||
return; /* Can't do our work if this fails. */
|
||||
|
@ -227,7 +227,8 @@ static void testDisas(const char *pszSub, uint8_t const *pabInstrs, uintptr_t uE
|
|||
/* Build the lexer and compare that it semantically is equal to the source input. */
|
||||
RTSCRIPTLEX hLexDis = NULL;
|
||||
rc = RTScriptLexCreateFromString(&hLexDis, szOutput, NULL /*phStrCacheId*/,
|
||||
NULL /*phStrCacheStringLit*/, &s_LexCfg);
|
||||
NULL /*phStrCacheStringLit*/, NULL /*phStrCacheComments*/,
|
||||
&s_LexCfg);
|
||||
RTTESTI_CHECK_RC(rc, VINF_SUCCESS);
|
||||
if (RT_SUCCESS(rc))
|
||||
{
|
||||
|
@ -484,13 +485,14 @@ static void testDisasComplianceAgaistCapstone(void)
|
|||
rc = RTScriptLexCreateFromReader(&hLexCapstone, testDisasmLexerRead,
|
||||
NULL /*pfnDtor*/, &Rdr /*pvUser*/, 0 /*cchBuf*/,
|
||||
NULL /*phStrCacheId*/, NULL /*phStrCacheStringLit*/,
|
||||
&s_LexCfg);
|
||||
NULL /*phStrCacheComments*/, &s_LexCfg);
|
||||
RTTESTI_CHECK_RC(rc, VINF_SUCCESS);
|
||||
|
||||
/* Build the lexer and compare that it semantically is equal to the source input. */
|
||||
RTSCRIPTLEX hLexDis = NULL;
|
||||
rc = RTScriptLexCreateFromString(&hLexDis, szOutput, NULL /*phStrCacheId*/,
|
||||
NULL /*phStrCacheStringLit*/, &s_LexCfg);
|
||||
NULL /*phStrCacheStringLit*/, NULL /*phStrCacheComments*/,
|
||||
&s_LexCfg);
|
||||
RTTESTI_CHECK_RC(rc, VINF_SUCCESS);
|
||||
if (RT_SUCCESS(rc))
|
||||
{
|
||||
|
|
|
@ -424,10 +424,6 @@ void UIVisoContentBrowser::createVisoEntry(const QString &strPath, const QString
|
|||
/* static */
|
||||
QString UIVisoContentBrowser::sanitizePath(const QString &strOriginal)
|
||||
{
|
||||
/* Look for white space and double quote: */
|
||||
QRegularExpression regex("[\\s\"]");
|
||||
if (!regex.match(strOriginal).hasMatch())
|
||||
return strOriginal;
|
||||
QString strNew(strOriginal);
|
||||
strNew.replace("\"", "\\\"");
|
||||
strNew.append("\"");
|
||||
|
@ -442,8 +438,8 @@ QStringList UIVisoContentBrowser::entryList()
|
|||
{
|
||||
if (iterator.value().isEmpty())
|
||||
continue;
|
||||
QString strEntry = QString("%1=%2").arg(sanitizePath(iterator.key())).arg(sanitizePath(iterator.value()));
|
||||
entryList << strEntry;
|
||||
QString strEntry = QString("%1=%2").arg(iterator.key()).arg(iterator.value());
|
||||
entryList << sanitizePath(strEntry);
|
||||
}
|
||||
return entryList;
|
||||
}
|
||||
|
@ -897,43 +893,51 @@ void UIVisoContentBrowser::parseVisoFileContent(const QString &strFileName)
|
|||
return;
|
||||
QTextStream stream(&file);
|
||||
QString strFileContent = stream.readAll();
|
||||
strFileContent.replace(' ', '\n');
|
||||
QMap<QString, QString> fileEntries;
|
||||
strFileContent.replace('\'', '\"');
|
||||
bool fInsideQuotes = false;
|
||||
/* Replace spaces with new lines expect those within quotes: */
|
||||
for (int i = 0; i < strFileContent.length(); ++i)
|
||||
{
|
||||
if (strFileContent[i] == '\"')
|
||||
fInsideQuotes = !fInsideQuotes;
|
||||
if (strFileContent[i] == ' ' && !fInsideQuotes)
|
||||
strFileContent[i] = '\n';
|
||||
}
|
||||
QStringList removedEntries;
|
||||
foreach (const QString &strPart, strFileContent.split("\n", Qt::SkipEmptyParts))
|
||||
QStringList lines = strFileContent.split('\n', Qt::SkipEmptyParts);
|
||||
for (int i = 0; i < lines.size(); ++i)
|
||||
{
|
||||
const QStringList fileEntry = strPart.split("=", Qt::SkipEmptyParts);
|
||||
/* We currently do not support different on-ISO names for different namespaces. */
|
||||
if (strPart.startsWith("/") && strPart.count('=') <= 1)
|
||||
const QString &strLine = lines[i];
|
||||
if (strLine.count('=') == 1)
|
||||
{
|
||||
if (fileEntry.size() == 1)
|
||||
/* file-mode and dir-mode. something for later to deal with: */
|
||||
if (strLine.contains("file-mode") || strLine.contains("dir-mode"))
|
||||
continue;
|
||||
QStringList lineParts = strLine.split('=');
|
||||
if (lineParts.size() == 2)
|
||||
{
|
||||
QFileInfo fileInfo(fileEntry[0]);
|
||||
if (fileInfo.exists())
|
||||
if (lineParts[1].contains("must-remove"))
|
||||
{
|
||||
QString isoName = QString("/%1").arg(fileInfo.fileName());
|
||||
fileEntries[isoName] = fileEntry[0];
|
||||
}
|
||||
}
|
||||
else if (fileEntry.size() == 2)
|
||||
{
|
||||
if (QFileInfo(fileEntry[1]).exists())
|
||||
fileEntries[fileEntry[0]] = fileEntry[1];
|
||||
else if (fileEntry[1] == cRemoveText)
|
||||
removedEntries.append(fileEntry[0]);
|
||||
|
||||
}
|
||||
removedEntries << lineParts[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
if(fileEntry.size() == 2 && fileEntry[0].contains("import-iso", Qt::CaseInsensitive))
|
||||
lineParts[0].remove('\"');
|
||||
lineParts[1].remove('\"');
|
||||
/* Check if target file structure exists: */
|
||||
if (QFileInfo(lineParts[1]).exists())
|
||||
fileEntries[lineParts[0]] = lineParts[1];
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (strLine.contains("import-iso") && i + 1 < lines.size())
|
||||
{
|
||||
if (QFileInfo(fileEntry[1]).exists())
|
||||
importISOContentToViso(fileEntry[1]);
|
||||
if (QFileInfo(lines[i+1]).exists())
|
||||
importISOContentToViso(lines[i+1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
file.close();
|
||||
createLoadedFileEntries(fileEntries);
|
||||
processRemovedEntries(removedEntries);
|
||||
}
|
||||
|
@ -974,7 +978,7 @@ void UIVisoContentBrowser::createLoadedFileEntries(const QMap<QString, QString>
|
|||
pItem->setData(strLocalPath, UIFileSystemModelData_LocalPath);
|
||||
/* Pre-scan and populate the directory since we may need its content while processing removed items: */
|
||||
if (enmObjectType == KFsObjType_Directory)
|
||||
scanHostDirectory(pItem, true /* recursive */);
|
||||
scanHostDirectory(pItem, false /* recursive */);
|
||||
}
|
||||
if (i == pathList.size() - 1)
|
||||
createVisoEntry(pItem->path(), pItem->data(UIFileSystemModelData_LocalPath).toString(), false);
|
||||
|
@ -1067,13 +1071,17 @@ void UIVisoContentBrowser::scanHostDirectory(UIFileSystemItem *directoryItem, bo
|
|||
|
||||
void UIVisoContentBrowser::updateStartItemName()
|
||||
{
|
||||
if (!rootItem() || !rootItem()->child(0))
|
||||
UIFileSystemItem *pRoot = rootItem();
|
||||
if (!pRoot)
|
||||
return;
|
||||
UIFileSystemItem *pChild = pRoot->child(0);
|
||||
if (!pChild)
|
||||
return;
|
||||
const QString strName(QDir::toNativeSeparators("/"));
|
||||
|
||||
rootItem()->child(0)->setData(strName, UIFileSystemModelData_Name);
|
||||
pChild->setData(strName, UIFileSystemModelData_Name);
|
||||
/* If the table root index is the start item then we have to update the location selector text here: */
|
||||
// if (m_pProxyModel->mapToSource(m_pTableView->rootIndex()).internalPointer() == rootItem()->child(0))
|
||||
// if (m_pProxyModel->mapToSource(m_pTableView->rootIndex()).internalPointer() == pChild)
|
||||
// updateLocationSelectorText(strName);
|
||||
m_pProxyModel->invalidate();
|
||||
}
|
||||
|
@ -1137,10 +1145,14 @@ void UIVisoContentBrowser::sltTableSelectionChanged(const QItemSelection &select
|
|||
|
||||
void UIVisoContentBrowser::sltResetAction()
|
||||
{
|
||||
if (!rootItem() || !rootItem()->child(0))
|
||||
UIFileSystemItem *pRoot = rootItem();
|
||||
if (!pRoot)
|
||||
return;
|
||||
UIFileSystemItem *pChild = pRoot->child(0);
|
||||
if (!pChild)
|
||||
return;
|
||||
goToStart();
|
||||
rootItem()->child(0)->removeChildren();
|
||||
pChild->removeChildren();
|
||||
m_entryMap.clear();
|
||||
if (m_pProxyModel)
|
||||
m_pProxyModel->invalidate();
|
||||
|
|
|
@ -62,6 +62,7 @@ signals:
|
|||
|
||||
void sigTableSelectionChanged(bool fIsSelectionEmpty);
|
||||
void sigISOContentImportedOrRemoved(bool fImportedr);
|
||||
void sigVolumeIdParsed(const QString &strVoludId);
|
||||
|
||||
public:
|
||||
|
||||
|
|
|
@ -374,7 +374,7 @@ void UIVisoCreatorWidget::setVisoFilePath(const QString& strPath)
|
|||
{
|
||||
if (m_strVisoFilePath == strPath)
|
||||
return;
|
||||
m_strVisoFilePath = strPath;
|
||||
m_strVisoFilePath = QDir::fromNativeSeparators(QDir::cleanPath(strPath));
|
||||
emit sigVisoFilePathChanged(m_strVisoFilePath);
|
||||
}
|
||||
|
||||
|
@ -439,7 +439,11 @@ void UIVisoCreatorWidget::sltOpenAction()
|
|||
QString strFileName = QIFileDialog::getOpenFileName(UIMediumTools::defaultFolderPathForType(UIMediumDeviceType_DVD),
|
||||
"VISO files (*.viso)", pActive, UIVisoCreatorWidget::tr("Select a VISO file to load"));
|
||||
if (!strFileName.isEmpty() && m_pVISOContentBrowser)
|
||||
{
|
||||
setVisoFilePath(QFileInfo(strFileName).absolutePath());
|
||||
setVisoName(QFileInfo(strFileName).baseName());
|
||||
m_pVISOContentBrowser->parseVisoFileContent(strFileName);
|
||||
}
|
||||
}
|
||||
|
||||
void UIVisoCreatorWidget::sltSaveAsAction()
|
||||
|
@ -485,6 +489,11 @@ void UIVisoCreatorWidget::sltISOContentImportedOrRemoved(bool fImported)
|
|||
m_pRemoveISOAction->setEnabled(fImported);
|
||||
}
|
||||
|
||||
void UIVisoCreatorWidget::sltVisoVolumeIdParsed(const QString &strVolumeId)
|
||||
{
|
||||
setVisoName(strVolumeId);
|
||||
}
|
||||
|
||||
void UIVisoCreatorWidget::sltSettingsChanged()
|
||||
{
|
||||
AssertReturnVoid(m_pSettingsWidget);
|
||||
|
@ -591,6 +600,8 @@ void UIVisoCreatorWidget::prepareConnections()
|
|||
this, &UIVisoCreatorWidget::sltContentBrowserTableSelectionChanged);
|
||||
connect(m_pVISOContentBrowser, &UIVisoContentBrowser::sigISOContentImportedOrRemoved,
|
||||
this, &UIVisoCreatorWidget::sltISOContentImportedOrRemoved);
|
||||
connect(m_pVISOContentBrowser, &UIVisoContentBrowser::sigVolumeIdParsed,
|
||||
this, &UIVisoCreatorWidget::sltVisoVolumeIdParsed);
|
||||
}
|
||||
|
||||
if (m_pActionPreferences)
|
||||
|
@ -987,7 +998,7 @@ bool UIVisoCreatorDialog::saveVISOFile()
|
|||
stream << QString("%1 %2").arg("--iprt-iso-maker-file-marker-bourne-sh").arg(QUuid::createUuid().toString()) << "\n";
|
||||
stream<< "--volume-id=" << UIVisoContentBrowser::sanitizePath(strVisoName) << "\n";
|
||||
if (!strImportedISOPath.isEmpty())
|
||||
stream << "--import-iso=" << strImportedISOPath << "\n";
|
||||
stream << "--import-iso " << strImportedISOPath << "\n";
|
||||
stream << VisoEntryList.join("\n");
|
||||
if (!customOptions().isEmpty())
|
||||
{
|
||||
|
|
|
@ -134,6 +134,7 @@ private slots:
|
|||
void sltISOContentImportedOrRemoved(bool fImported);
|
||||
void sltSettingsChanged();
|
||||
void sltPanelContainerHidden();
|
||||
void sltVisoVolumeIdParsed(const QString &strVolumeId);
|
||||
|
||||
private:
|
||||
|
||||
|
|
|
@ -643,6 +643,9 @@ bool UIMachineSettingsDisplay::validate(QList<UIValidationMessage> &messages)
|
|||
m_f3DAccelerationSupported = graphicsControllerTypeCurrent() == KGraphicsControllerType_VBoxSVGA
|
||||
? UIGuestOSTypeHelpers::isWddmCompatibleOsType(m_strGuestOSTypeId)
|
||||
: false;
|
||||
/* Special handling for MacOS guests, 3D is NOT available at all: */
|
||||
else if (m_strGuestOSTypeId.startsWith("MacOS"))
|
||||
m_f3DAccelerationSupported = false;
|
||||
/* For the rest of guest OS types 3D is available for VMSVGA only: */
|
||||
else
|
||||
m_f3DAccelerationSupported = graphicsControllerTypeCurrent() == KGraphicsControllerType_VMSVGA;
|
||||
|
|
|
@ -1744,10 +1744,17 @@ SUPR0DECL(bool) SUPR0FpuBegin(bool fCtxHook)
|
|||
*/
|
||||
Assert(fCtxHook || !RTThreadPreemptIsEnabled(NIL_RTTHREAD));
|
||||
kernel_fpu_begin();
|
||||
# if 0 /* Always do it for now for better test coverage. */
|
||||
# if RTLNX_VER_MIN(6,15,0) /* fpregs_unlock may do more than just preempt_enable, so only when necessary now. */
|
||||
if (fCtxHook)
|
||||
# endif
|
||||
{
|
||||
# if RTLNX_VER_MIN(6,15,0)
|
||||
if (!irqs_disabled())
|
||||
fpregs_unlock();
|
||||
# else
|
||||
preempt_enable();
|
||||
# endif
|
||||
}
|
||||
return false; /** @todo Not sure if we have license to use any extended state, or
|
||||
* if we're limited to the SSE & x87 FPU. If it's the former,
|
||||
* we should return @a true and the caller can skip
|
||||
|
@ -1765,10 +1772,17 @@ SUPR0DECL(void) SUPR0FpuEnd(bool fCtxHook)
|
|||
#if RTLNX_VER_MIN(4,19,0)
|
||||
/* HACK ALERT! See SUPR0FpuBegin for an explanation of this. */
|
||||
Assert(!RTThreadPreemptIsEnabled(NIL_RTTHREAD));
|
||||
# if 0 /* Always do it for now for better test coverage. */
|
||||
# if RTLNX_VER_MIN(6,15,0) /* fpregs_unlock may do more than just preempt_enable, so only when necessary now. */
|
||||
if (fCtxHook)
|
||||
# endif
|
||||
{
|
||||
# if RTLNX_VER_MIN(6,15,0)
|
||||
if (!irqs_disabled())
|
||||
fpregs_lock();
|
||||
# else
|
||||
preempt_disable();
|
||||
# endif
|
||||
}
|
||||
kernel_fpu_end();
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ Provider=%ORACLE%
|
|||
;edit-DriverVer=08/26/2008,2.00.0000
|
||||
DriverPackageType=KernelService
|
||||
;cat CatalogFile=VBoxSup.cat
|
||||
;PnpLockdown=1
|
||||
PnpLockdown=1
|
||||
|
||||
[DestinationDirs]
|
||||
DefaultDestDir = 12
|
||||
|
|
|
@ -43,6 +43,7 @@ Class = Net
|
|||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %ORACLE%
|
||||
;edit-DriverVer=10/23/2014,1.0.1.0
|
||||
PnpLockdown=1
|
||||
|
||||
|
||||
[Manufacturer]
|
||||
|
|
|
@ -41,6 +41,7 @@ Class = NetService
|
|||
ClassGUID = {4D36E974-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %ORACLE%
|
||||
;edit-DriverVer=10/23/2014,1.0.1.0
|
||||
PnpLockdown=1
|
||||
|
||||
|
||||
[Manufacturer]
|
||||
|
|
|
@ -41,7 +41,7 @@ ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
|
|||
provider=%ORACLE%
|
||||
;edit-DriverVer=08/26/2008,2.00.0000
|
||||
;cat CatalogFile=VBoxUSB.cat
|
||||
;PnpLockdown=1
|
||||
PnpLockdown=1
|
||||
|
||||
[SourceDisksNames]
|
||||
1=%VBoxUSB_DiskDesc%,,,
|
||||
|
@ -50,7 +50,7 @@ provider=%ORACLE%
|
|||
VBoxUSB.sys = 1
|
||||
|
||||
[DestinationDirs]
|
||||
DefaultDestDir = 10,System32\Drivers
|
||||
DefaultDestDir = 12
|
||||
|
||||
[Manufacturer]
|
||||
%ORACLE%=VBoxUSB@COMMA-NT-ARCH@
|
||||
|
|
|
@ -42,7 +42,7 @@ Provider=%ORACLE%
|
|||
;edit-DriverVer=08/26/2008,2.00.0000
|
||||
DriverPackageType=KernelService
|
||||
;cat CatalogFile=VBoxUSBMon.cat
|
||||
;PnpLockdown=1
|
||||
PnpLockdown=1
|
||||
|
||||
[SourceDisksNames]
|
||||
1=%VBoxUSBMon_DiskDesc%,
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* $Id: fuse-calls.h $ */
|
||||
/** @file
|
||||
* Stubs for dynamically loading libfuse/libosxfuse and the symbols which are needed by
|
||||
* VirtualBox.
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
/* $Id: fuse.cpp $ */
|
||||
/** @file
|
||||
*
|
||||
* Module to dynamically load libfuse and load all symbols
|
||||
* Module to dynamically load libfuse/libosxfuse and load all symbols
|
||||
* which are needed by vboximg-mount.
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* $Id: fuse.h $ */
|
||||
/** @file
|
||||
* Module to dynamically load libfuse/libosxfuse and load all symbols which are needed by
|
||||
* vboximg-mount.
|
||||
* Module to dynamically load libfuse/libosxfuse and load all symbols
|
||||
* which are needed by vboximg-mount.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
/* $Id: vboximgCrypto.cpp $ */
|
||||
|
||||
/** @file
|
||||
* vboximgCypto.cpp - Disk Image Flattening FUSE Program.
|
||||
*/
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
/* $Id: vboximgCrypto.h $ */
|
||||
|
||||
/** @file
|
||||
* vboximgCrypto.h
|
||||
*/
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
/* $Id: vboximgMedia.h $ */
|
||||
|
||||
/** @file
|
||||
* vboximgMedia.h
|
||||
*/
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
|
||||
/* $Id: vboximgOpts.h $ */
|
||||
|
||||
/** @file
|
||||
* vboximgOpts.h
|
||||
*/
|
||||
|
|
|
@ -115,6 +115,7 @@ VBOXMOD_EXT := ko
|
|||
|
||||
# build defs
|
||||
EXTRA_CFLAGS += $(VBOXMOD_CFLAGS) $(addprefix -I,$(KERN_INCL) $(VBOXMOD_INCL)) $(VBOXMOD_0_KFLAGS) $(KDEBUG)
|
||||
ccflags-y += $(EXTRA_CFLAGS)
|
||||
$(VBOXMOD_0_TARGET)-y := $(VBOXMOD_OBJS)
|
||||
obj-m += $(VBOXMOD_0_TARGET).o
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ fedora38 = FEDORA_38
|
|||
fedora37 = FEDORA_37
|
||||
fedora36 = FEDORA_36
|
||||
fedora35 = FEDORA_35
|
||||
el10 = EL_10
|
||||
el9 = EL_9
|
||||
el8 = EL_8
|
||||
el7 = EL_7
|
||||
|
|
|
@ -136,29 +136,34 @@ mv virtualbox.xml $RPM_BUILD_ROOT/usr/share/mime/packages
|
|||
old_path="$PATH"
|
||||
PATH=${PATH#/opt/rh/devtoolset-4/root/usr/bin:}
|
||||
%endif
|
||||
%if "%BUILDREL%" == "openSUSE156"
|
||||
# For openSUSE156 we need GCC 10+ to build Qt 6.8 related code. However,
|
||||
# kernel modules need be built with older GCC.
|
||||
VBOX_EXTRA_FLAGS="CC=gcc-7"
|
||||
%endif
|
||||
for d in /lib/modules/*; do
|
||||
if [ -L $d/build ]; then
|
||||
rm -f /tmp/vboxdrv-Module.symvers
|
||||
./src/vboxhost/build_in_tmp \
|
||||
--save-module-symvers /tmp/vboxdrv-Module.symvers \
|
||||
--module-source `pwd`/src/vboxhost/vboxdrv \
|
||||
KBUILD_VERBOSE= KERN_VER=$(basename $d) INSTALL_MODULE_PATH=$RPM_BUILD_ROOT -j4 \
|
||||
KBUILD_VERBOSE= KERN_VER=$(basename $d) INSTALL_MODULE_PATH=$RPM_BUILD_ROOT $VBOX_EXTRA_FLAGS -j4 \
|
||||
%INSTMOD%
|
||||
./src/vboxhost/build_in_tmp \
|
||||
--use-module-symvers /tmp/vboxdrv-Module.symvers \
|
||||
--module-source `pwd`/src/vboxhost/vboxnetflt \
|
||||
KBUILD_VERBOSE= KERN_VER=$(basename $d) INSTALL_MODULE_PATH=$RPM_BUILD_ROOT -j4 \
|
||||
KBUILD_VERBOSE= KERN_VER=$(basename $d) INSTALL_MODULE_PATH=$RPM_BUILD_ROOT $VBOX_EXTRA_FLAGS -j4 \
|
||||
%INSTMOD%
|
||||
./src/vboxhost/build_in_tmp \
|
||||
--use-module-symvers /tmp/vboxdrv-Module.symvers \
|
||||
--module-source `pwd`/src/vboxhost/vboxnetadp \
|
||||
KBUILD_VERBOSE= KERN_VER=$(basename $d) INSTALL_MODULE_PATH=$RPM_BUILD_ROOT -j4 \
|
||||
KBUILD_VERBOSE= KERN_VER=$(basename $d) INSTALL_MODULE_PATH=$RPM_BUILD_ROOT $VBOX_EXTRA_FLAGS -j4 \
|
||||
%INSTMOD%
|
||||
if [ -e `pwd`/src/vboxhost/vboxpci ]; then
|
||||
./src/vboxhost/build_in_tmp \
|
||||
--use-module-symvers /tmp/vboxdrv-Module.symvers \
|
||||
--module-source `pwd`/src/vboxhost/vboxpci \
|
||||
KBUILD_VERBOSE= KERN_VER=$(basename $d) INSTALL_MODULE_PATH=$RPM_BUILD_ROOT -j4 \
|
||||
KBUILD_VERBOSE= KERN_VER=$(basename $d) INSTALL_MODULE_PATH=$RPM_BUILD_ROOT $VBOX_EXTRA_FLAGS -j4 \
|
||||
%INSTMOD%
|
||||
fi
|
||||
fi
|
||||
|
@ -168,6 +173,9 @@ done
|
|||
PATH="$old_path"
|
||||
unset old_path
|
||||
%endif
|
||||
%if "%BUILDREL%" == "openSUSE156"
|
||||
unset VBOX_EXTRA_FLAGS
|
||||
%endif
|
||||
rm -r src
|
||||
%endif
|
||||
for i in additions/VBoxGuestAdditions.iso; do
|
||||
|
|
|
@ -124,10 +124,10 @@ ifneq ($(MAKECMDGOALS),clean)
|
|||
$(error Cannot detect package distribution (rpmrel=$(rpmrel)))
|
||||
endif
|
||||
|
||||
ifeq ($(filter-out el5 el6 el7 el8 el9 fedora18 fedora19 fedora20 fedora21 fedora22 fedora24 fedora25 fedora26 fedora29 fedora31 fedora32 fedora33 fedora35 fedora36 fedora40,$(rpmrel)),)
|
||||
ifeq ($(filter-out el5 el6 el7 el8 el9 el10 fedora18 fedora19 fedora20 fedora21 fedora22 fedora24 fedora25 fedora26 fedora29 fedora31 fedora32 fedora33 fedora35 fedora36 fedora40,$(rpmrel)),)
|
||||
rpmspec := rpm_redhat
|
||||
endif
|
||||
ifeq ($(filter-out openSUSE110 openSUSE111 openSUSE112 openSUSE113 openSUSE114 openSUSE123 openSUSE131 openSUSE132 openSUSE150 openSUSE153 openSUSETW,$(rpmrel)),)
|
||||
ifeq ($(filter-out openSUSE110 openSUSE111 openSUSE112 openSUSE113 openSUSE114 openSUSE123 openSUSE131 openSUSE132 openSUSE150 openSUSE153 openSUSE156 openSUSETW,$(rpmrel)),)
|
||||
rpmspec := rpm_suse
|
||||
endif
|
||||
ifeq ($(rpmspec),)
|
||||
|
@ -182,7 +182,7 @@ cfg_flags := $(if $(NOQT),--disable-qt,) \
|
|||
$(if $(NOWINE),,--setup-wine) \
|
||||
$(if $(VNC),--enable-vnc,) \
|
||||
$(if $(PATH_OUT_BASE),--out-base-dir=$(PATH_OUT_BASE),) \
|
||||
--disable-extpack
|
||||
--disable-extpack --disable-vmmraw --build-libssl --disable-java
|
||||
|
||||
bld_flags := LOCALCFG=$(instlin)/rpm/LocalConfig.kmk \
|
||||
PATH_OUT=$(builddir) \
|
||||
|
|
|
@ -100,9 +100,10 @@ fi
|
|||
|
||||
KERN_VER=`uname -r`
|
||||
|
||||
# Prepend PATH for building UEK7 on OL8 distribution.
|
||||
# Prepend PATH for building UEK on OL8/9 distributions.
|
||||
case "$KERN_VER" in
|
||||
5.15.0-*.el8uek*) PATH="/opt/rh/gcc-toolset-11/root/usr/bin:$PATH";;
|
||||
6.12.0-*.el9uek*)PATH="/opt/rh/gcc-toolset-14/root/usr/bin:$PATH";;
|
||||
esac
|
||||
|
||||
if test -e "${MODULE_SRC}/vboxpci"; then
|
||||
|
|
|
@ -102,9 +102,10 @@ checkdep_ips_python()
|
|||
# python 2.7: S11 FCS -> S11.4 SRU56 [removed in S11.4 SRU57]
|
||||
# python 3.4: S11.3 FCS -> S11.4 SRU26 [removed in S11.4 SRU27]
|
||||
# python 3.5: S11.4 FCS -> S11.4 SRU29 [removed in S11.4 SRU30]
|
||||
# python 3.7: S11.4 SRU4 -> TBD
|
||||
# python 3.7: S11.4 SRU4 -> S11.4 SRU71 [removed in S11.4 SRU72]
|
||||
# python 3.9: S11.4 SRU30 -> TBD
|
||||
# python 3.11: S11.4 SRU54 -> TBD
|
||||
# python 3.13: S11.4 SRU78 -> TBD
|
||||
if test "$UPDATE" -lt 3 || test "$UPDATE" -gt 4; then # S11 FCS - S11.2 SRU15 or anything before S11 FCS
|
||||
PKG_MISSING_IPS="$PKG_MISSING_IPS runtime/python-26 or runtime/python-27"
|
||||
elif test "$UPDATE" -eq 3 && test "$SRU" -le 19; then # S11.3 FCS - S11.3 SRU19
|
||||
|
@ -121,10 +122,12 @@ checkdep_ips_python()
|
|||
PKG_MISSING_IPS="$PKG_MISSING_IPS runtime/python-27 or runtime/python-37 or runtime/python-39"
|
||||
elif test "$UPDATE" -eq 4 && test "$SRU" -le 56; then # S11.4 SRU54 - S11.4 SRU56
|
||||
PKG_MISSING_IPS="$PKG_MISSING_IPS runtime/python-27 or runtime/python-37 or runtime/python-39 or runtime/python-311"
|
||||
elif test "$UPDATE" -eq 4 && test "$SRU" -gt 56; then # S11.4 SRU57 - S11.4 SRU<latest>
|
||||
elif test "$UPDATE" -eq 4 && test "$SRU" -le 71; then # S11.4 SRU57 - S11.4 SRU71
|
||||
PKG_MISSING_IPS="$PKG_MISSING_IPS runtime/python-37 or runtime/python-39 or runtime/python-311"
|
||||
elif test "$UPDATE" -eq 4 && test "$SRU" -gt 71; then # S11.4 SRU72 - S11.4 SRU<latest>
|
||||
PKG_MISSING_IPS="$PKG_MISSING_IPS runtime/python-39 or runtime/python-311 or runtime/python-313"
|
||||
else # Fall through just in case.
|
||||
PKG_MISSING_IPS="$PKG_MISSING_IPS runtime/python-37 or runtime/python-39 or runtime/python-311"
|
||||
PKG_MISSING_IPS="$PKG_MISSING_IPS runtime/python-39 or runtime/python-311 or runtime/python-313"
|
||||
fi
|
||||
|
||||
return 1
|
||||
|
@ -239,7 +242,7 @@ if test -x "$BIN_PKG"; then
|
|||
checkdep_ips "x11/library/mesa"
|
||||
checkdep_ips "x11/library/toolkit/libxt"
|
||||
checkdep_ips "x11/library/xcb-util"
|
||||
checkdep_ips_python "runtime/python-26" "runtime/python-27" "runtime/python-34" "runtime/python-35" "runtime/python-37" "runtime/python-39" "runtime/python-311"
|
||||
checkdep_ips_python "runtime/python-26" "runtime/python-27" "runtime/python-34" "runtime/python-35" "runtime/python-37" "runtime/python-39" "runtime/python-311" "runtime/python-313"
|
||||
checkdep_ips_either "system/library/gcc/gcc-c++-runtime" "system/library/gcc/gcc-c++-runtime-9"
|
||||
checkdep_ips_either "system/library/gcc/gcc-c-runtime" "system/library/gcc/gcc-c-runtime-9"
|
||||
else
|
||||
|
|
|
@ -944,7 +944,7 @@ install_python_bindings()
|
|||
else
|
||||
errorprint "Failed to install bindings for Python $PYTHON_VER"
|
||||
fi
|
||||
rm "$CONFIG_DIR/python-$CONFIG_FILES"
|
||||
rm -f "$CONFIG_DIR/python-$CONFIG_FILES"
|
||||
|
||||
# Remove files created by Python API setup.
|
||||
rm -rf "$MY_PYTHON_INSTALLER_PATH/build"
|
||||
|
|
|
@ -32,6 +32,7 @@ ClassGuid = {4d36e97d-e325-11ce-bfc1-08002be10318}
|
|||
CatalogFile = VBoxExtPackPuel.cat
|
||||
Provider = %ORACLE%
|
||||
;edit-DriverVer = 08/26/2008,2.00.0000
|
||||
PnpLockdown=1
|
||||
|
||||
[SourceDisksNames]
|
||||
1=%VBoxExtPackPuel.DskDesc%,"",,
|
||||
|
|
|
@ -32,6 +32,7 @@ ClassGuid = {4d36e97d-e325-11ce-bfc1-08002be10318}
|
|||
CatalogFile = VMMR0.cat
|
||||
Provider = %ORACLE%
|
||||
;edit-DriverVer = 08/26/2008,2.00.0000
|
||||
PnpLockdown=1
|
||||
|
||||
[SourceDisksNames]
|
||||
1=%VBoxVMM.DskDesc%,"",,
|
||||
|
|
|
@ -1160,7 +1160,7 @@
|
|||
|
||||
<!-- Property which defines if we need to show the customization dialog or not.
|
||||
We only show the dialog on new installs to let the users choose the components to install. -->
|
||||
<Property Id="VBOX_SHOW_CUSTOMIZE_DLG" Value="((PREVIOUSVERSIONSINSTALLED OR NEWERVERSIONDETECTED) OR ((NOT PREVIOUSVERSIONSINSTALLED) AND (NOT NEWERVERSIONDETECTED)))" />
|
||||
<Property Id="VBOX_SHOW_CUSTOMIZE_DLG" Value="((PREVIOUSVERSIONDETECTED OR NEWERVERSIONDETECTED) OR ((NOT PREVIOUSVERSIONDETECTED) AND (NOT NEWERVERSIONDETECTED)))" />
|
||||
<?if $(env.VBOX_WITH_LICENSE_DISPLAY) = "yes" ?>
|
||||
<!-- Property which defines whether the license dialog will be shown or not. -->
|
||||
<Property Id="VBOX_SHOW_LICENSE_DLG" Value="1" />
|
||||
|
@ -1202,8 +1202,8 @@
|
|||
<Publish Dialog="VBoxCheckSerialDlg" Control="Back" Event="NewDialog" Value="VBoxLicenseAgreementDlg" Condition="VBOX_SHOW_LICENSE_DLG" />
|
||||
<Publish Dialog="VBoxCheckSerialDlg" Control="Back" Event="NewDialog" Value="VBoxWelcomeDlg" Condition="NOT VBOX_SHOW_LICENSE_DLG" />
|
||||
<Publish Dialog="VBoxCheckSerialDlg" Control="Next" Event="DoAction" Value="ca_CheckSerial" Order="1" />
|
||||
<Publish Dialog="VBoxCheckSerialDlg" Control="Next" Event="NewDialog" Value="VBoxCustomizeDlg" Condition="(PREVIOUSVERSIONSINSTALLED OR NEWERVERSIONDETECTED) AND (VBOX_SERIAL_IS_VALID="1")" />
|
||||
<Publish Dialog="VBoxCheckSerialDlg" Control="Next" Event="NewDialog" Value="VBoxCustomizeDlg" Condition="(NOT PREVIOUSVERSIONSINSTALLED) AND (NOT NEWERVERSIONDETECTED) AND (VBOX_SERIAL_IS_VALID="1")" />
|
||||
<Publish Dialog="VBoxCheckSerialDlg" Control="Next" Event="NewDialog" Value="VBoxCustomizeDlg" Condition="(PREVIOUSVERSIONDETECTED OR NEWERVERSIONDETECTED) AND (VBOX_SERIAL_IS_VALID="1")" />
|
||||
<Publish Dialog="VBoxCheckSerialDlg" Control="Next" Event="NewDialog" Value="VBoxCustomizeDlg" Condition="(NOT PREVIOUSVERSIONDETECTED) AND (NOT NEWERVERSIONDETECTED) AND (VBOX_SERIAL_IS_VALID="1")" />
|
||||
<Publish Dialog="VBoxCheckSerialDlg" Control="Next" Event="NewDialog" Value="VBoxWrongSerialDlg" Condition="VBOX_SERIAL_IS_VALID="0"" />
|
||||
|
||||
<Publish Dialog="VBoxWrongSerialDlg" Control="Back" Event="NewDialog" Value="VBoxCheckSerialDlg" />
|
||||
|
|
|
@ -130,8 +130,8 @@
|
|||
Maximum="9.9.99" IncludeMaximum="yes"
|
||||
OnlyDetect="no" />
|
||||
|
||||
<!-- Flag is set if the install will trigger an upgrade of an existing install -->
|
||||
<UpgradeVersion Property="PREVIOUSVERSIONSINSTALLED" Minimum="1.0.0.0" Maximum="$(var.Property_Version)" IncludeMaximum="no" />
|
||||
<!-- Detect if an older version (than this version) of VirtualBox already is installed. -->
|
||||
<UpgradeVersion Property="PREVIOUSVERSIONDETECTED" Minimum="1.0.0.0" Maximum="$(var.Property_Version)" IncludeMaximum="no" />
|
||||
|
||||
</Upgrade>
|
||||
|
||||
|
|
|
@ -3380,14 +3380,6 @@ DECLCALLBACK(int) ConsoleVRDPServer::ClipboardServiceExtension(void *pvExtension
|
|||
}
|
||||
} break;
|
||||
|
||||
case VBOX_CLIPBOARD_EXT_FN_FORMAT_REPORT_TO_GUEST:
|
||||
{
|
||||
/* We need to handle this case here, to act as a no-op.
|
||||
*
|
||||
* If not being handled, this function otherwise would return VERR_NOT_SUPPORTED,
|
||||
* which in turn then will invoke the host backend, messing up the VRDE clipboard handling. */
|
||||
} break;
|
||||
|
||||
case VBOX_CLIPBOARD_EXT_FN_DATA_READ:
|
||||
{
|
||||
/* The clipboard service expects that the pvData buffer will be filled
|
||||
|
|
|
@ -581,7 +581,7 @@ int GuestDirectory::i_onDirNotify(PVBOXGUESTCTRLHOSTCBCTX pCbCtx, PVBOXGUESTCTRL
|
|||
|
||||
case GUEST_DIR_NOTIFYTYPE_LIST:
|
||||
{
|
||||
ASSERT_GUEST_MSG_STMT_BREAK(pSvcCbData->mParms >= 4, ("mParms=%u\n", pSvcCbData->mParms),
|
||||
ASSERT_GUEST_MSG_STMT_BREAK(pSvcCbData->mParms == 5, ("mParms=%u\n", pSvcCbData->mParms),
|
||||
vrc = VERR_WRONG_PARAMETER_COUNT);
|
||||
ASSERT_GUEST_MSG_STMT_BREAK(pSvcCbData->mpaParms[idx].type == VBOX_HGCM_SVC_PARM_32BIT,
|
||||
("type=%u\n", pSvcCbData->mpaParms[idx].type),
|
||||
|
@ -599,8 +599,6 @@ int GuestDirectory::i_onDirNotify(PVBOXGUESTCTRLHOSTCBCTX pCbCtx, PVBOXGUESTCTRL
|
|||
/*
|
||||
* Fetch buffer with packed directory entries.
|
||||
*/
|
||||
ASSERT_GUEST_MSG_STMT_BREAK(pSvcCbData->mParms == 5, ("mParms=%u\n", pSvcCbData->mParms),
|
||||
vrc = VERR_WRONG_PARAMETER_COUNT);
|
||||
ASSERT_GUEST_MSG_STMT_BREAK(pSvcCbData->mpaParms[idx].type == VBOX_HGCM_SVC_PARM_PTR,
|
||||
("type=%u\n", pSvcCbData->mpaParms[idx].type),
|
||||
vrc = VERR_WRONG_PARAMETER_TYPE);
|
||||
|
@ -608,7 +606,6 @@ int GuestDirectory::i_onDirNotify(PVBOXGUESTCTRLHOSTCBCTX pCbCtx, PVBOXGUESTCTRL
|
|||
uint32_t cbBuf;
|
||||
vrc = HGCMSvcGetPv(&pSvcCbData->mpaParms[idx], &pvBuf, &cbBuf);
|
||||
AssertRCBreak(vrc);
|
||||
AssertBreakStmt(cbBuf >= sizeof(GSTCTLDIRENTRYEX), vrc = VERR_INVALID_PARAMETER);
|
||||
dataCb.u.list.paEntries = (PCALLBACKDATA_DIR_ENTRY *)RTMemAllocZ(dataCb.u.list.cEntries * sizeof(PCALLBACKDATA_DIR_ENTRY));
|
||||
AssertPtrBreakStmt(dataCb.u.list.paEntries, vrc = VERR_NO_MEMORY);
|
||||
|
||||
|
|
|
@ -415,6 +415,7 @@ static DECLCALLBACK(int) recordingCodecVPXEncode(PRECORDINGCODEC pCodec, PRECORD
|
|||
|
||||
case RECORDINGFRAME_TYPE_CURSOR_SHAPE:
|
||||
{
|
||||
RecordingVideoFrameFree(pCodec->Video.VPX.pCursorShape);
|
||||
pCodec->Video.VPX.pCursorShape = RecordingVideoFrameDup(&pFrame->u.CursorShape);
|
||||
AssertPtr(pCodec->Video.VPX.pCursorShape);
|
||||
|
||||
|
|
|
@ -29,11 +29,13 @@
|
|||
/*********************************************************************************************************************************
|
||||
* Header Files *
|
||||
*********************************************************************************************************************************/
|
||||
#include <VBox/com/com.h>
|
||||
#include <VBox/com/array.h>
|
||||
#include <VBox/com/string.h>
|
||||
|
||||
#include <iprt/mem.h>
|
||||
#include <iprt/rand.h>
|
||||
#include <iprt/stream.h>
|
||||
#include <iprt/string.h>
|
||||
#include <iprt/test.h>
|
||||
#include <iprt/uni.h>
|
||||
|
@ -47,8 +49,21 @@ int main()
|
|||
{
|
||||
RTTestBanner(hTest);
|
||||
|
||||
/* Sizes / Pre-allocations. */
|
||||
HRESULT hrc = com::Initialize();
|
||||
if (FAILED(hrc))
|
||||
{
|
||||
RTPrintf("ERROR: failed to initialize COM, hrc=%Rhrc\n", hrc);
|
||||
return RTEXITCODE_FAILURE;
|
||||
}
|
||||
|
||||
/* Some simple push-to-front test to catch some off-by-one errors. */
|
||||
com::SafeArray<int> aInt;
|
||||
aInt.push_front(42);
|
||||
|
||||
/* Test NULL'ing. */
|
||||
aInt.setNull();
|
||||
|
||||
/* Sizes / Pre-allocations. */
|
||||
RTTESTI_CHECK(aInt.size() == 0);
|
||||
|
||||
com::SafeArray<int> aInt2(42);
|
||||
|
@ -89,6 +104,54 @@ int main()
|
|||
RTTESTI_CHECK_MSG(aInt[i] == aPushToFront[RT_ELEMENTS(aPushToFront) - i - 1],
|
||||
("Got %d, expected %d\n", aInt[i], aPushToFront[RT_ELEMENTS(aPushToFront) - i - 1]));
|
||||
|
||||
/* Push to back first, then push to front. */
|
||||
com::SafeArray<int> aInt4;
|
||||
for (size_t i = 0; i < RT_ELEMENTS(aPushToBack); i++)
|
||||
{
|
||||
RTTESTI_CHECK(aInt4.push_back(aPushToBack[i]));
|
||||
RTTESTI_CHECK(aInt4.size() == i + 1);
|
||||
RTTESTI_CHECK(aInt4[i] == aPushToBack[i]);
|
||||
}
|
||||
for (size_t i = 0; i < RT_ELEMENTS(aPushToBack); i++)
|
||||
RTTESTI_CHECK_MSG(aInt4[i] == aPushToBack[i], ("Got %d, expected %d\n", aInt4[i], aPushToBack[i]));
|
||||
|
||||
for (size_t i = 0; i < RT_ELEMENTS(aPushToFront); i++)
|
||||
{
|
||||
RTTESTI_CHECK(aInt4.push_front(aPushToFront[i]));
|
||||
RTTESTI_CHECK(aInt4.size() == i + 1 + RT_ELEMENTS(aPushToBack));
|
||||
RTTESTI_CHECK(aInt4[0] == aPushToFront[i]);
|
||||
}
|
||||
for (size_t i = 0; i < RT_ELEMENTS(aPushToFront); i++)
|
||||
RTTESTI_CHECK_MSG(aInt4[i] == aPushToFront[RT_ELEMENTS(aPushToFront) - i - 1],
|
||||
("Got %d, expected %d\n", aInt4[i], aPushToFront[RT_ELEMENTS(aPushToFront) - i - 1]));
|
||||
|
||||
aInt4.setNull();
|
||||
|
||||
/* Push to front first, then push to back. */
|
||||
com::SafeArray<int> aInt5;
|
||||
for (size_t i = 0; i < RT_ELEMENTS(aPushToFront); i++)
|
||||
{
|
||||
RTTESTI_CHECK(aInt5.push_front(aPushToFront[i]));
|
||||
RTTESTI_CHECK(aInt5.size() == i + 1);
|
||||
RTTESTI_CHECK(aInt5[0] == aPushToFront[i]);
|
||||
}
|
||||
for (size_t i = 0; i < RT_ELEMENTS(aPushToFront); i++)
|
||||
RTTESTI_CHECK_MSG(aInt5[i] == aPushToFront[RT_ELEMENTS(aPushToFront) - i - 1],
|
||||
("Got %d, expected %d\n", aInt5[i], aPushToFront[RT_ELEMENTS(aPushToFront) - i - 1]));
|
||||
|
||||
/* Push to back. */
|
||||
for (size_t i = 0; i < RT_ELEMENTS(aPushToBack); i++)
|
||||
{
|
||||
RTTESTI_CHECK(aInt5.push_back(aPushToBack[i]));
|
||||
RTTESTI_CHECK(aInt5.size() == i + 1 + RT_ELEMENTS(aPushToFront));
|
||||
RTTESTI_CHECK(aInt5[i + RT_ELEMENTS(aPushToFront)] == aPushToBack[i]);
|
||||
}
|
||||
for (size_t i = 0; i < RT_ELEMENTS(aPushToBack); i++)
|
||||
RTTESTI_CHECK_MSG(aInt5[i + RT_ELEMENTS(aPushToFront)] == aPushToBack[i],
|
||||
("Got %d, expected %d\n", aInt5[i], aPushToBack[i]));
|
||||
|
||||
aInt5.setNull();
|
||||
|
||||
/* A bit more data. */
|
||||
aInt.setNull();
|
||||
for (size_t i = 0; i < RTRandU32Ex(_4K, _64M); i++)
|
||||
|
|
|
@ -120,13 +120,11 @@ else
|
|||
endif
|
||||
VBOX_PATH_GSOAP_BIN := $(strip $(VBOX_PATH_GSOAP_BIN))
|
||||
if "$(VBOX_PATH_GSOAP_BIN)" == ""
|
||||
VBOX_PATH_GSOAP_BIN := $(VBOX_PATH_GSOAP)/bin
|
||||
if "$(KBUILD_HOST)" == "darwin"
|
||||
VBOX_PATH_GSOAP_BIN := $(VBOX_PATH_GSOAP_BIN)/macosx
|
||||
else if "$(KBUILD_HOST)" == "win"
|
||||
VBOX_PATH_GSOAP_BIN := $(VBOX_PATH_GSOAP_BIN)/win32
|
||||
if "$(KBUILD_HOST).$(KBUILD_HOST_ARCH)" == "win.arm64"
|
||||
# Reuse amd64 binaries
|
||||
VBOX_PATH_GSOAP_BIN := $(VBOX_PATH_GSOAP)/bin/win.amd64
|
||||
else
|
||||
VBOX_PATH_GSOAP_BIN := $(VBOX_PATH_GSOAP_BIN)/$(KBUILD_HOST).x86
|
||||
VBOX_PATH_GSOAP_BIN := $(VBOX_PATH_GSOAP)/bin/$(KBUILD_HOST).$(KBUILD_HOST_ARCH)
|
||||
endif
|
||||
if !exists($(VBOX_PATH_GSOAP_BIN))
|
||||
VBOX_PATH_GSOAP_BIN := $(VBOX_PATH_GSOAP)/bin
|
||||
|
|
|
@ -81,6 +81,8 @@ typedef struct RTSCRIPTLEXINT
|
|||
RTSTRCACHE hStrCacheId;
|
||||
/** String literal string cache. */
|
||||
RTSTRCACHE hStrCacheStringLit;
|
||||
/** Comment string cache. */
|
||||
RTSTRCACHE hStrCacheComments;
|
||||
/** Status code from the reader. */
|
||||
int rcRdr;
|
||||
/** Internal error info. */
|
||||
|
@ -108,8 +110,10 @@ typedef RTSCRIPTLEXINT *PRTSCRIPTLEXINT;
|
|||
#define RTSCRIPT_LEX_INT_F_STR_CACHE_ID_FREE RT_BIT_32(0)
|
||||
/** Free the string literal string cache literal on destruction. */
|
||||
#define RTSCRIPT_LEX_INT_F_STR_CACHE_STR_LIT_FREE RT_BIT_32(1)
|
||||
/** Free the comments string cache literal on destruction. */
|
||||
#define RTSCRIPT_LEX_INT_F_STR_CACHE_COMMENTS_FREE RT_BIT_32(2)
|
||||
/** End of stream reached. */
|
||||
#define RTSCRIPT_LEX_INT_F_EOS RT_BIT_32(2)
|
||||
#define RTSCRIPT_LEX_INT_F_EOS RT_BIT_32(3)
|
||||
|
||||
|
||||
/*********************************************************************************************************************************
|
||||
|
@ -266,11 +270,11 @@ DECLINLINE(bool) rtScriptLexLocateExactMatchConsume(PRTSCRIPTLEXINT pThis, char
|
|||
}
|
||||
|
||||
|
||||
DECLINLINE(bool) rtScriptLexIsNewlineConsume(PRTSCRIPTLEXINT pThis, char ch)
|
||||
DECLINLINE(bool) rtScriptLexIsNewlineConsumeEx(PRTSCRIPTLEXINT pThis, char ch, unsigned *pidx)
|
||||
{
|
||||
const char **papszNl = pThis->pCfg->pszWhitespace ? pThis->pCfg->papszNewline : g_aszNlDef;
|
||||
const char **papszNl = pThis->pCfg->papszNewline ? pThis->pCfg->papszNewline : g_aszNlDef;
|
||||
|
||||
bool fMatched = rtScriptLexLocateSubStrInStrArrayMatchConsume(pThis, ch, papszNl, NULL);
|
||||
bool fMatched = rtScriptLexLocateSubStrInStrArrayMatchConsume(pThis, ch, papszNl, pidx);
|
||||
if (fMatched)
|
||||
{
|
||||
pThis->Pos.iLine++;
|
||||
|
@ -281,6 +285,33 @@ DECLINLINE(bool) rtScriptLexIsNewlineConsume(PRTSCRIPTLEXINT pThis, char ch)
|
|||
}
|
||||
|
||||
|
||||
DECLINLINE(bool) rtScriptLexIsNewlineConsume(PRTSCRIPTLEXINT pThis, char ch)
|
||||
{
|
||||
return rtScriptLexIsNewlineConsumeEx(pThis, ch, NULL);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks whether the character is the beginning of a multi line comment.
|
||||
*
|
||||
* @returns Flag whether a comment was detected.
|
||||
* @param hScriptLex The lexer state.
|
||||
* @param ch The character to check for.
|
||||
* @param pidxMatch Where to store the index of the matching substring if found,
|
||||
* optional.
|
||||
* @note This consumes the start of the single line comment.
|
||||
*/
|
||||
DECLINLINE(bool) rtScriptLexIsMultiLineComment(PRTSCRIPTLEXINT pThis, char ch, unsigned *pidxMatch)
|
||||
{
|
||||
const char **papszCommentMultiStart = pThis->pCfg->papszCommentMultiStart;
|
||||
if ( papszCommentMultiStart
|
||||
&& rtScriptLexLocateSubStrInStrArrayMatchConsume(pThis, ch, papszCommentMultiStart, pidxMatch))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks whether the character is the beginning of a multi line comment, skipping the whole
|
||||
* comment if necessary.
|
||||
|
@ -291,12 +322,8 @@ DECLINLINE(bool) rtScriptLexIsNewlineConsume(PRTSCRIPTLEXINT pThis, char ch)
|
|||
*/
|
||||
DECLINLINE(bool) rtScriptLexIsMultiLineCommentConsume(PRTSCRIPTLEXINT pThis, char ch)
|
||||
{
|
||||
const char **papszCommentMultiStart = pThis->pCfg->papszCommentMultiStart;
|
||||
unsigned idxComment = 0;
|
||||
|
||||
if ( papszCommentMultiStart
|
||||
&& rtScriptLexLocateSubStrInStrArrayMatchConsume(pThis, ch, papszCommentMultiStart,
|
||||
&idxComment))
|
||||
if (rtScriptLexIsMultiLineComment(pThis, ch, &idxComment))
|
||||
{
|
||||
/* Look for the matching closing lexeme in the input consuming everything along the way. */
|
||||
const char *pszClosing = pThis->pCfg->papszCommentMultiEnd[idxComment];
|
||||
|
@ -325,6 +352,27 @@ DECLINLINE(bool) rtScriptLexIsMultiLineCommentConsume(PRTSCRIPTLEXINT pThis, cha
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks whether the character is the beginning of a single line comment.
|
||||
*
|
||||
* @returns Flag whether a comment was detected.
|
||||
* @param hScriptLex The lexer state.
|
||||
* @param ch The character to check for.
|
||||
* @param pidxMatch Where to store the index of the matching substring if found,
|
||||
* optional.
|
||||
* @note This consumes the start of the single line comment.
|
||||
*/
|
||||
DECLINLINE(bool) rtScriptLexIsSingleLineComment(PRTSCRIPTLEXINT pThis, char ch, unsigned *pidxMatch)
|
||||
{
|
||||
const char **papszCommentSingleStart = pThis->pCfg->papszCommentSingleStart;
|
||||
if ( papszCommentSingleStart
|
||||
&& rtScriptLexLocateSubStrInStrArrayMatchConsume(pThis, ch, papszCommentSingleStart, pidxMatch))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks whether the character is the beginning of a single line comment, skipping the whole
|
||||
* comment if necessary.
|
||||
|
@ -335,11 +383,7 @@ DECLINLINE(bool) rtScriptLexIsMultiLineCommentConsume(PRTSCRIPTLEXINT pThis, cha
|
|||
*/
|
||||
DECLINLINE(bool) rtScriptLexIsSingleLineCommentConsume(PRTSCRIPTLEXINT pThis, char ch)
|
||||
{
|
||||
const char **papszCommentSingleStart = pThis->pCfg->papszCommentSingleStart;
|
||||
|
||||
if ( papszCommentSingleStart
|
||||
&& rtScriptLexLocateSubStrInStrArrayMatchConsume(pThis, ch, papszCommentSingleStart,
|
||||
NULL))
|
||||
if (rtScriptLexIsSingleLineComment(pThis, ch, NULL))
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
|
@ -374,13 +418,14 @@ static int rtScriptLexFillBuffer(PRTSCRIPTLEXINT pThis)
|
|||
AssertReturn(!(pThis->fFlags & RTSCRIPT_LEX_INT_F_EOS), VERR_INVALID_STATE);
|
||||
|
||||
/* If there is input left to process move it to the front and fill the remainder. */
|
||||
if (pThis->pchCur != NULL)
|
||||
if ( pThis->pchCur != NULL
|
||||
&& pThis->pchCur != &pThis->achBuf[pThis->cchBuf])
|
||||
{
|
||||
cchToRead = pThis->pchCur - &pThis->achBuf[0];
|
||||
/* Move the rest to the front. */
|
||||
memmove(&pThis->achBuf[0], pThis->pchCur, pThis->cchBuf - cchToRead);
|
||||
pchRead = (char *)pThis->pchCur + 1;
|
||||
memset(pchRead, 0, cchToRead);
|
||||
size_t const cchLeft = pThis->cchBuf - cchToRead;
|
||||
memmove(&pThis->achBuf[0], pThis->pchCur, cchLeft);
|
||||
pchRead = &pThis->achBuf[0] + cchLeft;
|
||||
}
|
||||
|
||||
if (cchToRead)
|
||||
|
@ -394,6 +439,8 @@ static int rtScriptLexFillBuffer(PRTSCRIPTLEXINT pThis)
|
|||
pThis->offBufRead += cchRead;
|
||||
if (rc == VINF_EOF)
|
||||
pThis->fFlags |= RTSCRIPT_LEX_INT_F_EOS;
|
||||
if (cchRead < cchToRead)
|
||||
memset(pchRead + cchRead, 0, cchToRead - cchRead);
|
||||
rc = VINF_SUCCESS;
|
||||
}
|
||||
else
|
||||
|
@ -421,19 +468,11 @@ static void rtScriptLexProduceTokEos(PRTSCRIPTLEXINT pThis, PRTSCRIPTLEXTOKEN pT
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Produce an error token with the given error message.
|
||||
*
|
||||
* @returns IPRT status code.
|
||||
* @param pThis The lexer state.
|
||||
* @param pTok The token to fill.
|
||||
* @param rc The status code to use in the message.
|
||||
* @param pszMsg The format string for the error message.
|
||||
* @param ... Arguments to the format string.
|
||||
*/
|
||||
static int rtScriptLexProduceTokError(PRTSCRIPTLEXINT pThis, PRTSCRIPTLEXTOKEN pTok,
|
||||
RTDECL(int) RTScriptLexProduceTokError(RTSCRIPTLEX hScriptLex, PRTSCRIPTLEXTOKEN pTok,
|
||||
int rc, const char *pszMsg, ...)
|
||||
{
|
||||
PRTSCRIPTLEXINT pThis = hScriptLex;
|
||||
|
||||
va_list va;
|
||||
va_start(va, pszMsg);
|
||||
|
||||
|
@ -449,6 +488,218 @@ static int rtScriptLexProduceTokError(PRTSCRIPTLEXINT pThis, PRTSCRIPTLEXTOKEN p
|
|||
}
|
||||
|
||||
|
||||
RTDECL(int) RTScriptLexProduceTokIde(RTSCRIPTLEX hScriptLex, PRTSCRIPTLEXTOKEN pTok, const char *pszIde, size_t cchIde)
|
||||
{
|
||||
PRTSCRIPTLEXINT pThis = hScriptLex;
|
||||
|
||||
/* Insert into string cache. */
|
||||
pTok->enmType = RTSCRIPTLEXTOKTYPE_IDENTIFIER;
|
||||
pTok->Type.Id.pszIde = RTStrCacheEnterN(pThis->hStrCacheId, pszIde, cchIde);
|
||||
if (RT_UNLIKELY(!pTok->Type.Id.pszIde))
|
||||
return RTScriptLexProduceTokError(hScriptLex, pTok, VERR_NO_STR_MEMORY, "Lexer: Out of memory inserting identifier into string cache");
|
||||
|
||||
pTok->PosEnd = pThis->Pos;
|
||||
return VINF_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a single line comment token.
|
||||
*
|
||||
* @returns Flag whether a matching rule was found.
|
||||
* @param pThis The lexer state.
|
||||
* @param idxComment The index into the single line comment token start array.
|
||||
* @param pTok The token to fill.
|
||||
*/
|
||||
static void rtScriptLexProduceTokFromSingleLineComment(PRTSCRIPTLEXINT pThis, unsigned idxComment, PRTSCRIPTLEXTOKEN pTok)
|
||||
{
|
||||
const char *pszCommentSingleStart = pThis->pCfg->papszCommentSingleStart[idxComment];
|
||||
AssertPtr(pszCommentSingleStart);
|
||||
|
||||
pTok->PosStart = pThis->Pos;
|
||||
|
||||
/** @todo Optimize */
|
||||
size_t cchTmp = 512;
|
||||
char *pszTmp = (char *)RTMemAlloc(cchTmp);
|
||||
if (pszTmp)
|
||||
{
|
||||
size_t cchComment = 0;
|
||||
while (*pszCommentSingleStart != '\0')
|
||||
pszTmp[cchComment++] = *pszCommentSingleStart++;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
char chTmp = RTScriptLexGetCh(pThis);
|
||||
|
||||
if ( chTmp == '\0'
|
||||
|| rtScriptLexIsNewlineConsume(pThis, chTmp))
|
||||
{
|
||||
pszTmp[cchComment++] = '\0';
|
||||
break;
|
||||
}
|
||||
|
||||
if (cchComment == cchTmp - 1)
|
||||
{
|
||||
char *pszNew = (char *)RTMemRealloc(pszTmp, cchTmp + 512);
|
||||
if (!pszNew)
|
||||
{
|
||||
RTMemFree(pszTmp);
|
||||
pszTmp = NULL;
|
||||
RTScriptLexProduceTokError(pThis, pTok, VERR_NO_STR_MEMORY, "Lexer: Out of memory allocating temporary memory for a single line comment");
|
||||
break;
|
||||
}
|
||||
|
||||
cchTmp += 512;
|
||||
pszTmp = pszNew;
|
||||
}
|
||||
|
||||
pszTmp[cchComment++] = chTmp;
|
||||
RTScriptLexConsumeCh(pThis);
|
||||
}
|
||||
|
||||
if (pszTmp)
|
||||
{
|
||||
pTok->enmType = RTSCRIPTLEXTOKTYPE_COMMENT_SINGLE_LINE;
|
||||
pTok->PosEnd = pThis->Pos;
|
||||
pTok->Type.Comment.pszComment = RTStrCacheEnterN(pThis->hStrCacheId, pszTmp, cchComment);
|
||||
pTok->Type.Comment.cchComment = cchComment;
|
||||
if (RT_UNLIKELY(!pTok->Type.Comment.pszComment))
|
||||
RTScriptLexProduceTokError(pThis, pTok, VERR_NO_STR_MEMORY, "Lexer: Out of memory inserting comment into comment cache");
|
||||
|
||||
RTMemFree(pszTmp);
|
||||
}
|
||||
}
|
||||
else
|
||||
RTScriptLexProduceTokError(pThis, pTok, VERR_NO_MEMORY, "Lexer: Out of memory allocating temporary memory for a single line comment");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Ensures there is enough space in the given buffer for the given amount of bytes,
|
||||
* extending the buffer or creating an error token if this fails.
|
||||
*
|
||||
* @returns Flag whether there is enough space in the buffer.
|
||||
* @param pThis The lexer state.
|
||||
* @param ppchTmp Pointer to the pointer for the character buffer being checked.
|
||||
* On successful return this might contain a different pointer if
|
||||
* re-allocation was required.
|
||||
* @param pcchTmp On input the size of the buffer in characters, on return the new
|
||||
* size of the buffer if re-allocation was required.
|
||||
* @param cchCur How much of the current buffer is used.
|
||||
* @param cchAdd How many additional characters are required.
|
||||
* @param pTok The token to fill in if re-allocating the buffer failed.
|
||||
*/
|
||||
DECLINLINE(bool) rtScriptLexEnsureTmpBufSpace(PRTSCRIPTLEXINT pThis, char **ppchTmp, size_t *pcchTmp,
|
||||
size_t cchCur, size_t cchAdd, PRTSCRIPTLEXTOKEN pTok)
|
||||
{
|
||||
if (RT_LIKELY(cchCur + cchAdd + 1 <= *pcchTmp)) /* Always keep room for the zero terminator. */
|
||||
return true;
|
||||
|
||||
size_t cchNew = *pcchTmp + _1K;
|
||||
char *pchNew = (char *)RTMemRealloc(*ppchTmp, cchNew);
|
||||
if (!pchNew)
|
||||
{
|
||||
RTMemFree(*ppchTmp);
|
||||
*ppchTmp = NULL;
|
||||
RTScriptLexProduceTokError(pThis, pTok, VERR_NO_STR_MEMORY, "Lexer: Out of memory allocating temporary memory for a multi line comment");
|
||||
return false;
|
||||
}
|
||||
|
||||
*ppchTmp = pchNew;
|
||||
*pcchTmp = cchNew;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a multi line comment token.
|
||||
*
|
||||
* @returns Flag whether a matching rule was found.
|
||||
* @param pThis The lexer state.
|
||||
* @param idxComment The index into the single line comment token start array.
|
||||
* @param pTok The token to fill.
|
||||
*/
|
||||
static void rtScriptLexProduceTokFromMultiLineComment(PRTSCRIPTLEXINT pThis, unsigned idxComment, PRTSCRIPTLEXTOKEN pTok)
|
||||
{
|
||||
const char *pszCommentMultiStart = pThis->pCfg->papszCommentMultiStart[idxComment];
|
||||
AssertPtr(pszCommentMultiStart);
|
||||
|
||||
pTok->PosStart = pThis->Pos;
|
||||
|
||||
/** @todo Optimize */
|
||||
size_t cchTmp = _1K;
|
||||
char *pszTmp = (char *)RTMemAlloc(cchTmp);
|
||||
if (pszTmp)
|
||||
{
|
||||
/* Look for the matching closing lexeme in the input consuming everything along the way. */
|
||||
const char *pszClosing = pThis->pCfg->papszCommentMultiEnd[idxComment];
|
||||
|
||||
size_t cchComment = 0;
|
||||
while (*pszCommentMultiStart != '\0')
|
||||
pszTmp[cchComment++] = *pszCommentMultiStart++;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
char chTmp = RTScriptLexGetCh(pThis);
|
||||
|
||||
/* Check for new lines explicetly to advance the position information and copy it over. */
|
||||
unsigned idxNewLine = 0;
|
||||
if (rtScriptLexIsNewlineConsumeEx(pThis, chTmp, &idxNewLine))
|
||||
{
|
||||
const char *pszNl = pThis->pCfg->papszNewline
|
||||
? pThis->pCfg->papszNewline[idxNewLine]
|
||||
: g_aszNlDef[idxNewLine];
|
||||
if (!rtScriptLexEnsureTmpBufSpace(pThis, &pszTmp, &cchTmp, cchComment,
|
||||
strlen(pszNl), pTok))
|
||||
break;
|
||||
|
||||
while (*pszNl != '\0')
|
||||
pszTmp[cchComment++] = *pszNl++;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Check for the closing lexeme. */
|
||||
if (rtScriptLexMatchStrConsume(pThis, chTmp, pszClosing, NULL))
|
||||
{
|
||||
/* Copy over the closing comment lexeme. */
|
||||
if (rtScriptLexEnsureTmpBufSpace(pThis, &pszTmp, &cchTmp, cchComment,
|
||||
strlen(pszClosing), pTok))
|
||||
{
|
||||
while (*pszClosing != '\0')
|
||||
pszTmp[cchComment++] = *pszClosing++;
|
||||
pszTmp[cchComment++] = '\0';
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (chTmp == '\0')
|
||||
break; /* End of stream before closing lexeme. */
|
||||
|
||||
if (!rtScriptLexEnsureTmpBufSpace(pThis, &pszTmp, &cchTmp, cchComment,
|
||||
strlen(pszClosing), pTok))
|
||||
break;
|
||||
|
||||
pszTmp[cchComment++] = chTmp;
|
||||
RTScriptLexConsumeCh(pThis);
|
||||
}
|
||||
|
||||
if (pszTmp)
|
||||
{
|
||||
pTok->enmType = RTSCRIPTLEXTOKTYPE_COMMENT_MULTI_LINE;
|
||||
pTok->PosEnd = pThis->Pos;
|
||||
pTok->Type.Comment.pszComment = RTStrCacheEnterN(pThis->hStrCacheId, pszTmp, cchComment);
|
||||
pTok->Type.Comment.cchComment = cchComment;
|
||||
if (RT_UNLIKELY(!pTok->Type.Comment.pszComment))
|
||||
RTScriptLexProduceTokError(pThis, pTok, VERR_NO_STR_MEMORY, "Lexer: Out of memory inserting comment into comment cache");
|
||||
|
||||
RTMemFree(pszTmp);
|
||||
}
|
||||
}
|
||||
else
|
||||
RTScriptLexProduceTokError(pThis, pTok, VERR_NO_MEMORY, "Lexer: Out of memory allocating temporary memory for a multi line comment");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create the token from the exact match.
|
||||
*
|
||||
|
@ -475,7 +726,7 @@ static void rtScriptLexProduceTokFromExactMatch(PRTSCRIPTLEXINT pThis, PRTSCRIPT
|
|||
pTok->Type.Punctuator.pPunctuator = pMatch;
|
||||
break;
|
||||
default:
|
||||
rtScriptLexProduceTokError(pThis, pTok, VERR_INVALID_PARAMETER,
|
||||
RTScriptLexProduceTokError(pThis, pTok, VERR_INVALID_PARAMETER,
|
||||
"Lexer: The match contains an invalid token type: %d\n",
|
||||
pTok->enmType);
|
||||
}
|
||||
|
@ -531,8 +782,15 @@ static int rtScriptLexProduceToken(PRTSCRIPTLEXINT pThis, PRTSCRIPTLEXTOKEN pTok
|
|||
|
||||
char ch = RTScriptLexGetCh(pThis);
|
||||
PCRTSCRIPTLEXTOKMATCH pMatch = NULL;
|
||||
unsigned idxComment = 0;
|
||||
if (ch == '\0')
|
||||
rtScriptLexProduceTokEos(pThis, pTok);
|
||||
else if ( (pThis->pCfg->fFlags & RTSCRIPT_LEX_CFG_F_COMMENTS_AS_TOKENS)
|
||||
&& rtScriptLexIsSingleLineComment(pThis, ch, &idxComment))
|
||||
rtScriptLexProduceTokFromSingleLineComment(pThis, idxComment, pTok);
|
||||
else if ( (pThis->pCfg->fFlags & RTSCRIPT_LEX_CFG_F_COMMENTS_AS_TOKENS)
|
||||
&& rtScriptLexIsMultiLineComment(pThis, ch, &idxComment))
|
||||
rtScriptLexProduceTokFromMultiLineComment(pThis, idxComment, pTok);
|
||||
else if (rtScriptLexLocateExactMatchConsume(pThis, ch, &pMatch))
|
||||
rtScriptLexProduceTokFromExactMatch(pThis, pTok, pMatch);
|
||||
else if (!rtScriptLexProduceTokFromRules(pThis, ch, pTok))
|
||||
|
@ -540,7 +798,7 @@ static int rtScriptLexProduceToken(PRTSCRIPTLEXINT pThis, PRTSCRIPTLEXTOKEN pTok
|
|||
if (pThis->pCfg->pfnProdDef)
|
||||
pThis->rcRdr = pThis->pCfg->pfnProdDef(pThis, ch, pTok, pThis->pCfg->pvProdDefUser);
|
||||
else
|
||||
rtScriptLexProduceTokError(pThis, pTok, VERR_INVALID_PARAMETER,
|
||||
RTScriptLexProduceTokError(pThis, pTok, VERR_INVALID_PARAMETER,
|
||||
"Lexer: Invalid character found in input: %c\n",
|
||||
ch);
|
||||
}
|
||||
|
@ -573,12 +831,16 @@ static int rtScriptLexPopulate(PRTSCRIPTLEXINT pThis)
|
|||
RTDECL(int) RTScriptLexCreateFromReader(PRTSCRIPTLEX phScriptLex, PFNRTSCRIPTLEXRDR pfnReader,
|
||||
PFNRTSCRIPTLEXDTOR pfnDtor, void *pvUser,
|
||||
size_t cchBuf, PRTSTRCACHE phStrCacheId, PRTSTRCACHE phStrCacheStringLit,
|
||||
PCRTSCRIPTLEXCFG pCfg)
|
||||
PRTSTRCACHE phStrCacheComments, PCRTSCRIPTLEXCFG pCfg)
|
||||
{
|
||||
AssertPtrReturn(phScriptLex, VERR_INVALID_POINTER);
|
||||
AssertPtrReturn(pfnReader, VERR_INVALID_POINTER);
|
||||
AssertPtrReturn(pCfg, VERR_INVALID_POINTER);
|
||||
|
||||
/* Case insensitivity with internal lower or upper case conversion is mutually exclusive. */
|
||||
AssertReturn( (pCfg->fFlags & (RTSCRIPT_LEX_CFG_F_CASE_INSENSITIVE_LOWER | RTSCRIPT_LEX_CFG_F_CASE_INSENSITIVE_UPPER))
|
||||
!= (RTSCRIPT_LEX_CFG_F_CASE_INSENSITIVE_LOWER | RTSCRIPT_LEX_CFG_F_CASE_INSENSITIVE_UPPER), VERR_INVALID_PARAMETER);
|
||||
|
||||
if (!cchBuf)
|
||||
cchBuf = _16K;
|
||||
int rc = VINF_SUCCESS;
|
||||
|
@ -602,6 +864,10 @@ RTDECL(int) RTScriptLexCreateFromReader(PRTSCRIPTLEX phScriptLex, PFNRTSCRIPTLEX
|
|||
pThis->pchCur = NULL;
|
||||
pThis->hStrCacheId = NULL;
|
||||
pThis->hStrCacheStringLit = NULL;
|
||||
pThis->hStrCacheComments = NULL;
|
||||
|
||||
if (pCfg->fFlags & RTSCRIPT_LEX_CFG_F_COMMENTS_AS_TOKENS)
|
||||
rc = RTStrCacheCreate(&pThis->hStrCacheComments, "LEX-Comments");
|
||||
|
||||
rc = RTStrCacheCreate(&pThis->hStrCacheId, "LEX-Ide");
|
||||
if (RT_SUCCESS(rc))
|
||||
|
@ -624,6 +890,14 @@ RTDECL(int) RTScriptLexCreateFromReader(PRTSCRIPTLEX phScriptLex, PFNRTSCRIPTLEX
|
|||
else
|
||||
pThis->fFlags |= RTSCRIPT_LEX_INT_F_STR_CACHE_STR_LIT_FREE;
|
||||
|
||||
if (pCfg->fFlags & RTSCRIPT_LEX_CFG_F_COMMENTS_AS_TOKENS)
|
||||
{
|
||||
if (phStrCacheComments)
|
||||
*phStrCacheComments = pThis->hStrCacheComments;
|
||||
else
|
||||
pThis->fFlags |= RTSCRIPT_LEX_INT_F_STR_CACHE_COMMENTS_FREE;
|
||||
}
|
||||
|
||||
return VINF_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -633,6 +907,8 @@ RTDECL(int) RTScriptLexCreateFromReader(PRTSCRIPTLEX phScriptLex, PFNRTSCRIPTLEX
|
|||
RTStrCacheDestroy(pThis->hStrCacheId);
|
||||
}
|
||||
|
||||
if (pThis->hStrCacheComments)
|
||||
RTStrCacheDestroy(pThis->hStrCacheComments);
|
||||
RTMemFree(pThis);
|
||||
}
|
||||
else
|
||||
|
@ -667,10 +943,10 @@ static DECLCALLBACK(int) rtScriptLexReaderStr(RTSCRIPTLEX hScriptLex, size_t off
|
|||
|
||||
|
||||
RTDECL(int) RTScriptLexCreateFromString(PRTSCRIPTLEX phScriptLex, const char *pszSrc, PRTSTRCACHE phStrCacheId,
|
||||
PRTSTRCACHE phStrCacheStringLit, PCRTSCRIPTLEXCFG pCfg)
|
||||
PRTSTRCACHE phStrCacheStringLit, PRTSTRCACHE phStrCacheComments, PCRTSCRIPTLEXCFG pCfg)
|
||||
{
|
||||
return RTScriptLexCreateFromReader(phScriptLex, rtScriptLexReaderStr, NULL, (void *)pszSrc, 0,
|
||||
phStrCacheId, phStrCacheStringLit, pCfg);
|
||||
phStrCacheId, phStrCacheStringLit, phStrCacheComments, pCfg);
|
||||
}
|
||||
|
||||
|
||||
|
@ -700,14 +976,14 @@ static DECLCALLBACK(void) rtScriptLexDtorFile(RTSCRIPTLEX hScriptLex, void *pvUs
|
|||
|
||||
|
||||
RTDECL(int) RTScriptLexCreateFromFile(PRTSCRIPTLEX phScriptLex, const char *pszFilename, PRTSTRCACHE phStrCacheId,
|
||||
PRTSTRCACHE phStrCacheStringLit, PCRTSCRIPTLEXCFG pCfg)
|
||||
PRTSTRCACHE phStrCacheStringLit, PRTSTRCACHE phStrCacheComments, PCRTSCRIPTLEXCFG pCfg)
|
||||
{
|
||||
RTFILE hFile;
|
||||
int rc = RTFileOpen(&hFile, pszFilename, RTFILE_O_READ | RTFILE_O_DENY_WRITE | RTFILE_O_OPEN);
|
||||
if (RT_SUCCESS(rc))
|
||||
{
|
||||
rc = RTScriptLexCreateFromReader(phScriptLex, rtScriptLexReaderFile, rtScriptLexDtorFile, (void *)hFile, 0,
|
||||
phStrCacheId, phStrCacheStringLit, pCfg);
|
||||
phStrCacheId, phStrCacheStringLit, phStrCacheComments, pCfg);
|
||||
if (RT_FAILURE(rc))
|
||||
RTFileClose(hFile);
|
||||
}
|
||||
|
@ -728,6 +1004,8 @@ RTDECL(void) RTScriptLexDestroy(RTSCRIPTLEX hScriptLex)
|
|||
RTStrCacheDestroy(pThis->hStrCacheId);
|
||||
if (pThis->fFlags & RTSCRIPT_LEX_INT_F_STR_CACHE_STR_LIT_FREE)
|
||||
RTStrCacheDestroy(pThis->hStrCacheStringLit);
|
||||
if (pThis->fFlags & RTSCRIPT_LEX_INT_F_STR_CACHE_COMMENTS_FREE)
|
||||
RTStrCacheDestroy(pThis->hStrCacheComments);
|
||||
|
||||
if (pThis->pszStrLit)
|
||||
RTStrFree(pThis->pszStrLit);
|
||||
|
@ -832,6 +1110,10 @@ RTDECL(char) RTScriptLexPeekChEx(RTSCRIPTLEX hScriptLex, unsigned idx, uint32_t
|
|||
PRTSCRIPTLEXINT pThis = hScriptLex;
|
||||
AssertPtrReturn(pThis, '\0');
|
||||
|
||||
/* Try to fill up the input buffer if peeking would overflow it. */
|
||||
if (pThis->pchCur + idx >= &pThis->achBuf[pThis->cchBuf])
|
||||
rtScriptLexFillBuffer(pThis);
|
||||
|
||||
/* Just return the character if it is in the current buffer. */
|
||||
char ch = '\0';
|
||||
if (RT_LIKELY(pThis->pchCur + idx < &pThis->achBuf[pThis->cchBuf]))
|
||||
|
@ -843,9 +1125,13 @@ RTDECL(char) RTScriptLexPeekChEx(RTSCRIPTLEX hScriptLex, unsigned idx, uint32_t
|
|||
AssertReleaseFailed();
|
||||
}
|
||||
|
||||
if ( (pThis->pCfg->fFlags & RTSCRIPT_LEX_CFG_F_CASE_INSENSITIVE)
|
||||
&& !(fFlags & RTSCRIPT_LEX_CONV_F_NOTHING))
|
||||
if (!(fFlags & RTSCRIPT_LEX_CONV_F_NOTHING))
|
||||
{
|
||||
if (pThis->pCfg->fFlags & RTSCRIPT_LEX_CFG_F_CASE_INSENSITIVE_LOWER)
|
||||
ch = RT_C_TO_LOWER(ch);
|
||||
else if (pThis->pCfg->fFlags & RTSCRIPT_LEX_CFG_F_CASE_INSENSITIVE_UPPER)
|
||||
ch = RT_C_TO_UPPER(ch);
|
||||
}
|
||||
|
||||
return ch;
|
||||
}
|
||||
|
@ -879,9 +1165,12 @@ RTDECL(void) RTScriptLexSkipWhitespace(RTSCRIPTLEX hScriptLex)
|
|||
const char *pszWs = pThis->pCfg->pszWhitespace ? pThis->pCfg->pszWhitespace : g_szWsDef;
|
||||
|
||||
if ( rtScriptLexLocateChInStrConsume(pThis, ch, pszWs)
|
||||
|| rtScriptLexIsNewlineConsume(pThis, ch)
|
||||
|| rtScriptLexIsMultiLineCommentConsume(pThis, ch)
|
||||
|| rtScriptLexIsSingleLineCommentConsume(pThis, ch))
|
||||
|| rtScriptLexIsNewlineConsume(pThis, ch))
|
||||
continue;
|
||||
|
||||
if ( !(pThis->pCfg->fFlags & RTSCRIPT_LEX_CFG_F_COMMENTS_AS_TOKENS)
|
||||
&& ( rtScriptLexIsMultiLineCommentConsume(pThis, ch)
|
||||
|| rtScriptLexIsSingleLineCommentConsume(pThis, ch)))
|
||||
continue;
|
||||
|
||||
/* All white space skipped, next is some real content. */
|
||||
|
@ -913,7 +1202,7 @@ RTDECL(int) RTScriptLexScanNumber(RTSCRIPTLEX hScriptLex, uint8_t uBase, bool fA
|
|||
{
|
||||
/* Some hex prefix? */
|
||||
char chNext = RTScriptLexPeekCh(hScriptLex, 1);
|
||||
if (chNext == 'x')
|
||||
if (chNext == 'x' || chNext == 'X')
|
||||
{
|
||||
uBase = 16;
|
||||
RTScriptLexConsumeCh(hScriptLex);
|
||||
|
@ -928,7 +1217,9 @@ RTDECL(int) RTScriptLexScanNumber(RTSCRIPTLEX hScriptLex, uint8_t uBase, bool fA
|
|||
for (;;)
|
||||
{
|
||||
if ( (ch < '0' || ch > '9')
|
||||
&& (ch < 'a' || ch > 'f' || uBase == 10))
|
||||
&& ( ( !(ch >= 'a' && ch <= 'f')
|
||||
&& !(ch >= 'A' && ch <= 'F'))
|
||||
|| uBase == 10))
|
||||
{
|
||||
if (pTok->Type.Number.enmType == RTSCRIPTLEXTOKNUMTYPE_INTEGER)
|
||||
pTok->Type.Number.Type.i64 = -(int64_t)u64;
|
||||
|
@ -946,6 +1237,11 @@ RTDECL(int) RTScriptLexScanNumber(RTSCRIPTLEX hScriptLex, uint8_t uBase, bool fA
|
|||
Assert(uBase == 16);
|
||||
u64 = (u64 << 4) + 10 + (ch - 'a');
|
||||
}
|
||||
else if (ch >= 'A' && ch <= 'F')
|
||||
{
|
||||
Assert(uBase == 16);
|
||||
u64 = (u64 << 4) + 10 + (ch - 'A');
|
||||
}
|
||||
|
||||
ch = RTScriptLexConsumeCh(hScriptLex);
|
||||
}
|
||||
|
@ -973,13 +1269,13 @@ RTDECL(int) RTScriptLexScanIdentifier(RTSCRIPTLEX hScriptLex, char ch,
|
|||
|
||||
if ( idx == sizeof(aszIde) - 1
|
||||
&& rtScriptLexLocateChInStrConsume(hScriptLex, ch, pszCharSet))
|
||||
return rtScriptLexProduceTokError(hScriptLex, pTok, VERR_BUFFER_OVERFLOW, "Lexer: Identifier exceeds the allowed length");
|
||||
return RTScriptLexProduceTokError(hScriptLex, pTok, VERR_BUFFER_OVERFLOW, "Lexer: Identifier exceeds the allowed length");
|
||||
|
||||
/* Insert into string cache. */
|
||||
pTok->enmType = RTSCRIPTLEXTOKTYPE_IDENTIFIER;
|
||||
pTok->Type.Id.pszIde = RTStrCacheEnterN(pThis->hStrCacheId, &aszIde[0], idx);
|
||||
if (RT_UNLIKELY(!pTok->Type.Id.pszIde))
|
||||
return rtScriptLexProduceTokError(hScriptLex, pTok, VERR_NO_STR_MEMORY, "Lexer: Out of memory inserting identifier into string cache");
|
||||
return RTScriptLexProduceTokError(hScriptLex, pTok, VERR_NO_STR_MEMORY, "Lexer: Out of memory inserting identifier into string cache");
|
||||
|
||||
pTok->PosEnd = pThis->Pos;
|
||||
return VINF_SUCCESS;
|
||||
|
@ -1004,7 +1300,7 @@ static int rtScriptLexScanStringLiteralChAdd(PRTSCRIPTLEXINT pThis, char ch, uin
|
|||
{
|
||||
/* Increase memory. */
|
||||
size_t cchMaxNew = pThis->cchStrLitMax + 64;
|
||||
char *pszNew = NULL;
|
||||
char *pszNew = pThis->pszStrLit;
|
||||
rc = RTStrRealloc(&pszNew, cchMaxNew * sizeof(char));
|
||||
if (RT_SUCCESS(rc))
|
||||
{
|
||||
|
@ -1033,29 +1329,31 @@ RTDECL(int) RTScriptLexScanStringLiteralC(RTSCRIPTLEX hScriptLex, char ch,
|
|||
uint32_t idxChCur = 0;
|
||||
int rc = rtScriptLexScanStringLiteralChAdd(pThis, '\0', idxChCur);
|
||||
if (RT_FAILURE(rc))
|
||||
return rtScriptLexProduceTokError(hScriptLex, pTok, rc, "Lexer: Error adding character to string literal");
|
||||
return RTScriptLexProduceTokError(hScriptLex, pTok, rc, "Lexer: Error adding character to string literal");
|
||||
|
||||
ch = RTScriptLexGetCh(hScriptLex);
|
||||
ch = RTScriptLexGetChEx(hScriptLex, RTSCRIPT_LEX_CONV_F_NOTHING);
|
||||
for (;;)
|
||||
{
|
||||
if (ch == '\0')
|
||||
return rtScriptLexProduceTokError(hScriptLex, pTok, VERR_EOF, "Lexer: End of stream before closing string literal terminal");
|
||||
return RTScriptLexProduceTokError(hScriptLex, pTok, VERR_EOF, "Lexer: End of stream before closing string literal terminal");
|
||||
else if (ch == '\"')
|
||||
{
|
||||
RTScriptLexConsumeCh(hScriptLex);
|
||||
|
||||
/* End of string, add it to the string literal cache and build the token. */
|
||||
pTok->enmType = RTSCRIPTLEXTOKTYPE_STRINGLIT;
|
||||
pTok->Type.StringLit.cchString = idxChCur;
|
||||
pTok->Type.StringLit.pszString = RTStrCacheEnterN(pThis->hStrCacheStringLit, pThis->pszStrLit, idxChCur);
|
||||
if (RT_UNLIKELY(!pTok->Type.StringLit.pszString))
|
||||
return rtScriptLexProduceTokError(hScriptLex, pTok, VERR_NO_STR_MEMORY, "Lexer: Error adding string literal to the cache");
|
||||
return RTScriptLexProduceTokError(hScriptLex, pTok, VERR_NO_STR_MEMORY, "Lexer: Error adding string literal to the cache");
|
||||
else
|
||||
break;
|
||||
}
|
||||
else if (ch == '\\')
|
||||
{
|
||||
/* Start of escape sequence. */
|
||||
RTScriptLexConsumeCh(hScriptLex);
|
||||
ch = RTScriptLexGetCh(hScriptLex);
|
||||
RTScriptLexConsumeChEx(hScriptLex, RTSCRIPT_LEX_CONV_F_NOTHING);
|
||||
ch = RTScriptLexGetChEx(hScriptLex, RTSCRIPT_LEX_CONV_F_NOTHING);
|
||||
switch (ch)
|
||||
{
|
||||
case 'a': /* Alert (Bell) */
|
||||
|
@ -1103,7 +1401,7 @@ RTDECL(int) RTScriptLexScanStringLiteralC(RTSCRIPTLEX hScriptLex, char ch,
|
|||
case 'U': /* Unicode point */
|
||||
default:
|
||||
/* Not supported for now. */
|
||||
return rtScriptLexProduceTokError(hScriptLex, pTok, VERR_NOT_SUPPORTED, "Lexer: Invalid/unsupported escape sequence");
|
||||
return RTScriptLexProduceTokError(hScriptLex, pTok, VERR_NOT_SUPPORTED, "Lexer: Invalid/unsupported escape sequence");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1111,7 +1409,7 @@ RTDECL(int) RTScriptLexScanStringLiteralC(RTSCRIPTLEX hScriptLex, char ch,
|
|||
if (RT_SUCCESS(rc))
|
||||
idxChCur++;
|
||||
else
|
||||
return rtScriptLexProduceTokError(hScriptLex, pTok, rc, "Lexer: Error adding character to string literal");
|
||||
return RTScriptLexProduceTokError(hScriptLex, pTok, rc, "Lexer: Error adding character to string literal");
|
||||
|
||||
ch = RTScriptLexConsumeChEx(hScriptLex, RTSCRIPT_LEX_CONV_F_NOTHING);
|
||||
}
|
||||
|
@ -1131,13 +1429,13 @@ RTDECL(int) RTScriptLexScanStringLiteralPascal(RTSCRIPTLEX hScriptLex, char ch,
|
|||
uint32_t idxChCur = 0;
|
||||
int rc = rtScriptLexScanStringLiteralChAdd(pThis, '\0', idxChCur);
|
||||
if (RT_FAILURE(rc))
|
||||
return rtScriptLexProduceTokError(hScriptLex, pTok, rc, "Lexer: Error adding character to string literal");
|
||||
return RTScriptLexProduceTokError(hScriptLex, pTok, rc, "Lexer: Error adding character to string literal");
|
||||
|
||||
ch = RTScriptLexGetChEx(hScriptLex, RTSCRIPT_LEX_CONV_F_NOTHING);
|
||||
for (;;)
|
||||
{
|
||||
if (ch == '\0')
|
||||
return rtScriptLexProduceTokError(hScriptLex, pTok, VERR_EOF, "Lexer: End of stream before closing string literal terminal");
|
||||
return RTScriptLexProduceTokError(hScriptLex, pTok, VERR_EOF, "Lexer: End of stream before closing string literal terminal");
|
||||
else if (ch == '\'')
|
||||
{
|
||||
/*
|
||||
|
@ -1152,7 +1450,7 @@ RTDECL(int) RTScriptLexScanStringLiteralPascal(RTSCRIPTLEX hScriptLex, char ch,
|
|||
pTok->Type.StringLit.cchString = idxChCur;
|
||||
pTok->Type.StringLit.pszString = RTStrCacheEnterN(pThis->hStrCacheStringLit, pThis->pszStrLit, idxChCur);
|
||||
if (RT_UNLIKELY(!pTok->Type.StringLit.pszString))
|
||||
return rtScriptLexProduceTokError(hScriptLex, pTok, VERR_NO_STR_MEMORY, "Lexer: Error adding string literal to the cache");
|
||||
return RTScriptLexProduceTokError(hScriptLex, pTok, VERR_NO_STR_MEMORY, "Lexer: Error adding string literal to the cache");
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
@ -1163,7 +1461,7 @@ RTDECL(int) RTScriptLexScanStringLiteralPascal(RTSCRIPTLEX hScriptLex, char ch,
|
|||
if (RT_SUCCESS(rc))
|
||||
idxChCur++;
|
||||
else
|
||||
return rtScriptLexProduceTokError(hScriptLex, pTok, rc, "Lexer: Error adding character to string literal");
|
||||
return RTScriptLexProduceTokError(hScriptLex, pTok, rc, "Lexer: Error adding character to string literal");
|
||||
ch = RTScriptLexConsumeChEx(hScriptLex, RTSCRIPT_LEX_CONV_F_NOTHING);
|
||||
}
|
||||
|
||||
|
|
|
@ -62,6 +62,18 @@
|
|||
# define PAGE_READONLY_EXEC PAGE_READONLY
|
||||
#endif
|
||||
|
||||
#if RTLNX_VER_MIN(2,6,0)
|
||||
# ifdef __GFP_REPEAT
|
||||
# define MY_GFP_REPEAT __GFP_REPEAT
|
||||
# elif defined (__GFP_RETRY_MAYFAIL) /* Renamed in commit dcda9b04713c3f6ff0875652924844fae28286ea . */
|
||||
# define MY_GFP_REPEAT __GFP_RETRY_MAYFAIL
|
||||
# else /* This is to notice when the flags are renamed/moved around again. */
|
||||
# error "Was this flag renamed again?"
|
||||
# endif
|
||||
# else
|
||||
# define MY_GFP_REPEAT 0
|
||||
#endif
|
||||
|
||||
/** @def IPRT_USE_ALLOC_VM_AREA_FOR_EXEC
|
||||
* Whether we use alloc_vm_area (3.2+) for executable memory.
|
||||
* This is a must for 5.8+, but we enable it all the way back to 3.2.x for
|
||||
|
@ -411,10 +423,8 @@ static int rtR0MemObjLinuxAllocPages(PRTR0MEMOBJLNX *ppMemLnx, RTR0MEMOBJTYPE en
|
|||
|
||||
if (cPages > 255)
|
||||
{
|
||||
# ifdef __GFP_REPEAT
|
||||
/* Try hard to allocate the memory, but the allocation attempt might fail. */
|
||||
fFlagsLnx |= __GFP_REPEAT;
|
||||
# endif
|
||||
fFlagsLnx |= MY_GFP_REPEAT;
|
||||
# ifdef __GFP_NOMEMALLOC
|
||||
/* Introduced with Linux 2.6.12: Don't use emergency reserves */
|
||||
fFlagsLnx |= __GFP_NOMEMALLOC;
|
||||
|
@ -989,13 +999,13 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocLow(PPRTR0MEMOBJINTERNAL ppMem, size_t cb,
|
|||
/* Try to avoid GFP_DMA. GFM_DMA32 was introduced with Linux 2.6.15. */
|
||||
#if (defined(RT_ARCH_AMD64) || defined(CONFIG_X86_PAE)) && defined(GFP_DMA32)
|
||||
/* ZONE_DMA32: 0-4GB */
|
||||
rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_LOW, cb, PAGE_SIZE, GFP_DMA32,
|
||||
rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_LOW, cb, PAGE_SIZE, GFP_KERNEL | GFP_DMA32,
|
||||
false /* non-contiguous */, fExecutable, VERR_NO_LOW_MEMORY, pszTag);
|
||||
if (RT_FAILURE(rc))
|
||||
#endif
|
||||
#ifdef RT_ARCH_AMD64
|
||||
/* ZONE_DMA: 0-16MB */
|
||||
rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_LOW, cb, PAGE_SIZE, GFP_DMA,
|
||||
rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_LOW, cb, PAGE_SIZE, GFP_KERNEL | GFP_DMA,
|
||||
false /* non-contiguous */, fExecutable, VERR_NO_LOW_MEMORY, pszTag);
|
||||
#else
|
||||
# ifdef CONFIG_X86_PAE
|
||||
|
|
|
@ -422,7 +422,11 @@ static void rtTimerLnxStopSubTimer(PRTTIMERLNXSUBTIMER pSubTimer, bool fHighRes)
|
|||
}
|
||||
else
|
||||
#endif
|
||||
# if RTLNX_VER_MIN(6,15,0)
|
||||
timer_delete(&pSubTimer->u.Std.LnxTimer);
|
||||
#else
|
||||
del_timer(&pSubTimer->u.Std.LnxTimer);
|
||||
#endif
|
||||
|
||||
rtTimerLnxSetState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED);
|
||||
}
|
||||
|
@ -470,7 +474,11 @@ static void rtTimerLnxDestroyIt(PRTTIMER pTimer)
|
|||
hrtimer_cancel(&pTimer->aSubTimers[iCpu].u.Hr.LnxTimer);
|
||||
else
|
||||
#endif
|
||||
# if RTLNX_VER_MIN(6,15,0)
|
||||
timer_delete_sync(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer);
|
||||
#else
|
||||
del_timer_sync(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1626,8 +1634,13 @@ RTDECL(int) RTTimerCreateEx(PRTTIMER *ppTimer, uint64_t u64NanoInterval, uint32_
|
|||
#ifdef RTTIMER_LINUX_WITH_HRTIMER
|
||||
if (pTimer->fHighRes)
|
||||
{
|
||||
#if RTLNX_VER_MIN(6,15,0)
|
||||
hrtimer_setup(&pTimer->aSubTimers[iCpu].u.Hr.LnxTimer,
|
||||
rtTimerLinuxHrCallback, CLOCK_MONOTONIC, HRTIMER_MODE_ABS);
|
||||
#else
|
||||
hrtimer_init(&pTimer->aSubTimers[iCpu].u.Hr.LnxTimer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS);
|
||||
pTimer->aSubTimers[iCpu].u.Hr.LnxTimer.function = rtTimerLinuxHrCallback;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
#endif
|
||||
|
|
|
@ -97,7 +97,7 @@ DECLHIDDEN(int) rtldrNativeLoad(const char *pszFilename, uintptr_t *phHandle, ui
|
|||
}
|
||||
|
||||
const char *pszDlError = dlerror();
|
||||
RTErrInfoSet(pErrInfo, VERR_FILE_NOT_FOUND, pszDlError);
|
||||
RTErrInfoSet(pErrInfo, VERR_FILE_NOT_FOUND, RT_VALID_PTR(pszDlError) ? pszDlError : "unknown dlopen error");
|
||||
LogRel(("rtldrNativeLoad: dlopen('%s', RTLD_NOW | RTLD_LOCAL) failed: %s\n", pszFilename, pszDlError));
|
||||
return VERR_FILE_NOT_FOUND;
|
||||
}
|
||||
|
|
|
@ -152,6 +152,7 @@
|
|||
OPENSSL_sk_pop_free
|
||||
OPENSSL_sk_value
|
||||
PEM_read_bio_DHparams
|
||||
PEM_read_bio_Parameters
|
||||
RAND_load_file
|
||||
RAND_seed
|
||||
RAND_status
|
||||
|
@ -166,6 +167,7 @@
|
|||
SSL_CTX_get_cert_store
|
||||
;exported above: SSL_CTX_load_verify_locations
|
||||
;exported above: SSL_CTX_new
|
||||
SSL_CTX_set0_tmp_dh_pkey
|
||||
SSL_CTX_set_client_CA_list
|
||||
SSL_CTX_set_default_passwd_cb
|
||||
SSL_CTX_set_default_passwd_cb_userdata
|
||||
|
|
|
@ -1871,7 +1871,7 @@ static void xmlParserBaseGenericError(void *pCtx, const char *pszMsg, ...) RT_NO
|
|||
va_end(args);
|
||||
}
|
||||
|
||||
#if LIBXML_VERSION >= 21206
|
||||
#if LIBXML_VERSION >= 21205
|
||||
static void xmlStructuredErrorFunc(void *userData, const xmlError *error) RT_NOTHROW_DEF
|
||||
{
|
||||
NOREF(userData);
|
||||
|
@ -1893,7 +1893,7 @@ XmlParserBase::XmlParserBase()
|
|||
throw std::bad_alloc();
|
||||
/* per-thread so it must be here */
|
||||
xmlSetGenericErrorFunc(NULL, xmlParserBaseGenericError);
|
||||
#if LIBXML_VERSION >= 21206
|
||||
#if LIBXML_VERSION >= 21205
|
||||
xmlSetStructuredErrorFunc(NULL, xmlStructuredErrorFunc);
|
||||
#else
|
||||
xmlSetStructuredErrorFunc(NULL, xmlParserBaseStructuredError);
|
||||
|
|
|
@ -75,6 +75,16 @@ static DECLCALLBACK(int) vmmR3ReservedVTableEntry(void)
|
|||
}
|
||||
|
||||
|
||||
#ifndef VBOX_WITH_DEBUGGER
|
||||
/** Stub */
|
||||
DBGDECL(int) DBGCCreate(PUVM pUVM, PCDBGCIO pIo, unsigned fFlags)
|
||||
{
|
||||
RT_NOREF(pUVM, pIo, fFlags);
|
||||
return VERR_NOT_IMPLEMENTED;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
VMMR3DECL(PCVMMR3VTABLE) VMMR3GetVTable(void)
|
||||
{
|
||||
return &g_VMMR3VTable;
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version = '1.0' encoding = 'UTF-8'?>
|
||||
<BusinessInfoDesign class="oracle.dbtools.crest.model.businessinfo.BusinessInfoDesign" name="Business Information" id="AC352001-3FCC-F844-94E1-59B2CC5ECF63">
|
||||
<createdBy>bird</createdBy>
|
||||
<createdTime>2012-08-20 21:58:45 UTC</createdTime>
|
||||
<ownerDesignName>TestManagerDatabase</ownerDesignName>
|
||||
<shouldBeOpen>false</shouldBeOpen>
|
||||
</BusinessInfoDesign>
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version = '1.0' encoding = 'UTF-8'?>
|
||||
<ProcessModel class="oracle.dbtools.crest.model.design.process.ProcessModel" name="Process Model" id="B8A699A3-D4EE-EEEE-EA69-30AAE2347CF5">
|
||||
<createdBy>bird</createdBy>
|
||||
<createdTime>2012-08-20 21:58:45 UTC</createdTime>
|
||||
<ownerDesignName>TestManagerDatabase</ownerDesignName>
|
||||
<shouldBeOpen>false</shouldBeOpen>
|
||||
</ProcessModel>
|
|
@ -109,7 +109,7 @@ if !defined(VBOX_ONLY_SDK) \
|
|||
&& (!defined(VBOX_ONLY_ADDITIONS) || !defined(VBOX_ONLY_ADDITIONS_WITHOUT_RTISOMAKER)) \
|
||||
&& (!defined(VBOX_ONLY_EXTPACKS) || defined(VBOX_NEED_EXTPACK_OPENSSL) || defined(VBOX_WITH_BLD_RTSIGNTOOL_SIGNING) || !defined(VBOX_ONLY_EXTPACKS_USE_IMPLIBS)) \
|
||||
&& ("$(SDK_VBoxOpenSslStatic_INCS)" == "$(SDK_VBoxOpenSslStatic_VBOX_DEFAULT_INCS)" || defined(VBOX_NEED_EXTPACK_OPENSSL))
|
||||
include $(PATH_SUB_CURRENT)/openssl-3.3.2/Makefile.kmk
|
||||
include $(PATH_SUB_CURRENT)/openssl-3.4.1/Makefile.kmk
|
||||
endif
|
||||
|
||||
|
||||
|
@ -133,8 +133,8 @@ endif
|
|||
# liblzma is used by the IPRT compression code and the iPXE ROM tool.
|
||||
if defined(VBOX_WITH_LIBLZMA) \
|
||||
&& !defined(VBOX_ONLY_SDK) \
|
||||
&& "$(SDK_VBoxLibLzma_INCS)" == "$(PATH_ROOT)/src/libs/liblzma-5.4.1/api"
|
||||
include $(PATH_SUB_CURRENT)/liblzma-5.4.1/Makefile.kmk
|
||||
&& "$(SDK_VBoxLibLzma_INCS)" == "$(PATH_ROOT)/src/libs/liblzma-5.8.1/api"
|
||||
include $(PATH_SUB_CURRENT)/liblzma-5.8.1/Makefile.kmk
|
||||
endif
|
||||
|
||||
|
||||
|
|
|
@ -229,26 +229,19 @@ endif
|
|||
#
|
||||
# Template for building XPCOM executables for running at build time.
|
||||
#
|
||||
# It extends the BLDPROG template in config.kmk but overrides CFLAGS
|
||||
# and CXXFLAGS completely at the moment.
|
||||
#
|
||||
TEMPLATE_XPComBldProg = XPCOM Build programs executables
|
||||
TEMPLATE_XPComBldProg_EXTENDS = VBoxAdvBldProg
|
||||
TEMPLATE_XPComBldProg_DEFS.$(KBUILD_HOST) = $(TEMPLATE_VBoxAdvBldProg_DEFS.$(KBUILD_HOST)) $(TEMPLATE_XPComExe_DEFS.$(KBUILD_HOST))
|
||||
TEMPLATE_XPComBldProg_DEFS.x86 = $(TEMPLATE_VBoxAdvBldProg_DEFS.x86) $(TEMPLATE_XPComExe_DEFS.x86)
|
||||
TEMPLATE_XPComBldProg_DEFS.amd64 = $(TEMPLATE_VBoxAdvBldProg_DEFS.amd64) $(TEMPLATE_XPComExe_DEFS.amd64)
|
||||
TEMPLATE_XPComBldProg_DEFS.arm64 = $(TEMPLATE_VBoxAdvBldProg_DEFS.arm64) $(TEMPLATE_XPComExe_DEFS.arm64)
|
||||
TEMPLATE_XPComBldProg_CFLAGS += -std=c99
|
||||
TEMPLATE_XPComBldProg_INCS = \
|
||||
$(VBOX_PATH_SDK)/bindings/xpcom/include \
|
||||
$(VBOX_PATH_SDK)/bindings/xpcom/include/nsprpub \
|
||||
$(VBOX_PATH_SDK)/bindings/xpcom/include/string \
|
||||
$(VBOX_PATH_SDK)/bindings/xpcom/include/xpcom \
|
||||
$(VBOX_PATH_SDK)/bindings/xpcom/include/ipcd
|
||||
TEMPLATE_XPComBldProg_CFLAGS = $(filter-out $(VBOX_GCC_PEDANTIC_C), $(TEMPLATE_VBoxAdvBldProg_CFLAGS)) \
|
||||
$(VBOX_GCC_Wno-int-to-pointer-cast) $(VBOX_GCC_Wno-pointer-to-int-cast) $(VBOX_GCC_NON_PEDANTIC_C)
|
||||
TEMPLATE_XPComBldProg_CXXFLAGS.darwin = $(TEMPLATE_VBoxAdvBldProg_CXXFLAGS.darwin) -fpascal-strings -fshort-wchar -fno-common -fno-rtti
|
||||
TEMPLATE_XPComBldProg_CXXFLAGS.solaris = $(TEMPLATE_VBoxAdvBldProg_CXXFLAGS.solaris) -fno-omit-frame-pointer # for now anyway.
|
||||
TEMPLATE_XPComBldProg_LDFLAGS.darwin = $(TEMPLATE_VBoxAdvBldProg_LDFLAGS.darwin) -fpascal-strings -fshort-wchar -fno-rtti -fno-exceptions
|
||||
TEMPLATE_XPComBldProg_ORDERDEPS = $(foreach hdrinst, $(filter %-HEADERS, $(INSTALLS)), $($(hdrinst)_1_TARGET))
|
||||
TEMPLATE_XPComBldProg_LIBS.darwin = \
|
||||
iconv
|
||||
|
|
|
@ -304,53 +304,17 @@ xpidl_TEMPLATE = XPComBldProg
|
|||
xpidl_DEFS = EXPORT_XPT_API
|
||||
## @todo This assumes HOST == TARGET.
|
||||
xpidl_INST = $(INST_BIN)
|
||||
## Obsolete hack: MacPorts is 32-bit on 10.5 and 64-bit on 10.6. Set your KBUILD_HOST_ARCH env.vars. accordingly.
|
||||
#if "$(KBUILD_HOST).$(KBUILD_HOST_ARCH)" == "darwin.amd64" && defined(VBOX_MACOS_10_5_WORKAROUND)
|
||||
# xpidl_BLD_TRG_ARCH = x86
|
||||
# ## @todo kBuild ticket 84 workarounds:
|
||||
# xpidl_DEFS.x86 = $(TEMPLATE_XPComBldProg_DEFS.x86)
|
||||
# xpidl_CFLAGS.x86 = $(TEMPLATE_XPComBldProg_CFLAGS.x86)
|
||||
# xpidl_CXXFLAGS.x86 = $(TEMPLATE_XPComBldProg_CXXFLAGS.x86)
|
||||
# xpidl_LDFLAGS.x86 = $(TEMPLATE_XPComBldProg_LDFLAGS.x86)
|
||||
#endif
|
||||
ifdef VBOX_WITH_JAVA_SUPPORT_IN_XPIDL
|
||||
xpidl_DEFS += VBOX_XPIDL_EMULATE_GENJIFACES VBOX_XPIDL_EMULATE_GENJIFACES_DIFF
|
||||
endif
|
||||
xpidl_SOURCES = \
|
||||
xpcom/typelib/xpidl/xpidl.c \
|
||||
xpcom/typelib/xpidl/xpidl_idl.c \
|
||||
xpcom/typelib/xpidl/xpidl_util.c \
|
||||
xpcom/typelib/xpidl/xpidl_header.c \
|
||||
xpcom/typelib/xpidl/xpidl_typelib.c \
|
||||
xpcom/typelib/xpidl/xpidl_doc.c \
|
||||
xpcom/typelib/xpidl/xpidl_java.c \
|
||||
xpcom/typelib/xpt/src/xpt_arena.c \
|
||||
xpcom/typelib/xpt/src/xpt_struct.c \
|
||||
xpcom/typelib/xpt/src/xpt_xdr.c
|
||||
xpcom/typelib/xpt/src/xpt_xdr.c \
|
||||
../../VBox/Runtime/common/script/scriptlex.cpp
|
||||
|
||||
# We do these ONCE.
|
||||
libIDL_config_cflags := $(shell $(VBOX_LIBIDL_CONFIG) --cflags)
|
||||
libIDL_config_libs := $(shell $(VBOX_LIBIDL_CONFIG) --libs)
|
||||
xpidl_CFLAGS = \
|
||||
$(libIDL_config_cflags)
|
||||
if1of ($(KBUILD_HOST), linux solaris)
|
||||
xpidl_LDFLAGS = \
|
||||
$(filter-out -l%,$(libIDL_config_libs))
|
||||
xpidl_LIBS.$(KBUILD_HOST) += \
|
||||
$(subst -l,,$(filter -l%,$(libIDL_config_libs)))
|
||||
else
|
||||
ifeq ($(KBUILD_HOST),darwin)
|
||||
# Need to put the SDK /usr/lib before the libIDL path to make it pick the system iconv
|
||||
xpidl_LDFLAGS = \
|
||||
-L$(VBOX_PATH_MACOSX_SDK)/usr/lib \
|
||||
$(libIDL_config_libs)
|
||||
else
|
||||
xpidl_LDFLAGS = \
|
||||
$(libIDL_config_libs)
|
||||
endif
|
||||
endif
|
||||
xpidl_LDFLAGS.linux = \
|
||||
$(VBOX_LD_as_needed)
|
||||
|
||||
#
|
||||
# The XPT linker.
|
||||
|
|
|
@ -91,11 +91,7 @@ INSTALLS += VBoxJXpcom-inst-jar
|
|||
|
||||
VBOX_JXPCOM_JAR = $(VBoxJXpcom-inst-jar_0_OUTDIR)/vboxjxpcom.jar
|
||||
VBOX_JXPCOM_NSERROR = $(VBOX_JXPCOM_GEN)/java/XPCOMError.java
|
||||
ifndef VBOX_WITH_JAVA_SUPPORT_IN_XPIDL
|
||||
VBOX_JXPCOM_GEN = $(VBOX_JXPCOM_TARGET)/jxpcomgen
|
||||
else
|
||||
VBOX_JXPCOM_GEN = $(VBOX_JXPCOM_TARGET)/jxpcomgen-idl
|
||||
endif
|
||||
VBOX_JXPCOM_GEN = $(VBOX_JXPCOM_TARGET)/jxpcomgen
|
||||
|
||||
VBoxJXpcom-inst-jar_INST = $(INST_SDK)bindings/xpcom/java/
|
||||
VBoxJXpcom-inst-jar_MODE = a+r,u+w
|
||||
|
@ -138,12 +134,10 @@ $(VBOX_JXPCOM_NSERROR): $(VBOX_PATH_XPCOM_SRC)/xpcom/base/nsError.h $(VBOX_JXPCO
|
|||
$(call MSG_L1,Generating $@)
|
||||
$(QUIET)perl $(VBOX_JXPCOM_SRC)/tools/gen-nsError.pl < $< > $@
|
||||
|
||||
ifndef VBOX_WITH_JAVA_SUPPORT_IN_XPIDL
|
||||
#
|
||||
# Generate .java interface files from .xidl
|
||||
#
|
||||
|
||||
$(VBOX_JXPCOM_GEN)/jxpcomgen.list: \
|
||||
#
|
||||
# Generate .java interface files from .xidl
|
||||
#
|
||||
$(VBOX_JXPCOM_GEN)/jxpcomgen.list: \
|
||||
$(VBOX_XIDL_FILE) \
|
||||
$(VBOX_FILESPLIT) \
|
||||
$(VBOX_JXPCOM_SRC)/tools/genjifaces.xsl \
|
||||
|
@ -155,24 +149,6 @@ ifndef VBOX_WITH_JAVA_SUPPORT_IN_XPIDL
|
|||
$(QUIET)$(VBOX_FILESPLIT) $(VBOX_JXPCOM_GEN)/java/interfaces/merged.file $(VBOX_JXPCOM_GEN)/java/interfaces
|
||||
$(QUIET)echo $(VBOX_JXPCOM_GEN)/java/interfaces/*.java > $@
|
||||
|
||||
else # VBOX_WITH_JAVA_SUPPORT_IN_XPIDL
|
||||
#
|
||||
# Generate .java interface files from the XPCOM and VirtualBox IDL files.
|
||||
#
|
||||
# Note! There is not a 1:1 relationship between input and output files here, unfortunately.
|
||||
# Note! VBOX_JXPCOM_NSERROR shares the output directory with us.
|
||||
#
|
||||
$(VBOX_JXPCOM_GEN)/jxpcomgen.list: \
|
||||
$(VBOX_PATH_SDK)/bindings/xpcom/idl/VirtualBox_XPCOM.idl \
|
||||
$$(addprefix $(VBOX_PATH_XPCOM_SRC)/,$$(XPCOM_IDLFILES)) \
|
||||
$(VBOX_XPIDL) \
|
||||
| $(VBOX_JXPCOM_GEN)/java/
|
||||
$(call MSG_L1,Generating XPCOM Java interface files from IDL)
|
||||
$(QUIET)$(RM) -f $(filter-out %/XPCOMError.java, $(wildcard $(VBOX_JXPCOM_GEN)/java/*.java))
|
||||
$(foreach idl, $(VBOX_PATH_SDK)/bindings/xpcom/idl/VirtualBox_XPCOM.idl $(addprefix $(VBOX_PATH_XPCOM_SRC)/,$(XPCOM_IDLFILES))\
|
||||
, $(NLTAB)$(QUIET)$(VBOX_XPIDL) -m java $(XPIDL_INCS) -e $(VBOX_JXPCOM_GEN)/java/$(basename $(notdir $(idl))).java $(idl) )
|
||||
$(QUIET)echo $(VBOX_JXPCOM_GEN)/java/*.java > $@
|
||||
endif # VBOX_WITH_JAVA_SUPPORT_IN_XPIDL
|
||||
|
||||
$(VBOX_JXPCOM_GEN)/jxpcomglue.list: \
|
||||
$(VBOX_XIDL_FILE) \
|
||||
|
|
|
@ -100,22 +100,22 @@ interface nsIClassInfo : nsISupports
|
|||
/**
|
||||
* Bitflags for 'flags' attribute.
|
||||
*/
|
||||
const PRUint32 SINGLETON = 1 << 0;
|
||||
const PRUint32 THREADSAFE = 1 << 1;
|
||||
const PRUint32 MAIN_THREAD_ONLY = 1 << 2;
|
||||
const PRUint32 DOM_OBJECT = 1 << 3;
|
||||
const PRUint32 PLUGIN_OBJECT = 1 << 4;
|
||||
const PRUint32 EAGER_CLASSINFO = 1 << 5;
|
||||
const PRUint32 SINGLETON = 0x01;
|
||||
const PRUint32 THREADSAFE = 0x02;
|
||||
const PRUint32 MAIN_THREAD_ONLY = 0x04;
|
||||
const PRUint32 DOM_OBJECT = 0x08;
|
||||
const PRUint32 PLUGIN_OBJECT = 0x10;
|
||||
const PRUint32 EAGER_CLASSINFO = 0x20;
|
||||
/**
|
||||
* 'flags' attribute bitflag: whether objects of this type implement
|
||||
* nsIContent.
|
||||
*/
|
||||
const PRUint32 CONTENT_NODE = 1 << 6;
|
||||
const PRUint32 CONTENT_NODE = 0x40;
|
||||
|
||||
// The high order bit is RESERVED for consumers of these flags.
|
||||
// No implementor of this interface should ever return flags
|
||||
// with this bit set.
|
||||
const PRUint32 RESERVED = 1 << 31;
|
||||
const PRUint32 RESERVED = 0x80000000;
|
||||
|
||||
|
||||
readonly attribute PRUint32 flags;
|
||||
|
|
|
@ -108,4 +108,4 @@ interface nsIComponentManager : nsISupports
|
|||
#include "nsComponentManagerUtils.h"
|
||||
#include "nsComponentManagerObsolete.h"
|
||||
#endif
|
||||
%} C++
|
||||
%}
|
||||
|
|
|
@ -347,5 +347,5 @@ interface nsIComponentManagerObsolete : nsISupports
|
|||
%{ C++
|
||||
/* include after the class def'n, because it needs to see it. */
|
||||
#include "nsComponentManagerUtils.h"
|
||||
%} C++
|
||||
%}
|
||||
|
||||
|
|
|
@ -131,7 +131,7 @@ PRBool nsDll::Load(void)
|
|||
#ifdef NS_BUILD_REFCNT_LOGGING
|
||||
nsTraceRefcntImpl::SetActivityIsLegal(PR_FALSE);
|
||||
#endif
|
||||
|
||||
#ifndef VBOX /* This is related to DEPENDENT_LIBS, which we've disabled. */
|
||||
// Load any library dependencies
|
||||
// The Component Loader Manager may hold onto some extra data
|
||||
// set by either the native component loader or the native
|
||||
|
@ -145,6 +145,7 @@ PRBool nsDll::Load(void)
|
|||
if (!manager)
|
||||
return PR_TRUE;
|
||||
|
||||
|
||||
nsXPIDLCString extraData;
|
||||
manager->GetOptionalData(m_dllSpec, nsnull, getter_Copies(extraData));
|
||||
|
||||
|
@ -220,12 +221,14 @@ PRBool nsDll::Load(void)
|
|||
}
|
||||
nsMemory::Free(buffer);
|
||||
}
|
||||
#endif /* !VBOX */
|
||||
|
||||
// load the component
|
||||
nsCOMPtr<nsILocalFile> lf(do_QueryInterface(m_dllSpec));
|
||||
NS_ASSERTION(lf, "nsIFile here must implement a nsILocalFile");
|
||||
lf->Load(&m_hMod);
|
||||
|
||||
#ifndef VBOX /* This is related to DEPENDENT_LIBS, which we've disabled. */
|
||||
// Unload any of library dependencies we loaded earlier. The assumption
|
||||
// here is that the component will have a "internal" reference count to
|
||||
// the dependency library we just loaded.
|
||||
|
@ -236,6 +239,7 @@ PRBool nsDll::Load(void)
|
|||
for (PRInt32 index = 0; index < arrayCount; index++)
|
||||
RTLdrClose((RTLDRMOD)dependentLibArray.ElementAt(index));
|
||||
}
|
||||
#endif /* !VBOX */
|
||||
|
||||
#ifdef NS_BUILD_REFCNT_LOGGING
|
||||
nsTraceRefcntImpl::SetActivityIsLegal(PR_TRUE);
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
Wed Dec 2 14:35:41 EST 1998
|
||||
|
||||
xpidl depends on Andrew Veliath and Elliot Lee's libIDL, a part of the
|
||||
GNOME ORBit C ORB. We currently require libIDL >= 0.6.3, which in turn
|
||||
requires glib >= 1.2.0.
|
||||
|
||||
libIDL builds for Linux and Win32 can be found, along with source
|
||||
tarballs, at http://www.rpi.edu/~veliaa/libIDL/, and Win32 users will
|
||||
need glib 1.2 and glib 1.2-dev from
|
||||
http://user.sgic.fi/~tml/gimp/win32/. Source and Linux RPMs are also
|
||||
available from ftp://ftp.mozilla.org/pub/mozilla/libraries, and Win32
|
||||
binaries are included in the wintools.zip file at
|
||||
ftp://ftp.mozilla.org/pub/mozilla/source/wintools.zip. A Mac project
|
||||
is in progress, and should be appearing shortly.
|
||||
|
||||
glib tarballs and RPMs for Linux can be found through http://www.gtk.org.
|
|
@ -45,8 +45,6 @@
|
|||
static ModeData modes[] = {
|
||||
{"header", "Generate C++ header", "h", xpidl_header_dispatch},
|
||||
{"typelib", "Generate XPConnect typelib", "xpt", xpidl_typelib_dispatch},
|
||||
{"doc", "Generate HTML documentation", "html", xpidl_doc_dispatch},
|
||||
{"java", "Generate Java interface", "java", xpidl_java_dispatch},
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
|
@ -61,11 +59,11 @@ FindMode(char *mode)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
gboolean enable_debug = FALSE;
|
||||
gboolean enable_warnings = FALSE;
|
||||
gboolean verbose_mode = FALSE;
|
||||
gboolean emit_typelib_annotations = FALSE;
|
||||
gboolean explicit_output_filename = FALSE;
|
||||
bool enable_debug = false;
|
||||
bool enable_warnings = false;
|
||||
bool verbose_mode = false;
|
||||
bool emit_typelib_annotations = false;
|
||||
bool explicit_output_filename = false;
|
||||
|
||||
/* The following globals are explained in xpt_struct.h */
|
||||
PRUint8 major_version = XPT_MAJOR_VERSION;
|
||||
|
@ -86,9 +84,9 @@ static char xpidl_usage_str[] =
|
|||
static void
|
||||
xpidl_usage(int argc, char *argv[])
|
||||
{
|
||||
int i;
|
||||
RT_NOREF(argc);
|
||||
fprintf(stderr, xpidl_usage_str, argv[0]);
|
||||
for (i = 0; modes[i].mode; i++) {
|
||||
for (int i = 0; modes[i].mode; i++) {
|
||||
fprintf(stderr, " %-12s %-30s (.%s)\n", modes[i].mode,
|
||||
modes[i].modeInfo, modes[i].suffix);
|
||||
}
|
||||
|
@ -99,18 +97,15 @@ int main(int argc, char *argv[])
|
|||
RTR3InitExeNoArguments(0);
|
||||
|
||||
int i;
|
||||
IncludePathEntry *inc, *inc_head, **inc_tail;
|
||||
RTLISTANCHOR LstIncludePaths;
|
||||
char *file_basename = NULL;
|
||||
ModeData *mode = NULL;
|
||||
gboolean create_old_typelib = FALSE;
|
||||
|
||||
/* turn this on for extra checking of our code */
|
||||
/* IDL_check_cast_enable(TRUE); */
|
||||
RTListInit(&LstIncludePaths);
|
||||
|
||||
inc_head = xpidl_malloc(sizeof *inc);
|
||||
inc_head->directory = ".";
|
||||
inc_head->next = NULL;
|
||||
inc_tail = &inc_head->next;
|
||||
PXPIDLINCLUDEDIR pInc = (PXPIDLINCLUDEDIR)xpidl_malloc(sizeof(*pInc));
|
||||
pInc->pszPath = ".";
|
||||
RTListAppend(&LstIncludePaths, &pInc->NdIncludes);
|
||||
|
||||
for (i = 1; i < argc; i++) {
|
||||
if (argv[i][0] != '-')
|
||||
|
@ -122,13 +117,13 @@ int main(int argc, char *argv[])
|
|||
case 0: /* - is a legal input filename (stdin) */
|
||||
goto done_options;
|
||||
case 'a':
|
||||
emit_typelib_annotations = TRUE;
|
||||
emit_typelib_annotations = true;
|
||||
break;
|
||||
case 'w':
|
||||
enable_warnings = TRUE;
|
||||
enable_warnings = true;
|
||||
break;
|
||||
case 'v':
|
||||
verbose_mode = TRUE;
|
||||
verbose_mode = true;
|
||||
break;
|
||||
case 't':
|
||||
{
|
||||
|
@ -146,15 +141,6 @@ int main(int argc, char *argv[])
|
|||
return 1;
|
||||
}
|
||||
|
||||
/* Do not allow more than one "-t" definition */
|
||||
if (create_old_typelib) {
|
||||
fprintf(stderr,
|
||||
"ERROR: -t argument used twice. "
|
||||
"Cannot specify more than one version\n");
|
||||
xpidl_usage(argc, argv);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Assume that the argument after "-t" is the version number string
|
||||
* and search for it in our internal list of acceptable version
|
||||
|
@ -165,8 +151,6 @@ int main(int argc, char *argv[])
|
|||
case XPT_VERSION_CURRENT:
|
||||
break;
|
||||
case XPT_VERSION_OLD:
|
||||
create_old_typelib = TRUE;
|
||||
break;
|
||||
case XPT_VERSION_UNSUPPORTED:
|
||||
fprintf(stderr, "ERROR: version \"%s\" not supported.\n",
|
||||
argv[i]);
|
||||
|
@ -187,20 +171,16 @@ int main(int argc, char *argv[])
|
|||
xpidl_usage(argc, argv);
|
||||
return 1;
|
||||
}
|
||||
inc = xpidl_malloc(sizeof *inc);
|
||||
pInc = (PXPIDLINCLUDEDIR)xpidl_malloc(sizeof(*pInc));
|
||||
if (argv[i][2] == '\0') {
|
||||
/* is it the -I foo form? */
|
||||
inc->directory = argv[++i];
|
||||
pInc->pszPath = argv[++i];
|
||||
} else {
|
||||
/* must be the -Ifoo form. Don't preincrement i. */
|
||||
inc->directory = argv[i] + 2;
|
||||
pInc->pszPath = argv[i] + 2;
|
||||
}
|
||||
#ifdef DEBUG_shaver_includes
|
||||
fprintf(stderr, "adding %s to include path\n", inc->directory);
|
||||
#endif
|
||||
inc->next = NULL;
|
||||
*inc_tail = inc;
|
||||
inc_tail = &inc->next;
|
||||
|
||||
RTListAppend(&LstIncludePaths, &pInc->NdIncludes);
|
||||
break;
|
||||
case 'o':
|
||||
if (i == argc) {
|
||||
|
@ -209,7 +189,7 @@ int main(int argc, char *argv[])
|
|||
return 1;
|
||||
}
|
||||
file_basename = argv[++i];
|
||||
explicit_output_filename = FALSE;
|
||||
explicit_output_filename = false;
|
||||
break;
|
||||
case 'e':
|
||||
if (i == argc) {
|
||||
|
@ -218,7 +198,7 @@ int main(int argc, char *argv[])
|
|||
return 1;
|
||||
}
|
||||
file_basename = argv[++i];
|
||||
explicit_output_filename = TRUE;
|
||||
explicit_output_filename = true;
|
||||
break;
|
||||
case 'm':
|
||||
if (i + 1 == argc) {
|
||||
|
@ -261,8 +241,12 @@ int main(int argc, char *argv[])
|
|||
* Don't try to process multiple files, given that we don't handle -o
|
||||
* multiply.
|
||||
*/
|
||||
if (xpidl_process_idl(argv[i], inc_head, file_basename, mode))
|
||||
int rc = xpidl_process_idl(argv[i], &LstIncludePaths, file_basename, mode);
|
||||
if (RT_SUCCESS(rc))
|
||||
return 0;
|
||||
|
||||
/** @todo Free include paths. */
|
||||
|
||||
printf("Failed to process IDL file\n");
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -42,100 +42,278 @@
|
|||
#ifndef __xpidl_h
|
||||
#define __xpidl_h
|
||||
|
||||
#include <iprt/errcore.h>
|
||||
#include <iprt/list.h>
|
||||
#include <iprt/script.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <glib.h>
|
||||
#include <string.h> /* After glib.h to avoid warnings about shadowing 'index'. */
|
||||
|
||||
#ifndef XP_MAC
|
||||
#include <libIDL/IDL.h>
|
||||
#else
|
||||
#include <IDL.h>
|
||||
#endif
|
||||
#include <string.h>
|
||||
|
||||
#include <xpt_struct.h>
|
||||
|
||||
#define XPIDL_WARNING(x) IDL_tree_warning x
|
||||
|
||||
/**
|
||||
* An include path.
|
||||
*/
|
||||
typedef struct XPIDLINCLUDEDIR
|
||||
{
|
||||
/** Node for the list of include paths. */
|
||||
RTLISTNODE NdIncludes;
|
||||
/** The zero terminated include path. */
|
||||
const char *pszPath;
|
||||
} XPIDLINCLUDEDIR;
|
||||
/** Pointer to an include path. */
|
||||
typedef XPIDLINCLUDEDIR *PXPIDLINCLUDEDIR;
|
||||
/** Pointer to a const include path. */
|
||||
typedef const XPIDLINCLUDEDIR *PCXPIDLINCLUDEDIR;
|
||||
|
||||
|
||||
/**
|
||||
* The input stream.
|
||||
*/
|
||||
typedef struct XPIDLINPUT
|
||||
{
|
||||
/** Node for the list of inputs. */
|
||||
RTLISTNODE NdInput;
|
||||
/** Node for the list of include. */
|
||||
RTLISTNODE NdInclude;
|
||||
/** The list of includes this input generated. */
|
||||
RTLISTANCHOR LstIncludes;
|
||||
/** The basename for this input. */
|
||||
char *pszBasename;
|
||||
/** The filename for this input. */
|
||||
char *pszFilename;
|
||||
/** The lexer instance for this input. */
|
||||
RTSCRIPTLEX hIdlLex;
|
||||
} XPIDLINPUT;
|
||||
/** Pointer to an input stream. */
|
||||
typedef XPIDLINPUT *PXPIDLINPUT;
|
||||
/** Pointer to a const input stream. */
|
||||
typedef const XPIDLINPUT *PCXPIDLINPUT;
|
||||
|
||||
|
||||
/**
|
||||
* IDL node type.
|
||||
*/
|
||||
typedef enum XPIDLNDTYPE
|
||||
{
|
||||
kXpidlNdType_Invalid = 0,
|
||||
kXpidlNdType_RawBlock,
|
||||
kXpidlNdType_Typedef,
|
||||
kXpidlNdType_BaseType,
|
||||
kXpidlNdType_Identifier,
|
||||
kXpidlNdType_Native,
|
||||
kXpidlNdType_Interface_Forward_Decl,
|
||||
kXpidlNdType_Interface_Def,
|
||||
kXpidlNdType_Attribute,
|
||||
kXpidlNdType_Method,
|
||||
kXpidlNdType_Parameter,
|
||||
kXpidlNdType_Const
|
||||
} XPIDLNDTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* IDL base type.
|
||||
*/
|
||||
typedef enum XPIDLTYPE
|
||||
{
|
||||
kXpidlType_Invalid = 0,
|
||||
kXpidlType_Void,
|
||||
kXpidlType_Boolean,
|
||||
kXpidlType_Octet,
|
||||
kXpidlType_Char,
|
||||
kXpidlType_Wide_Char,
|
||||
kXpidlType_Short,
|
||||
kXpidlType_Long,
|
||||
kXpidlType_Long_Long,
|
||||
kXpidlType_Unsigned_Short,
|
||||
kXpidlType_Unsigned_Long,
|
||||
kXpidlType_Unsigned_Long_Long,
|
||||
kXpidlType_String,
|
||||
kXpidlType_Wide_String,
|
||||
kXpidlType_Double,
|
||||
kXpidlType_Float,
|
||||
} XPIDLTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* IDL direction.
|
||||
*/
|
||||
typedef enum XPIDLDIRECTION
|
||||
{
|
||||
kXpidlDirection_Invalid = 0,
|
||||
kXpidlDirection_In,
|
||||
kXpidlDirection_InOut,
|
||||
kXpidlDirection_Out
|
||||
} XPIDLDIRECTION;
|
||||
|
||||
|
||||
/**
|
||||
* A node attribute.
|
||||
*/
|
||||
typedef struct XPIDLATTR
|
||||
{
|
||||
/** The attribute name. */
|
||||
const char *pszName;
|
||||
/** The value assigned if any. */
|
||||
const char *pszVal;
|
||||
} XPIDLATTR;
|
||||
/** Pointer to an attribute. */
|
||||
typedef XPIDLATTR *PXPIDLATTR;
|
||||
/** Pointer to a const attribute. */
|
||||
typedef const XPIDLATTR *PCXPIDLATTR;
|
||||
|
||||
|
||||
/** Pointer to an IDL node. */
|
||||
typedef struct XPIDLNODE *PXPIDLNODE;
|
||||
/** Pointer to a const IDL node. */
|
||||
typedef const struct XPIDLNODE *PCXPIDLNODE;
|
||||
|
||||
/**
|
||||
* IDL node.
|
||||
*/
|
||||
typedef struct XPIDLNODE
|
||||
{
|
||||
/** Node for the list this node is in. */
|
||||
RTLISTNODE NdLst;
|
||||
/** The parent node (if any). */
|
||||
PCXPIDLNODE pParent;
|
||||
/** The input stream this node was generated from (via #include's). */
|
||||
PCXPIDLINPUT pInput;
|
||||
/** The type this node references (for identifiers and the inheritance for interfaces only). */
|
||||
PCXPIDLNODE pNdTypeRef;
|
||||
/** The node type. */
|
||||
XPIDLNDTYPE enmType;
|
||||
/** Node type dependent data. */
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
const char *pszRaw;
|
||||
size_t cchRaw;
|
||||
} RawBlock;
|
||||
struct
|
||||
{
|
||||
PCXPIDLNODE pNodeTypeSpec;
|
||||
const char *pszName;
|
||||
} Typedef;
|
||||
XPIDLTYPE enmBaseType;
|
||||
const char *pszIde;
|
||||
struct
|
||||
{
|
||||
const char *pszName;
|
||||
const char *pszNative;
|
||||
} Native;
|
||||
const char *pszIfFwdName;
|
||||
struct
|
||||
{
|
||||
const char *pszIfName;
|
||||
const char *pszIfInherit;
|
||||
RTLISTANCHOR LstBody;
|
||||
} If;
|
||||
struct
|
||||
{
|
||||
bool fReadonly;
|
||||
PCXPIDLNODE pNdTypeSpec;
|
||||
const char *pszName;
|
||||
} Attribute;
|
||||
struct
|
||||
{
|
||||
PCXPIDLNODE pNdTypeSpecRet;
|
||||
const char *pszName;
|
||||
RTLISTANCHOR LstParams;
|
||||
} Method;
|
||||
struct
|
||||
{
|
||||
PCXPIDLNODE pNdTypeSpec;
|
||||
const char *pszName;
|
||||
XPIDLDIRECTION enmDir;
|
||||
} Param;
|
||||
struct
|
||||
{
|
||||
PCXPIDLNODE pNdTypeSpec;
|
||||
const char *pszName;
|
||||
uint64_t u64Const; /* Only allowing numbers for now. */
|
||||
} Const;
|
||||
} u;
|
||||
/** Number of entries in the attribute array. */
|
||||
uint32_t cAttrs;
|
||||
/** Node attributes array - variable in size. */
|
||||
XPIDLATTR aAttrs[1];
|
||||
} XPIDLNODE;
|
||||
|
||||
|
||||
/**
|
||||
* The IDL parsing state.
|
||||
*/
|
||||
typedef struct XPIDLPARSE
|
||||
{
|
||||
/** List of input files. */
|
||||
RTLISTANCHOR LstInputs;
|
||||
/** The list of XPIDL nodes from the root. */
|
||||
RTLISTANCHOR LstNodes;
|
||||
/** Extended error info. */
|
||||
RTERRINFOSTATIC ErrInfo;
|
||||
/** Current attributes parsed. */
|
||||
XPIDLATTR aAttrs[32];
|
||||
/** Number of entries in the attribute array. */
|
||||
uint32_t cAttrs;
|
||||
} XPIDLPARSE;
|
||||
/** Pointer to an IDL parsing state. */
|
||||
typedef XPIDLPARSE *PXPIDLPARSE;
|
||||
/** Pointer to a const IDL parsing state. */
|
||||
typedef const XPIDLPARSE *PCXPIDLPARSE;
|
||||
|
||||
|
||||
/*
|
||||
* Internal operation flags.
|
||||
*/
|
||||
extern gboolean enable_debug;
|
||||
extern gboolean enable_warnings;
|
||||
extern gboolean verbose_mode;
|
||||
extern gboolean emit_typelib_annotations;
|
||||
extern gboolean explicit_output_filename;
|
||||
extern bool enable_debug;
|
||||
extern bool enable_warnings;
|
||||
extern bool verbose_mode;
|
||||
extern bool emit_typelib_annotations;
|
||||
extern bool explicit_output_filename;
|
||||
|
||||
extern PRUint8 major_version;
|
||||
extern PRUint8 minor_version;
|
||||
|
||||
typedef struct TreeState TreeState;
|
||||
|
||||
/*
|
||||
* A function to handle an IDL_tree type.
|
||||
/**
|
||||
* Dispatch callback.
|
||||
*
|
||||
* @returns IPRT status code.
|
||||
* @param pFile The file to output to.
|
||||
* @param pInput The original input file to generate for.
|
||||
* @param pParse The parsing state.
|
||||
* @param pErrInfo Error information.
|
||||
*/
|
||||
typedef gboolean (*nodeHandler)(TreeState *);
|
||||
typedef DECLCALLBACKTYPE(int, FNXPIDLDISPATCH,(FILE *pFile, PCXPIDLINPUT pInput, PCXPIDLPARSE pParse, PRTERRINFO pErrInfo));
|
||||
/** Pointer to a dispatch callback. */
|
||||
typedef FNXPIDLDISPATCH *PFNXPIDLDISPATCH;
|
||||
|
||||
/*
|
||||
* Struct containing functions to define the behavior of a given output mode.
|
||||
*/
|
||||
typedef struct backend {
|
||||
nodeHandler *dispatch_table; /* nodeHandlers table, indexed by node type. */
|
||||
nodeHandler emit_prolog; /* called at beginning of output generation. */
|
||||
nodeHandler emit_epilog; /* called at end. */
|
||||
} backend;
|
||||
|
||||
/* Function that produces a struct of output-generation functions */
|
||||
typedef backend *(*backendFactory)();
|
||||
|
||||
extern backend *xpidl_header_dispatch(void);
|
||||
extern backend *xpidl_typelib_dispatch(void);
|
||||
extern backend *xpidl_doc_dispatch(void);
|
||||
extern backend *xpidl_java_dispatch(void);
|
||||
DECL_HIDDEN_CALLBACK(int) xpidl_header_dispatch(FILE *pFile, PCXPIDLINPUT pInput, PCXPIDLPARSE pParse, PRTERRINFO pErrInfo);
|
||||
DECL_HIDDEN_CALLBACK(int) xpidl_typelib_dispatch(FILE *pFile, PCXPIDLINPUT pInput, PCXPIDLPARSE pParse, PRTERRINFO pErrInfo);
|
||||
|
||||
typedef struct ModeData {
|
||||
char *mode;
|
||||
char *modeInfo;
|
||||
char *suffix;
|
||||
backendFactory factory;
|
||||
PFNXPIDLDISPATCH dispatch;
|
||||
} ModeData;
|
||||
|
||||
typedef struct IncludePathEntry {
|
||||
char *directory;
|
||||
struct IncludePathEntry *next;
|
||||
} IncludePathEntry;
|
||||
|
||||
struct TreeState {
|
||||
FILE *file;
|
||||
/* Maybe supplied by -o. Not related to (g_)basename from string.h or glib */
|
||||
char *basename;
|
||||
IDL_ns ns;
|
||||
IDL_tree tree;
|
||||
GSList *base_includes;
|
||||
nodeHandler *dispatch;
|
||||
void *priv; /* mode-private data */
|
||||
#ifdef VBOX_XPIDL_EMULATE_GENJIFACES
|
||||
char *real_outname;
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
/*
|
||||
* Process an IDL file, generating InterfaceInfo, documentation and headers as
|
||||
* appropriate.
|
||||
*/
|
||||
int
|
||||
xpidl_process_idl(char *filename, IncludePathEntry *include_path,
|
||||
xpidl_process_idl(char *filename, PRTLISTANCHOR pLstIncludePaths,
|
||||
char *file_basename, ModeData *mode);
|
||||
|
||||
/*
|
||||
* Iterate over an IDLN_LIST -- why is this not part of libIDL?
|
||||
*/
|
||||
void
|
||||
xpidl_list_foreach(IDL_tree p, IDL_tree_func foreach, gpointer user_data);
|
||||
|
||||
/*
|
||||
* Wrapper whines to stderr then exits after null return from malloc or strdup.
|
||||
*/
|
||||
|
@ -152,20 +330,6 @@ xpidl_strdup(const char *s);
|
|||
char *
|
||||
xpidl_basename(const char * path);
|
||||
|
||||
/*
|
||||
* Process an XPIDL node and its kids, if any.
|
||||
*/
|
||||
gboolean
|
||||
xpidl_process_node(TreeState *state);
|
||||
|
||||
/*
|
||||
* Write a newline folllowed by an indented, one-line comment containing IDL
|
||||
* source decompiled from state->tree.
|
||||
*/
|
||||
void
|
||||
xpidl_write_comment(TreeState *state, int indent);
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Functions for parsing and printing UUIDs.
|
||||
|
@ -180,81 +344,86 @@ xpidl_write_comment(TreeState *state, int indent);
|
|||
* Print an iid to into a supplied buffer; the buffer should be at least
|
||||
* UUID_LENGTH bytes.
|
||||
*/
|
||||
gboolean
|
||||
bool
|
||||
xpidl_sprint_iid(nsID *iid, char iidbuf[]);
|
||||
|
||||
/*
|
||||
* Parse a uuid string into an nsID struct. We cannot link against libxpcom,
|
||||
* so we re-implement nsID::Parse here.
|
||||
*/
|
||||
gboolean
|
||||
bool
|
||||
xpidl_parse_iid(nsID *id, const char *str);
|
||||
|
||||
|
||||
DECLHIDDEN(PCXPIDLATTR) xpidlNodeAttrFind(PCXPIDLNODE pNd, const char *pszAttr);
|
||||
|
||||
|
||||
DECLHIDDEN(int) xpidlIdlError(PRTERRINFO pErrInfo, PCXPIDLNODE pNd, int rc, const char *pszFmt, ...);
|
||||
|
||||
/* Try to common a little node-handling stuff. */
|
||||
|
||||
/* is this node from an aggregate type (interface)? */
|
||||
#define UP_IS_AGGREGATE(node) \
|
||||
(IDL_NODE_UP(node) && \
|
||||
(IDL_NODE_TYPE(IDL_NODE_UP(node)) == IDLN_INTERFACE || \
|
||||
IDL_NODE_TYPE(IDL_NODE_UP(node)) == IDLN_FORWARD_DCL))
|
||||
|
||||
#define UP_IS_NATIVE(node) \
|
||||
(IDL_NODE_UP(node) && \
|
||||
IDL_NODE_TYPE(IDL_NODE_UP(node)) == IDLN_NATIVE)
|
||||
DECLINLINE(bool) xpidlNdIsStringType(PCXPIDLNODE pNd)
|
||||
{
|
||||
return pNd->enmType == kXpidlNdType_BaseType
|
||||
&& ( pNd->u.enmBaseType == kXpidlType_String
|
||||
|| pNd->u.enmBaseType == kXpidlType_Wide_String);
|
||||
}
|
||||
|
||||
|
||||
/* is this node from an aggregate type (interface)? */
|
||||
#define UP_IS_AGGREGATE(a_pNd) \
|
||||
( a_pNd->pNdTypeRef \
|
||||
&& ( a_pNd->pNdTypeRef->enmType == kXpidlNdType_Interface_Forward_Decl \
|
||||
|| a_pNd->pNdTypeRef->enmType == kXpidlNdType_Interface_Def))
|
||||
|
||||
#define UP_IS_NATIVE(a_pNd) \
|
||||
( a_pNd->pNdTypeRef \
|
||||
&& a_pNd->pNdTypeRef->enmType == kXpidlNdType_Native)
|
||||
|
||||
/* is this type output in the form "<foo> *"? */
|
||||
#define STARRED_TYPE(node) (IDL_NODE_TYPE(node) == IDLN_TYPE_STRING || \
|
||||
IDL_NODE_TYPE(node) == IDLN_TYPE_WIDE_STRING || \
|
||||
(IDL_NODE_TYPE(node) == IDLN_IDENT && \
|
||||
UP_IS_AGGREGATE(node)))
|
||||
#define STARRED_TYPE(a_pNd) (xpidlNdIsStringType(a_pNd) || \
|
||||
(a_pNd->enmType == kXpidlNdType_Identifier && \
|
||||
UP_IS_AGGREGATE(a_pNd)))
|
||||
|
||||
#define DIPPER_TYPE(a_pNd) \
|
||||
(xpidlNodeAttrFind(a_pNd, "domstring") != NULL || \
|
||||
xpidlNodeAttrFind(a_pNd, "utf8string") != NULL || \
|
||||
xpidlNodeAttrFind(a_pNd, "cstring") != NULL || \
|
||||
xpidlNodeAttrFind(a_pNd, "astring") != NULL)
|
||||
|
||||
#define DIPPER_TYPE(node) \
|
||||
(NULL != IDL_tree_property_get(node, "domstring") || \
|
||||
NULL != IDL_tree_property_get(node, "utf8string") || \
|
||||
NULL != IDL_tree_property_get(node, "cstring") || \
|
||||
NULL != IDL_tree_property_get(node, "astring"))
|
||||
|
||||
/*
|
||||
* Find the underlying type of an identifier typedef. Returns NULL
|
||||
* (and doesn't complain) on failure.
|
||||
*/
|
||||
IDL_tree /* IDL_TYPE_DCL */
|
||||
find_underlying_type(IDL_tree typedef_ident);
|
||||
DECLHIDDEN(PCXPIDLNODE) find_underlying_type(PCXPIDLNODE pNd);
|
||||
|
||||
/*
|
||||
* Verifies the interface declaration
|
||||
*/
|
||||
DECLHIDDEN(int) verify_interface_declaration(PCXPIDLNODE pNd, PRTERRINFO pErrInfo);
|
||||
|
||||
/*
|
||||
* Check that const declarations match their stated sign and are of the
|
||||
* appropriate types.
|
||||
*/
|
||||
gboolean
|
||||
verify_const_declaration(IDL_tree const_tree);
|
||||
DECLHIDDEN(int) verify_const_declaration(PCXPIDLNODE pNd, PRTERRINFO pErrInfo);
|
||||
|
||||
/*
|
||||
* Check that scriptable attributes in scriptable interfaces actually are.
|
||||
*/
|
||||
gboolean
|
||||
verify_attribute_declaration(IDL_tree method_tree);
|
||||
DECLHIDDEN(int) verify_attribute_declaration(PCXPIDLNODE pNd, PRTERRINFO pErrInfo);
|
||||
|
||||
/*
|
||||
* Perform various validation checks on methods.
|
||||
*/
|
||||
gboolean
|
||||
verify_method_declaration(IDL_tree method_tree);
|
||||
|
||||
/*
|
||||
* Verifies the interface declaration
|
||||
*/
|
||||
gboolean
|
||||
verify_interface_declaration(IDL_tree method_tree);
|
||||
DECLHIDDEN(int) verify_method_declaration(PCXPIDLNODE pNd, PRTERRINFO pErrInfo);
|
||||
|
||||
/*
|
||||
* Verify that a native declaration has an associated C++ expression, i.e. that
|
||||
* it's of the form native <idl-name>(<c++-name>)
|
||||
*/
|
||||
gboolean
|
||||
check_native(TreeState *state);
|
||||
|
||||
void
|
||||
printlist(FILE *outfile, GSList *slist);
|
||||
DECLHIDDEN(int) check_native(PCXPIDLNODE pNd, PRTERRINFO pErrInfo);
|
||||
|
||||
#endif /* __xpidl_h */
|
||||
|
|
|
@ -1,312 +0,0 @@
|
|||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.1 (the "License"); you may not use this file except in
|
||||
* compliance with the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the NPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the NPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "xpidl.h"
|
||||
|
||||
/*
|
||||
* Generates documentation from javadoc-style comments in XPIDL files.
|
||||
*/
|
||||
|
||||
static gboolean
|
||||
doc_prolog(TreeState *state)
|
||||
{
|
||||
fprintf(state->file, "<html>\n");
|
||||
fprintf(state->file, "<head>\n");
|
||||
|
||||
fprintf(state->file,
|
||||
"<!-- this file is generated from %s.idl -->\n",
|
||||
state->basename);
|
||||
fprintf(state->file, "<title>documentation for %s.idl interfaces</title>\n",
|
||||
state->basename);
|
||||
fprintf(state->file, "</head>\n\n");
|
||||
fprintf(state->file, "<body>\n");
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
doc_epilog(TreeState *state)
|
||||
{
|
||||
fprintf(state->file, "</body>\n");
|
||||
fprintf(state->file, "</html>\n");
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static gboolean
|
||||
doc_list(TreeState *state)
|
||||
{
|
||||
IDL_tree iter;
|
||||
for (iter = state->tree; iter; iter = IDL_LIST(iter).next) {
|
||||
state->tree = IDL_LIST(iter).data;
|
||||
if (!xpidl_process_node(state))
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
print_list(FILE *outfile, IDL_tree list)
|
||||
{
|
||||
if (list == NULL)
|
||||
return TRUE;
|
||||
|
||||
fprintf(outfile, "<ul>\n");
|
||||
while (list != NULL) {
|
||||
fprintf(outfile, " <li>%s\n",
|
||||
IDL_IDENT(IDL_LIST(list).data).str);
|
||||
list = IDL_LIST(list).next;
|
||||
}
|
||||
fprintf(outfile, "</ul>\n");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
doc_interface(TreeState *state)
|
||||
{
|
||||
IDL_tree iface = state->tree;
|
||||
IDL_tree iter;
|
||||
IDL_tree orig;
|
||||
char *classname = IDL_IDENT(IDL_INTERFACE(iface).ident).str;
|
||||
GSList *doc_comments = IDL_IDENT(IDL_INTERFACE(iface).ident).comments;
|
||||
|
||||
fprintf(state->file, "interface %s<br>\n", classname);
|
||||
|
||||
/* Much more could happen at this step. */
|
||||
/*
|
||||
* If parsing doc comments, you might need to take some care with line
|
||||
* endings, as the xpidl frontend will return comments containing of /r,
|
||||
* /n, /r/n depending on the platform. It's best to leave out platform
|
||||
* #defines and just treat them all as equivalent.
|
||||
*/
|
||||
if (doc_comments != NULL) {
|
||||
fprintf(state->file, "doc comments:<br>\n");
|
||||
fprintf(state->file, "<pre>\n");
|
||||
printlist(state->file, doc_comments);
|
||||
fprintf(state->file, "</pre>\n");
|
||||
fprintf(state->file, "<br>\n");
|
||||
}
|
||||
|
||||
/* inherits from */
|
||||
/*
|
||||
* Note that we accept multiple inheritance here (for e.g. gnome idl)
|
||||
* even though the header backend (specific to mozilla idl) rejects it.
|
||||
*/
|
||||
if ((iter = IDL_INTERFACE(iface).inheritance_spec)) {
|
||||
fprintf(state->file, "%s inherits from:<br>\n", classname);
|
||||
print_list(state->file, iter);
|
||||
fprintf(state->file, "<br>\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* Call xpidl_process_node to recur through list of declarations in
|
||||
* interface body; another option would be to explicitly iterate through
|
||||
* the list. xpidl_process_node currently requires twiddling the state to
|
||||
* get the right node; I'll fix that soon to just take the node. Makes it
|
||||
* easier to follow what's going on, I think...
|
||||
*/
|
||||
orig = state->tree;
|
||||
state->tree = IDL_INTERFACE(iface).body;
|
||||
if (state->tree && !xpidl_process_node(state))
|
||||
return FALSE;
|
||||
state->tree = orig;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copied from xpidl_header.c. You'll probably want to change it; if you can
|
||||
* use it verbatim or abstract it, we could move it to xpidl_util.c and share
|
||||
* it from there.
|
||||
*/
|
||||
static gboolean
|
||||
write_type(IDL_tree type_tree, FILE *outfile)
|
||||
{
|
||||
if (!type_tree) {
|
||||
fputs("void", outfile);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
switch (IDL_NODE_TYPE(type_tree)) {
|
||||
case IDLN_TYPE_INTEGER: {
|
||||
gboolean sign = IDL_TYPE_INTEGER(type_tree).f_signed;
|
||||
switch (IDL_TYPE_INTEGER(type_tree).f_type) {
|
||||
case IDL_INTEGER_TYPE_SHORT:
|
||||
fputs(sign ? "PRInt16" : "PRUint16", outfile);
|
||||
break;
|
||||
case IDL_INTEGER_TYPE_LONG:
|
||||
fputs(sign ? "PRInt32" : "PRUint32", outfile);
|
||||
break;
|
||||
case IDL_INTEGER_TYPE_LONGLONG:
|
||||
fputs(sign ? "PRInt64" : "PRUint64", outfile);
|
||||
break;
|
||||
default:
|
||||
g_error("Unknown integer type %d\n",
|
||||
IDL_TYPE_INTEGER(type_tree).f_type);
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IDLN_TYPE_CHAR:
|
||||
fputs("char", outfile);
|
||||
break;
|
||||
case IDLN_TYPE_WIDE_CHAR:
|
||||
fputs("PRUnichar", outfile); /* wchar_t? */
|
||||
break;
|
||||
case IDLN_TYPE_WIDE_STRING:
|
||||
fputs("PRUnichar *", outfile);
|
||||
break;
|
||||
case IDLN_TYPE_STRING:
|
||||
fputs("char *", outfile);
|
||||
break;
|
||||
case IDLN_TYPE_BOOLEAN:
|
||||
fputs("PRBool", outfile);
|
||||
break;
|
||||
case IDLN_TYPE_OCTET:
|
||||
fputs("PRUint8", outfile);
|
||||
break;
|
||||
case IDLN_TYPE_FLOAT:
|
||||
switch (IDL_TYPE_FLOAT(type_tree).f_type) {
|
||||
case IDL_FLOAT_TYPE_FLOAT:
|
||||
fputs("float", outfile);
|
||||
break;
|
||||
case IDL_FLOAT_TYPE_DOUBLE:
|
||||
fputs("double", outfile);
|
||||
break;
|
||||
/* XXX 'long double' just ignored, or what? */
|
||||
default:
|
||||
fprintf(outfile, "unknown_type_%d", IDL_NODE_TYPE(type_tree));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case IDLN_IDENT:
|
||||
if (UP_IS_NATIVE(type_tree)) {
|
||||
fputs(IDL_NATIVE(IDL_NODE_UP(type_tree)).user_type, outfile);
|
||||
if (IDL_tree_property_get(type_tree, "ptr")) {
|
||||
fputs(" *", outfile);
|
||||
} else if (IDL_tree_property_get(type_tree, "ref")) {
|
||||
fputs(" &", outfile);
|
||||
}
|
||||
} else {
|
||||
fputs(IDL_IDENT(type_tree).str, outfile);
|
||||
}
|
||||
if (UP_IS_AGGREGATE(type_tree))
|
||||
fputs(" *", outfile);
|
||||
break;
|
||||
default:
|
||||
fprintf(outfile, "unknown_type_%d", IDL_NODE_TYPE(type_tree));
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* handle ATTR_DCL (attribute declaration) nodes */
|
||||
static gboolean
|
||||
doc_attribute_declaration(TreeState *state)
|
||||
{
|
||||
IDL_tree attr = state->tree;
|
||||
|
||||
if (!verify_attribute_declaration(attr))
|
||||
return FALSE;
|
||||
/*
|
||||
* Attribute idents can also take doc comments. They're ignored here;
|
||||
* should they be?
|
||||
*/
|
||||
|
||||
if (IDL_ATTR_DCL(attr).f_readonly)
|
||||
fprintf(state->file, "readonly ");
|
||||
|
||||
fprintf(state->file, "attribute ");
|
||||
|
||||
if (!write_type(IDL_ATTR_DCL(attr).param_type_spec, state->file))
|
||||
return FALSE;
|
||||
|
||||
fprintf(state->file, "\n");
|
||||
print_list(state->file, IDL_ATTR_DCL(attr).simple_declarations);
|
||||
fprintf(state->file, "<br>\n");
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* handle OP_DCL (method declaration) nodes */
|
||||
static gboolean
|
||||
doc_method_declaration(TreeState *state)
|
||||
{
|
||||
/*
|
||||
* Doc comment for attributes also applies here.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Look at 'write_method_signature' in xpidl_header.c for an example of how
|
||||
* to navigate parse trees for methods. For here, I just print the method
|
||||
* name.
|
||||
*/
|
||||
|
||||
fprintf(state->file,
|
||||
"method %s<br>\n",
|
||||
IDL_IDENT(IDL_OP_DCL(state->tree).ident).str);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
backend *
|
||||
xpidl_doc_dispatch(void)
|
||||
{
|
||||
static backend result;
|
||||
static nodeHandler table[IDLN_LAST];
|
||||
static gboolean initialized = FALSE;
|
||||
|
||||
result.emit_prolog = doc_prolog;
|
||||
result.emit_epilog = doc_epilog;
|
||||
|
||||
if (!initialized) {
|
||||
/* Initialize non-NULL elements */
|
||||
|
||||
/* I just handle a few... many still to be filled in! */
|
||||
|
||||
table[IDLN_LIST] = doc_list;
|
||||
table[IDLN_INTERFACE] = doc_interface;
|
||||
table[IDLN_ATTR_DCL] = doc_attribute_declaration;
|
||||
table[IDLN_OP_DCL] = doc_method_declaration;
|
||||
|
||||
initialized = TRUE;
|
||||
}
|
||||
|
||||
result.dispatch_table = table;
|
||||
return &result;
|
||||
}
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue