| 1 | 1 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,30 @@ |
| 1 |
+QMAKE ?= qmake |
|
| 2 |
+ |
|
| 3 |
+QT_PRO = emu.pro |
|
| 4 |
+ |
|
| 5 |
+.PHONY: all |
|
| 6 |
+all: src doc |
|
| 7 |
+ |
|
| 8 |
+.PHONY: src |
|
| 9 |
+src: qmake |
|
| 10 |
+ $(MAKE) -C src |
|
| 11 |
+ |
|
| 12 |
+.PHONY: doc |
|
| 13 |
+doc: |
|
| 14 |
+ $(MAKE) -C doc |
|
| 15 |
+ |
|
| 16 |
+.PHONY: qmake |
|
| 17 |
+qmake: |
|
| 18 |
+ cd src; \ |
|
| 19 |
+ $(QMAKE) $(QT_PRO) |
|
| 20 |
+ |
|
| 21 |
+.PHONY: clean |
|
| 22 |
+clean: clean_src clean_doc |
|
| 23 |
+ |
|
| 24 |
+.PHONY: clean_src |
|
| 25 |
+clean_src: qmake |
|
| 26 |
+ $(MAKE) -C src clean |
|
| 27 |
+ |
|
| 28 |
+.PHONY: clean_doc |
|
| 29 |
+clean_doc: |
|
| 30 |
+ $(MAKE) -C doc clean |
| 0 | 31 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,2671 @@ |
| 1 |
+# Doxyfile 1.9.5 |
|
| 2 |
+ |
|
| 3 |
+# This file describes the settings to be used by the documentation system |
|
| 4 |
+# doxygen (www.doxygen.org) for a project. |
|
| 5 |
+# |
|
| 6 |
+# All text after a double hash (##) is considered a comment and is placed in |
|
| 7 |
+# front of the TAG it is preceding. |
|
| 8 |
+# |
|
| 9 |
+# All text after a single hash (#) is considered a comment and will be ignored. |
|
| 10 |
+# The format is: |
|
| 11 |
+# TAG = value [value, ...] |
|
| 12 |
+# For lists, items can also be appended using: |
|
| 13 |
+# TAG += value [value, ...] |
|
| 14 |
+# Values that contain spaces should be placed between quotes (\" \"). |
|
| 15 |
+# |
|
| 16 |
+# Note: |
|
| 17 |
+# |
|
| 18 |
+# Use doxygen to compare the used configuration file with the template |
|
| 19 |
+# configuration file: |
|
| 20 |
+# doxygen -x [configFile] |
|
| 21 |
+# Use doxygen to compare the used configuration file with the template |
|
| 22 |
+# configuration file without replacing the environment variables or CMake type |
|
| 23 |
+# replacement variables: |
|
| 24 |
+# doxygen -x_noenv [configFile] |
|
| 25 |
+ |
|
| 26 |
+#--------------------------------------------------------------------------- |
|
| 27 |
+# Project related configuration options |
|
| 28 |
+#--------------------------------------------------------------------------- |
|
| 29 |
+ |
|
| 30 |
+# This tag specifies the encoding used for all characters in the configuration |
|
| 31 |
+# file that follow. The default is UTF-8 which is also the encoding used for all |
|
| 32 |
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the |
|
| 33 |
+# iconv built into libc) for the transcoding. See |
|
| 34 |
+# https://www.gnu.org/software/libiconv/ for the list of possible encodings. |
|
| 35 |
+# The default value is: UTF-8. |
|
| 36 |
+ |
|
| 37 |
+DOXYFILE_ENCODING = UTF-8 |
|
| 38 |
+ |
|
| 39 |
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by |
|
| 40 |
+# double-quotes, unless you are using Doxywizard) that should identify the |
|
| 41 |
+# project for which the documentation is generated. This name is used in the |
|
| 42 |
+# title of most generated pages and in a few other places. |
|
| 43 |
+# The default value is: My Project. |
|
| 44 |
+ |
|
| 45 |
+PROJECT_NAME = "XiPU Computer Emulator" |
|
| 46 |
+ |
|
| 47 |
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. This |
|
| 48 |
+# could be handy for archiving the generated documentation or if some version |
|
| 49 |
+# control system is used. |
|
| 50 |
+ |
|
| 51 |
+PROJECT_NUMBER = |
|
| 52 |
+ |
|
| 53 |
+# Using the PROJECT_BRIEF tag one can provide an optional one line description |
|
| 54 |
+# for a project that appears at the top of each page and should give viewer a |
|
| 55 |
+# quick idea about the purpose of the project. Keep the description short. |
|
| 56 |
+ |
|
| 57 |
+PROJECT_BRIEF = |
|
| 58 |
+ |
|
| 59 |
+# With the PROJECT_LOGO tag one can specify a logo or an icon that is included |
|
| 60 |
+# in the documentation. The maximum height of the logo should not exceed 55 |
|
| 61 |
+# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy |
|
| 62 |
+# the logo to the output directory. |
|
| 63 |
+ |
|
| 64 |
+PROJECT_LOGO = |
|
| 65 |
+ |
|
| 66 |
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path |
|
| 67 |
+# into which the generated documentation will be written. If a relative path is |
|
| 68 |
+# entered, it will be relative to the location where doxygen was started. If |
|
| 69 |
+# left blank the current directory will be used. |
|
| 70 |
+ |
|
| 71 |
+OUTPUT_DIRECTORY = |
|
| 72 |
+ |
|
| 73 |
+# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 |
|
| 74 |
+# sub-directories (in 2 levels) under the output directory of each output format |
|
| 75 |
+# and will distribute the generated files over these directories. Enabling this |
|
| 76 |
+# option can be useful when feeding doxygen a huge amount of source files, where |
|
| 77 |
+# putting all generated files in the same directory would otherwise causes |
|
| 78 |
+# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to |
|
| 79 |
+# control the number of sub-directories. |
|
| 80 |
+# The default value is: NO. |
|
| 81 |
+ |
|
| 82 |
+CREATE_SUBDIRS = NO |
|
| 83 |
+ |
|
| 84 |
+# Controls the number of sub-directories that will be created when |
|
| 85 |
+# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every |
|
| 86 |
+# level increment doubles the number of directories, resulting in 4096 |
|
| 87 |
+# directories at level 8 which is the default and also the maximum value. The |
|
| 88 |
+# sub-directories are organized in 2 levels, the first level always has a fixed |
|
| 89 |
+# numer of 16 directories. |
|
| 90 |
+# Minimum value: 0, maximum value: 8, default value: 8. |
|
| 91 |
+# This tag requires that the tag CREATE_SUBDIRS is set to YES. |
|
| 92 |
+ |
|
| 93 |
+CREATE_SUBDIRS_LEVEL = 8 |
|
| 94 |
+ |
|
| 95 |
+# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII |
|
| 96 |
+# characters to appear in the names of generated files. If set to NO, non-ASCII |
|
| 97 |
+# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode |
|
| 98 |
+# U+3044. |
|
| 99 |
+# The default value is: NO. |
|
| 100 |
+ |
|
| 101 |
+ALLOW_UNICODE_NAMES = NO |
|
| 102 |
+ |
|
| 103 |
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all |
|
| 104 |
+# documentation generated by doxygen is written. Doxygen will use this |
|
| 105 |
+# information to generate all constant output in the proper language. |
|
| 106 |
+# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, |
|
| 107 |
+# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English |
|
| 108 |
+# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, |
|
| 109 |
+# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with |
|
| 110 |
+# English messages), Korean, Korean-en (Korean with English messages), Latvian, |
|
| 111 |
+# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, |
|
| 112 |
+# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, |
|
| 113 |
+# Swedish, Turkish, Ukrainian and Vietnamese. |
|
| 114 |
+# The default value is: English. |
|
| 115 |
+ |
|
| 116 |
+OUTPUT_LANGUAGE = English |
|
| 117 |
+ |
|
| 118 |
+# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member |
|
| 119 |
+# descriptions after the members that are listed in the file and class |
|
| 120 |
+# documentation (similar to Javadoc). Set to NO to disable this. |
|
| 121 |
+# The default value is: YES. |
|
| 122 |
+ |
|
| 123 |
+BRIEF_MEMBER_DESC = YES |
|
| 124 |
+ |
|
| 125 |
+# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief |
|
| 126 |
+# description of a member or function before the detailed description |
|
| 127 |
+# |
|
| 128 |
+# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the |
|
| 129 |
+# brief descriptions will be completely suppressed. |
|
| 130 |
+# The default value is: YES. |
|
| 131 |
+ |
|
| 132 |
+REPEAT_BRIEF = YES |
|
| 133 |
+ |
|
| 134 |
+# This tag implements a quasi-intelligent brief description abbreviator that is |
|
| 135 |
+# used to form the text in various listings. Each string in this list, if found |
|
| 136 |
+# as the leading text of the brief description, will be stripped from the text |
|
| 137 |
+# and the result, after processing the whole list, is used as the annotated |
|
| 138 |
+# text. Otherwise, the brief description is used as-is. If left blank, the |
|
| 139 |
+# following values are used ($name is automatically replaced with the name of |
|
| 140 |
+# the entity):The $name class, The $name widget, The $name file, is, provides, |
|
| 141 |
+# specifies, contains, represents, a, an and the. |
|
| 142 |
+ |
|
| 143 |
+ABBREVIATE_BRIEF = |
|
| 144 |
+ |
|
| 145 |
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then |
|
| 146 |
+# doxygen will generate a detailed section even if there is only a brief |
|
| 147 |
+# description. |
|
| 148 |
+# The default value is: NO. |
|
| 149 |
+ |
|
| 150 |
+ALWAYS_DETAILED_SEC = NO |
|
| 151 |
+ |
|
| 152 |
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all |
|
| 153 |
+# inherited members of a class in the documentation of that class as if those |
|
| 154 |
+# members were ordinary class members. Constructors, destructors and assignment |
|
| 155 |
+# operators of the base classes will not be shown. |
|
| 156 |
+# The default value is: NO. |
|
| 157 |
+ |
|
| 158 |
+INLINE_INHERITED_MEMB = NO |
|
| 159 |
+ |
|
| 160 |
+# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path |
|
| 161 |
+# before files name in the file list and in the header files. If set to NO the |
|
| 162 |
+# shortest path that makes the file name unique will be used |
|
| 163 |
+# The default value is: YES. |
|
| 164 |
+ |
|
| 165 |
+FULL_PATH_NAMES = NO |
|
| 166 |
+ |
|
| 167 |
+# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. |
|
| 168 |
+# Stripping is only done if one of the specified strings matches the left-hand |
|
| 169 |
+# part of the path. The tag can be used to show relative paths in the file list. |
|
| 170 |
+# If left blank the directory from which doxygen is run is used as the path to |
|
| 171 |
+# strip. |
|
| 172 |
+# |
|
| 173 |
+# Note that you can specify absolute paths here, but also relative paths, which |
|
| 174 |
+# will be relative from the directory where doxygen is started. |
|
| 175 |
+# This tag requires that the tag FULL_PATH_NAMES is set to YES. |
|
| 176 |
+ |
|
| 177 |
+STRIP_FROM_PATH = |
|
| 178 |
+ |
|
| 179 |
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the |
|
| 180 |
+# path mentioned in the documentation of a class, which tells the reader which |
|
| 181 |
+# header file to include in order to use a class. If left blank only the name of |
|
| 182 |
+# the header file containing the class definition is used. Otherwise one should |
|
| 183 |
+# specify the list of include paths that are normally passed to the compiler |
|
| 184 |
+# using the -I flag. |
|
| 185 |
+ |
|
| 186 |
+STRIP_FROM_INC_PATH = |
|
| 187 |
+ |
|
| 188 |
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but |
|
| 189 |
+# less readable) file names. This can be useful is your file systems doesn't |
|
| 190 |
+# support long names like on DOS, Mac, or CD-ROM. |
|
| 191 |
+# The default value is: NO. |
|
| 192 |
+ |
|
| 193 |
+SHORT_NAMES = NO |
|
| 194 |
+ |
|
| 195 |
+# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the |
|
| 196 |
+# first line (until the first dot) of a Javadoc-style comment as the brief |
|
| 197 |
+# description. If set to NO, the Javadoc-style will behave just like regular Qt- |
|
| 198 |
+# style comments (thus requiring an explicit @brief command for a brief |
|
| 199 |
+# description.) |
|
| 200 |
+# The default value is: NO. |
|
| 201 |
+ |
|
| 202 |
+JAVADOC_AUTOBRIEF = NO |
|
| 203 |
+ |
|
| 204 |
+# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line |
|
| 205 |
+# such as |
|
| 206 |
+# /*************** |
|
| 207 |
+# as being the beginning of a Javadoc-style comment "banner". If set to NO, the |
|
| 208 |
+# Javadoc-style will behave just like regular comments and it will not be |
|
| 209 |
+# interpreted by doxygen. |
|
| 210 |
+# The default value is: NO. |
|
| 211 |
+ |
|
| 212 |
+JAVADOC_BANNER = NO |
|
| 213 |
+ |
|
| 214 |
+# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first |
|
| 215 |
+# line (until the first dot) of a Qt-style comment as the brief description. If |
|
| 216 |
+# set to NO, the Qt-style will behave just like regular Qt-style comments (thus |
|
| 217 |
+# requiring an explicit \brief command for a brief description.) |
|
| 218 |
+# The default value is: NO. |
|
| 219 |
+ |
|
| 220 |
+QT_AUTOBRIEF = NO |
|
| 221 |
+ |
|
| 222 |
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a |
|
| 223 |
+# multi-line C++ special comment block (i.e. a block of //! or /// comments) as |
|
| 224 |
+# a brief description. This used to be the default behavior. The new default is |
|
| 225 |
+# to treat a multi-line C++ comment block as a detailed description. Set this |
|
| 226 |
+# tag to YES if you prefer the old behavior instead. |
|
| 227 |
+# |
|
| 228 |
+# Note that setting this tag to YES also means that rational rose comments are |
|
| 229 |
+# not recognized any more. |
|
| 230 |
+# The default value is: NO. |
|
| 231 |
+ |
|
| 232 |
+MULTILINE_CPP_IS_BRIEF = NO |
|
| 233 |
+ |
|
| 234 |
+# By default Python docstrings are displayed as preformatted text and doxygen's |
|
| 235 |
+# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the |
|
| 236 |
+# doxygen's special commands can be used and the contents of the docstring |
|
| 237 |
+# documentation blocks is shown as doxygen documentation. |
|
| 238 |
+# The default value is: YES. |
|
| 239 |
+ |
|
| 240 |
+PYTHON_DOCSTRING = YES |
|
| 241 |
+ |
|
| 242 |
+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the |
|
| 243 |
+# documentation from any documented member that it re-implements. |
|
| 244 |
+# The default value is: YES. |
|
| 245 |
+ |
|
| 246 |
+INHERIT_DOCS = YES |
|
| 247 |
+ |
|
| 248 |
+# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new |
|
| 249 |
+# page for each member. If set to NO, the documentation of a member will be part |
|
| 250 |
+# of the file/class/namespace that contains it. |
|
| 251 |
+# The default value is: NO. |
|
| 252 |
+ |
|
| 253 |
+SEPARATE_MEMBER_PAGES = NO |
|
| 254 |
+ |
|
| 255 |
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen |
|
| 256 |
+# uses this value to replace tabs by spaces in code fragments. |
|
| 257 |
+# Minimum value: 1, maximum value: 16, default value: 4. |
|
| 258 |
+ |
|
| 259 |
+TAB_SIZE = 4 |
|
| 260 |
+ |
|
| 261 |
+# This tag can be used to specify a number of aliases that act as commands in |
|
| 262 |
+# the documentation. An alias has the form: |
|
| 263 |
+# name=value |
|
| 264 |
+# For example adding |
|
| 265 |
+# "sideeffect=@par Side Effects:^^" |
|
| 266 |
+# will allow you to put the command \sideeffect (or @sideeffect) in the |
|
| 267 |
+# documentation, which will result in a user-defined paragraph with heading |
|
| 268 |
+# "Side Effects:". Note that you cannot put \n's in the value part of an alias |
|
| 269 |
+# to insert newlines (in the resulting output). You can put ^^ in the value part |
|
| 270 |
+# of an alias to insert a newline as if a physical newline was in the original |
|
| 271 |
+# file. When you need a literal { or } or , in the value part of an alias you
|
|
| 272 |
+# have to escape them by means of a backslash (\), this can lead to conflicts |
|
| 273 |
+# with the commands \{ and \} for these it is advised to use the version @{ and
|
|
| 274 |
+# @} or use a double escape (\\{ and \\})
|
|
| 275 |
+ |
|
| 276 |
+ALIASES = |
|
| 277 |
+ |
|
| 278 |
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources |
|
| 279 |
+# only. Doxygen will then generate output that is more tailored for C. For |
|
| 280 |
+# instance, some of the names that are used will be different. The list of all |
|
| 281 |
+# members will be omitted, etc. |
|
| 282 |
+# The default value is: NO. |
|
| 283 |
+ |
|
| 284 |
+OPTIMIZE_OUTPUT_FOR_C = YES |
|
| 285 |
+ |
|
| 286 |
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or |
|
| 287 |
+# Python sources only. Doxygen will then generate output that is more tailored |
|
| 288 |
+# for that language. For instance, namespaces will be presented as packages, |
|
| 289 |
+# qualified scopes will look different, etc. |
|
| 290 |
+# The default value is: NO. |
|
| 291 |
+ |
|
| 292 |
+OPTIMIZE_OUTPUT_JAVA = NO |
|
| 293 |
+ |
|
| 294 |
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran |
|
| 295 |
+# sources. Doxygen will then generate output that is tailored for Fortran. |
|
| 296 |
+# The default value is: NO. |
|
| 297 |
+ |
|
| 298 |
+OPTIMIZE_FOR_FORTRAN = NO |
|
| 299 |
+ |
|
| 300 |
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL |
|
| 301 |
+# sources. Doxygen will then generate output that is tailored for VHDL. |
|
| 302 |
+# The default value is: NO. |
|
| 303 |
+ |
|
| 304 |
+OPTIMIZE_OUTPUT_VHDL = NO |
|
| 305 |
+ |
|
| 306 |
+# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice |
|
| 307 |
+# sources only. Doxygen will then generate output that is more tailored for that |
|
| 308 |
+# language. For instance, namespaces will be presented as modules, types will be |
|
| 309 |
+# separated into more groups, etc. |
|
| 310 |
+# The default value is: NO. |
|
| 311 |
+ |
|
| 312 |
+OPTIMIZE_OUTPUT_SLICE = NO |
|
| 313 |
+ |
|
| 314 |
+# Doxygen selects the parser to use depending on the extension of the files it |
|
| 315 |
+# parses. With this tag you can assign which parser to use for a given |
|
| 316 |
+# extension. Doxygen has a built-in mapping, but you can override or extend it |
|
| 317 |
+# using this tag. The format is ext=language, where ext is a file extension, and |
|
| 318 |
+# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, |
|
| 319 |
+# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, |
|
| 320 |
+# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: |
|
| 321 |
+# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser |
|
| 322 |
+# tries to guess whether the code is fixed or free formatted code, this is the |
|
| 323 |
+# default for Fortran type files). For instance to make doxygen treat .inc files |
|
| 324 |
+# as Fortran files (default is PHP), and .f files as C (default is Fortran), |
|
| 325 |
+# use: inc=Fortran f=C. |
|
| 326 |
+# |
|
| 327 |
+# Note: For files without extension you can use no_extension as a placeholder. |
|
| 328 |
+# |
|
| 329 |
+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise |
|
| 330 |
+# the files are not read by doxygen. When specifying no_extension you should add |
|
| 331 |
+# * to the FILE_PATTERNS. |
|
| 332 |
+# |
|
| 333 |
+# Note see also the list of default file extension mappings. |
|
| 334 |
+ |
|
| 335 |
+EXTENSION_MAPPING = |
|
| 336 |
+ |
|
| 337 |
+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments |
|
| 338 |
+# according to the Markdown format, which allows for more readable |
|
| 339 |
+# documentation. See https://daringfireball.net/projects/markdown/ for details. |
|
| 340 |
+# The output of markdown processing is further processed by doxygen, so you can |
|
| 341 |
+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in |
|
| 342 |
+# case of backward compatibilities issues. |
|
| 343 |
+# The default value is: YES. |
|
| 344 |
+ |
|
| 345 |
+MARKDOWN_SUPPORT = NO |
|
| 346 |
+ |
|
| 347 |
+# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up |
|
| 348 |
+# to that level are automatically included in the table of contents, even if |
|
| 349 |
+# they do not have an id attribute. |
|
| 350 |
+# Note: This feature currently applies only to Markdown headings. |
|
| 351 |
+# Minimum value: 0, maximum value: 99, default value: 5. |
|
| 352 |
+# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. |
|
| 353 |
+ |
|
| 354 |
+TOC_INCLUDE_HEADINGS = 5 |
|
| 355 |
+ |
|
| 356 |
+# When enabled doxygen tries to link words that correspond to documented |
|
| 357 |
+# classes, or namespaces to their corresponding documentation. Such a link can |
|
| 358 |
+# be prevented in individual cases by putting a % sign in front of the word or |
|
| 359 |
+# globally by setting AUTOLINK_SUPPORT to NO. |
|
| 360 |
+# The default value is: YES. |
|
| 361 |
+ |
|
| 362 |
+AUTOLINK_SUPPORT = YES |
|
| 363 |
+ |
|
| 364 |
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want |
|
| 365 |
+# to include (a tag file for) the STL sources as input, then you should set this |
|
| 366 |
+# tag to YES in order to let doxygen match functions declarations and |
|
| 367 |
+# definitions whose arguments contain STL classes (e.g. func(std::string); |
|
| 368 |
+# versus func(std::string) {}). This also make the inheritance and collaboration
|
|
| 369 |
+# diagrams that involve STL classes more complete and accurate. |
|
| 370 |
+# The default value is: NO. |
|
| 371 |
+ |
|
| 372 |
+BUILTIN_STL_SUPPORT = YES |
|
| 373 |
+ |
|
| 374 |
+# If you use Microsoft's C++/CLI language, you should set this option to YES to |
|
| 375 |
+# enable parsing support. |
|
| 376 |
+# The default value is: NO. |
|
| 377 |
+ |
|
| 378 |
+CPP_CLI_SUPPORT = NO |
|
| 379 |
+ |
|
| 380 |
+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: |
|
| 381 |
+# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen |
|
| 382 |
+# will parse them like normal C++ but will assume all classes use public instead |
|
| 383 |
+# of private inheritance when no explicit protection keyword is present. |
|
| 384 |
+# The default value is: NO. |
|
| 385 |
+ |
|
| 386 |
+SIP_SUPPORT = NO |
|
| 387 |
+ |
|
| 388 |
+# For Microsoft's IDL there are propget and propput attributes to indicate |
|
| 389 |
+# getter and setter methods for a property. Setting this option to YES will make |
|
| 390 |
+# doxygen to replace the get and set methods by a property in the documentation. |
|
| 391 |
+# This will only work if the methods are indeed getting or setting a simple |
|
| 392 |
+# type. If this is not the case, or you want to show the methods anyway, you |
|
| 393 |
+# should set this option to NO. |
|
| 394 |
+# The default value is: YES. |
|
| 395 |
+ |
|
| 396 |
+IDL_PROPERTY_SUPPORT = YES |
|
| 397 |
+ |
|
| 398 |
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC |
|
| 399 |
+# tag is set to YES then doxygen will reuse the documentation of the first |
|
| 400 |
+# member in the group (if any) for the other members of the group. By default |
|
| 401 |
+# all members of a group must be documented explicitly. |
|
| 402 |
+# The default value is: NO. |
|
| 403 |
+ |
|
| 404 |
+DISTRIBUTE_GROUP_DOC = NO |
|
| 405 |
+ |
|
| 406 |
+# If one adds a struct or class to a group and this option is enabled, then also |
|
| 407 |
+# any nested class or struct is added to the same group. By default this option |
|
| 408 |
+# is disabled and one has to add nested compounds explicitly via \ingroup. |
|
| 409 |
+# The default value is: NO. |
|
| 410 |
+ |
|
| 411 |
+GROUP_NESTED_COMPOUNDS = NO |
|
| 412 |
+ |
|
| 413 |
+# Set the SUBGROUPING tag to YES to allow class member groups of the same type |
|
| 414 |
+# (for instance a group of public functions) to be put as a subgroup of that |
|
| 415 |
+# type (e.g. under the Public Functions section). Set it to NO to prevent |
|
| 416 |
+# subgrouping. Alternatively, this can be done per class using the |
|
| 417 |
+# \nosubgrouping command. |
|
| 418 |
+# The default value is: YES. |
|
| 419 |
+ |
|
| 420 |
+SUBGROUPING = YES |
|
| 421 |
+ |
|
| 422 |
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions |
|
| 423 |
+# are shown inside the group in which they are included (e.g. using \ingroup) |
|
| 424 |
+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX |
|
| 425 |
+# and RTF). |
|
| 426 |
+# |
|
| 427 |
+# Note that this feature does not work in combination with |
|
| 428 |
+# SEPARATE_MEMBER_PAGES. |
|
| 429 |
+# The default value is: NO. |
|
| 430 |
+ |
|
| 431 |
+INLINE_GROUPED_CLASSES = NO |
|
| 432 |
+ |
|
| 433 |
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions |
|
| 434 |
+# with only public data fields or simple typedef fields will be shown inline in |
|
| 435 |
+# the documentation of the scope in which they are defined (i.e. file, |
|
| 436 |
+# namespace, or group documentation), provided this scope is documented. If set |
|
| 437 |
+# to NO, structs, classes, and unions are shown on a separate page (for HTML and |
|
| 438 |
+# Man pages) or section (for LaTeX and RTF). |
|
| 439 |
+# The default value is: NO. |
|
| 440 |
+ |
|
| 441 |
+INLINE_SIMPLE_STRUCTS = NO |
|
| 442 |
+ |
|
| 443 |
+# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or |
|
| 444 |
+# enum is documented as struct, union, or enum with the name of the typedef. So |
|
| 445 |
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
|
|
| 446 |
+# with name TypeT. When disabled the typedef will appear as a member of a file, |
|
| 447 |
+# namespace, or class. And the struct will be named TypeS. This can typically be |
|
| 448 |
+# useful for C code in case the coding convention dictates that all compound |
|
| 449 |
+# types are typedef'ed and only the typedef is referenced, never the tag name. |
|
| 450 |
+# The default value is: NO. |
|
| 451 |
+ |
|
| 452 |
+TYPEDEF_HIDES_STRUCT = NO |
|
| 453 |
+ |
|
| 454 |
+# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This |
|
| 455 |
+# cache is used to resolve symbols given their name and scope. Since this can be |
|
| 456 |
+# an expensive process and often the same symbol appears multiple times in the |
|
| 457 |
+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small |
|
| 458 |
+# doxygen will become slower. If the cache is too large, memory is wasted. The |
|
| 459 |
+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range |
|
| 460 |
+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 |
|
| 461 |
+# symbols. At the end of a run doxygen will report the cache usage and suggest |
|
| 462 |
+# the optimal cache size from a speed point of view. |
|
| 463 |
+# Minimum value: 0, maximum value: 9, default value: 0. |
|
| 464 |
+ |
|
| 465 |
+LOOKUP_CACHE_SIZE = 0 |
|
| 466 |
+ |
|
| 467 |
+# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use |
|
| 468 |
+# during processing. When set to 0 doxygen will based this on the number of |
|
| 469 |
+# cores available in the system. You can set it explicitly to a value larger |
|
| 470 |
+# than 0 to get more control over the balance between CPU load and processing |
|
| 471 |
+# speed. At this moment only the input processing can be done using multiple |
|
| 472 |
+# threads. Since this is still an experimental feature the default is set to 1, |
|
| 473 |
+# which effectively disables parallel processing. Please report any issues you |
|
| 474 |
+# encounter. Generating dot graphs in parallel is controlled by the |
|
| 475 |
+# DOT_NUM_THREADS setting. |
|
| 476 |
+# Minimum value: 0, maximum value: 32, default value: 1. |
|
| 477 |
+ |
|
| 478 |
+NUM_PROC_THREADS = 1 |
|
| 479 |
+ |
|
| 480 |
+#--------------------------------------------------------------------------- |
|
| 481 |
+# Build related configuration options |
|
| 482 |
+#--------------------------------------------------------------------------- |
|
| 483 |
+ |
|
| 484 |
+# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in |
|
| 485 |
+# documentation are documented, even if no documentation was available. Private |
|
| 486 |
+# class members and static file members will be hidden unless the |
|
| 487 |
+# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. |
|
| 488 |
+# Note: This will also disable the warnings about undocumented members that are |
|
| 489 |
+# normally produced when WARNINGS is set to YES. |
|
| 490 |
+# The default value is: NO. |
|
| 491 |
+ |
|
| 492 |
+EXTRACT_ALL = YES |
|
| 493 |
+ |
|
| 494 |
+# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will |
|
| 495 |
+# be included in the documentation. |
|
| 496 |
+# The default value is: NO. |
|
| 497 |
+ |
|
| 498 |
+EXTRACT_PRIVATE = YES |
|
| 499 |
+ |
|
| 500 |
+# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual |
|
| 501 |
+# methods of a class will be included in the documentation. |
|
| 502 |
+# The default value is: NO. |
|
| 503 |
+ |
|
| 504 |
+EXTRACT_PRIV_VIRTUAL = NO |
|
| 505 |
+ |
|
| 506 |
+# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal |
|
| 507 |
+# scope will be included in the documentation. |
|
| 508 |
+# The default value is: NO. |
|
| 509 |
+ |
|
| 510 |
+EXTRACT_PACKAGE = NO |
|
| 511 |
+ |
|
| 512 |
+# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be |
|
| 513 |
+# included in the documentation. |
|
| 514 |
+# The default value is: NO. |
|
| 515 |
+ |
|
| 516 |
+EXTRACT_STATIC = YES |
|
| 517 |
+ |
|
| 518 |
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined |
|
| 519 |
+# locally in source files will be included in the documentation. If set to NO, |
|
| 520 |
+# only classes defined in header files are included. Does not have any effect |
|
| 521 |
+# for Java sources. |
|
| 522 |
+# The default value is: YES. |
|
| 523 |
+ |
|
| 524 |
+EXTRACT_LOCAL_CLASSES = YES |
|
| 525 |
+ |
|
| 526 |
+# This flag is only useful for Objective-C code. If set to YES, local methods, |
|
| 527 |
+# which are defined in the implementation section but not in the interface are |
|
| 528 |
+# included in the documentation. If set to NO, only methods in the interface are |
|
| 529 |
+# included. |
|
| 530 |
+# The default value is: NO. |
|
| 531 |
+ |
|
| 532 |
+EXTRACT_LOCAL_METHODS = NO |
|
| 533 |
+ |
|
| 534 |
+# If this flag is set to YES, the members of anonymous namespaces will be |
|
| 535 |
+# extracted and appear in the documentation as a namespace called |
|
| 536 |
+# 'anonymous_namespace{file}', where file will be replaced with the base name of
|
|
| 537 |
+# the file that contains the anonymous namespace. By default anonymous namespace |
|
| 538 |
+# are hidden. |
|
| 539 |
+# The default value is: NO. |
|
| 540 |
+ |
|
| 541 |
+EXTRACT_ANON_NSPACES = YES |
|
| 542 |
+ |
|
| 543 |
+# If this flag is set to YES, the name of an unnamed parameter in a declaration |
|
| 544 |
+# will be determined by the corresponding definition. By default unnamed |
|
| 545 |
+# parameters remain unnamed in the output. |
|
| 546 |
+# The default value is: YES. |
|
| 547 |
+ |
|
| 548 |
+RESOLVE_UNNAMED_PARAMS = YES |
|
| 549 |
+ |
|
| 550 |
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all |
|
| 551 |
+# undocumented members inside documented classes or files. If set to NO these |
|
| 552 |
+# members will be included in the various overviews, but no documentation |
|
| 553 |
+# section is generated. This option has no effect if EXTRACT_ALL is enabled. |
|
| 554 |
+# The default value is: NO. |
|
| 555 |
+ |
|
| 556 |
+HIDE_UNDOC_MEMBERS = NO |
|
| 557 |
+ |
|
| 558 |
+# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all |
|
| 559 |
+# undocumented classes that are normally visible in the class hierarchy. If set |
|
| 560 |
+# to NO, these classes will be included in the various overviews. This option |
|
| 561 |
+# has no effect if EXTRACT_ALL is enabled. |
|
| 562 |
+# The default value is: NO. |
|
| 563 |
+ |
|
| 564 |
+HIDE_UNDOC_CLASSES = NO |
|
| 565 |
+ |
|
| 566 |
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend |
|
| 567 |
+# declarations. If set to NO, these declarations will be included in the |
|
| 568 |
+# documentation. |
|
| 569 |
+# The default value is: NO. |
|
| 570 |
+ |
|
| 571 |
+HIDE_FRIEND_COMPOUNDS = NO |
|
| 572 |
+ |
|
| 573 |
+# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any |
|
| 574 |
+# documentation blocks found inside the body of a function. If set to NO, these |
|
| 575 |
+# blocks will be appended to the function's detailed documentation block. |
|
| 576 |
+# The default value is: NO. |
|
| 577 |
+ |
|
| 578 |
+HIDE_IN_BODY_DOCS = NO |
|
| 579 |
+ |
|
| 580 |
+# The INTERNAL_DOCS tag determines if documentation that is typed after a |
|
| 581 |
+# \internal command is included. If the tag is set to NO then the documentation |
|
| 582 |
+# will be excluded. Set it to YES to include the internal documentation. |
|
| 583 |
+# The default value is: NO. |
|
| 584 |
+ |
|
| 585 |
+INTERNAL_DOCS = NO |
|
| 586 |
+ |
|
| 587 |
+# With the correct setting of option CASE_SENSE_NAMES doxygen will better be |
|
| 588 |
+# able to match the capabilities of the underlying filesystem. In case the |
|
| 589 |
+# filesystem is case sensitive (i.e. it supports files in the same directory |
|
| 590 |
+# whose names only differ in casing), the option must be set to YES to properly |
|
| 591 |
+# deal with such files in case they appear in the input. For filesystems that |
|
| 592 |
+# are not case sensitive the option should be set to NO to properly deal with |
|
| 593 |
+# output files written for symbols that only differ in casing, such as for two |
|
| 594 |
+# classes, one named CLASS and the other named Class, and to also support |
|
| 595 |
+# references to files without having to specify the exact matching casing. On |
|
| 596 |
+# Windows (including Cygwin) and MacOS, users should typically set this option |
|
| 597 |
+# to NO, whereas on Linux or other Unix flavors it should typically be set to |
|
| 598 |
+# YES. |
|
| 599 |
+# Possible values are: SYSTEM, NO and YES. |
|
| 600 |
+# The default value is: SYSTEM. |
|
| 601 |
+ |
|
| 602 |
+CASE_SENSE_NAMES = NO |
|
| 603 |
+ |
|
| 604 |
+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with |
|
| 605 |
+# their full class and namespace scopes in the documentation. If set to YES, the |
|
| 606 |
+# scope will be hidden. |
|
| 607 |
+# The default value is: NO. |
|
| 608 |
+ |
|
| 609 |
+HIDE_SCOPE_NAMES = NO |
|
| 610 |
+ |
|
| 611 |
+# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will |
|
| 612 |
+# append additional text to a page's title, such as Class Reference. If set to |
|
| 613 |
+# YES the compound reference will be hidden. |
|
| 614 |
+# The default value is: NO. |
|
| 615 |
+ |
|
| 616 |
+HIDE_COMPOUND_REFERENCE= NO |
|
| 617 |
+ |
|
| 618 |
+# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class |
|
| 619 |
+# will show which file needs to be included to use the class. |
|
| 620 |
+# The default value is: YES. |
|
| 621 |
+ |
|
| 622 |
+SHOW_HEADERFILE = YES |
|
| 623 |
+ |
|
| 624 |
+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of |
|
| 625 |
+# the files that are included by a file in the documentation of that file. |
|
| 626 |
+# The default value is: YES. |
|
| 627 |
+ |
|
| 628 |
+SHOW_INCLUDE_FILES = YES |
|
| 629 |
+ |
|
| 630 |
+# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each |
|
| 631 |
+# grouped member an include statement to the documentation, telling the reader |
|
| 632 |
+# which file to include in order to use the member. |
|
| 633 |
+# The default value is: NO. |
|
| 634 |
+ |
|
| 635 |
+SHOW_GROUPED_MEMB_INC = YES |
|
| 636 |
+ |
|
| 637 |
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include |
|
| 638 |
+# files with double quotes in the documentation rather than with sharp brackets. |
|
| 639 |
+# The default value is: NO. |
|
| 640 |
+ |
|
| 641 |
+FORCE_LOCAL_INCLUDES = NO |
|
| 642 |
+ |
|
| 643 |
+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the |
|
| 644 |
+# documentation for inline members. |
|
| 645 |
+# The default value is: YES. |
|
| 646 |
+ |
|
| 647 |
+INLINE_INFO = YES |
|
| 648 |
+ |
|
| 649 |
+# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the |
|
| 650 |
+# (detailed) documentation of file and class members alphabetically by member |
|
| 651 |
+# name. If set to NO, the members will appear in declaration order. |
|
| 652 |
+# The default value is: YES. |
|
| 653 |
+ |
|
| 654 |
+SORT_MEMBER_DOCS = YES |
|
| 655 |
+ |
|
| 656 |
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief |
|
| 657 |
+# descriptions of file, namespace and class members alphabetically by member |
|
| 658 |
+# name. If set to NO, the members will appear in declaration order. Note that |
|
| 659 |
+# this will also influence the order of the classes in the class list. |
|
| 660 |
+# The default value is: NO. |
|
| 661 |
+ |
|
| 662 |
+SORT_BRIEF_DOCS = NO |
|
| 663 |
+ |
|
| 664 |
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the |
|
| 665 |
+# (brief and detailed) documentation of class members so that constructors and |
|
| 666 |
+# destructors are listed first. If set to NO the constructors will appear in the |
|
| 667 |
+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. |
|
| 668 |
+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief |
|
| 669 |
+# member documentation. |
|
| 670 |
+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting |
|
| 671 |
+# detailed member documentation. |
|
| 672 |
+# The default value is: NO. |
|
| 673 |
+ |
|
| 674 |
+SORT_MEMBERS_CTORS_1ST = NO |
|
| 675 |
+ |
|
| 676 |
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy |
|
| 677 |
+# of group names into alphabetical order. If set to NO the group names will |
|
| 678 |
+# appear in their defined order. |
|
| 679 |
+# The default value is: NO. |
|
| 680 |
+ |
|
| 681 |
+SORT_GROUP_NAMES = NO |
|
| 682 |
+ |
|
| 683 |
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by |
|
| 684 |
+# fully-qualified names, including namespaces. If set to NO, the class list will |
|
| 685 |
+# be sorted only by class name, not including the namespace part. |
|
| 686 |
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. |
|
| 687 |
+# Note: This option applies only to the class list, not to the alphabetical |
|
| 688 |
+# list. |
|
| 689 |
+# The default value is: NO. |
|
| 690 |
+ |
|
| 691 |
+SORT_BY_SCOPE_NAME = NO |
|
| 692 |
+ |
|
| 693 |
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper |
|
| 694 |
+# type resolution of all parameters of a function it will reject a match between |
|
| 695 |
+# the prototype and the implementation of a member function even if there is |
|
| 696 |
+# only one candidate or it is obvious which candidate to choose by doing a |
|
| 697 |
+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still |
|
| 698 |
+# accept a match between prototype and implementation in such cases. |
|
| 699 |
+# The default value is: NO. |
|
| 700 |
+ |
|
| 701 |
+STRICT_PROTO_MATCHING = NO |
|
| 702 |
+ |
|
| 703 |
+# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo |
|
| 704 |
+# list. This list is created by putting \todo commands in the documentation. |
|
| 705 |
+# The default value is: YES. |
|
| 706 |
+ |
|
| 707 |
+GENERATE_TODOLIST = YES |
|
| 708 |
+ |
|
| 709 |
+# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test |
|
| 710 |
+# list. This list is created by putting \test commands in the documentation. |
|
| 711 |
+# The default value is: YES. |
|
| 712 |
+ |
|
| 713 |
+GENERATE_TESTLIST = YES |
|
| 714 |
+ |
|
| 715 |
+# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug |
|
| 716 |
+# list. This list is created by putting \bug commands in the documentation. |
|
| 717 |
+# The default value is: YES. |
|
| 718 |
+ |
|
| 719 |
+GENERATE_BUGLIST = YES |
|
| 720 |
+ |
|
| 721 |
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) |
|
| 722 |
+# the deprecated list. This list is created by putting \deprecated commands in |
|
| 723 |
+# the documentation. |
|
| 724 |
+# The default value is: YES. |
|
| 725 |
+ |
|
| 726 |
+GENERATE_DEPRECATEDLIST= YES |
|
| 727 |
+ |
|
| 728 |
+# The ENABLED_SECTIONS tag can be used to enable conditional documentation |
|
| 729 |
+# sections, marked by \if <section_label> ... \endif and \cond <section_label> |
|
| 730 |
+# ... \endcond blocks. |
|
| 731 |
+ |
|
| 732 |
+ENABLED_SECTIONS = |
|
| 733 |
+ |
|
| 734 |
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the |
|
| 735 |
+# initial value of a variable or macro / define can have for it to appear in the |
|
| 736 |
+# documentation. If the initializer consists of more lines than specified here |
|
| 737 |
+# it will be hidden. Use a value of 0 to hide initializers completely. The |
|
| 738 |
+# appearance of the value of individual variables and macros / defines can be |
|
| 739 |
+# controlled using \showinitializer or \hideinitializer command in the |
|
| 740 |
+# documentation regardless of this setting. |
|
| 741 |
+# Minimum value: 0, maximum value: 10000, default value: 30. |
|
| 742 |
+ |
|
| 743 |
+MAX_INITIALIZER_LINES = 30 |
|
| 744 |
+ |
|
| 745 |
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at |
|
| 746 |
+# the bottom of the documentation of classes and structs. If set to YES, the |
|
| 747 |
+# list will mention the files that were used to generate the documentation. |
|
| 748 |
+# The default value is: YES. |
|
| 749 |
+ |
|
| 750 |
+SHOW_USED_FILES = YES |
|
| 751 |
+ |
|
| 752 |
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This |
|
| 753 |
+# will remove the Files entry from the Quick Index and from the Folder Tree View |
|
| 754 |
+# (if specified). |
|
| 755 |
+# The default value is: YES. |
|
| 756 |
+ |
|
| 757 |
+SHOW_FILES = YES |
|
| 758 |
+ |
|
| 759 |
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces |
|
| 760 |
+# page. This will remove the Namespaces entry from the Quick Index and from the |
|
| 761 |
+# Folder Tree View (if specified). |
|
| 762 |
+# The default value is: YES. |
|
| 763 |
+ |
|
| 764 |
+SHOW_NAMESPACES = YES |
|
| 765 |
+ |
|
| 766 |
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that |
|
| 767 |
+# doxygen should invoke to get the current version for each file (typically from |
|
| 768 |
+# the version control system). Doxygen will invoke the program by executing (via |
|
| 769 |
+# popen()) the command command input-file, where command is the value of the |
|
| 770 |
+# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided |
|
| 771 |
+# by doxygen. Whatever the program writes to standard output is used as the file |
|
| 772 |
+# version. For an example see the documentation. |
|
| 773 |
+ |
|
| 774 |
+FILE_VERSION_FILTER = |
|
| 775 |
+ |
|
| 776 |
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed |
|
| 777 |
+# by doxygen. The layout file controls the global structure of the generated |
|
| 778 |
+# output files in an output format independent way. To create the layout file |
|
| 779 |
+# that represents doxygen's defaults, run doxygen with the -l option. You can |
|
| 780 |
+# optionally specify a file name after the option, if omitted DoxygenLayout.xml |
|
| 781 |
+# will be used as the name of the layout file. See also section "Changing the |
|
| 782 |
+# layout of pages" for information. |
|
| 783 |
+# |
|
| 784 |
+# Note that if you run doxygen from a directory containing a file called |
|
| 785 |
+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE |
|
| 786 |
+# tag is left empty. |
|
| 787 |
+ |
|
| 788 |
+LAYOUT_FILE = |
|
| 789 |
+ |
|
| 790 |
+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing |
|
| 791 |
+# the reference definitions. This must be a list of .bib files. The .bib |
|
| 792 |
+# extension is automatically appended if omitted. This requires the bibtex tool |
|
| 793 |
+# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. |
|
| 794 |
+# For LaTeX the style of the bibliography can be controlled using |
|
| 795 |
+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the |
|
| 796 |
+# search path. See also \cite for info how to create references. |
|
| 797 |
+ |
|
| 798 |
+CITE_BIB_FILES = |
|
| 799 |
+ |
|
| 800 |
+#--------------------------------------------------------------------------- |
|
| 801 |
+# Configuration options related to warning and progress messages |
|
| 802 |
+#--------------------------------------------------------------------------- |
|
| 803 |
+ |
|
| 804 |
+# The QUIET tag can be used to turn on/off the messages that are generated to |
|
| 805 |
+# standard output by doxygen. If QUIET is set to YES this implies that the |
|
| 806 |
+# messages are off. |
|
| 807 |
+# The default value is: NO. |
|
| 808 |
+ |
|
| 809 |
+QUIET = NO |
|
| 810 |
+ |
|
| 811 |
+# The WARNINGS tag can be used to turn on/off the warning messages that are |
|
| 812 |
+# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES |
|
| 813 |
+# this implies that the warnings are on. |
|
| 814 |
+# |
|
| 815 |
+# Tip: Turn warnings on while writing the documentation. |
|
| 816 |
+# The default value is: YES. |
|
| 817 |
+ |
|
| 818 |
+WARNINGS = YES |
|
| 819 |
+ |
|
| 820 |
+# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate |
|
| 821 |
+# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag |
|
| 822 |
+# will automatically be disabled. |
|
| 823 |
+# The default value is: YES. |
|
| 824 |
+ |
|
| 825 |
+WARN_IF_UNDOCUMENTED = YES |
|
| 826 |
+ |
|
| 827 |
+# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for |
|
| 828 |
+# potential errors in the documentation, such as documenting some parameters in |
|
| 829 |
+# a documented function twice, or documenting parameters that don't exist or |
|
| 830 |
+# using markup commands wrongly. |
|
| 831 |
+# The default value is: YES. |
|
| 832 |
+ |
|
| 833 |
+WARN_IF_DOC_ERROR = YES |
|
| 834 |
+ |
|
| 835 |
+# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete |
|
| 836 |
+# function parameter documentation. If set to NO, doxygen will accept that some |
|
| 837 |
+# parameters have no documentation without warning. |
|
| 838 |
+# The default value is: YES. |
|
| 839 |
+ |
|
| 840 |
+WARN_IF_INCOMPLETE_DOC = YES |
|
| 841 |
+ |
|
| 842 |
+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that |
|
| 843 |
+# are documented, but have no documentation for their parameters or return |
|
| 844 |
+# value. If set to NO, doxygen will only warn about wrong parameter |
|
| 845 |
+# documentation, but not about the absence of documentation. If EXTRACT_ALL is |
|
| 846 |
+# set to YES then this flag will automatically be disabled. See also |
|
| 847 |
+# WARN_IF_INCOMPLETE_DOC |
|
| 848 |
+# The default value is: NO. |
|
| 849 |
+ |
|
| 850 |
+WARN_NO_PARAMDOC = YES |
|
| 851 |
+ |
|
| 852 |
+# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when |
|
| 853 |
+# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS |
|
| 854 |
+# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but |
|
| 855 |
+# at the end of the doxygen process doxygen will return with a non-zero status. |
|
| 856 |
+# Possible values are: NO, YES and FAIL_ON_WARNINGS. |
|
| 857 |
+# The default value is: NO. |
|
| 858 |
+ |
|
| 859 |
+WARN_AS_ERROR = YES |
|
| 860 |
+ |
|
| 861 |
+# The WARN_FORMAT tag determines the format of the warning messages that doxygen |
|
| 862 |
+# can produce. The string should contain the $file, $line, and $text tags, which |
|
| 863 |
+# will be replaced by the file and line number from which the warning originated |
|
| 864 |
+# and the warning text. Optionally the format may contain $version, which will |
|
| 865 |
+# be replaced by the version of the file (if it could be obtained via |
|
| 866 |
+# FILE_VERSION_FILTER) |
|
| 867 |
+# See also: WARN_LINE_FORMAT |
|
| 868 |
+# The default value is: $file:$line: $text. |
|
| 869 |
+ |
|
| 870 |
+WARN_FORMAT = "$file:$line: $text" |
|
| 871 |
+ |
|
| 872 |
+# In the $text part of the WARN_FORMAT command it is possible that a reference |
|
| 873 |
+# to a more specific place is given. To make it easier to jump to this place |
|
| 874 |
+# (outside of doxygen) the user can define a custom "cut" / "paste" string. |
|
| 875 |
+# Example: |
|
| 876 |
+# WARN_LINE_FORMAT = "'vi $file +$line'" |
|
| 877 |
+# See also: WARN_FORMAT |
|
| 878 |
+# The default value is: at line $line of file $file. |
|
| 879 |
+ |
|
| 880 |
+WARN_LINE_FORMAT = "at line $line of file $file" |
|
| 881 |
+ |
|
| 882 |
+# The WARN_LOGFILE tag can be used to specify a file to which warning and error |
|
| 883 |
+# messages should be written. If left blank the output is written to standard |
|
| 884 |
+# error (stderr). In case the file specified cannot be opened for writing the |
|
| 885 |
+# warning and error messages are written to standard error. When as file - is |
|
| 886 |
+# specified the warning and error messages are written to standard output |
|
| 887 |
+# (stdout). |
|
| 888 |
+ |
|
| 889 |
+WARN_LOGFILE = warnings.log |
|
| 890 |
+ |
|
| 891 |
+#--------------------------------------------------------------------------- |
|
| 892 |
+# Configuration options related to the input files |
|
| 893 |
+#--------------------------------------------------------------------------- |
|
| 894 |
+ |
|
| 895 |
+# The INPUT tag is used to specify the files and/or directories that contain |
|
| 896 |
+# documented source files. You may enter file names like myfile.cpp or |
|
| 897 |
+# directories like /usr/src/myproject. Separate the files or directories with |
|
| 898 |
+# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING |
|
| 899 |
+# Note: If this tag is empty the current directory is searched. |
|
| 900 |
+ |
|
| 901 |
+INPUT = ../src |
|
| 902 |
+ |
|
| 903 |
+# This tag can be used to specify the character encoding of the source files |
|
| 904 |
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses |
|
| 905 |
+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv |
|
| 906 |
+# documentation (see: |
|
| 907 |
+# https://www.gnu.org/software/libiconv/) for the list of possible encodings. |
|
| 908 |
+# See also: INPUT_FILE_ENCODING |
|
| 909 |
+# The default value is: UTF-8. |
|
| 910 |
+ |
|
| 911 |
+INPUT_ENCODING = UTF-8 |
|
| 912 |
+ |
|
| 913 |
+# This tag can be used to specify the character encoding of the source files |
|
| 914 |
+# that doxygen parses The INPUT_FILE_ENCODING tag can be used to specify |
|
| 915 |
+# character encoding on a per file pattern basis. Doxygen will compare the file |
|
| 916 |
+# name with each pattern and apply the encoding instead of the default |
|
| 917 |
+# INPUT_ENCODING) if there is a match. The character encodings are a list of the |
|
| 918 |
+# form: pattern=encoding (like *.php=ISO-8859-1). See cfg_input_encoding |
|
| 919 |
+# "INPUT_ENCODING" for further information on supported encodings. |
|
| 920 |
+ |
|
| 921 |
+INPUT_FILE_ENCODING = |
|
| 922 |
+ |
|
| 923 |
+# If the value of the INPUT tag contains directories, you can use the |
|
| 924 |
+# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and |
|
| 925 |
+# *.h) to filter out the source-files in the directories. |
|
| 926 |
+# |
|
| 927 |
+# Note that for custom extensions or not directly supported extensions you also |
|
| 928 |
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not |
|
| 929 |
+# read by doxygen. |
|
| 930 |
+# |
|
| 931 |
+# Note the list of default checked file patterns might differ from the list of |
|
| 932 |
+# default file extension mappings. |
|
| 933 |
+# |
|
| 934 |
+# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, |
|
| 935 |
+# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, |
|
| 936 |
+# *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, |
|
| 937 |
+# *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C |
|
| 938 |
+# comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, |
|
| 939 |
+# *.vhdl, *.ucf, *.qsf and *.ice. |
|
| 940 |
+ |
|
| 941 |
+FILE_PATTERNS = *.h \ |
|
| 942 |
+ *.cpp |
|
| 943 |
+ |
|
| 944 |
+# The RECURSIVE tag can be used to specify whether or not subdirectories should |
|
| 945 |
+# be searched for input files as well. |
|
| 946 |
+# The default value is: NO. |
|
| 947 |
+ |
|
| 948 |
+RECURSIVE = NO |
|
| 949 |
+ |
|
| 950 |
+# The EXCLUDE tag can be used to specify files and/or directories that should be |
|
| 951 |
+# excluded from the INPUT source files. This way you can easily exclude a |
|
| 952 |
+# subdirectory from a directory tree whose root is specified with the INPUT tag. |
|
| 953 |
+# |
|
| 954 |
+# Note that relative paths are relative to the directory from which doxygen is |
|
| 955 |
+# run. |
|
| 956 |
+ |
|
| 957 |
+EXCLUDE = |
|
| 958 |
+ |
|
| 959 |
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or |
|
| 960 |
+# directories that are symbolic links (a Unix file system feature) are excluded |
|
| 961 |
+# from the input. |
|
| 962 |
+# The default value is: NO. |
|
| 963 |
+ |
|
| 964 |
+EXCLUDE_SYMLINKS = NO |
|
| 965 |
+ |
|
| 966 |
+# If the value of the INPUT tag contains directories, you can use the |
|
| 967 |
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude |
|
| 968 |
+# certain files from those directories. |
|
| 969 |
+# |
|
| 970 |
+# Note that the wildcards are matched against the file with absolute path, so to |
|
| 971 |
+# exclude all test directories for example use the pattern */test/* |
|
| 972 |
+ |
|
| 973 |
+EXCLUDE_PATTERNS = moc_*.cpp |
|
| 974 |
+ |
|
| 975 |
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names |
|
| 976 |
+# (namespaces, classes, functions, etc.) that should be excluded from the |
|
| 977 |
+# output. The symbol name can be a fully qualified name, a word, or if the |
|
| 978 |
+# wildcard * is used, a substring. Examples: ANamespace, AClass, |
|
| 979 |
+# ANamespace::AClass, ANamespace::*Test |
|
| 980 |
+# |
|
| 981 |
+# Note that the wildcards are matched against the file with absolute path, so to |
|
| 982 |
+# exclude all test directories use the pattern */test/* |
|
| 983 |
+ |
|
| 984 |
+EXCLUDE_SYMBOLS = |
|
| 985 |
+ |
|
| 986 |
+# The EXAMPLE_PATH tag can be used to specify one or more files or directories |
|
| 987 |
+# that contain example code fragments that are included (see the \include |
|
| 988 |
+# command). |
|
| 989 |
+ |
|
| 990 |
+EXAMPLE_PATH = |
|
| 991 |
+ |
|
| 992 |
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the |
|
| 993 |
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and |
|
| 994 |
+# *.h) to filter out the source-files in the directories. If left blank all |
|
| 995 |
+# files are included. |
|
| 996 |
+ |
|
| 997 |
+EXAMPLE_PATTERNS = |
|
| 998 |
+ |
|
| 999 |
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be |
|
| 1000 |
+# searched for input files to be used with the \include or \dontinclude commands |
|
| 1001 |
+# irrespective of the value of the RECURSIVE tag. |
|
| 1002 |
+# The default value is: NO. |
|
| 1003 |
+ |
|
| 1004 |
+EXAMPLE_RECURSIVE = NO |
|
| 1005 |
+ |
|
| 1006 |
+# The IMAGE_PATH tag can be used to specify one or more files or directories |
|
| 1007 |
+# that contain images that are to be included in the documentation (see the |
|
| 1008 |
+# \image command). |
|
| 1009 |
+ |
|
| 1010 |
+IMAGE_PATH = |
|
| 1011 |
+ |
|
| 1012 |
+# The INPUT_FILTER tag can be used to specify a program that doxygen should |
|
| 1013 |
+# invoke to filter for each input file. Doxygen will invoke the filter program |
|
| 1014 |
+# by executing (via popen()) the command: |
|
| 1015 |
+# |
|
| 1016 |
+# <filter> <input-file> |
|
| 1017 |
+# |
|
| 1018 |
+# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the |
|
| 1019 |
+# name of an input file. Doxygen will then use the output that the filter |
|
| 1020 |
+# program writes to standard output. If FILTER_PATTERNS is specified, this tag |
|
| 1021 |
+# will be ignored. |
|
| 1022 |
+# |
|
| 1023 |
+# Note that the filter must not add or remove lines; it is applied before the |
|
| 1024 |
+# code is scanned, but not when the output code is generated. If lines are added |
|
| 1025 |
+# or removed, the anchors will not be placed correctly. |
|
| 1026 |
+# |
|
| 1027 |
+# Note that doxygen will use the data processed and written to standard output |
|
| 1028 |
+# for further processing, therefore nothing else, like debug statements or used |
|
| 1029 |
+# commands (so in case of a Windows batch file always use @echo OFF), should be |
|
| 1030 |
+# written to standard output. |
|
| 1031 |
+# |
|
| 1032 |
+# Note that for custom extensions or not directly supported extensions you also |
|
| 1033 |
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not |
|
| 1034 |
+# properly processed by doxygen. |
|
| 1035 |
+ |
|
| 1036 |
+INPUT_FILTER = |
|
| 1037 |
+ |
|
| 1038 |
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern |
|
| 1039 |
+# basis. Doxygen will compare the file name with each pattern and apply the |
|
| 1040 |
+# filter if there is a match. The filters are a list of the form: pattern=filter |
|
| 1041 |
+# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how |
|
| 1042 |
+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the |
|
| 1043 |
+# patterns match the file name, INPUT_FILTER is applied. |
|
| 1044 |
+# |
|
| 1045 |
+# Note that for custom extensions or not directly supported extensions you also |
|
| 1046 |
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not |
|
| 1047 |
+# properly processed by doxygen. |
|
| 1048 |
+ |
|
| 1049 |
+FILTER_PATTERNS = |
|
| 1050 |
+ |
|
| 1051 |
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using |
|
| 1052 |
+# INPUT_FILTER) will also be used to filter the input files that are used for |
|
| 1053 |
+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). |
|
| 1054 |
+# The default value is: NO. |
|
| 1055 |
+ |
|
| 1056 |
+FILTER_SOURCE_FILES = NO |
|
| 1057 |
+ |
|
| 1058 |
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file |
|
| 1059 |
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and |
|
| 1060 |
+# it is also possible to disable source filtering for a specific pattern using |
|
| 1061 |
+# *.ext= (so without naming a filter). |
|
| 1062 |
+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. |
|
| 1063 |
+ |
|
| 1064 |
+FILTER_SOURCE_PATTERNS = |
|
| 1065 |
+ |
|
| 1066 |
+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that |
|
| 1067 |
+# is part of the input, its contents will be placed on the main page |
|
| 1068 |
+# (index.html). This can be useful if you have a project on for instance GitHub |
|
| 1069 |
+# and want to reuse the introduction page also for the doxygen output. |
|
| 1070 |
+ |
|
| 1071 |
+USE_MDFILE_AS_MAINPAGE = |
|
| 1072 |
+ |
|
| 1073 |
+# The Fortran standard specifies that for fixed formatted Fortran code all |
|
| 1074 |
+# characters from position 72 are to be considered as comment. A common |
|
| 1075 |
+# extension is to allow longer lines before the automatic comment starts. The |
|
| 1076 |
+# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can |
|
| 1077 |
+# be processed before the automatic comment starts. |
|
| 1078 |
+# Minimum value: 7, maximum value: 10000, default value: 72. |
|
| 1079 |
+ |
|
| 1080 |
+FORTRAN_COMMENT_AFTER = 72 |
|
| 1081 |
+ |
|
| 1082 |
+#--------------------------------------------------------------------------- |
|
| 1083 |
+# Configuration options related to source browsing |
|
| 1084 |
+#--------------------------------------------------------------------------- |
|
| 1085 |
+ |
|
| 1086 |
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will be |
|
| 1087 |
+# generated. Documented entities will be cross-referenced with these sources. |
|
| 1088 |
+# |
|
| 1089 |
+# Note: To get rid of all source code in the generated output, make sure that |
|
| 1090 |
+# also VERBATIM_HEADERS is set to NO. |
|
| 1091 |
+# The default value is: NO. |
|
| 1092 |
+ |
|
| 1093 |
+SOURCE_BROWSER = YES |
|
| 1094 |
+ |
|
| 1095 |
+# Setting the INLINE_SOURCES tag to YES will include the body of functions, |
|
| 1096 |
+# classes and enums directly into the documentation. |
|
| 1097 |
+# The default value is: NO. |
|
| 1098 |
+ |
|
| 1099 |
+INLINE_SOURCES = YES |
|
| 1100 |
+ |
|
| 1101 |
+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any |
|
| 1102 |
+# special comment blocks from generated source code fragments. Normal C, C++ and |
|
| 1103 |
+# Fortran comments will always remain visible. |
|
| 1104 |
+# The default value is: YES. |
|
| 1105 |
+ |
|
| 1106 |
+STRIP_CODE_COMMENTS = NO |
|
| 1107 |
+ |
|
| 1108 |
+# If the REFERENCED_BY_RELATION tag is set to YES then for each documented |
|
| 1109 |
+# entity all documented functions referencing it will be listed. |
|
| 1110 |
+# The default value is: NO. |
|
| 1111 |
+ |
|
| 1112 |
+REFERENCED_BY_RELATION = YES |
|
| 1113 |
+ |
|
| 1114 |
+# If the REFERENCES_RELATION tag is set to YES then for each documented function |
|
| 1115 |
+# all documented entities called/used by that function will be listed. |
|
| 1116 |
+# The default value is: NO. |
|
| 1117 |
+ |
|
| 1118 |
+REFERENCES_RELATION = YES |
|
| 1119 |
+ |
|
| 1120 |
+# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set |
|
| 1121 |
+# to YES then the hyperlinks from functions in REFERENCES_RELATION and |
|
| 1122 |
+# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will |
|
| 1123 |
+# link to the documentation. |
|
| 1124 |
+# The default value is: YES. |
|
| 1125 |
+ |
|
| 1126 |
+REFERENCES_LINK_SOURCE = YES |
|
| 1127 |
+ |
|
| 1128 |
+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the |
|
| 1129 |
+# source code will show a tooltip with additional information such as prototype, |
|
| 1130 |
+# brief description and links to the definition and documentation. Since this |
|
| 1131 |
+# will make the HTML file larger and loading of large files a bit slower, you |
|
| 1132 |
+# can opt to disable this feature. |
|
| 1133 |
+# The default value is: YES. |
|
| 1134 |
+# This tag requires that the tag SOURCE_BROWSER is set to YES. |
|
| 1135 |
+ |
|
| 1136 |
+SOURCE_TOOLTIPS = YES |
|
| 1137 |
+ |
|
| 1138 |
+# If the USE_HTAGS tag is set to YES then the references to source code will |
|
| 1139 |
+# point to the HTML generated by the htags(1) tool instead of doxygen built-in |
|
| 1140 |
+# source browser. The htags tool is part of GNU's global source tagging system |
|
| 1141 |
+# (see https://www.gnu.org/software/global/global.html). You will need version |
|
| 1142 |
+# 4.8.6 or higher. |
|
| 1143 |
+# |
|
| 1144 |
+# To use it do the following: |
|
| 1145 |
+# - Install the latest version of global |
|
| 1146 |
+# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file |
|
| 1147 |
+# - Make sure the INPUT points to the root of the source tree |
|
| 1148 |
+# - Run doxygen as normal |
|
| 1149 |
+# |
|
| 1150 |
+# Doxygen will invoke htags (and that will in turn invoke gtags), so these |
|
| 1151 |
+# tools must be available from the command line (i.e. in the search path). |
|
| 1152 |
+# |
|
| 1153 |
+# The result: instead of the source browser generated by doxygen, the links to |
|
| 1154 |
+# source code will now point to the output of htags. |
|
| 1155 |
+# The default value is: NO. |
|
| 1156 |
+# This tag requires that the tag SOURCE_BROWSER is set to YES. |
|
| 1157 |
+ |
|
| 1158 |
+USE_HTAGS = NO |
|
| 1159 |
+ |
|
| 1160 |
+# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a |
|
| 1161 |
+# verbatim copy of the header file for each class for which an include is |
|
| 1162 |
+# specified. Set to NO to disable this. |
|
| 1163 |
+# See also: Section \class. |
|
| 1164 |
+# The default value is: YES. |
|
| 1165 |
+ |
|
| 1166 |
+VERBATIM_HEADERS = YES |
|
| 1167 |
+ |
|
| 1168 |
+#--------------------------------------------------------------------------- |
|
| 1169 |
+# Configuration options related to the alphabetical class index |
|
| 1170 |
+#--------------------------------------------------------------------------- |
|
| 1171 |
+ |
|
| 1172 |
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all |
|
| 1173 |
+# compounds will be generated. Enable this if the project contains a lot of |
|
| 1174 |
+# classes, structs, unions or interfaces. |
|
| 1175 |
+# The default value is: YES. |
|
| 1176 |
+ |
|
| 1177 |
+ALPHABETICAL_INDEX = YES |
|
| 1178 |
+ |
|
| 1179 |
+# In case all classes in a project start with a common prefix, all classes will |
|
| 1180 |
+# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag |
|
| 1181 |
+# can be used to specify a prefix (or a list of prefixes) that should be ignored |
|
| 1182 |
+# while generating the index headers. |
|
| 1183 |
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. |
|
| 1184 |
+ |
|
| 1185 |
+IGNORE_PREFIX = |
|
| 1186 |
+ |
|
| 1187 |
+#--------------------------------------------------------------------------- |
|
| 1188 |
+# Configuration options related to the HTML output |
|
| 1189 |
+#--------------------------------------------------------------------------- |
|
| 1190 |
+ |
|
| 1191 |
+# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output |
|
| 1192 |
+# The default value is: YES. |
|
| 1193 |
+ |
|
| 1194 |
+GENERATE_HTML = YES |
|
| 1195 |
+ |
|
| 1196 |
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a |
|
| 1197 |
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of |
|
| 1198 |
+# it. |
|
| 1199 |
+# The default directory is: html. |
|
| 1200 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1201 |
+ |
|
| 1202 |
+HTML_OUTPUT = |
|
| 1203 |
+ |
|
| 1204 |
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each |
|
| 1205 |
+# generated HTML page (for example: .htm, .php, .asp). |
|
| 1206 |
+# The default value is: .html. |
|
| 1207 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1208 |
+ |
|
| 1209 |
+HTML_FILE_EXTENSION = .html |
|
| 1210 |
+ |
|
| 1211 |
+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for |
|
| 1212 |
+# each generated HTML page. If the tag is left blank doxygen will generate a |
|
| 1213 |
+# standard header. |
|
| 1214 |
+# |
|
| 1215 |
+# To get valid HTML the header file that includes any scripts and style sheets |
|
| 1216 |
+# that doxygen needs, which is dependent on the configuration options used (e.g. |
|
| 1217 |
+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a |
|
| 1218 |
+# default header using |
|
| 1219 |
+# doxygen -w html new_header.html new_footer.html new_stylesheet.css |
|
| 1220 |
+# YourConfigFile |
|
| 1221 |
+# and then modify the file new_header.html. See also section "Doxygen usage" |
|
| 1222 |
+# for information on how to generate the default header that doxygen normally |
|
| 1223 |
+# uses. |
|
| 1224 |
+# Note: The header is subject to change so you typically have to regenerate the |
|
| 1225 |
+# default header when upgrading to a newer version of doxygen. For a description |
|
| 1226 |
+# of the possible markers and block names see the documentation. |
|
| 1227 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1228 |
+ |
|
| 1229 |
+HTML_HEADER = |
|
| 1230 |
+ |
|
| 1231 |
+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each |
|
| 1232 |
+# generated HTML page. If the tag is left blank doxygen will generate a standard |
|
| 1233 |
+# footer. See HTML_HEADER for more information on how to generate a default |
|
| 1234 |
+# footer and what special commands can be used inside the footer. See also |
|
| 1235 |
+# section "Doxygen usage" for information on how to generate the default footer |
|
| 1236 |
+# that doxygen normally uses. |
|
| 1237 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1238 |
+ |
|
| 1239 |
+HTML_FOOTER = |
|
| 1240 |
+ |
|
| 1241 |
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style |
|
| 1242 |
+# sheet that is used by each HTML page. It can be used to fine-tune the look of |
|
| 1243 |
+# the HTML output. If left blank doxygen will generate a default style sheet. |
|
| 1244 |
+# See also section "Doxygen usage" for information on how to generate the style |
|
| 1245 |
+# sheet that doxygen normally uses. |
|
| 1246 |
+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as |
|
| 1247 |
+# it is more robust and this tag (HTML_STYLESHEET) will in the future become |
|
| 1248 |
+# obsolete. |
|
| 1249 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1250 |
+ |
|
| 1251 |
+HTML_STYLESHEET = |
|
| 1252 |
+ |
|
| 1253 |
+# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined |
|
| 1254 |
+# cascading style sheets that are included after the standard style sheets |
|
| 1255 |
+# created by doxygen. Using this option one can overrule certain style aspects. |
|
| 1256 |
+# This is preferred over using HTML_STYLESHEET since it does not replace the |
|
| 1257 |
+# standard style sheet and is therefore more robust against future updates. |
|
| 1258 |
+# Doxygen will copy the style sheet files to the output directory. |
|
| 1259 |
+# Note: The order of the extra style sheet files is of importance (e.g. the last |
|
| 1260 |
+# style sheet in the list overrules the setting of the previous ones in the |
|
| 1261 |
+# list). For an example see the documentation. |
|
| 1262 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1263 |
+ |
|
| 1264 |
+HTML_EXTRA_STYLESHEET = |
|
| 1265 |
+ |
|
| 1266 |
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or |
|
| 1267 |
+# other source files which should be copied to the HTML output directory. Note |
|
| 1268 |
+# that these files will be copied to the base HTML output directory. Use the |
|
| 1269 |
+# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these |
|
| 1270 |
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the |
|
| 1271 |
+# files will be copied as-is; there are no commands or markers available. |
|
| 1272 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1273 |
+ |
|
| 1274 |
+HTML_EXTRA_FILES = |
|
| 1275 |
+ |
|
| 1276 |
+# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output |
|
| 1277 |
+# should be rendered with a dark or light theme. Default setting AUTO_LIGHT |
|
| 1278 |
+# enables light output unless the user preference is dark output. Other options |
|
| 1279 |
+# are DARK to always use dark mode, LIGHT to always use light mode, AUTO_DARK to |
|
| 1280 |
+# default to dark mode unless the user prefers light mode, and TOGGLE to let the |
|
| 1281 |
+# user toggle between dark and light mode via a button. |
|
| 1282 |
+# Possible values are: LIGHT Always generate light output., DARK Always generate |
|
| 1283 |
+# dark output., AUTO_LIGHT Automatically set the mode according to the user |
|
| 1284 |
+# preference, use light mode if no preference is set (the default)., AUTO_DARK |
|
| 1285 |
+# Automatically set the mode according to the user preference, use dark mode if |
|
| 1286 |
+# no preference is set. and TOGGLE Allow to user to switch between light and |
|
| 1287 |
+# dark mode via a button.. |
|
| 1288 |
+# The default value is: AUTO_LIGHT. |
|
| 1289 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1290 |
+ |
|
| 1291 |
+HTML_COLORSTYLE = AUTO_LIGHT |
|
| 1292 |
+ |
|
| 1293 |
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen |
|
| 1294 |
+# will adjust the colors in the style sheet and background images according to |
|
| 1295 |
+# this color. Hue is specified as an angle on a color-wheel, see |
|
| 1296 |
+# https://en.wikipedia.org/wiki/Hue for more information. For instance the value |
|
| 1297 |
+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 |
|
| 1298 |
+# purple, and 360 is red again. |
|
| 1299 |
+# Minimum value: 0, maximum value: 359, default value: 220. |
|
| 1300 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1301 |
+ |
|
| 1302 |
+HTML_COLORSTYLE_HUE = 220 |
|
| 1303 |
+ |
|
| 1304 |
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors |
|
| 1305 |
+# in the HTML output. For a value of 0 the output will use gray-scales only. A |
|
| 1306 |
+# value of 255 will produce the most vivid colors. |
|
| 1307 |
+# Minimum value: 0, maximum value: 255, default value: 100. |
|
| 1308 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1309 |
+ |
|
| 1310 |
+HTML_COLORSTYLE_SAT = 100 |
|
| 1311 |
+ |
|
| 1312 |
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the |
|
| 1313 |
+# luminance component of the colors in the HTML output. Values below 100 |
|
| 1314 |
+# gradually make the output lighter, whereas values above 100 make the output |
|
| 1315 |
+# darker. The value divided by 100 is the actual gamma applied, so 80 represents |
|
| 1316 |
+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not |
|
| 1317 |
+# change the gamma. |
|
| 1318 |
+# Minimum value: 40, maximum value: 240, default value: 80. |
|
| 1319 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1320 |
+ |
|
| 1321 |
+HTML_COLORSTYLE_GAMMA = 80 |
|
| 1322 |
+ |
|
| 1323 |
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML |
|
| 1324 |
+# page will contain the date and time when the page was generated. Setting this |
|
| 1325 |
+# to YES can help to show when doxygen was last run and thus if the |
|
| 1326 |
+# documentation is up to date. |
|
| 1327 |
+# The default value is: NO. |
|
| 1328 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1329 |
+ |
|
| 1330 |
+HTML_TIMESTAMP = YES |
|
| 1331 |
+ |
|
| 1332 |
+# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML |
|
| 1333 |
+# documentation will contain a main index with vertical navigation menus that |
|
| 1334 |
+# are dynamically created via JavaScript. If disabled, the navigation index will |
|
| 1335 |
+# consists of multiple levels of tabs that are statically embedded in every HTML |
|
| 1336 |
+# page. Disable this option to support browsers that do not have JavaScript, |
|
| 1337 |
+# like the Qt help browser. |
|
| 1338 |
+# The default value is: YES. |
|
| 1339 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1340 |
+ |
|
| 1341 |
+HTML_DYNAMIC_MENUS = NO |
|
| 1342 |
+ |
|
| 1343 |
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML |
|
| 1344 |
+# documentation will contain sections that can be hidden and shown after the |
|
| 1345 |
+# page has loaded. |
|
| 1346 |
+# The default value is: NO. |
|
| 1347 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1348 |
+ |
|
| 1349 |
+HTML_DYNAMIC_SECTIONS = NO |
|
| 1350 |
+ |
|
| 1351 |
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries |
|
| 1352 |
+# shown in the various tree structured indices initially; the user can expand |
|
| 1353 |
+# and collapse entries dynamically later on. Doxygen will expand the tree to |
|
| 1354 |
+# such a level that at most the specified number of entries are visible (unless |
|
| 1355 |
+# a fully collapsed tree already exceeds this amount). So setting the number of |
|
| 1356 |
+# entries 1 will produce a full collapsed tree by default. 0 is a special value |
|
| 1357 |
+# representing an infinite number of entries and will result in a full expanded |
|
| 1358 |
+# tree by default. |
|
| 1359 |
+# Minimum value: 0, maximum value: 9999, default value: 100. |
|
| 1360 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1361 |
+ |
|
| 1362 |
+HTML_INDEX_NUM_ENTRIES = 100 |
|
| 1363 |
+ |
|
| 1364 |
+# If the GENERATE_DOCSET tag is set to YES, additional index files will be |
|
| 1365 |
+# generated that can be used as input for Apple's Xcode 3 integrated development |
|
| 1366 |
+# environment (see: |
|
| 1367 |
+# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To |
|
| 1368 |
+# create a documentation set, doxygen will generate a Makefile in the HTML |
|
| 1369 |
+# output directory. Running make will produce the docset in that directory and |
|
| 1370 |
+# running make install will install the docset in |
|
| 1371 |
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at |
|
| 1372 |
+# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy |
|
| 1373 |
+# genXcode/_index.html for more information. |
|
| 1374 |
+# The default value is: NO. |
|
| 1375 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1376 |
+ |
|
| 1377 |
+GENERATE_DOCSET = NO |
|
| 1378 |
+ |
|
| 1379 |
+# This tag determines the name of the docset feed. A documentation feed provides |
|
| 1380 |
+# an umbrella under which multiple documentation sets from a single provider |
|
| 1381 |
+# (such as a company or product suite) can be grouped. |
|
| 1382 |
+# The default value is: Doxygen generated docs. |
|
| 1383 |
+# This tag requires that the tag GENERATE_DOCSET is set to YES. |
|
| 1384 |
+ |
|
| 1385 |
+DOCSET_FEEDNAME = "Doxygen docs" |
|
| 1386 |
+ |
|
| 1387 |
+# This tag determines the URL of the docset feed. A documentation feed provides |
|
| 1388 |
+# an umbrella under which multiple documentation sets from a single provider |
|
| 1389 |
+# (such as a company or product suite) can be grouped. |
|
| 1390 |
+# This tag requires that the tag GENERATE_DOCSET is set to YES. |
|
| 1391 |
+ |
|
| 1392 |
+DOCSET_FEEDURL = |
|
| 1393 |
+ |
|
| 1394 |
+# This tag specifies a string that should uniquely identify the documentation |
|
| 1395 |
+# set bundle. This should be a reverse domain-name style string, e.g. |
|
| 1396 |
+# com.mycompany.MyDocSet. Doxygen will append .docset to the name. |
|
| 1397 |
+# The default value is: org.doxygen.Project. |
|
| 1398 |
+# This tag requires that the tag GENERATE_DOCSET is set to YES. |
|
| 1399 |
+ |
|
| 1400 |
+DOCSET_BUNDLE_ID = org.doxygen.Doxygen |
|
| 1401 |
+ |
|
| 1402 |
+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify |
|
| 1403 |
+# the documentation publisher. This should be a reverse domain-name style |
|
| 1404 |
+# string, e.g. com.mycompany.MyDocSet.documentation. |
|
| 1405 |
+# The default value is: org.doxygen.Publisher. |
|
| 1406 |
+# This tag requires that the tag GENERATE_DOCSET is set to YES. |
|
| 1407 |
+ |
|
| 1408 |
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher |
|
| 1409 |
+ |
|
| 1410 |
+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. |
|
| 1411 |
+# The default value is: Publisher. |
|
| 1412 |
+# This tag requires that the tag GENERATE_DOCSET is set to YES. |
|
| 1413 |
+ |
|
| 1414 |
+DOCSET_PUBLISHER_NAME = Publisher |
|
| 1415 |
+ |
|
| 1416 |
+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three |
|
| 1417 |
+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The |
|
| 1418 |
+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop |
|
| 1419 |
+# on Windows. In the beginning of 2021 Microsoft took the original page, with |
|
| 1420 |
+# a.o. the download links, offline the HTML help workshop was already many years |
|
| 1421 |
+# in maintenance mode). You can download the HTML help workshop from the web |
|
| 1422 |
+# archives at Installation executable (see: |
|
| 1423 |
+# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo |
|
| 1424 |
+# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). |
|
| 1425 |
+# |
|
| 1426 |
+# The HTML Help Workshop contains a compiler that can convert all HTML output |
|
| 1427 |
+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML |
|
| 1428 |
+# files are now used as the Windows 98 help format, and will replace the old |
|
| 1429 |
+# Windows help format (.hlp) on all Windows platforms in the future. Compressed |
|
| 1430 |
+# HTML files also contain an index, a table of contents, and you can search for |
|
| 1431 |
+# words in the documentation. The HTML workshop also contains a viewer for |
|
| 1432 |
+# compressed HTML files. |
|
| 1433 |
+# The default value is: NO. |
|
| 1434 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1435 |
+ |
|
| 1436 |
+GENERATE_HTMLHELP = NO |
|
| 1437 |
+ |
|
| 1438 |
+# The CHM_FILE tag can be used to specify the file name of the resulting .chm |
|
| 1439 |
+# file. You can add a path in front of the file if the result should not be |
|
| 1440 |
+# written to the html output directory. |
|
| 1441 |
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES. |
|
| 1442 |
+ |
|
| 1443 |
+CHM_FILE = |
|
| 1444 |
+ |
|
| 1445 |
+# The HHC_LOCATION tag can be used to specify the location (absolute path |
|
| 1446 |
+# including file name) of the HTML help compiler (hhc.exe). If non-empty, |
|
| 1447 |
+# doxygen will try to run the HTML help compiler on the generated index.hhp. |
|
| 1448 |
+# The file has to be specified with full path. |
|
| 1449 |
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES. |
|
| 1450 |
+ |
|
| 1451 |
+HHC_LOCATION = |
|
| 1452 |
+ |
|
| 1453 |
+# The GENERATE_CHI flag controls if a separate .chi index file is generated |
|
| 1454 |
+# (YES) or that it should be included in the main .chm file (NO). |
|
| 1455 |
+# The default value is: NO. |
|
| 1456 |
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES. |
|
| 1457 |
+ |
|
| 1458 |
+GENERATE_CHI = NO |
|
| 1459 |
+ |
|
| 1460 |
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) |
|
| 1461 |
+# and project file content. |
|
| 1462 |
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES. |
|
| 1463 |
+ |
|
| 1464 |
+CHM_INDEX_ENCODING = |
|
| 1465 |
+ |
|
| 1466 |
+# The BINARY_TOC flag controls whether a binary table of contents is generated |
|
| 1467 |
+# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it |
|
| 1468 |
+# enables the Previous and Next buttons. |
|
| 1469 |
+# The default value is: NO. |
|
| 1470 |
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES. |
|
| 1471 |
+ |
|
| 1472 |
+BINARY_TOC = NO |
|
| 1473 |
+ |
|
| 1474 |
+# The TOC_EXPAND flag can be set to YES to add extra items for group members to |
|
| 1475 |
+# the table of contents of the HTML help documentation and to the tree view. |
|
| 1476 |
+# The default value is: NO. |
|
| 1477 |
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES. |
|
| 1478 |
+ |
|
| 1479 |
+TOC_EXPAND = NO |
|
| 1480 |
+ |
|
| 1481 |
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and |
|
| 1482 |
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that |
|
| 1483 |
+# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help |
|
| 1484 |
+# (.qch) of the generated HTML documentation. |
|
| 1485 |
+# The default value is: NO. |
|
| 1486 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1487 |
+ |
|
| 1488 |
+GENERATE_QHP = NO |
|
| 1489 |
+ |
|
| 1490 |
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify |
|
| 1491 |
+# the file name of the resulting .qch file. The path specified is relative to |
|
| 1492 |
+# the HTML output folder. |
|
| 1493 |
+# This tag requires that the tag GENERATE_QHP is set to YES. |
|
| 1494 |
+ |
|
| 1495 |
+QCH_FILE = |
|
| 1496 |
+ |
|
| 1497 |
+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help |
|
| 1498 |
+# Project output. For more information please see Qt Help Project / Namespace |
|
| 1499 |
+# (see: |
|
| 1500 |
+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). |
|
| 1501 |
+# The default value is: org.doxygen.Project. |
|
| 1502 |
+# This tag requires that the tag GENERATE_QHP is set to YES. |
|
| 1503 |
+ |
|
| 1504 |
+QHP_NAMESPACE = org.doxygen.Project |
|
| 1505 |
+ |
|
| 1506 |
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt |
|
| 1507 |
+# Help Project output. For more information please see Qt Help Project / Virtual |
|
| 1508 |
+# Folders (see: |
|
| 1509 |
+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). |
|
| 1510 |
+# The default value is: doc. |
|
| 1511 |
+# This tag requires that the tag GENERATE_QHP is set to YES. |
|
| 1512 |
+ |
|
| 1513 |
+QHP_VIRTUAL_FOLDER = doc |
|
| 1514 |
+ |
|
| 1515 |
+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom |
|
| 1516 |
+# filter to add. For more information please see Qt Help Project / Custom |
|
| 1517 |
+# Filters (see: |
|
| 1518 |
+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). |
|
| 1519 |
+# This tag requires that the tag GENERATE_QHP is set to YES. |
|
| 1520 |
+ |
|
| 1521 |
+QHP_CUST_FILTER_NAME = |
|
| 1522 |
+ |
|
| 1523 |
+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the |
|
| 1524 |
+# custom filter to add. For more information please see Qt Help Project / Custom |
|
| 1525 |
+# Filters (see: |
|
| 1526 |
+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). |
|
| 1527 |
+# This tag requires that the tag GENERATE_QHP is set to YES. |
|
| 1528 |
+ |
|
| 1529 |
+QHP_CUST_FILTER_ATTRS = |
|
| 1530 |
+ |
|
| 1531 |
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this |
|
| 1532 |
+# project's filter section matches. Qt Help Project / Filter Attributes (see: |
|
| 1533 |
+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). |
|
| 1534 |
+# This tag requires that the tag GENERATE_QHP is set to YES. |
|
| 1535 |
+ |
|
| 1536 |
+QHP_SECT_FILTER_ATTRS = |
|
| 1537 |
+ |
|
| 1538 |
+# The QHG_LOCATION tag can be used to specify the location (absolute path |
|
| 1539 |
+# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to |
|
| 1540 |
+# run qhelpgenerator on the generated .qhp file. |
|
| 1541 |
+# This tag requires that the tag GENERATE_QHP is set to YES. |
|
| 1542 |
+ |
|
| 1543 |
+QHG_LOCATION = |
|
| 1544 |
+ |
|
| 1545 |
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be |
|
| 1546 |
+# generated, together with the HTML files, they form an Eclipse help plugin. To |
|
| 1547 |
+# install this plugin and make it available under the help contents menu in |
|
| 1548 |
+# Eclipse, the contents of the directory containing the HTML and XML files needs |
|
| 1549 |
+# to be copied into the plugins directory of eclipse. The name of the directory |
|
| 1550 |
+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. |
|
| 1551 |
+# After copying Eclipse needs to be restarted before the help appears. |
|
| 1552 |
+# The default value is: NO. |
|
| 1553 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1554 |
+ |
|
| 1555 |
+GENERATE_ECLIPSEHELP = NO |
|
| 1556 |
+ |
|
| 1557 |
+# A unique identifier for the Eclipse help plugin. When installing the plugin |
|
| 1558 |
+# the directory name containing the HTML and XML files should also have this |
|
| 1559 |
+# name. Each documentation set should have its own identifier. |
|
| 1560 |
+# The default value is: org.doxygen.Project. |
|
| 1561 |
+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. |
|
| 1562 |
+ |
|
| 1563 |
+ECLIPSE_DOC_ID = org.doxygen.Project |
|
| 1564 |
+ |
|
| 1565 |
+# If you want full control over the layout of the generated HTML pages it might |
|
| 1566 |
+# be necessary to disable the index and replace it with your own. The |
|
| 1567 |
+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top |
|
| 1568 |
+# of each HTML page. A value of NO enables the index and the value YES disables |
|
| 1569 |
+# it. Since the tabs in the index contain the same information as the navigation |
|
| 1570 |
+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. |
|
| 1571 |
+# The default value is: NO. |
|
| 1572 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1573 |
+ |
|
| 1574 |
+DISABLE_INDEX = NO |
|
| 1575 |
+ |
|
| 1576 |
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index |
|
| 1577 |
+# structure should be generated to display hierarchical information. If the tag |
|
| 1578 |
+# value is set to YES, a side panel will be generated containing a tree-like |
|
| 1579 |
+# index structure (just like the one that is generated for HTML Help). For this |
|
| 1580 |
+# to work a browser that supports JavaScript, DHTML, CSS and frames is required |
|
| 1581 |
+# (i.e. any modern browser). Windows users are probably better off using the |
|
| 1582 |
+# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can |
|
| 1583 |
+# further fine tune the look of the index (see "Fine-tuning the output"). As an |
|
| 1584 |
+# example, the default style sheet generated by doxygen has an example that |
|
| 1585 |
+# shows how to put an image at the root of the tree instead of the PROJECT_NAME. |
|
| 1586 |
+# Since the tree basically has the same information as the tab index, you could |
|
| 1587 |
+# consider setting DISABLE_INDEX to YES when enabling this option. |
|
| 1588 |
+# The default value is: NO. |
|
| 1589 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1590 |
+ |
|
| 1591 |
+GENERATE_TREEVIEW = YES |
|
| 1592 |
+ |
|
| 1593 |
+# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the |
|
| 1594 |
+# FULL_SIDEBAR option determines if the side bar is limited to only the treeview |
|
| 1595 |
+# area (value NO) or if it should extend to the full height of the window (value |
|
| 1596 |
+# YES). Setting this to YES gives a layout similar to |
|
| 1597 |
+# https://docs.readthedocs.io with more room for contents, but less room for the |
|
| 1598 |
+# project logo, title, and description. If either GENERATE_TREEVIEW or |
|
| 1599 |
+# DISABLE_INDEX is set to NO, this option has no effect. |
|
| 1600 |
+# The default value is: NO. |
|
| 1601 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1602 |
+ |
|
| 1603 |
+FULL_SIDEBAR = NO |
|
| 1604 |
+ |
|
| 1605 |
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that |
|
| 1606 |
+# doxygen will group on one line in the generated HTML documentation. |
|
| 1607 |
+# |
|
| 1608 |
+# Note that a value of 0 will completely suppress the enum values from appearing |
|
| 1609 |
+# in the overview section. |
|
| 1610 |
+# Minimum value: 0, maximum value: 20, default value: 4. |
|
| 1611 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1612 |
+ |
|
| 1613 |
+ENUM_VALUES_PER_LINE = 4 |
|
| 1614 |
+ |
|
| 1615 |
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used |
|
| 1616 |
+# to set the initial width (in pixels) of the frame in which the tree is shown. |
|
| 1617 |
+# Minimum value: 0, maximum value: 1500, default value: 250. |
|
| 1618 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1619 |
+ |
|
| 1620 |
+TREEVIEW_WIDTH = 250 |
|
| 1621 |
+ |
|
| 1622 |
+# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to |
|
| 1623 |
+# external symbols imported via tag files in a separate window. |
|
| 1624 |
+# The default value is: NO. |
|
| 1625 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1626 |
+ |
|
| 1627 |
+EXT_LINKS_IN_WINDOW = NO |
|
| 1628 |
+ |
|
| 1629 |
+# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email |
|
| 1630 |
+# addresses. |
|
| 1631 |
+# The default value is: YES. |
|
| 1632 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1633 |
+ |
|
| 1634 |
+OBFUSCATE_EMAILS = YES |
|
| 1635 |
+ |
|
| 1636 |
+# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg |
|
| 1637 |
+# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see |
|
| 1638 |
+# https://inkscape.org) to generate formulas as SVG images instead of PNGs for |
|
| 1639 |
+# the HTML output. These images will generally look nicer at scaled resolutions. |
|
| 1640 |
+# Possible values are: png (the default) and svg (looks nicer but requires the |
|
| 1641 |
+# pdf2svg or inkscape tool). |
|
| 1642 |
+# The default value is: png. |
|
| 1643 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1644 |
+ |
|
| 1645 |
+HTML_FORMULA_FORMAT = png |
|
| 1646 |
+ |
|
| 1647 |
+# Use this tag to change the font size of LaTeX formulas included as images in |
|
| 1648 |
+# the HTML documentation. When you change the font size after a successful |
|
| 1649 |
+# doxygen run you need to manually remove any form_*.png images from the HTML |
|
| 1650 |
+# output directory to force them to be regenerated. |
|
| 1651 |
+# Minimum value: 8, maximum value: 50, default value: 10. |
|
| 1652 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1653 |
+ |
|
| 1654 |
+FORMULA_FONTSIZE = 10 |
|
| 1655 |
+ |
|
| 1656 |
+# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands |
|
| 1657 |
+# to create new LaTeX commands to be used in formulas as building blocks. See |
|
| 1658 |
+# the section "Including formulas" for details. |
|
| 1659 |
+ |
|
| 1660 |
+FORMULA_MACROFILE = |
|
| 1661 |
+ |
|
| 1662 |
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see |
|
| 1663 |
+# https://www.mathjax.org) which uses client side JavaScript for the rendering |
|
| 1664 |
+# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX |
|
| 1665 |
+# installed or if you want to formulas look prettier in the HTML output. When |
|
| 1666 |
+# enabled you may also need to install MathJax separately and configure the path |
|
| 1667 |
+# to it using the MATHJAX_RELPATH option. |
|
| 1668 |
+# The default value is: NO. |
|
| 1669 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1670 |
+ |
|
| 1671 |
+USE_MATHJAX = NO |
|
| 1672 |
+ |
|
| 1673 |
+# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. |
|
| 1674 |
+# Note that the different versions of MathJax have different requirements with |
|
| 1675 |
+# regards to the different settings, so it is possible that also other MathJax |
|
| 1676 |
+# settings have to be changed when switching between the different MathJax |
|
| 1677 |
+# versions. |
|
| 1678 |
+# Possible values are: MathJax_2 and MathJax_3. |
|
| 1679 |
+# The default value is: MathJax_2. |
|
| 1680 |
+# This tag requires that the tag USE_MATHJAX is set to YES. |
|
| 1681 |
+ |
|
| 1682 |
+MATHJAX_VERSION = MathJax_2 |
|
| 1683 |
+ |
|
| 1684 |
+# When MathJax is enabled you can set the default output format to be used for |
|
| 1685 |
+# the MathJax output. For more details about the output format see MathJax |
|
| 1686 |
+# version 2 (see: |
|
| 1687 |
+# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 |
|
| 1688 |
+# (see: |
|
| 1689 |
+# http://docs.mathjax.org/en/latest/web/components/output.html). |
|
| 1690 |
+# Possible values are: HTML-CSS (which is slower, but has the best |
|
| 1691 |
+# compatibility. This is the name for Mathjax version 2, for MathJax version 3 |
|
| 1692 |
+# this will be translated into chtml), NativeMML (i.e. MathML. Only supported |
|
| 1693 |
+# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This |
|
| 1694 |
+# is the name for Mathjax version 3, for MathJax version 2 this will be |
|
| 1695 |
+# translated into HTML-CSS) and SVG. |
|
| 1696 |
+# The default value is: HTML-CSS. |
|
| 1697 |
+# This tag requires that the tag USE_MATHJAX is set to YES. |
|
| 1698 |
+ |
|
| 1699 |
+MATHJAX_FORMAT = HTML-CSS |
|
| 1700 |
+ |
|
| 1701 |
+# When MathJax is enabled you need to specify the location relative to the HTML |
|
| 1702 |
+# output directory using the MATHJAX_RELPATH option. The destination directory |
|
| 1703 |
+# should contain the MathJax.js script. For instance, if the mathjax directory |
|
| 1704 |
+# is located at the same level as the HTML output directory, then |
|
| 1705 |
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax |
|
| 1706 |
+# Content Delivery Network so you can quickly see the result without installing |
|
| 1707 |
+# MathJax. However, it is strongly recommended to install a local copy of |
|
| 1708 |
+# MathJax from https://www.mathjax.org before deployment. The default value is: |
|
| 1709 |
+# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 |
|
| 1710 |
+# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 |
|
| 1711 |
+# This tag requires that the tag USE_MATHJAX is set to YES. |
|
| 1712 |
+ |
|
| 1713 |
+MATHJAX_RELPATH = |
|
| 1714 |
+ |
|
| 1715 |
+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax |
|
| 1716 |
+# extension names that should be enabled during MathJax rendering. For example |
|
| 1717 |
+# for MathJax version 2 (see |
|
| 1718 |
+# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): |
|
| 1719 |
+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols |
|
| 1720 |
+# For example for MathJax version 3 (see |
|
| 1721 |
+# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): |
|
| 1722 |
+# MATHJAX_EXTENSIONS = ams |
|
| 1723 |
+# This tag requires that the tag USE_MATHJAX is set to YES. |
|
| 1724 |
+ |
|
| 1725 |
+MATHJAX_EXTENSIONS = |
|
| 1726 |
+ |
|
| 1727 |
+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces |
|
| 1728 |
+# of code that will be used on startup of the MathJax code. See the MathJax site |
|
| 1729 |
+# (see: |
|
| 1730 |
+# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an |
|
| 1731 |
+# example see the documentation. |
|
| 1732 |
+# This tag requires that the tag USE_MATHJAX is set to YES. |
|
| 1733 |
+ |
|
| 1734 |
+MATHJAX_CODEFILE = |
|
| 1735 |
+ |
|
| 1736 |
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for |
|
| 1737 |
+# the HTML output. The underlying search engine uses javascript and DHTML and |
|
| 1738 |
+# should work on any modern browser. Note that when using HTML help |
|
| 1739 |
+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) |
|
| 1740 |
+# there is already a search function so this one should typically be disabled. |
|
| 1741 |
+# For large projects the javascript based search engine can be slow, then |
|
| 1742 |
+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to |
|
| 1743 |
+# search using the keyboard; to jump to the search box use <access key> + S |
|
| 1744 |
+# (what the <access key> is depends on the OS and browser, but it is typically |
|
| 1745 |
+# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down |
|
| 1746 |
+# key> to jump into the search results window, the results can be navigated |
|
| 1747 |
+# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel |
|
| 1748 |
+# the search. The filter options can be selected when the cursor is inside the |
|
| 1749 |
+# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys> |
|
| 1750 |
+# to select a filter and <Enter> or <escape> to activate or cancel the filter |
|
| 1751 |
+# option. |
|
| 1752 |
+# The default value is: YES. |
|
| 1753 |
+# This tag requires that the tag GENERATE_HTML is set to YES. |
|
| 1754 |
+ |
|
| 1755 |
+SEARCHENGINE = NO |
|
| 1756 |
+ |
|
| 1757 |
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be |
|
| 1758 |
+# implemented using a web server instead of a web client using JavaScript. There |
|
| 1759 |
+# are two flavors of web server based searching depending on the EXTERNAL_SEARCH |
|
| 1760 |
+# setting. When disabled, doxygen will generate a PHP script for searching and |
|
| 1761 |
+# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing |
|
| 1762 |
+# and searching needs to be provided by external tools. See the section |
|
| 1763 |
+# "External Indexing and Searching" for details. |
|
| 1764 |
+# The default value is: NO. |
|
| 1765 |
+# This tag requires that the tag SEARCHENGINE is set to YES. |
|
| 1766 |
+ |
|
| 1767 |
+SERVER_BASED_SEARCH = NO |
|
| 1768 |
+ |
|
| 1769 |
+# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP |
|
| 1770 |
+# script for searching. Instead the search results are written to an XML file |
|
| 1771 |
+# which needs to be processed by an external indexer. Doxygen will invoke an |
|
| 1772 |
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain the |
|
| 1773 |
+# search results. |
|
| 1774 |
+# |
|
| 1775 |
+# Doxygen ships with an example indexer (doxyindexer) and search engine |
|
| 1776 |
+# (doxysearch.cgi) which are based on the open source search engine library |
|
| 1777 |
+# Xapian (see: |
|
| 1778 |
+# https://xapian.org/). |
|
| 1779 |
+# |
|
| 1780 |
+# See the section "External Indexing and Searching" for details. |
|
| 1781 |
+# The default value is: NO. |
|
| 1782 |
+# This tag requires that the tag SEARCHENGINE is set to YES. |
|
| 1783 |
+ |
|
| 1784 |
+EXTERNAL_SEARCH = NO |
|
| 1785 |
+ |
|
| 1786 |
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server |
|
| 1787 |
+# which will return the search results when EXTERNAL_SEARCH is enabled. |
|
| 1788 |
+# |
|
| 1789 |
+# Doxygen ships with an example indexer (doxyindexer) and search engine |
|
| 1790 |
+# (doxysearch.cgi) which are based on the open source search engine library |
|
| 1791 |
+# Xapian (see: |
|
| 1792 |
+# https://xapian.org/). See the section "External Indexing and Searching" for |
|
| 1793 |
+# details. |
|
| 1794 |
+# This tag requires that the tag SEARCHENGINE is set to YES. |
|
| 1795 |
+ |
|
| 1796 |
+SEARCHENGINE_URL = |
|
| 1797 |
+ |
|
| 1798 |
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed |
|
| 1799 |
+# search data is written to a file for indexing by an external tool. With the |
|
| 1800 |
+# SEARCHDATA_FILE tag the name of this file can be specified. |
|
| 1801 |
+# The default file is: searchdata.xml. |
|
| 1802 |
+# This tag requires that the tag SEARCHENGINE is set to YES. |
|
| 1803 |
+ |
|
| 1804 |
+SEARCHDATA_FILE = searchdata.xml |
|
| 1805 |
+ |
|
| 1806 |
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the |
|
| 1807 |
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is |
|
| 1808 |
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple |
|
| 1809 |
+# projects and redirect the results back to the right project. |
|
| 1810 |
+# This tag requires that the tag SEARCHENGINE is set to YES. |
|
| 1811 |
+ |
|
| 1812 |
+EXTERNAL_SEARCH_ID = |
|
| 1813 |
+ |
|
| 1814 |
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen |
|
| 1815 |
+# projects other than the one defined by this configuration file, but that are |
|
| 1816 |
+# all added to the same external search index. Each project needs to have a |
|
| 1817 |
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of |
|
| 1818 |
+# to a relative location where the documentation can be found. The format is: |
|
| 1819 |
+# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ... |
|
| 1820 |
+# This tag requires that the tag SEARCHENGINE is set to YES. |
|
| 1821 |
+ |
|
| 1822 |
+EXTRA_SEARCH_MAPPINGS = |
|
| 1823 |
+ |
|
| 1824 |
+#--------------------------------------------------------------------------- |
|
| 1825 |
+# Configuration options related to the LaTeX output |
|
| 1826 |
+#--------------------------------------------------------------------------- |
|
| 1827 |
+ |
|
| 1828 |
+# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output. |
|
| 1829 |
+# The default value is: YES. |
|
| 1830 |
+ |
|
| 1831 |
+GENERATE_LATEX = NO |
|
| 1832 |
+ |
|
| 1833 |
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a |
|
| 1834 |
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of |
|
| 1835 |
+# it. |
|
| 1836 |
+# The default directory is: latex. |
|
| 1837 |
+# This tag requires that the tag GENERATE_LATEX is set to YES. |
|
| 1838 |
+ |
|
| 1839 |
+LATEX_OUTPUT = latex |
|
| 1840 |
+ |
|
| 1841 |
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be |
|
| 1842 |
+# invoked. |
|
| 1843 |
+# |
|
| 1844 |
+# Note that when not enabling USE_PDFLATEX the default is latex when enabling |
|
| 1845 |
+# USE_PDFLATEX the default is pdflatex and when in the later case latex is |
|
| 1846 |
+# chosen this is overwritten by pdflatex. For specific output languages the |
|
| 1847 |
+# default can have been set differently, this depends on the implementation of |
|
| 1848 |
+# the output language. |
|
| 1849 |
+# This tag requires that the tag GENERATE_LATEX is set to YES. |
|
| 1850 |
+ |
|
| 1851 |
+LATEX_CMD_NAME = |
|
| 1852 |
+ |
|
| 1853 |
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate |
|
| 1854 |
+# index for LaTeX. |
|
| 1855 |
+# Note: This tag is used in the Makefile / make.bat. |
|
| 1856 |
+# See also: LATEX_MAKEINDEX_CMD for the part in the generated output file |
|
| 1857 |
+# (.tex). |
|
| 1858 |
+# The default file is: makeindex. |
|
| 1859 |
+# This tag requires that the tag GENERATE_LATEX is set to YES. |
|
| 1860 |
+ |
|
| 1861 |
+MAKEINDEX_CMD_NAME = makeindex |
|
| 1862 |
+ |
|
| 1863 |
+# The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to |
|
| 1864 |
+# generate index for LaTeX. In case there is no backslash (\) as first character |
|
| 1865 |
+# it will be automatically added in the LaTeX code. |
|
| 1866 |
+# Note: This tag is used in the generated output file (.tex). |
|
| 1867 |
+# See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat. |
|
| 1868 |
+# The default value is: makeindex. |
|
| 1869 |
+# This tag requires that the tag GENERATE_LATEX is set to YES. |
|
| 1870 |
+ |
|
| 1871 |
+LATEX_MAKEINDEX_CMD = makeindex |
|
| 1872 |
+ |
|
| 1873 |
+# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX |
|
| 1874 |
+# documents. This may be useful for small projects and may help to save some |
|
| 1875 |
+# trees in general. |
|
| 1876 |
+# The default value is: NO. |
|
| 1877 |
+# This tag requires that the tag GENERATE_LATEX is set to YES. |
|
| 1878 |
+ |
|
| 1879 |
+COMPACT_LATEX = NO |
|
| 1880 |
+ |
|
| 1881 |
+# The PAPER_TYPE tag can be used to set the paper type that is used by the |
|
| 1882 |
+# printer. |
|
| 1883 |
+# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x |
|
| 1884 |
+# 14 inches) and executive (7.25 x 10.5 inches). |
|
| 1885 |
+# The default value is: a4. |
|
| 1886 |
+# This tag requires that the tag GENERATE_LATEX is set to YES. |
|
| 1887 |
+ |
|
| 1888 |
+PAPER_TYPE = a4 |
|
| 1889 |
+ |
|
| 1890 |
+# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names |
|
| 1891 |
+# that should be included in the LaTeX output. The package can be specified just |
|
| 1892 |
+# by its name or with the correct syntax as to be used with the LaTeX |
|
| 1893 |
+# \usepackage command. To get the times font for instance you can specify : |
|
| 1894 |
+# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
|
|
| 1895 |
+# To use the option intlimits with the amsmath package you can specify: |
|
| 1896 |
+# EXTRA_PACKAGES=[intlimits]{amsmath}
|
|
| 1897 |
+# If left blank no extra packages will be included. |
|
| 1898 |
+# This tag requires that the tag GENERATE_LATEX is set to YES. |
|
| 1899 |
+ |
|
| 1900 |
+EXTRA_PACKAGES = |
|
| 1901 |
+ |
|
| 1902 |
+# The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for |
|
| 1903 |
+# the generated LaTeX document. The header should contain everything until the |
|
| 1904 |
+# first chapter. If it is left blank doxygen will generate a standard header. It |
|
| 1905 |
+# is highly recommended to start with a default header using |
|
| 1906 |
+# doxygen -w latex new_header.tex new_footer.tex new_stylesheet.sty |
|
| 1907 |
+# and then modify the file new_header.tex. See also section "Doxygen usage" for |
|
| 1908 |
+# information on how to generate the default header that doxygen normally uses. |
|
| 1909 |
+# |
|
| 1910 |
+# Note: Only use a user-defined header if you know what you are doing! |
|
| 1911 |
+# Note: The header is subject to change so you typically have to regenerate the |
|
| 1912 |
+# default header when upgrading to a newer version of doxygen. The following |
|
| 1913 |
+# commands have a special meaning inside the header (and footer): For a |
|
| 1914 |
+# description of the possible markers and block names see the documentation. |
|
| 1915 |
+# This tag requires that the tag GENERATE_LATEX is set to YES. |
|
| 1916 |
+ |
|
| 1917 |
+LATEX_HEADER = |
|
| 1918 |
+ |
|
| 1919 |
+# The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for |
|
| 1920 |
+# the generated LaTeX document. The footer should contain everything after the |
|
| 1921 |
+# last chapter. If it is left blank doxygen will generate a standard footer. See |
|
| 1922 |
+# LATEX_HEADER for more information on how to generate a default footer and what |
|
| 1923 |
+# special commands can be used inside the footer. See also section "Doxygen |
|
| 1924 |
+# usage" for information on how to generate the default footer that doxygen |
|
| 1925 |
+# normally uses. Note: Only use a user-defined footer if you know what you are |
|
| 1926 |
+# doing! |
|
| 1927 |
+# This tag requires that the tag GENERATE_LATEX is set to YES. |
|
| 1928 |
+ |
|
| 1929 |
+LATEX_FOOTER = |
|
| 1930 |
+ |
|
| 1931 |
+# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined |
|
| 1932 |
+# LaTeX style sheets that are included after the standard style sheets created |
|
| 1933 |
+# by doxygen. Using this option one can overrule certain style aspects. Doxygen |
|
| 1934 |
+# will copy the style sheet files to the output directory. |
|
| 1935 |
+# Note: The order of the extra style sheet files is of importance (e.g. the last |
|
| 1936 |
+# style sheet in the list overrules the setting of the previous ones in the |
|
| 1937 |
+# list). |
|
| 1938 |
+# This tag requires that the tag GENERATE_LATEX is set to YES. |
|
| 1939 |
+ |
|
| 1940 |
+LATEX_EXTRA_STYLESHEET = |
|
| 1941 |
+ |
|
| 1942 |
+# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or |
|
| 1943 |
+# other source files which should be copied to the LATEX_OUTPUT output |
|
| 1944 |
+# directory. Note that the files will be copied as-is; there are no commands or |
|
| 1945 |
+# markers available. |
|
| 1946 |
+# This tag requires that the tag GENERATE_LATEX is set to YES. |
|
| 1947 |
+ |
|
| 1948 |
+LATEX_EXTRA_FILES = |
|
| 1949 |
+ |
|
| 1950 |
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is |
|
| 1951 |
+# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will |
|
| 1952 |
+# contain links (just like the HTML output) instead of page references. This |
|
| 1953 |
+# makes the output suitable for online browsing using a PDF viewer. |
|
| 1954 |
+# The default value is: YES. |
|
| 1955 |
+# This tag requires that the tag GENERATE_LATEX is set to YES. |
|
| 1956 |
+ |
|
| 1957 |
+PDF_HYPERLINKS = YES |
|
| 1958 |
+ |
|
| 1959 |
+# If the USE_PDFLATEX tag is set to YES, doxygen will use the engine as |
|
| 1960 |
+# specified with LATEX_CMD_NAME to generate the PDF file directly from the LaTeX |
|
| 1961 |
+# files. Set this option to YES, to get a higher quality PDF documentation. |
|
| 1962 |
+# |
|
| 1963 |
+# See also section LATEX_CMD_NAME for selecting the engine. |
|
| 1964 |
+# The default value is: YES. |
|
| 1965 |
+# This tag requires that the tag GENERATE_LATEX is set to YES. |
|
| 1966 |
+ |
|
| 1967 |
+USE_PDFLATEX = YES |
|
| 1968 |
+ |
|
| 1969 |
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode |
|
| 1970 |
+# command to the generated LaTeX files. This will instruct LaTeX to keep running |
|
| 1971 |
+# if errors occur, instead of asking the user for help. |
|
| 1972 |
+# The default value is: NO. |
|
| 1973 |
+# This tag requires that the tag GENERATE_LATEX is set to YES. |
|
| 1974 |
+ |
|
| 1975 |
+LATEX_BATCHMODE = NO |
|
| 1976 |
+ |
|
| 1977 |
+# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the |
|
| 1978 |
+# index chapters (such as File Index, Compound Index, etc.) in the output. |
|
| 1979 |
+# The default value is: NO. |
|
| 1980 |
+# This tag requires that the tag GENERATE_LATEX is set to YES. |
|
| 1981 |
+ |
|
| 1982 |
+LATEX_HIDE_INDICES = NO |
|
| 1983 |
+ |
|
| 1984 |
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the |
|
| 1985 |
+# bibliography, e.g. plainnat, or ieeetr. See |
|
| 1986 |
+# https://en.wikipedia.org/wiki/BibTeX and \cite for more info. |
|
| 1987 |
+# The default value is: plain. |
|
| 1988 |
+# This tag requires that the tag GENERATE_LATEX is set to YES. |
|
| 1989 |
+ |
|
| 1990 |
+LATEX_BIB_STYLE = plain |
|
| 1991 |
+ |
|
| 1992 |
+# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated |
|
| 1993 |
+# page will contain the date and time when the page was generated. Setting this |
|
| 1994 |
+# to NO can help when comparing the output of multiple runs. |
|
| 1995 |
+# The default value is: NO. |
|
| 1996 |
+# This tag requires that the tag GENERATE_LATEX is set to YES. |
|
| 1997 |
+ |
|
| 1998 |
+LATEX_TIMESTAMP = NO |
|
| 1999 |
+ |
|
| 2000 |
+# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute) |
|
| 2001 |
+# path from which the emoji images will be read. If a relative path is entered, |
|
| 2002 |
+# it will be relative to the LATEX_OUTPUT directory. If left blank the |
|
| 2003 |
+# LATEX_OUTPUT directory will be used. |
|
| 2004 |
+# This tag requires that the tag GENERATE_LATEX is set to YES. |
|
| 2005 |
+ |
|
| 2006 |
+LATEX_EMOJI_DIRECTORY = |
|
| 2007 |
+ |
|
| 2008 |
+#--------------------------------------------------------------------------- |
|
| 2009 |
+# Configuration options related to the RTF output |
|
| 2010 |
+#--------------------------------------------------------------------------- |
|
| 2011 |
+ |
|
| 2012 |
+# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The |
|
| 2013 |
+# RTF output is optimized for Word 97 and may not look too pretty with other RTF |
|
| 2014 |
+# readers/editors. |
|
| 2015 |
+# The default value is: NO. |
|
| 2016 |
+ |
|
| 2017 |
+GENERATE_RTF = NO |
|
| 2018 |
+ |
|
| 2019 |
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a |
|
| 2020 |
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of |
|
| 2021 |
+# it. |
|
| 2022 |
+# The default directory is: rtf. |
|
| 2023 |
+# This tag requires that the tag GENERATE_RTF is set to YES. |
|
| 2024 |
+ |
|
| 2025 |
+RTF_OUTPUT = |
|
| 2026 |
+ |
|
| 2027 |
+# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF |
|
| 2028 |
+# documents. This may be useful for small projects and may help to save some |
|
| 2029 |
+# trees in general. |
|
| 2030 |
+# The default value is: NO. |
|
| 2031 |
+# This tag requires that the tag GENERATE_RTF is set to YES. |
|
| 2032 |
+ |
|
| 2033 |
+COMPACT_RTF = NO |
|
| 2034 |
+ |
|
| 2035 |
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will |
|
| 2036 |
+# contain hyperlink fields. The RTF file will contain links (just like the HTML |
|
| 2037 |
+# output) instead of page references. This makes the output suitable for online |
|
| 2038 |
+# browsing using Word or some other Word compatible readers that support those |
|
| 2039 |
+# fields. |
|
| 2040 |
+# |
|
| 2041 |
+# Note: WordPad (write) and others do not support links. |
|
| 2042 |
+# The default value is: NO. |
|
| 2043 |
+# This tag requires that the tag GENERATE_RTF is set to YES. |
|
| 2044 |
+ |
|
| 2045 |
+RTF_HYPERLINKS = NO |
|
| 2046 |
+ |
|
| 2047 |
+# Load stylesheet definitions from file. Syntax is similar to doxygen's |
|
| 2048 |
+# configuration file, i.e. a series of assignments. You only have to provide |
|
| 2049 |
+# replacements, missing definitions are set to their default value. |
|
| 2050 |
+# |
|
| 2051 |
+# See also section "Doxygen usage" for information on how to generate the |
|
| 2052 |
+# default style sheet that doxygen normally uses. |
|
| 2053 |
+# This tag requires that the tag GENERATE_RTF is set to YES. |
|
| 2054 |
+ |
|
| 2055 |
+RTF_STYLESHEET_FILE = |
|
| 2056 |
+ |
|
| 2057 |
+# Set optional variables used in the generation of an RTF document. Syntax is |
|
| 2058 |
+# similar to doxygen's configuration file. A template extensions file can be |
|
| 2059 |
+# generated using doxygen -e rtf extensionFile. |
|
| 2060 |
+# This tag requires that the tag GENERATE_RTF is set to YES. |
|
| 2061 |
+ |
|
| 2062 |
+RTF_EXTENSIONS_FILE = |
|
| 2063 |
+ |
|
| 2064 |
+#--------------------------------------------------------------------------- |
|
| 2065 |
+# Configuration options related to the man page output |
|
| 2066 |
+#--------------------------------------------------------------------------- |
|
| 2067 |
+ |
|
| 2068 |
+# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for |
|
| 2069 |
+# classes and files. |
|
| 2070 |
+# The default value is: NO. |
|
| 2071 |
+ |
|
| 2072 |
+GENERATE_MAN = NO |
|
| 2073 |
+ |
|
| 2074 |
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a |
|
| 2075 |
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of |
|
| 2076 |
+# it. A directory man3 will be created inside the directory specified by |
|
| 2077 |
+# MAN_OUTPUT. |
|
| 2078 |
+# The default directory is: man. |
|
| 2079 |
+# This tag requires that the tag GENERATE_MAN is set to YES. |
|
| 2080 |
+ |
|
| 2081 |
+MAN_OUTPUT = |
|
| 2082 |
+ |
|
| 2083 |
+# The MAN_EXTENSION tag determines the extension that is added to the generated |
|
| 2084 |
+# man pages. In case the manual section does not start with a number, the number |
|
| 2085 |
+# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is |
|
| 2086 |
+# optional. |
|
| 2087 |
+# The default value is: .3. |
|
| 2088 |
+# This tag requires that the tag GENERATE_MAN is set to YES. |
|
| 2089 |
+ |
|
| 2090 |
+MAN_EXTENSION = .3 |
|
| 2091 |
+ |
|
| 2092 |
+# The MAN_SUBDIR tag determines the name of the directory created within |
|
| 2093 |
+# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by |
|
| 2094 |
+# MAN_EXTENSION with the initial . removed. |
|
| 2095 |
+# This tag requires that the tag GENERATE_MAN is set to YES. |
|
| 2096 |
+ |
|
| 2097 |
+MAN_SUBDIR = |
|
| 2098 |
+ |
|
| 2099 |
+# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it |
|
| 2100 |
+# will generate one additional man file for each entity documented in the real |
|
| 2101 |
+# man page(s). These additional files only source the real man page, but without |
|
| 2102 |
+# them the man command would be unable to find the correct page. |
|
| 2103 |
+# The default value is: NO. |
|
| 2104 |
+# This tag requires that the tag GENERATE_MAN is set to YES. |
|
| 2105 |
+ |
|
| 2106 |
+MAN_LINKS = NO |
|
| 2107 |
+ |
|
| 2108 |
+#--------------------------------------------------------------------------- |
|
| 2109 |
+# Configuration options related to the XML output |
|
| 2110 |
+#--------------------------------------------------------------------------- |
|
| 2111 |
+ |
|
| 2112 |
+# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that |
|
| 2113 |
+# captures the structure of the code including all documentation. |
|
| 2114 |
+# The default value is: NO. |
|
| 2115 |
+ |
|
| 2116 |
+GENERATE_XML = NO |
|
| 2117 |
+ |
|
| 2118 |
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a |
|
| 2119 |
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of |
|
| 2120 |
+# it. |
|
| 2121 |
+# The default directory is: xml. |
|
| 2122 |
+# This tag requires that the tag GENERATE_XML is set to YES. |
|
| 2123 |
+ |
|
| 2124 |
+XML_OUTPUT = xml |
|
| 2125 |
+ |
|
| 2126 |
+# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program |
|
| 2127 |
+# listings (including syntax highlighting and cross-referencing information) to |
|
| 2128 |
+# the XML output. Note that enabling this will significantly increase the size |
|
| 2129 |
+# of the XML output. |
|
| 2130 |
+# The default value is: YES. |
|
| 2131 |
+# This tag requires that the tag GENERATE_XML is set to YES. |
|
| 2132 |
+ |
|
| 2133 |
+XML_PROGRAMLISTING = YES |
|
| 2134 |
+ |
|
| 2135 |
+# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include |
|
| 2136 |
+# namespace members in file scope as well, matching the HTML output. |
|
| 2137 |
+# The default value is: NO. |
|
| 2138 |
+# This tag requires that the tag GENERATE_XML is set to YES. |
|
| 2139 |
+ |
|
| 2140 |
+XML_NS_MEMB_FILE_SCOPE = NO |
|
| 2141 |
+ |
|
| 2142 |
+#--------------------------------------------------------------------------- |
|
| 2143 |
+# Configuration options related to the DOCBOOK output |
|
| 2144 |
+#--------------------------------------------------------------------------- |
|
| 2145 |
+ |
|
| 2146 |
+# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files |
|
| 2147 |
+# that can be used to generate PDF. |
|
| 2148 |
+# The default value is: NO. |
|
| 2149 |
+ |
|
| 2150 |
+GENERATE_DOCBOOK = NO |
|
| 2151 |
+ |
|
| 2152 |
+# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put. |
|
| 2153 |
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in |
|
| 2154 |
+# front of it. |
|
| 2155 |
+# The default directory is: docbook. |
|
| 2156 |
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES. |
|
| 2157 |
+ |
|
| 2158 |
+DOCBOOK_OUTPUT = docbook |
|
| 2159 |
+ |
|
| 2160 |
+#--------------------------------------------------------------------------- |
|
| 2161 |
+# Configuration options for the AutoGen Definitions output |
|
| 2162 |
+#--------------------------------------------------------------------------- |
|
| 2163 |
+ |
|
| 2164 |
+# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an |
|
| 2165 |
+# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures |
|
| 2166 |
+# the structure of the code including all documentation. Note that this feature |
|
| 2167 |
+# is still experimental and incomplete at the moment. |
|
| 2168 |
+# The default value is: NO. |
|
| 2169 |
+ |
|
| 2170 |
+GENERATE_AUTOGEN_DEF = NO |
|
| 2171 |
+ |
|
| 2172 |
+#--------------------------------------------------------------------------- |
|
| 2173 |
+# Configuration options related to the Perl module output |
|
| 2174 |
+#--------------------------------------------------------------------------- |
|
| 2175 |
+ |
|
| 2176 |
+# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module |
|
| 2177 |
+# file that captures the structure of the code including all documentation. |
|
| 2178 |
+# |
|
| 2179 |
+# Note that this feature is still experimental and incomplete at the moment. |
|
| 2180 |
+# The default value is: NO. |
|
| 2181 |
+ |
|
| 2182 |
+GENERATE_PERLMOD = NO |
|
| 2183 |
+ |
|
| 2184 |
+# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary |
|
| 2185 |
+# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI |
|
| 2186 |
+# output from the Perl module output. |
|
| 2187 |
+# The default value is: NO. |
|
| 2188 |
+# This tag requires that the tag GENERATE_PERLMOD is set to YES. |
|
| 2189 |
+ |
|
| 2190 |
+PERLMOD_LATEX = NO |
|
| 2191 |
+ |
|
| 2192 |
+# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely |
|
| 2193 |
+# formatted so it can be parsed by a human reader. This is useful if you want to |
|
| 2194 |
+# understand what is going on. On the other hand, if this tag is set to NO, the |
|
| 2195 |
+# size of the Perl module output will be much smaller and Perl will parse it |
|
| 2196 |
+# just the same. |
|
| 2197 |
+# The default value is: YES. |
|
| 2198 |
+# This tag requires that the tag GENERATE_PERLMOD is set to YES. |
|
| 2199 |
+ |
|
| 2200 |
+PERLMOD_PRETTY = YES |
|
| 2201 |
+ |
|
| 2202 |
+# The names of the make variables in the generated doxyrules.make file are |
|
| 2203 |
+# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful |
|
| 2204 |
+# so different doxyrules.make files included by the same Makefile don't |
|
| 2205 |
+# overwrite each other's variables. |
|
| 2206 |
+# This tag requires that the tag GENERATE_PERLMOD is set to YES. |
|
| 2207 |
+ |
|
| 2208 |
+PERLMOD_MAKEVAR_PREFIX = |
|
| 2209 |
+ |
|
| 2210 |
+#--------------------------------------------------------------------------- |
|
| 2211 |
+# Configuration options related to the preprocessor |
|
| 2212 |
+#--------------------------------------------------------------------------- |
|
| 2213 |
+ |
|
| 2214 |
+# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all |
|
| 2215 |
+# C-preprocessor directives found in the sources and include files. |
|
| 2216 |
+# The default value is: YES. |
|
| 2217 |
+ |
|
| 2218 |
+ENABLE_PREPROCESSING = YES |
|
| 2219 |
+ |
|
| 2220 |
+# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names |
|
| 2221 |
+# in the source code. If set to NO, only conditional compilation will be |
|
| 2222 |
+# performed. Macro expansion can be done in a controlled way by setting |
|
| 2223 |
+# EXPAND_ONLY_PREDEF to YES. |
|
| 2224 |
+# The default value is: NO. |
|
| 2225 |
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. |
|
| 2226 |
+ |
|
| 2227 |
+MACRO_EXPANSION = YES |
|
| 2228 |
+ |
|
| 2229 |
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then |
|
| 2230 |
+# the macro expansion is limited to the macros specified with the PREDEFINED and |
|
| 2231 |
+# EXPAND_AS_DEFINED tags. |
|
| 2232 |
+# The default value is: NO. |
|
| 2233 |
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. |
|
| 2234 |
+ |
|
| 2235 |
+EXPAND_ONLY_PREDEF = YES |
|
| 2236 |
+ |
|
| 2237 |
+# If the SEARCH_INCLUDES tag is set to YES, the include files in the |
|
| 2238 |
+# INCLUDE_PATH will be searched if a #include is found. |
|
| 2239 |
+# The default value is: YES. |
|
| 2240 |
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. |
|
| 2241 |
+ |
|
| 2242 |
+SEARCH_INCLUDES = NO |
|
| 2243 |
+ |
|
| 2244 |
+# The INCLUDE_PATH tag can be used to specify one or more directories that |
|
| 2245 |
+# contain include files that are not input files but should be processed by the |
|
| 2246 |
+# preprocessor. Note that the INCLUDE_PATH is not recursive, so the setting of |
|
| 2247 |
+# RECURSIVE has no effect here. |
|
| 2248 |
+# This tag requires that the tag SEARCH_INCLUDES is set to YES. |
|
| 2249 |
+ |
|
| 2250 |
+INCLUDE_PATH = |
|
| 2251 |
+ |
|
| 2252 |
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard |
|
| 2253 |
+# patterns (like *.h and *.hpp) to filter out the header-files in the |
|
| 2254 |
+# directories. If left blank, the patterns specified with FILE_PATTERNS will be |
|
| 2255 |
+# used. |
|
| 2256 |
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. |
|
| 2257 |
+ |
|
| 2258 |
+INCLUDE_FILE_PATTERNS = |
|
| 2259 |
+ |
|
| 2260 |
+# The PREDEFINED tag can be used to specify one or more macro names that are |
|
| 2261 |
+# defined before the preprocessor is started (similar to the -D option of e.g. |
|
| 2262 |
+# gcc). The argument of the tag is a list of macros of the form: name or |
|
| 2263 |
+# name=definition (no spaces). If the definition and the "=" are omitted, "=1" |
|
| 2264 |
+# is assumed. To prevent a macro definition from being undefined via #undef or |
|
| 2265 |
+# recursively expanded use the := operator instead of the = operator. |
|
| 2266 |
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. |
|
| 2267 |
+ |
|
| 2268 |
+PREDEFINED = |
|
| 2269 |
+ |
|
| 2270 |
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this |
|
| 2271 |
+# tag can be used to specify a list of macro names that should be expanded. The |
|
| 2272 |
+# macro definition that is found in the sources will be used. Use the PREDEFINED |
|
| 2273 |
+# tag if you want to use a different macro definition that overrules the |
|
| 2274 |
+# definition found in the source code. |
|
| 2275 |
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. |
|
| 2276 |
+ |
|
| 2277 |
+EXPAND_AS_DEFINED = |
|
| 2278 |
+ |
|
| 2279 |
+# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will |
|
| 2280 |
+# remove all references to function-like macros that are alone on a line, have |
|
| 2281 |
+# an all uppercase name, and do not end with a semicolon. Such function macros |
|
| 2282 |
+# are typically used for boiler-plate code, and will confuse the parser if not |
|
| 2283 |
+# removed. |
|
| 2284 |
+# The default value is: YES. |
|
| 2285 |
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. |
|
| 2286 |
+ |
|
| 2287 |
+SKIP_FUNCTION_MACROS = YES |
|
| 2288 |
+ |
|
| 2289 |
+#--------------------------------------------------------------------------- |
|
| 2290 |
+# Configuration options related to external references |
|
| 2291 |
+#--------------------------------------------------------------------------- |
|
| 2292 |
+ |
|
| 2293 |
+# The TAGFILES tag can be used to specify one or more tag files. For each tag |
|
| 2294 |
+# file the location of the external documentation should be added. The format of |
|
| 2295 |
+# a tag file without this location is as follows: |
|
| 2296 |
+# TAGFILES = file1 file2 ... |
|
| 2297 |
+# Adding location for the tag files is done as follows: |
|
| 2298 |
+# TAGFILES = file1=loc1 "file2 = loc2" ... |
|
| 2299 |
+# where loc1 and loc2 can be relative or absolute paths or URLs. See the |
|
| 2300 |
+# section "Linking to external documentation" for more information about the use |
|
| 2301 |
+# of tag files. |
|
| 2302 |
+# Note: Each tag file must have a unique name (where the name does NOT include |
|
| 2303 |
+# the path). If a tag file is not located in the directory in which doxygen is |
|
| 2304 |
+# run, you must also specify the path to the tagfile here. |
|
| 2305 |
+ |
|
| 2306 |
+TAGFILES = |
|
| 2307 |
+ |
|
| 2308 |
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create a |
|
| 2309 |
+# tag file that is based on the input files it reads. See section "Linking to |
|
| 2310 |
+# external documentation" for more information about the usage of tag files. |
|
| 2311 |
+ |
|
| 2312 |
+GENERATE_TAGFILE = doxygen.tag |
|
| 2313 |
+ |
|
| 2314 |
+# If the ALLEXTERNALS tag is set to YES, all external class will be listed in |
|
| 2315 |
+# the class index. If set to NO, only the inherited external classes will be |
|
| 2316 |
+# listed. |
|
| 2317 |
+# The default value is: NO. |
|
| 2318 |
+ |
|
| 2319 |
+ALLEXTERNALS = NO |
|
| 2320 |
+ |
|
| 2321 |
+# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed |
|
| 2322 |
+# in the modules index. If set to NO, only the current project's groups will be |
|
| 2323 |
+# listed. |
|
| 2324 |
+# The default value is: YES. |
|
| 2325 |
+ |
|
| 2326 |
+EXTERNAL_GROUPS = YES |
|
| 2327 |
+ |
|
| 2328 |
+# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in |
|
| 2329 |
+# the related pages index. If set to NO, only the current project's pages will |
|
| 2330 |
+# be listed. |
|
| 2331 |
+# The default value is: YES. |
|
| 2332 |
+ |
|
| 2333 |
+EXTERNAL_PAGES = YES |
|
| 2334 |
+ |
|
| 2335 |
+#--------------------------------------------------------------------------- |
|
| 2336 |
+# Configuration options related to the dot tool |
|
| 2337 |
+#--------------------------------------------------------------------------- |
|
| 2338 |
+ |
|
| 2339 |
+# You can include diagrams made with dia in doxygen documentation. Doxygen will |
|
| 2340 |
+# then run dia to produce the diagram and insert it in the documentation. The |
|
| 2341 |
+# DIA_PATH tag allows you to specify the directory where the dia binary resides. |
|
| 2342 |
+# If left empty dia is assumed to be found in the default search path. |
|
| 2343 |
+ |
|
| 2344 |
+DIA_PATH = |
|
| 2345 |
+ |
|
| 2346 |
+# If set to YES the inheritance and collaboration graphs will hide inheritance |
|
| 2347 |
+# and usage relations if the target is undocumented or is not a class. |
|
| 2348 |
+# The default value is: YES. |
|
| 2349 |
+ |
|
| 2350 |
+HIDE_UNDOC_RELATIONS = NO |
|
| 2351 |
+ |
|
| 2352 |
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is |
|
| 2353 |
+# available from the path. This tool is part of Graphviz (see: |
|
| 2354 |
+# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent |
|
| 2355 |
+# Bell Labs. The other options in this section have no effect if this option is |
|
| 2356 |
+# set to NO |
|
| 2357 |
+# The default value is: NO. |
|
| 2358 |
+ |
|
| 2359 |
+HAVE_DOT = YES |
|
| 2360 |
+ |
|
| 2361 |
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed |
|
| 2362 |
+# to run in parallel. When set to 0 doxygen will base this on the number of |
|
| 2363 |
+# processors available in the system. You can set it explicitly to a value |
|
| 2364 |
+# larger than 0 to get control over the balance between CPU load and processing |
|
| 2365 |
+# speed. |
|
| 2366 |
+# Minimum value: 0, maximum value: 32, default value: 0. |
|
| 2367 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2368 |
+ |
|
| 2369 |
+DOT_NUM_THREADS = 1 |
|
| 2370 |
+ |
|
| 2371 |
+# DOT_COMMON_ATTR is common attributes for nodes, edges and labels of |
|
| 2372 |
+# subgraphs. When you want a differently looking font in the dot files that |
|
| 2373 |
+# doxygen generates you can specify fontname, fontcolor and fontsize attributes. |
|
| 2374 |
+# For details please see <a href=https://graphviz.org/doc/info/attrs.html>Node, |
|
| 2375 |
+# Edge and Graph Attributes specification</a> You need to make sure dot is able |
|
| 2376 |
+# to find the font, which can be done by putting it in a standard location or by |
|
| 2377 |
+# setting the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the |
|
| 2378 |
+# directory containing the font. Default graphviz fontsize is 14. |
|
| 2379 |
+# The default value is: fontname=Helvetica,fontsize=10. |
|
| 2380 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2381 |
+ |
|
| 2382 |
+DOT_COMMON_ATTR = "fontname=Helvetica,fontsize=10" |
|
| 2383 |
+ |
|
| 2384 |
+# DOT_EDGE_ATTR is concatenated with DOT_COMMON_ATTR. For elegant style you can |
|
| 2385 |
+# add 'arrowhead=open, arrowtail=open, arrowsize=0.5'. <a |
|
| 2386 |
+# href=https://graphviz.org/doc/info/arrows.html>Complete documentation about |
|
| 2387 |
+# arrows shapes.</a> |
|
| 2388 |
+# The default value is: labelfontname=Helvetica,labelfontsize=10. |
|
| 2389 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2390 |
+ |
|
| 2391 |
+DOT_EDGE_ATTR = "labelfontname=Helvetica,labelfontsize=10" |
|
| 2392 |
+ |
|
| 2393 |
+# DOT_NODE_ATTR is concatenated with DOT_COMMON_ATTR. For view without boxes |
|
| 2394 |
+# around nodes set 'shape=plain' or 'shape=plaintext' <a |
|
| 2395 |
+# href=https://www.graphviz.org/doc/info/shapes.html>Shapes specification</a> |
|
| 2396 |
+# The default value is: shape=box,height=0.2,width=0.4. |
|
| 2397 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2398 |
+ |
|
| 2399 |
+DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4" |
|
| 2400 |
+ |
|
| 2401 |
+# You can set the path where dot can find font specified with fontname in |
|
| 2402 |
+# DOT_COMMON_ATTR and others dot attributes. |
|
| 2403 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2404 |
+ |
|
| 2405 |
+DOT_FONTPATH = |
|
| 2406 |
+ |
|
| 2407 |
+# If the CLASS_GRAPH tag is set to YES (or GRAPH) then doxygen will generate a |
|
| 2408 |
+# graph for each documented class showing the direct and indirect inheritance |
|
| 2409 |
+# relations. In case HAVE_DOT is set as well dot will be used to draw the graph, |
|
| 2410 |
+# otherwise the built-in generator will be used. If the CLASS_GRAPH tag is set |
|
| 2411 |
+# to TEXT the direct and indirect inheritance relations will be shown as texts / |
|
| 2412 |
+# links. |
|
| 2413 |
+# Possible values are: NO, YES, TEXT and GRAPH. |
|
| 2414 |
+# The default value is: YES. |
|
| 2415 |
+ |
|
| 2416 |
+CLASS_GRAPH = YES |
|
| 2417 |
+ |
|
| 2418 |
+# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a |
|
| 2419 |
+# graph for each documented class showing the direct and indirect implementation |
|
| 2420 |
+# dependencies (inheritance, containment, and class references variables) of the |
|
| 2421 |
+# class with other documented classes. |
|
| 2422 |
+# The default value is: YES. |
|
| 2423 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2424 |
+ |
|
| 2425 |
+COLLABORATION_GRAPH = YES |
|
| 2426 |
+ |
|
| 2427 |
+# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for |
|
| 2428 |
+# groups, showing the direct groups dependencies. See also the chapter Grouping |
|
| 2429 |
+# in the manual. |
|
| 2430 |
+# The default value is: YES. |
|
| 2431 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2432 |
+ |
|
| 2433 |
+GROUP_GRAPHS = YES |
|
| 2434 |
+ |
|
| 2435 |
+# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and |
|
| 2436 |
+# collaboration diagrams in a style similar to the OMG's Unified Modeling |
|
| 2437 |
+# Language. |
|
| 2438 |
+# The default value is: NO. |
|
| 2439 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2440 |
+ |
|
| 2441 |
+UML_LOOK = NO |
|
| 2442 |
+ |
|
| 2443 |
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside the |
|
| 2444 |
+# class node. If there are many fields or methods and many nodes the graph may |
|
| 2445 |
+# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the |
|
| 2446 |
+# number of items for each type to make the size more manageable. Set this to 0 |
|
| 2447 |
+# for no limit. Note that the threshold may be exceeded by 50% before the limit |
|
| 2448 |
+# is enforced. So when you set the threshold to 10, up to 15 fields may appear, |
|
| 2449 |
+# but if the number exceeds 15, the total amount of fields shown is limited to |
|
| 2450 |
+# 10. |
|
| 2451 |
+# Minimum value: 0, maximum value: 100, default value: 10. |
|
| 2452 |
+# This tag requires that the tag UML_LOOK is set to YES. |
|
| 2453 |
+ |
|
| 2454 |
+UML_LIMIT_NUM_FIELDS = 10 |
|
| 2455 |
+ |
|
| 2456 |
+# If the DOT_UML_DETAILS tag is set to NO, doxygen will show attributes and |
|
| 2457 |
+# methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS |
|
| 2458 |
+# tag is set to YES, doxygen will add type and arguments for attributes and |
|
| 2459 |
+# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, doxygen |
|
| 2460 |
+# will not generate fields with class member information in the UML graphs. The |
|
| 2461 |
+# class diagrams will look similar to the default class diagrams but using UML |
|
| 2462 |
+# notation for the relationships. |
|
| 2463 |
+# Possible values are: NO, YES and NONE. |
|
| 2464 |
+# The default value is: NO. |
|
| 2465 |
+# This tag requires that the tag UML_LOOK is set to YES. |
|
| 2466 |
+ |
|
| 2467 |
+DOT_UML_DETAILS = NO |
|
| 2468 |
+ |
|
| 2469 |
+# The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters |
|
| 2470 |
+# to display on a single line. If the actual line length exceeds this threshold |
|
| 2471 |
+# significantly it will wrapped across multiple lines. Some heuristics are apply |
|
| 2472 |
+# to avoid ugly line breaks. |
|
| 2473 |
+# Minimum value: 0, maximum value: 1000, default value: 17. |
|
| 2474 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2475 |
+ |
|
| 2476 |
+DOT_WRAP_THRESHOLD = 17 |
|
| 2477 |
+ |
|
| 2478 |
+# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and |
|
| 2479 |
+# collaboration graphs will show the relations between templates and their |
|
| 2480 |
+# instances. |
|
| 2481 |
+# The default value is: NO. |
|
| 2482 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2483 |
+ |
|
| 2484 |
+TEMPLATE_RELATIONS = YES |
|
| 2485 |
+ |
|
| 2486 |
+# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to |
|
| 2487 |
+# YES then doxygen will generate a graph for each documented file showing the |
|
| 2488 |
+# direct and indirect include dependencies of the file with other documented |
|
| 2489 |
+# files. |
|
| 2490 |
+# The default value is: YES. |
|
| 2491 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2492 |
+ |
|
| 2493 |
+INCLUDE_GRAPH = YES |
|
| 2494 |
+ |
|
| 2495 |
+# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are |
|
| 2496 |
+# set to YES then doxygen will generate a graph for each documented file showing |
|
| 2497 |
+# the direct and indirect include dependencies of the file with other documented |
|
| 2498 |
+# files. |
|
| 2499 |
+# The default value is: YES. |
|
| 2500 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2501 |
+ |
|
| 2502 |
+INCLUDED_BY_GRAPH = YES |
|
| 2503 |
+ |
|
| 2504 |
+# If the CALL_GRAPH tag is set to YES then doxygen will generate a call |
|
| 2505 |
+# dependency graph for every global function or class method. |
|
| 2506 |
+# |
|
| 2507 |
+# Note that enabling this option will significantly increase the time of a run. |
|
| 2508 |
+# So in most cases it will be better to enable call graphs for selected |
|
| 2509 |
+# functions only using the \callgraph command. Disabling a call graph can be |
|
| 2510 |
+# accomplished by means of the command \hidecallgraph. |
|
| 2511 |
+# The default value is: NO. |
|
| 2512 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2513 |
+ |
|
| 2514 |
+CALL_GRAPH = YES |
|
| 2515 |
+ |
|
| 2516 |
+# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller |
|
| 2517 |
+# dependency graph for every global function or class method. |
|
| 2518 |
+# |
|
| 2519 |
+# Note that enabling this option will significantly increase the time of a run. |
|
| 2520 |
+# So in most cases it will be better to enable caller graphs for selected |
|
| 2521 |
+# functions only using the \callergraph command. Disabling a caller graph can be |
|
| 2522 |
+# accomplished by means of the command \hidecallergraph. |
|
| 2523 |
+# The default value is: NO. |
|
| 2524 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2525 |
+ |
|
| 2526 |
+CALLER_GRAPH = YES |
|
| 2527 |
+ |
|
| 2528 |
+# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical |
|
| 2529 |
+# hierarchy of all classes instead of a textual one. |
|
| 2530 |
+# The default value is: YES. |
|
| 2531 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2532 |
+ |
|
| 2533 |
+GRAPHICAL_HIERARCHY = YES |
|
| 2534 |
+ |
|
| 2535 |
+# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the |
|
| 2536 |
+# dependencies a directory has on other directories in a graphical way. The |
|
| 2537 |
+# dependency relations are determined by the #include relations between the |
|
| 2538 |
+# files in the directories. |
|
| 2539 |
+# The default value is: YES. |
|
| 2540 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2541 |
+ |
|
| 2542 |
+DIRECTORY_GRAPH = YES |
|
| 2543 |
+ |
|
| 2544 |
+# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels |
|
| 2545 |
+# of child directories generated in directory dependency graphs by dot. |
|
| 2546 |
+# Minimum value: 1, maximum value: 25, default value: 1. |
|
| 2547 |
+# This tag requires that the tag DIRECTORY_GRAPH is set to YES. |
|
| 2548 |
+ |
|
| 2549 |
+DIR_GRAPH_MAX_DEPTH = 1 |
|
| 2550 |
+ |
|
| 2551 |
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images |
|
| 2552 |
+# generated by dot. For an explanation of the image formats see the section |
|
| 2553 |
+# output formats in the documentation of the dot tool (Graphviz (see: |
|
| 2554 |
+# http://www.graphviz.org/)). |
|
| 2555 |
+# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order |
|
| 2556 |
+# to make the SVG files visible in IE 9+ (other browsers do not have this |
|
| 2557 |
+# requirement). |
|
| 2558 |
+# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo, |
|
| 2559 |
+# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and |
|
| 2560 |
+# png:gdiplus:gdiplus. |
|
| 2561 |
+# The default value is: png. |
|
| 2562 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2563 |
+ |
|
| 2564 |
+DOT_IMAGE_FORMAT = svg |
|
| 2565 |
+ |
|
| 2566 |
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to |
|
| 2567 |
+# enable generation of interactive SVG images that allow zooming and panning. |
|
| 2568 |
+# |
|
| 2569 |
+# Note that this requires a modern browser other than Internet Explorer. Tested |
|
| 2570 |
+# and working are Firefox, Chrome, Safari, and Opera. |
|
| 2571 |
+# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make |
|
| 2572 |
+# the SVG files visible. Older versions of IE do not have SVG support. |
|
| 2573 |
+# The default value is: NO. |
|
| 2574 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2575 |
+ |
|
| 2576 |
+INTERACTIVE_SVG = YES |
|
| 2577 |
+ |
|
| 2578 |
+# The DOT_PATH tag can be used to specify the path where the dot tool can be |
|
| 2579 |
+# found. If left blank, it is assumed the dot tool can be found in the path. |
|
| 2580 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2581 |
+ |
|
| 2582 |
+DOT_PATH = |
|
| 2583 |
+ |
|
| 2584 |
+# The DOTFILE_DIRS tag can be used to specify one or more directories that |
|
| 2585 |
+# contain dot files that are included in the documentation (see the \dotfile |
|
| 2586 |
+# command). |
|
| 2587 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2588 |
+ |
|
| 2589 |
+DOTFILE_DIRS = |
|
| 2590 |
+ |
|
| 2591 |
+# The MSCFILE_DIRS tag can be used to specify one or more directories that |
|
| 2592 |
+# contain msc files that are included in the documentation (see the \mscfile |
|
| 2593 |
+# command). |
|
| 2594 |
+ |
|
| 2595 |
+MSCFILE_DIRS = |
|
| 2596 |
+ |
|
| 2597 |
+# The DIAFILE_DIRS tag can be used to specify one or more directories that |
|
| 2598 |
+# contain dia files that are included in the documentation (see the \diafile |
|
| 2599 |
+# command). |
|
| 2600 |
+ |
|
| 2601 |
+DIAFILE_DIRS = |
|
| 2602 |
+ |
|
| 2603 |
+# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the |
|
| 2604 |
+# path where java can find the plantuml.jar file or to the filename of jar file |
|
| 2605 |
+# to be used. If left blank, it is assumed PlantUML is not used or called during |
|
| 2606 |
+# a preprocessing step. Doxygen will generate a warning when it encounters a |
|
| 2607 |
+# \startuml command in this case and will not generate output for the diagram. |
|
| 2608 |
+ |
|
| 2609 |
+PLANTUML_JAR_PATH = |
|
| 2610 |
+ |
|
| 2611 |
+# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a |
|
| 2612 |
+# configuration file for plantuml. |
|
| 2613 |
+ |
|
| 2614 |
+PLANTUML_CFG_FILE = |
|
| 2615 |
+ |
|
| 2616 |
+# When using plantuml, the specified paths are searched for files specified by |
|
| 2617 |
+# the !include statement in a plantuml block. |
|
| 2618 |
+ |
|
| 2619 |
+PLANTUML_INCLUDE_PATH = |
|
| 2620 |
+ |
|
| 2621 |
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes |
|
| 2622 |
+# that will be shown in the graph. If the number of nodes in a graph becomes |
|
| 2623 |
+# larger than this value, doxygen will truncate the graph, which is visualized |
|
| 2624 |
+# by representing a node as a red box. Note that doxygen if the number of direct |
|
| 2625 |
+# children of the root node in a graph is already larger than |
|
| 2626 |
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that |
|
| 2627 |
+# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. |
|
| 2628 |
+# Minimum value: 0, maximum value: 10000, default value: 50. |
|
| 2629 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2630 |
+ |
|
| 2631 |
+DOT_GRAPH_MAX_NODES = 100 |
|
| 2632 |
+ |
|
| 2633 |
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs |
|
| 2634 |
+# generated by dot. A depth value of 3 means that only nodes reachable from the |
|
| 2635 |
+# root by following a path via at most 3 edges will be shown. Nodes that lay |
|
| 2636 |
+# further from the root node will be omitted. Note that setting this option to 1 |
|
| 2637 |
+# or 2 may greatly reduce the computation time needed for large code bases. Also |
|
| 2638 |
+# note that the size of a graph can be further restricted by |
|
| 2639 |
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. |
|
| 2640 |
+# Minimum value: 0, maximum value: 1000, default value: 0. |
|
| 2641 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2642 |
+ |
|
| 2643 |
+MAX_DOT_GRAPH_DEPTH = 0 |
|
| 2644 |
+ |
|
| 2645 |
+# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output |
|
| 2646 |
+# files in one run (i.e. multiple -o and -T options on the command line). This |
|
| 2647 |
+# makes dot run faster, but since only newer versions of dot (>1.8.10) support |
|
| 2648 |
+# this, this feature is disabled by default. |
|
| 2649 |
+# The default value is: NO. |
|
| 2650 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2651 |
+ |
|
| 2652 |
+DOT_MULTI_TARGETS = NO |
|
| 2653 |
+ |
|
| 2654 |
+# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page |
|
| 2655 |
+# explaining the meaning of the various boxes and arrows in the dot generated |
|
| 2656 |
+# graphs. |
|
| 2657 |
+# Note: This tag requires that UML_LOOK isn't set, i.e. the doxygen internal |
|
| 2658 |
+# graphical representation for inheritance and collaboration diagrams is used. |
|
| 2659 |
+# The default value is: YES. |
|
| 2660 |
+# This tag requires that the tag HAVE_DOT is set to YES. |
|
| 2661 |
+ |
|
| 2662 |
+GENERATE_LEGEND = YES |
|
| 2663 |
+ |
|
| 2664 |
+# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate |
|
| 2665 |
+# files that are used to generate the various graphs. |
|
| 2666 |
+# |
|
| 2667 |
+# Note: This setting is not only used for dot files but also for msc temporary |
|
| 2668 |
+# files. |
|
| 2669 |
+# The default value is: YES. |
|
| 2670 |
+ |
|
| 2671 |
+DOT_CLEANUP = NO |
| 0 | 2672 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,22 @@ |
| 1 |
+DOXYGEN = doxygen |
|
| 2 |
+ |
|
| 3 |
+DOC_DIR = html |
|
| 4 |
+DOC_TAG = doxygen.tag |
|
| 5 |
+DOC_LOG = warnings.log |
|
| 6 |
+ |
|
| 7 |
+SRC_FILES := $(wildcard ../src/*.cpp ../src/*.h) |
|
| 8 |
+SRC_FILES := $(filter-out $(wildcard ../src/moc_*.cpp), $(SRC_FILES)) |
|
| 9 |
+ |
|
| 10 |
+.PHONY: all |
|
| 11 |
+all: html |
|
| 12 |
+ |
|
| 13 |
+html: $(SRC_FILES) |
|
| 14 |
+ rm -rf html |
|
| 15 |
+ $(DOXYGEN) Doxyfile |
|
| 16 |
+ |
|
| 17 |
+.PHONY: clean |
|
| 18 |
+clean: |
|
| 19 |
+ rm -rf $(DOC_DIR) |
|
| 20 |
+ rm -f $(DOC_TAG) |
|
| 21 |
+ rm -f $(DOC_LOG) |
|
| 22 |
+ |
| 0 | 23 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,604 @@ |
| 1 |
+/* |
|
| 2 |
+ * Author: Pawel Jablonski |
|
| 3 |
+ * E-mail: pj@xirx.net |
|
| 4 |
+ * WWW: xirx.net |
|
| 5 |
+ * GIT: git.xirx.net |
|
| 6 |
+ * |
|
| 7 |
+ * License: You can use this code however you like |
|
| 8 |
+ * but leave information about the original author. |
|
| 9 |
+ * Code is free for non-commercial and commercial use. |
|
| 10 |
+ */ |
|
| 11 |
+ |
|
| 12 |
+#include "cpu.h" |
|
| 13 |
+ |
|
| 14 |
+/** |
|
| 15 |
+ * Constructor for the CPU class |
|
| 16 |
+ * |
|
| 17 |
+ * @param parent Parent object |
|
| 18 |
+ */ |
|
| 19 |
+CPU::CPU(QObject *parent) : QObject(parent) |
|
| 20 |
+{
|
|
| 21 |
+ this->urom0.data.fill(0); |
|
| 22 |
+ this->urom1.data.fill(0); |
|
| 23 |
+ this->rom.data.fill(0); |
|
| 24 |
+ |
|
| 25 |
+ this->reset(); |
|
| 26 |
+ |
|
| 27 |
+ QObject::connect(&this->timer, SIGNAL(timeout()), this, SLOT(emulation())); |
|
| 28 |
+} |
|
| 29 |
+ |
|
| 30 |
+/** |
|
| 31 |
+ * Set first uROM memory data |
|
| 32 |
+ * |
|
| 33 |
+ * @param urom uROM data |
|
| 34 |
+ */ |
|
| 35 |
+void CPU::setUrom0(const CPU::Memory &urom) |
|
| 36 |
+{
|
|
| 37 |
+ this->urom0 = urom; |
|
| 38 |
+} |
|
| 39 |
+ |
|
| 40 |
+/** |
|
| 41 |
+ * Set second uROM memory data |
|
| 42 |
+ * |
|
| 43 |
+ * @param urom uROM data |
|
| 44 |
+ */ |
|
| 45 |
+void CPU::setUrom1(const CPU::Memory &urom) |
|
| 46 |
+{
|
|
| 47 |
+ this->urom1 = urom; |
|
| 48 |
+} |
|
| 49 |
+ |
|
| 50 |
+/** |
|
| 51 |
+ * Set ROM memory data |
|
| 52 |
+ * |
|
| 53 |
+ * @param rom ROM data |
|
| 54 |
+ */ |
|
| 55 |
+void CPU::setRom(const CPU::Memory &rom) |
|
| 56 |
+{
|
|
| 57 |
+ this->rom = rom; |
|
| 58 |
+} |
|
| 59 |
+ |
|
| 60 |
+//! Run executing emulation |
|
| 61 |
+void CPU::run() |
|
| 62 |
+{
|
|
| 63 |
+ this->stepMode = false; |
|
| 64 |
+ |
|
| 65 |
+ this->timer.setSingleShot(false); |
|
| 66 |
+ this->timer.setInterval(INTERVAL); |
|
| 67 |
+ this->timer.start(); |
|
| 68 |
+} |
|
| 69 |
+ |
|
| 70 |
+//! Run only one CPU step of emulation |
|
| 71 |
+void CPU::step() |
|
| 72 |
+{
|
|
| 73 |
+ this->stepMode = true; |
|
| 74 |
+ |
|
| 75 |
+ this->timer.setSingleShot(true); |
|
| 76 |
+ this->timer.start(0); |
|
| 77 |
+} |
|
| 78 |
+ |
|
| 79 |
+//! Pause executing emulation |
|
| 80 |
+void CPU::pause() |
|
| 81 |
+{
|
|
| 82 |
+ this->timer.stop(); |
|
| 83 |
+} |
|
| 84 |
+ |
|
| 85 |
+//! Stop executing emulation |
|
| 86 |
+void CPU::stop() |
|
| 87 |
+{
|
|
| 88 |
+ this->timer.stop(); |
|
| 89 |
+ |
|
| 90 |
+ this->reset(); |
|
| 91 |
+} |
|
| 92 |
+ |
|
| 93 |
+/** |
|
| 94 |
+ * Get register buffer |
|
| 95 |
+ * |
|
| 96 |
+ * @return Register buffer |
|
| 97 |
+ */ |
|
| 98 |
+const CPU::Reg &CPU::getReg() const |
|
| 99 |
+{
|
|
| 100 |
+ return(this->reg); |
|
| 101 |
+} |
|
| 102 |
+ |
|
| 103 |
+/** |
|
| 104 |
+ * Get ticks counter value |
|
| 105 |
+ * |
|
| 106 |
+ * @return Tick counter value |
|
| 107 |
+ */ |
|
| 108 |
+unsigned long long CPU::getTicks() const |
|
| 109 |
+{
|
|
| 110 |
+ return(this->ticks); |
|
| 111 |
+} |
|
| 112 |
+ |
|
| 113 |
+/** |
|
| 114 |
+ * Get ROM buffer |
|
| 115 |
+ * |
|
| 116 |
+ * @return ROM buffer |
|
| 117 |
+ */ |
|
| 118 |
+const CPU::Memory &CPU::getRom() const |
|
| 119 |
+{
|
|
| 120 |
+ return(this->rom); |
|
| 121 |
+} |
|
| 122 |
+ |
|
| 123 |
+/** |
|
| 124 |
+ * Get lower RAM buffer |
|
| 125 |
+ * |
|
| 126 |
+ * @return Lower RAM buffer |
|
| 127 |
+ */ |
|
| 128 |
+const CPU::Memory &CPU::getRamLow() const |
|
| 129 |
+{
|
|
| 130 |
+ return(this->ramLow); |
|
| 131 |
+} |
|
| 132 |
+ |
|
| 133 |
+/** |
|
| 134 |
+ * Get higher RAM buffer |
|
| 135 |
+ * |
|
| 136 |
+ * @return Higher RAM buffer |
|
| 137 |
+ */ |
|
| 138 |
+const CPU::Memory &CPU::getRamHigh() const |
|
| 139 |
+{
|
|
| 140 |
+ return(this->ramHigh); |
|
| 141 |
+} |
|
| 142 |
+ |
|
| 143 |
+//! Stop executing and reset data of emulation |
|
| 144 |
+void CPU::reset() |
|
| 145 |
+{
|
|
| 146 |
+ this->stepMode = false; |
|
| 147 |
+ this->ticks = 0; |
|
| 148 |
+ |
|
| 149 |
+ this->timer.stop(); |
|
| 150 |
+ |
|
| 151 |
+ this->ramLow.data.fill(0); |
|
| 152 |
+ this->ramHigh.data.fill(0); |
|
| 153 |
+ |
|
| 154 |
+ this->reg.i = 0; |
|
| 155 |
+ this->reg.c = false; |
|
| 156 |
+ this->reg.z = false; |
|
| 157 |
+ this->reg.pch = 0; |
|
| 158 |
+ this->reg.pcl = 0; |
|
| 159 |
+ this->reg.sph = STACK_PAGE; |
|
| 160 |
+ this->reg.spl = 0; |
|
| 161 |
+ this->reg.maxSpl = 0; |
|
| 162 |
+ this->reg.a = 0; |
|
| 163 |
+ this->reg.b = 0; |
|
| 164 |
+ this->reg.x = 0; |
|
| 165 |
+ this->reg.y = 0; |
|
| 166 |
+ this->reg.in = 0; |
|
| 167 |
+ this->reg.out = 0; |
|
| 168 |
+ this->reg.d = 0; |
|
| 169 |
+ this->reg.t = 0; |
|
| 170 |
+ this->reg.mah = 0; |
|
| 171 |
+ this->reg.mal = 0; |
|
| 172 |
+} |
|
| 173 |
+ |
|
| 174 |
+/** |
|
| 175 |
+ * Compute logic or arithmetic using ALU. It emulates functions of the 74181 chip. |
|
| 176 |
+ * |
|
| 177 |
+ * @param a First operant |
|
| 178 |
+ * @param b Second operant |
|
| 179 |
+ * @param s Operation type selector in range 0-15 |
|
| 180 |
+ * @param m Operatiom mode selector. "0" for arithmetic and "1" for logic mode. |
|
| 181 |
+ * @param c Carry flag |
|
| 182 |
+ * @param z Zero flag |
|
| 183 |
+ * |
|
| 184 |
+ * @return Computed value |
|
| 185 |
+ */ |
|
| 186 |
+unsigned char CPU::alu(unsigned char a, unsigned char b, unsigned char s, bool m, bool &c, bool &z) |
|
| 187 |
+{
|
|
| 188 |
+ QVector<bool> inA(4); |
|
| 189 |
+ QVector<bool> inB(4); |
|
| 190 |
+ QVector<bool> inS(4); |
|
| 191 |
+ |
|
| 192 |
+ inA[0] = ((a & (1 << 0)) != 0); |
|
| 193 |
+ inA[1] = ((a & (1 << 1)) != 0); |
|
| 194 |
+ inA[2] = ((a & (1 << 2)) != 0); |
|
| 195 |
+ inA[3] = ((a & (1 << 3)) != 0); |
|
| 196 |
+ |
|
| 197 |
+ inB[0] = ((b & (1 << 0)) != 0); |
|
| 198 |
+ inB[1] = ((b & (1 << 1)) != 0); |
|
| 199 |
+ inB[2] = ((b & (1 << 2)) != 0); |
|
| 200 |
+ inB[3] = ((b & (1 << 3)) != 0); |
|
| 201 |
+ |
|
| 202 |
+ inS[0] = ((s & (1 << 0)) != 0); |
|
| 203 |
+ inS[1] = ((s & (1 << 1)) != 0); |
|
| 204 |
+ inS[2] = ((s & (1 << 2)) != 0); |
|
| 205 |
+ inS[3] = ((s & (1 << 3)) != 0); |
|
| 206 |
+ |
|
| 207 |
+ QVector<QVector<bool>> l1(4, QVector<bool>(5)); |
|
| 208 |
+ |
|
| 209 |
+ for(int i = 0; i < 4; i++) |
|
| 210 |
+ {
|
|
| 211 |
+ l1[i][0] = inA[i]; |
|
| 212 |
+ l1[i][1] = (inB[i] & inS[0]); |
|
| 213 |
+ l1[i][2] = ((!inB[i]) & inS[1]); |
|
| 214 |
+ l1[i][3] = ((!inB[i]) & inA[i] & inS[2]); |
|
| 215 |
+ l1[i][4] = (inA[i] & inB[i] & inS[3]); |
|
| 216 |
+ } |
|
| 217 |
+ |
|
| 218 |
+ QVector<QVector<bool>> l2(4, QVector<bool>(2)); |
|
| 219 |
+ |
|
| 220 |
+ for(int i = 0; i < 4; i++) |
|
| 221 |
+ {
|
|
| 222 |
+ l2[i][0] = !(l1[i][0] | l1[i][1] | l1[i][2]); |
|
| 223 |
+ l2[i][1] = !(l1[i][3] | l1[i][4]); |
|
| 224 |
+ } |
|
| 225 |
+ |
|
| 226 |
+ QVector<bool> l3(20); |
|
| 227 |
+ |
|
| 228 |
+ l3[0] = !(c & (!m)); |
|
| 229 |
+ |
|
| 230 |
+ l3[1] = !(l2[0][0]); |
|
| 231 |
+ l3[2] = ((!m) & l2[0][0]); |
|
| 232 |
+ l3[3] = ((!m) & l2[0][1] & c); |
|
| 233 |
+ |
|
| 234 |
+ l3[4] = !(l2[1][0]); |
|
| 235 |
+ l3[5] = ((!m) & l2[1][0]); |
|
| 236 |
+ l3[6] = ((!m) & l2[0][0] & l2[1][1]); |
|
| 237 |
+ l3[7] = ((!m) & l2[0][1] & l2[1][1] & c); |
|
| 238 |
+ |
|
| 239 |
+ l3[8] = !(l2[2][0]); |
|
| 240 |
+ l3[9] = ((!m) & l2[2][0]); |
|
| 241 |
+ l3[10] = ((!m) & l2[1][0] & l2[2][1]); |
|
| 242 |
+ l3[11] = ((!m) & l2[0][0] & l2[1][1] & l2[2][1]); |
|
| 243 |
+ l3[12] = ((!m) & l2[0][1] & l2[1][1] & l2[2][1] & c); |
|
| 244 |
+ |
|
| 245 |
+ l3[13] = !(l2[3][0]); |
|
| 246 |
+ l3[14] = !(l2[0][1] & l2[1][1] & l2[2][1] & l2[3][1]); |
|
| 247 |
+ l3[15] = !(l2[0][1] & l2[1][1] & l2[2][1] & l2[3][1] & c); |
|
| 248 |
+ |
|
| 249 |
+ l3[16] = (l2[0][0] & l2[1][1] & l2[2][1] & l2[3][1]); |
|
| 250 |
+ l3[17] = (l2[1][0] & l2[2][1] & l2[3][1]); |
|
| 251 |
+ l3[18] = (l2[2][0] & l2[3][1]); |
|
| 252 |
+ l3[19] = (l2[3][0]); |
|
| 253 |
+ |
|
| 254 |
+ QVector<bool> l4(8); |
|
| 255 |
+ |
|
| 256 |
+ l4[0] = (l3[1] & l2[0][1]); |
|
| 257 |
+ l4[1] = !(l3[2] | l3[3]); |
|
| 258 |
+ |
|
| 259 |
+ l4[2] = (l3[4] & l2[1][1]); |
|
| 260 |
+ l4[3] = !(l3[5] | l3[6] | l3[7]); |
|
| 261 |
+ |
|
| 262 |
+ l4[4] = (l3[8] & l2[2][1]); |
|
| 263 |
+ l4[5] = !(l3[9] | l3[10] | l3[11] | l3[12]); |
|
| 264 |
+ |
|
| 265 |
+ l4[6] = (l3[13] & l2[3][1]); |
|
| 266 |
+ l4[7] = !(l3[16] | l3[17] | l3[18] | l3[19]); |
|
| 267 |
+ |
|
| 268 |
+ QVector<bool> f(4); |
|
| 269 |
+ |
|
| 270 |
+ f[0] = (l3[0] ^ l4[0]); |
|
| 271 |
+ f[1] = (l4[1] ^ l4[2]); |
|
| 272 |
+ f[2] = (l4[3] ^ l4[4]); |
|
| 273 |
+ f[3] = (l4[5] ^ l4[6]); |
|
| 274 |
+ |
|
| 275 |
+ z = (f[0] & f[1] & f[2] & f[3]); |
|
| 276 |
+ c = ((!l3[15]) | (!l4[7])); |
|
| 277 |
+ |
|
| 278 |
+ unsigned char out = 0; |
|
| 279 |
+ |
|
| 280 |
+ out += (f[0] ? 1 : 0); |
|
| 281 |
+ out += (f[1] ? 2 : 0); |
|
| 282 |
+ out += (f[2] ? 4 : 0); |
|
| 283 |
+ out += (f[3] ? 8 : 0); |
|
| 284 |
+ |
|
| 285 |
+ return(out); |
|
| 286 |
+} |
|
| 287 |
+ |
|
| 288 |
+/** |
|
| 289 |
+ * Set Input register value |
|
| 290 |
+ * |
|
| 291 |
+ * @param in Input register value |
|
| 292 |
+ */ |
|
| 293 |
+void CPU::inSlot(unsigned char in) |
|
| 294 |
+{
|
|
| 295 |
+ if(this->ticks > 0) |
|
| 296 |
+ {
|
|
| 297 |
+ this->reg.in = ((this->reg.in & (1 << 4)) | (in & ~(1 << 4))); |
|
| 298 |
+ } |
|
| 299 |
+} |
|
| 300 |
+ |
|
| 301 |
+//! Process one step of the emulation |
|
| 302 |
+void CPU::emulation() |
|
| 303 |
+{
|
|
| 304 |
+ unsigned long long tick = 0; |
|
| 305 |
+ |
|
| 306 |
+ unsigned char uromCycle = 0; |
|
| 307 |
+ int uromAddress; |
|
| 308 |
+ unsigned char urom0; |
|
| 309 |
+ unsigned char urom1; |
|
| 310 |
+ |
|
| 311 |
+ BusAR busAR; |
|
| 312 |
+ BusAW busAW; |
|
| 313 |
+ BusB busB; |
|
| 314 |
+ BusC busC; |
|
| 315 |
+ |
|
| 316 |
+ int address; |
|
| 317 |
+ |
|
| 318 |
+ unsigned char aluS; |
|
| 319 |
+ bool aluM; |
|
| 320 |
+ bool aluC; |
|
| 321 |
+ |
|
| 322 |
+ unsigned char busARregABXY; |
|
| 323 |
+ unsigned char busAWregABXY; |
|
| 324 |
+ unsigned char busBregAB; |
|
| 325 |
+ |
|
| 326 |
+ unsigned char valueAR = 0; |
|
| 327 |
+ unsigned char valueB = 0; |
|
| 328 |
+ |
|
| 329 |
+ while(tick < TICKS_PER_INTERVAL) |
|
| 330 |
+ {
|
|
| 331 |
+ do |
|
| 332 |
+ {
|
|
| 333 |
+ uromAddress = (static_cast<int>(this->reg.i) << UROM_ADDRESS_INSTRUCTION_POSITION); |
|
| 334 |
+ uromAddress += (static_cast<int>(uromCycle & UROM_ADDRESS_CYCLE_MASK) << UROM_ADDRESS_CYCLE_POSITION); |
|
| 335 |
+ uromAddress += (static_cast<int>(this->reg.c ? 1 : 0) << UROM_ADDRESS_FLAG_C_POSITION); |
|
| 336 |
+ uromAddress += (static_cast<int>(this->reg.z ? 1 : 0) << UROM_ADDRESS_FLAG_Z_POSITION); |
|
| 337 |
+ |
|
| 338 |
+ urom0 = this->urom0.data[uromAddress]; |
|
| 339 |
+ urom1 = this->urom1.data[uromAddress]; |
|
| 340 |
+ |
|
| 341 |
+ uromCycle++; |
|
| 342 |
+ |
|
| 343 |
+ busAR = static_cast<BusAR>((urom0 & UROM_0_BUS_AR_MASK) >> UROM_0_BUS_AR_POSITION); |
|
| 344 |
+ busAW = static_cast<BusAW>((urom0 & UROM_0_BUS_AW_MASK) >> UROM_0_BUS_AW_POSITION); |
|
| 345 |
+ busB = static_cast<BusB>((urom0 & UROM_0_BUS_B_MASK) >> UROM_0_BUS_B_POSITION); |
|
| 346 |
+ busC = static_cast<BusC>((urom1 & UROM_1_BUS_C_MASK) >> UROM_1_BUS_C_POSITION); |
|
| 347 |
+ |
|
| 348 |
+ aluS = ((urom1 & UROM_1_ALU_S_MASK) >> 2); |
|
| 349 |
+ aluM = ((urom1 & UROM_1_ALU_M_MASK) != 0); |
|
| 350 |
+ aluC = ((urom1 & UROM_1_ALU_C_MASK) != 0); |
|
| 351 |
+ |
|
| 352 |
+ if((busAR == BusAR::ABXY) && (busAW == BusAW::ABXY)) |
|
| 353 |
+ {
|
|
| 354 |
+ busARregABXY = ((this->reg.i & INSTRUCTION_REG_ABXY_SECOND_MASK) >> INSTRUCTION_REG_ABXY_SECOND_OFFSET); |
|
| 355 |
+ } |
|
| 356 |
+ else |
|
| 357 |
+ {
|
|
| 358 |
+ busARregABXY = ((this->reg.i & INSTRUCTION_REG_ABXY_FIRST_MASK) >> INSTRUCTION_REG_ABXY_FIRST_OFFSET); |
|
| 359 |
+ } |
|
| 360 |
+ |
|
| 361 |
+ busAWregABXY = (this->reg.i & INSTRUCTION_REG_ABXY_FIRST_MASK); |
|
| 362 |
+ busBregAB = ((this->reg.i & INSTRUCTION_REG_AB_MASK) >> INSTRUCTION_REG_AB_OFFSET); |
|
| 363 |
+ |
|
| 364 |
+ switch(busC) |
|
| 365 |
+ {
|
|
| 366 |
+ case BusC::PC : |
|
| 367 |
+ address = ((static_cast<int>(this->reg.pch) << 8) + static_cast<int>(this->reg.pcl)); |
|
| 368 |
+ break; |
|
| 369 |
+ |
|
| 370 |
+ case BusC::MA : |
|
| 371 |
+ address = ((static_cast<int>(this->reg.mah) << 8) + static_cast<int>(this->reg.mal)); |
|
| 372 |
+ break; |
|
| 373 |
+ |
|
| 374 |
+ case BusC::SP : |
|
| 375 |
+ address = ((static_cast<int>(this->reg.sph) << 8) + static_cast<int>(this->reg.spl)); |
|
| 376 |
+ break; |
|
| 377 |
+ |
|
| 378 |
+ case BusC::XY : |
|
| 379 |
+ address = ((static_cast<int>(this->reg.y) << 8) + static_cast<int>(this->reg.x)); |
|
| 380 |
+ break; |
|
| 381 |
+ } |
|
| 382 |
+ |
|
| 383 |
+ switch(busAR) |
|
| 384 |
+ {
|
|
| 385 |
+ case BusAR::ABXY : |
|
| 386 |
+ switch(busARregABXY) |
|
| 387 |
+ {
|
|
| 388 |
+ case 0 : |
|
| 389 |
+ valueAR = this->reg.a; |
|
| 390 |
+ break; |
|
| 391 |
+ |
|
| 392 |
+ case 1 : |
|
| 393 |
+ valueAR = this->reg.b; |
|
| 394 |
+ break; |
|
| 395 |
+ |
|
| 396 |
+ case 2 : |
|
| 397 |
+ valueAR = this->reg.x; |
|
| 398 |
+ break; |
|
| 399 |
+ |
|
| 400 |
+ case 3 : |
|
| 401 |
+ valueAR = this->reg.y; |
|
| 402 |
+ break; |
|
| 403 |
+ } |
|
| 404 |
+ break; |
|
| 405 |
+ |
|
| 406 |
+ case BusAR::D : |
|
| 407 |
+ valueAR = this->reg.d; |
|
| 408 |
+ break; |
|
| 409 |
+ |
|
| 410 |
+ case BusAR::IN : |
|
| 411 |
+ valueAR = this->reg.in; |
|
| 412 |
+ break; |
|
| 413 |
+ |
|
| 414 |
+ case BusAR::T : |
|
| 415 |
+ valueAR = this->reg.t; |
|
| 416 |
+ break; |
|
| 417 |
+ |
|
| 418 |
+ case BusAR::Ram : |
|
| 419 |
+ if(address < MEMORY_SIZE) |
|
| 420 |
+ {
|
|
| 421 |
+ valueAR = this->ramLow.data[address]; |
|
| 422 |
+ } |
|
| 423 |
+ else |
|
| 424 |
+ {
|
|
| 425 |
+ valueAR = this->ramHigh.data[address - MEMORY_SIZE]; |
|
| 426 |
+ } |
|
| 427 |
+ break; |
|
| 428 |
+ |
|
| 429 |
+ case BusAR::Flash : |
|
| 430 |
+ if(address < MEMORY_SIZE) |
|
| 431 |
+ {
|
|
| 432 |
+ valueAR = this->rom.data[address]; |
|
| 433 |
+ } |
|
| 434 |
+ else |
|
| 435 |
+ {
|
|
| 436 |
+ valueAR = this->ramHigh.data[address - MEMORY_SIZE]; |
|
| 437 |
+ } |
|
| 438 |
+ break; |
|
| 439 |
+ |
|
| 440 |
+ case BusAR::PCL : |
|
| 441 |
+ valueAR = this->reg.pcl; |
|
| 442 |
+ break; |
|
| 443 |
+ |
|
| 444 |
+ case BusAR::PCH : |
|
| 445 |
+ valueAR = this->reg.pch; |
|
| 446 |
+ break; |
|
| 447 |
+ } |
|
| 448 |
+ |
|
| 449 |
+ switch(busB) |
|
| 450 |
+ {
|
|
| 451 |
+ case BusB::AB : |
|
| 452 |
+ switch(busBregAB) |
|
| 453 |
+ {
|
|
| 454 |
+ case 0 : |
|
| 455 |
+ valueB = this->reg.a; |
|
| 456 |
+ break; |
|
| 457 |
+ |
|
| 458 |
+ case 1 : |
|
| 459 |
+ valueB = this->reg.b; |
|
| 460 |
+ break; |
|
| 461 |
+ } |
|
| 462 |
+ break; |
|
| 463 |
+ |
|
| 464 |
+ case BusB::D : |
|
| 465 |
+ valueB = this->reg.d; |
|
| 466 |
+ break; |
|
| 467 |
+ } |
|
| 468 |
+ |
|
| 469 |
+ switch(busAW) |
|
| 470 |
+ {
|
|
| 471 |
+ case BusAW::None : |
|
| 472 |
+ break; |
|
| 473 |
+ |
|
| 474 |
+ case BusAW::ABXY : |
|
| 475 |
+ switch(busAWregABXY) |
|
| 476 |
+ {
|
|
| 477 |
+ case 0 : |
|
| 478 |
+ this->reg.a = valueAR; |
|
| 479 |
+ break; |
|
| 480 |
+ |
|
| 481 |
+ case 1 : |
|
| 482 |
+ this->reg.b = valueAR; |
|
| 483 |
+ break; |
|
| 484 |
+ |
|
| 485 |
+ case 2 : |
|
| 486 |
+ this->reg.x = valueAR; |
|
| 487 |
+ break; |
|
| 488 |
+ |
|
| 489 |
+ case 3 : |
|
| 490 |
+ this->reg.y = valueAR; |
|
| 491 |
+ break; |
|
| 492 |
+ } |
|
| 493 |
+ break; |
|
| 494 |
+ |
|
| 495 |
+ case BusAW::D : |
|
| 496 |
+ this->reg.d = valueAR; |
|
| 497 |
+ break; |
|
| 498 |
+ |
|
| 499 |
+ case BusAW::OUT : |
|
| 500 |
+ {
|
|
| 501 |
+ this->reg.out = valueAR; |
|
| 502 |
+ |
|
| 503 |
+ emit outSignal(this->reg.out); |
|
| 504 |
+ } |
|
| 505 |
+ break; |
|
| 506 |
+ |
|
| 507 |
+ case BusAW::ALU_T : |
|
| 508 |
+ {
|
|
| 509 |
+ QVector<bool> z(2); |
|
| 510 |
+ bool c = aluC; |
|
| 511 |
+ unsigned char value = 0; |
|
| 512 |
+ |
|
| 513 |
+ value = this->alu((valueAR & ALU_4BIT_MASK), (valueB & ALU_4BIT_MASK), aluS, aluM, c, z[0]); |
|
| 514 |
+ value += (this->alu((valueAR >> ALU_4BIT_OFFSET), (valueB >> ALU_4BIT_OFFSET), aluS, aluM, c, z[1]) << ALU_4BIT_OFFSET); |
|
| 515 |
+ |
|
| 516 |
+ this->reg.t = value; |
|
| 517 |
+ this->reg.c = c; |
|
| 518 |
+ this->reg.z = (z[0] & z[1]); |
|
| 519 |
+ } |
|
| 520 |
+ break; |
|
| 521 |
+ |
|
| 522 |
+ case BusAW::RPC : |
|
| 523 |
+ uromCycle = 0; |
|
| 524 |
+ break; |
|
| 525 |
+ |
|
| 526 |
+ case BusAW::I : |
|
| 527 |
+ this->reg.i = valueAR; |
|
| 528 |
+ break; |
|
| 529 |
+ |
|
| 530 |
+ case BusAW::Ram : |
|
| 531 |
+ if(address < MEMORY_SIZE) |
|
| 532 |
+ {
|
|
| 533 |
+ this->ramLow.data[address] = valueAR; |
|
| 534 |
+ } |
|
| 535 |
+ else |
|
| 536 |
+ {
|
|
| 537 |
+ this->ramHigh.data[address - MEMORY_SIZE] = valueAR; |
|
| 538 |
+ } |
|
| 539 |
+ break; |
|
| 540 |
+ |
|
| 541 |
+ case BusAW::PCL : |
|
| 542 |
+ this->reg.pcl = valueAR; |
|
| 543 |
+ break; |
|
| 544 |
+ |
|
| 545 |
+ case BusAW::PCH : |
|
| 546 |
+ this->reg.pch = valueAR; |
|
| 547 |
+ break; |
|
| 548 |
+ |
|
| 549 |
+ case BusAW::MAL : |
|
| 550 |
+ this->reg.mal = valueAR; |
|
| 551 |
+ break; |
|
| 552 |
+ |
|
| 553 |
+ case BusAW::MAH : |
|
| 554 |
+ this->reg.mah = valueAR; |
|
| 555 |
+ break; |
|
| 556 |
+ |
|
| 557 |
+ case BusAW::PC_PLUS : |
|
| 558 |
+ {
|
|
| 559 |
+ unsigned int pcAddress = ((static_cast<unsigned int>(this->reg.pch) << 8) + static_cast<unsigned int>(this->reg.pcl) + 1); |
|
| 560 |
+ |
|
| 561 |
+ this->reg.pch = static_cast<unsigned char>(pcAddress >> 8); |
|
| 562 |
+ this->reg.pcl = static_cast<unsigned char>(pcAddress & 0xff); |
|
| 563 |
+ } |
|
| 564 |
+ break; |
|
| 565 |
+ |
|
| 566 |
+ case BusAW::SP_PLUS : |
|
| 567 |
+ this->reg.spl++; |
|
| 568 |
+ this->reg.maxSpl = qMax(this->reg.maxSpl, this->reg.spl); |
|
| 569 |
+ break; |
|
| 570 |
+ |
|
| 571 |
+ case BusAW::SP_MINUS : |
|
| 572 |
+ this->reg.spl--; |
|
| 573 |
+ break; |
|
| 574 |
+ |
|
| 575 |
+ case BusAW::RPC_PLUS : |
|
| 576 |
+ {
|
|
| 577 |
+ unsigned int pcAddress = ((static_cast<unsigned int>(this->reg.pch) << 8) + static_cast<unsigned int>(this->reg.pcl) + 1); |
|
| 578 |
+ |
|
| 579 |
+ this->reg.pch = static_cast<unsigned char>(pcAddress >> 8); |
|
| 580 |
+ this->reg.pcl = static_cast<unsigned char>(pcAddress & 0xff); |
|
| 581 |
+ |
|
| 582 |
+ uromCycle = 0; |
|
| 583 |
+ } |
|
| 584 |
+ break; |
|
| 585 |
+ } |
|
| 586 |
+ |
|
| 587 |
+ tick++; |
|
| 588 |
+ this->ticks++; |
|
| 589 |
+ |
|
| 590 |
+ if((this->ticks % CLOCK_TICKS_PER_INTERVAL) == 0) |
|
| 591 |
+ {
|
|
| 592 |
+ this->reg.in ^= IO::IN_CLOCK_BIT; |
|
| 593 |
+ } |
|
| 594 |
+ } |
|
| 595 |
+ while(uromCycle > 0); |
|
| 596 |
+ |
|
| 597 |
+ if(this->stepMode) |
|
| 598 |
+ {
|
|
| 599 |
+ break; |
|
| 600 |
+ } |
|
| 601 |
+ } |
|
| 602 |
+ |
|
| 603 |
+ emit updateSignal(); |
|
| 604 |
+} |
| 0 | 605 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,208 @@ |
| 1 |
+/* |
|
| 2 |
+ * Author: Pawel Jablonski |
|
| 3 |
+ * E-mail: pj@xirx.net |
|
| 4 |
+ * WWW: xirx.net |
|
| 5 |
+ * GIT: git.xirx.net |
|
| 6 |
+ * |
|
| 7 |
+ * License: You can use this code however you like |
|
| 8 |
+ * but leave information about the original author. |
|
| 9 |
+ * Code is free for non-commercial and commercial use. |
|
| 10 |
+ */ |
|
| 11 |
+ |
|
| 12 |
+#ifndef CPU_H |
|
| 13 |
+#define CPU_H |
|
| 14 |
+ |
|
| 15 |
+#include <QObject> |
|
| 16 |
+#include <QVector> |
|
| 17 |
+#include <QTimer> |
|
| 18 |
+ |
|
| 19 |
+#include "io.h" |
|
| 20 |
+ |
|
| 21 |
+//! This class contains CPU contex and functions |
|
| 22 |
+class CPU : public QObject |
|
| 23 |
+{
|
|
| 24 |
+ Q_OBJECT |
|
| 25 |
+ |
|
| 26 |
+ public: |
|
| 27 |
+ static const int FREQUENCY = 1000000; //!< Base frequency of CPU |
|
| 28 |
+ |
|
| 29 |
+ static const int INTERVAL = 125; //!< Time in milliseconds between every step of the emulation |
|
| 30 |
+ static const int TICKS_PER_INTERVAL = ((FREQUENCY * INTERVAL) / 1000); //!< How many clock ticks of CPU will be processed in a single step of the emulation |
|
| 31 |
+ |
|
| 32 |
+ static const int CLOCK_INTERVAL = 125; //!< How many milliseconds is needed to toggle the clock pin status on the IO BUS. Default frequency is 8 Hz |
|
| 33 |
+ static const int CLOCK_TICKS_PER_INTERVAL = ((FREQUENCY * CLOCK_INTERVAL) / 1000); //!< How many clock ticks of CPU is needed to toggle the clock pin status on the IO BUS. |
|
| 34 |
+ |
|
| 35 |
+ static const int MEMORY_PAGE_SIZE = 256; //!< Memory page size |
|
| 36 |
+ static const int MEMORY_PAGE_QUANTITY = 128; //!< Quantity of pages in one memory block |
|
| 37 |
+ static const int MEMORY_SIZE = (MEMORY_PAGE_SIZE * MEMORY_PAGE_QUANTITY); //!< Size of the memory block |
|
| 38 |
+ |
|
| 39 |
+ static const int ROM_OS_ADDRESS = 0x0000; //!< Start of ROM OS address space |
|
| 40 |
+ static const int ROM_APP_ADDRESS = 0x8000; //!< Start of ROM Application address space |
|
| 41 |
+ |
|
| 42 |
+ static const int RAM_OS_ADDRESS = 0x0000; //!< Start of RAM OS address space |
|
| 43 |
+ static const int RAM_SP_ADDRESS = 0x0f00; //!< Start of RAM Stack Pointer address space |
|
| 44 |
+ static const int RAM_APP_ADDRESS = 0x1000; //!< Start of RAM Application address space |
|
| 45 |
+ |
|
| 46 |
+ static const int STACK_PAGE = 0x0f; //!< Page number of the stack |
|
| 47 |
+ |
|
| 48 |
+ static const int UROM_ADDRESS_CYCLE_MASK = 0x0f; //!< Micro-step mask of the CPU step for uROM |
|
| 49 |
+ |
|
| 50 |
+ static const int UROM_ADDRESS_INSTRUCTION_POSITION = 0; //!< Offset of instruction for uROM |
|
| 51 |
+ static const int UROM_ADDRESS_CYCLE_POSITION = 8; //!< Offset of micro-step for uROM |
|
| 52 |
+ static const int UROM_ADDRESS_FLAG_C_POSITION = 12; //!< Offset of C Flag for uROM |
|
| 53 |
+ static const int UROM_ADDRESS_FLAG_Z_POSITION = 13; //!< Offset of Z Flag for uROM |
|
| 54 |
+ |
|
| 55 |
+ static const int UROM_0_BUS_AR_MASK = 0b00000111; //!< BUS A Read mask for first uROM bank |
|
| 56 |
+ static const int UROM_0_BUS_AW_MASK = 0b01111000; //!< BUS A Write mask for first uROM bank |
|
| 57 |
+ static const int UROM_0_BUS_B_MASK = 0b10000000; //!< BUS B mask for first uROM bank |
|
| 58 |
+ |
|
| 59 |
+ static const int UROM_0_BUS_AR_POSITION = 0; //!< BUS A Read offset for first uROM bank |
|
| 60 |
+ static const int UROM_0_BUS_AW_POSITION = 3; //!< BUS A Write offset for first uROM bank |
|
| 61 |
+ static const int UROM_0_BUS_B_POSITION = 7; //!< BUS B offset for first uROM bank |
|
| 62 |
+ |
|
| 63 |
+ static const int UROM_1_BUS_C_MASK = 0b00000011; //!< BUS C mask for second uROM bank |
|
| 64 |
+ static const int UROM_1_ALU_S_MASK = 0b00111100; //!< ALU S Flags mask for second uROM bank |
|
| 65 |
+ static const int UROM_1_ALU_M_MASK = 0b01000000; //!< ALU M Flag mask for second uROM bank |
|
| 66 |
+ static const int UROM_1_ALU_C_MASK = 0b10000000; //!< ALU C Flag mask for second uROM bank |
|
| 67 |
+ |
|
| 68 |
+ static const int UROM_1_BUS_C_POSITION = 0; //!< BUS C offset for second uROM bank |
|
| 69 |
+ static const int UROM_1_ALU_S_POSITION = 2; //!< ALU S Flags offset for second uROM bank |
|
| 70 |
+ |
|
| 71 |
+ static const int INSTRUCTION_REG_ABXY_FIRST_MASK = 0b00000011; //!< First argument ABXY Register mask for opcode |
|
| 72 |
+ static const int INSTRUCTION_REG_ABXY_SECOND_MASK = 0b00001100; //!< Second argument ABXY Register mask for opcode |
|
| 73 |
+ static const int INSTRUCTION_REG_AB_MASK = 0b00000100; //!< Second argument AB Register mask for opcode |
|
| 74 |
+ |
|
| 75 |
+ static const int INSTRUCTION_REG_ABXY_FIRST_OFFSET = 0; //!< First argument ABXY Register offset for opcode |
|
| 76 |
+ static const int INSTRUCTION_REG_ABXY_SECOND_OFFSET = 2; //!< Second argument ABXY Register offset for opcode |
|
| 77 |
+ static const int INSTRUCTION_REG_AB_OFFSET = 2; //!< Second argument AB Register offset for opcode |
|
| 78 |
+ |
|
| 79 |
+ static const int ALU_4BIT_MASK = 0x0f; //!< ALU Input/Output mask for lower and higher part of byte |
|
| 80 |
+ static const int ALU_4BIT_OFFSET = 4; //!< ALU Input/Output offset for lower and higher part of byte |
|
| 81 |
+ |
|
| 82 |
+ //! Memory buffer |
|
| 83 |
+ struct Memory |
|
| 84 |
+ {
|
|
| 85 |
+ QVector<unsigned char> data = QVector<unsigned char>(MEMORY_SIZE); //!< Memory data |
|
| 86 |
+ }; |
|
| 87 |
+ |
|
| 88 |
+ //! Register buffer |
|
| 89 |
+ struct Reg |
|
| 90 |
+ {
|
|
| 91 |
+ unsigned char i; //!< Instruction register |
|
| 92 |
+ bool c; //!< Carry Flag register |
|
| 93 |
+ bool z; //!< Zero Flag register |
|
| 94 |
+ unsigned char pch; //!< Program Counter High register |
|
| 95 |
+ unsigned char pcl; //!< Program Counter Low register |
|
| 96 |
+ unsigned char sph; //!< Stack Pointer High register |
|
| 97 |
+ unsigned char spl; //!< Stack Pointer Low register |
|
| 98 |
+ unsigned char maxSpl; //!< Maximum reached value of Stack Pointer |
|
| 99 |
+ unsigned char a; //!< A register |
|
| 100 |
+ unsigned char b; //!< B register |
|
| 101 |
+ unsigned char x; //!< X register |
|
| 102 |
+ unsigned char y; //!< Y rRegister |
|
| 103 |
+ unsigned char in; //!< Input register |
|
| 104 |
+ unsigned char out; //!< Output register |
|
| 105 |
+ unsigned char d; //!< Hidden Data register |
|
| 106 |
+ unsigned char t; //!< ALU Output register |
|
| 107 |
+ unsigned char mah; //!< Memory Address High register |
|
| 108 |
+ unsigned char mal; //!<Memory Address Low register |
|
| 109 |
+ }; |
|
| 110 |
+ |
|
| 111 |
+ CPU(QObject *parent = nullptr); |
|
| 112 |
+ |
|
| 113 |
+ void setUrom0(const CPU::Memory &urom); |
|
| 114 |
+ void setUrom1(const CPU::Memory &urom); |
|
| 115 |
+ void setRom(const CPU::Memory &rom); |
|
| 116 |
+ |
|
| 117 |
+ void run(); |
|
| 118 |
+ void step(); |
|
| 119 |
+ void pause(); |
|
| 120 |
+ void stop(); |
|
| 121 |
+ |
|
| 122 |
+ const CPU::Reg &getReg() const; |
|
| 123 |
+ unsigned long long getTicks() const; |
|
| 124 |
+ |
|
| 125 |
+ const CPU::Memory &getRom() const; |
|
| 126 |
+ const CPU::Memory &getRamLow() const; |
|
| 127 |
+ const CPU::Memory &getRamHigh() const; |
|
| 128 |
+ |
|
| 129 |
+ private: |
|
| 130 |
+ //! Line select defines for the main reading data bus |
|
| 131 |
+ enum class BusAR |
|
| 132 |
+ {
|
|
| 133 |
+ ABXY = 0, //!< Main and auxiliary registers |
|
| 134 |
+ D, //!< Hidden data register |
|
| 135 |
+ IN, //!< Input register |
|
| 136 |
+ T, //!< ALU temp register |
|
| 137 |
+ Ram, //!< RAM access |
|
| 138 |
+ Flash, //!< FLASH access |
|
| 139 |
+ PCL, //!< Program Counter Low register |
|
| 140 |
+ PCH //!< Program Counter High register |
|
| 141 |
+ }; |
|
| 142 |
+ |
|
| 143 |
+ //! Line select defines for the main writing data bus |
|
| 144 |
+ enum class BusAW |
|
| 145 |
+ {
|
|
| 146 |
+ None = 0, //!< Not selected |
|
| 147 |
+ ABXY, //!< Main and auxiliary registers |
|
| 148 |
+ D, //!< Hidden data register |
|
| 149 |
+ OUT, //!< Output register |
|
| 150 |
+ ALU_T, //!< ALU operation |
|
| 151 |
+ RPC, //!< Reset Program Counter |
|
| 152 |
+ I, //!< Instruction register |
|
| 153 |
+ Ram, //!< RAM access |
|
| 154 |
+ PCL, //!< Program Counter Low register |
|
| 155 |
+ PCH, //!< Program Counter High register |
|
| 156 |
+ MAL, //!< Memory Address Low register |
|
| 157 |
+ MAH, //!< Memory Address High register |
|
| 158 |
+ PC_PLUS, //!< Increse Program Counter |
|
| 159 |
+ SP_PLUS, //!< Increse Stack Pointer |
|
| 160 |
+ SP_MINUS, //!< Decrese Stack Pointer |
|
| 161 |
+ RPC_PLUS //!< Reset the step counter and increse Program Counter |
|
| 162 |
+ }; |
|
| 163 |
+ |
|
| 164 |
+ //! Line select defines for the secondary reading data bus |
|
| 165 |
+ enum class BusB |
|
| 166 |
+ {
|
|
| 167 |
+ AB = 0, //!< Main registers |
|
| 168 |
+ D //!< Hidden data register |
|
| 169 |
+ }; |
|
| 170 |
+ |
|
| 171 |
+ //! Line select defines for the addressing data bus |
|
| 172 |
+ enum class BusC |
|
| 173 |
+ {
|
|
| 174 |
+ PC = 0, //!< Full 16 bit Program Counter register |
|
| 175 |
+ MA, //!< Full 16 bit Memory Address register |
|
| 176 |
+ SP, //!< Full 16 bit Stack Pointer register |
|
| 177 |
+ XY //!< Full 16 bit auxiliary register |
|
| 178 |
+ }; |
|
| 179 |
+ |
|
| 180 |
+ void reset(); |
|
| 181 |
+ |
|
| 182 |
+ unsigned char alu(unsigned char a, unsigned char b, unsigned char s, bool m, bool &c, bool &z); |
|
| 183 |
+ |
|
| 184 |
+ bool stepMode; //!< Step mode enabler for emulation |
|
| 185 |
+ unsigned long long ticks; //!< Counter of clock ticks of CPU |
|
| 186 |
+ QTimer timer; //!< Timer for executing emulation steps |
|
| 187 |
+ |
|
| 188 |
+ Memory urom0; //!< First uROM memory buffer |
|
| 189 |
+ Memory urom1; //!< Second uROM memory buffer |
|
| 190 |
+ Memory rom; //!< ROM memory buffer |
|
| 191 |
+ |
|
| 192 |
+ Memory ramLow; //!< Lower 32 kB of RAM buffer |
|
| 193 |
+ Memory ramHigh; //!< Higher 32 kB of RAM buffer |
|
| 194 |
+ |
|
| 195 |
+ Reg reg; //!< Register buffer |
|
| 196 |
+ |
|
| 197 |
+ signals: |
|
| 198 |
+ void outSignal(unsigned char out); |
|
| 199 |
+ void updateSignal(); |
|
| 200 |
+ |
|
| 201 |
+ public slots: |
|
| 202 |
+ void inSlot(unsigned char in); |
|
| 203 |
+ |
|
| 204 |
+ private slots: |
|
| 205 |
+ void emulation(); |
|
| 206 |
+}; |
|
| 207 |
+ |
|
| 208 |
+#endif |
| 0 | 209 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,789 @@ |
| 1 |
+/* |
|
| 2 |
+ * Author: Pawel Jablonski |
|
| 3 |
+ * E-mail: pj@xirx.net |
|
| 4 |
+ * WWW: xirx.net |
|
| 5 |
+ * GIT: git.xirx.net |
|
| 6 |
+ * |
|
| 7 |
+ * License: You can use this code however you like |
|
| 8 |
+ * but leave information about the original author. |
|
| 9 |
+ * Code is free for non-commercial and commercial use. |
|
| 10 |
+ */ |
|
| 11 |
+ |
|
| 12 |
+#include "emu.h" |
|
| 13 |
+#include "ui_emu.h" |
|
| 14 |
+ |
|
| 15 |
+/** |
|
| 16 |
+ * Constructor for the emulator class |
|
| 17 |
+ * |
|
| 18 |
+ * @param parent Parent object |
|
| 19 |
+ */ |
|
| 20 |
+Emu::Emu(QWidget *parent) : QMainWindow(parent), ui(new Ui::Emu) |
|
| 21 |
+{
|
|
| 22 |
+ ui->setupUi(this); |
|
| 23 |
+ |
|
| 24 |
+ this->loaded = false; |
|
| 25 |
+ this->started = false; |
|
| 26 |
+ this->running = false; |
|
| 27 |
+ |
|
| 28 |
+ this->ui->fileUrom0PathLabel->setText("");
|
|
| 29 |
+ this->ui->fileUrom1PathLabel->setText("");
|
|
| 30 |
+ this->ui->fileRomPathLabel->setText("");
|
|
| 31 |
+ this->ui->fileFSDirPathLabel->setText("");
|
|
| 32 |
+ |
|
| 33 |
+ this->reset(); |
|
| 34 |
+ this->update(); |
|
| 35 |
+ |
|
| 36 |
+ this->ui->speakerVolumeSlider->setValue(50); |
|
| 37 |
+ this->ui->speakerVolumeValueLabel->setText("50%");
|
|
| 38 |
+ |
|
| 39 |
+ this->setFocus(); |
|
| 40 |
+ |
|
| 41 |
+ QObject::connect(&this->cpu, SIGNAL(updateSignal()), this, SLOT(updateSlot())); |
|
| 42 |
+ |
|
| 43 |
+ QObject::connect(&this->io, SIGNAL(updateLCDBufferSignal(LCD::Buffer)), ui->lcdBufferView, SLOT(drawSlot(LCD::Buffer))); |
|
| 44 |
+ |
|
| 45 |
+ QObject::connect(&this->io, SIGNAL(updateLEDRunSignal(bool)), this, SLOT(updateLEDRunSlot(bool))); |
|
| 46 |
+ QObject::connect(&this->io, SIGNAL(updateLEDErrorSignal(bool)), this, SLOT(updateLEDErrorSlot(bool))); |
|
| 47 |
+ |
|
| 48 |
+ QObject::connect(&this->io, SIGNAL(updateRS232TxSignal(unsigned char)), this, SLOT(updateRS232TxSlot(unsigned char))); |
|
| 49 |
+ QObject::connect(&this->io, SIGNAL(updateRS232RxSignal(unsigned char)), this, SLOT(updateRS232RxSlot(unsigned char))); |
|
| 50 |
+ |
|
| 51 |
+ QObject::connect(&this->io, SIGNAL(updateRTCDateTimeSignal(QDateTime)), this, SLOT(updateRTCDateTimeSlot(QDateTime))); |
|
| 52 |
+ |
|
| 53 |
+ QObject::connect(&this->io, SIGNAL(updateSpeakerStatusSignal(int)), this, SLOT(updateSpeakerStatusSlot(int))); |
|
| 54 |
+ |
|
| 55 |
+ QObject::connect(&this->cpu, SIGNAL(outSignal(unsigned char)), &this->io, SLOT(outSlot(unsigned char))); |
|
| 56 |
+ QObject::connect(&this->io, SIGNAL(inSignal(unsigned char)), &this->cpu, SLOT(inSlot(unsigned char))); |
|
| 57 |
+} |
|
| 58 |
+ |
|
| 59 |
+//! Destructor for the emulator class |
|
| 60 |
+Emu::~Emu() |
|
| 61 |
+{
|
|
| 62 |
+ QObject::disconnect(&this->io); |
|
| 63 |
+ QObject::disconnect(&this->cpu); |
|
| 64 |
+ |
|
| 65 |
+ QObject::disconnect(this); |
|
| 66 |
+ |
|
| 67 |
+ delete ui; |
|
| 68 |
+} |
|
| 69 |
+ |
|
| 70 |
+//! Reset the UI elements |
|
| 71 |
+void Emu::reset() |
|
| 72 |
+{
|
|
| 73 |
+ this->ui->regAValueHexLabel->setText("");
|
|
| 74 |
+ this->ui->regAValueDecLabel->setText("");
|
|
| 75 |
+ this->ui->regAValueBinLabel->setText("");
|
|
| 76 |
+ |
|
| 77 |
+ this->ui->regBValueHexLabel->setText("");
|
|
| 78 |
+ this->ui->regBValueDecLabel->setText("");
|
|
| 79 |
+ this->ui->regBValueBinLabel->setText("");
|
|
| 80 |
+ |
|
| 81 |
+ this->ui->regXValueHexLabel->setText("");
|
|
| 82 |
+ this->ui->regXValueDecLabel->setText("");
|
|
| 83 |
+ this->ui->regXValueBinLabel->setText("");
|
|
| 84 |
+ |
|
| 85 |
+ this->ui->regYValueHexLabel->setText("");
|
|
| 86 |
+ this->ui->regYValueDecLabel->setText("");
|
|
| 87 |
+ this->ui->regYValueBinLabel->setText("");
|
|
| 88 |
+ |
|
| 89 |
+ this->ui->regINValueHexLabel->setText("");
|
|
| 90 |
+ this->ui->regINValueDecLabel->setText("");
|
|
| 91 |
+ this->ui->regINValueBinLabel->setText("");
|
|
| 92 |
+ |
|
| 93 |
+ this->ui->regOUTValueHexLabel->setText("");
|
|
| 94 |
+ this->ui->regOUTValueDecLabel->setText("");
|
|
| 95 |
+ this->ui->regOUTValueBinLabel->setText("");
|
|
| 96 |
+ |
|
| 97 |
+ this->ui->regIValueHexLabel->setText("");
|
|
| 98 |
+ this->ui->regIValueBinLabel->setText("");
|
|
| 99 |
+ |
|
| 100 |
+ this->ui->regPCHValueLabel->setText("");
|
|
| 101 |
+ this->ui->regPCLValueLabel->setText("");
|
|
| 102 |
+ |
|
| 103 |
+ this->ui->regCValueLabel->setText("");
|
|
| 104 |
+ this->ui->regZValueLabel->setText("");
|
|
| 105 |
+ |
|
| 106 |
+ this->ui->regSPHValueLabel->setText("");
|
|
| 107 |
+ this->ui->regSPLValueLabel->setText("");
|
|
| 108 |
+ this->ui->regSPLMaxValueLabel->setText("");
|
|
| 109 |
+ |
|
| 110 |
+ this->ui->emuTimeValueLabel->setText("");
|
|
| 111 |
+ |
|
| 112 |
+ this->ui->lcdBufferView->reset(); |
|
| 113 |
+ |
|
| 114 |
+ this->ui->ledRunValueLabel->setText("");
|
|
| 115 |
+ this->ui->ledRunValueLabel->setStyleSheet("");
|
|
| 116 |
+ |
|
| 117 |
+ this->ui->ledErrorValueLabel->setText("");
|
|
| 118 |
+ this->ui->ledErrorValueLabel->setStyleSheet("");
|
|
| 119 |
+ |
|
| 120 |
+ this->romSetPage(0); |
|
| 121 |
+ this->ramSetPage(0); |
|
| 122 |
+ |
|
| 123 |
+ this->ui->rs232RxText->clear(); |
|
| 124 |
+ this->ui->rs232TxText->clear(); |
|
| 125 |
+ this->ui->rs232RxEdit->clear(); |
|
| 126 |
+ |
|
| 127 |
+ QDateTime dateTime; |
|
| 128 |
+ dateTime.setDate(QDate(2000, 1, 1)); |
|
| 129 |
+ |
|
| 130 |
+ this->ui->rtcValueLabel->setText(dateTime.toString("yyyy.MM.dd hh:mm:ss"));
|
|
| 131 |
+ |
|
| 132 |
+ this->ui->speakerBufferValueLabel->setText("0");
|
|
| 133 |
+} |
|
| 134 |
+ |
|
| 135 |
+//! Update internal statuses and UI elements |
|
| 136 |
+void Emu::update() |
|
| 137 |
+{
|
|
| 138 |
+ if(!this->started) |
|
| 139 |
+ {
|
|
| 140 |
+ if((!this->ui->fileUrom0PathLabel->text().isEmpty()) && (!this->ui->fileUrom1PathLabel->text().isEmpty()) && (!this->ui->fileRomPathLabel->text().isEmpty()) && (!this->ui->fileFSDirPathLabel->text().isEmpty())) |
|
| 141 |
+ {
|
|
| 142 |
+ this->loaded = true; |
|
| 143 |
+ } |
|
| 144 |
+ else |
|
| 145 |
+ {
|
|
| 146 |
+ this->loaded = false; |
|
| 147 |
+ } |
|
| 148 |
+ } |
|
| 149 |
+ |
|
| 150 |
+ this->ui->fileUrom0OpenButton->setEnabled(!this->started); |
|
| 151 |
+ this->ui->fileUrom1OpenButton->setEnabled(!this->started); |
|
| 152 |
+ this->ui->fileRomOpenButton->setEnabled(!this->started); |
|
| 153 |
+ this->ui->fileFSDirOpenButton->setEnabled(!this->started); |
|
| 154 |
+ |
|
| 155 |
+ this->ui->fileUrom0ReloadButton->setEnabled((!this->started) && (!this->ui->fileUrom0PathLabel->text().isEmpty())); |
|
| 156 |
+ this->ui->fileUrom1ReloadButton->setEnabled((!this->started) && (!this->ui->fileUrom1PathLabel->text().isEmpty())); |
|
| 157 |
+ this->ui->fileRomReloadButton->setEnabled((!this->started) && (!this->ui->fileRomPathLabel->text().isEmpty())); |
|
| 158 |
+ |
|
| 159 |
+ if(this->loaded) |
|
| 160 |
+ {
|
|
| 161 |
+ if(this->running) |
|
| 162 |
+ {
|
|
| 163 |
+ this->ui->emuStatusValueLabel->setText("Running");
|
|
| 164 |
+ } |
|
| 165 |
+ else |
|
| 166 |
+ {
|
|
| 167 |
+ if(this->started) |
|
| 168 |
+ {
|
|
| 169 |
+ this->ui->emuStatusValueLabel->setText("Paused");
|
|
| 170 |
+ } |
|
| 171 |
+ else |
|
| 172 |
+ {
|
|
| 173 |
+ this->ui->emuStatusValueLabel->setText("Stopped");
|
|
| 174 |
+ } |
|
| 175 |
+ } |
|
| 176 |
+ } |
|
| 177 |
+ else |
|
| 178 |
+ {
|
|
| 179 |
+ this->ui->emuStatusValueLabel->setText("");
|
|
| 180 |
+ } |
|
| 181 |
+ |
|
| 182 |
+ this->ui->emuControlRunButton->setEnabled(this->loaded && (!this->running)); |
|
| 183 |
+ this->ui->emuControlStepButton->setEnabled(this->loaded && (!this->running)); |
|
| 184 |
+ this->ui->emuControlPauseButton->setEnabled(this->running); |
|
| 185 |
+ this->ui->emuControlStopButton->setEnabled(this->started); |
|
| 186 |
+ |
|
| 187 |
+ this->ui->romGoToOSButton->setEnabled(this->started); |
|
| 188 |
+ this->ui->romGoToAppButton->setEnabled(this->started); |
|
| 189 |
+ |
|
| 190 |
+ this->ui->ramGoToOSButton->setEnabled(this->started); |
|
| 191 |
+ this->ui->ramGoToSPButton->setEnabled(this->started); |
|
| 192 |
+ this->ui->ramGoToAppButton->setEnabled(this->started); |
|
| 193 |
+ |
|
| 194 |
+ this->ui->rs232RxSendButton->setEnabled(this->started); |
|
| 195 |
+ this->ui->rtcSetCurrentButton->setEnabled(this->started); |
|
| 196 |
+ this->ui->speakerVolumeSlider->setEnabled(this->started); |
|
| 197 |
+} |
|
| 198 |
+ |
|
| 199 |
+/** |
|
| 200 |
+ * Set ROM page to show |
|
| 201 |
+ * |
|
| 202 |
+ * @param page Page number |
|
| 203 |
+ */ |
|
| 204 |
+void Emu::romSetPage(int page) |
|
| 205 |
+{
|
|
| 206 |
+ if((page >= 0) && (((CPU::MEMORY_SIZE * 2) / CPU::MEMORY_PAGE_SIZE) > page)) |
|
| 207 |
+ {
|
|
| 208 |
+ this->romPage = page; |
|
| 209 |
+ |
|
| 210 |
+ this->ui->romText->clear(); |
|
| 211 |
+ |
|
| 212 |
+ if(this->started) |
|
| 213 |
+ {
|
|
| 214 |
+ const CPU::Memory &rom = (((CPU::MEMORY_SIZE / CPU::MEMORY_PAGE_SIZE) > page) ? this->cpu.getRom() : this->cpu.getRamHigh()); |
|
| 215 |
+ |
|
| 216 |
+ QString text = ""; |
|
| 217 |
+ |
|
| 218 |
+ for(int i = 0; i < CPU::MEMORY_PAGE_SIZE; i++) |
|
| 219 |
+ {
|
|
| 220 |
+ if(((i % 16) == 0) && (i != 0)) |
|
| 221 |
+ {
|
|
| 222 |
+ text.append("\n");
|
|
| 223 |
+ } |
|
| 224 |
+ else if((i % 16) != 0) |
|
| 225 |
+ {
|
|
| 226 |
+ text.append(" ");
|
|
| 227 |
+ } |
|
| 228 |
+ |
|
| 229 |
+ if((CPU::MEMORY_SIZE / CPU::MEMORY_PAGE_SIZE) > page) |
|
| 230 |
+ {
|
|
| 231 |
+ text.append(QString("%1").arg(rom.data[(this->romPage * CPU::MEMORY_PAGE_SIZE) + i], 2, 16, QChar('0')));
|
|
| 232 |
+ } |
|
| 233 |
+ else |
|
| 234 |
+ {
|
|
| 235 |
+ text.append(QString("%1").arg(rom.data[((this->romPage - (CPU::MEMORY_SIZE / CPU::MEMORY_PAGE_SIZE)) * CPU::MEMORY_PAGE_SIZE) + i], 2, 16, QChar('0')));
|
|
| 236 |
+ } |
|
| 237 |
+ } |
|
| 238 |
+ |
|
| 239 |
+ this->ui->romText->setPlainText(text); |
|
| 240 |
+ |
|
| 241 |
+ this->ui->romMinusButton->setEnabled(page != 0); |
|
| 242 |
+ this->ui->romPlusButton->setEnabled(page < (((CPU::MEMORY_SIZE * 2) / CPU::MEMORY_PAGE_SIZE) - 1)); |
|
| 243 |
+ } |
|
| 244 |
+ else |
|
| 245 |
+ {
|
|
| 246 |
+ this->ui->romMinusButton->setEnabled(false); |
|
| 247 |
+ this->ui->romPlusButton->setEnabled(false); |
|
| 248 |
+ } |
|
| 249 |
+ } |
|
| 250 |
+ |
|
| 251 |
+ QString addressPrefix = QString("%1").arg(this->romPage, 2, 16, QChar('0')).toUpper();
|
|
| 252 |
+ QString address = ""; |
|
| 253 |
+ |
|
| 254 |
+ address.append(addressPrefix); |
|
| 255 |
+ address.append("00 - ");
|
|
| 256 |
+ address.append(addressPrefix); |
|
| 257 |
+ address.append("FF");
|
|
| 258 |
+ |
|
| 259 |
+ this->ui->romAddressLabel->setText(QString().append(address)); |
|
| 260 |
+} |
|
| 261 |
+ |
|
| 262 |
+/** |
|
| 263 |
+ * Set RAM page to show |
|
| 264 |
+ * |
|
| 265 |
+ * @param page Page number |
|
| 266 |
+ */ |
|
| 267 |
+void Emu::ramSetPage(int page) |
|
| 268 |
+{
|
|
| 269 |
+ if((page >= 0) && ((CPU::MEMORY_SIZE / CPU::MEMORY_PAGE_SIZE) > page)) |
|
| 270 |
+ {
|
|
| 271 |
+ this->ramPage = page; |
|
| 272 |
+ |
|
| 273 |
+ this->ui->ramText->clear(); |
|
| 274 |
+ |
|
| 275 |
+ if(this->started) |
|
| 276 |
+ {
|
|
| 277 |
+ const CPU::Memory &ram = this->cpu.getRamLow(); |
|
| 278 |
+ |
|
| 279 |
+ QString text = ""; |
|
| 280 |
+ |
|
| 281 |
+ for(int i = 0; i < CPU::MEMORY_PAGE_SIZE; i++) |
|
| 282 |
+ {
|
|
| 283 |
+ if(((i % 16) == 0) && (i != 0)) |
|
| 284 |
+ {
|
|
| 285 |
+ text.append("\n");
|
|
| 286 |
+ } |
|
| 287 |
+ else if((i % 16) != 0) |
|
| 288 |
+ {
|
|
| 289 |
+ text.append(" ");
|
|
| 290 |
+ } |
|
| 291 |
+ |
|
| 292 |
+ text.append(QString("%1").arg(ram.data[(this->ramPage * CPU::MEMORY_PAGE_SIZE) + i], 2, 16, QChar('0')));
|
|
| 293 |
+ } |
|
| 294 |
+ |
|
| 295 |
+ this->ui->ramText->setPlainText(text); |
|
| 296 |
+ |
|
| 297 |
+ this->ui->ramMinusButton->setEnabled(page != 0); |
|
| 298 |
+ this->ui->ramPlusButton->setEnabled(page < ((CPU::MEMORY_SIZE / CPU::MEMORY_PAGE_SIZE) - 1)); |
|
| 299 |
+ } |
|
| 300 |
+ else |
|
| 301 |
+ {
|
|
| 302 |
+ this->ui->ramMinusButton->setEnabled(false); |
|
| 303 |
+ this->ui->ramPlusButton->setEnabled(false); |
|
| 304 |
+ } |
|
| 305 |
+ } |
|
| 306 |
+ |
|
| 307 |
+ QString addressPrefix = QString("%1").arg(this->ramPage, 2, 16, QChar('0')).toUpper();
|
|
| 308 |
+ QString address = ""; |
|
| 309 |
+ |
|
| 310 |
+ address.append(addressPrefix); |
|
| 311 |
+ address.append("00 - ");
|
|
| 312 |
+ address.append(addressPrefix); |
|
| 313 |
+ address.append("FF");
|
|
| 314 |
+ |
|
| 315 |
+ this->ui->ramAddressLabel->setText(QString().append(address)); |
|
| 316 |
+} |
|
| 317 |
+ |
|
| 318 |
+/** |
|
| 319 |
+ * Load data from file to the memory buffer |
|
| 320 |
+ * |
|
| 321 |
+ * @param path Path to the file to load |
|
| 322 |
+ * @param memory Buffer of the memory to fill |
|
| 323 |
+ * |
|
| 324 |
+ * @return Status of loading data to the memory buffer |
|
| 325 |
+ */ |
|
| 326 |
+bool Emu::loadMemoryFile(const QString &path, CPU::Memory &memory) |
|
| 327 |
+{
|
|
| 328 |
+ QFile file(path); |
|
| 329 |
+ |
|
| 330 |
+ if(!file.open(QIODevice::ReadOnly)) |
|
| 331 |
+ {
|
|
| 332 |
+ QMessageBox::critical(this, "Error", "Unable to open file"); |
|
| 333 |
+ return(false); |
|
| 334 |
+ } |
|
| 335 |
+ |
|
| 336 |
+ if(CPU::MEMORY_SIZE != file.read(reinterpret_cast<char *>(memory.data.data()), CPU::MEMORY_SIZE)) |
|
| 337 |
+ {
|
|
| 338 |
+ QMessageBox::critical(this, "Error", "Bad size of file"); |
|
| 339 |
+ return(false); |
|
| 340 |
+ } |
|
| 341 |
+ |
|
| 342 |
+ file.close(); |
|
| 343 |
+ |
|
| 344 |
+ return(true); |
|
| 345 |
+} |
|
| 346 |
+ |
|
| 347 |
+/** |
|
| 348 |
+ * Process the mouse press event |
|
| 349 |
+ * |
|
| 350 |
+ * @param event Mouse event |
|
| 351 |
+ */ |
|
| 352 |
+void Emu::mousePressEvent(QMouseEvent *) |
|
| 353 |
+{
|
|
| 354 |
+ this->setFocus(); |
|
| 355 |
+} |
|
| 356 |
+ |
|
| 357 |
+/** |
|
| 358 |
+ * Process the focus selector event |
|
| 359 |
+ * |
|
| 360 |
+ * @param next Search direction of the focus |
|
| 361 |
+ * |
|
| 362 |
+ * @return Status of finding next/previous widget to give the keyboard focus to |
|
| 363 |
+ */ |
|
| 364 |
+bool Emu::focusNextPrevChild(bool) |
|
| 365 |
+{
|
|
| 366 |
+ return(false); |
|
| 367 |
+} |
|
| 368 |
+ |
|
| 369 |
+/** |
|
| 370 |
+ * Process the key press event |
|
| 371 |
+ * |
|
| 372 |
+ * @param event Key event |
|
| 373 |
+ */ |
|
| 374 |
+void Emu::keyPressEvent(QKeyEvent *event) |
|
| 375 |
+{
|
|
| 376 |
+ if(this->running) |
|
| 377 |
+ {
|
|
| 378 |
+ this->io.keyboardKeyPress(event->key(), event->modifiers()); |
|
| 379 |
+ } |
|
| 380 |
+} |
|
| 381 |
+ |
|
| 382 |
+//! Update time, registers, memory view UI elements |
|
| 383 |
+void Emu::updateSlot() |
|
| 384 |
+{
|
|
| 385 |
+ unsigned long long ticks = this->cpu.getTicks(); |
|
| 386 |
+ |
|
| 387 |
+ QString timeMs = QString("%1").arg(((ticks / (CPU::FREQUENCY / 1000)) % 1000), 3, 10, QChar('0'));
|
|
| 388 |
+ QString timeSec = QString("%1").arg(((ticks / CPU::FREQUENCY) % 60), 2, 10, QChar('0'));
|
|
| 389 |
+ QString timeMin = QString("%1").arg(((ticks / (60 * CPU::FREQUENCY)) % 60), 2, 10, QChar('0'));
|
|
| 390 |
+ QString timeHour = QString("%1").arg(((ticks / (60 * CPU::FREQUENCY) / 60)), 2, 10, QChar('0'));
|
|
| 391 |
+ |
|
| 392 |
+ this->ui->emuTimeValueLabel->setText(QString("%1:%2:%3.%4").arg(timeHour, timeMin, timeSec, timeMs));
|
|
| 393 |
+ |
|
| 394 |
+ const CPU::Reg ® = this->cpu.getReg(); |
|
| 395 |
+ |
|
| 396 |
+ this->ui->regAValueHexLabel->setText(QString("%1").arg(reg.a, 2, 16, QChar('0')));
|
|
| 397 |
+ this->ui->regAValueDecLabel->setText(QString("%1").arg(reg.a));
|
|
| 398 |
+ this->ui->regAValueBinLabel->setText(QString("%1").arg(reg.a, 8, 2, QChar('0')));
|
|
| 399 |
+ |
|
| 400 |
+ this->ui->regBValueHexLabel->setText(QString("%1").arg(reg.b, 2, 16, QChar('0')));
|
|
| 401 |
+ this->ui->regBValueDecLabel->setText(QString("%1").arg(reg.b));
|
|
| 402 |
+ this->ui->regBValueBinLabel->setText(QString("%1").arg(reg.b, 8, 2, QChar('0')));
|
|
| 403 |
+ |
|
| 404 |
+ this->ui->regXValueHexLabel->setText(QString("%1").arg(reg.x, 2, 16, QChar('0')));
|
|
| 405 |
+ this->ui->regXValueDecLabel->setText(QString("%1").arg(reg.x));
|
|
| 406 |
+ this->ui->regXValueBinLabel->setText(QString("%1").arg(reg.x, 8, 2, QChar('0')));
|
|
| 407 |
+ |
|
| 408 |
+ this->ui->regYValueHexLabel->setText(QString("%1").arg(reg.y, 2, 16, QChar('0')));
|
|
| 409 |
+ this->ui->regYValueDecLabel->setText(QString("%1").arg(reg.y));
|
|
| 410 |
+ this->ui->regYValueBinLabel->setText(QString("%1").arg(reg.y, 8, 2, QChar('0')));
|
|
| 411 |
+ |
|
| 412 |
+ this->ui->regINValueHexLabel->setText(QString("%1").arg(reg.in, 2, 16, QChar('0')));
|
|
| 413 |
+ this->ui->regINValueDecLabel->setText(QString("%1").arg(reg.in));
|
|
| 414 |
+ this->ui->regINValueBinLabel->setText(QString("%1").arg(reg.in, 8, 2, QChar('0')));
|
|
| 415 |
+ |
|
| 416 |
+ this->ui->regOUTValueHexLabel->setText(QString("%1").arg(reg.out, 2, 16, QChar('0')));
|
|
| 417 |
+ this->ui->regOUTValueDecLabel->setText(QString("%1").arg(reg.out));
|
|
| 418 |
+ this->ui->regOUTValueBinLabel->setText(QString("%1").arg(reg.out, 8, 2, QChar('0')));
|
|
| 419 |
+ |
|
| 420 |
+ this->ui->regIValueHexLabel->setText(QString("%1").arg(reg.i, 2, 16, QChar('0')));
|
|
| 421 |
+ this->ui->regIValueBinLabel->setText(QString("%1").arg(reg.i, 8, 2, QChar('0')));
|
|
| 422 |
+ |
|
| 423 |
+ this->ui->regPCHValueLabel->setText(QString("%1").arg(reg.pch, 2, 16, QChar('0')));
|
|
| 424 |
+ this->ui->regPCLValueLabel->setText(QString("%1").arg(reg.pcl, 2, 16, QChar('0')));
|
|
| 425 |
+ |
|
| 426 |
+ this->ui->regCValueLabel->setText(reg.c ? QString("1") : QString("0"));
|
|
| 427 |
+ this->ui->regZValueLabel->setText(reg.z ? QString("1") : QString("0"));
|
|
| 428 |
+ |
|
| 429 |
+ this->ui->regSPHValueLabel->setText(QString("%1").arg(reg.sph, 2, 16, QChar('0')));
|
|
| 430 |
+ this->ui->regSPLValueLabel->setText(QString("%1").arg(reg.spl, 2, 16, QChar('0')));
|
|
| 431 |
+ this->ui->regSPLMaxValueLabel->setText(QString("%1").arg(reg.maxSpl, 2, 16, QChar('0')));
|
|
| 432 |
+ |
|
| 433 |
+ this->romSetPage(this->romPage); |
|
| 434 |
+ this->ramSetPage(this->ramPage); |
|
| 435 |
+} |
|
| 436 |
+ |
|
| 437 |
+/** |
|
| 438 |
+ * Update status of run LED |
|
| 439 |
+ * |
|
| 440 |
+ * @param enable LED enable |
|
| 441 |
+ */ |
|
| 442 |
+void Emu::updateLEDRunSlot(bool enable) |
|
| 443 |
+{
|
|
| 444 |
+ this->ui->ledRunValueLabel->setText(enable ? "ON" : ""); |
|
| 445 |
+ this->ui->ledRunValueLabel->setStyleSheet(enable ? "QLabel { color : blue; }" : "");
|
|
| 446 |
+} |
|
| 447 |
+ |
|
| 448 |
+/** |
|
| 449 |
+ * Update status of error LED |
|
| 450 |
+ * |
|
| 451 |
+ * @param enable LED enable |
|
| 452 |
+ */ |
|
| 453 |
+void Emu::updateLEDErrorSlot(bool enable) |
|
| 454 |
+{
|
|
| 455 |
+ this->ui->ledErrorValueLabel->setText(enable ? "ON" : ""); |
|
| 456 |
+ this->ui->ledErrorValueLabel->setStyleSheet(enable ? "QLabel { color : red; }" : "");
|
|
| 457 |
+} |
|
| 458 |
+ |
|
| 459 |
+/** |
|
| 460 |
+ * Update status of transmited data via RS232 |
|
| 461 |
+ * |
|
| 462 |
+ * @param c Transmited char |
|
| 463 |
+ */ |
|
| 464 |
+void Emu::updateRS232TxSlot(unsigned char c) |
|
| 465 |
+{
|
|
| 466 |
+ this->ui->rs232TxText->moveCursor(QTextCursor::End); |
|
| 467 |
+ |
|
| 468 |
+ if(c != 0) |
|
| 469 |
+ {
|
|
| 470 |
+ this->ui->rs232TxText->insertPlainText(QString(c)); |
|
| 471 |
+ } |
|
| 472 |
+ else |
|
| 473 |
+ {
|
|
| 474 |
+ this->ui->rs232TxText->insertPlainText("\n");
|
|
| 475 |
+ } |
|
| 476 |
+ |
|
| 477 |
+ QScrollBar *scrollBar = this->ui->rs232TxText->verticalScrollBar(); |
|
| 478 |
+ |
|
| 479 |
+ scrollBar->setValue(scrollBar->maximum()); |
|
| 480 |
+} |
|
| 481 |
+ |
|
| 482 |
+/** |
|
| 483 |
+ * Update status of received data via RS232 |
|
| 484 |
+ * |
|
| 485 |
+ * @param c Received char |
|
| 486 |
+ */ |
|
| 487 |
+void Emu::updateRS232RxSlot(unsigned char c) |
|
| 488 |
+{
|
|
| 489 |
+ this->ui->rs232RxText->moveCursor(QTextCursor::End); |
|
| 490 |
+ |
|
| 491 |
+ if(c != 0) |
|
| 492 |
+ {
|
|
| 493 |
+ this->ui->rs232RxText->insertPlainText(QString(c)); |
|
| 494 |
+ } |
|
| 495 |
+ else |
|
| 496 |
+ {
|
|
| 497 |
+ this->ui->rs232RxText->insertPlainText("\n");
|
|
| 498 |
+ } |
|
| 499 |
+ |
|
| 500 |
+ QScrollBar *scrollBar = this->ui->rs232RxText->verticalScrollBar(); |
|
| 501 |
+ |
|
| 502 |
+ scrollBar->setValue(scrollBar->maximum()); |
|
| 503 |
+} |
|
| 504 |
+ |
|
| 505 |
+/** |
|
| 506 |
+ * Update status of date and time |
|
| 507 |
+ * |
|
| 508 |
+ * @param dateTime Date and time |
|
| 509 |
+ */ |
|
| 510 |
+void Emu::updateRTCDateTimeSlot(const QDateTime &dateTime) |
|
| 511 |
+{
|
|
| 512 |
+ this->ui->rtcValueLabel->setText(dateTime.toString("yyyy.MM.dd hh:mm:ss"));
|
|
| 513 |
+} |
|
| 514 |
+ |
|
| 515 |
+/** |
|
| 516 |
+ * Update status of the speaker buffer usage |
|
| 517 |
+ * |
|
| 518 |
+ * @param bufferUsed Buffer usage |
|
| 519 |
+ */ |
|
| 520 |
+void Emu::updateSpeakerStatusSlot(int bufferUsed) |
|
| 521 |
+{
|
|
| 522 |
+ this->ui->speakerBufferValueLabel->setText(QString("%1").arg(bufferUsed));
|
|
| 523 |
+} |
|
| 524 |
+ |
|
| 525 |
+//! Process first uROM open event |
|
| 526 |
+void Emu::on_fileUrom0OpenButton_clicked() |
|
| 527 |
+{
|
|
| 528 |
+ QString path = QFileDialog::getOpenFileName(this, "", "", "UROM 0 (*.bin)"); |
|
| 529 |
+ |
|
| 530 |
+ if(!path.isEmpty()) |
|
| 531 |
+ {
|
|
| 532 |
+ CPU::Memory urom0; |
|
| 533 |
+ |
|
| 534 |
+ if(this->loadMemoryFile(path, urom0)) |
|
| 535 |
+ {
|
|
| 536 |
+ this->ui->fileUrom0PathLabel->setText(path); |
|
| 537 |
+ |
|
| 538 |
+ this->cpu.setUrom0(urom0); |
|
| 539 |
+ } |
|
| 540 |
+ else |
|
| 541 |
+ {
|
|
| 542 |
+ this->ui->fileUrom0PathLabel->setText("");
|
|
| 543 |
+ } |
|
| 544 |
+ |
|
| 545 |
+ this->update(); |
|
| 546 |
+ } |
|
| 547 |
+} |
|
| 548 |
+ |
|
| 549 |
+//! Process second uROM open event |
|
| 550 |
+void Emu::on_fileUrom1OpenButton_clicked() |
|
| 551 |
+{
|
|
| 552 |
+ QString path = QFileDialog::getOpenFileName(this, "", "", "UROM 1 (*.bin)"); |
|
| 553 |
+ |
|
| 554 |
+ if(!path.isEmpty()) |
|
| 555 |
+ {
|
|
| 556 |
+ CPU::Memory urom1; |
|
| 557 |
+ |
|
| 558 |
+ if(this->loadMemoryFile(path, urom1)) |
|
| 559 |
+ {
|
|
| 560 |
+ this->ui->fileUrom1PathLabel->setText(path); |
|
| 561 |
+ |
|
| 562 |
+ this->cpu.setUrom1(urom1); |
|
| 563 |
+ } |
|
| 564 |
+ else |
|
| 565 |
+ {
|
|
| 566 |
+ this->ui->fileUrom1PathLabel->setText("");
|
|
| 567 |
+ } |
|
| 568 |
+ |
|
| 569 |
+ this->update(); |
|
| 570 |
+ } |
|
| 571 |
+} |
|
| 572 |
+ |
|
| 573 |
+//! Process ROM open event |
|
| 574 |
+void Emu::on_fileRomOpenButton_clicked() |
|
| 575 |
+{
|
|
| 576 |
+ QString path = QFileDialog::getOpenFileName(this, "", "", "ROM (*.bin)"); |
|
| 577 |
+ |
|
| 578 |
+ if(!path.isEmpty()) |
|
| 579 |
+ {
|
|
| 580 |
+ CPU::Memory rom; |
|
| 581 |
+ |
|
| 582 |
+ if(this->loadMemoryFile(path, rom)) |
|
| 583 |
+ {
|
|
| 584 |
+ this->ui->fileRomPathLabel->setText(path); |
|
| 585 |
+ |
|
| 586 |
+ this->cpu.setRom(rom); |
|
| 587 |
+ } |
|
| 588 |
+ else |
|
| 589 |
+ {
|
|
| 590 |
+ this->ui->fileRomPathLabel->setText("");
|
|
| 591 |
+ } |
|
| 592 |
+ |
|
| 593 |
+ this->update(); |
|
| 594 |
+ } |
|
| 595 |
+} |
|
| 596 |
+ |
|
| 597 |
+//! Process file system open event |
|
| 598 |
+void Emu::on_fileFSDirOpenButton_clicked() |
|
| 599 |
+{
|
|
| 600 |
+ QString path = QFileDialog::getExistingDirectory(this, "", ""); |
|
| 601 |
+ |
|
| 602 |
+ if(!path.isEmpty()) |
|
| 603 |
+ {
|
|
| 604 |
+ this->ui->fileFSDirPathLabel->setText(path); |
|
| 605 |
+ |
|
| 606 |
+ this->io.fsSetPath(path); |
|
| 607 |
+ |
|
| 608 |
+ this->update(); |
|
| 609 |
+ } |
|
| 610 |
+} |
|
| 611 |
+ |
|
| 612 |
+//! Process first uROM reload event |
|
| 613 |
+void Emu::on_fileUrom0ReloadButton_clicked() |
|
| 614 |
+{
|
|
| 615 |
+ CPU::Memory urom0; |
|
| 616 |
+ |
|
| 617 |
+ if(this->loadMemoryFile(this->ui->fileUrom0PathLabel->text(), urom0)) |
|
| 618 |
+ {
|
|
| 619 |
+ this->cpu.setUrom0(urom0); |
|
| 620 |
+ } |
|
| 621 |
+ else |
|
| 622 |
+ {
|
|
| 623 |
+ this->ui->fileUrom0PathLabel->setText("");
|
|
| 624 |
+ } |
|
| 625 |
+ |
|
| 626 |
+ this->update(); |
|
| 627 |
+} |
|
| 628 |
+ |
|
| 629 |
+//! Process second uROM reload event |
|
| 630 |
+void Emu::on_fileUrom1ReloadButton_clicked() |
|
| 631 |
+{
|
|
| 632 |
+ CPU::Memory urom1; |
|
| 633 |
+ |
|
| 634 |
+ if(this->loadMemoryFile(this->ui->fileUrom1PathLabel->text(), urom1)) |
|
| 635 |
+ {
|
|
| 636 |
+ this->cpu.setUrom1(urom1); |
|
| 637 |
+ } |
|
| 638 |
+ else |
|
| 639 |
+ {
|
|
| 640 |
+ this->ui->fileUrom1PathLabel->setText("");
|
|
| 641 |
+ } |
|
| 642 |
+ |
|
| 643 |
+ this->update(); |
|
| 644 |
+} |
|
| 645 |
+ |
|
| 646 |
+//! Process ROM reload event |
|
| 647 |
+void Emu::on_fileRomReloadButton_clicked() |
|
| 648 |
+{
|
|
| 649 |
+ CPU::Memory rom; |
|
| 650 |
+ |
|
| 651 |
+ if(this->loadMemoryFile(this->ui->fileRomPathLabel->text(), rom)) |
|
| 652 |
+ {
|
|
| 653 |
+ this->cpu.setRom(rom); |
|
| 654 |
+ } |
|
| 655 |
+ else |
|
| 656 |
+ {
|
|
| 657 |
+ this->ui->fileRomPathLabel->setText("");
|
|
| 658 |
+ } |
|
| 659 |
+ |
|
| 660 |
+ this->update(); |
|
| 661 |
+} |
|
| 662 |
+ |
|
| 663 |
+//! Process run emulation event |
|
| 664 |
+void Emu::on_emuControlRunButton_clicked() |
|
| 665 |
+{
|
|
| 666 |
+ this->started = true; |
|
| 667 |
+ this->running = true; |
|
| 668 |
+ |
|
| 669 |
+ this->update(); |
|
| 670 |
+ |
|
| 671 |
+ this->cpu.run(); |
|
| 672 |
+} |
|
| 673 |
+ |
|
| 674 |
+//! Process a make step emulation event |
|
| 675 |
+void Emu::on_emuControlStepButton_clicked() |
|
| 676 |
+{
|
|
| 677 |
+ this->started = true; |
|
| 678 |
+ |
|
| 679 |
+ this->update(); |
|
| 680 |
+ |
|
| 681 |
+ this->cpu.step(); |
|
| 682 |
+} |
|
| 683 |
+ |
|
| 684 |
+//! Process pause emulation event |
|
| 685 |
+void Emu::on_emuControlPauseButton_clicked() |
|
| 686 |
+{
|
|
| 687 |
+ this->running = false; |
|
| 688 |
+ |
|
| 689 |
+ this->update(); |
|
| 690 |
+ |
|
| 691 |
+ this->cpu.pause(); |
|
| 692 |
+} |
|
| 693 |
+ |
|
| 694 |
+//! Process stop emulation event |
|
| 695 |
+void Emu::on_emuControlStopButton_clicked() |
|
| 696 |
+{
|
|
| 697 |
+ this->started = false; |
|
| 698 |
+ this->running = false; |
|
| 699 |
+ |
|
| 700 |
+ this->cpu.stop(); |
|
| 701 |
+ this->io.reset(); |
|
| 702 |
+ |
|
| 703 |
+ this->reset(); |
|
| 704 |
+ this->update(); |
|
| 705 |
+} |
|
| 706 |
+ |
|
| 707 |
+/** |
|
| 708 |
+ * Process set volume level event |
|
| 709 |
+ * |
|
| 710 |
+ * @param value Volume level |
|
| 711 |
+ */ |
|
| 712 |
+void Emu::on_speakerVolumeSlider_valueChanged(int value) |
|
| 713 |
+{
|
|
| 714 |
+ this->io.speakerSetVolume(static_cast<unsigned int>(value)); |
|
| 715 |
+ |
|
| 716 |
+ this->ui->speakerVolumeValueLabel->setText(QString("%1%").arg(value));
|
|
| 717 |
+} |
|
| 718 |
+ |
|
| 719 |
+//! Process set current time event |
|
| 720 |
+void Emu::on_rtcSetCurrentButton_clicked() |
|
| 721 |
+{
|
|
| 722 |
+ QDateTime dateTime = QDateTime::currentDateTime(); |
|
| 723 |
+ |
|
| 724 |
+ this->io.rtcSetDateTime(dateTime); |
|
| 725 |
+} |
|
| 726 |
+ |
|
| 727 |
+//! Process go to the OS section for ROM event |
|
| 728 |
+void Emu::on_romGoToOSButton_clicked() |
|
| 729 |
+{
|
|
| 730 |
+ this->romSetPage(CPU::ROM_OS_ADDRESS / CPU::MEMORY_PAGE_SIZE); |
|
| 731 |
+} |
|
| 732 |
+ |
|
| 733 |
+//! Process go to the application section for ROM event |
|
| 734 |
+void Emu::on_romGoToAppButton_clicked() |
|
| 735 |
+{
|
|
| 736 |
+ this->romSetPage(CPU::ROM_APP_ADDRESS / CPU::MEMORY_PAGE_SIZE); |
|
| 737 |
+} |
|
| 738 |
+ |
|
| 739 |
+//! Process go to the previous page for ROM event |
|
| 740 |
+void Emu::on_romMinusButton_clicked() |
|
| 741 |
+{
|
|
| 742 |
+ this->romSetPage(this->romPage - 1); |
|
| 743 |
+} |
|
| 744 |
+ |
|
| 745 |
+//! Process go to the next page for ROM event |
|
| 746 |
+void Emu::on_romPlusButton_clicked() |
|
| 747 |
+{
|
|
| 748 |
+ this->romSetPage(this->romPage + 1); |
|
| 749 |
+} |
|
| 750 |
+ |
|
| 751 |
+//! Process go to the OS section for RAM event |
|
| 752 |
+void Emu::on_ramGoToOSButton_clicked() |
|
| 753 |
+{
|
|
| 754 |
+ this->ramSetPage(CPU::RAM_OS_ADDRESS / CPU::MEMORY_PAGE_SIZE); |
|
| 755 |
+} |
|
| 756 |
+ |
|
| 757 |
+//! Process go to the Stack section for RAM event |
|
| 758 |
+void Emu::on_ramGoToSPButton_clicked() |
|
| 759 |
+{
|
|
| 760 |
+ this->ramSetPage(CPU::RAM_SP_ADDRESS / CPU::MEMORY_PAGE_SIZE); |
|
| 761 |
+} |
|
| 762 |
+ |
|
| 763 |
+//! Process go to the application section for RAM event |
|
| 764 |
+void Emu::on_ramGoToAppButton_clicked() |
|
| 765 |
+{
|
|
| 766 |
+ this->ramSetPage(CPU::RAM_APP_ADDRESS / CPU::MEMORY_PAGE_SIZE); |
|
| 767 |
+} |
|
| 768 |
+ |
|
| 769 |
+//! Process go to the previous page for RAM event |
|
| 770 |
+void Emu::on_ramMinusButton_clicked() |
|
| 771 |
+{
|
|
| 772 |
+ this->ramSetPage(this->ramPage - 1); |
|
| 773 |
+} |
|
| 774 |
+ |
|
| 775 |
+//! Process go to the next page for RAM event |
|
| 776 |
+void Emu::on_ramPlusButton_clicked() |
|
| 777 |
+{
|
|
| 778 |
+ this->ramSetPage(this->ramPage + 1); |
|
| 779 |
+} |
|
| 780 |
+ |
|
| 781 |
+//! Process send the transmit buffer data via RS232 event |
|
| 782 |
+void Emu::on_rs232RxSendButton_clicked() |
|
| 783 |
+{
|
|
| 784 |
+ QString text = this->ui->rs232RxEdit->text(); |
|
| 785 |
+ |
|
| 786 |
+ this->ui->rs232RxEdit->clear(); |
|
| 787 |
+ |
|
| 788 |
+ this->io.rs232Receive(text); |
|
| 789 |
+} |
| 0 | 790 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,116 @@ |
| 1 |
+/* |
|
| 2 |
+ * Author: Pawel Jablonski |
|
| 3 |
+ * E-mail: pj@xirx.net |
|
| 4 |
+ * WWW: xirx.net |
|
| 5 |
+ * GIT: git.xirx.net |
|
| 6 |
+ * |
|
| 7 |
+ * License: You can use this code however you like |
|
| 8 |
+ * but leave information about the original author. |
|
| 9 |
+ * Code is free for non-commercial and commercial use. |
|
| 10 |
+ */ |
|
| 11 |
+ |
|
| 12 |
+#ifndef EMU_H |
|
| 13 |
+#define EMU_H |
|
| 14 |
+ |
|
| 15 |
+#include <QMainWindow> |
|
| 16 |
+#include <QFileDialog> |
|
| 17 |
+#include <QFile> |
|
| 18 |
+#include <QMessageBox> |
|
| 19 |
+#include <QMouseEvent> |
|
| 20 |
+#include <QKeyEvent> |
|
| 21 |
+#include <QScrollBar> |
|
| 22 |
+ |
|
| 23 |
+#include "cpu.h" |
|
| 24 |
+#include "io.h" |
|
| 25 |
+ |
|
| 26 |
+//! User Interface namespace |
|
| 27 |
+namespace Ui |
|
| 28 |
+{
|
|
| 29 |
+ class Emu; //!< Form class for the emulator window |
|
| 30 |
+} |
|
| 31 |
+ |
|
| 32 |
+class Emu : public QMainWindow |
|
| 33 |
+{
|
|
| 34 |
+ Q_OBJECT |
|
| 35 |
+ |
|
| 36 |
+ public: |
|
| 37 |
+ Emu(QWidget *parent = nullptr); |
|
| 38 |
+ ~Emu() override; |
|
| 39 |
+ |
|
| 40 |
+ Emu(const Emu &) = delete; |
|
| 41 |
+ Emu &operator=(const Emu &) = delete; |
|
| 42 |
+ Emu(Emu &&) = delete; |
|
| 43 |
+ Emu &operator=(Emu &&) = delete; |
|
| 44 |
+ |
|
| 45 |
+ private: |
|
| 46 |
+ void reset(); |
|
| 47 |
+ void update(); |
|
| 48 |
+ |
|
| 49 |
+ bool loadMemoryFile(const QString &path, CPU::Memory &memory); |
|
| 50 |
+ |
|
| 51 |
+ void romSetPage(int page); |
|
| 52 |
+ void ramSetPage(int page); |
|
| 53 |
+ |
|
| 54 |
+ void mousePressEvent(QMouseEvent *event) override; |
|
| 55 |
+ bool focusNextPrevChild(bool next) override; |
|
| 56 |
+ |
|
| 57 |
+ void keyPressEvent(QKeyEvent *event) override; |
|
| 58 |
+ |
|
| 59 |
+ Ui::Emu *ui; //!< Form for the emulator window |
|
| 60 |
+ |
|
| 61 |
+ bool loaded; //!< Status of loading all necessary files for emulation |
|
| 62 |
+ bool started; //!< Status of started the emulation process. It is "1" when the start button was clicked. |
|
| 63 |
+ bool running; //!< Status of running the emulation process. It is "1" when the emulation is active executing. |
|
| 64 |
+ |
|
| 65 |
+ CPU cpu; //!< CPU instance for emulating the processor |
|
| 66 |
+ IO io; //!< IO instance for emulating the motherboard |
|
| 67 |
+ |
|
| 68 |
+ int romPage; //!< Number of the ROM page to show |
|
| 69 |
+ int ramPage; //!< Number of the RAM page to show |
|
| 70 |
+ |
|
| 71 |
+ private slots: |
|
| 72 |
+ void updateSlot(); |
|
| 73 |
+ |
|
| 74 |
+ void updateLEDRunSlot(bool enable); |
|
| 75 |
+ void updateLEDErrorSlot(bool enable); |
|
| 76 |
+ |
|
| 77 |
+ void updateRS232TxSlot(unsigned char c); |
|
| 78 |
+ void updateRS232RxSlot(unsigned char c); |
|
| 79 |
+ |
|
| 80 |
+ void updateRTCDateTimeSlot(const QDateTime &dateTime); |
|
| 81 |
+ |
|
| 82 |
+ void updateSpeakerStatusSlot(int bufferUsed); |
|
| 83 |
+ |
|
| 84 |
+ void on_fileUrom0OpenButton_clicked(); |
|
| 85 |
+ void on_fileUrom1OpenButton_clicked(); |
|
| 86 |
+ void on_fileRomOpenButton_clicked(); |
|
| 87 |
+ void on_fileFSDirOpenButton_clicked(); |
|
| 88 |
+ |
|
| 89 |
+ void on_fileUrom0ReloadButton_clicked(); |
|
| 90 |
+ void on_fileUrom1ReloadButton_clicked(); |
|
| 91 |
+ void on_fileRomReloadButton_clicked(); |
|
| 92 |
+ |
|
| 93 |
+ void on_emuControlRunButton_clicked(); |
|
| 94 |
+ void on_emuControlStepButton_clicked(); |
|
| 95 |
+ void on_emuControlPauseButton_clicked(); |
|
| 96 |
+ void on_emuControlStopButton_clicked(); |
|
| 97 |
+ |
|
| 98 |
+ void on_speakerVolumeSlider_valueChanged(int value); |
|
| 99 |
+ |
|
| 100 |
+ void on_rtcSetCurrentButton_clicked(); |
|
| 101 |
+ |
|
| 102 |
+ void on_romGoToOSButton_clicked(); |
|
| 103 |
+ void on_romGoToAppButton_clicked(); |
|
| 104 |
+ void on_romMinusButton_clicked(); |
|
| 105 |
+ void on_romPlusButton_clicked(); |
|
| 106 |
+ |
|
| 107 |
+ void on_ramGoToOSButton_clicked(); |
|
| 108 |
+ void on_ramGoToSPButton_clicked(); |
|
| 109 |
+ void on_ramGoToAppButton_clicked(); |
|
| 110 |
+ void on_ramMinusButton_clicked(); |
|
| 111 |
+ void on_ramPlusButton_clicked(); |
|
| 112 |
+ |
|
| 113 |
+ void on_rs232RxSendButton_clicked(); |
|
| 114 |
+}; |
|
| 115 |
+ |
|
| 116 |
+#endif |
| 0 | 117 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,37 @@ |
| 1 |
+QT += core gui widgets multimedia |
|
| 2 |
+ |
|
| 3 |
+CONFIG += c++14 |
|
| 4 |
+ |
|
| 5 |
+DEFINES += QT_DEPRECATED_WARNINGS |
|
| 6 |
+CONFIG -= debug_and_release debug_and_release_target |
|
| 7 |
+ |
|
| 8 |
+SOURCES += \ |
|
| 9 |
+ cpu.cpp \ |
|
| 10 |
+ fs.cpp \ |
|
| 11 |
+ io.cpp \ |
|
| 12 |
+ keyboard.cpp \ |
|
| 13 |
+ lcd.cpp \ |
|
| 14 |
+ lcdview.cpp \ |
|
| 15 |
+ led.cpp \ |
|
| 16 |
+ main.cpp \ |
|
| 17 |
+ emu.cpp \ |
|
| 18 |
+ rs232.cpp \ |
|
| 19 |
+ rtc.cpp \ |
|
| 20 |
+ speaker.cpp |
|
| 21 |
+ |
|
| 22 |
+HEADERS += \ |
|
| 23 |
+ cpu.h \ |
|
| 24 |
+ emu.h \ |
|
| 25 |
+ font.h \ |
|
| 26 |
+ fs.h \ |
|
| 27 |
+ io.h \ |
|
| 28 |
+ keyboard.h \ |
|
| 29 |
+ lcd.h \ |
|
| 30 |
+ lcdview.h \ |
|
| 31 |
+ led.h \ |
|
| 32 |
+ rs232.h \ |
|
| 33 |
+ rtc.h \ |
|
| 34 |
+ speaker.h |
|
| 35 |
+ |
|
| 36 |
+FORMS += \ |
|
| 37 |
+ emu.ui |
| 0 | 38 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,1817 @@ |
| 1 |
+<?xml version="1.0" encoding="UTF-8"?> |
|
| 2 |
+<ui version="4.0"> |
|
| 3 |
+ <class>Emu</class> |
|
| 4 |
+ <widget class="QMainWindow" name="Emu"> |
|
| 5 |
+ <property name="geometry"> |
|
| 6 |
+ <rect> |
|
| 7 |
+ <x>0</x> |
|
| 8 |
+ <y>0</y> |
|
| 9 |
+ <width>1410</width> |
|
| 10 |
+ <height>850</height> |
|
| 11 |
+ </rect> |
|
| 12 |
+ </property> |
|
| 13 |
+ <property name="minimumSize"> |
|
| 14 |
+ <size> |
|
| 15 |
+ <width>1410</width> |
|
| 16 |
+ <height>850</height> |
|
| 17 |
+ </size> |
|
| 18 |
+ </property> |
|
| 19 |
+ <property name="maximumSize"> |
|
| 20 |
+ <size> |
|
| 21 |
+ <width>1410</width> |
|
| 22 |
+ <height>850</height> |
|
| 23 |
+ </size> |
|
| 24 |
+ </property> |
|
| 25 |
+ <property name="font"> |
|
| 26 |
+ <font> |
|
| 27 |
+ <family>DejaVu Sans Mono</family> |
|
| 28 |
+ <pointsize>8</pointsize> |
|
| 29 |
+ <weight>75</weight> |
|
| 30 |
+ <bold>true</bold> |
|
| 31 |
+ </font> |
|
| 32 |
+ </property> |
|
| 33 |
+ <property name="windowTitle"> |
|
| 34 |
+ <string>XiPU Emulator</string> |
|
| 35 |
+ </property> |
|
| 36 |
+ <property name="locale"> |
|
| 37 |
+ <locale language="English" country="UnitedStates"/> |
|
| 38 |
+ </property> |
|
| 39 |
+ <widget class="QWidget" name="centralwidget"> |
|
| 40 |
+ <widget class="LCDView" name="lcdBufferView"> |
|
| 41 |
+ <property name="geometry"> |
|
| 42 |
+ <rect> |
|
| 43 |
+ <x>10</x> |
|
| 44 |
+ <y>30</y> |
|
| 45 |
+ <width>690</width> |
|
| 46 |
+ <height>530</height> |
|
| 47 |
+ </rect> |
|
| 48 |
+ </property> |
|
| 49 |
+ </widget> |
|
| 50 |
+ <widget class="QLabel" name="regAValueHexLabel"> |
|
| 51 |
+ <property name="geometry"> |
|
| 52 |
+ <rect> |
|
| 53 |
+ <x>770</x> |
|
| 54 |
+ <y>180</y> |
|
| 55 |
+ <width>30</width> |
|
| 56 |
+ <height>20</height> |
|
| 57 |
+ </rect> |
|
| 58 |
+ </property> |
|
| 59 |
+ <property name="frameShape"> |
|
| 60 |
+ <enum>QFrame::Box</enum> |
|
| 61 |
+ </property> |
|
| 62 |
+ <property name="text"> |
|
| 63 |
+ <string>FF</string> |
|
| 64 |
+ </property> |
|
| 65 |
+ <property name="alignment"> |
|
| 66 |
+ <set>Qt::AlignCenter</set> |
|
| 67 |
+ </property> |
|
| 68 |
+ </widget> |
|
| 69 |
+ <widget class="QLabel" name="regALabel"> |
|
| 70 |
+ <property name="geometry"> |
|
| 71 |
+ <rect> |
|
| 72 |
+ <x>710</x> |
|
| 73 |
+ <y>180</y> |
|
| 74 |
+ <width>50</width> |
|
| 75 |
+ <height>20</height> |
|
| 76 |
+ </rect> |
|
| 77 |
+ </property> |
|
| 78 |
+ <property name="text"> |
|
| 79 |
+ <string>A</string> |
|
| 80 |
+ </property> |
|
| 81 |
+ <property name="alignment"> |
|
| 82 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 83 |
+ </property> |
|
| 84 |
+ </widget> |
|
| 85 |
+ <widget class="QLabel" name="regAValueDecLabel"> |
|
| 86 |
+ <property name="geometry"> |
|
| 87 |
+ <rect> |
|
| 88 |
+ <x>810</x> |
|
| 89 |
+ <y>180</y> |
|
| 90 |
+ <width>30</width> |
|
| 91 |
+ <height>20</height> |
|
| 92 |
+ </rect> |
|
| 93 |
+ </property> |
|
| 94 |
+ <property name="frameShape"> |
|
| 95 |
+ <enum>QFrame::Box</enum> |
|
| 96 |
+ </property> |
|
| 97 |
+ <property name="text"> |
|
| 98 |
+ <string>255</string> |
|
| 99 |
+ </property> |
|
| 100 |
+ <property name="alignment"> |
|
| 101 |
+ <set>Qt::AlignCenter</set> |
|
| 102 |
+ </property> |
|
| 103 |
+ </widget> |
|
| 104 |
+ <widget class="QLabel" name="regAValueBinLabel"> |
|
| 105 |
+ <property name="geometry"> |
|
| 106 |
+ <rect> |
|
| 107 |
+ <x>850</x> |
|
| 108 |
+ <y>180</y> |
|
| 109 |
+ <width>70</width> |
|
| 110 |
+ <height>20</height> |
|
| 111 |
+ </rect> |
|
| 112 |
+ </property> |
|
| 113 |
+ <property name="frameShape"> |
|
| 114 |
+ <enum>QFrame::Box</enum> |
|
| 115 |
+ </property> |
|
| 116 |
+ <property name="text"> |
|
| 117 |
+ <string>11111111</string> |
|
| 118 |
+ </property> |
|
| 119 |
+ <property name="alignment"> |
|
| 120 |
+ <set>Qt::AlignCenter</set> |
|
| 121 |
+ </property> |
|
| 122 |
+ </widget> |
|
| 123 |
+ <widget class="QLabel" name="regHexLabel"> |
|
| 124 |
+ <property name="geometry"> |
|
| 125 |
+ <rect> |
|
| 126 |
+ <x>770</x> |
|
| 127 |
+ <y>160</y> |
|
| 128 |
+ <width>30</width> |
|
| 129 |
+ <height>20</height> |
|
| 130 |
+ </rect> |
|
| 131 |
+ </property> |
|
| 132 |
+ <property name="text"> |
|
| 133 |
+ <string>HEX</string> |
|
| 134 |
+ </property> |
|
| 135 |
+ <property name="alignment"> |
|
| 136 |
+ <set>Qt::AlignCenter</set> |
|
| 137 |
+ </property> |
|
| 138 |
+ </widget> |
|
| 139 |
+ <widget class="QLabel" name="regDecLabel"> |
|
| 140 |
+ <property name="geometry"> |
|
| 141 |
+ <rect> |
|
| 142 |
+ <x>810</x> |
|
| 143 |
+ <y>160</y> |
|
| 144 |
+ <width>30</width> |
|
| 145 |
+ <height>20</height> |
|
| 146 |
+ </rect> |
|
| 147 |
+ </property> |
|
| 148 |
+ <property name="text"> |
|
| 149 |
+ <string>DEC</string> |
|
| 150 |
+ </property> |
|
| 151 |
+ <property name="alignment"> |
|
| 152 |
+ <set>Qt::AlignCenter</set> |
|
| 153 |
+ </property> |
|
| 154 |
+ </widget> |
|
| 155 |
+ <widget class="QLabel" name="regBinLabel"> |
|
| 156 |
+ <property name="geometry"> |
|
| 157 |
+ <rect> |
|
| 158 |
+ <x>850</x> |
|
| 159 |
+ <y>160</y> |
|
| 160 |
+ <width>70</width> |
|
| 161 |
+ <height>20</height> |
|
| 162 |
+ </rect> |
|
| 163 |
+ </property> |
|
| 164 |
+ <property name="text"> |
|
| 165 |
+ <string>BIN</string> |
|
| 166 |
+ </property> |
|
| 167 |
+ <property name="alignment"> |
|
| 168 |
+ <set>Qt::AlignCenter</set> |
|
| 169 |
+ </property> |
|
| 170 |
+ </widget> |
|
| 171 |
+ <widget class="QLabel" name="regBLabel"> |
|
| 172 |
+ <property name="geometry"> |
|
| 173 |
+ <rect> |
|
| 174 |
+ <x>710</x> |
|
| 175 |
+ <y>210</y> |
|
| 176 |
+ <width>50</width> |
|
| 177 |
+ <height>20</height> |
|
| 178 |
+ </rect> |
|
| 179 |
+ </property> |
|
| 180 |
+ <property name="text"> |
|
| 181 |
+ <string>B</string> |
|
| 182 |
+ </property> |
|
| 183 |
+ <property name="alignment"> |
|
| 184 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 185 |
+ </property> |
|
| 186 |
+ </widget> |
|
| 187 |
+ <widget class="QLabel" name="regBValueHexLabel"> |
|
| 188 |
+ <property name="geometry"> |
|
| 189 |
+ <rect> |
|
| 190 |
+ <x>770</x> |
|
| 191 |
+ <y>210</y> |
|
| 192 |
+ <width>30</width> |
|
| 193 |
+ <height>20</height> |
|
| 194 |
+ </rect> |
|
| 195 |
+ </property> |
|
| 196 |
+ <property name="frameShape"> |
|
| 197 |
+ <enum>QFrame::Box</enum> |
|
| 198 |
+ </property> |
|
| 199 |
+ <property name="text"> |
|
| 200 |
+ <string>FF</string> |
|
| 201 |
+ </property> |
|
| 202 |
+ <property name="alignment"> |
|
| 203 |
+ <set>Qt::AlignCenter</set> |
|
| 204 |
+ </property> |
|
| 205 |
+ </widget> |
|
| 206 |
+ <widget class="QLabel" name="regBValueDecLabel"> |
|
| 207 |
+ <property name="geometry"> |
|
| 208 |
+ <rect> |
|
| 209 |
+ <x>810</x> |
|
| 210 |
+ <y>210</y> |
|
| 211 |
+ <width>30</width> |
|
| 212 |
+ <height>20</height> |
|
| 213 |
+ </rect> |
|
| 214 |
+ </property> |
|
| 215 |
+ <property name="frameShape"> |
|
| 216 |
+ <enum>QFrame::Box</enum> |
|
| 217 |
+ </property> |
|
| 218 |
+ <property name="text"> |
|
| 219 |
+ <string>255</string> |
|
| 220 |
+ </property> |
|
| 221 |
+ <property name="alignment"> |
|
| 222 |
+ <set>Qt::AlignCenter</set> |
|
| 223 |
+ </property> |
|
| 224 |
+ </widget> |
|
| 225 |
+ <widget class="QLabel" name="regBValueBinLabel"> |
|
| 226 |
+ <property name="geometry"> |
|
| 227 |
+ <rect> |
|
| 228 |
+ <x>850</x> |
|
| 229 |
+ <y>210</y> |
|
| 230 |
+ <width>70</width> |
|
| 231 |
+ <height>20</height> |
|
| 232 |
+ </rect> |
|
| 233 |
+ </property> |
|
| 234 |
+ <property name="frameShape"> |
|
| 235 |
+ <enum>QFrame::Box</enum> |
|
| 236 |
+ </property> |
|
| 237 |
+ <property name="text"> |
|
| 238 |
+ <string>11111111</string> |
|
| 239 |
+ </property> |
|
| 240 |
+ <property name="alignment"> |
|
| 241 |
+ <set>Qt::AlignCenter</set> |
|
| 242 |
+ </property> |
|
| 243 |
+ </widget> |
|
| 244 |
+ <widget class="QLabel" name="regXLabel"> |
|
| 245 |
+ <property name="geometry"> |
|
| 246 |
+ <rect> |
|
| 247 |
+ <x>710</x> |
|
| 248 |
+ <y>240</y> |
|
| 249 |
+ <width>50</width> |
|
| 250 |
+ <height>20</height> |
|
| 251 |
+ </rect> |
|
| 252 |
+ </property> |
|
| 253 |
+ <property name="text"> |
|
| 254 |
+ <string>X</string> |
|
| 255 |
+ </property> |
|
| 256 |
+ <property name="alignment"> |
|
| 257 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 258 |
+ </property> |
|
| 259 |
+ </widget> |
|
| 260 |
+ <widget class="QLabel" name="regXValueHexLabel"> |
|
| 261 |
+ <property name="geometry"> |
|
| 262 |
+ <rect> |
|
| 263 |
+ <x>770</x> |
|
| 264 |
+ <y>240</y> |
|
| 265 |
+ <width>30</width> |
|
| 266 |
+ <height>20</height> |
|
| 267 |
+ </rect> |
|
| 268 |
+ </property> |
|
| 269 |
+ <property name="frameShape"> |
|
| 270 |
+ <enum>QFrame::Box</enum> |
|
| 271 |
+ </property> |
|
| 272 |
+ <property name="text"> |
|
| 273 |
+ <string>FF</string> |
|
| 274 |
+ </property> |
|
| 275 |
+ <property name="alignment"> |
|
| 276 |
+ <set>Qt::AlignCenter</set> |
|
| 277 |
+ </property> |
|
| 278 |
+ </widget> |
|
| 279 |
+ <widget class="QLabel" name="regXValueDecLabel"> |
|
| 280 |
+ <property name="geometry"> |
|
| 281 |
+ <rect> |
|
| 282 |
+ <x>810</x> |
|
| 283 |
+ <y>240</y> |
|
| 284 |
+ <width>30</width> |
|
| 285 |
+ <height>20</height> |
|
| 286 |
+ </rect> |
|
| 287 |
+ </property> |
|
| 288 |
+ <property name="frameShape"> |
|
| 289 |
+ <enum>QFrame::Box</enum> |
|
| 290 |
+ </property> |
|
| 291 |
+ <property name="text"> |
|
| 292 |
+ <string>255</string> |
|
| 293 |
+ </property> |
|
| 294 |
+ <property name="alignment"> |
|
| 295 |
+ <set>Qt::AlignCenter</set> |
|
| 296 |
+ </property> |
|
| 297 |
+ </widget> |
|
| 298 |
+ <widget class="QLabel" name="regXValueBinLabel"> |
|
| 299 |
+ <property name="geometry"> |
|
| 300 |
+ <rect> |
|
| 301 |
+ <x>850</x> |
|
| 302 |
+ <y>240</y> |
|
| 303 |
+ <width>70</width> |
|
| 304 |
+ <height>20</height> |
|
| 305 |
+ </rect> |
|
| 306 |
+ </property> |
|
| 307 |
+ <property name="frameShape"> |
|
| 308 |
+ <enum>QFrame::Box</enum> |
|
| 309 |
+ </property> |
|
| 310 |
+ <property name="text"> |
|
| 311 |
+ <string>11111111</string> |
|
| 312 |
+ </property> |
|
| 313 |
+ <property name="alignment"> |
|
| 314 |
+ <set>Qt::AlignCenter</set> |
|
| 315 |
+ </property> |
|
| 316 |
+ </widget> |
|
| 317 |
+ <widget class="QLabel" name="regYLabel"> |
|
| 318 |
+ <property name="geometry"> |
|
| 319 |
+ <rect> |
|
| 320 |
+ <x>710</x> |
|
| 321 |
+ <y>270</y> |
|
| 322 |
+ <width>50</width> |
|
| 323 |
+ <height>20</height> |
|
| 324 |
+ </rect> |
|
| 325 |
+ </property> |
|
| 326 |
+ <property name="text"> |
|
| 327 |
+ <string>Y</string> |
|
| 328 |
+ </property> |
|
| 329 |
+ <property name="alignment"> |
|
| 330 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 331 |
+ </property> |
|
| 332 |
+ </widget> |
|
| 333 |
+ <widget class="QLabel" name="regYValueHexLabel"> |
|
| 334 |
+ <property name="geometry"> |
|
| 335 |
+ <rect> |
|
| 336 |
+ <x>770</x> |
|
| 337 |
+ <y>270</y> |
|
| 338 |
+ <width>30</width> |
|
| 339 |
+ <height>20</height> |
|
| 340 |
+ </rect> |
|
| 341 |
+ </property> |
|
| 342 |
+ <property name="frameShape"> |
|
| 343 |
+ <enum>QFrame::Box</enum> |
|
| 344 |
+ </property> |
|
| 345 |
+ <property name="text"> |
|
| 346 |
+ <string>FF</string> |
|
| 347 |
+ </property> |
|
| 348 |
+ <property name="alignment"> |
|
| 349 |
+ <set>Qt::AlignCenter</set> |
|
| 350 |
+ </property> |
|
| 351 |
+ </widget> |
|
| 352 |
+ <widget class="QLabel" name="regYValueDecLabel"> |
|
| 353 |
+ <property name="geometry"> |
|
| 354 |
+ <rect> |
|
| 355 |
+ <x>810</x> |
|
| 356 |
+ <y>270</y> |
|
| 357 |
+ <width>30</width> |
|
| 358 |
+ <height>20</height> |
|
| 359 |
+ </rect> |
|
| 360 |
+ </property> |
|
| 361 |
+ <property name="frameShape"> |
|
| 362 |
+ <enum>QFrame::Box</enum> |
|
| 363 |
+ </property> |
|
| 364 |
+ <property name="text"> |
|
| 365 |
+ <string>255</string> |
|
| 366 |
+ </property> |
|
| 367 |
+ <property name="alignment"> |
|
| 368 |
+ <set>Qt::AlignCenter</set> |
|
| 369 |
+ </property> |
|
| 370 |
+ </widget> |
|
| 371 |
+ <widget class="QLabel" name="regYValueBinLabel"> |
|
| 372 |
+ <property name="geometry"> |
|
| 373 |
+ <rect> |
|
| 374 |
+ <x>850</x> |
|
| 375 |
+ <y>270</y> |
|
| 376 |
+ <width>70</width> |
|
| 377 |
+ <height>20</height> |
|
| 378 |
+ </rect> |
|
| 379 |
+ </property> |
|
| 380 |
+ <property name="frameShape"> |
|
| 381 |
+ <enum>QFrame::Box</enum> |
|
| 382 |
+ </property> |
|
| 383 |
+ <property name="text"> |
|
| 384 |
+ <string>11111111</string> |
|
| 385 |
+ </property> |
|
| 386 |
+ <property name="alignment"> |
|
| 387 |
+ <set>Qt::AlignCenter</set> |
|
| 388 |
+ </property> |
|
| 389 |
+ </widget> |
|
| 390 |
+ <widget class="QLabel" name="regINLabel"> |
|
| 391 |
+ <property name="geometry"> |
|
| 392 |
+ <rect> |
|
| 393 |
+ <x>710</x> |
|
| 394 |
+ <y>300</y> |
|
| 395 |
+ <width>50</width> |
|
| 396 |
+ <height>20</height> |
|
| 397 |
+ </rect> |
|
| 398 |
+ </property> |
|
| 399 |
+ <property name="text"> |
|
| 400 |
+ <string>IN</string> |
|
| 401 |
+ </property> |
|
| 402 |
+ <property name="alignment"> |
|
| 403 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 404 |
+ </property> |
|
| 405 |
+ </widget> |
|
| 406 |
+ <widget class="QLabel" name="regINValueHexLabel"> |
|
| 407 |
+ <property name="geometry"> |
|
| 408 |
+ <rect> |
|
| 409 |
+ <x>770</x> |
|
| 410 |
+ <y>300</y> |
|
| 411 |
+ <width>30</width> |
|
| 412 |
+ <height>20</height> |
|
| 413 |
+ </rect> |
|
| 414 |
+ </property> |
|
| 415 |
+ <property name="frameShape"> |
|
| 416 |
+ <enum>QFrame::Box</enum> |
|
| 417 |
+ </property> |
|
| 418 |
+ <property name="text"> |
|
| 419 |
+ <string>FF</string> |
|
| 420 |
+ </property> |
|
| 421 |
+ <property name="alignment"> |
|
| 422 |
+ <set>Qt::AlignCenter</set> |
|
| 423 |
+ </property> |
|
| 424 |
+ </widget> |
|
| 425 |
+ <widget class="QLabel" name="regINValueDecLabel"> |
|
| 426 |
+ <property name="geometry"> |
|
| 427 |
+ <rect> |
|
| 428 |
+ <x>810</x> |
|
| 429 |
+ <y>300</y> |
|
| 430 |
+ <width>30</width> |
|
| 431 |
+ <height>20</height> |
|
| 432 |
+ </rect> |
|
| 433 |
+ </property> |
|
| 434 |
+ <property name="frameShape"> |
|
| 435 |
+ <enum>QFrame::Box</enum> |
|
| 436 |
+ </property> |
|
| 437 |
+ <property name="text"> |
|
| 438 |
+ <string>255</string> |
|
| 439 |
+ </property> |
|
| 440 |
+ <property name="alignment"> |
|
| 441 |
+ <set>Qt::AlignCenter</set> |
|
| 442 |
+ </property> |
|
| 443 |
+ </widget> |
|
| 444 |
+ <widget class="QLabel" name="regINValueBinLabel"> |
|
| 445 |
+ <property name="geometry"> |
|
| 446 |
+ <rect> |
|
| 447 |
+ <x>850</x> |
|
| 448 |
+ <y>300</y> |
|
| 449 |
+ <width>70</width> |
|
| 450 |
+ <height>20</height> |
|
| 451 |
+ </rect> |
|
| 452 |
+ </property> |
|
| 453 |
+ <property name="frameShape"> |
|
| 454 |
+ <enum>QFrame::Box</enum> |
|
| 455 |
+ </property> |
|
| 456 |
+ <property name="text"> |
|
| 457 |
+ <string>11111111</string> |
|
| 458 |
+ </property> |
|
| 459 |
+ <property name="alignment"> |
|
| 460 |
+ <set>Qt::AlignCenter</set> |
|
| 461 |
+ </property> |
|
| 462 |
+ </widget> |
|
| 463 |
+ <widget class="QLabel" name="regOUTLabel"> |
|
| 464 |
+ <property name="geometry"> |
|
| 465 |
+ <rect> |
|
| 466 |
+ <x>710</x> |
|
| 467 |
+ <y>330</y> |
|
| 468 |
+ <width>50</width> |
|
| 469 |
+ <height>20</height> |
|
| 470 |
+ </rect> |
|
| 471 |
+ </property> |
|
| 472 |
+ <property name="text"> |
|
| 473 |
+ <string>OUT</string> |
|
| 474 |
+ </property> |
|
| 475 |
+ <property name="alignment"> |
|
| 476 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 477 |
+ </property> |
|
| 478 |
+ </widget> |
|
| 479 |
+ <widget class="QLabel" name="regOUTValueHexLabel"> |
|
| 480 |
+ <property name="geometry"> |
|
| 481 |
+ <rect> |
|
| 482 |
+ <x>770</x> |
|
| 483 |
+ <y>330</y> |
|
| 484 |
+ <width>30</width> |
|
| 485 |
+ <height>20</height> |
|
| 486 |
+ </rect> |
|
| 487 |
+ </property> |
|
| 488 |
+ <property name="frameShape"> |
|
| 489 |
+ <enum>QFrame::Box</enum> |
|
| 490 |
+ </property> |
|
| 491 |
+ <property name="text"> |
|
| 492 |
+ <string>FF</string> |
|
| 493 |
+ </property> |
|
| 494 |
+ <property name="alignment"> |
|
| 495 |
+ <set>Qt::AlignCenter</set> |
|
| 496 |
+ </property> |
|
| 497 |
+ </widget> |
|
| 498 |
+ <widget class="QLabel" name="regOUTValueDecLabel"> |
|
| 499 |
+ <property name="geometry"> |
|
| 500 |
+ <rect> |
|
| 501 |
+ <x>810</x> |
|
| 502 |
+ <y>330</y> |
|
| 503 |
+ <width>30</width> |
|
| 504 |
+ <height>20</height> |
|
| 505 |
+ </rect> |
|
| 506 |
+ </property> |
|
| 507 |
+ <property name="frameShape"> |
|
| 508 |
+ <enum>QFrame::Box</enum> |
|
| 509 |
+ </property> |
|
| 510 |
+ <property name="text"> |
|
| 511 |
+ <string>255</string> |
|
| 512 |
+ </property> |
|
| 513 |
+ <property name="alignment"> |
|
| 514 |
+ <set>Qt::AlignCenter</set> |
|
| 515 |
+ </property> |
|
| 516 |
+ </widget> |
|
| 517 |
+ <widget class="QLabel" name="regOUTValueBinLabel"> |
|
| 518 |
+ <property name="geometry"> |
|
| 519 |
+ <rect> |
|
| 520 |
+ <x>850</x> |
|
| 521 |
+ <y>330</y> |
|
| 522 |
+ <width>70</width> |
|
| 523 |
+ <height>20</height> |
|
| 524 |
+ </rect> |
|
| 525 |
+ </property> |
|
| 526 |
+ <property name="frameShape"> |
|
| 527 |
+ <enum>QFrame::Box</enum> |
|
| 528 |
+ </property> |
|
| 529 |
+ <property name="text"> |
|
| 530 |
+ <string>11111111</string> |
|
| 531 |
+ </property> |
|
| 532 |
+ <property name="alignment"> |
|
| 533 |
+ <set>Qt::AlignCenter</set> |
|
| 534 |
+ </property> |
|
| 535 |
+ </widget> |
|
| 536 |
+ <widget class="QLabel" name="regPCHLabel"> |
|
| 537 |
+ <property name="geometry"> |
|
| 538 |
+ <rect> |
|
| 539 |
+ <x>920</x> |
|
| 540 |
+ <y>240</y> |
|
| 541 |
+ <width>50</width> |
|
| 542 |
+ <height>20</height> |
|
| 543 |
+ </rect> |
|
| 544 |
+ </property> |
|
| 545 |
+ <property name="text"> |
|
| 546 |
+ <string>PCH</string> |
|
| 547 |
+ </property> |
|
| 548 |
+ <property name="alignment"> |
|
| 549 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 550 |
+ </property> |
|
| 551 |
+ </widget> |
|
| 552 |
+ <widget class="QLabel" name="regPCHValueLabel"> |
|
| 553 |
+ <property name="geometry"> |
|
| 554 |
+ <rect> |
|
| 555 |
+ <x>980</x> |
|
| 556 |
+ <y>240</y> |
|
| 557 |
+ <width>30</width> |
|
| 558 |
+ <height>20</height> |
|
| 559 |
+ </rect> |
|
| 560 |
+ </property> |
|
| 561 |
+ <property name="frameShape"> |
|
| 562 |
+ <enum>QFrame::Box</enum> |
|
| 563 |
+ </property> |
|
| 564 |
+ <property name="text"> |
|
| 565 |
+ <string>FF</string> |
|
| 566 |
+ </property> |
|
| 567 |
+ <property name="alignment"> |
|
| 568 |
+ <set>Qt::AlignCenter</set> |
|
| 569 |
+ </property> |
|
| 570 |
+ </widget> |
|
| 571 |
+ <widget class="QLabel" name="regPCLLabel"> |
|
| 572 |
+ <property name="geometry"> |
|
| 573 |
+ <rect> |
|
| 574 |
+ <x>1010</x> |
|
| 575 |
+ <y>240</y> |
|
| 576 |
+ <width>40</width> |
|
| 577 |
+ <height>20</height> |
|
| 578 |
+ </rect> |
|
| 579 |
+ </property> |
|
| 580 |
+ <property name="text"> |
|
| 581 |
+ <string>PCL</string> |
|
| 582 |
+ </property> |
|
| 583 |
+ <property name="alignment"> |
|
| 584 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 585 |
+ </property> |
|
| 586 |
+ </widget> |
|
| 587 |
+ <widget class="QLabel" name="regPCLValueLabel"> |
|
| 588 |
+ <property name="geometry"> |
|
| 589 |
+ <rect> |
|
| 590 |
+ <x>1060</x> |
|
| 591 |
+ <y>240</y> |
|
| 592 |
+ <width>30</width> |
|
| 593 |
+ <height>20</height> |
|
| 594 |
+ </rect> |
|
| 595 |
+ </property> |
|
| 596 |
+ <property name="frameShape"> |
|
| 597 |
+ <enum>QFrame::Box</enum> |
|
| 598 |
+ </property> |
|
| 599 |
+ <property name="text"> |
|
| 600 |
+ <string>FF</string> |
|
| 601 |
+ </property> |
|
| 602 |
+ <property name="alignment"> |
|
| 603 |
+ <set>Qt::AlignCenter</set> |
|
| 604 |
+ </property> |
|
| 605 |
+ </widget> |
|
| 606 |
+ <widget class="QLabel" name="regSPHLabel"> |
|
| 607 |
+ <property name="geometry"> |
|
| 608 |
+ <rect> |
|
| 609 |
+ <x>920</x> |
|
| 610 |
+ <y>270</y> |
|
| 611 |
+ <width>50</width> |
|
| 612 |
+ <height>20</height> |
|
| 613 |
+ </rect> |
|
| 614 |
+ </property> |
|
| 615 |
+ <property name="text"> |
|
| 616 |
+ <string>SPH</string> |
|
| 617 |
+ </property> |
|
| 618 |
+ <property name="alignment"> |
|
| 619 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 620 |
+ </property> |
|
| 621 |
+ </widget> |
|
| 622 |
+ <widget class="QLabel" name="regSPHValueLabel"> |
|
| 623 |
+ <property name="geometry"> |
|
| 624 |
+ <rect> |
|
| 625 |
+ <x>980</x> |
|
| 626 |
+ <y>270</y> |
|
| 627 |
+ <width>30</width> |
|
| 628 |
+ <height>20</height> |
|
| 629 |
+ </rect> |
|
| 630 |
+ </property> |
|
| 631 |
+ <property name="frameShape"> |
|
| 632 |
+ <enum>QFrame::Box</enum> |
|
| 633 |
+ </property> |
|
| 634 |
+ <property name="text"> |
|
| 635 |
+ <string>0F</string> |
|
| 636 |
+ </property> |
|
| 637 |
+ <property name="alignment"> |
|
| 638 |
+ <set>Qt::AlignCenter</set> |
|
| 639 |
+ </property> |
|
| 640 |
+ </widget> |
|
| 641 |
+ <widget class="QLabel" name="regSPLLabel"> |
|
| 642 |
+ <property name="geometry"> |
|
| 643 |
+ <rect> |
|
| 644 |
+ <x>1010</x> |
|
| 645 |
+ <y>270</y> |
|
| 646 |
+ <width>40</width> |
|
| 647 |
+ <height>20</height> |
|
| 648 |
+ </rect> |
|
| 649 |
+ </property> |
|
| 650 |
+ <property name="text"> |
|
| 651 |
+ <string>SPL</string> |
|
| 652 |
+ </property> |
|
| 653 |
+ <property name="alignment"> |
|
| 654 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 655 |
+ </property> |
|
| 656 |
+ </widget> |
|
| 657 |
+ <widget class="QLabel" name="regSPLValueLabel"> |
|
| 658 |
+ <property name="geometry"> |
|
| 659 |
+ <rect> |
|
| 660 |
+ <x>1060</x> |
|
| 661 |
+ <y>270</y> |
|
| 662 |
+ <width>30</width> |
|
| 663 |
+ <height>20</height> |
|
| 664 |
+ </rect> |
|
| 665 |
+ </property> |
|
| 666 |
+ <property name="frameShape"> |
|
| 667 |
+ <enum>QFrame::Box</enum> |
|
| 668 |
+ </property> |
|
| 669 |
+ <property name="text"> |
|
| 670 |
+ <string>FF</string> |
|
| 671 |
+ </property> |
|
| 672 |
+ <property name="alignment"> |
|
| 673 |
+ <set>Qt::AlignCenter</set> |
|
| 674 |
+ </property> |
|
| 675 |
+ </widget> |
|
| 676 |
+ <widget class="QLabel" name="regILabel"> |
|
| 677 |
+ <property name="geometry"> |
|
| 678 |
+ <rect> |
|
| 679 |
+ <x>920</x> |
|
| 680 |
+ <y>180</y> |
|
| 681 |
+ <width>50</width> |
|
| 682 |
+ <height>20</height> |
|
| 683 |
+ </rect> |
|
| 684 |
+ </property> |
|
| 685 |
+ <property name="text"> |
|
| 686 |
+ <string>I</string> |
|
| 687 |
+ </property> |
|
| 688 |
+ <property name="alignment"> |
|
| 689 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 690 |
+ </property> |
|
| 691 |
+ </widget> |
|
| 692 |
+ <widget class="QLabel" name="regIValueHexLabel"> |
|
| 693 |
+ <property name="geometry"> |
|
| 694 |
+ <rect> |
|
| 695 |
+ <x>980</x> |
|
| 696 |
+ <y>180</y> |
|
| 697 |
+ <width>30</width> |
|
| 698 |
+ <height>20</height> |
|
| 699 |
+ </rect> |
|
| 700 |
+ </property> |
|
| 701 |
+ <property name="frameShape"> |
|
| 702 |
+ <enum>QFrame::Box</enum> |
|
| 703 |
+ </property> |
|
| 704 |
+ <property name="text"> |
|
| 705 |
+ <string>FF</string> |
|
| 706 |
+ </property> |
|
| 707 |
+ <property name="alignment"> |
|
| 708 |
+ <set>Qt::AlignCenter</set> |
|
| 709 |
+ </property> |
|
| 710 |
+ </widget> |
|
| 711 |
+ <widget class="QPlainTextEdit" name="romText"> |
|
| 712 |
+ <property name="enabled"> |
|
| 713 |
+ <bool>true</bool> |
|
| 714 |
+ </property> |
|
| 715 |
+ <property name="geometry"> |
|
| 716 |
+ <rect> |
|
| 717 |
+ <x>710</x> |
|
| 718 |
+ <y>420</y> |
|
| 719 |
+ <width>340</width> |
|
| 720 |
+ <height>220</height> |
|
| 721 |
+ </rect> |
|
| 722 |
+ </property> |
|
| 723 |
+ <property name="verticalScrollBarPolicy"> |
|
| 724 |
+ <enum>Qt::ScrollBarAlwaysOff</enum> |
|
| 725 |
+ </property> |
|
| 726 |
+ <property name="horizontalScrollBarPolicy"> |
|
| 727 |
+ <enum>Qt::ScrollBarAlwaysOff</enum> |
|
| 728 |
+ </property> |
|
| 729 |
+ <property name="readOnly"> |
|
| 730 |
+ <bool>true</bool> |
|
| 731 |
+ </property> |
|
| 732 |
+ <property name="plainText"> |
|
| 733 |
+ <string>00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 734 |
+01 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 735 |
+02 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 736 |
+03 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 737 |
+04 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 738 |
+05 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 739 |
+06 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 740 |
+07 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 741 |
+08 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 742 |
+09 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 743 |
+0A 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 744 |
+0B 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 745 |
+0C 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 746 |
+0D 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 747 |
+0E 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 748 |
+0F 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF</string> |
|
| 749 |
+ </property> |
|
| 750 |
+ </widget> |
|
| 751 |
+ <widget class="QLabel" name="lcdBufferLabel"> |
|
| 752 |
+ <property name="geometry"> |
|
| 753 |
+ <rect> |
|
| 754 |
+ <x>20</x> |
|
| 755 |
+ <y>10</y> |
|
| 756 |
+ <width>180</width> |
|
| 757 |
+ <height>20</height> |
|
| 758 |
+ </rect> |
|
| 759 |
+ </property> |
|
| 760 |
+ <property name="text"> |
|
| 761 |
+ <string>LCD - 40 x 30</string> |
|
| 762 |
+ </property> |
|
| 763 |
+ <property name="alignment"> |
|
| 764 |
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> |
|
| 765 |
+ </property> |
|
| 766 |
+ </widget> |
|
| 767 |
+ <widget class="QLabel" name="romLabel"> |
|
| 768 |
+ <property name="geometry"> |
|
| 769 |
+ <rect> |
|
| 770 |
+ <x>720</x> |
|
| 771 |
+ <y>400</y> |
|
| 772 |
+ <width>120</width> |
|
| 773 |
+ <height>20</height> |
|
| 774 |
+ </rect> |
|
| 775 |
+ </property> |
|
| 776 |
+ <property name="text"> |
|
| 777 |
+ <string>ROM - 64K</string> |
|
| 778 |
+ </property> |
|
| 779 |
+ <property name="alignment"> |
|
| 780 |
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> |
|
| 781 |
+ </property> |
|
| 782 |
+ </widget> |
|
| 783 |
+ <widget class="QLabel" name="ramLabel"> |
|
| 784 |
+ <property name="geometry"> |
|
| 785 |
+ <rect> |
|
| 786 |
+ <x>1070</x> |
|
| 787 |
+ <y>400</y> |
|
| 788 |
+ <width>120</width> |
|
| 789 |
+ <height>20</height> |
|
| 790 |
+ </rect> |
|
| 791 |
+ </property> |
|
| 792 |
+ <property name="text"> |
|
| 793 |
+ <string>RAM - 32K</string> |
|
| 794 |
+ </property> |
|
| 795 |
+ <property name="alignment"> |
|
| 796 |
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> |
|
| 797 |
+ </property> |
|
| 798 |
+ </widget> |
|
| 799 |
+ <widget class="QLabel" name="regSPLMaxValueLabel"> |
|
| 800 |
+ <property name="geometry"> |
|
| 801 |
+ <rect> |
|
| 802 |
+ <x>1060</x> |
|
| 803 |
+ <y>300</y> |
|
| 804 |
+ <width>30</width> |
|
| 805 |
+ <height>20</height> |
|
| 806 |
+ </rect> |
|
| 807 |
+ </property> |
|
| 808 |
+ <property name="frameShape"> |
|
| 809 |
+ <enum>QFrame::Box</enum> |
|
| 810 |
+ </property> |
|
| 811 |
+ <property name="text"> |
|
| 812 |
+ <string>1F</string> |
|
| 813 |
+ </property> |
|
| 814 |
+ <property name="alignment"> |
|
| 815 |
+ <set>Qt::AlignCenter</set> |
|
| 816 |
+ </property> |
|
| 817 |
+ </widget> |
|
| 818 |
+ <widget class="QLabel" name="regSPLMaxLabel"> |
|
| 819 |
+ <property name="geometry"> |
|
| 820 |
+ <rect> |
|
| 821 |
+ <x>980</x> |
|
| 822 |
+ <y>300</y> |
|
| 823 |
+ <width>70</width> |
|
| 824 |
+ <height>20</height> |
|
| 825 |
+ </rect> |
|
| 826 |
+ </property> |
|
| 827 |
+ <property name="text"> |
|
| 828 |
+ <string>MAX SPL</string> |
|
| 829 |
+ </property> |
|
| 830 |
+ <property name="alignment"> |
|
| 831 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 832 |
+ </property> |
|
| 833 |
+ </widget> |
|
| 834 |
+ <widget class="QPlainTextEdit" name="ramText"> |
|
| 835 |
+ <property name="geometry"> |
|
| 836 |
+ <rect> |
|
| 837 |
+ <x>1060</x> |
|
| 838 |
+ <y>420</y> |
|
| 839 |
+ <width>340</width> |
|
| 840 |
+ <height>220</height> |
|
| 841 |
+ </rect> |
|
| 842 |
+ </property> |
|
| 843 |
+ <property name="verticalScrollBarPolicy"> |
|
| 844 |
+ <enum>Qt::ScrollBarAlwaysOff</enum> |
|
| 845 |
+ </property> |
|
| 846 |
+ <property name="horizontalScrollBarPolicy"> |
|
| 847 |
+ <enum>Qt::ScrollBarAlwaysOff</enum> |
|
| 848 |
+ </property> |
|
| 849 |
+ <property name="readOnly"> |
|
| 850 |
+ <bool>true</bool> |
|
| 851 |
+ </property> |
|
| 852 |
+ <property name="plainText"> |
|
| 853 |
+ <string>00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 854 |
+01 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 855 |
+02 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 856 |
+03 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 857 |
+04 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 858 |
+05 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 859 |
+06 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 860 |
+07 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 861 |
+08 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 862 |
+09 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 863 |
+0A 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 864 |
+0B 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 865 |
+0C 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 866 |
+0D 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 867 |
+0E 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 868 |
+0F 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF</string> |
|
| 869 |
+ </property> |
|
| 870 |
+ </widget> |
|
| 871 |
+ <widget class="QLabel" name="romAddressLabel"> |
|
| 872 |
+ <property name="geometry"> |
|
| 873 |
+ <rect> |
|
| 874 |
+ <x>900</x> |
|
| 875 |
+ <y>640</y> |
|
| 876 |
+ <width>100</width> |
|
| 877 |
+ <height>30</height> |
|
| 878 |
+ </rect> |
|
| 879 |
+ </property> |
|
| 880 |
+ <property name="text"> |
|
| 881 |
+ <string>0000 - 00FF</string> |
|
| 882 |
+ </property> |
|
| 883 |
+ <property name="alignment"> |
|
| 884 |
+ <set>Qt::AlignCenter</set> |
|
| 885 |
+ </property> |
|
| 886 |
+ </widget> |
|
| 887 |
+ <widget class="QPushButton" name="romMinusButton"> |
|
| 888 |
+ <property name="geometry"> |
|
| 889 |
+ <rect> |
|
| 890 |
+ <x>850</x> |
|
| 891 |
+ <y>640</y> |
|
| 892 |
+ <width>50</width> |
|
| 893 |
+ <height>30</height> |
|
| 894 |
+ </rect> |
|
| 895 |
+ </property> |
|
| 896 |
+ <property name="text"> |
|
| 897 |
+ <string><<</string> |
|
| 898 |
+ </property> |
|
| 899 |
+ </widget> |
|
| 900 |
+ <widget class="QPushButton" name="romPlusButton"> |
|
| 901 |
+ <property name="geometry"> |
|
| 902 |
+ <rect> |
|
| 903 |
+ <x>1000</x> |
|
| 904 |
+ <y>640</y> |
|
| 905 |
+ <width>50</width> |
|
| 906 |
+ <height>30</height> |
|
| 907 |
+ </rect> |
|
| 908 |
+ </property> |
|
| 909 |
+ <property name="text"> |
|
| 910 |
+ <string>>></string> |
|
| 911 |
+ </property> |
|
| 912 |
+ </widget> |
|
| 913 |
+ <widget class="QPushButton" name="ramMinusButton"> |
|
| 914 |
+ <property name="geometry"> |
|
| 915 |
+ <rect> |
|
| 916 |
+ <x>1200</x> |
|
| 917 |
+ <y>640</y> |
|
| 918 |
+ <width>50</width> |
|
| 919 |
+ <height>30</height> |
|
| 920 |
+ </rect> |
|
| 921 |
+ </property> |
|
| 922 |
+ <property name="text"> |
|
| 923 |
+ <string><<</string> |
|
| 924 |
+ </property> |
|
| 925 |
+ </widget> |
|
| 926 |
+ <widget class="QPushButton" name="ramPlusButton"> |
|
| 927 |
+ <property name="geometry"> |
|
| 928 |
+ <rect> |
|
| 929 |
+ <x>1350</x> |
|
| 930 |
+ <y>640</y> |
|
| 931 |
+ <width>50</width> |
|
| 932 |
+ <height>30</height> |
|
| 933 |
+ </rect> |
|
| 934 |
+ </property> |
|
| 935 |
+ <property name="text"> |
|
| 936 |
+ <string>>></string> |
|
| 937 |
+ </property> |
|
| 938 |
+ </widget> |
|
| 939 |
+ <widget class="QLabel" name="ramAddressLabel"> |
|
| 940 |
+ <property name="geometry"> |
|
| 941 |
+ <rect> |
|
| 942 |
+ <x>1250</x> |
|
| 943 |
+ <y>640</y> |
|
| 944 |
+ <width>100</width> |
|
| 945 |
+ <height>30</height> |
|
| 946 |
+ </rect> |
|
| 947 |
+ </property> |
|
| 948 |
+ <property name="text"> |
|
| 949 |
+ <string>0000 - 00FF</string> |
|
| 950 |
+ </property> |
|
| 951 |
+ <property name="alignment"> |
|
| 952 |
+ <set>Qt::AlignCenter</set> |
|
| 953 |
+ </property> |
|
| 954 |
+ </widget> |
|
| 955 |
+ <widget class="QPushButton" name="emuControlRunButton"> |
|
| 956 |
+ <property name="geometry"> |
|
| 957 |
+ <rect> |
|
| 958 |
+ <x>1170</x> |
|
| 959 |
+ <y>240</y> |
|
| 960 |
+ <width>50</width> |
|
| 961 |
+ <height>30</height> |
|
| 962 |
+ </rect> |
|
| 963 |
+ </property> |
|
| 964 |
+ <property name="text"> |
|
| 965 |
+ <string>Run</string> |
|
| 966 |
+ </property> |
|
| 967 |
+ </widget> |
|
| 968 |
+ <widget class="QPushButton" name="emuControlStepButton"> |
|
| 969 |
+ <property name="geometry"> |
|
| 970 |
+ <rect> |
|
| 971 |
+ <x>1230</x> |
|
| 972 |
+ <y>240</y> |
|
| 973 |
+ <width>50</width> |
|
| 974 |
+ <height>30</height> |
|
| 975 |
+ </rect> |
|
| 976 |
+ </property> |
|
| 977 |
+ <property name="text"> |
|
| 978 |
+ <string>Step</string> |
|
| 979 |
+ </property> |
|
| 980 |
+ </widget> |
|
| 981 |
+ <widget class="QPushButton" name="emuControlPauseButton"> |
|
| 982 |
+ <property name="geometry"> |
|
| 983 |
+ <rect> |
|
| 984 |
+ <x>1290</x> |
|
| 985 |
+ <y>240</y> |
|
| 986 |
+ <width>50</width> |
|
| 987 |
+ <height>30</height> |
|
| 988 |
+ </rect> |
|
| 989 |
+ </property> |
|
| 990 |
+ <property name="text"> |
|
| 991 |
+ <string>Pause</string> |
|
| 992 |
+ </property> |
|
| 993 |
+ </widget> |
|
| 994 |
+ <widget class="QPushButton" name="emuControlStopButton"> |
|
| 995 |
+ <property name="geometry"> |
|
| 996 |
+ <rect> |
|
| 997 |
+ <x>1350</x> |
|
| 998 |
+ <y>240</y> |
|
| 999 |
+ <width>50</width> |
|
| 1000 |
+ <height>30</height> |
|
| 1001 |
+ </rect> |
|
| 1002 |
+ </property> |
|
| 1003 |
+ <property name="text"> |
|
| 1004 |
+ <string>Stop</string> |
|
| 1005 |
+ </property> |
|
| 1006 |
+ </widget> |
|
| 1007 |
+ <widget class="QLabel" name="emuStatusLabel"> |
|
| 1008 |
+ <property name="geometry"> |
|
| 1009 |
+ <rect> |
|
| 1010 |
+ <x>1170</x> |
|
| 1011 |
+ <y>180</y> |
|
| 1012 |
+ <width>50</width> |
|
| 1013 |
+ <height>20</height> |
|
| 1014 |
+ </rect> |
|
| 1015 |
+ </property> |
|
| 1016 |
+ <property name="text"> |
|
| 1017 |
+ <string>Status</string> |
|
| 1018 |
+ </property> |
|
| 1019 |
+ <property name="alignment"> |
|
| 1020 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 1021 |
+ </property> |
|
| 1022 |
+ </widget> |
|
| 1023 |
+ <widget class="QLabel" name="emuStatusValueLabel"> |
|
| 1024 |
+ <property name="geometry"> |
|
| 1025 |
+ <rect> |
|
| 1026 |
+ <x>1230</x> |
|
| 1027 |
+ <y>180</y> |
|
| 1028 |
+ <width>170</width> |
|
| 1029 |
+ <height>20</height> |
|
| 1030 |
+ </rect> |
|
| 1031 |
+ </property> |
|
| 1032 |
+ <property name="frameShape"> |
|
| 1033 |
+ <enum>QFrame::Box</enum> |
|
| 1034 |
+ </property> |
|
| 1035 |
+ <property name="text"> |
|
| 1036 |
+ <string>Running</string> |
|
| 1037 |
+ </property> |
|
| 1038 |
+ <property name="alignment"> |
|
| 1039 |
+ <set>Qt::AlignCenter</set> |
|
| 1040 |
+ </property> |
|
| 1041 |
+ </widget> |
|
| 1042 |
+ <widget class="QLabel" name="emuTimeValueLabel"> |
|
| 1043 |
+ <property name="geometry"> |
|
| 1044 |
+ <rect> |
|
| 1045 |
+ <x>1230</x> |
|
| 1046 |
+ <y>210</y> |
|
| 1047 |
+ <width>170</width> |
|
| 1048 |
+ <height>20</height> |
|
| 1049 |
+ </rect> |
|
| 1050 |
+ </property> |
|
| 1051 |
+ <property name="frameShape"> |
|
| 1052 |
+ <enum>QFrame::Box</enum> |
|
| 1053 |
+ </property> |
|
| 1054 |
+ <property name="text"> |
|
| 1055 |
+ <string>00:01:23.012</string> |
|
| 1056 |
+ </property> |
|
| 1057 |
+ <property name="alignment"> |
|
| 1058 |
+ <set>Qt::AlignCenter</set> |
|
| 1059 |
+ </property> |
|
| 1060 |
+ </widget> |
|
| 1061 |
+ <widget class="QLabel" name="emuTimeLabel"> |
|
| 1062 |
+ <property name="geometry"> |
|
| 1063 |
+ <rect> |
|
| 1064 |
+ <x>1170</x> |
|
| 1065 |
+ <y>210</y> |
|
| 1066 |
+ <width>50</width> |
|
| 1067 |
+ <height>20</height> |
|
| 1068 |
+ </rect> |
|
| 1069 |
+ </property> |
|
| 1070 |
+ <property name="text"> |
|
| 1071 |
+ <string>Time</string> |
|
| 1072 |
+ </property> |
|
| 1073 |
+ <property name="alignment"> |
|
| 1074 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 1075 |
+ </property> |
|
| 1076 |
+ </widget> |
|
| 1077 |
+ <widget class="QLabel" name="ledRunLabel"> |
|
| 1078 |
+ <property name="geometry"> |
|
| 1079 |
+ <rect> |
|
| 1080 |
+ <x>730</x> |
|
| 1081 |
+ <y>700</y> |
|
| 1082 |
+ <width>70</width> |
|
| 1083 |
+ <height>20</height> |
|
| 1084 |
+ </rect> |
|
| 1085 |
+ </property> |
|
| 1086 |
+ <property name="text"> |
|
| 1087 |
+ <string>LED Run</string> |
|
| 1088 |
+ </property> |
|
| 1089 |
+ <property name="alignment"> |
|
| 1090 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 1091 |
+ </property> |
|
| 1092 |
+ </widget> |
|
| 1093 |
+ <widget class="QLabel" name="ledErrorLabel"> |
|
| 1094 |
+ <property name="geometry"> |
|
| 1095 |
+ <rect> |
|
| 1096 |
+ <x>730</x> |
|
| 1097 |
+ <y>730</y> |
|
| 1098 |
+ <width>70</width> |
|
| 1099 |
+ <height>20</height> |
|
| 1100 |
+ </rect> |
|
| 1101 |
+ </property> |
|
| 1102 |
+ <property name="text"> |
|
| 1103 |
+ <string>LED Error</string> |
|
| 1104 |
+ </property> |
|
| 1105 |
+ <property name="alignment"> |
|
| 1106 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 1107 |
+ </property> |
|
| 1108 |
+ </widget> |
|
| 1109 |
+ <widget class="QLabel" name="ledRunValueLabel"> |
|
| 1110 |
+ <property name="geometry"> |
|
| 1111 |
+ <rect> |
|
| 1112 |
+ <x>810</x> |
|
| 1113 |
+ <y>700</y> |
|
| 1114 |
+ <width>40</width> |
|
| 1115 |
+ <height>20</height> |
|
| 1116 |
+ </rect> |
|
| 1117 |
+ </property> |
|
| 1118 |
+ <property name="font"> |
|
| 1119 |
+ <font> |
|
| 1120 |
+ <family>DejaVu Sans Mono</family> |
|
| 1121 |
+ <pointsize>8</pointsize> |
|
| 1122 |
+ <weight>75</weight> |
|
| 1123 |
+ <bold>true</bold> |
|
| 1124 |
+ </font> |
|
| 1125 |
+ </property> |
|
| 1126 |
+ <property name="frameShape"> |
|
| 1127 |
+ <enum>QFrame::Box</enum> |
|
| 1128 |
+ </property> |
|
| 1129 |
+ <property name="text"> |
|
| 1130 |
+ <string/> |
|
| 1131 |
+ </property> |
|
| 1132 |
+ <property name="alignment"> |
|
| 1133 |
+ <set>Qt::AlignCenter</set> |
|
| 1134 |
+ </property> |
|
| 1135 |
+ </widget> |
|
| 1136 |
+ <widget class="QLabel" name="ledErrorValueLabel"> |
|
| 1137 |
+ <property name="geometry"> |
|
| 1138 |
+ <rect> |
|
| 1139 |
+ <x>810</x> |
|
| 1140 |
+ <y>730</y> |
|
| 1141 |
+ <width>40</width> |
|
| 1142 |
+ <height>20</height> |
|
| 1143 |
+ </rect> |
|
| 1144 |
+ </property> |
|
| 1145 |
+ <property name="frameShape"> |
|
| 1146 |
+ <enum>QFrame::Box</enum> |
|
| 1147 |
+ </property> |
|
| 1148 |
+ <property name="text"> |
|
| 1149 |
+ <string/> |
|
| 1150 |
+ </property> |
|
| 1151 |
+ <property name="alignment"> |
|
| 1152 |
+ <set>Qt::AlignCenter</set> |
|
| 1153 |
+ </property> |
|
| 1154 |
+ </widget> |
|
| 1155 |
+ <widget class="QPlainTextEdit" name="rs232TxText"> |
|
| 1156 |
+ <property name="geometry"> |
|
| 1157 |
+ <rect> |
|
| 1158 |
+ <x>10</x> |
|
| 1159 |
+ <y>590</y> |
|
| 1160 |
+ <width>340</width> |
|
| 1161 |
+ <height>220</height> |
|
| 1162 |
+ </rect> |
|
| 1163 |
+ </property> |
|
| 1164 |
+ <property name="verticalScrollBarPolicy"> |
|
| 1165 |
+ <enum>Qt::ScrollBarAlwaysOn</enum> |
|
| 1166 |
+ </property> |
|
| 1167 |
+ <property name="horizontalScrollBarPolicy"> |
|
| 1168 |
+ <enum>Qt::ScrollBarAlwaysOff</enum> |
|
| 1169 |
+ </property> |
|
| 1170 |
+ <property name="readOnly"> |
|
| 1171 |
+ <bool>true</bool> |
|
| 1172 |
+ </property> |
|
| 1173 |
+ <property name="plainText"> |
|
| 1174 |
+ <string>00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1175 |
+01 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1176 |
+02 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1177 |
+03 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1178 |
+04 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1179 |
+05 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1180 |
+06 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1181 |
+07 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1182 |
+08 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1183 |
+09 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1184 |
+0A 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1185 |
+0B 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1186 |
+0C 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1187 |
+0D 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1188 |
+0E 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1189 |
+0F 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF</string> |
|
| 1190 |
+ </property> |
|
| 1191 |
+ </widget> |
|
| 1192 |
+ <widget class="QPlainTextEdit" name="rs232RxText"> |
|
| 1193 |
+ <property name="geometry"> |
|
| 1194 |
+ <rect> |
|
| 1195 |
+ <x>360</x> |
|
| 1196 |
+ <y>590</y> |
|
| 1197 |
+ <width>340</width> |
|
| 1198 |
+ <height>220</height> |
|
| 1199 |
+ </rect> |
|
| 1200 |
+ </property> |
|
| 1201 |
+ <property name="verticalScrollBarPolicy"> |
|
| 1202 |
+ <enum>Qt::ScrollBarAlwaysOn</enum> |
|
| 1203 |
+ </property> |
|
| 1204 |
+ <property name="horizontalScrollBarPolicy"> |
|
| 1205 |
+ <enum>Qt::ScrollBarAlwaysOff</enum> |
|
| 1206 |
+ </property> |
|
| 1207 |
+ <property name="readOnly"> |
|
| 1208 |
+ <bool>true</bool> |
|
| 1209 |
+ </property> |
|
| 1210 |
+ <property name="plainText"> |
|
| 1211 |
+ <string>00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1212 |
+01 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1213 |
+02 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1214 |
+03 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1215 |
+04 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1216 |
+05 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1217 |
+06 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1218 |
+07 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1219 |
+08 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1220 |
+09 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1221 |
+0A 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1222 |
+0B 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1223 |
+0C 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1224 |
+0D 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1225 |
+0E 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF |
|
| 1226 |
+0F 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF</string> |
|
| 1227 |
+ </property> |
|
| 1228 |
+ </widget> |
|
| 1229 |
+ <widget class="QLineEdit" name="rs232RxEdit"> |
|
| 1230 |
+ <property name="geometry"> |
|
| 1231 |
+ <rect> |
|
| 1232 |
+ <x>360</x> |
|
| 1233 |
+ <y>810</y> |
|
| 1234 |
+ <width>290</width> |
|
| 1235 |
+ <height>30</height> |
|
| 1236 |
+ </rect> |
|
| 1237 |
+ </property> |
|
| 1238 |
+ <property name="maxLength"> |
|
| 1239 |
+ <number>38</number> |
|
| 1240 |
+ </property> |
|
| 1241 |
+ </widget> |
|
| 1242 |
+ <widget class="QPushButton" name="rs232RxSendButton"> |
|
| 1243 |
+ <property name="geometry"> |
|
| 1244 |
+ <rect> |
|
| 1245 |
+ <x>650</x> |
|
| 1246 |
+ <y>810</y> |
|
| 1247 |
+ <width>50</width> |
|
| 1248 |
+ <height>30</height> |
|
| 1249 |
+ </rect> |
|
| 1250 |
+ </property> |
|
| 1251 |
+ <property name="text"> |
|
| 1252 |
+ <string>SEND</string> |
|
| 1253 |
+ </property> |
|
| 1254 |
+ </widget> |
|
| 1255 |
+ <widget class="QLabel" name="rs232TxLabel"> |
|
| 1256 |
+ <property name="geometry"> |
|
| 1257 |
+ <rect> |
|
| 1258 |
+ <x>20</x> |
|
| 1259 |
+ <y>570</y> |
|
| 1260 |
+ <width>180</width> |
|
| 1261 |
+ <height>20</height> |
|
| 1262 |
+ </rect> |
|
| 1263 |
+ </property> |
|
| 1264 |
+ <property name="text"> |
|
| 1265 |
+ <string>RS232 - TX</string> |
|
| 1266 |
+ </property> |
|
| 1267 |
+ <property name="alignment"> |
|
| 1268 |
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> |
|
| 1269 |
+ </property> |
|
| 1270 |
+ </widget> |
|
| 1271 |
+ <widget class="QLabel" name="rs232RxLabel"> |
|
| 1272 |
+ <property name="geometry"> |
|
| 1273 |
+ <rect> |
|
| 1274 |
+ <x>370</x> |
|
| 1275 |
+ <y>570</y> |
|
| 1276 |
+ <width>180</width> |
|
| 1277 |
+ <height>20</height> |
|
| 1278 |
+ </rect> |
|
| 1279 |
+ </property> |
|
| 1280 |
+ <property name="text"> |
|
| 1281 |
+ <string>RS232 - RX</string> |
|
| 1282 |
+ </property> |
|
| 1283 |
+ <property name="alignment"> |
|
| 1284 |
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> |
|
| 1285 |
+ </property> |
|
| 1286 |
+ </widget> |
|
| 1287 |
+ <widget class="QSlider" name="speakerVolumeSlider"> |
|
| 1288 |
+ <property name="geometry"> |
|
| 1289 |
+ <rect> |
|
| 1290 |
+ <x>1180</x> |
|
| 1291 |
+ <y>720</y> |
|
| 1292 |
+ <width>120</width> |
|
| 1293 |
+ <height>30</height> |
|
| 1294 |
+ </rect> |
|
| 1295 |
+ </property> |
|
| 1296 |
+ <property name="maximum"> |
|
| 1297 |
+ <number>100</number> |
|
| 1298 |
+ </property> |
|
| 1299 |
+ <property name="singleStep"> |
|
| 1300 |
+ <number>10</number> |
|
| 1301 |
+ </property> |
|
| 1302 |
+ <property name="value"> |
|
| 1303 |
+ <number>100</number> |
|
| 1304 |
+ </property> |
|
| 1305 |
+ <property name="orientation"> |
|
| 1306 |
+ <enum>Qt::Horizontal</enum> |
|
| 1307 |
+ </property> |
|
| 1308 |
+ <property name="tickPosition"> |
|
| 1309 |
+ <enum>QSlider::TicksBothSides</enum> |
|
| 1310 |
+ </property> |
|
| 1311 |
+ <property name="tickInterval"> |
|
| 1312 |
+ <number>10</number> |
|
| 1313 |
+ </property> |
|
| 1314 |
+ </widget> |
|
| 1315 |
+ <widget class="QLabel" name="speakerVolumeValueLabel"> |
|
| 1316 |
+ <property name="geometry"> |
|
| 1317 |
+ <rect> |
|
| 1318 |
+ <x>1310</x> |
|
| 1319 |
+ <y>720</y> |
|
| 1320 |
+ <width>50</width> |
|
| 1321 |
+ <height>30</height> |
|
| 1322 |
+ </rect> |
|
| 1323 |
+ </property> |
|
| 1324 |
+ <property name="frameShape"> |
|
| 1325 |
+ <enum>QFrame::Box</enum> |
|
| 1326 |
+ </property> |
|
| 1327 |
+ <property name="text"> |
|
| 1328 |
+ <string>100%</string> |
|
| 1329 |
+ </property> |
|
| 1330 |
+ <property name="alignment"> |
|
| 1331 |
+ <set>Qt::AlignCenter</set> |
|
| 1332 |
+ </property> |
|
| 1333 |
+ </widget> |
|
| 1334 |
+ <widget class="QLabel" name="speakerVolumeLabel"> |
|
| 1335 |
+ <property name="geometry"> |
|
| 1336 |
+ <rect> |
|
| 1337 |
+ <x>1070</x> |
|
| 1338 |
+ <y>720</y> |
|
| 1339 |
+ <width>100</width> |
|
| 1340 |
+ <height>30</height> |
|
| 1341 |
+ </rect> |
|
| 1342 |
+ </property> |
|
| 1343 |
+ <property name="text"> |
|
| 1344 |
+ <string>Volume</string> |
|
| 1345 |
+ </property> |
|
| 1346 |
+ <property name="alignment"> |
|
| 1347 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 1348 |
+ </property> |
|
| 1349 |
+ </widget> |
|
| 1350 |
+ <widget class="QLabel" name="speakerBufferLabel"> |
|
| 1351 |
+ <property name="geometry"> |
|
| 1352 |
+ <rect> |
|
| 1353 |
+ <x>1070</x> |
|
| 1354 |
+ <y>760</y> |
|
| 1355 |
+ <width>100</width> |
|
| 1356 |
+ <height>20</height> |
|
| 1357 |
+ </rect> |
|
| 1358 |
+ </property> |
|
| 1359 |
+ <property name="text"> |
|
| 1360 |
+ <string>Speaker Buffer</string> |
|
| 1361 |
+ </property> |
|
| 1362 |
+ <property name="alignment"> |
|
| 1363 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 1364 |
+ </property> |
|
| 1365 |
+ </widget> |
|
| 1366 |
+ <widget class="QLabel" name="speakerBufferValueLabel"> |
|
| 1367 |
+ <property name="geometry"> |
|
| 1368 |
+ <rect> |
|
| 1369 |
+ <x>1180</x> |
|
| 1370 |
+ <y>760</y> |
|
| 1371 |
+ <width>50</width> |
|
| 1372 |
+ <height>20</height> |
|
| 1373 |
+ </rect> |
|
| 1374 |
+ </property> |
|
| 1375 |
+ <property name="frameShape"> |
|
| 1376 |
+ <enum>QFrame::Box</enum> |
|
| 1377 |
+ </property> |
|
| 1378 |
+ <property name="text"> |
|
| 1379 |
+ <string>100%</string> |
|
| 1380 |
+ </property> |
|
| 1381 |
+ <property name="alignment"> |
|
| 1382 |
+ <set>Qt::AlignCenter</set> |
|
| 1383 |
+ </property> |
|
| 1384 |
+ </widget> |
|
| 1385 |
+ <widget class="QLabel" name="rtcValueLabel"> |
|
| 1386 |
+ <property name="geometry"> |
|
| 1387 |
+ <rect> |
|
| 1388 |
+ <x>810</x> |
|
| 1389 |
+ <y>810</y> |
|
| 1390 |
+ <width>161</width> |
|
| 1391 |
+ <height>20</height> |
|
| 1392 |
+ </rect> |
|
| 1393 |
+ </property> |
|
| 1394 |
+ <property name="frameShape"> |
|
| 1395 |
+ <enum>QFrame::Box</enum> |
|
| 1396 |
+ </property> |
|
| 1397 |
+ <property name="text"> |
|
| 1398 |
+ <string>19:23:56 01.12.2020</string> |
|
| 1399 |
+ </property> |
|
| 1400 |
+ <property name="alignment"> |
|
| 1401 |
+ <set>Qt::AlignCenter</set> |
|
| 1402 |
+ </property> |
|
| 1403 |
+ </widget> |
|
| 1404 |
+ <widget class="QLabel" name="rtcLabel"> |
|
| 1405 |
+ <property name="geometry"> |
|
| 1406 |
+ <rect> |
|
| 1407 |
+ <x>730</x> |
|
| 1408 |
+ <y>810</y> |
|
| 1409 |
+ <width>70</width> |
|
| 1410 |
+ <height>20</height> |
|
| 1411 |
+ </rect> |
|
| 1412 |
+ </property> |
|
| 1413 |
+ <property name="text"> |
|
| 1414 |
+ <string>RTC</string> |
|
| 1415 |
+ </property> |
|
| 1416 |
+ <property name="alignment"> |
|
| 1417 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 1418 |
+ </property> |
|
| 1419 |
+ </widget> |
|
| 1420 |
+ <widget class="QPushButton" name="rtcSetCurrentButton"> |
|
| 1421 |
+ <property name="geometry"> |
|
| 1422 |
+ <rect> |
|
| 1423 |
+ <x>970</x> |
|
| 1424 |
+ <y>810</y> |
|
| 1425 |
+ <width>90</width> |
|
| 1426 |
+ <height>20</height> |
|
| 1427 |
+ </rect> |
|
| 1428 |
+ </property> |
|
| 1429 |
+ <property name="text"> |
|
| 1430 |
+ <string>Set Current</string> |
|
| 1431 |
+ </property> |
|
| 1432 |
+ </widget> |
|
| 1433 |
+ <widget class="QLabel" name="regCValueLabel"> |
|
| 1434 |
+ <property name="geometry"> |
|
| 1435 |
+ <rect> |
|
| 1436 |
+ <x>980</x> |
|
| 1437 |
+ <y>210</y> |
|
| 1438 |
+ <width>30</width> |
|
| 1439 |
+ <height>20</height> |
|
| 1440 |
+ </rect> |
|
| 1441 |
+ </property> |
|
| 1442 |
+ <property name="frameShape"> |
|
| 1443 |
+ <enum>QFrame::Box</enum> |
|
| 1444 |
+ </property> |
|
| 1445 |
+ <property name="text"> |
|
| 1446 |
+ <string>1</string> |
|
| 1447 |
+ </property> |
|
| 1448 |
+ <property name="alignment"> |
|
| 1449 |
+ <set>Qt::AlignCenter</set> |
|
| 1450 |
+ </property> |
|
| 1451 |
+ </widget> |
|
| 1452 |
+ <widget class="QLabel" name="regCLabel"> |
|
| 1453 |
+ <property name="geometry"> |
|
| 1454 |
+ <rect> |
|
| 1455 |
+ <x>920</x> |
|
| 1456 |
+ <y>210</y> |
|
| 1457 |
+ <width>50</width> |
|
| 1458 |
+ <height>20</height> |
|
| 1459 |
+ </rect> |
|
| 1460 |
+ </property> |
|
| 1461 |
+ <property name="text"> |
|
| 1462 |
+ <string>C</string> |
|
| 1463 |
+ </property> |
|
| 1464 |
+ <property name="alignment"> |
|
| 1465 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 1466 |
+ </property> |
|
| 1467 |
+ </widget> |
|
| 1468 |
+ <widget class="QLabel" name="fileUrom0Label"> |
|
| 1469 |
+ <property name="geometry"> |
|
| 1470 |
+ <rect> |
|
| 1471 |
+ <x>710</x> |
|
| 1472 |
+ <y>30</y> |
|
| 1473 |
+ <width>70</width> |
|
| 1474 |
+ <height>20</height> |
|
| 1475 |
+ </rect> |
|
| 1476 |
+ </property> |
|
| 1477 |
+ <property name="text"> |
|
| 1478 |
+ <string>UROM 0</string> |
|
| 1479 |
+ </property> |
|
| 1480 |
+ <property name="alignment"> |
|
| 1481 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 1482 |
+ </property> |
|
| 1483 |
+ </widget> |
|
| 1484 |
+ <widget class="QLabel" name="fileFSDirLabel"> |
|
| 1485 |
+ <property name="geometry"> |
|
| 1486 |
+ <rect> |
|
| 1487 |
+ <x>710</x> |
|
| 1488 |
+ <y>120</y> |
|
| 1489 |
+ <width>70</width> |
|
| 1490 |
+ <height>20</height> |
|
| 1491 |
+ </rect> |
|
| 1492 |
+ </property> |
|
| 1493 |
+ <property name="text"> |
|
| 1494 |
+ <string>FS DIR</string> |
|
| 1495 |
+ </property> |
|
| 1496 |
+ <property name="alignment"> |
|
| 1497 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 1498 |
+ </property> |
|
| 1499 |
+ </widget> |
|
| 1500 |
+ <widget class="QPushButton" name="fileFSDirOpenButton"> |
|
| 1501 |
+ <property name="geometry"> |
|
| 1502 |
+ <rect> |
|
| 1503 |
+ <x>1300</x> |
|
| 1504 |
+ <y>120</y> |
|
| 1505 |
+ <width>50</width> |
|
| 1506 |
+ <height>20</height> |
|
| 1507 |
+ </rect> |
|
| 1508 |
+ </property> |
|
| 1509 |
+ <property name="text"> |
|
| 1510 |
+ <string>Open</string> |
|
| 1511 |
+ </property> |
|
| 1512 |
+ </widget> |
|
| 1513 |
+ <widget class="QLabel" name="fileRomPathLabel"> |
|
| 1514 |
+ <property name="geometry"> |
|
| 1515 |
+ <rect> |
|
| 1516 |
+ <x>790</x> |
|
| 1517 |
+ <y>90</y> |
|
| 1518 |
+ <width>510</width> |
|
| 1519 |
+ <height>20</height> |
|
| 1520 |
+ </rect> |
|
| 1521 |
+ </property> |
|
| 1522 |
+ <property name="frameShape"> |
|
| 1523 |
+ <enum>QFrame::Box</enum> |
|
| 1524 |
+ </property> |
|
| 1525 |
+ <property name="text"> |
|
| 1526 |
+ <string>C:/plik/plik.a</string> |
|
| 1527 |
+ </property> |
|
| 1528 |
+ </widget> |
|
| 1529 |
+ <widget class="QPushButton" name="fileUrom0OpenButton"> |
|
| 1530 |
+ <property name="geometry"> |
|
| 1531 |
+ <rect> |
|
| 1532 |
+ <x>1300</x> |
|
| 1533 |
+ <y>30</y> |
|
| 1534 |
+ <width>50</width> |
|
| 1535 |
+ <height>20</height> |
|
| 1536 |
+ </rect> |
|
| 1537 |
+ </property> |
|
| 1538 |
+ <property name="text"> |
|
| 1539 |
+ <string>Open</string> |
|
| 1540 |
+ </property> |
|
| 1541 |
+ </widget> |
|
| 1542 |
+ <widget class="QPushButton" name="fileUrom1OpenButton"> |
|
| 1543 |
+ <property name="geometry"> |
|
| 1544 |
+ <rect> |
|
| 1545 |
+ <x>1300</x> |
|
| 1546 |
+ <y>60</y> |
|
| 1547 |
+ <width>50</width> |
|
| 1548 |
+ <height>20</height> |
|
| 1549 |
+ </rect> |
|
| 1550 |
+ </property> |
|
| 1551 |
+ <property name="text"> |
|
| 1552 |
+ <string>Open</string> |
|
| 1553 |
+ </property> |
|
| 1554 |
+ </widget> |
|
| 1555 |
+ <widget class="QPushButton" name="fileRomOpenButton"> |
|
| 1556 |
+ <property name="geometry"> |
|
| 1557 |
+ <rect> |
|
| 1558 |
+ <x>1300</x> |
|
| 1559 |
+ <y>90</y> |
|
| 1560 |
+ <width>50</width> |
|
| 1561 |
+ <height>20</height> |
|
| 1562 |
+ </rect> |
|
| 1563 |
+ </property> |
|
| 1564 |
+ <property name="text"> |
|
| 1565 |
+ <string>Open</string> |
|
| 1566 |
+ </property> |
|
| 1567 |
+ </widget> |
|
| 1568 |
+ <widget class="QLabel" name="fileRomLabel"> |
|
| 1569 |
+ <property name="geometry"> |
|
| 1570 |
+ <rect> |
|
| 1571 |
+ <x>710</x> |
|
| 1572 |
+ <y>90</y> |
|
| 1573 |
+ <width>70</width> |
|
| 1574 |
+ <height>20</height> |
|
| 1575 |
+ </rect> |
|
| 1576 |
+ </property> |
|
| 1577 |
+ <property name="text"> |
|
| 1578 |
+ <string>ROM</string> |
|
| 1579 |
+ </property> |
|
| 1580 |
+ <property name="alignment"> |
|
| 1581 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 1582 |
+ </property> |
|
| 1583 |
+ </widget> |
|
| 1584 |
+ <widget class="QLabel" name="fileUrom1PathLabel"> |
|
| 1585 |
+ <property name="geometry"> |
|
| 1586 |
+ <rect> |
|
| 1587 |
+ <x>790</x> |
|
| 1588 |
+ <y>60</y> |
|
| 1589 |
+ <width>510</width> |
|
| 1590 |
+ <height>20</height> |
|
| 1591 |
+ </rect> |
|
| 1592 |
+ </property> |
|
| 1593 |
+ <property name="frameShape"> |
|
| 1594 |
+ <enum>QFrame::Box</enum> |
|
| 1595 |
+ </property> |
|
| 1596 |
+ <property name="text"> |
|
| 1597 |
+ <string>C:/plik/plik.a</string> |
|
| 1598 |
+ </property> |
|
| 1599 |
+ </widget> |
|
| 1600 |
+ <widget class="QLabel" name="fileFSDirPathLabel"> |
|
| 1601 |
+ <property name="geometry"> |
|
| 1602 |
+ <rect> |
|
| 1603 |
+ <x>790</x> |
|
| 1604 |
+ <y>120</y> |
|
| 1605 |
+ <width>510</width> |
|
| 1606 |
+ <height>20</height> |
|
| 1607 |
+ </rect> |
|
| 1608 |
+ </property> |
|
| 1609 |
+ <property name="frameShape"> |
|
| 1610 |
+ <enum>QFrame::Box</enum> |
|
| 1611 |
+ </property> |
|
| 1612 |
+ <property name="text"> |
|
| 1613 |
+ <string>C:/plik/plik.a</string> |
|
| 1614 |
+ </property> |
|
| 1615 |
+ </widget> |
|
| 1616 |
+ <widget class="QLabel" name="fileUrom0PathLabel"> |
|
| 1617 |
+ <property name="geometry"> |
|
| 1618 |
+ <rect> |
|
| 1619 |
+ <x>790</x> |
|
| 1620 |
+ <y>30</y> |
|
| 1621 |
+ <width>510</width> |
|
| 1622 |
+ <height>20</height> |
|
| 1623 |
+ </rect> |
|
| 1624 |
+ </property> |
|
| 1625 |
+ <property name="frameShape"> |
|
| 1626 |
+ <enum>QFrame::Box</enum> |
|
| 1627 |
+ </property> |
|
| 1628 |
+ <property name="text"> |
|
| 1629 |
+ <string>C:/plik/plik.a</string> |
|
| 1630 |
+ </property> |
|
| 1631 |
+ </widget> |
|
| 1632 |
+ <widget class="QLabel" name="fileUrom1Label"> |
|
| 1633 |
+ <property name="geometry"> |
|
| 1634 |
+ <rect> |
|
| 1635 |
+ <x>710</x> |
|
| 1636 |
+ <y>60</y> |
|
| 1637 |
+ <width>70</width> |
|
| 1638 |
+ <height>20</height> |
|
| 1639 |
+ </rect> |
|
| 1640 |
+ </property> |
|
| 1641 |
+ <property name="text"> |
|
| 1642 |
+ <string>UROM 1</string> |
|
| 1643 |
+ </property> |
|
| 1644 |
+ <property name="alignment"> |
|
| 1645 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 1646 |
+ </property> |
|
| 1647 |
+ </widget> |
|
| 1648 |
+ <widget class="QPushButton" name="fileUrom0ReloadButton"> |
|
| 1649 |
+ <property name="geometry"> |
|
| 1650 |
+ <rect> |
|
| 1651 |
+ <x>1350</x> |
|
| 1652 |
+ <y>30</y> |
|
| 1653 |
+ <width>50</width> |
|
| 1654 |
+ <height>20</height> |
|
| 1655 |
+ </rect> |
|
| 1656 |
+ </property> |
|
| 1657 |
+ <property name="text"> |
|
| 1658 |
+ <string>Reload</string> |
|
| 1659 |
+ </property> |
|
| 1660 |
+ </widget> |
|
| 1661 |
+ <widget class="QPushButton" name="fileUrom1ReloadButton"> |
|
| 1662 |
+ <property name="geometry"> |
|
| 1663 |
+ <rect> |
|
| 1664 |
+ <x>1350</x> |
|
| 1665 |
+ <y>60</y> |
|
| 1666 |
+ <width>50</width> |
|
| 1667 |
+ <height>20</height> |
|
| 1668 |
+ </rect> |
|
| 1669 |
+ </property> |
|
| 1670 |
+ <property name="text"> |
|
| 1671 |
+ <string>Reload</string> |
|
| 1672 |
+ </property> |
|
| 1673 |
+ </widget> |
|
| 1674 |
+ <widget class="QPushButton" name="fileRomReloadButton"> |
|
| 1675 |
+ <property name="geometry"> |
|
| 1676 |
+ <rect> |
|
| 1677 |
+ <x>1350</x> |
|
| 1678 |
+ <y>90</y> |
|
| 1679 |
+ <width>50</width> |
|
| 1680 |
+ <height>20</height> |
|
| 1681 |
+ </rect> |
|
| 1682 |
+ </property> |
|
| 1683 |
+ <property name="text"> |
|
| 1684 |
+ <string>Reload</string> |
|
| 1685 |
+ </property> |
|
| 1686 |
+ </widget> |
|
| 1687 |
+ <widget class="QLabel" name="regZValueLabel"> |
|
| 1688 |
+ <property name="geometry"> |
|
| 1689 |
+ <rect> |
|
| 1690 |
+ <x>1060</x> |
|
| 1691 |
+ <y>210</y> |
|
| 1692 |
+ <width>30</width> |
|
| 1693 |
+ <height>20</height> |
|
| 1694 |
+ </rect> |
|
| 1695 |
+ </property> |
|
| 1696 |
+ <property name="frameShape"> |
|
| 1697 |
+ <enum>QFrame::Box</enum> |
|
| 1698 |
+ </property> |
|
| 1699 |
+ <property name="text"> |
|
| 1700 |
+ <string>1</string> |
|
| 1701 |
+ </property> |
|
| 1702 |
+ <property name="alignment"> |
|
| 1703 |
+ <set>Qt::AlignCenter</set> |
|
| 1704 |
+ </property> |
|
| 1705 |
+ </widget> |
|
| 1706 |
+ <widget class="QLabel" name="regZLabel"> |
|
| 1707 |
+ <property name="geometry"> |
|
| 1708 |
+ <rect> |
|
| 1709 |
+ <x>1010</x> |
|
| 1710 |
+ <y>210</y> |
|
| 1711 |
+ <width>40</width> |
|
| 1712 |
+ <height>20</height> |
|
| 1713 |
+ </rect> |
|
| 1714 |
+ </property> |
|
| 1715 |
+ <property name="text"> |
|
| 1716 |
+ <string>Z</string> |
|
| 1717 |
+ </property> |
|
| 1718 |
+ <property name="alignment"> |
|
| 1719 |
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
|
| 1720 |
+ </property> |
|
| 1721 |
+ </widget> |
|
| 1722 |
+ <widget class="QLabel" name="regIValueBinLabel"> |
|
| 1723 |
+ <property name="geometry"> |
|
| 1724 |
+ <rect> |
|
| 1725 |
+ <x>1020</x> |
|
| 1726 |
+ <y>180</y> |
|
| 1727 |
+ <width>70</width> |
|
| 1728 |
+ <height>20</height> |
|
| 1729 |
+ </rect> |
|
| 1730 |
+ </property> |
|
| 1731 |
+ <property name="frameShape"> |
|
| 1732 |
+ <enum>QFrame::Box</enum> |
|
| 1733 |
+ </property> |
|
| 1734 |
+ <property name="text"> |
|
| 1735 |
+ <string>11111111</string> |
|
| 1736 |
+ </property> |
|
| 1737 |
+ <property name="alignment"> |
|
| 1738 |
+ <set>Qt::AlignCenter</set> |
|
| 1739 |
+ </property> |
|
| 1740 |
+ </widget> |
|
| 1741 |
+ <widget class="QPushButton" name="romGoToOSButton"> |
|
| 1742 |
+ <property name="geometry"> |
|
| 1743 |
+ <rect> |
|
| 1744 |
+ <x>710</x> |
|
| 1745 |
+ <y>640</y> |
|
| 1746 |
+ <width>50</width> |
|
| 1747 |
+ <height>30</height> |
|
| 1748 |
+ </rect> |
|
| 1749 |
+ </property> |
|
| 1750 |
+ <property name="text"> |
|
| 1751 |
+ <string>OS</string> |
|
| 1752 |
+ </property> |
|
| 1753 |
+ </widget> |
|
| 1754 |
+ <widget class="QPushButton" name="romGoToAppButton"> |
|
| 1755 |
+ <property name="geometry"> |
|
| 1756 |
+ <rect> |
|
| 1757 |
+ <x>760</x> |
|
| 1758 |
+ <y>640</y> |
|
| 1759 |
+ <width>50</width> |
|
| 1760 |
+ <height>30</height> |
|
| 1761 |
+ </rect> |
|
| 1762 |
+ </property> |
|
| 1763 |
+ <property name="text"> |
|
| 1764 |
+ <string>APP</string> |
|
| 1765 |
+ </property> |
|
| 1766 |
+ </widget> |
|
| 1767 |
+ <widget class="QPushButton" name="ramGoToOSButton"> |
|
| 1768 |
+ <property name="geometry"> |
|
| 1769 |
+ <rect> |
|
| 1770 |
+ <x>1060</x> |
|
| 1771 |
+ <y>640</y> |
|
| 1772 |
+ <width>50</width> |
|
| 1773 |
+ <height>30</height> |
|
| 1774 |
+ </rect> |
|
| 1775 |
+ </property> |
|
| 1776 |
+ <property name="text"> |
|
| 1777 |
+ <string>OS</string> |
|
| 1778 |
+ </property> |
|
| 1779 |
+ </widget> |
|
| 1780 |
+ <widget class="QPushButton" name="ramGoToSPButton"> |
|
| 1781 |
+ <property name="geometry"> |
|
| 1782 |
+ <rect> |
|
| 1783 |
+ <x>1110</x> |
|
| 1784 |
+ <y>640</y> |
|
| 1785 |
+ <width>50</width> |
|
| 1786 |
+ <height>30</height> |
|
| 1787 |
+ </rect> |
|
| 1788 |
+ </property> |
|
| 1789 |
+ <property name="text"> |
|
| 1790 |
+ <string>SP</string> |
|
| 1791 |
+ </property> |
|
| 1792 |
+ </widget> |
|
| 1793 |
+ <widget class="QPushButton" name="ramGoToAppButton"> |
|
| 1794 |
+ <property name="geometry"> |
|
| 1795 |
+ <rect> |
|
| 1796 |
+ <x>1060</x> |
|
| 1797 |
+ <y>670</y> |
|
| 1798 |
+ <width>50</width> |
|
| 1799 |
+ <height>30</height> |
|
| 1800 |
+ </rect> |
|
| 1801 |
+ </property> |
|
| 1802 |
+ <property name="text"> |
|
| 1803 |
+ <string>APP</string> |
|
| 1804 |
+ </property> |
|
| 1805 |
+ </widget> |
|
| 1806 |
+ </widget> |
|
| 1807 |
+ </widget> |
|
| 1808 |
+ <customwidgets> |
|
| 1809 |
+ <customwidget> |
|
| 1810 |
+ <class>LCDView</class> |
|
| 1811 |
+ <extends>QGraphicsView</extends> |
|
| 1812 |
+ <header location="global">lcdview.h</header> |
|
| 1813 |
+ </customwidget> |
|
| 1814 |
+ </customwidgets> |
|
| 1815 |
+ <resources/> |
|
| 1816 |
+ <connections/> |
|
| 1817 |
+</ui> |
| 0 | 1818 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,277 @@ |
| 1 |
+/* |
|
| 2 |
+ * Author: Pawel Jablonski |
|
| 3 |
+ * E-mail: pj@xirx.net |
|
| 4 |
+ * WWW: xirx.net |
|
| 5 |
+ * GIT: git.xirx.net |
|
| 6 |
+ * |
|
| 7 |
+ * License: You can use this code however you like |
|
| 8 |
+ * but leave information about the original author. |
|
| 9 |
+ * Code is free for non-commercial and commercial use. |
|
| 10 |
+ */ |
|
| 11 |
+ |
|
| 12 |
+#ifndef FONT_H |
|
| 13 |
+#define FONT_H |
|
| 14 |
+ |
|
| 15 |
+#include <QVector> |
|
| 16 |
+ |
|
| 17 |
+//! 8x8 ASCII font definition |
|
| 18 |
+static const QVector<QVector<unsigned char>> fontTable = QVector<QVector<unsigned char>>({
|
|
| 19 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 20 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 21 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 22 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 23 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 24 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 25 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 26 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 27 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 28 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 29 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 30 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 31 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 32 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 33 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 34 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 35 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 36 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 37 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 38 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 39 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 40 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 41 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 42 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 43 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 44 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 45 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 46 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 47 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 48 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 49 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 50 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 51 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 52 |
+ { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00 },
|
|
| 53 |
+ { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 54 |
+ { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00 },
|
|
| 55 |
+ { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00 },
|
|
| 56 |
+ { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00 },
|
|
| 57 |
+ { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00 },
|
|
| 58 |
+ { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 59 |
+ { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00 },
|
|
| 60 |
+ { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00 },
|
|
| 61 |
+ { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00 },
|
|
| 62 |
+ { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00 },
|
|
| 63 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06 },
|
|
| 64 |
+ { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00 },
|
|
| 65 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00 },
|
|
| 66 |
+ { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00 },
|
|
| 67 |
+ { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00 },
|
|
| 68 |
+ { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00 },
|
|
| 69 |
+ { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00 },
|
|
| 70 |
+ { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00 },
|
|
| 71 |
+ { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00 },
|
|
| 72 |
+ { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00 },
|
|
| 73 |
+ { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00 },
|
|
| 74 |
+ { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00 },
|
|
| 75 |
+ { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00 },
|
|
| 76 |
+ { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00 },
|
|
| 77 |
+ { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00 },
|
|
| 78 |
+ { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06 },
|
|
| 79 |
+ { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00 },
|
|
| 80 |
+ { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00 },
|
|
| 81 |
+ { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00 },
|
|
| 82 |
+ { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00 },
|
|
| 83 |
+ { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00 },
|
|
| 84 |
+ { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00 },
|
|
| 85 |
+ { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00 },
|
|
| 86 |
+ { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00 },
|
|
| 87 |
+ { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00 },
|
|
| 88 |
+ { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00 },
|
|
| 89 |
+ { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00 },
|
|
| 90 |
+ { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00 },
|
|
| 91 |
+ { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00 },
|
|
| 92 |
+ { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00 },
|
|
| 93 |
+ { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00 },
|
|
| 94 |
+ { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00 },
|
|
| 95 |
+ { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00 },
|
|
| 96 |
+ { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00 },
|
|
| 97 |
+ { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00 },
|
|
| 98 |
+ { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00 },
|
|
| 99 |
+ { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00 },
|
|
| 100 |
+ { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00 },
|
|
| 101 |
+ { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00 },
|
|
| 102 |
+ { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00 },
|
|
| 103 |
+ { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00 },
|
|
| 104 |
+ { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00 },
|
|
| 105 |
+ { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00 },
|
|
| 106 |
+ { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00 },
|
|
| 107 |
+ { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00 },
|
|
| 108 |
+ { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00 },
|
|
| 109 |
+ { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00 },
|
|
| 110 |
+ { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00 },
|
|
| 111 |
+ { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00 },
|
|
| 112 |
+ { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00 },
|
|
| 113 |
+ { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00 },
|
|
| 114 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF },
|
|
| 115 |
+ { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 116 |
+ { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00 },
|
|
| 117 |
+ { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00 },
|
|
| 118 |
+ { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00 },
|
|
| 119 |
+ { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00 },
|
|
| 120 |
+ { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00 },
|
|
| 121 |
+ { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00 },
|
|
| 122 |
+ { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F },
|
|
| 123 |
+ { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00 },
|
|
| 124 |
+ { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00 },
|
|
| 125 |
+ { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E },
|
|
| 126 |
+ { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00 },
|
|
| 127 |
+ { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00 },
|
|
| 128 |
+ { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00 },
|
|
| 129 |
+ { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00 },
|
|
| 130 |
+ { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00 },
|
|
| 131 |
+ { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F },
|
|
| 132 |
+ { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78 },
|
|
| 133 |
+ { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00 },
|
|
| 134 |
+ { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00 },
|
|
| 135 |
+ { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00 },
|
|
| 136 |
+ { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00 },
|
|
| 137 |
+ { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00 },
|
|
| 138 |
+ { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00 },
|
|
| 139 |
+ { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00 },
|
|
| 140 |
+ { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F },
|
|
| 141 |
+ { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00 },
|
|
| 142 |
+ { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00 },
|
|
| 143 |
+ { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00 },
|
|
| 144 |
+ { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00 },
|
|
| 145 |
+ { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 146 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 147 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 148 |
+ { 0x7E, 0x81, 0xA5, 0x81, 0xB9, 0x9D, 0x81, 0x7E },
|
|
| 149 |
+ { 0x7E, 0xFF, 0xDB, 0xFF, 0xC7, 0xE3, 0xFF, 0x7E },
|
|
| 150 |
+ { 0x36, 0x7F, 0x7F, 0x7F, 0x3E, 0x1C, 0x08, 0x00 },
|
|
| 151 |
+ { 0x08, 0x1C, 0x3E, 0x7F, 0x3E, 0x1C, 0x08, 0x00 },
|
|
| 152 |
+ { 0x1C, 0x3E, 0x1C, 0x7F, 0x7F, 0x08, 0x08, 0x3E },
|
|
| 153 |
+ { 0x00, 0x18, 0x3C, 0x7E, 0xFF, 0x7E, 0x18, 0x7E },
|
|
| 154 |
+ { 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0x00 },
|
|
| 155 |
+ { 0xFF, 0xFF, 0xE7, 0xC3, 0xC3, 0xE7, 0xFF, 0xFF },
|
|
| 156 |
+ { 0x00, 0x3C, 0x66, 0x42, 0x42, 0x66, 0x3C, 0x00 },
|
|
| 157 |
+ { 0xFF, 0xC3, 0x99, 0xBD, 0xBD, 0x99, 0xC3, 0xFF },
|
|
| 158 |
+ { 0xF0, 0xE0, 0xF0, 0xBE, 0x33, 0x33, 0x33, 0x1E },
|
|
| 159 |
+ { 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x18 },
|
|
| 160 |
+ { 0xFC, 0xCC, 0xFC, 0x0C, 0x0C, 0x0E, 0x0F, 0x07 },
|
|
| 161 |
+ { 0xFE, 0xC6, 0xFE, 0xC6, 0xC6, 0xE6, 0x67, 0x03 },
|
|
| 162 |
+ { 0x99, 0x5A, 0x3C, 0xE7, 0xE7, 0x3C, 0x5A, 0x99 },
|
|
| 163 |
+ { 0x01, 0x07, 0x1F, 0x7F, 0x1F, 0x07, 0x01, 0x00 },
|
|
| 164 |
+ { 0x40, 0x70, 0x7C, 0x7F, 0x7C, 0x70, 0x40, 0x00 },
|
|
| 165 |
+ { 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x7E, 0x3C, 0x18 },
|
|
| 166 |
+ { 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x00 },
|
|
| 167 |
+ { 0xFE, 0xDB, 0xDB, 0xDE, 0xD8, 0xD8, 0xD8, 0x00 },
|
|
| 168 |
+ { 0xFC, 0x06, 0x3E, 0x66, 0x66, 0x7C, 0x60, 0x3F },
|
|
| 169 |
+ { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x7E, 0x00 },
|
|
| 170 |
+ { 0x18, 0x3C, 0x7E, 0x18, 0x7E, 0x3C, 0x18, 0xFF },
|
|
| 171 |
+ { 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x00 },
|
|
| 172 |
+ { 0x18, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x00 },
|
|
| 173 |
+ { 0x00, 0x18, 0x30, 0x7F, 0x30, 0x18, 0x00, 0x00 },
|
|
| 174 |
+ { 0x00, 0x0C, 0x06, 0x7F, 0x06, 0x0C, 0x00, 0x00 },
|
|
| 175 |
+ { 0x00, 0x00, 0x03, 0x03, 0x03, 0x7F, 0x00, 0x00 },
|
|
| 176 |
+ { 0x00, 0x24, 0x66, 0xFF, 0x66, 0x24, 0x00, 0x00 },
|
|
| 177 |
+ { 0x00, 0x18, 0x3C, 0x7E, 0xFF, 0xFF, 0x00, 0x00 },
|
|
| 178 |
+ { 0x00, 0xFF, 0xFF, 0x7E, 0x3C, 0x18, 0x00, 0x00 },
|
|
| 179 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 180 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 181 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 182 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 183 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 184 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 185 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 186 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 187 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
| 188 |
+ { 0x00, 0x00, 0x00, 0x3F, 0x03, 0x03, 0x00, 0x00 },
|
|
| 189 |
+ { 0x00, 0x00, 0x00, 0x3F, 0x30, 0x30, 0x00, 0x00 },
|
|
| 190 |
+ { 0x63, 0x33, 0x1B, 0xFC, 0xC6, 0xF3, 0x31, 0xF0 },
|
|
| 191 |
+ { 0xC3, 0x63, 0x33, 0xDB, 0xEC, 0xB6, 0xF3, 0xC0 },
|
|
| 192 |
+ { 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00 },
|
|
| 193 |
+ { 0x00, 0xCC, 0x66, 0x33, 0x66, 0xCC, 0x00, 0x00 },
|
|
| 194 |
+ { 0x00, 0x33, 0x66, 0xCC, 0x66, 0x33, 0x00, 0x00 },
|
|
| 195 |
+ { 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11 },
|
|
| 196 |
+ { 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55 },
|
|
| 197 |
+ { 0xBB, 0xEE, 0xBB, 0xEE, 0xBB, 0xEE, 0xBB, 0xEE },
|
|
| 198 |
+ { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 },
|
|
| 199 |
+ { 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x18, 0x18 },
|
|
| 200 |
+ { 0x18, 0x18, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18 },
|
|
| 201 |
+ { 0x6C, 0x6C, 0x6C, 0x6C, 0x6F, 0x6C, 0x6C, 0x6C },
|
|
| 202 |
+ { 0x00, 0x00, 0x00, 0x00, 0x7F, 0x6C, 0x6C, 0x6C },
|
|
| 203 |
+ { 0x00, 0x00, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18 },
|
|
| 204 |
+ { 0x6C, 0x6C, 0x6F, 0x60, 0x6F, 0x6C, 0x6C, 0x6C },
|
|
| 205 |
+ { 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C },
|
|
| 206 |
+ { 0x00, 0x00, 0x7F, 0x60, 0x6F, 0x6C, 0x6C, 0x6C },
|
|
| 207 |
+ { 0x6C, 0x6C, 0x6F, 0x60, 0x7F, 0x00, 0x00, 0x00 },
|
|
| 208 |
+ { 0x6C, 0x6C, 0x6C, 0x6C, 0x7F, 0x00, 0x00, 0x00 },
|
|
| 209 |
+ { 0x18, 0x18, 0x1F, 0x18, 0x1F, 0x00, 0x00, 0x00 },
|
|
| 210 |
+ { 0x00, 0x00, 0x00, 0x00, 0x1F, 0x18, 0x18, 0x18 },
|
|
| 211 |
+ { 0x18, 0x18, 0x18, 0x18, 0xF8, 0x00, 0x00, 0x00 },
|
|
| 212 |
+ { 0x18, 0x18, 0x18, 0x18, 0xFF, 0x00, 0x00, 0x00 },
|
|
| 213 |
+ { 0x00, 0x00, 0x00, 0x00, 0xFF, 0x18, 0x18, 0x18 },
|
|
| 214 |
+ { 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0x18, 0x18 },
|
|
| 215 |
+ { 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00 },
|
|
| 216 |
+ { 0x18, 0x18, 0x18, 0x18, 0xFF, 0x18, 0x18, 0x18 },
|
|
| 217 |
+ { 0x18, 0x18, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18 },
|
|
| 218 |
+ { 0x6C, 0x6C, 0x6C, 0x6C, 0xEC, 0x6C, 0x6C, 0x6C },
|
|
| 219 |
+ { 0x6C, 0x6C, 0xEC, 0x0C, 0xFC, 0x00, 0x00, 0x00 },
|
|
| 220 |
+ { 0x00, 0x00, 0xFC, 0x0C, 0xEC, 0x6C, 0x6C, 0x6C },
|
|
| 221 |
+ { 0x6C, 0x6C, 0xEF, 0x00, 0xFF, 0x00, 0x00, 0x00 },
|
|
| 222 |
+ { 0x00, 0x00, 0xFF, 0x00, 0xEF, 0x6C, 0x6C, 0x6C },
|
|
| 223 |
+ { 0x6C, 0x6C, 0xEC, 0x0C, 0xEC, 0x6C, 0x6C, 0x6C },
|
|
| 224 |
+ { 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00 },
|
|
| 225 |
+ { 0x6C, 0x6C, 0xEF, 0x00, 0xEF, 0x6C, 0x6C, 0x6C },
|
|
| 226 |
+ { 0x18, 0x18, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00 },
|
|
| 227 |
+ { 0x6C, 0x6C, 0x6C, 0x6C, 0xFF, 0x00, 0x00, 0x00 },
|
|
| 228 |
+ { 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x18, 0x18, 0x18 },
|
|
| 229 |
+ { 0x00, 0x00, 0x00, 0x00, 0xFF, 0x6C, 0x6C, 0x6C },
|
|
| 230 |
+ { 0x6C, 0x6C, 0x6C, 0x6C, 0xFC, 0x00, 0x00, 0x00 },
|
|
| 231 |
+ { 0x18, 0x18, 0xF8, 0x18, 0xF8, 0x00, 0x00, 0x00 },
|
|
| 232 |
+ { 0x00, 0x00, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18 },
|
|
| 233 |
+ { 0x00, 0x00, 0x00, 0x00, 0xFC, 0x6C, 0x6C, 0x6C },
|
|
| 234 |
+ { 0x6C, 0x6C, 0x6C, 0x6C, 0xFF, 0x6C, 0x6C, 0x6C },
|
|
| 235 |
+ { 0x18, 0x18, 0xFF, 0x18, 0xFF, 0x18, 0x18, 0x18 },
|
|
| 236 |
+ { 0x18, 0x18, 0x18, 0x18, 0x1F, 0x00, 0x00, 0x00 },
|
|
| 237 |
+ { 0x00, 0x00, 0x00, 0x00, 0xF8, 0x18, 0x18, 0x18 },
|
|
| 238 |
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
|
|
| 239 |
+ { 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF },
|
|
| 240 |
+ { 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F },
|
|
| 241 |
+ { 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0 },
|
|
| 242 |
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 },
|
|
| 243 |
+ { 0x00, 0x00, 0x6E, 0x3B, 0x13, 0x3B, 0x6E, 0x00 },
|
|
| 244 |
+ { 0x1C, 0x36, 0x36, 0x1E, 0x36, 0x66, 0x36, 0x06 },
|
|
| 245 |
+ { 0x00, 0x7F, 0x63, 0x03, 0x03, 0x03, 0x03, 0x00 },
|
|
| 246 |
+ { 0x00, 0x00, 0x7F, 0x36, 0x36, 0x36, 0x36, 0x00 },
|
|
| 247 |
+ { 0x7F, 0x06, 0x0C, 0x18, 0x0C, 0x06, 0x7F, 0x00 },
|
|
| 248 |
+ { 0x00, 0x00, 0x7E, 0x1B, 0x1B, 0x1B, 0x0E, 0x00 },
|
|
| 249 |
+ { 0x00, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x06, 0x03 },
|
|
| 250 |
+ { 0x00, 0x6E, 0x3B, 0x18, 0x18, 0x18, 0x18, 0x00 },
|
|
| 251 |
+ { 0x7E, 0x18, 0x3C, 0x66, 0x66, 0x3C, 0x18, 0x7E },
|
|
| 252 |
+ { 0x3C, 0x66, 0xC3, 0xFF, 0xC3, 0x66, 0x3C, 0x00 },
|
|
| 253 |
+ { 0x3C, 0x66, 0xC3, 0xC3, 0x66, 0x66, 0xE7, 0x00 },
|
|
| 254 |
+ { 0x70, 0x18, 0x30, 0x7E, 0x63, 0x63, 0x3E, 0x00 },
|
|
| 255 |
+ { 0x00, 0x00, 0x7E, 0xDB, 0xDB, 0x7E, 0x00, 0x00 },
|
|
| 256 |
+ { 0x60, 0x30, 0x7E, 0xDB, 0xDB, 0x7E, 0x06, 0x03 },
|
|
| 257 |
+ { 0x1C, 0x06, 0x03, 0x1F, 0x03, 0x06, 0x1C, 0x00 },
|
|
| 258 |
+ { 0x1E, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x00 },
|
|
| 259 |
+ { 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00 },
|
|
| 260 |
+ { 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x7E, 0x00 },
|
|
| 261 |
+ { 0x06, 0x0C, 0x18, 0x0C, 0x06, 0x00, 0x3F, 0x00 },
|
|
| 262 |
+ { 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x00, 0x3F, 0x00 },
|
|
| 263 |
+ { 0x70, 0xD8, 0xD8, 0x18, 0x18, 0x18, 0x18, 0x18 },
|
|
| 264 |
+ { 0x18, 0x18, 0x18, 0x18, 0x18, 0x1B, 0x1B, 0x0E },
|
|
| 265 |
+ { 0x18, 0x18, 0x00, 0x7E, 0x00, 0x18, 0x18, 0x00 },
|
|
| 266 |
+ { 0x00, 0x6E, 0x3B, 0x00, 0x6E, 0x3B, 0x00, 0x00 },
|
|
| 267 |
+ { 0x1C, 0x36, 0x36, 0x1C, 0x00, 0x00, 0x00, 0x00 },
|
|
| 268 |
+ { 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00 },
|
|
| 269 |
+ { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00 },
|
|
| 270 |
+ { 0xF0, 0x30, 0x30, 0x30, 0x37, 0x36, 0x3C, 0x38 },
|
|
| 271 |
+ { 0x1E, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00 },
|
|
| 272 |
+ { 0x3E, 0x30, 0x3E, 0x06, 0x3E, 0x00, 0x00, 0x00 },
|
|
| 273 |
+ { 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00 },
|
|
| 274 |
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
|
| 275 |
+}); |
|
| 276 |
+ |
|
| 277 |
+#endif |
| 0 | 278 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,194 @@ |
| 1 |
+/* |
|
| 2 |
+ * Author: Pawel Jablonski |
|
| 3 |
+ * E-mail: pj@xirx.net |
|
| 4 |
+ * WWW: xirx.net |
|
| 5 |
+ * GIT: git.xirx.net |
|
| 6 |
+ * |
|
| 7 |
+ * License: You can use this code however you like |
|
| 8 |
+ * but leave information about the original author. |
|
| 9 |
+ * Code is free for non-commercial and commercial use. |
|
| 10 |
+ */ |
|
| 11 |
+ |
|
| 12 |
+#include "fs.h" |
|
| 13 |
+ |
|
| 14 |
+/** |
|
| 15 |
+ * Constructor for the file system class |
|
| 16 |
+ * |
|
| 17 |
+ * @param parent Parent object |
|
| 18 |
+ */ |
|
| 19 |
+FS::FS(QObject *parent) : QObject(parent) |
|
| 20 |
+{
|
|
| 21 |
+ this->path = ""; |
|
| 22 |
+ |
|
| 23 |
+ this->reset(); |
|
| 24 |
+} |
|
| 25 |
+ |
|
| 26 |
+//! Reset the file system buffers and path |
|
| 27 |
+void FS::reset() |
|
| 28 |
+{
|
|
| 29 |
+ this->buffer.clear(); |
|
| 30 |
+} |
|
| 31 |
+ |
|
| 32 |
+/** |
|
| 33 |
+ * Set path to the emulated file system on the local disk |
|
| 34 |
+ * |
|
| 35 |
+ * @param path Path to emulated file system |
|
| 36 |
+ */ |
|
| 37 |
+void FS::setPath(const QString &path) |
|
| 38 |
+{
|
|
| 39 |
+ this->path = path; |
|
| 40 |
+} |
|
| 41 |
+ |
|
| 42 |
+/** |
|
| 43 |
+ * Open and load to buffer a file from the emulated file system |
|
| 44 |
+ * |
|
| 45 |
+ * @param dirName Name of the directory. "app" or "file". |
|
| 46 |
+ * @param fileName Name of the file to open |
|
| 47 |
+ * @param size Struct where size of the file will be written |
|
| 48 |
+ * |
|
| 49 |
+ * @return Status of the open operation |
|
| 50 |
+ */ |
|
| 51 |
+bool FS::open(const QString &dirName, const FS::Name &fileName, FS::Size &size) |
|
| 52 |
+{
|
|
| 53 |
+ size.low = 0; |
|
| 54 |
+ size.high = 0; |
|
| 55 |
+ |
|
| 56 |
+ if(!dirName.contains(QRegularExpression("^([0-9a-zA-Z_-]{1,8})$")))
|
|
| 57 |
+ {
|
|
| 58 |
+ return(false); |
|
| 59 |
+ } |
|
| 60 |
+ |
|
| 61 |
+ QString name(reinterpret_cast<const char *>(fileName.data.constData())); |
|
| 62 |
+ |
|
| 63 |
+ if(!name.contains(QRegularExpression("^([0-9a-zA-Z_-]{1,8})(([\\\\.])([0-9a-zA-Z_-]{1,3}))?$")))
|
|
| 64 |
+ {
|
|
| 65 |
+ return(false); |
|
| 66 |
+ } |
|
| 67 |
+ |
|
| 68 |
+ QString filePath = QString(this->path).append("/").append(dirName).append("/").append(name);
|
|
| 69 |
+ QFile file(filePath); |
|
| 70 |
+ |
|
| 71 |
+ if(!file.open(QIODevice::ReadOnly)) |
|
| 72 |
+ {
|
|
| 73 |
+ return(false); |
|
| 74 |
+ } |
|
| 75 |
+ |
|
| 76 |
+ if(file.size() > FILE_MAX_SIZE) |
|
| 77 |
+ {
|
|
| 78 |
+ file.close(); |
|
| 79 |
+ |
|
| 80 |
+ return(false); |
|
| 81 |
+ } |
|
| 82 |
+ |
|
| 83 |
+ this->buffer = file.readAll(); |
|
| 84 |
+ |
|
| 85 |
+ file.close(); |
|
| 86 |
+ |
|
| 87 |
+ size.low = static_cast<unsigned char>(this->buffer.size() % 256); |
|
| 88 |
+ size.high = static_cast<unsigned char>((this->buffer.size() / 256) & 0xff); |
|
| 89 |
+ |
|
| 90 |
+ return(true); |
|
| 91 |
+} |
|
| 92 |
+ |
|
| 93 |
+/** |
|
| 94 |
+ * Create a list of files in the directory from the emulated file system |
|
| 95 |
+ * |
|
| 96 |
+ * @param dirName Name of the directory. "app" or "file". |
|
| 97 |
+ * @param size Struct where size of the buffer with description of the files will be written |
|
| 98 |
+ * |
|
| 99 |
+ * @return Status of the list operation |
|
| 100 |
+ */ |
|
| 101 |
+bool FS::list(const QString &dirName, FS::Size &size) |
|
| 102 |
+{
|
|
| 103 |
+ size.low = 0; |
|
| 104 |
+ size.high = 0; |
|
| 105 |
+ |
|
| 106 |
+ if(!dirName.contains(QRegularExpression("^([0-9a-zA-Z_-]{1,8})$")))
|
|
| 107 |
+ {
|
|
| 108 |
+ return(false); |
|
| 109 |
+ } |
|
| 110 |
+ |
|
| 111 |
+ QString dirPath = QString(this->path).append("/").append(dirName);
|
|
| 112 |
+ QDir dir; |
|
| 113 |
+ |
|
| 114 |
+ dir.setFilter(QDir::Files | QDir::NoDotAndDotDot); |
|
| 115 |
+ dir.setSorting(QDir::Name); |
|
| 116 |
+ |
|
| 117 |
+ if(!dir.cd(dirPath)) |
|
| 118 |
+ {
|
|
| 119 |
+ return(false); |
|
| 120 |
+ } |
|
| 121 |
+ |
|
| 122 |
+ QFileInfoList fileInfoList = dir.entryInfoList(); |
|
| 123 |
+ |
|
| 124 |
+ this->buffer.clear(); |
|
| 125 |
+ |
|
| 126 |
+ for(const QFileInfo &fileInfo : fileInfoList) |
|
| 127 |
+ {
|
|
| 128 |
+ QString fileName = fileInfo.fileName(); |
|
| 129 |
+ qint64 fileSize = fileInfo.size(); |
|
| 130 |
+ |
|
| 131 |
+ if(fileSize > FILE_MAX_SIZE) |
|
| 132 |
+ {
|
|
| 133 |
+ continue; |
|
| 134 |
+ } |
|
| 135 |
+ |
|
| 136 |
+ if(!fileName.contains(QRegularExpression(R"(^([0-9a-zA-Z_-]{1,8})(([\\.])([0-9a-zA-Z_-]{1,3}))?$)")))
|
|
| 137 |
+ {
|
|
| 138 |
+ continue; |
|
| 139 |
+ } |
|
| 140 |
+ |
|
| 141 |
+ int j = 0; |
|
| 142 |
+ |
|
| 143 |
+ for(; ((j < NAME_MAX_LENGTH) && (j < fileName.length())); j++) |
|
| 144 |
+ {
|
|
| 145 |
+ this->buffer.append(fileName.at(j).toLatin1()); |
|
| 146 |
+ } |
|
| 147 |
+ |
|
| 148 |
+ for(; j < (DIR_ENTRY_SIZE - DIR_SIZE_FIELD_SIZE); j++) |
|
| 149 |
+ {
|
|
| 150 |
+ this->buffer.append(static_cast<char>(0)); |
|
| 151 |
+ } |
|
| 152 |
+ |
|
| 153 |
+ QVector<unsigned char> size(2); |
|
| 154 |
+ |
|
| 155 |
+ size[0] = static_cast<unsigned char>(fileSize % 256); |
|
| 156 |
+ size[1] = static_cast<unsigned char>((fileSize / 256) & 0xff); |
|
| 157 |
+ |
|
| 158 |
+ this->buffer.append(static_cast<char>(size[0])); |
|
| 159 |
+ this->buffer.append(static_cast<char>(size[1])); |
|
| 160 |
+ |
|
| 161 |
+ if(this->buffer.size() >= (DIR_MAX_QUANTITY * DIR_ENTRY_SIZE)) |
|
| 162 |
+ {
|
|
| 163 |
+ break; |
|
| 164 |
+ } |
|
| 165 |
+ } |
|
| 166 |
+ |
|
| 167 |
+ size.low = static_cast<unsigned char>(this->buffer.size() % 256); |
|
| 168 |
+ size.high = static_cast<unsigned char>((this->buffer.size() / 256) & 0xff); |
|
| 169 |
+ |
|
| 170 |
+ return(true); |
|
| 171 |
+} |
|
| 172 |
+ |
|
| 173 |
+/** |
|
| 174 |
+ * Read data from buffer to block based on offset |
|
| 175 |
+ * |
|
| 176 |
+ * @param block Struct where the data from the buffer will be written |
|
| 177 |
+ * @param number Number of the selected virtual block selected to read |
|
| 178 |
+ */ |
|
| 179 |
+void FS::readBlock(FS::Block &block, int number) |
|
| 180 |
+{
|
|
| 181 |
+ for(int i = 0; i < BLOCK_SIZE; i++) |
|
| 182 |
+ {
|
|
| 183 |
+ int j = ((number * BLOCK_SIZE) + i); |
|
| 184 |
+ |
|
| 185 |
+ if(j < this->buffer.size()) |
|
| 186 |
+ {
|
|
| 187 |
+ block.data[i] = static_cast<unsigned char>(this->buffer.at(j)); |
|
| 188 |
+ } |
|
| 189 |
+ else |
|
| 190 |
+ {
|
|
| 191 |
+ block.data[i] = 0; |
|
| 192 |
+ } |
|
| 193 |
+ } |
|
| 194 |
+} |
| 0 | 195 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,75 @@ |
| 1 |
+/* |
|
| 2 |
+ * Author: Pawel Jablonski |
|
| 3 |
+ * E-mail: pj@xirx.net |
|
| 4 |
+ * WWW: xirx.net |
|
| 5 |
+ * GIT: git.xirx.net |
|
| 6 |
+ * |
|
| 7 |
+ * License: You can use this code however you like |
|
| 8 |
+ * but leave information about the original author. |
|
| 9 |
+ * Code is free for non-commercial and commercial use. |
|
| 10 |
+ */ |
|
| 11 |
+ |
|
| 12 |
+#ifndef FS_H |
|
| 13 |
+#define FS_H |
|
| 14 |
+ |
|
| 15 |
+#include <QObject> |
|
| 16 |
+#include <QString> |
|
| 17 |
+#include <QByteArray> |
|
| 18 |
+#include <QVector> |
|
| 19 |
+#include <QFile> |
|
| 20 |
+#include <QDir> |
|
| 21 |
+#include <QFileInfoList> |
|
| 22 |
+#include <QRegularExpression> |
|
| 23 |
+ |
|
| 24 |
+//! This class contains file system functions |
|
| 25 |
+class FS : public QObject |
|
| 26 |
+{
|
|
| 27 |
+ Q_OBJECT |
|
| 28 |
+ |
|
| 29 |
+ public: |
|
| 30 |
+ static const int NAME_MAX_LENGTH = 12; //!< Maximum name length of the file |
|
| 31 |
+ |
|
| 32 |
+ static const int BLOCK_SIZE = 256; //!< Virtual block size available to address by communication bus between motherboard and CPU |
|
| 33 |
+ |
|
| 34 |
+ static const int DIR_ENTRY_SIZE = 16; //!< Size of the header with information about file |
|
| 35 |
+ static const int DIR_SIZE_FIELD_SIZE = 2; //!< Size of the size field in the header |
|
| 36 |
+ static const int DIR_MAX_QUANTITY = 64; //!< Maximum quantity of files in directory |
|
| 37 |
+ |
|
| 38 |
+ static const int FILE_MAX_SIZE = 32768; //!< Maximum size of the file |
|
| 39 |
+ |
|
| 40 |
+ //! This struct contains a name of the file |
|
| 41 |
+ struct Name |
|
| 42 |
+ {
|
|
| 43 |
+ QVector<unsigned char> data = QVector<unsigned char>(NAME_MAX_LENGTH + 1); //!< Name of the file |
|
| 44 |
+ }; |
|
| 45 |
+ |
|
| 46 |
+ //! This struct contains a size of the file |
|
| 47 |
+ struct Size |
|
| 48 |
+ {
|
|
| 49 |
+ unsigned char low; //!< Lower byte of the size |
|
| 50 |
+ unsigned char high; //!< Higher byte of the size |
|
| 51 |
+ }; |
|
| 52 |
+ |
|
| 53 |
+ //! This struct contains virtual block data |
|
| 54 |
+ struct Block |
|
| 55 |
+ {
|
|
| 56 |
+ QVector<unsigned char> data = QVector<unsigned char>(BLOCK_SIZE); //!< Virtual block data |
|
| 57 |
+ }; |
|
| 58 |
+ |
|
| 59 |
+ FS(QObject *parent = nullptr); |
|
| 60 |
+ |
|
| 61 |
+ void reset(); |
|
| 62 |
+ |
|
| 63 |
+ void setPath(const QString &path); |
|
| 64 |
+ |
|
| 65 |
+ bool open(const QString &dirName, const FS::Name &fileName, FS::Size &size); |
|
| 66 |
+ bool list(const QString &dirName, FS::Size &size); |
|
| 67 |
+ |
|
| 68 |
+ void readBlock(FS::Block &block, int number); |
|
| 69 |
+ |
|
| 70 |
+ private: |
|
| 71 |
+ QString path; //!< Path to the emulated file system on the local disk |
|
| 72 |
+ QByteArray buffer; //!< Buffer used to loading whole file or a list with description of the files |
|
| 73 |
+}; |
|
| 74 |
+ |
|
| 75 |
+#endif |
| 0 | 76 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,558 @@ |
| 1 |
+/* |
|
| 2 |
+ * Author: Pawel Jablonski |
|
| 3 |
+ * E-mail: pj@xirx.net |
|
| 4 |
+ * WWW: xirx.net |
|
| 5 |
+ * GIT: git.xirx.net |
|
| 6 |
+ * |
|
| 7 |
+ * License: You can use this code however you like |
|
| 8 |
+ * but leave information about the original author. |
|
| 9 |
+ * Code is free for non-commercial and commercial use. |
|
| 10 |
+ */ |
|
| 11 |
+ |
|
| 12 |
+#include "io.h" |
|
| 13 |
+ |
|
| 14 |
+/** |
|
| 15 |
+ * Constructor for the IO class. It connects all communication classes for IO operations. |
|
| 16 |
+ * |
|
| 17 |
+ * @param parent Parent object |
|
| 18 |
+ */ |
|
| 19 |
+IO::IO(QObject *parent) : QObject(parent) |
|
| 20 |
+{
|
|
| 21 |
+ this->reset(); |
|
| 22 |
+ |
|
| 23 |
+ QObject::connect(&this->led, SIGNAL(updateRunSignal(bool)), this, SIGNAL(updateLEDRunSignal(bool))); |
|
| 24 |
+ QObject::connect(&this->led, SIGNAL(updateErrorSignal(bool)), this, SIGNAL(updateLEDErrorSignal(bool))); |
|
| 25 |
+ |
|
| 26 |
+ QObject::connect(&this->lcd, SIGNAL(updateBufferSignal(LCD::Buffer)), this, SIGNAL(updateLCDBufferSignal(LCD::Buffer))); |
|
| 27 |
+ |
|
| 28 |
+ QObject::connect(&this->rs232, SIGNAL(updateTxSignal(unsigned char)), this, SIGNAL(updateRS232TxSignal(unsigned char))); |
|
| 29 |
+ QObject::connect(&this->rs232, SIGNAL(updateRxSignal(unsigned char)), this, SIGNAL(updateRS232RxSignal(unsigned char))); |
|
| 30 |
+ |
|
| 31 |
+ QObject::connect(&this->rtc, SIGNAL(updateDateTimeSignal(QDateTime)), this, SIGNAL(updateRTCDateTimeSignal(QDateTime))); |
|
| 32 |
+ |
|
| 33 |
+ QObject::connect(&this->speaker, SIGNAL(updateStatusSignal(int)), this, SIGNAL(updateSpeakerStatusSignal(int))); |
|
| 34 |
+ |
|
| 35 |
+ QObject::connect(&this->keyboard, SIGNAL(dataReadySignal(bool)), this, SLOT(keyboardDataReadySlot(bool))); |
|
| 36 |
+ QObject::connect(&this->rs232, SIGNAL(dataReadySignal(bool)), this, SLOT(rs232DataReadySlot(bool))); |
|
| 37 |
+} |
|
| 38 |
+ |
|
| 39 |
+//! Destructor for the IO class |
|
| 40 |
+IO::~IO() |
|
| 41 |
+{
|
|
| 42 |
+ QObject::disconnect(this); |
|
| 43 |
+} |
|
| 44 |
+ |
|
| 45 |
+//! Reset the IO buffers and trigger reset for all connected communication classes |
|
| 46 |
+void IO::reset() |
|
| 47 |
+{
|
|
| 48 |
+ this->regSelected = 0; |
|
| 49 |
+ this->reg = {};
|
|
| 50 |
+ this->in = 0; |
|
| 51 |
+ |
|
| 52 |
+ this->keyboard.reset(); |
|
| 53 |
+ this->led.reset(); |
|
| 54 |
+ this->lcd.reset(); |
|
| 55 |
+ this->rs232.reset(); |
|
| 56 |
+ this->rtc.reset(); |
|
| 57 |
+ this->speaker.reset(); |
|
| 58 |
+ this->fs.reset(); |
|
| 59 |
+} |
|
| 60 |
+ |
|
| 61 |
+/** |
|
| 62 |
+ * Process a key press event |
|
| 63 |
+ * |
|
| 64 |
+ * @param key Pressed key code |
|
| 65 |
+ * @param modifiers Optional modifiers to pressed key |
|
| 66 |
+ */ |
|
| 67 |
+void IO::keyboardKeyPress(int key, Qt::KeyboardModifiers modifiers) |
|
| 68 |
+{
|
|
| 69 |
+ this->keyboard.keyPress(key, modifiers); |
|
| 70 |
+} |
|
| 71 |
+ |
|
| 72 |
+/** |
|
| 73 |
+ * Set enable status of the run LED |
|
| 74 |
+ * |
|
| 75 |
+ * @param enable Enable status |
|
| 76 |
+ */ |
|
| 77 |
+void IO::ledSetRun(bool enable) |
|
| 78 |
+{
|
|
| 79 |
+ this->led.setRun(enable); |
|
| 80 |
+} |
|
| 81 |
+ |
|
| 82 |
+/** |
|
| 83 |
+ * Set enable status of the error LED |
|
| 84 |
+ * |
|
| 85 |
+ * @param enable Enable status |
|
| 86 |
+ */ |
|
| 87 |
+void IO::ledSetError(bool enable) |
|
| 88 |
+{
|
|
| 89 |
+ this->led.setError(enable); |
|
| 90 |
+} |
|
| 91 |
+ |
|
| 92 |
+/** |
|
| 93 |
+ * Process a received text event |
|
| 94 |
+ * |
|
| 95 |
+ * @param text Received text |
|
| 96 |
+ */ |
|
| 97 |
+void IO::rs232Receive(const QString &text) |
|
| 98 |
+{
|
|
| 99 |
+ this->rs232.rx(text); |
|
| 100 |
+} |
|
| 101 |
+ |
|
| 102 |
+/** |
|
| 103 |
+ * Set date and time |
|
| 104 |
+ * |
|
| 105 |
+ * @param dateTime Date and time to set in own RTC format |
|
| 106 |
+ */ |
|
| 107 |
+void IO::rtcSetDateTime(const QDateTime &dateTime) |
|
| 108 |
+{
|
|
| 109 |
+ this->rtc.setDateTime(dateTime); |
|
| 110 |
+} |
|
| 111 |
+ |
|
| 112 |
+/** |
|
| 113 |
+ * Set volume |
|
| 114 |
+ * |
|
| 115 |
+ * @param volume Volume level in range 0-100 |
|
| 116 |
+ */ |
|
| 117 |
+void IO::speakerSetVolume(unsigned int volume) |
|
| 118 |
+{
|
|
| 119 |
+ this->speaker.setVolume(volume); |
|
| 120 |
+} |
|
| 121 |
+ |
|
| 122 |
+/** |
|
| 123 |
+ * Set path to the emulated file system on the local disk |
|
| 124 |
+ * |
|
| 125 |
+ * @param path Path to emulated file system |
|
| 126 |
+ */ |
|
| 127 |
+void IO::fsSetPath(const QString &path) |
|
| 128 |
+{
|
|
| 129 |
+ this->fs.setPath(path); |
|
| 130 |
+} |
|
| 131 |
+ |
|
| 132 |
+/** |
|
| 133 |
+ * Process "keyboard data is ready to get" event |
|
| 134 |
+ * |
|