Compare commits

...

868 Commits

Author SHA1 Message Date
Jonathan Campbell
921acaa291 Bug fix: Keep the user mouse dimensions reported to the guest up to date with the window size, instead of only whenever the mouse moves 2025-05-06 07:23:54 -07:00
Jonathan Campbell
383ed6e4cf
Merge pull request #5683 from smunaut/pci-bus-fixes
PCI bus improvements : Allow device to see full size access
2025-05-05 15:02:41 -07:00
Sylvain Munaut
596491137f pci_bus: Allow device handlers to see word/double-word accesses
To actually see word-size or double-word-size access in the
handler, they need to be declared as such. So we set the
appropriate access so that aligned word/double-word access are
allowed.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2025-05-05 18:32:16 +01:00
Sylvain Munaut
cef4197171 pci_bus: Fix endianness of split-to-bytes accesses
The write side is properly split in little-endian, but for some
reason the read side is reconstructing the word/double-words in
big-endian format.

This never showed up before because ATM _all_ access are byte
access anyway because the handler isn't declared as word/dword
capable.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2025-05-05 18:30:31 +01:00
Jonathan Campbell
70d4d78a65 CHANGELOG 2025-05-05 08:08:14 -07:00
Jonathan Campbell
3f629f9bf9 Fix percentage setting 2025-05-05 08:06:29 -07:00
Jonathan Campbell
fb3dca737e more 2025-05-05 08:02:42 -07:00
Jonathan Campbell
cf8f58e581 Initial cycles control 2025-05-05 07:51:45 -07:00
Jonathan Campbell
753d1632d0 IG save state should preserve ver str read state too 2025-05-04 23:01:12 -07:00
Jonathan Campbell
1c07709727 Add integration device commands to read CPU cycle count and info 2025-05-04 22:28:22 -07:00
Jonathan Campbell
e58f5ded15 the last constants 2025-05-04 17:31:26 -07:00
Jonathan Campbell
837b06503c It is a register, not a command, be consistent 2025-05-04 17:30:09 -07:00
Jonathan Campbell
dd8afd4f7b reg to get window size 2025-05-04 17:28:45 -07:00
Jonathan Campbell
4950614305 more constants 2025-05-04 17:04:44 -07:00
Jonathan Campbell
6831c527f5 CMD is for command port constants, name it REG, be consistent 2025-05-04 16:46:49 -07:00
Jonathan Campbell
6b2bdbc2e0 more constants 2025-05-04 16:43:33 -07:00
Jonathan Campbell
43d112b54f more constants 2025-05-04 16:38:28 -07:00
Jonathan Campbell
1a6e7c3fbe Mouse capture status on read 2025-05-04 16:17:02 -07:00
Jonathan Campbell
2c654343ee debug commands 2025-05-04 16:10:47 -07:00
Jonathan Campbell
60d2bb70a3 more 2025-05-04 16:08:17 -07:00
Jonathan Campbell
d073397388 platform/machine type regs 2025-05-04 16:01:10 -07:00
Jonathan Campbell
905cb208a3 more constants, dosbox version 2025-05-04 15:57:35 -07:00
Jonathan Campbell
b986f25d4b Update version of integration device 2025-05-04 15:52:39 -07:00
Jonathan Campbell
534b710606 restore mixer query 2025-05-04 15:48:58 -07:00
Jonathan Campbell
c5d2fe2c02 constants 2025-05-04 15:45:49 -07:00
Jonathan Campbell
c7dd8c8002 more 2025-05-04 14:48:31 -07:00
Jonathan Campbell
e0cfaad203 removed functions 2025-05-04 14:35:36 -07:00
Jonathan Campbell
fc7d762b0a Change magic numbers to readable constants 2025-05-04 14:21:06 -07:00
Jonathan Campbell
66550194cd common header. 2025-05-04 14:14:29 -07:00
Jonathan Campbell
12f255c42b remove mixer capture 2025-05-04 14:07:20 -07:00
Jonathan Campbell
a3176fb90d retab 2025-05-04 13:58:53 -07:00
Jonathan Campbell
e5c782875a Prepare for release 2025-05-03 09:43:37 -07:00
Jonathan Campbell
190c868010 Fix redundant "dynamic" setting that appears if both x86 and dynrec versions of the dynamic core are enabled 2025-05-01 21:31:15 -07:00
Jonathan Campbell
80a232679f
Merge pull request #5677 from maron2000/title_turbo
Show TURBO status in title bar
2025-05-01 15:55:52 -07:00
maron2000
4b68d37269 Update CHANGELOG 2025-05-01 21:43:54 +09:00
maron2000
35924401b0 Show TURBO status in title bar 2025-05-01 21:40:12 +09:00
Jonathan Campbell
2a8ac11812
Merge pull request #5671 from 1abcd/cht-translation
Update zh_TW.lng translation
2025-04-28 20:25:24 -07:00
Jonathan Campbell
e1af413791
Merge pull request #5669 from maron2000/add_translation
Fix translated messages in dialog box for macOS
2025-04-28 20:25:04 -07:00
Jonathan Campbell
fedcb4c9e0
Merge pull request #5668 from 1abcd/master
Add word joiners (U+2060) to PULL_REQUEST_TEMPLATE.md
2025-04-28 20:24:47 -07:00
Jonathan Campbell
3db0d22e3d
Merge pull request #5667 from maron2000/fix_mingw32error
Fix definition of __inline__ macro for MinGW32
2025-04-28 20:24:33 -07:00
Jonathan Campbell
60a16eb07d
Merge pull request #5665 from FredBezies/patch-5
Another fr_FR.lng update
2025-04-28 20:24:20 -07:00
Jonathan Campbell
5d0773e2f4
Merge pull request #5664 from rderooy/master
Update Dutch (NL) translation
2025-04-28 20:24:09 -07:00
maron2000
a68bf785eb Fallback to LINUX to avoid build error of missing functions 2025-04-29 07:56:35 +09:00
1abcd
599005fb51
Update zh_TW.lng 2025-04-29 00:09:19 +08:00
maron2000
dac5dcac27 Add some more messages in dialog boxes to be translatable 2025-04-28 22:59:26 +09:00
maron2000
6aea02c6af Fix translated messages in dialog box for macOS 2025-04-28 20:54:43 +09:00
1abcd
d81172ef2f
add 3 word joiners between hash and 1234 2025-04-28 17:53:18 +08:00
maron2000
49f6e9a73b Apply workaround to MinGW32 builds only 2025-04-28 18:03:30 +09:00
maron2000
62382b1fd9 Fix definition of __inline__ macro for MinGW32 2025-04-28 16:02:08 +09:00
FredBezies
715392e623
Another fr_FR.lng update
Synchronizing with last translations, as usual :)
2025-04-27 19:34:07 +02:00
Robert
6566d363ee
Merge branch 'joncampbell123:master' into master 2025-04-27 17:08:13 +02:00
Robert de Rooy
a48b82ab22 Update Dutch (NL) translation 2025-04-27 17:07:41 +02:00
Jonathan Campbell
87314cf0ab
Merge pull request #5663 from DieSkaarj/master
Elucidate Surface Output in Menu and .conf
2025-04-27 08:01:18 -07:00
David 'Erosion' Oberlin
bc30a2eb40
Merge pull request #2 from joncampbell123/master
Update
2025-04-27 15:01:12 +01:00
Jonathan Campbell
aa978c8172
Merge pull request #5661 from maron2000/add_translation
Make messages in dialog translatable (messages.cpp)
2025-04-27 06:31:06 -07:00
Jonathan Campbell
4cc8a1edf1
Merge pull request #5660 from FredBezies/patch-4
Tweaking french translation
2025-04-27 06:30:32 -07:00
David 'Erosion' Oberlin
1c86c0751c
Update sdlmain.cpp 2025-04-27 13:22:58 +01:00
David 'Erosion' Oberlin
a0e22b3b5c
Update dosbox.cpp
Revenge of the Typo
2025-04-27 13:17:50 +01:00
David 'Erosion' Oberlin
50b49ca4fd
Merge pull request #1 from joncampbell123/master
Update to latest codebase
2025-04-27 12:39:46 +01:00
David 'Erosion' Oberlin
896000f1c2
Elucidation on what Output: Surface is. 2025-04-27 12:37:21 +01:00
David 'Erosion' Oberlin
dac35f8778
Typo 2025-04-27 12:36:09 +01:00
maron2000
c3e8acda5d Make messages in dialog translatable (messages.cpp) 2025-04-26 11:39:16 +09:00
maron2000
4991228780 Delete unused function 2025-04-26 10:56:48 +09:00
maron2000
7ef7167080 Change insertion order of messages to make it easily findable 2025-04-26 10:55:49 +09:00
maron2000
b2c8dfbebc Delete not used 2025-04-26 10:54:17 +09:00
maron2000
9148698602 Refactor LoadMessageFile() 2025-04-26 10:52:45 +09:00
maron2000
a45168c7e5 Add prototype to header and some comments 2025-04-26 09:01:14 +09:00
FredBezies
220d4aaad3
Tweaking french translation
Fixing typos and missing translation added.
2025-04-25 20:02:20 +02:00
Jonathan Campbell
bf6e0af798
Merge pull request #5659 from checktext00/patch-1
Update macOS internal link
2025-04-25 07:54:56 -07:00
Jonathan Campbell
383d19376c
Merge pull request #5653 from FredBezies/patch-3
Synchronizing french translation
2025-04-25 07:54:40 -07:00
Jonathan Campbell
c77ffb3c5f
Merge pull request #5652 from maron2000/fix_cdbrowse
Fix crash in MenuBrowseCDImage()
2025-04-25 07:54:23 -07:00
Jonathan Campbell
3300765a9d
Merge pull request #5651 from maron2000/add_translation
Fix Linux needs dialog messages in UTF8, not guest codepage
2025-04-25 07:54:07 -07:00
checktext00
c3a08647a4
Update macOS internal link 2025-04-25 11:49:35 +00:00
maron2000
9c96418a21 Fix non-DBCS and newline character handling in Windows 2025-04-25 20:32:26 +09:00
FredBezies
9afe84b6fc
Synchronizing french translation
To last english update
2025-04-24 21:06:18 +02:00
maron2000
7c70d5d86c Fix quote and newline character handling in Linux 2025-04-24 18:28:20 +09:00
maron2000
5bb05e6136
Fix crash in MenuBrowseCDImage() 2025-04-24 16:11:44 +09:00
maron2000
9da348e845 Fix Linux needs dialog messages in UTF8, not guest codepage 2025-04-24 12:44:45 +09:00
Jonathan Campbell
4102710e01
Merge pull request #5650 from maron2000/add_translation
Making more messages in dialog boxes to be translatable
2025-04-23 20:36:09 -07:00
maron2000
df425f676b Make messages in messagebox translatable (sdlmain.cpp) 2025-04-23 20:33:57 +09:00
maron2000
e5d6c9e981 Make messages in messagebox translatable (menu_callback.cpp) 2025-04-23 19:48:43 +09:00
maron2000
e78e0b3740 Fix tfd_quoteDetected to consider DBCS characters 2025-04-23 19:11:49 +09:00
maron2000
78fd99f893 Translation for warning message to mount images requiring DOS 7.0 or higher 2025-04-22 23:39:09 +09:00
Jonathan Campbell
60b9ade73d
Merge pull request #5649 from FredBezies/patch-2
Synchronizing french translation
2025-04-21 07:26:48 -07:00
Jonathan Campbell
40434ea54b
Merge pull request #5648 from rderooy/master
Update Dutch (NL) translation
2025-04-21 07:26:34 -07:00
FredBezies
d4ba3a8cac
Synchronizing french translation
To last update.
2025-04-21 13:02:58 +02:00
Robert de Rooy
b0a274da58 Update Dutch (NL) translation 2025-04-21 09:54:09 +02:00
Jonathan Campbell
e39750620e
Merge pull request #5647 from maron2000/refactor_message
Refactor message related functions
2025-04-20 09:12:27 -07:00
maron2000
85c722c5d4 Fix build error on Linux 2025-04-20 22:18:50 +09:00
maron2000
53a5d3dd30 Some more refactoring of MSG_Write() function 2025-04-20 22:02:27 +09:00
maron2000
86146dcaea Refactor message related functions 2025-04-20 21:47:03 +09:00
Jonathan Campbell
6635f3f175
Merge pull request #5646 from josch1710/master
MVP implementation of tinyfiledialogs for OS/2
2025-04-19 16:57:24 -07:00
Jonathan Campbell
7c5815ccdc Simplify code 2025-04-19 16:05:58 -07:00
Jonathan Campbell
2746e42077
Merge pull request #5645 from maron2000/add_translation
Make messages in dialog boxes to be translatable
2025-04-19 15:57:24 -07:00
josch1710
73a4931b5e
configure.ac
Fixed AM_CONDITIONAL
2025-04-19 17:42:34 +02:00
maron2000
80f9415337 Fix build error on macOS 2025-04-19 23:24:52 +09:00
maron2000
71535912f2 Add items to language files (English and Japanese) 2025-04-19 22:57:36 +09:00
maron2000
906dce6325 Start making messages in dialog boxes to be translatable 2025-04-19 22:56:05 +09:00
maron2000
3855d51f5c Add function to generate string from format 2025-04-19 22:55:04 +09:00
Jochen Sch„fer
1b9231e60a Finished first implementation of tfd support for OS/2 2025-04-19 15:37:03 +02:00
Jochen Sch„fer
c25a13b7c4 Merge branch 'master' of github.com:josch1710/dosbox-x 2025-04-18 19:02:52 +02:00
Jochen Sch„fer
eb88986e20 Work on tinyfiledialogs. Done are open and save dialogs as well as message boxes. 2025-04-18 19:02:36 +02:00
Jonathan Campbell
69c925592b
Merge pull request #5643 from maron2000/update_buildmd
Update BUILD.md
2025-04-18 07:27:46 -07:00
maron2000
57af3627ce Update BUILD.md 2025-04-18 18:58:20 +09:00
Jonathan Campbell
854215a086
Merge pull request #5642 from maron2000/add_translation
Fix a message showed in English instead of the translated one.
2025-04-18 01:25:40 -07:00
Jonathan Campbell
a2b4a6101a
Merge pull request #5641 from maron2000/update_changelog
Update CHANGELOG
2025-04-18 01:25:25 -07:00
Jonathan Campbell
0eaed9299c PC-98 CG MMIO fix for "Plants of Dragon" by ASCII. Not entirely sure if this fix reflects real PC-98 hardware, but it fixes the corrupted characters (custom char font 0xxx56 codes) in the game. Apparently that part of the CG cannot be read/written the full 16 bits, and if you try, you get 8 bits at a time anyway? 2025-04-17 23:42:40 -07:00
maron2000
e4bb9df395 Fixed a message showed in English instead of the translated one. 2025-04-18 14:22:28 +09:00
maron2000
ab6545a62a Update CHANGELOG 2025-04-18 14:19:09 +09:00
Jonathan Campbell
d43fd90a16 Revise EGA/VGA CRTC CGA/Hercules bit remapping to map out only those bits rather than as an upper mask bound 2025-04-17 21:11:12 -07:00
Jonathan Campbell
fd4631dec1
Merge pull request #5640 from maron2000/update_libpng
Update libpng to version 1.6.47
2025-04-17 20:49:12 -07:00
Jonathan Campbell
bf023ea707
Merge pull request #5637 from maron2000/update_xcopy
Update XCOPY to ver 1.9a
2025-04-17 20:48:51 -07:00
Jonathan Campbell
3646f868e1
Merge pull request #5636 from josch1710/master
OS/2: SDL 2 builds and run
2025-04-17 20:48:29 -07:00
Jonathan Campbell
1ef1db2a8e
Merge pull request #5634 from FredBezies/patch-1
Sync french translation
2025-04-17 20:48:11 -07:00
Jonathan Campbell
77f6be9cf4
Merge pull request #5632 from maron2000/update_changelog
Update CHANGELOG
2025-04-17 20:47:49 -07:00
maron2000
91f5d8b429
Add missing file for libpng arm builds 2025-04-18 07:56:40 +09:00
maron2000
7893ec8ee7 reset libpng.vcxproj 2025-04-17 22:39:33 +09:00
maron2000
73f450bf55 Update libpng to ver 1.6.47 2025-04-17 22:18:39 +09:00
maron2000
afbb38358d Replace XCOPY binary 2025-04-14 22:02:38 +09:00
maron2000
c73a28f647 XCOPY: Remove readonly attribute of copied file 2025-04-14 21:56:29 +09:00
maron2000
0e385cbeb7 Replace xcopy source files with ver. 1.9a 2025-04-14 20:52:30 +09:00
Jochen Sch„fer
881f9051ea OS/2: Moved os2.h in sdlmain for ncurses to work 2025-04-14 10:25:40 +02:00
Jochen Sch„fer
e6c3eacd5b OS/2: Made SDL2 version running 2025-04-14 09:43:41 +02:00
FredBezies
f0bfd27220
Sync french translation 2025-04-13 17:53:11 +02:00
maron2000
a6ab2d969b Update CHANGELOG 2025-04-13 21:10:48 +09:00
Jonathan Campbell
62c118932f
Merge pull request #5629 from maron2000/update_sdl2
Update SDL2 library to version 2.32.4
2025-04-12 21:57:44 -07:00
Jonathan Campbell
5c07e560fa
Merge pull request #5627 from josch1710/master
Do not use Enet on OS/2
2025-04-12 21:56:49 -07:00
Jonathan Campbell
e306b5d63e
Merge pull request #5625 from maron2000/fix_automake
Explicitly specify files in Makefile.am instead of using wildcards
2025-04-12 21:56:33 -07:00
Jonathan Campbell
f96bdf0006
Merge pull request #5624 from maron2000/add_translation
Add some missing translations
2025-04-12 21:56:15 -07:00
maron2000
36ccd11455 Reapply fix for build error on VS2022 2025-04-12 07:57:57 +09:00
maron2000
897df474cc Reapply DOSBox-X specific patches to SDL2 library 2025-04-11 23:50:49 +09:00
maron2000
dbc8730a72 Update SDL2 library to version 2.32.4 2025-04-11 23:06:05 +09:00
Jochen Schäfer
5f84caa1d4 Do not use Enet on OS/2 2025-04-11 12:56:14 +02:00
maron2000
802d310c04 Explicitly specify files in Makefile.am instead of using wildcards 2025-04-11 11:08:25 +09:00
maron2000
edc02d7a63 Add missing items to translation files 2025-04-09 21:59:19 +09:00
maron2000
e770c04d02 Add translations to language files (en_US, ja_JP) 2025-04-09 21:49:25 +09:00
maron2000
7407ad57cc Add translations for displaying usage of several commands 2025-04-09 21:45:45 +09:00
Jonathan Campbell
dcc08d7ece
Merge pull request #5622 from maron2000/mac_sdl2net
macOS Install SDL2_net in CI workflow to enable internal modem support
2025-04-07 12:07:52 -07:00
maron2000
44564f7e29 macOS: Add sdl2_net as required library 2025-04-07 23:35:20 +09:00
maron2000
25738a68fc macOS add required libraries to CI build workflow 2025-04-07 23:24:58 +09:00
Jonathan Campbell
d5e150f1db
Merge pull request #5614 from josch1710/master
More OS/2 porting
2025-04-06 23:52:34 -07:00
Jonathan Campbell
71c4ac1a34
Merge pull request #5620 from maron2000/update_changelog
Update CHANGELOG
2025-04-06 23:52:17 -07:00
Jonathan Campbell
a8c963d427
Merge pull request #5619 from maron2000/cleanup_warnings
Clean up un-used variables and some warnings
2025-04-06 23:52:03 -07:00
Jonathan Campbell
9b7722e7e9
Merge pull request #5618 from arifogel/ari-fix-savestate-buffer-overflow
Fix intermittent buffer overflow upon savestate
2025-04-06 23:51:43 -07:00
maron2000
24a9e58d25 Silence some more warnings 2025-04-06 20:17:40 +09:00
maron2000
c5596903ca Supress suggestions to add 'override' 2025-04-06 19:35:17 +09:00
maron2000
d0466d9165 Clean up unused variables 2025-04-06 18:54:39 +09:00
maron2000
2ea0b0a30a Update CHANGELOG 2025-04-06 18:32:50 +09:00
maron2000
3b99b9eae1 Clean up un-used variables and some warnings 2025-04-06 18:28:49 +09:00
Ari Fogel
9e091cb689 Fix intermittent buffer overflow upon savestate
* allocate missing byte for string terminator for savestate filename
2025-04-05 23:00:52 -07:00
Jochen Schäfer
40cb3fa5bb Reverted changes to misc_util 2025-04-03 08:08:15 +02:00
Jonathan Campbell
0ef6c2d020 oops 2025-04-02 23:02:26 -07:00
Jonathan Campbell
e1c16ed466 Update debug info 2025-04-02 22:53:21 -07:00
Jochen Schäfer
666ea1c4e9 Tried to change Enet exclusion. 2025-04-01 11:59:59 +02:00
Jochen Schäfer
e404ab8f35 Tried to change Enet exclusion. 2025-04-01 11:52:01 +02:00
josch1710
14e65687a9
Merge branch 'master' into master 2025-04-01 08:53:04 +02:00
Jochen Sch„fer
97200d5744 Excluded some code for OS/2 2025-04-01 08:13:26 +02:00
Jochen Sch„fer
d6f2be9be6 Implemented changing file time. Cleaned up tabs in LocalFile::Close 2025-04-01 08:09:30 +02:00
Jonathan Campbell
dce72c6f1b
Merge pull request #5613 from maron2000/fix_color
Fix a couple of typos in COLOR command
2025-03-31 12:25:24 -07:00
maron2000
ffec05f6db Fix mistake of yellow color in COLOR command 2025-03-31 21:10:09 +09:00
maron2000
d3019b644b Fix typo of default foreground color in COLOR command 2025-03-31 20:59:26 +09:00
Jonathan Campbell
224c031756 more 2025-03-31 03:44:40 -07:00
Jonathan Campbell
5003fed8dd oops 2025-03-31 03:42:49 -07:00
Jonathan Campbell
90a1a2a9f3 fix italics 2025-03-31 03:37:30 -07:00
Jonathan Campbell
7c8e6b5eb0 try 2025-03-31 03:36:38 -07:00
Jonathan Campbell
0ee4867844 try 2025-03-31 03:35:26 -07:00
Jonathan Campbell
c5b8f7907f more 2025-03-31 03:28:19 -07:00
Jonathan Campbell
61789d0099 try 2025-03-31 03:08:08 -07:00
Jonathan Campbell
3ac921131e try 2025-03-31 03:04:14 -07:00
Jonathan Campbell
5c41f9d25f correct 2025-03-31 03:01:59 -07:00
Jonathan Campbell
040c570eab modes 2025-03-31 03:01:30 -07:00
Jonathan Campbell
b58893ef02 debug 2025-03-31 02:38:40 -07:00
Jonathan Campbell
59a285f217 debug 2025-03-31 02:25:38 -07:00
Jonathan Campbell
2b1ea9ff99 Time to document the video debug overlay 2025-03-31 01:33:09 -07:00
Jonathan Campbell
982ae13c48 Video debug: Correct VGA 256-color palette grid 2025-03-31 01:06:46 -07:00
Jonathan Campbell
19bc0c63c8
Merge pull request #5607 from josch1710/master
Some changes for porting OS/2
2025-03-31 00:42:23 -07:00
Jonathan Campbell
b72ae82f87
Merge pull request #5606 from LeoKids/patch-1
Update README.md
2025-03-29 09:19:49 -07:00
Jonathan Campbell
03a2264334
Merge pull request #5605 from maron2000/fix_backspace
Rewrite DBCS character handling of Backspace key in command history
2025-03-29 09:19:29 -07:00
Jonathan Campbell
b078538d99
Merge pull request #5604 from maron2000/color_fix
Fix COLOR command to match behavior on Windows
2025-03-29 09:19:13 -07:00
maron2000
af39264c77 Additional fix for Backspace key in shell 2025-03-29 23:56:41 +09:00
Jochen Sch„fer
e0ef6beb90 Adding OS/2 implementation for physfs 2025-03-29 10:59:14 +01:00
Jochen Sch„fer
57fc5831d3 Some OS/2 specific changes. Patches are not complete yet 2025-03-29 10:35:37 +01:00
Leo
a42bfd362e
Update README.md 2025-03-28 19:33:55 -03:00
maron2000
49f77509a2 Rewrite DBCS character handling of Backspace key in command history 2025-03-28 23:49:15 +09:00
maron2000
1cb0dcf652 Update CHANGELOG 2025-03-28 18:57:13 +09:00
maron2000
90c33545e7 Fix COLOR command to match behavior on Windows 2025-03-28 18:49:03 +09:00
Jonathan Campbell
36888dc377
Merge pull request #5602 from maron2000/update_changelog
Update CHANGELOG
2025-03-28 00:10:22 -07:00
Jonathan Campbell
418756a9d1
Merge branch 'master' into update_changelog 2025-03-28 00:10:15 -07:00
Jonathan Campbell
6c944cfc82 PC-98 INT 18h AH=10h set cursor blink, and side effect as well, to eliminate blinking cursor in PC-98 port of Lemmings 2025-03-27 19:46:48 -07:00
Jonathan Campbell
b21934e91b
Merge pull request #5598 from josch1710/master
Renamed variable ulimit to mlimit (bios.cpp) and class COLOR to COLORPGM (dos_programs.cpp)
2025-03-27 17:21:04 -07:00
maron2000
7bdf5e0c79 Update CHANGELOG 2025-03-27 21:06:16 +09:00
Jonathan Campbell
fc3dcc496f
Merge pull request #5599 from maron2000/fix_int21ah0a
Int21h AH=0x0a Keep cursor position if keyboard buffer full
2025-03-26 11:00:06 -07:00
Jonathan Campbell
d89109b6c1
Merge pull request #5596 from maron2000/fix_int21ah01
Fix INT21h AH=01 echo behavior
2025-03-26 10:57:00 -07:00
Jonathan Campbell
01567b9ee1
Merge pull request #5595 from maron2000/fix_insertbug
Fix insertion of characters in command history
2025-03-26 10:56:41 -07:00
Jonathan Campbell
f60ed08dc5
Merge pull request #5594 from fuel-pcbox/master
A plethora of MMX and SSE fixes
2025-03-26 10:56:11 -07:00
Jochen Sch„fer
3f9fcbd34c Corrected text 2025-03-26 16:20:18 +01:00
maron2000
b0a799e820 Int21h AH=0x0a Keep cursor position if keyboard buffer full 2025-03-26 23:07:10 +09:00
maron2000
d7673db596 Consider autodbcs option in device_CON::Write 2025-03-26 21:05:24 +09:00
Jochen Schäfer
a5d1dcc6e6 Renamed variable ulimit to mlimit (bios.cpp) and class COLOR to COLORPGM, because both symbols are always defined in OS/2 EMX. 2025-03-26 08:00:38 +01:00
maron2000
857ffa8d42 Fix INT21h AH=01 echo behavior 2025-03-25 23:32:57 +09:00
maron2000
ef64e0b3ff Fix insertion of characters in command history 2025-03-25 22:36:08 +09:00
fuel-pcbox
b1497f2031 More MMX fixes 2025-03-24 20:16:19 -05:00
fuel-pcbox
9df6b8dcb7 Fix MMX PMULLW 2025-03-24 20:04:47 -05:00
fuel-pcbox
fe50caebf9 Fix SSE MOVHPS r/m,reg 2025-03-24 19:50:38 -05:00
Jonathan Campbell
cdbade7897
Merge pull request #5592 from 1abcd/zh-language
Add a missing blank line for zh_TW and zh_CN language files
2025-03-24 10:59:14 -07:00
Jonathan Campbell
bd06080d7e
Merge pull request #5586 from fuel-pcbox/sse-fixes2
Update CHANGELOG
2025-03-24 10:43:51 -07:00
fuel-pcbox
8a3db63410 Update CHANGELOG 2025-03-24 12:38:24 -05:00
1abcd
6000de10ce
Update zh_TW.lng 2025-03-25 01:22:20 +08:00
1abcd
ec436bdc8f
add a missing blank line 2025-03-25 01:18:25 +08:00
Jonathan Campbell
451679c707
Merge pull request #5589 from joncampbell123/dependabot/github_actions/actions/upload-artifact-4.6.2
Bump actions/upload-artifact from 4.6.1 to 4.6.2
2025-03-24 09:06:24 -07:00
dependabot[bot]
3b4b72d00e
Bump actions/upload-artifact from 4.6.1 to 4.6.2
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.1 to 4.6.2.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.6.1...v4.6.2)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-24 12:28:49 +00:00
Jonathan Campbell
b6e7250928
Merge pull request #5585 from fuel-pcbox/sse-fixes2
Fix MOVSS reg,r/m memory form
2025-03-23 22:36:01 -07:00
fuel-pcbox
cf19f34d41 Fix MOVSS reg,r/m memory form 2025-03-23 22:50:06 -05:00
Jonathan Campbell
ea9c2eac9c
Merge pull request #5576 from zyebytevt/master
Fix creation of overlay special files
2025-03-23 19:20:59 -07:00
Jonathan Campbell
b0ea99cfb0
Merge pull request #5578 from DwayneSelsig/master
Replace SetPixel with DIB Section Direct Memory Access for faster printing
2025-03-23 19:20:22 -07:00
Jonathan Campbell
8f1a2f0fea
Merge pull request #5580 from fuel-pcbox/sse-fixes2
Fix SSE UNPCKLPS/UNPCKHPS
2025-03-22 22:59:35 -07:00
Jonathan Campbell
b9d21aaf00
Merge pull request #5575 from maron2000/fix_jphostkey
Fix Host key (F11, F12) handling in Codepage 932 (Japanese Shift-JIS).
2025-03-22 22:57:15 -07:00
Jonathan Campbell
be4adccd34
Merge pull request #5574 from maron2000/fix_DBCSline_end
More fixes for glitch of DBCS character at the end of a line
2025-03-22 22:56:56 -07:00
fuel-pcbox
0acdcbc088 Fix SSE UNPCKLPS/UNPCKHPS 2025-03-22 17:31:45 -05:00
Dwayne Selsig
c792b47e94
Optimize outputPage: Merge SDL Locks & Streamline 8-bit DIBSection
Increased filename buffer to 512 bytes to prevent potential buffer overruns.

Consolidated separate SDL_LockSurface/SDL_UnlockSurface calls into a single lock session to both extract the SDL palette for the BITMAPINFO color table and copy the pixel data via memcpy, reducing lock overhead.

Utilized an 8-bit DIBSection (top-down) for printer output, ensuring the palette is correctly populated from the SDL surface.
Improved GDI resource cleanup by restoring the original bitmap in the memory DC before deleting the DIBSection.
2025-03-21 22:11:12 +01:00
Dwayne Selsig
78f6b2fc8b
Replace SetPixel with DIB Section Direct Memory Access for faster printing
The previous implementation used SetPixel to update each pixel individually, which incurred significant overhead due to the many system calls. 

This change replaces those calls with a DIB Section approach, where pixel data is written directly into a memory buffer and then blitted in one go using StretchBlt. This dramatically improves performance.

Additionally, the new implementation uses a higher color depth (more bits per pixel) instead of the old 8‑bit format. This allows for a sharper printed output.
2025-03-21 17:43:46 +01:00
ZyeByte
3495be4cff
Fix creation of overlay special files 2025-03-20 13:33:44 +01:00
maron2000
611e325df0 Move to end of line before executing command 2025-03-20 20:11:06 +09:00
maron2000
dcba958632 Fix DBCS character handling of Home and End key in command history 2025-03-20 20:05:24 +09:00
maron2000
b1d8a62706 Update CHANGELOG 2025-03-20 19:02:13 +09:00
maron2000
aae0380502 Fix Host key (F11, F12) handling in Codepage 932 (Japanese Shift-JIS) 2025-03-20 19:01:54 +09:00
maron2000
b15845add2 Fix DBCS character handling of Backspace key in command history 2025-03-20 17:36:23 +09:00
maron2000
51f92bf625 Fix DBCS character handling of Delete key in command history 2025-03-19 23:44:01 +09:00
Jonathan Campbell
4d7257dc15
Merge pull request #5571 from fuel-pcbox/sse-fixes
Fix SSE PSADBW
2025-03-17 12:35:35 -07:00
fuel-pcbox
87076c5a0e Fix SSE PSADBW 2025-03-17 13:52:48 -05:00
Jonathan Campbell
31a169b2d6
Merge pull request #5569 from maron2000/bump_esfmu
Update CHANGELOG
2025-03-17 07:45:13 -07:00
maron2000
47b5d08fb2 Update CHANGELOG 2025-03-17 21:09:26 +09:00
Jonathan Campbell
dce4a4482f
Merge pull request #5567 from maron2000/bump_esfmu
Bump ESFMu to ver 1.2.6
2025-03-16 21:33:58 -07:00
Jonathan Campbell
aeb17890db
Merge pull request #5566 from maron2000/fix_cdlabel
Add a dot to CD labels when longer than 8 characters
2025-03-16 21:33:33 -07:00
maron2000
f904d11942 Bump ESFMu to ver 1.2.6 2025-03-15 21:36:46 +09:00
maron2000
e1d74ab354 Add a dot to CD labels when longer than 8 characters 2025-03-15 21:12:38 +09:00
Jonathan Campbell
21ff0569e2
Merge pull request #5563 from 1abcd/patch-1
Update CHANGELOG and zh_TW language file
2025-03-14 10:00:08 -07:00
Jonathan Campbell
16a29e7bce
Merge pull request #5561 from DieSkaarj/master
Isolated Modeswitching for use with SDL2 only
2025-03-14 09:59:50 -07:00
1abcd
f2ea3881fe
shorten sentence 2025-03-14 19:08:17 +08:00
1abcd
75537db759
Update zh_TW.lng 2025-03-14 18:34:04 +08:00
David 'Erosion' Oberlin
819b76c665
Isolated Modeswitching for use with SDL2 only
n/t
2025-03-14 09:48:36 +00:00
Jonathan Campbell
cf7ed0d9dd Allow dos mem limit to direct DOS kernel allocation, the same as memsizekb, so you can have 640KB of RAM but cram DOS into the first 4KB for example 2025-03-13 23:28:04 -07:00
Jonathan Campbell
fe4544d0f5
Merge pull request #5557 from DieSkaarj/master
Toggle modeswitching
2025-03-13 21:34:02 -07:00
David 'Erosion' Oberlin
608f2787a0
Toggle modeswitching 2025-03-14 01:06:16 +00:00
David 'Erosion' Oberlin
ab1b45e39e
Toggle modeswitching 2025-03-14 01:04:45 +00:00
David 'Erosion' Oberlin
6156ccb990
added modeswitch toggle
A toggle for letting DOSBox-X determine what resolution, through SDL2, to set the monitor hasbeen implemented.
2025-03-14 00:59:28 +00:00
maron2000
cca9d1b80b Fix DBCS character handling of right key in command history 2025-03-14 00:07:08 +09:00
maron2000
7e84436e0d Fix DBCS character handling of left key in command history 2025-03-13 22:33:57 +09:00
Jonathan Campbell
8b97c33f29 correction, from VPT 2025-03-13 02:01:35 -07:00
1abcd
57de75b544
Update CHANGELOG 2025-03-13 01:03:41 +08:00
maron2000
b78e670f3e Fix corrupted display of command history of DBCS codepage 2025-03-11 23:24:14 +09:00
maron2000
d83b26263d Fix DBCS first byte handling such as when pasted from clipboard 2025-03-11 23:23:03 +09:00
Jonathan Campbell
28a6bb6047
Merge pull request #5550 from joncampbell123/dependabot/github_actions/robinraju/release-downloader-1.12
Bump robinraju/release-downloader from 1.11 to 1.12
2025-03-10 09:05:41 -07:00
dependabot[bot]
75b60ab130
Bump robinraju/release-downloader from 1.11 to 1.12
Bumps [robinraju/release-downloader](https://github.com/robinraju/release-downloader) from 1.11 to 1.12.
- [Release notes](https://github.com/robinraju/release-downloader/releases)
- [Commits](https://github.com/robinraju/release-downloader/compare/v1.11...v1.12)

---
updated-dependencies:
- dependency-name: robinraju/release-downloader
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 12:26:36 +00:00
Jonathan Campbell
c6ef650655 VGA planar: Stop writing updates to the font[] array 2025-03-09 14:10:37 -07:00
Jonathan Campbell
223f9ad11f VGA: Draw EGA/VGA font bitmap directly from planar memory instead of the font[] array 2025-03-09 14:08:35 -07:00
Jonathan Campbell
8039575c43 VGA memory: Do not mask to memmask for planar EGA/VGA when the generic read/write handlers are used, because they mask already. Fixes bugs related to 640x350 4-color EGA 64kb mode 2025-03-09 13:50:55 -07:00
Jonathan Campbell
a545be8717
Merge pull request #5547 from maron2000/fix_DBCSline_end
Fix misaligned welcome screen in DBCS codepages
2025-03-09 12:29:01 -07:00
maron2000
4e9176d5ae Fix misaligned Welcome screen 2025-03-09 01:03:36 +09:00
maron2000
d9ce692fe9 Fix box character glitches in DBCS codepages 2025-03-08 23:29:36 +09:00
Jonathan Campbell
4e7b637bc1
Merge pull request #5543 from maron2000/fix_DBCSline_end
[WIP] A more universal fix for glitch of DBCS character at the end of a line
2025-03-08 05:34:46 -08:00
Jonathan Campbell
593f9d9bad
Merge pull request #5542 from maron2000/debug_tinyfiledialogs
Fix dialog for error of loading language files
2025-03-08 05:34:27 -08:00
maron2000
a7d740fd7a A more universal fix for glitch of DBCS character at the end of a line 2025-03-07 23:40:12 +09:00
maron2000
9d92f4e072 Fix dialog for error of loading language files 2025-03-07 20:22:51 +09:00
maron2000
9460e257df Add tinyfiledialogs in dosbox-x.vcxproj 2025-03-07 20:21:44 +09:00
Jonathan Campbell
38b86b3f6a
Merge pull request #5539 from FredBezies/patch-3
Fixing setcolor output
2025-03-06 06:44:56 -08:00
FredBezies
406bf1818a
Fixing setcolor output
Based on commit 5c253bb
2025-03-05 20:16:13 +01:00
Jonathan Campbell
d4b07df2d9
Merge pull request #5538 from 1abcd/cp950-patch
Remove duplicate code mappings of Chinese characters in cp950_uni.h
2025-03-05 10:52:11 -08:00
Jonathan Campbell
eacebc0770
Merge pull request #5537 from FredBezies/master
Another sync with en_US language file
2025-03-05 10:50:47 -08:00
Jonathan Campbell
daa89bbd31
Merge pull request #5536 from maron2000/add_translations
Fix misaligned SETCOLOR help message
2025-03-05 10:50:32 -08:00
1abcd
eea43f0b68
Update CHANGELOG 2025-03-06 00:22:15 +08:00
1abcd
5a6dc9876f
Remove two duplicate mappings of Chinese characters 2025-03-05 23:59:44 +08:00
FredBezies
847b96feeb
Another sync with en_US language file 2025-03-05 15:32:22 +01:00
maron2000
5c253bbadd Fix misaligned SETCOLOR help message 2025-03-05 23:11:02 +09:00
Jonathan Campbell
9330f0efc5
Merge pull request #5534 from maron2000/update_changelog
Update CHANGELOG
2025-03-05 01:51:17 -08:00
Jonathan Campbell
94443fe074
Merge pull request #5532 from maron2000/add_translations
Add more missing translations
2025-03-05 01:51:03 -08:00
maron2000
49e53318db
Update CHANGELOG 2025-03-05 08:33:53 +09:00
maron2000
d966618ff9
Update CHANGELOG 2025-03-05 08:27:50 +09:00
maron2000
e5b3fa24c7 Update ja_JP.lng 2025-03-04 21:13:23 +09:00
maron2000
16e34e7d90 Fix typo in en_US.lng 2025-03-04 20:43:09 +09:00
maron2000
d726cf05cd Add translations for BOOT, BIOSTEST commands 2025-03-03 20:23:10 +09:00
maron2000
f22f4a6b07 Add translations for SETCOLOR command 2025-03-03 20:05:51 +09:00
maron2000
566e6dab28 Add translations for AUTOTYPE, ADDKEY commands 2025-03-03 19:29:48 +09:00
maron2000
9ee5bf3c09 Add translations for CAPMOUSE command 2025-03-03 18:42:09 +09:00
maron2000
eb90c7f893 Add translations for VTEXT, NMITEST commands 2025-03-03 09:28:33 +09:00
maron2000
63d10bf7e2 Add translations for UTF8, UTF16 commands 2025-03-03 09:17:40 +09:00
Jonathan Campbell
ba48a170bf Fix timer handling to make IRQ 0 an edge trigger interrupt. Add code to PIC emulation to process said interrupts as edge trigger, do not signal the IRQ unless PIC_DeActivateIRQ() is called, then PIC_ActivateIRQ(). For some reason, this also seems to fix the audio in Tyrian 2000, though the audio still sounds a tiny bit crackly 2025-03-02 11:49:46 -08:00
Jonathan Campbell
cf3e9afe95
Merge pull request #5530 from FredBezies/patch-2
Fixing a typo and translate two missing lines
2025-03-02 10:49:58 -08:00
maron2000
4b550a7df1 Add translations for MODE command 2025-03-02 23:59:50 +09:00
maron2000
4c4d1c74e5 Add translations for IMGMOUNT command 2025-03-02 23:42:14 +09:00
maron2000
2a495ff057 Add translations for START command 2025-03-02 22:39:48 +09:00
FredBezies
58a9910349
Fixing a typo and translate two missing lines
This time, it is OK for french translation... Until new updates arrive for en_US language file.
2025-03-01 20:25:36 +01:00
Jonathan Campbell
16fe7e3c2b
Merge pull request #5527 from maron2000/fix_armbuild
Workaround for MSVC ARM64 CI build failure
2025-03-01 06:45:48 -08:00
Jonathan Campbell
4f5605755d
Merge pull request #5528 from maron2000/fix_DBCSline_end
Fix glitch of DBCS character at the end of a line
2025-03-01 06:45:26 -08:00
maron2000
b4fe202038 Fix glitch of DBCS character when first byte and second byte are separated at the end of line 2025-02-28 23:44:03 +09:00
maron2000
5ad1611003 Workaround for MSVC ARM64 CI build failure 2025-02-28 21:03:57 +09:00
Jonathan Campbell
8bf2057929
Merge pull request #5523 from FredBezies/patch-1
Update fr_FR.lng - last part
2025-02-27 08:02:03 -08:00
FredBezies
9796c37f06
Update fr_FR.lng - last part
Synchronizing with last en_US additions
2025-02-27 16:39:32 +01:00
Jonathan Campbell
a062cfd2a2
Merge pull request #5522 from 1abcd/cht-translation
Update zh_TW.lng
2025-02-27 07:09:18 -08:00
Jonathan Campbell
87c644b512
Merge pull request #5521 from 1abcd/uao-patch
Remove duplicate code mappings of Chinese characters in cp951_uni.h
2025-02-27 07:09:01 -08:00
Jonathan Campbell
b71d735882
Merge pull request #5516 from FredBezies/master
Update fr_FR.lng
2025-02-27 07:08:41 -08:00
Jonathan Campbell
1581113937
Merge pull request #5515 from maron2000/add_translations
Add missing translations
2025-02-27 07:08:30 -08:00
maron2000
dd2ba87f5c Add translations for BOOT command 2025-02-27 21:56:43 +09:00
maron2000
ff5a28e48c Add translations for LOADFIX command 2025-02-27 21:18:46 +09:00
maron2000
4df7c96aa4 Add translations for IMGMAKE command 2025-02-27 21:04:11 +09:00
1abcd
8856b35e05
Update zh_TW.lng 2025-02-27 12:01:21 +08:00
1abcd
d226ffcab6
Add files via upload 2025-02-26 17:38:48 +08:00
FredBezies
1cab2ecf59
Update fr_FR.lng
Synchronizing with last en_US changes
2025-02-25 20:38:05 +01:00
maron2000
79f093ed98 Add translations for IMGMOUNT command 2025-02-26 00:16:22 +09:00
maron2000
63ae7416c8 Add translation for INTRO command 2025-02-25 23:22:48 +09:00
maron2000
93f523b9c9 Add translation for IMGSWAP command 2025-02-25 23:16:58 +09:00
Jonathan Campbell
0ec58c0fda
Merge pull request #5513 from maron2000/add_translations
Add some missing translations
2025-02-24 07:56:52 -08:00
Jonathan Campbell
957c458124
Merge pull request #5512 from joncampbell123/dependabot/github_actions/actions/upload-artifact-4.6.1
Bump actions/upload-artifact from 4.6.0 to 4.6.1
2025-02-24 07:56:17 -08:00
maron2000
e8b623ebd8 Add translations for CFGTOOL command 2025-02-25 00:06:25 +09:00
maron2000
0742ff9e32 Add translations for RESCAN commands 2025-02-25 00:00:40 +09:00
maron2000
dcd34dcc52 Add translations for text mode commands 2025-02-24 23:53:49 +09:00
maron2000
b7e0408337 Add translations for INT2FDBG command 2025-02-24 23:40:02 +09:00
maron2000
cfa4dcb5fd Add translations for FLAGSAVE command 2025-02-24 23:32:14 +09:00
dependabot[bot]
533b916606
Bump actions/upload-artifact from 4.6.0 to 4.6.1
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.0 to 4.6.1.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.6.0...v4.6.1)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 13:13:54 +00:00
Jonathan Campbell
0504e5e5a4
Merge pull request #5502 from maron2000/fix_secure
Enable changing drives mounted prior to switching to securemode
2025-02-17 05:44:09 -08:00
Jonathan Campbell
aa8835de0e
Merge pull request #5501 from maron2000/update_changelog
Update CHANGELOG
2025-02-17 05:43:25 -08:00
maron2000
aaf8e37c41 Enable changing drives mounted prior to switching to securemode 2025-02-17 19:27:33 +09:00
maron2000
9f7e7f83b2 Update CHANGELOG 2025-02-17 18:59:25 +09:00
Jonathan Campbell
312fb0102e
Merge pull request #5499 from maron2000/ttf_fullscr_test
Fix fullscreen mode occasionally switched to windowed mode
2025-02-16 23:18:11 -08:00
Jonathan Campbell
f4fb537c74
Merge pull request #5498 from FredBezies/master
Update fr_FR.lng part 2
2025-02-16 23:17:50 -08:00
FredBezies
8685235c18
Update fr_FR.lng 2025-02-16 19:59:32 +01:00
Jonathan Campbell
a46d875026
Merge pull request #5497 from FredBezies/master
French translation update, part 1
2025-02-16 10:30:18 -08:00
FredBezies
3b9f0642c9
Merge pull request #1 from FredBezies/FredBezies-patch-1
Updating french translation, part 1
2025-02-16 10:29:23 +01:00
FredBezies
5ae3e0b626
Updating french translation, part 1
First part of the remaining translation. Part 2 in a few days.
2025-02-16 10:27:41 +01:00
Jonathan Campbell
6210372acd
Merge pull request #5494 from maron2000/fix_pc98ttf
Fix blank screen when output=ttf on PC-98 mode
2025-02-14 21:03:19 -08:00
maron2000
3536a78fab Re-enable TTF output in PC-98 mode 2025-02-15 01:16:34 +09:00
maron2000
5ca328ce22 Setup palette information for TTF output in PC-98 mode 2025-02-15 00:30:49 +09:00
Jonathan Campbell
2b739298a2 more 2025-02-12 16:24:17 -08:00
Jonathan Campbell
7e0d376182 correct 2025-02-12 15:45:50 -08:00
Jonathan Campbell
9e08fa5395
Merge pull request #5490 from maron2000/ttf_fullscr_fix
Fix crash when switching from fullscreen to window mode in TTF output
2025-02-12 11:07:54 -08:00
Jonathan Campbell
928c28f235 Clean up timer handling to make sure at all stages, the output signal correctly asserts or de-asserts the timer interrupt. Some modes during mode byte or counter program assert OUT high and would therefore trigger an interrupt. This allows the really weird interrupt handling in Tyrian 2000 to work and the game music and sound effects no longer stall during title, menu, and setup screens. It still does not fix the crackly Sound Blaster audio but I think some rework of the DMA mask/unmask events in sblaster.cpp can help. This also fixes the issue with Tyrian 2000 where the game speed also seems to control the speed of the music. 2025-02-12 08:54:45 -08:00
Jonathan Campbell
9dc6672c9a Read the Intel 8254 datasheet again, make some corrections. Our emulation is off and the weird timing code in Tyrian 2000 is showing how wrong it is 2025-02-12 08:24:54 -08:00
Jonathan Campbell
33dc3471d4 comments 2025-02-12 08:06:00 -08:00
Jonathan Campbell
b718ad45a8 DMA: Help other emulation code by offering a way to determine what triggered DMA_MASKED and DMA_UNMASKED events. It is not always the DOS guest that does it, internal functions of the DMA controller can cause it too 2025-02-12 05:52:48 -08:00
maron2000
75fd366a34 Fix fullscreen mode occasionally switched to windowed mode 2025-02-12 18:59:35 +09:00
maron2000
5a551035bc Delete unrequired procedures 2025-02-11 20:17:49 +09:00
maron2000
ba311ccfce Fix lins and cols options were ignored 2025-02-11 20:17:49 +09:00
maron2000
e82bbcfee8 Fix error message of number of columns and lines 2025-02-11 20:16:57 +09:00
maron2000
44877bc603 Fix crash when switching from fullscreen to window mode in TTF output 2025-02-11 09:33:39 +09:00
Jonathan Campbell
62e1c4fa38 DMA: Add callback event for when the guest reads DMA channel status. Sound Blaster: If the guest reads DMA status, render up to current time so that the guest can see very accurate DMA counter movement. This still does not fix the occasional pop/crackle in Windows 95 if the sound driver is interrupted, but it seems to help Tyrian 2000 and remove the need for using Goldplay mode though audio still sounds a little bit crackly. 2025-02-10 07:59:36 -08:00
Jonathan Campbell
2c62e9d238 DMA documentation 2025-02-10 03:28:28 -08:00
Jonathan Campbell
3bbab42cd6 Try to help the Windows 95 SB16 driver a bit by rendering silence up to the point where DMA resumes on IRQ ACK 2025-02-09 14:20:57 -08:00
Jonathan Campbell
dd647dfa31 SB revision and notes 2025-02-09 12:45:21 -08:00
Jonathan Campbell
336229b299
Merge pull request #5481 from maron2000/fix_pc98ttf
Workaround for TTF output is blanked in PC-98 mode
2025-02-09 09:01:29 -08:00
maron2000
5acf6acf5d Workaround for TTF output freezes PC-98 mode 2025-02-09 22:50:17 +09:00
Jonathan Campbell
5d509c81b2
Merge pull request #5479 from maron2000/fix_zipmount
Fix mounting zip files with white space in their names
2025-02-09 00:09:45 -08:00
Jonathan Campbell
df9df43cfb
Merge pull request #5478 from maron2000/fix_ttf
Fix BIOS screen and crash on reboot on TTF mode
2025-02-09 00:09:32 -08:00
maron2000
c5ed30c656 Fix mounting zip files with white space in their names 2025-02-09 11:51:07 +09:00
maron2000
8255bd0ad7 Fix Linux build error 2025-02-09 11:01:07 +09:00
maron2000
c9676e2107 Fix build error in Linux 2025-02-09 01:15:39 +09:00
maron2000
9c84d0f503 Fix BIOS screen and reboot crash on TTF mode 2025-02-09 00:49:19 +09:00
Jonathan Campbell
31b31e4de4 PC-98 mode: Properly re-register port 0x43B on guest reset
[https://github.com/joncampbell123/dosbox-x/issues/5475]
2025-02-07 07:22:58 -08:00
Jonathan Campbell
324193b963 Savestate: Update "flagged" file snapshot code 2025-02-06 21:02:32 -08:00
Jonathan Campbell
2b55b39218 Remove unused 2025-02-06 17:43:41 -08:00
Jonathan Campbell
88b6b84b0b Clean up slot info reading 2025-02-06 17:42:15 -08:00
Jonathan Campbell
c9a8d687f4 Savestate: Now cleanup load code 2025-02-06 17:28:08 -08:00
Jonathan Campbell
7e62fd4228 Move out C++ ZIP stdbuf 2025-02-06 16:23:51 -08:00
Jonathan Campbell
a03a4d6f6e Remove unused code, add TODO because this change temporarily breaks flagged file feature 2025-02-06 16:10:33 -08:00
Jonathan Campbell
c1d9c19718 Correct version match check 2025-02-06 16:03:02 -08:00
Jonathan Campbell
58769a8f4d Finish save state code, saving 2025-02-06 15:50:40 -08:00
Jonathan Campbell
4d177766ce The existing save state code sucks, start cleanup. Instead of using std::ostringstream, copying to a temp file, adding to a ZIP archive by opening/closing repeatedly, lets just open the ZIP, streambuf directly into it, and be done. In this commit, informational data is now writing in that fashion 2025-02-06 15:19:15 -08:00
Jonathan Campbell
ef9413ee93 Savestate: Remove unused code 2025-02-06 12:42:23 -08:00
Jonathan Campbell
e1bb71b01b
Merge pull request #5474 from maron2000/update_changelog
Update CHANGELOG
2025-02-06 08:17:20 -08:00
Jonathan Campbell
ddc327f7ad
Merge pull request #5473 from maron2000/fix_kanainput
Fix direct input of half-width kana
2025-02-06 08:17:02 -08:00
Jonathan Campbell
5a3d4e58b8
Merge pull request #5472 from Torinde/patch-8
386EX/CX - 26-bit
2025-02-06 08:16:06 -08:00
maron2000
ce77f9cb87 Update CHANGELOG 2025-02-06 23:51:50 +09:00
maron2000
c01b5e6729 Fix direct input of half-width kana 2025-02-06 23:31:05 +09:00
Torinde
3da77886df
386EX/CX - 26-bit
Fixes #5442
2025-02-06 14:23:31 +01:00
Jonathan Campbell
ff94b4c73b
Merge pull request #5471 from maron2000/master
Fix PC-98 INT 1Fh, AH=90h source and destination address
2025-02-06 04:46:21 -08:00
maron2000
dc0b2514dc Fix PC-98 INT 1Fh, AH=90h source and destination address 2025-02-06 20:56:46 +09:00
Jonathan Campbell
2a043be428 CPU correction 2025-02-05 16:35:18 -08:00
Jonathan Campbell
e35c36704c SB DSP commands related to "high speed" playback should require DSP 2.01 or higher. DSP 2.0 upgrade from SB 1.5 cannot do high speed playback 2025-02-05 16:34:53 -08:00
Jonathan Campbell
4bbf775894 Add sbtype values for Sound Blaster 1.0, 1.5, 2.0, and 2.01 2025-02-05 16:29:31 -08:00
Jonathan Campbell
594b7c1819 Do not init Sound Blaster CMS for PC-98 mode. Fix string compare for cms option. Reorder SB_TYPES to properly reflect card order from none, to Game Blaster, to SB 1, SB 2, SB Pro, and SB 16 so inequality tests can be used 2025-02-05 16:19:25 -08:00
Jonathan Campbell
37d4e04bf1
Merge pull request #5459 from bovirus/master
Italian language update
2025-02-04 15:29:52 -08:00
Jonathan Campbell
26ce615c91
Merge pull request #5465 from maron2000/update_lng
Update English translation file en_US.lng
2025-02-04 08:16:14 -08:00
maron2000
17dcf28c9d Update en_US.lng 2025-02-04 20:33:15 +09:00
bovirus
6823d15cdd
Italian language updates 2025-02-03 11:52:19 +01:00
bovirus
73d2103ba9
Italian language update 2025-02-03 10:57:38 +01:00
bovirus
6464dbc81c
Italian language update 2025-02-03 08:26:39 +01:00
Jonathan Campbell
84cc5e74cc
Merge pull request #5451 from maron2000/fix_backslash
Don't add trailing backslash in path name if it is already there.
2025-02-02 07:33:51 -08:00
maron2000
1384e159e1 Don't add trailing backslash in path name if it is already there. 2025-02-02 22:56:40 +09:00
Jonathan Campbell
60f501d553 Prepare for release 2025-02-01 07:07:24 -08:00
Jonathan Campbell
32b2c242e2
Merge pull request #5448 from maron2000/fix_win32
Revert commit 706fd0e to fix Windows build errors
2025-02-01 07:06:02 -08:00
Jonathan Campbell
4574eea39f
Merge pull request #5447 from maron2000/master
Update CHANGELOG
2025-02-01 07:05:02 -08:00
Jonathan Campbell
db28adfec1 Prepare for release 2025-02-01 07:02:22 -08:00
maron2000
40c4e39c9f Revert fluid_sdl2.c to fix build errors for Windows 2025-02-01 21:55:05 +09:00
maron2000
9ff5bd99f6 Revert fluid_adriver.c to fix build errors for Windows 2025-02-01 21:47:17 +09:00
maron2000
6f9026f77f
Update CHANGELOG 2025-02-01 17:06:01 +09:00
Jonathan Campbell
f9f5f83503 update dosbox.conf 2025-01-31 23:12:10 -08:00
Jonathan Campbell
0e3c0c9dcd Update build date 2025-01-31 23:11:54 -08:00
Jonathan Campbell
8c654af413 Update version 2025-01-31 23:11:20 -08:00
Jonathan Campbell
493953b302 CHANGELOG 2025-01-31 23:05:15 -08:00
Jonathan Campbell
75aa320879 SDL2: Use the newer sound API and make some requests to improve audio rendition 2025-01-30 20:27:07 -08:00
Jonathan Campbell
706fd0ecd1 Remove unused SDL2 Fluidsynth code 2025-01-30 19:22:41 -08:00
Jonathan Campbell
381a2f9bc7 Check to make sure SDL gave us the format we wanted 2025-01-30 18:57:45 -08:00
Jonathan Campbell
5d01c5f13e idea: add option to switch off A20 gate automatically on EXEC if DOS program is being loaded below the 64KB mark that would require LOADFIX -a. Real DOS doesn't do this, so the option is off by default. 2025-01-29 16:47:26 -08:00
Jonathan Campbell
bbd3f69760
Merge pull request #5439 from FredBezies/master
Update gui_tk.h
2025-01-27 12:11:38 -08:00
FredBezies
60013d5af9
Update gui_tk.h
Fixes bug https://github.com/joncampbell123/dosbox-x/issues/5433
2025-01-27 17:13:45 +01:00
Jonathan Campbell
a7b07d82d6
Merge pull request #5438 from maron2000/bump_tiny
Bump tinyfiledialogs to v3.19.1
2025-01-27 08:07:08 -08:00
Jonathan Campbell
1092a49a0c
Merge pull request #5436 from maron2000/fix_fontx
Update CHANGELOG
2025-01-27 08:06:46 -08:00
maron2000
290bba0218 Reapply patches for HaikuOS and Win9x low-end builds 2025-01-27 20:36:44 +09:00
maron2000
b48990638d Bump tinyfiledialogs to v3.19.1 2025-01-27 20:27:23 +09:00
maron2000
fe7351120f Update CHANGELOG 2025-01-27 18:56:27 +09:00
Jonathan Campbell
ac82a1af9d
Merge pull request #5435 from maron2000/fix_fontx
Fix regression of specifying DBCS fontx file was ignored
2025-01-26 23:05:53 -08:00
maron2000
a298bc18ca Fix regression of specifying DBCS fontx file was ignored 2025-01-27 14:26:53 +09:00
Jonathan Campbell
a94669ea4f
Merge pull request #5430 from maron2000/fix_quote
Fix adding quotes to filenames for IMGMOUNT
2025-01-25 22:57:32 -08:00
Jonathan Campbell
8f4a96edc1
Merge pull request #5429 from maitchison/video-memsize-fix
Fixed bug where bios memSize was not set when using TTF. This caused …
2025-01-25 22:56:25 -08:00
maron2000
f2639d44be Double quote already added, so don't add it here 2025-01-25 22:03:59 +09:00
maron2000
2d7e7507e7 Fix adding quotes to filenames for IMGMOUNT 2025-01-25 11:40:20 +09:00
Matthew Aitchison
784b956020 Fixed bug where bios memSize was not set when using TTF. This caused memory corruption when viewing output in 80x50 text mode on the Freepascal text-mode IDE. 2025-01-25 11:31:48 +13:00
Jonathan Campbell
c58e898167 Make sure strcmp() is available from sdl_gui.cpp 2025-01-24 10:24:54 -08:00
Jonathan Campbell
4f6c4e4ad2 VS project update 2025-01-23 17:49:16 -08:00
Jonathan Campbell
34ffbe3fa1 paging cleanup 2025-01-23 17:45:16 -08:00
Jonathan Campbell
90c4b4a88d Paging cleanup 2025-01-23 17:44:24 -08:00
Jonathan Campbell
97c353045e cleanup 2025-01-23 17:23:07 -08:00
Jonathan Campbell
c487bdd002 cleanup 2025-01-23 17:20:00 -08:00
Jonathan Campbell
0056ace8d7 put translate_array[] behind inline function for cleanup 2025-01-23 03:12:39 -08:00
Jonathan Campbell
5e29db4f0b VGA render-on-demand: Fix bug where if render-on-demand changes, but nothing else does, the screen stops updating. This fixes a bug where a PC-98 program can cause the display to stop updating if using GDC commands to switch off PEGC 256-color mode without any other mode changes (KOARMADA.EXE) 2025-01-22 15:52:10 -08:00
Jonathan Campbell
1acaf5c877 PC-98: Add I/O port 43Bh (read only at this time) to indicate whether the 15MB ISA "memory hole" is open or not. Some test cases use it to decide which mapping of the PEGC linear framebuffer to use (KOARMADA.EXE) 2025-01-22 15:18:41 -08:00
Jonathan Campbell
9e9e6924b2 PC-98 keyboard ISR: On IRQ 1, assume keyboard has data available and process at least one byte, before checking status for more. The PC-98 patched version of CWSDPMI appears to read the keyboard data itself before passing control to the ISR and this is necessary for keyboard input to work at all (test case KOARMADA.EXE and DJGPP libc function kbhit()) 2025-01-22 14:57:58 -08:00
Jonathan Campbell
30f0fb1881 Update BIOS entry point F000:FFF0 to match DJGPP check for PC-98 in PC-98 mode 2025-01-22 14:29:53 -08:00
Jonathan Campbell
b3e2d6e2be For PC-98 mode, add a patched version of CWSDPMI.EXE made for PC-98 systems 2025-01-22 12:19:04 -08:00
Jonathan Campbell
4e21a21b39 Paging cleanup 2025-01-22 12:04:20 -08:00
Jonathan Campbell
ea866e57f9 Paging cleanup 2025-01-22 11:58:04 -08:00
Jonathan Campbell
2296d2f4fc Paging cleanup 2025-01-22 11:39:38 -08:00
Jonathan Campbell
bec1bc4f2f CWSDPMI.EXE is IBM PC specific. It happens to work in PC-98 mode if nothing else ever happens. Perhaps we can find a patched version for PC-98 mode someday 2025-01-22 08:24:34 -08:00
Jonathan Campbell
33ad1335f2
Merge pull request #5423 from maron2000/msys_ucrt
Add experimental UCRT64 build in nightly builds
2025-01-22 07:13:54 -08:00
Jonathan Campbell
4c0f6171c0 Paging define TLB entry data type and bit masks as bit positions for future cleanup. Some of the paging fields do not need to be Bitu, they only need 32 bits 2025-01-22 00:16:12 -08:00
Jonathan Campbell
7707d7b8a9 bitop.h include guard 2025-01-22 00:15:18 -08:00
maron2000
bf919a1a61
Fix filename of UCRT64 builds 2025-01-22 12:24:09 +09:00
maron2000
a78be6a639
Add ucrt64 build 2025-01-22 11:30:12 +09:00
Jonathan Campbell
70cc543dc7 I am having no problem with PC-98 video emulation, but to address the complaint that DOSBox-X is not showing anything, make sure the VGA code knows the mode is M_PC98 2025-01-21 17:24:04 -08:00
Jonathan Campbell
c92cf550bc Fix ISA PnP macros, the type parameter is supposed to accept the output of another macro that inserts 3 byte constant values. This should fix issues caused by past cleanup that broke Windows 9x/ME installs 2025-01-21 17:05:24 -08:00
Jonathan Campbell
4062962700 Update VS project 2025-01-20 21:20:37 -08:00
Jonathan Campbell
7b424c1dc2 forgot a header file 2025-01-20 21:17:51 -08:00
Jonathan Campbell
53fbe1b17f Begin adding PC-98 BIOS data area constants, now that Hackipedia.org finally has a complete English translation of Undocumented 9801, 9821 Volume 2 2025-01-20 20:39:03 -08:00
Jonathan Campbell
efa9bd4fff Fill out bios.h 2025-01-20 18:47:50 -08:00
Jonathan Campbell
1bb52e5672 retab bios.h 2025-01-20 18:17:50 -08:00
Jonathan Campbell
9136a1ca19 Arrange and fix again 2025-01-20 18:05:57 -08:00
Jonathan Campbell
01793d0d41 Wait, false alarm. Retab skewed the comments 2025-01-20 18:04:15 -08:00
Jonathan Campbell
1d47b2e11f retab dos.cpp 2025-01-20 17:57:38 -08:00
Jonathan Campbell
865c96725c Cleanup DOS CTRL+C handling, remove check against NULL CTRL+C handler because DOS command shell installs one now, change C++ exception throw code to something different so that if the exception is somehow caught farther up it will not be mistaken for another signal. "It's over 9000!" does not apply here. 2025-01-20 17:44:15 -08:00
Jonathan Campbell
223342c2a8 Cleanup VGA other code 2025-01-20 17:31:39 -08:00
Jonathan Campbell
4c67f61244 VGA convenience defines, consolidate into vga.h and remove from individual cpp files 2025-01-20 17:19:32 -08:00
Jonathan Campbell
b26b851698 VGA DetermineMode: Move out S3-specific mode determination into its own callback, leave only standard EGA/VGA there 2025-01-20 17:01:23 -08:00
Jonathan Campbell
bb63119c7f Move DetermineMode DCGA check into its own function 2025-01-20 16:53:58 -08:00
Jonathan Campbell
2bb5825df3 It would be better not to develop a KVM CPU core while cleaning up the code 2025-01-20 16:49:58 -08:00
Jonathan Campbell
611fc2b387 All other SVGA chipsets have to register set_clock, why is the S3 version part of the core VGA_SetClock function? Move out 2025-01-20 16:36:50 -08:00
Jonathan Campbell
a567ae0eb0 cleanup, remove VGA sequencer-related functions that did nothing 2025-01-20 16:29:13 -08:00
Jonathan Campbell
868c15023a PC-98 ARTIC timer needs its own CPP file 2025-01-20 16:13:46 -08:00
Jonathan Campbell
318b3335e6 cleanup 2025-01-20 16:08:12 -08:00
Jonathan Campbell
8630e55f84 Ooh, VGA cleanup that splits I/O up has a flaw. map() needs
to be called after split I/O, not before. It may not matter
for most DOS games but whenever misaligned reads/writes happen
to VGA memory, glitches happen. Apparently test case
"Baoxiao Sanguozhi" triggers this issue.
2025-01-20 12:51:51 -08:00
Jonathan Campbell
dabe22c0ba Fix the normal and simple core. Cleanup broke it. 2025-01-20 11:59:13 -08:00
Jonathan Campbell
d92d65f69d
Merge pull request #5417 from xrip/patch-1
[FIX] CMS was always disabled regardles config settings
2025-01-20 07:26:40 -08:00
Ilya Maslennikov
9af6c6a0b8
[FIX] CMS was always disabled regardles config settings
switch break added to allow correct working of CMS based on config value
2025-01-20 14:10:34 +03:00
Jonathan Campbell
16929fa921 cleanup 2025-01-20 02:38:48 -08:00
Jonathan Campbell
b9f28d1b93 Before writing a whole new GUI, clean up this code base 2025-01-20 02:12:21 -08:00
Jonathan Campbell
0c388b7c14 Cleanup, remove VGA self capture 2025-01-20 02:07:26 -08:00
Jonathan Campbell
239237bd62 cleanup 2025-01-20 01:47:31 -08:00
Jonathan Campbell
1f0b6b3af7 cleanup 2025-01-20 01:30:59 -08:00
Jonathan Campbell
8633f86042 cleanup 2025-01-20 01:21:00 -08:00
Jonathan Campbell
79a84d5d34 Make an alternate API to access memory by physical address, not linear address. This itself is a hack because of how mmio works in DOSBox/DOSBox-X 2025-01-19 21:50:47 -08:00
Jonathan Campbell
f12ddb7139 Hercules InColor cleanup 2025-01-19 21:00:01 -08:00
Jonathan Campbell
24ec5f8758 Cleanup AMS handler 2025-01-19 20:44:57 -08:00
Jonathan Campbell
496012ab2b more 2025-01-19 13:14:06 -08:00
Jonathan Campbell
b75b120976 More VGA cleanup 2025-01-19 10:41:53 -08:00
Jonathan Campbell
8ee2fa7640 More VGA cleanup 2025-01-19 10:21:56 -08:00
Jonathan Campbell
4755629858 more cleanup 2025-01-19 10:01:22 -08:00
Jonathan Campbell
c8a8502836 VGA cleanup 2025-01-19 09:33:36 -08:00
Jonathan Campbell
beb48a0b84 VGA: Retab mmio handlers, and fix PC-98 mmio handlers to use PAGING_GetPhysicalAddress 2025-01-18 14:33:39 -08:00
Jonathan Campbell
1bf0296976 Paging: HostRead/HostWrite method parameter should be 32-bit page frame number, not Bitu 2025-01-18 13:28:45 -08:00
Jonathan Campbell
588f195328 PAGING: Cleanup, remove non-USE_FULL_TLB code 2025-01-18 13:07:31 -08:00
Jonathan Campbell
3def988e58
Merge pull request #5414 from maron2000/fix_hxdos
Fix CI build failure of HX-DOS builds
2025-01-17 20:26:18 -08:00
Jonathan Campbell
88e34d29ce Memory: If mmap() is available, use it to allocate guest memory page-aligned 2025-01-17 18:12:43 -08:00
Jonathan Campbell
1aff9f06c3 Begin KVM core, only as clone of normal core 2025-01-17 14:12:42 -08:00
Jonathan Campbell
f9de143db1 Detect Linux kvm.h. If anyone wants any hope of using Windows XP inside this emulator, we are going to need to support Linux KVM virtualization on x86 2025-01-17 12:13:27 -08:00
maron2000
243565481a Fix MOD_SWSYNTH not supported in HX-DOS 2025-01-17 21:57:52 +09:00
Jonathan Campbell
122d300b2c Correct more EGA switches 2025-01-16 04:23:28 -08:00
Jonathan Campbell
29a2518431 Fix EGA switch handling on set mode 2025-01-16 04:22:44 -08:00
Jonathan Campbell
ee24e6f708 Fix BIOS switches field. Even though switch bits are inverted, the meaning of the bits read still carry the defined values. Fixes "RISK" 2025-01-15 16:41:53 -08:00
Jonathan Campbell
c6c6461aa3 MIDI: In spite of the useless documentation on the Apple Developer website, add support for Roland GS master volume control, and since MIDI reset does not actually DO anything, spam the stupid software synth to shut up on MIDI reset to minimize how many leftover notes were there before reset. Sorry Apple, useless lists of constants with no reference on what you do with them or what they mean or even any kind of useful mention about them is not documentation, it is a dumb grep of headers. Maybe you should ask Microsoft how they document their APIs because you can at least work from their documentation to implement something. 2025-01-13 23:25:03 -08:00
Jonathan Campbell
626aa8c507 Win32 MIDI output: Identify Microsoft software synth, and if detected, make use of MIDI functions to emulate Roland GS master volume SysEx on Windows. 2025-01-14 05:24:13 -08:00
Jonathan Campbell
76269b8f36 CHANGELOG 2025-01-13 10:36:16 -08:00
Jonathan Campbell
6c0ed86b4f
Merge pull request #5405 from maron2000/fix_label
Fix regression of CD detection due to Volume Label fix
2025-01-13 07:28:08 -08:00
Jonathan Campbell
50b05d0d4a
Merge pull request #5404 from joncampbell123/dependabot/github_actions/actions/upload-artifact-4.6.0
Bump actions/upload-artifact from 4.5.0 to 4.6.0
2025-01-13 07:27:38 -08:00
Jonathan Campbell
57b2018331
Merge pull request #5403 from maron2000/fix_ttftext
Switch off TTF mode in text modes not working in TTF mode
2025-01-13 07:27:16 -08:00
maron2000
55708743c2 Fix unit testing for Set_Label function 2025-01-13 21:49:37 +09:00
maron2000
65c979c3ce Don't pad volume labels with white spaces 2025-01-13 21:35:08 +09:00
dependabot[bot]
5bd89d73bb
Bump actions/upload-artifact from 4.5.0 to 4.6.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.5.0 to 4.6.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.5.0...v4.6.0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-13 12:30:08 +00:00
maron2000
25006e7c27 Switch off TTF mode in text modes not working in TTF mode 2025-01-13 20:10:24 +09:00
Jonathan Campbell
0cf8f51c92 GUS: Add dosbox.conf configuration option to enable a logfile warning every time a peek or poke is made to an out of bounds address to GUS DRAM 2025-01-12 23:42:24 -08:00
Jonathan Campbell
e6d2126027 A-ha: Mysterious emulator corruption and blank screen caused by code that tries to keep VGA font RAM synchronized with planar VGA. The font RAM array is only 512KB, therefore more than 4*512KB (2MB) and 4bpp planar memory allows writes past the 2MB mark to corrupt emulator state 2025-01-12 22:42:02 -08:00
Jonathan Campbell
202b76ef9c VESA: Do not allow bank switching into excess 4bpp planar memory 2025-01-12 22:27:05 -08:00
Jonathan Campbell
be3a684064 VGA: Anything using the bank switching offset needs to keep the address within video RAM 2025-01-12 20:24:48 -08:00
Jonathan Campbell
058ea50ab8 VESA BIOS: 4bpp planar should calculate pages based on planar bytes in VRAM, not actual bytes needed. Divide by 4, 4 bitplanes 2025-01-12 20:09:13 -08:00
Jonathan Campbell
8eecdff677 VESA BIOS: Fix panning and scanline bugs related to 24bpp mode (M_LIN24) 2025-01-12 18:17:40 -08:00
Jonathan Campbell
38db734f42 VBE correction for text modes 2025-01-12 12:31:28 -08:00
Jonathan Campbell
f9c17c092c VESA BIOS extensions: Do not list a linear framebuffer address if the ModeAttributes does not say there is an LFB. Specifically, do not indicate a LFB for 4bpp planar modes and do not list a linear framebuffer address for 4bpp modes 2025-01-12 12:00:44 -08:00
Jonathan Campbell
c082b296af typo 2025-01-12 07:40:38 -08:00
Jonathan Campbell
64e22ca333 compresssaveparts should direct the ZIP container whether to compress or store 2025-01-12 07:34:41 -08:00
Jonathan Campbell
7e424a0c74 Savestate fix and cleanup: Yo dawg, I heard you like zlib compression so I put zlib compression in your zlib compression. What I am saying is that the ZIP compression/decompression library already provides it, there is no need to provide additional compression. 2025-01-12 07:24:28 -08:00
Jonathan Campbell
5bbffbd745 retab 2025-01-12 06:12:25 -08:00
Jonathan Campbell
c90ceefde1 clipping 2025-01-11 15:11:03 -08:00
Jonathan Campbell
5aba71debd
Merge pull request #5396 from maron2000/fix_label
Fix retrieving volume label
2025-01-11 08:46:56 -08:00
maron2000
c10b11554f Some more fixes for Set_Label tests 2025-01-12 00:11:47 +09:00
maron2000
befd0dc78e Some more fixes in Set_Label testing 2025-01-12 00:01:38 +09:00
maron2000
c0e4cb1637 Fix Set_label test 2025-01-11 23:56:55 +09:00
maron2000
68b15c71ea Fix retrieving volume label (don't add dots, and leave lower case as is) 2025-01-11 23:10:27 +09:00
Jonathan Campbell
4035992975 MIDI synth (Fluidsynth): Add code to recognize Roland GS MASTER VOLUME sysex. Now PC-98 games can "fade out" the MIDI music using GS commands (Seiyoku Gakuen Seraphita) 2025-01-10 18:35:31 -08:00
Jonathan Campbell
c109f80c5b Apparently PC-98 games like to use Roland GS sysex messages instead of standard MIDI commands for volume control and reset. If they are not emulated by our MIDI emulation, the games have problems with hanging and stuck MIDI notes. Add code to convert the GS Reset command into normal MIDI reset. 2025-01-10 18:17:43 -08:00
Jonathan Campbell
b200fb49c4 retab MIDI 2025-01-10 16:46:33 -08:00
Jonathan Campbell
7ffb6b1a1f Fix modelist mistake that caused "high definition" VESA BIOS modes to round bytes per pixel up to a power of 2. The bitflag for high definition was accidentally the same bitflag for power of 2 stride 2025-01-10 10:07:09 -08:00
Jonathan Campbell
55a8ec6380 S3 VirgeVX patch for memory size (clbianco) 2025-01-10 09:46:05 -08:00
Jonathan Campbell
5d4fcbc40d source comment documentation 2025-01-10 00:23:47 -08:00
Jonathan Campbell
3b09d3152b more 2025-01-10 00:06:37 -08:00
Jonathan Campbell
764389c829 Add dosbox.conf option to write protect the DOSBox private area in UMB to deal with games that have fast and loose video rendering code that can corrupt that area 2025-01-09 21:38:59 -08:00
Jonathan Campbell
22b40f1732 Include map ROM call in header 2025-01-09 21:24:58 -08:00
Jonathan Campbell
9468a5a020 "used too"? Correct typo 2025-01-09 12:19:15 -08:00
Jonathan Campbell
a4d24f8fc7 Revise hardware scaler option to scale the window properly. Fix hardware scale calculation to scale the window properly in both dimensions for all hardware scaler options. Fix bug in hardware scale calculations that only vertically stretched the display beyond hardware2x. Disable normal scalers entirely if hardware scaling. Add comments to code explaning that if hardware scaling makes your DOS screen fuzzy you should either use a shader or go back to the none or normal2x, etc. scaler options 2025-01-09 12:17:12 -08:00
Jonathan Campbell
ff83448dd7
Merge pull request #5388 from maron2000/fix_linux
Fix Linux CI build
2025-01-09 09:54:56 -08:00
maron2000
f8219c9ede Fix Linux CI build 2025-01-09 22:51:51 +09:00
Jonathan Campbell
7f92969683 Why are hardware2x/3x/4x using scale factors DOUBLE what they imply? For example, hardware2x using a scale factor of 4. Fix 2025-01-08 21:51:19 -08:00
Jonathan Campbell
f2b23bc4ba Mention scaler=hardware_none for use with OpenGL shaders, such as those that emulate CRT scanlines 2025-01-08 21:26:50 -08:00
Jonathan Campbell
d4aa58a0ad Fix render output to allow hardware scaling (GFX_SCALING) if the output reports it. Fix surface output to explicitly indicate that it does NOT support GFX_SCALING. The decision to double pixels in the render stage should not be applied to OpenGL and Direct3D outputs because those outputs scale up anyway, that should be reserved for the surface output 2025-01-08 21:17:21 -08:00
Jonathan Campbell
b53a103eb7
Merge pull request #5385 from maron2000/macos_instructions
Update CHANGELOG
2025-01-08 18:14:05 -08:00
maron2000
4f98a169e2 Update CHANGELOG 2025-01-08 19:34:19 +09:00
Jonathan Campbell
8ddc64b494
Merge pull request #5383 from maron2000/macos_instructions
Add package information for macOS
2025-01-07 07:57:45 -08:00
Jonathan Campbell
02c7f912ed
Merge pull request #5381 from maron2000/fix_bellcrash
Fix potential crash when pasting from clipboard
2025-01-07 07:57:30 -08:00
maron2000
03f032b707 Add package information for macOS 2025-01-07 23:11:12 +09:00
maron2000
4fb6085f58 Fix potential crash when pasting from clipboard 2025-01-07 09:22:46 +09:00
Jonathan Campbell
7da02c3373 Dot not allow virtual method override for DrawTextChar(), clarify the DrawTextChar1bpp method should be overridden (i.e. by the SDL surface DC) when a higher performance optimized routine is available 2025-01-05 09:48:46 -08:00
Jonathan Campbell
77691f728e Bitmap font scaling 2025-01-05 09:36:27 -08:00
Jonathan Campbell
58aeb33ddc more 2025-01-05 09:36:27 -08:00
Jonathan Campbell
8680457c1a Centralize resource deletion 2025-01-05 09:36:27 -08:00
Jonathan Campbell
025cddf7e3 Centralize resource management 2025-01-05 09:36:27 -08:00
Jonathan Campbell
1026eacc77 The GUI toolkit does RGB. That is all it is going to do. 2025-01-05 09:36:27 -08:00
Jonathan Campbell
0c61d73cf0 Why did I add all that, remove it. This is a GUI toolkit, not a recreation of the Windows GDI 2025-01-05 09:36:27 -08:00
Jonathan Campbell
92910c94e4
Merge pull request #5373 from maron2000/fix_cdcrash
Fix crash when trying to access a mounted empty physical CD/Floppy drive
2025-01-05 09:36:16 -08:00
Jonathan Campbell
a58d8e4cd0
Merge pull request #5372 from maron2000/fix_bellcrash
Avoid crash when Bell code (0x07) is pasted from clipboard
2025-01-05 09:36:00 -08:00
maron2000
80397dde8b Avoid crash when Bell code (0x07) is pasted from clipboard 2025-01-05 21:08:21 +09:00
maron2000
eee44eff72 Fix crash when trying to DIR a mounted physical CD drive 2025-01-05 20:34:47 +09:00
Jonathan Campbell
aa1aaa518d Revise STI handling again. Force one more instruction ONLY IF the IF flag is enabled and a PIC IRQ is pending. This still maintains a 1-instruction STI interrupt processing delay while fixing IRQ handling problems with Commander Keen 4 related to the use of STI + JMP $+2 + CLI to process interrupt during vsync wait loops 2025-01-04 23:14:45 -08:00
Jonathan Campbell
9e66c8bcd0 Once again, avoid anything that conflicts with Win32 constants 2025-01-04 20:48:29 -08:00
Jonathan Campbell
d965f513eb memalias needs more clarification 2025-01-04 14:40:43 -08:00
Jonathan Campbell
0b1238a054 more 2025-01-04 14:37:19 -08:00
Jonathan Campbell
87f11d956e more 2025-01-04 14:35:21 -08:00
Jonathan Campbell
4a053d2d22 Remove contradictory statements about memalias 2025-01-04 14:34:44 -08:00
Jonathan Campbell
95fd9a05f6 Clarify memalias auto behavior 2025-01-04 14:31:24 -08:00
Jonathan Campbell
3d4c99d709 more 2025-01-03 00:24:40 -08:00
Jonathan Campbell
11d185458f cleanup 2025-01-03 00:23:24 -08:00
Jonathan Campbell
29a6620225 GUI DC and Text Font 2025-01-03 00:23:24 -08:00
Jonathan Campbell
e4e2f4d72e GUI Font 2025-01-03 00:23:24 -08:00
Jonathan Campbell
c520329d0b
Merge pull request #5365 from CookiePLMonster/y2038-patch
Fix a Y2038 bug by replacing Int32x32To64 with regular multiplication
2025-01-02 10:17:43 -08:00
Silent
2874591620
Fix a Y2038 bug by replacing Int32x32To64 with regular multiplication
Int32x32To64 macro internally truncates the arguments to int32,
while time_t is 64-bit on most/all modern platforms.
Therefore, usage of this macro creates a Year 2038 bug.
2025-01-02 14:35:22 +01:00
Jonathan Campbell
6c5da7b248 GUI GetPixel 2025-01-02 01:19:57 -08:00
Jonathan Campbell
5d417c8a14 GUI work 2025-01-02 01:01:18 -08:00
Jonathan Campbell
9db05690e2 "conversion from unsigned int to const long requires a narrowing conversion" and why do you care so much to make this an error? GCC 9.3 is fine with it, it is taking an unsigned int (32-bit integer) and converting it to a signed long (32/64-bit signed integer). So what? 2025-01-01 19:49:00 -08:00
Jonathan Campbell
3cfa1804ab
Merge pull request #5364 from maron2000/master
Add some troubleshooting informations to readme.txt
2025-01-01 19:09:07 -08:00
maron2000
6783a24b53 Add some troubleshooting informations to readme.txt 2025-01-02 10:48:50 +09:00
Jonathan Campbell
188c8e1f1e more 2025-01-01 17:30:15 -08:00
Jonathan Campbell
5d7c5c21f8 TRANSPARENT is reserved by the Windows API 2025-01-01 17:02:45 -08:00
Jonathan Campbell
935e6ae994 More GUI work 2025-01-01 16:59:40 -08:00
Jonathan Campbell
70a41bf69c More GUI work 2025-01-01 16:45:16 -08:00
Jonathan Campbell
b3b05ce1f0 More GUI work 2025-01-01 16:40:23 -08:00
Jonathan Campbell
77fb12acc2 more 2025-01-01 16:34:59 -08:00
Jonathan Campbell
f99a7d9379 More GUI work 2025-01-01 16:26:13 -08:00
Jonathan Campbell
3b65f1eff3 More GUI work 2025-01-01 15:23:50 -08:00
Jonathan Campbell
a170c293f1 Merge remote-tracking branch 'origin/master' into master-guidev 2025-01-01 08:39:00 -08:00
Jonathan Campbell
991d71c14f more 2025-01-01 08:38:47 -08:00
Jonathan Campbell
895fca3670 Happy new year 2025-01-01 00:30:49 -08:00
Jonathan Campbell
fa3bb20dab New UI begin 2025-01-01 00:29:04 -08:00
Jonathan Campbell
a2a3a719fd
Merge pull request #5359 from maron2000/master
Update CHANGELOG
2024-12-31 22:46:32 -08:00
maron2000
066060527a
Update CHANGELOG 2025-01-01 14:54:14 +09:00
Jonathan Campbell
9391034d4f Prepare for release 2024-12-31 21:09:03 -08:00
Jonathan Campbell
d4ba53e8d6
Merge pull request #5358 from skitt/avoid-crash-no-configfiles
sdlmain: avoid crashing if no config files
2024-12-31 09:07:27 -08:00
Stephen Kitt
90c825c7f3
sdlmain: avoid crashing if no config files
In some setups, even after trying to create a user-level
configuration, control->configfiles can end up empty. Other accesses
are protected, but the log message isn't; this moves it into the next
protected block to avoid crashing if configfiles is empty.

Signed-off-by: Stephen Kitt <steve@sk2.org>
2024-12-31 17:42:53 +01:00
Jonathan Campbell
ba932f5206 retab 2024-12-30 22:48:07 -08:00
Jonathan Campbell
d7aeb44f85 PAGING: More awareness of PSE 2024-12-30 22:42:12 -08:00
Jonathan Campbell
0fc2a1a7e7 PAGING: The recursive page fault handling code path needs to recognize PSE page table extensions, so add it. This fixes the problem where Windows XP, when asked to shut down, while emulating Pentium II and PSE, fails to shutdown but instead crashes with a BSOD 2024-12-30 22:21:29 -08:00
Jonathan Campbell
fb11ee58d2 Revise dynamic core CPP exception test not to refer to cores that are not compiled in. Such as, the X86 dynamic core on an arm64 Macbook 2024-12-30 09:42:21 -08:00
Jonathan Campbell
f20142aa9c Do not refer to DEBUG_EnableDebugger in SYSENTER/SYSEXIT if for some reason the debugger is not compiled in 2024-12-30 09:40:12 -08:00
Jonathan Campbell
d93d37c954
Merge pull request #5356 from maron2000/fix_chcp
Fix codepage didn't change when loading language files in some cases
2024-12-30 08:28:51 -08:00
maron2000
5d404097f2 Fix build error of Linux builds 2024-12-31 00:03:35 +09:00
maron2000
886d868d09 Fix codepage didn't change when loading language files in some cases 2024-12-30 23:09:56 +09:00
Jonathan Campbell
24e0d7063d BIOS logo: Fix corrupted palette issues with MDA/Hercules/CGA/PCjr/Tandy after rebooting the VM 2024-12-29 22:17:32 -08:00
Jonathan Campbell
34e64d8acf Fix BIOS logo choice that caused the wrong logo to display for machine=mcga 2024-12-29 21:32:14 -08:00
Jonathan Campbell
985d332e10 BIOS logo: Once again, modifying the scanline through the returned "r" pointer causes vram corruption, modifying TempLine which is the EXACT SAME MEMORY does not. Why????? 2024-12-29 21:30:19 -08:00
Jonathan Campbell
7451d948bf Fix bug that prevented the Configuration GUI from saving your currently selected Windows theme to dosbox.conf 2024-12-29 11:45:41 -08:00
Jonathan Campbell
d99a61dfb0 enable pse=true should mean the same as enable pse=auto because it does not specify what type of PSE 2024-12-29 11:38:20 -08:00
Jonathan Campbell
3b2cb79579 Configuration GUI: Clean up theme handling, make it a central array instead of two different pieces of code listing and matching the same theme names. This also makes it easier in the future to add themes, too 2024-12-29 11:35:41 -08:00
Jonathan Campbell
e5277a1fa7 Update ref conf 2024-12-29 10:27:42 -08:00
Jonathan Campbell
8071fc9dac vmemdelay, PCjr, Tandy, Herc 2024-12-29 10:26:49 -08:00
Jonathan Campbell
309651ab0c Adapt for PC98 LFB and general map handling 2024-12-29 10:16:41 -08:00
Jonathan Campbell
40bf81d6b9 Begin SVGA vmemdelay 2024-12-29 09:57:22 -08:00
Jonathan Campbell
e1edb6b36c Get rid of the E_Exit for dynamic core, the recent change the reset vector handling possible 2024-12-29 00:31:27 -08:00
Jonathan Campbell
6e6ec14f40 CPU reset workaround that allows system reset to work properly with dynamic core 2024-12-29 00:18:15 -08:00
Jonathan Campbell
e83f522fae Apparently dynrec is not compatible with reset either 2024-12-29 00:01:34 -08:00
Jonathan Campbell
70e48a254e CPU: Snap back/from real mode save CR4 register and make sure PSE mode is disabled when in real mode 2024-12-28 23:58:26 -08:00
Jonathan Campbell
0566cbeb32 OpenSans, for future ideas 2024-12-28 23:41:26 -08:00
Jonathan Campbell
8d80831e7f CPUID: Fix Pentium III CPUID values and implement CPUID Processor Configuration Descriptors, which is apparently required by Windows XP to boot without hanging when emulating a Pentium III 2024-12-28 18:13:13 -08:00
Jonathan Campbell
24eec4f721 Fix configuration GUI menus to look and act more like Windows 3.1 menus 2024-12-28 13:25:11 -08:00
Jonathan Campbell
2f990a2b49 Fix scroll bar button color. Windows 3.1 scroll bar buttons are always gray. The theme does not affect them 2024-12-28 12:36:17 -08:00
Jonathan Campbell
b64dd8c028 Windows default theme should be defualt, not the "LCD Reversed Light" theme 2024-12-28 12:16:32 -08:00
Jonathan Campbell
ac6d0ac668 Configuration GUI: Windows 3.1 menu bars have a solid line (usually black) below the menu bar. Cleanup menu bar drawing code 2024-12-28 12:08:27 -08:00
Jonathan Campbell
cd16f403a4
Merge pull request #5348 from rderooy/rdr/dutch-1
Dutch (NL) translation update
2024-12-28 11:05:37 -08:00
Jonathan Campbell
43379678f1 Clarify the memory file setting. No, you do not need to create or format it. 2024-12-28 11:01:38 -08:00
Robert de Rooy
1879e1c0a4 Dutch (NL) translation update 2024-12-28 17:49:01 +01:00
Jonathan Campbell
b09236c3b1
Merge pull request #5346 from maron2000/fix_chcp
Add missing items to translation files
2024-12-28 06:30:02 -08:00
maron2000
76e4ddca1b Add missing items to language files 2024-12-28 19:40:53 +09:00
Jonathan Campbell
9a44d69db6 update conf 2024-12-27 23:30:39 -08:00
Jonathan Campbell
e5caa44029 Move cputype reading into CPU pre-init, then have the memory init code use CPU type to determine memory alias auto setting 2024-12-27 20:54:39 -08:00
Jonathan Campbell
72f9631106 Split Weitek setup out from CPU init 2024-12-27 20:35:00 -08:00
Jonathan Campbell
a03f9b0dd3 retab 2024-12-27 20:09:55 -08:00
Jonathan Campbell
eae2fc6060 Clarify that SYSENTER/SYSEXIT applies to Pentium II or higher 2024-12-27 20:03:58 -08:00
Jonathan Campbell
7679065b9a CHANGELOG 2024-12-26 14:24:18 -08:00
Jonathan Campbell
ed04e4eabf EGA: Use vsync polarity, not htotal, to determine whether CGA or EGA monitor palette is in effect. This also allows Rambo III "enhanced" EGA modes to display colors correctly 2024-12-26 14:19:59 -08:00
Jonathan Campbell
fbde36b643 Fix help text mistake and update conf sample files 2024-12-26 12:23:37 -08:00
Jonathan Campbell
81b0514860 CPU reset: Make sure to turn off PSE extensions flag, and clear CR4, so that Windows XP boots properly after a reboot if it used PSE extensions. 2024-12-26 05:07:38 -08:00
Jonathan Campbell
1968d02acb Do not clear and reset CR4 and the PSE enable bool on CPU config change. That explains the bug where changing the cycle count using the configuration GUI causes Windows XP to immediately crash, because the handler was resetting CR4 and the PSE state. 2024-12-26 03:35:15 -08:00
Jonathan Campbell
ac6f282abe It turns out the reason Windows XP can sometimes randomly BSOD, expecially in Windows if you Alt+Tab to another application, then Alt+Tab back, is that there is "helpful" code that tries to resynchronize Num+Scroll+Caps state with the guest by modifying the BIOS data area. Those addresses are valid in actual DOS mode but if you do that in the 32-bit environment of the Windows NT kernel you will cause a page fault! Limit that synchronization to DOSBox DOS kernel and real mode. 2024-12-26 01:40:51 -08:00
Jonathan Campbell
8fe0d46f60 Make the 4GB+ memory accessible to the guest 2024-12-25 13:29:03 -08:00
Jonathan Campbell
a6d6202979 retab 2024-12-25 13:11:56 -08:00
Jonathan Campbell
98a828da26 Show linear and physical address when complaining about ROM write 2024-12-25 12:34:40 -08:00
Jonathan Campbell
fb9e6e5174 INT 15h AX=E820 report memory above 4GB 2024-12-25 12:24:38 -08:00
Jonathan Campbell
4144bdb059 OK, allow memsize up to the full PSE-40 limit. Have fun. But you have to use a memory map file 2024-12-25 12:19:13 -08:00
Jonathan Campbell
690204fd60 Update code, add restriction to require memory file to emulate memory above 4GB 2024-12-25 12:02:10 -08:00
Jonathan Campbell
d909e05ae7 Still working from Linux, make changes to the Win32 code that SHOULD work to allow >4GB 2024-12-25 11:53:34 -08:00
Jonathan Campbell
f31314b08b Revise how the memory file is sized to accomodate memory above 4GB 2024-12-25 11:49:54 -08:00
Jonathan Campbell
29afab77b1 Allow more memory. Divide it into regions below and above. Adjust memalias handling and how it limits memory. 2024-12-25 11:40:15 -08:00
Jonathan Campbell
aeeac5e76d
Merge pull request #5343 from maron2000/fix_chcp
Fix codepage conflicting with loaded language file on restart
2024-12-25 10:22:56 -08:00
Jonathan Campbell
cfa08c8e83 Keyboard: PCjr BIOS INT 48h does, in fact, write the translated scan code to port 60h before calling INT 9h. So anything written for normal IBM PC should work after all. 2024-12-25 09:03:53 -08:00
Jonathan Campbell
041b63805e Fix Win32 memory file bugs with memsize 2GB or larger. 2024-12-25 11:18:16 -08:00
Jonathan Campbell
b866a6dae4 memory file support, Windows Win32 API. 2024-12-25 11:09:44 -08:00
maron2000
825b1be5ad Fix codepage conflicting with loaded language file on restart 2024-12-25 22:35:26 +09:00
Jonathan Campbell
4299e60791 Memory file, Linux sparse files read as zero, so take advantage of it 2024-12-25 01:35:45 -08:00
Jonathan Campbell
c73a28ea53 Memory map file support and operation, Linux 2024-12-25 01:26:23 -08:00
Jonathan Campbell
dcbfe7eaae Update dosbox.conf, and add conf option to define a memory mapped file for guest memory 2024-12-25 00:16:59 -08:00
Jonathan Campbell
a1e3cf1806 BIOS: Clean up how INT 15h AX=E820 works so it can better represent other possible fields 2024-12-24 23:22:52 -08:00
Jonathan Campbell
a8a2d648ea Expand paging to the logical maximum, 40-bit PSE. That is as far as we will go. Any further expansion would require Paging TLBs to become 64-bit entries and by that point you should probably use VirtualBox or QEMU to run your mega-gigabyte possibly terabyte VM anyway. 2024-12-24 22:55:00 -08:00
Jonathan Campbell
fcd3d77e6a Begin some conversion of the code to clarify which memory addresses are linear, and which are physical, and add some explanation 2024-12-24 22:47:28 -08:00
Jonathan Campbell
dfcdf78581 Paging: constant move to header, describe functions a bit 2024-12-24 21:12:54 -08:00
Jonathan Campbell
c3e0ec8dbf Why are we marking CPU pages "Ditry"? They need to be marked "Dirty" 2024-12-24 21:02:33 -08:00
Jonathan Campbell
972df252e6 PCjr scroll lock, pause, print screen. 2024-12-23 22:06:15 -08:00
Jonathan Campbell
9c45ce9b7d PCjr keyboard translation 2024-12-23 15:55:04 -08:00
Jonathan Campbell
36c48c5f3a PCjr INT 48h translation 2024-12-23 15:42:49 -08:00
Jonathan Campbell
088cf64e0e PCjr keyboard controller is NOT XT style. It does not need a write to port 61h to reenable the keyboard. 2024-12-23 13:58:35 -08:00
Jonathan Campbell
ba93214814 BIOS keyboard handling: Revise how PCjr interrupt handling works, begin work on INT 48h 2024-12-23 11:47:38 -08:00
Jonathan Campbell
4093d649f2 PCjr scan code conversion should not be done in INT 9h. PCjr NMI calls INT 48h which is supposed to translate PCjr codes to 83-key, and then invoke INT 9h. 2024-12-23 11:31:35 -08:00
Jonathan Campbell
4c48bc872d
Merge pull request #5339 from maron2000/fix_chcp
Fix regression of garbled menubar in Traditional Chinese menu
2024-12-23 08:00:16 -08:00
Jonathan Campbell
c5dff8125c
Merge pull request #5338 from joncampbell123/dependabot/github_actions/actions/upload-artifact-4.5.0
Bump actions/upload-artifact from 4.4.3 to 4.5.0
2024-12-23 07:59:57 -08:00
maron2000
1023ced18c Fix regression of garbled menubar in Traditional Chinese menu 2024-12-23 23:52:14 +09:00
dependabot[bot]
2a1292015b
Bump actions/upload-artifact from 4.4.3 to 4.5.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.4.3 to 4.5.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.4.3...v4.5.0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-23 12:57:26 +00:00
Jonathan Campbell
9585f6823b Keyboard, callback, and IRQ1: The PCjr functions much like an XT style keyboard controller and needs the write to port 61h to re-enable the keyboard, which also helps avoid missing keyboard data bytes if the handler is too slow. 2024-12-22 23:52:24 -08:00
Jonathan Campbell
12b0fed849 Correct PCjr key delay 2024-12-22 22:50:32 -08:00
Jonathan Campbell
e7e5355478
Merge pull request #5335 from maron2000/fix_chcp
Don't switch to CP950 if zh_tw.lng is loaded when CP is 951
2024-12-22 19:22:11 -08:00
Jonathan Campbell
89493be127 INT9 BIOS keyboard: In PCjr mode, handle the Fn key combination that makes the backtick ` and tilde ~ character possible 2024-12-22 19:16:38 -08:00
Jonathan Campbell
f1797e5db3 Fix PCjr BIOS IRQ1 handling to correctly return home/end/pgup/pgdown 2024-12-22 19:11:14 -08:00
Jonathan Campbell
5c63058ae5 IRQ 1 (INT9): Begin adding PCjr keyboard handling 2024-12-22 18:54:25 -08:00
Jonathan Campbell
8e5d968285 Complete alternate PCjr keyboard scan code generation 2024-12-22 17:47:04 -08:00
Jonathan Campbell
48d37dcbcf comments 2024-12-22 14:03:38 -08:00
Jonathan Campbell
3f41eb6123 phys_read/write functions are not used often enough to worry too much about performance, so to avoid emulator segfaults, put the system memory range check in the phys_read/write functions themselves. Add comments about the meaning of MemBase and MemSize and how they will be used when DOSBox-X eventually supports memory sizes larger than 4GB 2024-12-22 13:59:42 -08:00
Jonathan Campbell
205480815e retab 2024-12-22 11:55:02 -08:00
Jonathan Campbell
d8d28858a1 Revise Voodoo 3Dfx linear framebuffer constants and PCI handling.
Restrict S3 LFB to just below BIOS, do not let the 32MB region overlap
the BIOS. Limit Voodoo 3Dfx framebuffer to stay out of system RAM.
To prevent large memsize configurations that cause S3 and 3Dfx to
conflict, add a hardware assignment system to give each device it's own
assigned LFB region of memory. This really only has an effect when space
gets cramped with large mem sizes, otherwise it has no effect. Perhaps
someday the BIOS should assign the 3Dfx, S3, and any other PCI devices
their resources like a real PC system would.
2024-12-22 10:52:17 -08:00
maron2000
6a958f9c20 Don't switch to CP950 if zh_tw.lng is loaded when CP is 951 2024-12-22 20:27:37 +09:00
Jonathan Campbell
9057fd2bbb
Merge pull request #5332 from maron2000/fix_ch_letter
Fix display of some Chinese characters
2024-12-21 21:45:58 -08:00
Jonathan Campbell
f97c741445 Fix STI instruction: Skip out if only one cycle count left, however if the CPU core loop started with one cycle count, force two cycle counts to ensure STI correctly delays interrupt processing by one instruction. This fixes PCjr emulation issues where hitting keys on the keyboard during the BIOS screen causes the emulator to hang 2024-12-21 17:39:46 -08:00
Jonathan Campbell
996fbd5cf7 MakePhysPage: Add PSE support. If you give Windows XP 1GB or more of RAM, and run it under dynamic_x86 core, MakePhysPage() will eventually be called and the E_Exit() condition would hit 2024-12-21 12:14:42 -08:00
Jonathan Campbell
297521d1a5
Merge pull request #5331 from maron2000/fix_hxdos
Fix build error of HX DOS builds
2024-12-21 08:12:16 -08:00
Jonathan Campbell
69a9258e4b
Merge pull request #5330 from maron2000/fix_pc98
Always set codepage to 932 for PC-98 emulation
2024-12-21 08:11:57 -08:00
maron2000
2f2a94a3c8 Fix build error of HX DOS builds 2024-12-22 00:00:42 +09:00
maron2000
debe3e8db2 Fix display of some Chinese characters 2024-12-21 19:47:08 +09:00
maron2000
d7610c9d94 Always set codepage to 932 for PC-98 emulation 2024-12-21 19:22:34 +09:00
Jonathan Campbell
de3f23c03b
Merge pull request #5328 from Technologov/master
Recalibrated Pentium cycles rating / Added Pentium 200MHz MMX
2024-12-20 20:52:15 -08:00
Jonathan Campbell
95f62b6e8c Dynamic x86 core: Reflect STI to normal core so 1-instruction delay is correctly emulated, which makes dynamic core, Windows XP, and SYSENTER/SYSEXIT possible 2024-12-20 18:19:07 -08:00
Alexey Eromenko
3d77db29ce Recalibrated Pentium cycles rating / Added Pentium 200MHz MMX 2024-12-21 02:48:06 +02:00
Jonathan Campbell
8b9fcc04e3 CHANGELOG 2024-12-19 20:36:20 -08:00
Jonathan Campbell
759e2bb199 retab 2024-12-19 20:35:00 -08:00
Jonathan Campbell
b1fc67ac68 Did you ever stop to consider that code page 437 is great when emulating the IBM PC world, but absolutely wrong when emulating the PC-98 world? No wonder Touhou Project is unable to access it's data files 2024-12-19 20:32:11 -08:00
Jonathan Campbell
67d9023884 Revise normal core handling of STI instruction. STI enables instruction one instruction later. To emulate this properly, force normal core to execute another instruction immediately after STI without opportunity to process interrupts. This seems to fix BSOD issues with Windows XP and SYSENTER/SYSEXIT 2024-12-19 15:14:58 -08:00
Jonathan Campbell
89cb5b4eca Keyboard emulation: PCjr keyboards transmit a lot slower, and also only allow some keys as combinations of Fn+base key. For example, F1 can only be entered by holding Fn and hitting the 1 key. This makes PCjr versions of Agent USA playable 2024-12-19 12:58:47 -08:00
Jonathan Campbell
e0fa880ce5
Merge pull request #5325 from maron2000/master
Update CHANGELOG
2024-12-19 11:13:11 -08:00
maron2000
75a9b1f5c6
Update CHANGELOG 2024-12-19 17:37:37 +09:00
Jonathan Campbell
2519431b77 I can make a few more enhancements to SYSENTER/SYSEXIT, though it still does not solve BSODs 2024-12-18 17:32:02 -08:00
Jonathan Campbell
69e85235df Add debug commands to break on SYSENTER and SYSEXIT 2024-12-17 17:35:29 -08:00
Jonathan Campbell
4a3e039f03
Merge pull request #5319 from maron2000/fix_9xlowend
Reapply patches for Win9x-lowend builds
2024-12-16 08:08:47 -08:00
Jonathan Campbell
57ee8076f8 486 (new) emulation needs to report PSE in CPUID too 2024-12-16 08:02:03 -08:00
Jonathan Campbell
b3737968ce Apparently late 486s also had PSE, for the same reason late 486s had CPUID and other Pentium features 2024-12-16 07:54:46 -08:00
Jonathan Campbell
c0bc844ab8 It turns out memalias cannot auto set by CPU type because CPU type enumeration has not been called yet, default to 32 again 2024-12-16 07:50:08 -08:00
Jonathan Campbell
89583282af Fix PSE-36 change that causes PC-98 emulation to crash 2024-12-16 07:46:34 -08:00
Jonathan Campbell
946dc5c97c If debug mode is going to complain about "Illegal read/write" outside the bounds of system memory, at least show the physical memory address alongside the linear address to make the debug message more useful 2024-12-16 07:36:05 -08:00
maron2000
8d08b6aefc Reapply patches for Win9x-lowend builds 2024-12-16 20:44:32 +09:00
Jonathan Campbell
6ed1a59974 Fix paging.cpp to allow PSE-36 to work, so that page numbers above 4GB can work 2024-12-16 01:59:18 -08:00
Jonathan Campbell
ad30600bf9 Allow memory bits up to 36 now, for PSE-36 2024-12-16 01:43:50 -08:00
Jonathan Campbell
49de09df3c Make enable pse option an enum (string), which can specify none, PSE, PSE-36, PSE-40, or just automatically pick by cputype 2024-12-16 00:08:17 -08:00
Jonathan Campbell
228740bb77 Make enable PSE auto by cputype and offer variants of it, or off of course 2024-12-15 23:51:15 -08:00
Jonathan Campbell
9213f9106b Do not say "Goldplay mode unexpectedly switched off" and act on it, unless it was on in the first place, upon DMA DAC event. This seems to greatly improve the audio in Tyrian 2000, though there is still some popping and crackling because the game likes to repeatedly mask and unmask the DMA channel as it renders audio 2024-12-15 22:21:15 -08:00
Jonathan Campbell
d3f4fdc3aa Debugger: Show whether PAGING is normal or PSE 2024-12-15 14:45:08 -08:00
Jonathan Campbell
0bc5b7da67 Add 4MB page handling to InitPage and FOIL (dirty bit) handling 2024-12-15 10:35:42 -08:00
Jonathan Campbell
887d29ac4a Paging: Define struct for 4MB PSE PDT page 2024-12-15 09:56:53 -08:00
Jonathan Campbell
dcdbbefa35 PDE code in paging.cpp should use dirblock, not block 2024-12-15 09:41:43 -08:00
Jonathan Campbell
cd46a30edf Some code cleanup in paging.cpp. Add separate struct definition for PDE vs PTE. Add notes regarding D (Dirty) bit in PDEs on Pentium and higher CPUs. It seems while 386/486 defined a D bit for PTE and PDE, the Pentium gave up on the D bit for PDE, though for PSE 4MB pages the PDE still has a D bit. 2024-12-15 09:38:06 -08:00
Jonathan Campbell
38151d33be
Merge pull request #5316 from genosse-einhorn/master
VHD: fix buffer overflow in calc_relative_path
2024-12-15 08:52:41 -08:00
Jonathan Campbell
a3d5073a2b Begin work on PSE (Page Size Extension) emulation. Limit the enable only to Pentium or higher. Reportedly Intel added it to the original Pentium but did not document it until the Pentium Pro or Pentium II 2024-12-15 08:51:31 -08:00
Jonas Kümmerlin
04775922ee VHD: fix buffer overflow in calc_relative_path
It accidentally strlen(3)'ed the wrong substring, with an
off-by-one error too (either allocating one byte too much
or missing one when in same directory)
2024-12-15 17:07:24 +01:00
Jonathan Campbell
3ea52569de more 2024-12-14 11:52:41 -08:00
Jonathan Campbell
e76d1fd924 memrange 2024-12-14 11:47:00 -08:00
Jonathan Campbell
5901a0b3fa IRQ, DMA 2024-12-14 11:30:14 -08:00
Jonathan Campbell
d99e7d318c Resource checksum 2024-12-14 11:19:02 -08:00
Jonathan Campbell
3691fd5e23 Begin CRS, resource template stuff 2024-12-14 11:15:56 -08:00
Jonathan Campbell
e09684c289 ACPI work 2024-12-14 09:47:07 -08:00
Jonathan Campbell
95e0e9981e If we are going to make AML the AML needs a way to write debug codes to the DOSBox-X log 2024-12-14 08:46:06 -08:00
Jonathan Campbell
8cd3ae1c86 ACPI PM timer, some checks 2024-12-14 07:52:42 -08:00
Jonathan Campbell
59278f61ac clarify 2024-12-14 06:37:49 -08:00
Jonathan Campbell
3d0e497dbb
Merge pull request #5311 from maron2000/update_jplng
Update ja_JP.lng
2024-12-11 06:57:34 -08:00
maron2000
8c9cc9d64f Update ja_JP.lng 2024-12-11 22:31:27 +09:00
Jonathan Campbell
911c65c70d
Merge pull request #5310 from maron2000/mac_sdl2fix
Fix color glitches in EGA, Tandy, Hercules mode on macOS SDL2 build
2024-12-10 13:44:17 -08:00
Jonathan Campbell
2c4014a68f
Merge pull request #5308 from maron2000/fix_linuxbuild
Fix --disable-screenshots option (configure.ac)
2024-12-10 13:43:46 -08:00
Jonathan Campbell
3b758dcd4e
Merge pull request #5307 from jpernst/mouse
Add int33 mickey threshold option to fix ultima underworld
2024-12-10 13:43:22 -08:00
maron2000
9494b92f34 Fix color glitches in EGA, Tandy, Hercules mode on macOS SDL2 build (output=opengl) 2024-12-10 22:47:07 +09:00
maron2000
45d99b1d20
Re-enable --disable-screenshots option 2024-12-10 14:47:49 +09:00
Jameson Ernst
4d27f7a193 Add int33 mickey threshold option to fix ultima underworld 2024-12-09 21:46:19 -08:00
maron2000
2de242c1e2
Fix configure.ac (disable-screenshot option) 2024-12-10 14:07:57 +09:00
Jonathan Campbell
c79699cdda
Merge pull request #5306 from maron2000/fix_linuxbuild
Fix Linux CI build error
2024-12-09 16:24:59 -08:00
maron2000
09b4911269
Update linux.yml 2024-12-10 08:49:23 +09:00
Jonathan Campbell
84233093ea Explain that the logo text supports \n as a way to break the line manually 2024-12-09 08:46:44 -08:00
Jonathan Campbell
fa09a9e28e CHANGELOG 2024-12-09 08:43:54 -08:00
Jonathan Campbell
65cb13cf85 Allow dosbox.conf to define logo text during startup 2024-12-09 08:43:24 -08:00
Jonathan Campbell
004a32c7ed Correct logo placement 2024-12-09 03:58:07 -08:00
Jonathan Campbell
a3189adedf dosbox.conf option to control BIOS logo 2024-12-09 03:33:44 -08:00
Jonathan Campbell
415ba703e3 doc task 2024-12-09 02:39:45 -08:00
Jonathan Campbell
654b69ba88 almost forgot 2024-12-09 01:30:47 -08:00
Jonathan Campbell
2d58ac04d6 CHANGELOG 2024-12-09 01:30:09 -08:00
Jonathan Campbell
c4da946538 Hide logo for setup screen 2024-12-09 01:25:17 -08:00
Jonathan Campbell
b5d5e89c88 Correct new BIOS logo for MDA/Hercules 2024-12-09 01:22:06 -08:00
Jonathan Campbell
cf7b17f5a1 Internal PNGs, if not external PNGs 2024-12-09 01:16:02 -08:00
Jonathan Campbell
32decad5d9 Explain 2024-12-09 00:57:06 -08:00
Jonathan Campbell
7eb68f273e Since the BIOS logo is an overlay now, there is no longer any need for POST to use graphics mode at all 2024-12-09 00:50:59 -08:00
Jonathan Campbell
6db818bc73 BIOS logo PNG, or text splash 2024-12-09 00:47:40 -08:00
Jonathan Campbell
749deddbbb Select PNG based on video resolution 2024-12-09 00:45:10 -08:00
Jonathan Campbell
85cadc2fb9 more 2024-12-09 00:40:15 -08:00
Jonathan Campbell
8283cdaef0 Load a PNG, draw it for the lgoo using the overlay 2024-12-09 00:37:30 -08:00
Jonathan Campbell
8933712c22 more 2024-12-08 23:57:56 -08:00
Jonathan Campbell
439644fc5b New BIOS logo code 2024-12-08 23:54:12 -08:00
Jonathan Campbell
7b8df7f9e5 Remove logo display code, we are going to rework it 2024-12-08 22:58:05 -08:00
Jonathan Campbell
2695346e8f more 2024-12-08 22:51:53 -08:00
Jonathan Campbell
ede9de382f more 2024-12-08 22:14:22 -08:00
Jonathan Campbell
2f29337b37 more 2024-12-08 22:13:16 -08:00
Jonathan Campbell
d00f3387f4 VCPI: Windows INT 2Fh multiplex, provide vm86 control callback function if VCPI emulation active 2024-12-08 05:57:36 -08:00
Jonathan Campbell
a57726571d VCPI: Server PM entry point is supposed to be 32-bit and return using RETF, not IRET. DOS games using DOS extenders are working fine now under our VCPI server 2024-12-08 03:42:42 -08:00
Jonathan Campbell
62bf44fb58 LMSW: Always disallow by default. Even if Intel never mentions it beyond the 386, LMSW cannot clear the PE bit. This fixes problems with DOS extenders and VCPI 2024-12-08 03:40:27 -08:00
Jonathan Campbell
1a7d5bf3b0 In case of a future lawyerball game 2024-12-07 11:51:22 -08:00
Jonathan Campbell
d11902a7f6 whoops 2024-12-07 11:30:38 -08:00
Jonathan Campbell
ba91a7f64e It seems in today's OSS world this is needed to keep the peace here, in plain language. Let nothing ruin this hobby project of mine, no matter how popular it is. 2024-12-07 11:27:01 -08:00
Jonathan Campbell
666309a081 Make corrections to S3 memsize 2024-12-06 20:41:33 -08:00
Jonathan Campbell
7068633fc5 Never mind. The code as implemented made the title bar dark at all times. We want to match the system configuration.
Microsoft, please, just make a damn Win32 API function to a) determine if Dark Mode is active b) Make windows and controls in the process match the system theme (Dark/Light mode).
2024-12-05 14:16:22 -08:00
Jonathan Campbell
997fdee39c Add code to try to support Dark Mode in Windows 10/11. So now at least the DOSBox-X title bar will be dark if Dark Mode is enabled. I'd support Dark Mode more if Microsoft would just document how Win32 applications can make better use of it. 2024-12-05 14:04:05 -08:00
Jonathan Campbell
d11bceda8c INT 10h: 200-line mode ANYTHING, including 200-line text mode, needs the AC and DAC programmed CGA RGBI style, not EGA 64-color style 2024-12-05 09:51:38 -08:00
Jonathan Campbell
166102731d Fix INT 10 set font so that After the War, machine=ega, the video display end is not suddenly reduced improperly 2024-12-04 22:01:23 -08:00
Jonathan Campbell
b0c5c68cc6 INT 10h: If machine=ega, check EGA switches to detect games that alter the EGA switches to force 200-line mode 2024-12-04 20:49:32 -08:00
Jonathan Campbell
22328353be Clarify what the EGA switch bits mean 2024-12-04 20:21:40 -08:00
Jonathan Campbell
e93f0fbdd3 Fix VGA doublescan vs doublescan effect vs "graphical" text mode of After the War for machine=vgaonly 2024-12-04 19:13:59 -08:00
Jonathan Campbell
be956186f5 Begin next 2024-12-04 18:27:40 -08:00
Jonathan Campbell
ff350a308a Update version date 2024-12-04 17:00:19 -08:00
Jonathan Campbell
1f8f8c8989 prepare 2024-12-04 16:54:53 -08:00
Jonathan Campbell
1ec02579de
Merge pull request #5297 from 1abcd/cht-translation
Update zh_TW.lng
2024-12-03 08:01:06 -08:00
Jonathan Campbell
c29dd42ef7 A-ha, the reason DOSBox-X is crashing on Windows 7/8 when you bring up the configuraton GUI is my attempt to call mystery APIs to try to detect Windows 10/11 dark mode. That call isn't the same on older Windows, hence the crash. 2024-12-03 08:20:42 -08:00
1abcd
2f5a664fa3
Update zh_TW.lng 2024-12-03 11:44:46 +08:00
Jonathan Campbell
5760a53ef8 Prepare for release 2024-12-02 17:49:33 -08:00
Jonathan Campbell
aae80506fe MDA attribute fix for F0h F8h in non-blinking context 2024-12-02 17:42:21 -08:00
Jonathan Campbell
2941e1ff28 CHANGELOG 2024-12-02 00:25:07 -08:00
Jonathan Campbell
8fbd1f5a95 Add -label option to IMGMAKE 2024-12-01 23:49:54 -08:00
Jonathan Campbell
7a7a406576 Document -align option 2024-12-01 23:04:59 -08:00
Jonathan Campbell
dd2b864585 Pack help together tighter 2024-12-01 23:02:52 -08:00
Jonathan Campbell
3acbdcf4ef IMGMAKE alignment option. When used, the program will try to arrange the FAT/FAT32 structure so that the boot sector, FAT tables, root directory, and clusters are aligned to the specified alignment. For example, a request for DOSBox-X to make disk images suitable for modern drives with 4096 byte sectors 2024-12-01 22:58:26 -08:00
Jonathan Campbell
84ed83e46f Pack HD sizes text together tigher 2024-12-01 22:03:38 -08:00
Jonathan Campbell
df44c8041a Add option to IMGMAKE for HDD images to control the starting sector of a partition 2024-12-01 22:01:25 -08:00
Jonathan Campbell
c2fe4f42e0 More MMX fixes, but thats as much as I can do. The MMX optimized code path in Windows Media codecs still shows occasional errors 2024-11-30 19:02:58 -08:00
Jonathan Campbell
152a83e2c5 Additional MMX refinement 2024-11-30 00:55:28 -08:00
Jonathan Campbell
049a1afe0b MMX corrections, which helps reduce, though not eliminate, WMV decoding artifacts in the sample video of Windows ME Windows Movie Maker 2024-11-30 00:38:50 -08:00
Jonathan Campbell
48c012204d Fix hinting NOP handing 2024-11-29 22:32:37 -08:00
Jonathan Campbell
f352eef6c0 Organize MMX/SSE 2024-11-29 22:18:26 -08:00
Jonathan Campbell
2a2859c57b Organize MMX/SSE 2024-11-29 22:13:47 -08:00
Jonathan Campbell
7b6d54f9c7 Organize MMX/SSE 2024-11-29 22:09:03 -08:00
Jonathan Campbell
fbd545e6fe Organize MMX/SSE 2024-11-29 22:02:49 -08:00
Jonathan Campbell
bdea615ab5 MMX/SSE organization 2024-11-29 21:55:14 -08:00
Jonathan Campbell
d496ea8a2e MMX instructions by opcode order 2024-11-29 21:12:14 -08:00
Jonathan Campbell
b7bb5f15c9 more 2024-11-29 20:51:44 -08:00
Jonathan Campbell
42c711ac7a More MMX/SSE cleanup 2024-11-29 18:46:03 -08:00
Jonathan Campbell
21e95c5dbd more 2024-11-29 18:06:51 -08:00
Jonathan Campbell
8cacd28ccf Revise MMX/SSE PMULHUW 2024-11-29 15:09:18 -08:00
Jonathan Campbell
7509297fa2 Fix MMX/SSE function naming, opcodes 2024-11-29 14:56:59 -08:00
Jonathan Campbell
e536844f53 Fix MMX/SSE SHUFPS 2024-11-29 14:48:50 -08:00
Jonathan Campbell
7fc19cdcc6 Correct MMX and SSE PINSRW and PEXTRW 2024-11-29 14:13:32 -08:00
Jonathan Campbell
ed6ac88ce6 INT 10: Prevent any INT 10h modes above 0x13 if machine=vgaonly. For S3 emulation, fix INT 10 to correctly set the dot clock for 800x600x16 SVGA mode even if it was set using mode 0x6A instead of VBE mode 0x102. Convert layered ternary expression to more readable if/else if/else statements 2024-11-29 12:48:41 -08:00
Jonathan Campbell
21891bb92a
Merge pull request #5294 from nanshiki/pc98vz
Fixed a problem when VZ Editor is resident in PC-98 mode
2024-11-29 09:16:56 -08:00
nanshiki
39f5bd0056 Fixed a problem when VZ Editor is resident in PC-98 mode 2024-11-29 23:22:21 +09:00
Jonathan Campbell
73541ca01d notes 2024-11-28 23:01:51 -08:00
Jonathan Campbell
f20118ef04 S3: CR36 cannot count beyond 4MB, and only whole MB, so do not try 2024-11-28 22:54:46 -08:00
Jonathan Campbell
c384027056 printf formatting fix to silence compiler warning 2024-11-25 16:27:09 -08:00
Jonathan Campbell
547bff065c
Merge pull request #5284 from maron2000/fix_cdswap
Fix CD mount crash when drive is "empty"
2024-11-24 17:13:53 -08:00
Jonathan Campbell
20c4df0d81
Merge pull request #5283 from maron2000/arm32_build
Workaround for ARM32 Visual Studio build failure
2024-11-24 17:12:50 -08:00
Jonathan Campbell
30b1c45149 Make corrections to 640x350x4 EGA mode 2024-11-24 22:07:09 +00:00
Jonathan Campbell
fca89a72f8 VGA can do 640x350x4 too, I think, since the same bits are there 2024-11-24 19:23:46 +00:00
Jonathan Campbell
ca191ff6bc VGA drawing code needs to pay attention to the "extended memory" bit of EGA/VGA so that EGA 640x350x4 can work properly 2024-11-24 19:14:13 +00:00
maron2000
45eb963f88
Update CHANGELOG 2024-11-23 13:54:31 +09:00
maron2000
e2617f390c Fix CD mount crash when drive is "empty" 2024-11-23 00:09:25 +09:00
maron2000
c3ffbab582
Workaround for Windows installer ARM32 build failure 2024-11-22 13:19:12 +09:00
maron2000
a9af307d8d
Workaround for ARM32 VS build failure 2024-11-22 12:59:02 +09:00
Jonathan Campbell
98f374ee09 Correct SSE instruction SHUFPS 2024-11-18 21:30:49 -08:00
Jonathan Campbell
be88cbc919 Fix bug where S3 LFB base alignment can misalign and cause disabling of PCI VGA if clipping against system memory 2024-11-11 06:01:53 -08:00
Jonathan Campbell
c4093eda69 Raise maximum memory higher 2024-11-11 05:52:33 -08:00
Jonathan Campbell
ab6717c85b
Merge pull request #5276 from maron2000/log_conf
Log loaded conf file
2024-11-09 23:12:49 -08:00
Jonathan Campbell
4466428965
Merge pull request #5274 from maron2000/fix_screenreport
Suppress redundant screen reports in log
2024-11-09 23:12:34 -08:00
maron2000
25f23a25c4 Log loaded conf file 2024-11-09 11:23:40 +09:00
maron2000
6cec5a0a4b Suppress redundant screen reports in log 2024-11-08 20:43:25 +09:00
Jonathan Campbell
c8069ef698
Merge pull request #5270 from maron2000/fix_autolock
Reflect "Autolock mouse" gui menu
2024-11-07 12:17:32 -08:00
maron2000
36cfc359c6
Fix middle_unlock option 2024-11-06 16:50:10 +09:00
maron2000
6e6f9c8ffe
Don't skip enabling sdl.mouse.autolock 2024-11-06 15:26:02 +09:00
maron2000
823db8b35b Reflect autolock gui menu 2024-11-05 23:26:07 +09:00
Jonathan Campbell
8cc33c076a
Merge pull request #5266 from maron2000/VS2022_test
Experimental nightly builds compiled with VS2022
2024-11-01 09:12:40 -07:00
Jonathan Campbell
543b84198a
Merge pull request #5264 from maron2000/fix_libc++19
Fix build failure with libc++19
2024-11-01 09:12:25 -07:00
Jonathan Campbell
8f879c310a
Merge branch 'master' into fix_libc++19 2024-11-01 09:12:18 -07:00
Jonathan Campbell
2d94a7f9ad
Merge pull request #5263 from maron2000/fixmenu
Change order of menubar to cope with inaccessible items due to overlapped menus
2024-11-01 09:11:10 -07:00
Jonathan Campbell
103c276eb1
Merge pull request #5262 from maron2000/fix_ttf
Fix fullscreen mode not responding when launched in TTF mode (Windows)
2024-11-01 09:10:57 -07:00
maron2000
04c4265112 Experimental nightly build by VS2022 2024-11-01 18:00:44 +09:00
maron2000
5597913069 Update CHANGELOG 2024-10-30 18:56:56 +09:00
maron2000
1668901054 Fix build with libc++ 19
Imported from https://cgit.freebsd.org/ports/commit/?id=573cdb2e7e34d6e97828e0b42456b17fc7c13f4b
2024-10-30 18:53:36 +09:00
maron2000
cd0a5dd66d Change order of menubar to access inaccessible items due to overlapped menus 2024-10-30 18:17:01 +09:00
maron2000
7f27c49f88 Fix fullscreen mode not responding when launched in TTF mode (Windows) 2024-10-29 22:23:11 +09:00
Jonathan Campbell
03f04db5ae Try the other way with CMPXCHG8B 2024-10-29 00:30:11 -07:00
Jonathan Campbell
1ecc5fbbb8
Merge pull request #5258 from maron2000/mac_build
Add some instructions for installing DOSBox-X to macOS
2024-10-28 10:08:30 -07:00
maron2000
12138133fe
Fix a typo 2024-10-28 13:59:12 +09:00
maron2000
b3e30cb3cc
Add some instructions for installing DOSBox-X to macOS 2024-10-28 13:55:58 +09:00
Jonathan Campbell
e2bfed4a82
Merge pull request #5256 from maron2000/fix_swapcrash
Fix crash when changing floppies mounted by drive numbers on a booted guest OS
2024-10-25 12:02:25 -07:00
maron2000
df6e6dfd98 Update CHANGELOG 2024-10-25 21:44:00 +09:00
maron2000
34b1a16b6d Fix crash when changing floppies mounted by drive numbers on a booted guest 2024-10-25 21:30:50 +09:00
Jonathan Campbell
bbc7a9ca4c
Merge pull request #5247 from maron2000/mac_build
Add required library information for macOS toBUILD.md
2024-10-18 15:48:39 -07:00
Jonathan Campbell
549e77e619
Merge pull request #5246 from joncampbell123/dependabot/github_actions/actions/upload-artifact-4.4.3
Bump actions/upload-artifact from 4.4.0 to 4.4.3
2024-10-18 15:48:28 -07:00
Jonathan Campbell
652073f122
Merge pull request #5244 from maron2000/startnopause
Add an option not to pause after host program execution is completed
2024-10-18 15:48:14 -07:00
maron2000
2ac8fa28f7 Fix build error on VS2017 2024-10-18 18:30:06 +09:00
maron2000
2ccbdcfb2e HostAppRun(): Convert relative path of the program to absolute path 2024-10-18 17:56:42 +09:00
maron2000
80a1947c92 HostAppRun(): Fix launching programs with white spaces in path 2024-10-18 16:03:37 +09:00
maron2000
aae72840b3
Update BUILD.md 2024-10-15 14:07:24 +09:00
maron2000
15f25e6ca4
Update CHANGELOG 2024-10-15 09:30:26 +09:00
dependabot[bot]
7d092f3fca
Bump actions/upload-artifact from 4.4.0 to 4.4.3
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.4.0 to 4.4.3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.4.0...v4.4.3)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 12:43:00 +00:00
Jonathan Campbell
e1bfb97763
Merge pull request #5235 from maron2000/fix_lang
Fixes corrupted display when loading language files at launch.
2024-10-13 21:05:05 -07:00
maron2000
5081f1a613 Add an option not to pause after host program execution is completed 2024-10-11 23:36:47 +09:00
maron2000
c766244d45 Fix initial rescan command slow on launch 2024-10-11 00:01:29 +09:00
maron2000
c58d4dc194 Fix loading DBCS language files on launch 2024-10-09 23:42:36 +09:00
Jonathan Campbell
3c9a960b96
Merge pull request #5237 from maron2000/zpath_fix
Fix Z Drive path expansion to be case insensitive
2024-10-07 21:23:51 -07:00
Jonathan Campbell
bdacd50c08
Merge pull request #5231 from maron2000/macos_ci
Switch macOS x86 CI runner image to macos-13
2024-10-07 21:23:41 -07:00
maron2000
4b15f920c1
Update CHANGELOG 2024-10-07 19:53:53 +09:00
maron2000
b9d78f6c1f Fix Z Drive path expansion to be case insensitive 2024-10-06 00:28:20 +09:00
maron2000
860f01b985 Always switch codepages for DBCS language files 2024-10-05 16:17:12 +09:00
maron2000
cbecf9eba0 Fix switching codepage on launch 2024-10-05 16:10:12 +09:00
maron2000
0be59ed77a Fix build error 2024-10-05 16:09:29 +09:00
maron2000
a205b99ad3 Remove some redundant codes in CHCP command 2024-10-05 14:18:46 +09:00
maron2000
9447b8d203 CHCP: Fix handling of invalid codepage 2024-10-05 13:40:57 +09:00
maron2000
2205c844a1 Fix initial loading of Chinese & Korean keyboard layouts 2024-10-05 11:39:41 +09:00
maron2000
f3847d7df9 toSetCodePage function switches codepages in non-TTF mode and in non-DBCS codepages 2024-10-05 10:58:23 +09:00
maron2000
b55bb2a8b1 Add function to check codepage is DBCS 2024-10-05 08:56:07 +09:00
maron2000
23cd0bc953 Change macos x86 CI image to macos-13 2024-10-02 18:50:26 +09:00
1806 changed files with 230227 additions and 49950 deletions

View File

@ -2,7 +2,7 @@ Add a summary of the change(s) brought by this PR here.
## What issue(s) does this PR address?
If there are any related issues, reference them here. Ex. #1234, Fixes #1234, Closes #1234, etc.
If there are any related issues, reference them here. Ex. #1234, Fixes #1234, Closes #1234, etc.
<!-- (For more information on using keywords like in above, read this document: https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/using-keywords-in-issues-and-pull-requests) -->
## Does this PR introduce new feature(s)?

View File

@ -87,7 +87,7 @@ jobs:
run: |
sleep 40m
- name: Download Windows build
uses: robinraju/release-downloader@v1.11
uses: robinraju/release-downloader@v1.12
with:
repository: "joncampbell123/dosbox-x"
latest: true
@ -104,7 +104,7 @@ jobs:
cat $top/OUTPUT.TXT
test -f $top/SUCCESS.TXT || (echo The HX-DOS build did not run successfully && exit 1)
- name: Upload preview package
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-mingw-hx-dos-${{ env.timestamp }}
path: ${{ github.workspace }}/package/

View File

@ -23,13 +23,14 @@ jobs:
with:
node-version: '14'
- name: Build minimal
if: false
run: |
echo "timestamp=`git show -s --format=%at | xargs -I# date -d @# +%Y%m%d%H%M%S`" >> $GITHUB_ENV
./build --disable-freetype --disable-libfluidsynth --disable-mt32 --disable-screenshots
- name: Install libraries
run: |
sudo apt-get update -y
sudo apt-get install -y nasm fluidsynth libfluidsynth-dev libpcap-dev libslirp-dev libsdl-net1.2-dev libsdl2-net-dev libglu1-mesa-dev freeglut3-dev mesa-common-dev
sudo apt-get install -y nasm fluidsynth libfluidsynth-dev libpcap-dev libslirp-dev libsdl-net1.2-dev libsdl2-net-dev libglu1-mesa-dev freeglut3-dev mesa-common-dev libpng-dev
mkdir src/bin
- name: Update build info
shell: bash
@ -77,7 +78,7 @@ jobs:
cp $top/contrib/glshaders/* $top/src/bin/glshaders/
cp $top/contrib/translations/*/*.lng $top/src/bin/languages/
- name: Upload preview package
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-linux-x86_64-${{ env.timestamp }}
path: ${{ github.workspace }}/src/bin/
@ -99,7 +100,7 @@ jobs:
- name: Install libraries
run: |
sudo apt-get update -y
sudo apt-get install -y nasm fluidsynth libfluidsynth-dev libpcap-dev libslirp-dev libsdl-net1.2-dev libsdl2-net-dev libglu1-mesa-dev freeglut3-dev mesa-common-dev
sudo apt-get install -y nasm fluidsynth libfluidsynth-dev libpcap-dev libslirp-dev libsdl-net1.2-dev libsdl2-net-dev libglu1-mesa-dev freeglut3-dev mesa-common-dev libpng-dev
mkdir src/bin
- name: Build Linux SDL1
run: |

View File

@ -12,7 +12,7 @@ jobs:
actions: write # for styfle/cancel-workflow-action to cancel/stop running workflows
contents: write # for actions/checkout to fetch code and softprops/action-gh-release
if: github.event_name == 'push' || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
runs-on: macos-12
runs-on: macos-13
steps:
- name: Cancel previous runs
uses: styfle/cancel-workflow-action@0.12.1
@ -21,7 +21,7 @@ jobs:
- uses: actions/checkout@v4
- name: Install libraries
run: |
brew install autoconf automake nasm glfw glew coreutils sevenzip
brew install autoconf automake nasm glfw glew coreutils sevenzip libslirp fluid-synth pkg-config sdl2_net
mkdir -p package/dosbox-x
mkdir -p package/dosbox-x-sdl2
# cd vs/sdlnet && ./build-dosbox.sh
@ -69,7 +69,7 @@ jobs:
7zz a $top/dosbox-x-macosx-x86_64-${{ env.timestamp }}.zip *
cd $top
- name: Upload preview package
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-macosx-x86_64-${{ env.timestamp }}
path: ${{ github.workspace }}/dosbox-x-macosx-x86_64-${{ env.timestamp }}.zip
@ -92,7 +92,7 @@ jobs:
- uses: actions/checkout@v4
- name: Install libraries
run: |
brew install autoconf automake nasm glfw glew coreutils sevenzip
brew install autoconf automake nasm glfw glew coreutils sevenzip libslirp fluid-synth pkg-config sdl2_net
mkdir -p package/dosbox-x
mkdir -p package/dosbox-x-sdl2
# cd vs/sdlnet && ./build-dosbox.sh
@ -140,7 +140,7 @@ jobs:
7zz a $top/dosbox-x-macosx-arm64-${{ env.timestamp }}.zip *
cd $top
- name: Upload preview package
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-macosx-arm64-${{ env.timestamp }}
path: ${{ github.workspace }}/dosbox-x-macosx-arm64-${{ env.timestamp }}.zip

View File

@ -122,7 +122,7 @@ jobs:
$top/vs/tool/zip.exe -r -9 $top/dosbox-x-mingw-win32-${{ env.timestamp }}.zip *
cd $top
- name: Upload preview package
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-mingw-win32-${{ env.timestamp }}
path: ${{ github.workspace }}/package/
@ -245,7 +245,7 @@ jobs:
$top/vs/tool/zip.exe -r -9 $top/dosbox-x-mingw-win32-lowend-${{ env.timestamp }}.zip *
cd $top
- name: Upload preview package
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-mingw-win32-lowend-${{ env.timestamp }}
path: ${{ github.workspace }}/package/
@ -336,7 +336,7 @@ jobs:
$top/vs/tool/zip.exe -r -9 $top/dosbox-x-mingw-win32-lowend9x-${{ env.timestamp }}.zip *
cd $top
- name: Upload preview package
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-mingw-win32-lowend9x-${{ env.timestamp }}
path: ${{ github.workspace }}/package/

View File

@ -102,7 +102,7 @@ jobs:
$top/vs/tool/zip.exe -r -9 $top/dosbox-x-mingw-win64-${{ env.timestamp }}.zip *
cd $top
- name: Upload preview package
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-mingw-win64-${{ env.timestamp }}
path: ${{ github.workspace }}/package/
@ -111,3 +111,107 @@ jobs:
if: startsWith(github.ref, 'refs/tags/')
with:
files: dosbox-x-mingw-win64-${{ env.timestamp }}.zip
UCRT64_CI_build:
permissions:
actions: write # for styfle/cancel-workflow-action to cancel/stop running workflows
contents: write # for actions/checkout to fetch code and softprops/action-gh-release
if: github.event_name == 'push' || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- name: Cancel previous runs
uses: styfle/cancel-workflow-action@0.12.1
with:
access_token: ${{ github.token }}
- uses: actions/checkout@v4
- uses: msys2/setup-msys2@v2
with:
msystem: UCRT64
update: true
install: git make mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-libtool mingw-w64-ucrt-x86_64-nasm autoconf automake mingw-w64-ucrt-x86_64-libslirp
- name: Update build info
shell: bash
run: |
echo "timestamp=`git show -s --format=%at | xargs -I# date -d @# +%Y%m%d%H%M%S`" >> $GITHUB_ENV
export shortsha=`echo ${GITHUB_SHA} | cut -c1-7`
export copyrightyear=`git show -s --format=%at | xargs -I# date -d @# +'%Y'`
export updatestr=`git show -s --format=%at | xargs -I# date -d @# +'%b %d, %Y %I:%M:%S%P'`
echo '/* auto generated */' > include/build_timestamp.h
echo "#define UPDATED_STR \"${updatestr}\"" >> include/build_timestamp.h
echo "#define GIT_COMMIT_HASH \"${shortsha}\"" >> include/build_timestamp.h
echo "#define COPYRIGHT_END_YEAR \"${copyrightyear}\"" >> include/build_timestamp.h
cat include/build_timestamp.h
- name: Build UCRT64 SDL1
run: |
top=`pwd`
./build-mingw
strip -s $top/src/dosbox-x.exe
- name: Package UCRT64 SDL1
run: |
top=`pwd`
mkdir -p $top/package/mingw-build/mingw/drivez
mkdir -p $top/package/mingw-build/mingw/scripts
mkdir -p $top/package/mingw-build/mingw/shaders
mkdir -p $top/package/mingw-build/mingw/glshaders
mkdir -p $top/package/mingw-build/mingw/languages
sed -e 's/^\(output[ ]*=[ ]*\)default$/\1ttf/;s/^\(windowposition[ ]*=\)[ ]*-/\1 /;s/^\(file access tries[ ]*=[ ]*\)0$/\13/;s/^\(printoutput[ ]*=[ ]*\)png$/\1printer/;s/\(drive data rate limit[ ]*=[ ]*\)-1$/\10/' $top/dosbox-x.reference.conf>$top/package/mingw-build/mingw/dosbox-x.conf
cp $top/src/dosbox-x.exe $top/package/mingw-build/mingw/dosbox-x.exe
cp $top/CHANGELOG $top/package/mingw-build/mingw/CHANGELOG.txt
cp $top/dosbox-x.reference.conf $top/package/mingw-build/mingw/dosbox-x.reference.conf
cp $top/dosbox-x.reference.full.conf $top/package/mingw-build/mingw/dosbox-x.reference.full.conf
cp $top/contrib/windows/installer/readme.txt $top/package/mingw-build/mingw/README.txt
cp $top/contrib/windows/installer/inpoutx64.dll $top/package/mingw-build/mingw/inpoutx64.dll
cp $top/contrib/fonts/FREECG98.BMP $top/package/mingw-build/mingw/FREECG98.BMP
cp $top/contrib/fonts/wqy_1?pt.bdf $top/package/mingw-build/mingw/
cp $top/contrib/fonts/Nouveau_IBM.ttf $top/package/mingw-build/mingw/Nouveau_IBM.ttf
cp $top/contrib/fonts/SarasaGothicFixed.ttf $top/package/mingw-build/mingw/SarasaGothicFixed.ttf
cp $top/contrib/windows/installer/drivez_readme.txt $top/package/mingw-build/mingw/drivez/readme.txt
cp $top/contrib/windows/installer/windows_explorer_context_menu*.bat $top/package/mingw-build/mingw/scripts/
cp $top/contrib/windows/shaders/* $top/package/mingw-build/mingw/shaders/
cp $top/contrib/glshaders/* $top/package/mingw-build/mingw/glshaders/
cp $top/contrib/translations/*/*.lng $top/package/mingw-build/mingw/languages/
- name: Build UCRT64 SDL2
run: |
top=`pwd`
./build-mingw-sdl2
strip -s $top/src/dosbox-x.exe
- name: Package UCRT64 SDL2
run: |
top=`pwd`
mkdir -p $top/package/mingw-build/mingw-sdl2/drivez
mkdir -p $top/package/mingw-build/mingw-sdl2/scripts
mkdir -p $top/package/mingw-build/mingw-sdl2/shaders
mkdir -p $top/package/mingw-build/mingw-sdl2/glshaders
mkdir -p $top/package/mingw-build/mingw-sdl2/languages
sed -e 's/^\(output[ ]*=[ ]*\)default$/\1ttf/;s/^\(windowposition[ ]*=\)[ ]*-/\1 /;s/^\(file access tries[ ]*=[ ]*\)0$/\13/;s/^\(printoutput[ ]*=[ ]*\)png$/\1printer/;s/\(drive data rate limit[ ]*=[ ]*\)-1$/\10/' $top/dosbox-x.reference.conf>$top/package/mingw-build/mingw-sdl2/dosbox-x.conf
cp $top/src/dosbox-x.exe $top/package/mingw-build/mingw-sdl2/dosbox-x.exe
cp $top/CHANGELOG $top/package/mingw-build/mingw-sdl2/CHANGELOG.txt
cp $top/dosbox-x.reference.conf $top/package/mingw-build/mingw-sdl2/dosbox-x.reference.conf
cp $top/dosbox-x.reference.full.conf $top/package/mingw-build/mingw-sdl2/dosbox-x.reference.full.conf
cp $top/contrib/windows/installer/readme.txt $top/package/mingw-build/mingw-sdl2/README.txt
cp $top/contrib/windows/installer/inpoutx64.dll $top/package/mingw-build/mingw-sdl2/inpoutx64.dll
cp $top/contrib/fonts/FREECG98.BMP $top/package/mingw-build/mingw-sdl2/FREECG98.BMP
cp $top/contrib/fonts/wqy_1?pt.bdf $top/package/mingw-build/mingw-sdl2/
cp $top/contrib/fonts/Nouveau_IBM.ttf $top/package/mingw-build/mingw-sdl2/Nouveau_IBM.ttf
cp $top/contrib/fonts/SarasaGothicFixed.ttf $top/package/mingw-build/mingw-sdl2/SarasaGothicFixed.ttf
cp $top/contrib/windows/installer/drivez_readme.txt $top/package/mingw-build/mingw-sdl2/drivez/readme.txt
cp $top/contrib/windows/installer/windows_explorer_context_menu*.bat $top/package/mingw-build/mingw-sdl2/scripts/
cp $top/contrib/windows/shaders/* $top/package/mingw-build/mingw-sdl2/shaders/
cp $top/contrib/glshaders/* $top/package/mingw-build/mingw-sdl2/glshaders/
cp $top/contrib/translations/*/*.lng $top/package/mingw-build/mingw-sdl2/languages/
cp $top/COPYING $top/package/COPYING
cd $top/package/
$top/vs/tool/zip.exe -r -9 $top/dosbox-x-UCRT64-experimental-${{ env.timestamp }}.zip *
cd $top
- name: Upload preview package
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-UCRT64-experimental-${{ env.timestamp }}
path: ${{ github.workspace }}/package/
- name: Upload release package
uses: softprops/action-gh-release@v2
if: 0
with:
files: dosbox-x-UCRT64-experimental-${{ env.timestamp }}.zip

View File

@ -107,7 +107,7 @@ jobs:
$top/vs/tool/zip.exe -r -9 $top/dosbox-x-vsbuild-win32-${{ env.timestamp }}.zip *
cd $top
- name: Upload preview package
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-vsbuild-win32-${{ env.timestamp }}
path: ${{ github.workspace }}/package/
@ -136,6 +136,7 @@ jobs:
- name: Prepare Visual Studio ARM32
shell: bash
run: |
ls -1 vs/dosbox-x.vcxproj vs/freetype/builds/windows/vc2010/freetype.vcxproj vs/libpdcurses/libpdcurses.vcxproj vs/libpng/projects/vstudio/libpng/libpng.vcxproj vs/libpng/projects/vstudio/libpng/libpng.vcxproj vs/sdl/VisualC/SDL/SDL.vcxproj vs/sdl/VisualC/SDLmain/SDLmain.vcxproj vs/sdl2/VisualC/SDL/SDL.vcxproj vs/sdl2/VisualC/SDLmain/SDLmain.vcxproj vs/sdlnet/VisualC/SDL_net_VS2008.vcxproj vs/sdlnet/VisualC/SDL_net_VS2008.vcxproj vs/zlib/zlib/zlib.vcxproj | xargs sed -b -i 's/>10.0</>10.0.22621.0</g'
echo "timestamp=`git show -s --format=%at | xargs -I# date -d @# +%Y%m%d%H%M%S`" >> $GITHUB_ENV
export shortsha=`echo ${GITHUB_SHA} | cut -c1-7`
export copyrightyear=`git show -s --format=%at | xargs -I# date -d @# +'%Y'`
@ -208,7 +209,7 @@ jobs:
$top/vs/tool/zip.exe -r -9 $top/dosbox-x-vsbuild-arm32-${{ env.timestamp }}.zip *
cd $top
- name: Upload preview package
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-vsbuild-arm32-${{ env.timestamp }}
path: ${{ github.workspace }}/package/

View File

@ -39,7 +39,7 @@ jobs:
- name: Build Visual Studio Win64 SDL1
shell: pwsh
run: |
msbuild -m vs/dosbox-x.sln -t:dosbox-x:Rebuild -p:Configuration=Release -p:Platform=x64
msbuild -m vs/dosbox-x.sln -t:dosbox-x:Rebuild -p:Configuration=Release -p:Platform=x64
if (-not(Test-Path -Path bin\x64\Release\dosbox-x.exe -PathType Leaf)) {exit 1}
contrib\windows\installer\PatchPE.exe bin\x64\Release\dosbox-x.exe
- name: Package Visual Studio Win64 SDL1
@ -107,7 +107,7 @@ jobs:
$top/vs/tool/zip.exe -r -9 $top/dosbox-x-vsbuild-win64-${{ env.timestamp }}.zip *
cd $top
- name: Upload preview package
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-vsbuild-win64-${{ env.timestamp }}
path: ${{ github.workspace }}/package/
@ -148,7 +148,7 @@ jobs:
- name: Build Visual Studio ARM64 SDL1
shell: pwsh
run: |
msbuild -m vs/dosbox-x.sln -t:dosbox-x:Rebuild -p:Configuration=Release -p:Platform=ARM64 -p:PostBuildEventUseInBuild=false
msbuild -m vs/dosbox-x.sln -t:dosbox-x:Rebuild -p:Configuration=Release -p:Platform=ARM64 -p:PostBuildEventUseInBuild=false -p:WindowsTargetPlatformVersion=10.0.22621.0
if (-not(Test-Path -Path bin\ARM64\Release\dosbox-x.exe -PathType Leaf)) {exit 1}
- name: Package Visual Studio ARM64 SDL1
shell: bash
@ -177,7 +177,7 @@ jobs:
- name: Build Visual Studio ARM64 SDL2
shell: pwsh
run: |
msbuild -m vs/dosbox-x.sln -t:dosbox-x:Rebuild -p:Configuration="Release SDL2" -p:Platform=ARM64 -p:PostBuildEventUseInBuild=false
msbuild -m vs/dosbox-x.sln -t:dosbox-x:Rebuild -p:Configuration="Release SDL2" -p:Platform=ARM64 -p:PostBuildEventUseInBuild=false -p:WindowsTargetPlatformVersion=10.0.22621.0
if (-not(Test-Path -Path bin\ARM64\"Release SDL2"\dosbox-x.exe -PathType Leaf)) {exit 1}
- name: Package Visual Studio ARM64 SDL2
shell: bash
@ -208,7 +208,7 @@ jobs:
$top/vs/tool/zip.exe -r -9 $top/dosbox-x-vsbuild-arm64-${{ env.timestamp }}.zip *
cd $top
- name: Upload preview package
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-vsbuild-arm64-${{ env.timestamp }}
path: ${{ github.workspace }}/package/
@ -217,3 +217,98 @@ jobs:
if: startsWith(github.ref, 'refs/tags/')
with:
files: dosbox-x-vsbuild-arm64-${{ env.timestamp }}.zip
MS2022Build64_CI_build:
permissions:
actions: write # for styfle/cancel-workflow-action to cancel/stop running workflows
contents: write # for actions/checkout to fetch code and softprops/action-gh-release
if: github.event_name == 'push' || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
runs-on: windows-latest
defaults:
run:
shell: pwsh
steps:
- name: Cancel previous runs
uses: styfle/cancel-workflow-action@0.12.1
with:
access_token: ${{ github.token }}
- uses: actions/checkout@v4
- uses: microsoft/setup-msbuild@v2
- name: Prepare Visual Studio 2022 build
shell: bash
run: |
echo "timestamp=`git show -s --format=%at | xargs -I# date -d @# +%Y%m%d%H%M%S`" >> $GITHUB_ENV
ls -1 vs/dosbox-x.vcxproj vs/freetype/builds/windows/vc2010/freetype.vcxproj vs/libpdcurses/libpdcurses.vcxproj vs/libpng/projects/vstudio/libpng/libpng.vcxproj vs/libpng/projects/vstudio/libpng/libpng.vcxproj vs/sdl/VisualC/SDL/SDL.vcxproj vs/sdl/VisualC/SDLmain/SDLmain.vcxproj vs/sdl2/VisualC/SDL/SDL.vcxproj vs/sdl2/VisualC/SDLmain/SDLmain.vcxproj vs/sdlnet/VisualC/SDL_net_VS2008.vcxproj vs/sdlnet/VisualC/SDL_net_VS2008.vcxproj vs/zlib/zlib/zlib.vcxproj | xargs sed -b -i 's/v14[2-9]/v143/g'
echo "timestamp=`git show -s --format=%at | xargs -I# date -d @# +%Y%m%d%H%M%S`" >> $GITHUB_ENV
export shortsha=`echo ${GITHUB_SHA} | cut -c1-7`
export copyrightyear=`git show -s --format=%at | xargs -I# date -d @# +'%Y'`
export updatestr=`git show -s --format=%at | xargs -I# date -d @# +'%b %d, %Y %I:%M:%S%P'`
echo '/* auto generated */' > include/build_timestamp.h
echo "#define UPDATED_STR \"${updatestr}\"" >> include/build_timestamp.h
echo "#define GIT_COMMIT_HASH \"${shortsha}\"" >> include/build_timestamp.h
echo "#define COPYRIGHT_END_YEAR \"${copyrightyear}\"" >> include/build_timestamp.h
cat include/build_timestamp.h
- name: Build Visual Studio Win32 SDL1
shell: pwsh
run: |
msbuild -m vs/dosbox-x.sln -t:dosbox-x:Rebuild -p:Configuration=Release -p:Platform=Win32
if (-not(Test-Path -Path bin\Win32\Release\dosbox-x.exe -PathType Leaf)) {exit 1}
- name: Build Visual Studio Win32 SDL2
shell: pwsh
run: |
msbuild -m vs/dosbox-x.sln -t:dosbox-x:Rebuild -p:Configuration="Release SDL2" -p:Platform=Win32
if (-not(Test-Path -Path bin\Win32\"Release SDL2"\dosbox-x.exe -PathType Leaf)) {exit 1}
- name: Build Visual Studio Win64 SDL1
shell: pwsh
run: |
msbuild -m vs/dosbox-x.sln -t:dosbox-x:Rebuild -p:Configuration=Release -p:Platform=x64
if (-not(Test-Path -Path bin\x64\Release\dosbox-x.exe -PathType Leaf)) {exit 1}
- name: Build Visual Studio Win64 SDL2
shell: pwsh
run: |
msbuild -m vs/dosbox-x.sln -t:dosbox-x:Rebuild -p:Configuration="Release SDL2" -p:Platform=x64
if (-not(Test-Path -Path bin\x64\"Release SDL2"\dosbox-x.exe -PathType Leaf)) {exit 1}
- name: Package Visual Studio 2022 build
shell: bash
run: |
top=`pwd`
#$top/bin/Win32/Release/dosbox-x.exe -tests -set waitonerror=false -set logfile=tests.log || (echo Unit test completed: failure && exit 1)
#cat tests.log
mkdir -p $top/package/drivez
mkdir -p $top/package/scripts
mkdir -p $top/package/shaders
mkdir -p $top/package/glshaders
mkdir -p $top/package/languages
mkdir -p $top/vs-bin
cp $top/bin/Win32/Release/dosbox-x.exe $top/package/dosbox-x_VS2022x86_SDL1.exe
cp $top/bin/Win32/"Release SDL2"/dosbox-x.exe $top/package/dosbox-x_VS2022x86_SDL2.exe
cp $top/bin/x64/Release/dosbox-x.exe $top/package/dosbox-x_VS2022x64_SDL1.exe
cp $top/bin/x64/"Release SDL2"/dosbox-x.exe $top/package/dosbox-x_VS2022x64_SDL2.exe
cp $top/bin/Win32/Release/dosbox-x.exe $top/vs-bin/dosbox-x_VS2022x86_SDL1.exe
cp $top/bin/Win32/"Release SDL2"/dosbox-x.exe $top/vs-bin/dosbox-x_VS2022x86_SDL2.exe
cp $top/bin/x64/Release/dosbox-x.exe $top/vs-bin/dosbox-x_VS2022x64_SDL1.exe
cp $top/bin/x64/"Release SDL2"/dosbox-x.exe $top/vs-bin/dosbox-x_VS2022x64_SDL2.exe
sed -e 's/^\(output[ ]*=[ ]*\)default$/\1ttf/;s/^\(windowposition[ ]*=\)[ ]*-/\1 /;s/^\(file access tries[ ]*=[ ]*\)0$/\13/;s/^\(printoutput[ ]*=[ ]*\)png$/\1printer/;s/\(drive data rate limit[ ]*=[ ]*\)-1$/\10/' $top/dosbox-x.reference.conf>$top/package/dosbox-x.conf
cp $top/CHANGELOG $top/package/CHANGELOG.txt
cp $top/dosbox-x.reference.conf $top/package/dosbox-x.reference.conf
cp $top/dosbox-x.reference.full.conf $top/package/dosbox-x.reference.full.conf
cp $top/contrib/windows/installer/readme.txt $top/package/README.txt
cp $top/contrib/windows/installer/inpout32.dll $top/package/inpout32.dll
cp $top/contrib/windows/installer/inpoutx64.dll $top/package/inpoutx64.dll
cp $top/contrib/fonts/FREECG98.BMP $top/package/FREECG98.BMP
cp $top/contrib/fonts/wqy_1?pt.bdf $top/package/
cp $top/contrib/fonts/Nouveau_IBM.ttf $top/package/Nouveau_IBM.ttf
cp $top/contrib/fonts/SarasaGothicFixed.ttf $top/package/SarasaGothicFixed.ttf
cp $top/contrib/windows/installer/drivez_readme.txt $top/package/drivez/readme.txt
cp $top/contrib/windows/installer/windows_explorer_context_menu*.bat $top/package/scripts/
cp $top/contrib/windows/shaders/* $top/package/shaders/
cp $top/contrib/glshaders/* $top/package/glshaders/
cp $top/contrib/translations/*/*.lng $top/package/languages/
cp $top/COPYING $top/package/COPYING
cd $top/package/
$top/vs/tool/zip.exe -r -9 $top/dosbox-x-vs2022build-${{ env.timestamp }}-experimental.zip *
cd $top
- name: Upload preview package
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-vs2022build-${{ env.timestamp }}-experimental
path: ${{ github.workspace }}/package/

View File

@ -115,7 +115,7 @@ jobs:
$top/vs/tool/zip.exe -r -9 $top/dosbox-x-vsbuild-XP-${{ env.timestamp }}.zip *
cd $top
- name: Upload preview package
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-vsbuild-XP-${{ env.timestamp }}
path: ${{ github.workspace }}/package/
@ -264,7 +264,7 @@ jobs:
cd contrib/windows/installer/
./ISCC.exe ./DOSBox-X-setupXP.iss
- name: Upload preview installer
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-winXP-${{ env.timestamp }}-setup.exe
path: contrib/windows/installer/dosbox-x-winXP-*.exe

View File

@ -26,7 +26,7 @@ jobs:
- name: Prepare Visual Studio builds
shell: bash
run: |
#ls -1 vs/dosbox-x.vcxproj vs/freetype/builds/windows/vc2010/freetype.vcxproj vs/libpdcurses/libpdcurses.vcxproj vs/libpng/projects/vstudio/libpng/libpng.vcxproj vs/libpng/projects/vstudio/libpng/libpng.vcxproj vs/sdl/VisualC/SDL/SDL.vcxproj vs/sdl/VisualC/SDLmain/SDLmain.vcxproj vs/sdl2/VisualC/SDL/SDL.vcxproj vs/sdl2/VisualC/SDLmain/SDLmain.vcxproj vs/sdlnet/VisualC/SDL_net_VS2008.vcxproj vs/sdlnet/VisualC/SDL_net_VS2008.vcxproj vs/zlib/zlib/zlib.vcxproj | xargs sed -b -i 's/v142/v141/g;s/>10.0</>10.0.22000.0</g'
ls -1 vs/dosbox-x.vcxproj vs/freetype/builds/windows/vc2010/freetype.vcxproj vs/libpdcurses/libpdcurses.vcxproj vs/libpng/projects/vstudio/libpng/libpng.vcxproj vs/libpng/projects/vstudio/libpng/libpng.vcxproj vs/sdl/VisualC/SDL/SDL.vcxproj vs/sdl/VisualC/SDLmain/SDLmain.vcxproj vs/sdl2/VisualC/SDL/SDL.vcxproj vs/sdl2/VisualC/SDLmain/SDLmain.vcxproj vs/sdlnet/VisualC/SDL_net_VS2008.vcxproj vs/sdlnet/VisualC/SDL_net_VS2008.vcxproj vs/zlib/zlib/zlib.vcxproj | xargs sed -b -i 's/>10.0</>10.0.22621.0</g'
echo "timestamp=`git show -s --format=%at | xargs -I# date -d @# +%Y%m%d%H%M%S`" >> $GITHUB_ENV
export shortsha=`git show --format='%h' --no-patch`
export copyrightyear=`git show -s --format=%at | xargs -I# date -d @# +'%Y'`
@ -124,7 +124,7 @@ jobs:
cd $top
ls -lg
- name: Upload preview package(VS x86/x64)
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-vsbuild-win-x86_x64-${{ env.timestamp }}
path: ${{ github.workspace }}/package/
@ -145,7 +145,7 @@ jobs:
$top/vs/tool/zip.exe -r -9 "$top/dosbox-x-vsbuild-ARM32_64-${{ env.timestamp }}.zip" "*"
cd $top
- name: Upload preview package(ARM 32/64-bit)
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-vsbuild-ARM32_64-${{ env.timestamp }}
path: ${{ github.workspace }}/package/
@ -361,7 +361,7 @@ jobs:
cd $top/package/
cd $top
- name: Upload preview package (MinGW)
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-mingw-x86_x64-${{ env.timestamp }}
path: ${{ github.workspace }}/package/
@ -387,7 +387,7 @@ jobs:
cd contrib/windows/installer/
ISCC.exe ./DOSBox-X-installer.iss
- name: Upload preview installer
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.6.2
with:
name: dosbox-x-windows-${{ env.timestamp }}-setup.exe
path: contrib/windows/installer/dosbox-x-windows*.exe

280
BUILD.md
View File

@ -1,8 +1,8 @@
Building DOSBox-X
=================
The page is about manually building the DOSBox-X source code. Automated
development (preview) builds intended for testing purposes for various
The page is about manually building the DOSBox-X source code.
Automated development (preview) builds intended for testing purposes for various
platforms are also available from the [DOSBox-X Development Builds](https://dosbox-x.com/devel-build.html) page.
Released builds are available from the [Releases](https://github.com/joncampbell123/dosbox-x/releases) page.
@ -14,96 +14,90 @@ General information on source code compilation
The four major operating systems and platforms of DOSBox-X are:
1. Windows 11, 10, 8, 7, Vista and XP for 32-bit and 64-bit x86/x64 and ARM
1. Windows 11, 10, 8, 7, Vista and XP, 9x/NT4 for 32-bit and 64-bit x86/x64 and ARM
- [Visual Studio (2017 and after)](#compiling-the-source-code-using-visual-studio-windows) for Vista and after
- [MinGW standard and lowend builds](#compiling-the-source-code-using-mingw-windows)
2. Linux (with X11) 64-bit x86/x64, and on a Raspberry Pi 3/4/5
- [General procedures](#general-procedures-to-compile-the-source-code-cross-platform)
- [Ubuntu](#to-compile-dosbox-x-in-ubuntu-tested-with-2004-and-2010)
- [Fedora Workstation](#to-compile-dosbox-x-in-fedora-workstation)
- [Raspberry Pi](#to-compile-dosbox-x-in-raspberry-pi)
3. macOS (Mac OS X) recent version, 64-bit Intel, ARM-based, and Universal
3. macOS (Mac OS X) High Sierra and after, Intel, ARM-based, and Universal
- [macOS procedures](#compiling-the-source-code-in-macos-high-sierra-and-after)
4. DOS (MS-DOS 5.0+ or compatible)
- [HX-DOS](#to-compile-dosbox-x-for-dos-with-hx-dos-platform)
Straight Windows builds are expected to compile using the free community edition
of Visual Studio 2017 to Visual Studio 2022 and the DirectX 2010 SDK.
The code requires a C++ compiler that can support the C++11 standard.
Linux and MinGW Windows builds are expected to compile with the GNU autotools.
DOSBox-X supports both SDL ([Simple Directmedia Library](https://www.libsdl.org/)) versions 1.x and 2.x.
macOS builds are expected to compile on the terminal using GNU autotools and
the LLVM/Clang compiler provided by XCode. Universal macOS builds are only
possible when building on a host machine powered by an Apple Silicon CPU, due to
requiring parallel Homebrew installations running natively *and* under
Rosetta 2.
Note that SDL1 version requires the in-tree SDL 1.x library since it has been heavily modified from
the original SDL 1.x source code and is thus somewhat incompatible with the stock library.
In all cases, the code requires a C++ compiler that can support the C++11
standard.
Note that DOSBox-X supports both SDL 1.x and 2.x, and it is written to compile
against the in-tree copy of the SDL 1.x (Simple Directmedia Library), or against
the SDL 2.x library provided by your Linux distribution.
For Visual Studio and MinGW compilation, the in-tree copy of SDL is always
used. Note that the in-tree SDL 1.x library has been heavily modified from
the original SDL 1.x source code and is thus somewhat incompatible with the
stock library.
The modifications provide additional functions needed to improve DOSBox-X
and fix many issues with keyboard input, window management, and display
management that previously required terrible kludges within the DOSBox
Such modifications provide additional functions needed to improve DOSBox-X and fix many issues with keyboard input,
window management, and display management that previously required terrible kludges within the DOSBox
and DOSBox-X source code.
In Windows, the modifications also permit the emulation to run independent
of the main window so that moving, resizing, or using menus does not cause
emulation to pause.
In Windows, the modifications also permit the emulation to run independent of the main window so that moving,
resizing, or using menus does not cause emulation to pause.
In macOS, the modifications provide an interface to allow DOSBox-X to
replace and manage the macOS menu bar.
In macOS, the modifications provide an interface to allow DOSBox-X to replace and manage the macOS menu bar.
On the other hand, only a slight modification regarding IME support on Windows and macOS are added to the
in-tree SDL2 code, so Linux and macOS users may choose to use the original SDL2 library,
while on Windows in-tree SDL2 code is always used.
Please look at the [README.source-code-description](README.source-code-description) file for more information
and descriptions on the source code.
How to compile the source code (cross-platform)
Compiling the source code using Visual Studio (Windows)
-------------------------------------------------------
The source code can be built with Visual Studio 2017, 2019, and 2022.
The executables will work on 32-bit and 64-bit Windows Vista or higher.
Use the ```./vs/dosbox-x.sln``` "solution" file, select 32/64-bit, SDL1/2 and build the source code.
You will need the DirectX 2010 SDK for Direct3D9 support.
By default the targeted platform is v142 (Visual Studio 2019).
Change it to v141 (VS2017) or v143 (VS2022) accordingly to your build environment.
`WindowsTargetPlatformVersion` is set to `10.0` by default, which make VS pick the latest Windows SDK version installed,
but VS2017 requires you to explicitly set the version installed in your PC, for example `10.0.22000.0`.
_Note that ARM builds requires versions ``10.0.22621.0`` or before._
To build executables that will work on Windows XP, you have to change the target platform to v141 (Visual Studio 2017).
After the build is completed, you have to patch the PE header of the executable using a tool included in the source code.
```./contrib/windows/installer/PatchPE.exe path-to-your-exe-file/dosbox-x.exe```
Libraries such as SDL, freetype, libpdcurses, libpng and zlib are already included,
and as of DOSBox-X 0.83.6 support for FluidSynth MIDI Synthesizer is also included
for Windows builds (set ``mididevice=fluidsynth`` in the [midi] section of DOSBox-X's
configuration file (dosbox-x.conf) along with required soundfont file [e.g.
``FluidR3_GM.sf2`` or ``GeneralUser_GS.sf2``] to use it).
The slirp backend for the NE2000 network emulation is only supported by MinGW builds
but not Visual Studio builds.
Build the source code for your platform (Win32, x64, ARM and ARM64 are supported).
As of 2018/06/06, Visual Studio 2017 builds (32-bit and 64-bit) explicitly require
a processor that supports the SSE instruction set. As of version 2022.09.01, Visual
Studio ARM/ARM64 builds require a Windows SDK that includes the OpenGL library.
Visual Studio Code is supported, too.
Check the [README.development-in-Windows](README.development-in-Windows) file for more information about this platform.
Compiling the source code using MinGW (Windows)
-----------------------------------------------
Depending on the target OS to run DOSBox-X, the build environment and procedures will vary.
* General Linux or BSD compile (SDL1)
```
./build-debug
sudo make install
```
* General Linux or BSD compile (SDL2)
```
./build-debug-sdl2
sudo make install
```
* macOS compile (SDL1)
* Build natively for the host architecture
```
./build-macos
```
* Build a Universal Binary on an Apple Silicon CPU (will *not* work on Intel)
```
./build-macos universal
````
You can build an App Bundle from the result of this build with
```
make dosbox-x.app
```
* macOS compile (SDL2)
* Build natively for the host architecture
```
./build-macos-sdl2
```
* Build a Universal Binary on an Apple Silicon CPU (will *not* work on Intel)
```
./build-macos-sdl2 universal
````
You can build an App Bundle from the result of this build with
```
make dosbox-x.app
```
* MinGW compile for Windows 7 or later
* For Windows 7 or later
* First install the required libraries needed.
Libraries for mingw32(32-bit)
```
@ -113,39 +107,58 @@ sudo make install
```
pacman -S git make mingw-w64-x86_64-toolchain mingw-w64-x86_64-libslirp mingw-w64-x86_64-libtool mingw-w64-x86_64-nasm autoconf automake mingw-w64-x86_64-ncurses
```
* Compile SDL1 (32-bit or 64-bit)
Libraries for UCRT64(64-bit)
```
pacman -S git make mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-libtool mingw-w64-ucrt-x86_64-nasm autoconf automake mingw-w64-ucrt-x86_64-libslirp
```
* Compile (SDL1 or SDL2, Common for 32-bit/64-bit builds)
```
./build-mingw
```
Compile SDL2 (32-bit or 64-bit)
```
./build-mingw-sdl2
```
* For Windows XP or later (SDL1 or SDL2, 32-bit only)
* Start a 32-bit toolchain from the original (MinGW not the MinGW-w64 project).
Build environment for XP and later can be downloaded [here](https://github.com/joncampbell123/dosbox-x/blob/master/build-scripts/mingw/lowend-bin/i686-7.3.0-release-posix-dwarf-rt_v5-rev0%2Bnasm.7z).
* MinGW compile (using MinGW32, not MinGW-w64: see NOTICE below) for lower-end systems including Windows XP or later (SDL1)
```
./build-mingw-lowend
```
As an example, the official Release and Nightly builds are built by overwriting MinGW32 environment of MSYS2 with the above environment.
Refer to `MinGW32_CI_lowend_build` section in [mingw32.yml](https://github.com/joncampbell123/dosbox-x/blob/master/.github/workflows/mingw32.yml) for details.
* Compile (SDL1 or SDL2, Common for 32-bit/64-bit builds)
```
./build-mingw-lowend
```
```
./build-mingw-lowend-sdl2
```
* MinGW compile (using MinGW32, not MinGW-w64: see NOTICE below) for lower-end systems including Windows XP or later (SDL2)
```
./build-mingw-lowend-sdl2
```
* For Windows 9x/NT4 (SDL1, 32-bit only)
* Start a 32-bit toolchain from the original MinGW (not the MinGW-w64 project).
Build environment for 9x/NT4 build can be downloaded [here](https://github.com/crazii/MINGW-toolchains-w9x/releases/download/v1.0.1-w95nt/mingw32.7z).
* MinGW compile (using MinGW32, not MinGW-w64: see NOTICE below) on Windows to target the DOS platform (MS-DOS or compatible with HX DOS Extender)
As an example, the official Release and Nightly builds are built by overwriting MinGW32 environment of MSYS2 with the above environment.
Refer to `MinGW32_CI_lowend9x_build` section in [mingw32.yml](https://github.com/joncampbell123/dosbox-x/blob/master/.github/workflows/mingw32.yml) for details.
* Compile
```
./build-mingw-lowend9x
```
NOTICE: Lowend builds should NOT be compiled with MinGW-w64 since they have extra dependencies which are not supported by Windows XP, Vista and 9x/NT4.
## General procedures to compile the source code (cross-platform)
* First install the required tools and libraries, such as git, gcc, g++, make, Autotools, pkg-config, nasm, libxkbfile.
Depending on the [options](#libraries-used-by-dosbox-x) you want, some more may be required.
* Download the source code from the github repository
```
./build-mingw-hx-dos
git clone https://github.com/joncampbell123/dosbox-x.git
cd dosbox-x
```
NOTICE: Use the 32-bit toolchain from the original MinGW project for the lowend and HX-DOS builds, not the MinGW-w64 project.
Binaries compiled with MinGW-w64 have extra dependencies which are not supported by Windows XP or the HX DOS Extender.
macOS: If you want to make an .app bundle you can run from the Finder, compile the program as instructed then run ``make dosbox-x.app``.
XCode (on macOS, from the Terminal) to target macOS
* General Linux or BSD compile (SDL1)
```
./build-debug
sudo make install
```
Alternatively you can also compile the SDL2 version by running the ``./build-debug-sdl2`` script.
## To compile DOSBox-X in Ubuntu (tested with 20.04 and 20.10):
@ -207,49 +220,49 @@ cd dosbox-x
```
If you have audio problems, you may want to try the SDL2 build using `./build-debug-sdl2` script.
Compiling the source code using Visual Studio (Windows)
-------------------------------------------------------
Compiling the source code in macOS (High Sierra and after)
----------------------------------------------------------
macOS builds are expected to compile on the terminal using GNU autotools and the LLVM/Clang compiler provided by XCode.
Universal macOS builds are only possible when building on a host machine powered by an Apple Silicon CPU,
due to requiring parallel Homebrew installations running natively *and* under Rosetta 2.
You can build the source code with Visual Studio 2017, 2019, and 2022.
(The code currently cannot be built with Visual Studio 2015)
The executables will work on 32-bit and 64-bit Windows Vista or higher.
* First install the required tools and libraries from [Homebrew](https://brew.sh/ja/) or [MacPorts](https://www.macports.org/).
To target older OS versions, MacPorts maybe recommended.
```
brew install autoconf automake nasm glfw glew fluid-synth libslirp libpcap pkg-config sdl2_net
```
```
sudo port install autoconf automake nasm glfw glew fluidsynth libslirp libpcap pkgconfig libsdl2_net
```
* Compile natively for the host architecture (SDL1 or SDL2)
```
./build-macos
```
```
./build-macos-sdl2
```
* _(Optional)_ Add `universal` option to build an Universal Binary on an Apple Silicon CPU (will *not* work on Intel)
```
./build-macos universal
```
```
./build-macos-sdl2 universal
````
* You can build an App Bundle from the result of this build with
```
make dosbox-x.app
```
Use the ```./vs/dosbox-x.sln``` "solution" file and build the source code.
You will need the DirectX 2010 SDK for Direct3D9 support.
## To compile DOSBox-X for DOS with HX-DOS platform
* Start a 32-bit toolchain from the original MinGW (not the MinGW-w64 project).
By default the targeted platform is v142 (Visual Studio 2019).
To build the source code on Visual Studio 2017 or 2022,
you may change the platform toolset to v141 or v143 respectively.
For Visual Studio 2017, you have to set ``WindowsTargetPlatformVersion`` to whatever
Windows SDK version installed in your PC, for example ``10.0.22000.0``.
(Visual Studio 2019 and beyond will pick the latest Windows SDK version installed
if you set the value to `10.0`)
To build executables that will work on Windows XP,
you have to change the target platform to v141 (Visual Studio 2017).
After the build is completed, you have to patch the PE header of the executable using
a tool included in the source code.
```./contrib/windows/installer/PatchPE.exe path-to-your-exe-file/dosbox-x.exe```
Libraries such as SDL, freetype, libpdcurses, libpng and zlib are already included,
and as of DOSBox-X 0.83.6 support for FluidSynth MIDI Synthesizer is also included
for Windows builds (set ``mididevice=fluidsynth`` in the [midi] section of DOSBox-X's
configuration file (dosbox-x.conf) along with required soundfont file [e.g.
``FluidR3_GM.sf2`` or ``GeneralUser_GS.sf2``] to use it).
The slirp backend for the NE2000 network emulation is only supported by MinGW builds
but not Visual Studio builds.
Build the source code for your platform (Win32, x64, ARM and ARM64 are supported).
As of 2018/06/06, Visual Studio 2017 builds (32-bit and 64-bit) explicitly require
a processor that supports the SSE instruction set. As of version 2022.09.01, Visual
Studio ARM/ARM64 builds require a Windows SDK that includes the OpenGL library.
Visual Studio Code is supported, too.
Check the [README.development-in-Windows](README.development-in-Windows) file for more information about this platform.
Build environment for HX-DOS build can be downloaded [here](https://github.com/joncampbell123/dosbox-x/blob/master/build-scripts/mingw/lowend-bin/mingw-get-0.6.2-mingw32-beta-20131004-1-bin.zip).
As an example, the procedures of official Release and Nightly builds can be found in [hxdos.yml](https://github.com/joncampbell123/dosbox-x/blob/master/.github/workflows/hxdos.yml) as a reference.
* Compile (SDL1, 32-bit only)
```
./build-mingw-hx-dos
```
NOTICE: HX-DOS builds should NOT be compiled with MinGW-w64 since they have extra dependencies which are not supported by the HX DOS Extender.
Libraries used by DOSBox-X
--------------------------
@ -265,6 +278,7 @@ The following libraries are used by DOSBox-X:
Note that only version 1.2.x (SDL1 version) and version 2.x
(SDL2 version) are currently supported.
You may use SDL3 if combined with sdl2-compat library.
License: LGPLv2+

369
CHANGELOG
View File

@ -1,3 +1,371 @@
Next version
- Remove mixer and VGA capture test modes from integration device. Update
integration device version number. Convert hardcoded magic constants used
in IG into constants in iglib.h which is now shared explicitly with the
iglib.h in DOSLIB. Add integration device interface to allow the guest
to read and set the CPU cycle count of the emulator. (joncampbell123).
2025.05.03
- Show TURBO status in title bar. (maron2000)
- Fixed MinGW32 builds failed using gcc15, due to a conflict in __inline__
macro. (lazka)
- Revise EGA/VGA emulation to treat the CRTC CGA/Hercules
CRTC bit remapping as bits to mask out, instead of defining
the upper limit of the memory mask. This makes the CGA mode
Engine page flipping test work. I initially had reservations
about whether or not real hardware did this, but, it would
make sense for hardware to do it that way. (joncampbell123)
- Updated libpng to version 1.6.47 (maron2000)
- Updated XCOPY to version 1.9a (maron2000)
- Updated SDL2 library to version 2.32.4 (maron2000)
- Fixed a build/install error due to using wildcards in Makefile.am, which is
not supported in GNU Automake. (maron2000)
- macOS: Install SDL2_net in CI workflow to enable internal modem support on
Release and Nightly SDL2 builds. (maron2000)
- Fixed buffer size to allocate missing byte for string terminator for
savestate filename to prevent buffer overflow (arifogel)
- Fixed settings of yellow color in COLOR command (maron2000)
- Fixed COLOR command to match behavior on Windows (maron2000)
- Fixed INT21h AH=0a cursor position moved by bell due to keyboard buffer full
(maron2000)
- Fixed INT21h AH=01 echo behavior (maron2000)
- Replaced SetPixel with DIB Section Direct Memory Access for faster printing
(DwayneSelsig)
- Fixed creation of overlay special files (zyebytevt)
- PC-98 mode: Add INT 18h function AH=10h to control cursor blink.
Emulate documented side effect in that this call also hides the
cursor. The PC-98 port of Lemmings will no longer show a blinking
black box in the lower left corner. (joncampbell123)
- Fixed Host key (F11, F12) handling in Codepage 932 (Japanese Shift-JIS).
(maron2000)
- Bumped ESFMu to ver 1.2.6 (maron2000)
- Fixed regression of adding a dot to CD labels when longer than 8 characters,
required for games such as Descent 2 CD installer (maron2000)
- Added Modeswitch toggle option (DieSkaarj)
- Fixed glitch of DBCS character at the end of a line (maron2000)
- Fixed dialog for showing error of loading language files (maron2000)
- Removed two and 226 duplicate Chinese character mappings from code
pages 950 and 951, respectively, ensuring more accurate Big5 and
Big5-UAO character mappings for Chinese IME users. (1abcd)
- Enabled changing drives mounted prior to switching to securemode (maron2000)
- Enabled some messages to be translated in the translation files (maron2000)
- Fixed fullscreen mode occasionally switched to windowed mode (maron2000)
- Updated French translation (FredBezies)
- Fixed blank screen when output=ttf on PC-98 mode (maron2000)
- Fixed crash when switching from fullscreen to window mode in TTF output
(maron2000)
- Fixed mounting zip files with white space in their names failed (maron2000)
- Fixed crash on reboot when output=ttf (maron2000)
- Fixed blank BIOS screen when output=ttf (maron2000)
- Fixed direct input of half-width kana (maron2000)
- Fixed PC-98 INT 1Fh, AH=90h source and destination address (drachen6jp)
- Fixed unnecessary trailing backslash in path name (maron2000)
- Fixed SSE MOVSS, MOVHPS, UNPCKLPS, UNPCKHPS, and PSADBW as well as
MMX PMULLW, PSUBUSB, and PSUBUSW, instruction implementations (fuel-pcbox)
2025.02.01
- Added new experimental dosbox.conf option that turns off the
A20 gate automatically if loading a COM/EXE file to a memory
location below 64KB. Option is off by default. This is intended
for the startup routines of programs that assume 8086 wraparound
to prevent them from crashing (joncampbell123).
- Bump tinyfiledialogs to v3.19.1 (maron2000)
- Fix VGA render-on-demand bug that causes all screen updates to
stop working if something changes video state without changing
any other attribute (width, height, frame rate, etc.). In
PC-98 mode this bug could be triggered by leaving the text
layer open while switching off the graphics layer when the
graphics layer is in 256-color PEGC mode. Fix for KOARMADA.EXE
when exiting back to the DOS prompt. (joncampbell123).
- In PC-98 mode, add I/O port 43Bh which guest applications can
then read to determine whether the 15MB "memory hole" is open.
The guest can use this bit to determine whether the PEGC 256-color
framebuffer is available at that location, or whether that is
just plain system memory. Added for homebrew PC-9821 project
KOARMADA.EXE which uses that bit to determine how to talk to
the framebuffer. (joncampbell123).
- Fix keyboard ISR in PC-98 mode to assume there is data waiting
from the keyboard I/O ports (then check the status for more).
The reason is that CWSDPMI.EXE for PC-98 has a keyboard ISR
of it's own that reads the scan code first (which clears the
"data available" bit) before then passing control to the
real-mode keyboard ISR. If our keyboard ISR first checks for
status in that case it will never see any keyboard data and
keyboard input will never register to the guest while running
under CWSDPMI (joncampbell123).
- Fix BIOS POST location (F000:FFF0) JMP instruction in PC-98 mode
so that the segment value of the JMP instruction matches a
specific value that the DJGPP C runtime checks for to detect
PC-98. (joncampbell123).
- Stop serving IBM PC-specific CWSDPMI.EXE in NEC PC-98 mode.
It happens to work unless any interrupt or exception happens.
Instead, provide an alternate common version of CWSDPMI.EXE
that was patched to support PC-98 machines when machine=pc98
(joncampbell123).
- Add support for ucrt64 builds (maron2000)
- DOS CTRL+C handling: Remove NULL vector check because built-in
COMMAND.COM long ago was fixed to provide a CTRL+C vector. Fix
code to use a different value for the C++ exception so that it
cannot be confused for any other common signal in the emulator
(joncampbell123).
- Remove DOSBox Integration Device VGA "self capture",
which was never used much anyway, as part of cleanup (joncampbell123).
- x86 paging: Remove unused non-"full TLB" code. (joncampbell123).
- Use mmap() to allocate system memory if available. This is
for future work that may involve something that requires
page-aligned allocation, such as KVM support in Linux (joncampbell123).
- VGA cleanup, organization (joncampbell123).
- Fixed regression of specifying DBCS fontx file was ignored. (maron2000)
- Fixed mistakes in adding double quotes to filenames to pass to IMGMOUNT
command, and syntax errors in showing a message dialog box. (maron2000)
- Fixed bug where bios memSize was not set when using TTF. (maitchison)
- Fixed CMS was always disabled regardless of config settings. (xrip)
- Switch off TTF mode in text modes not working in TTF mode. (maron2000)
- Gravis Ultrasound: Add dosbox.conf option that when enabled,
prints a warning to the log file every time the guest pokes
data into GUS RAM beyond the 1MB supported by the card,
in order to better identify errant Demoscene code and/or
any bugs in new tracker code currently in development. (joncampbell123)
- VGA: Fix buffer overrun that can occur with 4bpp planar
16-color modes if the guest writes beyond the first 2MB
of video RAM. The planar support code also copies the 3rd
bitplane to a font RAM array used in EGA/VGA text mode.
This font RAM array is only 512KB, therefore in planar
memory space, writes beyond (2MB/4) = 512KB cause corruption
of emulator state and possibly crashes. Solve the issue
therefore by not copying to font RAM beyond 512KB. (joncampbell123)
- VESA BIOS support: Fix VGA draw and bank switching code
to ensure that the guest cannot write outside video RAM
limits, and fix VBE bank switching code to consider 4bpp
planar SVGA modes properly. (joncampbell123)
- VESA BIOS support: Fix scan line and page calculations related
to 4bpp planar 16-color SVGA modes. (joncampbell123)
- VESA BIOS support: Fix 24bpp RGB bugs related to VBE calls
that control scan line length and display panning/scrolling.
Now VBETEST can test 24bpp panning without potentially giving
the user an epileptic seizure, and there are no more overlong
scanlines. (joncampbell123)
- VESA BIOS support: Correct mode information for SVGA text modes (joncampbell123)
- VESA BIOS support: Like real Pentium-era hardware, do not
list 4bpp planar 16-color modes as having a linear framebuffer.
Most SVGA cards only support planar VGA memory within the
standard VGA A0000-BFFFFh region and do not support the same
up in the linear framebuffer area. (joncampbell123)
- Save state support: Let the option to control whether or not
compression is applied, apply to the ZIP compression. If you
turn off compression, the ZIP file uses "store" mode instead,
otherwise compresses as normal. (joncampbell123)
- It turns out that for whatever reason, the savestate code was
compressing the state twice. Once by itself, and then again when
writing to the ZIP archive. Furthermore, storing the original
length at the end of the compressed data using size_t is a big
problem. Remove the extra compression/decompression and let the
ZIP file support do the compression. Save states from now on
will be marked as "No compression" for at least some backwards
compatibility. (joncampbell123)
- Volume label cleanup and fixes. Do not pad labels with white spaces. (maron2000)
- Some NEC PC-98 games that support MIDI through MPU-401 like to use
Roland GS-specific SysEx messages to control master volume and
reset the MIDI synth, instead of standard messages. These games
were known in DOSBox-X to have problems with MIDI stuck notes and
hanging notes for this reason. Added code to recognize Roland GS
reset SysEx and reissue it as standard MIDI reset, to resolve that.
Added code to Fluidsynth MIDI support to recognize the Roland GS
master volume SysEx commands and apply it to the output, which
allows these games to "fade out" the MIDI properly. PC-98 games
should no longer have hanging/stuck MIDI notes (joncampbell123).
- Fix VESA BIOS modelist mistake that marked all "high definition"
modes as modes to round bytes per line up to a power of 2 (joncampbell123)
- Fix memory size register determination for S3 Virge/VX (clbianco)
- Fixed a Y2038 bug by replacing Int32x32To64 with regular multiplication.
(CookiePLMonster)
- Fixed pasting Bell code (0x07) from clipboard was ignored. (maron2000)
- Fixed a segfault crash when pasting the content of clipboard is empty
or consists of invalid characters only. (maron2000)
- Fixed crash when trying to access MOUNTed empty physical CD/Floppy
drives. (maron2000)
2025.01.01
- Fix bug that prevented the Configuration GUI from saving to dosbox.conf
the last Windows 3.1 theme you applied using the dropdown menu.
(joncampbell123).
- Add option to apply vmemdelay to SVGA and linear framebuffer
modes (such as VESA BIOS modes), which reduces emulator performance
for those modes, but allows you to emulate slower SVGA cards.
Due to how some machine types are emulated, this option also enables
vmemdelay to affect the PC-98 linear framebuffer, Tandy & PCjr
video modes, as well as MDA/Hercules. (joncampbell123).
- Add workaround to CPU reset logic that allows it to work correctly
even with dynamic core. Previously, if the guest reset the system,
the emulator would crash with an error message about an uncaught
C++ exception because C++ exception handling doesn't work with
dynamically generated code. (joncampbell123).
- Correct CPUID family/model/brand values for cputype=pentium_iii.
Add CPUID level 2, which returns "processor configuration
descriptors", and return documented Pentium III values. Apparently
Windows XP really REALLY cares about these configuration
descriptors and will hang in-kernel in an infinite loop at bootup
without these apparently really important values. This change
makes it possible to boot Windows XP with Pentium III emulation.
(joncampbell123).
- Allow values of memsize to represent 4GB or more of RAM. Up to
1TB, if Pentium PSE extensions are enabled, the memalias setting
is 40, and "enable pse=pse40" in the conf file. Memalias maximum
is now 40, instead of 32. Add code to provide that memory above
the 4GB address mark when PSE is in use by the guest OS. Added
dosbox.conf option to specify a memory file. When specified, all
guest memory is memory-mapped from a file on disk, rather than
allocated from host memory or host swap file. To avoid consuming
too much RAM on the host, a memory file is REQUIRED to emulate
memory at or above 4GB. For best performance with the memory file,
make sure the filesystem you place it on supports sparse files,
including Linux ext4 and Windows NTFS. (joncampbell123).
- Fix EGA machine type to determine whether CGA RGBI or EGA RrGgBb
display is active by vsync polarity, instead of the length of
htotal. Several online references state that vsync is negative
for 350-line modes, including 350-line to an MDA monitor. This
also allows the "enhanced" EGA 320x200 modes in Rambo III to display
colors correctly. (joncampbell123).
- Dynamic x86 core: Reflect STI instruction to normal core so that
the 1-instruction delay is correctly emulated. This makes it
possible to run Windows XP or Server 2003 with dynamic core and
SYSENTER/SYSEXIT emulation without random BSODs (joncampbell123).
- Fix default code page. Instead of assuming 437 at all times, use
437 for all IBM PC compatible modes and 932 for PC-98 emulation.
(joncampbell123).
- Normal core: Fix STI emulation to enforce the 1-instruction delay
by forcing the normal core to execute another instruction right
away without providing any opportunity for interrupt processing.
This does not break Peret Em Heru, Keen games, and it seems to fix
the random BSOD issues with Windows XP and Windows Server 2003
when emulating a Pentium II that supports SYSENTER/SYSEXIT. I'm
not clear on why this fix prevents them from crashing, but there
you go. (joncampbell123).
- Keyboard emulation: Fix PCjr key delay to match IBM documentation
stating how long it takes to transmit one scan code, which is
obviously much slower than normal to accomodate the slow CPU and
the optical nature of the transmission. This is needed in order
for emulation to correctly send Fn+key combinations. At normal
key delay, the guest will miss scan codes and function keys will
not be reliable. (joncampbell123).
- Keyboard emulation: The 83-keyboard scan codes work differently on
the PCjr keyboard because half of them are only accessible by holding
the Fn key. The keyboard only sends the base key scan code and the Fn
key scan code and the BIOS is expected to convert that to the normal
83-key scan codes expected by DOS software. The problem is some games
like "Agent USA" for PCjr are written to directly handle scan codes
through IRQ 1 (the fact that PCjr handles keyboard via NMI and reflects
to INT 9 is ignored here). Fix this by sending scan codes that emulate
holding Fn and pressing the appropriate key. Agent USA expects the
user to press F1 by holding Fn and pressing "1". (joncampbell123).
- Revise VGA doublescan mode, vs bit 7 of the Max scanline register, to
correct how VGA doublescans 200-line modes. Revise EGA/VGA text code
to divide line by 2 in rendering to match double scanned scanlines,
so that the "graphical" text of "After the War" can render properly
for machine=vgaonly. (joncampbell123).
- INT 10: If machine=ega, check the EGA switches on INT 10h modeset.
Some games force the EGA BIOS to use CGA 200-line text modes by
modifying those bits and then setting the mode ("After the War").
(joncampbell123).
- INT 10: Fix "load font" functions to correctly recompute video
display end for machine=vgaonly and machine=ega. (joncampbell123).
- INT 10: Like any other 200-line 16-color graphics mode, 200-line
VGA text mode needs to program the AC and VGA palette using the
CGA RGBI-type palette, not the EGA 64-color type palette. (joncampbell123).
- CPU: Disallow clearing PE bit from LMSW by default, always.
You can still allow it through dosbox.conf. It turns out that
x86 CPUs never allowed you to clear it that way, even from the
Pentium up, even though Intel documentation beyond the 386 never
mentions it again. This fixes problems with DOS extenders and
VCPI, particularly DOS4GW which for some reason with VCPI likes
to try to clear the PE bit when switching to VM86 even though
it clearly understands it's not supposed to be able to clear it.
(joncampbell123).
- VCPI: It turns out the VCPI server GDT selectors are expected to
be 32-bit, because the protected mode VCPI entry point is expected
to be called as if 32-bit far pointer. Correct VCPI entry point
to return using RETF, not IRETD, which solves crashing issues with
DOS extenders. For the first time, DOS extenders are working with
the DOSBox-X built-in implementation of VCPI and most DOS games
run fine now with it. (joncampbell123).
- VCPI: Add code to INT 2Fh handler regarding Windows startup/shutdown
messages to fill in DS:SI. If EMM386 and VCPI emulation is active
and running the DOS machine in virtual 8086 mode, give Windows the
proper callback procedure to allow Windows to switch off VCPI vm86
mode on startup and turn it back on during shutdown. (joncampbell123).
- BIOS "POST" screen: Change BIOS logo to PNG format. To avoid having
to render a PNG in roughly 10 different video modes, add code to
VGA draw code to allow a BIOS logo "overlay" to be rendered
independent of the video mode. Depending on machine type load one
of four PNG files from disk or from inside DOSBox-X itself.
PNG requirements: 224x224 or smaller, bit depth of 8bpp or less,
color palette (not grayscale), no alpha channel, and must not be
interlaced. For best compatibility, use less than 64 colors, or
perhaps just 16 colors. Much like the Windows 95 LOGO.SYS, you can
change the logo to your taste by placing specifically named PNG
files in the same directory as your dosbox.conf or current working
directory. Have fun. Note that this addition requires that you
compile DOSBox-X with libpng enabled. (joncampbell123).
- Added dosbox.conf option to specify BIOS logo file. (joncampbell123).
- Added dosbox.conf option to specify a text message, up to 3 lines,
at the bottom of the screen during BIOS POST screen. (joncampbell123).
- Fix color glitches in EGA, Tandy, Hercules mode on macOS SDL2 build
(output=opengl)(maron2000)
- Add int33 mickey threshold option (Fixes Ultima Underworld) (jpernst)
- Fix configure.ac (disable-screenshot option) (maron2000)
- Fixed codepage switching when loading language file in Traditional
Chinese (maron2000)
- Fixed display of some Chinese characters (Traditional Chinese)(maron2000)
- Fixed garbled text and menubar on reset (maron2000)
- Fixed codepage switching when a language file was loaded (maron2000)
- sdlmain: Fixed crashing if no config files are found. (skitt)
2024.12.04
- Arrange memory device allocation so that it is possible to allocate
up to about 3900MB of memory instead of 3500MB. (joncampbell123).
- Fix S3 LFB PCI base alignment error if system memory pushes it
to a higher address (joncampbell123).
- Fix EGA 640x350 4-color mode (when EGA memory size is 64KB) to
display correctly. Prior to this fix, 640x350 4-color only worked
properly if the INT 10h Video Parameter Table was enabled. (joncampbell123).
- Fix S3 VGA memory size reported through register CR36 to cap at 4MB
and set the value correctly. This fixes a known issue where setting
vmemsize to 8MB caused Windows 98 to report memory size as 2.5MB. (joncampbell123).
- Fixed a problem when VZ Editor is resident in PC-98 mode. (nanshiki).
- INT 10: SVGA mode 0x6A does not exist on plain VGA hardware. (joncampbell123).
- INT 10: Fix mode 0x6A (800x600 4-color SVGA) to use a correct dot
clock so that the refresh rate is >= 60Hz instead of 37Hz, and make
sure mode 0x6A is a 100% clone of VESA BIOS MODE 0x102. (joncampbell123).
- Fix MMX/SSE instruction decoding, correct some mistakes in MMX emulation. (joncampbell123).
- IMGMAKE: Add -partofs option to allow control of where the partition
begins in the image (joncampbell123).
- IMGMAKE: Add -align option so that the FAT filesystem can be arranged
for more optimal I/O on devices with larger sectors, such as modern
4096-byte/sector drives. (joncampbell123).
- IMGMAKE: Add -label option so that the generated FAT filesystem has the
specified volume label. (joncampbell123).
- MDA emulation: Fix non-blink attributes 0xF0 and 0xF8 to correctly render
bright green background. (joncampbell123).
- Fixed crash when a CD image was loaded to an "empty" drive (maron2000)
- Log loaded .conf file (maron2000)
- Supress redundant screen reports in log (maron2000)
- Fixed mouse capture locking by middle button (maron2000)
- Fixed toggling the menu option "Autolock mouse" did nothing (maron2000)
- Fixed build failure with libc++ 19 (DimitryAndric)
- Fixed fullscreen mode not responding when launched in TTF mode
in Windows (maron2000)
- Fixed crashes when changing floppies mounted by drive numbers on
a booted guest OS (maron2000)
- Fixed launching host programs with white spaces in path (Windows)
(maron2000)
- Convert paths from relative to absolute when launching host programs
in a mounted drive (Windows) (maron2000)
- Added an option not to pause after host program execution is
completed (maron2000)
- Fixed corrupted display when loading language files at launch
(maron2000)
- Fixed Z Drive path expansion to be case insensitive (maron2000)
2024.10.01
- Allow the ".inst" extension for CUE sheets. (Allofich)
- Add SET /FIRST, a DOSBox-X extension, that takes the specified
@ -96,6 +464,7 @@
- retain 'show advanced options' state throughout session
- SVN r4483: Fix compilation in Visual Studio 2008 (Allofich)
- DOSBox Staging: Decouple CMS and OPL emulations (Allofich)
- Fixed reading NEC specific character font data.(nanshiki)
2024.07.01
- Correct Hercules InColor memory emulation. Read and write planar

View File

@ -3,3 +3,12 @@
This project adheres to No Code of Conduct. We are all adults. We accept anyone's contributions. Nothing else matters.
For more information please visit the [No Code of Conduct](https://github.com/domgetter/NCoC) homepage.
# Additional terms
This project is about DOS/Windows era emulation and development.
You are welcome to participate as long as it is about DOS/Windows emulation and development.
The maintainer of this project reserves the right to remove posts and/or conversations from this project that are off-topic, and to ignore and/or ban users who are rude and/or disruptive to this project and it's users, developers, or contributors.

BIN
DOSBox-Logo-2-680x350.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

View File

@ -105,11 +105,11 @@ Where ``<filename>`` is the main file name of the RPM package you wish to instal
### SnapCraft
You can find DOSBox-X on SnapCraft (https://snapcraft.io/dosbox-x), which maintains universal Linux packages for software including DOSBox-X.
But please note the DOSBox-X Linux packages on this website are built and updated by SnapCraft instead of the DOSBox-X Team.
But please note that these packages are NOT built or updated by the DOSBox-X team.
### AUR Package
DOSBox-X is packaged for archlinux, and available in the user contributed AUR Package Repository.
But please note that this package is not built or updated by the DOSBox-X Team.
DOSBox-X is packaged for Arch Linux, and available in the user contributed AUR Package Repository.
But please note that these packages are NOT built or updated by the DOSBox-X Team.
- SDL1 build: https://aur.archlinux.org/packages/dosbox-x/
- SDL2 build: https://aur.archlinux.org/packages/dosbox-x-sdl2/
@ -119,27 +119,68 @@ DOSBox-X is packaged for Debian, and available in the
[trixie](https://packages.debian.org/trixie/dosbox-x) and
[unstable](https://packages.debian.org/unstable/dosbox-x)
repositories.
But please note that this package is not built or updated by the
DOSBox-X Team, and that it only contains a small subset of the DOS
programs provided in the Z: drive.
But please note that these packages are NOT built or updated by the DOSBox-X Team,
and that it only contains a small subset of the DOS programs provided in the Z: drive.
## macOS Packages (Portable)
Portable packages for the macOS (64-bit) platform are also available from the [DOSBox-X homepage](https://dosbox-x.com/).
The macOS package requires recent 64-bit Intel or ARM-based macOS (Catalina (10.15) and later). Both SDL1 and SDL2 binaries (in .app format) are provided in the directories named ```dosbox-x``` and ```dosbox-x-sdl2``` respectively inside the zip file.
The macOS package requires recent 64-bit Intel or ARM-based macOS (Catalina (10.15) and later).
Using the Finder app, go to the folder where the macOS zip package is downloaded, and click the zip package. Then the package will be unzipped and you will see a folder with the same name as the package.
Both SDL1 and SDL2 binaries (in .app format) are provided in the folders named ```dosbox-x``` and ```dosbox-x-sdl2``` respectively inside the zip file.
There are two ways to run DOSBox-X in macOS, either from the Finder or from the command-line (Terminal):
You have a choice of launching DOSBox-X by either from Launchpad, Finder, and Command-line (Terminal).
* From the Finder, go to the directory where the macOS zip package is downloaded, you will see a folder name which is the same as the file name of the downloaded zip package. Inside this folder you will see ```dosbox-x``` (SDL1) and ```dosbox-x-sdl2``` (SDL2). Go to either one and click the program "dosbox-x" to start DOSBox-X. If you see a dialog asking you to select a folder, please select one which will then become your DOSBox-X working directory. You can choose to save this folder after you select one so that the folder selection dialog will no show up again next time, or let DOSBox-X show the folder selection dialog every time you run it from the Finder.
### Install and launch DOSBox-X from Launchpad
In either ```dosbox-x``` or ```dosbox-x-sdl2``` folders, you can find an app named ```dosbox-x```.
Drag and drop the app to the ```Applications``` folder to install DOSBox-X to Launchpad.
* From the Terminal, go to the directory where the macOS zip package is downloaded, you will see a folder name which is the same as the file name of the downloaded zip package. Starting from this folder, use ```cd``` command to go to the directory where the DOSBox-X executable is located. For SDL1 build, type ```cd dosbox-x/dosbox-x.app/Contents/MacOS```, and for SDL2 build, type ```cd dosbox-x-sdl2/dosbox-x.app/Contents/MacOS```. Run DOSBox-X with ```./dosbox-x``` and you will see the DOSBox-X window.
### Launch DOSBox-X from Finder application
Instead of installing DOSBox-X to Launchpad as mentioned above, you can double-click the ```dosbox-x``` app to start DOSBox-X from the Finder application.
If you see the message ```"dosbox-x" is damaged and can't be opened``` when trying to run DOSBox-X, you should be able to solve the problem by running the following command once in the Terminal and you are in the directory in which the macOS zip package is extracted (where you can find two folders including ```dosbox-x``` and ```dosbox-x-sdl2```):
### Launch DOSBox-X from command-line (Terminal)
Starting from the unzipped folder mentioned above, use ```cd``` command to go to the directory where the DOSBox-X executable is located. For SDL1 build, type ```cd dosbox-x/dosbox-x.app/Contents/MacOS```, and for SDL2 build, type ```cd dosbox-x-sdl2/dosbox-x.app/Contents/MacOS```. Run DOSBox-X with ```./dosbox-x``` and you will see the DOSBox-X window.
``xattr -cr .``
### Initial setting of your working directory
If you see a dialog asking you to select a folder after you launch DOSBox-X, please select one which will then become your DOSBox-X working directory. You can choose to save this folder after you select one so that the folder selection dialog will no show up again next time, or let DOSBox-X show the folder selection dialog every time you run it.
Packages for macOS versions 10.14 (Mojave) and earlier are no longer provided. Low-end builds named `DOSBox-X-macos-(version)-high-sierra.zip` were available up to [2022.09.0 (0.84.3)](https://github.com/joncampbell123/dosbox-x/releases/tag/dosbox-x-v0.84.3) for 10.12 (Sierra) and after.
### Troubleshooting
#### I get a dialogue stating “The app is not from the Mac App Store”
You need change your settings to allow launching apps from known developers.
1. Choose Apple menu > System Settings, then click Privacy & Security in the sidebar. (You may need to scroll down.)
2. Go to Security, then click Open.
3. Click the pop-up menu next to “Allow applications from”, then choose App Store & Known Developers.
5. You should see a message mentioning launching "DOSBox-X" was blocked. Click ```Open Anyway```.
6. Enter your login password, then click OK.
#### I get ```"dosbox-x" is damaged and can't be opened``` error
You should be able to solve the problem by running the following command once in the Terminal.
1. Using the Terminal app, go to the unzipped folder of the macOS zip package. (You should find two folders ```dosbox-x``` and ```dosbox-x-sdl2```)
2. Run ``xattr -cr .``
### macOS Packages (Homebrew)
Homebrew provides packages for macOS Ventura and after.
You can install the package by the following steps.
1. Install [Homebrew](https://brew.sh)
2. In macOS Terminal (Applications -> Utilities -> Terminal) run `brew install dosbox-x`
3. Launch DOSBox-X by running `dosbox-x` in macOS Terminal.
Please note that these packages are NOT built or updated by the DOSBox-X team.
### macOS Packages (MacPorts)
[MacPorts](https://www.macports.org/) provides packages for High Sierra (10.13) and after.
You can install the package by the following steps.
1. [Install MacPorts](https://www.macports.org/install.php)
2. In macOS terminal (Applications -> Utilities -> Terminal) run `sudo port install dosbox-x`
3. Launch DOSBox-X by running `dosbox-x` in macOS Terminal.
Please note that these packages are NOT built or updated by the DOSBox-X team.
### DOSBox-X for older macOS versions
Official portable packages for macOS versions 10.14 (Mojave) and earlier are no longer provided. Low-end builds named `DOSBox-X-macos-(version)-high-sierra.zip` were available up to [2022.09.0 (0.84.3)](https://github.com/joncampbell123/dosbox-x/releases/tag/dosbox-x-v0.84.3) for 10.12 (Sierra) and after.
Binaries for macOS versions earlier than 10.12 (Sierra) have not been provided. You may try to build yourself with the help of [MacPorts](https://www.macports.org/).
## DOS Packages (Portable)

View File

@ -95,7 +95,7 @@ DOSBox-X officially supports both SDL 1.2 and SDL 2.0; both 32-bit and 64-bit bu
DOSBox-X is a cross-platform DOS emulator, so all major host operating systems are officially supported, including:
1. Windows (XP or higher), 32-bit and 64-bit
1. Windows (95/NT4 or higher), 32-bit and 64-bit
2. Linux (with X11), 32-bit and 64-bit

View File

@ -0,0 +1,140 @@
**The video debug overlay: How to guide**
## What is the Video Debug Overlay?
The video debug overlay is an extension to the video output of DOSBox-X that puts VGA state information on the bottom and right sides of the DOS screen. The information updates constantly so that state changes are immediately visible.
## Why do the scalers and video mode affect it?
The video debug overlay is rendered as part of the DOS screen so that, when enabled, it appears in your screen captures and video recordings as well. This makes it easy to provide screenshots for video debugging purposes, and to analyze the information frame-by-frame in a video player or editor.
## What is provided in the video debug overlay?
The exact information provided depends entirely on what video hardware is being emulated. Even when registers and state are common across hardware, exact state varies from video type to video type.
## What is all the space on the right side of the overlay?
That information is used to show at least two things. First, the video palette on a scanline by scanline basis so it is easy to tell when per-scanline palette effects and/or "copper bars" are in effect during active display. The second purpose is to show tags per scanline of other state changes. When emulating EGA/VGA for example, tags indicating line compare (split screen) or changes to the offset register (old demoscene effect to make the screen "waver" for example) may be shown when the guest code uses them.
## What are examples of per-scanline palette effects?
1. Lemmings: Uses 16-color EGA mode, but uses a color palette change between the game board above and the controls below. At the initial screen of a level, uses a palette change between the "visual" of the level at the top and the descriptive text below.
2. Tony and Friends in Kellogs Land: Mid-screen palette change to draw "water" level.
## Common mode information (at the top)
Directly below the DOS screen, the video mode is shown. The first, in green where possible, is the display mode as an M_ constant used in the DOSBox/DOSBox-X source code.
Then, the source video resolution following T (text) or G (graphics), and then ">" followed by the video resolution rasterized to the VGA output (active display area only). The height of the video resolution for depends on the video mode and hardware. VGA emulation will always rasterize video output to a height of 400 or 480 for standard VGA modes unless changed by the guest.
Then, an at (@) sign followed by the video start address in hexadecimal. This reflects the Start Address register including the extended value beyond standard VGA registers in SVGA emulation. This is followed by "+" and then the Offset register, a value responsible for telling the video hardware how far to skip forward after every character row. The value usually represents character columns of video memory, not bytes. For example in text mode where character and attribute data is paired into 16-bit values, this value represents the number of text character cells, and therefore bytes * 2, per character row.
For EGA/VGA emulation, the offset register value is followed by -B, -W, or -D to indicate whether the CRTC is in byte, word, or DWORD mode. This affects how how far each "step" through video memory goes per character column. For 256-color mode, an additional "ch4" is appended to indicate normal "chained" 256-color more, or "uch" to mean unchained 256-color mode as commonly used by DOS games (byte mode). Nothing is shown for any other case. See common documentation including FreeVGA for more details about CRTC byte/word/dword mode. EGA does not support dword mode.
VGA emulation may show "SMZX" to indicate "Super MegaZeux" 256-color text mode.
This format may change as needed for some machine types.
For EGA emulation, the mode information will show "mono", "16c", or "64c" to indicate the mode of the EGA monitor. All EGA modes other than 640x350 use 16c, CGA-style RGBI compatible output, 640x350 uses 64c, which uses all 6 pins to tranmit R, G, and B as two-bit values (4 levels) to select 16 colors from a palette of 64 possible colors.
# M_ video modes
| M_* | What |
| ----------------- | ----------------------------------------------------------------------------------------------------------------- |
| M_CGA2 | 640x200 2-color CGA graphics mode. EGA/VGA emulation will never show this value. |
| M_CGA4 | 320x200 4-color CGA graphics mode. EGA/VGA emulation will never show this value. |
| M_EGA | EGA/VGA 16-color planar graphics mode. Not SVGA modes. |
| M_EGA (CGA4) | EGA/VGA emulation of CGA 320x200 4-color graphics mode. |
| M_EGA (CGA2) | EGA/VGA emulation of CGA 640x200 2-color graphics mode. |
| M_VGA | VGA 256-color graphics mode. Not SVGA modes. |
| M_LIN4 | SVGA 16-color planar graphics mode. This usually means the 256K memory wraparound is disabled. |
| M_LIN8 | SVGA 256-color graphics mode. This usually means the 256K memory wraparound is disabled. |
| M_LIN15 | Highcolor 15bpp graphics mode. 16 bits per pixel, only the low 15 bits are used for 5-bit R/G/B. |
| M_LIN16 | Highcolor 16bpp graphics mode. 16 bits per pixel. 5-bit Red and Blue, 6-bit Green. |
| M_LIN24 | Truecolor 24bpp graphics mode. 24 bits per pixel. 8-bit R/G/B. Once used in the 1990s, no longer common since. |
| M_LIN32 | Truecolor 32bpp graphics mode. 32 bits per pixel. 8-bit R/G/B/X. X is ignored. Very common since the late 1990s. |
| M_TEXT | Alphanumeric text mode. |
| M_HERC_GFX | Hercules graphics mode. |
| M_HERC_TEXT | Hercules/MDA text mode. |
| M_CGA16 | CGA graphics mode with composite video emulation. |
| M_TANDY2 | Tandy/PCjr 2-color graphics mode, monochrome. |
| M_TANDY4 | Tandy/PCjr 4-color graphics mode. |
| M_TANDY16 | Tandy/PCjr 16-color graphics mode. |
| M_TANDY_TEXT | Tandy/PCjr text mode. |
| M_AMSTRAD | Amstrad-specific graphics mode. |
| M_PC98 | Video mode used by NEC PC-98 emulation. |
| M_FM_TOWNS | Placeholder mode (stub) for future development. |
| M_PACKED4 | SVGA packed 4bpp mode (not planar). Somewhat common in the mid 1990s on some SVGA chipsets, not seen since. |
| M_DCGA | Olivetti M24 DCGA. |
# common descriptions for reference
| Mode | Description |
| ---------------------------------- | --------------------------------------------------------------------------------------------------- |
| VGA 80x25 text | M_TEXT T80x25>720x400 @00000+050-W |
| VGA 80x25 text (8-pixel) | M_TEXT T80x25>640x400 @00000+050-W |
| VGA 40x25 text | M_TEXT T40x25>360x400 @00000+028-W |
| CGA 320x200 4-color | M_EGA (CGA4) G320x200>320x400 @00000+028-B |
| CGA 640x200 2-color | M_EGA (CGA2) G640x200>640x400 @00000+050-B |
| EGA 320x200 16-color | M_EGA G320x200>320x400 @00000+028-B |
| EGA 640x200 16-color | M_EGA G640x200>640x400 @00000+050-B |
| EGA 640x350 monochrome | M_EGA G640x350>640x350 @00000+050-B (shows 8 colors only) |
| EGA 640x350 color | M_EGA G640x350>640x350 @00000+050-B |
| MCGA 640x480 2-color | M_EGA G640x480>640x480 @00000+050-B |
| VGA 640x480 16-color | M_EGA G640x480>640x480 @00000+050-B |
| VGA 320x200 256-color | M_VGA G320x200>320x400 @00000+050-Dch4 |
| SVGA 640x400 256-color | M_LIN8 G640x400>640x400 @00000+0A0-Dch4 |
| SVGA 640x480 256-color | M_LIN8 G640x480>640x480 @00000+0A0-Dch4 |
| SVGA 320x200 15bpp | M_LIN15 G320x200>320x400 @00000+0A0-D |
| SVGA 132x43 text | M_TEXT T132x43>1056x688 @00000+084-W |
## VGA debug status
# Bottom of the screen: palette
RPAL shows the exact contents of the VGA hardware palette, as would be seen through I/O ports 3C7h-3C9h.
EPAL shows the palette in effect for the display mode. The number of colors shown is 256 if 256-color mode. Otherwise it is 16 colors. In CGA/EGA/VGA graphics modes other than 256-color, less than 16 colors may be displayed according to the Color Plane Enable register.
No palette is shown for highcolor/truecolor (15/16/24/32bpp) graphics modes.
A 6 or 8 is shown after RPAL and EPAL to indicate DAC width, the number of bits used to represent the R/G/B values sent to the DAC and out the VGA connector when a color palette is involved. Standard VGA and early SVGA cards use a 6-bit DAC width. Later SVGA hardware allows switching between 6 and 8 bits per RGB. There is a VESA BIOS call to set DAC width, which DOSBox-X does emulate for S3 hardware.
ACPAL shows the color palette according to the Attribute Controller. In modes other than 256-color mode, this is used to map pixels rendered from video memory to the VGA palette. In 256-color mode, but not SVGA, this has an effect on the pixels as if the 8-bit pixel were split into two 4-bit parts and remapped, except for Tseng ET4000 which remaps only partially due to a hardware bug.
The original purpose of the Attribute Controller palette on EGA hardware was to determine how to convert 16-color data to the 6-bit TTL video output on the back of the card. VGA hardware retains this EGA behavior for backwards compatibility, but instead uses it as a 4-bit to 6-bit translation in the process of determining what to look up in the color palette. The BIOS default VGA palette is set up to produce the same colors on the monitor if running a DOS program written originally for the EGA.
CSPAL shows the final palette mapping after other registers including Color Plane Enable, Color Select and DAC PEL mask are considered after the attribute controller palette. This determines the final color map sent to the display.
# Bottom of the screen: VGA register state
CPE*x*: Color Plane Enable register. *x* is a hexadecimal digit of the 4-bit value that determines which bitplanes are "enabled" and sent to the display. Applies only to 16-color planar graphics modes. CGA and MCGA graphics modes on EGA/VGA are just variations of 16-color planar graphics with bitplanes disabled to reduce the color depth and other register changes for backwards compatibility. CGA modes use the Mode Control register to direct the CRTC to emulate the two-way interleave of the original hardware. No known effect on text, 256-color mode, and SVGA modes.
HPL*x*: Horizontal PEL panning. *x* is a hexadecimal digit. This register allows for smooth horizontal panning in VGA modes including 256-color and SVGA modes. If a DOS program is horizontally panning this value will constantly change.
YP*xx*: Y-panning, according to the Preset Row Scan Register. *xx* is two hexadecimal digits. In text modes, as well as graphics modes with a nonzero Maxmimum Scan Line Register, this allows smooth vertical panning when combined with changing the Start Address registers. If a DOS program is vertically panning this value may constantly change.
PM*xx*: PEL mask, *xx* is two hexadecimal digits. Before the 8-bit color value is sent to the DAC, it is masked by this value. It is normally FF.
MD*xx*: Attribute controller mode control register. *xx* is two hexadecimal digits. This register is responsible for controlling whether graphics or text mode is active, whether character clocks are 8 or 9 pixels, whether text mode bit 7 attribute bytes blink or not, whether line compare resets horizontal panning, and is part of the mechanism to enable 256-color mode. See online documentation like FreeVGA for more details.
CS*xx*: Attribute controller color select. *xx* is two hexadecimal digits. Does not affect 256-color mode, except for Tseng ET4000 due to hardware bug. Can affect bits 4-5 of the color index out of the Attribute Controller, and can provide bits 6-7 for the color index after the 4-to-6 conversion through the Attribute Controller. Though not often used, it may be used for color palette changes and demo effects.
# On the right: palette per scanline
The color palette rendered per scanline on the right is based on CSPAL in case of per-scanline changes to do palette tricks or demoscene tricks, such as showing more than 16 colors in a 16-color mode.
## EGA debug status
# Bottom of the screen: palette
ACPAL shows the color palette according to the Attribute Controller. On EGA hardware this determines how to map the 16 colors to the 6-bit TTL video connector on the back.
MDPAL shows the Attribute Controller color palette according to the Color Plane Enable register. If some bitplanes are hidden by the CPE register, this palette will differ from ACPAL.
OVC shows the current overscan border register. YPN shows the Row Start register which is used for vertical panning. CPE shows the contents of the Color Plane Enable register. HPEL shows the horizontal PEL panning register.
# On the right: palette per scanline
The color palette rendered per scanline on the right is based on MDPAL, rendered per scanline. Next to MDPAL is CPE, 4 pixels indicating visually, per scanline, which bitplanes are enabled on the display. Some demo effects may change MDPAL and CSPAL mid-frame.
## On the right: Hardware change event tags
If a change or event that is notable occurs on a scanline, a tag will appear with the top right on that scanline noting that event.
| event | tag |
| --------------------------------------------------------------------- | ----------------------- |
| EGA/VGA line compare match (split screen) | SPLIT LNCMP |
| Change of Maximum Scan Line register | MXS |
| Change of Offset register | OFS |
| Change of horizontal retrace | HRT |
| Change of color plane enable | CPE |
| Change of color select | CSL |
| Start of PC-98 display partition *n* (text) | TPART*n* |
| Start of PC-98 display partition *n* (graphics) | GPART*n* |

9
build-debug-os2-sdl2.cmd Normal file
View File

@ -0,0 +1,9 @@
echo off
bash autogen.sh
dash configure --enable-sdl2 --disable-gamelink --enable-debug
REM since cpu cores need a lot of memory,
REM we don't want to build parallel
cd src\cpu
make
cd ..\..
make -j5

9
build-debug-os2.cmd Normal file
View File

@ -0,0 +1,9 @@
echo off
bash autogen.sh
dash configure --enable-debug
REM since cpu cores need a lot of memory,
REM we don't want to build parallel
cd src\cpu
make
cd ..\..
make -j5

9
build-os2-sdl2.cmd Normal file
View File

@ -0,0 +1,9 @@
echo off
bash autogen.sh
dash configure --enable-sdl2 --disable-gamelink
REM since cpu cores need a lot of memory,
REM we don't want to build parallel
cd src\cpu
make
cd ..\..
make -j5

9
build-os2.cmd Normal file
View File

@ -0,0 +1,9 @@
echo off
bash autogen.sh
dash configure
REM since cpu cores need a lot of memory,
REM we don't want to build parallel
cd src\cpu
make
cd ..\..
make -j4

View File

@ -1,5 +1,5 @@
dnl Init.
AC_INIT(dosbox-x,2024.10.01,[https://github.com/joncampbell123/dosbox-x/issues],[],[https://dosbox-x.com])
AC_INIT(dosbox-x,2025.05.03,[https://github.com/joncampbell123/dosbox-x/issues],[],[https://dosbox-x.com])
AC_PREREQ(2.60)
AC_CONFIG_SRCDIR(README.md)
@ -300,6 +300,10 @@ int x=10;if( __builtin_expect ((x==1),0) ) ;
#switch language back
AC_LANG_POP(C++)
dnl Check for linux/kvm.h
AH_TEMPLATE(C_HAVE_LINUX_KVM,[Define to 1 if you have linux/kvm.h and KVM virtualization])
AC_CHECK_HEADER([linux/kvm.h], [AC_DEFINE(C_HAVE_LINUX_KVM,1)])
dnl Check for mach_vm_remap (Darwin)
AH_TEMPLATE(C_HAVE_MACH_VM_REMAP,[Define to 1 if you have the mach_vm_remap function])
AC_CHECK_HEADER([mach/mach.h], [
@ -367,9 +371,11 @@ fi
dnl Some needed libraries for OS2
dnl perhaps join this with the other target depended checks. move them upwards
AM_CONDITIONAL(OS2, test x$host = xi386-pc-os2-emx)
if test x$host = xi386-pc-os2-emx ; then
CXXFLAGS="$CXXFLAGS -Zmt"
LDFLAGS="$LDFLAGS -Zomf -Zmt"
CXXFLAGS="$CXXFLAGS -DOS2 -march=pentium4 -idirafter /@unixroot/usr/include/os2tk45"
CFLAGS="$CFLAGS -DOS2 -march=pentium4 -idirafter /@unixroot/usr/include/os2tk45"
LDFLAGS="$LDFLAGS -Zomf -Zhigh-mem -lcx"
fi
dnl I would like to know of any concerns given by the C++ compiler.
@ -571,6 +577,10 @@ case "$host" in
AC_DEFINE(OS2, 1, [Compiling on OS/2 EMX])
dnl FEATURE: Whether to support direct serial port pass-through
AC_DEFINE(C_DIRECTSERIAL, 1, [ Define to 1 if you want serial pass-through support (Win32, Posix and OS/2).])
dnl If we have SDL2, we need to link the multimedia extensions.
if test "x$SDL2_LIBS" != "x"; then
LIBS="$LIBS -lmmpm2"
fi
;;
*-*-riscos*)
AC_DEFINE(RISCOS, 1, [Compiling on RISC OS])
@ -1098,17 +1108,17 @@ AH_TEMPLATE(C_LIBPNG,[Define to 1 if you have libpng])
AH_TEMPLATE(C_SSHOT,[Define to 1 to enable screenshots, requires libpng])
AC_ARG_ENABLE(screenshots,AC_HELP_STRING([--disable-screenshots],[Disable screenshots and movie recording]),,enable_screenshots=yes)
AC_MSG_CHECKING([whether screenshots will be enabled])
if test x$enable_screenshots = xyes; then
if test x$have_png_lib = xyes -a x$have_png_h = xyes ; then
if test x$have_png_lib = xyes -a x$have_png_h = xyes ; then
LIBS="$LIBS -lpng -lz"
AC_DEFINE(C_LIBPNG,1)
AC_DEFINE(C_SSHOT,1)
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no, can't find libpng.])
fi
if test x$enable_screenshots = xyes; then
AC_DEFINE(C_SSHOT,1)
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
else
AC_MSG_RESULT([no])
AC_MSG_ERROR([Can't find libpng, install or try building the in-tree code])
fi
dnl FEATURE: Whether to use libpcap, and enable ethernet pass-through

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2011-2024 Jonathan Campbell -->
<!-- Copyright 2011-2025 Jonathan Campbell -->
<component type="desktop">
<id>com.dosbox_x.DOSBox-X</id>
<project_license>GPL-2.0</project_license>
@ -10,7 +10,7 @@
<category>Emulation</category>
</categories>
<releases>
<release version="@PACKAGE_VERSION@" date="2024-10-1"/>
<release version="@PACKAGE_VERSION@" date="2025-5-3"/>
</releases>
<screenshots>
<screenshot type="default">

View File

@ -5,22 +5,51 @@ Welcome to DOSBox-X, a cross-platform DOS emulator based on the DOSBox project.
This is an official DOSBox-X macOS package, which should run natively on the recent versions of macOS such as macOS Monterey (12), Big Sur (11), and Catalina (10.15). Both SDL1 and SDL2 binaries (in .app format) are provided in the macOS package, in the directories named "dosbox-x" and "dosbox-x-sdl2" respectively inside the zip file. While the SDL1 version is the default version, the SDL2 version may be preferred over the SDL1 version for certain features (particularly related to input handling) such as touchscreen input support. You can select either SDL1 or SDL2 version according to your preference, or just run the SDL1 version if you are not sure.
There are two ways to run DOSBox-X in macOS, either from the Finder or from the command-line (Terminal):
DOSBox-X Quick start
====================
* From the Finder, go to the directory where the macOS zip package is downloaded, you will see a folder name which is the same as the file name of the downloaded zip package. Inside this folder you will see "dosbox-x" (SDL1) and "dosbox-x-sdl2" (SDL2). Go to either one and click the program "dosbox-x" to start DOSBox-X. If you see a dialog asking you to select a folder, please select one which will then become your DOSBox-X working directory. You can choose to save this folder after you select one so that the folder selection dialog will no show up again next time, or let DOSBox-X show the folder selection dialog every time you run it from the Finder.
Using the Finder app, go to the folder where the macOS zip package is downloaded, and click the zip package. Then the package will be unzipped and you will see a folder with the same name as the package. Both SDL1 and SDL2 binaries (in .app format) are provided in the folders named dosbox-x and dosbox-x-sdl2 respectively inside the zip file.
* From the Terminal, go to the directory where the macOS zip package is downloaded, you will see a folder name which is the same as the file name of the downloaded zip package. Starting from this folder, use "cd" command to go to the directory where the DOSBox-X executable is located. For SDL1 build, type "cd dosbox-x/dosbox-x.app/Contents/MacOS", and for SDL2 build, type "cd dosbox-x-sdl2/dosbox-x.app/Contents/MacOS". Run DOSBox-X with "./dosbox-x" and you will see the DOSBox-X window.
There are three ways to run DOSBox-X in macOS, either from Launchpad, Finder, and Command-line (Terminal).
In case the DOSBox-X binary does not run on your macOS system, you can try execute the following commands from the Terminal *once* in the directory that the zip package is extracted (where you see two directories named "dosbox-x" and "dosbox-x-sdl2"):
* Install and launch DOSBox-X from Launchpad
In either dosbox-x or dosbox-x-sdl2 folders, you can find an app named dosbox-x. Drag and drop the app to the Applications folder to install DOSBox-X to Launchpad.
xattr -cr dosbox-x/dosbox-x.app dosbox-x-sdl2/dosbox-x.app
chmod +x dosbox-x/dosbox-x.app/Contents/MacOS/dosbox-x dosbox-x-sdl2/dosbox-x.app/Contents/MacOS/dosbox-x
* Launch DOSBox-X from Finder application
Instead of installing DOSBox-X to Launchpad as mentioned above, you can double-click the dosbox-x app to start DOSBox-X from the Finder application.
* Launch DOSBox-X from command-line (Terminal)
Starting from the unzipped folder mentioned above, use cd command to go to the directory where the DOSBox-X executable is located. For SDL1 build, type cd dosbox-x/dosbox-x.app/Contents/MacOS, and for SDL2 build, type cd dosbox-x-sdl2/dosbox-x.app/Contents/MacOS. Run DOSBox-X with ./dosbox-x and you will see the DOSBox-X window.
Troubleshooting
===============
- I get a dialogue stating “The app is not from the Mac App Store”
You need change your settings to allow launching apps from known developers.
Confirm "Privacy & Security" in the macOS Users Guide for details.
Choose Apple menu > System Settings, then click Privacy & Security in the sidebar. (You may need to scroll down.)
Go to Security, then click Open.
Click the pop-up menu next to “Allow applications from”, then choose App Store & Known Developers.
You should see a message mentioning launching "DOSBox-X" was blocked. Click Open Anyway.
Enter your login password, then click OK.
- I get "dosbox-x" is damaged and can't be opened error
You should be able to solve the problem by running the following command once in the Terminal.
Using the Terminal app, go to the unzipped folder of the macOS zip package. (You should find two folders dosbox-x and dosbox-x-sdl2)
Run xattr -cr .
Further Information
===================
Please visit the DOSBox-X homepage for the latest information about DOSBox-X:
https://dosbox-x.com/ or http://dosbox-x.software/
Also, some useful information such as install and build instructions can be found in the official README file
https://github.com/joncampbell123/dosbox-x?tab=readme-ov-file#
For a complete DOSBox-X user guide, including common ways to configure DOSBox-X and its usage tips, please visit the DOSBox-X Wiki:
https://dosbox-x.com/wiki

View File

@ -1,6 +1,6 @@
:DOSBOX-X:LANGUAGE:German
:DOSBOX-X:CODEPAGE:858
:DOSBOX-X:VERSION:2024.10.01
:DOSBOX-X:VERSION:2025.05.03
:DOSBOX-X:REMARK:
:PROGRAM_BOOT_BOOTING
Starte von Laufwerk
@ -1323,6 +1323,16 @@ Ein paar Beispiele für IMGMAKE:
←[32;1mIMGMAKE ~/disk.img -t hd -chs 130,2,17←[0m - erstelle HDD-Image mit dieser
Geometrie
.
:PROGRAM_IMGMAKE_FLREAD
Disk geometry: %d Cylinders, %d Heads, %d Sectors, %d Kilobytes
.
:PROGRAM_IMGMAKE_FLREAD2
%s =good, %s =good after retries, ! =CRC error, x =sector not found, ? =unknown
.
:PROGRAM_IMGMAKE_FILE_EXISTS
Datei "%s" existiert bereits. Verwende "-force" zum Überschreiben.
@ -2831,6 +2841,18 @@ Original-Verhältnis
:MENU:video_ratio_set
Setze Verhältnis
.
:MENU:VideoPreventCaptureMenu
Screen capture control
.
:MENU:prevcap_none
Allow
.
:MENU:prevcap_blank
Show as blank
.
:MENU:prevcap_invisible
Make invisible
.
:MENU:VideoScalerMenu
Scaler
.
@ -2921,6 +2943,9 @@ xBRZ
:MENU:scaler_set_xbrz_bilinear
xBRZ Bilinear
.
:MENU:center_window
Center window
.
:MENU:set_titletext
Setze Text in Titelleiste...
.
@ -3137,6 +3162,9 @@ Interne Voodoo-Karte
:MENU:3dfx_glide
Glide-Passthrough
.
:MENU:load_d3d_shader
Select Direct3D pixel shader...
.
:MENU:load_glsl_shader
Wähle OpenGL (GLSL) Shader...
.
@ -3326,6 +3354,9 @@ Zur letzten Seite
:MENU:DriveMenu
Laufwerk
.
:MENU:drive_mountauto
Auto-mount Windows drive
.
:MENU:drive_mounthd
Ordner als Festplatte einhängen
.
@ -3851,3 +3882,601 @@ CPU: simpler Core
:MAPPER:togmenu
Menüleiste ein/aus
.
:PROGRAM_FLAGSAVE_UNFLAGALL
All files unflagged for saving.
.
:PROGRAM_FLAGSAVE_UNFLAGGED
File %s unflagged for saving.
.
:PROGRAM_FLAGSAVE_FLAGGED
File already flagged for saving - %s
.
:PROGRAM_FLAGSAVE_TOOMANY
Too many files to flag for saving.
.
:PROGRAM_FLAGSAVE_SAVED
File %s flagged for saving
.
:PROGRAM_FLAGSAVE_LIST
Files flagged for saving:
.
:PROGRAM_FLAGSAVE_HLP
Marks or flags files to be saved for the save state feature.
FLAGSAVE [file(s) [/F] [/R]] [/U]
file(s) Specifies one or more files to be flagged for saving.
/F Forces to flag the file(s) even if they are not found.
/R Removes flags from the specified file(s).
/U Removes flags from all flagged files.
Type FLAGSAVE without a parameter to list flagged files.
.
:PROGRAM_INT2FDBG_NOT_SET
INT 2Fh hook has not been set.
.
:PROGRAM_INT2FDBG_ALREADY
INT 2Fh hook has already been set.
.
:PROGRAM_INT2FDBG_HELP
Hooks INT 2Fh for debugging purposes.
INT2FDBG [option]
/I Installs hook
It will hook INT 2Fh at the top of the call chain for debugging information.
Type INT2FDBG without a parameter to show the current hook status.
.
:PROGRAM_SET80x25
Changes to 80x25 text mode.
.
:PROGRAM_SET80x43
Changes to 80x43 text mode.
.
:PROGRAM_SET80x50
Changes to 80x50 text mode.
.
:PROGRAM_SET80x60
Changes to 80x60 text mode.
.
:PROGRAM_SET132x25
Changes to 132x25 text mode.
.
:PROGRAM_SET132x43
Changes to 132x43 text mode.
.
:PROGRAM_SET132x50
Changes to 132x50 text mode.
.
:PROGRAM_SET132x60
Changes to 132x60 text mode.
.
:PROGRAM_RESCAN_HELP
Rescans for changes on mounted drives made on the host by clearing caches.
RESCAN [/A] [/Q]
RESCAN [drive:] [/Q]
[/A] Rescan all drives
[/Q] Enable quiet mode
[drive:] The drive to rescan
Type RESCAN with no parameters to rescan the current drive.
.
:PROGRAM_CFGTOOL_HELP
Starts DOSBox-X's graphical configuration tool.
CFGTOOL
Note: You can also use CONFIG command for command-line configurations.
.
:PROGRAM_IMGSWAP_HELP
Swaps floppy, hard drive and optical disc images.
←[32;1mIMGSWAP←[0m ←[37;1mdrive←[0m ←[36;1m[position]←[0m
←[37;1mdrive←[0m Drive letter to swap the image.
←[36;1m[position]←[0m Disk position to swap to.
.
:PROGRAM_INTRO_HELP
A full-screen introduction to DOSBox-X.
INTRO [/RUN] [CDROM|MOUNT|USAGE|WELCOME]
.
:PROGRAM_IMGMOUNT_NOT_ASSIGNED
BIOS disk index does not have an image assigned.
.
:PROGRAM_IMGMOUNT_INVALID_NUMBER
Invalid mount number.
.
:PROGRAM_IMGMOUNT_INVALID_FSTYPE
Invalid fstype.
.
:PROGRAM_IMGMOUNT_INVALID_SIZE
Invalid size parameter.
.
:PROGRAM_IMGMOUNT_NOT_MOUNTED_NUMBER
Drive number %d is not mounted.
.
:PROGRAM_IMGMOUNT_UMOUNT_USAGE
Incorrect IMGMOUNT unmount usage.
.
:PROGRAM_IMGMOUNT_INVALID_LETTER
Invalid drive letter.
.
:PROGRAM_IMGMOUNT_CHOOSE_LETTER
Partitions cannot be mounted in conflict with the standard INT 13h hard disk
allotment. Choose a different drive letter to mount to.
.
:PROGRAM_ELTORITO_LETTER
El Torito emulation requires a proper CD-ROM drive letter.
.
:PROGRAM_ELTORITO_DRIVE_EXISTS
El Torito CD-ROM drive specified already exists as a non-CD-ROM device
.
:PROGRAM_ELTORITO_NOT_CDDRIVE
El Torito CD-ROM drive specified is not actually a CD-ROM drive.
.
:PROGRAM_ELTORITO_REQUIRE_FLOPPY
El Torito emulation must be used with -t floppy at this time.
.
:PROGRAM_ELTORITO_NO_BOOT_RECORD
El Torito CD-ROM boot record not found.
.
:PROGRAM_ELTORITO_ENTRY_UNREADABLE
El Torito entries unreadable.
.
:PROGRAM_ELTORITO_NO_BOOTABLE_FLOPPY
El Torito bootable floppy not found.
.
:PROGRAM_ELTORITO_BOOTABLE_SECTION
Unable to locate bootable section
.
:PROGRAM_ELTORITO_BOOTSECTOR
El Torito boot sector unreadable
.
:PROGRAM_IMGMAKE_ALIGNMENT
Invalid alignment
.
:PROGRAM_IMGMAKE_PARTOFS
Invalid -partofs
.
:PROGRAM_IMGMAKE_FAT
Invalid -fat option. Must be 12, 16, or 32
.
:PROGRAM_IMGMAKE_FATCOPIES
Invalid -fatcopies option
.
:PROGRAM_IMGMAKE_SPC
Invalid -spc option, out of range
.
:PROGRAM_IMGMAKE_SPC2
Invalid -spc option, must be a power of 2
.
:PROGRAM_IMGMAKE_ROOTDIR
Invalid -rootdir option
.
PROGRAM_IMGMAKE_BOOTSECT
Invalid bootsector position
.
PROGRAM_IMGMAKE_VOLUME_ALIGN
Sanity check failed: Volume size not aligned
.
:PROGRAM_IMGMAKE_FAT_ALIGN
Sanity check failed: FAT tables not aligned
.
:PROGRAM_IMGMAKE_SECTPERFAT
Error: Generated filesystem has more than 256 sectors per FAT and is not FAT32
.
:PROGRAM_IMGMAKE_VOLSIZE
Sanity check failed: Volume size not aligned
.
:PROGRAM_IMGMAKE_CLUSTERS
Error: Generated filesystem has too few clusters given the parameters
.
:PROGRAM_IMGMAKE_CLUSTERCOUNT
Warning: Cluster count is too high given the volume size.
Reporting a smaller sector count.
.
:PROGRAM_IMGMAKE_CLUSTER_ALIGN
Sanity check failed: First cluster not aligned
.
:PROGRAM_IMGMAKE_CLUSTER_SIZE
WARNING: Cluster sizes >= 64KB are not compatible with MS-DOS and SCANDISK
.
:PROGRAM_BOOT_UNSUPPORTED
Unsupported boot mode
.
:PROGRAM_MOUNT_OVERLAY_REPLACE
Existing overlay has been replaced with new overlay.
.
:PROGRAM_LOADFIX_EMS_FREE
EMS handle %u: unable to free
.
:PROGRAM_LOADFIX_XMS_FREE
XMS handle %u: unable to free
.
:PROGRAM_LOADFIX_EMS_ALLOC
EMS block allocated (%uKB)
.
:PROGRAM_LOADFIX_EMS_ALLOCERROR
Unable to allocate EMS block
.
PROGRAM_LOADFIX_NOEMS
EMS not active
.
:PROGRAM_LOADFIX_XMS_ALLOC
XMS block allocated (%uKB)
.
:PROGRAM_LOADFIX_XMS_ALLOCERROR
Unable to allocate XMS block
.
:PROGRAM_LOADFIX_NOXMS
XMS not active
.
:PROGRAM_LOADFIX_NOALLOC
Lowest MCB is above 64KB, nothing allocated
.
:PROGRAM_BOOT_SWAP_ALREADY
Multiple disk images specified and another drive is already connected to the swap list
.
:PROGRAM_BOOT_NOT_SPECIFIED
No images specified
.
:PROGRAM_BOOT_IS_PC88
The D88 image appears to target PC-88 and cannot be booted.
.
:PROGRAM_BOOT_BPS_TOOLARGE
Bytes/sector too large
.
:PROGRAM_BOOT_DRIVE_READERROR
Error reading drive
.
:PROGRAM_START_HELP_WIN
Starts a separate window to run a specified program or command.
START [+|-|_] command [arguments]
[+|-|_]: To maximize/minimize/hide the program.
The options /MAX, /MIN, /HID are also accepted.
command: The command, program or file to start.
arguments: Arguments to pass to the application.
START opens the Windows command prompt automatically to run these commands
and wait for a key press before exiting (specified by "startincon" option):
%s
Note: The path specified in this command is the path on the host system.
.
:PROGRAM_START_HELP
Starts a separate window to run a specified program or command.
START /OPEN file
START command [arguments]
/OPEN: To open a file or URL with the associated program.
file: The file or URL to open with the associated program.
command: The command or program to start or run.
arguments: Arguments to pass to the application.
Note: The path specified in this command is the path on the host system.
.
:PROGRAM_START_COMPLETED
The command execution is completed.
.
:PROGRAM_START_COMMAND
Starting %s...
.
:PROGRAM_START_CTRLC
(Press Ctrl+C to exit immediately)
.
:PROGRAM_START_HOST_ERROR
Error: START cannot launch application to run on your current host system.
.
:PROGRAM_START_LAUNCH_ERROR
Error: START could not launch application.
.
:PROGRAM_IMGMOUNT_ELTORITO_NO_FILE
Do not specify files when mounting floppy drives from El Torito bootable CDs
.
:PROGRAM_IMGMOUNT_RAMDRIVE_NO_FILE
Do not specify files when mounting RAM drives
.
:PROGRAM_IMGMOUNT_INVALID_SECTORSIZE
Sector size must be larger than 512 bytes and evenly divide the image cluster size of %lu bytes.
.
:PROGRAM_IMGMOUNT_OPEN_ERROR
Unable to open '%s'
.
:PROGRAM_IMGMOUNT_QCOW2_INVALID
qcow2 image '%s' is not supported
.
:PROGRAM_IMGMOUNT_GEOMETRY_ERROR
Unable to detect geometry
.
:PROGRAM_IMGMOUNT_DOS_VERSION
Mounting this image file requires a reported DOS version of %u.%u or higher.
%s
.
:PROGRAM_IMGMOUNT_INVALID_FLOPPYSIZE
Floppy size not recognized
.
:PROGRAM_IMGMOUNT_MULTIPLE_USED
Multiple images given and another drive already uses multiple images
.
:PROGRAM_IMGMOUNT_MULTIPLE_NOTSUPPORTED
Multiple disk images not supported for that drive
.
:PROGRAM_IMGMOUNT_HD_FDPOSITION
Cannot mount hard drive in floppy position.
.
:PROGRAM_IMGMOUNT_FD_HDPOSITION
Cannot mount floppy in hard drive position.
.
:PROGRAM_ELTORITO_ISOMOUNT
El Torito bootable CD: -fs iso mounting not supported
.
:PROGRAM_MODE_STATUS
Status for device CON:
----------------------
Columns=%d
Lines=%d
.
:PROGRAM_MODE_NOTSUPPORTED
Code page operation not supported on this device
.
:PROGRAM_MODE_RATE_DELAY
Rate and delay must be specified together
.
:PROGRAM_UTF8_HELP
Converts UTF-8 text to view in the current code page.
UTF8 < [drive:][path]filename
command-name | UTF8
.
:PROGRAM_UTF8_NO_TEXT
No input text found.
.
:PROGRAM_UTF8_INVALIDCP
Invalid code page for text conversion.
.
:PROGRAM_UTF8_NOT_UTF8
The input text is UTF-16.
.
:PROGRAM_UTF8_CONVERSION_ERROR
An error occurred during text conversion.
.
:PROGRAM_UTF16_HELP
Converts UTF-16 text to view in the current code page.
UTF16 [/BE|/LE] < [drive:][path]filename
command-name | UTF16 [/BE|/LE]
/BE Use UTF-16 Big Endian
/LE Use UTF-16 Little Endian
.
:PROGRAM_VTEXT_HELP
Changes V-text mode for the DOS/V emulation.
VTEXT [mode]
[mode] can be 0, 1, 2, for no V-text, V-text 1, and V-text 2 respectively.
Type VTEXT without a parameter to show the current V-text mode status.
.
:PROGRAM_NMITEST_HELP
Generates a non-maskable interrupt (NMI).
NMITEST
Note: This is a debugging tool to test if the interrupt handler works properly.
.
:PROGRAM_NMITEST_GENERATE_NMI
Generating a non-maskable interrupt (NMI)...
.
:PROGRAM_CAPMOUSE_HELP
Captures or releases the mouse inside DOSBox-X.
CAPMOUSE [/C|/R]
/C Capture the mouse
/R Release the mouse
.
:PROGRAM_CAPMOUSE_MOUSE
Mouse
.
:PROGRAM_CAPMOUSE_CURRENTLY
is currently
.
:PROGRAM_CAPMOUSE_CAPTURED
captured
.
:PROGRAM_CAPMOUSE_RELEASED
released
.
:PROGRAM_AUTOTYPE_HELP
Performs scripted keyboard entry into a running DOS program.
AUTOTYPE [-list] [-w WAIT] [-p PACE] button_1 [button_2 [...]]
Where:
-list: prints all available button names.
-w WAIT: seconds before typing begins. Two second default; max of 30.
-p PACE: seconds between each keystroke. Half-second default; max of 10.
The sequence is comprised of one or more space-separated buttons.
Autotyping begins after WAIT seconds, and each button is entered
every PACE seconds. The , character inserts an extra PACE delay.
Some examples:
←[32;1mAUTOTYPE -w 1 -p 0.3 up enter , right enter←[0m
←[32;1mAUTOTYPE -p 0.2 f1 kp_8 , , enter←[0m
←[32;1mAUTOTYPE -w 1.3 esc enter , p l a y e r enter←[0m
.
:PROGRAM_AUTOTYPE_NO_BINDINGS
AUTOTYPE: The mapper has no key bindings
.
:PROGRAM_AUTOTYPE_CLAMP_VALUE
AUTOTYPE: bounding %s value of %.2f to %.2f
.
:PROGRAM_AUTOTYPE_INVALID_VALUE
AUTOTYPE: %s value '%s' is not a valid floating point number
.
:PROGRAM_ADDKEY_HELP
Generates artificial keypresses.
ADDKEY [pmsec] [key]
For example, the command below types "dir" followed by ENTER after 1 second:
ADDKEY p1000 d i r enter
You could also try AUTOTYPE command instead of this command to perform
scripted keyboard entry into a running DOS program.
.
:PROGRAM_SETCOLOR_HELP
Views or changes the text-mode color scheme settings.
SETCOLOR [color# [value]]
For example:
←[32;1mSETCOLOR 0 (50,50,50)←[0m
Change Color #0 to the specified color value
←[32;1mSETCOLOR 7 -←[0m
Return Color #7 to the default color value
←[32;1mSETCOLOR 3 +←[0m
Return Color #3 to the preset color value
←[32;1mSETCOLOR MONO←[0m
Display current MONO mode status
To change the current background and foreground colors, use COLOR command.
.
:PROGRAM_SETCOLOR_STATUS
MONO mode status: %s (video mode %d)
.
:PROGRAM_SETCOLOR_ACTIVE
active
.
:PROGRAM_SETCOLOR_INACTIVE
inactive
.
:PROGRAM_SETCOLOR_UNAVAILABLE
unavailable
.
:PROGRAM_SETCOLOR_MONO_MODE7
MONO mode status => active (video mode 7)
.
:PROGRAM_SETCOLOR_MONO_MODE3
MONO mode status => inactive (video mode 3)
.
:PROGRAM_SETCOLOR_MONO_FAIL
Failed to change MONO mode
.
:PROGRAM_SETCOLOR_MONO_SYNTAX
Must be + or - for MONO: %s
.
:PROGRAM_SETCOLOR_COLOR
Color %d: (%d,%d,%d) or #%02x%02x%02x
.
:PROGRAM_SETCOLOR_INVALID_NUMBER
Invalid color number - %s
.
:PROGRAM_SETCOLOR_INVALID_VALUE
Invalid color value - %s
.
:PROGRAM_SETCOLOR_NOT_SUPPORTED
Changing color scheme is not supported for the current video mode.
.
:PROGRAM_BOOT_UNKNOWN_BOOTHAX
Unknown boothax mode
.
:PROGRAM_BOOT_SPECIFY_FILE
Must specify BIOS image to boot
.
:PROGRAM_BOOT_BIOS_OPEN_ERROR
Unable to open BIOS image
.
:PROGRAM_BIOSTEST_SPECIFY_FILE
Must specify BIOS file to load.
.
:PROGRAM_BIOSTEST_OPEN_ERROR
Can't open a file
.
:PROGRAM_BIOSTEST_TOO_LARGE
BIOS File too large
.
:PROGRAM_DELTREE_HELP
Deletes a directory and all the subdirectories and files in it.
To delete one or more files and directories:
DELTREE [/Y] [drive:]path [[drive:]path[...]]
/Y Suppresses prompting to confirm you want to delete
the subdirectory.
[drive:]path Specifies the name of the directory you want to delete.
Note: Use DELTREE cautiously. Every file and subdirectory within the
specified directory will be deleted.
.
:PROGRAM_TREE_HELP
Graphically displays the directory structure of a drive or path.
TREE [drive:][path] [/F] [/A]
/F Displays the names of the files in each directory.
/A Uses ASCII instead of extended characters.
.
:PROGRAM_TITLE_HELP
Sets the window title for the DOSBox-X window.
TITLE [string]
string Specifies the title for the DOSBox-X window.
.
:PROGRAM_COLOR_HELP
Sets the default console foreground and background colors.
COLOR [attr]
attr Specifies color attribute of console output
Color attributes are specified by TWO hex digits -- the first
corresponds to the background; the second to the foreground.
Each digit can be any of the following values:
0 = Black 8 = Gray
1 = Blue 9 = Light Blue
2 = Green A = Light Green
3 = Aqua B = Light Aqua
4 = Red C = Light Red
5 = Purple D = Light Purple
6 = Yellow E = Light Yellow
7 = White F = Bright White
If no argument is given, this command restores the original color.
The COLOR command sets ERRORLEVEL to 1 if an attempt is made to execute
the COLOR command with a foreground and background color that are the same.
Example: "COLOR fc" produces light red on bright white.
.

View File

@ -1,6 +1,6 @@
:DOSBOX-X:LANGUAGE:German
:DOSBOX-X:CODEPAGE:858
:DOSBOX-X:VERSION:2024.10.01
:DOSBOX-X:VERSION:2025.05.03
:DOSBOX-X:REMARK:
:PROGRAM_BOOT_BOOTING
Starte von Laufwerk
@ -3851,3 +3851,601 @@ CPU: simpler Core
:MAPPER:togmenu
Menueleiste ein/aus
.
:PROGRAM_FLAGSAVE_UNFLAGALL
All files unflagged for saving.
.
:PROGRAM_FLAGSAVE_UNFLAGGED
File %s unflagged for saving.
.
:PROGRAM_FLAGSAVE_FLAGGED
File already flagged for saving - %s
.
:PROGRAM_FLAGSAVE_TOOMANY
Too many files to flag for saving.
.
:PROGRAM_FLAGSAVE_SAVED
File %s flagged for saving
.
:PROGRAM_FLAGSAVE_LIST
Files flagged for saving:
.
:PROGRAM_FLAGSAVE_HLP
Marks or flags files to be saved for the save state feature.
FLAGSAVE [file(s) [/F] [/R]] [/U]
file(s) Specifies one or more files to be flagged for saving.
/F Forces to flag the file(s) even if they are not found.
/R Removes flags from the specified file(s).
/U Removes flags from all flagged files.
Type FLAGSAVE without a parameter to list flagged files.
.
:PROGRAM_INT2FDBG_NOT_SET
INT 2Fh hook has not been set.
.
:PROGRAM_INT2FDBG_ALREADY
INT 2Fh hook has already been set.
.
:PROGRAM_INT2FDBG_HELP
Hooks INT 2Fh for debugging purposes.
INT2FDBG [option]
/I Installs hook
It will hook INT 2Fh at the top of the call chain for debugging information.
Type INT2FDBG without a parameter to show the current hook status.
.
:PROGRAM_SET80x25
Changes to 80x25 text mode.
.
:PROGRAM_SET80x43
Changes to 80x43 text mode.
.
:PROGRAM_SET80x50
Changes to 80x50 text mode.
.
:PROGRAM_SET80x60
Changes to 80x60 text mode.
.
:PROGRAM_SET132x25
Changes to 132x25 text mode.
.
:PROGRAM_SET132x43
Changes to 132x43 text mode.
.
:PROGRAM_SET132x50
Changes to 132x50 text mode.
.
:PROGRAM_SET132x60
Changes to 132x60 text mode.
.
:PROGRAM_RESCAN_HELP
Rescans for changes on mounted drives made on the host by clearing caches.
RESCAN [/A] [/Q]
RESCAN [drive:] [/Q]
[/A] Rescan all drives
[/Q] Enable quiet mode
[drive:] The drive to rescan
Type RESCAN with no parameters to rescan the current drive.
.
:PROGRAM_CFGTOOL_HELP
Starts DOSBox-X's graphical configuration tool.
CFGTOOL
Note: You can also use CONFIG command for command-line configurations.
.
:PROGRAM_IMGSWAP_HELP
Swaps floppy, hard drive and optical disc images.
←[32;1mIMGSWAP←[0m ←[37;1mdrive←[0m ←[36;1m[position]←[0m
←[37;1mdrive←[0m Drive letter to swap the image.
←[36;1m[position]←[0m Disk position to swap to.
.
:PROGRAM_INTRO_HELP
A full-screen introduction to DOSBox-X.
INTRO [/RUN] [CDROM|MOUNT|USAGE|WELCOME]
.
:PROGRAM_IMGMOUNT_NOT_ASSIGNED
BIOS disk index does not have an image assigned.
.
:PROGRAM_IMGMOUNT_INVALID_NUMBER
Invalid mount number.
.
:PROGRAM_IMGMOUNT_INVALID_FSTYPE
Invalid fstype.
.
:PROGRAM_IMGMOUNT_INVALID_SIZE
Invalid size parameter.
.
:PROGRAM_IMGMOUNT_NOT_MOUNTED_NUMBER
Drive number %d is not mounted.
.
:PROGRAM_IMGMOUNT_UMOUNT_USAGE
Incorrect IMGMOUNT unmount usage.
.
:PROGRAM_IMGMOUNT_INVALID_LETTER
Invalid drive letter.
.
:PROGRAM_IMGMOUNT_CHOOSE_LETTER
Partitions cannot be mounted in conflict with the standard INT 13h hard disk
allotment. Choose a different drive letter to mount to.
.
:PROGRAM_ELTORITO_LETTER
El Torito emulation requires a proper CD-ROM drive letter.
.
:PROGRAM_ELTORITO_DRIVE_EXISTS
El Torito CD-ROM drive specified already exists as a non-CD-ROM device
.
:PROGRAM_ELTORITO_NOT_CDDRIVE
El Torito CD-ROM drive specified is not actually a CD-ROM drive.
.
:PROGRAM_ELTORITO_REQUIRE_FLOPPY
El Torito emulation must be used with -t floppy at this time.
.
:PROGRAM_ELTORITO_NO_BOOT_RECORD
El Torito CD-ROM boot record not found.
.
:PROGRAM_ELTORITO_ENTRY_UNREADABLE
El Torito entries unreadable.
.
:PROGRAM_ELTORITO_NO_BOOTABLE_FLOPPY
El Torito bootable floppy not found.
.
:PROGRAM_ELTORITO_BOOTABLE_SECTION
Unable to locate bootable section
.
:PROGRAM_ELTORITO_BOOTSECTOR
El Torito boot sector unreadable
.
:PROGRAM_IMGMAKE_ALIGNMENT
Invalid alignment
.
:PROGRAM_IMGMAKE_PARTOFS
Invalid -partofs
.
:PROGRAM_IMGMAKE_FAT
Invalid -fat option. Must be 12, 16, or 32
.
:PROGRAM_IMGMAKE_FATCOPIES
Invalid -fatcopies option
.
:PROGRAM_IMGMAKE_SPC
Invalid -spc option, out of range
.
:PROGRAM_IMGMAKE_SPC2
Invalid -spc option, must be a power of 2
.
:PROGRAM_IMGMAKE_ROOTDIR
Invalid -rootdir option
.
PROGRAM_IMGMAKE_BOOTSECT
Invalid bootsector position
.
PROGRAM_IMGMAKE_VOLUME_ALIGN
Sanity check failed: Volume size not aligned
.
:PROGRAM_IMGMAKE_FAT_ALIGN
Sanity check failed: FAT tables not aligned
.
:PROGRAM_IMGMAKE_SECTPERFAT
Error: Generated filesystem has more than 256 sectors per FAT and is not FAT32
.
:PROGRAM_IMGMAKE_VOLSIZE
Sanity check failed: Volume size not aligned
.
:PROGRAM_IMGMAKE_CLUSTERS
Error: Generated filesystem has too few clusters given the parameters
.
:PROGRAM_IMGMAKE_CLUSTERCOUNT
Warning: Cluster count is too high given the volume size.
Reporting a smaller sector count.
.
:PROGRAM_IMGMAKE_CLUSTER_ALIGN
Sanity check failed: First cluster not aligned
.
:PROGRAM_IMGMAKE_CLUSTER_SIZE
WARNING: Cluster sizes >= 64KB are not compatible with MS-DOS and SCANDISK
.
:PROGRAM_BOOT_UNSUPPORTED
Unsupported boot mode
.
:PROGRAM_MOUNT_OVERLAY_REPLACE
Existing overlay has been replaced with new overlay.
.
:PROGRAM_LOADFIX_EMS_FREE
EMS handle %u: unable to free
.
:PROGRAM_LOADFIX_XMS_FREE
XMS handle %u: unable to free
.
:PROGRAM_LOADFIX_EMS_ALLOC
EMS block allocated (%uKB)
.
:PROGRAM_LOADFIX_EMS_ALLOCERROR
Unable to allocate EMS block
.
PROGRAM_LOADFIX_NOEMS
EMS not active
.
:PROGRAM_LOADFIX_XMS_ALLOC
XMS block allocated (%uKB)
.
:PROGRAM_LOADFIX_XMS_ALLOCERROR
Unable to allocate XMS block
.
:PROGRAM_LOADFIX_NOXMS
XMS not active
.
:PROGRAM_LOADFIX_NOALLOC
Lowest MCB is above 64KB, nothing allocated
.
:PROGRAM_BOOT_SWAP_ALREADY
Multiple disk images specified and another drive is already connected to the swap list
.
:PROGRAM_BOOT_NOT_SPECIFIED
No images specified
.
:PROGRAM_BOOT_IS_PC88
The D88 image appears to target PC-88 and cannot be booted.
.
:PROGRAM_BOOT_BPS_TOOLARGE
Bytes/sector too large
.
:PROGRAM_BOOT_DRIVE_READERROR
Error reading drive
.
:PROGRAM_START_HELP_WIN
Starts a separate window to run a specified program or command.
START [+|-|_] command [arguments]
[+|-|_]: To maximize/minimize/hide the program.
The options /MAX, /MIN, /HID are also accepted.
command: The command, program or file to start.
arguments: Arguments to pass to the application.
START opens the Windows command prompt automatically to run these commands
and wait for a key press before exiting (specified by "startincon" option):
%s
Note: The path specified in this command is the path on the host system.
.
:PROGRAM_START_HELP
Starts a separate window to run a specified program or command.
START /OPEN file
START command [arguments]
/OPEN: To open a file or URL with the associated program.
file: The file or URL to open with the associated program.
command: The command or program to start or run.
arguments: Arguments to pass to the application.
Note: The path specified in this command is the path on the host system.
.
:PROGRAM_START_COMPLETED
The command execution is completed.
.
:PROGRAM_START_COMMAND
Starting %s...
.
:PROGRAM_START_CTRLC
(Press Ctrl+C to exit immediately)
.
:PROGRAM_START_HOST_ERROR
Error: START cannot launch application to run on your current host system.
.
:PROGRAM_START_LAUNCH_ERROR
Error: START could not launch application.
.
:PROGRAM_IMGMOUNT_ELTORITO_NO_FILE
Do not specify files when mounting floppy drives from El Torito bootable CDs
.
:PROGRAM_IMGMOUNT_RAMDRIVE_NO_FILE
Do not specify files when mounting RAM drives
.
:PROGRAM_IMGMOUNT_INVALID_SECTORSIZE
Sector size must be larger than 512 bytes and evenly divide the image cluster size of %lu bytes.
.
:PROGRAM_IMGMOUNT_OPEN_ERROR
Unable to open '%s'
.
:PROGRAM_IMGMOUNT_QCOW2_INVALID
qcow2 image '%s' is not supported
.
:PROGRAM_IMGMOUNT_GEOMETRY_ERROR
Unable to detect geometry
.
:PROGRAM_IMGMOUNT_DOS_VERSION
Mounting this image file requires a reported DOS version of %u.%u or higher.
%s
.
:PROGRAM_IMGMOUNT_INVALID_FLOPPYSIZE
Floppy size not recognized
.
:PROGRAM_IMGMOUNT_MULTIPLE_USED
Multiple images given and another drive already uses multiple images
.
:PROGRAM_IMGMOUNT_MULTIPLE_NOTSUPPORTED
Multiple disk images not supported for that drive
.
:PROGRAM_IMGMOUNT_HD_FDPOSITION
Cannot mount hard drive in floppy position.
.
:PROGRAM_IMGMOUNT_FD_HDPOSITION
Cannot mount floppy in hard drive position.
.
:PROGRAM_ELTORITO_ISOMOUNT
El Torito bootable CD: -fs iso mounting not supported
.
:PROGRAM_MODE_STATUS
Status for device CON:
----------------------
Columns=%d
Lines=%d
.
:PROGRAM_MODE_NOTSUPPORTED
Code page operation not supported on this device
.
:PROGRAM_MODE_RATE_DELAY
Rate and delay must be specified together
.
:PROGRAM_UTF8_HELP
Converts UTF-8 text to view in the current code page.
UTF8 < [drive:][path]filename
command-name | UTF8
.
:PROGRAM_UTF8_NO_TEXT
No input text found.
.
:PROGRAM_UTF8_INVALIDCP
Invalid code page for text conversion.
.
:PROGRAM_UTF8_NOT_UTF8
The input text is UTF-16.
.
:PROGRAM_UTF8_CONVERSION_ERROR
An error occurred during text conversion.
.
:PROGRAM_UTF16_HELP
Converts UTF-16 text to view in the current code page.
UTF16 [/BE|/LE] < [drive:][path]filename
command-name | UTF16 [/BE|/LE]
/BE Use UTF-16 Big Endian
/LE Use UTF-16 Little Endian
.
:PROGRAM_VTEXT_HELP
Changes V-text mode for the DOS/V emulation.
VTEXT [mode]
[mode] can be 0, 1, 2, for no V-text, V-text 1, and V-text 2 respectively.
Type VTEXT without a parameter to show the current V-text mode status.
.
:PROGRAM_NMITEST_HELP
Generates a non-maskable interrupt (NMI).
NMITEST
Note: This is a debugging tool to test if the interrupt handler works properly.
.
:PROGRAM_NMITEST_GENERATE_NMI
Generating a non-maskable interrupt (NMI)...
.
:PROGRAM_CAPMOUSE_HELP
Captures or releases the mouse inside DOSBox-X.
CAPMOUSE [/C|/R]
/C Capture the mouse
/R Release the mouse
.
:PROGRAM_CAPMOUSE_MOUSE
Mouse
.
:PROGRAM_CAPMOUSE_CURRENTLY
is currently
.
:PROGRAM_CAPMOUSE_CAPTURED
captured
.
:PROGRAM_CAPMOUSE_RELEASED
released
.
:PROGRAM_AUTOTYPE_HELP
Performs scripted keyboard entry into a running DOS program.
AUTOTYPE [-list] [-w WAIT] [-p PACE] button_1 [button_2 [...]]
Where:
-list: prints all available button names.
-w WAIT: seconds before typing begins. Two second default; max of 30.
-p PACE: seconds between each keystroke. Half-second default; max of 10.
The sequence is comprised of one or more space-separated buttons.
Autotyping begins after WAIT seconds, and each button is entered
every PACE seconds. The , character inserts an extra PACE delay.
Some examples:
←[32;1mAUTOTYPE -w 1 -p 0.3 up enter , right enter←[0m
←[32;1mAUTOTYPE -p 0.2 f1 kp_8 , , enter←[0m
←[32;1mAUTOTYPE -w 1.3 esc enter , p l a y e r enter←[0m
.
:PROGRAM_AUTOTYPE_NO_BINDINGS
AUTOTYPE: The mapper has no key bindings
.
:PROGRAM_AUTOTYPE_CLAMP_VALUE
AUTOTYPE: bounding %s value of %.2f to %.2f
.
:PROGRAM_AUTOTYPE_INVALID_VALUE
AUTOTYPE: %s value '%s' is not a valid floating point number
.
:PROGRAM_ADDKEY_HELP
Generates artificial keypresses.
ADDKEY [pmsec] [key]
For example, the command below types "dir" followed by ENTER after 1 second:
ADDKEY p1000 d i r enter
You could also try AUTOTYPE command instead of this command to perform
scripted keyboard entry into a running DOS program.
.
:PROGRAM_SETCOLOR_HELP
Views or changes the text-mode color scheme settings.
SETCOLOR [color# [value]]
For example:
←[32;1mSETCOLOR 0 (50,50,50)←[0m
Change Color #0 to the specified color value
←[32;1mSETCOLOR 7 -←[0m
Return Color #7 to the default color value
←[32;1mSETCOLOR 3 +←[0m
Return Color #3 to the preset color value
←[32;1mSETCOLOR MONO←[0m
Display current MONO mode status
To change the current background and foreground colors, use COLOR command.
.
:PROGRAM_SETCOLOR_STATUS
MONO mode status: %s (video mode %d)
.
:PROGRAM_SETCOLOR_ACTIVE
active
.
:PROGRAM_SETCOLOR_INACTIVE
inactive
.
:PROGRAM_SETCOLOR_UNAVAILABLE
unavailable
.
:PROGRAM_SETCOLOR_MONO_MODE7
MONO mode status => active (video mode 7)
.
:PROGRAM_SETCOLOR_MONO_MODE3
MONO mode status => inactive (video mode 3)
.
:PROGRAM_SETCOLOR_MONO_FAIL
Failed to change MONO mode
.
:PROGRAM_SETCOLOR_MONO_SYNTAX
Must be + or - for MONO: %s
.
:PROGRAM_SETCOLOR_COLOR
Color %d: (%d,%d,%d) or #%02x%02x%02x
.
:PROGRAM_SETCOLOR_INVALID_NUMBER
Invalid color number - %s
.
:PROGRAM_SETCOLOR_INVALID_VALUE
Invalid color value - %s
.
:PROGRAM_SETCOLOR_NOT_SUPPORTED
Changing color scheme is not supported for the current video mode.
.
:PROGRAM_BOOT_UNKNOWN_BOOTHAX
Unknown boothax mode
.
:PROGRAM_BOOT_SPECIFY_FILE
Must specify BIOS image to boot
.
:PROGRAM_BOOT_BIOS_OPEN_ERROR
Unable to open BIOS image
.
:PROGRAM_BIOSTEST_SPECIFY_FILE
Must specify BIOS file to load.
.
:PROGRAM_BIOSTEST_OPEN_ERROR
Can't open a file
.
:PROGRAM_BIOSTEST_TOO_LARGE
BIOS File too large
.
:PROGRAM_DELTREE_HELP
Deletes a directory and all the subdirectories and files in it.
To delete one or more files and directories:
DELTREE [/Y] [drive:]path [[drive:]path[...]]
/Y Suppresses prompting to confirm you want to delete
the subdirectory.
[drive:]path Specifies the name of the directory you want to delete.
Note: Use DELTREE cautiously. Every file and subdirectory within the
specified directory will be deleted.
.
:PROGRAM_TREE_HELP
Graphically displays the directory structure of a drive or path.
TREE [drive:][path] [/F] [/A]
/F Displays the names of the files in each directory.
/A Uses ASCII instead of extended characters.
.
:PROGRAM_TITLE_HELP
Sets the window title for the DOSBox-X window.
TITLE [string]
string Specifies the title for the DOSBox-X window.
.
:PROGRAM_COLOR_HELP
Sets the default console foreground and background colors.
COLOR [attr]
attr Specifies color attribute of console output
Color attributes are specified by TWO hex digits -- the first
corresponds to the background; the second to the foreground.
Each digit can be any of the following values:
0 = Black 8 = Gray
1 = Blue 9 = Light Blue
2 = Green A = Light Green
3 = Aqua B = Light Aqua
4 = Red C = Light Red
5 = Purple D = Light Purple
6 = Yellow E = Light Yellow
7 = White F = Bright White
If no argument is given, this command restores the original color.
The COLOR command sets ERRORLEVEL to 1 if an attempt is made to execute
the COLOR command with a foreground and background color that are the same.
Example: "COLOR fc" produces light red on bright white.
.

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
:DOSBOX-X:LANGUAGE:Spanish (Spain)
:DOSBOX-X:CODEPAGE:858
:DOSBOX-X:VERSION:2024.10.01
:DOSBOX-X:VERSION:2025.05.03
:DOSBOX-X:REMARK:
:AUTOEXEC_CONFIGFILE_HELP
Las líneas de esta sección se iniciarán al inicio.
@ -922,6 +922,10 @@ Ejemplos:
:PROGRAM_BOOT_UNABLE
Incapaz de arrancar desde la unidad %c.
.
:PROGRAM_BOOT_IMAGE_MOUNTED
Floppy image(s) already mounted.
.
:PROGRAM_BOOT_IMAGE_OPEN
Abriendo archivo imagen: %s
@ -940,6 +944,9 @@ Comandos de cartucho PCjr disponibles:%s
:PROGRAM_BOOT_CART_NO_CMDS
No se han encontrado comandos de cartucho PCjr
.
:PROGRAM_BOOT_BOOTING
Booting from drive
.
:PROGRAM_LOADROM_HELP
Carga el archivo de imagen ROM especificado para BIOS de video o IBM BASIC.
@ -1203,6 +1210,10 @@ Creando archivo imagen "%s" con %u cilindros, %u cabezas y %u sectores
Incapaz de leer disquete.
.
:PROGRAM_IMGMAKE_BADSIZE
Wrong -size or -chs arguments.
.
:PROGRAM_KEYB_INFO
Página de códigos (Codepage) %i cargada
@ -1251,6 +1262,37 @@ No hay layout en %s para el codepage %i
No hay archivo de página de código o no es válido para la disposición %s
.
:INT21_6523_YESNO_CHARS
yn
.
:PROGRAM_LABEL_HELP
Creates, changes, or deletes the volume label of a drive.
LABEL [drive:][label]
[drive:]○Specifies the drive letter
[label]○Specifies the volume label
.
:PROGRAM_LABEL_DELETE
Delete the volume label (Y/N)?
.
:PROGRAM_LABEL_TOOLONG
Label is too long (more than 11 characters).
.
:PROGRAM_LABEL_BADCHARS
Label has invalid characters.
.
:PROGRAM_LABEL_VOLUMEIS
Volume in drive %c is %s
.
:PROGRAM_LABEL_NOLABEL
Volume in drive %c has no label
.
:PROGRAM_MODE_USAGE
Configura dispositivos de sistema.
@ -1512,6 +1554,12 @@ Incapaz de crear directorio - %s
:SHELL_CMD_RMDIR_ERROR
Ruta no válida, no es un directorio o no está vacío - %s
.
:SHELL_CMD_RMDIR_FULLTREE_CONFIRM
Delete directory "%s" and all its subdirectories? (Y/N)?
.
:SHELL_CMD_RMDIR_SINGLE_CONFIRM
Delete file "%s" (Y/N)?
.
:SHELL_CMD_RENAME_ERROR
Incapaz de renombrar - %
@ -1528,6 +1576,9 @@ Incapaz de establecer atributos: %s
:SHELL_CMD_DEL_ERROR
Incapaz de borrar - %s
.
:SHELL_CMD_DEL_CONFIRM
Delete %s (Y/N)?
.
:SHELL_CMD_DEL_SURE
¡Todos los archivos del directorio se borraran!
@ -1648,6 +1699,10 @@ Espacio en disco insuficiente - %s
:SHELL_CMD_COPY_ERROR
Error de copia - %s
.
:SHELL_CMD_COPY_NOSELF
File cannot be copied onto itself♪
.
:SHELL_CMD_SUBST_DRIVE_LIST
Las unidades locales actualmente montadas son:
@ -1680,6 +1735,9 @@ DOS/V V-text está habilitado actualmente.
:SHELL_CMD_VTEXT_OFF
DOS/V V-text está actualmente deshabilitado.
.
:SHELL_ALLFILES_CHAR
a
.
:SHELL_STARTUP_TITLE
Bienvenido a DOSBox-X!
@ -2269,6 +2327,10 @@ Las páginas de códigos personalizadas son compatibles al proporcionar archivos
:SHELL_CMD_CHCP_ACTIVE
Página de códigos activa (codepage): %d
.
:SHELL_CMD_CHCP_MISSING
ASCII characters not defined in TTF font: %d
.
:SHELL_CMD_CHCP_INVALID
Número de código de página no válido - %s
@ -2593,6 +2655,18 @@ relación original
:MENU:video_ratio_set
Establecer proporción
.
:MENU:VideoPreventCaptureMenu
Screen capture control
.
:MENU:prevcap_none
Allow
.
:MENU:prevcap_blank
Show as blank
.
:MENU:prevcap_invisible
Make invisible
.
:MENU:VideoScalerMenu
Escalador
.
@ -2683,6 +2757,9 @@ xBRZ
:MENU:scaler_set_xbrz_bilinear
xBRZ Bilineal
.
:MENU:center_window
Center window
.
:MENU:set_titletext
Establecer el texto de la barra de título...
.
@ -3166,6 +3243,9 @@ Acerca de DOSBox-X
:MENU:show_console
Mostrar consola de registro
.
:MENU:clear_console
Clear logging console
.
:MENU:disable_logging
Deshabilitar la salida de registro
.
@ -3190,6 +3270,9 @@ Opción del depurador: Ejecutar normalmente
:MENU:debugger_runwatch
Opción del depurador: Ejecutar observador
.
:MENU:video_debug_overlay
Video debug overlay
.
:MENU:HelpCommandMenu
Comandos DOS
.
@ -3271,12 +3354,18 @@ Grabar salida MIDI
:MENU:mapper_caprawopl
Grabar salida FM (OPL)
.
:MENU:mapper_capnetrf
Record network traffic
.
:MENU:mapper_video
Grabar video en AVI
.
:MENU:mapper_scrshot
Capturar pantalla
.
:MENU:mapper_rawscrshot
Take raw screenshot
.
:MENU:mapper_volup
Subir volumen
.
@ -3526,6 +3615,9 @@ Mostrar estado de disco IDE o CD
:MENU:pc98_use_uskb
Usar distribución de teclado US
.
:MAPPER:capnetrf
Record Network traffic
.
:MAPPER:caprawopl
Graba salida FM/OPL
.
@ -3610,3 +3702,601 @@ CPU: núcleo simple
:MAPPER:togmenu
Activar barra de menú
.
:PROGRAM_FLAGSAVE_UNFLAGALL
All files unflagged for saving.
.
:PROGRAM_FLAGSAVE_UNFLAGGED
File %s unflagged for saving.
.
:PROGRAM_FLAGSAVE_FLAGGED
File already flagged for saving - %s
.
:PROGRAM_FLAGSAVE_TOOMANY
Too many files to flag for saving.
.
:PROGRAM_FLAGSAVE_SAVED
File %s flagged for saving
.
:PROGRAM_FLAGSAVE_LIST
Files flagged for saving:
.
:PROGRAM_FLAGSAVE_HLP
Marks or flags files to be saved for the save state feature.
FLAGSAVE [file(s) [/F] [/R]] [/U]
file(s) Specifies one or more files to be flagged for saving.
/F Forces to flag the file(s) even if they are not found.
/R Removes flags from the specified file(s).
/U Removes flags from all flagged files.
Type FLAGSAVE without a parameter to list flagged files.
.
:PROGRAM_INT2FDBG_NOT_SET
INT 2Fh hook has not been set.
.
:PROGRAM_INT2FDBG_ALREADY
INT 2Fh hook has already been set.
.
:PROGRAM_INT2FDBG_HELP
Hooks INT 2Fh for debugging purposes.
INT2FDBG [option]
/I Installs hook
It will hook INT 2Fh at the top of the call chain for debugging information.
Type INT2FDBG without a parameter to show the current hook status.
.
:PROGRAM_SET80x25
Changes to 80x25 text mode.
.
:PROGRAM_SET80x43
Changes to 80x43 text mode.
.
:PROGRAM_SET80x50
Changes to 80x50 text mode.
.
:PROGRAM_SET80x60
Changes to 80x60 text mode.
.
:PROGRAM_SET132x25
Changes to 132x25 text mode.
.
:PROGRAM_SET132x43
Changes to 132x43 text mode.
.
:PROGRAM_SET132x50
Changes to 132x50 text mode.
.
:PROGRAM_SET132x60
Changes to 132x60 text mode.
.
:PROGRAM_RESCAN_HELP
Rescans for changes on mounted drives made on the host by clearing caches.
RESCAN [/A] [/Q]
RESCAN [drive:] [/Q]
[/A] Rescan all drives
[/Q] Enable quiet mode
[drive:] The drive to rescan
Type RESCAN with no parameters to rescan the current drive.
.
:PROGRAM_CFGTOOL_HELP
Starts DOSBox-X's graphical configuration tool.
CFGTOOL
Note: You can also use CONFIG command for command-line configurations.
.
:PROGRAM_IMGSWAP_HELP
Swaps floppy, hard drive and optical disc images.
←[32;1mIMGSWAP←[0m ←[37;1mdrive←[0m ←[36;1m[position]←[0m
←[37;1mdrive←[0m Drive letter to swap the image.
←[36;1m[position]←[0m Disk position to swap to.
.
:PROGRAM_INTRO_HELP
A full-screen introduction to DOSBox-X.
INTRO [/RUN] [CDROM|MOUNT|USAGE|WELCOME]
.
:PROGRAM_IMGMOUNT_NOT_ASSIGNED
BIOS disk index does not have an image assigned.
.
:PROGRAM_IMGMOUNT_INVALID_NUMBER
Invalid mount number.
.
:PROGRAM_IMGMOUNT_INVALID_FSTYPE
Invalid fstype.
.
:PROGRAM_IMGMOUNT_INVALID_SIZE
Invalid size parameter.
.
:PROGRAM_IMGMOUNT_NOT_MOUNTED_NUMBER
Drive number %d is not mounted.
.
:PROGRAM_IMGMOUNT_UMOUNT_USAGE
Incorrect IMGMOUNT unmount usage.
.
:PROGRAM_IMGMOUNT_INVALID_LETTER
Invalid drive letter.
.
:PROGRAM_IMGMOUNT_CHOOSE_LETTER
Partitions cannot be mounted in conflict with the standard INT 13h hard disk
allotment. Choose a different drive letter to mount to.
.
:PROGRAM_ELTORITO_LETTER
El Torito emulation requires a proper CD-ROM drive letter.
.
:PROGRAM_ELTORITO_DRIVE_EXISTS
El Torito CD-ROM drive specified already exists as a non-CD-ROM device
.
:PROGRAM_ELTORITO_NOT_CDDRIVE
El Torito CD-ROM drive specified is not actually a CD-ROM drive.
.
:PROGRAM_ELTORITO_REQUIRE_FLOPPY
El Torito emulation must be used with -t floppy at this time.
.
:PROGRAM_ELTORITO_NO_BOOT_RECORD
El Torito CD-ROM boot record not found.
.
:PROGRAM_ELTORITO_ENTRY_UNREADABLE
El Torito entries unreadable.
.
:PROGRAM_ELTORITO_NO_BOOTABLE_FLOPPY
El Torito bootable floppy not found.
.
:PROGRAM_ELTORITO_BOOTABLE_SECTION
Unable to locate bootable section
.
:PROGRAM_ELTORITO_BOOTSECTOR
El Torito boot sector unreadable
.
:PROGRAM_IMGMAKE_ALIGNMENT
Invalid alignment
.
:PROGRAM_IMGMAKE_PARTOFS
Invalid -partofs
.
:PROGRAM_IMGMAKE_FAT
Invalid -fat option. Must be 12, 16, or 32
.
:PROGRAM_IMGMAKE_FATCOPIES
Invalid -fatcopies option
.
:PROGRAM_IMGMAKE_SPC
Invalid -spc option, out of range
.
:PROGRAM_IMGMAKE_SPC2
Invalid -spc option, must be a power of 2
.
:PROGRAM_IMGMAKE_ROOTDIR
Invalid -rootdir option
.
PROGRAM_IMGMAKE_BOOTSECT
Invalid bootsector position
.
PROGRAM_IMGMAKE_VOLUME_ALIGN
Sanity check failed: Volume size not aligned
.
:PROGRAM_IMGMAKE_FAT_ALIGN
Sanity check failed: FAT tables not aligned
.
:PROGRAM_IMGMAKE_SECTPERFAT
Error: Generated filesystem has more than 256 sectors per FAT and is not FAT32
.
:PROGRAM_IMGMAKE_VOLSIZE
Sanity check failed: Volume size not aligned
.
:PROGRAM_IMGMAKE_CLUSTERS
Error: Generated filesystem has too few clusters given the parameters
.
:PROGRAM_IMGMAKE_CLUSTERCOUNT
Warning: Cluster count is too high given the volume size.
Reporting a smaller sector count.
.
:PROGRAM_IMGMAKE_CLUSTER_ALIGN
Sanity check failed: First cluster not aligned
.
:PROGRAM_IMGMAKE_CLUSTER_SIZE
WARNING: Cluster sizes >= 64KB are not compatible with MS-DOS and SCANDISK
.
:PROGRAM_BOOT_UNSUPPORTED
Unsupported boot mode
.
:PROGRAM_MOUNT_OVERLAY_REPLACE
Existing overlay has been replaced with new overlay.
.
:PROGRAM_LOADFIX_EMS_FREE
EMS handle %u: unable to free
.
:PROGRAM_LOADFIX_XMS_FREE
XMS handle %u: unable to free
.
:PROGRAM_LOADFIX_EMS_ALLOC
EMS block allocated (%uKB)
.
:PROGRAM_LOADFIX_EMS_ALLOCERROR
Unable to allocate EMS block
.
PROGRAM_LOADFIX_NOEMS
EMS not active
.
:PROGRAM_LOADFIX_XMS_ALLOC
XMS block allocated (%uKB)
.
:PROGRAM_LOADFIX_XMS_ALLOCERROR
Unable to allocate XMS block
.
:PROGRAM_LOADFIX_NOXMS
XMS not active
.
:PROGRAM_LOADFIX_NOALLOC
Lowest MCB is above 64KB, nothing allocated
.
:PROGRAM_BOOT_SWAP_ALREADY
Multiple disk images specified and another drive is already connected to the swap list
.
:PROGRAM_BOOT_NOT_SPECIFIED
No images specified
.
:PROGRAM_BOOT_IS_PC88
The D88 image appears to target PC-88 and cannot be booted.
.
:PROGRAM_BOOT_BPS_TOOLARGE
Bytes/sector too large
.
:PROGRAM_BOOT_DRIVE_READERROR
Error reading drive
.
:PROGRAM_START_HELP_WIN
Starts a separate window to run a specified program or command.
START [+|-|_] command [arguments]
[+|-|_]: To maximize/minimize/hide the program.
The options /MAX, /MIN, /HID are also accepted.
command: The command, program or file to start.
arguments: Arguments to pass to the application.
START opens the Windows command prompt automatically to run these commands
and wait for a key press before exiting (specified by "startincon" option):
%s
Note: The path specified in this command is the path on the host system.
.
:PROGRAM_START_HELP
Starts a separate window to run a specified program or command.
START /OPEN file
START command [arguments]
/OPEN: To open a file or URL with the associated program.
file: The file or URL to open with the associated program.
command: The command or program to start or run.
arguments: Arguments to pass to the application.
Note: The path specified in this command is the path on the host system.
.
:PROGRAM_START_COMPLETED
The command execution is completed.
.
:PROGRAM_START_COMMAND
Starting %s...
.
:PROGRAM_START_CTRLC
(Press Ctrl+C to exit immediately)
.
:PROGRAM_START_HOST_ERROR
Error: START cannot launch application to run on your current host system.
.
:PROGRAM_START_LAUNCH_ERROR
Error: START could not launch application.
.
:PROGRAM_IMGMOUNT_ELTORITO_NO_FILE
Do not specify files when mounting floppy drives from El Torito bootable CDs
.
:PROGRAM_IMGMOUNT_RAMDRIVE_NO_FILE
Do not specify files when mounting RAM drives
.
:PROGRAM_IMGMOUNT_INVALID_SECTORSIZE
Sector size must be larger than 512 bytes and evenly divide the image cluster size of %lu bytes.
.
:PROGRAM_IMGMOUNT_OPEN_ERROR
Unable to open '%s'
.
:PROGRAM_IMGMOUNT_QCOW2_INVALID
qcow2 image '%s' is not supported
.
:PROGRAM_IMGMOUNT_GEOMETRY_ERROR
Unable to detect geometry
.
:PROGRAM_IMGMOUNT_DOS_VERSION
Mounting this image file requires a reported DOS version of %u.%u or higher.
%s
.
:PROGRAM_IMGMOUNT_INVALID_FLOPPYSIZE
Floppy size not recognized
.
:PROGRAM_IMGMOUNT_MULTIPLE_USED
Multiple images given and another drive already uses multiple images
.
:PROGRAM_IMGMOUNT_MULTIPLE_NOTSUPPORTED
Multiple disk images not supported for that drive
.
:PROGRAM_IMGMOUNT_HD_FDPOSITION
Cannot mount hard drive in floppy position.
.
:PROGRAM_IMGMOUNT_FD_HDPOSITION
Cannot mount floppy in hard drive position.
.
:PROGRAM_ELTORITO_ISOMOUNT
El Torito bootable CD: -fs iso mounting not supported
.
:PROGRAM_MODE_STATUS
Status for device CON:
----------------------
Columns=%d
Lines=%d
.
:PROGRAM_MODE_NOTSUPPORTED
Code page operation not supported on this device
.
:PROGRAM_MODE_RATE_DELAY
Rate and delay must be specified together
.
:PROGRAM_UTF8_HELP
Converts UTF-8 text to view in the current code page.
UTF8 < [drive:][path]filename
command-name | UTF8
.
:PROGRAM_UTF8_NO_TEXT
No input text found.
.
:PROGRAM_UTF8_INVALIDCP
Invalid code page for text conversion.
.
:PROGRAM_UTF8_NOT_UTF8
The input text is UTF-16.
.
:PROGRAM_UTF8_CONVERSION_ERROR
An error occurred during text conversion.
.
:PROGRAM_UTF16_HELP
Converts UTF-16 text to view in the current code page.
UTF16 [/BE|/LE] < [drive:][path]filename
command-name | UTF16 [/BE|/LE]
/BE Use UTF-16 Big Endian
/LE Use UTF-16 Little Endian
.
:PROGRAM_VTEXT_HELP
Changes V-text mode for the DOS/V emulation.
VTEXT [mode]
[mode] can be 0, 1, 2, for no V-text, V-text 1, and V-text 2 respectively.
Type VTEXT without a parameter to show the current V-text mode status.
.
:PROGRAM_NMITEST_HELP
Generates a non-maskable interrupt (NMI).
NMITEST
Note: This is a debugging tool to test if the interrupt handler works properly.
.
:PROGRAM_NMITEST_GENERATE_NMI
Generating a non-maskable interrupt (NMI)...
.
:PROGRAM_CAPMOUSE_HELP
Captures or releases the mouse inside DOSBox-X.
CAPMOUSE [/C|/R]
/C Capture the mouse
/R Release the mouse
.
:PROGRAM_CAPMOUSE_MOUSE
Mouse
.
:PROGRAM_CAPMOUSE_CURRENTLY
is currently
.
:PROGRAM_CAPMOUSE_CAPTURED
captured
.
:PROGRAM_CAPMOUSE_RELEASED
released
.
:PROGRAM_AUTOTYPE_HELP
Performs scripted keyboard entry into a running DOS program.
AUTOTYPE [-list] [-w WAIT] [-p PACE] button_1 [button_2 [...]]
Where:
-list: prints all available button names.
-w WAIT: seconds before typing begins. Two second default; max of 30.
-p PACE: seconds between each keystroke. Half-second default; max of 10.
The sequence is comprised of one or more space-separated buttons.
Autotyping begins after WAIT seconds, and each button is entered
every PACE seconds. The , character inserts an extra PACE delay.
Some examples:
←[32;1mAUTOTYPE -w 1 -p 0.3 up enter , right enter←[0m
←[32;1mAUTOTYPE -p 0.2 f1 kp_8 , , enter←[0m
←[32;1mAUTOTYPE -w 1.3 esc enter , p l a y e r enter←[0m
.
:PROGRAM_AUTOTYPE_NO_BINDINGS
AUTOTYPE: The mapper has no key bindings
.
:PROGRAM_AUTOTYPE_CLAMP_VALUE
AUTOTYPE: bounding %s value of %.2f to %.2f
.
:PROGRAM_AUTOTYPE_INVALID_VALUE
AUTOTYPE: %s value '%s' is not a valid floating point number
.
:PROGRAM_ADDKEY_HELP
Generates artificial keypresses.
ADDKEY [pmsec] [key]
For example, the command below types "dir" followed by ENTER after 1 second:
ADDKEY p1000 d i r enter
You could also try AUTOTYPE command instead of this command to perform
scripted keyboard entry into a running DOS program.
.
:PROGRAM_SETCOLOR_HELP
Views or changes the text-mode color scheme settings.
SETCOLOR [color# [value]]
For example:
←[32;1mSETCOLOR 0 (50,50,50)←[0m
Change Color #0 to the specified color value
←[32;1mSETCOLOR 7 -←[0m
Return Color #7 to the default color value
←[32;1mSETCOLOR 3 +←[0m
Return Color #3 to the preset color value
←[32;1mSETCOLOR MONO←[0m
Display current MONO mode status
To change the current background and foreground colors, use COLOR command.
.
:PROGRAM_SETCOLOR_STATUS
MONO mode status: %s (video mode %d)
.
:PROGRAM_SETCOLOR_ACTIVE
active
.
:PROGRAM_SETCOLOR_INACTIVE
inactive
.
:PROGRAM_SETCOLOR_UNAVAILABLE
unavailable
.
:PROGRAM_SETCOLOR_MONO_MODE7
MONO mode status => active (video mode 7)
.
:PROGRAM_SETCOLOR_MONO_MODE3
MONO mode status => inactive (video mode 3)
.
:PROGRAM_SETCOLOR_MONO_FAIL
Failed to change MONO mode
.
:PROGRAM_SETCOLOR_MONO_SYNTAX
Must be + or - for MONO: %s
.
:PROGRAM_SETCOLOR_COLOR
Color %d: (%d,%d,%d) or #%02x%02x%02x
.
:PROGRAM_SETCOLOR_INVALID_NUMBER
Invalid color number - %s
.
:PROGRAM_SETCOLOR_INVALID_VALUE
Invalid color value - %s
.
:PROGRAM_SETCOLOR_NOT_SUPPORTED
Changing color scheme is not supported for the current video mode.
.
:PROGRAM_BOOT_UNKNOWN_BOOTHAX
Unknown boothax mode
.
:PROGRAM_BOOT_SPECIFY_FILE
Must specify BIOS image to boot
.
:PROGRAM_BOOT_BIOS_OPEN_ERROR
Unable to open BIOS image
.
:PROGRAM_BIOSTEST_SPECIFY_FILE
Must specify BIOS file to load.
.
:PROGRAM_BIOSTEST_OPEN_ERROR
Can't open a file
.
:PROGRAM_BIOSTEST_TOO_LARGE
BIOS File too large
.
:PROGRAM_DELTREE_HELP
Deletes a directory and all the subdirectories and files in it.
To delete one or more files and directories:
DELTREE [/Y] [drive:]path [[drive:]path[...]]
/Y Suppresses prompting to confirm you want to delete
the subdirectory.
[drive:]path Specifies the name of the directory you want to delete.
Note: Use DELTREE cautiously. Every file and subdirectory within the
specified directory will be deleted.
.
:PROGRAM_TREE_HELP
Graphically displays the directory structure of a drive or path.
TREE [drive:][path] [/F] [/A]
/F Displays the names of the files in each directory.
/A Uses ASCII instead of extended characters.
.
:PROGRAM_TITLE_HELP
Sets the window title for the DOSBox-X window.
TITLE [string]
string Specifies the title for the DOSBox-X window.
.
:PROGRAM_COLOR_HELP
Sets the default console foreground and background colors.
COLOR [attr]
attr Specifies color attribute of console output
Color attributes are specified by TWO hex digits -- the first
corresponds to the background; the second to the foreground.
Each digit can be any of the following values:
0 = Black 8 = Gray
1 = Blue 9 = Light Blue
2 = Green A = Light Green
3 = Aqua B = Light Aqua
4 = Red C = Light Red
5 = Purple D = Light Purple
6 = Yellow E = Light Yellow
7 = White F = Bright White
If no argument is given, this command restores the original color.
The COLOR command sets ERRORLEVEL to 1 if an attempt is made to execute
the COLOR command with a foreground and background color that are the same.
Example: "COLOR fc" produces light red on bright white.
.

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
:DOSBOX-X:LANGUAGE:Hungarian (Hungary)
:DOSBOX-X:CODEPAGE:852
:DOSBOX-X:VERSION:2024.10.01
:DOSBOX-X:VERSION:2025.05.03
:DOSBOX-X:REMARK:
:AUTOEXEC_CONFIGFILE_HELP
Ebben a szekcióban lévő sorok indításkor lefutnak.
@ -917,6 +917,10 @@ Példák:
:PROGRAM_BOOT_UNABLE
Nem lehet a(z) %c meghajtóról bootolni.
.
:PROGRAM_BOOT_IMAGE_MOUNTED
Floppy image(s) already mounted.
.
:PROGRAM_BOOT_IMAGE_OPEN
Lemezkép-fájl megnyitása: %s
@ -935,6 +939,9 @@ Elérhető PCjr kártya parancsok:%s
:PROGRAM_BOOT_CART_NO_CMDS
PCjr kártya parancsok nem találhatóak
.
:PROGRAM_BOOT_BOOTING
Booting from drive
.
:PROGRAM_LOADROM_HELP
A megadott ROM képfájl betöltése video BIOS vagy IBM BASIC aktiválásához.
@ -1200,6 +1207,9 @@ Képfájl "%s" készítése: %u cilinder, %u fej és %u szektor
Floppy olvasása sikertelen.
.
:PROGRAM_IMGMAKE_BADSIZE
Wrong -size or -chs arguments.
.
:PROGRAM_KEYB_INFO
A %i kódlap betöltve
@ -1245,6 +1255,36 @@ Nincs billentyűzetkiosztás a(z) %s-ban a(z) %i kódlaphoz.
:PROGRAM_KEYB_INVCPFILE
Nem létező/érvényes kódlap fájl a(z) %s billentyűzetkiosztáshoz.
.
:INT21_6523_YESNO_CHARS
yn
.
:PROGRAM_LABEL_HELP
Creates, changes, or deletes the volume label of a drive.
LABEL [drive:][label]
[drive:]○Specifies the drive letter
[label]○Specifies the volume label
.
:PROGRAM_LABEL_DELETE
Delete the volume label (Y/N)?
.
:PROGRAM_LABEL_TOOLONG
Label is too long (more than 11 characters).
.
:PROGRAM_LABEL_BADCHARS
Label has invalid characters.
.
:PROGRAM_LABEL_VOLUMEIS
Volume in drive %c is %s
.
:PROGRAM_LABEL_NOLABEL
Volume in drive %c has no label
.
:PROGRAM_MODE_USAGE
@ -1512,6 +1552,12 @@ Könyvtár létrehozása sikertelen - %s
:SHELL_CMD_RMDIR_ERROR
Érvénytelen elérési út, nem könyvtár vagy a könyvtár nem üres - %s
.
:SHELL_CMD_RMDIR_FULLTREE_CONFIRM
Delete directory "%s" and all its subdirectories? (Y/N)?
.
:SHELL_CMD_RMDIR_SINGLE_CONFIRM
Delete file "%s" (Y/N)?
.
:SHELL_CMD_RENAME_ERROR
Az átnevezés sikertelen - %s
@ -1528,6 +1574,9 @@ Nem beállítható attribútumok: %s
:SHELL_CMD_DEL_ERROR
Nem törölhető - %s
.
:SHELL_CMD_DEL_CONFIRM
Delete %s (Y/N)?
.
:SHELL_CMD_DEL_SURE
Minden fájls a könyvtárban törlésre kerül!!!
@ -1648,6 +1697,10 @@ Nincs elég szabad hely - %s
:SHELL_CMD_COPY_ERROR
Másolási hiba - %s
.
:SHELL_CMD_COPY_NOSELF
File cannot be copied onto itself♪
.
:SHELL_CMD_SUBST_DRIVE_LIST
A jelenleg csatolt helyi meghajtók:
@ -1680,6 +1733,9 @@ DOS/V V-text bekapcsolva.
:SHELL_CMD_VTEXT_OFF
DOS/V V-text kikapcsolva.
.
:SHELL_ALLFILES_CHAR
a
.
:SHELL_STARTUP_TITLE
Üdvözlet a DOSBox-X-ben!
@ -2580,6 +2636,18 @@ Eredeti arány
:MENU:video_ratio_set
Képarány beállítása
.
:MENU:VideoPreventCaptureMenu
Screen capture control
.
:MENU:prevcap_none
Allow
.
:MENU:prevcap_blank
Show as blank
.
:MENU:prevcap_invisible
Make invisible
.
:MENU:VideoScalerMenu
Skálázó
.
@ -2670,6 +2738,9 @@ xBRZ
:MENU:scaler_set_xbrz_bilinear
xBRZ kettős
.
:MENU:center_window
Center window
.
:MENU:set_titletext
Fejléc szövegének beállítása...
.
@ -3153,6 +3224,9 @@ DOSBox-X névjegye
:MENU:show_console
Naplózás konzol megjelenítése
.
:MENU:clear_console
Clear logging console
.
:MENU:disable_logging
Naplózási kimenet kikapcsolása
.
@ -3177,6 +3251,9 @@ Hibakereső opciól: Normal futtatás
:MENU:debugger_runwatch
Hibakereső opciól: Watch futtás
.
:MENU:video_debug_overlay
Video debug overlay
.
:MENU:HelpCommandMenu
DOS parancsok
.
@ -3258,12 +3335,18 @@ MIDI kimenet mentése
:MENU:mapper_caprawopl
FM (OPL) kimenet mentése
.
:MENU:mapper_capnetrf
Record network traffic
.
:MENU:mapper_video
Videó mentése AVI-ként
.
:MENU:mapper_scrshot
Képernyő mentése (screenshot)
.
:MENU:mapper_rawscrshot
Take raw screenshot
.
:MENU:mapper_volup
Hangerő növelése
.
@ -3513,6 +3596,9 @@ IDE lemez vagy CD státusza
:MENU:pc98_use_uskb
US billentyűkiosztás
.
:MAPPER:capnetrf
Record Network traffic
.
:MAPPER:caprawopl
FM/OPL kimenet rögzítése
.
@ -3570,6 +3656,9 @@ Gyorsindító program
:MAPPER:reboot
A DOS újraindítása
.
:MAPPER:recmtwave
Record to multi-track AVI
.
:MAPPER:rescanall
Meghajtók frissítése
.
@ -3588,3 +3677,601 @@ CPU: szimpla mag
:MAPPER:togmenu
Menüsor be/ki
.
:PROGRAM_FLAGSAVE_UNFLAGALL
All files unflagged for saving.
.
:PROGRAM_FLAGSAVE_UNFLAGGED
File %s unflagged for saving.
.
:PROGRAM_FLAGSAVE_FLAGGED
File already flagged for saving - %s
.
:PROGRAM_FLAGSAVE_TOOMANY
Too many files to flag for saving.
.
:PROGRAM_FLAGSAVE_SAVED
File %s flagged for saving
.
:PROGRAM_FLAGSAVE_LIST
Files flagged for saving:
.
:PROGRAM_FLAGSAVE_HLP
Marks or flags files to be saved for the save state feature.
FLAGSAVE [file(s) [/F] [/R]] [/U]
file(s) Specifies one or more files to be flagged for saving.
/F Forces to flag the file(s) even if they are not found.
/R Removes flags from the specified file(s).
/U Removes flags from all flagged files.
Type FLAGSAVE without a parameter to list flagged files.
.
:PROGRAM_INT2FDBG_NOT_SET
INT 2Fh hook has not been set.
.
:PROGRAM_INT2FDBG_ALREADY
INT 2Fh hook has already been set.
.
:PROGRAM_INT2FDBG_HELP
Hooks INT 2Fh for debugging purposes.
INT2FDBG [option]
/I Installs hook
It will hook INT 2Fh at the top of the call chain for debugging information.
Type INT2FDBG without a parameter to show the current hook status.
.
:PROGRAM_SET80x25
Changes to 80x25 text mode.
.
:PROGRAM_SET80x43
Changes to 80x43 text mode.
.
:PROGRAM_SET80x50
Changes to 80x50 text mode.
.
:PROGRAM_SET80x60
Changes to 80x60 text mode.
.
:PROGRAM_SET132x25
Changes to 132x25 text mode.
.
:PROGRAM_SET132x43
Changes to 132x43 text mode.
.
:PROGRAM_SET132x50
Changes to 132x50 text mode.
.
:PROGRAM_SET132x60
Changes to 132x60 text mode.
.
:PROGRAM_RESCAN_HELP
Rescans for changes on mounted drives made on the host by clearing caches.
RESCAN [/A] [/Q]
RESCAN [drive:] [/Q]
[/A] Rescan all drives
[/Q] Enable quiet mode
[drive:] The drive to rescan
Type RESCAN with no parameters to rescan the current drive.
.
:PROGRAM_CFGTOOL_HELP
Starts DOSBox-X's graphical configuration tool.
CFGTOOL
Note: You can also use CONFIG command for command-line configurations.
.
:PROGRAM_IMGSWAP_HELP
Swaps floppy, hard drive and optical disc images.
←[32;1mIMGSWAP←[0m ←[37;1mdrive←[0m ←[36;1m[position]←[0m
←[37;1mdrive←[0m Drive letter to swap the image.
←[36;1m[position]←[0m Disk position to swap to.
.
:PROGRAM_INTRO_HELP
A full-screen introduction to DOSBox-X.
INTRO [/RUN] [CDROM|MOUNT|USAGE|WELCOME]
.
:PROGRAM_IMGMOUNT_NOT_ASSIGNED
BIOS disk index does not have an image assigned.
.
:PROGRAM_IMGMOUNT_INVALID_NUMBER
Invalid mount number.
.
:PROGRAM_IMGMOUNT_INVALID_FSTYPE
Invalid fstype.
.
:PROGRAM_IMGMOUNT_INVALID_SIZE
Invalid size parameter.
.
:PROGRAM_IMGMOUNT_NOT_MOUNTED_NUMBER
Drive number %d is not mounted.
.
:PROGRAM_IMGMOUNT_UMOUNT_USAGE
Incorrect IMGMOUNT unmount usage.
.
:PROGRAM_IMGMOUNT_INVALID_LETTER
Invalid drive letter.
.
:PROGRAM_IMGMOUNT_CHOOSE_LETTER
Partitions cannot be mounted in conflict with the standard INT 13h hard disk
allotment. Choose a different drive letter to mount to.
.
:PROGRAM_ELTORITO_LETTER
El Torito emulation requires a proper CD-ROM drive letter.
.
:PROGRAM_ELTORITO_DRIVE_EXISTS
El Torito CD-ROM drive specified already exists as a non-CD-ROM device
.
:PROGRAM_ELTORITO_NOT_CDDRIVE
El Torito CD-ROM drive specified is not actually a CD-ROM drive.
.
:PROGRAM_ELTORITO_REQUIRE_FLOPPY
El Torito emulation must be used with -t floppy at this time.
.
:PROGRAM_ELTORITO_NO_BOOT_RECORD
El Torito CD-ROM boot record not found.
.
:PROGRAM_ELTORITO_ENTRY_UNREADABLE
El Torito entries unreadable.
.
:PROGRAM_ELTORITO_NO_BOOTABLE_FLOPPY
El Torito bootable floppy not found.
.
:PROGRAM_ELTORITO_BOOTABLE_SECTION
Unable to locate bootable section
.
:PROGRAM_ELTORITO_BOOTSECTOR
El Torito boot sector unreadable
.
:PROGRAM_IMGMAKE_ALIGNMENT
Invalid alignment
.
:PROGRAM_IMGMAKE_PARTOFS
Invalid -partofs
.
:PROGRAM_IMGMAKE_FAT
Invalid -fat option. Must be 12, 16, or 32
.
:PROGRAM_IMGMAKE_FATCOPIES
Invalid -fatcopies option
.
:PROGRAM_IMGMAKE_SPC
Invalid -spc option, out of range
.
:PROGRAM_IMGMAKE_SPC2
Invalid -spc option, must be a power of 2
.
:PROGRAM_IMGMAKE_ROOTDIR
Invalid -rootdir option
.
PROGRAM_IMGMAKE_BOOTSECT
Invalid bootsector position
.
PROGRAM_IMGMAKE_VOLUME_ALIGN
Sanity check failed: Volume size not aligned
.
:PROGRAM_IMGMAKE_FAT_ALIGN
Sanity check failed: FAT tables not aligned
.
:PROGRAM_IMGMAKE_SECTPERFAT
Error: Generated filesystem has more than 256 sectors per FAT and is not FAT32
.
:PROGRAM_IMGMAKE_VOLSIZE
Sanity check failed: Volume size not aligned
.
:PROGRAM_IMGMAKE_CLUSTERS
Error: Generated filesystem has too few clusters given the parameters
.
:PROGRAM_IMGMAKE_CLUSTERCOUNT
Warning: Cluster count is too high given the volume size.
Reporting a smaller sector count.
.
:PROGRAM_IMGMAKE_CLUSTER_ALIGN
Sanity check failed: First cluster not aligned
.
:PROGRAM_IMGMAKE_CLUSTER_SIZE
WARNING: Cluster sizes >= 64KB are not compatible with MS-DOS and SCANDISK
.
:PROGRAM_BOOT_UNSUPPORTED
Unsupported boot mode
.
:PROGRAM_MOUNT_OVERLAY_REPLACE
Existing overlay has been replaced with new overlay.
.
:PROGRAM_LOADFIX_EMS_FREE
EMS handle %u: unable to free
.
:PROGRAM_LOADFIX_XMS_FREE
XMS handle %u: unable to free
.
:PROGRAM_LOADFIX_EMS_ALLOC
EMS block allocated (%uKB)
.
:PROGRAM_LOADFIX_EMS_ALLOCERROR
Unable to allocate EMS block
.
PROGRAM_LOADFIX_NOEMS
EMS not active
.
:PROGRAM_LOADFIX_XMS_ALLOC
XMS block allocated (%uKB)
.
:PROGRAM_LOADFIX_XMS_ALLOCERROR
Unable to allocate XMS block
.
:PROGRAM_LOADFIX_NOXMS
XMS not active
.
:PROGRAM_LOADFIX_NOALLOC
Lowest MCB is above 64KB, nothing allocated
.
:PROGRAM_BOOT_SWAP_ALREADY
Multiple disk images specified and another drive is already connected to the swap list
.
:PROGRAM_BOOT_NOT_SPECIFIED
No images specified
.
:PROGRAM_BOOT_IS_PC88
The D88 image appears to target PC-88 and cannot be booted.
.
:PROGRAM_BOOT_BPS_TOOLARGE
Bytes/sector too large
.
:PROGRAM_BOOT_DRIVE_READERROR
Error reading drive
.
:PROGRAM_START_HELP_WIN
Starts a separate window to run a specified program or command.
START [+|-|_] command [arguments]
[+|-|_]: To maximize/minimize/hide the program.
The options /MAX, /MIN, /HID are also accepted.
command: The command, program or file to start.
arguments: Arguments to pass to the application.
START opens the Windows command prompt automatically to run these commands
and wait for a key press before exiting (specified by "startincon" option):
%s
Note: The path specified in this command is the path on the host system.
.
:PROGRAM_START_HELP
Starts a separate window to run a specified program or command.
START /OPEN file
START command [arguments]
/OPEN: To open a file or URL with the associated program.
file: The file or URL to open with the associated program.
command: The command or program to start or run.
arguments: Arguments to pass to the application.
Note: The path specified in this command is the path on the host system.
.
:PROGRAM_START_COMPLETED
The command execution is completed.
.
:PROGRAM_START_COMMAND
Starting %s...
.
:PROGRAM_START_CTRLC
(Press Ctrl+C to exit immediately)
.
:PROGRAM_START_HOST_ERROR
Error: START cannot launch application to run on your current host system.
.
:PROGRAM_START_LAUNCH_ERROR
Error: START could not launch application.
.
:PROGRAM_IMGMOUNT_ELTORITO_NO_FILE
Do not specify files when mounting floppy drives from El Torito bootable CDs
.
:PROGRAM_IMGMOUNT_RAMDRIVE_NO_FILE
Do not specify files when mounting RAM drives
.
:PROGRAM_IMGMOUNT_INVALID_SECTORSIZE
Sector size must be larger than 512 bytes and evenly divide the image cluster size of %lu bytes.
.
:PROGRAM_IMGMOUNT_OPEN_ERROR
Unable to open '%s'
.
:PROGRAM_IMGMOUNT_QCOW2_INVALID
qcow2 image '%s' is not supported
.
:PROGRAM_IMGMOUNT_GEOMETRY_ERROR
Unable to detect geometry
.
:PROGRAM_IMGMOUNT_DOS_VERSION
Mounting this image file requires a reported DOS version of %u.%u or higher.
%s
.
:PROGRAM_IMGMOUNT_INVALID_FLOPPYSIZE
Floppy size not recognized
.
:PROGRAM_IMGMOUNT_MULTIPLE_USED
Multiple images given and another drive already uses multiple images
.
:PROGRAM_IMGMOUNT_MULTIPLE_NOTSUPPORTED
Multiple disk images not supported for that drive
.
:PROGRAM_IMGMOUNT_HD_FDPOSITION
Cannot mount hard drive in floppy position.
.
:PROGRAM_IMGMOUNT_FD_HDPOSITION
Cannot mount floppy in hard drive position.
.
:PROGRAM_ELTORITO_ISOMOUNT
El Torito bootable CD: -fs iso mounting not supported
.
:PROGRAM_MODE_STATUS
Status for device CON:
----------------------
Columns=%d
Lines=%d
.
:PROGRAM_MODE_NOTSUPPORTED
Code page operation not supported on this device
.
:PROGRAM_MODE_RATE_DELAY
Rate and delay must be specified together
.
:PROGRAM_UTF8_HELP
Converts UTF-8 text to view in the current code page.
UTF8 < [drive:][path]filename
command-name | UTF8
.
:PROGRAM_UTF8_NO_TEXT
No input text found.
.
:PROGRAM_UTF8_INVALIDCP
Invalid code page for text conversion.
.
:PROGRAM_UTF8_NOT_UTF8
The input text is UTF-16.
.
:PROGRAM_UTF8_CONVERSION_ERROR
An error occurred during text conversion.
.
:PROGRAM_UTF16_HELP
Converts UTF-16 text to view in the current code page.
UTF16 [/BE|/LE] < [drive:][path]filename
command-name | UTF16 [/BE|/LE]
/BE Use UTF-16 Big Endian
/LE Use UTF-16 Little Endian
.
:PROGRAM_VTEXT_HELP
Changes V-text mode for the DOS/V emulation.
VTEXT [mode]
[mode] can be 0, 1, 2, for no V-text, V-text 1, and V-text 2 respectively.
Type VTEXT without a parameter to show the current V-text mode status.
.
:PROGRAM_NMITEST_HELP
Generates a non-maskable interrupt (NMI).
NMITEST
Note: This is a debugging tool to test if the interrupt handler works properly.
.
:PROGRAM_NMITEST_GENERATE_NMI
Generating a non-maskable interrupt (NMI)...
.
:PROGRAM_CAPMOUSE_HELP
Captures or releases the mouse inside DOSBox-X.
CAPMOUSE [/C|/R]
/C Capture the mouse
/R Release the mouse
.
:PROGRAM_CAPMOUSE_MOUSE
Mouse
.
:PROGRAM_CAPMOUSE_CURRENTLY
is currently
.
:PROGRAM_CAPMOUSE_CAPTURED
captured
.
:PROGRAM_CAPMOUSE_RELEASED
released
.
:PROGRAM_AUTOTYPE_HELP
Performs scripted keyboard entry into a running DOS program.
AUTOTYPE [-list] [-w WAIT] [-p PACE] button_1 [button_2 [...]]
Where:
-list: prints all available button names.
-w WAIT: seconds before typing begins. Two second default; max of 30.
-p PACE: seconds between each keystroke. Half-second default; max of 10.
The sequence is comprised of one or more space-separated buttons.
Autotyping begins after WAIT seconds, and each button is entered
every PACE seconds. The , character inserts an extra PACE delay.
Some examples:
←[32;1mAUTOTYPE -w 1 -p 0.3 up enter , right enter←[0m
←[32;1mAUTOTYPE -p 0.2 f1 kp_8 , , enter←[0m
←[32;1mAUTOTYPE -w 1.3 esc enter , p l a y e r enter←[0m
.
:PROGRAM_AUTOTYPE_NO_BINDINGS
AUTOTYPE: The mapper has no key bindings
.
:PROGRAM_AUTOTYPE_CLAMP_VALUE
AUTOTYPE: bounding %s value of %.2f to %.2f
.
:PROGRAM_AUTOTYPE_INVALID_VALUE
AUTOTYPE: %s value '%s' is not a valid floating point number
.
:PROGRAM_ADDKEY_HELP
Generates artificial keypresses.
ADDKEY [pmsec] [key]
For example, the command below types "dir" followed by ENTER after 1 second:
ADDKEY p1000 d i r enter
You could also try AUTOTYPE command instead of this command to perform
scripted keyboard entry into a running DOS program.
.
:PROGRAM_SETCOLOR_HELP
Views or changes the text-mode color scheme settings.
SETCOLOR [color# [value]]
For example:
←[32;1mSETCOLOR 0 (50,50,50)←[0m
Change Color #0 to the specified color value
←[32;1mSETCOLOR 7 -←[0m
Return Color #7 to the default color value
←[32;1mSETCOLOR 3 +←[0m
Return Color #3 to the preset color value
←[32;1mSETCOLOR MONO←[0m
Display current MONO mode status
To change the current background and foreground colors, use COLOR command.
.
:PROGRAM_SETCOLOR_STATUS
MONO mode status: %s (video mode %d)
.
:PROGRAM_SETCOLOR_ACTIVE
active
.
:PROGRAM_SETCOLOR_INACTIVE
inactive
.
:PROGRAM_SETCOLOR_UNAVAILABLE
unavailable
.
:PROGRAM_SETCOLOR_MONO_MODE7
MONO mode status => active (video mode 7)
.
:PROGRAM_SETCOLOR_MONO_MODE3
MONO mode status => inactive (video mode 3)
.
:PROGRAM_SETCOLOR_MONO_FAIL
Failed to change MONO mode
.
:PROGRAM_SETCOLOR_MONO_SYNTAX
Must be + or - for MONO: %s
.
:PROGRAM_SETCOLOR_COLOR
Color %d: (%d,%d,%d) or #%02x%02x%02x
.
:PROGRAM_SETCOLOR_INVALID_NUMBER
Invalid color number - %s
.
:PROGRAM_SETCOLOR_INVALID_VALUE
Invalid color value - %s
.
:PROGRAM_SETCOLOR_NOT_SUPPORTED
Changing color scheme is not supported for the current video mode.
.
:PROGRAM_BOOT_UNKNOWN_BOOTHAX
Unknown boothax mode
.
:PROGRAM_BOOT_SPECIFY_FILE
Must specify BIOS image to boot
.
:PROGRAM_BOOT_BIOS_OPEN_ERROR
Unable to open BIOS image
.
:PROGRAM_BIOSTEST_SPECIFY_FILE
Must specify BIOS file to load.
.
:PROGRAM_BIOSTEST_OPEN_ERROR
Can't open a file
.
:PROGRAM_BIOSTEST_TOO_LARGE
BIOS File too large
.
:PROGRAM_DELTREE_HELP
Deletes a directory and all the subdirectories and files in it.
To delete one or more files and directories:
DELTREE [/Y] [drive:]path [[drive:]path[...]]
/Y Suppresses prompting to confirm you want to delete
the subdirectory.
[drive:]path Specifies the name of the directory you want to delete.
Note: Use DELTREE cautiously. Every file and subdirectory within the
specified directory will be deleted.
.
:PROGRAM_TREE_HELP
Graphically displays the directory structure of a drive or path.
TREE [drive:][path] [/F] [/A]
/F Displays the names of the files in each directory.
/A Uses ASCII instead of extended characters.
.
:PROGRAM_TITLE_HELP
Sets the window title for the DOSBox-X window.
TITLE [string]
string Specifies the title for the DOSBox-X window.
.
:PROGRAM_COLOR_HELP
Sets the default console foreground and background colors.
COLOR [attr]
attr Specifies color attribute of console output
Color attributes are specified by TWO hex digits -- the first
corresponds to the background; the second to the foreground.
Each digit can be any of the following values:
0 = Black 8 = Gray
1 = Blue 9 = Light Blue
2 = Green A = Light Green
3 = Aqua B = Light Aqua
4 = Red C = Light Red
5 = Purple D = Light Purple
6 = Yellow E = Light Yellow
7 = White F = Bright White
If no argument is given, this command restores the original color.
The COLOR command sets ERRORLEVEL to 1 if an attempt is made to execute
the COLOR command with a foreground and background color that are the same.
Example: "COLOR fc" produces light red on bright white.
.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
:DOSBOX-X:LANGUAGE:Korean
:DOSBOX-X:CODEPAGE:949
:DOSBOX-X:VERSION:2024.10.01
:DOSBOX-X:VERSION:2025.05.03
:DOSBOX-X:REMARK:DOS/V 에뮬레이션 또는 코드 페이지 949의 한국어 글꼴을 사용하여 한국어 표시 및 인쇄를 직접 지원합니다.
:AUTOEXEC_CONFIGFILE_HELP
이 섹션에 나열된 줄은 시작할 때 실행됩니다.
@ -922,6 +922,10 @@ drive: 는 탑재된 드라이브 중에서 부팅할 드라이브를 지정합
:PROGRAM_BOOT_UNABLE
%c 드라이브에서 부팅할 수 없습니다.
.
:PROGRAM_BOOT_IMAGE_MOUNTED
Floppy image(s) already mounted.
.
:PROGRAM_BOOT_IMAGE_OPEN
이미지 파일을 엽니다: %s
@ -940,6 +944,9 @@ PCjr 카트리지를 찾았지만 기기가 PCjr이 아닙니다.
:PROGRAM_BOOT_CART_NO_CMDS
PCjr 카트리지 특공대를 찾을 수 없습니다.
.
:PROGRAM_BOOT_BOOTING
Booting from drive
.
:PROGRAM_LOADROM_HELP
비디오 BIOS 또는 IBM BASIC용으로 지정된 ROM 이미지 파일을 불러옵니다.
@ -1208,6 +1215,10 @@ IMGMAKE의 몇 가지 사용 예:
플로피를 읽을 수 없습니다.
.
:PROGRAM_IMGMAKE_BADSIZE
Wrong -size or -chs arguments.
.
:PROGRAM_KEYB_INFO
코드 페이지를 %i로 설정했습니다.
@ -1255,6 +1266,37 @@ IMGMAKE의 몇 가지 사용 예:
키보드 파일 %s에 대한 코드 페이지 파일이 없거나 잘못되었습니다.
.
:INT21_6523_YESNO_CHARS
yn
.
:PROGRAM_LABEL_HELP
Creates, changes, or deletes the volume label of a drive.
LABEL [drive:][label]
[drive:]○Specifies the drive letter
[label]○Specifies the volume label
.
:PROGRAM_LABEL_DELETE
Delete the volume label (Y/N)?
.
:PROGRAM_LABEL_TOOLONG
Label is too long (more than 11 characters).
.
:PROGRAM_LABEL_BADCHARS
Label has invalid characters.
.
:PROGRAM_LABEL_VOLUMEIS
Volume in drive %c is %s
.
:PROGRAM_LABEL_NOLABEL
Volume in drive %c has no label
.
:PROGRAM_MODE_USAGE
시스템 장치 설정
@ -1520,6 +1562,12 @@ TIME [[/T] [/H] | time]
:SHELL_CMD_RMDIR_ERROR
경로가 잘못되었거나 디렉토리가 아니거나 디렉토리가 비어 있지 않습니다. - %s
.
:SHELL_CMD_RMDIR_FULLTREE_CONFIRM
Delete directory "%s" and all its subdirectories? (Y/N)?
.
:SHELL_CMD_RMDIR_SINGLE_CONFIRM
Delete file "%s" (Y/N)?
.
:SHELL_CMD_RENAME_ERROR
파일 이름을 변경할 수 없습니다. %s
@ -1536,6 +1584,9 @@ TIME [[/T] [/H] | time]
:SHELL_CMD_DEL_ERROR
삭제할 수 없습니다. - %s
.
:SHELL_CMD_DEL_CONFIRM
Delete %s (Y/N)?
.
:SHELL_CMD_DEL_SURE
디렉토리 안에있는 모든 파일이 삭제됩니다!
@ -1656,6 +1707,10 @@ DOSBox-X가 실제 기계의 하드 디스크 %c에 로 접근을 허용합니
:SHELL_CMD_COPY_ERROR
복사할 수 없습니다 - %s
.
:SHELL_CMD_COPY_NOSELF
File cannot be copied onto itself♪
.
:SHELL_CMD_SUBST_DRIVE_LIST
현재 탑재된 로컬 드라이브:
@ -1688,6 +1743,9 @@ DOS/V V-text는 현재 활성화되어 있습니다.
:SHELL_CMD_VTEXT_OFF
DOS/V V-text는 현재 비활성화되어 있습니다.
.
:SHELL_ALLFILES_CHAR
a
.
:SHELL_STARTUP_TITLE
DOSBox-X에오신것을환영합니다 !
@ -2405,18 +2463,18 @@ DOS 글자 화면 인쇄
:MENU:mapper_resetsize
창 크기 초기화
.
:MENU:mapper_incsize
TTF 글꼴 크기: 확대
.
:MENU:mapper_decsize
TTF 글꼴 크기: 축소
.
:MENU:mapper_dbcssbcs
CJK: DBCS/SBCS 모드를 켜기/끄기
.
:MENU:mapper_autoboxdraw
CJK: 테두리 문자를 자동 감지
.
:MENU:mapper_incsize
TTF 글꼴 크기: 확대
.
:MENU:mapper_decsize
TTF 글꼴 크기: 축소
.
:MENU:mapper_resetcolor
TTF 색 구성표를 다시 설정
.
@ -2588,6 +2646,18 @@ AMD 애슬론 600MHz (~306000 주기)
:MENU:video_ratio_set
비율 설정
.
:MENU:VideoPreventCaptureMenu
Screen capture control
.
:MENU:prevcap_none
Allow
.
:MENU:prevcap_blank
Show as blank
.
:MENU:prevcap_invisible
Make invisible
.
:MENU:VideoScalerMenu
확대
.
@ -2678,6 +2748,9 @@ xBRZ
:MENU:scaler_set_xbrz_bilinear
xBRZ 이선형
.
:MENU:center_window
Center window
.
:MENU:set_titletext
제목 표시줄 텍스트 설정...
.
@ -3161,6 +3234,9 @@ DOSBox-X 정보
:MENU:show_console
수행 기록용 콘솔을 표시
.
:MENU:clear_console
Clear logging console
.
:MENU:disable_logging
수행 기록 출력을 사용 안함
.
@ -3185,6 +3261,9 @@ DOSBox-X 정보
:MENU:debugger_runwatch
디버거 선택사항: 감시를 실행
.
:MENU:video_debug_overlay
Video debug overlay
.
:MENU:HelpCommandMenu
DOS 명령
.
@ -3266,12 +3345,18 @@ MIDI 출력을 저장
:MENU:mapper_caprawopl
FM (OPL) 출력을 저장
.
:MENU:mapper_capnetrf
Record network traffic
.
:MENU:mapper_video
동영상을 AVI로 저장
.
:MENU:mapper_scrshot
스크린샷을 찍기
.
:MENU:mapper_rawscrshot
Take raw screenshot
.
:MENU:mapper_volup
음량: 올림
.
@ -3521,6 +3606,9 @@ IDE 디스크 CD의 상태를 표시
:MENU:pc98_use_uskb
미국 키보드 레이아웃 사용
.
:MAPPER:capnetrf
Record Network traffic
.
:MAPPER:caprawopl
FM/OPL 출력 저장
.
@ -3605,3 +3693,601 @@ CPU: 간단한 코어
:MAPPER:togmenu
차림표 막대 표시를 바꿈
.
:PROGRAM_FLAGSAVE_UNFLAGALL
All files unflagged for saving.
.
:PROGRAM_FLAGSAVE_UNFLAGGED
File %s unflagged for saving.
.
:PROGRAM_FLAGSAVE_FLAGGED
File already flagged for saving - %s
.
:PROGRAM_FLAGSAVE_TOOMANY
Too many files to flag for saving.
.
:PROGRAM_FLAGSAVE_SAVED
File %s flagged for saving
.
:PROGRAM_FLAGSAVE_LIST
Files flagged for saving:
.
:PROGRAM_FLAGSAVE_HLP
Marks or flags files to be saved for the save state feature.
FLAGSAVE [file(s) [/F] [/R]] [/U]
file(s) Specifies one or more files to be flagged for saving.
/F Forces to flag the file(s) even if they are not found.
/R Removes flags from the specified file(s).
/U Removes flags from all flagged files.
Type FLAGSAVE without a parameter to list flagged files.
.
:PROGRAM_INT2FDBG_NOT_SET
INT 2Fh hook has not been set.
.
:PROGRAM_INT2FDBG_ALREADY
INT 2Fh hook has already been set.
.
:PROGRAM_INT2FDBG_HELP
Hooks INT 2Fh for debugging purposes.
INT2FDBG [option]
/I Installs hook
It will hook INT 2Fh at the top of the call chain for debugging information.
Type INT2FDBG without a parameter to show the current hook status.
.
:PROGRAM_SET80x25
Changes to 80x25 text mode.
.
:PROGRAM_SET80x43
Changes to 80x43 text mode.
.
:PROGRAM_SET80x50
Changes to 80x50 text mode.
.
:PROGRAM_SET80x60
Changes to 80x60 text mode.
.
:PROGRAM_SET132x25
Changes to 132x25 text mode.
.
:PROGRAM_SET132x43
Changes to 132x43 text mode.
.
:PROGRAM_SET132x50
Changes to 132x50 text mode.
.
:PROGRAM_SET132x60
Changes to 132x60 text mode.
.
:PROGRAM_RESCAN_HELP
Rescans for changes on mounted drives made on the host by clearing caches.
RESCAN [/A] [/Q]
RESCAN [drive:] [/Q]
[/A] Rescan all drives
[/Q] Enable quiet mode
[drive:] The drive to rescan
Type RESCAN with no parameters to rescan the current drive.
.
:PROGRAM_CFGTOOL_HELP
Starts DOSBox-X's graphical configuration tool.
CFGTOOL
Note: You can also use CONFIG command for command-line configurations.
.
:PROGRAM_IMGSWAP_HELP
Swaps floppy, hard drive and optical disc images.
←[32;1mIMGSWAP←[0m ←[37;1mdrive←[0m ←[36;1m[position]←[0m
←[37;1mdrive←[0m Drive letter to swap the image.
←[36;1m[position]←[0m Disk position to swap to.
.
:PROGRAM_INTRO_HELP
A full-screen introduction to DOSBox-X.
INTRO [/RUN] [CDROM|MOUNT|USAGE|WELCOME]
.
:PROGRAM_IMGMOUNT_NOT_ASSIGNED
BIOS disk index does not have an image assigned.
.
:PROGRAM_IMGMOUNT_INVALID_NUMBER
Invalid mount number.
.
:PROGRAM_IMGMOUNT_INVALID_FSTYPE
Invalid fstype.
.
:PROGRAM_IMGMOUNT_INVALID_SIZE
Invalid size parameter.
.
:PROGRAM_IMGMOUNT_NOT_MOUNTED_NUMBER
Drive number %d is not mounted.
.
:PROGRAM_IMGMOUNT_UMOUNT_USAGE
Incorrect IMGMOUNT unmount usage.
.
:PROGRAM_IMGMOUNT_INVALID_LETTER
Invalid drive letter.
.
:PROGRAM_IMGMOUNT_CHOOSE_LETTER
Partitions cannot be mounted in conflict with the standard INT 13h hard disk
allotment. Choose a different drive letter to mount to.
.
:PROGRAM_ELTORITO_LETTER
El Torito emulation requires a proper CD-ROM drive letter.
.
:PROGRAM_ELTORITO_DRIVE_EXISTS
El Torito CD-ROM drive specified already exists as a non-CD-ROM device
.
:PROGRAM_ELTORITO_NOT_CDDRIVE
El Torito CD-ROM drive specified is not actually a CD-ROM drive.
.
:PROGRAM_ELTORITO_REQUIRE_FLOPPY
El Torito emulation must be used with -t floppy at this time.
.
:PROGRAM_ELTORITO_NO_BOOT_RECORD
El Torito CD-ROM boot record not found.
.
:PROGRAM_ELTORITO_ENTRY_UNREADABLE
El Torito entries unreadable.
.
:PROGRAM_ELTORITO_NO_BOOTABLE_FLOPPY
El Torito bootable floppy not found.
.
:PROGRAM_ELTORITO_BOOTABLE_SECTION
Unable to locate bootable section
.
:PROGRAM_ELTORITO_BOOTSECTOR
El Torito boot sector unreadable
.
:PROGRAM_IMGMAKE_ALIGNMENT
Invalid alignment
.
:PROGRAM_IMGMAKE_PARTOFS
Invalid -partofs
.
:PROGRAM_IMGMAKE_FAT
Invalid -fat option. Must be 12, 16, or 32
.
:PROGRAM_IMGMAKE_FATCOPIES
Invalid -fatcopies option
.
:PROGRAM_IMGMAKE_SPC
Invalid -spc option, out of range
.
:PROGRAM_IMGMAKE_SPC2
Invalid -spc option, must be a power of 2
.
:PROGRAM_IMGMAKE_ROOTDIR
Invalid -rootdir option
.
PROGRAM_IMGMAKE_BOOTSECT
Invalid bootsector position
.
PROGRAM_IMGMAKE_VOLUME_ALIGN
Sanity check failed: Volume size not aligned
.
:PROGRAM_IMGMAKE_FAT_ALIGN
Sanity check failed: FAT tables not aligned
.
:PROGRAM_IMGMAKE_SECTPERFAT
Error: Generated filesystem has more than 256 sectors per FAT and is not FAT32
.
:PROGRAM_IMGMAKE_VOLSIZE
Sanity check failed: Volume size not aligned
.
:PROGRAM_IMGMAKE_CLUSTERS
Error: Generated filesystem has too few clusters given the parameters
.
:PROGRAM_IMGMAKE_CLUSTERCOUNT
Warning: Cluster count is too high given the volume size.
Reporting a smaller sector count.
.
:PROGRAM_IMGMAKE_CLUSTER_ALIGN
Sanity check failed: First cluster not aligned
.
:PROGRAM_IMGMAKE_CLUSTER_SIZE
WARNING: Cluster sizes >= 64KB are not compatible with MS-DOS and SCANDISK
.
:PROGRAM_BOOT_UNSUPPORTED
Unsupported boot mode
.
:PROGRAM_MOUNT_OVERLAY_REPLACE
Existing overlay has been replaced with new overlay.
.
:PROGRAM_LOADFIX_EMS_FREE
EMS handle %u: unable to free
.
:PROGRAM_LOADFIX_XMS_FREE
XMS handle %u: unable to free
.
:PROGRAM_LOADFIX_EMS_ALLOC
EMS block allocated (%uKB)
.
:PROGRAM_LOADFIX_EMS_ALLOCERROR
Unable to allocate EMS block
.
PROGRAM_LOADFIX_NOEMS
EMS not active
.
:PROGRAM_LOADFIX_XMS_ALLOC
XMS block allocated (%uKB)
.
:PROGRAM_LOADFIX_XMS_ALLOCERROR
Unable to allocate XMS block
.
:PROGRAM_LOADFIX_NOXMS
XMS not active
.
:PROGRAM_LOADFIX_NOALLOC
Lowest MCB is above 64KB, nothing allocated
.
:PROGRAM_BOOT_SWAP_ALREADY
Multiple disk images specified and another drive is already connected to the swap list
.
:PROGRAM_BOOT_NOT_SPECIFIED
No images specified
.
:PROGRAM_BOOT_IS_PC88
The D88 image appears to target PC-88 and cannot be booted.
.
:PROGRAM_BOOT_BPS_TOOLARGE
Bytes/sector too large
.
:PROGRAM_BOOT_DRIVE_READERROR
Error reading drive
.
:PROGRAM_START_HELP_WIN
Starts a separate window to run a specified program or command.
START [+|-|_] command [arguments]
[+|-|_]: To maximize/minimize/hide the program.
The options /MAX, /MIN, /HID are also accepted.
command: The command, program or file to start.
arguments: Arguments to pass to the application.
START opens the Windows command prompt automatically to run these commands
and wait for a key press before exiting (specified by "startincon" option):
%s
Note: The path specified in this command is the path on the host system.
.
:PROGRAM_START_HELP
Starts a separate window to run a specified program or command.
START /OPEN file
START command [arguments]
/OPEN: To open a file or URL with the associated program.
file: The file or URL to open with the associated program.
command: The command or program to start or run.
arguments: Arguments to pass to the application.
Note: The path specified in this command is the path on the host system.
.
:PROGRAM_START_COMPLETED
The command execution is completed.
.
:PROGRAM_START_COMMAND
Starting %s...
.
:PROGRAM_START_CTRLC
(Press Ctrl+C to exit immediately)
.
:PROGRAM_START_HOST_ERROR
Error: START cannot launch application to run on your current host system.
.
:PROGRAM_START_LAUNCH_ERROR
Error: START could not launch application.
.
:PROGRAM_IMGMOUNT_ELTORITO_NO_FILE
Do not specify files when mounting floppy drives from El Torito bootable CDs
.
:PROGRAM_IMGMOUNT_RAMDRIVE_NO_FILE
Do not specify files when mounting RAM drives
.
:PROGRAM_IMGMOUNT_INVALID_SECTORSIZE
Sector size must be larger than 512 bytes and evenly divide the image cluster size of %lu bytes.
.
:PROGRAM_IMGMOUNT_OPEN_ERROR
Unable to open '%s'
.
:PROGRAM_IMGMOUNT_QCOW2_INVALID
qcow2 image '%s' is not supported
.
:PROGRAM_IMGMOUNT_GEOMETRY_ERROR
Unable to detect geometry
.
:PROGRAM_IMGMOUNT_DOS_VERSION
Mounting this image file requires a reported DOS version of %u.%u or higher.
%s
.
:PROGRAM_IMGMOUNT_INVALID_FLOPPYSIZE
Floppy size not recognized
.
:PROGRAM_IMGMOUNT_MULTIPLE_USED
Multiple images given and another drive already uses multiple images
.
:PROGRAM_IMGMOUNT_MULTIPLE_NOTSUPPORTED
Multiple disk images not supported for that drive
.
:PROGRAM_IMGMOUNT_HD_FDPOSITION
Cannot mount hard drive in floppy position.
.
:PROGRAM_IMGMOUNT_FD_HDPOSITION
Cannot mount floppy in hard drive position.
.
:PROGRAM_ELTORITO_ISOMOUNT
El Torito bootable CD: -fs iso mounting not supported
.
:PROGRAM_MODE_STATUS
Status for device CON:
----------------------
Columns=%d
Lines=%d
.
:PROGRAM_MODE_NOTSUPPORTED
Code page operation not supported on this device
.
:PROGRAM_MODE_RATE_DELAY
Rate and delay must be specified together
.
:PROGRAM_UTF8_HELP
Converts UTF-8 text to view in the current code page.
UTF8 < [drive:][path]filename
command-name | UTF8
.
:PROGRAM_UTF8_NO_TEXT
No input text found.
.
:PROGRAM_UTF8_INVALIDCP
Invalid code page for text conversion.
.
:PROGRAM_UTF8_NOT_UTF8
The input text is UTF-16.
.
:PROGRAM_UTF8_CONVERSION_ERROR
An error occurred during text conversion.
.
:PROGRAM_UTF16_HELP
Converts UTF-16 text to view in the current code page.
UTF16 [/BE|/LE] < [drive:][path]filename
command-name | UTF16 [/BE|/LE]
/BE Use UTF-16 Big Endian
/LE Use UTF-16 Little Endian
.
:PROGRAM_VTEXT_HELP
Changes V-text mode for the DOS/V emulation.
VTEXT [mode]
[mode] can be 0, 1, 2, for no V-text, V-text 1, and V-text 2 respectively.
Type VTEXT without a parameter to show the current V-text mode status.
.
:PROGRAM_NMITEST_HELP
Generates a non-maskable interrupt (NMI).
NMITEST
Note: This is a debugging tool to test if the interrupt handler works properly.
.
:PROGRAM_NMITEST_GENERATE_NMI
Generating a non-maskable interrupt (NMI)...
.
:PROGRAM_CAPMOUSE_HELP
Captures or releases the mouse inside DOSBox-X.
CAPMOUSE [/C|/R]
/C Capture the mouse
/R Release the mouse
.
:PROGRAM_CAPMOUSE_MOUSE
Mouse
.
:PROGRAM_CAPMOUSE_CURRENTLY
is currently
.
:PROGRAM_CAPMOUSE_CAPTURED
captured
.
:PROGRAM_CAPMOUSE_RELEASED
released
.
:PROGRAM_AUTOTYPE_HELP
Performs scripted keyboard entry into a running DOS program.
AUTOTYPE [-list] [-w WAIT] [-p PACE] button_1 [button_2 [...]]
Where:
-list: prints all available button names.
-w WAIT: seconds before typing begins. Two second default; max of 30.
-p PACE: seconds between each keystroke. Half-second default; max of 10.
The sequence is comprised of one or more space-separated buttons.
Autotyping begins after WAIT seconds, and each button is entered
every PACE seconds. The , character inserts an extra PACE delay.
Some examples:
←[32;1mAUTOTYPE -w 1 -p 0.3 up enter , right enter←[0m
←[32;1mAUTOTYPE -p 0.2 f1 kp_8 , , enter←[0m
←[32;1mAUTOTYPE -w 1.3 esc enter , p l a y e r enter←[0m
.
:PROGRAM_AUTOTYPE_NO_BINDINGS
AUTOTYPE: The mapper has no key bindings
.
:PROGRAM_AUTOTYPE_CLAMP_VALUE
AUTOTYPE: bounding %s value of %.2f to %.2f
.
:PROGRAM_AUTOTYPE_INVALID_VALUE
AUTOTYPE: %s value '%s' is not a valid floating point number
.
:PROGRAM_ADDKEY_HELP
Generates artificial keypresses.
ADDKEY [pmsec] [key]
For example, the command below types "dir" followed by ENTER after 1 second:
ADDKEY p1000 d i r enter
You could also try AUTOTYPE command instead of this command to perform
scripted keyboard entry into a running DOS program.
.
:PROGRAM_SETCOLOR_HELP
Views or changes the text-mode color scheme settings.
SETCOLOR [color# [value]]
For example:
←[32;1mSETCOLOR 0 (50,50,50)←[0m
Change Color #0 to the specified color value
←[32;1mSETCOLOR 7 -←[0m
Return Color #7 to the default color value
←[32;1mSETCOLOR 3 +←[0m
Return Color #3 to the preset color value
←[32;1mSETCOLOR MONO←[0m
Display current MONO mode status
To change the current background and foreground colors, use COLOR command.
.
:PROGRAM_SETCOLOR_STATUS
MONO mode status: %s (video mode %d)
.
:PROGRAM_SETCOLOR_ACTIVE
active
.
:PROGRAM_SETCOLOR_INACTIVE
inactive
.
:PROGRAM_SETCOLOR_UNAVAILABLE
unavailable
.
:PROGRAM_SETCOLOR_MONO_MODE7
MONO mode status => active (video mode 7)
.
:PROGRAM_SETCOLOR_MONO_MODE3
MONO mode status => inactive (video mode 3)
.
:PROGRAM_SETCOLOR_MONO_FAIL
Failed to change MONO mode
.
:PROGRAM_SETCOLOR_MONO_SYNTAX
Must be + or - for MONO: %s
.
:PROGRAM_SETCOLOR_COLOR
Color %d: (%d,%d,%d) or #%02x%02x%02x
.
:PROGRAM_SETCOLOR_INVALID_NUMBER
Invalid color number - %s
.
:PROGRAM_SETCOLOR_INVALID_VALUE
Invalid color value - %s
.
:PROGRAM_SETCOLOR_NOT_SUPPORTED
Changing color scheme is not supported for the current video mode.
.
:PROGRAM_BOOT_UNKNOWN_BOOTHAX
Unknown boothax mode
.
:PROGRAM_BOOT_SPECIFY_FILE
Must specify BIOS image to boot
.
:PROGRAM_BOOT_BIOS_OPEN_ERROR
Unable to open BIOS image
.
:PROGRAM_BIOSTEST_SPECIFY_FILE
Must specify BIOS file to load.
.
:PROGRAM_BIOSTEST_OPEN_ERROR
Can't open a file
.
:PROGRAM_BIOSTEST_TOO_LARGE
BIOS File too large
.
:PROGRAM_DELTREE_HELP
Deletes a directory and all the subdirectories and files in it.
To delete one or more files and directories:
DELTREE [/Y] [drive:]path [[drive:]path[...]]
/Y Suppresses prompting to confirm you want to delete
the subdirectory.
[drive:]path Specifies the name of the directory you want to delete.
Note: Use DELTREE cautiously. Every file and subdirectory within the
specified directory will be deleted.
.
:PROGRAM_TREE_HELP
Graphically displays the directory structure of a drive or path.
TREE [drive:][path] [/F] [/A]
/F Displays the names of the files in each directory.
/A Uses ASCII instead of extended characters.
.
:PROGRAM_TITLE_HELP
Sets the window title for the DOSBox-X window.
TITLE [string]
string Specifies the title for the DOSBox-X window.
.
:PROGRAM_COLOR_HELP
Sets the default console foreground and background colors.
COLOR [attr]
attr Specifies color attribute of console output
Color attributes are specified by TWO hex digits -- the first
corresponds to the background; the second to the foreground.
Each digit can be any of the following values:
0 = Black 8 = Gray
1 = Blue 9 = Light Blue
2 = Green A = Light Green
3 = Aqua B = Light Aqua
4 = Red C = Light Red
5 = Purple D = Light Purple
6 = Yellow E = Light Yellow
7 = White F = Bright White
If no argument is given, this command restores the original color.
The COLOR command sets ERRORLEVEL to 1 if an attempt is made to execute
the COLOR command with a foreground and background color that are the same.
Example: "COLOR fc" produces light red on bright white.
.

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
:DOSBOX-X:LANGUAGE:Portuguese (Brazil)
:DOSBOX-X:CODEPAGE:860
:DOSBOX-X:VERSION:2024.10.01
:DOSBOX-X:VERSION:2025.05.03
:DOSBOX-X:REMARK:
:AUTOEXEC_CONFIGFILE_HELP
As linhas nesta seção serão sempre executadas ao se iniciar o DOSBox-X.
@ -923,6 +923,10 @@ Exemplos:
:PROGRAM_BOOT_UNABLE
Não foi possível inicializar a partir da unidade %c.
.
:PROGRAM_BOOT_IMAGE_MOUNTED
Floppy image(s) already mounted.
.
:PROGRAM_BOOT_IMAGE_OPEN
Abrindo arquivo imagem: %s
@ -941,6 +945,9 @@ Comandos disponíveis no cartucho PCjr: %s
:PROGRAM_BOOT_CART_NO_CMDS
Os comandos do cartucho PCjr não foram encontrados
.
:PROGRAM_BOOT_BOOTING
Booting from drive
.
:PROGRAM_LOADROM_HELP
Carrega o arquivo de imagem ROM especificado para BIOS de vídeo ou IBM BASIC.
@ -1206,6 +1213,10 @@ Criando arquivo de imagem "%s" com %u cilindros, %u cabeças e %u setores
Não foi possível ler o disquete.
.
:PROGRAM_IMGMAKE_BADSIZE
Wrong -size or -chs arguments.
.
:PROGRAM_KEYB_INFO
Página de código %i carregada
@ -1255,6 +1266,37 @@ Não existe esquema em %s para a página de código %i
Nenhum arquivo de página de código ou é inválido para o esquema %s
.
:INT21_6523_YESNO_CHARS
yn
.
:PROGRAM_LABEL_HELP
Creates, changes, or deletes the volume label of a drive.
LABEL [drive:][label]
[drive:]○Specifies the drive letter
[label]○Specifies the volume label
.
:PROGRAM_LABEL_DELETE
Delete the volume label (Y/N)?
.
:PROGRAM_LABEL_TOOLONG
Label is too long (more than 11 characters).
.
:PROGRAM_LABEL_BADCHARS
Label has invalid characters.
.
:PROGRAM_LABEL_VOLUMEIS
Volume in drive %c is %s
.
:PROGRAM_LABEL_NOLABEL
Volume in drive %c has no label
.
:PROGRAM_MODE_USAGE
Configura um dispositivo do sistema.
@ -1520,6 +1562,12 @@ Não é possível criar a pasta - %s
:SHELL_CMD_RMDIR_ERROR
Caminho inválida, não é uma pasta ou não está vazia - %s
.
:SHELL_CMD_RMDIR_FULLTREE_CONFIRM
Delete directory "%s" and all its subdirectories? (Y/N)?
.
:SHELL_CMD_RMDIR_SINGLE_CONFIRM
Delete file "%s" (Y/N)?
.
:SHELL_CMD_RENAME_ERROR
Não é possível renomear - %
@ -1536,6 +1584,9 @@ Não é possível definir atributos: %s
:SHELL_CMD_DEL_ERROR
Não é possível excluir - %s
.
:SHELL_CMD_DEL_CONFIRM
Delete %s (Y/N)?
.
:SHELL_CMD_DEL_SURE
Todos os arquivos da pasta serão excluídos!
@ -1656,6 +1707,10 @@ Espaço em disco insuficiente - %s
:SHELL_CMD_COPY_ERROR
Erro ao copiar: %s
.
:SHELL_CMD_COPY_NOSELF
File cannot be copied onto itself♪
.
:SHELL_CMD_SUBST_DRIVE_LIST
As unidades locais atualmente montadas são:
@ -1688,6 +1743,9 @@ DOS/V V-text está atualmente habilitado.
:SHELL_CMD_VTEXT_OFF
DOS/V V-text está atualmente desativado.
.
:SHELL_ALLFILES_CHAR
a
.
:SHELL_STARTUP_TITLE
Bem-vindo ao DOSBox-X!
@ -2610,6 +2668,18 @@ Proporção original
:MENU:video_ratio_set
Definir proporção
.
:MENU:VideoPreventCaptureMenu
Screen capture control
.
:MENU:prevcap_none
Allow
.
:MENU:prevcap_blank
Show as blank
.
:MENU:prevcap_invisible
Make invisible
.
:MENU:VideoScalerMenu
Redimensionador
.
@ -2700,6 +2770,9 @@ xBRZ
:MENU:scaler_set_xbrz_bilinear
xBRZ Bilinear
.
:MENU:center_window
Center window
.
:MENU:set_titletext
Definir texto da barra de título...
.
@ -3183,6 +3256,9 @@ Sobre o DOSBox-X
:MENU:show_console
Mostrar console de registro
.
:MENU:clear_console
Clear logging console
.
:MENU:disable_logging
Desativar saída de registro
.
@ -3207,6 +3283,9 @@ Opção do depurador: Executar normalmente
:MENU:debugger_runwatch
Opção do depurador: Executar observador
.
:MENU:video_debug_overlay
Video debug overlay
.
:MENU:HelpCommandMenu
Comandos DOS
.
@ -3288,12 +3367,18 @@ Gravar saída MIDI
:MENU:mapper_caprawopl
Gravar saída FM (OPL)
.
:MENU:mapper_capnetrf
Record network traffic
.
:MENU:mapper_video
Gravar vídeo em AVI
.
:MENU:mapper_scrshot
Capturar tela
.
:MENU:mapper_rawscrshot
Take raw screenshot
.
:MENU:mapper_volup
Aumentar volume
.
@ -3543,6 +3628,9 @@ Mostrar estado de disco IDE ou CD
:MENU:pc98_use_uskb
Usar esquema de teclado americano
.
:MAPPER:capnetrf
Record Network traffic
.
:MAPPER:caprawopl
Gravar saída FM/OPL
.
@ -3600,6 +3688,9 @@ Lançar prog. rápido
:MAPPER:reboot
Reinicia sistema DOS
.
:MAPPER:recmtwave
Record to multi-track AVI
.
:MAPPER:rescanall
Reverificar unidades
.
@ -3618,3 +3709,601 @@ CPU: núcleo simples
:MAPPER:togmenu
Alternar barra de menu
.
:PROGRAM_FLAGSAVE_UNFLAGALL
All files unflagged for saving.
.
:PROGRAM_FLAGSAVE_UNFLAGGED
File %s unflagged for saving.
.
:PROGRAM_FLAGSAVE_FLAGGED
File already flagged for saving - %s
.
:PROGRAM_FLAGSAVE_TOOMANY
Too many files to flag for saving.
.
:PROGRAM_FLAGSAVE_SAVED
File %s flagged for saving
.
:PROGRAM_FLAGSAVE_LIST
Files flagged for saving:
.
:PROGRAM_FLAGSAVE_HLP
Marks or flags files to be saved for the save state feature.
FLAGSAVE [file(s) [/F] [/R]] [/U]
file(s) Specifies one or more files to be flagged for saving.
/F Forces to flag the file(s) even if they are not found.
/R Removes flags from the specified file(s).
/U Removes flags from all flagged files.
Type FLAGSAVE without a parameter to list flagged files.
.
:PROGRAM_INT2FDBG_NOT_SET
INT 2Fh hook has not been set.
.
:PROGRAM_INT2FDBG_ALREADY
INT 2Fh hook has already been set.
.
:PROGRAM_INT2FDBG_HELP
Hooks INT 2Fh for debugging purposes.
INT2FDBG [option]
/I Installs hook
It will hook INT 2Fh at the top of the call chain for debugging information.
Type INT2FDBG without a parameter to show the current hook status.
.
:PROGRAM_SET80x25
Changes to 80x25 text mode.
.
:PROGRAM_SET80x43
Changes to 80x43 text mode.
.
:PROGRAM_SET80x50
Changes to 80x50 text mode.
.
:PROGRAM_SET80x60
Changes to 80x60 text mode.
.
:PROGRAM_SET132x25
Changes to 132x25 text mode.
.
:PROGRAM_SET132x43
Changes to 132x43 text mode.
.
:PROGRAM_SET132x50
Changes to 132x50 text mode.
.
:PROGRAM_SET132x60
Changes to 132x60 text mode.
.
:PROGRAM_RESCAN_HELP
Rescans for changes on mounted drives made on the host by clearing caches.
RESCAN [/A] [/Q]
RESCAN [drive:] [/Q]
[/A] Rescan all drives
[/Q] Enable quiet mode
[drive:] The drive to rescan
Type RESCAN with no parameters to rescan the current drive.
.
:PROGRAM_CFGTOOL_HELP
Starts DOSBox-X's graphical configuration tool.
CFGTOOL
Note: You can also use CONFIG command for command-line configurations.
.
:PROGRAM_IMGSWAP_HELP
Swaps floppy, hard drive and optical disc images.
←[32;1mIMGSWAP←[0m ←[37;1mdrive←[0m ←[36;1m[position]←[0m
←[37;1mdrive←[0m Drive letter to swap the image.
←[36;1m[position]←[0m Disk position to swap to.
.
:PROGRAM_INTRO_HELP
A full-screen introduction to DOSBox-X.
INTRO [/RUN] [CDROM|MOUNT|USAGE|WELCOME]
.
:PROGRAM_IMGMOUNT_NOT_ASSIGNED
BIOS disk index does not have an image assigned.
.
:PROGRAM_IMGMOUNT_INVALID_NUMBER
Invalid mount number.
.
:PROGRAM_IMGMOUNT_INVALID_FSTYPE
Invalid fstype.
.
:PROGRAM_IMGMOUNT_INVALID_SIZE
Invalid size parameter.
.
:PROGRAM_IMGMOUNT_NOT_MOUNTED_NUMBER
Drive number %d is not mounted.
.
:PROGRAM_IMGMOUNT_UMOUNT_USAGE
Incorrect IMGMOUNT unmount usage.
.
:PROGRAM_IMGMOUNT_INVALID_LETTER
Invalid drive letter.
.
:PROGRAM_IMGMOUNT_CHOOSE_LETTER
Partitions cannot be mounted in conflict with the standard INT 13h hard disk
allotment. Choose a different drive letter to mount to.
.
:PROGRAM_ELTORITO_LETTER
El Torito emulation requires a proper CD-ROM drive letter.
.
:PROGRAM_ELTORITO_DRIVE_EXISTS
El Torito CD-ROM drive specified already exists as a non-CD-ROM device
.
:PROGRAM_ELTORITO_NOT_CDDRIVE
El Torito CD-ROM drive specified is not actually a CD-ROM drive.
.
:PROGRAM_ELTORITO_REQUIRE_FLOPPY
El Torito emulation must be used with -t floppy at this time.
.
:PROGRAM_ELTORITO_NO_BOOT_RECORD
El Torito CD-ROM boot record not found.
.
:PROGRAM_ELTORITO_ENTRY_UNREADABLE
El Torito entries unreadable.
.
:PROGRAM_ELTORITO_NO_BOOTABLE_FLOPPY
El Torito bootable floppy not found.
.
:PROGRAM_ELTORITO_BOOTABLE_SECTION
Unable to locate bootable section
.
:PROGRAM_ELTORITO_BOOTSECTOR
El Torito boot sector unreadable
.
:PROGRAM_IMGMAKE_ALIGNMENT
Invalid alignment
.
:PROGRAM_IMGMAKE_PARTOFS
Invalid -partofs
.
:PROGRAM_IMGMAKE_FAT
Invalid -fat option. Must be 12, 16, or 32
.
:PROGRAM_IMGMAKE_FATCOPIES
Invalid -fatcopies option
.
:PROGRAM_IMGMAKE_SPC
Invalid -spc option, out of range
.
:PROGRAM_IMGMAKE_SPC2
Invalid -spc option, must be a power of 2
.
:PROGRAM_IMGMAKE_ROOTDIR
Invalid -rootdir option
.
PROGRAM_IMGMAKE_BOOTSECT
Invalid bootsector position
.
PROGRAM_IMGMAKE_VOLUME_ALIGN
Sanity check failed: Volume size not aligned
.
:PROGRAM_IMGMAKE_FAT_ALIGN
Sanity check failed: FAT tables not aligned
.
:PROGRAM_IMGMAKE_SECTPERFAT
Error: Generated filesystem has more than 256 sectors per FAT and is not FAT32
.
:PROGRAM_IMGMAKE_VOLSIZE
Sanity check failed: Volume size not aligned
.
:PROGRAM_IMGMAKE_CLUSTERS
Error: Generated filesystem has too few clusters given the parameters
.
:PROGRAM_IMGMAKE_CLUSTERCOUNT
Warning: Cluster count is too high given the volume size.
Reporting a smaller sector count.
.
:PROGRAM_IMGMAKE_CLUSTER_ALIGN
Sanity check failed: First cluster not aligned
.
:PROGRAM_IMGMAKE_CLUSTER_SIZE
WARNING: Cluster sizes >= 64KB are not compatible with MS-DOS and SCANDISK
.
:PROGRAM_BOOT_UNSUPPORTED
Unsupported boot mode
.
:PROGRAM_MOUNT_OVERLAY_REPLACE
Existing overlay has been replaced with new overlay.
.
:PROGRAM_LOADFIX_EMS_FREE
EMS handle %u: unable to free
.
:PROGRAM_LOADFIX_XMS_FREE
XMS handle %u: unable to free
.
:PROGRAM_LOADFIX_EMS_ALLOC
EMS block allocated (%uKB)
.
:PROGRAM_LOADFIX_EMS_ALLOCERROR
Unable to allocate EMS block
.
PROGRAM_LOADFIX_NOEMS
EMS not active
.
:PROGRAM_LOADFIX_XMS_ALLOC
XMS block allocated (%uKB)
.
:PROGRAM_LOADFIX_XMS_ALLOCERROR
Unable to allocate XMS block
.
:PROGRAM_LOADFIX_NOXMS
XMS not active
.
:PROGRAM_LOADFIX_NOALLOC
Lowest MCB is above 64KB, nothing allocated
.
:PROGRAM_BOOT_SWAP_ALREADY
Multiple disk images specified and another drive is already connected to the swap list
.
:PROGRAM_BOOT_NOT_SPECIFIED
No images specified
.
:PROGRAM_BOOT_IS_PC88
The D88 image appears to target PC-88 and cannot be booted.
.
:PROGRAM_BOOT_BPS_TOOLARGE
Bytes/sector too large
.
:PROGRAM_BOOT_DRIVE_READERROR
Error reading drive
.
:PROGRAM_START_HELP_WIN
Starts a separate window to run a specified program or command.
START [+|-|_] command [arguments]
[+|-|_]: To maximize/minimize/hide the program.
The options /MAX, /MIN, /HID are also accepted.
command: The command, program or file to start.
arguments: Arguments to pass to the application.
START opens the Windows command prompt automatically to run these commands
and wait for a key press before exiting (specified by "startincon" option):
%s
Note: The path specified in this command is the path on the host system.
.
:PROGRAM_START_HELP
Starts a separate window to run a specified program or command.
START /OPEN file
START command [arguments]
/OPEN: To open a file or URL with the associated program.
file: The file or URL to open with the associated program.
command: The command or program to start or run.
arguments: Arguments to pass to the application.
Note: The path specified in this command is the path on the host system.
.
:PROGRAM_START_COMPLETED
The command execution is completed.
.
:PROGRAM_START_COMMAND
Starting %s...
.
:PROGRAM_START_CTRLC
(Press Ctrl+C to exit immediately)
.
:PROGRAM_START_HOST_ERROR
Error: START cannot launch application to run on your current host system.
.
:PROGRAM_START_LAUNCH_ERROR
Error: START could not launch application.
.
:PROGRAM_IMGMOUNT_ELTORITO_NO_FILE
Do not specify files when mounting floppy drives from El Torito bootable CDs
.
:PROGRAM_IMGMOUNT_RAMDRIVE_NO_FILE
Do not specify files when mounting RAM drives
.
:PROGRAM_IMGMOUNT_INVALID_SECTORSIZE
Sector size must be larger than 512 bytes and evenly divide the image cluster size of %lu bytes.
.
:PROGRAM_IMGMOUNT_OPEN_ERROR
Unable to open '%s'
.
:PROGRAM_IMGMOUNT_QCOW2_INVALID
qcow2 image '%s' is not supported
.
:PROGRAM_IMGMOUNT_GEOMETRY_ERROR
Unable to detect geometry
.
:PROGRAM_IMGMOUNT_DOS_VERSION
Mounting this image file requires a reported DOS version of %u.%u or higher.
%s
.
:PROGRAM_IMGMOUNT_INVALID_FLOPPYSIZE
Floppy size not recognized
.
:PROGRAM_IMGMOUNT_MULTIPLE_USED
Multiple images given and another drive already uses multiple images
.
:PROGRAM_IMGMOUNT_MULTIPLE_NOTSUPPORTED
Multiple disk images not supported for that drive
.
:PROGRAM_IMGMOUNT_HD_FDPOSITION
Cannot mount hard drive in floppy position.
.
:PROGRAM_IMGMOUNT_FD_HDPOSITION
Cannot mount floppy in hard drive position.
.
:PROGRAM_ELTORITO_ISOMOUNT
El Torito bootable CD: -fs iso mounting not supported
.
:PROGRAM_MODE_STATUS
Status for device CON:
----------------------
Columns=%d
Lines=%d
.
:PROGRAM_MODE_NOTSUPPORTED
Code page operation not supported on this device
.
:PROGRAM_MODE_RATE_DELAY
Rate and delay must be specified together
.
:PROGRAM_UTF8_HELP
Converts UTF-8 text to view in the current code page.
UTF8 < [drive:][path]filename
command-name | UTF8
.
:PROGRAM_UTF8_NO_TEXT
No input text found.
.
:PROGRAM_UTF8_INVALIDCP
Invalid code page for text conversion.
.
:PROGRAM_UTF8_NOT_UTF8
The input text is UTF-16.
.
:PROGRAM_UTF8_CONVERSION_ERROR
An error occurred during text conversion.
.
:PROGRAM_UTF16_HELP
Converts UTF-16 text to view in the current code page.
UTF16 [/BE|/LE] < [drive:][path]filename
command-name | UTF16 [/BE|/LE]
/BE Use UTF-16 Big Endian
/LE Use UTF-16 Little Endian
.
:PROGRAM_VTEXT_HELP
Changes V-text mode for the DOS/V emulation.
VTEXT [mode]
[mode] can be 0, 1, 2, for no V-text, V-text 1, and V-text 2 respectively.
Type VTEXT without a parameter to show the current V-text mode status.
.
:PROGRAM_NMITEST_HELP
Generates a non-maskable interrupt (NMI).
NMITEST
Note: This is a debugging tool to test if the interrupt handler works properly.
.
:PROGRAM_NMITEST_GENERATE_NMI
Generating a non-maskable interrupt (NMI)...
.
:PROGRAM_CAPMOUSE_HELP
Captures or releases the mouse inside DOSBox-X.
CAPMOUSE [/C|/R]
/C Capture the mouse
/R Release the mouse
.
:PROGRAM_CAPMOUSE_MOUSE
Mouse
.
:PROGRAM_CAPMOUSE_CURRENTLY
is currently
.
:PROGRAM_CAPMOUSE_CAPTURED
captured
.
:PROGRAM_CAPMOUSE_RELEASED
released
.
:PROGRAM_AUTOTYPE_HELP
Performs scripted keyboard entry into a running DOS program.
AUTOTYPE [-list] [-w WAIT] [-p PACE] button_1 [button_2 [...]]
Where:
-list: prints all available button names.
-w WAIT: seconds before typing begins. Two second default; max of 30.
-p PACE: seconds between each keystroke. Half-second default; max of 10.
The sequence is comprised of one or more space-separated buttons.
Autotyping begins after WAIT seconds, and each button is entered
every PACE seconds. The , character inserts an extra PACE delay.
Some examples:
←[32;1mAUTOTYPE -w 1 -p 0.3 up enter , right enter←[0m
←[32;1mAUTOTYPE -p 0.2 f1 kp_8 , , enter←[0m
←[32;1mAUTOTYPE -w 1.3 esc enter , p l a y e r enter←[0m
.
:PROGRAM_AUTOTYPE_NO_BINDINGS
AUTOTYPE: The mapper has no key bindings
.
:PROGRAM_AUTOTYPE_CLAMP_VALUE
AUTOTYPE: bounding %s value of %.2f to %.2f
.
:PROGRAM_AUTOTYPE_INVALID_VALUE
AUTOTYPE: %s value '%s' is not a valid floating point number
.
:PROGRAM_ADDKEY_HELP
Generates artificial keypresses.
ADDKEY [pmsec] [key]
For example, the command below types "dir" followed by ENTER after 1 second:
ADDKEY p1000 d i r enter
You could also try AUTOTYPE command instead of this command to perform
scripted keyboard entry into a running DOS program.
.
:PROGRAM_SETCOLOR_HELP
Views or changes the text-mode color scheme settings.
SETCOLOR [color# [value]]
For example:
←[32;1mSETCOLOR 0 (50,50,50)←[0m
Change Color #0 to the specified color value
←[32;1mSETCOLOR 7 -←[0m
Return Color #7 to the default color value
←[32;1mSETCOLOR 3 +←[0m
Return Color #3 to the preset color value
←[32;1mSETCOLOR MONO←[0m
Display current MONO mode status
To change the current background and foreground colors, use COLOR command.
.
:PROGRAM_SETCOLOR_STATUS
MONO mode status: %s (video mode %d)
.
:PROGRAM_SETCOLOR_ACTIVE
active
.
:PROGRAM_SETCOLOR_INACTIVE
inactive
.
:PROGRAM_SETCOLOR_UNAVAILABLE
unavailable
.
:PROGRAM_SETCOLOR_MONO_MODE7
MONO mode status => active (video mode 7)
.
:PROGRAM_SETCOLOR_MONO_MODE3
MONO mode status => inactive (video mode 3)
.
:PROGRAM_SETCOLOR_MONO_FAIL
Failed to change MONO mode
.
:PROGRAM_SETCOLOR_MONO_SYNTAX
Must be + or - for MONO: %s
.
:PROGRAM_SETCOLOR_COLOR
Color %d: (%d,%d,%d) or #%02x%02x%02x
.
:PROGRAM_SETCOLOR_INVALID_NUMBER
Invalid color number - %s
.
:PROGRAM_SETCOLOR_INVALID_VALUE
Invalid color value - %s
.
:PROGRAM_SETCOLOR_NOT_SUPPORTED
Changing color scheme is not supported for the current video mode.
.
:PROGRAM_BOOT_UNKNOWN_BOOTHAX
Unknown boothax mode
.
:PROGRAM_BOOT_SPECIFY_FILE
Must specify BIOS image to boot
.
:PROGRAM_BOOT_BIOS_OPEN_ERROR
Unable to open BIOS image
.
:PROGRAM_BIOSTEST_SPECIFY_FILE
Must specify BIOS file to load.
.
:PROGRAM_BIOSTEST_OPEN_ERROR
Can't open a file
.
:PROGRAM_BIOSTEST_TOO_LARGE
BIOS File too large
.
:PROGRAM_DELTREE_HELP
Deletes a directory and all the subdirectories and files in it.
To delete one or more files and directories:
DELTREE [/Y] [drive:]path [[drive:]path[...]]
/Y Suppresses prompting to confirm you want to delete
the subdirectory.
[drive:]path Specifies the name of the directory you want to delete.
Note: Use DELTREE cautiously. Every file and subdirectory within the
specified directory will be deleted.
.
:PROGRAM_TREE_HELP
Graphically displays the directory structure of a drive or path.
TREE [drive:][path] [/F] [/A]
/F Displays the names of the files in each directory.
/A Uses ASCII instead of extended characters.
.
:PROGRAM_TITLE_HELP
Sets the window title for the DOSBox-X window.
TITLE [string]
string Specifies the title for the DOSBox-X window.
.
:PROGRAM_COLOR_HELP
Sets the default console foreground and background colors.
COLOR [attr]
attr Specifies color attribute of console output
Color attributes are specified by TWO hex digits -- the first
corresponds to the background; the second to the foreground.
Each digit can be any of the following values:
0 = Black 8 = Gray
1 = Blue 9 = Light Blue
2 = Green A = Light Green
3 = Aqua B = Light Aqua
4 = Red C = Light Red
5 = Purple D = Light Purple
6 = Yellow E = Light Yellow
7 = White F = Bright White
If no argument is given, this command restores the original color.
The COLOR command sets ERRORLEVEL to 1 if an attempt is made to execute
the COLOR command with a foreground and background color that are the same.
Example: "COLOR fc" produces light red on bright white.
.

View File

@ -1,6 +1,6 @@
:DOSBOX-X:LANGUAGE:Русский (Россия)
:DOSBOX-X:CODEPAGE:866
:DOSBOX-X:VERSION:2024.10.01
:DOSBOX-X:VERSION:2025.05.03
:DOSBOX-X:REMARK:
:AUTOEXEC_CONFIGFILE_HELP
Строки в этом разделе будут выполнены при запуске.
@ -294,6 +294,10 @@ DOSBox-X создает оболочку DOS, которая выглядит к
:PROGRAM_CONFIG_FILE_WHICH
Запись файла конфигурации %s
.
:PROGRAM_LANGUAGE_FILE_WHICH
Written to language file %s
.
:PROGRAM_CONFIG_USAGE
Утилита конфигурации командной строки DOSBox-X. Поддерживаемые опции:
@ -907,6 +911,10 @@ DOSBox-X предоставляет эмуляцию CD-ROM на несколь
:PROGRAM_BOOT_UNABLE
Не удается загрузиться с диска %c.
.
:PROGRAM_BOOT_IMAGE_MOUNTED
Floppy image(s) already mounted.
.
:PROGRAM_BOOT_IMAGE_OPEN
Открытие файла образа: %s
@ -926,8 +934,9 @@ DOSBox-X предоставляет эмуляцию CD-ROM на несколь
.
:PROGRAM_BOOT_CART_NO_CMDS
Команды для картриджа PCjr не найдены.
.
:PROGRAM_BOOT_BOOTING
Booting from drive
:PROGRAM_LOADROM_HELP
Загружает указанный файл образа ROM для видео BIOS или IBM BASIC.
@ -1190,10 +1199,14 @@ BIOSTEST image_file
.
:PROGRAM_IMGMAKE_CANT_READ_FLOPPY
Не удалось прочитать гибкий диск.
.
:PROGRAM_IMGMAKE_BADSIZE
Wrong -size or -chs arguments.
.
:PROGRAM_KEYB_INFO
Codepage %i была загружена.
@ -1203,7 +1216,6 @@ Codepage %i была загружена.
Codepage %i была загружена для раскладки %s.
.
:PROGRAM_KEYB_SHOWHELP
Настроить клавиатуру для конкретного языка.
@ -1221,32 +1233,59 @@ Codepage %i была загружена для раскладки %s.
←[32;1mKEYB sp_mod 850←[0m Загрузить раскладку клавиатуры из sp_mod.kl, используйте кодовую страницу 850.
.
:PROGRAM_KEYB_NOERROR
Раскладка клавиатуры %s загружена для кодовой страницы %i.
.
:PROGRAM_KEYB_FILENOTFOUND
Файл клавиатуры %s не найден (или не является допустимым ID).
.
.
:PROGRAM_KEYB_INVALIDFILE
Файл клавиатуры %s недопустим.
.
:PROGRAM_KEYB_LAYOUTNOTFOUND
Нет раскладки в %s для кодовой страницы %i.
.
:PROGRAM_KEYB_INVCPFILE
Нет файла кодовой страницы или недопустимый файл кодовой страницы для раскладки %s.
.
.
:INT21_6523_YESNO_CHARS
yn
.
:PROGRAM_LABEL_HELP
Creates, changes, or deletes the volume label of a drive.
LABEL [drive:][label]
[drive:]○Specifies the drive letter
[label]○Specifies the volume label
.
:PROGRAM_LABEL_DELETE
Delete the volume label (Y/N)?
.
:PROGRAM_LABEL_TOOLONG
Label is too long (more than 11 characters).
.
:PROGRAM_LABEL_BADCHARS
Label has invalid characters.
.
:PROGRAM_LABEL_VOLUMEIS
Volume in drive %c is %s
.
:PROGRAM_LABEL_NOLABEL
Volume in drive %c has no label
.
:PROGRAM_MODE_USAGE
Настроить системные устройства.
@ -1575,7 +1614,12 @@ TIME [[/T] [/H] | time]
Неверный путь, не является каталогом или каталог не пуст - %s
.
:SHELL_CMD_RMDIR_FULLTREE_CONFIRM
Delete directory "%s" and all its subdirectories? (Y/N)?
.
:SHELL_CMD_RMDIR_SINGLE_CONFIRM
Delete file "%s" (Y/N)?
.
:SHELL_CMD_RENAME_ERROR
Не удалось переименовать - %s
@ -1595,7 +1639,9 @@ TIME [[/T] [/H] | time]
Не удалось удалить - %s
.
:SHELL_CMD_DEL_CONFIRM
Delete %s (Y/N)?
.
:SHELL_CMD_DEL_SURE
Все файлы в каталоге будут удалены!
Вы уверены [Y/N]?
@ -1656,7 +1702,6 @@ GOTO: Метка %s не найдена.
Файл %s уже существует.
.
:SHELL_CMD_DIR_INTRO
Содержимое каталога %s
@ -1751,7 +1796,10 @@ PAUSE
Ошибка копирования - %s
.
:SHELL_CMD_COPY_NOSELF
File cannot be copied onto itself♪
.
:SHELL_CMD_SUBST_DRIVE_LIST
В настоящее время подключены следующие локальные диски:
@ -1791,7 +1839,9 @@ DOS/V V-text в настоящее время включен.
DOS/V V-text в настоящее время выключен.
.
:SHELL_ALLFILES_CHAR
a
.
:SHELL_STARTUP_TITLE
Добро пожаловать в DOSBox-X!
.
@ -2731,6 +2781,18 @@ Pentium III 866 МГц EB (~407000 циклов)
:MENU:video_ratio_set
Установить соотношение
.
:MENU:VideoPreventCaptureMenu
Screen capture control
.
:MENU:prevcap_none
Allow
.
:MENU:prevcap_blank
Show as blank
.
:MENU:prevcap_invisible
Make invisible
.
:MENU:VideoScalerMenu
Масштабирование
.
@ -2822,6 +2884,9 @@ xBRZ
:MENU:scaler_set_xbrz_bilinear
xBRZ Bilinear
.
:MENU:center_window
Center window
.
:MENU:set_titletext
Установить текст заголовка...
.
@ -3305,6 +3370,9 @@ MPEG-TS + H.264
:MENU:show_console
Показать консоль ведения журнала
.
:MENU:clear_console
Clear logging console
.
:MENU:disable_logging
Отключить вывод в журнал
.
@ -3329,6 +3397,9 @@ MPEG-TS + H.264
:MENU:debugger_runwatch
Опция отладчика: Запустить наблюдение
.
:MENU:video_debug_overlay
Video debug overlay
.
:MENU:HelpCommandMenu
Команды DOS
.
@ -3410,12 +3481,18 @@ MPEG-TS + H.264
:MENU:mapper_caprawopl
Записать вывод FM (OPL)
.
:MENU:mapper_capnetrf
Record network traffic
.
:MENU:mapper_video
Записать видео в AVI
.
:MENU:mapper_scrshot
Сделать скриншот
.
:MENU:mapper_rawscrshot
Take raw screenshot
.
:MENU:mapper_volup
Увеличить громкость
.
@ -3665,6 +3742,9 @@ Alt+Shift
:MENU:pc98_use_uskb
Использовать раскладку US клавиатуры
.
:MAPPER:capnetrf
Record Network traffic
.
:MAPPER:caprawopl
Записать вывод FM/OPL
.
@ -3722,6 +3802,9 @@ CPU: обычное ядро
:MAPPER:reboot
Перезагрузить DOS-систему
.
:MAPPER:recmtwave
Record to multi-track AVI
.
:MAPPER:rescanall
Пересканировать все диски
.
@ -3740,12 +3823,601 @@ CPU: простое ядро
:MAPPER:togmenu
Переключить панель меню
.
:PROGRAM_FLAGSAVE_UNFLAGALL
All files unflagged for saving.
.
:PROGRAM_FLAGSAVE_UNFLAGGED
File %s unflagged for saving.
.
:PROGRAM_FLAGSAVE_FLAGGED
File already flagged for saving - %s
.
:PROGRAM_FLAGSAVE_TOOMANY
Too many files to flag for saving.
.
:PROGRAM_FLAGSAVE_SAVED
File %s flagged for saving
.
:PROGRAM_FLAGSAVE_LIST
Files flagged for saving:
.
:PROGRAM_FLAGSAVE_HLP
Marks or flags files to be saved for the save state feature.
FLAGSAVE [file(s) [/F] [/R]] [/U]
file(s) Specifies one or more files to be flagged for saving.
/F Forces to flag the file(s) even if they are not found.
/R Removes flags from the specified file(s).
/U Removes flags from all flagged files.
Type FLAGSAVE without a parameter to list flagged files.
.
:PROGRAM_INT2FDBG_NOT_SET
INT 2Fh hook has not been set.
.
:PROGRAM_INT2FDBG_ALREADY
INT 2Fh hook has already been set.
.
:PROGRAM_INT2FDBG_HELP
Hooks INT 2Fh for debugging purposes.
INT2FDBG [option]
/I Installs hook
It will hook INT 2Fh at the top of the call chain for debugging information.
Type INT2FDBG without a parameter to show the current hook status.
.
:PROGRAM_SET80x25
Changes to 80x25 text mode.
.
:PROGRAM_SET80x43
Changes to 80x43 text mode.
.
:PROGRAM_SET80x50
Changes to 80x50 text mode.
.
:PROGRAM_SET80x60
Changes to 80x60 text mode.
.
:PROGRAM_SET132x25
Changes to 132x25 text mode.
.
:PROGRAM_SET132x43
Changes to 132x43 text mode.
.
:PROGRAM_SET132x50
Changes to 132x50 text mode.
.
:PROGRAM_SET132x60
Changes to 132x60 text mode.
.
:PROGRAM_RESCAN_HELP
Rescans for changes on mounted drives made on the host by clearing caches.
RESCAN [/A] [/Q]
RESCAN [drive:] [/Q]
[/A] Rescan all drives
[/Q] Enable quiet mode
[drive:] The drive to rescan
Type RESCAN with no parameters to rescan the current drive.
.
:PROGRAM_CFGTOOL_HELP
Starts DOSBox-X's graphical configuration tool.
CFGTOOL
Note: You can also use CONFIG command for command-line configurations.
.
:PROGRAM_IMGSWAP_HELP
Swaps floppy, hard drive and optical disc images.
←[32;1mIMGSWAP←[0m ←[37;1mdrive←[0m ←[36;1m[position]←[0m
←[37;1mdrive←[0m Drive letter to swap the image.
←[36;1m[position]←[0m Disk position to swap to.
.
:PROGRAM_INTRO_HELP
A full-screen introduction to DOSBox-X.
INTRO [/RUN] [CDROM|MOUNT|USAGE|WELCOME]
.
:PROGRAM_IMGMOUNT_NOT_ASSIGNED
BIOS disk index does not have an image assigned.
.
:PROGRAM_IMGMOUNT_INVALID_NUMBER
Invalid mount number.
.
:PROGRAM_IMGMOUNT_INVALID_FSTYPE
Invalid fstype.
.
:PROGRAM_IMGMOUNT_INVALID_SIZE
Invalid size parameter.
.
:PROGRAM_IMGMOUNT_NOT_MOUNTED_NUMBER
Drive number %d is not mounted.
.
:PROGRAM_IMGMOUNT_UMOUNT_USAGE
Incorrect IMGMOUNT unmount usage.
.
:PROGRAM_IMGMOUNT_INVALID_LETTER
Invalid drive letter.
.
:PROGRAM_IMGMOUNT_CHOOSE_LETTER
Partitions cannot be mounted in conflict with the standard INT 13h hard disk
allotment. Choose a different drive letter to mount to.
.
:PROGRAM_ELTORITO_LETTER
El Torito emulation requires a proper CD-ROM drive letter.
.
:PROGRAM_ELTORITO_DRIVE_EXISTS
El Torito CD-ROM drive specified already exists as a non-CD-ROM device
.
:PROGRAM_ELTORITO_NOT_CDDRIVE
El Torito CD-ROM drive specified is not actually a CD-ROM drive.
.
:PROGRAM_ELTORITO_REQUIRE_FLOPPY
El Torito emulation must be used with -t floppy at this time.
.
:PROGRAM_ELTORITO_NO_BOOT_RECORD
El Torito CD-ROM boot record not found.
.
:PROGRAM_ELTORITO_ENTRY_UNREADABLE
El Torito entries unreadable.
.
:PROGRAM_ELTORITO_NO_BOOTABLE_FLOPPY
El Torito bootable floppy not found.
.
:PROGRAM_ELTORITO_BOOTABLE_SECTION
Unable to locate bootable section
.
:PROGRAM_ELTORITO_BOOTSECTOR
El Torito boot sector unreadable
.
:PROGRAM_IMGMAKE_ALIGNMENT
Invalid alignment
.
:PROGRAM_IMGMAKE_PARTOFS
Invalid -partofs
.
:PROGRAM_IMGMAKE_FAT
Invalid -fat option. Must be 12, 16, or 32
.
:PROGRAM_IMGMAKE_FATCOPIES
Invalid -fatcopies option
.
:PROGRAM_IMGMAKE_SPC
Invalid -spc option, out of range
.
:PROGRAM_IMGMAKE_SPC2
Invalid -spc option, must be a power of 2
.
:PROGRAM_IMGMAKE_ROOTDIR
Invalid -rootdir option
.
PROGRAM_IMGMAKE_BOOTSECT
Invalid bootsector position
.
PROGRAM_IMGMAKE_VOLUME_ALIGN
Sanity check failed: Volume size not aligned
.
:PROGRAM_IMGMAKE_FAT_ALIGN
Sanity check failed: FAT tables not aligned
.
:PROGRAM_IMGMAKE_SECTPERFAT
Error: Generated filesystem has more than 256 sectors per FAT and is not FAT32
.
:PROGRAM_IMGMAKE_VOLSIZE
Sanity check failed: Volume size not aligned
.
:PROGRAM_IMGMAKE_CLUSTERS
Error: Generated filesystem has too few clusters given the parameters
.
:PROGRAM_IMGMAKE_CLUSTERCOUNT
Warning: Cluster count is too high given the volume size.
Reporting a smaller sector count.
.
:PROGRAM_IMGMAKE_CLUSTER_ALIGN
Sanity check failed: First cluster not aligned
.
:PROGRAM_IMGMAKE_CLUSTER_SIZE
WARNING: Cluster sizes >= 64KB are not compatible with MS-DOS and SCANDISK
.
:PROGRAM_BOOT_UNSUPPORTED
Unsupported boot mode
.
:PROGRAM_MOUNT_OVERLAY_REPLACE
Existing overlay has been replaced with new overlay.
.
:PROGRAM_LOADFIX_EMS_FREE
EMS handle %u: unable to free
.
:PROGRAM_LOADFIX_XMS_FREE
XMS handle %u: unable to free
.
:PROGRAM_LOADFIX_EMS_ALLOC
EMS block allocated (%uKB)
.
:PROGRAM_LOADFIX_EMS_ALLOCERROR
Unable to allocate EMS block
.
PROGRAM_LOADFIX_NOEMS
EMS not active
.
:PROGRAM_LOADFIX_XMS_ALLOC
XMS block allocated (%uKB)
.
:PROGRAM_LOADFIX_XMS_ALLOCERROR
Unable to allocate XMS block
.
:PROGRAM_LOADFIX_NOXMS
XMS not active
.
:PROGRAM_LOADFIX_NOALLOC
Lowest MCB is above 64KB, nothing allocated
.
:PROGRAM_BOOT_SWAP_ALREADY
Multiple disk images specified and another drive is already connected to the swap list
.
:PROGRAM_BOOT_NOT_SPECIFIED
No images specified
.
:PROGRAM_BOOT_IS_PC88
The D88 image appears to target PC-88 and cannot be booted.
.
:PROGRAM_BOOT_BPS_TOOLARGE
Bytes/sector too large
.
:PROGRAM_BOOT_DRIVE_READERROR
Error reading drive
.
:PROGRAM_START_HELP_WIN
Starts a separate window to run a specified program or command.
START [+|-|_] command [arguments]
[+|-|_]: To maximize/minimize/hide the program.
The options /MAX, /MIN, /HID are also accepted.
command: The command, program or file to start.
arguments: Arguments to pass to the application.
START opens the Windows command prompt automatically to run these commands
and wait for a key press before exiting (specified by "startincon" option):
%s
Note: The path specified in this command is the path on the host system.
.
:PROGRAM_START_HELP
Starts a separate window to run a specified program or command.
START /OPEN file
START command [arguments]
/OPEN: To open a file or URL with the associated program.
file: The file or URL to open with the associated program.
command: The command or program to start or run.
arguments: Arguments to pass to the application.
Note: The path specified in this command is the path on the host system.
.
:PROGRAM_START_COMPLETED
The command execution is completed.
.
:PROGRAM_START_COMMAND
Starting %s...
.
:PROGRAM_START_CTRLC
(Press Ctrl+C to exit immediately)
.
:PROGRAM_START_HOST_ERROR
Error: START cannot launch application to run on your current host system.
.
:PROGRAM_START_LAUNCH_ERROR
Error: START could not launch application.
.
:PROGRAM_IMGMOUNT_ELTORITO_NO_FILE
Do not specify files when mounting floppy drives from El Torito bootable CDs
.
:PROGRAM_IMGMOUNT_RAMDRIVE_NO_FILE
Do not specify files when mounting RAM drives
.
:PROGRAM_IMGMOUNT_INVALID_SECTORSIZE
Sector size must be larger than 512 bytes and evenly divide the image cluster size of %lu bytes.
.
:PROGRAM_IMGMOUNT_OPEN_ERROR
Unable to open '%s'
.
:PROGRAM_IMGMOUNT_QCOW2_INVALID
qcow2 image '%s' is not supported
.
:PROGRAM_IMGMOUNT_GEOMETRY_ERROR
Unable to detect geometry
.
:PROGRAM_IMGMOUNT_DOS_VERSION
Mounting this image file requires a reported DOS version of %u.%u or higher.
%s
.
:PROGRAM_IMGMOUNT_INVALID_FLOPPYSIZE
Floppy size not recognized
.
:PROGRAM_IMGMOUNT_MULTIPLE_USED
Multiple images given and another drive already uses multiple images
.
:PROGRAM_IMGMOUNT_MULTIPLE_NOTSUPPORTED
Multiple disk images not supported for that drive
.
:PROGRAM_IMGMOUNT_HD_FDPOSITION
Cannot mount hard drive in floppy position.
.
:PROGRAM_IMGMOUNT_FD_HDPOSITION
Cannot mount floppy in hard drive position.
.
:PROGRAM_ELTORITO_ISOMOUNT
El Torito bootable CD: -fs iso mounting not supported
.
:PROGRAM_MODE_STATUS
Status for device CON:
----------------------
Columns=%d
Lines=%d
.
:PROGRAM_MODE_NOTSUPPORTED
Code page operation not supported on this device
.
:PROGRAM_MODE_RATE_DELAY
Rate and delay must be specified together
.
:PROGRAM_UTF8_HELP
Converts UTF-8 text to view in the current code page.
UTF8 < [drive:][path]filename
command-name | UTF8
.
:PROGRAM_UTF8_NO_TEXT
No input text found.
.
:PROGRAM_UTF8_INVALIDCP
Invalid code page for text conversion.
.
:PROGRAM_UTF8_NOT_UTF8
The input text is UTF-16.
.
:PROGRAM_UTF8_CONVERSION_ERROR
An error occurred during text conversion.
.
:PROGRAM_UTF16_HELP
Converts UTF-16 text to view in the current code page.
UTF16 [/BE|/LE] < [drive:][path]filename
command-name | UTF16 [/BE|/LE]
/BE Use UTF-16 Big Endian
/LE Use UTF-16 Little Endian
.
:PROGRAM_VTEXT_HELP
Changes V-text mode for the DOS/V emulation.
VTEXT [mode]
[mode] can be 0, 1, 2, for no V-text, V-text 1, and V-text 2 respectively.
Type VTEXT without a parameter to show the current V-text mode status.
.
:PROGRAM_NMITEST_HELP
Generates a non-maskable interrupt (NMI).
NMITEST
Note: This is a debugging tool to test if the interrupt handler works properly.
.
:PROGRAM_NMITEST_GENERATE_NMI
Generating a non-maskable interrupt (NMI)...
.
:PROGRAM_CAPMOUSE_HELP
Captures or releases the mouse inside DOSBox-X.
CAPMOUSE [/C|/R]
/C Capture the mouse
/R Release the mouse
.
:PROGRAM_CAPMOUSE_MOUSE
Mouse
.
:PROGRAM_CAPMOUSE_CURRENTLY
is currently
.
:PROGRAM_CAPMOUSE_CAPTURED
captured
.
:PROGRAM_CAPMOUSE_RELEASED
released
.
:PROGRAM_AUTOTYPE_HELP
Performs scripted keyboard entry into a running DOS program.
AUTOTYPE [-list] [-w WAIT] [-p PACE] button_1 [button_2 [...]]
Where:
-list: prints all available button names.
-w WAIT: seconds before typing begins. Two second default; max of 30.
-p PACE: seconds between each keystroke. Half-second default; max of 10.
The sequence is comprised of one or more space-separated buttons.
Autotyping begins after WAIT seconds, and each button is entered
every PACE seconds. The , character inserts an extra PACE delay.
Some examples:
←[32;1mAUTOTYPE -w 1 -p 0.3 up enter , right enter←[0m
←[32;1mAUTOTYPE -p 0.2 f1 kp_8 , , enter←[0m
←[32;1mAUTOTYPE -w 1.3 esc enter , p l a y e r enter←[0m
.
:PROGRAM_AUTOTYPE_NO_BINDINGS
AUTOTYPE: The mapper has no key bindings
.
:PROGRAM_AUTOTYPE_CLAMP_VALUE
AUTOTYPE: bounding %s value of %.2f to %.2f
.
:PROGRAM_AUTOTYPE_INVALID_VALUE
AUTOTYPE: %s value '%s' is not a valid floating point number
.
:PROGRAM_ADDKEY_HELP
Generates artificial keypresses.
ADDKEY [pmsec] [key]
For example, the command below types "dir" followed by ENTER after 1 second:
ADDKEY p1000 d i r enter
You could also try AUTOTYPE command instead of this command to perform
scripted keyboard entry into a running DOS program.
.
:PROGRAM_SETCOLOR_HELP
Views or changes the text-mode color scheme settings.
SETCOLOR [color# [value]]
For example:
←[32;1mSETCOLOR 0 (50,50,50)←[0m
Change Color #0 to the specified color value
←[32;1mSETCOLOR 7 -←[0m
Return Color #7 to the default color value
←[32;1mSETCOLOR 3 +←[0m
Return Color #3 to the preset color value
←[32;1mSETCOLOR MONO←[0m
Display current MONO mode status
To change the current background and foreground colors, use COLOR command.
.
:PROGRAM_SETCOLOR_STATUS
MONO mode status: %s (video mode %d)
.
:PROGRAM_SETCOLOR_ACTIVE
active
.
:PROGRAM_SETCOLOR_INACTIVE
inactive
.
:PROGRAM_SETCOLOR_UNAVAILABLE
unavailable
.
:PROGRAM_SETCOLOR_MONO_MODE7
MONO mode status => active (video mode 7)
.
:PROGRAM_SETCOLOR_MONO_MODE3
MONO mode status => inactive (video mode 3)
.
:PROGRAM_SETCOLOR_MONO_FAIL
Failed to change MONO mode
.
:PROGRAM_SETCOLOR_MONO_SYNTAX
Must be + or - for MONO: %s
.
:PROGRAM_SETCOLOR_COLOR
Color %d: (%d,%d,%d) or #%02x%02x%02x
.
:PROGRAM_SETCOLOR_INVALID_NUMBER
Invalid color number - %s
.
:PROGRAM_SETCOLOR_INVALID_VALUE
Invalid color value - %s
.
:PROGRAM_SETCOLOR_NOT_SUPPORTED
Changing color scheme is not supported for the current video mode.
.
:PROGRAM_BOOT_UNKNOWN_BOOTHAX
Unknown boothax mode
.
:PROGRAM_BOOT_SPECIFY_FILE
Must specify BIOS image to boot
.
:PROGRAM_BOOT_BIOS_OPEN_ERROR
Unable to open BIOS image
.
:PROGRAM_BIOSTEST_SPECIFY_FILE
Must specify BIOS file to load.
.
:PROGRAM_BIOSTEST_OPEN_ERROR
Can't open a file
.
:PROGRAM_BIOSTEST_TOO_LARGE
BIOS File too large
.
:PROGRAM_DELTREE_HELP
Deletes a directory and all the subdirectories and files in it.
To delete one or more files and directories:
DELTREE [/Y] [drive:]path [[drive:]path[...]]
/Y Suppresses prompting to confirm you want to delete
the subdirectory.
[drive:]path Specifies the name of the directory you want to delete.
Note: Use DELTREE cautiously. Every file and subdirectory within the
specified directory will be deleted.
.
:PROGRAM_TREE_HELP
Graphically displays the directory structure of a drive or path.
TREE [drive:][path] [/F] [/A]
/F Displays the names of the files in each directory.
/A Uses ASCII instead of extended characters.
.
:PROGRAM_TITLE_HELP
Sets the window title for the DOSBox-X window.
TITLE [string]
string Specifies the title for the DOSBox-X window.
.
:PROGRAM_COLOR_HELP
Sets the default console foreground and background colors.
COLOR [attr]
attr Specifies color attribute of console output
Color attributes are specified by TWO hex digits -- the first
corresponds to the background; the second to the foreground.
Each digit can be any of the following values:
0 = Black 8 = Gray
1 = Blue 9 = Light Blue
2 = Green A = Light Green
3 = Aqua B = Light Aqua
4 = Red C = Light Red
5 = Purple D = Light Purple
6 = Yellow E = Light Yellow
7 = White F = Bright White
If no argument is given, this command restores the original color.
The COLOR command sets ERRORLEVEL to 1 if an attempt is made to execute
the COLOR command with a foreground and background color that are the same.
Example: "COLOR fc" produces light red on bright white.
.

View File

@ -1,6 +1,6 @@
:DOSBOX-X:LANGUAGE:Turkish (Turkey)
:DOSBOX-X:CODEPAGE:857
:DOSBOX-X:VERSION:2024.10.01
:DOSBOX-X:VERSION:2025.05.03
:DOSBOX-X:REMARK:
:AUTOEXEC_CONFIGFILE_HELP
Lines in this section will be run at startup.
@ -922,6 +922,10 @@ yapar.
:PROGRAM_BOOT_UNABLE
%c sürücüsünden önyükleme yapılamıyor.
.
:PROGRAM_BOOT_IMAGE_MOUNTED
Floppy image(s) already mounted.
.
:PROGRAM_BOOT_IMAGE_OPEN
Kalıp dosyasıılıyor: %s
@ -940,6 +944,9 @@ Kullanılabilir PCjr kartuş komutları: %s
:PROGRAM_BOOT_CART_NO_CMDS
Bir PCjr kartuş komutu bulunamadı
.
:PROGRAM_BOOT_BOOTING
Booting from drive
.
:PROGRAM_LOADROM_HELP
Carga el archivo de imagen ROM especificado para BIOS de video o IBM BASIC.
@ -1200,6 +1207,10 @@ Kalıp dosyası için yeterli boş alan yok. %llu bayt daha gerekli.
Disket okunamıyor.
.
:PROGRAM_IMGMAKE_BADSIZE
Wrong -size or -chs arguments.
.
:PROGRAM_KEYB_INFO
%i kod sayfası yüklendi
@ -1248,6 +1259,37 @@ Klavye dosyası %s geçersiz
%s dizilimi için geçersiz veya olmayan kod sayfası dosyası
.
:INT21_6523_YESNO_CHARS
yn
.
:PROGRAM_LABEL_HELP
Creates, changes, or deletes the volume label of a drive.
LABEL [drive:][label]
[drive:]○Specifies the drive letter
[label]○Specifies the volume label
.
:PROGRAM_LABEL_DELETE
Delete the volume label (Y/N)?
.
:PROGRAM_LABEL_TOOLONG
Label is too long (more than 11 characters).
.
:PROGRAM_LABEL_BADCHARS
Label has invalid characters.
.
:PROGRAM_LABEL_VOLUMEIS
Volume in drive %c is %s
.
:PROGRAM_LABEL_NOLABEL
Volume in drive %c has no label
.
:PROGRAM_MODE_USAGE
Sistem aygıtlarını yapılandırır.
@ -1513,6 +1555,12 @@ Dizin oluşturulamıyor - %s
:SHELL_CMD_RMDIR_ERROR
Geçersiz yol, dizin değil veya dizin boş değil - %s
.
:SHELL_CMD_RMDIR_FULLTREE_CONFIRM
Delete directory "%s" and all its subdirectories? (Y/N)?
.
:SHELL_CMD_RMDIR_SINGLE_CONFIRM
Delete file "%s" (Y/N)?
.
:SHELL_CMD_RENAME_ERROR
Yeniden adlandırılamıyor - %s
@ -1529,6 +1577,9 @@ Yeniden adlandırılamıyor - %s
:SHELL_CMD_DEL_ERROR
Silinemiyor - %s
.
:SHELL_CMD_DEL_CONFIRM
Delete %s (Y/N)?
.
:SHELL_CMD_DEL_SURE
Dizindeki tüm dosyalar silinecek!
@ -1649,6 +1700,10 @@ Yetersiz disk alanı - %s
:SHELL_CMD_COPY_ERROR
Kopyalama hatası - %s
.
:SHELL_CMD_COPY_NOSELF
File cannot be copied onto itself♪
.
:SHELL_CMD_SUBST_DRIVE_LIST
Şu anda bağlı yerel sürücüler:
@ -1681,6 +1736,9 @@ DOS/V V-text şu anda etkin.
:SHELL_CMD_VTEXT_OFF
DOS/V V-text şu anda devre dışı.
.
:SHELL_ALLFILES_CHAR
a
.
:SHELL_STARTUP_TITLE
DOSBox-X'e hoş geldiniz!
@ -2588,6 +2646,18 @@ orijinal oran
:MENU:video_ratio_set
Oranı ayarla
.
:MENU:VideoPreventCaptureMenu
Screen capture control
.
:MENU:prevcap_none
Allow
.
:MENU:prevcap_blank
Show as blank
.
:MENU:prevcap_invisible
Make invisible
.
:MENU:VideoScalerMenu
Ölçekleyici
.
@ -2678,6 +2748,9 @@ xBRZ
:MENU:scaler_set_xbrz_bilinear
xBRZ İkidoğrulu
.
:MENU:center_window
Center window
.
:MENU:set_titletext
Başlık çubuğu metnini ayarla...
.
@ -3161,6 +3234,9 @@ DOSBox-X hakkında
:MENU:show_console
Günlükleme konsolunu göster
.
:MENU:clear_console
Clear logging console
.
:MENU:disable_logging
Günlük çıkışını devre dışı bırak
.
@ -3185,6 +3261,9 @@ Hata ayıklayıcı seçeneğil: Normal kipte çalış
:MENU:debugger_runwatch
Hata ayıklayıcı seçeneğil: İzlemeyi çalıştır
.
:MENU:video_debug_overlay
Video debug overlay
.
:MENU:HelpCommandMenu
DOS komutları
.
@ -3266,12 +3345,18 @@ MIDI çıktısı kaydet
:MENU:mapper_caprawopl
FM (OPL) çıktısı kaydet
.
:MENU:mapper_capnetrf
Record network traffic
.
:MENU:mapper_video
Videoyu AVI olarak kaydet
.
:MENU:mapper_scrshot
Ekran görüntüsü al
.
:MENU:mapper_rawscrshot
Take raw screenshot
.
:MENU:mapper_volup
Ses düzeyini artır
.
@ -3521,6 +3606,9 @@ IDE disk veya CD durumunu göster
:MENU:pc98_use_uskb
ABD klavye dizilimi kullan
.
:MAPPER:capnetrf
Record Network traffic
.
:MAPPER:caprawopl
FM/OPL çıktısı kaydet
.
@ -3605,3 +3693,601 @@ CPU: Yalın çekirdek
:MAPPER:togmenu
Menü çubuğunu aç/kapa
.
:PROGRAM_FLAGSAVE_UNFLAGALL
All files unflagged for saving.
.
:PROGRAM_FLAGSAVE_UNFLAGGED
File %s unflagged for saving.
.
:PROGRAM_FLAGSAVE_FLAGGED
File already flagged for saving - %s
.
:PROGRAM_FLAGSAVE_TOOMANY
Too many files to flag for saving.
.
:PROGRAM_FLAGSAVE_SAVED
File %s flagged for saving
.
:PROGRAM_FLAGSAVE_LIST
Files flagged for saving:
.
:PROGRAM_FLAGSAVE_HLP
Marks or flags files to be saved for the save state feature.
FLAGSAVE [file(s) [/F] [/R]] [/U]
file(s) Specifies one or more files to be flagged for saving.
/F Forces to flag the file(s) even if they are not found.
/R Removes flags from the specified file(s).
/U Removes flags from all flagged files.
Type FLAGSAVE without a parameter to list flagged files.
.
:PROGRAM_INT2FDBG_NOT_SET
INT 2Fh hook has not been set.
.
:PROGRAM_INT2FDBG_ALREADY
INT 2Fh hook has already been set.
.
:PROGRAM_INT2FDBG_HELP
Hooks INT 2Fh for debugging purposes.
INT2FDBG [option]
/I Installs hook
It will hook INT 2Fh at the top of the call chain for debugging information.
Type INT2FDBG without a parameter to show the current hook status.
.
:PROGRAM_SET80x25
Changes to 80x25 text mode.
.
:PROGRAM_SET80x43
Changes to 80x43 text mode.
.
:PROGRAM_SET80x50
Changes to 80x50 text mode.
.
:PROGRAM_SET80x60
Changes to 80x60 text mode.
.
:PROGRAM_SET132x25
Changes to 132x25 text mode.
.
:PROGRAM_SET132x43
Changes to 132x43 text mode.
.
:PROGRAM_SET132x50
Changes to 132x50 text mode.
.
:PROGRAM_SET132x60
Changes to 132x60 text mode.
.
:PROGRAM_RESCAN_HELP
Rescans for changes on mounted drives made on the host by clearing caches.
RESCAN [/A] [/Q]
RESCAN [drive:] [/Q]
[/A] Rescan all drives
[/Q] Enable quiet mode
[drive:] The drive to rescan
Type RESCAN with no parameters to rescan the current drive.
.
:PROGRAM_CFGTOOL_HELP
Starts DOSBox-X's graphical configuration tool.
CFGTOOL
Note: You can also use CONFIG command for command-line configurations.
.
:PROGRAM_IMGSWAP_HELP
Swaps floppy, hard drive and optical disc images.
←[32;1mIMGSWAP←[0m ←[37;1mdrive←[0m ←[36;1m[position]←[0m
←[37;1mdrive←[0m Drive letter to swap the image.
←[36;1m[position]←[0m Disk position to swap to.
.
:PROGRAM_INTRO_HELP
A full-screen introduction to DOSBox-X.
INTRO [/RUN] [CDROM|MOUNT|USAGE|WELCOME]
.
:PROGRAM_IMGMOUNT_NOT_ASSIGNED
BIOS disk index does not have an image assigned.
.
:PROGRAM_IMGMOUNT_INVALID_NUMBER
Invalid mount number.
.
:PROGRAM_IMGMOUNT_INVALID_FSTYPE
Invalid fstype.
.
:PROGRAM_IMGMOUNT_INVALID_SIZE
Invalid size parameter.
.
:PROGRAM_IMGMOUNT_NOT_MOUNTED_NUMBER
Drive number %d is not mounted.
.
:PROGRAM_IMGMOUNT_UMOUNT_USAGE
Incorrect IMGMOUNT unmount usage.
.
:PROGRAM_IMGMOUNT_INVALID_LETTER
Invalid drive letter.
.
:PROGRAM_IMGMOUNT_CHOOSE_LETTER
Partitions cannot be mounted in conflict with the standard INT 13h hard disk
allotment. Choose a different drive letter to mount to.
.
:PROGRAM_ELTORITO_LETTER
El Torito emulation requires a proper CD-ROM drive letter.
.
:PROGRAM_ELTORITO_DRIVE_EXISTS
El Torito CD-ROM drive specified already exists as a non-CD-ROM device
.
:PROGRAM_ELTORITO_NOT_CDDRIVE
El Torito CD-ROM drive specified is not actually a CD-ROM drive.
.
:PROGRAM_ELTORITO_REQUIRE_FLOPPY
El Torito emulation must be used with -t floppy at this time.
.
:PROGRAM_ELTORITO_NO_BOOT_RECORD
El Torito CD-ROM boot record not found.
.
:PROGRAM_ELTORITO_ENTRY_UNREADABLE
El Torito entries unreadable.
.
:PROGRAM_ELTORITO_NO_BOOTABLE_FLOPPY
El Torito bootable floppy not found.
.
:PROGRAM_ELTORITO_BOOTABLE_SECTION
Unable to locate bootable section
.
:PROGRAM_ELTORITO_BOOTSECTOR
El Torito boot sector unreadable
.
:PROGRAM_IMGMAKE_ALIGNMENT
Invalid alignment
.
:PROGRAM_IMGMAKE_PARTOFS
Invalid -partofs
.
:PROGRAM_IMGMAKE_FAT
Invalid -fat option. Must be 12, 16, or 32
.
:PROGRAM_IMGMAKE_FATCOPIES
Invalid -fatcopies option
.
:PROGRAM_IMGMAKE_SPC
Invalid -spc option, out of range
.
:PROGRAM_IMGMAKE_SPC2
Invalid -spc option, must be a power of 2
.
:PROGRAM_IMGMAKE_ROOTDIR
Invalid -rootdir option
.
PROGRAM_IMGMAKE_BOOTSECT
Invalid bootsector position
.
PROGRAM_IMGMAKE_VOLUME_ALIGN
Sanity check failed: Volume size not aligned
.
:PROGRAM_IMGMAKE_FAT_ALIGN
Sanity check failed: FAT tables not aligned
.
:PROGRAM_IMGMAKE_SECTPERFAT
Error: Generated filesystem has more than 256 sectors per FAT and is not FAT32
.
:PROGRAM_IMGMAKE_VOLSIZE
Sanity check failed: Volume size not aligned
.
:PROGRAM_IMGMAKE_CLUSTERS
Error: Generated filesystem has too few clusters given the parameters
.
:PROGRAM_IMGMAKE_CLUSTERCOUNT
Warning: Cluster count is too high given the volume size.
Reporting a smaller sector count.
.
:PROGRAM_IMGMAKE_CLUSTER_ALIGN
Sanity check failed: First cluster not aligned
.
:PROGRAM_IMGMAKE_CLUSTER_SIZE
WARNING: Cluster sizes >= 64KB are not compatible with MS-DOS and SCANDISK
.
:PROGRAM_BOOT_UNSUPPORTED
Unsupported boot mode
.
:PROGRAM_MOUNT_OVERLAY_REPLACE
Existing overlay has been replaced with new overlay.
.
:PROGRAM_LOADFIX_EMS_FREE
EMS handle %u: unable to free
.
:PROGRAM_LOADFIX_XMS_FREE
XMS handle %u: unable to free
.
:PROGRAM_LOADFIX_EMS_ALLOC
EMS block allocated (%uKB)
.
:PROGRAM_LOADFIX_EMS_ALLOCERROR
Unable to allocate EMS block
.
PROGRAM_LOADFIX_NOEMS
EMS not active
.
:PROGRAM_LOADFIX_XMS_ALLOC
XMS block allocated (%uKB)
.
:PROGRAM_LOADFIX_XMS_ALLOCERROR
Unable to allocate XMS block
.
:PROGRAM_LOADFIX_NOXMS
XMS not active
.
:PROGRAM_LOADFIX_NOALLOC
Lowest MCB is above 64KB, nothing allocated
.
:PROGRAM_BOOT_SWAP_ALREADY
Multiple disk images specified and another drive is already connected to the swap list
.
:PROGRAM_BOOT_NOT_SPECIFIED
No images specified
.
:PROGRAM_BOOT_IS_PC88
The D88 image appears to target PC-88 and cannot be booted.
.
:PROGRAM_BOOT_BPS_TOOLARGE
Bytes/sector too large
.
:PROGRAM_BOOT_DRIVE_READERROR
Error reading drive
.
:PROGRAM_START_HELP_WIN
Starts a separate window to run a specified program or command.
START [+|-|_] command [arguments]
[+|-|_]: To maximize/minimize/hide the program.
The options /MAX, /MIN, /HID are also accepted.
command: The command, program or file to start.
arguments: Arguments to pass to the application.
START opens the Windows command prompt automatically to run these commands
and wait for a key press before exiting (specified by "startincon" option):
%s
Note: The path specified in this command is the path on the host system.
.
:PROGRAM_START_HELP
Starts a separate window to run a specified program or command.
START /OPEN file
START command [arguments]
/OPEN: To open a file or URL with the associated program.
file: The file or URL to open with the associated program.
command: The command or program to start or run.
arguments: Arguments to pass to the application.
Note: The path specified in this command is the path on the host system.
.
:PROGRAM_START_COMPLETED
The command execution is completed.
.
:PROGRAM_START_COMMAND
Starting %s...
.
:PROGRAM_START_CTRLC
(Press Ctrl+C to exit immediately)
.
:PROGRAM_START_HOST_ERROR
Error: START cannot launch application to run on your current host system.
.
:PROGRAM_START_LAUNCH_ERROR
Error: START could not launch application.
.
:PROGRAM_IMGMOUNT_ELTORITO_NO_FILE
Do not specify files when mounting floppy drives from El Torito bootable CDs
.
:PROGRAM_IMGMOUNT_RAMDRIVE_NO_FILE
Do not specify files when mounting RAM drives
.
:PROGRAM_IMGMOUNT_INVALID_SECTORSIZE
Sector size must be larger than 512 bytes and evenly divide the image cluster size of %lu bytes.
.
:PROGRAM_IMGMOUNT_OPEN_ERROR
Unable to open '%s'
.
:PROGRAM_IMGMOUNT_QCOW2_INVALID
qcow2 image '%s' is not supported
.
:PROGRAM_IMGMOUNT_GEOMETRY_ERROR
Unable to detect geometry
.
:PROGRAM_IMGMOUNT_DOS_VERSION
Mounting this image file requires a reported DOS version of %u.%u or higher.
%s
.
:PROGRAM_IMGMOUNT_INVALID_FLOPPYSIZE
Floppy size not recognized
.
:PROGRAM_IMGMOUNT_MULTIPLE_USED
Multiple images given and another drive already uses multiple images
.
:PROGRAM_IMGMOUNT_MULTIPLE_NOTSUPPORTED
Multiple disk images not supported for that drive
.
:PROGRAM_IMGMOUNT_HD_FDPOSITION
Cannot mount hard drive in floppy position.
.
:PROGRAM_IMGMOUNT_FD_HDPOSITION
Cannot mount floppy in hard drive position.
.
:PROGRAM_ELTORITO_ISOMOUNT
El Torito bootable CD: -fs iso mounting not supported
.
:PROGRAM_MODE_STATUS
Status for device CON:
----------------------
Columns=%d
Lines=%d
.
:PROGRAM_MODE_NOTSUPPORTED
Code page operation not supported on this device
.
:PROGRAM_MODE_RATE_DELAY
Rate and delay must be specified together
.
:PROGRAM_UTF8_HELP
Converts UTF-8 text to view in the current code page.
UTF8 < [drive:][path]filename
command-name | UTF8
.
:PROGRAM_UTF8_NO_TEXT
No input text found.
.
:PROGRAM_UTF8_INVALIDCP
Invalid code page for text conversion.
.
:PROGRAM_UTF8_NOT_UTF8
The input text is UTF-16.
.
:PROGRAM_UTF8_CONVERSION_ERROR
An error occurred during text conversion.
.
:PROGRAM_UTF16_HELP
Converts UTF-16 text to view in the current code page.
UTF16 [/BE|/LE] < [drive:][path]filename
command-name | UTF16 [/BE|/LE]
/BE Use UTF-16 Big Endian
/LE Use UTF-16 Little Endian
.
:PROGRAM_VTEXT_HELP
Changes V-text mode for the DOS/V emulation.
VTEXT [mode]
[mode] can be 0, 1, 2, for no V-text, V-text 1, and V-text 2 respectively.
Type VTEXT without a parameter to show the current V-text mode status.
.
:PROGRAM_NMITEST_HELP
Generates a non-maskable interrupt (NMI).
NMITEST
Note: This is a debugging tool to test if the interrupt handler works properly.
.
:PROGRAM_NMITEST_GENERATE_NMI
Generating a non-maskable interrupt (NMI)...
.
:PROGRAM_CAPMOUSE_HELP
Captures or releases the mouse inside DOSBox-X.
CAPMOUSE [/C|/R]
/C Capture the mouse
/R Release the mouse
.
:PROGRAM_CAPMOUSE_MOUSE
Mouse
.
:PROGRAM_CAPMOUSE_CURRENTLY
is currently
.
:PROGRAM_CAPMOUSE_CAPTURED
captured
.
:PROGRAM_CAPMOUSE_RELEASED
released
.
:PROGRAM_AUTOTYPE_HELP
Performs scripted keyboard entry into a running DOS program.
AUTOTYPE [-list] [-w WAIT] [-p PACE] button_1 [button_2 [...]]
Where:
-list: prints all available button names.
-w WAIT: seconds before typing begins. Two second default; max of 30.
-p PACE: seconds between each keystroke. Half-second default; max of 10.
The sequence is comprised of one or more space-separated buttons.
Autotyping begins after WAIT seconds, and each button is entered
every PACE seconds. The , character inserts an extra PACE delay.
Some examples:
←[32;1mAUTOTYPE -w 1 -p 0.3 up enter , right enter←[0m
←[32;1mAUTOTYPE -p 0.2 f1 kp_8 , , enter←[0m
←[32;1mAUTOTYPE -w 1.3 esc enter , p l a y e r enter←[0m
.
:PROGRAM_AUTOTYPE_NO_BINDINGS
AUTOTYPE: The mapper has no key bindings
.
:PROGRAM_AUTOTYPE_CLAMP_VALUE
AUTOTYPE: bounding %s value of %.2f to %.2f
.
:PROGRAM_AUTOTYPE_INVALID_VALUE
AUTOTYPE: %s value '%s' is not a valid floating point number
.
:PROGRAM_ADDKEY_HELP
Generates artificial keypresses.
ADDKEY [pmsec] [key]
For example, the command below types "dir" followed by ENTER after 1 second:
ADDKEY p1000 d i r enter
You could also try AUTOTYPE command instead of this command to perform
scripted keyboard entry into a running DOS program.
.
:PROGRAM_SETCOLOR_HELP
Views or changes the text-mode color scheme settings.
SETCOLOR [color# [value]]
For example:
←[32;1mSETCOLOR 0 (50,50,50)←[0m
Change Color #0 to the specified color value
←[32;1mSETCOLOR 7 -←[0m
Return Color #7 to the default color value
←[32;1mSETCOLOR 3 +←[0m
Return Color #3 to the preset color value
←[32;1mSETCOLOR MONO←[0m
Display current MONO mode status
To change the current background and foreground colors, use COLOR command.
.
:PROGRAM_SETCOLOR_STATUS
MONO mode status: %s (video mode %d)
.
:PROGRAM_SETCOLOR_ACTIVE
active
.
:PROGRAM_SETCOLOR_INACTIVE
inactive
.
:PROGRAM_SETCOLOR_UNAVAILABLE
unavailable
.
:PROGRAM_SETCOLOR_MONO_MODE7
MONO mode status => active (video mode 7)
.
:PROGRAM_SETCOLOR_MONO_MODE3
MONO mode status => inactive (video mode 3)
.
:PROGRAM_SETCOLOR_MONO_FAIL
Failed to change MONO mode
.
:PROGRAM_SETCOLOR_MONO_SYNTAX
Must be + or - for MONO: %s
.
:PROGRAM_SETCOLOR_COLOR
Color %d: (%d,%d,%d) or #%02x%02x%02x
.
:PROGRAM_SETCOLOR_INVALID_NUMBER
Invalid color number - %s
.
:PROGRAM_SETCOLOR_INVALID_VALUE
Invalid color value - %s
.
:PROGRAM_SETCOLOR_NOT_SUPPORTED
Changing color scheme is not supported for the current video mode.
.
:PROGRAM_BOOT_UNKNOWN_BOOTHAX
Unknown boothax mode
.
:PROGRAM_BOOT_SPECIFY_FILE
Must specify BIOS image to boot
.
:PROGRAM_BOOT_BIOS_OPEN_ERROR
Unable to open BIOS image
.
:PROGRAM_BIOSTEST_SPECIFY_FILE
Must specify BIOS file to load.
.
:PROGRAM_BIOSTEST_OPEN_ERROR
Can't open a file
.
:PROGRAM_BIOSTEST_TOO_LARGE
BIOS File too large
.
:PROGRAM_DELTREE_HELP
Deletes a directory and all the subdirectories and files in it.
To delete one or more files and directories:
DELTREE [/Y] [drive:]path [[drive:]path[...]]
/Y Suppresses prompting to confirm you want to delete
the subdirectory.
[drive:]path Specifies the name of the directory you want to delete.
Note: Use DELTREE cautiously. Every file and subdirectory within the
specified directory will be deleted.
.
:PROGRAM_TREE_HELP
Graphically displays the directory structure of a drive or path.
TREE [drive:][path] [/F] [/A]
/F Displays the names of the files in each directory.
/A Uses ASCII instead of extended characters.
.
:PROGRAM_TITLE_HELP
Sets the window title for the DOSBox-X window.
TITLE [string]
string Specifies the title for the DOSBox-X window.
.
:PROGRAM_COLOR_HELP
Sets the default console foreground and background colors.
COLOR [attr]
attr Specifies color attribute of console output
Color attributes are specified by TWO hex digits -- the first
corresponds to the background; the second to the foreground.
Each digit can be any of the following values:
0 = Black 8 = Gray
1 = Blue 9 = Light Blue
2 = Green A = Light Green
3 = Aqua B = Light Aqua
4 = Red C = Light Red
5 = Purple D = Light Purple
6 = Yellow E = Light Yellow
7 = White F = Bright White
If no argument is given, this command restores the original color.
The COLOR command sets ERRORLEVEL to 1 if an attempt is made to execute
the COLOR command with a foreground and background color that are the same.
Example: "COLOR fc" produces light red on bright white.
.

View File

@ -1,10 +1,11 @@
:DOSBOX-X:LANGUAGE:Simplified Chinese
:DOSBOX-X:CODEPAGE:936
:DOSBOX-X:VERSION:2024.10.01
:DOSBOX-X:REMARK:建议将国家和代码页设为 86,936 并搭配中文字体; 或使用 chs 或 cn 中文 DOS/V 模式以直接支持中文显示和打印
:DOSBOX-X:VERSION:2025.05.03
:DOSBOX-X:REMARK:配置完中文语言与字体后,就可以直接支持中文显示和打印。国家和代码页选项可以留空,或设为 “86,936”。
:AUTOEXEC_CONFIGFILE_HELP
Lines in this section will be run at startup.
You can put your MOUNT lines here.
.
:CONFIGFILE_INTRO
# This is the configuration file for DOSBox-X %s. (Please use the latest version of DOSBox-X)
@ -908,6 +909,10 @@ leading colon write protect image = true
:PROGRAM_BOOT_UNABLE
无法从驱动器 %c 启动.
.
:PROGRAM_BOOT_IMAGE_MOUNTED
Floppy image(s) already mounted.
.
:PROGRAM_BOOT_IMAGE_OPEN
正在打开镜像文件: %s
@ -926,6 +931,9 @@ Available PCjr cartridge commandos:%s
:PROGRAM_BOOT_CART_NO_CMDS
No PCjr cartridge commandos found
.
:PROGRAM_BOOT_BOOTING
Booting from drive
.
:PROGRAM_LOADROM_HELP
调用指定的视频 BIOS 或 IBM BASIC ROM 镜像文件.
@ -1189,6 +1197,10 @@ BIOSTEST 镜像文件
无法读取软盘.
.
:PROGRAM_IMGMAKE_BADSIZE
Wrong -size or -chs arguments.
.
:PROGRAM_KEYB_INFO
代码页 %i 已加载
@ -1236,6 +1248,37 @@ BIOSTEST 镜像文件
作为键盘布局 %s 的代码页文件不存在或无效
.
:INT21_6523_YESNO_CHARS
yn
.
:PROGRAM_LABEL_HELP
Creates, changes, or deletes the volume label of a drive.
LABEL [drive:][label]
[drive:]○Specifies the drive letter
[label]○Specifies the volume label
.
:PROGRAM_LABEL_DELETE
Delete the volume label (Y/N)?
.
:PROGRAM_LABEL_TOOLONG
Label is too long (more than 11 characters).
.
:PROGRAM_LABEL_BADCHARS
Label has invalid characters.
.
:PROGRAM_LABEL_VOLUMEIS
Volume in drive %c is %s
.
:PROGRAM_LABEL_NOLABEL
Volume in drive %c has no label
.
:PROGRAM_MODE_USAGE
配置系统设备.
@ -1501,6 +1544,12 @@ TIME [[/T] [/H] | 时间]
:SHELL_CMD_RMDIR_ERROR
路径无效,不是目录,或目录非空 - %s
.
:SHELL_CMD_RMDIR_FULLTREE_CONFIRM
Delete directory "%s" and all its subdirectories? (Y/N)?
.
:SHELL_CMD_RMDIR_SINGLE_CONFIRM
Delete file "%s" (Y/N)?
.
:SHELL_CMD_RENAME_ERROR
无法进行重命名 - %s
@ -1517,6 +1566,9 @@ TIME [[/T] [/H] | 时间]
:SHELL_CMD_DEL_ERROR
无法删除 - %s
.
:SHELL_CMD_DEL_CONFIRM
Delete %s (Y/N)?
.
:SHELL_CMD_DEL_SURE
目录下的所有文件将被删除!
@ -1637,6 +1689,10 @@ PAUSE
:SHELL_CMD_COPY_ERROR
文件拷贝错误 - %s
.
:SHELL_CMD_COPY_NOSELF
File cannot be copied onto itself♪
.
:SHELL_CMD_SUBST_DRIVE_LIST
目前已挂载的驱动器为:
@ -1657,6 +1713,10 @@ SUBST 命令只能挂载本地驱动器.
:SHELL_CMD_SUBST_INVALID_PATH
指定的驱动器或目录非法.
.
:SHELL_CMD_SUBST_FAILURE
SUBST: There is an error in your command line.
.
:SHELL_CMD_VTEXT_ON
DOS/V V-text 当前状态为开.
@ -1698,6 +1758,10 @@ SUBST: 命令行参数错误.
支持 CGA 合成模式. 按 Ctrl+F8 键启用或禁用合成输出.
Ctrl+Shift+[F7/F8] 改变色度; 按 Ctrl+F7 选择早期/晚期 CGA 型号.
.
:SHELL_STARTUP_CGA_MONO
Use Ctrl+F7 to cycle through green, amber, and white monochrome color,
and Ctrl+F8 to change contrast/brightness settings.
.
:SHELL_STARTUP_HERC
Ctrl+F7 键在单色间切换: 白色、琥珀色、绿色.
Ctrl+F8 键切换水平混合 (仅图形模式).
@ -2553,6 +2617,18 @@ AMD Athlon 600MHz (约 306000 周期)
:MENU:video_ratio_set
设置长宽比
.
:MENU:VideoPreventCaptureMenu
Screen capture control
.
:MENU:prevcap_none
Allow
.
:MENU:prevcap_blank
Show as blank
.
:MENU:prevcap_invisible
Make invisible
.
:MENU:VideoScalerMenu
缩放器
.
@ -2643,6 +2719,9 @@ xBRZ
:MENU:scaler_set_xbrz_bilinear
xBRZ Bilinear
.
:MENU:center_window
Center window
.
:MENU:set_titletext
设置标题栏文字...
.
@ -3126,6 +3205,9 @@ DOSBox-X 支持
:MENU:show_console
显示记录控制台
.
:MENU:clear_console
Clear logging console
.
:MENU:disable_logging
禁用记录输出
.
@ -3150,6 +3232,9 @@ DOSBox-X 支持
:MENU:debugger_runwatch
调试器选项: 监视运行方式
.
:MENU:video_debug_overlay
Video debug overlay
.
:MENU:HelpCommandMenu
DOS 命令
.
@ -3231,12 +3316,18 @@ DOS 命令
:MENU:mapper_caprawopl
录制 FM (OPL) 输出
.
:MENU:mapper_capnetrf
Record network traffic
.
:MENU:mapper_video
录制视频到 AVI
.
:MENU:mapper_scrshot
捕获屏幕快照
.
:MENU:mapper_rawscrshot
Take raw screenshot
.
:MENU:mapper_volup
提高音量
.
@ -3486,6 +3577,9 @@ Mapper "输入特殊键": Ctrl+Alt+Del
:MENU:pc98_use_uskb
使用美式键盘布局
.
:MAPPER:capnetrf
Record Network traffic
.
:MAPPER:caprawopl
录制 FM/OPL 输出
.
@ -3525,6 +3619,12 @@ CPU: 正常内核
:MAPPER:paste
粘贴剪贴板文字
.
:MAPPER:pasteend
Stop clipboard paste
.
:MAPPER:pauseints
Pause with interrupt
.
:MAPPER:prevslot
上一个存档
.
@ -3534,6 +3634,12 @@ CPU: 正常内核
:MAPPER:quickrun
快速启动程序
.
:MAPPER:reboot
Reboot DOS system
.
:MAPPER:recmtwave
Record to multi-track AVI
.
:MAPPER:rescanall
刷新驱动器
.
@ -3543,9 +3649,610 @@ CPU: 正常内核
:MAPPER:resetcolor
重置配色方案
.
:MAPPER:showstate
Display state info
.
:MAPPER:simple
CPU: 简单内核
.
:MAPPER:togmenu
打开或关闭下拉菜单
.
:PROGRAM_FLAGSAVE_UNFLAGALL
All files unflagged for saving.
.
:PROGRAM_FLAGSAVE_UNFLAGGED
File %s unflagged for saving.
.
:PROGRAM_FLAGSAVE_FLAGGED
File already flagged for saving - %s
.
:PROGRAM_FLAGSAVE_TOOMANY
Too many files to flag for saving.
.
:PROGRAM_FLAGSAVE_SAVED
File %s flagged for saving
.
:PROGRAM_FLAGSAVE_LIST
Files flagged for saving:
.
:PROGRAM_FLAGSAVE_HLP
Marks or flags files to be saved for the save state feature.
FLAGSAVE [file(s) [/F] [/R]] [/U]
file(s) Specifies one or more files to be flagged for saving.
/F Forces to flag the file(s) even if they are not found.
/R Removes flags from the specified file(s).
/U Removes flags from all flagged files.
Type FLAGSAVE without a parameter to list flagged files.
.
:PROGRAM_INT2FDBG_NOT_SET
INT 2Fh hook has not been set.
.
:PROGRAM_INT2FDBG_ALREADY
INT 2Fh hook has already been set.
.
:PROGRAM_INT2FDBG_HELP
Hooks INT 2Fh for debugging purposes.
INT2FDBG [option]
/I Installs hook
It will hook INT 2Fh at the top of the call chain for debugging information.
Type INT2FDBG without a parameter to show the current hook status.
.
:PROGRAM_SET80x25
Changes to 80x25 text mode.
.
:PROGRAM_SET80x43
Changes to 80x43 text mode.
.
:PROGRAM_SET80x50
Changes to 80x50 text mode.
.
:PROGRAM_SET80x60
Changes to 80x60 text mode.
.
:PROGRAM_SET132x25
Changes to 132x25 text mode.
.
:PROGRAM_SET132x43
Changes to 132x43 text mode.
.
:PROGRAM_SET132x50
Changes to 132x50 text mode.
.
:PROGRAM_SET132x60
Changes to 132x60 text mode.
.
:PROGRAM_RESCAN_HELP
Rescans for changes on mounted drives made on the host by clearing caches.
RESCAN [/A] [/Q]
RESCAN [drive:] [/Q]
[/A] Rescan all drives
[/Q] Enable quiet mode
[drive:] The drive to rescan
Type RESCAN with no parameters to rescan the current drive.
.
:PROGRAM_CFGTOOL_HELP
Starts DOSBox-X's graphical configuration tool.
CFGTOOL
Note: You can also use CONFIG command for command-line configurations.
.
:PROGRAM_IMGSWAP_HELP
Swaps floppy, hard drive and optical disc images.
←[32;1mIMGSWAP←[0m ←[37;1mdrive←[0m ←[36;1m[position]←[0m
←[37;1mdrive←[0m Drive letter to swap the image.
←[36;1m[position]←[0m Disk position to swap to.
.
:PROGRAM_INTRO_HELP
A full-screen introduction to DOSBox-X.
INTRO [/RUN] [CDROM|MOUNT|USAGE|WELCOME]
.
:PROGRAM_IMGMOUNT_NOT_ASSIGNED
BIOS disk index does not have an image assigned.
.
:PROGRAM_IMGMOUNT_INVALID_NUMBER
Invalid mount number.
.
:PROGRAM_IMGMOUNT_INVALID_FSTYPE
Invalid fstype.
.
:PROGRAM_IMGMOUNT_INVALID_SIZE
Invalid size parameter.
.
:PROGRAM_IMGMOUNT_NOT_MOUNTED_NUMBER
Drive number %d is not mounted.
.
:PROGRAM_IMGMOUNT_UMOUNT_USAGE
Incorrect IMGMOUNT unmount usage.
.
:PROGRAM_IMGMOUNT_INVALID_LETTER
Invalid drive letter.
.
:PROGRAM_IMGMOUNT_CHOOSE_LETTER
Partitions cannot be mounted in conflict with the standard INT 13h hard disk
allotment. Choose a different drive letter to mount to.
.
:PROGRAM_ELTORITO_LETTER
El Torito emulation requires a proper CD-ROM drive letter.
.
:PROGRAM_ELTORITO_DRIVE_EXISTS
El Torito CD-ROM drive specified already exists as a non-CD-ROM device
.
:PROGRAM_ELTORITO_NOT_CDDRIVE
El Torito CD-ROM drive specified is not actually a CD-ROM drive.
.
:PROGRAM_ELTORITO_REQUIRE_FLOPPY
El Torito emulation must be used with -t floppy at this time.
.
:PROGRAM_ELTORITO_NO_BOOT_RECORD
El Torito CD-ROM boot record not found.
.
:PROGRAM_ELTORITO_ENTRY_UNREADABLE
El Torito entries unreadable.
.
:PROGRAM_ELTORITO_NO_BOOTABLE_FLOPPY
El Torito bootable floppy not found.
.
:PROGRAM_ELTORITO_BOOTABLE_SECTION
Unable to locate bootable section
.
:PROGRAM_ELTORITO_BOOTSECTOR
El Torito boot sector unreadable
.
:PROGRAM_IMGMAKE_ALIGNMENT
Invalid alignment
.
:PROGRAM_IMGMAKE_PARTOFS
Invalid -partofs
.
:PROGRAM_IMGMAKE_FAT
Invalid -fat option. Must be 12, 16, or 32
.
:PROGRAM_IMGMAKE_FATCOPIES
Invalid -fatcopies option
.
:PROGRAM_IMGMAKE_SPC
Invalid -spc option, out of range
.
:PROGRAM_IMGMAKE_SPC2
Invalid -spc option, must be a power of 2
.
:PROGRAM_IMGMAKE_ROOTDIR
Invalid -rootdir option
.
PROGRAM_IMGMAKE_BOOTSECT
Invalid bootsector position
.
PROGRAM_IMGMAKE_VOLUME_ALIGN
Sanity check failed: Volume size not aligned
.
:PROGRAM_IMGMAKE_FAT_ALIGN
Sanity check failed: FAT tables not aligned
.
:PROGRAM_IMGMAKE_SECTPERFAT
Error: Generated filesystem has more than 256 sectors per FAT and is not FAT32
.
:PROGRAM_IMGMAKE_VOLSIZE
Sanity check failed: Volume size not aligned
.
:PROGRAM_IMGMAKE_CLUSTERS
Error: Generated filesystem has too few clusters given the parameters
.
:PROGRAM_IMGMAKE_CLUSTERCOUNT
Warning: Cluster count is too high given the volume size.
Reporting a smaller sector count.
.
:PROGRAM_IMGMAKE_CLUSTER_ALIGN
Sanity check failed: First cluster not aligned
.
:PROGRAM_IMGMAKE_CLUSTER_SIZE
WARNING: Cluster sizes >= 64KB are not compatible with MS-DOS and SCANDISK
.
:PROGRAM_BOOT_UNSUPPORTED
Unsupported boot mode
.
:PROGRAM_MOUNT_OVERLAY_REPLACE
Existing overlay has been replaced with new overlay.
.
:PROGRAM_LOADFIX_EMS_FREE
EMS handle %u: unable to free
.
:PROGRAM_LOADFIX_XMS_FREE
XMS handle %u: unable to free
.
:PROGRAM_LOADFIX_EMS_ALLOC
EMS block allocated (%uKB)
.
:PROGRAM_LOADFIX_EMS_ALLOCERROR
Unable to allocate EMS block
.
PROGRAM_LOADFIX_NOEMS
EMS not active
.
:PROGRAM_LOADFIX_XMS_ALLOC
XMS block allocated (%uKB)
.
:PROGRAM_LOADFIX_XMS_ALLOCERROR
Unable to allocate XMS block
.
:PROGRAM_LOADFIX_NOXMS
XMS not active
.
:PROGRAM_LOADFIX_NOALLOC
Lowest MCB is above 64KB, nothing allocated
.
:PROGRAM_BOOT_SWAP_ALREADY
Multiple disk images specified and another drive is already connected to the swap list
.
:PROGRAM_BOOT_NOT_SPECIFIED
No images specified
.
:PROGRAM_BOOT_IS_PC88
The D88 image appears to target PC-88 and cannot be booted.
.
:PROGRAM_BOOT_BPS_TOOLARGE
Bytes/sector too large
.
:PROGRAM_BOOT_DRIVE_READERROR
Error reading drive
.
:PROGRAM_START_HELP_WIN
Starts a separate window to run a specified program or command.
START [+|-|_] command [arguments]
[+|-|_]: To maximize/minimize/hide the program.
The options /MAX, /MIN, /HID are also accepted.
command: The command, program or file to start.
arguments: Arguments to pass to the application.
START opens the Windows command prompt automatically to run these commands
and wait for a key press before exiting (specified by "startincon" option):
%s
Note: The path specified in this command is the path on the host system.
.
:PROGRAM_START_HELP
Starts a separate window to run a specified program or command.
START /OPEN file
START command [arguments]
/OPEN: To open a file or URL with the associated program.
file: The file or URL to open with the associated program.
command: The command or program to start or run.
arguments: Arguments to pass to the application.
Note: The path specified in this command is the path on the host system.
.
:PROGRAM_START_COMPLETED
The command execution is completed.
.
:PROGRAM_START_COMMAND
Starting %s...
.
:PROGRAM_START_CTRLC
(Press Ctrl+C to exit immediately)
.
:PROGRAM_START_HOST_ERROR
Error: START cannot launch application to run on your current host system.
.
:PROGRAM_START_LAUNCH_ERROR
Error: START could not launch application.
.
:PROGRAM_IMGMOUNT_ELTORITO_NO_FILE
Do not specify files when mounting floppy drives from El Torito bootable CDs
.
:PROGRAM_IMGMOUNT_RAMDRIVE_NO_FILE
Do not specify files when mounting RAM drives
.
:PROGRAM_IMGMOUNT_INVALID_SECTORSIZE
Sector size must be larger than 512 bytes and evenly divide the image cluster size of %lu bytes.
.
:PROGRAM_IMGMOUNT_OPEN_ERROR
Unable to open '%s'
.
:PROGRAM_IMGMOUNT_QCOW2_INVALID
qcow2 image '%s' is not supported
.
:PROGRAM_IMGMOUNT_GEOMETRY_ERROR
Unable to detect geometry
.
:PROGRAM_IMGMOUNT_DOS_VERSION
Mounting this image file requires a reported DOS version of %u.%u or higher.
%s
.
:PROGRAM_IMGMOUNT_INVALID_FLOPPYSIZE
Floppy size not recognized
.
:PROGRAM_IMGMOUNT_MULTIPLE_USED
Multiple images given and another drive already uses multiple images
.
:PROGRAM_IMGMOUNT_MULTIPLE_NOTSUPPORTED
Multiple disk images not supported for that drive
.
:PROGRAM_IMGMOUNT_HD_FDPOSITION
Cannot mount hard drive in floppy position.
.
:PROGRAM_IMGMOUNT_FD_HDPOSITION
Cannot mount floppy in hard drive position.
.
:PROGRAM_ELTORITO_ISOMOUNT
El Torito bootable CD: -fs iso mounting not supported
.
:PROGRAM_MODE_STATUS
Status for device CON:
----------------------
Columns=%d
Lines=%d
.
:PROGRAM_MODE_NOTSUPPORTED
Code page operation not supported on this device
.
:PROGRAM_MODE_RATE_DELAY
Rate and delay must be specified together
.
:PROGRAM_UTF8_HELP
Converts UTF-8 text to view in the current code page.
UTF8 < [drive:][path]filename
command-name | UTF8
.
:PROGRAM_UTF8_NO_TEXT
No input text found.
.
:PROGRAM_UTF8_INVALIDCP
Invalid code page for text conversion.
.
:PROGRAM_UTF8_NOT_UTF8
The input text is UTF-16.
.
:PROGRAM_UTF8_CONVERSION_ERROR
An error occurred during text conversion.
.
:PROGRAM_UTF16_HELP
Converts UTF-16 text to view in the current code page.
UTF16 [/BE|/LE] < [drive:][path]filename
command-name | UTF16 [/BE|/LE]
/BE Use UTF-16 Big Endian
/LE Use UTF-16 Little Endian
.
:PROGRAM_VTEXT_HELP
Changes V-text mode for the DOS/V emulation.
VTEXT [mode]
[mode] can be 0, 1, 2, for no V-text, V-text 1, and V-text 2 respectively.
Type VTEXT without a parameter to show the current V-text mode status.
.
:PROGRAM_NMITEST_HELP
Generates a non-maskable interrupt (NMI).
NMITEST
Note: This is a debugging tool to test if the interrupt handler works properly.
.
:PROGRAM_NMITEST_GENERATE_NMI
Generating a non-maskable interrupt (NMI)...
.
:PROGRAM_CAPMOUSE_HELP
Captures or releases the mouse inside DOSBox-X.
CAPMOUSE [/C|/R]
/C Capture the mouse
/R Release the mouse
.
:PROGRAM_CAPMOUSE_MOUSE
Mouse
.
:PROGRAM_CAPMOUSE_CURRENTLY
is currently
.
:PROGRAM_CAPMOUSE_CAPTURED
captured
.
:PROGRAM_CAPMOUSE_RELEASED
released
.
:PROGRAM_AUTOTYPE_HELP
Performs scripted keyboard entry into a running DOS program.
AUTOTYPE [-list] [-w WAIT] [-p PACE] button_1 [button_2 [...]]
Where:
-list: prints all available button names.
-w WAIT: seconds before typing begins. Two second default; max of 30.
-p PACE: seconds between each keystroke. Half-second default; max of 10.
The sequence is comprised of one or more space-separated buttons.
Autotyping begins after WAIT seconds, and each button is entered
every PACE seconds. The , character inserts an extra PACE delay.
Some examples:
←[32;1mAUTOTYPE -w 1 -p 0.3 up enter , right enter←[0m
←[32;1mAUTOTYPE -p 0.2 f1 kp_8 , , enter←[0m
←[32;1mAUTOTYPE -w 1.3 esc enter , p l a y e r enter←[0m
.
:PROGRAM_AUTOTYPE_NO_BINDINGS
AUTOTYPE: The mapper has no key bindings
.
:PROGRAM_AUTOTYPE_CLAMP_VALUE
AUTOTYPE: bounding %s value of %.2f to %.2f
.
:PROGRAM_AUTOTYPE_INVALID_VALUE
AUTOTYPE: %s value '%s' is not a valid floating point number
.
:PROGRAM_ADDKEY_HELP
Generates artificial keypresses.
ADDKEY [pmsec] [key]
For example, the command below types "dir" followed by ENTER after 1 second:
ADDKEY p1000 d i r enter
You could also try AUTOTYPE command instead of this command to perform
scripted keyboard entry into a running DOS program.
.
:PROGRAM_SETCOLOR_HELP
Views or changes the text-mode color scheme settings.
SETCOLOR [color# [value]]
For example:
←[32;1mSETCOLOR 0 (50,50,50)←[0m
Change Color #0 to the specified color value
←[32;1mSETCOLOR 7 -←[0m
Return Color #7 to the default color value
←[32;1mSETCOLOR 3 +←[0m
Return Color #3 to the preset color value
←[32;1mSETCOLOR MONO←[0m
Display current MONO mode status
To change the current background and foreground colors, use COLOR command.
.
:PROGRAM_SETCOLOR_STATUS
MONO mode status: %s (video mode %d)
.
:PROGRAM_SETCOLOR_ACTIVE
active
.
:PROGRAM_SETCOLOR_INACTIVE
inactive
.
:PROGRAM_SETCOLOR_UNAVAILABLE
unavailable
.
:PROGRAM_SETCOLOR_MONO_MODE7
MONO mode status => active (video mode 7)
.
:PROGRAM_SETCOLOR_MONO_MODE3
MONO mode status => inactive (video mode 3)
.
:PROGRAM_SETCOLOR_MONO_FAIL
Failed to change MONO mode
.
:PROGRAM_SETCOLOR_MONO_SYNTAX
Must be + or - for MONO: %s
.
:PROGRAM_SETCOLOR_COLOR
Color %d: (%d,%d,%d) or #%02x%02x%02x
.
:PROGRAM_SETCOLOR_INVALID_NUMBER
Invalid color number - %s
.
:PROGRAM_SETCOLOR_INVALID_VALUE
Invalid color value - %s
.
:PROGRAM_SETCOLOR_NOT_SUPPORTED
Changing color scheme is not supported for the current video mode.
.
:PROGRAM_BOOT_UNKNOWN_BOOTHAX
Unknown boothax mode
.
:PROGRAM_BOOT_SPECIFY_FILE
Must specify BIOS image to boot
.
:PROGRAM_BOOT_BIOS_OPEN_ERROR
Unable to open BIOS image
.
:PROGRAM_BIOSTEST_SPECIFY_FILE
Must specify BIOS file to load.
.
:PROGRAM_BIOSTEST_OPEN_ERROR
Can't open a file
.
:PROGRAM_BIOSTEST_TOO_LARGE
BIOS File too large
.
:PROGRAM_DELTREE_HELP
Deletes a directory and all the subdirectories and files in it.
To delete one or more files and directories:
DELTREE [/Y] [drive:]path [[drive:]path[...]]
/Y Suppresses prompting to confirm you want to delete
the subdirectory.
[drive:]path Specifies the name of the directory you want to delete.
Note: Use DELTREE cautiously. Every file and subdirectory within the
specified directory will be deleted.
.
:PROGRAM_TREE_HELP
Graphically displays the directory structure of a drive or path.
TREE [drive:][path] [/F] [/A]
/F Displays the names of the files in each directory.
/A Uses ASCII instead of extended characters.
.
:PROGRAM_TITLE_HELP
Sets the window title for the DOSBox-X window.
TITLE [string]
string Specifies the title for the DOSBox-X window.
.
:PROGRAM_COLOR_HELP
Sets the default console foreground and background colors.
COLOR [attr]
attr Specifies color attribute of console output
Color attributes are specified by TWO hex digits -- the first
corresponds to the background; the second to the foreground.
Each digit can be any of the following values:
0 = Black 8 = Gray
1 = Blue 9 = Light Blue
2 = Green A = Light Green
3 = Aqua B = Light Aqua
4 = Red C = Light Red
5 = Purple D = Light Purple
6 = Yellow E = Light Yellow
7 = White F = Bright White
If no argument is given, this command restores the original color.
The COLOR command sets ERRORLEVEL to 1 if an attempt is made to execute
the COLOR command with a foreground and background color that are the same.
Example: "COLOR fc" produces light red on bright white.
.

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
#define MyAppName "DOSBox-X"
#define MyAppVersion "2024.10.01"
#define MyAppVersion "2025.05.03"
#define MyAppBit "(32/64bit for Windows)"
#define MyAppPublisher "joncampbell123 [DOSBox-X Team]"
#define MyAppURL "https://dosbox-x.com/"

View File

@ -1,5 +1,5 @@
#define MyAppName "DOSBox-X"
#define MyAppVersion "2024.10.01"
#define MyAppVersion "2025.05.03"
#define MyAppBit "(32-bit)"
#define MyAppPublisher "joncampbell123 [DOSBox-X Team]"
#define MyAppURL "https://dosbox-x.com/"

View File

@ -1,5 +1,5 @@
#define MyAppName "DOSBox-X"
#define MyAppVersion "2024.10.01"
#define MyAppVersion "2025.05.03"
#define MyAppBit "(32/64bit for XP)"
#define MyAppPublisher "joncampbell123 [DOSBox-X Team]"
#define MyAppURL "https://dosbox-x.com/"

View File

@ -1,4 +1,4 @@
# This is the configuration file for DOSBox-X 2024.10.01. (Please use the latest version of DOSBox-X)
# This is the configuration file for DOSBox-X 2025.05.03. (Please use the latest version of DOSBox-X)
# Lines starting with a # are comment lines and are ignored by DOSBox-X.
# They are used to (briefly) document the effect of each option.
# To write out ALL options, use command 'config -all' with -wc or -writeconf options.
@ -14,7 +14,7 @@
# windowposition: Set the window position at startup in the positionX,positionY format (e.g.: 1300,200).
# The window will be centered with "," (or empty), and will be in the original position with "-".
# display: Specify a screen/display number to use for a multi-screen setup (0 = default).
# output: What video system to use for output (openglnb = OpenGL nearest; openglpp = OpenGL perfect; ttf = TrueType font output).
# output: What video system to use for output (surface = software (SDL_Surface); openglnb = OpenGL nearest; openglpp = OpenGL perfect; ttf = TrueType font output).
# Possible values: default, surface, overlay, ttf, opengl, openglnb, openglhq, openglpp, ddraw, direct3d.
# videodriver: Forces a video driver (e.g. windib/windows, directx, x11, fbcon, dummy, etc) for the SDL library to use.
# transparency: Set the transparency of the DOSBox-X screen (both windowed and full-screen modes, on SDL2 and Windows SDL1 builds).
@ -201,6 +201,11 @@ debuggerrun = debugger
# language: Select a language file for DOSBox-X to use. Encoded with either UTF-8 or a DOS code page.
# You can set code page either in the language file or with "country" setting in [config] section.
# title: Additional text to place in the title bar of the window.
# logo text: Text to place at the bottom of the screen during the startup logo. Text will line wrap automatically.
# To explicitly break to the next line, put \n in the string.
# logo: Location of PNG images to use in place of the DOSBox-X logo at startup.
# This is the path of the base file name. For example logo=subdir\sets\007\logo
# with machine=vgaonly will use subdir\sets\007\logo224x224.png as the logo.
# fastbioslogo: If set, DOSBox-X will skip the BIOS screen by activating fast BIOS logo mode (without 1-second pause).
#DOSBOX-X-ADV:# disable graphical splash: If set, DOSBox-X will always display text-mode BIOS splash screen instead of the graphical one.
#DOSBOX-X-ADV:# The text-mode BIOS screen will automatically be used if the TrueType font (TTF) output is enabled.
@ -362,10 +367,18 @@ debuggerrun = debugger
#DOSBOX-X-ADV:# acpi sci irq: IRQ to assign as ACPI system control interrupt. set to -1 to automatically assign.
#DOSBOX-X-ADV:# acpi iobase: I/O port base for the ACPI device Power Management registers. Set to 0 for automatic assignment.
#DOSBOX-X-ADV:# acpi reserved size: Amount of memory at top to reserve for ACPI structures and tables. Set to 0 for automatic assignment.
# memory file: If set, guest memory is memory-mapped from a file on disk, rather than allocated from memory.
# This option can help keep DOSBox-X from consuming too much RAM for large values of memsize.
# This option is required to emulate 4GB or more of RAM. The file will be created if it does not exist
# and it does not require any special maintenance or formatting.
# memsize: Amount of memory DOSBox-X has in megabytes.
# This value is best left at its default to avoid problems with some games,
# although other games and applications may require a higher value.
# Programs that use 286 protected mode like Windows 3.0 in Standard Mode may crash with more than 15MB.
# A memory file is required to emulate a memory size of 4GB or more.
# The maximum value allowed is affected by the memalias setting which affects the maximum amount of memory CPU can access as a power of 2.
# The maximum value is also affected by the CPU type. See DOSBox-X console and log file for details.
# The maximum setting 1048576 represents 1TB and requires at least a Pentium II and PSE-40 emulation.
#DOSBOX-X-ADV:# memsizekb: Amount of memory DOSBox-X has in kilobytes.
#DOSBOX-X-ADV:# This value should normally be set to 0.
#DOSBOX-X-ADV:# If nonzero, it is added to the memsize parameter.
@ -394,13 +407,18 @@ debuggerrun = debugger
#DOSBOX-X-ADV:# -1 means to use a reasonable default.
#DOSBOX-X-ADV:# memalias: Memory aliasing emulation, in number of valid address bits.
#DOSBOX-X-ADV:# Many 386/486 class motherboards and processors prior to 1995
#DOSBOX-X-ADV:# suffered from memory aliasing for various technical reasons. If the software you are
#DOSBOX-X-ADV:# trying to run assumes aliasing, or otherwise plays cheap tricks with paging,
#DOSBOX-X-ADV:# enabling this option can help. Note that enabling this option can cause slight performance degradation. Set to 0 to disable.
#DOSBOX-X-ADV:# had memory aliases for various technical reasons such as having
#DOSBOX-X-ADV:# less than 32 address bits on the CPU die.
#DOSBOX-X-ADV:# Recommended values when enabled:
#DOSBOX-X-ADV:# 0: Pick a value automatically according to cputype.
#DOSBOX-X-ADV:# NOTE: Changing the cputype after initial startup will not change the auto setting i.e.
#DOSBOX-X-ADV:# starting with cputype=8086 will use a memalias of 20 even if you later change cputype to 386.
#DOSBOX-X-ADV:# 24: 16MB aliasing. Common on 386SX systems (CPU had 24 external address bits)
#DOSBOX-X-ADV:# or 386DX and 486 systems where the CPU communicated directly with the ISA bus (A24-A31 tied off)
#DOSBOX-X-ADV:# 26: 64MB aliasing. Some 486s had only 26 external address bits, some motherboards tied off A26-A31
#DOSBOX-X-ADV:# 26: 64MB aliasing. Some 486 clones (and 386EX/CX) had only 26 external address bits, some motherboards tied off A26-A31
#DOSBOX-X-ADV:# 32: 4GB aliasing. This is normal for most 486/Pentium and later systems and is the default for most values of cputype.
#DOSBOX-X-ADV:# 36: 64GB aliasing. Recommended if you are emulating more than 3.5GB of RAM and Pentium Pro/II Page Size Extensions.
#DOSBOX-X-ADV:# 40: 1TB aliasing. Recommended if you are emulating more than 63GB of RAM and Pentium Pro/II Page Size Extensions.
# nocachedir: If set, MOUNT commands will mount with -nocachedir (disable directory caching) by default.
# freesizecap: If set to "cap" (="true"), the value of MOUNT -freesize will apply only if the actual free size is greater than the specified value.
# If set to "relative", the value of MOUNT -freesize will change relative to the specified value.
@ -450,6 +468,8 @@ debuggerrun = debugger
#DOSBOX-X-ADV-SEE:#
language =
title =
logo text =
logo =
fastbioslogo = false
#DOSBOX-X-ADV:disable graphical splash = false
startbanner = true
@ -504,6 +524,7 @@ a20 = mask
#DOSBOX-X-ADV:acpi sci irq = -1
#DOSBOX-X-ADV:acpi iobase = 0
#DOSBOX-X-ADV:acpi reserved size = 0
memory file =
memsize = 16
#DOSBOX-X-ADV:memsizekb = 0
#DOSBOX-X-ADV:dos mem limit = 0
@ -579,11 +600,13 @@ convertdrivefat = true
# Setting this option may prevent some scalers to work as expected.
# Try turning this option off in such case.
# For pixel-perfect scaling (output=openglpp), it is recommended to turn this option off.
#DOSBOX-X-ADV:# modeswitch: Let DOSBox-X determine the resolution of the monitor. This feature is only available when DOSBox-X is compiled with SDL2 support.
# scaler: Scaler used to enlarge/enhance low resolution modes. Add keyword 'forced', after the name of the scaler to always use the scaler even if the result might not be desired.(e.g. 'normal2x forced')
# Appending 'prompt' will cause a confirmation message for forcing the scaler.
# To fit a scaler in the resolution used at full screen may require a border or side bars.
# To fill the screen entirely, depending on your hardware, a different scaler/fullresolution might work.
# Scalers should work with most output options, but they are ignored for openglpp and TrueType font outputs.
# If you are using OpenGL/Direct3D output and a shader that requires it, set to hardware_none or hardware2x.
# Possible values: none, normal2x, normal3x, normal4x, normal5x, advmame2x, advmame3x, advinterp2x, advinterp3x, hq2x, hq3x, 2xsai, super2xsai, supereagle, tv2x, tv3x, rgb2x, rgb3x, scan2x, scan3x, gray, gray2x, hardware_none, hardware2x, hardware3x, hardware4x, hardware5x, xbrz, xbrz_bilinear.
# glshader: Path to GLSL shader source to use with OpenGL output ("none" to disable, or "default" for default shader).
# Can be either an absolute path, a file in the "glshaders" subdirectory of the DOSBox-X configuration directory, or one of the built-in shaders (e.g. "sharp" for the pixel-perfect scaling mode):
@ -599,7 +622,7 @@ convertdrivefat = true
# Possible values: green, amber, gray, white.
#DOSBOX-X-ADV-SEE:#
#DOSBOX-X-ADV-SEE:# Advanced options (see full configuration reference file [dosbox-x.reference.full.conf] for more details):
#DOSBOX-X-ADV-SEE:# -> xbrz slice; xbrz fixed scale factor; xbrz max scale factor
#DOSBOX-X-ADV-SEE:# -> modeswitch; xbrz slice; xbrz fixed scale factor; xbrz max scale factor
#DOSBOX-X-ADV-SEE:#
frameskip = 0
aspect = false
@ -607,6 +630,7 @@ aspect_ratio = 0:0
char9 = true
euro = -1
doublescan = true
#DOSBOX-X-ADV:modeswitch = false
scaler = normal2x
glshader = none
pixelshader = none
@ -812,6 +836,9 @@ j3100colorscroll = false
#DOSBOX-X-ADV:# If your game is not sensitive to VGA RAM I/O speed, then turning on this option
#DOSBOX-X-ADV:# will do nothing but cause a significant drop in frame rate which is probably not
#DOSBOX-X-ADV:# what you want. Recommended values -1, 0 to 2000.
#DOSBOX-X-ADV:# lfb vmemdelay: Set this option to true if you need vmemdelay to apply to SVGA and linear framebuffer video modes as well.
#DOSBOX-X-ADV:# This affects anything in which DOSBox-X emulates as a linear framebuffer including MDA/Hercules and PC-98 LFB.
#DOSBOX-X-ADV:# Note that this option may slightly reduce emulator performance with such modes.
#DOSBOX-X-ADV:# prevent capture: This option allows you to prevent capture of the DOSBox window, if an API is provided by the system to do so.
#DOSBOX-X-ADV:# empty or none: the window is normal and it can be screen captured.
#DOSBOX-X-ADV:# blank: notify the system so that if a screenshot is attempted, the window appears blank.
@ -1016,10 +1043,11 @@ j3100colorscroll = false
# Possible values: true, false, 1, 0, auto.
#DOSBOX-X-ADV-SEE:#
#DOSBOX-X-ADV-SEE:# Advanced options (see full configuration reference file [dosbox-x.reference.full.conf] for more details):
#DOSBOX-X-ADV-SEE:# -> int 10h use video parameter table; vmemdelay; prevent capture; vbe window granularity; vbe window size; enable 8-bit dac; svga lfb base; pci vga; vga attribute controller mapping; enable supermegazeux tweakmode; vga bios use rom image; vga bios rom image; vga bios size override; video bios dont duplicate cga first half rom font; video bios always offer 14-pixel high rom font; video bios always offer 16-pixel high rom font; video bios enable cga second half rom font; forcerate; sierra ramdac; sierra ramdac lock 565; vga fill active memory; page flip debug line; vertical retrace poll debug line; cgasnow; vga 3da undefined bits; rom bios 8x8 CGA font; rom bios video parameter table; int 10h points at vga bios; unmask timer on int 10 setmode; vesa bank switching window mirroring; vesa bank switching window range check; vesa zero buffer on get information; vesa set display vsync; vesa lfb base scanline adjust; vesa lfb pel scanline adjust; vesa map non-lfb modes to 128kb region; ega per scanline hpel; allow hpel effects; allow hretrace effects; hretrace effect weight; vesa modelist cap; vesa modelist width limit; vesa modelist height limit; vesa vbe put modelist in vesa information; vesa vbe 1.2 modes are 32bpp; allow low resolution vesa modes; allow explicit 24bpp vesa modes; allow high definition vesa modes; allow unusual vesa modes; allow 32bpp vesa modes; allow 24bpp vesa modes; allow 16bpp vesa modes; allow 15bpp vesa modes; allow 8bpp vesa modes; allow 4bpp vesa modes; allow 4bpp packed vesa modes; allow tty vesa modes; double-buffered line compare; ignore vblank wraparound; ignore extended memory bit; enable vga resize delay; resize only on vga active display width increase; vga palette update on full load; ignore odd-even mode in non-cga modes; ignore sequencer blanking
#DOSBOX-X-ADV-SEE:# -> int 10h use video parameter table; vmemdelay; lfb vmemdelay; prevent capture; vbe window granularity; vbe window size; enable 8-bit dac; svga lfb base; pci vga; vga attribute controller mapping; enable supermegazeux tweakmode; vga bios use rom image; vga bios rom image; vga bios size override; video bios dont duplicate cga first half rom font; video bios always offer 14-pixel high rom font; video bios always offer 16-pixel high rom font; video bios enable cga second half rom font; forcerate; sierra ramdac; sierra ramdac lock 565; vga fill active memory; page flip debug line; vertical retrace poll debug line; cgasnow; vga 3da undefined bits; rom bios 8x8 CGA font; rom bios video parameter table; int 10h points at vga bios; unmask timer on int 10 setmode; vesa bank switching window mirroring; vesa bank switching window range check; vesa zero buffer on get information; vesa set display vsync; vesa lfb base scanline adjust; vesa lfb pel scanline adjust; vesa map non-lfb modes to 128kb region; ega per scanline hpel; allow hpel effects; allow hretrace effects; hretrace effect weight; vesa modelist cap; vesa modelist width limit; vesa modelist height limit; vesa vbe put modelist in vesa information; vesa vbe 1.2 modes are 32bpp; allow low resolution vesa modes; allow explicit 24bpp vesa modes; allow high definition vesa modes; allow unusual vesa modes; allow 32bpp vesa modes; allow 24bpp vesa modes; allow 16bpp vesa modes; allow 15bpp vesa modes; allow 8bpp vesa modes; allow 4bpp vesa modes; allow 4bpp packed vesa modes; allow tty vesa modes; double-buffered line compare; ignore vblank wraparound; ignore extended memory bit; enable vga resize delay; resize only on vga active display width increase; vga palette update on full load; ignore odd-even mode in non-cga modes; ignore sequencer blanking
#DOSBOX-X-ADV-SEE:#
#DOSBOX-X-ADV:int 10h use video parameter table = auto
#DOSBOX-X-ADV:vmemdelay = 0
#DOSBOX-X-ADV:lfb vmemdelay = false
#DOSBOX-X-ADV:prevent capture =
vmemsize = -1
vmemsizekb = 0
@ -1101,7 +1129,7 @@ vsyncrate = 75
# core: CPU Core used in emulation. auto will switch to dynamic if available and appropriate.
# For the dynamic core, both dynamic_x86 and dynamic_rec are supported (dynamic_x86 is preferred).
# Windows 95 or other preemptive multitasking OSes will not work with the dynamic_rec core.
# Possible values: auto, dynamic, dynamic_x86, dynamic_nodhfpu, dynamic, dynamic_rec, normal, full, simple.
# Possible values: auto, dynamic, dynamic_x86, dynamic_nodhfpu, dynamic_rec, normal, full, simple.
# fpu: Enable FPU emulation
# Possible values: true, false, 1, 0, auto, 8087, 287, 387.
#DOSBOX-X-ADV:# cpuid string: If set, changes the string returned by the CPUID instruction. Normally by default the string is 'GenuineIntel'.
@ -1129,9 +1157,16 @@ vsyncrate = 75
#DOSBOX-X-ADV:# report fdiv bug: If set, the FDIV bug will be reported with the cputype=pentium setting.
#DOSBOX-X-ADV:# enable msr: Allow RDMSR/WRMSR instructions. This option is only meaningful when cputype=pentium.
#DOSBOX-X-ADV:# WARNING: Leaving this option enabled while installing Windows 95/98/ME can cause crashes.
#DOSBOX-X-ADV:# enable pse: Allow PSE (Page Size Extensions) to paging.
#DOSBOX-X-ADV:# none=Do not enable PSE
#DOSBOX-X-ADV:# auto=Controlled by cpu type
#DOSBOX-X-ADV:# pse=Basic PSE
#DOSBOX-X-ADV:# pse36=PSE with 36-bit addressing
#DOSBOX-X-ADV:# pse40=PSE with 40-bit addressing
#DOSBOX-X-ADV:# Possible values: auto, none, pse, pse36, pse40, true, false.
#DOSBOX-X-ADV:# enable cmpxchg8b: Enable Pentium CMPXCHG8B instruction. Enable this explicitly if using software that uses this instruction.
#DOSBOX-X-ADV:# You must enable this option to run Windows ME because portions of the kernel rely on this instruction.
#DOSBOX-X-ADV:# enable syscall: Allow SYSENTER/SYSEXIT instructions. This option is only meaningful when cputype=pentium_ii.
#DOSBOX-X-ADV:# enable syscall: Allow SYSENTER/SYSEXIT instructions. This option is only meaningful when is cputype=pentium_ii or higher.
#DOSBOX-X-ADV:#
#DOSBOX-X-ADV:# ignore undefined msr: Ignore RDMSR/WRMSR on undefined registers. Normally the CPU will fire an Invalid Opcode exception in that case.
#DOSBOX-X-ADV:# This option is off by default, enable if using software or drivers that assumes the presence of
@ -1203,7 +1238,7 @@ vsyncrate = 75
#DOSBOX-X-ADV:# then jump to realmode with B still set (aka Huge Unreal mode). Needed for Project Angel.
#DOSBOX-X-ADV-SEE:#
#DOSBOX-X-ADV-SEE:# Advanced options (see full configuration reference file [dosbox-x.reference.full.conf] for more details):
#DOSBOX-X-ADV-SEE:# -> cpuid string; processor serial number; double fault; clear trap flag on unhandled int 1; reset on triple fault; always report double fault; always report triple fault; mask stack pointer for enter leave instructions; allow lmsw to exit protected mode; report fdiv bug; enable msr; enable cmpxchg8b; enable syscall; ignore undefined msr; interruptible rep string op; dynamic core cache block size; cycle emulation percentage adjust; stop turbo on key; stop turbo after second; use dynamic core with paging on; ignore opcode 63; apmbios pnp; apm power button event; apmbios version; apmbios allow realmode; apmbios allow 16-bit protected mode; apmbios allow 32-bit protected mode; integration device pnp; isapnpport; realbig16
#DOSBOX-X-ADV-SEE:# -> cpuid string; processor serial number; double fault; clear trap flag on unhandled int 1; reset on triple fault; always report double fault; always report triple fault; mask stack pointer for enter leave instructions; allow lmsw to exit protected mode; report fdiv bug; enable msr; enable pse; enable cmpxchg8b; enable syscall; ignore undefined msr; interruptible rep string op; dynamic core cache block size; cycle emulation percentage adjust; stop turbo on key; stop turbo after second; use dynamic core with paging on; ignore opcode 63; apmbios pnp; apm power button event; apmbios version; apmbios allow realmode; apmbios allow 16-bit protected mode; apmbios allow 32-bit protected mode; integration device pnp; isapnpport; realbig16
#DOSBOX-X-ADV-SEE:#
core = auto
fpu = true
@ -1220,6 +1255,7 @@ segment limits = true
#DOSBOX-X-ADV:allow lmsw to exit protected mode = auto
#DOSBOX-X-ADV:report fdiv bug = false
#DOSBOX-X-ADV:enable msr = true
#DOSBOX-X-ADV:enable pse = auto
#DOSBOX-X-ADV:enable cmpxchg8b = true
#DOSBOX-X-ADV:enable syscall = true
#DOSBOX-X-ADV:ignore undefined msr = false
@ -1394,6 +1430,9 @@ blocksize = 1024
prebuffer = 25
[midi]
#DOSBOX-X-ADV:# roland gs sysex: Listen for and handle some Roland GS System Exclusive messages, such as GS Reset and Master Volume.
#DOSBOX-X-ADV:# This is needed for PC-98 games that have hanging/stuck MIDI note problems because they rely on these
#DOSBOX-X-ADV:# messages to reset the synth rather than using standard MIDI commands.
# mpu401: Type of MPU-401 to emulate.
# Possible values: intelligent, uart, none.
# mpubase: The IO address of the MPU-401.
@ -1523,8 +1562,9 @@ prebuffer = 25
#DOSBOX-X-ADV:# Possible values: 0, 1.
#DOSBOX-X-ADV-SEE:#
#DOSBOX-X-ADV-SEE:# Advanced options (see full configuration reference file [dosbox-x.reference.full.conf] for more details):
#DOSBOX-X-ADV-SEE:# -> mt32.reverse.stereo; mt32.verbose; mt32.thread; mt32.chunk; mt32.prebuffer; mt32.partials; mt32.dac; mt32.analog; mt32.output.gain; mt32.reverb.mode; mt32.reverb.output.gain; mt32.reverb.time; mt32.reverb.level; mt32.rate; mt32.src.quality; mt32.niceampramp; mt32.engage.channel1; fluid.samplerate; fluid.gain; fluid.polyphony; fluid.cores; fluid.periods; fluid.periodsize; fluid.reverb; fluid.chorus; fluid.reverb.roomsize; fluid.reverb.damping; fluid.reverb.width; fluid.reverb.level; fluid.chorus.number; fluid.chorus.level; fluid.chorus.speed; fluid.chorus.depth; fluid.chorus.type
#DOSBOX-X-ADV-SEE:# -> roland gs sysex; mt32.reverse.stereo; mt32.verbose; mt32.thread; mt32.chunk; mt32.prebuffer; mt32.partials; mt32.dac; mt32.analog; mt32.output.gain; mt32.reverb.mode; mt32.reverb.output.gain; mt32.reverb.time; mt32.reverb.level; mt32.rate; mt32.src.quality; mt32.niceampramp; mt32.engage.channel1; fluid.samplerate; fluid.gain; fluid.polyphony; fluid.cores; fluid.periods; fluid.periodsize; fluid.reverb; fluid.chorus; fluid.reverb.roomsize; fluid.reverb.damping; fluid.reverb.width; fluid.reverb.level; fluid.chorus.number; fluid.chorus.level; fluid.chorus.speed; fluid.chorus.depth; fluid.chorus.type
#DOSBOX-X-ADV-SEE:#
#DOSBOX-X-ADV:roland gs sysex = true
mpu401 = intelligent
mpubase = 0
mididevice = default
@ -1572,7 +1612,7 @@ fluid.soundfont =
[sblaster]
# sbtype: Type of Sound Blaster to emulate. 'gb' is Game Blaster.
# Possible values: sb1, sb2, sbpro1, sbpro2, sb16, sb16vibra, gb, ess688, ess1688, reveal_sc400, none.
# Possible values: sb1, sb1.0, sb1.5, sb2, sb2.0, sb2.01, sbpro1, sbpro2, sb16, sb16vibra, gb, ess688, ess1688, reveal_sc400, none.
# sbbase: The IO address of the Sound Blaster.
# 220h to 2E0h are for use with IBM PC Sound Blaster emulation.
# D2h to DEh are for use with NEC PC-98 Sound Blaster 16 emulation.
@ -1744,6 +1784,7 @@ blaster environment variable = true
# If auto, automatically choose based on other settings such as GUS type.
# This setting may be needed for DOS demoscene entries that assume aliasing behavior such as Out of Control by Contract.
# Possible values: true, false, 1, 0, auto.
#DOSBOX-X-ADV:# warn on out of bounds dram access: Controls whether attempts to access GUS DRAM beyond the 1MB maximum supported by the card are logged to the log file as a warning.
#DOSBOX-X-ADV:# autoamp: If set, GF1 output will reduce in volume automatically if the sum of all channels exceeds full volume.
#DOSBOX-X-ADV:# If not set, then loud music will clip to full volume just as it would on real hardware.
#DOSBOX-X-ADV:# Enable this option for loud music if you want a more pleasing rendition without saturation and distortion.
@ -1799,10 +1840,11 @@ blaster environment variable = true
# with Timidity should work fine.
#DOSBOX-X-ADV-SEE:#
#DOSBOX-X-ADV-SEE:# Advanced options (see full configuration reference file [dosbox-x.reference.full.conf] for more details):
#DOSBOX-X-ADV-SEE:# -> autoamp; unmask dma; ignore channel count while active; pic unmask irq; startup initialized; dma enable on dma control polling; clear dma tc irq if excess polling; force master irq enable; gus panning table; gus fixed render rate; irq hack
#DOSBOX-X-ADV-SEE:# -> warn on out of bounds dram access; autoamp; unmask dma; ignore channel count while active; pic unmask irq; startup initialized; dma enable on dma control polling; clear dma tc irq if excess polling; force master irq enable; gus panning table; gus fixed render rate; irq hack
#DOSBOX-X-ADV-SEE:#
gus = false
global register read alias = auto
#DOSBOX-X-ADV:warn on out of bounds dram access = false
#DOSBOX-X-ADV:autoamp = false
#DOSBOX-X-ADV:unmask dma = false
#DOSBOX-X-ADV:ignore channel count while active = false
@ -2175,6 +2217,9 @@ timeout = 0
[dos]
# xms: Enable XMS support.
#DOSBOX-X-ADV:# turn off a20 gate on load if loadfix needed: If enabled, and loading a program below the 64kb boundary, turn off the A20 gate.
#DOSBOX-X-ADV:# This can help with any program with startup code that assumes the segment wraparound of the 8086.
#DOSBOX-X-ADV:# Depending on DOS configuration the A20 gate may be re-enabled later such as calling INT 21h.
#DOSBOX-X-ADV:# xms memmove causes flat real mode: If set, any call to XMS to move/copy memory sets up flat real mode for segment registers DS and ES.
#DOSBOX-X-ADV:# xms init causes flat real mode: If set, when the DOS kernel initializes XMS it will switch on flat real mode for segment registers DS and ES if appropriate.
#DOSBOX-X-ADV:# resized free memory block becomes allocated: If set, and the DOS application resizes a freed memory block, that block will be marked as allocated to that program.
@ -2304,6 +2349,9 @@ timeout = 0
#DOSBOX-X-ADV:# Possible values: true, false, 1, 0, auto.
#DOSBOX-X-ADV:# private area in umb: If set, keep private DOS segment in upper memory block, usually segment 0xC800 (Mainline DOSBox behavior)
#DOSBOX-X-ADV:# If clear, place private DOS segment at the base of system memory (just below the MCB)
#DOSBOX-X-ADV:# private area write protect: If set, prevent the guest from writing to the DOSBox private area. The emulator itself can still write to it, of course.
#DOSBOX-X-ADV:# Some DOS games have sloppy video routines that can spill over and corrupt the private area and cause problems.
#DOSBOX-X-ADV:# This option when set can prevent that errant game from causing crashes.
# quick reboot: If set, the DOS restart call will reboot the emulated DOS (integrated DOS or guest DOS) instead of the virtual machine.
#
# ver: Set DOS version. Specify as major.minor format. A single number is treated as the major version (compatible with LFN support). Common settings are:
@ -2341,6 +2389,7 @@ timeout = 0
# startwait: Specify whether DOSBox-X should wait for the host system applications after they are started.
# startquiet: If set, before launching host system applications to run on the host DOSBox-X will not show messages like "Now run it as a Windows application".
#DOSBOX-X-ADV:# startincon: START command will start these commands (separated by space) in a console and wait for a key press before exiting.
# startnopause: If set, DOSBox-X will not pause after host command execution is completed.
# vmware: Enable VMware interface emulation including guest mouse integration (when used along with e.g. VMware mouse driver for Windows 3.x).
# int33: Enable INT 33H for mouse support.
#DOSBOX-X-ADV:# int33 max x: For guest to host cursor integration with DOS games, assume the maximum reported X coordinate has this value, if this is nonzero.
@ -2353,6 +2402,10 @@ timeout = 0
#DOSBOX-X-ADV:# x=spec, y=spec
#DOSBOX-X-ADV:# spec: <number> position adjust, can be positive or negative
#DOSBOX-X-ADV:# max-excess if game sets maximum larger than int33 max x/y, adjust the position forward by the difference
#DOSBOX-X-ADV:# int33 mickey threshold: The smallest amount of mouse motion that will be reported to the guest. Motion below this amount is buffered until the threshold is met.
#DOSBOX-X-ADV:# Some DOS programs do not properly respond to small mouse movements causing effects like a sluggish cursor or cursor drift.
#DOSBOX-X-ADV:# Increase this option to the smallest value that achieves natural feeling motion.
#DOSBOX-X-ADV:# - Ultima Underworld: Use 2
# mouse report rate: Mouse reporting rate, or 0 for auto. This affects how often mouse events are reported to the guest through the mouse interrupt.
# Some games including CyClone need a lower reporting rate to function correctly. Auto mode allows the guest to change the report rate through the PS/2 mouse emulation.
# This option does not affect any DOS game that uses polling through INT 33h to detect mouse movement.
@ -2405,9 +2458,10 @@ timeout = 0
# dos idle api: If set, DOSBox-X can lower the host system's CPU load when a supported guest program is idle.
#DOSBOX-X-ADV-SEE:#
#DOSBOX-X-ADV-SEE:# Advanced options (see full configuration reference file [dosbox-x.reference.full.conf] for more details):
#DOSBOX-X-ADV-SEE:# -> xms memmove causes flat real mode; xms init causes flat real mode; resized free memory block becomes allocated; badcommandhandler; mscdex device name; hma allow reservation; command shell flush keyboard buffer; special operation file prefix; drive z is remote; drive z convert fat; drive z expand path; drive z hide files; automount drive directories; hidenonrepresentable; hma minimum allocation; dos sda size; hma free space; cpm compatibility mode; minimum dos initial private segment; minimum mcb segment; enable dummy device mcb; maximum environment block size on exec; additional environment block size on exec; enable a20 on windows init; zero memory on xms memory allocation; vcpi; unmask timer on disk io; zero int 67h if no ems; zero unused int 68h; emm386 startup active; zero memory on ems memory allocation; ems system handle memory size; ems system handle on even megabyte; ems frame; umb start; umb end; kernel allocation in umb; keep umb on boot; keep private area on boot; private area in umb; autoa20fix; autoloadfix; startincon; int33 max x; int33 max y; int33 xy adjust; int33 hide host cursor if interrupt subroutine; int33 hide host cursor when polling; int33 disable cell granularity; int 13 disk change detect; int 13 extensions; biosps2; int15 wait force unmask irq; int15 mouse callback does not preserve registers; filenamechar; collating and uppercase; con device use int 16h to detect keyboard input; zero memory on int 21h memory allocation; pipe temporary device
#DOSBOX-X-ADV-SEE:# -> turn off a20 gate on load if loadfix needed; xms memmove causes flat real mode; xms init causes flat real mode; resized free memory block becomes allocated; badcommandhandler; mscdex device name; hma allow reservation; command shell flush keyboard buffer; special operation file prefix; drive z is remote; drive z convert fat; drive z expand path; drive z hide files; automount drive directories; hidenonrepresentable; hma minimum allocation; dos sda size; hma free space; cpm compatibility mode; minimum dos initial private segment; minimum mcb segment; enable dummy device mcb; maximum environment block size on exec; additional environment block size on exec; enable a20 on windows init; zero memory on xms memory allocation; vcpi; unmask timer on disk io; zero int 67h if no ems; zero unused int 68h; emm386 startup active; zero memory on ems memory allocation; ems system handle memory size; ems system handle on even megabyte; ems frame; umb start; umb end; kernel allocation in umb; keep umb on boot; keep private area on boot; private area in umb; private area write protect; autoa20fix; autoloadfix; startincon; int33 max x; int33 max y; int33 xy adjust; int33 mickey threshold; int33 hide host cursor if interrupt subroutine; int33 hide host cursor when polling; int33 disable cell granularity; int 13 disk change detect; int 13 extensions; biosps2; int15 wait force unmask irq; int15 mouse callback does not preserve registers; filenamechar; collating and uppercase; con device use int 16h to detect keyboard input; zero memory on int 21h memory allocation; pipe temporary device
#DOSBOX-X-ADV-SEE:#
xms = true
#DOSBOX-X-ADV:turn off a20 gate on load if loadfix needed = false
#DOSBOX-X-ADV:xms memmove causes flat real mode = true
#DOSBOX-X-ADV:xms init causes flat real mode = false
#DOSBOX-X-ADV:resized free memory block becomes allocated = true
@ -2461,6 +2515,7 @@ umb = true
#DOSBOX-X-ADV:keep umb on boot = false
#DOSBOX-X-ADV:keep private area on boot = auto
#DOSBOX-X-ADV:private area in umb = true
#DOSBOX-X-ADV:private area write protect = false
quick reboot = false
ver =
lfn = auto
@ -2477,11 +2532,13 @@ starttranspath = true
startwait = true
startquiet = false
#DOSBOX-X-ADV:startincon = assoc attrib chcp copy dir echo for ftype help if set type ver vol xcopy
startnopause = false
vmware = true
int33 = true
#DOSBOX-X-ADV:int33 max x = 0
#DOSBOX-X-ADV:int33 max y = 0
#DOSBOX-X-ADV:int33 xy adjust =
#DOSBOX-X-ADV:int33 mickey threshold = 1
mouse report rate = 0
#DOSBOX-X-ADV:int33 hide host cursor if interrupt subroutine = true
#DOSBOX-X-ADV:int33 hide host cursor when polling = false

View File

@ -18,11 +18,28 @@ To change to the drive mounted like above, type "C:". If everything went fine, D
Hint: DOSBox-X supports different video output systems for different purposes. By default it uses the Direct3D output, but if you desire the pixel-perfect scaling feature for improved image quality you may want to select the openglpp output ("OpenGL perfect"). Also, if you use text-mode DOS applications and/or the DOS shell frequently you probably want to select the TrueType font (TTF) output to make the text screen look much better by using scalable TrueType fonts.
Troubleshooting
===============
- Choosing the appropriate build for your Windows version
Modern Windows users (7 and after) should use the standard (non-XP, non-lowend) builds but may try the non-standard builds if you prefer, although officially not supported.
Windows 9x/NT4/2000 users should use the MinGW lowend 9x builds (32-bit SDL1 only).
Windows XP users must use the XP compatible installer with "XP" in the file name, which includes Visual Studio XP builds and the 32-bit MinGW low-end builds. Note that not all features are available in the MinGW low-end builds, currently Slirp support is known to be missing. You also need to install the DirectX runtime or DOSBox-X will complain you're missing XInput9_1_0.dll. XP compatible builds works in ReactOS as well, but support is considered experimental.
Windows Vista users can use the XP installer or standard (non-XP) Visual Studio builds, because standard (non-XP) installer doesn't work in Vista. MinGW dropped support for XP/Vista, so install the 32-bit low-end builds from the XP compatible installer if you prefer MinGW builds.
- Joystick support for SDL1 builds
Regarding Joystick support, the SDL1 builds requires XInput compatible devices. If your joystick is not Xinput compatible, you may want to try the SDL2 builds or DirectInput to XInput wrappers such as XOutput or Xbox 360 controller emulator.
XOutput: https://github.com/csutorasa/XOutput
Xbox 360 controller emulator: https://www.x360ce.com/
Further Information
===================
Please visit the DOSBox-X homepage for the latest information about DOSBox-X:
https://dosbox-x.com/ or http://dosbox-x.software/
Also, some useful information such as install and build instructions can be found in the official README file
https://github.com/joncampbell123/dosbox-x?tab=readme-ov-file#
For a complete DOSBox-X user guide, including common ways to configure DOSBox-X and its usage tips, please visit the DOSBox-X Wiki:
https://dosbox-x.com/wiki

View File

@ -0,0 +1,5 @@
Notes:
- Starting with Windows 3.0, the stock EGA/VGA drivers require a 80186 or
higher, they do not work on an 8086. This is due to the use of instructions
not supported by the 8086.

View File

@ -1,4 +1,4 @@
# This is the configuration file for DOSBox-X 2024.10.01. (Please use the latest version of DOSBox-X)
# This is the configuration file for DOSBox-X 2025.05.03. (Please use the latest version of DOSBox-X)
# Lines starting with a # are comment lines and are ignored by DOSBox-X.
# They are used to (briefly) document the effect of each option.
# To write out ALL options, use command 'config -all' with -wc or -writeconf options.
@ -14,7 +14,7 @@
# windowposition: Set the window position at startup in the positionX,positionY format (e.g.: 1300,200).
# The window will be centered with "," (or empty), and will be in the original position with "-".
# display: Specify a screen/display number to use for a multi-screen setup (0 = default).
# output: What video system to use for output (openglnb = OpenGL nearest; openglpp = OpenGL perfect; ttf = TrueType font output).
# output: What video system to use for output (surface = software (SDL_Surface); openglnb = OpenGL nearest; openglpp = OpenGL perfect; ttf = TrueType font output).
# Possible values: default, surface, overlay, ttf, opengl, openglnb, openglhq, openglpp, ddraw, direct3d.
# videodriver: Forces a video driver (e.g. windib/windows, directx, x11, fbcon, dummy, etc) for the SDL library to use.
# transparency: Set the transparency of the DOSBox-X screen (both windowed and full-screen modes, on SDL2 and Windows SDL1 builds).
@ -119,6 +119,11 @@ debuggerrun = debugger
# language: Select a language file for DOSBox-X to use. Encoded with either UTF-8 or a DOS code page.
# You can set code page either in the language file or with "country" setting in [config] section.
# title: Additional text to place in the title bar of the window.
# logo text: Text to place at the bottom of the screen during the startup logo. Text will line wrap automatically.
# To explicitly break to the next line, put \n in the string.
# logo: Location of PNG images to use in place of the DOSBox-X logo at startup.
# This is the path of the base file name. For example logo=subdir\sets\007\logo
# with machine=vgaonly will use subdir\sets\007\logo224x224.png as the logo.
# fastbioslogo: If set, DOSBox-X will skip the BIOS screen by activating fast BIOS logo mode (without 1-second pause).
# startbanner: If set (default), DOSBox-X will display the welcome banner when it starts.
# bannercolortheme: You can specify a different background color theme for the welcome banner from the default one.
@ -187,10 +192,18 @@ debuggerrun = debugger
# on Lock A20 gate on (Software/OS cannot disable A20)
# off_fake Lock A20 gate off but allow bit to toggle (hope your DOS game tests the HMA!)
# on_fake Lock A20 gate on but allow bit to toggle
# memory file: If set, guest memory is memory-mapped from a file on disk, rather than allocated from memory.
# This option can help keep DOSBox-X from consuming too much RAM for large values of memsize.
# This option is required to emulate 4GB or more of RAM. The file will be created if it does not exist
# and it does not require any special maintenance or formatting.
# memsize: Amount of memory DOSBox-X has in megabytes.
# This value is best left at its default to avoid problems with some games,
# although other games and applications may require a higher value.
# Programs that use 286 protected mode like Windows 3.0 in Standard Mode may crash with more than 15MB.
# A memory file is required to emulate a memory size of 4GB or more.
# The maximum value allowed is affected by the memalias setting which affects the maximum amount of memory CPU can access as a power of 2.
# The maximum value is also affected by the CPU type. See DOSBox-X console and log file for details.
# The maximum setting 1048576 represents 1TB and requires at least a Pentium II and PSE-40 emulation.
# nocachedir: If set, MOUNT commands will mount with -nocachedir (disable directory caching) by default.
# freesizecap: If set to "cap" (="true"), the value of MOUNT -freesize will apply only if the actual free size is greater than the specified value.
# If set to "relative", the value of MOUNT -freesize will change relative to the specified value.
@ -203,6 +216,8 @@ debuggerrun = debugger
#
language =
title =
logo text =
logo =
fastbioslogo = false
startbanner = true
bannercolortheme = default
@ -225,6 +240,7 @@ savefile =
saveremark = true
forceloadstate = false
a20 = mask
memory file =
memsize = 16
nocachedir = false
freesizecap = cap
@ -279,6 +295,7 @@ convertdrivefat = true
# To fit a scaler in the resolution used at full screen may require a border or side bars.
# To fill the screen entirely, depending on your hardware, a different scaler/fullresolution might work.
# Scalers should work with most output options, but they are ignored for openglpp and TrueType font outputs.
# If you are using OpenGL/Direct3D output and a shader that requires it, set to hardware_none or hardware2x.
# Possible values: none, normal2x, normal3x, normal4x, normal5x, advmame2x, advmame3x, advinterp2x, advinterp3x, hq2x, hq3x, 2xsai, super2xsai, supereagle, tv2x, tv3x, rgb2x, rgb3x, scan2x, scan3x, gray, gray2x, hardware_none, hardware2x, hardware3x, hardware4x, hardware5x, xbrz, xbrz_bilinear.
# glshader: Path to GLSL shader source to use with OpenGL output ("none" to disable, or "default" for default shader).
# Can be either an absolute path, a file in the "glshaders" subdirectory of the DOSBox-X configuration directory, or one of the built-in shaders (e.g. "sharp" for the pixel-perfect scaling mode):
@ -291,7 +308,7 @@ convertdrivefat = true
# Possible values: green, amber, gray, white.
#
# Advanced options (see full configuration reference file [dosbox-x.reference.full.conf] for more details):
# -> xbrz slice; xbrz fixed scale factor; xbrz max scale factor
# -> modeswitch; xbrz slice; xbrz fixed scale factor; xbrz max scale factor
#
frameskip = 0
aspect = false
@ -431,7 +448,7 @@ j3100colorscroll = false
# Possible values: true, false, 1, 0, auto.
#
# Advanced options (see full configuration reference file [dosbox-x.reference.full.conf] for more details):
# -> int 10h use video parameter table; vmemdelay; prevent capture; vbe window granularity; vbe window size; enable 8-bit dac; svga lfb base; pci vga; vga attribute controller mapping; enable supermegazeux tweakmode; vga bios use rom image; vga bios rom image; vga bios size override; video bios dont duplicate cga first half rom font; video bios always offer 14-pixel high rom font; video bios always offer 16-pixel high rom font; video bios enable cga second half rom font; forcerate; sierra ramdac; sierra ramdac lock 565; vga fill active memory; page flip debug line; vertical retrace poll debug line; cgasnow; vga 3da undefined bits; rom bios 8x8 CGA font; rom bios video parameter table; int 10h points at vga bios; unmask timer on int 10 setmode; vesa bank switching window mirroring; vesa bank switching window range check; vesa zero buffer on get information; vesa set display vsync; vesa lfb base scanline adjust; vesa lfb pel scanline adjust; vesa map non-lfb modes to 128kb region; ega per scanline hpel; allow hpel effects; allow hretrace effects; hretrace effect weight; vesa modelist cap; vesa modelist width limit; vesa modelist height limit; vesa vbe put modelist in vesa information; vesa vbe 1.2 modes are 32bpp; allow low resolution vesa modes; allow explicit 24bpp vesa modes; allow high definition vesa modes; allow unusual vesa modes; allow 32bpp vesa modes; allow 24bpp vesa modes; allow 16bpp vesa modes; allow 15bpp vesa modes; allow 8bpp vesa modes; allow 4bpp vesa modes; allow 4bpp packed vesa modes; allow tty vesa modes; double-buffered line compare; ignore vblank wraparound; ignore extended memory bit; enable vga resize delay; resize only on vga active display width increase; vga palette update on full load; ignore odd-even mode in non-cga modes; ignore sequencer blanking
# -> int 10h use video parameter table; vmemdelay; lfb vmemdelay; prevent capture; vbe window granularity; vbe window size; enable 8-bit dac; svga lfb base; pci vga; vga attribute controller mapping; enable supermegazeux tweakmode; vga bios use rom image; vga bios rom image; vga bios size override; video bios dont duplicate cga first half rom font; video bios always offer 14-pixel high rom font; video bios always offer 16-pixel high rom font; video bios enable cga second half rom font; forcerate; sierra ramdac; sierra ramdac lock 565; vga fill active memory; page flip debug line; vertical retrace poll debug line; cgasnow; vga 3da undefined bits; rom bios 8x8 CGA font; rom bios video parameter table; int 10h points at vga bios; unmask timer on int 10 setmode; vesa bank switching window mirroring; vesa bank switching window range check; vesa zero buffer on get information; vesa set display vsync; vesa lfb base scanline adjust; vesa lfb pel scanline adjust; vesa map non-lfb modes to 128kb region; ega per scanline hpel; allow hpel effects; allow hretrace effects; hretrace effect weight; vesa modelist cap; vesa modelist width limit; vesa modelist height limit; vesa vbe put modelist in vesa information; vesa vbe 1.2 modes are 32bpp; allow low resolution vesa modes; allow explicit 24bpp vesa modes; allow high definition vesa modes; allow unusual vesa modes; allow 32bpp vesa modes; allow 24bpp vesa modes; allow 16bpp vesa modes; allow 15bpp vesa modes; allow 8bpp vesa modes; allow 4bpp vesa modes; allow 4bpp packed vesa modes; allow tty vesa modes; double-buffered line compare; ignore vblank wraparound; ignore extended memory bit; enable vga resize delay; resize only on vga active display width increase; vga palette update on full load; ignore odd-even mode in non-cga modes; ignore sequencer blanking
#
vmemsize = -1
vmemsizekb = 0
@ -451,7 +468,7 @@ vsyncrate = 75
# core: CPU Core used in emulation. auto will switch to dynamic if available and appropriate.
# For the dynamic core, both dynamic_x86 and dynamic_rec are supported (dynamic_x86 is preferred).
# Windows 95 or other preemptive multitasking OSes will not work with the dynamic_rec core.
# Possible values: auto, dynamic, dynamic_x86, dynamic_nodhfpu, dynamic, dynamic_rec, normal, full, simple.
# Possible values: auto, dynamic, dynamic_x86, dynamic_nodhfpu, dynamic_rec, normal, full, simple.
# fpu: Enable FPU emulation
# Possible values: true, false, 1, 0, auto, 8087, 287, 387.
# rdtsc rate: If nonzero, the Pentium RDTSC counter will tick at this rate per millisecond instead of by the cycle count
@ -479,7 +496,7 @@ vsyncrate = 75
# Do not disable if Windows 9x is configured around PnP devices, you will likely confuse it.
#
# Advanced options (see full configuration reference file [dosbox-x.reference.full.conf] for more details):
# -> cpuid string; processor serial number; double fault; clear trap flag on unhandled int 1; reset on triple fault; always report double fault; always report triple fault; mask stack pointer for enter leave instructions; allow lmsw to exit protected mode; report fdiv bug; enable msr; enable cmpxchg8b; enable syscall; ignore undefined msr; interruptible rep string op; dynamic core cache block size; cycle emulation percentage adjust; stop turbo on key; stop turbo after second; use dynamic core with paging on; ignore opcode 63; apmbios pnp; apm power button event; apmbios version; apmbios allow realmode; apmbios allow 16-bit protected mode; apmbios allow 32-bit protected mode; integration device pnp; isapnpport; realbig16
# -> cpuid string; processor serial number; double fault; clear trap flag on unhandled int 1; reset on triple fault; always report double fault; always report triple fault; mask stack pointer for enter leave instructions; allow lmsw to exit protected mode; report fdiv bug; enable msr; enable pse; enable cmpxchg8b; enable syscall; ignore undefined msr; interruptible rep string op; dynamic core cache block size; cycle emulation percentage adjust; stop turbo on key; stop turbo after second; use dynamic core with paging on; ignore opcode 63; apmbios pnp; apm power button event; apmbios version; apmbios allow realmode; apmbios allow 16-bit protected mode; apmbios allow 32-bit protected mode; integration device pnp; isapnpport; realbig16
#
core = auto
fpu = true
@ -655,7 +672,7 @@ prebuffer = 25
# fluid.soundfont: Soundfont (.SF2 or .SF3) to use with Fluidsynth. One must be specified (e.g. GeneralUser_GS.sf2).
#
# Advanced options (see full configuration reference file [dosbox-x.reference.full.conf] for more details):
# -> mt32.reverse.stereo; mt32.verbose; mt32.thread; mt32.chunk; mt32.prebuffer; mt32.partials; mt32.dac; mt32.analog; mt32.output.gain; mt32.reverb.mode; mt32.reverb.output.gain; mt32.reverb.time; mt32.reverb.level; mt32.rate; mt32.src.quality; mt32.niceampramp; mt32.engage.channel1; fluid.samplerate; fluid.gain; fluid.polyphony; fluid.cores; fluid.periods; fluid.periodsize; fluid.reverb; fluid.chorus; fluid.reverb.roomsize; fluid.reverb.damping; fluid.reverb.width; fluid.reverb.level; fluid.chorus.number; fluid.chorus.level; fluid.chorus.speed; fluid.chorus.depth; fluid.chorus.type
# -> roland gs sysex; mt32.reverse.stereo; mt32.verbose; mt32.thread; mt32.chunk; mt32.prebuffer; mt32.partials; mt32.dac; mt32.analog; mt32.output.gain; mt32.reverb.mode; mt32.reverb.output.gain; mt32.reverb.time; mt32.reverb.level; mt32.rate; mt32.src.quality; mt32.niceampramp; mt32.engage.channel1; fluid.samplerate; fluid.gain; fluid.polyphony; fluid.cores; fluid.periods; fluid.periodsize; fluid.reverb; fluid.chorus; fluid.reverb.roomsize; fluid.reverb.damping; fluid.reverb.width; fluid.reverb.level; fluid.chorus.number; fluid.chorus.level; fluid.chorus.speed; fluid.chorus.depth; fluid.chorus.type
#
mpu401 = intelligent
mpubase = 0
@ -670,7 +687,7 @@ fluid.soundfont =
[sblaster]
# sbtype: Type of Sound Blaster to emulate. 'gb' is Game Blaster.
# Possible values: sb1, sb2, sbpro1, sbpro2, sb16, sb16vibra, gb, ess688, ess1688, reveal_sc400, none.
# Possible values: sb1, sb1.0, sb1.5, sb2, sb2.0, sb2.01, sbpro1, sbpro2, sb16, sb16vibra, gb, ess688, ess1688, reveal_sc400, none.
# sbbase: The IO address of the Sound Blaster.
# 220h to 2E0h are for use with IBM PC Sound Blaster emulation.
# D2h to DEh are for use with NEC PC-98 Sound Blaster 16 emulation.
@ -758,7 +775,7 @@ blaster environment variable = true
# with Timidity should work fine.
#
# Advanced options (see full configuration reference file [dosbox-x.reference.full.conf] for more details):
# -> autoamp; unmask dma; ignore channel count while active; pic unmask irq; startup initialized; dma enable on dma control polling; clear dma tc irq if excess polling; force master irq enable; gus panning table; gus fixed render rate; irq hack
# -> warn on out of bounds dram access; autoamp; unmask dma; ignore channel count while active; pic unmask irq; startup initialized; dma enable on dma control polling; clear dma tc irq if excess polling; force master irq enable; gus panning table; gus fixed render rate; irq hack
#
gus = false
global register read alias = auto
@ -1124,6 +1141,7 @@ timeout = 0
# starttranspath: Specify whether DOSBox-X should automatically translate all paths in the command-line to host system paths when starting programs to run on the host system.
# startwait: Specify whether DOSBox-X should wait for the host system applications after they are started.
# startquiet: If set, before launching host system applications to run on the host DOSBox-X will not show messages like "Now run it as a Windows application".
# startnopause: If set, DOSBox-X will not pause after host command execution is completed.
# vmware: Enable VMware interface emulation including guest mouse integration (when used along with e.g. VMware mouse driver for Windows 3.x).
# int33: Enable INT 33H for mouse support.
# mouse report rate: Mouse reporting rate, or 0 for auto. This affects how often mouse events are reported to the guest through the mouse interrupt.
@ -1146,7 +1164,7 @@ timeout = 0
# dos idle api: If set, DOSBox-X can lower the host system's CPU load when a supported guest program is idle.
#
# Advanced options (see full configuration reference file [dosbox-x.reference.full.conf] for more details):
# -> xms memmove causes flat real mode; xms init causes flat real mode; resized free memory block becomes allocated; badcommandhandler; mscdex device name; hma allow reservation; command shell flush keyboard buffer; special operation file prefix; drive z is remote; drive z convert fat; drive z expand path; drive z hide files; automount drive directories; hidenonrepresentable; hma minimum allocation; dos sda size; hma free space; cpm compatibility mode; minimum dos initial private segment; minimum mcb segment; enable dummy device mcb; maximum environment block size on exec; additional environment block size on exec; enable a20 on windows init; zero memory on xms memory allocation; vcpi; unmask timer on disk io; zero int 67h if no ems; zero unused int 68h; emm386 startup active; zero memory on ems memory allocation; ems system handle memory size; ems system handle on even megabyte; ems frame; umb start; umb end; kernel allocation in umb; keep umb on boot; keep private area on boot; private area in umb; autoa20fix; autoloadfix; startincon; int33 max x; int33 max y; int33 xy adjust; int33 hide host cursor if interrupt subroutine; int33 hide host cursor when polling; int33 disable cell granularity; int 13 disk change detect; int 13 extensions; biosps2; int15 wait force unmask irq; int15 mouse callback does not preserve registers; filenamechar; collating and uppercase; con device use int 16h to detect keyboard input; zero memory on int 21h memory allocation; pipe temporary device
# -> turn off a20 gate on load if loadfix needed; xms memmove causes flat real mode; xms init causes flat real mode; resized free memory block becomes allocated; badcommandhandler; mscdex device name; hma allow reservation; command shell flush keyboard buffer; special operation file prefix; drive z is remote; drive z convert fat; drive z expand path; drive z hide files; automount drive directories; hidenonrepresentable; hma minimum allocation; dos sda size; hma free space; cpm compatibility mode; minimum dos initial private segment; minimum mcb segment; enable dummy device mcb; maximum environment block size on exec; additional environment block size on exec; enable a20 on windows init; zero memory on xms memory allocation; vcpi; unmask timer on disk io; zero int 67h if no ems; zero unused int 68h; emm386 startup active; zero memory on ems memory allocation; ems system handle memory size; ems system handle on even megabyte; ems frame; umb start; umb end; kernel allocation in umb; keep umb on boot; keep private area on boot; private area in umb; private area write protect; autoa20fix; autoloadfix; startincon; int33 max x; int33 max y; int33 xy adjust; int33 mickey threshold; int33 hide host cursor if interrupt subroutine; int33 hide host cursor when polling; int33 disable cell granularity; int 13 disk change detect; int 13 extensions; biosps2; int15 wait force unmask irq; int15 mouse callback does not preserve registers; filenamechar; collating and uppercase; con device use int 16h to detect keyboard input; zero memory on int 21h memory allocation; pipe temporary device
#
xms = true
xms handles = 0
@ -1175,6 +1193,7 @@ startcmd = false
starttranspath = true
startwait = true
startquiet = false
startnopause = false
vmware = true
int33 = true
mouse report rate = 0

View File

@ -1,4 +1,4 @@
# This is the configuration file for DOSBox-X 2024.10.01. (Please use the latest version of DOSBox-X)
# This is the configuration file for DOSBox-X 2025.05.03. (Please use the latest version of DOSBox-X)
# Lines starting with a # are comment lines and are ignored by DOSBox-X.
# They are used to (briefly) document the effect of each option.
# To write out ALL options, use command 'config -all' with -wc or -writeconf options.
@ -14,7 +14,7 @@
# windowposition: Set the window position at startup in the positionX,positionY format (e.g.: 1300,200).
# The window will be centered with "," (or empty), and will be in the original position with "-".
# display: Specify a screen/display number to use for a multi-screen setup (0 = default).
# output: What video system to use for output (openglnb = OpenGL nearest; openglpp = OpenGL perfect; ttf = TrueType font output).
# output: What video system to use for output (surface = software (SDL_Surface); openglnb = OpenGL nearest; openglpp = OpenGL perfect; ttf = TrueType font output).
# Possible values: default, surface, overlay, ttf, opengl, openglnb, openglhq, openglpp, ddraw, direct3d.
# videodriver: Forces a video driver (e.g. windib/windows, directx, x11, fbcon, dummy, etc) for the SDL library to use.
# transparency: Set the transparency of the DOSBox-X screen (both windowed and full-screen modes, on SDL2 and Windows SDL1 builds).
@ -193,6 +193,11 @@ debuggerrun = debugger
# language: Select a language file for DOSBox-X to use. Encoded with either UTF-8 or a DOS code page.
# You can set code page either in the language file or with "country" setting in [config] section.
# title: Additional text to place in the title bar of the window.
# logo text: Text to place at the bottom of the screen during the startup logo. Text will line wrap automatically.
# To explicitly break to the next line, put \n in the string.
# logo: Location of PNG images to use in place of the DOSBox-X logo at startup.
# This is the path of the base file name. For example logo=subdir\sets\007\logo
# with machine=vgaonly will use subdir\sets\007\logo224x224.png as the logo.
# fastbioslogo: If set, DOSBox-X will skip the BIOS screen by activating fast BIOS logo mode (without 1-second pause).
# disable graphical splash: If set, DOSBox-X will always display text-mode BIOS splash screen instead of the graphical one.
# The text-mode BIOS screen will automatically be used if the TrueType font (TTF) output is enabled.
@ -354,10 +359,18 @@ debuggerrun = debugger
# acpi sci irq: IRQ to assign as ACPI system control interrupt. set to -1 to automatically assign.
# acpi iobase: I/O port base for the ACPI device Power Management registers. Set to 0 for automatic assignment.
# acpi reserved size: Amount of memory at top to reserve for ACPI structures and tables. Set to 0 for automatic assignment.
# memory file: If set, guest memory is memory-mapped from a file on disk, rather than allocated from memory.
# This option can help keep DOSBox-X from consuming too much RAM for large values of memsize.
# This option is required to emulate 4GB or more of RAM. The file will be created if it does not exist
# and it does not require any special maintenance or formatting.
# memsize: Amount of memory DOSBox-X has in megabytes.
# This value is best left at its default to avoid problems with some games,
# although other games and applications may require a higher value.
# Programs that use 286 protected mode like Windows 3.0 in Standard Mode may crash with more than 15MB.
# A memory file is required to emulate a memory size of 4GB or more.
# The maximum value allowed is affected by the memalias setting which affects the maximum amount of memory CPU can access as a power of 2.
# The maximum value is also affected by the CPU type. See DOSBox-X console and log file for details.
# The maximum setting 1048576 represents 1TB and requires at least a Pentium II and PSE-40 emulation.
# memsizekb: Amount of memory DOSBox-X has in kilobytes.
# This value should normally be set to 0.
# If nonzero, it is added to the memsize parameter.
@ -386,13 +399,18 @@ debuggerrun = debugger
# -1 means to use a reasonable default.
# memalias: Memory aliasing emulation, in number of valid address bits.
# Many 386/486 class motherboards and processors prior to 1995
# suffered from memory aliasing for various technical reasons. If the software you are
# trying to run assumes aliasing, or otherwise plays cheap tricks with paging,
# enabling this option can help. Note that enabling this option can cause slight performance degradation. Set to 0 to disable.
# had memory aliases for various technical reasons such as having
# less than 32 address bits on the CPU die.
# Recommended values when enabled:
# 0: Pick a value automatically according to cputype.
# NOTE: Changing the cputype after initial startup will not change the auto setting i.e.
# starting with cputype=8086 will use a memalias of 20 even if you later change cputype to 386.
# 24: 16MB aliasing. Common on 386SX systems (CPU had 24 external address bits)
# or 386DX and 486 systems where the CPU communicated directly with the ISA bus (A24-A31 tied off)
# 26: 64MB aliasing. Some 486s had only 26 external address bits, some motherboards tied off A26-A31
# 26: 64MB aliasing. Some 486 clones (and 386EX/CX) had only 26 external address bits, some motherboards tied off A26-A31
# 32: 4GB aliasing. This is normal for most 486/Pentium and later systems and is the default for most values of cputype.
# 36: 64GB aliasing. Recommended if you are emulating more than 3.5GB of RAM and Pentium Pro/II Page Size Extensions.
# 40: 1TB aliasing. Recommended if you are emulating more than 63GB of RAM and Pentium Pro/II Page Size Extensions.
# nocachedir: If set, MOUNT commands will mount with -nocachedir (disable directory caching) by default.
# freesizecap: If set to "cap" (="true"), the value of MOUNT -freesize will apply only if the actual free size is greater than the specified value.
# If set to "relative", the value of MOUNT -freesize will change relative to the specified value.
@ -438,6 +456,8 @@ debuggerrun = debugger
# enable pci bus: Enable PCI bus emulation
language =
title =
logo text =
logo =
fastbioslogo = false
disable graphical splash = false
startbanner = true
@ -492,6 +512,7 @@ acpi rsd ptr location = auto
acpi sci irq = -1
acpi iobase = 0
acpi reserved size = 0
memory file =
memsize = 16
memsizekb = 0
dos mem limit = 0
@ -567,11 +588,13 @@ enable pci bus = true
# Setting this option may prevent some scalers to work as expected.
# Try turning this option off in such case.
# For pixel-perfect scaling (output=openglpp), it is recommended to turn this option off.
# modeswitch: Let DOSBox-X determine the resolution of the monitor. This feature is only available when DOSBox-X is compiled with SDL2 support.
# scaler: Scaler used to enlarge/enhance low resolution modes. Add keyword 'forced', after the name of the scaler to always use the scaler even if the result might not be desired.(e.g. 'normal2x forced')
# Appending 'prompt' will cause a confirmation message for forcing the scaler.
# To fit a scaler in the resolution used at full screen may require a border or side bars.
# To fill the screen entirely, depending on your hardware, a different scaler/fullresolution might work.
# Scalers should work with most output options, but they are ignored for openglpp and TrueType font outputs.
# If you are using OpenGL/Direct3D output and a shader that requires it, set to hardware_none or hardware2x.
# Possible values: none, normal2x, normal3x, normal4x, normal5x, advmame2x, advmame3x, advinterp2x, advinterp3x, hq2x, hq3x, 2xsai, super2xsai, supereagle, tv2x, tv3x, rgb2x, rgb3x, scan2x, scan3x, gray, gray2x, hardware_none, hardware2x, hardware3x, hardware4x, hardware5x, xbrz, xbrz_bilinear.
# glshader: Path to GLSL shader source to use with OpenGL output ("none" to disable, or "default" for default shader).
# Can be either an absolute path, a file in the "glshaders" subdirectory of the DOSBox-X configuration directory, or one of the built-in shaders (e.g. "sharp" for the pixel-perfect scaling mode):
@ -591,6 +614,7 @@ aspect_ratio = 0:0
char9 = true
euro = -1
doublescan = true
modeswitch = false
scaler = normal2x
glshader = none
pixelshader = none
@ -788,6 +812,9 @@ j3100textcolor =
# If your game is not sensitive to VGA RAM I/O speed, then turning on this option
# will do nothing but cause a significant drop in frame rate which is probably not
# what you want. Recommended values -1, 0 to 2000.
# lfb vmemdelay: Set this option to true if you need vmemdelay to apply to SVGA and linear framebuffer video modes as well.
# This affects anything in which DOSBox-X emulates as a linear framebuffer including MDA/Hercules and PC-98 LFB.
# Note that this option may slightly reduce emulator performance with such modes.
# prevent capture: This option allows you to prevent capture of the DOSBox window, if an API is provided by the system to do so.
# empty or none: the window is normal and it can be screen captured.
# blank: notify the system so that if a screenshot is attempted, the window appears blank.
@ -992,6 +1019,7 @@ j3100textcolor =
# Possible values: true, false, 1, 0, auto.
int 10h use video parameter table = auto
vmemdelay = 0
lfb vmemdelay = false
prevent capture =
vmemsize = -1
vmemsizekb = 0
@ -1073,7 +1101,7 @@ vsyncrate = 75
# core: CPU Core used in emulation. auto will switch to dynamic if available and appropriate.
# For the dynamic core, both dynamic_x86 and dynamic_rec are supported (dynamic_x86 is preferred).
# Windows 95 or other preemptive multitasking OSes will not work with the dynamic_rec core.
# Possible values: auto, dynamic, dynamic_x86, dynamic_nodhfpu, dynamic, dynamic_rec, normal, full, simple.
# Possible values: auto, dynamic, dynamic_x86, dynamic_nodhfpu, dynamic_rec, normal, full, simple.
# fpu: Enable FPU emulation
# Possible values: true, false, 1, 0, auto, 8087, 287, 387.
# cpuid string: If set, changes the string returned by the CPUID instruction. Normally by default the string is 'GenuineIntel'.
@ -1101,9 +1129,16 @@ vsyncrate = 75
# report fdiv bug: If set, the FDIV bug will be reported with the cputype=pentium setting.
# enable msr: Allow RDMSR/WRMSR instructions. This option is only meaningful when cputype=pentium.
# WARNING: Leaving this option enabled while installing Windows 95/98/ME can cause crashes.
# enable pse: Allow PSE (Page Size Extensions) to paging.
# none=Do not enable PSE
# auto=Controlled by cpu type
# pse=Basic PSE
# pse36=PSE with 36-bit addressing
# pse40=PSE with 40-bit addressing
# Possible values: auto, none, pse, pse36, pse40, true, false.
# enable cmpxchg8b: Enable Pentium CMPXCHG8B instruction. Enable this explicitly if using software that uses this instruction.
# You must enable this option to run Windows ME because portions of the kernel rely on this instruction.
# enable syscall: Allow SYSENTER/SYSEXIT instructions. This option is only meaningful when cputype=pentium_ii.
# enable syscall: Allow SYSENTER/SYSEXIT instructions. This option is only meaningful when is cputype=pentium_ii or higher.
#
# ignore undefined msr: Ignore RDMSR/WRMSR on undefined registers. Normally the CPU will fire an Invalid Opcode exception in that case.
# This option is off by default, enable if using software or drivers that assumes the presence of
@ -1188,6 +1223,7 @@ mask stack pointer for enter leave instructions = auto
allow lmsw to exit protected mode = auto
report fdiv bug = false
enable msr = true
enable pse = auto
enable cmpxchg8b = true
enable syscall = true
ignore undefined msr = false
@ -1358,6 +1394,9 @@ blocksize = 1024
prebuffer = 25
[midi]
# roland gs sysex: Listen for and handle some Roland GS System Exclusive messages, such as GS Reset and Master Volume.
# This is needed for PC-98 games that have hanging/stuck MIDI note problems because they rely on these
# messages to reset the synth rather than using standard MIDI commands.
# mpu401: Type of MPU-401 to emulate.
# Possible values: intelligent, uart, none.
# mpubase: The IO address of the MPU-401.
@ -1485,6 +1524,7 @@ prebuffer = 25
# fluid.chorus.depth: Fluidsynth chorus depth.
# fluid.chorus.type: Fluidsynth chorus type. 0 is sine wave, 1 is triangle wave.
# Possible values: 0, 1.
roland gs sysex = true
mpu401 = intelligent
mpubase = 0
mididevice = default
@ -1532,7 +1572,7 @@ fluid.chorus.type = 0
[sblaster]
# sbtype: Type of Sound Blaster to emulate. 'gb' is Game Blaster.
# Possible values: sb1, sb2, sbpro1, sbpro2, sb16, sb16vibra, gb, ess688, ess1688, reveal_sc400, none.
# Possible values: sb1, sb1.0, sb1.5, sb2, sb2.0, sb2.01, sbpro1, sbpro2, sb16, sb16vibra, gb, ess688, ess1688, reveal_sc400, none.
# sbbase: The IO address of the Sound Blaster.
# 220h to 2E0h are for use with IBM PC Sound Blaster emulation.
# D2h to DEh are for use with NEC PC-98 Sound Blaster 16 emulation.
@ -1700,6 +1740,7 @@ io port aliasing = true
# If auto, automatically choose based on other settings such as GUS type.
# This setting may be needed for DOS demoscene entries that assume aliasing behavior such as Out of Control by Contract.
# Possible values: true, false, 1, 0, auto.
# warn on out of bounds dram access: Controls whether attempts to access GUS DRAM beyond the 1MB maximum supported by the card are logged to the log file as a warning.
# autoamp: If set, GF1 output will reduce in volume automatically if the sum of all channels exceeds full volume.
# If not set, then loud music will clip to full volume just as it would on real hardware.
# Enable this option for loud music if you want a more pleasing rendition without saturation and distortion.
@ -1755,6 +1796,7 @@ io port aliasing = true
# with Timidity should work fine.
gus = false
global register read alias = auto
warn on out of bounds dram access = false
autoamp = false
unmask dma = false
ignore channel count while active = false
@ -2115,6 +2157,9 @@ timeout = 0
[dos]
# xms: Enable XMS support.
# turn off a20 gate on load if loadfix needed: If enabled, and loading a program below the 64kb boundary, turn off the A20 gate.
# This can help with any program with startup code that assumes the segment wraparound of the 8086.
# Depending on DOS configuration the A20 gate may be re-enabled later such as calling INT 21h.
# xms memmove causes flat real mode: If set, any call to XMS to move/copy memory sets up flat real mode for segment registers DS and ES.
# xms init causes flat real mode: If set, when the DOS kernel initializes XMS it will switch on flat real mode for segment registers DS and ES if appropriate.
# resized free memory block becomes allocated: If set, and the DOS application resizes a freed memory block, that block will be marked as allocated to that program.
@ -2244,6 +2289,9 @@ timeout = 0
# Possible values: true, false, 1, 0, auto.
# private area in umb: If set, keep private DOS segment in upper memory block, usually segment 0xC800 (Mainline DOSBox behavior)
# If clear, place private DOS segment at the base of system memory (just below the MCB)
# private area write protect: If set, prevent the guest from writing to the DOSBox private area. The emulator itself can still write to it, of course.
# Some DOS games have sloppy video routines that can spill over and corrupt the private area and cause problems.
# This option when set can prevent that errant game from causing crashes.
# quick reboot: If set, the DOS restart call will reboot the emulated DOS (integrated DOS or guest DOS) instead of the virtual machine.
#
# ver: Set DOS version. Specify as major.minor format. A single number is treated as the major version (compatible with LFN support). Common settings are:
@ -2281,6 +2329,7 @@ timeout = 0
# startwait: Specify whether DOSBox-X should wait for the host system applications after they are started.
# startquiet: If set, before launching host system applications to run on the host DOSBox-X will not show messages like "Now run it as a Windows application".
# startincon: START command will start these commands (separated by space) in a console and wait for a key press before exiting.
# startnopause: If set, DOSBox-X will not pause after host command execution is completed.
# vmware: Enable VMware interface emulation including guest mouse integration (when used along with e.g. VMware mouse driver for Windows 3.x).
# int33: Enable INT 33H for mouse support.
# int33 max x: For guest to host cursor integration with DOS games, assume the maximum reported X coordinate has this value, if this is nonzero.
@ -2293,6 +2342,10 @@ timeout = 0
# x=spec, y=spec
# spec: <number> position adjust, can be positive or negative
# max-excess if game sets maximum larger than int33 max x/y, adjust the position forward by the difference
# int33 mickey threshold: The smallest amount of mouse motion that will be reported to the guest. Motion below this amount is buffered until the threshold is met.
# Some DOS programs do not properly respond to small mouse movements causing effects like a sluggish cursor or cursor drift.
# Increase this option to the smallest value that achieves natural feeling motion.
# - Ultima Underworld: Use 2
# mouse report rate: Mouse reporting rate, or 0 for auto. This affects how often mouse events are reported to the guest through the mouse interrupt.
# Some games including CyClone need a lower reporting rate to function correctly. Auto mode allows the guest to change the report rate through the PS/2 mouse emulation.
# This option does not affect any DOS game that uses polling through INT 33h to detect mouse movement.
@ -2344,6 +2397,7 @@ timeout = 0
# Caution: Enabling this API may cause some programs to think they are running under Windows
# dos idle api: If set, DOSBox-X can lower the host system's CPU load when a supported guest program is idle.
xms = true
turn off a20 gate on load if loadfix needed = false
xms memmove causes flat real mode = true
xms init causes flat real mode = false
resized free memory block becomes allocated = true
@ -2397,6 +2451,7 @@ kernel allocation in umb = false
keep umb on boot = false
keep private area on boot = auto
private area in umb = true
private area write protect = false
quick reboot = false
ver =
lfn = auto
@ -2413,11 +2468,13 @@ starttranspath = true
startwait = true
startquiet = false
startincon = assoc attrib chcp copy dir echo for ftype help if set type ver vol xcopy
startnopause = false
vmware = true
int33 = true
int33 max x = 0
int33 max y = 0
int33 xy adjust =
int33 mickey threshold = 1
mouse report rate = 0
int33 hide host cursor if interrupt subroutine = true
int33 hide host cursor when polling = false

BIN
dosbox224x163.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

BIN
dosbox224x186.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

BIN
dosbox224x224.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
dosbox224x93.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

2
dosboxpng-to-h.sh Executable file
View File

@ -0,0 +1,2 @@
#!/bin/bash
for h in 93 163 186 224; do xxd -i dosbox224x$h.png >include/dosbox224x$h.h || break; done

View File

@ -21,142 +21,214 @@
#ifndef DOSBOX_BIOS_H
#define DOSBOX_BIOS_H
#define BIOS_BASE_ADDRESS_COM1 0x400
#define BIOS_BASE_ADDRESS_COM2 0x402
#define BIOS_BASE_ADDRESS_COM3 0x404
#define BIOS_BASE_ADDRESS_COM4 0x406
#define BIOS_ADDRESS_LPT1 0x408
#define BIOS_ADDRESS_LPT2 0x40a
#define BIOS_ADDRESS_LPT3 0x40c
/* 0x40e is reserved */
#define BIOS_CONFIGURATION 0x410
/* 0x412 is reserved */
#define BIOS_MEMORY_SIZE 0x413
#define BIOS_TRUE_MEMORY_SIZE 0x415
/* #define bios_expansion_memory_size (*(unsigned int *) 0x415) */
#define BIOS_KEYBOARD_STATE 0x417
#define BIOS_KEYBOARD_FLAGS1 BIOS_KEYBOARD_STATE
#define BIOS_KEYBOARD_FLAGS1_RSHIFT_PRESSED (1 << 0)
#define BIOS_KEYBOARD_FLAGS1_LSHIFT_PRESSED (1 << 1)
#define BIOS_KEYBOARD_FLAGS1_CTRL_PRESSED (1 << 2)
#define BIOS_KEYBOARD_FLAGS1_ALT_PRESSED (1 << 3)
#define BIOS_KEYBOARD_FLAGS1_SCROLL_LOCK_ACTIVE (1 << 4)
#define BIOS_KEYBOARD_FLAGS1_NUMLOCK_ACTIVE (1 << 5)
#define BIOS_KEYBOARD_FLAGS1_CAPS_LOCK_ACTIVE (1 << 6)
#define BIOS_KEYBOARD_FLAGS1_INSERT_ACTIVE (1 << 7)
#define BIOS_BASE_ADDRESS_COM1 0x400 /* uint16_t */
#define BIOS_BASE_ADDRESS_COM2 0x402 /* uint16_t */
#define BIOS_BASE_ADDRESS_COM3 0x404 /* uint16_t */
#define BIOS_BASE_ADDRESS_COM4 0x406 /* uint16_t */
#define BIOS_ADDRESS_LPT1 0x408 /* uint16_t */
#define BIOS_ADDRESS_LPT2 0x40a /* uint16_t */
#define BIOS_ADDRESS_LPT3 0x40c /* uint16_t */
#define BIOS_ADDRESS_LPT4 0x40e /* uint16_t (older systems) */
#define BIOS_EXTENDED_BIOS_DATA_SEGMENT 0x40e /* uint16_t (newer systems since PS/2) */
#define BIOS_CONFIGURATION 0x410 /* uint16_t */
/* [15:14] = number of LPT devices
* [13:12] = reserved
* [11: 9] = number of serial devices
* [ 8: 8] = reserved
* [ 7: 6] = number of floppy drives minus 1
* [ 5: 4] = initial video mode
* 00b = EGA,VGA,etc
* 01b = 40x25 color text
* 10b = 80x25 color text
* 11b = 80x25 monochrome
*/
/* 0x412 is reserved (POST flag?) */
#define BIOS_MEMORY_SIZE 0x413 /* uint16_t, in KB, conventional memory */
#define BIOS_TRUE_MEMORY_SIZE 0x415 /* uint16_t, in KB, conventional memory (XT) */
/* 0x415 is reserved (AT error code?) */
#define BIOS_KEYBOARD_FLAGS2 0x418
#define BIOS_KEYBOARD_FLAGS2_LCTRL_PRESSED (1 << 0)
#define BIOS_KEYBOARD_FLAGS2_LALT_PRESSED (1 << 1)
#define BIOS_KEYBOARD_FLAGS2_SYSTEMKEY_HELD (1 << 2)
#define BIOS_KEYBOARD_FLAGS2_SUSPENDKEY_TOGGLED (1 << 3)
#define BIOS_KEYBOARD_FLAGS2_SCROLL_LOCK_PRESSED (1 << 4)
#define BIOS_KEYBOARD_FLAGS2_NUM_LOCK_PRESSED (1 << 5)
#define BIOS_KEYBOARD_FLAGS2_CAPS_LOCK_PRESSED (1 << 6)
#define BIOS_KEYBOARD_FLAGS2_INSERT_PRESSED (1 << 7)
#define BIOS_KEYBOARD_STATE 0x417
#define BIOS_KEYBOARD_FLAGS1 BIOS_KEYBOARD_STATE
#define BIOS_KEYBOARD_FLAGS1_RSHIFT_PRESSED (1 << 0)
#define BIOS_KEYBOARD_FLAGS1_LSHIFT_PRESSED (1 << 1)
#define BIOS_KEYBOARD_FLAGS1_CTRL_PRESSED (1 << 2)
#define BIOS_KEYBOARD_FLAGS1_ALT_PRESSED (1 << 3)
#define BIOS_KEYBOARD_FLAGS1_SCROLL_LOCK_ACTIVE (1 << 4)
#define BIOS_KEYBOARD_FLAGS1_NUMLOCK_ACTIVE (1 << 5)
#define BIOS_KEYBOARD_FLAGS1_CAPS_LOCK_ACTIVE (1 << 6)
#define BIOS_KEYBOARD_FLAGS1_INSERT_ACTIVE (1 << 7)
#define BIOS_KEYBOARD_TOKEN 0x419
/* used for keyboard input with Alt-Number */
#define BIOS_KEYBOARD_BUFFER_HEAD 0x41a
#define BIOS_KEYBOARD_BUFFER_TAIL 0x41c
#define BIOS_KEYBOARD_BUFFER 0x41e
/* #define bios_keyboard_buffer (*(unsigned int *) 0x41e) */
#define BIOS_DRIVE_ACTIVE 0x43e
#define BIOS_DRIVE_RUNNING 0x43f
#define BIOS_DISK_MOTOR_TIMEOUT 0x440
#define BIOS_DISK_STATUS 0x441
/* #define bios_fdc_result_buffer (*(unsigned short *) 0x442) */
#define BIOS_VIDEO_MODE 0x449
#define BIOS_SCREEN_COLUMNS 0x44a
#define BIOS_VIDEO_MEMORY_USED 0x44c
#define BIOS_VIDEO_MEMORY_ADDRESS 0x44e
#define BIOS_VIDEO_CURSOR_POS 0x450
#define BIOS_KEYBOARD_FLAGS2 0x418
#define BIOS_KEYBOARD_FLAGS2_LCTRL_PRESSED (1 << 0)
#define BIOS_KEYBOARD_FLAGS2_LALT_PRESSED (1 << 1)
#define BIOS_KEYBOARD_FLAGS2_SYSTEMKEY_HELD (1 << 2)
#define BIOS_KEYBOARD_FLAGS2_SUSPENDKEY_TOGGLED (1 << 3) /* pause active */
#define BIOS_KEYBOARD_FLAGS2_SCROLL_LOCK_PRESSED (1 << 4)
#define BIOS_KEYBOARD_FLAGS2_NUM_LOCK_PRESSED (1 << 5)
#define BIOS_KEYBOARD_FLAGS2_CAPS_LOCK_PRESSED (1 << 6)
#define BIOS_KEYBOARD_FLAGS2_INSERT_PRESSED (1 << 7)
#define BIOS_KEYBOARD_TOKEN 0x419 /* Alt+Numpad work area */
#define BIOS_KEYBOARD_BUFFER_HEAD 0x41a /* uint16_t */
#define BIOS_KEYBOARD_BUFFER_TAIL 0x41c /* uint16_t */
#define BIOS_KEYBOARD_BUFFER 0x41e /* uint16_t[16] */
#define BIOS_DRIVE_ACTIVE 0x43e /* Floppy calibration status */
#define BIOS_DRIVE_RUNNING 0x43f /* Floppy motor status */
#define BIOS_DISK_MOTOR_TIMEOUT 0x440 /* Floppy motor timeout */
#define BIOS_DISK_STATUS 0x441 /* Floppy drive status */
#define BIOS_FLOPPY_CONTROLLER_STAT_CMD_REGS 0x442 /* uint8_t[7] status/command bytes */
#define BIOS_VIDEO_MODE 0x449 /* Current INT 10h mode */
#define BIOS_SCREEN_COLUMNS 0x44a /* uint16_t */
#define BIOS_VIDEO_MEMORY_USED 0x44c /* uint16_t */
#define BIOS_VIDEO_MEMORY_ADDRESS 0x44e /* uint16_t */
#define BIOS_VIDEO_CURSOR_POS 0x450 /* struct { uint8_t col, row } pos[8] */
#define BIOS_CURSOR_SHAPE 0x460 /* uint16_t */
#define BIOS_CURSOR_LAST_LINE 0x460 /* lower uint8_t */
#define BIOS_CURSOR_FIRST_LINE 0x461 /* upper uint8_t */
#define BIOS_CURRENT_SCREEN_PAGE 0x462 /* uint8_t */
#define BIOS_VIDEO_PORT 0x463 /* uint16_t */
#define BIOS_VDU_CONTROL 0x465 /* CGA port 3D8h/MDA port 3B8h */
#define BIOS_VDU_COLOR_REGISTER 0x466 /* CGA port 3D9h */
#define BIOS_POST_RESET_VECTOR 0x467 /* uint32_t FAR 16:16 address to jump to after specific 286 reset */
#define BIOS_LAST_UNEXPECTED_IRQ 0x46b
#define BIOS_TIMER 0x46c /* uint32_t Timer ticks (at 18.2Hz) since midnight */
#define BIOS_24_HOURS_FLAG 0x470 /* nonzero if timer tick rollover past midnight */
#define BIOS_CTRL_BREAK_FLAG 0x471 /* CTRL+Break flag (bit 7=1) */
#define BIOS_CTRL_ALT_DEL_FLAG 0x472 /* uint16_t POST reset flag 1234h=warm boot */
#define BIOS_FIXED_DISK_LAST_OP_STATUS 0x474
#define BIOS_HARDDISK_COUNT 0x475
#define BIOS_FIXED_DISK_CONTROL_BYTE 0x476 /* XT only */
#define BIOS_FIXED_DISK_IO_PORT_OFFSET 0x477 /* XT only */
#define BIOS_LPT1_TIMEOUT 0x478
#define BIOS_LPT2_TIMEOUT 0x479
#define BIOS_LPT3_TIMEOUT 0x47a
#define BIOS_LPT4_TIMEOUT 0x47b
#define BIOS_VIRTUAL_DMA_SUPPORT 0x47b /* set bit 5 to signal, see INT 4Bh */
#define BIOS_VIRTUAL_DMA_IS_SUPPORTED (1 << 5)
#define BIOS_COM1_TIMEOUT 0x47c
#define BIOS_COM2_TIMEOUT 0x47d
#define BIOS_COM3_TIMEOUT 0x47e
#define BIOS_COM4_TIMEOUT 0x47f
#define BIOS_KEYBOARD_BUFFER_START 0x480 /* uint16_t */
#define BIOS_KEYBOARD_BUFFER_END 0x482 /* uint16_t */
#define BIOS_ROWS_ON_SCREEN_MINUS_1 0x484
#define BIOS_FONT_HEIGHT 0x485 /* uint16_t */
#define BIOS_VIDEO_INFO_0 0x487 /* EGA/VGA control */
#define BIOS_VIDEO_INFO_1 0x488 /* EGA/VGA switches */
#define BIOS_VIDEO_INFO_2 0x489 /* MCGA/VGA control */
#define BIOS_VIDEO_COMBO 0x48a /* MCGA/VGA Display Combination Code */
#define BIOS_CURSOR_SHAPE 0x460
#define BIOS_CURSOR_LAST_LINE 0x460
#define BIOS_CURSOR_FIRST_LINE 0x461
#define BIOS_CURRENT_SCREEN_PAGE 0x462
#define BIOS_VIDEO_PORT 0x463
#define BIOS_VDU_CONTROL 0x465
#define BIOS_VDU_COLOR_REGISTER 0x466
/* 0x467-0x468 is reserved */
#define BIOS_LAST_UNEXPECTED_IRQ 0x46b
#define BIOS_TIMER 0x46c
#define BIOS_24_HOURS_FLAG 0x470
#define BIOS_CTRL_BREAK_FLAG 0x471
#define BIOS_CTRL_ALT_DEL_FLAG 0x472
#define BIOS_HARDDISK_COUNT 0x475
/* 0x474, 0x476, 0x477 is reserved */
#define BIOS_LPT1_TIMEOUT 0x478
#define BIOS_LPT2_TIMEOUT 0x479
#define BIOS_LPT3_TIMEOUT 0x47a
/* 0x47b is reserved */
#define BIOS_COM1_TIMEOUT 0x47c
#define BIOS_COM2_TIMEOUT 0x47d
#define BIOS_COM3_TIMEOUT 0x47e
#define BIOS_COM4_TIMEOUT 0x47f
/* 0x47e is reserved */ //<- why that?
/* 0x47f-0x4ff is unknow for me */
#define BIOS_KEYBOARD_BUFFER_START 0x480
#define BIOS_KEYBOARD_BUFFER_END 0x482
#define BIOS_KEYBOARD_PCJR_FLAG2 0x488 /* KB_FLAG_2 (PCjr) */
#define BIOS_KEYBOARD_PCJR_FLAG2_PUTCHAR (1 << 0)
#define BIOS_KEYBOARD_PCJR_FLAG2_INIT_DELAY (1 << 1)
#define BIOS_KEYBOARD_PCJR_FLAG2_HALF_RATE (1 << 2)
#define BIOS_KEYBOARD_PCJR_FLAG2_TYPE_OFF (1 << 3)
#define BIOS_KEYBOARD_PCJR_FLAG2_FN_LOCK (1 << 4)
#define BIOS_KEYBOARD_PCJR_FLAG2_FN_PENDING (1 << 5)
#define BIOS_KEYBOARD_PCJR_FLAG2_FN_BREAK (1 << 6)
#define BIOS_KEYBOARD_PCJR_FLAG2_FN_FLAG (1 << 7)
#define BIOS_ROWS_ON_SCREEN_MINUS_1 0x484
#define BIOS_FONT_HEIGHT 0x485
#define BIOS_FLOPPY_MEDIA_CONTROL 0x48b
#define BIOS_FIXED_DISK_CTRL_STATUS 0x48c
#define BIOS_FIXED_DISK_CTRL_ERROR 0x48d
#define BIOS_FIXED_DISK_INT_CTRL 0x48e
#define BIOS_FLOPPY_CONTROLLER_INFORMATION 0x48f
#define BIOS_FLOPPY_DRIVE_0_MEDIA_STATE 0x490
#define BIOS_FLOPPY_DRIVE_1_MEDIA_STATE 0x491
#define BIOS_FLOPPY_DRIVE_0_MEDIA_STATE_AT_START 0x492
#define BIOS_FLOPPY_DRIVE_1_MEDIA_STATE_AT_START 0x493
#define BIOS_FLOPPY_DRIVE_0_CURRENT_TRACK 0x494
#define BIOS_FLOPPP_DRIVE_1_CURRENT_TRACK 0x495
#define BIOS_VIDEO_INFO_0 0x487
#define BIOS_VIDEO_INFO_1 0x488
#define BIOS_VIDEO_INFO_2 0x489
#define BIOS_VIDEO_COMBO 0x48a
#define BIOS_KEYBOARD_FLAGS3 0x496
#define BIOS_KEYBOARD_FLAGS3_HIDDEN_E1 (1 << 0)
#define BIOS_KEYBOARD_FLAGS3_HIDDEN_E0 (1 << 1)
#define BIOS_KEYBOARD_FLAGS3_RCTRL_PRESSED (1 << 2)
#define BIOS_KEYBOARD_FLAGS3_RALT_PRESSED (1 << 3)
#define BIOS_KEYBOARD_FLAGS3_ENHANCED_KEYBOARD (1 << 4)
#define BIOS_KEYBOARD_FLAGS3_NUM_LOCK_FORCED (1 << 5)
#define BIOS_KEYBOARD_FLAGS3_ID_CHAR_WAS_LAST (1 << 6)
#define BIOS_KEYBOARD_FLAGS3_ID_READ_IN_PROCESS (1 << 7)
#define BIOS_KEYBOARD_FLAGS3 0x496
#define BIOS_KEYBOARD_FLAGS3_HIDDEN_E1 (1 << 0)
#define BIOS_KEYBOARD_FLAGS3_HIDDEN_E0 (1 << 1)
#define BIOS_KEYBOARD_FLAGS3_RCTRL_PRESSED (1 << 2)
#define BIOS_KEYBOARD_FLAGS3_RALT_PRESSED (1 << 3)
#define BIOS_KEYBOARD_FLAGS3_ENHANCED_KEYBOARD (1 << 4)
#define BIOS_KEYBOARD_FLAGS3_NUM_LOCK_FORCED (1 << 5)
#define BIOS_KEYBOARD_FLAGS3_ID_CHAR_WAS_LAST (1 << 6)
#define BIOS_KEYBOARD_FLAGS3_ID_READ_IN_PROCESS (1 << 7)
#define BIOS_KEYBOARD_LEDS 0x497
#define BIOS_KEYBOARD_LEDS_SCROLL_LOCK (1 << 0)
#define BIOS_KEYBOARD_LEDS_NUM_LOCK (1 << 1)
#define BIOS_KEYBOARD_LEDS_CAPS_LOCK (1 << 2)
#define BIOS_KEYBOARD_LEDS_CIRCUS (1 << 3)
#define BIOS_KEYBOARD_LEDS_ACK (1 << 4)
#define BIOS_KEYBOARD_LEDS_RESEND (1 << 5)
#define BIOS_KEYBOARD_LEDS_MODE (1 << 6)
#define BIOS_KEYBOARD_LEDS_TRANSMIT_ERROR (1 << 7)
#define BIOS_KEYBOARD_LEDS 0x497
#define BIOS_KEYBOARD_LEDS_SCROLL_LOCK (1 << 0)
#define BIOS_KEYBOARD_LEDS_NUM_LOCK (1 << 1)
#define BIOS_KEYBOARD_LEDS_CAPS_LOCK (1 << 2)
#define BIOS_KEYBOARD_LEDS_CIRCUS (1 << 3)
#define BIOS_KEYBOARD_LEDS_ACK (1 << 4)
#define BIOS_KEYBOARD_LEDS_RESEND (1 << 5)
#define BIOS_KEYBOARD_LEDS_MODE (1 << 6)
#define BIOS_KEYBOARD_LEDS_TRANSMIT_ERROR (1 << 7)
#define BIOS_WAIT_FLAG_POINTER 0x498 /* uint32_t FAR 16:16 */
#define BIOS_WAIT_FLAG_COUNT 0x49c /* uint32_t */
#define BIOS_WAIT_FLAG_ACTIVE 0x4a0
#define BIOS_WAIT_FLAG_TEMP 0x4a1
#define BIOS_LAN_BYTES 0x4a1 /* uint8_t[7] */
#define BIOS_VIDEO_SAVEPTR 0x4a8 /* uint32_t FAR 16:16 */
#define BIOS_WAIT_FLAG_POINTER 0x498
#define BIOS_WAIT_FLAG_COUNT 0x49c
#define BIOS_WAIT_FLAG_ACTIVE 0x4a0
#define BIOS_WAIT_FLAG_TEMP 0x4a1
#define BIOS_PRINT_SCREEN_FLAG 0x500
#define CURSOR_SCAN_LINE_NORMAL (0x6)
#define CURSOR_SCAN_LINE_INSERT (0x4)
#define CURSOR_SCAN_LINE_END (0x7)
#define BIOS_PRINT_SCREEN_FLAG 0x500
// NEC PC-98 BIOS data area
#define BIOS_VIDEO_SAVEPTR 0x4a8
#define BIOS98_FLAG2 0x400 /* bit 7: 1=RAM drive function present [6:0]=a lot of other various stuff */
#define BIOS98_EXTMEM_286 0x401 /* extended memory between 0x100000-0xFFFFFF in 128KB units (286+ BIOS) */
#define BIOS98_SYS_SEL 0x402 /* SHIFT/CTRL/GRPH held down, [3:0] = hard disk boot partition selector (Hires) */
/* 0x403 ITF ROM work area */
#define BIOS98_286_RESET_VECTOR 0x404 /* uint32_t FAR 16:16, sets SS:SP to this value and RETF */
/* 0x408-0x40F various */
#define BIOS98_KB_SHIFT_CODE_HIRES 0x408 /* Hi-res shift key redefinition table */
#define BIOS98_KB_BUFFER_ADR 0x410 /* uint32_t FAR 16:16 keyboard buffer address (hires) */
#define BIOS98_KB_ENTRY_TBL_ADR 0x414 /* uint32_t FAR 16:16 key data conversion table (hires) */
#define BIOS98_KB_INT_ADR 0x418 /* uint32_t FAR 16:16 keyboard interrupt table (hires) */
#define BIOS98_PR_TIME 0x41C /* uint16_t printer timeout in 10ms units */
/* 0x41E-0x447 various */
#define BIOS98_CAL_BEEP_TIME 0x448 /* uint16_t BEEP duration counter (hires) */
#define BIOS98_CAL_TONE 0x44A /* uint16_t BEEP tone (8253A counter value) */
#define BIOS98_CAL_USER_OFFSEG 0x44C /* uint32_t FAR 16:16 single-event timer timeout callback (hires) */
#define BIOS98_CRT_FONT 0x450 /* uint8_t[2] (port A1h,port A3h) value to output to CG (hires) */
#define BIOS98_RT_P1 0x452 /* (hires) cursor display, text scanline height */
#define BIOS98_RT_P2 0x453 /* (hires) cursor blink, top of cursor */
#define BIOS98_RT_P3 0x454 /* (hires) cursor blink, bottom of cursor */
/* 0x455-0x456 various */
#define BIOS98_IDE_HDD_CAPACITY 0x457 /* bit 7=1st IDE 512/256 byte/sect bit 6=2nd IDE 512/256 byte/sec bit 5-3=1st IDE capacity 2-0=2nd IDE capacity 0x00=Does not support IDE 0x3F=supports IDE but no drives */
#define BIOS98_MODEL_ID 0x458 /* bits that identify various models */
#define BIOS98_CRT_EXT_STS 0x459 /* [7:6]=ext attr mode [5:4]=various [3]=hires interlace [2:1]=various [0]=640x480 if set, 640x400 if not */
#define BIOS98_BIOS_FLAG6 0x45A /* either [7:0]=CPU clock or [7:4]=CPU type [3:0]=CPU clock */
#define BIOS98_BIOS_FLAG7 0x45B /* time stamper and port 5Fh wait among other various things */
/* 0x45C-0x45F various */
#define BIOS98_SCSI_PARAMETER_TABLE 0x460 /* struct { uint8_t various[4]; } scsidev[8]; */
#define BIOS98_BIOS_FLAG1 0x480 /* [7]=SASI/IDE new sense [6]=EGC supported [5:0]=various */
#define BIOS98_BIOS_FLAG3 0x481 /* [6,3]=keyboard ID [5]=EMS page frame B0000h [4]=B0000h status (VRAM/EMS) various */
#define BIOS98_DISK_EQUIPS 0x482 /* [7:0]=SCSI #7-SCSI #0 (matches bit) HDD connected or not */
#define BIOS98_SCSI_STATUS 0x483
#define BIOS98_BIOS_FLAG4 0x484 /* [7:6]=HDD DMA channel [5]=builtin SCSI [4]=builtin SASI [3:0]=CPU speed */
#define BIOS98_DISK_MOTOR_STOP_COUNTER 0x485 /* in 100ms units */
#define BIOS98_CPU386 0x486 /* uint16_t DX value after CPU reset, 386 or higher */
#define BIOS98_RDISK_EQUIP 0x488 /* [7:4]=640KB FD unit 3,2,1,0 [3:0]=1MB FD unit 3,2,1,0 is/isn't RAM drive */
#define BIOS98_RDISK_WORK_JMP 0x489 /* uint8_t[5] JMP FAR instruction to BIOS */
#define BIOS98_RDISK_FLAGS 0x48E /* [7]=processing [6:4]=SMM out [3]=FDD processing [2]=RAM drive number [1:0]=I/F mode */
/* 0x48F unused */
#define BIOS98_YET_ANOTHER_BEEP_PITCH 0x490 /* uint16_t hires beep pitch */
#define BIOS98_DISK_RESET 0x492 /* [7:4]=recalibrate request 640KB unit 3,2,1,0 [3:0]=recalibrate request 1MB unit 3,2,1,0 */
#define BIOS98_F2HD_MODE 0x493 /* [7:4]=640KB FDD unit 3,2,1,0 80/40 cylinders [3:0]=640KB FDD unit 3,2,1,0 double/single sided */
#define BIOS98_DISK_EQUIP2 0x494 /* [7:4]=external FDD unit 3,2,1,0 1MB drive in 640KB mode */
#define BIOS98_GRAPH_CHG 0x495 /* GRCG/EGC mode register setting for use by interrupt handlers like mouse drivers */
#define BIOS98_GRAPH_TAL 0x496 /* uint8_t[4] GRCG tile registers */
/* 0x49A-0x4AB various */
#define BIOS98_XROM_PTR 0x49C /* uint32_t FAR 16:16 JMP destination address from INT 1Bh to extended BIOS */
#define CURSOR_SCAN_LINE_NORMAL (0x6)
#define CURSOR_SCAN_LINE_INSERT (0x4)
#define CURSOR_SCAN_LINE_END (0x7)
//#define BIOS_DEFAULT_IRQ0_LOCATION (RealMake(0xf000,0xfea5))
//#define BIOS_DEFAULT_IRQ1_LOCATION (RealMake(0xf000,0xe987))
//#define BIOS_DEFAULT_IRQ2_LOCATION (RealMake(0xf000,0xff55))
//#define BIOS_DEFAULT_HANDLER_LOCATION (RealMake(0xf000,0xff53))
//#define BIOS_VIDEO_TABLE_LOCATION (RealMake(0xf000,0xf0a4))
//#define BIOS_DEFAULT_RESET_LOCATION (RealMake(0xf000,0xe05b))
extern Bitu BIOS_DEFAULT_IRQ0_LOCATION; // (RealMake(0xf000,0xfea5))
extern Bitu BIOS_DEFAULT_IRQ1_LOCATION; // (RealMake(0xf000,0xe987))
extern Bitu BIOS_DEFAULT_IRQ2_LOCATION; // (RealMake(0xf000,0xff55))
extern Bitu BIOS_DEFAULT_HANDLER_LOCATION; // (RealMake(0xf000,0xff53))
extern Bitu BIOS_DEFAULT_INT5_LOCATION; // (RealMake(0xf000,0xff54))
extern Bitu BIOS_VIDEO_TABLE_LOCATION; // (RealMake(0xf000,0xf0a4))
extern Bitu BIOS_DEFAULT_RESET_LOCATION; // RealMake(0xf000,0xe05b)
extern Bitu BIOS_DEFAULT_IRQ0_LOCATION; // RealMake(0xf000,0xfea5)
extern Bitu BIOS_DEFAULT_IRQ1_LOCATION; // RealMake(0xf000,0xe987)
extern Bitu BIOS_DEFAULT_IRQ2_LOCATION; // RealMake(0xf000,0xff55)
extern Bitu BIOS_DEFAULT_HANDLER_LOCATION; // RealMake(0xf000,0xff53)
extern Bitu BIOS_DEFAULT_INT5_LOCATION; // RealMake(0xf000,0xff54)
extern Bitu BIOS_VIDEO_TABLE_LOCATION; // RealMake(0xf000,0xf0a4)
extern Bitu BIOS_DEFAULT_RESET_LOCATION; // RealMake(0xf000,0xe05b)
extern Bitu BIOS_VIDEO_TABLE_SIZE;
Bitu ROMBIOS_GetMemory(Bitu bytes,const char *who=NULL,Bitu alignment=1,Bitu must_be_at=0);
@ -179,6 +251,13 @@ void INT10_ReloadRomFonts();
void BIOS_SetLPTPort (Bitu port, uint16_t baseaddr);
// Is it safe to call mem_read/write as if part of the guest i.e. from the main GUI?
// If the guest is running in protected mode, NO.
// If the guest is not running under our own DOS kernel, NO.
// This is required to avoid problems with helpful code in this project causing BSODs in Windows NT/2000/XP
// because the BIOS data area addresses are invalid pages in that 32-bit environment!
bool IsSafeToMemIOOnBehalfOfGuest();
// \brief Synchronizes emulator num lock state with host.
void BIOS_SynchronizeNumLock();
@ -198,131 +277,131 @@ enum {
extern int unhandled_irq_method;
class ISAPnPDevice {
public:
ISAPnPDevice();
virtual ~ISAPnPDevice();
public:
void checksum_ident();
public:
enum SmallTags {
PlugAndPlayVersionNumber = 0x1,
LogicalDeviceID = 0x2,
CompatibleDeviceID = 0x3,
IRQFormat = 0x4,
DMAFormat = 0x5,
StartDependentFunctions = 0x6,
EndDependentFunctions = 0x7,
IOPortDescriptor = 0x8,
FixedLocationIOPortDescriptor = 0x9,
SmallVendorDefined = 0xE,
EndTag = 0xF
};
enum LargeTags {
MemoryRangeDescriptor = 0x1,
IdentifierStringANSI = 0x2,
IdentifierStringUNICODE = 0x3,
LargeVendorDefined = 0x4,
MemoryRange32Descriptor = 0x5,
FixedLocationMemoryRangeDescriptor = 0x6
};
// StartDependentFunction config
enum DependentFunctionConfig {
PreferredDependentConfiguration = 0x0,
AcceptableDependentConfiguration = 0x1,
SubOptimalDependentConfiguration = 0x2
};
// IRQ format, signal types (bitfield)
enum {
IRQFormatInfo_HighTrueEdgeSensitive = 0x1,
IRQFormatInfo_LowTrueEdgeSensitive = 0x2,
IRQFormatInfo_HighTrueLevelSensitive = 0x4,
IRQFormatInfo_LowTrueLevelSensitive = 0x8
};
// IRQ format, helper IRQ mask generator
static inline uint16_t irq2mask(const int IRQ) {
if (IRQ < 0 || IRQ > 15) return 0;
return (uint16_t)(1U << (unsigned char)IRQ);
}
static inline uint16_t irq2mask(const int a,const int b) {
return irq2mask(a) | irq2mask(b);
}
static inline uint16_t irq2mask(const int a,const int b,const int c) {
return irq2mask(a) | irq2mask(b) | irq2mask(c);
}
static inline uint16_t irq2mask(const int a,const int b,const int c,const int d) {
return irq2mask(a) | irq2mask(b) | irq2mask(c) | irq2mask(d);
}
static inline uint16_t irq2mask(const int a,const int b,const int c,const int d,const int e) {
return irq2mask(a) | irq2mask(b) | irq2mask(c) | irq2mask(d) | irq2mask(e);
}
// DMA format transfer type
enum {
DMATransferType_8bitOnly=0,
DMATransferType_8_and_16bit=1,
DMATransferType_16bitOnly=2
};
enum {
DMASpeedSupported_Compat=0,
DMASpeedSupported_TypeA=1,
DMASpeedSupported_TypeB=2,
DMASpeedSupported_TypeF=3
};
// DMA format
static inline uint16_t dma2mask(const int DMA) {
if (DMA < 0 || DMA > 7 || DMA == 4) return 0;
return (uint16_t)(1U << (unsigned char)DMA);
}
static inline uint16_t dma2mask(const int a,const int b) {
return dma2mask(a) | dma2mask(b);
}
static inline uint16_t dma2mask(const int a,const int b,const int c) {
return dma2mask(a) | dma2mask(b) | dma2mask(c);
}
static inline uint16_t dma2mask(const int a,const int b,const int c,const int d) {
return dma2mask(a) | dma2mask(b) | dma2mask(c) | dma2mask(d);
}
static inline uint16_t dma2mask(const int a,const int b,const int c,const int d,const int e) {
return dma2mask(a) | dma2mask(b) | dma2mask(c) | dma2mask(d) | dma2mask(e);
}
public:
virtual void config(Bitu val);
virtual void wakecsn(Bitu val);
virtual void select_logical_device(Bitu val);
virtual void on_pnp_key();
/* ISA PnP I/O data read/write */
virtual uint8_t read(Bitu addr);
virtual void write(Bitu addr,Bitu val);
virtual bool alloc(size_t sz);
void write_begin_SMALLTAG(const ISAPnPDevice::SmallTags stag,unsigned char len);
void write_begin_LARGETAG(const ISAPnPDevice::LargeTags stag,unsigned int len);
void write_nstring(const char *str,const size_t l);
void write_byte(const unsigned char c);
void begin_write_res();
void end_write_res();
void write_END();
void write_ISAPnP_version(unsigned char major,unsigned char minor,unsigned char vendor);
void write_Identifier_String(const char *str);
void write_Logical_Device_ID(const char c1,const char c2,const char c3,const char c4,const char c5,const char c6,const char c7);
void write_Compatible_Device_ID(const char c1,const char c2,const char c3,const char c4,const char c5,const char c6,const char c7);
void write_Device_ID(const char c1,const char c2,const char c3,const char c4,const char c5,const char c6,const char c7);
void write_Dependent_Function_Start(const ISAPnPDevice::DependentFunctionConfig cfg,const bool force=false);
void write_IRQ_Format(const uint16_t IRQ_mask,const unsigned char IRQ_signal_type=0);
void write_DMA_Format(const uint8_t DMA_mask,const unsigned char transfer_type_preference,const bool is_bus_master,const bool byte_mode,const bool word_mode,const unsigned char speed_supported);
void write_IO_Port(const uint16_t min_port,const uint16_t max_port,const uint8_t count,const uint8_t alignment=1,const bool full16bitdecode=true);
void write_End_Dependent_Functions();
public:
unsigned char CSN = 0;
unsigned char logical_device = 0;
unsigned char ident[9]; /* 72-bit vendor + serial + checksum identity */
unsigned char ident_bp = 0; /* bit position of identity read */
unsigned char ident_2nd = 0;
unsigned char resource_ident = 0;
unsigned char* resource_data = NULL;
size_t resource_data_len = 0;
unsigned int resource_data_pos = 0;
size_t alloc_write = 0;
unsigned char* alloc_res = NULL;
size_t alloc_sz = 0;
public:
ISAPnPDevice();
virtual ~ISAPnPDevice();
public:
void checksum_ident();
public:
enum SmallTags {
PlugAndPlayVersionNumber = 0x1,
LogicalDeviceID = 0x2,
CompatibleDeviceID = 0x3,
IRQFormat = 0x4,
DMAFormat = 0x5,
StartDependentFunctions = 0x6,
EndDependentFunctions = 0x7,
IOPortDescriptor = 0x8,
FixedLocationIOPortDescriptor = 0x9,
SmallVendorDefined = 0xE,
EndTag = 0xF
};
enum LargeTags {
MemoryRangeDescriptor = 0x1,
IdentifierStringANSI = 0x2,
IdentifierStringUNICODE = 0x3,
LargeVendorDefined = 0x4,
MemoryRange32Descriptor = 0x5,
FixedLocationMemoryRangeDescriptor = 0x6
};
// StartDependentFunction config
enum DependentFunctionConfig {
PreferredDependentConfiguration = 0x0,
AcceptableDependentConfiguration = 0x1,
SubOptimalDependentConfiguration = 0x2
};
// IRQ format, signal types (bitfield)
enum {
IRQFormatInfo_HighTrueEdgeSensitive = 0x1,
IRQFormatInfo_LowTrueEdgeSensitive = 0x2,
IRQFormatInfo_HighTrueLevelSensitive = 0x4,
IRQFormatInfo_LowTrueLevelSensitive = 0x8
};
// IRQ format, helper IRQ mask generator
static inline uint16_t irq2mask(const int IRQ) {
if (IRQ < 0 || IRQ > 15) return 0;
return (uint16_t)(1U << (unsigned char)IRQ);
}
static inline uint16_t irq2mask(const int a,const int b) {
return irq2mask(a) | irq2mask(b);
}
static inline uint16_t irq2mask(const int a,const int b,const int c) {
return irq2mask(a) | irq2mask(b) | irq2mask(c);
}
static inline uint16_t irq2mask(const int a,const int b,const int c,const int d) {
return irq2mask(a) | irq2mask(b) | irq2mask(c) | irq2mask(d);
}
static inline uint16_t irq2mask(const int a,const int b,const int c,const int d,const int e) {
return irq2mask(a) | irq2mask(b) | irq2mask(c) | irq2mask(d) | irq2mask(e);
}
// DMA format transfer type
enum {
DMATransferType_8bitOnly=0,
DMATransferType_8_and_16bit=1,
DMATransferType_16bitOnly=2
};
enum {
DMASpeedSupported_Compat=0,
DMASpeedSupported_TypeA=1,
DMASpeedSupported_TypeB=2,
DMASpeedSupported_TypeF=3
};
// DMA format
static inline uint16_t dma2mask(const int DMA) {
if (DMA < 0 || DMA > 7 || DMA == 4) return 0;
return (uint16_t)(1U << (unsigned char)DMA);
}
static inline uint16_t dma2mask(const int a,const int b) {
return dma2mask(a) | dma2mask(b);
}
static inline uint16_t dma2mask(const int a,const int b,const int c) {
return dma2mask(a) | dma2mask(b) | dma2mask(c);
}
static inline uint16_t dma2mask(const int a,const int b,const int c,const int d) {
return dma2mask(a) | dma2mask(b) | dma2mask(c) | dma2mask(d);
}
static inline uint16_t dma2mask(const int a,const int b,const int c,const int d,const int e) {
return dma2mask(a) | dma2mask(b) | dma2mask(c) | dma2mask(d) | dma2mask(e);
}
public:
virtual void config(Bitu val);
virtual void wakecsn(Bitu val);
virtual void select_logical_device(Bitu val);
virtual void on_pnp_key();
/* ISA PnP I/O data read/write */
virtual uint8_t read(Bitu addr);
virtual void write(Bitu addr,Bitu val);
virtual bool alloc(size_t sz);
void write_begin_SMALLTAG(const ISAPnPDevice::SmallTags stag,unsigned char len);
void write_begin_LARGETAG(const ISAPnPDevice::LargeTags stag,unsigned int len);
void write_nstring(const char *str,const size_t l);
void write_byte(const unsigned char c);
void begin_write_res();
void end_write_res();
void write_END();
void write_ISAPnP_version(unsigned char major,unsigned char minor,unsigned char vendor);
void write_Identifier_String(const char *str);
void write_Logical_Device_ID(const char c1,const char c2,const char c3,const char c4,const char c5,const char c6,const char c7);
void write_Compatible_Device_ID(const char c1,const char c2,const char c3,const char c4,const char c5,const char c6,const char c7);
void write_Device_ID(const char c1,const char c2,const char c3,const char c4,const char c5,const char c6,const char c7);
void write_Dependent_Function_Start(const ISAPnPDevice::DependentFunctionConfig cfg,const bool force=false);
void write_IRQ_Format(const uint16_t IRQ_mask,const unsigned char IRQ_signal_type=0);
void write_DMA_Format(const uint8_t DMA_mask,const unsigned char transfer_type_preference,const bool is_bus_master,const bool byte_mode,const bool word_mode,const unsigned char speed_supported);
void write_IO_Port(const uint16_t min_port,const uint16_t max_port,const uint8_t count,const uint8_t alignment=1,const bool full16bitdecode=true);
void write_End_Dependent_Functions();
public:
unsigned char CSN = 0;
unsigned char logical_device = 0;
unsigned char ident[9]; /* 72-bit vendor + serial + checksum identity */
unsigned char ident_bp = 0; /* bit position of identity read */
unsigned char ident_2nd = 0;
unsigned char resource_ident = 0;
unsigned char* resource_data = NULL;
size_t resource_data_len = 0;
unsigned int resource_data_pos = 0;
size_t alloc_write = 0;
unsigned char* alloc_res = NULL;
size_t alloc_sz = 0;
};
extern bool ACPI_enabled;
@ -341,59 +420,61 @@ bool ACPI_init();
/* abc = ASCII letters of the alphabet
* defg = hexadecimal digits */
#define ISAPNP_ID(a,b,c,d,e,f,g) \
(((a)&0x1F) << 2) | \
(((b)&0x1F) >> 3) | \
((((b)&0x1F)&7) << 13) | \
(((c)&0x1F) << 8) | \
(((d)&0x1F) << 20) | \
(((e)&0x1F) << 16) | \
(((f)&0x1F) << 28) | \
(((g)&0x1F) << 24)
(((a)&0x1F) << 2) | \
(((b)&0x1F) >> 3) | \
((((b)&0x1F)&7) << 13) | \
(((c)&0x1F) << 8) | \
(((d)&0x1F) << 20) | \
(((e)&0x1F) << 16) | \
(((f)&0x1F) << 28) | \
(((g)&0x1F) << 24)
#define ISAPNP_TYPE(a,b,c) (a),(b),(c)
#define ISAPNP_SMALL_TAG(t,l) (((t) << 3) | (l))
/* WARNING: do not wrap type macro parameter in parens i.e. (type), it breaks PNP
* structures and Windows 9x/ME will fail to boot! */
#define ISAPNP_SYSDEV_HEADER(id,type,ctrl) \
( (id) & 0xFF), \
(((id) >> 8) & 0xFF), \
(((id) >> 16) & 0xFF), \
(((id) >> 24) & 0xFF), \
type, \
( (ctrl) & 0xFF), \
(((ctrl) >> 8) & 0xFF)
( (id) & 0xFF), \
(((id) >> 8) & 0xFF), \
(((id) >> 16) & 0xFF), \
(((id) >> 24) & 0xFF), \
type, \
( (ctrl) & 0xFF), \
(((ctrl) >> 8) & 0xFF)
#define ISAPNP_IO_RANGE(info,min,max,align,len) \
ISAPNP_SMALL_TAG(8,7), \
(info), \
((min) & 0xFF), (((min) >> 8) & 0xFF), \
((max) & 0xFF), (((max) >> 8) & 0xFF), \
(align), \
(len)
ISAPNP_SMALL_TAG(8,7), \
(info), \
((min) & 0xFF), (((min) >> 8) & 0xFF), \
((max) & 0xFF), (((max) >> 8) & 0xFF), \
(align), \
(len)
#define ISAPNP_IRQ_SINGLE(irq,flags) \
ISAPNP_SMALL_TAG(4,3), \
((1 << (irq)) & 0xFF), \
(((1 << (irq)) >> 8) & 0xFF), \
(flags)
ISAPNP_SMALL_TAG(4,3), \
((1 << (irq)) & 0xFF), \
(((1 << (irq)) >> 8) & 0xFF), \
(flags)
#define ISAPNP_IRQ(irqmask,flags) \
ISAPNP_SMALL_TAG(4,3), \
((irqmask) & 0xFF), \
(((irqmask) >> 8) & 0xFF), \
(flags)
ISAPNP_SMALL_TAG(4,3), \
((irqmask) & 0xFF), \
(((irqmask) >> 8) & 0xFF), \
(flags)
#define ISAPNP_DMA_SINGLE(dma,flags) \
ISAPNP_SMALL_TAG(5,2), \
((1 << (dma)) & 0xFF), \
(flags)
ISAPNP_SMALL_TAG(5,2), \
((1 << (dma)) & 0xFF), \
(flags)
#define ISAPNP_DMA(dma,flags) \
ISAPNP_SMALL_TAG(5,2), \
((dma) & 0xFF), \
(flags)
ISAPNP_SMALL_TAG(5,2), \
((dma) & 0xFF), \
(flags)
#define ISAPNP_END \
ISAPNP_SMALL_TAG(0xF,1), 0x00
ISAPNP_SMALL_TAG(0xF,1), 0x00
void ISA_PNP_devreg(ISAPnPDevice *x);
#endif

View File

@ -1,4 +1,7 @@
#ifndef DOSBOX_BITOP_H
#define DOSBOX_BITOP_H
#include <limits.h>
namespace bitop {
@ -392,3 +395,5 @@ template <typename T=unsigned int> static inline bitseqlengthandpos_ret_t bitseq
void self_test(void);
}
#endif //DOSBOX_BITOP_H

View File

@ -1,4 +1,4 @@
/*auto-generated*/
#define UPDATED_STR "Oct 1, 2024 11:12:12pm"
#define GIT_COMMIT_HASH "70ade1c"
#define COPYRIGHT_END_YEAR "2024"
#define UPDATED_STR "May 3, 2025 9:41:42am"
#define GIT_COMMIT_HASH "190c868"
#define COPYRIGHT_END_YEAR "2025"

View File

@ -19,6 +19,7 @@ extern char autoexec_data[AUTOEXEC_SIZE];
extern struct BuiltinFileBlob bfb_DSXMENU_EXE_PC; // DSXMENU.EXE
extern struct BuiltinFileBlob bfb_DSXMENU_EXE_PC98; // DSXMENU.EXE
extern struct BuiltinFileBlob bfb_CWSDPMI_PC98_EXE; // CWSDPMI.EXE (PC-98 version)
extern struct BuiltinFileBlob bfb_CWSDPMI_EXE; // CWSDPMI.EXE
extern struct BuiltinFileBlob bfb_DOS32A_EXE; // DOS32A.EXE
extern struct BuiltinFileBlob bfb_DOS4GW_EXE; // DOS4GW.EXE

View File

@ -132,7 +132,7 @@
#define be64toh(x) betoh64(x)
#define le64toh(x) letoh64(x)
#elif defined(__HAIKU__)
#elif defined(__HAIKU__) || defined(OS2)
#include <endian.h>

View File

@ -3445,9 +3445,9 @@ void makestdcp950table() {
cp950_to_unicode_raw[64*6+37] = 0x255e;
cp950_to_unicode_raw[64*6+38] = 0x256a;
cp950_to_unicode_raw[64*6+39] = 0x2561;
cp950_to_unicode_raw[64*7+12] = 0x5341;
cp950_to_unicode_raw[64*7+12] = 0x0000; /* 0x5341 is duplicate mapping so replace it with 0x0000 */
cp950_to_unicode_raw[64*7+13] = 0x5344;
cp950_to_unicode_raw[64*7+14] = 0x5345;
cp950_to_unicode_raw[64*7+14] = 0x0000; /* 0x5345 is duplicate mapping so replace it with 0x0000 */
cp950_to_unicode_raw[64*101+21] = 0x5f5d;
cp950_to_unicode_raw[64*260+58] = 0x256d;
cp950_to_unicode_raw[64*260+59] = 0x256e;

View File

@ -3472,12 +3472,12 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x7798,0x77af,0x77be,0x77c3,0x77c5,0x77cb,0x77dd,0x77e6, /* 0x81F0-0x81F7 */
0x77f4,0x781e,0x783d,0x7842,0x7844,0x784b,0x7851,0x0000, /* 0x81F8-0x81FF */
/* codebase=0x8240 rawbase=0x0140 */
0x5516,0x58f7,0x9834,0x845b,0x7114,0x8276,0x8956,0x9d2c, /* 0x8240-0x8247 */
0x9d0e,0x8eaf,0x6062,0x6666,0x86ce,0x64b9,0x938c,0x565b, /* 0x8248-0x824F */
0x6f45,0x8acc,0x7149,0x5dcc,0x8749,0x9a28,0x7baa,0x8d0b, /* 0x8250-0x8257 */
0x9957,0x5c2d,0x7e4b,0x981a,0x5026,0x6372,0x9e78,0x783f, /* 0x8258-0x825F */
0x5516,0x58f7,0x9834,0x0000,0x7114,0x8276,0x0000,0x9d2c, /* 0x8240-0x8247 */
0x9d0e,0x8eaf,0x0000,0x0000,0x86ce,0x64b9,0x0000,0x565b, /* 0x8248-0x824F */
0x6f45,0x8acc,0x0000,0x5dcc,0x8749,0x9a28,0x7baa,0x8d0b, /* 0x8250-0x8257 */
0x0000,0x5c2d,0x7e4b,0x981a,0x0000,0x0000,0x9e78,0x783f, /* 0x8258-0x825F */
0x9eb9,0x9eba,0x8cce,0x8b83,0xef79,0x848b,0x91a4,0x7a63, /* 0x8260-0x8267 */
0x64b0,0x5dfd,0x5e96,0x8061,0x6955,0x7aea,0x7026,0x68bc, /* 0x8268-0x826F */
0x0000,0x0000,0x0000,0x8061,0x6955,0x7aea,0x0000,0x68bc, /* 0x8268-0x826F */
0x7977,0x6d9c,0x8fe9,0x7962,0x56a2,0x877f,0x5265,0x7984, /* 0x8270-0x8277 */
0x6e8c,0x9197,0x7b86,0x982c,0x685d,0x4fad,0x85ae,0x0000, /* 0x8278-0x827F */
/* codebase=0x8280 rawbase=0x0180 */
@ -3485,9 +3485,9 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x8288-0x828F */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x8290-0x8297 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x8298-0x829F */
0x0000,0x7bed,0x874b,0x5036,0x690d,0x6b96,0x614e,0x5177, /* 0x82A0-0x82A7 */
0x771f,0x5024,0x7f6e,0x76f4,0x69d9,0x60e3,0x62f6,0x545f, /* 0x82A8-0x82AF */
0x9784,0x564c,0x50c5,0x5618,0x865e,0x5932,0x595b,0x595d, /* 0x82B0-0x82B7 */
0x0000,0x7bed,0x874b,0x5036,0x0000,0x0000,0x0000,0x0000, /* 0x82A0-0x82A7 */
0x0000,0x5024,0x0000,0x0000,0x0000,0x60e3,0x0000,0x545f, /* 0x82A8-0x82AF */
0x0000,0x0000,0x0000,0x5618,0x0000,0x5932,0x595b,0x595d, /* 0x82B0-0x82B7 */
0x5963,0x596c,0x599b,0x59d7,0x59eb,0x5a1a,0x5aaa,0x5ad0, /* 0x82B8-0x82BF */
/* codebase=0x82c0 rawbase=0x01c0 */
0x5af1,0x5b36,0x5bc9,0x5bf3,0x5c13,0x5c1c,0x5c1e,0x5c53, /* 0x82C0-0x82C7 */
@ -3499,13 +3499,13 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x608b,0x60a6,0x60de,0x6111,0x6120,0x6121,0x613c,0x613d, /* 0x82F0-0x82F7 */
0x6198,0x61b7,0x61f4,0x6213,0x621d,0x621e,0x6237,0x0000, /* 0x82F8-0x82FF */
/* codebase=0x8340 rawbase=0x0200 */
0x5e7a,0x6c10,0x53ce,0x4f2b,0x4f4e,0x5434,0x56f1,0x58ee, /* 0x8340-0x8347 */
0x5939,0x5986,0x5c2c,0x51b3,0x51b2,0x707e,0x89c1,0x89d2, /* 0x8348-0x834F */
0x5e7a,0x0000,0x53ce,0x4f2b,0x0000,0x5434,0x56f1,0x58ee, /* 0x8340-0x8347 */
0x5939,0x5986,0x0000,0x51b3,0x51b2,0x707e,0x89c1,0x0000, /* 0x8348-0x834F */
0x8d1d,0x8f66,0x4e9a,0x6765,0x4ed1,0x4e24,0x534f,0x5c4a, /* 0x8350-0x8357 */
0x5188,0x5e95,0x62b5,0x4e1c,0x4e89,0x72b6,0x7c7c,0x7ea0, /* 0x8358-0x835F */
0x5367,0x8f67,0x90b8,0x957f,0x95e8,0x4fa0,0x4fa3,0x5156, /* 0x8360-0x8367 */
0x5219,0x52b2,0x5374,0x5942,0x5e05,0x67e2,0x6c79,0x4e3a, /* 0x8368-0x836F */
0x7ea3,0x7ea2,0x7eaa,0x7eab,0x7ea5,0x7ea6,0x7ea1,0x80dd, /* 0x8370-0x8377 */
0x5188,0x0000,0x0000,0x4e1c,0x4e89,0x72b6,0x7c7c,0x7ea0, /* 0x8358-0x835F */
0x5367,0x8f67,0x0000,0x957f,0x95e8,0x4fa0,0x4fa3,0x5156, /* 0x8360-0x8367 */
0x5219,0x52b2,0x5374,0x5942,0x5e05,0x0000,0x6c79,0x4e3a, /* 0x8368-0x836F */
0x7ea3,0x7ea2,0x7eaa,0x7eab,0x7ea5,0x7ea6,0x7ea1,0x0000, /* 0x8370-0x8377 */
0x82ce,0x8ba1,0x8ba2,0x8ba3,0x8d1e,0x8d1f,0x519b,0x0000, /* 0x8378-0x837F */
/* codebase=0x8380 rawbase=0x0240 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x8380-0x8387 */
@ -3517,23 +3517,23 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x5458,0x5a31,0x5b59,0x5ce1,0x5c9b,0x5c98,0x5e08,0x5e93, /* 0x83B0-0x83B7 */
0x5f84,0x631f,0x65f6,0x664b,0x4e66,0x6cfe,0x6d43,0x4e4c, /* 0x83B8-0x83BF */
/* codebase=0x83c0 rawbase=0x0280 */
0x72ed,0x72c8,0x4ea9,0x7825,0x79ea,0x7eba,0x7eb1,0x7eb9, /* 0x83C0-0x83C7 */
0x72ed,0x72c8,0x4ea9,0x0000,0x0000,0x7eba,0x7eb1,0x7eb9, /* 0x83C0-0x83C7 */
0x7eaf,0x7ebd,0x7eb0,0x7ea7,0x7ead,0x7eb3,0x7eb8,0x7eb7, /* 0x83C8-0x83CF */
0x80c1,0x8109,0x520d,0x8bb0,0x8ba6,0x8ba8,0x8ba7,0x8baa, /* 0x83D0-0x83D7 */
0x8baf,0x8bad,0x8bab,0x5c82,0x8d22,0x8d21,0x8f69,0x8f6b, /* 0x83D8-0x83DF */
0x9489,0x9488,0x948a,0x948b,0x95ea,0x9635,0x9655,0x9649, /* 0x83E0-0x83E7 */
0x9965,0x9a6c,0x9aa8,0x4f2a,0x4f1f,0x4fa6,0x4fa7,0x52a1, /* 0x83E8-0x83EF */
0x9965,0x9a6c,0x0000,0x4f2a,0x4f1f,0x4fa6,0x4fa7,0x52a1, /* 0x83E8-0x83EF */
0x52a8,0x533a,0x53c2,0x54d1,0x95ee,0x8854,0x56fd,0x575a, /* 0x83F0-0x83F7 */
0x57a9,0x6267,0x591f,0x5a04,0x5987,0x4e13,0x5c06,0x0000, /* 0x83F8-0x83FF */
/* codebase=0x8440 rawbase=0x02c0 */
0x5c49,0x5ce5,0x5c97,0x5e26,0x5e10,0x5f20,0x5f3a,0x4ece, /* 0x8440-0x8447 */
0x5f95,0x51c4,0x6005,0x626b,0x6302,0x626a,0x62a1,0x6323, /* 0x8448-0x844F */
0x8d25,0x542f,0x659b,0x65a9,0x663c,0x52d6,0x5f03,0x6761, /* 0x8450-0x8457 */
0x5f95,0x0000,0x6005,0x626b,0x0000,0x626a,0x62a1,0x6323, /* 0x8448-0x844F */
0x8d25,0x542f,0x0000,0x65a9,0x663c,0x0000,0x5f03,0x6761, /* 0x8450-0x8457 */
0x67ad,0x6740,0x6c22,0x51c9,0x6d45,0x6e0a,0x6cea,0x6ca6, /* 0x8458-0x845F */
0x51c0,0x7275,0x72f0,0x73b0,0x4ea7,0x6bd5,0x5f02,0x4f17, /* 0x8460-0x8467 */
0x51c0,0x7275,0x72f0,0x73b0,0x4ea7,0x6bd5,0x0000,0x4f17, /* 0x8460-0x8467 */
0x7eca,0x7edf,0x7ecd,0x7ecb,0x7ecc,0x7ec6,0x7ec5,0x7ec4, /* 0x8468-0x846F */
0x7ec8,0x7ec1,0x7ec2,0x94b5,0x4e60,0x835a,0x830e,0x8392, /* 0x8470-0x8477 */
0x5e84,0x82cb,0x5904,0x672f,0x886e,0x89c5,0x89c4,0x0000, /* 0x8478-0x847F */
0x7ec8,0x7ec1,0x7ec2,0x94b5,0x4e60,0x835a,0x830e,0x0000, /* 0x8470-0x8477 */
0x0000,0x82cb,0x5904,0x672f,0x886e,0x89c5,0x89c4,0x0000, /* 0x8478-0x847F */
/* codebase=0x8480 rawbase=0x0300 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x8480-0x8487 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x8488-0x848F */
@ -3549,9 +3549,9 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x5c27,0x573a,0x62a5,0x57da,0x58f6,0x5a32,0x5bfb,0x5c9a, /* 0x84D0-0x84D7 */
0x5e27,0x5e0f,0x5395,0x53a9,0x6076,0x95f7,0x60ec,0x607b, /* 0x84D8-0x84DF */
0x607c,0x62e3,0x6325,0x6362,0x626c,0x67a3,0x680b,0x6808, /* 0x84E0-0x84E7 */
0x94a6,0x6b8b,0x58f3,0x6c2f,0x6c29,0x6d8c,0x51d1,0x6e6e, /* 0x84E8-0x84EF */
0x94a6,0x6b8b,0x58f3,0x0000,0x6c29,0x0000,0x51d1,0x0000, /* 0x84E8-0x84EF */
0x6da1,0x6c64,0x6d4b,0x6d51,0x6da3,0x65e0,0x72b9,0x82cf, /* 0x84F0-0x84F7 */
0x753b,0x75c9,0x53d1,0x76d7,0x781a,0x79c6,0x7a97,0x0000, /* 0x84F8-0x84FF */
0x753b,0x75c9,0x53d1,0x76d7,0x781a,0x79c6,0x0000,0x0000, /* 0x84F8-0x84FF */
/* codebase=0x8540 rawbase=0x0380 */
0x7b14,0x7b0b,0x7ede,0x7ed3,0x7ed2,0x7edd,0x4e1d,0x7edc, /* 0x8540-0x8547 */
0x7ed9,0x7eda,0x7ed6,0x7edb,0x8083,0x80be,0x80c0,0x534e, /* 0x8548-0x854F */
@ -3569,18 +3569,18 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x0000,0x961f,0x9636,0x9633,0x97e7,0x9879,0x987a,0x987b, /* 0x85A0-0x85A7 */
0x996a,0x996d,0x9968,0x996e,0x996c,0x51af,0x9a6d,0x4e71, /* 0x85A8-0x85AF */
0x503a,0x4f20,0x4ec5,0x503e,0x4f24,0x506c,0x94f2,0x52bf, /* 0x85B0-0x85B7 */
0x79ef,0x6c47,0x5417,0x545c,0x545b,0x56ed,0x5706,0x6d82, /* 0x85B8-0x85BF */
0x79ef,0x6c47,0x5417,0x545c,0x545b,0x56ed,0x5706,0x0000, /* 0x85B8-0x85BF */
/* codebase=0x85c0 rawbase=0x0400 */
0x5757,0x575e,0x57d8,0x8314,0x5965,0x5988,0x7231,0x5ffe, /* 0x85C0-0x85C7 */
0x6006,0x607a,0x635f,0x62a2,0x6363,0x6784,0x6656,0x6655, /* 0x85C8-0x85CF */
0x65f8,0x4f1a,0x4e1a,0x6781,0x6768,0x6862,0x67ab,0x5c81, /* 0x85D0-0x85D7 */
0x6c9f,0x706d,0x6e7f,0x6ed1,0x6ca7,0x70e6,0x70bc,0x7080, /* 0x85D8-0x85DF */
0x7115,0x7237,0x72ee,0x733e,0x73f2,0x5f53,0x76cf,0x7750, /* 0x85E0-0x85E7 */
0x7741,0x96ce,0x788c,0x8282,0x7b15,0x7ca4,0x7ecf,0x7ee2, /* 0x85E8-0x85EF */
0x7ed1,0x7ee5,0x7ee6,0x4e49,0x7fa1,0x5723,0x80a0,0x811a, /* 0x85F0-0x85F7 */
0x80bf,0x8111,0x8364,0x82c7,0x53f6,0x83b4,0x865e,0x0000, /* 0x85F8-0x85FF */
0x6006,0x607a,0x635f,0x62a2,0x6363,0x0000,0x6656,0x6655, /* 0x85C8-0x85CF */
0x65f8,0x4f1a,0x4e1a,0x0000,0x6768,0x6862,0x67ab,0x5c81, /* 0x85D0-0x85D7 */
0x6c9f,0x706d,0x6e7f,0x0000,0x6ca7,0x70e6,0x70bc,0x7080, /* 0x85D8-0x85DF */
0x7115,0x7237,0x72ee,0x0000,0x73f2,0x5f53,0x76cf,0x7750, /* 0x85E0-0x85E7 */
0x7741,0x0000,0x0000,0x8282,0x7b15,0x7ca4,0x7ecf,0x7ee2, /* 0x85E8-0x85EF */
0x7ed1,0x7ee5,0x7ee6,0x4e49,0x0000,0x0000,0x80a0,0x811a, /* 0x85F0-0x85F7 */
0x80bf,0x8111,0x8364,0x82c7,0x53f6,0x83b4,0x0000,0x0000, /* 0x85F8-0x85FF */
/* codebase=0x8640 rawbase=0x0440 */
0x864f,0x53f7,0x8708,0x86ac,0x8865,0x88c5,0x8be7,0x8be5, /* 0x8640-0x8647 */
0x864f,0x53f7,0x0000,0x86ac,0x8865,0x88c5,0x8be7,0x8be5, /* 0x8640-0x8647 */
0x8be6,0x8bd5,0x8bd7,0x8bd8,0x8bd9,0x8be3,0x8bda,0x8bdd, /* 0x8648-0x864F */
0x8bdb,0x8be1,0x8be2,0x8be0,0x8bdf,0x8d3c,0x8d44,0x8d3e, /* 0x8650-0x8657 */
0x8d3f,0x8d40,0x8d41,0x8d42,0x8d45,0x8f83,0x8f7d,0x8f7c, /* 0x8658-0x865F */
@ -3603,36 +3603,36 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x7545,0x8363,0x67aa,0x6eda,0x6e0d,0x6c49,0x6ee1,0x6ede, /* 0x86D0-0x86D7 */
0x6e10,0x6da8,0x6d9f,0x6caa,0x6e14,0x6e17,0x6da4,0x8367, /* 0x86D8-0x86DF */
0x5c14,0x8366,0x72f1,0x7410,0x739b,0x759f,0x75a1,0x75af, /* 0x86E0-0x86E7 */
0x75ea,0x5c3d,0x76d1,0x7855,0x796f,0x7978,0x79cd,0x79f0, /* 0x86E8-0x86EF */
0x6d3c,0x7a9d,0x7b3a,0x7b5d,0x7efd,0x7efe,0x7efc,0x7ef0, /* 0x86F0-0x86F7 */
0x75ea,0x5c3d,0x76d1,0x7855,0x796f,0x7978,0x0000,0x79f0, /* 0x86E8-0x86EF */
0x0000,0x7a9d,0x7b3a,0x7b5d,0x7efd,0x7efe,0x7efc,0x7ef0, /* 0x86F0-0x86F7 */
0x7eeb,0x7eff,0x7d27,0x7f00,0x7eb2,0x7eee,0x7ef8,0x0000, /* 0x86F8-0x86FF */
/* codebase=0x8740 rawbase=0x0500 */
0x7ef5,0x7eb6,0x7ef4,0x7eea,0x7f01,0x7ef6,0x7f5a,0x95fb, /* 0x8740-0x8747 */
0x8385,0x76d6,0x836a,0x82cd,0x8680,0x8bf5,0x8bed,0x8bec, /* 0x8748-0x874F */
0x8ba4,0x8beb,0x8bef,0x8bf4,0x8bf0,0x8bf2,0x8bf1,0x8bf3, /* 0x8750-0x8757 */
0x8bee,0x5bbe,0x8d48,0x8d4a,0x8d75,0x8d76,0x8f85,0x8f84, /* 0x8758-0x875F */
0x8bee,0x5bbe,0x8d48,0x8d4a,0x8d75,0x0000,0x8f85,0x8f84, /* 0x8758-0x875F */
0x8f7b,0x8fdc,0x900a,0x9012,0x94f0,0x94f6,0x94dc,0x94ed, /* 0x8760-0x8767 */
0x94e2,0x94ec,0x94e8,0x94f5,0x94e3,0x9602,0x95fa,0x95fd, /* 0x8768-0x876F */
0x9601,0x9600,0x9645,0x9887,0x9886,0x98d2,0x997a,0x997c, /* 0x8770-0x8777 */
0x9975,0x9977,0x9a73,0x80ae,0x9ab0,0x9e23,0x9e22,0x0000, /* 0x8778-0x877F */
0x9975,0x9977,0x9a73,0x0000,0x0000,0x9e23,0x9e22,0x0000, /* 0x8778-0x877F */
/* codebase=0x8780 rawbase=0x0540 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x8780-0x8787 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x8788-0x878F */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x8790-0x8797 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x8798-0x879F */
0x0000,0x51e4,0x9f50,0x4ebf,0x4eea,0x4ef7,0x4fac,0x4fa9, /* 0x87A0-0x87A7 */
0x4fed,0x5267,0x5218,0x5251,0x523d,0x5389,0x5520,0x5634, /* 0x87A8-0x87AF */
0x54d7,0x5618,0x55b7,0x5578,0x53fd,0x589f,0x575f,0x5760, /* 0x87B0-0x87B7 */
0x0000,0x51e4,0x9f50,0x4ebf,0x4eea,0x0000,0x4fac,0x4fa9, /* 0x87A0-0x87A7 */
0x4fed,0x5267,0x5218,0x5251,0x523d,0x5389,0x5520,0x0000, /* 0x87A8-0x87AF */
0x54d7,0x5618,0x55b7,0x5578,0x53fd,0x0000,0x575f,0x5760, /* 0x87B0-0x87B7 */
0x5815,0x5a34,0x5a75,0x59a9,0x5a07,0x5a06,0x5bbd,0x5ba1, /* 0x87B8-0x87BF */
/* codebase=0x87c0 rawbase=0x0580 */
0x5199,0x5c42,0x5d94,0x5e1c,0x5e9f,0x53a8,0x5e99,0x53ae, /* 0x87C0-0x87C7 */
0x5199,0x5c42,0x0000,0x5e1c,0x5e9f,0x53a8,0x5e99,0x53ae, /* 0x87C0-0x87C7 */
0x5e7f,0x5f39,0x5e86,0x8651,0x5fe7,0x6002,0x60af,0x60ee, /* 0x87C8-0x87CF */
0x6124,0x6003,0x631a,0x6251,0x635e,0x62e8,0x6320,0x629a, /* 0x87D0-0x87D7 */
0x63b8,0x63ff,0x654c,0x6570,0x6682,0x6635,0x6837,0x6869, /* 0x87D8-0x87DF */
0x6124,0x6003,0x631a,0x0000,0x635e,0x62e8,0x6320,0x629a, /* 0x87D0-0x87D7 */
0x63b8,0x63ff,0x654c,0x6570,0x6682,0x0000,0x6837,0x6869, /* 0x87D8-0x87DF */
0x67a2,0x6807,0x697c,0x6868,0x4e50,0x679e,0x6b27,0x6b87, /* 0x87E0-0x87E7 */
0x6bb4,0x6d46,0x6cfc,0x6d01,0x6d47,0x6e83,0x6da6,0x6da7, /* 0x87E8-0x87EF */
0x6bb4,0x6d46,0x6cfc,0x0000,0x6d47,0x6e83,0x6da6,0x6da7, /* 0x87E8-0x87EF */
0x6d54,0x70ed,0x5956,0x83b9,0x75ae,0x7691,0x76b1,0x76d8, /* 0x87F0-0x87F7 */
0x786e,0x7801,0x7a91,0x7a77,0x7f14,0x7ec3,0x7eac,0x0000, /* 0x87F8-0x87FF */
0x0000,0x7801,0x7a91,0x7a77,0x7f14,0x7ec3,0x7eac,0x0000, /* 0x87F8-0x87FF */
/* codebase=0x8840 rawbase=0x05c0 */
0x7f04,0x7f05,0x7f09,0x7f16,0x7f18,0x7ebf,0x7f0e,0x7f13, /* 0x8840-0x8847 */
0x7f0d,0x7f02,0x7f08,0x7f07,0x9a82,0x7f62,0x80f6,0x80a4, /* 0x8848-0x884F */
@ -3641,7 +3641,7 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x8c03,0x8c01,0x8bba,0x8be4,0x8c07,0x8bfd,0x8c00,0x7ad6, /* 0x8860-0x8867 */
0x8d54,0x8d4f,0x8d4b,0x8d31,0x8d26,0x8d4c,0x8d24,0x5356, /* 0x8868-0x886F */
0x8d50,0x8d28,0x8d53,0x8df5,0x8f89,0x8f86,0x8f8d,0x8f88, /* 0x8870-0x8877 */
0x8f87,0x8f6e,0x8f8e,0x8f8b,0x8f8a,0x9002,0x8fc1,0x0000, /* 0x8878-0x887F */
0x8f87,0x8f6e,0x8f8e,0x8f8b,0x8f8a,0x0000,0x8fc1,0x0000, /* 0x8878-0x887F */
/* codebase=0x8880 rawbase=0x0600 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x8880-0x8887 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x8888-0x888F */
@ -3652,13 +3652,13 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x95fe,0x9605,0x5de9,0x9889,0x988c,0x517b,0x997f,0x9981, /* 0x88B0-0x88B7 */
0x9a7c,0x9a7b,0x9a77,0x9a76,0x9a7d,0x9a7e,0x9a79,0x9a78, /* 0x88B8-0x88BF */
/* codebase=0x88c0 rawbase=0x0640 */
0x9ab7,0x95f9,0x9c7f,0x9c81,0x9e29,0x9e26,0x9eb8,0x9f7f, /* 0x88C0-0x88C7 */
0x4fe6,0x50a7,0x4faa,0x5e42,0x5242,0x5428,0x54dd,0x55f3, /* 0x88C8-0x88CF */
0x0000,0x95f9,0x9c7f,0x9c81,0x9e29,0x9e26,0x9eb8,0x9f7f, /* 0x88C0-0x88C7 */
0x4fe6,0x50a7,0x4faa,0x5e42,0x5242,0x0000,0x54dd,0x55f3, /* 0x88C8-0x88CF */
0x57a6,0x575b,0x594b,0x8885,0x5b66,0x5bfc,0x5baa,0x51ed, /* 0x88D0-0x88D7 */
0x60eb,0x61d4,0x5fc6,0x6218,0x62e5,0x6321,0x631e,0x636e, /* 0x88D8-0x88DF */
0x60eb,0x61d4,0x5fc6,0x6218,0x62e5,0x6321,0x631e,0x0000, /* 0x88D8-0x88DF */
0x63b3,0x62e9,0x6361,0x62c5,0x631d,0x5386,0x6653,0x6654, /* 0x88E0-0x88E7 */
0x6619,0x6866,0x6a2a,0x6811,0x692d,0x6865,0x673a,0x6861, /* 0x88E8-0x88EF */
0x6dc0,0x6d53,0x6cfd,0x6d4a,0x6ca3,0x6fa6,0x6e11,0x70bd, /* 0x88F0-0x88F7 */
0x6619,0x6866,0x6a2a,0x6811,0x692d,0x6865,0x0000,0x6861, /* 0x88E8-0x88EF */
0x0000,0x6d53,0x6cfd,0x6d4a,0x6ca3,0x0000,0x6e11,0x70bd, /* 0x88F0-0x88F7 */
0x70e7,0x706f,0x70eb,0x7116,0x72ec,0x7391,0x74ef,0x0000, /* 0x88F8-0x88FF */
/* codebase=0x8940 rawbase=0x0680 */
0x7618,0x5362,0x7792,0x7816,0x789b,0x79ef,0x9896,0x7a23, /* 0x8940-0x8947 */
@ -3677,16 +3677,16 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x0000,0x94a2,0x9521,0x5f55,0x94ee,0x9525,0x9526,0x951f, /* 0x89A0-0x89A7 */
0x9522,0x9531,0x960e,0x968f,0x9669,0x9759,0x817c,0x988a, /* 0x89A8-0x89AF */
0x9888,0x9891,0x9894,0x5934,0x9893,0x9890,0x9986,0x996f, /* 0x89B0-0x89B7 */
0x9984,0x9985,0x9a87,0x9a88,0x9a86,0x9ab8,0x9abc,0x9c8d, /* 0x89B8-0x89BF */
0x9984,0x9985,0x9a87,0x9a88,0x9a86,0x0000,0x0000,0x9c8d, /* 0x89B8-0x89BF */
/* codebase=0x89c0 rawbase=0x0700 */
0x9e35,0x9e2a,0x9e2f,0x9e2d,0x9e33,0x9f99,0x9f9f,0x4f18, /* 0x89C0-0x89C7 */
0x9e35,0x9e2a,0x9e2f,0x9e2d,0x9e33,0x9f99,0x9f9f,0x0000, /* 0x89C0-0x89C7 */
0x507f,0x50a8,0x52b1,0x549b,0x5413,0x538b,0x57d9,0x5a74, /* 0x89C8-0x89CF */
0x5ad4,0x5b37,0x5c34,0x5c66,0x5c7f,0x5d58,0x5e2e,0x5f25, /* 0x89D0-0x89D7 */
0x5e94,0x6073,0x620f,0x51fb,0x6324,0x62e7,0x62df,0x6401, /* 0x89D8-0x89DF */
0x655b,0x6bd9,0x66a7,0x6863,0x68c0,0x6867,0x6809,0x6a2f, /* 0x89E0-0x89E7 */
0x6b93,0x6be1,0x6cde,0x6ee8,0x6d4e,0x6d9b,0x6ee5,0x6da9, /* 0x89E8-0x89EF */
0x6b93,0x6be1,0x0000,0x6ee8,0x6d4e,0x6d9b,0x6ee5,0x6da9, /* 0x89E8-0x89EF */
0x6f4d,0x8425,0x707f,0x70db,0x70e9,0x5899,0x72de,0x83b7, /* 0x89F0-0x89F7 */
0x73af,0x7477,0x75e8,0x7597,0x77eb,0x78fa,0x77f6,0x0000, /* 0x89F8-0x89FF */
0x73af,0x7477,0x75e8,0x7597,0x77eb,0x0000,0x77f6,0x0000, /* 0x89F8-0x89FF */
/* codebase=0x8a40 rawbase=0x0740 */
0x7bd3,0x7caa,0x9546,0x7cc1,0x7f29,0x7ee9,0x7f2a,0x7f15, /* 0x8A40-0x8A47 */
0x7f27,0x7ef7,0x7f1d,0x603b,0x7eb5,0x7f2b,0x7ea4,0x7f25, /* 0x8A48-0x8A4F */
@ -3706,11 +3706,11 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x97e9,0x9897,0x98d3,0x9a8b,0x9a8f,0x9c9c,0x9c9b,0x9c94, /* 0x8AB0-0x8AB7 */
0x9c91,0x9e3f,0x9e3d,0x70b9,0x658b,0x4e1b,0x565c,0x5739, /* 0x8AB8-0x8ABF */
/* codebase=0x8ac0 rawbase=0x07c0 */
0x5792,0x5a76,0x61d1,0x6269,0x63b7,0x6270,0x64b5,0x6446, /* 0x8AC0-0x8AC7 */
0x64de,0x64b7,0x65ad,0x69df,0x67dc,0x69db,0x67e0,0x6b24, /* 0x8AC8-0x8ACF */
0x5792,0x5a76,0x61d1,0x6269,0x63b7,0x0000,0x64b5,0x6446, /* 0x8AC0-0x8AC7 */
0x64de,0x64b7,0x65ad,0x69df,0x0000,0x69db,0x67e0,0x6b24, /* 0x8AC8-0x8ACF */
0x5f52,0x6ba1,0x6cfb,0x6e16,0x6ee4,0x6e0e,0x6e85,0x6d4f, /* 0x8AD0-0x8AD7 */
0x70ec,0x7118,0x72b7,0x730e,0x74ee,0x75a0,0x7751,0x7840, /* 0x8AD8-0x8ADF */
0x793c,0x7a51,0x79fd,0x7a9c,0x7a8d,0x7bab,0x7c27,0x7baa, /* 0x8AE0-0x8AE7 */
0x70ec,0x7118,0x72b7,0x730e,0x0000,0x75a0,0x7751,0x7840, /* 0x8AD8-0x8ADF */
0x793c,0x7a51,0x79fd,0x7a9c,0x7a8d,0x7bab,0x0000,0x7baa, /* 0x8AE0-0x8AE7 */
0x7bd1,0x7b80,0x7cae,0x7ec7,0x7f2e,0x7ed5,0x7f2d,0x7ee3, /* 0x8AE8-0x8AEF */
0x7f2f,0x7fd8,0x804c,0x8042,0x8110,0x8191,0x65e7,0x8428, /* 0x8AF0-0x8AF7 */
0x84dd,0x8360,0x86f2,0x8749,0x89d0,0x89de,0x8c1f,0x0000, /* 0x8AF8-0x8AFF */
@ -3719,9 +3719,9 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x8f6c,0x8f99,0x8fe9,0x533b,0x9171,0x9551,0x9501,0x94a8, /* 0x8B48-0x8B4F */
0x954d,0x9547,0x9550,0x9552,0x9549,0x9616,0x95ef,0x9617, /* 0x8B50-0x8B57 */
0x9619,0x6742,0x53cc,0x96cf,0x9e21,0x989d,0x989c,0x9898, /* 0x8B58-0x8B5F */
0x989a,0x989b,0x998f,0x998a,0x9988,0x9a91,0x9ac1,0x9ca8, /* 0x8B60-0x8B67 */
0x989a,0x989b,0x998f,0x998a,0x9988,0x9a91,0x0000,0x9ca8, /* 0x8B60-0x8B67 */
0x9ca4,0x9cab,0x9ca7,0x9e43,0x9e45,0x9e44,0x5784,0x575c, /* 0x8B68-0x8B6F */
0x5ba0,0x5e9e,0x5e90,0x60e9,0x6000,0x61d2,0x62e2,0x65f7, /* 0x8B70-0x8B77 */
0x5ba0,0x5e9e,0x5e90,0x60e9,0x0000,0x61d2,0x62e2,0x65f7, /* 0x8B70-0x8B77 */
0x6a71,0x691f,0x6988,0x6a79,0x6f47,0x6fd1,0x6ca5,0x0000, /* 0x8B78-0x8B7F */
/* codebase=0x8b80 rawbase=0x0840 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x8B80-0x8B87 */
@ -3730,7 +3730,7 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x8B98-0x8B9F */
0x0000,0x6fd2,0x6cf8,0x70c1,0x724d,0x728a,0x517d,0x736d, /* 0x8BA0-0x8BA7 */
0x73ba,0x743c,0x7574,0x762a,0x788d,0x7977,0x7a33,0x7b7e, /* 0x8BA8-0x8BAF */
0x8327,0x7ece,0x7ef3,0x7ed8,0x7f57,0x7f34,0x81bb,0x827a, /* 0x8BB0-0x8BB7 */
0x0000,0x7ece,0x7ef3,0x7ed8,0x7f57,0x7f34,0x0000,0x827a, /* 0x8BB0-0x8BB7 */
0x85ae,0x836f,0x8681,0x8747,0x88c6,0x8884,0x8c31,0x8bc6, /* 0x8BB8-0x8BBF */
/* codebase=0x8bc0 rawbase=0x0880 */
0x8c2d,0x8c32,0x8ba5,0x8c2f,0x8d60,0x8d5e,0x8df7,0x8f9a, /* 0x8BC0-0x8BC7 */
@ -3738,16 +3738,16 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x9558,0x9556,0x9559,0x9535,0x9542,0x94ff,0x933e,0x5173, /* 0x8BD0-0x8BD7 */
0x9647,0x96be,0x96fe,0x97ec,0x97f5,0x7c7b,0x98a0,0x98d5, /* 0x8BD8-0x8BDF */
0x9992,0x9991,0x9a9b,0x9a97,0x9cb8,0x9cb3,0x9cad,0x9cb7, /* 0x8BE0-0x8BE7 */
0x9e51,0x9e49,0x9e4a,0x9e4c,0x9e4f,0x4e3d,0x9eb4,0x529d, /* 0x8BE8-0x8BEF */
0x5499,0x5624,0x4e25,0x5b9d,0x60ac,0x5fcf,0x62e6,0x6400, /* 0x8BF0-0x8BF7 */
0x9e51,0x9e49,0x9e4a,0x9e4c,0x9e4f,0x4e3d,0x0000,0x529d, /* 0x8BE8-0x8BEF */
0x5499,0x5624,0x4e25,0x5b9d,0x60ac,0x0000,0x62e6,0x6400, /* 0x8BF0-0x8BF7 */
0x80e7,0x6987,0x6f9c,0x6f4b,0x7089,0x73d1,0x77ff,0x0000, /* 0x8BF8-0x8BFF */
/* codebase=0x8c40 rawbase=0x08c0 */
0x783a,0x77fe,0x783e,0x7aa6,0x7ade,0x7b79,0x7bee,0x8fab, /* 0x8C40-0x8C47 */
0x7f24,0x7ee7,0x7f42,0x80ea,0x8230,0x853c,0x853a,0x82a6, /* 0x8C48-0x8C4F */
0x82f9,0x8574,0x869d,0x8934,0x89c9,0x89e6,0x8bae,0x8bd1, /* 0x8C50-0x8C57 */
0x0000,0x8574,0x0000,0x8934,0x89c9,0x0000,0x8bae,0x8bd1, /* 0x8C50-0x8C57 */
0x8c35,0x8d62,0x8d61,0x8db8,0x91ca,0x949f,0x94d9,0x9508, /* 0x8C58-0x8C5F */
0x9610,0x98d8,0x9976,0x9965,0x9a9e,0x817e,0x9a9a,0x9cc3, /* 0x8C60-0x8C67 */
0x9cc5,0x515a,0x9f83,0x9f84,0x4fea,0x55eb,0x556d,0x56a3, /* 0x8C68-0x8C6F */
0x9cc5,0x0000,0x9f83,0x9f84,0x4fea,0x55eb,0x556d,0x56a3, /* 0x8C68-0x8C6F */
0x5c5e,0x60e7,0x6151,0x6444,0x643a,0x6593,0x6a31,0x680f, /* 0x8C70-0x8C77 */
0x68c2,0x6b7c,0x70c2,0x727a,0x9576,0x748e,0x765e,0x0000, /* 0x8C78-0x8C7F */
/* codebase=0x8c80 rawbase=0x0900 */
@ -3767,15 +3767,15 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x8e2f,0x8e2c,0x8f94,0x90e6,0x94f8,0x9274,0x9701,0x9791, /* 0x8CE0-0x8CE7 */
0x7e6e,0x98a4,0x9a84,0x9a81,0x9cd6,0x9ca2,0x9cd4,0x9cd7, /* 0x8CE8-0x8CEF */
0x9e67,0x9e25,0x9f39,0x9f89,0x9f8a,0x9f9a,0x604b,0x631b, /* 0x8CF0-0x8CF7 */
0x6405,0x74d2,0x7a83,0x7f28,0x81e2,0x841d,0x86ca,0x0000, /* 0x8CF8-0x8CFF */
0x6405,0x74d2,0x7a83,0x7f28,0x0000,0x841d,0x86ca,0x0000, /* 0x8CF8-0x8CFF */
/* codebase=0x8d40 rawbase=0x0980 */
0x53d8,0x9026,0x903b,0x9573,0x94c4,0x9765,0x663e,0x990d, /* 0x8D40-0x8D47 */
0x60ca,0x9a7f,0x9a8c,0x9ad3,0x9ad1,0x9cdd,0x9cde,0x9cdc, /* 0x8D48-0x8D4F */
0x9e36,0x5631,0x575d,0x63fd,0x762b,0x766b,0x7f81,0x8695, /* 0x8D50-0x8D57 */
0x0000,0x9a7f,0x9a8c,0x0000,0x0000,0x9cdd,0x9cde,0x9cdc, /* 0x8D48-0x8D4F */
0x9e36,0x5631,0x575d,0x63fd,0x762b,0x766b,0x7f81,0x0000, /* 0x8D50-0x8D57 */
0x8ba9,0x8c17,0x8c36,0x8273,0x8d63,0x917f,0x96f3,0x7075, /* 0x8D58-0x8D5F */
0x972d,0x98a6,0x9aa4,0x9b13,0x9b47,0x9c8e,0x9e70,0x9e6d, /* 0x8D60-0x8D67 */
0x7877,0x76d0,0x9ccc,0x9f8c,0x9f8b,0x5385,0x6984,0x6e7e, /* 0x8D68-0x8D6F */
0x7bf1,0x7ba9,0x86ee,0x89c2,0x8e51,0x8845,0x94a5,0x9885, /* 0x8D70-0x8D77 */
0x0000,0x7ba9,0x86ee,0x89c2,0x8e51,0x8845,0x94a5,0x9885, /* 0x8D70-0x8D77 */
0x998b,0x9acb,0x9ec9,0x6ee6,0x77a9,0x954a,0x97af,0x0000, /* 0x8D78-0x8D7F */
/* codebase=0x8d80 rawbase=0x09c0 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x8D80-0x8D87 */
@ -3784,21 +3784,21 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x8D98-0x8D9F */
0x0000,0x9a74,0x9aa5,0x7f06,0x8c20,0x8e8f,0x917d,0x94bb, /* 0x8DA0-0x8DA7 */
0x92ae,0x9523,0x9cc4,0x9c88,0x9ee9,0x51ff,0x9e66,0x9a8a, /* 0x8DA8-0x8DAF */
0x9e73,0x9e3e,0x94ba,0x4ec2,0x864d,0x6b92,0x57a7,0x577b, /* 0x8DB0-0x8DB7 */
0x620b,0x4fe3,0x522d,0x538d,0x5459,0x537a,0x7ea8,0x8307, /* 0x8DB8-0x8DBF */
0x9e73,0x9e3e,0x94ba,0x0000,0x0000,0x6b92,0x57a7,0x0000, /* 0x8DB0-0x8DB7 */
0x620b,0x4fe3,0x522d,0x538d,0x5459,0x537a,0x7ea8,0x0000, /* 0x8DB8-0x8DBF */
/* codebase=0x8dc0 rawbase=0x0a00 */
0x9487,0x9486,0x5457,0x5f2a,0x7953,0x7ebe,0x90cf,0x948c, /* 0x8DC0-0x8DC7 */
0x9487,0x9486,0x5457,0x5f2a,0x0000,0x7ebe,0x90cf,0x948c, /* 0x8DC0-0x8DC7 */
0x5250,0x5326,0x56f5,0x57ad,0x5a05,0x5cbd,0x5d03,0x6d9e, /* 0x8DC8-0x8DCF */
0x6e0c,0x70c3,0x7726,0x7ec0,0x7ed0,0x80eb,0x948e,0x9490, /* 0x8DD0-0x8DD7 */
0x9495,0x948d,0x95eb,0x59ab,0x5d5b,0x607d,0x6860,0x67a8, /* 0x8DD8-0x8DDF */
0x6ca9,0x6d48,0x7572,0x7817,0x7ed7,0x83dd,0x89c7,0x8bb5, /* 0x8DE0-0x8DE7 */
0x8bce,0x8bd2,0x8d36,0x8d33,0x8f7a,0x8f75,0x8f78,0x902f, /* 0x8DE8-0x8DEF */
0x90d3,0x9104,0x94ab,0x94ac,0x949b,0x94af,0x94ad,0x94aa, /* 0x8DF0-0x8DF7 */
0x95f6,0x9667,0x9878,0x996b,0x9ef9,0x4f1b,0x507b,0x0000, /* 0x8DF8-0x8DFF */
0x6ca9,0x6d48,0x7572,0x7817,0x7ed7,0x0000,0x89c7,0x8bb5, /* 0x8DE0-0x8DE7 */
0x8bce,0x8bd2,0x8d36,0x8d33,0x8f7a,0x8f75,0x8f78,0x0000, /* 0x8DE8-0x8DEF */
0x90d3,0x0000,0x94ab,0x94ac,0x949b,0x94af,0x94ad,0x94aa, /* 0x8DF0-0x8DF7 */
0x95f6,0x9667,0x9878,0x996b,0x0000,0x4f1b,0x507b,0x0000, /* 0x8DF8-0x8DFF */
/* codebase=0x8e40 rawbase=0x0a40 */
0x4f65,0x5522,0x57b2,0x5def,0x5fad,0x709c,0x8315,0x72f2, /* 0x8E40-0x8E47 */
0x4f65,0x5522,0x57b2,0x5def,0x0000,0x709c,0x8315,0x72f2, /* 0x8E40-0x8E47 */
0x73ae,0x7ee8,0x7ee0,0x7ee1,0x7f9f,0x836d,0x86f1,0x8bd3, /* 0x8E48-0x8E4F */
0x8bd6,0x8be9,0x8bd4,0x8bdc,0x8d91,0x8f82,0x8f81,0x90ac, /* 0x8E50-0x8E57 */
0x8bd6,0x8be9,0x8bd4,0x8bdc,0x0000,0x8f82,0x8f81,0x90ac, /* 0x8E50-0x8E57 */
0x94ca,0x94c8,0x94b0,0x94b2,0x94b6,0x950d,0x94cc,0x94bd, /* 0x8E58-0x8E5F */
0x94bc,0x9883,0x9880,0x51eb,0x9efe,0x507e,0x551b,0x5d5d, /* 0x8E60-0x8E67 */
0x5e3b,0x60ab,0x60ad,0x6004,0x622c,0x6217,0x629f,0x62a0, /* 0x8E68-0x8E6F */
@ -3812,25 +3812,25 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x0000,0x8bf6,0x8d47,0x94f1,0x94d2,0x94d1,0x94d5,0x94df, /* 0x8EA0-0x8EA7 */
0x94eb,0x94ef,0x94ea,0x94f7,0x94d6,0x94e5,0x98d1,0x523f, /* 0x8EA8-0x8EAF */
0x52a2,0x54d3,0x5452,0x5d02,0x5ce4,0x5e91,0x6126,0x6322, /* 0x8EB0-0x8EB7 */
0x6920,0x6bf5,0x988d,0x6d9d,0x6f62,0x6da0,0x6ed7,0x740f, /* 0x8EB8-0x8EBF */
0x6920,0x6bf5,0x988d,0x6d9d,0x0000,0x6da0,0x6ed7,0x740f, /* 0x8EB8-0x8EBF */
/* codebase=0x8ec0 rawbase=0x0ac0 */
0x7481,0x7617,0x7f03,0x7f17,0x7f0c,0x7f0f,0x7f11,0x835c, /* 0x8EC0-0x8EC7 */
0x0000,0x7617,0x7f03,0x7f17,0x7f0c,0x7f0f,0x7f11,0x835c, /* 0x8EC0-0x8EC7 */
0x848c,0x8311,0x82c1,0x8bf9,0x8bfc,0x8c02,0x8d55,0x90f8, /* 0x8EC8-0x8ECF */
0x9512,0x94d7,0x94fd,0x9513,0x950a,0x94e4,0x9506,0x9507, /* 0x8ED0-0x8ED7 */
0x9514,0x9606,0x9603,0x9753,0x988f,0x997d,0x9a75,0x9a80, /* 0x8ED8-0x8EDF */
0x9c82,0x9e28,0x54d2,0x54d5,0x54d9,0x5ad2,0x5cc4,0x603f, /* 0x8EE0-0x8EE7 */
0x6b9a,0x6d4d,0x70e8,0x7303,0x72ef,0x789c,0x7aad,0x7e17, /* 0x8EE8-0x8EEF */
0x6b9a,0x6d4d,0x70e8,0x7303,0x72ef,0x789c,0x7aad,0x0000, /* 0x8EE8-0x8EEF */
0x7f1b,0x8487,0x8368,0x8489,0x835e,0x83b8,0x8297,0x86f3, /* 0x8EF0-0x8EF7 */
0x8be8,0x8c11,0x8c14,0x8c1d,0x90d0,0x9529,0x952c,0x0000, /* 0x8EF8-0x8EFF */
/* codebase=0x8f40 rawbase=0x0b00 */
0x9516,0x9517,0x94fc,0x951b,0x9515,0x951e,0x9494,0x960f, /* 0x8F40-0x8F47 */
0x9608,0x9609,0x960a,0x960c,0x960d,0x9e32,0x9e31,0x54dc, /* 0x8F48-0x8F4F */
0x5e31,0x6079,0x6448,0xe3c1,0x6cf6,0x7315,0x7513,0x7605, /* 0x8F50-0x8F57 */
0x75eb,0x7857,0x7ba6,0x7b5a,0x7ce8,0x7f21,0x8027,0x835f, /* 0x8F58-0x8F5F */
0x5e31,0x6079,0x6448,0xe3c1,0x6cf6,0x7315,0x0000,0x7605, /* 0x8F50-0x8F57 */
0x75eb,0x7857,0x7ba6,0x7b5a,0x0000,0x7f21,0x8027,0x835f, /* 0x8F58-0x8F5F */
0x83b6,0x86f0,0x88e2,0x89cf,0x8c21,0x8bcc,0x8c25,0x8dc4, /* 0x8F60-0x8F67 */
0x9538,0x9534,0x94e1,0x9536,0x9612,0x9967,0x9c92,0x9c95, /* 0x8F68-0x8F6F */
0x9e38,0x9e39,0x9e3a,0x9f80,0x603c,0x6445,0x64b8,0x6cfa, /* 0x8F70-0x8F77 */
0x7596,0x7f0b,0x8069,0x8369,0x87e5,0x866e,0x8bb4,0x0000, /* 0x8F78-0x8F7F */
0x7596,0x7f0b,0x8069,0x8369,0x0000,0x0000,0x8bb4,0x0000, /* 0x8F78-0x8F7F */
/* codebase=0x8f80 rawbase=0x0b40 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x8F80-0x8F87 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x8F88-0x8F8F */
@ -3843,8 +3843,8 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
/* codebase=0x8fc0 rawbase=0x0b80 */
0x7f33,0x7f74,0x8223,0x86cf,0x867f,0x88e3,0x89d1,0x89ef, /* 0x8FC0-0x8FC7 */
0x8c2e,0x955b,0x955f,0x956a,0x9546,0x94e9,0x97eb,0x98a1, /* 0x8FC8-0x8FCF */
0x9990,0x9ac2,0x9cb5,0x9cb6,0x9cbb,0x9cb1,0x9e4e,0x9e2b, /* 0x8FD0-0x8FD7 */
0x9efc,0x55be,0x6484,0x680a,0x67a5,0x680c,0x7f31,0x804d, /* 0x8FD8-0x8FDF */
0x9990,0x0000,0x9cb5,0x9cb6,0x9cbb,0x9cb1,0x9e4e,0x9e2b, /* 0x8FD0-0x8FD7 */
0x0000,0x55be,0x6484,0x680a,0x67a5,0x680c,0x7f31,0x804d, /* 0x8FD8-0x8FDF */
0x830f,0x82c8,0x8572,0x86f4,0x877e,0x94f4,0x9566,0x9568, /* 0x8FE0-0x8FE7 */
0x9561,0x9563,0x9544,0x956b,0x94e7,0x9564,0x94f9,0x961a, /* 0x8FE8-0x8FEF */
0x989f,0x9994,0x9a7a,0x9a9d,0x9a9f,0x9a98,0x9e57,0x9e5a, /* 0x8FF0-0x8FF7 */
@ -3852,7 +3852,7 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
/* codebase=0x9040 rawbase=0x0bc0 */
0x6989,0x6ee0,0x783b,0x7c9d,0x7ea9,0x7f2c,0x8539,0x8d46, /* 0x9040-0x9047 */
0x9571,0x95fc,0x98d9,0x9aa2,0x9a96,0x9a9c,0x9ca5,0x9cce, /* 0x9048-0x904F */
0x9cd0,0x9e63,0x9e58,0x9e7e,0x5181,0x5a08,0x7055,0x6512, /* 0x9050-0x9057 */
0x9cd0,0x9e63,0x9e58,0x9e7e,0x5181,0x5a08,0x0000,0x6512, /* 0x9050-0x9057 */
0x763f,0x7ba8,0x7c74,0x823b,0x89cc,0x8df9,0x8dde,0x8f79, /* 0x9058-0x905F */
0x9554,0x956c,0x9aa3,0x9a85,0x9cd5,0x9ca3,0x9ca6,0x9e68, /* 0x9060-0x9067 */
0x9e37,0x9f9b,0x683e,0x6924,0x84e0,0x96e0,0x8f73,0x9cdf, /* 0x9068-0x906F */
@ -3864,8 +3864,8 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x9090-0x9097 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x9098-0x909F */
0x0000,0x9567,0x9c9a,0x8db1,0x8e9c,0x917e,0x8c33,0x989e, /* 0x90A0-0x90A7 */
0x98a7,0x9aa7,0x9e2c,0x6206,0x9604,0x9ca1,0x9e42,0x79b8, /* 0x90A8-0x90AF */
0x62d4,0x8dcb,0x73d0,0x5bab,0x62d0,0x6bc1,0x51cf,0x7984, /* 0x90B0-0x90B7 */
0x98a7,0x9aa7,0x9e2c,0x6206,0x9604,0x9ca1,0x9e42,0x0000, /* 0x90A8-0x90AF */
0x0000,0x0000,0x73d0,0x5bab,0x0000,0x6bc1,0x51cf,0x7984, /* 0x90B0-0x90B7 */
0x5415,0x6f5c,0x889c,0x90e7,0x5179,0x6238,0x629b,0x6327, /* 0x90B8-0x90BF */
/* codebase=0x90c0 rawbase=0x0c40 */
0x63bb,0x63de,0x63fa,0x6491,0x64c0,0x64e1,0x64f6,0x6505, /* 0x90C0-0x90C7 */
@ -3896,76 +3896,76 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x9115,0x91d6,0x91db,0x91de,0x91e1,0x91e5,0x91f6,0x91fc, /* 0x91B8-0x91BF */
/* codebase=0x91c0 rawbase=0x0d00 */
0x9229,0x922c,0xff07,0x9259,0x9277,0x92ed,0x933a,0xe54d, /* 0x91C0-0x91C7 */
0xe54e,0x722b,0x5182,0x5196,0x4e37,0x516b,0x513f,0xe555, /* 0x91C8-0x91CF */
0xe556,0x6729,0x6c3a,0x5382,0x7592,0x8080,0x8864,0x4e06, /* 0x91D0-0x91D7 */
0xe55e,0xe55f,0xe560,0x2e97,0x52f9,0x5315,0x2021,0xe565, /* 0x91D8-0x91DF */
0x3404,0xe567,0xe568,0xe569,0xe56a,0xe56b,0x51f5,0xe56d, /* 0x91E0-0x91E7 */
0x5c6e,0xe56f,0x56d7,0x4ea0,0x51ab,0x2e80,0x69c7,0xe575, /* 0x91E8-0x91EF */
0xe54e,0x722b,0x5182,0x5196,0x4e37,0x0000,0x0000,0xe555, /* 0x91C8-0x91CF */
0xe556,0x6729,0x6c3a,0x0000,0x7592,0x8080,0x8864,0x4e06, /* 0x91D0-0x91D7 */
0xe55e,0xe55f,0xe560,0x2e97,0x52f9,0x0000,0x2021,0xe565, /* 0x91D8-0x91DF */
0x3404,0xe567,0xe568,0xe569,0xe56a,0xe56b,0x0000,0xe56d, /* 0x91E0-0x91E7 */
0x0000,0xe56f,0x0000,0x4ea0,0x51ab,0x2e80,0x69c7,0xe575, /* 0x91E8-0x91EF */
0x254e,0x25d8,0x25d9,0x2642,0x25b6,0x25c4,0x2195,0x203c, /* 0x91F0-0x91F7 */
0x00b6,0x2200,0x21a8,0x2194,0x2302,0xe583,0xe584,0x0000, /* 0x91F8-0x91FF */
/* codebase=0x9240 rawbase=0x0d40 */
0x4e9c,0x60aa,0x5727,0x56f2,0x533b,0x58f1,0x9038,0x96a0, /* 0x9240-0x9247 */
0x6804,0x55b6,0x99c5,0x8b01,0x5186,0x7e01,0x5fdc,0x6b27, /* 0x9248-0x924F */
0x6bb4,0x685c,0x5965,0x7a4f,0x4eee,0x4fa1,0x753b,0x7070, /* 0x9250-0x9257 */
0x4f1a,0x6094,0x6d77,0x7d75,0x58ca,0x61d0,0x62e1,0x6bbb, /* 0x9258-0x925F */
0x899a,0x5b66,0x697d,0x559d,0x6e07,0xe5aa,0x5dfb,0x9665, /* 0x9260-0x9267 */
0x52e7,0x5bdb,0x6f22,0x95a2,0x6b53,0x89b3,0x6c17,0x5e30, /* 0x9268-0x926F */
0x622f,0x72a0,0x8650,0x65e7,0x6025,0x62e0,0x6319,0x865a, /* 0x9270-0x9277 */
0x5ce1,0x631f,0x72ed,0x90f7,0x97ff,0x6681,0x52e4,0x0000, /* 0x9278-0x927F */
0x4e9c,0x60aa,0x5727,0x56f2,0x533b,0x58f1,0x0000,0x96a0, /* 0x9240-0x9247 */
0x6804,0x55b6,0x99c5,0x0000,0x5186,0x7e01,0x5fdc,0x6b27, /* 0x9248-0x924F */
0x6bb4,0x685c,0x5965,0x7a4f,0x4eee,0x4fa1,0x753b,0x0000, /* 0x9250-0x9257 */
0x4f1a,0x0000,0x0000,0x7d75,0x58ca,0x61d0,0x62e1,0x6bbb, /* 0x9258-0x925F */
0x899a,0x5b66,0x697d,0x0000,0x6e07,0xe5aa,0x5dfb,0x9665, /* 0x9260-0x9267 */
0x52e7,0x5bdb,0x0000,0x95a2,0x6b53,0x89b3,0x6c17,0x5e30, /* 0x9268-0x926F */
0x622f,0x72a0,0x0000,0x65e7,0x0000,0x62e0,0x6319,0x865a, /* 0x9270-0x9277 */
0x5ce1,0x631f,0x72ed,0x90f7,0x0000,0x6681,0x0000,0x0000, /* 0x9278-0x927F */
/* codebase=0x9280 rawbase=0x0d80 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x9280-0x9287 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x9288-0x928F */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x9290-0x9297 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x9298-0x929F */
0x0000,0x8b39,0x533a,0x99c6,0x52f2,0xe5c8,0x5f84,0x830e, /* 0x92A0-0x92A7 */
0x0000,0x0000,0x533a,0x99c6,0x52f2,0xe5c8,0x5f84,0x830e, /* 0x92A0-0x92A7 */
0x6075,0x63b2,0x6e13,0x7d4c,0x86cd,0x8efd,0x7d99,0x9d8f, /* 0x92A8-0x92AF */
0x6483,0x770c,0x5039,0x5263,0x967a,0x570f,0x691c,0x6a29, /* 0x92B0-0x92B7 */
0x9855,0x9a13,0x53b3,0x5449,0x5a2f,0x8aa4,0x5e83,0x6e2f, /* 0x92B8-0x92BF */
0x9855,0x9a13,0x53b3,0x5449,0x5a2f,0x0000,0x5e83,0x0000, /* 0x92B8-0x92BF */
/* codebase=0x92c0 rawbase=0x0dc0 */
0x9271,0x53f7,0x56fd,0x9ed2,0x7a40,0x7815,0x6e08,0x658e, /* 0x92C0-0x92C7 */
0x9271,0x53f7,0x56fd,0x9ed2,0x0000,0x7815,0x6e08,0x658e, /* 0x92C0-0x92C7 */
0x6b73,0x5264,0x96d1,0x53c2,0x685f,0x60e8,0x8cdb,0x6b8b, /* 0x92C8-0x92CF */
0x6b6f,0x5150,0x8f9e,0x6e7f,0x5b9f,0x5199,0x820e,0x6368, /* 0x92D0-0x92D7 */
0x6b6f,0x5150,0x8f9e,0x6e7f,0x5b9f,0x5199,0x820e,0x0000, /* 0x92D0-0x92D7 */
0x91c8,0x5bff,0x53ce,0x8846,0x5f93,0x6e0b,0x7363,0x7e26, /* 0x92D8-0x92DF */
0x7c9b,0x51e6,0x5c06,0x79f0,0x6e09,0x713c,0x5968,0x6761, /* 0x92E0-0x92E7 */
0x72b6,0x4e57,0x6d44,0x5270,0x7573,0x7e04,0x58cc,0x5b22, /* 0x92E8-0x92EF */
0x8b72,0x91b8,0x89e6,0x5631,0x5bdd,0x5c3d,0x56f3,0x7c8b, /* 0x92F0-0x92F7 */
0x9154,0x7a42,0x968f,0x9ac4,0x67a2,0x6570,0x636e,0x0000, /* 0x92F8-0x92FF */
0x8b72,0x91b8,0x0000,0x5631,0x5bdd,0x5c3d,0x56f3,0x7c8b, /* 0x92F0-0x92F7 */
0x9154,0x7a42,0x968f,0x9ac4,0x67a2,0x6570,0x0000,0x0000, /* 0x92F8-0x92FF */
/* codebase=0x9340 rawbase=0x0e00 */
0x702c,0x58f0,0x6589,0x9759,0x7a83,0x6442,0x7d76,0x5c02, /* 0x9340-0x9347 */
0x6d45,0x6226,0x8df5,0x92ad,0x6f5c,0x9077,0x9078,0x7e4a, /* 0x9348-0x934F */
0x6d45,0x6226,0x8df5,0x92ad,0x6f5c,0x0000,0x0000,0x7e4a, /* 0x9348-0x934F */
0x7985,0x758e,0x58ee,0x4e89,0x8358,0x635c,0x633f,0x5de3, /* 0x9350-0x9357 */
0x7a93,0x88c5,0x50e7,0x5c64,0x7dcf,0x9a12,0x5897,0x618e, /* 0x9358-0x935F */
0x8535,0x8d08,0x81d3,0x5c5e,0x7d9a,0x5815,0x5bfe,0x5e2f, /* 0x9360-0x9367 */
0x6ede,0x6edd,0x629e,0x6ca2,0x6fef,0x5358,0x5606,0x56e3, /* 0x9368-0x936F */
0x7a93,0x88c5,0x0000,0x0000,0x7dcf,0x9a12,0x5897,0x0000, /* 0x9358-0x935F */
0x8535,0x0000,0x81d3,0x5c5e,0x7d9a,0x5815,0x5bfe,0x5e2f, /* 0x9360-0x9367 */
0x6ede,0x6edd,0x629e,0x6ca2,0x0000,0x5358,0x0000,0x56e3, /* 0x9368-0x936F */
0x65ad,0x5f3e,0x9045,0x663c,0x92f3,0x5e81,0x5fb4,0x8074, /* 0x9370-0x9377 */
0x61f2,0x585a,0x9013,0x9244,0x70b9,0x8ee2,0x4f1d,0x0000, /* 0x9378-0x937F */
0x0000,0x0000,0x9013,0x9244,0x70b9,0x8ee2,0x0000,0x0000, /* 0x9378-0x937F */
/* codebase=0x9380 rawbase=0x0e40 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x9380-0x9387 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x9388-0x938F */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x9390-0x9397 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x9398-0x939F */
0x0000,0x96fb,0x706f,0x5f53,0x515a,0x76d7,0x7a32,0x95d8, /* 0x93A0-0x93A7 */
0x5fb3,0x6bd2,0x72ec,0x8aad,0x5c4a,0x96e3,0x5f10,0x60a9, /* 0x93A8-0x93AF */
0x8133,0x62dd,0x5ec3,0x58f2,0x6885,0x535a,0x8584,0x9ea6, /* 0x93B0-0x93B7 */
0x7e1b,0x767a,0x9aea,0x629c,0x6d5c,0x6d5c,0x654f,0x6577, /* 0x93B8-0x93BF */
0x0000,0x0000,0x706f,0x5f53,0x0000,0x76d7,0x7a32,0x95d8, /* 0x93A0-0x93A7 */
0x5fb3,0x0000,0x72ec,0x8aad,0x5c4a,0x0000,0x5f10,0x60a9, /* 0x93A8-0x93AF */
0x8133,0x62dd,0x5ec3,0x58f2,0x0000,0x0000,0x0000,0x9ea6, /* 0x93B0-0x93B7 */
0x0000,0x767a,0x9aea,0x629c,0x6d5c,0x6d5c,0x0000,0x0000, /* 0x93B8-0x93BF */
/* codebase=0x93c0 rawbase=0x0e80 */
0x4fae,0x6255,0x4ecf,0x8fba,0x5909,0x6b69,0x8217,0x7c3f, /* 0x93C0-0x93C7 */
0x5305,0x5b9d,0x62b1,0x6ce1,0x80de,0x7832,0x8c4a,0x98fd, /* 0x93C8-0x93CF */
0x58a8,0x6bce,0x6e80,0x8108,0x9ed9,0x8a33,0x85ac,0x8e8d, /* 0x93D0-0x93D7 */
0x4e0e,0x8a89,0x6447,0x69d8,0x8b21,0x66dc,0x6765,0x983c, /* 0x93D8-0x93DF */
0x4e71,0x89a7,0x7adc,0x9686,0x65c5,0x4e21,0x731f,0x7dd1, /* 0x93E0-0x93E7 */
0x0000,0x6255,0x4ecf,0x8fba,0x5909,0x6b69,0x8217,0x0000, /* 0x93C0-0x93C7 */
0x0000,0x5b9d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x93C8-0x93CF */
0x0000,0x6bce,0x6e80,0x0000,0x9ed9,0x8a33,0x85ac,0x0000, /* 0x93D0-0x93D7 */
0x0000,0x8a89,0x6447,0x69d8,0x8b21,0x0000,0x6765,0x983c, /* 0x93D8-0x93DF */
0x4e71,0x89a7,0x7adc,0x0000,0x0000,0x4e21,0x731f,0x7dd1, /* 0x93E0-0x93E7 */
0x6d99,0x5841,0x793c,0x52b1,0x623b,0x970a,0x9f62,0x66a6, /* 0x93E8-0x93EF */
0x6b74,0x604b,0x7df4,0x932c,0x7089,0x52b4,0x697c,0x9332, /* 0x93F0-0x93F7 */
0x6b74,0x604b,0x0000,0x932c,0x7089,0x52b4,0x697c,0x9332, /* 0x93F0-0x93F7 */
0x6e7e,0x5f25,0x4e80,0x66fd,0x59c9,0x5b8d,0x5d8b,0x0000, /* 0x93F8-0x93FF */
/* codebase=0x9440 rawbase=0x0ec0 */
0x6a2b,0x691b,0x55b0,0x7c82,0x8fbc,0x698a,0x54b2,0x9d2b, /* 0x9440-0x9447 */
0x96eb,0x6919,0x63c3,0x99c4,0x51e7,0x6802,0x8fbb,0x50cd, /* 0x9448-0x944F */
0x96eb,0x6919,0x0000,0x99c4,0x51e7,0x6802,0x8fbb,0x50cd, /* 0x9448-0x944F */
0x5ce0,0x6803,0x51ea,0x5302,0x7872,0x7551,0x7560,0x567a, /* 0x9450-0x9457 */
0x92f2,0x5840,0x67fe,0x4fe3,0x6762,0x7c7e,0x5301,0x4fe4, /* 0x9458-0x945F */
0x4fe5,0x51e9,0x53fa,0x54d8,0x56ce,0x5726,0x5737,0x5738, /* 0x9460-0x9467 */
0x5788,0x57b3,0x57aa,0x57b0,0x57d6,0x5870,0x58b9,0x58d7, /* 0x9468-0x946F */
0x5c76,0x5cbc,0x5cc5,0x5cbe,0x5d76,0x5f16,0x603a,0x63b5, /* 0x9470-0x9477 */
0x6741,0x6763,0x67a1,0x68ba,0x6925,0x6928,0x6a7a,0x0000, /* 0x9478-0x947F */
0x6741,0x6763,0x67a1,0x68ba,0x0000,0x6928,0x6a7a,0x0000, /* 0x9478-0x947F */
/* codebase=0x9480 rawbase=0x0f00 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x9480-0x9487 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x9488-0x948F */
@ -3973,20 +3973,20 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x9498-0x949F */
0x0000,0x6923,0x6921,0x697e,0x6981,0x69dd,0x6a2e,0x6a72, /* 0x94A0-0x94A7 */
0x6b1f,0x6bdf,0x6e15,0x7195,0x74e7,0x74f2,0x74f0,0x74f1, /* 0x94A8-0x94AF */
0x74f8,0x7505,0x7569,0x766a,0x7874,0x7acd,0x7acf,0x7ad5, /* 0x94B0-0x94B7 */
0x74f8,0x7505,0x7569,0x0000,0x7874,0x7acd,0x7acf,0x7ad5, /* 0x94B0-0x94B7 */
0x7ad3,0x7ae1,0x7af0,0x7b02,0x7c13,0x7c17,0x7c90,0x7cad, /* 0x94B8-0x94BF */
/* codebase=0x94c0 rawbase=0x0f40 */
0x7cc0,0x7cd8,0x7d9b,0x7e05,0x7e67,0x7e83,0x7e90,0x81a4, /* 0x94C0-0x94C7 */
0x825d,0x8422,0x84d9,0x8630,0x86ab,0x86ef,0x88b0,0x88c3, /* 0x94C8-0x94CF */
0x88c4,0x8904,0xe72f,0x8ebe,0x8ec8,0x8f4c,0x8fb7,0x8fda, /* 0x94D0-0x94D7 */
0x9027,0x9056,0x9335,0x933b,0x93b9,0x958a,0x9596,0x9779, /* 0x94D8-0x94DF */
0x9027,0x9056,0x0000,0x933b,0x93b9,0x958a,0x9596,0x9779, /* 0x94D8-0x94DF */
0x9786,0x9790,0x98aa,0x9b96,0x9b97,0x9bb4,0x9bcf,0x9bd1, /* 0x94E0-0x94E7 */
0x9bd2,0x9bf2,0x9bf1,0x9c30,0x9c47,0x9c5a,0x9cf0,0x9d46, /* 0x94E8-0x94EF */
0x9d64,0x9dab,0x4e44,0x544f,0x6318,0x9bb1,0x9c69,0x9d47, /* 0x94F0-0x94F7 */
0x9d64,0x9dab,0x4e44,0x0000,0x6318,0x9bb1,0x9c69,0x9d47, /* 0x94F0-0x94F7 */
0x9d65,0x9c2f,0x9ebf,0x51b4,0x546a,0x67a0,0x9b8e,0x0000, /* 0x94F8-0x94FF */
/* codebase=0x9540 rawbase=0x0f80 */
0x90a8,0x51b2,0x362d,0x62c5,0x52c5,0x67b1,0x54cd,0x6052, /* 0x9540-0x9547 */
0x53c1,0x70f1,0x5803,0x555f,0x920e,0x7740,0x743c,0x714a, /* 0x9548-0x954F */
0x53c1,0x70f1,0x5803,0x0000,0x920e,0x7740,0x743c,0x714a, /* 0x9548-0x954F */
0x6ed9,0x53e0,0x732e,0x88cf,0x788d,0x7fa3,0x7dab,0x8e2a, /* 0x9550-0x9557 */
0x945b,0x636c,0x5fa7,0x5c05,0x803b,0x5cef,0x39b8,0x7151, /* 0x9558-0x955F */
0x8ccd,0x97ee,0x5872,0x5a63,0x7f78,0x5d57,0x616f,0x6998, /* 0x9560-0x9567 */
@ -3999,21 +3999,21 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x9590-0x9597 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0x9598-0x959F */
0x0000,0x5ef9,0x52b9,0x548f,0x5ef8,0x59ac,0x6031,0x7240, /* 0x95A0-0x95A7 */
0x8117,0x763b,0x5f0d,0x664b,0x66a8,0x6164,0x634f,0x70df, /* 0x95A8-0x95AF */
0x8117,0x763b,0x5f0d,0x664b,0x0000,0x6164,0x0000,0x70df, /* 0x95A8-0x95AF */
0x6d24,0x7ca7,0x7cc9,0x53d9,0x654d,0x5742,0x73cf,0x80c6, /* 0x95B0-0x95B7 */
0x3551,0x6b35,0x7881,0x53cc,0x732b,0x732a,0x73c9,0x754a, /* 0x95B8-0x95BF */
/* codebase=0x95c0 rawbase=0x1000 */
0x59f9,0x71c4,0x750e,0x7ddc,0x99e1,0x89a9,0x6ff6,0x3a57, /* 0x95C0-0x95C7 */
0x59f9,0x0000,0x750e,0x7ddc,0x99e1,0x89a9,0x6ff6,0x3a57, /* 0x95C0-0x95C7 */
0x64ea,0x3bed,0x6ca1,0x6e7c,0x7567,0x5869,0x5869,0x5204, /* 0x95C8-0x95CF */
0xe7ca,0x6187,0x643a,0x81ef,0xe7ce,0x51b5,0x51d1,0x6c79, /* 0x95D0-0x95D7 */
0x591f,0x8ff9,0x98f1,0x6537,0x8109,0x88b4,0x3a2a,0x8ead, /* 0x95D8-0x95DF */
0x591f,0x8ff9,0x98f1,0x0000,0x8109,0x88b4,0x3a2a,0x8ead, /* 0x95D8-0x95DF */
0x7f97,0x9a10,0x7d25,0x6ac8,0x518c,0x5227,0xe7e0,0x811a, /* 0x95E0-0x95E7 */
0x53a0,0x53a2,0x6c5a,0x6c37,0x8218,0x5586,0x5efb,0x51c9, /* 0x95E8-0x95EF */
0x78b1,0x9262,0x536d,0x51c3,0xe7ee,0x8471,0x8987,0x976d, /* 0x95F0-0x95F7 */
0x8b90,0x96a3,0x5efc,0x96b7,0x514e,0x9c10,0x6630,0x0000, /* 0x95F8-0x95FF */
/* codebase=0x9640 rawbase=0x1040 */
0x9255,0x7808,0x9345,0x9273,0x9369,0xe7fe,0xe7ff,0xe800, /* 0x9640-0x9647 */
0xe801,0x91df,0x91da,0x7854,0x7866,0x7888,0x78b6,0x78c7, /* 0x9648-0x964F */
0xe801,0x91df,0x0000,0x7854,0x7866,0x7888,0x78b6,0x78c7, /* 0x9648-0x964F */
0x78d2,0x78d7,0x212b,0x21cb,0x78e4,0x78ee,0x78f0,0x78f1, /* 0x9650-0x9657 */
0x78f5,0x7932,0x7933,0x7936,0x7958,0x3013,0x7959,0x7971, /* 0x9658-0x965F */
0x797e,0x7983,0x7986,0x7987,0x7991,0x7999,0x799f,0x79a5, /* 0x9660-0x9667 */
@ -4028,10 +4028,10 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x0000,0x9176,0x815a,0x82f7,0x544b,0x8132,0x80bd,0x8418, /* 0x96A0-0x96A7 */
0x915e,0x9170,0x918c,0x8148,0xe843,0x4436,0x8159,0x809f, /* 0x96A8-0x96AF */
0xe847,0x5549,0x5421,0x54da,0x5432,0x55b9,0x5494,0xe84e, /* 0x96B0-0x96B7 */
0x7852,0x7845,0x784c,0xe852,0x84bd,0x841c,0x82c4,0xe856, /* 0x96B8-0x96BF */
0x0000,0x0000,0x0000,0xe852,0x84bd,0x841c,0x82c4,0xe856, /* 0x96B8-0x96BF */
/* codebase=0x96c0 rawbase=0x10c0 */
0x847b,0x8b2d,0xe859,0x574b,0xe85b,0xe85c,0x5745,0x87ce, /* 0x96C0-0x96C7 */
0x5660,0x55ea,0x567b,0x80bc,0xe863,0x78b8,0x6a0c,0x54cc, /* 0x96C8-0x96CF */
0x847b,0x8b2d,0xe859,0x0000,0xe85b,0xe85c,0x0000,0x87ce, /* 0x96C0-0x96C7 */
0x0000,0x55ea,0x567b,0x80bc,0xe863,0x78b8,0x6a0c,0x54cc, /* 0x96C8-0x96CF */
0x7bd0,0x7bec,0x7bfa,0x7c15,0x7c1b,0x7c35,0x7c44,0x7c6d, /* 0x96D0-0x96D7 */
0x7c8e,0x7cb8,0x7cc3,0x7ce6,0x7ced,0x7cf3,0x7cf5,0x7cf9, /* 0x96D8-0x96DF */
0xe877,0x7cfc,0x7d8b,0x7d97,0x7da4,0x7da8,0x7dcd,0x7dd0, /* 0x96E0-0x96E7 */
@ -4192,14 +4192,14 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x7414,0x7415,0x7417,0x7419,0x741c,0x741e,0x741f,0x7437, /* 0x9CB0-0x9CB7 */
0x7438,0x7439,0x7443,0x7445,0x7447,0x7448,0x7449,0x7453, /* 0x9CB8-0x9CBF */
/* codebase=0x9cc0 rawbase=0x1540 */
0x7456,0x7465,0x746b,0x746c,0x7474,0x747a,0x7482,0x5382, /* 0x9CC0-0x9CC7 */
0x7456,0x7465,0x746b,0x746c,0x7474,0x747a,0x7482,0x0000, /* 0x9CC0-0x9CC7 */
0x5e7f,0x4e28,0x5e7a,0x5196,0x5b80,0x5369,0x2e87,0xec14, /* 0x9CC8-0x9CCF */
0x5303,0x2612,0x8279,0x4491,0x2e8c,0x2e8a,0x4e36,0xec1c, /* 0x9CD0-0x9CD7 */
0x531a,0xec1e,0xec1f,0x2e95,0xec21,0xec22,0x2514,0x4e5a, /* 0x9CD8-0x9CDF */
0x0000,0xec1e,0xec1f,0x2e95,0xec21,0xec22,0x2514,0x4e5a, /* 0x9CD8-0x9CDF */
0x8fb6,0x5ef4,0x5188,0x4e85,0xec29,0x4e3f,0xec2b,0xec2c, /* 0x9CE0-0x9CE7 */
0x4e5b,0x53b6,0x8f66,0x7e9f,0x8ba0,0x8d1d,0x9e1f,0x95e8, /* 0x9CE8-0x9CEF */
0x9485,0x961d,0x624c,0x6c35,0x4ebb,0x5fc4,0x706c,0x2eae, /* 0x9CF0-0x9CF7 */
0x53e3,0x6ae2,0x9a3b,0x9a3c,0x9a58,0x9a5c,0x9a63,0x0000, /* 0x9CF8-0x9CFF */
0x0000,0x6ae2,0x9a3b,0x9a3c,0x9a58,0x9a5c,0x9a63,0x0000, /* 0x9CF8-0x9CFF */
/* codebase=0x9d40 rawbase=0x1580 */
0x260e,0x2192,0x2190,0x2191,0x2193,0x21e8,0x21e6,0x21e7, /* 0x9D40-0x9D47 */
0x21e9,0x21e8,0x21e6,0x21e7,0x21e9,0x261e,0x261c,0x261b, /* 0x9D48-0x9D4F */
@ -4355,7 +4355,7 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0xff19,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166, /* 0xA2B8-0xA2BF */
/* codebase=0xa2c0 rawbase=0x19c0 */
0x2167,0x2168,0x2169,0x3021,0x3022,0x3023,0x3024,0x3025, /* 0xA2C0-0xA2C7 */
0x3026,0x3027,0x3028,0x3029,0x5341,0x5344,0x5345,0xff21, /* 0xA2C8-0xA2CF */
0x3026,0x3027,0x3028,0x3029,0x0000,0x5344,0x0000,0xff21, /* 0xA2C8-0xA2CF */
0xff22,0xff23,0xff24,0xff25,0xff26,0xff27,0xff28,0xff29, /* 0xA2D0-0xA2D7 */
0xff2a,0xff2b,0xff2c,0xff2d,0xff2e,0xff2f,0xff30,0xff31, /* 0xA2D8-0xA2DF */
0xff32,0xff33,0xff34,0xff35,0xff36,0xff37,0xff38,0xff39, /* 0xA2E0-0xA2E7 */
@ -5329,7 +5329,7 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x4e3f,0x4e85,0x4ea0,0x5182,0x5196,0x51ab,0x52f9,0x5338, /* 0xC6C0-0xC6C7 */
0x5369,0x53b6,0x590a,0x5b80,0x5ddb,0x5e7a,0x5e7f,0x5ef4, /* 0xC6C8-0xC6CF */
0x5f50,0x5f61,0x6534,0x65e0,0x7592,0x7676,0x8fb5,0x96b6, /* 0xC6D0-0xC6D7 */
0x00a8,0x02c6,0x30fd,0x30fe,0x309d,0x309e,0x3003,0x4edd, /* 0xC6D8-0xC6DF */
0x00a8,0x02c6,0x30fd,0x30fe,0x309d,0x309e,0x3003,0x0000, /* 0xC6D8-0xC6DF */
0x3005,0x3006,0x3007,0x30fc,0xff3b,0xff3d,0x273d,0x3041, /* 0xC6E0-0xC6E7 */
0x3042,0x3043,0x3044,0x3045,0x3046,0x3047,0x3048,0x3049, /* 0xC6E8-0xC6EF */
0x304a,0x304b,0x304c,0x304d,0x304e,0x304f,0x3050,0x3051, /* 0xC6F0-0xC6F7 */
@ -6746,7 +6746,7 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0xe0bd,0xe0be,0xe0bf,0x88c7,0x609e,0x5625,0x7145,0x5af2, /* 0xFB60-0xFB67 */
0xe0c5,0x528f,0x564f,0x7793,0x8786,0x8e2d,0x81b6,0x35fe, /* 0xFB68-0xFB6F */
0x71f6,0xe0ce,0x8804,0x9385,0xe0d1,0xe0d2,0x7666,0xe0d4, /* 0xFB70-0xFB77 */
0x9c72,0xe0d6,0x62ce,0xe0d8,0x9e96,0x4989,0x7cd3,0x0000, /* 0xFB78-0xFB7F */
0x9c72,0xe0d6,0x0000,0xe0d8,0x9e96,0x4989,0x7cd3,0x0000, /* 0xFB78-0xFB7F */
/* codebase=0xfb80 rawbase=0x5c40 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0xFB80-0xFB87 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0xFB88-0xFB8F */
@ -6757,7 +6757,7 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x460f,0xe0ec,0x98c8,0x9940,0x994d,0x9a0c,0x9ad7,0x9e98, /* 0xFBB0-0xFBB7 */
0x9f26,0xe0f4,0x4f03,0xe0f6,0x4f39,0x4f32,0x4fab,0x5056, /* 0xFBB8-0xFBBF */
/* codebase=0xfbc0 rawbase=0x5c80 */
0xe0fb,0x502e,0x50a6,0x50d9,0x510e,0x50ed,0x5101,0x51f4, /* 0xFBC0-0xFBC7 */
0xe0fb,0x502e,0x50a6,0x50d9,0x510e,0x0000,0x5101,0x51f4, /* 0xFBC0-0xFBC7 */
0x521f,0x5260,0x5257,0x529a,0x52d1,0x52e0,0x52e1,0x51d3, /* 0xFBC8-0xFBCF */
0x51df,0x7546,0x51fe,0x5332,0x532c,0x5333,0x53ab,0x53aa, /* 0xFBD0-0xFBD7 */
0x9f8e,0x5469,0x549c,0x53da,0x6aca,0x5573,0xe119,0x35d6, /* 0xFBD8-0xFBDF */
@ -6767,10 +6767,10 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x5d8e,0xe134,0x5df5,0x5e0b,0x5e12,0x5e2e,0x5e5e,0x0000, /* 0xFBF8-0xFBFF */
/* codebase=0xfc40 rawbase=0x5cc0 */
0xe13a,0x5f4d,0x7a7d,0x5bc3,0x7abb,0xe13f,0xe140,0x5fa4, /* 0xFC40-0xFC47 */
0x5fba,0x5fbc,0xe144,0x6077,0x60a4,0x60b3,0x60fd,0x6130, /* 0xFC48-0xFC4F */
0x5fba,0x0000,0xe144,0x6077,0x60a4,0x60b3,0x60fd,0x6130, /* 0xFC48-0xFC4F */
0xe14a,0x619c,0x6159,0x617d,0x615c,0x637f,0x61e2,0x70d5, /* 0xFC50-0xFC57 */
0x6239,0x6268,0x6285,0x6282,0x62a6,0x62d5,0x6364,0x6335, /* 0xFC58-0xFC5F */
0x6490,0x3a5c,0x6648,0x6667,0x671e,0x6803,0x67ac,0x67f9, /* 0xFC60-0xFC67 */
0x0000,0x3a5c,0x6648,0x6667,0x671e,0x6803,0x67ac,0x67f9, /* 0xFC60-0xFC67 */
0x68b6,0x692c,0x6901,0x6900,0x68ca,0x6973,0x6980,0x693e, /* 0xFC68-0xFC6F */
0xe16a,0x69b2,0x69c0,0x698a,0x69fa,0x69e9,0x6ab2,0x6a52, /* 0xFC70-0xFC77 */
0x6a9d,0x6b1d,0x6b52,0x6bfa,0x3cd1,0x6cce,0x6e4f,0x0000, /* 0xFC78-0xFC7F */
@ -6795,8 +6795,8 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
/* codebase=0xfd40 rawbase=0x5d80 */
0xe1d7,0x8fa0,0x81f6,0x821a,0xe1db,0x8771,0x87a9,0x878c, /* 0xFD40-0xFD47 */
0x9e9e,0x87c1,0x9e1c,0xe1e2,0x87d6,0x87f5,0x880f,0x8818, /* 0xFD48-0xFD4F */
0x882d,0x8842,0x8845,0x9c35,0x886e,0x88aa,0x88a0,0x629d, /* 0xFD50-0xFD57 */
0x8943,0x894d,0x7172,0x885e,0xe1f3,0x82fd,0x44b7,0x82d0, /* 0xFD58-0xFD5F */
0x882d,0x8842,0x8845,0x9c35,0x886e,0x0000,0x88a0,0x629d, /* 0xFD50-0xFD57 */
0x8943,0x894d,0x0000,0x885e,0xe1f3,0x82fd,0x44b7,0x82d0, /* 0xFD58-0xFD5F */
0x8385,0x9d02,0x9f69,0x8420,0xe1fb,0x84da,0x84ad,0x44fb, /* 0xFD60-0xFD67 */
0x854b,0xe200,0x8602,0x8610,0x63d1,0x8989,0x898a,0x8994, /* 0xFD68-0xFD6F */
0x9c45,0x89bc,0x8a7e,0x8a49,0x8b0c,0x8b43,0x8b81,0x8b4c, /* 0xFD70-0xFD77 */
@ -6811,7 +6811,7 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x9167,0x917c,0x918e,0x91bb,0x9ea8,0x9056,0x904c,0x91fe, /* 0xFDB0-0xFDB7 */
0x9262,0x92be,0x936b,0x936e,0x93ba,0x9427,0x9597,0x95a7, /* 0xFDB8-0xFDBF */
/* codebase=0xfdc0 rawbase=0x5e00 */
0xe235,0x9638,0xe237,0x9683,0x9696,0x9681,0x96bd,0x9703, /* 0xFDC0-0xFDC7 */
0xe235,0x9638,0xe237,0x0000,0x9696,0x9681,0x96bd,0x9703, /* 0xFDC0-0xFDC7 */
0x9721,0x9731,0x975f,0x979f,0x97b4,0x97b8,0x97ba,0x97be, /* 0xFDC8-0xFDCF */
0x97c8,0x9ebf,0x981f,0x982e,0x9fa5,0x9847,0x984b,0x9866, /* 0xFDD0-0xFDD7 */
0x986c,0x98b4,0x9f5a,0x98dc,0x98e6,0x9942,0x9939,0x993b, /* 0xFDD8-0xFDDF */
@ -6821,11 +6821,11 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x9c0a,0x9bff,0x9c2e,0x80e8,0x80e9,0x80ec,0x810e,0x0000, /* 0xFDF8-0xFDFF */
/* codebase=0xfe40 rawbase=0x5e40 */
0x6c39,0x4e6a,0x9641,0x58f2,0x7962,0x6822,0xe27a,0xe27b, /* 0xFE40-0xFE47 */
0x8107,0x57d7,0x44ea,0x6435,0x8534,0x40df,0xe282,0x691a, /* 0xFE48-0xFE4F */
0x8107,0x57d7,0x44ea,0x0000,0x8534,0x40df,0xe282,0x691a, /* 0xFE48-0xFE4F */
0x9c02,0x75b1,0x83d3,0x7171,0x6a0b,0xe289,0x6a7a,0x9af4, /* 0xFE50-0xFE57 */
0xe28c,0xe28d,0x77b9,0x6530,0x6d96,0x5637,0x6725,0x6a2b, /* 0xFE58-0xFE5F */
0x7d5d,0x9061,0x4e98,0x7ca6,0x7b39,0xe299,0x5975,0x36c7, /* 0xFE60-0xFE67 */
0x707f,0xe29d,0x6e8b,0xe29f,0xe2a0,0x975d,0x92d0,0x5754, /* 0xFE68-0xFE6F */
0x707f,0xe29d,0x6e8b,0xe29f,0xe2a0,0x975d,0x0000,0x5754, /* 0xFE68-0xFE6F */
0xe2a4,0x3ed9,0xe2a6,0xe2a7,0x6199,0x7460,0x713f,0x792e, /* 0xFE70-0xFE77 */
0x5a96,0x9348,0x668e,0x4ffd,0x9341,0x3654,0x5d75,0x0000, /* 0xFE78-0xFE7F */
/* codebase=0xfe80 rawbase=0x5e80 */
@ -6833,7 +6833,7 @@ const uint16_t cp951uao_to_unicode_raw[24320] = {
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0xFE88-0xFE8F */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0xFE90-0xFE97 */
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, /* 0xFE98-0xFE9F */
0x0000,0x701e,0x657b,0x708d,0x5ecd,0xe2b7,0x60a7,0x7ab0, /* 0xFEA0-0xFEA7 */
0x0000,0x701e,0x0000,0x708d,0x5ecd,0xe2b7,0x60a7,0x7ab0, /* 0xFEA0-0xFEA7 */
0x5f63,0xe2bb,0x73f7,0xe2bd,0x7468,0x75b4,0xe2c0,0x9b69, /* 0xFEA8-0xFEAF */
0x00bd,0x2153,0x2154,0x00bc,0x00be,0x2155,0x2156,0x2157, /* 0xFEB0-0xFEB7 */
0x2158,0x2159,0x215a,0x8692,0x86a0,0x86ad,0x86b2,0x87a5, /* 0xFEB8-0xFEBF */

View File

@ -104,6 +104,11 @@ Bits CPU_Core286_Prefetch_Run(void);
Bits CPU_Core8086_Prefetch_Run(void);
#if defined(C_HAVE_LINUX_KVM_X86)
Bits CPU_Core_KVM_Run(void);
Bits CPU_Core_KVM_Trap_Run(void);
#endif
void CPU_Enable_SkipAutoAdjust(void);
void CPU_Disable_SkipAutoAdjust(void);
void CPU_Reset_AutoAdjust(void);
@ -382,20 +387,20 @@ class Descriptor
public:
Descriptor() { saved.fill[0]=saved.fill[1]=0; }
void Load(PhysPt address);
void Save(PhysPt address);
void Load(LinearPt address);
void Save(LinearPt address);
PhysPt GetBase (void) const {
LinearPt GetBase (void) const {
if (CPU_ArchitectureType >= CPU_ARCHTYPE_386) {
return (PhysPt)(
((PhysPt)saved.seg.base_24_31 << (PhysPt)24U) |
((PhysPt)saved.seg.base_16_23 << (PhysPt)16U) |
(PhysPt)saved.seg.base_0_15);
return (LinearPt)(
((LinearPt)saved.seg.base_24_31 << (LinearPt)24U) |
((LinearPt)saved.seg.base_16_23 << (LinearPt)16U) |
(LinearPt)saved.seg.base_0_15);
}
else {
return (PhysPt)(
((PhysPt)saved.seg.base_16_23 << (PhysPt)16U) |
(PhysPt)saved.seg.base_0_15);
return (LinearPt)(
((LinearPt)saved.seg.base_16_23 << (LinearPt)16U) |
(LinearPt)saved.seg.base_0_15);
}
}
bool GetExpandDown (void) {
@ -462,15 +467,15 @@ class DescriptorTable {
public:
virtual ~DescriptorTable() noexcept = default;
PhysPt GetBase (void) const { return table_base; }
LinearPt GetBase (void) const { return table_base; }
Bitu GetLimit (void) const { return table_limit; }
void SetBase (PhysPt _base) { table_base = _base; }
void SetBase (LinearPt _base) { table_base = _base; }
void SetLimit (Bitu _limit) { table_limit= _limit; }
bool GetDescriptor (Bitu selector, Descriptor& desc) {
selector&=~7U;
if (selector>=table_limit) return false;
desc.Load((PhysPt)(table_base+selector));
desc.Load((LinearPt)(table_base+selector));
return true;
}
@ -479,7 +484,7 @@ public:
protected:
PhysPt table_base;
LinearPt table_base;
Bitu table_limit;
};
@ -489,11 +494,11 @@ public:
Bitu address=selector & ~7U;
if (selector & 4U) {
if (address>=ldt_limit) return false;
desc.Load((PhysPt)(ldt_base+address));
desc.Load((LinearPt)(ldt_base+address));
return true;
} else {
if (address>=table_limit) return false;
desc.Load((PhysPt)(table_base+address));
desc.Load((LinearPt)(table_base+address));
return true;
}
}
@ -501,11 +506,11 @@ public:
Bitu address=selector & ~7U;
if (selector & 4U) {
if (address>=ldt_limit) return false;
desc.Save((PhysPt)(ldt_base+address));
desc.Save((LinearPt)(ldt_base+address));
return true;
} else {
if (address>=table_limit) return false;
desc.Save((PhysPt)(table_base+address));
desc.Save((LinearPt)(table_base+address));
return true;
}
}
@ -533,7 +538,7 @@ public:
void LoadState( std::istream& stream ) override;
private:
PhysPt ldt_base;
LinearPt ldt_base;
Bitu ldt_limit;
Bitu ldt_value;
};

View File

@ -24,6 +24,7 @@ enum DMAEvent {
DMA_REACHED_TC,
DMA_MASKED,
DMA_UNMASKED,
DMA_READ_COUNTER, /* the guest is reading the counter, which if accuracy is required, means process up to current time */
// DMA_TRANSFEREND, this shouldn't really be a signal
};
@ -33,6 +34,15 @@ enum DMATransfer {
DMAT_READ=2
};
enum DMAActor { /* i.e. who masked/unmasked the register */
DMAA_NONE=0,
DMAA_CONTROLLER=1,
DMAA_GUEST=2,
DMAA_REISSUE=3
};
const char *DMAActorStr(const DMAActor a);
class DmaChannel;
typedef void (* DMA_CallBack)(DmaChannel * chan,DMAEvent event);
@ -45,10 +55,11 @@ public:
uint16_t currcnt;
uint8_t channum;
uint8_t pagenum;
uint8_t DMA16_PAGESHIFT;
uint32_t DMA16_ADDRMASK;
uint8_t DMA16_PAGESHIFT;
uint32_t DMA16_ADDRMASK;
uint8_t DMA16;
uint8_t transfer_mode;
uint8_t transfer_mode;
DMAActor masked_by;
bool increment;
bool autoinit;
bool masked;
@ -98,18 +109,19 @@ public:
masked=_mask;
DoCallBack(masked ? DMA_MASKED : DMA_UNMASKED);
}
void Set128KMode(bool en) {
// 128KB mode (legacy ISA) (en=true):
// page shift = 1 (discard bit 0 of page register)
// addr mask = 0x1FFFF (all bits 0-15 become bits 1-16, bit 15 of addr takes the place of page register bit 0)
// 64KB mode (modern PCI including Intel chipsets) (en=false):
// page shift = 0 (all 8 bits of page register are used)
// addr mask = 0xFFFF (discard bit 15, bits 0-14 become bits 1-15 on ISA bus)
DMA16_PAGESHIFT = (en && DMA16) ? 0x1 : 0x0; // nonzero if we're to discard bit 0 of page register
DMA16_ADDRMASK = (1UL << ((en && DMA16) ? 17UL : 16UL)) - 1UL; // nonzero if (addrreg << 1) to cover 128KB, zero if (addrreg << 1) to discard MSB, limit to 64KB
}
void Set128KMode(bool en) {
// 128KB mode (legacy ISA) (en=true):
// page shift = 1 (discard bit 0 of page register)
// addr mask = 0x1FFFF (all bits 0-15 become bits 1-16, bit 15 of addr takes the place of page register bit 0)
// 64KB mode (modern PCI including Intel chipsets) (en=false):
// page shift = 0 (all 8 bits of page register are used)
// addr mask = 0xFFFF (discard bit 15, bits 0-14 become bits 1-15 on ISA bus)
DMA16_PAGESHIFT = (en && DMA16) ? 0x1 : 0x0; // nonzero if we're to discard bit 0 of page register
DMA16_ADDRMASK = (1UL << ((en && DMA16) ? 17UL : 16UL)) - 1UL; // nonzero if (addrreg << 1) to cover 128KB, zero if (addrreg << 1) to discard MSB, limit to 64KB
}
void Register_Callback(DMA_CallBack _cb) {
callback = _cb;
masked_by = DMAA_REISSUE;
SetMask(masked);
if (callback) Raise_Request();
else Clear_Request();

View File

@ -98,6 +98,7 @@ extern uint16_t first_umb_size;
bool MEM_unmap_physmem(Bitu start,Bitu end);
bool MEM_map_RAM_physmem(Bitu start,Bitu end);
bool MEM_map_ROM_physmem(Bitu start,Bitu end);
struct BuiltinFileBlob {
const char *recommended_file_name;
@ -323,6 +324,7 @@ bool DOS_ResizeMemory(uint16_t segment,uint16_t * blocks);
bool DOS_FreeMemory(uint16_t segment);
void DOS_FreeProcessMemory(uint16_t pspseg);
uint16_t DOS_GetMemory(uint16_t pages,const char *who=NULL);
void DOS_Private_UMB_Lock(const bool lock);
void DOS_FreeTableMemory();
bool DOS_SetMemAllocStrategy(uint16_t strat);
uint16_t DOS_GetMemAllocStrategy(void);

View File

@ -33,6 +33,14 @@
#include "clockdomain.h"
#include "config.h"
#if defined(OS2) && defined(C_SDL2)
#undef VERSION
#endif
#if defined(C_HAVE_LINUX_KVM) && (C_TARGETCPU == X86 || C_TARGETCPU == X86_64)
# define C_HAVE_LINUX_KVM_X86
#endif
#if defined(C_ICONV)
/* good */
#elif defined(C_ICONV_WIN32)
@ -181,8 +189,9 @@ extern bool sse2_available;
extern bool avx2_available;
#endif
void MSG_Add(const char*,const char*); //add messages to the internal languagefile
const char* MSG_Get(char const *); //get messages from the internal languagefile
void MSG_Add(const char*,const char*); // Add messages to the internal languagefile
const char* MSG_Get(char const *); // Get messages from the internal languagefile
std::string formatString(const char* format, ...); // Generates a formatted string using a format specifier and variable arguments.
void DOSBOX_RunMachine();
void DOSBOX_SetLoop(LoopHandler * handler);
@ -355,25 +364,10 @@ private:
SaveState(const SaveState&);
SaveState& operator=(const SaveState&);
class RawBytes
{
public:
RawBytes() {}
void set(const std::string& stream);
std::string get() const; //throw (Error)
void compress() const; //throw (Error)
bool dataAvailable() const;
private:
bool dataExists = false; //determine whether set method (even with empty string) was called
mutable bool isCompressed = false; //design for logical not binary const
mutable std::string bytes; //
};
struct CompData
{
CompData(Component& cmp) : comp(cmp) {}
Component& comp;
std::vector<RawBytes> rawBytes = std::vector<RawBytes>(MAX_PAGE * SLOT_COUNT);
};
typedef std::map<std::string, CompData> CompEntry;

753
include/dosbox224x163.h Normal file
View File

@ -0,0 +1,753 @@
unsigned char dosbox224x163_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xa3,
0x04, 0x03, 0x00, 0x00, 0x00, 0x61, 0xcf, 0x0f, 0x10, 0x00, 0x00, 0x00,
0x30, 0x50, 0x4c, 0x54, 0x45, 0x25, 0x16, 0x08, 0x48, 0x24, 0x07, 0x6e,
0x39, 0x10, 0x5a, 0x44, 0x1f, 0x92, 0x4f, 0x1b, 0x71, 0x5e, 0x33, 0xb0,
0x61, 0x24, 0x99, 0x72, 0x15, 0x8b, 0x75, 0x42, 0xc7, 0x70, 0x2c, 0x9f,
0x89, 0x51, 0xde, 0x81, 0x36, 0xca, 0x98, 0x17, 0xb3, 0x9c, 0x60, 0xe8,
0xbb, 0x28, 0xfb, 0xd2, 0x36, 0xe3, 0xf9, 0x1f, 0xe5, 0x00, 0x00, 0x20,
0x00, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0xbd, 0x7c, 0x5d, 0x8c, 0x1b,
0x57, 0x96, 0x5e, 0x53, 0x6d, 0x47, 0xce, 0x62, 0x10, 0xb0, 0xd8, 0x3d,
0x16, 0x02, 0xe4, 0xc1, 0x2c, 0x97, 0x68, 0x6b, 0xed, 0x75, 0x9a, 0xaa,
0x65, 0xba, 0x31, 0xb1, 0x81, 0x71, 0xe1, 0x4e, 0xad, 0x39, 0xf2, 0x06,
0x9b, 0xa9, 0x54, 0xc4, 0x28, 0x56, 0x30, 0xd3, 0x28, 0x14, 0x52, 0xdb,
0xd8, 0x87, 0x85, 0xa3, 0x91, 0x30, 0xe8, 0x35, 0x32, 0xe9, 0xe5, 0x4c,
0x81, 0xb1, 0x06, 0xb3, 0x06, 0x51, 0x41, 0x81, 0xf3, 0x30, 0x0b, 0x43,
0x09, 0xc3, 0xa4, 0x17, 0x81, 0x21, 0x34, 0x40, 0xf0, 0x71, 0xb0, 0x90,
0x31, 0x68, 0xb7, 0x67, 0xa0, 0x28, 0xee, 0xe5, 0xa2, 0xbd, 0x0f, 0xc1,
0x46, 0x86, 0x21, 0x51, 0x0f, 0x8b, 0xc0, 0xc6, 0x46, 0x66, 0xe7, 0x7c,
0xe7, 0xdc, 0x5b, 0xac, 0x6e, 0x3b, 0xaf, 0xb9, 0x6c, 0xb2, 0xab, 0x58,
0x7f, 0xf7, 0xbb, 0xe7, 0xdc, 0xf3, 0x77, 0xcf, 0xe1, 0xd2, 0x52, 0xa5,
0x52, 0x59, 0x3a, 0xf1, 0xd2, 0xfb, 0x68, 0x95, 0x4a, 0xe9, 0x68, 0xe9,
0xfb, 0x45, 0xfb, 0x7f, 0x5d, 0xab, 0xaf, 0x2f, 0xb6, 0xcc, 0x99, 0xd4,
0xfe, 0xe5, 0x38, 0xcf, 0xe2, 0x2c, 0x8f, 0xb3, 0x28, 0x8a, 0x63, 0x7a,
0xe7, 0xe3, 0x71, 0x36, 0xc6, 0x37, 0x79, 0x46, 0x2d, 0xa7, 0xdd, 0x9c,
0x36, 0x73, 0xde, 0xc8, 0x72, 0x1c, 0xc9, 0xa2, 0x38, 0xfa, 0x63, 0xe5,
0xa9, 0x28, 0xe6, 0xd3, 0xe8, 0xc8, 0x84, 0xbe, 0x49, 0xe8, 0xac, 0x31,
0x1d, 0xcf, 0xe2, 0x98, 0x4e, 0x49, 0xe8, 0x20, 0x8e, 0x47, 0xca, 0x8f,
0x22, 0xa5, 0xe8, 0xbb, 0x98, 0x76, 0xff, 0xf3, 0x7b, 0x78, 0xf2, 0x20,
0xf6, 0xfd, 0x24, 0x89, 0x71, 0xcc, 0x8f, 0xe3, 0x24, 0x4b, 0x62, 0xba,
0x36, 0x8e, 0x07, 0x79, 0x9e, 0xd0, 0x2b, 0xc7, 0x9d, 0x62, 0x3f, 0x4e,
0x62, 0xa5, 0xe8, 0x93, 0x36, 0xe9, 0x5c, 0xec, 0x38, 0xca, 0xf1, 0xe9,
0x82, 0x2d, 0xba, 0x92, 0xae, 0xcf, 0x62, 0x47, 0x1f, 0xc4, 0x61, 0xba,
0x10, 0x57, 0xc4, 0x74, 0x47, 0x5f, 0xd1, 0xa9, 0x0d, 0xba, 0x94, 0xb6,
0xfc, 0xc9, 0x33, 0xd5, 0xa5, 0xe5, 0xb5, 0xa7, 0xc7, 0x04, 0x2c, 0xdf,
0x43, 0x77, 0x63, 0x00, 0x9c, 0x8c, 0xc7, 0x7b, 0xdf, 0x8f, 0x19, 0x5b,
0xc6, 0xc8, 0x26, 0xe3, 0xc1, 0x18, 0x80, 0x23, 0x74, 0x1d, 0xfd, 0x47,
0x77, 0x23, 0x85, 0x57, 0x86, 0xa1, 0x89, 0x7d, 0x1c, 0xc9, 0xc7, 0xf9,
0x84, 0x2e, 0xd0, 0x63, 0x83, 0x93, 0x22, 0x02, 0x96, 0xd1, 0x59, 0x31,
0x5e, 0x99, 0xa7, 0xe2, 0xc1, 0xf7, 0x1a, 0xbf, 0x5a, 0xaa, 0xac, 0xd6,
0x5f, 0x98, 0x50, 0x07, 0x13, 0xea, 0x42, 0x9c, 0xf8, 0xe8, 0xdc, 0x20,
0x8f, 0x81, 0x98, 0xb6, 0xb7, 0x72, 0xea, 0x70, 0x46, 0x10, 0xa9, 0xef,
0x80, 0x4f, 0xbd, 0x45, 0xa7, 0x3d, 0xc7, 0x6b, 0x38, 0xe8, 0xba, 0x4f,
0x38, 0x15, 0xba, 0xee, 0x27, 0x31, 0x9d, 0x9b, 0xf1, 0x55, 0xdf, 0x4f,
0x18, 0xb2, 0x00, 0xa4, 0xcd, 0x08, 0xc7, 0xb1, 0x3d, 0x78, 0xef, 0xe9,
0xe8, 0x9b, 0x4b, 0x95, 0xda, 0xff, 0xa8, 0xfe, 0xfb, 0xbd, 0x38, 0xe9,
0x2b, 0x95, 0xe5, 0x99, 0x8f, 0xde, 0x27, 0xf9, 0xb8, 0x1f, 0x45, 0xe8,
0x7b, 0x9e, 0x31, 0xb2, 0x04, 0xd0, 0x37, 0x01, 0x03, 0xc4, 0x8e, 0x23,
0x2f, 0xda, 0x54, 0x78, 0x7a, 0x44, 0x23, 0x13, 0xc7, 0x79, 0xd6, 0xa7,
0x6b, 0x88, 0xc2, 0x7d, 0x95, 0xe4, 0x3c, 0x04, 0x11, 0xef, 0xd3, 0xd7,
0x04, 0x2d, 0x02, 0x25, 0x3d, 0xdb, 0xef, 0x47, 0xed, 0xdb, 0xd6, 0xe4,
0x7b, 0xff, 0x96, 0x1e, 0xd8, 0xe8, 0x9f, 0x19, 0xe4, 0x3e, 0x53, 0x22,
0xf1, 0xfd, 0x76, 0x1e, 0xb7, 0x41, 0x87, 0x38, 0xf7, 0xf9, 0x7f, 0x82,
0x1e, 0x24, 0x99, 0x62, 0xc2, 0xf3, 0x20, 0xd0, 0xa3, 0x98, 0x7e, 0xa0,
0x23, 0x21, 0x60, 0xca, 0x83, 0x76, 0x19, 0x8f, 0x02, 0x30, 0xf1, 0x25,
0xe8, 0x25, 0xe1, 0xa7, 0x71, 0xf5, 0x7d, 0x0c, 0x87, 0x9f, 0xd7, 0x7f,
0x37, 0x61, 0x84, 0x5e, 0xf2, 0xeb, 0xa7, 0x99, 0xb9, 0xb8, 0x77, 0x71,
0x3f, 0x66, 0x36, 0x23, 0x6c, 0xc0, 0xc3, 0x5f, 0xe5, 0xf1, 0x5e, 0x16,
0xf7, 0x23, 0x66, 0xbc, 0x48, 0x79, 0x51, 0xe4, 0x11, 0x8f, 0x2a, 0xda,
0x44, 0x37, 0xa2, 0xd8, 0x8b, 0x34, 0x13, 0x32, 0x22, 0xee, 0x5a, 0x06,
0xa6, 0xc7, 0x05, 0xf8, 0x17, 0x33, 0xce, 0xc1, 0xcf, 0xff, 0xf1, 0x38,
0x7e, 0xe7, 0xbb, 0x44, 0x43, 0xc7, 0xbf, 0x54, 0x7f, 0x61, 0x1c, 0xf3,
0x58, 0x32, 0x39, 0x40, 0x1b, 0xe5, 0x3b, 0x8e, 0xdf, 0x88, 0x19, 0x95,
0x6a, 0xd3, 0xbe, 0xed, 0x80, 0x5c, 0xb6, 0xe3, 0x61, 0xcb, 0x71, 0x6c,
0xb0, 0x29, 0x90, 0xda, 0xf8, 0xd7, 0xf0, 0x13, 0xe0, 0x72, 0x70, 0xb9,
0xa2, 0x01, 0x68, 0xc4, 0x60, 0x6c, 0xba, 0x56, 0x79, 0x0e, 0x88, 0x4e,
0x6d, 0xeb, 0xbd, 0xd5, 0x71, 0x9e, 0xbc, 0xf3, 0xcd, 0xa5, 0xa5, 0x9a,
0x17, 0xfb, 0x7b, 0xf5, 0xc1, 0x1e, 0x75, 0x86, 0xce, 0x45, 0x0f, 0x23,
0x66, 0x41, 0xea, 0x37, 0x18, 0x11, 0x9d, 0x8b, 0xfc, 0xc8, 0xb3, 0x95,
0x47, 0x4d, 0xa9, 0x4d, 0x9a, 0x57, 0x9e, 0xed, 0x79, 0x36, 0x1a, 0xa1,
0xf1, 0x30, 0x1f, 0x63, 0x7c, 0x6c, 0x02, 0x1e, 0x38, 0x96, 0xae, 0xd8,
0xa4, 0xfd, 0x77, 0xe2, 0xc8, 0xc6, 0x15, 0x34, 0x1e, 0x34, 0x4b, 0xe9,
0x11, 0xb7, 0xc7, 0xf1, 0xf7, 0x08, 0x61, 0x4d, 0xc5, 0x17, 0x92, 0xf7,
0x9e, 0x98, 0xd0, 0x34, 0x04, 0x32, 0x06, 0x42, 0x80, 0x18, 0x07, 0x21,
0xc0, 0x1b, 0x07, 0xec, 0x9a, 0x57, 0xb3, 0x01, 0x87, 0x0e, 0xd8, 0xb5,
0x9a, 0x55, 0xab, 0xf1, 0x23, 0x1d, 0x25, 0xcf, 0xc5, 0x65, 0x74, 0x88,
0xfe, 0xdb, 0xce, 0x2a, 0xae, 0xc1, 0x70, 0xdb, 0x0d, 0xfa, 0xca, 0xa6,
0xed, 0x5a, 0x63, 0x50, 0x7f, 0x21, 0xef, 0x0f, 0xda, 0x9b, 0x44, 0x43,
0xeb, 0x62, 0xa4, 0xfa, 0x5b, 0xbf, 0xbe, 0xf0, 0x17, 0x7d, 0x22, 0x1f,
0xe1, 0x41, 0xa7, 0x14, 0xfa, 0x45, 0x28, 0x40, 0x2b, 0xfd, 0x62, 0x48,
0x1e, 0x7f, 0xe9, 0xe1, 0x21, 0x17, 0xed, 0x7a, 0xbd, 0x8e, 0x6d, 0xa6,
0xa7, 0xd2, 0xf8, 0xb1, 0x8f, 0x7f, 0xbc, 0x8f, 0x6f, 0x21, 0x90, 0xe8,
0x9d, 0xfc, 0xe9, 0xd3, 0xb7, 0x93, 0x28, 0x8f, 0x36, 0x09, 0xe1, 0x19,
0xc7, 0x77, 0xe2, 0x17, 0x06, 0xaf, 0x5e, 0xda, 0x83, 0x58, 0x70, 0xb8,
0xb3, 0xd4, 0x4f, 0xea, 0x9a, 0xbc, 0xf1, 0xc9, 0xff, 0x6b, 0xf8, 0xab,
0x51, 0xc3, 0x87, 0xc5, 0x7f, 0xd2, 0xe8, 0x70, 0x0d, 0xe7, 0xd4, 0xf8,
0x3c, 0x1c, 0xb7, 0x19, 0x3e, 0x8f, 0x11, 0xfe, 0xd9, 0x17, 0x36, 0x9f,
0x4c, 0xfa, 0xed, 0x38, 0x4f, 0x3c, 0xa6, 0xa1, 0xf2, 0x6f, 0x5f, 0x9a,
0x8c, 0x9b, 0x5b, 0x7d, 0xee, 0x25, 0xbf, 0x09, 0x8c, 0xcd, 0x60, 0x04,
0x12, 0xb0, 0xd9, 0x75, 0x7a, 0x11, 0x2c, 0xfd, 0x1f, 0x00, 0x69, 0x87,
0x71, 0x2b, 0x3e, 0x13, 0x97, 0xd0, 0x01, 0xcb, 0xe2, 0xc3, 0xf8, 0x9e,
0xdf, 0x5e, 0xdd, 0x76, 0xfa, 0xd5, 0xff, 0x98, 0xbf, 0x77, 0xa9, 0x1f,
0xfb, 0x40, 0x58, 0xa9, 0xad, 0x3a, 0xea, 0x42, 0x76, 0xe9, 0xf6, 0x13,
0x03, 0xf0, 0x1c, 0x35, 0x0f, 0xcc, 0xa7, 0x1b, 0xe1, 0xd0, 0xff, 0x00,
0x0b, 0xad, 0x62, 0x55, 0x2a, 0x96, 0xa5, 0x37, 0x2d, 0x0d, 0xd3, 0xe1,
0x13, 0x31, 0x06, 0x40, 0xac, 0x01, 0xca, 0xd0, 0xd0, 0xd7, 0xfe, 0x33,
0x17, 0xbc, 0x46, 0xd4, 0xa6, 0xc1, 0xb3, 0x99, 0x86, 0x98, 0xce, 0xe3,
0x64, 0xf0, 0xab, 0xd5, 0xff, 0xce, 0x74, 0xa9, 0x33, 0x85, 0x6c, 0x81,
0xc0, 0x30, 0xea, 0x96, 0xfd, 0x2a, 0xf5, 0xb4, 0xfe, 0xe2, 0xec, 0x54,
0xfb, 0x21, 0x3d, 0xd1, 0xe0, 0xe4, 0x13, 0xeb, 0xf6, 0x77, 0xea, 0x74,
0x76, 0xad, 0xae, 0x47, 0xa0, 0x8e, 0xc3, 0xce, 0xef, 0x3d, 0x11, 0x6d,
0x26, 0x59, 0xde, 0x1f, 0xc7, 0x40, 0x68, 0xd5, 0x30, 0x55, 0x92, 0x76,
0x3e, 0xa8, 0x3e, 0xff, 0xac, 0x4d, 0xaf, 0xda, 0xb3, 0xe8, 0xe7, 0x4a,
0xed, 0x59, 0xfc, 0x5f, 0xa1, 0x7d, 0xea, 0xfc, 0xca, 0xb3, 0x2b, 0x2b,
0x95, 0xa5, 0xaf, 0x1d, 0x9f, 0x6e, 0xf7, 0xaf, 0x03, 0x65, 0xa5, 0xb6,
0xb2, 0x52, 0x5b, 0xb1, 0x30, 0x0c, 0xfa, 0x1a, 0xda, 0x17, 0xc8, 0x74,
0xbf, 0x67, 0xeb, 0x15, 0x16, 0xb9, 0xed, 0x84, 0x78, 0x1d, 0x08, 0x89,
0xab, 0x21, 0xf4, 0xfb, 0x6a, 0x73, 0x69, 0xad, 0xba, 0x56, 0xb5, 0x96,
0xaa, 0x4d, 0xab, 0xda, 0x5c, 0xb3, 0xaa, 0x56, 0xb5, 0x4a, 0xef, 0x26,
0x7d, 0xae, 0xad, 0x59, 0x6b, 0xd4, 0xce, 0xce, 0xbe, 0xf4, 0xc4, 0xe3,
0x8f, 0xd6, 0x4a, 0x8d, 0xae, 0xa1, 0x5b, 0x58, 0xb8, 0x40, 0xae, 0xa1,
0x6b, 0xab, 0x4b, 0xd5, 0x1a, 0xb1, 0x73, 0xe4, 0x43, 0xe5, 0x7a, 0x90,
0xa5, 0xb6, 0xf2, 0x49, 0x45, 0x24, 0x34, 0xbd, 0x9f, 0xef, 0x70, 0x0b,
0x6f, 0x1e, 0xed, 0xee, 0xee, 0x1e, 0x9d, 0x6a, 0xbb, 0xa3, 0xf4, 0xe5,
0x83, 0x83, 0x47, 0x8f, 0xcc, 0x93, 0x1e, 0xe9, 0xcd, 0xf9, 0x68, 0x77,
0xb7, 0x38, 0xfd, 0xc4, 0x75, 0x53, 0xb9, 0x5d, 0x1a, 0x10, 0x56, 0x47,
0xb5, 0x49, 0xbf, 0xfa, 0x0a, 0x13, 0x9f, 0x04, 0x41, 0x92, 0x0f, 0x20,
0xdc, 0x3b, 0x29, 0xb7, 0x6e, 0xfa, 0xa5, 0xa7, 0xa1, 0x1d, 0x76, 0x2f,
0xef, 0x3f, 0x78, 0x30, 0x9b, 0xcb, 0xf3, 0xe6, 0x0f, 0x68, 0x9b, 0x11,
0x7f, 0x71, 0xf4, 0xd5, 0x6d, 0xda, 0xe5, 0x7b, 0xa5, 0xe9, 0x4e, 0xbd,
0x76, 0x91, 0x04, 0x10, 0xe9, 0x8f, 0x58, 0xe6, 0xa1, 0xe3, 0xd3, 0xc3,
0xc7, 0x24, 0x34, 0x37, 0xd2, 0x0e, 0x5e, 0x9d, 0xf0, 0x8a, 0xe9, 0xae,
0x6e, 0x47, 0xf4, 0x22, 0x84, 0xaf, 0xb5, 0xbe, 0xf5, 0xad, 0xb7, 0x04,
0xd8, 0x07, 0xd7, 0x2f, 0x5f, 0x5e, 0xdf, 0x3e, 0x38, 0xe0, 0x6d, 0xd3,
0xbf, 0x05, 0x4c, 0x5c, 0xd1, 0x0d, 0x3b, 0xe9, 0x6b, 0xb8, 0xdf, 0x0e,
0xd1, 0xb6, 0xa1, 0x58, 0xcd, 0x92, 0xb6, 0x58, 0xb2, 0x58, 0x71, 0xef,
0x91, 0xda, 0xf3, 0x5b, 0x1a, 0x61, 0x18, 0xf6, 0xbe, 0xaa, 0xc7, 0xc3,
0x6e, 0xe0, 0x36, 0xf7, 0x05, 0xe2, 0x61, 0x37, 0x08, 0x5c, 0xf7, 0xf2,
0x3e, 0x30, 0xce, 0xa7, 0xd3, 0xaf, 0x1a, 0x90, 0x30, 0x24, 0x78, 0x43,
0x7a, 0xed, 0x54, 0x49, 0xfa, 0xf9, 0x7e, 0x9e, 0x25, 0x19, 0x10, 0xd6,
0xc0, 0x41, 0x79, 0x46, 0xb3, 0x84, 0x69, 0x98, 0xa6, 0x9d, 0x30, 0x0c,
0x3b, 0x5f, 0x31, 0xa8, 0x04, 0x31, 0x74, 0xdd, 0x6d, 0x22, 0x23, 0xb5,
0x1b, 0x74, 0x9a, 0xbb, 0x72, 0x8e, 0xf6, 0xe8, 0x89, 0x0f, 0x47, 0x32,
0x08, 0x27, 0x4e, 0x0f, 0x3b, 0x61, 0xa7, 0xd3, 0x03, 0x80, 0x1d, 0x9a,
0xad, 0x76, 0x83, 0xb4, 0x6b, 0x3b, 0x56, 0xac, 0x0f, 0x49, 0xda, 0x4f,
0xf6, 0x06, 0xa4, 0xcc, 0x5a, 0xdd, 0x6e, 0x37, 0xa5, 0x77, 0x97, 0xfa,
0xf6, 0x65, 0x80, 0xd3, 0xd1, 0x88, 0x20, 0xee, 0x3f, 0x60, 0xc2, 0x1d,
0x8e, 0x86, 0x29, 0xed, 0xfd, 0x6c, 0xff, 0x11, 0x43, 0x1c, 0x8d, 0x4e,
0xa3, 0xbc, 0x85, 0x7b, 0x11, 0xc2, 0x21, 0x68, 0x68, 0xd9, 0xc4, 0xa4,
0x59, 0x3e, 0xc8, 0xfa, 0xdf, 0x65, 0x2e, 0x6d, 0xfb, 0xf9, 0x5e, 0x42,
0x6a, 0xf9, 0x3c, 0x75, 0x0a, 0xf0, 0xe8, 0x1d, 0x5e, 0x29, 0x68, 0xa7,
0x29, 0x88, 0x46, 0x10, 0x0d, 0xc2, 0x5e, 0xaf, 0x97, 0x06, 0xee, 0xcb,
0x07, 0x1f, 0x12, 0x4d, 0x79, 0x6f, 0x34, 0x2a, 0x9d, 0x7f, 0x34, 0xc4,
0x7d, 0x30, 0x60, 0x4c, 0x43, 0xab, 0xa6, 0x1a, 0xed, 0x78, 0xb0, 0x95,
0x44, 0x98, 0xf8, 0x1e, 0x74, 0x32, 0x21, 0xdc, 0x64, 0x84, 0xd2, 0xc2,
0x6e, 0x38, 0x9a, 0x1e, 0x4d, 0x4f, 0x00, 0x24, 0x88, 0x44, 0xc5, 0xfd,
0x19, 0x33, 0xcd, 0x61, 0x3a, 0xc4, 0xde, 0xcb, 0xc2, 0xa8, 0x87, 0x43,
0xea, 0x4d, 0xf9, 0xfc, 0xc3, 0x2e, 0x0f, 0x96, 0xf0, 0x04, 0x3d, 0x90,
0x10, 0xaa, 0x38, 0x1f, 0xc4, 0x1e, 0x64, 0xa9, 0x43, 0x26, 0xd7, 0x20,
0x4f, 0x22, 0xc7, 0xdf, 0xe8, 0x2c, 0x1a, 0x93, 0x71, 0xc1, 0x7e, 0xdc,
0xf5, 0xd1, 0x28, 0x74, 0xdf, 0x62, 0xaa, 0x1d, 0x33, 0xc2, 0x34, 0x7c,
0x59, 0xf6, 0x7e, 0xd9, 0x1b, 0x15, 0x73, 0x11, 0x9f, 0xa3, 0x54, 0xdf,
0xc5, 0x3c, 0x70, 0x95, 0xd8, 0x64, 0x30, 0xc9, 0x63, 0x1b, 0x5c, 0x0a,
0x0b, 0x66, 0xdc, 0x4f, 0xc8, 0x6c, 0xd9, 0x90, 0x99, 0xa3, 0x51, 0xa6,
0x47, 0xa7, 0x00, 0x4e, 0xa7, 0x87, 0x40, 0x78, 0x2c, 0x98, 0xa8, 0x75,
0xc3, 0x8f, 0x79, 0x6f, 0x3e, 0x04, 0xbe, 0x32, 0x01, 0xc3, 0x12, 0xc0,
0xe1, 0xbb, 0x24, 0xcc, 0x48, 0x25, 0x4e, 0xc8, 0xe0, 0x15, 0x84, 0x98,
0x87, 0xb0, 0x5b, 0x45, 0xd2, 0x30, 0x97, 0x82, 0x8e, 0xad, 0x2b, 0x23,
0xdd, 0x40, 0xc0, 0x1e, 0xde, 0x42, 0x43, 0x88, 0x99, 0x1b, 0xe8, 0xfc,
0x8d, 0x37, 0x66, 0x3c, 0x2b, 0x3f, 0x15, 0x0a, 0xea, 0x46, 0xa4, 0x6e,
0x85, 0xd2, 0xe4, 0x7e, 0x3b, 0x15, 0x52, 0x27, 0x0d, 0xcc, 0xc3, 0xcc,
0x62, 0x7d, 0xe8, 0xfb, 0xd9, 0x04, 0x52, 0xe0, 0x9f, 0xb7, 0xba, 0x61,
0x41, 0xc4, 0x30, 0x0c, 0xc2, 0x74, 0x34, 0x1a, 0x12, 0xa9, 0xa8, 0xfb,
0xf2, 0xe0, 0xe1, 0x70, 0x27, 0xd8, 0x16, 0xaa, 0xdd, 0xc3, 0x40, 0xa4,
0x1f, 0xcf, 0x05, 0xe0, 0x10, 0xe7, 0x80, 0x4f, 0xa7, 0x60, 0xe6, 0x61,
0xa0, 0x9f, 0x27, 0x30, 0xbb, 0x3b, 0x55, 0xc8, 0x6b, 0x02, 0xb5, 0x97,
0x91, 0x11, 0x55, 0xa9, 0xac, 0x92, 0xae, 0x18, 0x8f, 0x07, 0x64, 0x1b,
0xb7, 0x40, 0xba, 0x4e, 0x47, 0x9f, 0xde, 0x6a, 0x6d, 0xf4, 0x04, 0xd8,
0xae, 0x46, 0x69, 0xb8, 0xf4, 0xf8, 0xd1, 0xf1, 0x07, 0x7f, 0x44, 0xed,
0x43, 0x6c, 0x3d, 0x62, 0x7a, 0x96, 0x20, 0x8e, 0xe8, 0xca, 0x56, 0xcb,
0x00, 0xa4, 0x06, 0x59, 0x1a, 0xb7, 0xb7, 0x06, 0x71, 0x1e, 0x39, 0x3c,
0x0f, 0x69, 0x06, 0x8e, 0xf7, 0xc6, 0xd1, 0xa6, 0xdf, 0x0a, 0xcb, 0x6c,
0x1a, 0x42, 0xe0, 0x4c, 0x75, 0x63, 0x7c, 0x84, 0xb0, 0xf9, 0xb3, 0xd9,
0x29, 0x95, 0x31, 0xff, 0x94, 0xc8, 0x84, 0x41, 0x90, 0x13, 0x8f, 0xa6,
0x44, 0xc0, 0x50, 0xdf, 0x43, 0xe6, 0xf5, 0x0e, 0x3f, 0x90, 0x5c, 0x1d,
0x72, 0x62, 0x58, 0x96, 0x2a, 0x67, 0x0b, 0x44, 0x8c, 0xfc, 0xaf, 0xb7,
0x42, 0x03, 0x0f, 0x08, 0xa9, 0xa7, 0xbd, 0x5d, 0x43, 0xc7, 0x2b, 0x23,
0xf0, 0x65, 0x31, 0x0f, 0x45, 0x61, 0xd0, 0x6b, 0xfe, 0x3e, 0x51, 0x13,
0x00, 0x31, 0x08, 0x78, 0x0d, 0xe9, 0x3a, 0x3d, 0x97, 0x43, 0x19, 0xb0,
0xa0, 0x72, 0xa6, 0xd6, 0xf0, 0xb7, 0x06, 0x2a, 0x89, 0x3d, 0xd6, 0x87,
0xa4, 0x2e, 0xc8, 0xf5, 0x8b, 0xbc, 0x1f, 0xd1, 0x89, 0xdd, 0x30, 0x2c,
0x88, 0x88, 0x36, 0xd2, 0xf0, 0x80, 0x90, 0x30, 0x06, 0x86, 0x86, 0x84,
0x6c, 0x3e, 0xc7, 0xe6, 0xe3, 0x5b, 0x10, 0x27, 0x38, 0xce, 0xf0, 0x48,
0x47, 0x08, 0xf1, 0xcc, 0x9b, 0x3e, 0x31, 0x0f, 0x95, 0x4a, 0xe0, 0x82,
0xa8, 0x9f, 0x42, 0xe3, 0x93, 0x32, 0x26, 0xf5, 0x44, 0xb2, 0xf4, 0x2a,
0xfa, 0x86, 0x6e, 0x2d, 0x80, 0x76, 0x0a, 0x88, 0x3d, 0x83, 0x70, 0x06,
0x80, 0xb3, 0xd9, 0x3e, 0x35, 0x6c, 0xcf, 0xde, 0x07, 0xc2, 0x1e, 0x28,
0x0d, 0x02, 0x76, 0x5b, 0xc5, 0xa5, 0xe6, 0x7d, 0x8b, 0x24, 0x4d, 0x03,
0x4e, 0xcb, 0x96, 0x72, 0x68, 0x48, 0xeb, 0x76, 0x14, 0xd1, 0x1c, 0xd9,
0x53, 0x9b, 0xf1, 0xd5, 0x43, 0xe6, 0xad, 0x50, 0x13, 0x80, 0x2f, 0xeb,
0x4d, 0x4b, 0x8d, 0x64, 0xcb, 0xcf, 0x44, 0x5d, 0x3c, 0xb8, 0x73, 0xe7,
0x3f, 0x5c, 0xbf, 0xbe, 0x0f, 0x8c, 0xc2, 0xa4, 0x02, 0x91, 0x08, 0xa8,
0xd9, 0x73, 0xc1, 0x0d, 0x47, 0xf7, 0x08, 0x21, 0x19, 0xfe, 0x7b, 0x70,
0x8c, 0x80, 0x70, 0x95, 0xec, 0xf3, 0xf6, 0x24, 0x8b, 0x6d, 0xff, 0xb7,
0x8e, 0x86, 0xad, 0x56, 0x58, 0x6e, 0x44, 0x8f, 0xde, 0xc8, 0x4c, 0x2f,
0x1a, 0x55, 0x20, 0x64, 0x22, 0x5e, 0x3b, 0xef, 0xae, 0xac, 0xac, 0x3c,
0xc7, 0x14, 0x7d, 0x98, 0x0a, 0x9b, 0x12, 0x15, 0x87, 0x61, 0xcb, 0x80,
0x63, 0x2e, 0xa5, 0x3b, 0xdc, 0x3c, 0xba, 0x47, 0x33, 0xa1, 0xd1, 0x56,
0xf1, 0x56, 0x3b, 0x16, 0x84, 0xe4, 0xed, 0x24, 0x93, 0x7e, 0xe6, 0xc5,
0x57, 0x49, 0x46, 0x04, 0xe1, 0xa2, 0x8f, 0xa0, 0x68, 0xd0, 0x81, 0x22,
0x60, 0x4a, 0xb2, 0x2c, 0xdd, 0x7e, 0xa0, 0xe7, 0x61, 0x18, 0xb8, 0x6b,
0xbf, 0x2d, 0x72, 0xe7, 0xd3, 0x82, 0x88, 0x05, 0x0b, 0x74, 0x35, 0x37,
0x40, 0xb3, 0x02, 0xa1, 0x93, 0x45, 0x19, 0xb9, 0x68, 0xd1, 0x4f, 0xa1,
0x2d, 0x1c, 0xbf, 0xdd, 0xbe, 0x44, 0x6e, 0xbb, 0x4f, 0x0f, 0x1c, 0x85,
0x5f, 0x82, 0xd8, 0x19, 0xed, 0x1a, 0x2a, 0x2e, 0xe6, 0xe1, 0x0d, 0xea,
0xbc, 0xeb, 0xae, 0x88, 0xdc, 0xf9, 0x22, 0x15, 0x1a, 0x12, 0x01, 0x5b,
0xa7, 0xae, 0xdf, 0xd8, 0xc5, 0x03, 0x49, 0xd2, 0x90, 0x96, 0x87, 0x27,
0x46, 0x08, 0xed, 0x8b, 0xb0, 0x69, 0x68, 0x48, 0xfb, 0xf1, 0x4d, 0xc8,
0xf9, 0x40, 0xe8, 0x28, 0xb4, 0x64, 0x81, 0xd3, 0x5b, 0x30, 0x6a, 0xb7,
0xa9, 0x65, 0xe9, 0x3d, 0x12, 0xba, 0xdd, 0x60, 0x6d, 0x7d, 0xff, 0x51,
0xa1, 0x2d, 0x46, 0xa3, 0x5b, 0x41, 0x10, 0x84, 0x25, 0xf6, 0xc4, 0xb5,
0x47, 0xfc, 0x40, 0xdb, 0x26, 0x1a, 0x8e, 0x73, 0xa1, 0x61, 0xcd, 0x21,
0xff, 0x8e, 0xdc, 0x0a, 0xbb, 0x71, 0x15, 0x82, 0xb7, 0xeb, 0x16, 0x74,
0x6c, 0xb1, 0xbc, 0xa1, 0xd9, 0x38, 0xe2, 0x57, 0x6f, 0x21, 0x4b, 0x8f,
0x6f, 0xa4, 0x50, 0x16, 0xae, 0xd1, 0x16, 0xa0, 0x1f, 0x8b, 0x18, 0xbe,
0xee, 0xbc, 0xd0, 0x91, 0xae, 0xfc, 0x06, 0xee, 0x78, 0x0f, 0xc3, 0x48,
0x76, 0x1b, 0x5c, 0xe6, 0xef, 0xb2, 0x5d, 0x4a, 0x3e, 0x2e, 0xf9, 0x87,
0x9b, 0x11, 0x3f, 0x70, 0xba, 0x53, 0x74, 0x33, 0x64, 0x80, 0x74, 0xad,
0x96, 0xa6, 0x43, 0xd0, 0xd0, 0x68, 0x40, 0x68, 0x8b, 0xe0, 0x0d, 0xd9,
0x9b, 0x32, 0x9d, 0x4b, 0xf4, 0xe7, 0x6b, 0x83, 0x40, 0x2c, 0x15, 0x20,
0x44, 0x2c, 0x63, 0x9c, 0xe5, 0x98, 0x87, 0x04, 0x50, 0x91, 0xe1, 0xef,
0x47, 0x4c, 0x43, 0x6a, 0x43, 0xf7, 0x04, 0xab, 0xb6, 0xa0, 0x37, 0x84,
0x8a, 0x65, 0x1a, 0x42, 0xf1, 0xb0, 0x76, 0x04, 0xc4, 0x1f, 0x40, 0xcc,
0xa4, 0x27, 0x39, 0xbc, 0x15, 0xba, 0xad, 0x9b, 0x7c, 0xc3, 0x7b, 0x15,
0x78, 0x93, 0x8d, 0xa8, 0x91, 0x89, 0x4d, 0x43, 0x4f, 0x4f, 0xb2, 0x71,
0x4e, 0x3e, 0xfc, 0x55, 0xad, 0xcd, 0x18, 0x22, 0x77, 0x95, 0x29, 0xc9,
0xea, 0x7f, 0xaa, 0x55, 0xbe, 0xd1, 0x87, 0x6c, 0xde, 0x5d, 0xd6, 0x96,
0x69, 0x8f, 0xa7, 0x4c, 0xa8, 0x67, 0xb1, 0x0c, 0x8d, 0x26, 0x20, 0xb5,
0xbb, 0x96, 0xe5, 0xa8, 0xc8, 0xcf, 0x92, 0xdb, 0x71, 0xf4, 0x73, 0xb6,
0xda, 0x1c, 0x0e, 0x56, 0x44, 0x34, 0x0f, 0xc5, 0x3a, 0x0b, 0xdd, 0x53,
0xd3, 0x91, 0x98, 0x0d, 0x13, 0x11, 0x44, 0x14, 0x80, 0xc4, 0xa5, 0xb0,
0x5f, 0xdf, 0x12, 0x7d, 0x78, 0x03, 0xb3, 0x10, 0x0c, 0x2d, 0x54, 0xd7,
0xba, 0xc6, 0xdd, 0xd0, 0x06, 0xc3, 0x3d, 0xe8, 0x43, 0x84, 0xb1, 0x92,
0x84, 0x2d, 0x6f, 0xb2, 0x4b, 0x93, 0x7c, 0x1c, 0xef, 0x29, 0x75, 0xd5,
0xa8, 0xf7, 0x9d, 0x20, 0x2c, 0xd3, 0x51, 0x66, 0x23, 0xeb, 0x8b, 0xae,
0x36, 0xf5, 0x19, 0xe1, 0x5f, 0xc9, 0xf6, 0x5f, 0xa7, 0x74, 0xf0, 0x96,
0x61, 0x6e, 0xb9, 0x8e, 0x08, 0x18, 0x1a, 0x2b, 0xe0, 0x1e, 0xe9, 0x43,
0x2f, 0xca, 0xf7, 0x26, 0x83, 0x71, 0x24, 0x76, 0x29, 0xa9, 0x63, 0x32,
0x70, 0xfc, 0xe2, 0x81, 0x24, 0x70, 0x5c, 0xa8, 0x34, 0xad, 0x1a, 0xa1,
0x36, 0xa0, 0xfe, 0xd3, 0x9f, 0x94, 0x7d, 0x8a, 0xc2, 0xc3, 0x78, 0xd8,
0x21, 0x80, 0xe9, 0xa9, 0x19, 0x88, 0x2b, 0x8c, 0x95, 0x23, 0x08, 0xdb,
0xd9, 0x56, 0x23, 0x02, 0x42, 0x30, 0xe9, 0x38, 0x1f, 0x4f, 0x48, 0x5f,
0x5c, 0x2d, 0xcc, 0x17, 0x26, 0x63, 0xb8, 0xd0, 0xfe, 0x20, 0xc8, 0xb0,
0xfb, 0xc6, 0x4c, 0xb4, 0xc4, 0x42, 0x17, 0x92, 0xc2, 0x98, 0x43, 0x5b,
0x0c, 0x79, 0x48, 0x34, 0x38, 0x16, 0x50, 0x41, 0xa7, 0xb0, 0x70, 0xee,
0x41, 0x59, 0x44, 0x71, 0x3f, 0xcf, 0xfa, 0xe0, 0x52, 0x1b, 0xc3, 0xeb,
0x0f, 0xf2, 0xc8, 0xfe, 0xf6, 0x2b, 0x62, 0xa0, 0x41, 0xab, 0x11, 0x19,
0x8d, 0xc8, 0x17, 0x9c, 0xee, 0x46, 0x1a, 0xae, 0x1f, 0x1c, 0x90, 0x17,
0x7a, 0x70, 0x20, 0x0a, 0x83, 0x14, 0x05, 0x6d, 0xef, 0xdf, 0x20, 0x80,
0x3d, 0x9c, 0x5e, 0x9e, 0xbd, 0x84, 0x70, 0x61, 0xc4, 0xdd, 0xc5, 0x5c,
0xf7, 0xfd, 0x28, 0xa7, 0xe7, 0x88, 0x2c, 0x45, 0x0c, 0x31, 0x8f, 0x54,
0x74, 0x75, 0x61, 0xa4, 0x89, 0xc0, 0x09, 0x4b, 0x42, 0x23, 0x08, 0xbb,
0xeb, 0xfb, 0xe4, 0x3e, 0x51, 0xe3, 0xcf, 0x19, 0x3e, 0xee, 0xdf, 0x09,
0x61, 0xf9, 0x74, 0x83, 0x85, 0xfc, 0x3d, 0xc9, 0xa1, 0xc2, 0xa5, 0x78,
0x46, 0xde, 0xa7, 0x57, 0x2c, 0xb2, 0x54, 0x35, 0xb2, 0x76, 0xee, 0xf8,
0x8c, 0xd0, 0xf8, 0x3f, 0xd0, 0x1b, 0x1d, 0x63, 0x97, 0xf0, 0x96, 0xdb,
0x7a, 0x79, 0x7b, 0xdf, 0xbc, 0xa4, 0x5d, 0x3b, 0x4f, 0x66, 0x10, 0xf1,
0xae, 0x5b, 0xd8, 0x30, 0x5a, 0x55, 0x10, 0x01, 0x17, 0x0f, 0xc4, 0x3c,
0x74, 0xbc, 0x76, 0x44, 0xae, 0x7d, 0x1b, 0xa2, 0xed, 0xa2, 0xca, 0x92,
0x49, 0xbe, 0xb7, 0x19, 0xfd, 0xe8, 0x6a, 0xd9, 0xb6, 0xd4, 0xd2, 0xbe,
0x9b, 0x8a, 0x9d, 0x4a, 0x10, 0x5d, 0xf2, 0x97, 0x9a, 0xcd, 0x26, 0xde,
0x68, 0x2e, 0x35, 0xc2, 0x97, 0x8e, 0xc8, 0x96, 0x3b, 0xa1, 0x03, 0xc1,
0xd4, 0x65, 0x33, 0xf5, 0x2e, 0x4c, 0x7d, 0x70, 0x69, 0xce, 0x5c, 0x0a,
0xab, 0xd8, 0xdf, 0xda, 0x1a, 0xc7, 0xce, 0x09, 0x84, 0xbb, 0x23, 0x57,
0x18, 0x4f, 0x9b, 0x71, 0x34, 0xaf, 0x96, 0x57, 0x5a, 0xae, 0x34, 0x62,
0x62, 0x7c, 0x32, 0x23, 0xf7, 0x7a, 0x5d, 0x57, 0xac, 0x34, 0x73, 0x26,
0x8d, 0x45, 0x6f, 0xb7, 0xe4, 0x0b, 0x03, 0x61, 0x43, 0x71, 0xc4, 0x91,
0x1e, 0xb8, 0x64, 0x41, 0xe5, 0x0f, 0x48, 0xd0, 0xd8, 0x7f, 0x7c, 0xf5,
0x84, 0x9d, 0x7d, 0x4b, 0xcb, 0x54, 0x63, 0xa6, 0x06, 0x41, 0x73, 0xc1,
0xf6, 0x4c, 0x2b, 0x71, 0x8f, 0x84, 0xa3, 0x0b, 0x53, 0x0d, 0x67, 0x8a,
0x99, 0xb0, 0x40, 0x58, 0xb5, 0x9c, 0x28, 0x8b, 0x73, 0xed, 0x1f, 0x12,
0x07, 0x29, 0x7a, 0x76, 0x1e, 0x2f, 0x10, 0xb2, 0xf0, 0xdf, 0x85, 0x76,
0x63, 0xc3, 0xcb, 0x88, 0x0e, 0x77, 0x05, 0xf2, 0x85, 0x9d, 0x64, 0xed,
0x39, 0xb0, 0x0f, 0xd5, 0xd2, 0x43, 0x11, 0x9a, 0xa1, 0xb8, 0xb2, 0x70,
0x9d, 0xf9, 0x81, 0x34, 0xd7, 0x6b, 0x18, 0x46, 0x12, 0x67, 0xec, 0x3d,
0x79, 0xe4, 0x1f, 0x0e, 0xc8, 0xa4, 0xd2, 0xda, 0x62, 0xd1, 0x76, 0x16,
0x10, 0x45, 0x33, 0x92, 0xf4, 0x18, 0x0d, 0x0b, 0x13, 0x4e, 0x74, 0xe4,
0x4e, 0xb0, 0x80, 0xad, 0xa7, 0x2c, 0x49, 0xde, 0xd1, 0xd1, 0x49, 0x2e,
0xa5, 0x51, 0x8c, 0x93, 0x2c, 0x62, 0x49, 0x53, 0xb3, 0xfd, 0x76, 0xd2,
0x8e, 0x62, 0xff, 0x35, 0x9e, 0x87, 0xbb, 0xa3, 0xc2, 0x50, 0x1b, 0xba,
0x25, 0xdd, 0x88, 0xe6, 0xba, 0x1d, 0xb1, 0x5e, 0x58, 0x3b, 0xb2, 0x96,
0x64, 0x02, 0xb6, 0x5a, 0xa1, 0xfe, 0x0c, 0x89, 0xbc, 0x62, 0xde, 0x2c,
0xa8, 0x08, 0x49, 0xb3, 0x6a, 0x93, 0x87, 0x48, 0x3e, 0x05, 0x3b, 0xa4,
0x9e, 0xd7, 0x26, 0x8d, 0x1f, 0x6d, 0x96, 0x24, 0xcd, 0xa8, 0x44, 0x46,
0x3d, 0xb3, 0xa4, 0xb9, 0xb0, 0xb2, 0x87, 0x6c, 0x85, 0x73, 0xbb, 0x45,
0xbc, 0x1b, 0x06, 0x25, 0x99, 0x16, 0x04, 0x69, 0xd9, 0xce, 0x83, 0xcf,
0x78, 0xb7, 0x4a, 0x53, 0x8f, 0x03, 0xcb, 0x2c, 0xda, 0xe0, 0xe3, 0x93,
0xd1, 0xa6, 0xfc, 0x4c, 0x24, 0x8d, 0x06, 0xb8, 0x2b, 0x3a, 0xdc, 0x2d,
0x77, 0x1e, 0x18, 0x5b, 0xc0, 0xc8, 0x36, 0x2a, 0x1c, 0xc4, 0x54, 0x33,
0xab, 0x19, 0x02, 0xd6, 0x11, 0x85, 0x91, 0xc7, 0xc6, 0xf8, 0xee, 0xee,
0xdd, 0xca, 0xaa, 0x5d, 0x6b, 0x20, 0xd6, 0xcf, 0x36, 0x0d, 0x24, 0xb9,
0xca, 0xb1, 0x76, 0x11, 0x5d, 0xd5, 0x4a, 0x4f, 0x40, 0xb0, 0x8a, 0x0f,
0x82, 0x93, 0xdd, 0x0f, 0x98, 0x8c, 0x43, 0x84, 0x27, 0xc0, 0xa1, 0x3b,
0xae, 0x39, 0xae, 0xc9, 0x17, 0x14, 0x86, 0x2c, 0x7b, 0x1b, 0x66, 0x1e,
0xc2, 0xa6, 0x41, 0xb0, 0x5f, 0x6b, 0x0b, 0xdf, 0x1f, 0x4c, 0xc8, 0xe0,
0x78, 0xed, 0x37, 0xc4, 0x59, 0xd2, 0x08, 0xc8, 0x6a, 0xe9, 0xa5, 0x5d,
0x81, 0x60, 0x48, 0x29, 0x10, 0x53, 0xc3, 0xa6, 0xe1, 0xb2, 0xc1, 0x57,
0x0c, 0x80, 0x18, 0x07, 0x3d, 0xd3, 0x46, 0xbb, 0x4c, 0x43, 0x6b, 0x15,
0xc2, 0x94, 0xac, 0x0a, 0xf1, 0x2d, 0x3c, 0xb5, 0x35, 0xe9, 0x47, 0xff,
0xe4, 0x94, 0x57, 0x34, 0x64, 0xf7, 0x15, 0x16, 0x4e, 0x70, 0x02, 0xa2,
0xdb, 0x1b, 0x69, 0x45, 0xf8, 0xc9, 0x9b, 0xee, 0x89, 0x01, 0x80, 0x8e,
0x10, 0x70, 0x1f, 0x17, 0x77, 0x31, 0xb2, 0x94, 0x4c, 0xc3, 0xdb, 0xaa,
0x2f, 0x36, 0x8d, 0xf2, 0x13, 0x52, 0x8d, 0xce, 0x4b, 0x8f, 0x4e, 0x3d,
0xf1, 0x97, 0x1d, 0xd8, 0x9b, 0x81, 0x40, 0x0c, 0xe5, 0x4d, 0x80, 0xd7,
0x0f, 0x16, 0xe7, 0x1c, 0xb8, 0x2b, 0x65, 0x46, 0x76, 0xc9, 0xa3, 0xa4,
0x51, 0xda, 0xfd, 0xab, 0xd2, 0x6d, 0x3e, 0x66, 0x49, 0xb3, 0xea, 0x38,
0x8e, 0xa6, 0xa1, 0xfd, 0xdb, 0x9e, 0x0f, 0x27, 0xdf, 0x7e, 0xe9, 0x4b,
0xb1, 0xc2, 0x29, 0xfc, 0xa2, 0x21, 0xf1, 0xa1, 0x50, 0x32, 0x80, 0x3c,
0x75, 0xd7, 0x4f, 0x9c, 0xf2, 0xf8, 0x4d, 0xb7, 0x18, 0x00, 0x3a, 0x69,
0x17, 0x1c, 0xf0, 0x5f, 0x4f, 0xde, 0xe5, 0x8b, 0xbb, 0xa4, 0xf1, 0x6d,
0xcf, 0x8f, 0x12, 0x9a, 0x8b, 0x40, 0x58, 0x23, 0xb4, 0xe4, 0x9c, 0xda,
0x7f, 0xef, 0x60, 0x56, 0x28, 0x73, 0xad, 0xd6, 0xdf, 0x87, 0x28, 0xe9,
0xba, 0xcb, 0xae, 0x50, 0x12, 0xff, 0x96, 0x3f, 0x94, 0x33, 0x66, 0xfa,
0xe4, 0xfb, 0x9a, 0xc6, 0x2c, 0x5d, 0xaf, 0xc0, 0xb2, 0x4b, 0xe5, 0x8c,
0x47, 0x88, 0xe0, 0xf2, 0x29, 0xbf, 0x20, 0xbf, 0x9e, 0xf0, 0x61, 0xf1,
0xc8, 0x81, 0x8f, 0x6f, 0x91, 0x3a, 0x24, 0x84, 0xaf, 0xbe, 0x68, 0xc2,
0x83, 0xb8, 0xdd, 0x03, 0x76, 0x21, 0x40, 0x47, 0xb0, 0x22, 0x63, 0x0c,
0x98, 0x82, 0x3f, 0x91, 0xe1, 0x9e, 0x41, 0x2b, 0x8a, 0x97, 0x21, 0x34,
0x16, 0x06, 0x26, 0x07, 0x2b, 0xfd, 0x33, 0x81, 0x7e, 0xe7, 0xce, 0x7f,
0xba, 0x2e, 0x41, 0x9d, 0xc7, 0x6b, 0x4b, 0x64, 0xb6, 0xc5, 0x19, 0xc2,
0x89, 0x2c, 0x69, 0x48, 0x8a, 0x0f, 0xf2, 0xd8, 0xae, 0xd7, 0xbe, 0x7e,
0x9e, 0xcd, 0xcc, 0x47, 0xc7, 0xd7, 0xc8, 0xa6, 0x66, 0x13, 0xfb, 0x0b,
0x30, 0xda, 0xb0, 0xa0, 0xa2, 0xeb, 0xbe, 0xcc, 0x7d, 0x9e, 0x1d, 0x34,
0x2d, 0xeb, 0xec, 0xf6, 0x3e, 0xa8, 0x39, 0x2f, 0xa8, 0x0b, 0x11, 0xd3,
0x4b, 0xaf, 0x30, 0xf2, 0xf9, 0x9f, 0x63, 0x38, 0xd6, 0xc5, 0x4e, 0xff,
0x9f, 0xc4, 0x28, 0x8d, 0x76, 0xdc, 0xf7, 0x81, 0x90, 0x08, 0x0a, 0x21,
0x90, 0x65, 0x5e, 0xdd, 0x76, 0x03, 0xe9, 0xf4, 0x31, 0xb9, 0x0d, 0xcd,
0x75, 0xb6, 0x40, 0xa7, 0x0b, 0x9f, 0x01, 0x20, 0x5a, 0x32, 0xe6, 0xf7,
0xff, 0x69, 0xd3, 0xaa, 0x56, 0xcf, 0x5c, 0x67, 0xcf, 0xe2, 0x0b, 0x86,
0x08, 0x21, 0x44, 0x06, 0xfa, 0xb0, 0xfb, 0x36, 0x9b, 0x3c, 0xf7, 0xf0,
0x45, 0x73, 0x4d, 0x6e, 0x72, 0x5c, 0x85, 0x97, 0x8d, 0x95, 0x39, 0xa8,
0xa7, 0x1a, 0x79, 0xa7, 0xfe, 0x20, 0xc9, 0x23, 0xab, 0xf6, 0xa4, 0xbb,
0x7f, 0xc0, 0x81, 0x09, 0xf2, 0x0b, 0xd0, 0xbd, 0x0f, 0x05, 0x22, 0x99,
0x2c, 0xcb, 0x5a, 0x94, 0xbe, 0xc4, 0x56, 0xe9, 0x63, 0xf2, 0x0d, 0xad,
0x65, 0x6b, 0x69, 0x59, 0x00, 0xfc, 0x42, 0x00, 0x6e, 0x20, 0xcc, 0x91,
0xc2, 0x56, 0xa5, 0x21, 0x20, 0xc5, 0x71, 0x9e, 0x20, 0xae, 0x3c, 0x87,
0x3b, 0x1e, 0x57, 0xe1, 0xbf, 0x34, 0xe2, 0xb6, 0xf2, 0x11, 0x89, 0xb2,
0x9d, 0x28, 0xca, 0x49, 0x19, 0xdb, 0x5e, 0xcb, 0xc4, 0x99, 0x48, 0xcb,
0x07, 0xcd, 0x8b, 0xdb, 0x07, 0x12, 0x54, 0x1b, 0x8a, 0xc0, 0x01, 0x8b,
0xca, 0x8c, 0xf8, 0x1b, 0x17, 0xca, 0x7f, 0x6d, 0xad, 0xfa, 0x3a, 0x43,
0xfc, 0x2c, 0xd0, 0x66, 0x28, 0x28, 0x18, 0x32, 0x1f, 0x7c, 0x26, 0x31,
0xa8, 0x6e, 0x10, 0xc0, 0x49, 0x9e, 0x57, 0x2d, 0x8f, 0xa4, 0x4b, 0xa6,
0x32, 0xa5, 0xf5, 0x61, 0x14, 0xb7, 0x07, 0xca, 0x53, 0x4f, 0x85, 0x07,
0xe2, 0x0d, 0xa5, 0xf0, 0x22, 0xac, 0x17, 0xb1, 0xf3, 0x29, 0xfb, 0x7e,
0xa9, 0x68, 0xfa, 0xaf, 0xcd, 0x78, 0x00, 0x34, 0x5f, 0xba, 0x95, 0xb3,
0xfb, 0xcc, 0x91, 0xd7, 0xc0, 0xa4, 0xac, 0xe4, 0xc9, 0x43, 0x64, 0x48,
0xb8, 0x03, 0xac, 0xd5, 0x70, 0x7d, 0x1f, 0xb7, 0x44, 0xd0, 0x9b, 0x57,
0x4b, 0x59, 0xd2, 0x20, 0xe8, 0x9d, 0xb7, 0x27, 0x71, 0xb4, 0xd9, 0x2a,
0x68, 0x08, 0x88, 0xc1, 0x45, 0xc6, 0x7b, 0xc8, 0x8a, 0xaf, 0x0b, 0x11,
0xa3, 0xc3, 0xc1, 0x73, 0xcd, 0xb2, 0xcd, 0x66, 0x4d, 0x46, 0xe4, 0x33,
0xea, 0x4b, 0x47, 0x84, 0xef, 0x0e, 0x43, 0x22, 0x21, 0xc4, 0xb1, 0x8d,
0x61, 0x37, 0x4c, 0x7f, 0xfc, 0xe3, 0x5b, 0x2e, 0xa9, 0x0b, 0x9b, 0x8c,
0x9a, 0x2c, 0xe2, 0x58, 0x1b, 0xdc, 0xa7, 0xb6, 0xdf, 0xf6, 0x1d, 0xc5,
0x34, 0x44, 0x63, 0xf3, 0x44, 0xfc, 0xdb, 0x47, 0x90, 0x37, 0x23, 0x16,
0x38, 0xee, 0xca, 0x5b, 0x7c, 0xf8, 0x93, 0x02, 0xe1, 0x12, 0xfb, 0xf8,
0xc7, 0x9f, 0x91, 0xb5, 0xd3, 0x4b, 0x25, 0xcc, 0xb1, 0xbc, 0xcd, 0xf7,
0x10, 0xf7, 0x8a, 0xc3, 0xcb, 0x9d, 0x1d, 0x30, 0x8a, 0xdd, 0x1e, 0x90,
0xf3, 0x64, 0xb3, 0xf7, 0x44, 0xf6, 0x46, 0x82, 0xe5, 0xe8, 0x4d, 0xd0,
0x90, 0x21, 0xb0, 0x6b, 0x14, 0x34, 0x2f, 0x83, 0x44, 0x8f, 0x45, 0xb5,
0x0f, 0x09, 0xd0, 0x0a, 0x1d, 0x9e, 0x1f, 0xcf, 0x3f, 0xd3, 0xa2, 0x25,
0x58, 0xab, 0x8a, 0xc7, 0x4f, 0x08, 0x41, 0xe9, 0x11, 0x87, 0x50, 0xaf,
0xef, 0x33, 0xec, 0xc7, 0xa2, 0x4e, 0xf0, 0xf9, 0xee, 0x52, 0xd5, 0xaa,
0xd7, 0x93, 0x31, 0x96, 0x25, 0x7f, 0x2e, 0xfe, 0x21, 0x16, 0x7f, 0x95,
0xa3, 0x9e, 0x6a, 0x1d, 0x88, 0x73, 0x04, 0x6b, 0x05, 0xfe, 0x2d, 0xf8,
0xf4, 0xf8, 0x07, 0x22, 0xf7, 0xbb, 0xcb, 0xd6, 0x59, 0x19, 0x80, 0xcf,
0xb5, 0x82, 0x74, 0x2d, 0x46, 0x48, 0xa7, 0x04, 0x1d, 0xed, 0x22, 0x8f,
0xd2, 0x60, 0x65, 0x5b, 0x78, 0x77, 0xf6, 0xbe, 0x0e, 0x97, 0xa6, 0x3b,
0x95, 0x2a, 0x31, 0x4a, 0x9c, 0x61, 0xc1, 0x18, 0xfa, 0x90, 0x84, 0x77,
0x1f, 0x2b, 0x43, 0xd1, 0xe6, 0x86, 0xa1, 0x61, 0x2a, 0xfe, 0xad, 0xcb,
0x7d, 0xfd, 0x5b, 0xad, 0x1b, 0x77, 0xaa, 0xe7, 0x34, 0xc9, 0x8c, 0xec,
0x6c, 0x56, 0xb7, 0xe5, 0xfc, 0x5b, 0x1c, 0xc2, 0x18, 0xf1, 0x3c, 0x74,
0xd7, 0x05, 0xe2, 0xf1, 0xfc, 0x3e, 0x5b, 0x75, 0xa3, 0xd1, 0xbb, 0xa4,
0x0f, 0x2d, 0x0f, 0x73, 0x5d, 0xd6, 0x0f, 0xb1, 0xc0, 0x77, 0x89, 0xcc,
0x62, 0xcf, 0x23, 0x2e, 0x15, 0xe9, 0xc7, 0x16, 0x59, 0xe8, 0xd6, 0x98,
0xe3, 0xa6, 0x3d, 0xb1, 0x5f, 0xba, 0xcd, 0xb3, 0xc2, 0xc4, 0x7f, 0xab,
0xbd, 0xc0, 0xc0, 0xb5, 0xb6, 0x17, 0xf1, 0x61, 0x09, 0x55, 0x31, 0x77,
0x6f, 0x6b, 0x66, 0x9f, 0xc1, 0xef, 0xa0, 0x07, 0x56, 0x60, 0x38, 0xb5,
0xb7, 0x22, 0x9f, 0x3d, 0x60, 0xac, 0xff, 0xc5, 0x48, 0xb7, 0xd8, 0xf4,
0x16, 0x5c, 0xda, 0xed, 0x62, 0x12, 0x09, 0x9b, 0x1e, 0x6b, 0xf3, 0xac,
0x1b, 0x9c, 0x9b, 0x15, 0x08, 0xe1, 0x39, 0x06, 0xcd, 0xb5, 0x6d, 0x13,
0x1f, 0xd6, 0xf1, 0x54, 0x8c, 0x4b, 0xb3, 0x69, 0x30, 0x1e, 0x1f, 0x7f,
0x44, 0x94, 0x9d, 0xde, 0xe5, 0x35, 0x38, 0x3f, 0xee, 0x93, 0x07, 0xf5,
0x5d, 0xa1, 0xa1, 0x9f, 0x60, 0x6d, 0x5b, 0x3d, 0x75, 0x5e, 0x77, 0x8d,
0x0d, 0x6a, 0xea, 0x2c, 0xcf, 0xc4, 0x63, 0x6d, 0xa8, 0xb1, 0xf7, 0x04,
0x0a, 0x7f, 0xa6, 0x15, 0xa0, 0x5b, 0x20, 0x7c, 0xdf, 0x98, 0x72, 0x70,
0xfc, 0x89, 0xbd, 0x9f, 0xdb, 0x96, 0xd9, 0x78, 0x7c, 0x4c, 0x26, 0xee,
0xee, 0xbb, 0xec, 0xe3, 0xc7, 0x09, 0x9c, 0x0b, 0xe8, 0x43, 0xac, 0xae,
0x25, 0x19, 0x29, 0x0f, 0x6f, 0x23, 0x7c, 0x20, 0x43, 0xca, 0x4b, 0x0e,
0x34, 0xf5, 0x24, 0x48, 0x91, 0x1a, 0x06, 0xbc, 0x7c, 0x8a, 0x86, 0x41,
0x73, 0xfb, 0x81, 0xac, 0xd3, 0x08, 0x3c, 0xfe, 0xc0, 0x75, 0x6b, 0xc4,
0xaa, 0x1a, 0xe4, 0xc3, 0x29, 0x10, 0xd6, 0x2d, 0x2f, 0xa2, 0x79, 0xa0,
0x32, 0xd6, 0x87, 0xa4, 0x3a, 0xb6, 0xf2, 0x36, 0x89, 0xb6, 0xa7, 0x42,
0x99, 0x43, 0x34, 0x0f, 0xe1, 0xc1, 0x73, 0x18, 0x86, 0xf6, 0x52, 0x3d,
0xc5, 0x82, 0xf5, 0x7d, 0xde, 0xff, 0xdc, 0xa8, 0x78, 0xb7, 0xb2, 0x2d,
0x3a, 0xf4, 0x07, 0x86, 0x86, 0x6c, 0xc9, 0xd1, 0x14, 0xb6, 0xce, 0x5f,
0x37, 0x20, 0x1f, 0xfe, 0xe0, 0xdd, 0xca, 0x12, 0x96, 0x5e, 0xe3, 0xc8,
0xb7, 0x59, 0x78, 0xd7, 0x61, 0x6f, 0x8c, 0x93, 0xcc, 0x2b, 0xe6, 0xe1,
0x31, 0xb3, 0xd7, 0x2d, 0x04, 0x65, 0x44, 0xb2, 0x0e, 0x85, 0x3a, 0xeb,
0x65, 0x84, 0x9a, 0x86, 0xb3, 0x12, 0x0d, 0x75, 0x6c, 0x7c, 0x88, 0x18,
0x95, 0x7b, 0xfd, 0x8e, 0x56, 0x98, 0x8f, 0xdf, 0xad, 0x60, 0xf1, 0xc9,
0xf3, 0xfb, 0x91, 0xf7, 0x8e, 0xc8, 0x52, 0x07, 0x11, 0x06, 0x20, 0x74,
0x0f, 0x4c, 0x9c, 0x89, 0xc3, 0x30, 0x22, 0x17, 0xe7, 0x1d, 0x03, 0x71,
0x5d, 0x3a, 0x6d, 0x10, 0x0a, 0x97, 0x3e, 0xd2, 0x34, 0xec, 0x8d, 0x8a,
0xc8, 0x6a, 0xca, 0xf4, 0x3d, 0x67, 0x30, 0xde, 0x35, 0x08, 0xdb, 0x76,
0x2c, 0x96, 0x37, 0xe7, 0xfe, 0x78, 0xd1, 0x82, 0x4b, 0x59, 0x48, 0x10,
0x2d, 0x78, 0xf7, 0x73, 0xc2, 0x2b, 0x61, 0xa8, 0xd3, 0x34, 0x5c, 0x70,
0x29, 0xc7, 0x12, 0x47, 0x26, 0x26, 0xc7, 0x84, 0x6c, 0xae, 0xd5, 0xae,
0xeb, 0x09, 0xb9, 0x56, 0x3d, 0x49, 0x43, 0xe5, 0xc4, 0xed, 0x9c, 0xb9,
0x34, 0x64, 0x7d, 0x28, 0xb2, 0x94, 0x98, 0x74, 0x9d, 0x63, 0xa3, 0xef,
0x77, 0xc4, 0xd8, 0x4e, 0x43, 0x01, 0xc4, 0x92, 0x46, 0x8c, 0x34, 0xe6,
0xd2, 0x47, 0x50, 0x9a, 0xd0, 0x14, 0xda, 0xe2, 0xd6, 0x27, 0xbb, 0x56,
0xc5, 0x7a, 0x51, 0x30, 0xde, 0x47, 0xac, 0x2d, 0x6e, 0x47, 0x8d, 0xb8,
0xcc, 0xa5, 0xd1, 0xa6, 0x57, 0xc8, 0x52, 0x76, 0x9a, 0x02, 0x59, 0x59,
0x9a, 0x4b, 0x50, 0x1b, 0x88, 0xab, 0xc2, 0x7a, 0x9f, 0x05, 0x86, 0x86,
0xcd, 0x6d, 0x3e, 0xff, 0xb1, 0x44, 0x83, 0x8f, 0xa6, 0xd3, 0x05, 0x46,
0x18, 0x0d, 0x4d, 0xf7, 0x8e, 0x2c, 0x30, 0x62, 0x1e, 0xc2, 0x79, 0x8a,
0xfb, 0x84, 0xf0, 0x0c, 0x21, 0x54, 0x5b, 0xc9, 0x20, 0x52, 0xde, 0x93,
0xad, 0xb2, 0xb6, 0x08, 0xdd, 0x37, 0x00, 0xe8, 0xa1, 0x26, 0x61, 0x2f,
0x6d, 0x56, 0x5e, 0x67, 0x88, 0xb3, 0xf3, 0x2d, 0x8e, 0x1b, 0xba, 0xee,
0x59, 0x59, 0x14, 0xfe, 0xc4, 0xac, 0x5a, 0x00, 0xde, 0x07, 0x1f, 0x7c,
0xf0, 0x47, 0x1f, 0x0c, 0xc1, 0xab, 0x2d, 0x77, 0xe5, 0x9c, 0x40, 0x04,
0xdd, 0x62, 0x48, 0x1a, 0x36, 0xf5, 0xc9, 0x75, 0xdb, 0x4c, 0xc6, 0x99,
0x27, 0xda, 0x42, 0xeb, 0x43, 0x26, 0x83, 0xd6, 0x6c, 0xc6, 0x11, 0x6c,
0x5a, 0xe7, 0x18, 0xe2, 0xfc, 0x4d, 0x6d, 0xa8, 0x35, 0xd7, 0xf9, 0x8c,
0xf9, 0x0f, 0x3b, 0x1a, 0xe2, 0xd1, 0x74, 0x38, 0x2c, 0x2d, 0x4d, 0x19,
0x69, 0x7c, 0xbc, 0x66, 0xd5, 0x15, 0xc9, 0x6b, 0x12, 0xa6, 0x7a, 0x1d,
0x5f, 0xa9, 0x3c, 0xf3, 0x55, 0xf4, 0xa4, 0x2b, 0xa2, 0x84, 0x24, 0x0d,
0xa4, 0xe2, 0xef, 0x30, 0x8f, 0x82, 0x63, 0xb5, 0xb6, 0xa8, 0x54, 0x5e,
0xff, 0x19, 0xbe, 0xfb, 0x1b, 0x18, 0xa1, 0xd0, 0x87, 0x12, 0x6b, 0xfb,
0x64, 0x65, 0xb9, 0xa3, 0x5d, 0x42, 0xd2, 0xf1, 0x1f, 0x0a, 0xdb, 0x92,
0xba, 0xe9, 0x90, 0x59, 0xf3, 0xaf, 0x20, 0x49, 0xe6, 0x55, 0x92, 0x67,
0x99, 0x9f, 0xc7, 0xb1, 0x78, 0x4f, 0xe4, 0x19, 0xc6, 0x58, 0xb7, 0xf0,
0x36, 0xba, 0x0b, 0x8d, 0x4f, 0x00, 0x0f, 0x40, 0x9f, 0xcf, 0x45, 0xad,
0xc1, 0x11, 0x74, 0x9b, 0x5a, 0x5f, 0x7c, 0xb1, 0x23, 0x86, 0xea, 0xba,
0x88, 0xaf, 0xbb, 0x6e, 0xd0, 0x1a, 0x99, 0xb0, 0xff, 0x77, 0xc4, 0x14,
0x95, 0xc5, 0x64, 0xda, 0x63, 0xb6, 0x26, 0xd3, 0xdb, 0x47, 0x12, 0x51,
0xbf, 0xff, 0x2b, 0x5e, 0x5d, 0x53, 0xca, 0xdf, 0xca, 0x89, 0x69, 0xbf,
0x11, 0xea, 0x75, 0x7a, 0x28, 0xb2, 0xce, 0x55, 0xde, 0xbe, 0x06, 0x07,
0x83, 0xba, 0x1b, 0xc0, 0xfc, 0xae, 0x54, 0xc4, 0x16, 0x7d, 0xf0, 0x26,
0x2c, 0x9c, 0x57, 0xc4, 0xc4, 0xfe, 0x1c, 0x60, 0x37, 0xb4, 0x4f, 0x18,
0xb6, 0x44, 0xbc, 0x1e, 0x8a, 0x77, 0xf5, 0x5b, 0x7c, 0xbb, 0x3f, 0x5c,
0xaa, 0xad, 0x4a, 0xba, 0x14, 0x47, 0x31, 0x6c, 0xc5, 0x56, 0xdb, 0xa6,
0xa7, 0xbe, 0x71, 0x4b, 0xaf, 0xd2, 0x77, 0x8b, 0x58, 0xe1, 0xe7, 0x9a,
0x45, 0xd9, 0xfa, 0x26, 0x88, 0x67, 0xf6, 0x25, 0xca, 0x7d, 0xef, 0xda,
0xb5, 0xb7, 0xb4, 0x77, 0x21, 0xbe, 0x47, 0x4f, 0x98, 0xb4, 0x10, 0xb8,
0x9f, 0x60, 0x61, 0x4d, 0x9b, 0xe9, 0x6b, 0xa4, 0x10, 0xc5, 0xf6, 0xf5,
0x45, 0xd2, 0xd8, 0x7e, 0x9e, 0x24, 0xca, 0x76, 0x7e, 0x63, 0xa4, 0x1d,
0x06, 0x70, 0xe9, 0x5b, 0xf0, 0x30, 0x66, 0x37, 0x44, 0x84, 0xa4, 0xda,
0xb7, 0xb0, 0x96, 0x9e, 0x33, 0x7a, 0x40, 0xfb, 0x20, 0xb3, 0x37, 0x97,
0x99, 0x9e, 0xda, 0x6a, 0xa3, 0xf9, 0xf7, 0xba, 0x9c, 0xf1, 0x31, 0x35,
0x39, 0x09, 0x31, 0x6f, 0x07, 0xd9, 0x63, 0xe4, 0x5c, 0x08, 0x42, 0x95,
0xe5, 0x34, 0x45, 0x9c, 0xeb, 0x37, 0x1f, 0x9a, 0x04, 0x8b, 0x8f, 0x3e,
0x02, 0xbe, 0xf9, 0xf1, 0xfd, 0x54, 0xa6, 0x15, 0x3c, 0x79, 0x56, 0x0f,
0xa4, 0xe4, 0xf7, 0x0b, 0x0f, 0x64, 0x3e, 0x9f, 0xcd, 0xff, 0x1a, 0xd0,
0xc3, 0x40, 0x87, 0x47, 0xa7, 0xac, 0x45, 0xf7, 0x4f, 0xf8, 0x61, 0x8f,
0xef, 0x56, 0x97, 0x2c, 0x9f, 0x73, 0xfd, 0x22, 0xc3, 0xa5, 0xe4, 0x3e,
0x65, 0xde, 0x3f, 0x3c, 0xed, 0xad, 0x61, 0xcd, 0x45, 0x16, 0x5d, 0x42,
0xed, 0x5d, 0x90, 0xe1, 0x56, 0x39, 0xb3, 0xad, 0x17, 0x67, 0x10, 0x4c,
0x9c, 0xed, 0xbb, 0x26, 0x0a, 0xe0, 0x76, 0x04, 0x62, 0xe0, 0x3e, 0xb7,
0x6f, 0x46, 0x81, 0xce, 0x79, 0x34, 0x9b, 0x42, 0xe3, 0x37, 0x14, 0xf2,
0x13, 0xb3, 0x44, 0x3c, 0x60, 0xe4, 0xd9, 0xf5, 0x37, 0x5f, 0xd2, 0xdd,
0x5e, 0x04, 0x43, 0xe7, 0x87, 0x22, 0x45, 0x6f, 0xb9, 0x26, 0x54, 0x41,
0xac, 0x5a, 0xb5, 0xae, 0x23, 0xa8, 0xc8, 0xc1, 0xc4, 0x07, 0x77, 0x5c,
0x77, 0xe1, 0x1d, 0xf6, 0xb0, 0xb8, 0x46, 0x86, 0x41, 0x13, 0x27, 0xcc,
0x66, 0x73, 0x4e, 0xb9, 0x79, 0xfc, 0xd1, 0xe8, 0x6e, 0xb5, 0x02, 0x8d,
0x44, 0x18, 0x33, 0xf1, 0x2d, 0xc0, 0x3f, 0x49, 0xa4, 0x5e, 0x22, 0x77,
0x8e, 0xa3, 0xa1, 0x1c, 0x0e, 0xc5, 0xc9, 0x37, 0xd8, 0x05, 0xee, 0x0d,
0xdd, 0x65, 0xb7, 0x65, 0x82, 0x14, 0xe4, 0x52, 0x54, 0x2a, 0x2f, 0x6e,
0x73, 0xfb, 0xc3, 0xca, 0xca, 0x8a, 0x0e, 0x70, 0x84, 0x62, 0x7c, 0x4b,
0xe4, 0x7f, 0x65, 0xe5, 0x75, 0x39, 0x61, 0x7f, 0xff, 0x5a, 0x78, 0xa5,
0xf7, 0x2e, 0x2c, 0x35, 0xbf, 0xcd, 0xd9, 0x94, 0xf0, 0x0f, 0x6d, 0x12,
0x39, 0x44, 0x44, 0xef, 0x1f, 0x98, 0x6e, 0xeb, 0x76, 0xff, 0xcf, 0xb5,
0x8c, 0x91, 0x59, 0x17, 0x8a, 0x93, 0xe4, 0x36, 0xc9, 0x71, 0xb2, 0xe0,
0x5b, 0x54, 0xab, 0x56, 0xd3, 0x40, 0x97, 0x20, 0x4e, 0xc7, 0x48, 0x51,
0xb7, 0x49, 0xaf, 0x35, 0x3e, 0x9a, 0x92, 0x4d, 0x53, 0xad, 0x58, 0xca,
0x8f, 0x48, 0xce, 0x64, 0x22, 0xda, 0x1a, 0x3e, 0x32, 0x43, 0xed, 0xb3,
0xd2, 0xab, 0xeb, 0xdb, 0xd7, 0xd1, 0xb6, 0xaf, 0x87, 0x1d, 0x5e, 0x17,
0x1c, 0x15, 0x81, 0x8c, 0x96, 0x76, 0x82, 0x57, 0x96, 0x5b, 0xe1, 0xb7,
0xe8, 0x29, 0xcb, 0x2b, 0x2b, 0xa5, 0x23, 0x38, 0x76, 0x85, 0x21, 0x22,
0xe4, 0x76, 0x9e, 0xc3, 0x8d, 0xb0, 0x8d, 0x46, 0x47, 0xa4, 0x0f, 0x49,
0xe7, 0x92, 0xa1, 0x16, 0xf9, 0xc8, 0x4d, 0xb4, 0x3c, 0x78, 0xa7, 0xa4,
0x8d, 0xeb, 0xf5, 0x96, 0x0e, 0x53, 0xa0, 0x05, 0x1c, 0x09, 0xa5, 0x2e,
0x1f, 0x16, 0x81, 0x8a, 0x40, 0x62, 0xa6, 0x81, 0x2b, 0x19, 0x0d, 0xa9,
0xf6, 0x8c, 0xb5, 0x8f, 0xcf, 0x47, 0x7b, 0x1c, 0xe1, 0x61, 0x21, 0xc3,
0xeb, 0xf8, 0x43, 0xc4, 0x6a, 0x60, 0xd3, 0x38, 0x1e, 0x74, 0xae, 0xd2,
0xf1, 0x52, 0x85, 0xfc, 0x49, 0x65, 0xdb, 0x4f, 0xa5, 0x9d, 0xc5, 0x1a,
0xb0, 0x68, 0x41, 0x4c, 0xac, 0x56, 0x89, 0x4e, 0x68, 0x1b, 0x3d, 0xb1,
0xa8, 0x7b, 0x81, 0x01, 0xa8, 0x57, 0xa9, 0x30, 0x1b, 0x61, 0xdb, 0x70,
0x90, 0x4a, 0xa2, 0x34, 0xbb, 0x3a, 0xe6, 0x5d, 0x43, 0x72, 0x2e, 0xd9,
0xbe, 0xcc, 0xa5, 0xb4, 0x7d, 0x3b, 0x83, 0x2c, 0xfd, 0x06, 0x5b, 0x96,
0x1c, 0x64, 0x62, 0xf6, 0x14, 0xd1, 0x71, 0x3a, 0x14, 0xe5, 0x8a, 0x89,
0xc3, 0xd3, 0x33, 0x28, 0x2d, 0xc6, 0xb0, 0x97, 0xd8, 0x29, 0x0c, 0x8d,
0x69, 0x11, 0x33, 0x95, 0x38, 0xcd, 0x5e, 0x36, 0xf6, 0x39, 0x63, 0xa8,
0xe2, 0x34, 0x48, 0x51, 0xe4, 0x31, 0x49, 0xd4, 0x57, 0x4c, 0x8c, 0x4c,
0x02, 0x85, 0x88, 0x94, 0x0d, 0x0b, 0x10, 0x66, 0xad, 0x0d, 0x01, 0x45,
0xf6, 0xfe, 0x7a, 0x48, 0x49, 0x30, 0x2b, 0xf6, 0x3a, 0xd8, 0xc6, 0x81,
0x8c, 0x22, 0x14, 0x35, 0x92, 0xd4, 0x93, 0xbb, 0x62, 0x19, 0x66, 0xfe,
0x05, 0x89, 0x44, 0x39, 0x48, 0xb2, 0x1c, 0x23, 0xcd, 0xf2, 0xea, 0xd1,
0xa9, 0x80, 0xe9, 0x68, 0x18, 0x9c, 0x08, 0x44, 0x85, 0x26, 0xd6, 0x26,
0xe1, 0x52, 0xc6, 0x5f, 0x80, 0xd4, 0x51, 0x80, 0x9e, 0x31, 0xc2, 0x47,
0x26, 0x41, 0x83, 0x63, 0x6d, 0x20, 0x61, 0xd2, 0x17, 0xff, 0x90, 0x1c,
0xa7, 0x38, 0x23, 0x8f, 0xe6, 0xb5, 0x02, 0x61, 0xa1, 0xc0, 0x43, 0xc3,
0x85, 0xda, 0xd4, 0x76, 0xdd, 0xe5, 0x4e, 0xaa, 0xa3, 0x68, 0x9c, 0xba,
0xa0, 0xa7, 0xa8, 0x0e, 0x27, 0xea, 0x60, 0x94, 0xb6, 0x52, 0xb5, 0x21,
0xb7, 0x7b, 0x4f, 0x47, 0x13, 0x75, 0x5e, 0x5b, 0x0d, 0x71, 0xb0, 0x6c,
0x4c, 0xce, 0x13, 0xc7, 0xbc, 0xcb, 0xc1, 0xce, 0x52, 0xbc, 0xb4, 0x6b,
0x18, 0xb8, 0xc3, 0xea, 0xd1, 0xe4, 0x66, 0x0c, 0xbb, 0x4d, 0x66, 0xd5,
0x93, 0xe1, 0xb6, 0x51, 0xb9, 0x91, 0xe5, 0x5d, 0xad, 0xd5, 0x1d, 0xce,
0x9e, 0x66, 0x59, 0x2a, 0x03, 0x0c, 0x07, 0xfc, 0xb5, 0x57, 0x16, 0x31,
0x7d, 0x59, 0xd4, 0x36, 0xbd, 0x2f, 0xe2, 0x6c, 0xcb, 0x1b, 0xc5, 0x82,
0xf6, 0x48, 0x2f, 0xb7, 0xad, 0xb8, 0x6e, 0x79, 0x31, 0xce, 0x44, 0x84,
0xcd, 0x40, 0x49, 0x44, 0xd8, 0x46, 0x8a, 0x09, 0x72, 0x40, 0x75, 0xe6,
0x9e, 0xca, 0x11, 0x2e, 0x2d, 0x45, 0xf5, 0x8f, 0x38, 0xde, 0xa9, 0xc3,
0xd9, 0x66, 0xb5, 0xc5, 0x7d, 0x59, 0x07, 0xcf, 0x8c, 0x99, 0x3d, 0x4c,
0xb5, 0xa6, 0xda, 0x29, 0xc5, 0xc6, 0x59, 0x6f, 0xe8, 0xb8, 0xb8, 0x44,
0x4c, 0x89, 0x4b, 0x2f, 0x3a, 0x48, 0x68, 0x21, 0x07, 0x8d, 0xb5, 0xc5,
0xaa, 0xe3, 0x67, 0x09, 0x69, 0x7c, 0x1d, 0xd5, 0x2f, 0x2c, 0xcc, 0xae,
0x59, 0xb9, 0xd0, 0x9e, 0xc4, 0xca, 0xd7, 0xe4, 0xfe, 0x5f, 0x68, 0x2a,
0x92, 0x48, 0x39, 0xe0, 0xc0, 0x15, 0xc2, 0x18, 0x45, 0x72, 0x02, 0x61,
0xdc, 0x10, 0xfa, 0xc2, 0x5a, 0xd5, 0x31, 0x6f, 0x1b, 0x5e, 0x36, 0x99,
0x4d, 0x7a, 0x1d, 0x1f, 0x0a, 0x31, 0xf7, 0xbc, 0x02, 0xe1, 0x09, 0x02,
0x2e, 0x96, 0x5b, 0x9a, 0xe7, 0x66, 0xfa, 0x81, 0xda, 0xed, 0xef, 0x5e,
0x83, 0x1d, 0x4b, 0xea, 0x65, 0xe7, 0xe4, 0x5c, 0x85, 0xc0, 0x29, 0xad,
0x5c, 0xdc, 0xb5, 0xaa, 0x36, 0xa7, 0x46, 0x8f, 0x35, 0x42, 0xbb, 0x41,
0xcf, 0xcf, 0x7c, 0xfb, 0x37, 0x4b, 0x2b, 0x33, 0x44, 0xa1, 0x60, 0x91,
0x14, 0x23, 0x1d, 0xb7, 0xce, 0x1e, 0x70, 0x9c, 0xe6, 0xa1, 0xe4, 0x5e,
0xf4, 0xf4, 0x1a, 0x30, 0x19, 0x09, 0xc5, 0xa9, 0x7a, 0xaa, 0x6a, 0x32,
0xee, 0x1a, 0x84, 0x16, 0x3b, 0x30, 0xc8, 0x0c, 0x27, 0x1a, 0x36, 0xe1,
0x01, 0xf7, 0xf3, 0xbd, 0x38, 0xfa, 0x67, 0x57, 0xcb, 0x39, 0x50, 0xdd,
0xd2, 0x8a, 0xbc, 0xd0, 0x06, 0xe1, 0x37, 0xb6, 0xbc, 0x87, 0x06, 0x61,
0x70, 0x30, 0x3b, 0x41, 0xc3, 0x54, 0xaf, 0x5c, 0xf0, 0x82, 0xaa, 0x2c,
0x0e, 0x98, 0x79, 0xa8, 0xa2, 0x4c, 0xe5, 0x9b, 0xe0, 0xd2, 0x3a, 0x92,
0x7c, 0x23, 0xd5, 0x8f, 0xec, 0xd7, 0x5e, 0x29, 0xe7, 0x51, 0x19, 0xce,
0x5b, 0xac, 0x3d, 0xb5, 0xd6, 0x75, 0x80, 0xe2, 0x86, 0xf6, 0x04, 0xc3,
0x37, 0x64, 0x25, 0xf1, 0xf8, 0xcd, 0xc5, 0x58, 0x68, 0x99, 0x7b, 0x65,
0xb4, 0xc0, 0x78, 0x4f, 0x7b, 0x68, 0x4e, 0x02, 0x9b, 0x86, 0x10, 0x2a,
0x7a, 0x7a, 0xd2, 0x57, 0x25, 0x2e, 0x35, 0x09, 0x0b, 0xa5, 0x55, 0x41,
0xac, 0x1f, 0xc2, 0x22, 0x9b, 0x0b, 0x44, 0xd1, 0x7c, 0x92, 0xf4, 0x75,
0xfc, 0xe9, 0x57, 0xad, 0x1f, 0xb2, 0xaf, 0x51, 0x48, 0x1a, 0x4e, 0x07,
0xef, 0x63, 0x1e, 0x9e, 0xa9, 0xd7, 0x24, 0xb5, 0xdb, 0x29, 0xd3, 0xb0,
0x48, 0x3a, 0x28, 0x32, 0x32, 0x48, 0x82, 0x74, 0x8a, 0x3c, 0x85, 0xf7,
0x25, 0x33, 0xe3, 0xa6, 0x04, 0x8e, 0x89, 0x6b, 0x43, 0xad, 0x31, 0x8a,
0x4c, 0x1c, 0x77, 0xe3, 0xe6, 0xee, 0x62, 0x0d, 0x18, 0x99, 0xc4, 0x24,
0x6a, 0x26, 0x91, 0xc9, 0x36, 0xc1, 0x12, 0x69, 0x56, 0x9e, 0x87, 0xb7,
0x02, 0x2d, 0x1f, 0x4d, 0x4e, 0x05, 0xd6, 0x80, 0x39, 0x06, 0x23, 0x4e,
0x2d, 0x93, 0x30, 0xd5, 0xc6, 0x19, 0xe1, 0x3d, 0xfc, 0x52, 0x92, 0x8a,
0xc4, 0xf7, 0xf5, 0x1a, 0x30, 0x21, 0xa4, 0xa7, 0xf4, 0xb3, 0x08, 0xd9,
0x26, 0x16, 0xf2, 0xcf, 0x63, 0xb2, 0xa9, 0x1c, 0xb3, 0x8e, 0xbf, 0xbb,
0x3b, 0x74, 0x5b, 0x27, 0xd6, 0xe4, 0x43, 0xac, 0x59, 0x43, 0x35, 0xae,
0x2c, 0xa8, 0x98, 0x76, 0x38, 0xab, 0x0d, 0xde, 0x61, 0x2a, 0x8b, 0xa4,
0x8b, 0x85, 0x6e, 0x59, 0xc1, 0x30, 0x12, 0xf9, 0x5d, 0xa6, 0x21, 0xe6,
0x9e, 0x9e, 0x87, 0xc4, 0xa5, 0x59, 0x3e, 0xde, 0xf3, 0x94, 0xd1, 0x16,
0x87, 0x66, 0x06, 0x2e, 0x56, 0x0b, 0xd3, 0xa9, 0xe4, 0x97, 0xae, 0xdf,
0xd1, 0x91, 0x34, 0x52, 0x9a, 0x33, 0x9d, 0xd5, 0x26, 0xf9, 0x60, 0x41,
0x58, 0x5e, 0xdf, 0xc0, 0x6c, 0x34, 0x2e, 0x15, 0xa2, 0xfa, 0x9e, 0xf2,
0x13, 0x32, 0x9c, 0x18, 0x21, 0xe2, 0x34, 0x5c, 0x75, 0xa0, 0x73, 0x31,
0x8e, 0xa6, 0xdd, 0x2f, 0x65, 0x63, 0x74, 0x7a, 0x3a, 0xad, 0xcd, 0x7d,
0x51, 0x20, 0xbe, 0x9f, 0xa6, 0x3f, 0x11, 0x80, 0xbf, 0xd4, 0xa2, 0x33,
0x3c, 0x95, 0x89, 0xa1, 0x57, 0xa1, 0x74, 0xf2, 0x07, 0x62, 0x41, 0xa8,
0x5a, 0x01, 0x42, 0x92, 0xa9, 0x11, 0x6a, 0x47, 0xbc, 0x45, 0x2e, 0x46,
0x91, 0x51, 0x63, 0x04, 0x29, 0x7b, 0xf0, 0x30, 0xc8, 0x5c, 0x57, 0x1c,
0xf7, 0x2f, 0x0c, 0xc0, 0x2f, 0x88, 0x61, 0x79, 0xb6, 0x1d, 0x76, 0x4d,
0x16, 0x4e, 0xc9, 0x50, 0x5d, 0x70, 0x29, 0x12, 0x78, 0xfa, 0x71, 0xf4,
0x2b, 0x46, 0x48, 0x26, 0x15, 0x0c, 0x53, 0x3d, 0x0f, 0x8b, 0x20, 0x3e,
0x77, 0xf4, 0xbc, 0x4e, 0x53, 0x10, 0x35, 0x1e, 0xba, 0xcd, 0x73, 0x6c,
0x78, 0x1f, 0x87, 0x57, 0x99, 0x45, 0xc9, 0x7d, 0x34, 0x9a, 0xaf, 0x9c,
0x2e, 0xd4, 0x0a, 0x43, 0x13, 0x25, 0x16, 0x2e, 0xb5, 0x91, 0x6d, 0x12,
0x73, 0x4e, 0x14, 0x19, 0xde, 0x11, 0x0a, 0x71, 0xf6, 0xa2, 0xb8, 0x94,
0x4f, 0x53, 0xd2, 0x12, 0xc8, 0xa7, 0x31, 0xe9, 0x7b, 0x43, 0x0e, 0xf7,
0xef, 0x23, 0x50, 0xf0, 0x31, 0x67, 0x2c, 0x1c, 0x72, 0xbc, 0x50, 0x8e,
0xdf, 0x2a, 0xad, 0x94, 0x6a, 0xbd, 0x71, 0x32, 0x9f, 0xa6, 0x9f, 0x9b,
0xb5, 0x27, 0x02, 0x18, 0x47, 0x76, 0xe3, 0x77, 0x79, 0x39, 0xbd, 0xb4,
0x96, 0xb6, 0x48, 0xfc, 0x32, 0x86, 0x8a, 0xe1, 0x54, 0xdd, 0x3e, 0xed,
0xf4, 0x16, 0xeb, 0xa1, 0xa3, 0xb0, 0x98, 0x89, 0x2c, 0x9e, 0x78, 0x35,
0x98, 0x1f, 0x88, 0x68, 0xa2, 0xe3, 0xeb, 0x8c, 0x21, 0x12, 0x73, 0xb1,
0xa2, 0x69, 0xd8, 0x17, 0x84, 0x25, 0x11, 0x63, 0xac, 0x98, 0x74, 0x54,
0x28, 0x78, 0x4e, 0x0c, 0x46, 0xcc, 0x57, 0x67, 0x64, 0x7c, 0x92, 0x1a,
0xed, 0x0f, 0x76, 0x3c, 0x3c, 0x99, 0xd4, 0x86, 0x3b, 0xe0, 0x81, 0x77,
0x9b, 0x10, 0x9e, 0xfe, 0x1e, 0x72, 0x4a, 0x7f, 0xaa, 0x57, 0xb9, 0xb7,
0x62, 0x64, 0xd0, 0xd2, 0x3c, 0x9c, 0x96, 0x45, 0x8c, 0xb8, 0x45, 0x9d,
0xc2, 0x0a, 0x23, 0xb7, 0x98, 0x21, 0xbe, 0x6e, 0x20, 0x3e, 0xbc, 0xa1,
0xed, 0x4f, 0x1d, 0xc6, 0x48, 0x4f, 0x27, 0x7d, 0xb5, 0x36, 0x8c, 0x2c,
0xe5, 0xc2, 0x25, 0x8e, 0x08, 0x73, 0x5e, 0xdb, 0x04, 0x11, 0x77, 0x64,
0x7d, 0xdd, 0x2a, 0xa6, 0x5f, 0x91, 0x13, 0x55, 0x64, 0x97, 0xca, 0xe2,
0x36, 0x41, 0x34, 0x1e, 0xe0, 0x7c, 0x68, 0x08, 0x08, 0xe5, 0xc0, 0x56,
0xdc, 0xa9, 0xbc, 0x36, 0x1a, 0x5c, 0x9d, 0xd7, 0x46, 0x03, 0x48, 0xd3,
0x90, 0xe7, 0xe1, 0x2a, 0x42, 0x6d, 0xd9, 0x20, 0xf6, 0x68, 0x1e, 0x0e,
0x17, 0x69, 0x77, 0x46, 0x66, 0xf4, 0x4c, 0xfa, 0xac, 0x8e, 0x89, 0x62,
0x32, 0xbe, 0xae, 0x45, 0xaa, 0xa6, 0xe0, 0xa8, 0x58, 0x18, 0x1f, 0x16,
0x29, 0x97, 0x45, 0x56, 0xc6, 0x4d, 0xd0, 0x70, 0x75, 0xd5, 0x27, 0x27,
0xd4, 0x64, 0xee, 0x91, 0x20, 0x4f, 0xf6, 0xfa, 0x34, 0x1b, 0xaf, 0x4e,
0x4b, 0xfa, 0x4f, 0xab, 0xb6, 0xb4, 0x88, 0xa0, 0x99, 0xf5, 0xfb, 0xee,
0x4e, 0xd0, 0xe2, 0x50, 0xc5, 0xbc, 0x5b, 0x64, 0x96, 0x6a, 0x98, 0xcc,
0xa9, 0xdd, 0x13, 0xa9, 0x89, 0xdd, 0x70, 0x17, 0xbe, 0x45, 0x83, 0x73,
0x13, 0x23, 0x93, 0xd7, 0xe6, 0xb7, 0x93, 0xbe, 0xaf, 0xfc, 0xdf, 0xec,
0x7e, 0x39, 0x6d, 0xaf, 0x57, 0xb2, 0xa4, 0xd9, 0xe4, 0x4e, 0xe9, 0x7b,
0x51, 0xf4, 0xbc, 0xa4, 0x81, 0xb6, 0x48, 0xea, 0xe7, 0xec, 0xcb, 0x53,
0x09, 0x55, 0x1b, 0xb7, 0x90, 0x8b, 0xe1, 0xfb, 0x59, 0xdc, 0x76, 0x24,
0xaf, 0xcd, 0xf3, 0x49, 0x59, 0xec, 0x45, 0x9e, 0xdf, 0x2a, 0xb2, 0x9a,
0x0a, 0x91, 0x38, 0x5a, 0x64, 0xd0, 0xca, 0xfa, 0x3d, 0x1c, 0xa3, 0xb7,
0x67, 0x33, 0x66, 0xd2, 0xb9, 0x2c, 0x4c, 0x19, 0x3f, 0x42, 0x22, 0x35,
0x3b, 0x61, 0x29, 0xf5, 0x8f, 0xe7, 0xe3, 0x0e, 0xcb, 0x52, 0x29, 0x0b,
0x93, 0x38, 0x8d, 0xe3, 0x93, 0x64, 0xf3, 0x55, 0xe3, 0xeb, 0xad, 0x4e,
0xe7, 0x64, 0x0a, 0xed, 0x95, 0x12, 0x7d, 0x0c, 0xa7, 0xa6, 0x97, 0xe1,
0xb9, 0xf3, 0x0a, 0xe9, 0x2c, 0x35, 0x59, 0x89, 0x3a, 0x10, 0x05, 0xf7,
0x70, 0x31, 0x8f, 0xb5, 0x99, 0x13, 0xc0, 0xa4, 0xf1, 0x93, 0x45, 0x06,
0x2d, 0x59, 0xa8, 0xf9, 0x78, 0x1c, 0x6d, 0xaa, 0x96, 0x4e, 0xf4, 0x2a,
0x72, 0xd3, 0x3a, 0x05, 0xbe, 0xa9, 0x00, 0xe4, 0x50, 0xe8, 0x01, 0x96,
0x67, 0x66, 0x26, 0x10, 0x57, 0xcc, 0x44, 0x0e, 0x99, 0x62, 0xb5, 0xb1,
0x94, 0x92, 0xc2, 0x54, 0xfc, 0xe1, 0x33, 0x16, 0x8a, 0x48, 0x32, 0xa2,
0xa2, 0x44, 0x31, 0x1a, 0x4e, 0x3b, 0x1f, 0x0f, 0x7c, 0xaf, 0xf1, 0xf5,
0xc2, 0x7e, 0xd1, 0x8d, 0xa7, 0x97, 0x40, 0x94, 0xa5, 0x17, 0x44, 0xa8,
0x2e, 0x7f, 0x88, 0x10, 0xc0, 0x3e, 0xc7, 0xbf, 0x45, 0x94, 0x8a, 0x11,
0x37, 0xd2, 0xec, 0x3c, 0x0a, 0x17, 0x3e, 0x23, 0xb3, 0x2c, 0xb2, 0xa0,
0xd5, 0x85, 0x4b, 0x58, 0x6e, 0x72, 0xa4, 0xee, 0x49, 0xc5, 0x10, 0x02,
0x44, 0xc3, 0x72, 0xf6, 0x0c, 0xb2, 0x2a, 0x86, 0xa3, 0x45, 0x16, 0x74,
0x11, 0xb4, 0x67, 0x80, 0xf3, 0x5f, 0xbc, 0x21, 0xcb, 0x36, 0x3a, 0x14,
0x37, 0x1c, 0x8e, 0x8a, 0x88, 0xe9, 0x61, 0xb7, 0xa0, 0x5f, 0x91, 0x23,
0xec, 0x95, 0xf2, 0xbc, 0x89, 0x84, 0x09, 0x2f, 0x23, 0x34, 0xa4, 0x66,
0xa6, 0x10, 0xf7, 0x9d, 0x13, 0xe9, 0xe9, 0x46, 0xd6, 0x6c, 0x4b, 0x8c,
0xc6, 0x3d, 0xb7, 0xbd, 0x0d, 0x75, 0x71, 0x43, 0x8b, 0x9a, 0x5e, 0x6f,
0xb7, 0x38, 0x7b, 0xb8, 0x48, 0xa1, 0xd5, 0x79, 0xde, 0x8e, 0xd3, 0x48,
0x90, 0x4e, 0x53, 0x23, 0x84, 0x15, 0x85, 0xdc, 0xc4, 0x3e, 0xe2, 0xb5,
0x1b, 0x12, 0x02, 0xd4, 0x1d, 0x4b, 0x4f, 0xd8, 0xe1, 0x26, 0xfd, 0xf2,
0x6d, 0x31, 0xf7, 0x3f, 0xc2, 0xda, 0xdb, 0x4c, 0xe7, 0xe9, 0x9f, 0x74,
0x7a, 0x25, 0xd5, 0xbb, 0xc8, 0xf3, 0x4e, 0xd3, 0x9d, 0x26, 0xe7, 0xea,
0xe7, 0x92, 0xab, 0x4f, 0xd2, 0x7b, 0x95, 0xcb, 0x5a, 0x49, 0x96, 0x3e,
0xdf, 0x91, 0x64, 0x20, 0x49, 0x84, 0x16, 0xb3, 0xab, 0x00, 0xc8, 0x14,
0xec, 0x74, 0x3e, 0x14, 0x29, 0x7a, 0x2d, 0x74, 0xcf, 0x6e, 0x6f, 0x23,
0x36, 0xfa, 0xd0, 0x88, 0x20, 0x93, 0xe9, 0x6d, 0xf4, 0x46, 0x01, 0x31,
0xe0, 0x7a, 0x8b, 0x3c, 0x19, 0x08, 0x42, 0xcb, 0x73, 0x38, 0xfb, 0x92,
0x64, 0x69, 0x2b, 0x5d, 0x94, 0x23, 0x84, 0xe5, 0xc9, 0xa5, 0xe7, 0x20,
0x11, 0xf0, 0xcf, 0x24, 0x50, 0x75, 0x1f, 0x11, 0x6f, 0x1d, 0xb4, 0x3f,
0x34, 0x33, 0xb1, 0x5c, 0x5e, 0x63, 0xd4, 0x46, 0xb9, 0xde, 0x22, 0xcb,
0xb9, 0xde, 0xe2, 0x8c, 0xd3, 0x88, 0x93, 0xad, 0x31, 0x8a, 0x2b, 0x9f,
0x37, 0x49, 0x24, 0xa6, 0xa2, 0xe4, 0x44, 0xa0, 0x1e, 0x00, 0xaf, 0x88,
0x25, 0x3a, 0xe7, 0xe5, 0x17, 0x6d, 0xa5, 0xce, 0x4d, 0x39, 0x49, 0xa9,
0xbc, 0x66, 0xb7, 0x5b, 0x14, 0x23, 0xc8, 0x03, 0xd5, 0x85, 0x76, 0x9c,
0x6f, 0xb5, 0x39, 0x30, 0xc4, 0xfa, 0x17, 0x6b, 0xec, 0xfe, 0x46, 0x57,
0x07, 0x72, 0xc3, 0x6e, 0x87, 0x69, 0x77, 0x64, 0xd2, 0x9f, 0xcd, 0xd2,
0xd9, 0xdb, 0x3a, 0x40, 0x88, 0xed, 0x37, 0xdd, 0x6d, 0x03, 0xf1, 0x14,
0x40, 0x36, 0xc4, 0x98, 0x4d, 0x65, 0xc1, 0xd2, 0xd4, 0xcc, 0x6c, 0xf1,
0xea, 0xda, 0x19, 0x92, 0x34, 0x44, 0xc3, 0x5c, 0xaa, 0x82, 0x52, 0xa9,
0xb7, 0x78, 0x5e, 0x97, 0xf9, 0xec, 0xee, 0xea, 0x0c, 0x7c, 0x96, 0x21,
0x37, 0xae, 0x72, 0x40, 0x5b, 0xe2, 0xe0, 0x08, 0xe0, 0x68, 0x88, 0x37,
0x38, 0x60, 0x31, 0x2a, 0xa5, 0xb2, 0x19, 0xf5, 0xcf, 0x3c, 0x81, 0x9a,
0x19, 0xef, 0x82, 0xa9, 0x0a, 0x42, 0xbd, 0x05, 0xb9, 0x16, 0x63, 0xb2,
0xbc, 0xfd, 0x0d, 0x03, 0x70, 0x91, 0x59, 0x68, 0xf8, 0x0e, 0x52, 0x72,
0xf8, 0xe3, 0x03, 0xa1, 0xe0, 0xe7, 0x08, 0x52, 0xc1, 0xbc, 0xd9, 0x2e,
0x0c, 0xf1, 0xe9, 0x57, 0xd4, 0x3d, 0x75, 0x4d, 0xcd, 0x4c, 0xd5, 0x26,
0x84, 0x89, 0xa9, 0x7b, 0x3a, 0xe3, 0xf9, 0x2a, 0xd9, 0x1a, 0x8c, 0xe3,
0xb8, 0x6d, 0x6a, 0xd7, 0xc2, 0x2b, 0xbb, 0x27, 0x9b, 0x24, 0xbb, 0xa5,
0x37, 0x67, 0x06, 0x20, 0x07, 0x69, 0x42, 0x93, 0x6b, 0x81, 0x2c, 0x68,
0x3d, 0x14, 0x25, 0x4a, 0x0e, 0xc3, 0xa2, 0x66, 0xa6, 0xe6, 0x34, 0xfc,
0xad, 0xc9, 0x24, 0xd6, 0x75, 0xc0, 0x24, 0x69, 0x26, 0xa8, 0x5d, 0x4b,
0x3a, 0xa9, 0x2c, 0x1c, 0xa6, 0xbb, 0x6c, 0x69, 0x4e, 0x0d, 0x46, 0xc3,
0x7a, 0x6f, 0x8b, 0x29, 0x2a, 0xeb, 0xde, 0x64, 0x88, 0xef, 0x98, 0xac,
0x6f, 0xd1, 0x87, 0xd3, 0x93, 0xc5, 0x4f, 0xd3, 0x5b, 0xba, 0x66, 0x66,
0x87, 0xcc, 0x26, 0x92, 0x2c, 0xe3, 0x71, 0xce, 0x91, 0x28, 0x0e, 0x9b,
0x0c, 0x92, 0x3c, 0xce, 0x92, 0xe7, 0x75, 0xae, 0xd3, 0xcd, 0x45, 0x29,
0xd0, 0xd1, 0x42, 0x7e, 0xa4, 0x9d, 0xd7, 0x65, 0x21, 0x46, 0x12, 0xd7,
0x75, 0x4e, 0x34, 0x43, 0xfc, 0xe5, 0xc8, 0x54, 0x49, 0x2d, 0xca, 0x88,
0x40, 0x46, 0xb9, 0xdd, 0x8e, 0x8d, 0x8c, 0xa8, 0xa2, 0x3a, 0xcf, 0xe2,
0x38, 0xcd, 0x84, 0xec, 0xd2, 0xdb, 0x35, 0x24, 0x55, 0x5e, 0x6c, 0xba,
0x17, 0xe9, 0x45, 0x9f, 0x17, 0xf1, 0x1f, 0xad, 0xd9, 0x5c, 0xa3, 0x03,
0xd5, 0xb5, 0xb3, 0x92, 0x71, 0xf3, 0xbf, 0x2d, 0x49, 0xbf, 0xb4, 0xaa,
0x58, 0xc7, 0x07, 0xe8, 0x1f, 0xae, 0xe9, 0x2c, 0xc9, 0x8b, 0xfa, 0x13,
0xb9, 0x99, 0x45, 0x9a, 0xe6, 0x9a, 0x03, 0xff, 0x97, 0xeb, 0xbc, 0xc5,
0xb7, 0xe0, 0x79, 0x31, 0x98, 0x4c, 0xea, 0x97, 0xf2, 0x01, 0x2a, 0x11,
0x93, 0x84, 0xfc, 0x00, 0x3f, 0xde, 0xca, 0xf3, 0x38, 0xf9, 0x03, 0x94,
0x75, 0xa3, 0x3c, 0xfb, 0x5f, 0xfb, 0x91, 0xfd, 0xe2, 0x3e, 0xe2, 0xc5,
0x8f, 0xfe, 0xcf, 0x6b, 0x71, 0xfc, 0xed, 0xd8, 0xff, 0xfd, 0x58, 0xd9,
0xdb, 0xfb, 0x88, 0x1f, 0x1f, 0x7f, 0xff, 0xdb, 0xf1, 0xef, 0xa3, 0x90,
0x3b, 0x91, 0xca, 0x6f, 0x2c, 0xc1, 0x48, 0x3d, 0x37, 0xda, 0x1f, 0x44,
0x67, 0x72, 0x29, 0x7e, 0x6f, 0xb3, 0x7f, 0x58, 0x53, 0xb1, 0x9f, 0x0d,
0xc6, 0x83, 0xc9, 0xaf, 0x2f, 0xec, 0x71, 0xcd, 0x2e, 0xa2, 0xd3, 0x08,
0xdb, 0x6c, 0x46, 0x28, 0x53, 0xe6, 0x3a, 0x65, 0xf5, 0x23, 0xac, 0xab,
0xa8, 0xdf, 0xb9, 0xb3, 0x7f, 0x87, 0x0c, 0xb6, 0xff, 0x85, 0xa0, 0x52,
0x1f, 0xcb, 0x71, 0xf5, 0x6d, 0xda, 0xdf, 0x7f, 0x30, 0xfb, 0x37, 0xb8,
0xc2, 0xe3, 0x9a, 0xe6, 0xcc, 0xf3, 0xbc, 0xd8, 0xe7, 0x52, 0x69, 0xda,
0xc7, 0x2d, 0xbc, 0xad, 0xef, 0xfd, 0xdd, 0xbd, 0xfe, 0x60, 0x6f, 0x90,
0x8d, 0xb3, 0x4d, 0x9d, 0x8b, 0x11, 0xb5, 0xf3, 0xad, 0xdb, 0x7f, 0x67,
0x92, 0x01, 0x5a, 0xe2, 0x63, 0x71, 0x0f, 0x59, 0x05, 0x28, 0x09, 0x76,
0x6c, 0xae, 0x73, 0x46, 0xe9, 0x32, 0x4a, 0x5e, 0x51, 0x27, 0x6a, 0x3b,
0xfc, 0x15, 0xe7, 0x36, 0xd8, 0x52, 0xf2, 0xcc, 0xb5, 0xb5, 0x0d, 0xd5,
0xf0, 0x3d, 0xa2, 0x96, 0xae, 0xde, 0x96, 0xdf, 0x1c, 0xe0, 0xa2, 0xfc,
0xc1, 0x37, 0x5f, 0xe8, 0xb7, 0xa3, 0x36, 0x5d, 0x63, 0xf3, 0x3c, 0x8c,
0x50, 0x07, 0x3c, 0x69, 0xfe, 0x97, 0xbd, 0x88, 0x73, 0x87, 0xa2, 0x28,
0xef, 0x2b, 0x2e, 0xe3, 0x46, 0x2d, 0xba, 0x17, 0x45, 0xfd, 0x58, 0x49,
0x19, 0xba, 0x27, 0x15, 0xc1, 0xb4, 0xa7, 0x74, 0x45, 0xb3, 0x2e, 0xde,
0x05, 0x1a, 0xfe, 0x69, 0x01, 0x45, 0x76, 0x83, 0xc2, 0x99, 0x28, 0xf0,
0x46, 0x71, 0x38, 0xaa, 0xd5, 0x95, 0x7f, 0xdb, 0x9a, 0x8c, 0x6f, 0x6f,
0xed, 0x7c, 0x0d, 0x1b, 0x7f, 0x00, 0x00, 0x02, 0xa3, 0x49, 0x44, 0x41,
0x54, 0xe5, 0x09, 0xd6, 0x80, 0xcf, 0xa0, 0xa0, 0xfe, 0xd2, 0xe4, 0xd5,
0x4b, 0x63, 0xfe, 0xf1, 0x04, 0xdd, 0x2b, 0x2e, 0xc6, 0xf6, 0x95, 0xfe,
0x07, 0x80, 0x3e, 0xd7, 0x3f, 0xa3, 0xbe, 0xd7, 0xe7, 0x0a, 0x66, 0x2e,
0xf5, 0x96, 0x82, 0x61, 0x58, 0x45, 0xaa, 0xa1, 0x34, 0x70, 0x1e, 0x1c,
0x7c, 0xe3, 0xf8, 0x52, 0xe5, 0x1f, 0xfb, 0x97, 0xfa, 0x4f, 0x0c, 0xfa,
0x5b, 0xf1, 0x60, 0xc0, 0xb5, 0xdc, 0x9e, 0xd4, 0x72, 0x4f, 0xf0, 0xab,
0x08, 0x19, 0xff, 0xb2, 0x02, 0x17, 0xe7, 0x47, 0x52, 0xa1, 0xad, 0xa4,
0x80, 0x5d, 0x8a, 0xef, 0x95, 0x20, 0x67, 0xb8, 0x4c, 0x1e, 0xcf, 0x96,
0x8d, 0xa8, 0x9f, 0xe0, 0x27, 0x14, 0x18, 0x16, 0x8d, 0x12, 0x4e, 0xb2,
0x51, 0xb5, 0x1e, 0xeb, 0x5f, 0x6a, 0x18, 0xfc, 0xc9, 0x3f, 0xda, 0xdb,
0x22, 0x63, 0x1b, 0x34, 0x5c, 0xd5, 0xd5, 0xea, 0x99, 0xe2, 0x88, 0x26,
0x8d, 0x82, 0x93, 0xc4, 0x5c, 0xf3, 0x8c, 0x1a, 0x0c, 0xc6, 0x87, 0x5e,
0xb7, 0xe3, 0x46, 0x4c, 0xf2, 0x36, 0x96, 0x72, 0x76, 0xc7, 0xa9, 0xf1,
0xb2, 0xa3, 0x2f, 0x15, 0xee, 0xfc, 0x63, 0x05, 0xc4, 0xb4, 0xfc, 0x83,
0x04, 0x3c, 0x16, 0x0e, 0xf9, 0x83, 0x4c, 0x67, 0xba, 0x84, 0xf6, 0x1b,
0x93, 0x67, 0x5e, 0x18, 0xdc, 0x1e, 0x6c, 0xc1, 0xc4, 0xa8, 0xa9, 0x84,
0xeb, 0xf1, 0x31, 0xdc, 0xf8, 0x6d, 0x0c, 0xd2, 0x8b, 0x19, 0x50, 0xa1,
0xcc, 0x1c, 0x0f, 0x44, 0xc7, 0x7d, 0x86, 0x8c, 0xf2, 0xf3, 0x08, 0x55,
0xf7, 0x31, 0x63, 0x07, 0x35, 0x63, 0x2e, 0x6e, 0x17, 0x6c, 0x5c, 0x88,
0x0f, 0xba, 0xe1, 0x0f, 0xad, 0xcf, 0x87, 0x70, 0x36, 0xd7, 0xe3, 0xff,
0xe5, 0xed, 0x71, 0x0e, 0x84, 0x4f, 0xa8, 0xf6, 0xd6, 0x33, 0x2f, 0xa0,
0xec, 0x49, 0xa1, 0x93, 0xf0, 0xf8, 0x7d, 0xa9, 0xab, 0xa7, 0x8e, 0x73,
0xc9, 0x3a, 0x33, 0x1e, 0xa1, 0xe3, 0xea, 0x7a, 0xfe, 0x73, 0xb8, 0x46,
0xdb, 0x76, 0x6c, 0x5d, 0x8e, 0xee, 0x68, 0x82, 0x62, 0x7d, 0x80, 0xdd,
0x40, 0x2e, 0xc7, 0x07, 0x1d, 0xe1, 0xdc, 0xf3, 0x2f, 0x13, 0x6c, 0xbd,
0xf7, 0x24, 0xc9, 0xb6, 0xdb, 0x2c, 0x4b, 0xb7, 0xfe, 0xf4, 0x89, 0xbf,
0xd0, 0xbf, 0x73, 0xc1, 0x7c, 0x29, 0x95, 0xf4, 0x5c, 0x56, 0x1f, 0xe9,
0xea, 0x75, 0x70, 0xe1, 0xbf, 0x43, 0xc1, 0x3a, 0xea, 0xd1, 0x6d, 0x29,
0x4c, 0x37, 0xf5, 0xe9, 0xf8, 0x8b, 0xa4, 0xb2, 0x9d, 0xab, 0xf8, 0x95,
0x1c, 0xd0, 0x97, 0xe9, 0xf2, 0x7e, 0xa5, 0x06, 0xbf, 0xf7, 0xc2, 0x24,
0xbe, 0x0d, 0x1a, 0x36, 0x6e, 0x9f, 0x49, 0x94, 0xfc, 0x94, 0x00, 0x43,
0xa8, 0xe9, 0x32, 0xfa, 0xda, 0xaa, 0x2e, 0x3b, 0xd7, 0x0c, 0xa9, 0x3c,
0xa9, 0xbd, 0xe7, 0x5f, 0x1c, 0x90, 0xda, 0x7c, 0xa9, 0xbc, 0x77, 0x9c,
0x3a, 0x7d, 0xef, 0x99, 0x92, 0x7d, 0x39, 0x8c, 0x6b, 0xa4, 0x74, 0x5d,
0x58, 0x9a, 0xe8, 0x6b, 0x5d, 0xca, 0x39, 0xbd, 0x25, 0xab, 0x5e, 0x7a,
0x87, 0xa7, 0x94, 0x5a, 0xd4, 0xd5, 0x5b, 0x5c, 0xb3, 0xee, 0xc9, 0x2f,
0x08, 0xb0, 0x7f, 0x45, 0x7f, 0x9b, 0x9e, 0xd4, 0xe7, 0xa3, 0xe4, 0x5e,
0x8a, 0xd4, 0xeb, 0xb6, 0x9c, 0x61, 0xae, 0xb3, 0x51, 0xaa, 0xee, 0x78,
0xbc, 0x61, 0x2b, 0x19, 0x8a, 0x57, 0x6d, 0x7d, 0x0b, 0xff, 0x3d, 0xeb,
0x2f, 0xff, 0x04, 0x08, 0xeb, 0x7f, 0x3f, 0x53, 0x4c, 0x33, 0x5b, 0xba,
0x42, 0x10, 0xad, 0x55, 0xfe, 0xe5, 0x00, 0xa7, 0xf8, 0xc5, 0x01, 0x25,
0xc4, 0x94, 0x7a, 0xfb, 0x1a, 0xd7, 0xa5, 0xf3, 0x5b, 0xf6, 0x79, 0x20,
0xf4, 0xc9, 0x36, 0xa2, 0x4e, 0x1a, 0xab, 0x5d, 0xaa, 0xcd, 0xa7, 0xe3,
0xed, 0x77, 0x9e, 0x26, 0x84, 0xcb, 0x6b, 0xab, 0x7d, 0xaf, 0x5e, 0x57,
0x42, 0x90, 0xfa, 0x45, 0xcf, 0xbe, 0xa8, 0xab, 0xf0, 0x41, 0xa4, 0x8b,
0xb6, 0xe9, 0xbc, 0x54, 0xd8, 0xcb, 0x4f, 0x09, 0xd8, 0xb6, 0xfc, 0xe8,
0x40, 0x69, 0x0f, 0xa7, 0x13, 0x14, 0x5b, 0x2e, 0xb4, 0xbf, 0x23, 0xe7,
0x73, 0x99, 0xbe, 0x9c, 0xe2, 0x59, 0x75, 0xfb, 0x5f, 0x7c, 0xf3, 0xc2,
0x7f, 0x23, 0xbb, 0xd4, 0xe7, 0x8e, 0x58, 0xf8, 0x3d, 0x01, 0xfe, 0xa9,
0x84, 0x0a, 0xf7, 0xcb, 0xb2, 0xf5, 0xaf, 0x26, 0x30, 0x18, 0x4b, 0xff,
0xde, 0x40, 0xcd, 0x36, 0x67, 0xe9, 0x4f, 0x4b, 0x7f, 0x4f, 0x97, 0x15,
0xdf, 0x32, 0x66, 0x73, 0x05, 0x37, 0xf3, 0xfb, 0x0b, 0xaa, 0x5a, 0x25,
0x59, 0xda, 0xe4, 0xdf, 0x05, 0xd0, 0x87, 0xaa, 0xa5, 0x7f, 0xb2, 0x5d,
0x97, 0xcd, 0xaa, 0x9c, 0x53, 0x97, 0x32, 0x7d, 0x54, 0xd9, 0x57, 0xab,
0xe6, 0x7e, 0xf5, 0x7a, 0x55, 0x4e, 0xae, 0xf3, 0xf1, 0x13, 0x37, 0xaa,
0x9a, 0x6d, 0xfe, 0xb1, 0x85, 0x57, 0x97, 0xfe, 0xbf, 0xb7, 0xff, 0x0b,
0xc7, 0x71, 0xf6, 0x9d, 0xa2, 0x18, 0x16, 0x16, 0x00, 0x00, 0x00, 0x00,
0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
unsigned int dosbox224x163_png_len = 8996;

828
include/dosbox224x186.h Normal file
View File

@ -0,0 +1,828 @@
unsigned char dosbox224x186_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xba,
0x04, 0x03, 0x00, 0x00, 0x00, 0x45, 0x16, 0x5c, 0x43, 0x00, 0x00, 0x00,
0x30, 0x50, 0x4c, 0x54, 0x45, 0x21, 0x12, 0x04, 0x49, 0x25, 0x07, 0x6f,
0x39, 0x10, 0x5b, 0x46, 0x20, 0x94, 0x50, 0x1c, 0x7f, 0x5d, 0x12, 0x71,
0x5e, 0x34, 0xb8, 0x66, 0x27, 0x8b, 0x75, 0x42, 0x9f, 0x79, 0x1c, 0x9d,
0x87, 0x50, 0xdd, 0x81, 0x36, 0xb1, 0x9a, 0x5e, 0xcb, 0x9a, 0x17, 0xe9,
0xbd, 0x28, 0xfb, 0xd3, 0x36, 0x57, 0x57, 0xae, 0xdc, 0x00, 0x00, 0x20,
0x00, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0xbd, 0x7c, 0x6f, 0x8c, 0x1b,
0xe7, 0x79, 0x27, 0x29, 0x29, 0xaa, 0x5d, 0xdc, 0x07, 0x0e, 0x77, 0x1d,
0x43, 0x38, 0xb8, 0x30, 0xc7, 0xe3, 0x30, 0x39, 0xf5, 0x5a, 0xaf, 0xa7,
0x22, 0xa4, 0xc4, 0x3a, 0x44, 0x83, 0x17, 0x19, 0xbb, 0x6c, 0xef, 0x2e,
0xd9, 0xd3, 0x56, 0xfa, 0xa0, 0x14, 0x09, 0xeb, 0x29, 0xbd, 0x27, 0x03,
0xf6, 0x62, 0x80, 0x81, 0x41, 0x04, 0x70, 0x6e, 0x1b, 0xde, 0x80, 0xb5,
0x0f, 0x28, 0x52, 0xdb, 0x92, 0xd0, 0x55, 0x13, 0xa8, 0x58, 0x33, 0xbc,
0xbd, 0xa0, 0x15, 0x88, 0x9b, 0x0f, 0x84, 0x81, 0xe0, 0x9c, 0x48, 0x5b,
0x7a, 0xeb, 0xa2, 0x08, 0x02, 0x58, 0x86, 0x77, 0xfd, 0xa1, 0xb8, 0x83,
0x65, 0x68, 0x77, 0x3f, 0x19, 0xb0, 0x72, 0xd2, 0xee, 0x3d, 0xbf, 0xe7,
0x79, 0xde, 0xe1, 0x70, 0xed, 0xfb, 0xda, 0xd9, 0xe5, 0xbf, 0xe1, 0x70,
0xe6, 0xfd, 0xcd, 0xf3, 0xff, 0xcf, 0xfb, 0x96, 0x4a, 0xff, 0xe2, 0x5b,
0x33, 0xcb, 0xb2, 0x84, 0xfe, 0x6f, 0xc6, 0x49, 0xf2, 0xe6, 0x9b, 0x49,
0x92, 0x8d, 0xb2, 0x6c, 0x94, 0xdc, 0xcc, 0x64, 0x37, 0x3e, 0x65, 0xfc,
0x32, 0x1a, 0xf1, 0xdb, 0x84, 0x8e, 0x88, 0x69, 0x33, 0x31, 0x1d, 0xcf,
0x47, 0xd0, 0x97, 0xa3, 0x24, 0x89, 0xe5, 0xad, 0x1c, 0x91, 0xf0, 0x13,
0x5e, 0x62, 0x43, 0x5f, 0xc5, 0x89, 0x6e, 0x37, 0x87, 0x95, 0x52, 0xe9,
0xc8, 0x28, 0x0c, 0xc3, 0x24, 0x31, 0xa1, 0xf1, 0xe8, 0x61, 0x42, 0xf9,
0x2a, 0x4c, 0x3a, 0x78, 0x4a, 0xe8, 0x85, 0xde, 0xd0, 0xb7, 0x49, 0x18,
0xf2, 0x71, 0x78, 0x32, 0x61, 0xe8, 0x79, 0x2e, 0x8e, 0x0f, 0xc3, 0x4e,
0x22, 0x5f, 0x19, 0x8f, 0xbf, 0xe5, 0x03, 0xe8, 0xc7, 0x21, 0xff, 0xc2,
0xd0, 0xe6, 0x19, 0xcf, 0xf3, 0xf0, 0x2d, 0xbd, 0xef, 0x9c, 0x29, 0x95,
0xca, 0x95, 0xe6, 0x4d, 0x1a, 0xc3, 0x28, 0xc3, 0xc0, 0x79, 0x9c, 0x02,
0x64, 0x68, 0xd1, 0x25, 0x8c, 0x2c, 0x19, 0x65, 0x0c, 0x29, 0xd3, 0xe1,
0x03, 0x22, 0x83, 0xc4, 0x0f, 0x13, 0x05, 0x3b, 0xe2, 0x5b, 0xc5, 0xb7,
0x26, 0xe1, 0x63, 0x68, 0x3f, 0x1f, 0x87, 0xf3, 0x1a, 0x13, 0x77, 0xae,
0x7f, 0xf1, 0x67, 0xa5, 0xb2, 0x7b, 0x68, 0x94, 0x18, 0x02, 0x8e, 0x31,
0x75, 0x0c, 0x46, 0x37, 0xa2, 0x51, 0x63, 0xa8, 0x1d, 0xc6, 0xda, 0xe9,
0x8c, 0xe8, 0x81, 0x77, 0x06, 0x77, 0x80, 0x1e, 0x3c, 0x70, 0x3c, 0x7b,
0xf2, 0xea, 0x79, 0xfc, 0x33, 0xfe, 0x61, 0x92, 0xdf, 0x06, 0x1c, 0x47,
0x88, 0xe9, 0xd4, 0xa1, 0x1e, 0xd5, 0x19, 0xd5, 0xc2, 0x17, 0x4a, 0xe5,
0xd9, 0x17, 0x1f, 0x26, 0x0c, 0x20, 0x82, 0x22, 0x94, 0x21, 0xf2, 0xfb,
0x91, 0x50, 0x84, 0xf6, 0xf0, 0x68, 0x31, 0x66, 0xda, 0x6f, 0x02, 0xb3,
0x64, 0x18, 0x20, 0xe1, 0x34, 0x71, 0x08, 0x80, 0x38, 0x36, 0x89, 0x2d,
0xe1, 0x80, 0x78, 0x14, 0x67, 0x42, 0xc0, 0xc9, 0xcd, 0xf8, 0xbb, 0xe3,
0x7f, 0xf7, 0x72, 0xa9, 0x7c, 0x28, 0xa9, 0xfc, 0x76, 0x16, 0x86, 0xf4,
0xd3, 0xc4, 0xd2, 0x83, 0x00, 0x01, 0x2e, 0x93, 0xb3, 0xc3, 0x04, 0xa4,
0x47, 0xc0, 0xc3, 0xa6, 0xbd, 0x20, 0xb6, 0xd0, 0x44, 0x08, 0xd5, 0x09,
0x63, 0x00, 0xec, 0x24, 0x31, 0x28, 0x9a, 0x30, 0xb6, 0x24, 0xe4, 0xcf,
0x46, 0x8f, 0x21, 0x78, 0xb1, 0x69, 0x5e, 0x3f, 0x3a, 0x5a, 0xfa, 0x7a,
0xa9, 0x5c, 0x35, 0x3f, 0xaf, 0x8e, 0x98, 0x2c, 0x00, 0x92, 0x93, 0x29,
0xce, 0x12, 0x0b, 0x55, 0x18, 0x73, 0x49, 0x46, 0x8b, 0xdd, 0x18, 0xb2,
0x01, 0x3a, 0x1a, 0xa4, 0xec, 0x8b, 0x2d, 0x67, 0x82, 0x6a, 0xc9, 0x5f,
0xf2, 0x27, 0xda, 0x1b, 0xe0, 0x46, 0x30, 0xbd, 0x09, 0x61, 0x56, 0xeb,
0x64, 0x31, 0xdd, 0xd2, 0xaa, 0xdb, 0x7c, 0xf1, 0x37, 0x46, 0xf9, 0xbd,
0x67, 0xe6, 0x0a, 0x71, 0x9b, 0x18, 0x8f, 0xee, 0xa2, 0xaf, 0x62, 0xec,
0x35, 0x44, 0x13, 0x97, 0xf0, 0x79, 0xae, 0x07, 0x98, 0x9e, 0x57, 0x0f,
0x19, 0xaa, 0xb0, 0xb0, 0x61, 0x6e, 0xf5, 0x8c, 0xf0, 0x34, 0x83, 0x4b,
0x8c, 0xa5, 0x7c, 0xe7, 0xcc, 0xbf, 0x1e, 0x85, 0x84, 0xb0, 0x34, 0x4b,
0xb7, 0xf2, 0xd1, 0xa6, 0x02, 0x49, 0x94, 0x52, 0x06, 0x84, 0x22, 0xea,
0xf0, 0x1e, 0x50, 0x97, 0x06, 0x1b, 0xd0, 0x5e, 0x7a, 0x36, 0x01, 0x6f,
0xc0, 0x08, 0x88, 0x01, 0x76, 0x84, 0x84, 0x3a, 0x8c, 0x33, 0x06, 0xce,
0x3f, 0x65, 0x42, 0xe2, 0x41, 0x67, 0x61, 0x96, 0x36, 0x9d, 0x61, 0xf5,
0x9d, 0x2c, 0xbb, 0x8e, 0x5b, 0xea, 0x85, 0xf5, 0xff, 0x79, 0x64, 0x24,
0x5c, 0x18, 0xf2, 0xb0, 0x4d, 0x22, 0x72, 0x15, 0x1a, 0x7d, 0xd4, 0x79,
0xaf, 0x7c, 0xc7, 0x20, 0xbc, 0xc0, 0x73, 0x5d, 0x96, 0x2f, 0xcf, 0xad,
0x0b, 0x55, 0x43, 0x23, 0x58, 0x3d, 0x65, 0x63, 0xa2, 0x6c, 0x82, 0x3b,
0x61, 0x48, 0x66, 0xe9, 0x14, 0xa3, 0xda, 0x71, 0xba, 0x69, 0x01, 0x2e,
0x18, 0x24, 0xe1, 0xe8, 0xc7, 0x5f, 0x1b, 0xc5, 0xc2, 0x74, 0x46, 0x99,
0x2f, 0x70, 0x65, 0xf8, 0xbc, 0x87, 0xa0, 0x3d, 0x19, 0x04, 0xae, 0xeb,
0x2a, 0xac, 0x9a, 0x5b, 0x73, 0xdd, 0xc0, 0x7d, 0xd2, 0xa5, 0xef, 0x41,
0xa7, 0x24, 0xd0, 0x9f, 0xc5, 0xb1, 0x7c, 0x5e, 0x0a, 0xf0, 0x29, 0xf0,
0x70, 0x43, 0xf8, 0x14, 0x9d, 0xeb, 0xb3, 0xa3, 0xe1, 0x28, 0x59, 0xfa,
0x11, 0x71, 0xa9, 0x6b, 0xea, 0x49, 0x52, 0x6d, 0x26, 0x22, 0x61, 0x3c,
0x6c, 0x26, 0x12, 0xfe, 0xb0, 0xf1, 0xb3, 0xa1, 0xab, 0x55, 0xab, 0xa4,
0x5e, 0xe8, 0xd5, 0xc3, 0xdb, 0x2a, 0x9e, 0x18, 0xa5, 0xeb, 0xa9, 0x32,
0xa1, 0x4f, 0x81, 0x27, 0xc8, 0x15, 0xbc, 0xfe, 0xda, 0xad, 0xd6, 0x87,
0xd5, 0x4e, 0x33, 0xee, 0x00, 0x61, 0xc9, 0x71, 0x69, 0x60, 0xcd, 0x9f,
0xcf, 0xbe, 0x13, 0x27, 0x43, 0x26, 0x9f, 0x0c, 0x89, 0x98, 0x03, 0xe4,
0x71, 0xf9, 0x19, 0x9b, 0x8b, 0x8d, 0x5f, 0xe8, 0x51, 0xab, 0x11, 0xc8,
0x9a, 0x43, 0x40, 0x69, 0x0f, 0xc3, 0xc4, 0x21, 0x46, 0x8f, 0x0c, 0xe4,
0x37, 0x42, 0x60, 0xa1, 0xe9, 0xd7, 0xff, 0xf3, 0x10, 0xdc, 0x71, 0x86,
0xb8, 0xf4, 0x90, 0x09, 0xeb, 0x71, 0xb3, 0xf3, 0xe2, 0xf1, 0x0c, 0xea,
0xc0, 0x65, 0x05, 0x02, 0x10, 0xbc, 0xd9, 0x57, 0x97, 0x01, 0xd2, 0xbf,
0x03, 0x6c, 0x8e, 0xc3, 0xaf, 0x55, 0xde, 0x43, 0x30, 0x8d, 0x5b, 0x05,
0xc0, 0x2a, 0x1f, 0xe6, 0xd0, 0x4e, 0xdc, 0x8c, 0x2a, 0x23, 0xa5, 0x9f,
0xd1, 0xf3, 0xf1, 0x33, 0x47, 0xb2, 0x98, 0x10, 0x76, 0x84, 0x86, 0x26,
0x1c, 0x36, 0x47, 0xa3, 0xda, 0x9f, 0xc7, 0x81, 0x1d, 0x5a, 0x40, 0xd4,
0xe1, 0xb1, 0xf3, 0x68, 0x83, 0xa0, 0x86, 0xcf, 0x2e, 0x08, 0x07, 0x64,
0xfc, 0x0a, 0x90, 0x35, 0xa5, 0xa5, 0x09, 0xbe, 0x0b, 0xe8, 0xf4, 0x4c,
0x5f, 0x38, 0x0e, 0x7f, 0x1d, 0xf0, 0x9d, 0xf8, 0x16, 0x9d, 0xa9, 0xe6,
0x7a, 0xd7, 0x9d, 0x24, 0xb9, 0xde, 0x19, 0x26, 0xe1, 0xd2, 0x7f, 0x2c,
0x95, 0x89, 0x4d, 0x3d, 0xa2, 0x62, 0x73, 0x78, 0xa4, 0x63, 0xbc, 0x2a,
0xee, 0x79, 0xc0, 0xf4, 0x50, 0x54, 0x0e, 0x88, 0xe5, 0x02, 0x11, 0xc1,
0x92, 0x8d, 0x7e, 0xa2, 0x6f, 0xe8, 0xa1, 0x48, 0x71, 0x04, 0x1d, 0xe7,
0x28, 0x6c, 0xfe, 0x8d, 0x3b, 0xab, 0xe4, 0x0e, 0x1f, 0x7d, 0x38, 0xa8,
0x43, 0xef, 0x78, 0x35, 0xa6, 0x21, 0xd8, 0x8a, 0xcc, 0xc1, 0xcb, 0xf5,
0xeb, 0xae, 0x0e, 0xda, 0x75, 0x9f, 0x54, 0x1a, 0x09, 0x8c, 0x9a, 0x7b,
0xc6, 0x0d, 0x6a, 0xb5, 0xaf, 0xdc, 0xd2, 0x6d, 0x53, 0x5f, 0xbf, 0x49,
0x57, 0x94, 0x5f, 0x7c, 0x4b, 0x0e, 0x05, 0x38, 0x87, 0x7f, 0xe7, 0xca,
0x0e, 0x7c, 0xef, 0x9d, 0x39, 0x14, 0x07, 0xe1, 0x10, 0x32, 0x1e, 0x10,
0x0d, 0xcb, 0xb3, 0xac, 0x12, 0x9a, 0x9d, 0xcc, 0x79, 0xfa, 0x1b, 0x8f,
0xc9, 0x46, 0x23, 0x7c, 0xcc, 0x7d, 0xec, 0xc9, 0xc7, 0xe8, 0xe5, 0x31,
0x1e, 0x6c, 0x95, 0x3e, 0x3b, 0xe5, 0x47, 0xf6, 0x0f, 0x6c, 0x3b, 0xbf,
0x72, 0xcb, 0x00, 0x5e, 0xa5, 0xdf, 0xcc, 0x00, 0x1a, 0x1d, 0x5e, 0xc5,
0xd3, 0x63, 0x42, 0x5c, 0x7a, 0x9d, 0xa1, 0x53, 0x94, 0x20, 0xc3, 0xb0,
0x9c, 0xc6, 0x25, 0x1a, 0x3a, 0xae, 0xcb, 0x36, 0x62, 0x98, 0xbc, 0x58,
0xae, 0x54, 0x4a, 0x15, 0x3c, 0xe8, 0x99, 0x7c, 0x01, 0x7e, 0xa7, 0xcf,
0xbc, 0x3d, 0xb8, 0x73, 0xf0, 0x8a, 0xfb, 0xf7, 0xbf, 0x39, 0xe5, 0x3e,
0xf0, 0x91, 0x95, 0xca, 0x81, 0xcf, 0x87, 0xdc, 0xdf, 0x8b, 0xe3, 0x10,
0xe6, 0x3f, 0x60, 0x5d, 0x6a, 0x3c, 0x98, 0x78, 0xe3, 0x86, 0x87, 0xfd,
0xc3, 0x87, 0xf1, 0x68, 0x44, 0x8d, 0x28, 0x8a, 0x8e, 0xea, 0x23, 0x92,
0xd7, 0x86, 0xef, 0x3f, 0xb8, 0xb5, 0xb3, 0x3b, 0xb9, 0x96, 0xbc, 0xdd,
0x7b, 0xbd, 0x41, 0xdb, 0xd1, 0x46, 0x83, 0x8f, 0xb5, 0xbf, 0x8b, 0xda,
0x6d, 0x7a, 0xa2, 0x73, 0xe1, 0xef, 0x09, 0xa0, 0x05, 0x42, 0xf2, 0x03,
0x18, 0xa1, 0x11, 0xbb, 0x10, 0xff, 0x51, 0x3b, 0xe5, 0xad, 0xdb, 0xbb,
0xb7, 0xf1, 0x39, 0xdb, 0x78, 0xf5, 0xb9, 0xed, 0xed, 0x9d, 0x3d, 0xbd,
0xdc, 0xde, 0xde, 0x8e, 0xbe, 0xff, 0x60, 0xe3, 0xff, 0xb3, 0xad, 0xcb,
0xe9, 0xfa, 0xd7, 0x6a, 0x50, 0x51, 0xb8, 0x8b, 0xf1, 0x12, 0xe4, 0xd0,
0xf5, 0xc2, 0x66, 0xd2, 0xc9, 0x88, 0x90, 0x27, 0xd3, 0x36, 0x6d, 0x69,
0xd4, 0x7e, 0x45, 0x7f, 0xb2, 0x46, 0x7f, 0x1b, 0xfc, 0xa0, 0xe7, 0xc1,
0xc2, 0xe9, 0xcd, 0xcd, 0xad, 0xad, 0xdd, 0x5d, 0x86, 0xb6, 0xb3, 0xb5,
0x85, 0x0f, 0xb8, 0xab, 0x6b, 0x9f, 0x7f, 0xbd, 0x31, 0xc1, 0xc4, 0x09,
0xd3, 0x16, 0x31, 0x70, 0x9d, 0x69, 0x28, 0xba, 0x14, 0x17, 0x1f, 0xc1,
0xa6, 0x87, 0x4f, 0x2b, 0xc2, 0x6e, 0xfa, 0xb9, 0x27, 0xe8, 0x3f, 0x3b,
0x3f, 0x3f, 0xbf, 0x29, 0x74, 0x1c, 0xff, 0xe0, 0xd9, 0xd6, 0xfc, 0x8a,
0x7c, 0xb8, 0xf3, 0xf9, 0xd7, 0x5b, 0x8d, 0x08, 0x1d, 0xce, 0xb7, 0x4c,
0x6c, 0x42, 0x82, 0x00, 0xa3, 0x7b, 0x1d, 0x08, 0x3d, 0x78, 0x34, 0x19,
0x19, 0xf9, 0xfa, 0x97, 0x31, 0xa4, 0x14, 0xb7, 0xff, 0x95, 0xcf, 0x39,
0xc3, 0x20, 0x8d, 0xe6, 0xfd, 0x99, 0x15, 0x40, 0xdc, 0xdd, 0xbd, 0x14,
0x2d, 0xf8, 0xfe, 0xcc, 0xe9, 0xb7, 0x3e, 0xc4, 0xdd, 0xbd, 0xb2, 0xb6,
0xb6, 0xf1, 0x19, 0x98, 0xeb, 0x44, 0x48, 0x1e, 0x7f, 0x7b, 0x99, 0xa4,
0xd3, 0xd4, 0x09, 0x61, 0x33, 0x11, 0x5d, 0xba, 0x44, 0x10, 0x87, 0x30,
0x4e, 0x8d, 0xae, 0x00, 0xa4, 0x43, 0x3f, 0x6f, 0xc8, 0xe3, 0x7e, 0x77,
0x7e, 0x6e, 0x65, 0x67, 0x67, 0x9f, 0x68, 0xb7, 0x9e, 0x76, 0x9f, 0x6d,
0xcd, 0x9d, 0x10, 0x88, 0xb7, 0x07, 0xe3, 0xcf, 0x1e, 0xbe, 0xda, 0xa5,
0x3b, 0x95, 0xf6, 0xfb, 0x7d, 0x42, 0x58, 0xab, 0x05, 0x75, 0xf6, 0x07,
0x40, 0xc3, 0x2a, 0x4c, 0x5c, 0x27, 0x86, 0x27, 0xf9, 0x65, 0xdc, 0xf1,
0x14, 0xfc, 0x15, 0x2d, 0x7e, 0xf6, 0x0c, 0x6b, 0x83, 0x01, 0x41, 0x5c,
0x21, 0x4e, 0x05, 0xc2, 0x1e, 0x1d, 0x27, 0x78, 0x89, 0x8a, 0x83, 0x35,
0xda, 0xa6, 0x8f, 0xee, 0x47, 0xe0, 0x87, 0x1e, 0x10, 0x80, 0x86, 0xb0,
0x48, 0x49, 0x33, 0x8c, 0x59, 0x97, 0xb2, 0x77, 0x39, 0x22, 0xe7, 0xa3,
0xd1, 0xcd, 0xb7, 0xe8, 0xc0, 0xef, 0xc7, 0x04, 0x90, 0x21, 0xae, 0x6c,
0x33, 0xa8, 0xf5, 0xc1, 0xa0, 0xdf, 0x6d, 0xcd, 0x5d, 0xd8, 0x64, 0x0e,
0x7a, 0x6f, 0x30, 0x18, 0x4f, 0xa3, 0x5c, 0xef, 0x32, 0x40, 0xde, 0x96,
0x49, 0xf5, 0xb0, 0xf7, 0x30, 0x4a, 0x86, 0x22, 0x87, 0x70, 0x67, 0x80,
0xf0, 0x4b, 0x6d, 0x96, 0x1f, 0x86, 0x78, 0x92, 0xc8, 0x62, 0x99, 0x14,
0x6f, 0xd7, 0x08, 0xe0, 0xa0, 0x1f, 0xf9, 0x96, 0x86, 0x69, 0xda, 0x4b,
0x17, 0xfc, 0xd3, 0x5b, 0x1f, 0x92, 0x3c, 0x12, 0xde, 0x1e, 0x7d, 0xbb,
0xa6, 0x6c, 0x0d, 0xb0, 0x5d, 0x96, 0x45, 0xdc, 0xb0, 0xb4, 0x2d, 0x08,
0xd9, 0xb1, 0x13, 0x39, 0x84, 0x6b, 0x4c, 0x5c, 0x1a, 0xfc, 0x57, 0x45,
0x98, 0x32, 0xc4, 0xde, 0xe7, 0x40, 0x5c, 0xef, 0xb6, 0x40, 0x43, 0x20,
0x4c, 0x19, 0xe2, 0x69, 0xfd, 0xd4, 0x27, 0x88, 0xe3, 0xa9, 0x1b, 0xca,
0xe7, 0x51, 0x84, 0x8e, 0x5c, 0x23, 0x19, 0x89, 0x2e, 0xf5, 0xea, 0x9d,
0x04, 0xd1, 0x88, 0x17, 0x9e, 0x6c, 0x17, 0xb6, 0xcf, 0x72, 0x2a, 0x81,
0x8c, 0xfc, 0xab, 0x2c, 0x7b, 0xfb, 0x84, 0x89, 0xe8, 0xb3, 0x70, 0x5a,
0x3e, 0x5d, 0xe9, 0x0d, 0xa6, 0x18, 0x75, 0x1c, 0xe9, 0x49, 0xec, 0x05,
0x67, 0xbd, 0x10, 0x1e, 0x7c, 0xc2, 0xba, 0x34, 0x0e, 0xdf, 0xc8, 0x88,
0x4b, 0xe9, 0xff, 0x64, 0x57, 0xe5, 0x50, 0x80, 0x4e, 0xb3, 0x28, 0x20,
0x12, 0x42, 0x95, 0xc3, 0x75, 0x62, 0xbf, 0x7e, 0xf7, 0xd9, 0x2d, 0xfe,
0x74, 0xbf, 0x3f, 0x8d, 0x6f, 0x63, 0xb5, 0x08, 0xb0, 0x7f, 0x8d, 0x94,
0x19, 0x19, 0x7d, 0xf2, 0xef, 0x47, 0x82, 0xd0, 0x0b, 0x35, 0x42, 0xfa,
0xb2, 0x62, 0x8b, 0x98, 0x8e, 0x8d, 0xc5, 0x81, 0x6e, 0x4c, 0xbf, 0xc1,
0x84, 0x86, 0xa4, 0x47, 0x2f, 0x9d, 0xa3, 0x53, 0x9d, 0x3b, 0x0d, 0x96,
0xdd, 0xdf, 0xff, 0xb8, 0xd7, 0x63, 0x3e, 0x5d, 0x63, 0x2a, 0x0e, 0xd6,
0xd2, 0x86, 0xaa, 0x60, 0x39, 0xdf, 0x72, 0x99, 0x1c, 0x00, 0x8f, 0xaf,
0x51, 0x25, 0x39, 0xac, 0x06, 0xa1, 0x41, 0x60, 0x90, 0x04, 0x7f, 0xda,
0xe8, 0x46, 0x39, 0x97, 0x46, 0x51, 0x2b, 0x4a, 0x71, 0x0d, 0x5c, 0x88,
0xf0, 0xf1, 0xf5, 0xfa, 0xcb, 0xbe, 0xd2, 0xf0, 0x06, 0x0d, 0xbf, 0xfb,
0x83, 0x9f, 0xee, 0x41, 0x26, 0xf7, 0x08, 0xac, 0xd2, 0x10, 0xb7, 0x61,
0xd0, 0x6f, 0xe9, 0xf5, 0x94, 0x1f, 0x96, 0x2b, 0xb0, 0xb9, 0x1c, 0xa8,
0xbc, 0x28, 0x7e, 0x69, 0xd8, 0x19, 0x8d, 0x10, 0x4e, 0x7c, 0xa9, 0x0d,
0x36, 0x6d, 0xeb, 0xe1, 0x8d, 0xc6, 0xc9, 0x1e, 0x73, 0x5f, 0x6f, 0x6d,
0x80, 0x3f, 0xda, 0x52, 0xcb, 0xa5, 0xfb, 0x97, 0xce, 0x9d, 0x6b, 0xb7,
0xaf, 0x12, 0x83, 0xd2, 0xfb, 0xf7, 0xe8, 0x28, 0x86, 0xc8, 0xcc, 0xbc,
0x36, 0xe8, 0x36, 0x78, 0x8b, 0x1a, 0x4a, 0x48, 0xe2, 0x52, 0xcf, 0x34,
0x89, 0x84, 0x24, 0x7a, 0x62, 0x2d, 0x4c, 0x98, 0x0d, 0x47, 0xf1, 0x52,
0x98, 0xcb, 0x61, 0x84, 0x3f, 0xda, 0x7a, 0x63, 0xbb, 0x0d, 0xc6, 0x82,
0x70, 0x6e, 0x65, 0x7b, 0xf7, 0xa0, 0x49, 0x24, 0x32, 0xc9, 0x5d, 0x10,
0x6a, 0xaf, 0x5b, 0x80, 0x8c, 0x90, 0x20, 0x7e, 0xbf, 0xc2, 0x72, 0x98,
0xc5, 0xc3, 0xd8, 0xb0, 0x2e, 0x0d, 0xbd, 0x4e, 0x87, 0xe0, 0x9a, 0xf0,
0x8b, 0x2a, 0x83, 0x8a, 0x90, 0x3e, 0xc9, 0x90, 0x05, 0x1e, 0xf8, 0x72,
0x81, 0x10, 0x8a, 0x20, 0x8a, 0x3d, 0x24, 0x88, 0xdb, 0x97, 0xda, 0x29,
0xdf, 0x08, 0x25, 0xe3, 0x80, 0x8d, 0xa2, 0x9c, 0x47, 0x6e, 0x58, 0xcb,
0x39, 0x54, 0x25, 0x55, 0xda, 0x09, 0x47, 0xaa, 0x4b, 0x03, 0x43, 0xe6,
0x70, 0x48, 0x6e, 0x87, 0x1f, 0x15, 0x69, 0x88, 0x2d, 0x9d, 0x82, 0xd8,
0xef, 0xb7, 0xe6, 0x94, 0x86, 0xf9, 0x76, 0xaf, 0xcb, 0x00, 0xe9, 0x5b,
0xa5, 0xe1, 0x6a, 0x8b, 0xcf, 0x62, 0x1f, 0xf4, 0xdc, 0x22, 0x84, 0x14,
0x3e, 0x50, 0xf8, 0x92, 0x81, 0x4b, 0x9d, 0x2a, 0x85, 0x11, 0x64, 0x8d,
0xe9, 0xf9, 0x64, 0x43, 0x06, 0xd7, 0xce, 0x81, 0x36, 0x7a, 0x39, 0x87,
0xf6, 0x80, 0x50, 0xb9, 0x14, 0xb4, 0xdb, 0x21, 0x8b, 0x48, 0x3c, 0xba,
0xb7, 0x4e, 0x1a, 0x93, 0x69, 0x6d, 0x01, 0x4e, 0x6f, 0xed, 0xa8, 0x41,
0x72, 0x08, 0x85, 0x9d, 0x84, 0x4d, 0xe3, 0xbd, 0x20, 0x9a, 0x06, 0x06,
0x91, 0x7c, 0xb7, 0x8b, 0x04, 0x6c, 0xc2, 0xa8, 0x78, 0x17, 0xb5, 0x07,
0x0a, 0x50, 0xc4, 0xa2, 0x3b, 0xa7, 0x36, 0x70, 0x6f, 0x7b, 0x7b, 0x7b,
0x73, 0x13, 0xef, 0xf7, 0x3e, 0x4e, 0xfb, 0x96, 0x95, 0x69, 0xeb, 0x16,
0xcf, 0x20, 0x2a, 0xeb, 0x86, 0x23, 0x5e, 0x05, 0x81, 0x32, 0x82, 0x10,
0x2c, 0x94, 0x99, 0x20, 0x7c, 0x6a, 0xdc, 0x68, 0x34, 0x26, 0x14, 0xa4,
0x47, 0xa3, 0xb1, 0xa8, 0x64, 0x9c, 0xc8, 0x21, 0xd3, 0x70, 0xf3, 0x32,
0x36, 0x66, 0xd9, 0x9d, 0x4b, 0xa0, 0x21, 0x44, 0x91, 0xfe, 0x52, 0x66,
0xcf, 0xc8, 0xde, 0x28, 0x68, 0xe6, 0xb5, 0x1b, 0x74, 0x8d, 0x3a, 0x42,
0xcc, 0x66, 0x88, 0x18, 0xdf, 0xf1, 0xc8, 0xd6, 0x27, 0xa3, 0x21, 0x85,
0xb8, 0x17, 0x37, 0x56, 0x5b, 0x96, 0xbd, 0x22, 0x4b, 0x48, 0x16, 0x30,
0x25, 0x24, 0x69, 0x4f, 0x20, 0x24, 0xd9, 0x5b, 0x6d, 0xb5, 0xe6, 0xe6,
0x4e, 0x5c, 0xde, 0x84, 0x5f, 0x73, 0x4f, 0x10, 0xc2, 0x60, 0xac, 0x77,
0x27, 0xbf, 0x57, 0x0a, 0xbe, 0xb2, 0x01, 0x84, 0x75, 0x0a, 0x5b, 0x3a,
0xc9, 0x90, 0x69, 0x88, 0xf0, 0xad, 0x49, 0xd1, 0x9a, 0x1b, 0xfe, 0xc1,
0xc6, 0x46, 0x64, 0x21, 0xe6, 0x74, 0x3c, 0xb9, 0xa6, 0xc4, 0x59, 0x2b,
0xc8, 0x21, 0x59, 0x7c, 0xf2, 0xe2, 0x9c, 0x63, 0xa2, 0x77, 0xc6, 0xc2,
0xa5, 0x03, 0x88, 0x60, 0xf1, 0xb7, 0x00, 0xb8, 0xb8, 0x46, 0x17, 0x2c,
0xcf, 0xce, 0x26, 0x86, 0xd3, 0x05, 0x4c, 0x43, 0xe2, 0x20, 0x72, 0xa2,
0x92, 0xa5, 0x98, 0xd4, 0x35, 0x09, 0x91, 0x95, 0x43, 0xe5, 0xd4, 0x56,
0x2e, 0x8c, 0x42, 0x43, 0x91, 0xc3, 0x1b, 0x29, 0x71, 0xdf, 0x9c, 0xbf,
0xc2, 0xf6, 0xf0, 0x5e, 0x2a, 0x34, 0x84, 0x5b, 0x11, 0x45, 0xdd, 0xc9,
0x9f, 0xd8, 0x55, 0xa6, 0xe1, 0x52, 0xcc, 0xa9, 0x90, 0x9f, 0xc1, 0x1e,
0x7a, 0xec, 0x70, 0x90, 0x3d, 0x24, 0x84, 0x1b, 0x5d, 0x40, 0xe4, 0x71,
0x2e, 0xb0, 0xb6, 0xa1, 0xed, 0x15, 0x21, 0x21, 0xd1, 0x49, 0x10, 0x42,
0xfc, 0x2e, 0x61, 0xf4, 0xbe, 0xf3, 0x15, 0xb6, 0x16, 0x7b, 0x97, 0x44,
0x12, 0x89, 0xc4, 0x74, 0xf8, 0x82, 0x72, 0xc1, 0x97, 0xf0, 0x7b, 0x78,
0x0e, 0x37, 0xa0, 0x4b, 0x29, 0x22, 0x46, 0x5c, 0x4d, 0x08, 0x6b, 0xf0,
0xa8, 0x20, 0x24, 0x4b, 0x21, 0x0c, 0xd2, 0x78, 0x59, 0x15, 0x45, 0x57,
0x1f, 0x51, 0x2b, 0x55, 0x45, 0x43, 0x67, 0x5c, 0xfe, 0xce, 0x8a, 0xf8,
0xc2, 0xf0, 0x39, 0xc9, 0xe2, 0x9f, 0xda, 0x2c, 0xd8, 0x43, 0x12, 0x41,
0x95, 0xc1, 0x48, 0x6f, 0x50, 0x8b, 0x1d, 0x87, 0x1b, 0x95, 0x2a, 0x5d,
0x24, 0x19, 0x22, 0xe6, 0xff, 0x19, 0xb8, 0xd4, 0x93, 0x14, 0x84, 0x5b,
0xbf, 0xc8, 0xb6, 0xb3, 0xa1, 0x74, 0xc8, 0xd9, 0xb5, 0xd1, 0x53, 0x55,
0x63, 0x69, 0x68, 0xed, 0x61, 0x44, 0x16, 0x9f, 0x3f, 0x5d, 0x61, 0x21,
0xec, 0x47, 0xca, 0xa0, 0xd6, 0xdc, 0x34, 0x1a, 0x7c, 0x46, 0xa2, 0x61,
0x95, 0xe9, 0x16, 0x8a, 0x1c, 0x92, 0x97, 0x48, 0x04, 0xcd, 0xb2, 0xa5,
0x98, 0xbf, 0x1e, 0x77, 0x5b, 0xcc, 0x67, 0x51, 0xae, 0x70, 0x5a, 0xed,
0xdc, 0x5c, 0x74, 0xad, 0xb5, 0x58, 0x27, 0x33, 0x42, 0x3c, 0x7b, 0x41,
0xf0, 0xbe, 0xcf, 0x9c, 0xdc, 0x55, 0x0a, 0xaa, 0x36, 0x8e, 0x5a, 0x2d,
0x71, 0xfe, 0x6e, 0xc0, 0xc5, 0x40, 0x3a, 0x27, 0xcb, 0x8c, 0xa5, 0xa1,
0x24, 0x8d, 0x9e, 0x12, 0xf7, 0xc0, 0xf7, 0x1b, 0x56, 0x12, 0x19, 0x60,
0x04, 0x61, 0x64, 0x88, 0x69, 0x2e, 0x87, 0x97, 0x60, 0x5a, 0xd9, 0xfe,
0x13, 0xc4, 0xbd, 0x2b, 0x60, 0xd1, 0x74, 0x22, 0x81, 0x42, 0x7d, 0xbf,
0x21, 0x4e, 0x03, 0xe4, 0xd0, 0x75, 0xeb, 0x31, 0x39, 0x6e, 0xde, 0xd7,
0xd9, 0x89, 0x32, 0xc8, 0x3b, 0x0d, 0x15, 0x21, 0xd9, 0xeb, 0x56, 0x6e,
0xd0, 0x2c, 0x25, 0x07, 0x39, 0x9b, 0x6e, 0x5a, 0x9f, 0x06, 0x44, 0x6c,
0xcb, 0x87, 0xbb, 0xcc, 0x31, 0x13, 0x23, 0x21, 0x8f, 0x56, 0x4b, 0x7d,
0xcd, 0xb7, 0xc1, 0xa5, 0x64, 0x10, 0x91, 0x43, 0xf8, 0x11, 0xec, 0xa1,
0x07, 0x87, 0x83, 0x9c, 0x9a, 0x50, 0x2f, 0x38, 0x00, 0xb3, 0x4d, 0x6b,
0xc4, 0x45, 0x51, 0x37, 0x04, 0xf1, 0xaa, 0xe8, 0x52, 0x20, 0x6c, 0xb7,
0x2f, 0xb0, 0xc1, 0x27, 0x39, 0xa4, 0x0b, 0x5a, 0x09, 0xce, 0x55, 0x95,
0x7f, 0x52, 0x9d, 0x1c, 0xba, 0xa5, 0xc8, 0xf2, 0x70, 0x22, 0x0f, 0x6e,
0x22, 0xd2, 0x61, 0x2c, 0x23, 0xe6, 0xa2, 0x75, 0x2a, 0x05, 0xa2, 0x68,
0xd3, 0x89, 0x65, 0x24, 0x14, 0x69, 0x77, 0x4b, 0x42, 0xa6, 0x55, 0x78,
0x2c, 0x97, 0xc5, 0x70, 0xdc, 0x4d, 0x89, 0x89, 0xfb, 0x93, 0xd1, 0x09,
0xf1, 0x5b, 0xb9, 0xdf, 0x07, 0x39, 0x74, 0x39, 0xc8, 0x96, 0x5c, 0x1b,
0x45, 0xf4, 0x75, 0xf8, 0x8c, 0x5e, 0xfd, 0x29, 0xeb, 0x04, 0x75, 0x7d,
0x36, 0xd9, 0x39, 0x35, 0x68, 0x23, 0xb3, 0xdf, 0x7b, 0x75, 0xe7, 0xdd,
0x77, 0x25, 0x78, 0xda, 0x25, 0x53, 0xb1, 0xf5, 0x2e, 0x1b, 0xfc, 0xdd,
0x9d, 0x74, 0x91, 0x01, 0x0a, 0x44, 0xfb, 0x2b, 0xdf, 0x3f, 0x69, 0xdd,
0xf1, 0x1b, 0xac, 0xaf, 0x49, 0xb9, 0xd4, 0xd9, 0x00, 0x57, 0x03, 0x13,
0xbc, 0xc9, 0x39, 0x44, 0x4b, 0x43, 0x86, 0xd8, 0xb2, 0x43, 0xb5, 0x9c,
0x3a, 0xee, 0xa7, 0xaf, 0x4a, 0x64, 0x58, 0xb0, 0x86, 0x14, 0x25, 0xee,
0x7d, 0x04, 0x7b, 0x48, 0xac, 0xdd, 0xb2, 0xf4, 0x13, 0x02, 0x46, 0x83,
0x8d, 0x1c, 0x21, 0x45, 0x4f, 0x41, 0x32, 0x24, 0xc7, 0xdb, 0xfc, 0x48,
0x7c, 0x9a, 0x04, 0xd9, 0xdc, 0xf8, 0xf7, 0x9f, 0x12, 0xef, 0x93, 0xb6,
0xae, 0xdf, 0x98, 0xd2, 0x8a, 0x04, 0x71, 0x31, 0x8d, 0x4e, 0xb3, 0x71,
0xd8, 0x11, 0xc2, 0x71, 0x90, 0xb8, 0xb3, 0xb5, 0xb3, 0x09, 0x73, 0x98,
0x16, 0x6f, 0x89, 0xfc, 0x60, 0x31, 0x8f, 0x36, 0x40, 0x43, 0xe4, 0xde,
0xe0, 0xfb, 0x12, 0x42, 0x4e, 0x62, 0xb0, 0xe7, 0xfd, 0x27, 0x17, 0x73,
0x1f, 0x54, 0xf5, 0xcd, 0xc4, 0xfe, 0xd3, 0x88, 0xd3, 0xe5, 0xe7, 0xb6,
0x77, 0xec, 0xb6, 0xa7, 0x41, 0xf0, 0xf6, 0x76, 0x1f, 0x3e, 0xf8, 0xb2,
0x3f, 0x31, 0x12, 0x7a, 0x47, 0x26, 0x5e, 0x2a, 0x73, 0x69, 0x12, 0x0f,
0x33, 0x92, 0x85, 0xbf, 0x2d, 0x89, 0x9e, 0x83, 0xdb, 0x6f, 0x7e, 0xff,
0xa9, 0xdc, 0xc5, 0x5e, 0xeb, 0xfb, 0xd6, 0x34, 0x8a, 0x1b, 0x07, 0xa9,
0x8a, 0x4e, 0xad, 0x6c, 0x6e, 0x6d, 0xca, 0xb6, 0x85, 0x6d, 0x73, 0xeb,
0xd6, 0xe5, 0x05, 0x18, 0x7c, 0xbd, 0x21, 0x38, 0xb2, 0xa1, 0x54, 0x7f,
0x65, 0xe2, 0x88, 0x83, 0x86, 0xa4, 0x68, 0xe2, 0x0e, 0x31, 0xea, 0x0b,
0xe2, 0xb5, 0x91, 0x8c, 0x64, 0x26, 0xfe, 0xb3, 0x8b, 0x45, 0xe7, 0xb9,
0x15, 0x15, 0x22, 0x0d, 0x78, 0x26, 0x7e, 0xf4, 0xdc, 0xe6, 0x81, 0xed,
0x57, 0x74, 0x1f, 0xd2, 0x74, 0xb0, 0xda, 0x9a, 0xdc, 0x0f, 0x91, 0xdd,
0x56, 0x31, 0x32, 0x79, 0xdb, 0xa9, 0x39, 0x44, 0x43, 0x24, 0x1b, 0x19,
0x21, 0x19, 0xc7, 0x90, 0xdc, 0xd2, 0x60, 0x82, 0x90, 0x83, 0xa0, 0x28,
0x07, 0x28, 0x01, 0x55, 0xc3, 0x9f, 0xf1, 0x65, 0x9b, 0x99, 0x99, 0xb1,
0xef, 0x1b, 0x00, 0x98, 0xcb, 0x6d, 0xee, 0xd3, 0x36, 0x4e, 0x16, 0xc3,
0x45, 0x41, 0xc8, 0x01, 0x8c, 0x46, 0x4f, 0x74, 0x41, 0x64, 0xb5, 0xff,
0xe6, 0xe2, 0x54, 0x84, 0xd7, 0x52, 0xcd, 0x98, 0x5a, 0x2a, 0xce, 0xf9,
0x2d, 0x3f, 0xdf, 0xe6, 0xe9, 0x8f, 0x80, 0x75, 0x89, 0x45, 0x8b, 0x00,
0x19, 0x62, 0x8b, 0x6c, 0xe8, 0xc6, 0x01, 0x1a, 0xc6, 0x74, 0x4b, 0x49,
0x99, 0xbe, 0xa0, 0xd6, 0xa2, 0xd9, 0xc9, 0x8c, 0x3b, 0x41, 0xb8, 0xc1,
0xee, 0x97, 0xaf, 0x8c, 0xa7, 0xd2, 0x48, 0xd0, 0xe8, 0x21, 0x52, 0xd9,
0x58, 0xe0, 0x27, 0xc2, 0x47, 0x61, 0x62, 0xd4, 0x98, 0x02, 0xd8, 0x68,
0x88, 0x08, 0x0e, 0x72, 0x2e, 0x2d, 0x97, 0xab, 0x75, 0x23, 0xc5, 0x02,
0x20, 0xac, 0x41, 0x99, 0xf2, 0x1d, 0xbe, 0x58, 0x88, 0x95, 0x28, 0x54,
0x5a, 0x6e, 0x4d, 0x86, 0x1d, 0x09, 0xc4, 0x03, 0x4e, 0x1d, 0xc7, 0xf0,
0xcb, 0x45, 0x0a, 0xf2, 0x71, 0xd1, 0x9a, 0xf8, 0xa8, 0x13, 0x1a, 0x22,
0x8d, 0xc1, 0x17, 0xe1, 0x08, 0xd8, 0xe5, 0x8b, 0x27, 0xa1, 0x45, 0xa8,
0x31, 0xc2, 0x9a, 0xb5, 0x8c, 0x56, 0x14, 0x09, 0xa2, 0xa6, 0x8e, 0xec,
0x06, 0x7f, 0x94, 0x45, 0x70, 0xca, 0x4c, 0xf8, 0x8b, 0x1a, 0x67, 0xd8,
0x0b, 0x92, 0xac, 0xcf, 0x4a, 0x39, 0x24, 0xc1, 0x2d, 0x0d, 0x28, 0xc8,
0x1f, 0x75, 0x86, 0x13, 0x4d, 0x93, 0x7b, 0xdb, 0x05, 0x88, 0x62, 0xbf,
0x49, 0x7d, 0x1c, 0xdc, 0x72, 0x0f, 0x41, 0x94, 0x2f, 0x03, 0x84, 0xde,
0x9d, 0xe6, 0x52, 0xd2, 0xa5, 0x31, 0x17, 0x07, 0x80, 0xb0, 0x0a, 0x84,
0xa8, 0x13, 0x3d, 0xfd, 0x94, 0x2a, 0x1a, 0x76, 0xc0, 0xe8, 0x0f, 0x96,
0x31, 0x57, 0xfe, 0xd8, 0x48, 0x41, 0xf6, 0xd4, 0x43, 0xeb, 0xf1, 0x1f,
0xe9, 0x34, 0x5f, 0x43, 0x25, 0x79, 0x26, 0x1d, 0x2a, 0x0e, 0xc2, 0x5a,
0x51, 0x0e, 0xab, 0xd5, 0x59, 0x97, 0xcb, 0x04, 0x09, 0xdb, 0xc3, 0x20,
0x08, 0x33, 0xf8, 0xa5, 0x2a, 0x87, 0x0c, 0x4e, 0x5e, 0x8b, 0x96, 0xb1,
0xc5, 0x9b, 0xcf, 0x91, 0xd2, 0xa0, 0x6f, 0xb7, 0xd5, 0x96, 0xdf, 0x6a,
0xb5, 0x0a, 0x86, 0x8c, 0xcc, 0x7c, 0x7e, 0x87, 0x94, 0x8a, 0x6f, 0x57,
0xd8, 0xf3, 0x4e, 0x2c, 0x0d, 0xbd, 0xc0, 0x90, 0x58, 0x90, 0xae, 0x7b,
0x5a, 0x75, 0x29, 0x0f, 0x70, 0x6d, 0x60, 0x39, 0x55, 0xcd, 0x85, 0x42,
0x6c, 0x80, 0x70, 0x1c, 0x67, 0x20, 0xc8, 0x4f, 0x5b, 0xbe, 0x6a, 0x51,
0x7b, 0x94, 0xdf, 0xb0, 0x7e, 0x6c, 0x1e, 0x50, 0x11, 0x0d, 0xdd, 0x6a,
0x5d, 0xaa, 0x8c, 0xac, 0x69, 0x82, 0xd8, 0xa0, 0x34, 0x16, 0x33, 0x0d,
0xf3, 0x38, 0x82, 0x5d, 0xe9, 0xd5, 0xe2, 0xf0, 0x05, 0x63, 0x9b, 0x01,
0x22, 0x8b, 0x86, 0x28, 0xdf, 0x57, 0x16, 0x8d, 0xd8, 0x13, 0x6a, 0xb1,
0x08, 0x8e, 0x35, 0xab, 0x63, 0x21, 0xbe, 0x0d, 0x0f, 0x23, 0xe4, 0x4a,
0xa9, 0xd0, 0x30, 0x40, 0x9a, 0xc8, 0x18, 0xef, 0x1b, 0xff, 0x4a, 0x07,
0x96, 0xf2, 0xf8, 0x39, 0x4f, 0xd1, 0x3a, 0x6c, 0x25, 0x4f, 0xbc, 0x1b,
0x42, 0xb0, 0x48, 0xfb, 0x6d, 0x8a, 0xc2, 0x57, 0x95, 0x6b, 0x6f, 0x03,
0xac, 0xa0, 0x50, 0xd8, 0x66, 0x07, 0xd6, 0xc0, 0xa5, 0x0e, 0x0b, 0x3b,
0xaa, 0x89, 0x1c, 0xe3, 0x23, 0x83, 0x32, 0x1a, 0x9a, 0xe4, 0xb5, 0x8b,
0xd3, 0xc9, 0x43, 0xde, 0xe8, 0x9e, 0xe5, 0x20, 0x04, 0x64, 0x44, 0x0e,
0xdb, 0x4f, 0x06, 0x3f, 0xf9, 0xc9, 0x4f, 0x60, 0x24, 0xfc, 0x82, 0x17,
0xab, 0x22, 0xc8, 0x5e, 0x6c, 0xf1, 0x4c, 0x44, 0xc3, 0x1a, 0xec, 0xd3,
0xd0, 0xb0, 0x01, 0x26, 0x1f, 0x03, 0xc5, 0xcb, 0xd8, 0xfc, 0x87, 0xe9,
0x48, 0x7a, 0xef, 0x0a, 0x04, 0xcd, 0x72, 0xa1, 0x80, 0x44, 0x40, 0xe1,
0xcf, 0x5c, 0xbc, 0xfa, 0xa1, 0x1c, 0x72, 0xe7, 0xf2, 0xc2, 0xe1, 0x22,
0x1f, 0x13, 0xc5, 0x17, 0x99, 0xc5, 0x57, 0xfe, 0x31, 0x3f, 0xcd, 0x3f,
0x30, 0x42, 0x58, 0xa4, 0x66, 0x12, 0xc6, 0xb0, 0x16, 0xb5, 0xff, 0xb4,
0x64, 0xe0, 0x6d, 0x98, 0x7f, 0x7f, 0x20, 0x76, 0xdf, 0xbb, 0xcd, 0xb1,
0xed, 0x72, 0x81, 0x0d, 0xc1, 0xa6, 0xfe, 0x73, 0x85, 0x10, 0x78, 0x7b,
0xde, 0xf7, 0x73, 0x88, 0x4a, 0xe0, 0xc1, 0xe0, 0xdd, 0xa9, 0xd3, 0x7c,
0xc0, 0x72, 0x48, 0x7e, 0x05, 0x12, 0xdd, 0xb0, 0x16, 0x1e, 0xcc, 0x45,
0x27, 0x76, 0x7f, 0x6b, 0xf7, 0x60, 0xba, 0xe0, 0xaf, 0x10, 0xbd, 0x93,
0x30, 0x1e, 0x56, 0x15, 0x0a, 0xa5, 0x7d, 0xf8, 0x91, 0x7f, 0x9c, 0x3a,
0xdd, 0x37, 0x55, 0xd1, 0x08, 0x87, 0xbe, 0x02, 0xcf, 0xee, 0x95, 0xdd,
0xa9, 0xac, 0xf8, 0x9d, 0x1b, 0x25, 0x07, 0x17, 0xe1, 0x1a, 0xfa, 0x0b,
0x44, 0x43, 0x37, 0x60, 0x83, 0x5f, 0x7b, 0xa4, 0x18, 0xbd, 0x8b, 0xe3,
0x22, 0xee, 0x0a, 0xa8, 0xc8, 0xc4, 0x23, 0x7c, 0x2d, 0xff, 0x43, 0xeb,
0xcd, 0xc8, 0x21, 0x9f, 0xe8, 0x0d, 0x60, 0x21, 0x25, 0x11, 0x24, 0x06,
0xb6, 0x47, 0xd8, 0xa4, 0xf8, 0x2f, 0x2b, 0x15, 0xd8, 0x5c, 0xd6, 0xd7,
0xc8, 0x62, 0x30, 0x03, 0xd1, 0x05, 0x7f, 0x6b, 0x6b, 0x6b, 0xcb, 0x82,
0x84, 0x53, 0x26, 0x19, 0x11, 0x52, 0x2c, 0x90, 0x35, 0x85, 0xd8, 0xf0,
0xbf, 0x2d, 0x63, 0xdf, 0xb1, 0x19, 0xef, 0xfd, 0xd7, 0x0b, 0x32, 0x4a,
0x71, 0x56, 0x2f, 0x7d, 0x55, 0x72, 0xe2, 0x9b, 0x9b, 0x2b, 0x2b, 0xef,
0xf2, 0x21, 0x77, 0x49, 0xf6, 0x66, 0xbd, 0x3a, 0x27, 0xbb, 0xc0, 0xa5,
0x35, 0x2e, 0x51, 0x0f, 0x83, 0xc7, 0xdf, 0xb8, 0x7c, 0x59, 0x41, 0xde,
0xba, 0xf5, 0x9a, 0xc4, 0xf2, 0x1c, 0xbf, 0xb3, 0x36, 0x89, 0x04, 0xc6,
0x89, 0x5d, 0x19, 0xfc, 0xaf, 0x5e, 0x3b, 0x7b, 0x9e, 0x43, 0xfc, 0xfd,
0x7b, 0xf3, 0x96, 0xbe, 0x7e, 0x0f, 0x69, 0xa8, 0x54, 0x8e, 0xb8, 0xdd,
0x9a, 0xf7, 0xe7, 0x9e, 0x93, 0xe0, 0xea, 0x9f, 0xca, 0x1c, 0xcb, 0xa0,
0xc4, 0xcc, 0x72, 0xc8, 0xfd, 0x06, 0xb1, 0xfb, 0xe8, 0xa1, 0xc3, 0x3e,
0x46, 0x4d, 0x7f, 0x0b, 0xbe, 0xff, 0xd0, 0x85, 0x95, 0x0f, 0xc1, 0xaa,
0xd0, 0x98, 0xac, 0x4e, 0x38, 0x5a, 0x98, 0xf9, 0xb6, 0x78, 0xa5, 0xaf,
0x39, 0xe5, 0x52, 0xf9, 0x2b, 0x1c, 0x2b, 0xee, 0xdf, 0x50, 0x7c, 0x87,
0x4f, 0x92, 0xf4, 0xa5, 0xed, 0xe7, 0x39, 0xbe, 0xb9, 0xb3, 0x00, 0x7e,
0x3e, 0x7c, 0x6a, 0x13, 0x87, 0xdc, 0x87, 0x7b, 0x1f, 0x12, 0x8f, 0x1a,
0x8a, 0x2d, 0x4a, 0x35, 0x87, 0x0b, 0xf5, 0x49, 0x5c, 0x73, 0x7d, 0x9b,
0xb3, 0xef, 0x52, 0xe8, 0xe7, 0xdf, 0xc2, 0x4d, 0xfd, 0x35, 0xe7, 0x67,
0x18, 0x22, 0x30, 0x9c, 0x12, 0xaa, 0xfc, 0xd3, 0x13, 0x4f, 0xcc, 0xcd,
0x55, 0x4a, 0x12, 0x1d, 0xee, 0x5d, 0x13, 0x15, 0xe3, 0x4b, 0x7c, 0x75,
0x95, 0xf7, 0xbd, 0x0e, 0xe5, 0x3b, 0x47, 0x21, 0x32, 0x12, 0xc8, 0x7b,
0x73, 0xc4, 0xa4, 0x89, 0x41, 0x19, 0x1c, 0x08, 0x67, 0xeb, 0x21, 0x39,
0x1c, 0x9d, 0xd8, 0xa9, 0x1e, 0xf5, 0xb7, 0x24, 0x72, 0x68, 0xb7, 0x69,
0x80, 0xa7, 0x00, 0xf1, 0x3e, 0x6b, 0x9c, 0x2e, 0xb3, 0x29, 0x0d, 0xf9,
0x8f, 0xe1, 0x78, 0xef, 0xde, 0x25, 0xaf, 0xe6, 0xf0, 0x8c, 0x53, 0x2a,
0xff, 0x21, 0x43, 0xfc, 0xa5, 0x20, 0x5c, 0x94, 0x6c, 0xdc, 0x55, 0x42,
0xb8, 0x7b, 0x5f, 0xe2, 0x43, 0x7f, 0x46, 0x20, 0x96, 0xaa, 0x88, 0xb2,
0x11, 0x1f, 0x3e, 0x8a, 0x4c, 0x94, 0xc7, 0x6d, 0x04, 0x71, 0x10, 0x34,
0x5a, 0x92, 0xd0, 0xde, 0x4f, 0x91, 0xcf, 0xf6, 0x39, 0x74, 0x78, 0x0f,
0x54, 0x64, 0xbf, 0x13, 0x32, 0x28, 0x91, 0xc5, 0x3f, 0x33, 0xdb, 0xce,
0x3d, 0x51, 0x39, 0x2f, 0x21, 0x7e, 0x4b, 0x3c, 0x6d, 0x49, 0xd3, 0xf0,
0x29, 0xee, 0xb2, 0x7d, 0x26, 0x7f, 0xfc, 0xd9, 0x4d, 0x7c, 0xae, 0x10,
0x42, 0xf4, 0x26, 0x88, 0xab, 0x4f, 0xf7, 0x17, 0x3d, 0x06, 0x26, 0xf8,
0xc6, 0x03, 0x0b, 0xca, 0xa7, 0x70, 0x54, 0x7c, 0xe7, 0xdf, 0xae, 0xd0,
0xfb, 0x3b, 0xac, 0x55, 0x53, 0xc8, 0xa2, 0xef, 0x3c, 0x22, 0x29, 0x8c,
0x79, 0xa5, 0x9a, 0xf3, 0xe0, 0xca, 0x87, 0x38, 0xfc, 0x87, 0xe0, 0xd0,
0x9e, 0x66, 0x12, 0x19, 0xd2, 0x1e, 0xfb, 0x03, 0x84, 0xf7, 0x04, 0x33,
0x33, 0x69, 0x6f, 0x0e, 0xb3, 0x51, 0x7b, 0x22, 0xa1, 0x0c, 0x4c, 0x9c,
0x85, 0xa4, 0xdb, 0xe2, 0x46, 0x4b, 0xa3, 0xbf, 0x2e, 0x07, 0xf0, 0x3e,
0x27, 0x9a, 0xd6, 0xd9, 0x02, 0xc2, 0x2c, 0xf8, 0x73, 0x2b, 0xe2, 0x71,
0x8b, 0x58, 0x12, 0x89, 0x1e, 0x12, 0x9a, 0x7f, 0x42, 0x83, 0x69, 0x73,
0xbe, 0x8d, 0xcc, 0x07, 0x43, 0x82, 0x04, 0xe3, 0xce, 0x74, 0x9f, 0x7d,
0xed, 0xb5, 0xcb, 0xbf, 0x98, 0xaf, 0x54, 0x25, 0x7c, 0x8a, 0xa5, 0x7e,
0x48, 0x3c, 0xdb, 0xf4, 0x9a, 0xa1, 0x67, 0x8e, 0xfa, 0x9b, 0x92, 0x0d,
0x65, 0x07, 0xcc, 0x77, 0x38, 0x9e, 0x7f, 0x2f, 0xe5, 0xa4, 0x08, 0x3c,
0xc4, 0x19, 0x29, 0x5a, 0xdc, 0xb6, 0x7a, 0xc7, 0x29, 0x5f, 0xd8, 0x52,
0x9a, 0x1e, 0xed, 0x71, 0x3a, 0x2a, 0x9d, 0xf7, 0x57, 0x70, 0x8e, 0xfd,
0x1d, 0x04, 0x90, 0x64, 0x6d, 0xa2, 0x68, 0xe1, 0xdc, 0x7c, 0xb9, 0x34,
0x4b, 0x6e, 0x05, 0xdc, 0x52, 0x57, 0x2c, 0x3e, 0x92, 0x44, 0xa4, 0x4c,
0x97, 0x80, 0x90, 0x15, 0x48, 0x57, 0x72, 0x14, 0x97, 0x41, 0xa2, 0x7b,
0xb8, 0x20, 0x2c, 0x23, 0x5d, 0x71, 0x93, 0xcb, 0x32, 0x9f, 0xaa, 0x6a,
0xfd, 0xce, 0x5c, 0x45, 0xa4, 0xf5, 0xd3, 0x39, 0x02, 0x28, 0x9e, 0xc0,
0xf2, 0xfc, 0xe5, 0x4d, 0x95, 0xe0, 0x94, 0xa9, 0x4f, 0x2f, 0xd7, 0x4a,
0x95, 0x6a, 0x2d, 0x68, 0x66, 0x70, 0x0c, 0x5f, 0xd0, 0xd8, 0x82, 0x9b,
0x28, 0xcc, 0xd1, 0xc7, 0xdf, 0x12, 0x22, 0xc1, 0xdb, 0xa4, 0xc1, 0x1e,
0x63, 0x51, 0xbc, 0x24, 0x16, 0xbe, 0xe5, 0x38, 0x5f, 0x90, 0x1b, 0x70,
0xdb, 0x17, 0xed, 0x49, 0x10, 0x2f, 0x6c, 0x7d, 0x88, 0x18, 0x7f, 0xbe,
0xc1, 0x49, 0xe1, 0x1e, 0x8c, 0xcb, 0x43, 0x2b, 0x6f, 0x49, 0x7a, 0xea,
0x9c, 0x26, 0xf5, 0xd3, 0xe5, 0x52, 0xe9, 0x90, 0xe3, 0x36, 0xb9, 0xaf,
0x46, 0x63, 0x7c, 0x6e, 0x36, 0x09, 0x96, 0x72, 0x1a, 0x8a, 0xbf, 0x39,
0x2f, 0x72, 0xf6, 0x1e, 0x12, 0x16, 0x64, 0xe4, 0x9f, 0x70, 0x8e, 0x6d,
0xb3, 0x50, 0x2b, 0x42, 0x22, 0x62, 0x45, 0x73, 0x1a, 0xcb, 0xbd, 0x81,
0x64, 0x72, 0xc6, 0x24, 0xb2, 0xa4, 0x81, 0x38, 0x5b, 0x74, 0x7b, 0x55,
0xfc, 0xd6, 0xfe, 0xb5, 0x0a, 0xb9, 0xde, 0x01, 0xbb, 0x34, 0x4b, 0x4c,
0x43, 0x0a, 0xc0, 0x8f, 0x93, 0x2a, 0x0f, 0xcc, 0x03, 0x91, 0xea, 0xc7,
0xb6, 0xe4, 0x28, 0x1e, 0x62, 0x55, 0xf2, 0xb1, 0xb8, 0x67, 0x04, 0xf1,
0x41, 0x51, 0x44, 0x77, 0x1b, 0x12, 0xed, 0xfa, 0x33, 0xa5, 0x0b, 0x5a,
0xc5, 0x50, 0x37, 0x8f, 0xb3, 0x71, 0x33, 0x2b, 0x9b, 0xb2, 0x77, 0xe7,
0xf5, 0x36, 0xeb, 0xe2, 0x6b, 0x65, 0x76, 0x0d, 0x91, 0x46, 0x90, 0x3a,
0x3e, 0x99, 0xaa, 0x0e, 0xdd, 0xdf, 0x25, 0x42, 0xb8, 0x63, 0x35, 0x4d,
0x0a, 0x51, 0x94, 0xe2, 0xd9, 0xaf, 0xfb, 0xea, 0xdf, 0x7c, 0xe7, 0x98,
0x88, 0xe9, 0x5d, 0x75, 0x42, 0x5b, 0xfe, 0x13, 0x2b, 0x5a, 0xc5, 0xb0,
0xe9, 0x4d, 0xf2, 0x72, 0x48, 0x1d, 0x6d, 0xaa, 0xc2, 0xda, 0xff, 0x05,
0xa2, 0xff, 0x31, 0x62, 0x0b, 0x42, 0x38, 0xb2, 0x3e, 0x8d, 0x4b, 0x32,
0x82, 0xce, 0xa0, 0x20, 0x60, 0x4d, 0x83, 0x03, 0x23, 0x2e, 0x8c, 0x69,
0x62, 0x6d, 0x5f, 0x3d, 0xd1, 0xa7, 0xe7, 0x1f, 0x94, 0xaf, 0x7f, 0xad,
0x36, 0xde, 0x9f, 0x73, 0x56, 0x14, 0x61, 0xda, 0xcb, 0xb3, 0xe2, 0x0b,
0x8f, 0x39, 0xc7, 0xbe, 0xa7, 0xfb, 0xf7, 0xff, 0x0a, 0x69, 0x54, 0x20,
0x74, 0xaa, 0xdc, 0x6f, 0x63, 0xa4, 0xd8, 0x85, 0x10, 0x38, 0x31, 0xa0,
0xe1, 0x76, 0x01, 0xe1, 0xaa, 0x2d, 0x9e, 0x0d, 0x24, 0xa7, 0xbd, 0xda,
0x3d, 0x25, 0x5f, 0x7f, 0xaa, 0x3e, 0x0c, 0xe9, 0x1a, 0xa5, 0xe1, 0x7b,
0x03, 0x91, 0x42, 0x54, 0x0b, 0x89, 0xbb, 0x9d, 0xb3, 0x9b, 0xca, 0x0c,
0xfb, 0x1f, 0x0c, 0x06, 0x1c, 0x3d, 0x41, 0x0e, 0xe3, 0x50, 0x63, 0x0b,
0x4f, 0x6a, 0xec, 0x26, 0x60, 0x4d, 0x03, 0x43, 0x1d, 0x31, 0x83, 0x35,
0x7c, 0x29, 0x2d, 0xa9, 0x27, 0x9a, 0x2e, 0xb0, 0x62, 0x54, 0x1a, 0xb2,
0x93, 0xed, 0xac, 0xd8, 0x5c, 0x9b, 0x4d, 0x8a, 0x73, 0x06, 0xce, 0x77,
0xce, 0xaf, 0xe8, 0x37, 0xfb, 0x1b, 0x40, 0xe8, 0xa0, 0xcc, 0xdd, 0x89,
0xc9, 0x46, 0x21, 0xc6, 0x07, 0xc2, 0x0e, 0xb4, 0x40, 0x70, 0xf2, 0xbb,
0x16, 0x21, 0xe7, 0x99, 0xa2, 0xd6, 0x05, 0x1e, 0x27, 0xcb, 0x13, 0x32,
0x6b, 0x9a, 0x3b, 0xfc, 0x44, 0xbd, 0x98, 0x56, 0xeb, 0x89, 0x49, 0x35,
0x71, 0xdc, 0xb7, 0x64, 0x04, 0xc6, 0x39, 0xc2, 0xa8, 0xe7, 0xfa, 0x78,
0xf0, 0xb6, 0x53, 0xc1, 0x45, 0xb2, 0xf8, 0x8f, 0x02, 0x46, 0x88, 0x94,
0x70, 0x73, 0x14, 0x86, 0x6e, 0x70, 0x74, 0x7e, 0x53, 0xe5, 0x90, 0xeb,
0x7e, 0x91, 0x2f, 0x8a, 0x04, 0x2a, 0x03, 0x23, 0x5f, 0x38, 0xc6, 0x4a,
0x84, 0x10, 0xb2, 0x8b, 0x46, 0x41, 0x38, 0xc9, 0x21, 0xd7, 0x4b, 0xaf,
0x70, 0xd2, 0x5b, 0x9e, 0x90, 0xae, 0x6a, 0xf8, 0xce, 0x89, 0x95, 0x15,
0x65, 0x88, 0xf7, 0xaf, 0x95, 0x4b, 0x2e, 0x39, 0x35, 0xa4, 0xbc, 0x3d,
0xf6, 0x4b, 0x6b, 0x70, 0x37, 0x92, 0x4e, 0x26, 0x72, 0xb8, 0x9f, 0xcb,
0x21, 0x12, 0xdc, 0x6c, 0xdb, 0xe4, 0xd3, 0x04, 0xe1, 0xa7, 0x36, 0xda,
0xf0, 0x6d, 0x15, 0x63, 0x5d, 0x19, 0x99, 0xff, 0xc6, 0x03, 0xc6, 0xf8,
0x90, 0xaa, 0x9c, 0xfd, 0xbd, 0xb7, 0x4b, 0x40, 0x18, 0x84, 0xc3, 0x38,
0xd0, 0xe8, 0x09, 0xd5, 0xa7, 0x8e, 0x71, 0xdd, 0x07, 0x2c, 0x97, 0x9e,
0x03, 0xa8, 0x76, 0x74, 0x82, 0x3f, 0xde, 0x67, 0x69, 0xca, 0x69, 0xa8,
0x08, 0x23, 0x46, 0x68, 0xb9, 0xb4, 0x37, 0x15, 0xc2, 0xf5, 0xda, 0xa0,
0xe3, 0x43, 0xe7, 0x55, 0x20, 0xff, 0x0f, 0x74, 0xa9, 0xe7, 0xa1, 0xcf,
0x4d, 0xa3, 0x27, 0xee, 0x36, 0x31, 0x31, 0xdb, 0xc3, 0x5d, 0x41, 0x98,
0x02, 0xd1, 0x59, 0x26, 0xc3, 0xa7, 0x5d, 0x51, 0xdf, 0xfd, 0xee, 0x59,
0x45, 0xa8, 0xba, 0x94, 0xb9, 0x94, 0x8f, 0x1f, 0x0f, 0x26, 0x11, 0x93,
0x15, 0xc7, 0xb9, 0x39, 0xe7, 0xbc, 0xd0, 0x71, 0xef, 0x65, 0x72, 0x4c,
0x03, 0x34, 0xf2, 0xc5, 0x19, 0x32, 0x51, 0xe4, 0x79, 0xa3, 0xd1, 0x8e,
0x14, 0xdd, 0x03, 0x67, 0x95, 0x86, 0x08, 0x7b, 0x89, 0xdb, 0x4e, 0x71,
0x6e, 0x54, 0x4b, 0x2f, 0x84, 0x50, 0x98, 0x72, 0xf7, 0xae, 0x0d, 0x97,
0x1c, 0xde, 0x41, 0xba, 0xd4, 0x96, 0x0f, 0x25, 0xe5, 0xa8, 0x35, 0x1c,
0xa7, 0xec, 0x9c, 0x92, 0x3b, 0x70, 0x1b, 0xd1, 0x0c, 0x09, 0x45, 0xdd,
0x88, 0x1c, 0x06, 0x48, 0xd3, 0x24, 0x66, 0x29, 0x60, 0x6b, 0x41, 0xe6,
0x60, 0x8f, 0x03, 0xdf, 0x56, 0xeb, 0x34, 0x0d, 0x70, 0x6f, 0x6f, 0x55,
0xd4, 0x3e, 0x0d, 0xba, 0x72, 0x59, 0x8c, 0x83, 0xaf, 0x34, 0xb4, 0x72,
0x78, 0x4f, 0xca, 0x32, 0xc5, 0xd8, 0xab, 0x8f, 0xaf, 0xe7, 0x9e, 0xbc,
0x25, 0x5e, 0x0f, 0xba, 0x6a, 0x0a, 0xd1, 0x13, 0xe9, 0xd2, 0x26, 0xf9,
0x34, 0xc6, 0xcd, 0xb9, 0x74, 0x81, 0x53, 0x17, 0x9c, 0xd1, 0xde, 0xbd,
0x03, 0x96, 0xed, 0xc1, 0x7c, 0xcc, 0x95, 0x2f, 0x30, 0xc4, 0x9d, 0x05,
0x21, 0x22, 0xda, 0x4f, 0x98, 0x6d, 0xef, 0xf4, 0x26, 0x31, 0x21, 0x51,
0xf3, 0xca, 0x95, 0x2b, 0x3d, 0x66, 0xf2, 0x19, 0xe7, 0xd8, 0x5b, 0x0c,
0x91, 0x13, 0x09, 0x4d, 0xf2, 0x2b, 0x62, 0xa5, 0x61, 0xc0, 0xc1, 0xc5,
0x52, 0x83, 0xbc, 0x36, 0xb6, 0xe9, 0x51, 0xca, 0xe2, 0xc4, 0xc3, 0xff,
0x75, 0xaa, 0x12, 0xb6, 0x3a, 0x57, 0x79, 0x90, 0x89, 0xb2, 0x67, 0xbd,
0xd4, 0xb9, 0x53, 0xc2, 0xa4, 0x7f, 0xd1, 0xb6, 0xb1, 0x20, 0x49, 0xa3,
0x28, 0xd7, 0x54, 0xd4, 0xaa, 0x2f, 0x54, 0xaf, 0xb8, 0x35, 0x83, 0x8e,
0xa1, 0x21, 0x77, 0x2a, 0x54, 0x91, 0xee, 0x46, 0x8f, 0x69, 0x7c, 0xd4,
0xb7, 0xf6, 0x10, 0x2d, 0x06, 0x51, 0x83, 0x87, 0x7f, 0x29, 0x15, 0x09,
0x4b, 0x89, 0x28, 0x87, 0xc5, 0xd6, 0xfd, 0x92, 0x3d, 0x71, 0x36, 0x87,
0x38, 0x62, 0x7b, 0xee, 0x8b, 0x8b, 0x12, 0x0c, 0x6e, 0x90, 0x5f, 0x3a,
0x29, 0x82, 0x83, 0x57, 0xbf, 0xcd, 0x08, 0x1d, 0x72, 0x4c, 0xe3, 0x30,
0xaf, 0xcc, 0xa0, 0xeb, 0x30, 0xcb, 0x4c, 0x10, 0xe4, 0x72, 0xd8, 0x05,
0x93, 0x3e, 0xcb, 0x52, 0x78, 0x17, 0xd1, 0x2e, 0xf8, 0x6e, 0xd9, 0x27,
0x37, 0xed, 0x6b, 0x7c, 0xc0, 0x27, 0x12, 0x6d, 0xcc, 0xe7, 0x4e, 0x9c,
0x1f, 0x69, 0x71, 0x6d, 0xbd, 0xfb, 0xac, 0x28, 0x57, 0x3a, 0xc1, 0x2a,
0xe9, 0xaa, 0x79, 0x3e, 0xe2, 0x3e, 0x05, 0xf9, 0x75, 0x34, 0x72, 0x0e,
0x39, 0xd7, 0x86, 0x74, 0x74, 0xb3, 0x43, 0xfe, 0x86, 0x39, 0x19, 0x69,
0x4b, 0x10, 0x77, 0xd5, 0x44, 0xef, 0xe2, 0xfd, 0x7b, 0x42, 0x41, 0xb8,
0xa6, 0xbe, 0x53, 0xfa, 0x82, 0xd0, 0xe4, 0x87, 0x88, 0x36, 0x7c, 0xff,
0xdf, 0x89, 0x11, 0x9a, 0x47, 0x58, 0x2c, 0x34, 0xec, 0x43, 0x76, 0xc1,
0x26, 0x12, 0x22, 0xe3, 0x26, 0x61, 0x80, 0x74, 0x95, 0x3a, 0xb7, 0xd4,
0x1a, 0xa9, 0x90, 0xc6, 0x50, 0xa6, 0xb1, 0x09, 0xbe, 0xda, 0xdd, 0x99,
0xe8, 0xd2, 0xee, 0xab, 0xec, 0xa1, 0xbd, 0x2e, 0x1d, 0x23, 0x88, 0x84,
0x7d, 0xf6, 0x44, 0x99, 0xed, 0x7e, 0x81, 0xc8, 0xed, 0x79, 0xb9, 0xde,
0xff, 0xf6, 0xe1, 0x95, 0x0a, 0x8b, 0xa2, 0xd0, 0xcf, 0xb2, 0x77, 0x9b,
0x73, 0x74, 0xe9, 0x7f, 0xe3, 0x23, 0xfe, 0xa2, 0x52, 0xf3, 0x12, 0xe9,
0xd1, 0xa5, 0x70, 0xed, 0x10, 0x57, 0x2f, 0x09, 0xa1, 0x67, 0x7e, 0x33,
0x55, 0x15, 0xcf, 0xad, 0x3e, 0x1f, 0x82, 0x9a, 0x1f, 0xa9, 0x9a, 0x89,
0xe0, 0x97, 0x1e, 0x76, 0x4a, 0x87, 0x56, 0x36, 0x39, 0x1a, 0xbb, 0x7c,
0xf6, 0xbc, 0xc6, 0x51, 0xf7, 0x7d, 0xa6, 0xe7, 0x22, 0x27, 0x9f, 0x06,
0xe9, 0xbc, 0xca, 0xde, 0xdf, 0x03, 0xa2, 0x5c, 0x6f, 0xef, 0x51, 0x8a,
0x9e, 0xb8, 0x7d, 0x35, 0xa8, 0x73, 0x7c, 0x48, 0x6a, 0x8e, 0x6e, 0xf0,
0x52, 0x60, 0xbe, 0xda, 0x57, 0x4b, 0x0d, 0x7b, 0xf8, 0x53, 0x3e, 0x56,
0x2c, 0xdd, 0x98, 0xa3, 0x0b, 0x78, 0xa6, 0x15, 0xd2, 0xa7, 0xbb, 0xc5,
0x30, 0x72, 0xef, 0x97, 0x12, 0x3d, 0xfa, 0x03, 0x4e, 0x5e, 0xd0, 0x81,
0x22, 0xac, 0x7b, 0x1f, 0xd0, 0x26, 0x07, 0xfd, 0x33, 0xf9, 0x34, 0x5c,
0x02, 0x4e, 0xd8, 0x6b, 0x23, 0x57, 0xdf, 0x43, 0x6b, 0x6c, 0xfc, 0xf8,
0x33, 0xcf, 0x6f, 0x68, 0xd0, 0x4a, 0x92, 0xf4, 0xd7, 0x30, 0x8c, 0xbb,
0x77, 0xc4, 0x94, 0x93, 0x57, 0x2a, 0xae, 0xe8, 0x8c, 0x53, 0x5e, 0xb1,
0xd6, 0x1c, 0x51, 0xd4, 0x0e, 0xb9, 0x70, 0xbe, 0x4d, 0x5f, 0x80, 0x88,
0xec, 0x09, 0x6d, 0xe6, 0x47, 0x20, 0x14, 0xdb, 0x23, 0x8b, 0xef, 0xd4,
0xb9, 0x0b, 0x59, 0x69, 0xe8, 0x99, 0x61, 0x96, 0x0c, 0x83, 0xdf, 0x3d,
0xd8, 0xb3, 0x46, 0x41, 0x6e, 0x5f, 0x84, 0x70, 0x95, 0xf8, 0x90, 0x25,
0x8f, 0x20, 0x3e, 0x94, 0x5b, 0x3a, 0x0a, 0x71, 0x77, 0xb6, 0xbf, 0xef,
0xdb, 0xf8, 0x17, 0x39, 0x52, 0xd4, 0x50, 0xfd, 0xf3, 0xb9, 0x4f, 0xc3,
0x91, 0xf4, 0xfb, 0x6f, 0x57, 0x4a, 0x35, 0x6e, 0x84, 0xce, 0x86, 0xd9,
0x0b, 0x70, 0xf5, 0x3d, 0x6e, 0x5f, 0x37, 0xbf, 0xc3, 0xa1, 0xdf, 0x6e,
0x1e, 0xe9, 0xef, 0xee, 0xee, 0x10, 0x8b, 0xc2, 0xc6, 0x51, 0x64, 0x61,
0xa3, 0x5c, 0x82, 0x48, 0x08, 0x90, 0xf2, 0xde, 0xe1, 0xac, 0xf7, 0xd9,
0x3c, 0x8f, 0x83, 0xf8, 0x77, 0x63, 0x4d, 0xdc, 0x36, 0xc2, 0xb8, 0xc3,
0x05, 0x80, 0xad, 0x9d, 0x9d, 0x3b, 0xbd, 0x6b, 0x25, 0x89, 0x0f, 0x51,
0x55, 0x93, 0xde, 0x44, 0x49, 0xea, 0xff, 0xce, 0x0e, 0x83, 0xda, 0x51,
0x4e, 0xa5, 0xb7, 0xb7, 0x38, 0x8d, 0xd1, 0xe7, 0x74, 0x8c, 0x8d, 0xe4,
0x29, 0x2e, 0xac, 0x52, 0x78, 0xbc, 0xb9, 0x4d, 0xdb, 0xad, 0xcb, 0xf3,
0x79, 0xa2, 0x86, 0x23, 0x7c, 0x74, 0x62, 0x40, 0xbf, 0x5c, 0xe6, 0xaf,
0x79, 0xbb, 0xd5, 0x1f, 0xbc, 0x5d, 0xe1, 0x12, 0x5e, 0x16, 0x2f, 0xb1,
0x2e, 0x3d, 0x54, 0x45, 0xc7, 0x50, 0x48, 0x17, 0xa4, 0xe1, 0xf0, 0xb0,
0x31, 0x7c, 0xa9, 0x48, 0xb4, 0x7b, 0x92, 0x30, 0xf4, 0x6d, 0x32, 0x0a,
0xea, 0xc5, 0x29, 0x97, 0x1f, 0x3a, 0x71, 0xf6, 0xec, 0xd9, 0xc7, 0x4f,
0xcc, 0x39, 0x33, 0x33, 0x9a, 0xbf, 0xe1, 0x10, 0x9f, 0x93, 0x34, 0xf0,
0x69, 0x66, 0xf0, 0xfd, 0xd9, 0x13, 0x67, 0xcf, 0x9f, 0x5f, 0x68, 0xf7,
0xd8, 0x6b, 0xe3, 0xe2, 0x48, 0x6c, 0x11, 0x86, 0xc9, 0x1b, 0xe4, 0xd2,
0x3c, 0xb2, 0x3d, 0xbd, 0xdd, 0x7a, 0x9d, 0x5b, 0x10, 0xc6, 0xeb, 0x9a,
0x30, 0x6c, 0x69, 0xa0, 0x3b, 0xe7, 0x38, 0xce, 0x3c, 0x82, 0x27, 0x87,
0x22, 0x5c, 0xc9, 0xd2, 0xb4, 0x24, 0x89, 0x81, 0x10, 0x71, 0x20, 0x3a,
0x14, 0x52, 0xcb, 0xe8, 0x53, 0xf2, 0xda, 0x2a, 0x25, 0xc7, 0x0b, 0xd1,
0x14, 0xad, 0x7d, 0xde, 0xf5, 0x3a, 0xb7, 0x26, 0x3e, 0x78, 0xf9, 0xf2,
0xca, 0xe5, 0xc2, 0xd6, 0x28, 0x00, 0xb4, 0x49, 0x0c, 0xce, 0x44, 0xcd,
0x1c, 0x6e, 0x2c, 0xd0, 0x16, 0x21, 0xbb, 0xef, 0x37, 0x26, 0x09, 0x0e,
0xff, 0xb0, 0x40, 0x24, 0xef, 0x67, 0x01, 0x21, 0x7e, 0xa3, 0xb1, 0x40,
0x3c, 0xb0, 0xb6, 0x76, 0xa3, 0x4c, 0x17, 0x24, 0xc9, 0xef, 0x18, 0x89,
0x0f, 0xdd, 0xdf, 0x23, 0x8b, 0x3f, 0x34, 0x81, 0x53, 0x6b, 0x68, 0xae,
0x89, 0x37, 0x4e, 0xd8, 0xd3, 0xc6, 0x75, 0xa8, 0xd6, 0x24, 0x9b, 0x88,
0x0c, 0x83, 0x24, 0x89, 0x97, 0xe7, 0x94, 0xb6, 0x2d, 0x0b, 0xd1, 0xef,
0xb1, 0xc1, 0xef, 0xe6, 0x4d, 0x47, 0x74, 0x06, 0xce, 0xea, 0x3b, 0x5e,
0x20, 0x33, 0x13, 0xb8, 0x8e, 0xcf, 0x93, 0x2c, 0xd0, 0x1f, 0xfc, 0x00,
0x05, 0x3c, 0xd1, 0x02, 0xfe, 0x68, 0x63, 0x06, 0x45, 0x48, 0x91, 0xd7,
0x68, 0x34, 0x17, 0x45, 0xc1, 0x2e, 0x59, 0x3b, 0x68, 0xd8, 0x96, 0x9f,
0x53, 0x57, 0xbf, 0x45, 0x22, 0x43, 0x2c, 0xbe, 0x34, 0x68, 0x70, 0xde,
0x1b, 0xb9, 0xb6, 0xaa, 0x34, 0xca, 0x4b, 0xdd, 0x22, 0x44, 0xff, 0x33,
0xfc, 0xd2, 0xaf, 0x42, 0x6b, 0xb2, 0x4b, 0x9a, 0xb2, 0x1f, 0x33, 0x9e,
0x4a, 0x0a, 0xb3, 0x27, 0xca, 0x49, 0xe1, 0x41, 0x5f, 0x7a, 0x13, 0xfa,
0xad, 0xd6, 0xa4, 0xa4, 0x66, 0xd3, 0xc1, 0x93, 0x6c, 0xeb, 0x78, 0x63,
0x5c, 0xc8, 0xea, 0x67, 0xd9, 0x28, 0x34, 0x4b, 0xd2, 0x4f, 0x13, 0xc2,
0xd7, 0x27, 0xa0, 0xbf, 0x49, 0x24, 0xb8, 0x32, 0xd0, 0x8c, 0xaf, 0xf4,
0x8f, 0x0c, 0x24, 0x23, 0x6a, 0x8b, 0xfb, 0x36, 0xed, 0x2d, 0x36, 0x72,
0x60, 0xeb, 0x8c, 0x36, 0x63, 0xca, 0x09, 0x6f, 0xed, 0x4d, 0x51, 0x0b,
0x29, 0x19, 0x61, 0x38, 0x6d, 0x49, 0x58, 0x37, 0xb6, 0x63, 0x88, 0xdc,
0x29, 0x02, 0x18, 0x4f, 0x72, 0xde, 0xb9, 0x17, 0xb6, 0xec, 0x1f, 0xc8,
0x68, 0xb7, 0x1a, 0xa9, 0xcd, 0x78, 0x0f, 0xc6, 0xeb, 0x79, 0xa2, 0xb1,
0x9b, 0x7f, 0x9d, 0xc7, 0x51, 0xfd, 0xc1, 0xc0, 0x22, 0xe4, 0xf2, 0xda,
0x10, 0x13, 0x0c, 0xa4, 0xeb, 0x0b, 0x2d, 0xb4, 0x04, 0x13, 0x39, 0x6f,
0x6d, 0xd2, 0xb3, 0x3e, 0x4a, 0xea, 0x4f, 0x72, 0xa5, 0x4a, 0xc3, 0x93,
0xa8, 0x55, 0x48, 0x7b, 0x09, 0x43, 0xcc, 0x49, 0x2c, 0x09, 0x63, 0x49,
0xd7, 0xf4, 0x0a, 0x2d, 0x36, 0xa8, 0x5b, 0xa0, 0x72, 0x80, 0x7e, 0x1a,
0xe9, 0x11, 0xe6, 0x22, 0x30, 0xd1, 0x11, 0x08, 0x27, 0xd9, 0x6a, 0xfe,
0x5b, 0xf6, 0x0b, 0xa5, 0x6b, 0x26, 0x60, 0x43, 0x22, 0x0d, 0x35, 0x22,
0xc5, 0x84, 0xb1, 0x62, 0x6c, 0x0c, 0xd8, 0x73, 0x1b, 0x6b, 0xb3, 0x18,
0x9d, 0xc9, 0xe6, 0xbc, 0xa1, 0x5d, 0xc4, 0xa7, 0xe1, 0xc6, 0x36, 0x8a,
0x80, 0x9f, 0x2a, 0x00, 0xe4, 0x80, 0x56, 0x69, 0xd4, 0xb0, 0x14, 0x22,
0x19, 0x54, 0xfb, 0x28, 0x41, 0x31, 0x39, 0xf5, 0x5c, 0x67, 0xb3, 0x79,
0x6f, 0xa1, 0xf1, 0xc0, 0x66, 0xbd, 0x95, 0x8e, 0x4c, 0x43, 0x99, 0x46,
0x23, 0x79, 0x1a, 0x24, 0xc2, 0xa6, 0x6b, 0x4f, 0x5a, 0xbc, 0xe8, 0x1f,
0xa4, 0x9f, 0x3f, 0xd7, 0x66, 0x78, 0x93, 0xf6, 0x93, 0x3e, 0x84, 0xd1,
0xcf, 0x5b, 0x14, 0xc0, 0xc8, 0x8d, 0x9e, 0x3a, 0xe0, 0x63, 0xed, 0xe7,
0xd3, 0x8c, 0x70, 0x4c, 0x21, 0xfe, 0xd2, 0xcb, 0xdc, 0xc9, 0xae, 0x33,
0x77, 0x8a, 0xf5, 0xc3, 0x0d, 0x0c, 0x6e, 0xaa, 0x9e, 0x4f, 0x83, 0x3f,
0x2d, 0x86, 0xe4, 0x9e, 0x4d, 0xda, 0xf7, 0x90, 0x8b, 0x45, 0xa9, 0x7b,
0xc1, 0x96, 0xe1, 0xda, 0x52, 0xbf, 0xcf, 0x39, 0x95, 0xe5, 0xf0, 0x06,
0x62, 0xd0, 0xa4, 0x63, 0xf3, 0x34, 0x5c, 0x11, 0xe6, 0x59, 0x4f, 0x7f,
0x36, 0x9d, 0xd5, 0x1f, 0x4f, 0xda, 0x87, 0xba, 0x12, 0x2c, 0x9d, 0xd6,
0x46, 0x2f, 0xed, 0x10, 0x22, 0xd7, 0x55, 0x93, 0xbf, 0xd7, 0x0a, 0xbd,
0x54, 0xb6, 0x03, 0x67, 0x50, 0xe4, 0xd2, 0xc0, 0xe3, 0x5e, 0xf2, 0x25,
0xf3, 0x32, 0x5f, 0x90, 0xeb, 0xf8, 0xc6, 0x53, 0x84, 0x96, 0x49, 0xfb,
0x2d, 0x7f, 0xaa, 0xf1, 0xc4, 0x9f, 0x39, 0x26, 0x35, 0xfc, 0x7b, 0xd6,
0x53, 0x8d, 0x16, 0xae, 0xee, 0x4a, 0xf2, 0xcd, 0x6f, 0xe4, 0x2d, 0x0a,
0x44, 0xc5, 0xa3, 0xda, 0x9e, 0x32, 0x98, 0xd4, 0xf1, 0x3d, 0x36, 0x17,
0xc8, 0x97, 0xa2, 0x9f, 0x06, 0x72, 0x48, 0x82, 0x68, 0xa6, 0xeb, 0x87,
0xcb, 0xd3, 0x85, 0x4f, 0x72, 0xb4, 0x8f, 0x89, 0xa9, 0xbc, 0xa7, 0x6d,
0x5e, 0xfd, 0x2e, 0xc7, 0x22, 0xc8, 0xd3, 0xf8, 0xc5, 0xfe, 0x9b, 0x16,
0x27, 0xde, 0xa6, 0x6b, 0x4f, 0x20, 0x21, 0xfc, 0x26, 0xae, 0x90, 0xba,
0xa4, 0x01, 0x28, 0xc8, 0x3f, 0x50, 0x21, 0xed, 0x4f, 0xaa, 0xdc, 0x52,
0xe7, 0xf6, 0x9d, 0x63, 0x12, 0xe3, 0xdf, 0x11, 0x21, 0x43, 0x57, 0xf4,
0xd5, 0x3c, 0xbd, 0x18, 0x69, 0x93, 0x57, 0xa4, 0xb9, 0x53, 0x66, 0x73,
0x8b, 0xb0, 0xca, 0xaa, 0x06, 0xd3, 0xbc, 0x08, 0x21, 0x67, 0x6b, 0xb9,
0x61, 0xe9, 0x4f, 0x8a, 0x34, 0x1c, 0x2f, 0x47, 0x93, 0xe6, 0x3b, 0xae,
0x72, 0xa3, 0x3f, 0x88, 0xbd, 0x99, 0x7b, 0xaa, 0x4a, 0x53, 0xdb, 0x5f,
0xca, 0x34, 0xd4, 0x8a, 0xb8, 0xda, 0xc7, 0x41, 0x2e, 0xcd, 0x52, 0x03,
0x46, 0x0c, 0x1a, 0x24, 0x4b, 0xb0, 0x16, 0x35, 0x84, 0xc0, 0x98, 0x63,
0xe3, 0x3e, 0xfd, 0x54, 0xe1, 0x82, 0xdd, 0xbc, 0xfd, 0x2b, 0xaf, 0xec,
0x36, 0x4e, 0xb0, 0xc7, 0xb6, 0xbb, 0x7f, 0x49, 0x0b, 0x53, 0x0b, 0x12,
0xe2, 0xef, 0xbf, 0x3b, 0xdf, 0xc8, 0x0b, 0xe2, 0x2a, 0x8d, 0x8b, 0x52,
0x83, 0x64, 0x8c, 0x4c, 0x43, 0x92, 0x7c, 0x2f, 0x54, 0x84, 0x74, 0xb5,
0x21, 0x19, 0xc4, 0x29, 0x2e, 0x9d, 0x6a, 0xa1, 0xd4, 0x56, 0x85, 0x6e,
0xeb, 0xbc, 0xa4, 0x5f, 0xee, 0x32, 0x42, 0x32, 0xed, 0x0a, 0xf0, 0xe3,
0xee, 0x74, 0x15, 0x58, 0x5a, 0x4d, 0xac, 0xb1, 0x10, 0x84, 0x80, 0x28,
0x75, 0x8b, 0x1a, 0x37, 0xbb, 0xc0, 0x1c, 0xfe, 0x9b, 0x82, 0x1c, 0x46,
0x07, 0x3a, 0x6a, 0x48, 0xba, 0xd2, 0xf6, 0xfc, 0x8c, 0xed, 0x88, 0x62,
0x1e, 0x4c, 0x9f, 0x17, 0x17, 0xef, 0x3e, 0x22, 0xad, 0x03, 0x5d, 0x8d,
0x93, 0x5e, 0x13, 0x41, 0x48, 0x44, 0x4c, 0x92, 0x11, 0x73, 0xe9, 0x1c,
0xfa, 0x24, 0x78, 0x0a, 0x57, 0x81, 0x86, 0xdc, 0x42, 0x09, 0xa6, 0xb3,
0xbd, 0x31, 0x34, 0x64, 0x12, 0x3b, 0xdb, 0xe5, 0x85, 0x90, 0x97, 0xc4,
0x70, 0x6b, 0x5f, 0xfb, 0x85, 0xb5, 0x5d, 0xa8, 0xd8, 0xaa, 0xd0, 0x5a,
0xcc, 0xdb, 0x86, 0x25, 0x13, 0x85, 0xb6, 0xaf, 0x58, 0x3d, 0x6f, 0xc3,
0x45, 0x05, 0x4f, 0x3b, 0x86, 0xe0, 0x5d, 0x92, 0x08, 0xb2, 0x5c, 0x2d,
0xe4, 0xe5, 0xdf, 0xb6, 0x66, 0x0a, 0x57, 0x24, 0xa5, 0x4d, 0x34, 0x6c,
0x3f, 0x27, 0xe9, 0xe3, 0xbd, 0x2b, 0x28, 0xc2, 0x35, 0x1a, 0x8d, 0x69,
0xb5, 0xd4, 0x50, 0x6b, 0xb1, 0xb1, 0xb6, 0xca, 0xf6, 0x10, 0xa5, 0x12,
0x23, 0x7d, 0x6d, 0x98, 0x8b, 0x15, 0x62, 0x76, 0xd6, 0x45, 0xdb, 0xd1,
0xdd, 0xb5, 0xed, 0x34, 0x93, 0x0e, 0xa7, 0x01, 0x7b, 0xd5, 0x73, 0x9a,
0x98, 0xf8, 0x08, 0x01, 0xee, 0x4f, 0x85, 0x82, 0x1f, 0xb1, 0xf1, 0x2b,
0x94, 0x52, 0xd5, 0xb0, 0x68, 0xe3, 0xe6, 0xc6, 0x58, 0xe4, 0x90, 0x65,
0xdd, 0xe4, 0xb1, 0x05, 0x4f, 0x5d, 0xd3, 0x5b, 0xca, 0xad, 0x26, 0xb6,
0x37, 0x4d, 0xbb, 0x9c, 0xb8, 0xef, 0x8b, 0x20, 0x7e, 0x41, 0x21, 0x5e,
0x4a, 0xd3, 0x8b, 0x9c, 0x84, 0xda, 0xdf, 0x66, 0x37, 0x46, 0xda, 0x2e,
0x0b, 0xcd, 0x62, 0x1c, 0x33, 0x0a, 0xc4, 0x1b, 0x8e, 0x33, 0x0b, 0x5f,
0x14, 0x26, 0x09, 0x08, 0x03, 0x78, 0xc5, 0xe0, 0xd2, 0xbc, 0x8e, 0xbf,
0xdc, 0xb2, 0xca, 0xdf, 0x5a, 0x3a, 0xe9, 0x6c, 0xeb, 0x73, 0xaf, 0x1e,
0x93, 0x71, 0x3d, 0x4d, 0xff, 0x87, 0xcd, 0x95, 0x4a, 0x0f, 0xf8, 0xea,
0xa4, 0x51, 0x2c, 0x6f, 0x58, 0xd8, 0xc8, 0x6b, 0xc0, 0x46, 0xa6, 0xca,
0xaa, 0xd7, 0xe6, 0x4a, 0x67, 0xa4, 0xf9, 0xed, 0x5c, 0x04, 0x1b, 0xd1,
0x04, 0x1c, 0xe4, 0x4a, 0xcc, 0x03, 0xb2, 0xc4, 0x0e, 0x67, 0x32, 0x76,
0xb7, 0xdb, 0x8b, 0xa2, 0x64, 0x48, 0xed, 0x7c, 0xa6, 0x75, 0x76, 0x41,
0x7e, 0xef, 0x2f, 0x16, 0x74, 0xa9, 0xa9, 0xa3, 0x40, 0xca, 0x08, 0x31,
0xf3, 0x0c, 0x4e, 0xa3, 0xf5, 0x69, 0xd6, 0x8b, 0x56, 0xb0, 0xd0, 0x9d,
0x88, 0xda, 0x20, 0x41, 0x3c, 0x21, 0xb9, 0x97, 0xee, 0xf3, 0x7b, 0x9c,
0xd9, 0x5e, 0x4d, 0x6d, 0xfb, 0xec, 0x6a, 0xb1, 0x5f, 0x41, 0x74, 0xea,
0x60, 0xc2, 0xa5, 0x81, 0xb7, 0x04, 0x65, 0xc3, 0x75, 0x7c, 0xa4, 0x69,
0x08, 0xa2, 0xf6, 0x44, 0x8d, 0x0f, 0x74, 0xb5, 0xa1, 0x5f, 0x3b, 0xcf,
0xc2, 0x00, 0xe2, 0x29, 0x86, 0xf8, 0x01, 0x1b, 0x0a, 0xa4, 0x00, 0xd8,
0x79, 0x19, 0xac, 0x69, 0x73, 0x69, 0xa1, 0x8d, 0xda, 0xd7, 0xce, 0xb6,
0x1b, 0xce, 0x21, 0x9e, 0xbd, 0x48, 0x77, 0x51, 0x7a, 0xa2, 0x64, 0x76,
0xec, 0x70, 0xe9, 0x4f, 0xa5, 0x75, 0x71, 0xd2, 0x42, 0x69, 0x47, 0x5b,
0xb0, 0xf0, 0x24, 0x8b, 0x12, 0xe2, 0xee, 0x71, 0x13, 0xfb, 0x7d, 0x49,
0xc3, 0x89, 0x52, 0xb1, 0xfd, 0xc1, 0xd1, 0x44, 0xfd, 0xf6, 0xf2, 0xbe,
0x36, 0xcc, 0xba, 0x24, 0x4d, 0x23, 0x3d, 0x51, 0x3c, 0x8b, 0x37, 0x0e,
0xc2, 0x3f, 0x40, 0xa7, 0x3d, 0x77, 0xc7, 0x7c, 0x89, 0x65, 0x50, 0x3d,
0xd1, 0x76, 0xde, 0x7d, 0xd1, 0x63, 0x2a, 0x9e, 0xb7, 0xbd, 0xde, 0xc8,
0xc3, 0x59, 0xff, 0x06, 0x0c, 0x99, 0xda, 0xbe, 0xcb, 0x76, 0xde, 0xbf,
0xb1, 0x26, 0x08, 0xab, 0xb3, 0x12, 0x83, 0x86, 0xda, 0x5f, 0xca, 0x73,
0x3e, 0x83, 0xe4, 0xa2, 0xea, 0x98, 0x29, 0x3f, 0x46, 0x3b, 0x4c, 0x90,
0xab, 0x49, 0x39, 0xd7, 0xcf, 0x54, 0xdc, 0xe3, 0x1a, 0x30, 0x77, 0xe9,
0x6b, 0x83, 0xb0, 0xc8, 0xef, 0x14, 0xab, 0xd2, 0x7f, 0xcf, 0xea, 0xd2,
0x25, 0xa4, 0xa2, 0x62, 0xa3, 0xfd, 0xa5, 0xb8, 0xbd, 0xc6, 0x83, 0x1c,
0xf6, 0x73, 0xe6, 0xcc, 0x29, 0x08, 0xdb, 0x36, 0x90, 0x8c, 0x6f, 0xca,
0xb9, 0xfe, 0xb9, 0x53, 0xda, 0x28, 0x6c, 0x29, 0x68, 0xbb, 0x2e, 0xf4,
0xd7, 0x51, 0xb1, 0x91, 0xfa, 0x15, 0xee, 0x2f, 0x75, 0xbd, 0x98, 0x15,
0x8d, 0x76, 0x7d, 0x25, 0x31, 0xe6, 0x3d, 0xb1, 0xd7, 0xd6, 0xcd, 0x15,
0x8c, 0x55, 0xfd, 0xed, 0x71, 0xde, 0x40, 0xab, 0x79, 0x42, 0xa9, 0x41,
0x41, 0x6b, 0x5f, 0xea, 0xe7, 0xfd, 0xdd, 0xe2, 0x83, 0xca, 0x2f, 0xd3,
0xbc, 0xa5, 0xa8, 0x8b, 0xf9, 0x45, 0xa0, 0xa1, 0x07, 0x36, 0x91, 0x7e,
0x1a, 0x04, 0x88, 0x4c, 0x44, 0x97, 0x74, 0xe9, 0xc1, 0x21, 0x36, 0x58,
0x04, 0x81, 0x42, 0x5d, 0x6d, 0xee, 0x31, 0x9d, 0x39, 0xa5, 0x46, 0xa3,
0x2d, 0xfe, 0x75, 0x3e, 0x18, 0x6d, 0xd4, 0x8f, 0xda, 0x13, 0x5e, 0x6d,
0x5c, 0x14, 0x1a, 0x92, 0x2d, 0x6c, 0x86, 0x89, 0xf8, 0x34, 0x9c, 0x11,
0x8e, 0x0d, 0xc9, 0xe1, 0x78, 0xaa, 0x79, 0x8b, 0xa3, 0xbe, 0x94, 0x1d,
0xe9, 0xbe, 0x9d, 0x79, 0xc1, 0x01, 0xee, 0xfc, 0x09, 0xce, 0xd5, 0xec,
0x71, 0x9b, 0xfe, 0x78, 0x2a, 0x16, 0xe9, 0x47, 0x53, 0x66, 0x03, 0x37,
0x69, 0x8d, 0x68, 0x58, 0xab, 0x4b, 0x84, 0x16, 0x4a, 0xd7, 0x17, 0x04,
0x91, 0xb4, 0x40, 0x78, 0xb1, 0x7b, 0xa0, 0xad, 0x14, 0x5d, 0xde, 0xb6,
0x3f, 0xd8, 0xb6, 0xd1, 0x80, 0x51, 0x2f, 0x70, 0x22, 0x78, 0xf7, 0xfd,
0xb6, 0x94, 0x34, 0x6c, 0x36, 0x18, 0x4c, 0xde, 0x6d, 0x44, 0x07, 0x7b,
0x53, 0x6f, 0x94, 0xb5, 0xd9, 0xa4, 0xe9, 0x49, 0xaf, 0x7e, 0x10, 0x26,
0x42, 0xc3, 0x76, 0xcb, 0x1a, 0x87, 0xbc, 0xc7, 0x90, 0xa3, 0xbc, 0x49,
0x9e, 0x97, 0x4b, 0x2f, 0xd1, 0x73, 0x9a, 0xe9, 0x40, 0x1a, 0xa7, 0x9f,
0x3b, 0xe2, 0x9a, 0x6d, 0xb3, 0xce, 0x6c, 0xee, 0xa9, 0x46, 0xd7, 0x9c,
0x8a, 0x88, 0x61, 0x62, 0x3b, 0x15, 0xea, 0x2c, 0x23, 0x41, 0xfd, 0x8b,
0x07, 0xac, 0x3c, 0xac, 0xa0, 0x6d, 0x62, 0xcf, 0x19, 0x35, 0x6d, 0xb7,
0xaf, 0xee, 0xec, 0xec, 0xb2, 0xa9, 0xb8, 0xd3, 0xd6, 0x40, 0xd1, 0x7a,
0x30, 0x08, 0xa8, 0xa6, 0x2d, 0x23, 0x64, 0xcb, 0xe1, 0x3c, 0x0d, 0x66,
0xbd, 0x63, 0xbe, 0x45, 0x55, 0xe6, 0x06, 0x66, 0xf1, 0x92, 0x69, 0x44,
0x85, 0xc9, 0x16, 0xd3, 0x3a, 0x46, 0x19, 0x95, 0x11, 0xae, 0xec, 0xed,
0xd8, 0x74, 0x0e, 0xea, 0xb5, 0xfd, 0xfe, 0xa0, 0x98, 0xd2, 0x87, 0xbb,
0x67, 0x83, 0x29, 0x01, 0xf9, 0xfd, 0x0a, 0x26, 0x73, 0x25, 0x68, 0xbe,
0xe4, 0xfa, 0x21, 0x7b, 0xde, 0x49, 0x07, 0x08, 0xed, 0x9c, 0x20, 0x1b,
0x30, 0x2d, 0x16, 0xfb, 0x9b, 0x54, 0xd5, 0xb4, 0xa3, 0xab, 0x92, 0x64,
0x82, 0x03, 0xf7, 0x51, 0x01, 0xa2, 0x65, 0xd7, 0x7e, 0x11, 0xa2, 0xcc,
0x99, 0x39, 0x84, 0xd9, 0x79, 0x14, 0x67, 0x73, 0xa7, 0x02, 0x52, 0x28,
0x98, 0xbb, 0x96, 0xe4, 0x73, 0x66, 0x34, 0xf3, 0x12, 0x59, 0x9b, 0x3d,
0xa1, 0x21, 0x57, 0x24, 0x5e, 0x85, 0xb7, 0xbd, 0xb3, 0x2d, 0xa6, 0xbf,
0x0f, 0x88, 0x93, 0x98, 0x9e, 0xb7, 0xd5, 0x89, 0xa9, 0xe1, 0xf3, 0x7d,
0xbf, 0xe6, 0x04, 0x31, 0x05, 0x33, 0x59, 0x36, 0xfc, 0x2f, 0xc8, 0x97,
0xc2, 0xe2, 0x63, 0xf6, 0xa3, 0x4b, 0x08, 0x35, 0x00, 0xd2, 0x6d, 0xb1,
0x37, 0xb0, 0xb1, 0xa2, 0x56, 0x95, 0x40, 0xc1, 0xbf, 0xe6, 0xc6, 0xe0,
0x1f, 0x9e, 0x66, 0xd3, 0x7f, 0xa7, 0xad, 0x1d, 0x7c, 0x13, 0x5e, 0x9d,
0x9a, 0x54, 0xd2, 0x66, 0x1a, 0xe2, 0x1a, 0xbc, 0x0c, 0x85, 0xcc, 0x99,
0xf1, 0xc4, 0x69, 0x23, 0x1a, 0xa6, 0xb6, 0xd5, 0x52, 0xac, 0xa0, 0x6a,
0xc8, 0x9c, 0x4d, 0x95, 0x82, 0x30, 0x14, 0xf7, 0x7d, 0xb1, 0x8b, 0x7b,
0xef, 0x89, 0x36, 0x15, 0x42, 0xaa, 0x27, 0xba, 0x1e, 0x4d, 0xba, 0x17,
0x79, 0xde, 0x13, 0x87, 0xa0, 0xc4, 0x26, 0xc3, 0x1a, 0x68, 0x68, 0x24,
0x9b, 0x48, 0x92, 0x38, 0x99, 0xd9, 0xc5, 0x0f, 0x9d, 0xaa, 0x35, 0xa1,
0x22, 0x28, 0xb8, 0xc8, 0x89, 0xe2, 0xdd, 0xf7, 0xfd, 0x99, 0xf3, 0xec,
0x86, 0xdf, 0x3f, 0x37, 0xd1, 0x7a, 0x3a, 0x2f, 0x63, 0x6d, 0xa3, 0x6b,
0xc1, 0xe5, 0xf3, 0x9e, 0x3c, 0xaf, 0xd9, 0xe9, 0x24, 0x1d, 0x17, 0x08,
0x03, 0x45, 0x68, 0xe2, 0x93, 0x69, 0x61, 0xee, 0x5a, 0x71, 0x06, 0x62,
0x5e, 0xfc, 0xf3, 0xae, 0xc7, 0x00, 0x00, 0x06, 0x23, 0x49, 0x44, 0x41,
0x54, 0x53, 0x4a, 0xbb, 0xea, 0x8b, 0xde, 0x88, 0xac, 0xe9, 0xff, 0xd8,
0x4e, 0xfd, 0x1a, 0x4f, 0xe4, 0x71, 0x7d, 0x22, 0x85, 0x3a, 0x3b, 0xcf,
0x18, 0x5e, 0x39, 0x04, 0x01, 0x69, 0xd9, 0x95, 0x69, 0x65, 0xc6, 0x0d,
0x79, 0x0e, 0xa9, 0x75, 0x9e, 0x17, 0xd7, 0x0a, 0xf5, 0xa4, 0x81, 0x95,
0x41, 0x76, 0xb6, 0x77, 0x77, 0xef, 0x23, 0x5c, 0x94, 0x29, 0x33, 0x7b,
0x97, 0xac, 0xc9, 0xcf, 0x15, 0xce, 0xc6, 0x46, 0x9a, 0xcf, 0x7a, 0x62,
0x84, 0x65, 0xe2, 0x52, 0x5e, 0x87, 0x82, 0x23, 0xe0, 0xc0, 0x2c, 0x49,
0x43, 0x4d, 0x62, 0x69, 0xa8, 0xb3, 0x48, 0x73, 0xb6, 0x1b, 0x5b, 0x0e,
0x4d, 0x7f, 0xa0, 0x8d, 0xec, 0x37, 0xba, 0x5c, 0xcd, 0x66, 0x95, 0x7a,
0x57, 0x4c, 0xc6, 0x74, 0x4f, 0x9c, 0x35, 0x38, 0xf9, 0xfc, 0x43, 0xb4,
0x41, 0xc9, 0x5c, 0xee, 0x43, 0x2c, 0x85, 0x74, 0xf5, 0x7c, 0xfe, 0x61,
0x24, 0x76, 0xec, 0x60, 0xc1, 0x8c, 0x00, 0x9e, 0xbb, 0xa8, 0xd3, 0x9b,
0xdb, 0xa9, 0x14, 0xec, 0x75, 0xf6, 0x61, 0x6f, 0xd2, 0x2e, 0x9b, 0xcf,
0x78, 0x9c, 0x4c, 0xb1, 0xe4, 0x5b, 0x8a, 0x8b, 0x74, 0xa4, 0xf6, 0x84,
0xdc, 0x1e, 0xe4, 0x30, 0x36, 0x85, 0xf9, 0x87, 0xbd, 0xa9, 0xb9, 0xa3,
0x36, 0x65, 0xd1, 0xd5, 0x8e, 0xb5, 0xdb, 0x90, 0xc7, 0xc8, 0x97, 0x22,
0xc6, 0xfe, 0xc7, 0xfd, 0xc1, 0x24, 0xdc, 0x9d, 0xcc, 0x02, 0x96, 0x16,
0x5b, 0x9d, 0x43, 0xba, 0x24, 0x0b, 0xb3, 0x70, 0x46, 0x98, 0x38, 0x28,
0x69, 0x66, 0x64, 0xf1, 0x43, 0x9d, 0x07, 0x2c, 0x1c, 0x2a, 0xfd, 0xa1,
0x76, 0x42, 0x10, 0x4f, 0x45, 0x38, 0xf7, 0xbc, 0x24, 0xc4, 0x39, 0xc8,
0x47, 0xe6, 0x77, 0x52, 0x20, 0xcd, 0xa9, 0x67, 0xc3, 0xaf, 0x81, 0x40,
0x44, 0x17, 0x23, 0x66, 0x76, 0x05, 0x68, 0x18, 0xb2, 0xbd, 0x89, 0x46,
0xa6, 0x21, 0xc7, 0x61, 0x23, 0xb5, 0xf3, 0x80, 0x7b, 0x13, 0xfe, 0xd4,
0xc9, 0x95, 0xf0, 0x4a, 0x2d, 0x05, 0x3f, 0x65, 0x0d, 0xca, 0x93, 0x64,
0xf3, 0x60, 0xea, 0xb3, 0x33, 0xb9, 0x05, 0x20, 0x3d, 0x96, 0x51, 0x02,
0x66, 0xc9, 0xcb, 0x38, 0x9b, 0x18, 0x90, 0x4b, 0x83, 0x09, 0x9e, 0x61,
0xfd, 0xa4, 0xcc, 0xbd, 0xb6, 0xb3, 0xf2, 0x72, 0x2b, 0xb7, 0xa6, 0x33,
0x9d, 0x5f, 0xd5, 0x1a, 0x89, 0x4c, 0x02, 0x42, 0x89, 0x42, 0x2b, 0x14,
0xe3, 0x81, 0x4d, 0x5e, 0x15, 0xae, 0x98, 0x46, 0xf9, 0x1c, 0x52, 0x18,
0xa4, 0xce, 0x68, 0x94, 0x34, 0x65, 0x1e, 0xb0, 0xe1, 0xf9, 0x9d, 0xc4,
0xa5, 0xed, 0x54, 0x03, 0xf5, 0x81, 0xd2, 0x6f, 0xa3, 0xf8, 0x3a, 0xee,
0xbf, 0x2a, 0x39, 0x8b, 0x7b, 0x68, 0xcf, 0x1f, 0x70, 0x30, 0xa5, 0xbd,
0x18, 0xe3, 0xdc, 0xb3, 0x29, 0x92, 0x71, 0x32, 0x0f, 0x98, 0x4c, 0x2e,
0xe7, 0x69, 0xd8, 0x5a, 0xc0, 0x3c, 0x85, 0x1d, 0x74, 0x28, 0x37, 0xcf,
0x41, 0x55, 0xd2, 0x7f, 0x71, 0x7e, 0xec, 0xa4, 0xd7, 0x97, 0x22, 0x5e,
0x29, 0x88, 0xde, 0xeb, 0x89, 0x65, 0x98, 0xcc, 0x11, 0xd2, 0x9b, 0x70,
0x80, 0x53, 0x07, 0xe0, 0x08, 0x5c, 0xd0, 0x9d, 0xf5, 0x78, 0xf5, 0x9b,
0x44, 0x7a, 0x31, 0x02, 0x9e, 0x9d, 0x47, 0xba, 0x34, 0xf3, 0xf3, 0x74,
0x77, 0xb7, 0x38, 0xbd, 0xcb, 0x86, 0x43, 0xfe, 0xa9, 0x6d, 0xb6, 0x82,
0x9f, 0xe6, 0x9d, 0x8a, 0xe8, 0x54, 0x00, 0xe8, 0xd5, 0x49, 0xca, 0x6a,
0xe2, 0x11, 0xc1, 0xd7, 0x97, 0xf4, 0x7e, 0x80, 0xf8, 0x57, 0x24, 0x41,
0x7c, 0x1a, 0x5c, 0xbd, 0x93, 0x75, 0x5e, 0x3c, 0x22, 0x4b, 0x61, 0xf0,
0xfa, 0x17, 0x8e, 0xac, 0xed, 0x21, 0x4b, 0x5f, 0x60, 0x75, 0x08, 0xc7,
0x29, 0x3d, 0xb8, 0x89, 0x29, 0x87, 0xfb, 0x9f, 0xe8, 0x52, 0x11, 0xb4,
0xe7, 0x02, 0x97, 0x60, 0xf6, 0x6b, 0xfc, 0xbd, 0x1e, 0x8c, 0xb5, 0x14,
0x78, 0x95, 0x09, 0xbb, 0xf2, 0x44, 0xe5, 0x61, 0x4e, 0xaa, 0xf3, 0xca,
0x36, 0x32, 0x3b, 0x8f, 0x17, 0xdb, 0x19, 0x65, 0xb5, 0x77, 0xe8, 0xe9,
0xe6, 0x3b, 0x58, 0x14, 0x29, 0xcb, 0xde, 0xbc, 0x99, 0x8d, 0x6e, 0xde,
0xcc, 0xb2, 0x77, 0xb2, 0x9b, 0xa4, 0x22, 0xde, 0xbc, 0x79, 0xf3, 0xe6,
0xdf, 0x04, 0xcf, 0x6c, 0x6e, 0x13, 0xc6, 0xfd, 0xff, 0x9b, 0xdc, 0xbc,
0x89, 0x1d, 0x3f, 0x8f, 0x83, 0xb7, 0x36, 0x79, 0x11, 0x82, 0x0c, 0x1f,
0x89, 0x09, 0x6f, 0xbe, 0x33, 0xba, 0x49, 0xc7, 0xd2, 0x0f, 0xdf, 0x7c,
0x83, 0x97, 0x31, 0xc8, 0xb0, 0x1a, 0xd3, 0xd0, 0x49, 0xe0, 0xb2, 0x75,
0xb4, 0xeb, 0x0b, 0x73, 0x48, 0x93, 0xe6, 0xa8, 0x33, 0x3a, 0x73, 0x3c,
0x23, 0xe7, 0xd1, 0x0d, 0xb5, 0x03, 0x4d, 0xd7, 0x39, 0xa1, 0xa7, 0x50,
0x96, 0x62, 0x31, 0xe6, 0xf1, 0x97, 0x9e, 0x79, 0xe9, 0xfc, 0x4b, 0xdf,
0xcb, 0x78, 0x51, 0x1d, 0x3a, 0xc4, 0x75, 0x9e, 0x79, 0xe6, 0xa5, 0x97,
0x5e, 0xfa, 0xde, 0x0a, 0x2f, 0x8b, 0xc2, 0xcb, 0xbb, 0xd4, 0x69, 0xaf,
0xeb, 0xd5, 0x65, 0x55, 0x1a, 0x3d, 0x45, 0x73, 0xe9, 0x48, 0x12, 0xa3,
0x8e, 0x6e, 0xed, 0x21, 0x42, 0xfc, 0xac, 0x73, 0xfd, 0xe1, 0x91, 0xac,
0xc0, 0x23, 0x8b, 0xe7, 0x70, 0x56, 0x85, 0x57, 0x2d, 0x41, 0x33, 0x91,
0x17, 0x04, 0x71, 0xa0, 0x6b, 0x9a, 0x04, 0xae, 0x2e, 0xaa, 0x63, 0x68,
0x0f, 0x2f, 0x85, 0x81, 0x08, 0x9e, 0x17, 0x31, 0x89, 0x79, 0xcd, 0x97,
0x18, 0xd3, 0x55, 0x62, 0xbb, 0x1e, 0x0f, 0x9d, 0x69, 0xf4, 0x42, 0x73,
0xc8, 0x0b, 0xa7, 0x18, 0x5e, 0xdb, 0x84, 0x84, 0x32, 0x3e, 0x3e, 0x1a,
0x39, 0x4d, 0x59, 0x5f, 0x88, 0x90, 0x74, 0xd0, 0x17, 0xc2, 0x03, 0x96,
0x71, 0x87, 0x9e, 0xac, 0x99, 0x64, 0x17, 0x3c, 0xe1, 0x35, 0x91, 0x5c,
0x2f, 0xdf, 0xe1, 0xf2, 0xd1, 0x9e, 0xac, 0x4b, 0xa3, 0x4b, 0xf3, 0xf0,
0x74, 0x38, 0xbe, 0x15, 0x74, 0x96, 0xe1, 0x4c, 0xa7, 0x33, 0xa4, 0x20,
0x34, 0xe4, 0x35, 0x86, 0xe2, 0xc4, 0x0c, 0xff, 0x7c, 0xf4, 0xe3, 0xe6,
0x88, 0x67, 0x3f, 0xe1, 0x76, 0x67, 0x58, 0x39, 0x87, 0x57, 0x9c, 0xe1,
0xd5, 0x66, 0x62, 0x83, 0x55, 0x93, 0xb0, 0x0a, 0x0b, 0xaf, 0x60, 0x02,
0xac, 0xc6, 0x7c, 0x97, 0x93, 0x4b, 0x58, 0xc7, 0x86, 0x01, 0xca, 0x7a,
0x50, 0xc6, 0xc8, 0x7a, 0x3d, 0xc0, 0xcb, 0x8b, 0x60, 0xd1, 0x93, 0x79,
0x23, 0x89, 0xe9, 0xf6, 0x65, 0xc3, 0xce, 0x70, 0x34, 0x92, 0x55, 0x23,
0xe8, 0xf0, 0xe3, 0xc3, 0x23, 0x23, 0x5d, 0xf4, 0x2a, 0xc4, 0x71, 0xc0,
0xca, 0x10, 0x79, 0xe0, 0x18, 0xb0, 0xd1, 0x75, 0x6a, 0x78, 0x11, 0x1e,
0x23, 0x6b, 0xd8, 0xe8, 0x2a, 0x3c, 0xae, 0x00, 0xd2, 0xd5, 0xae, 0x64,
0xd5, 0x1e, 0x3a, 0x9c, 0xdf, 0xf1, 0x9a, 0x5a, 0x24, 0xe7, 0xb5, 0xe3,
0x43, 0x9c, 0x5e, 0xba, 0xbe, 0x88, 0x82, 0xbc, 0xc2, 0x91, 0x4c, 0x7e,
0xe2, 0xf9, 0xba, 0x71, 0x6c, 0x31, 0xf1, 0x9a, 0x3b, 0x58, 0x0b, 0x8a,
0xa9, 0xa6, 0x8f, 0xd8, 0xc8, 0xfa, 0x33, 0xb1, 0x2e, 0xd0, 0xc3, 0x1d,
0x39, 0x3c, 0x27, 0x46, 0x56, 0xf6, 0x0a, 0x74, 0x19, 0x29, 0x59, 0x58,
0x0a, 0x58, 0x87, 0xd5, 0xff, 0x8e, 0x89, 0x4f, 0x8c, 0xd0, 0x24, 0xf5,
0xce, 0x99, 0xe3, 0x23, 0x59, 0xfd, 0x0a, 0x74, 0xa8, 0x27, 0x00, 0xe0,
0xf2, 0xa2, 0x38, 0xb2, 0xfc, 0x17, 0xe2, 0x02, 0xf9, 0x4e, 0x97, 0x13,
0xf2, 0x98, 0x70, 0x46, 0x17, 0xc5, 0x92, 0x65, 0x94, 0x62, 0x3e, 0x14,
0x9f, 0xea, 0x72, 0x14, 0x30, 0x63, 0x39, 0x2c, 0x50, 0xb1, 0xb3, 0xf4,
0xf0, 0x68, 0x38, 0xea, 0xc8, 0x3a, 0x51, 0x49, 0xf8, 0xbf, 0x66, 0x47,
0x7f, 0x09, 0xcf, 0x5f, 0x38, 0x13, 0xd5, 0x44, 0xa1, 0x5e, 0xf0, 0x5d,
0x5e, 0x23, 0x28, 0xe6, 0xa2, 0x34, 0x53, 0x86, 0x99, 0x51, 0xb0, 0x3f,
0xa9, 0x44, 0x34, 0x4a, 0x3b, 0xc5, 0xc4, 0x99, 0x3b, 0x59, 0x26, 0x4b,
0x0e, 0x4f, 0xc0, 0xe8, 0xe1, 0xe8, 0x4c, 0x73, 0x98, 0xf1, 0xba, 0x18,
0x58, 0x0c, 0xa0, 0x72, 0x3c, 0x93, 0x71, 0x7a, 0xba, 0x34, 0x92, 0x2c,
0x9d, 0x43, 0xd4, 0x63, 0xd5, 0xe3, 0x21, 0xdb, 0x99, 0xaf, 0xcc, 0x03,
0x1f, 0x4c, 0x57, 0x19, 0xd2, 0x25, 0x7a, 0x64, 0x25, 0x22, 0xba, 0x1f,
0xca, 0xa8, 0x46, 0x58, 0x18, 0xfc, 0xea, 0x22, 0xbe, 0xc6, 0xf7, 0xcd,
0xe1, 0xa1, 0xd1, 0xa8, 0xc3, 0xcb, 0x36, 0x05, 0x9d, 0x1f, 0x1f, 0xc9,
0x62, 0x63, 0x37, 0xc8, 0x1b, 0xaf, 0x19, 0x24, 0x80, 0x74, 0x55, 0x1e,
0x1a, 0x24, 0xa4, 0xce, 0x0d, 0x64, 0xfd, 0x1a, 0x5e, 0x6c, 0x27, 0xc0,
0x9f, 0xac, 0xb5, 0x63, 0x64, 0xa9, 0x1e, 0x4f, 0xd6, 0x90, 0xd2, 0x75,
0x7b, 0xf8, 0x67, 0x81, 0xae, 0xc4, 0x64, 0x3a, 0x5f, 0xff, 0xda, 0x88,
0x11, 0x56, 0xeb, 0xc3, 0xb2, 0x2c, 0xdf, 0xc5, 0x63, 0x94, 0x45, 0x81,
0x78, 0xe0, 0xb3, 0xb9, 0x98, 0x89, 0x54, 0x32, 0x2a, 0xc6, 0xcb, 0xea,
0xd2, 0xe5, 0x4f, 0x78, 0xef, 0xd5, 0x78, 0xbf, 0xeb, 0x5a, 0xd0, 0x55,
0x61, 0x69, 0x5e, 0x86, 0xa7, 0x6a, 0x17, 0x62, 0x4a, 0x48, 0xd2, 0xb9,
0x24, 0x7b, 0xf3, 0x89, 0xe3, 0x43, 0x96, 0x27, 0x23, 0xe3, 0x74, 0x69,
0xa0, 0x5c, 0x4a, 0x71, 0x03, 0x59, 0xe7, 0xaa, 0xe6, 0x05, 0x16, 0x3a,
0x7f, 0x5d, 0xc3, 0x22, 0x3b, 0xac, 0x61, 0x78, 0x11, 0x25, 0x63, 0xf1,
0xb1, 0x26, 0x42, 0xf3, 0x0a, 0x03, 0x77, 0xcd, 0x19, 0x17, 0x6b, 0x13,
0x9d, 0xe1, 0x75, 0xa5, 0x30, 0x6d, 0xe5, 0x7a, 0x75, 0x04, 0x84, 0x47,
0xce, 0xfc, 0x46, 0x22, 0xab, 0x77, 0xb9, 0x76, 0xf8, 0x9e, 0x33, 0xeb,
0x2a, 0x1c, 0x56, 0xf7, 0xae, 0x2c, 0x3a, 0xc4, 0x9f, 0x1c, 0x5e, 0x77,
0x08, 0x96, 0xc1, 0x51, 0xe3, 0x60, 0x57, 0x8c, 0x52, 0xdb, 0x00, 0x78,
0x8c, 0x55, 0xf7, 0x57, 0x73, 0x6d, 0xd4, 0x3c, 0x73, 0x1c, 0x5c, 0xfa,
0x64, 0xf9, 0x66, 0xfc, 0x9d, 0x9a, 0x61, 0x25, 0x42, 0xa0, 0xdc, 0x6f,
0x61, 0xe4, 0x0e, 0x0f, 0x4e, 0x17, 0x53, 0x62, 0x08, 0xac, 0x34, 0xf9,
0x45, 0x16, 0x50, 0xaa, 0xca, 0x42, 0x4a, 0xb2, 0xb6, 0x12, 0xa0, 0x31,
0xd1, 0x18, 0x5a, 0x60, 0xb5, 0xae, 0xde, 0x04, 0x59, 0x60, 0xaa, 0xe6,
0x98, 0xac, 0x96, 0xfc, 0x6d, 0xe9, 0x70, 0xe9, 0xe1, 0x00, 0x19, 0x69,
0xb9, 0xdf, 0xf9, 0x7a, 0x48, 0x3c, 0x7e, 0x1d, 0xb2, 0xd8, 0x45, 0xb1,
0x8a, 0xfa, 0x36, 0x5f, 0x2e, 0x09, 0x3f, 0xac, 0xca, 0x2f, 0x00, 0x8d,
0x57, 0x90, 0x72, 0xad, 0x41, 0xd4, 0x5f, 0xf1, 0x91, 0x38, 0x65, 0xfd,
0xcc, 0x11, 0xb2, 0x16, 0x65, 0x23, 0x23, 0x91, 0x15, 0x8f, 0xe4, 0x1f,
0x4f, 0x76, 0x59, 0xa4, 0x9a, 0xfd, 0xaa, 0x96, 0x2f, 0x8b, 0x44, 0xdf,
0x56, 0x1c, 0xa6, 0x23, 0xb9, 0xb8, 0x35, 0x67, 0xea, 0x0b, 0xf9, 0xe8,
0xf2, 0xb7, 0x35, 0x5e, 0xdc, 0xa9, 0xe6, 0xc8, 0xb1, 0xb4, 0x99, 0x47,
0x2b, 0xa5, 0xd2, 0x61, 0x59, 0xff, 0xa9, 0x2c, 0x7f, 0x65, 0x67, 0xb2,
0x04, 0x54, 0x61, 0x2b, 0x95, 0x8b, 0x7b, 0xca, 0xb4, 0x95, 0xf0, 0x34,
0xd9, 0x59, 0xae, 0x94, 0x0b, 0x5f, 0x4f, 0x4e, 0x31, 0x75, 0x90, 0x53,
0xad, 0xfd, 0xcb, 0x2f, 0xd3, 0xf8, 0xff, 0x00, 0xd8, 0x7b, 0x50, 0x7d,
0x66, 0x2d, 0x6e, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
0xae, 0x42, 0x60, 0x82
};
unsigned int dosbox224x186_png_len = 9892;

996
include/dosbox224x224.h Normal file
View File

@ -0,0 +1,996 @@
unsigned char dosbox224x224_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xe0,
0x04, 0x03, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x77, 0xd2, 0x00, 0x00, 0x00,
0x30, 0x50, 0x4c, 0x54, 0x45, 0x20, 0x11, 0x05, 0x47, 0x24, 0x06, 0x6c,
0x38, 0x0f, 0x59, 0x42, 0x1d, 0x90, 0x4d, 0x1a, 0x70, 0x5c, 0x32, 0xae,
0x60, 0x23, 0x98, 0x71, 0x14, 0x88, 0x72, 0x40, 0xc4, 0x6e, 0x2a, 0x9c,
0x85, 0x4f, 0xdb, 0x7f, 0x36, 0xc9, 0x98, 0x16, 0xb0, 0x99, 0x5e, 0xe5,
0xb8, 0x25, 0xfa, 0xd1, 0x35, 0x7c, 0xd4, 0xac, 0x06, 0x00, 0x00, 0x20,
0x00, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0xbd, 0x7d, 0x6f, 0x8c, 0x1b,
0xe7, 0x99, 0xdf, 0x52, 0xb2, 0xe3, 0xe0, 0xfa, 0x07, 0x1c, 0xee, 0x26,
0x46, 0x90, 0xe0, 0x90, 0x9d, 0x8c, 0xe9, 0xe8, 0x94, 0xcb, 0x69, 0x35,
0x21, 0x24, 0xe4, 0xec, 0xd6, 0x1e, 0xbc, 0x37, 0x30, 0xa3, 0x5c, 0xdb,
0x84, 0x61, 0xcd, 0x0a, 0x56, 0x11, 0x2f, 0x06, 0x2f, 0x30, 0x65, 0xfb,
0x21, 0x50, 0x03, 0xab, 0xc2, 0xda, 0xb9, 0x60, 0x8f, 0xc9, 0x94, 0x17,
0x1f, 0x12, 0x95, 0x18, 0x60, 0xc0, 0x7c, 0x08, 0xe0, 0x53, 0xc0, 0x32,
0xb7, 0x41, 0xe3, 0x2e, 0x08, 0x10, 0xf4, 0x97, 0x43, 0x70, 0xb5, 0x60,
0x6c, 0xe5, 0xbb, 0x2a, 0x32, 0x56, 0x4c, 0x37, 0xf9, 0x50, 0x1c, 0x92,
0x1a, 0xf2, 0x2e, 0xd0, 0xc3, 0xc1, 0x86, 0x6b, 0xed, 0xf6, 0xf9, 0x3d,
0xcf, 0xfb, 0xce, 0x0c, 0x57, 0x4a, 0x3f, 0xde, 0xac, 0x97, 0x22, 0x97,
0x43, 0xce, 0xfb, 0x9b, 0xe7, 0xff, 0x9f, 0xf7, 0xf1, 0xd2, 0xd2, 0xdf,
0xfb, 0xf1, 0xaf, 0xd2, 0x2c, 0xfd, 0xcf, 0x59, 0x46, 0x8f, 0x3f, 0xd4,
0x3f, 0x7c, 0x4b, 0xeb, 0xec, 0xce, 0x9d, 0xf4, 0x4e, 0x8a, 0xd7, 0x74,
0x64, 0x59, 0x76, 0x87, 0x7e, 0xb3, 0xb7, 0xe8, 0x77, 0x3a, 0xc5, 0x5f,
0xb5, 0x4e, 0x53, 0x1d, 0xe9, 0x88, 0x0e, 0x7a, 0xaa, 0xe5, 0x94, 0x3b,
0xf4, 0x34, 0xc6, 0x77, 0x64, 0xfc, 0x29, 0x9c, 0x82, 0x1f, 0x9d, 0x69,
0x9c, 0x45, 0xff, 0xd1, 0x41, 0xdf, 0x9d, 0xde, 0xf9, 0x59, 0x75, 0x69,
0xe9, 0x63, 0x59, 0xa8, 0x42, 0xad, 0x55, 0xa8, 0xf8, 0x08, 0x75, 0x16,
0xeb, 0x58, 0xf3, 0x3f, 0xf4, 0xe7, 0x98, 0xbe, 0x25, 0xa6, 0xab, 0x34,
0xe9, 0x31, 0xa6, 0x37, 0x32, 0x1d, 0xc6, 0x38, 0xd7, 0xf5, 0x5c, 0xe5,
0x85, 0x61, 0x48, 0xa7, 0xd2, 0x49, 0x31, 0xfd, 0xa5, 0x4e, 0x6f, 0xc4,
0x78, 0x9f, 0xff, 0x1a, 0xd2, 0xbb, 0xf4, 0xbe, 0x0a, 0x3c, 0x4f, 0x79,
0xf8, 0xa5, 0xe7, 0x2a, 0xec, 0xbe, 0x4a, 0x08, 0x2b, 0x33, 0x5a, 0x0a,
0xad, 0x5d, 0x0f, 0x94, 0xc6, 0x93, 0x09, 0x16, 0x3d, 0x4d, 0xd3, 0xd9,
0x74, 0xca, 0xb0, 0x22, 0x40, 0xc3, 0x09, 0x58, 0x6c, 0x36, 0x05, 0xc2,
0x01, 0x5e, 0xa8, 0x08, 0xe7, 0xeb, 0x21, 0x43, 0x89, 0x27, 0xa9, 0xd2,
0x04, 0x4f, 0xf3, 0xad, 0xca, 0xd2, 0x29, 0x7f, 0x65, 0x0a, 0x24, 0x74,
0xa6, 0xe2, 0x73, 0xe9, 0xf3, 0xd3, 0x4f, 0x7e, 0x72, 0xe9, 0x64, 0xf5,
0x63, 0x53, 0xba, 0xf8, 0x30, 0x05, 0xa0, 0x50, 0xc5, 0xf1, 0x74, 0x48,
0xd7, 0x61, 0x84, 0xc3, 0x19, 0xc1, 0xe2, 0x7f, 0x86, 0xf4, 0x98, 0x11,
0xb0, 0x58, 0x60, 0xd2, 0x75, 0x22, 0x73, 0x3b, 0x08, 0x14, 0xc1, 0xd7,
0x00, 0x95, 0xd1, 0x69, 0x7c, 0x7b, 0xe8, 0x9f, 0x18, 0xef, 0xd0, 0xfb,
0xa1, 0x56, 0x1e, 0xa1, 0x0f, 0x55, 0x33, 0x23, 0x98, 0xdd, 0x6b, 0x0f,
0x7d, 0x77, 0xa9, 0x72, 0xb6, 0x36, 0x9b, 0x46, 0x11, 0xad, 0x2c, 0xa2,
0x45, 0x45, 0x69, 0x36, 0xcd, 0x66, 0x53, 0xc1, 0x3c, 0x05, 0x45, 0x08,
0xdf, 0x8c, 0x7e, 0x40, 0x9d, 0x48, 0x48, 0x17, 0xe1, 0x6a, 0xfc, 0x1c,
0xff, 0xc8, 0x2b, 0x3a, 0x9f, 0xce, 0x99, 0x0d, 0xf1, 0x49, 0x9d, 0xe1,
0x81, 0x09, 0x4d, 0xe8, 0x23, 0x7a, 0xa0, 0x33, 0x71, 0xd6, 0x70, 0xb6,
0xaa, 0xff, 0x6a, 0xa9, 0xf2, 0xd0, 0xd3, 0x1f, 0x9f, 0x61, 0x4d, 0x58,
0x15, 0x88, 0xc4, 0xa8, 0xba, 0x44, 0xb6, 0x30, 0xa6, 0x25, 0x13, 0xa2,
0xb4, 0xc9, 0x90, 0xb1, 0x66, 0x0d, 0x42, 0x10, 0x35, 0xbc, 0xa0, 0xce,
0x34, 0x09, 0xb5, 0x17, 0xe2, 0x31, 0xa4, 0x73, 0xbb, 0x59, 0x9c, 0x02,
0x6d, 0xcc, 0xc4, 0xa7, 0xd7, 0x1a, 0x8c, 0x41, 0xbf, 0x4c, 0x55, 0x3a,
0x23, 0x1e, 0x5e, 0xfb, 0xf8, 0xb5, 0xa7, 0x96, 0x2a, 0xb5, 0xb4, 0xfa,
0x27, 0x93, 0x2c, 0x1e, 0xa8, 0x90, 0x40, 0xc5, 0x29, 0x78, 0x8b, 0x88,
0x46, 0x0b, 0xcb, 0x98, 0x0c, 0x59, 0x36, 0x89, 0xe8, 0xaf, 0x91, 0x5e,
0xd7, 0xfa, 0x2d, 0x5a, 0xf1, 0x14, 0xb7, 0x33, 0x5a, 0x07, 0x4d, 0x40,
0xc3, 0x0c, 0x54, 0x1c, 0xd0, 0xbf, 0x04, 0x70, 0xa0, 0x88, 0xc5, 0x52,
0xc6, 0x96, 0xc6, 0x78, 0x0d, 0x90, 0x78, 0xa1, 0xd7, 0x55, 0x38, 0x88,
0xe2, 0x6d, 0x67, 0x76, 0xed, 0x8f, 0x96, 0x2a, 0x2b, 0xe1, 0xb5, 0x0f,
0xcd, 0x62, 0xdc, 0x6d, 0x82, 0x16, 0xc6, 0xc4, 0x6b, 0x4d, 0xa6, 0x52,
0x16, 0xd3, 0x62, 0x89, 0x44, 0x71, 0x4a, 0x8b, 0x03, 0x63, 0x02, 0x08,
0xf8, 0x0f, 0x74, 0xf1, 0x14, 0x53, 0xc6, 0x53, 0x31, 0x23, 0xa4, 0xbb,
0x11, 0x77, 0x63, 0x3c, 0xd2, 0x6f, 0x18, 0x46, 0x78, 0x16, 0xd3, 0x85,
0x3d, 0xaf, 0x4e, 0x5f, 0x2b, 0x74, 0xd4, 0x5d, 0xba, 0x95, 0x03, 0x20,
0x74, 0xef, 0x9c, 0xf9, 0xd1, 0x24, 0xc5, 0x5a, 0xe9, 0x8e, 0x83, 0xdf,
0x62, 0x30, 0xda, 0x20, 0xd5, 0x04, 0x8c, 0x56, 0x4c, 0x58, 0x89, 0x90,
0x2c, 0x76, 0x9a, 0x97, 0x4b, 0x67, 0xa9, 0x28, 0x50, 0x3a, 0x05, 0xdb,
0x08, 0x84, 0x34, 0x32, 0x94, 0x93, 0x73, 0x06, 0x29, 0xb3, 0x35, 0xdf,
0x83, 0x48, 0x45, 0x72, 0xc4, 0xdb, 0xb5, 0x59, 0xb4, 0xfe, 0x55, 0x42,
0xe8, 0x35, 0xff, 0xd3, 0x43, 0x33, 0x61, 0x3e, 0xb0, 0x9c, 0xd6, 0x7c,
0xc3, 0x99, 0x62, 0x7a, 0xa8, 0x59, 0x18, 0xe9, 0x32, 0x61, 0xc4, 0x3c,
0x47, 0xab, 0x75, 0x95, 0x95, 0x42, 0x5a, 0x79, 0x5d, 0x33, 0x31, 0x85,
0x5e, 0x21, 0xd3, 0x97, 0xde, 0xc1, 0x47, 0xf8, 0x35, 0xdd, 0x9e, 0xd0,
0xd0, 0x70, 0xf8, 0xd4, 0xe9, 0x69, 0x08, 0x84, 0x2b, 0x4a, 0xff, 0xe8,
0xcc, 0x05, 0x96, 0x2f, 0xe2, 0x0d, 0x2c, 0x55, 0x58, 0x31, 0xf8, 0x4a,
0x44, 0xb2, 0x81, 0xc5, 0x47, 0x50, 0x18, 0x01, 0x78, 0x91, 0x1e, 0x23,
0x15, 0x04, 0x8a, 0x7e, 0x78, 0xe5, 0xf4, 0x8a, 0x9e, 0x05, 0xf4, 0xdd,
0xac, 0x5e, 0xc0, 0x8b, 0x5a, 0x0d, 0x08, 0x78, 0x3a, 0x65, 0x75, 0xa3,
0x89, 0xd8, 0x72, 0x67, 0xa2, 0xe1, 0x76, 0x8d, 0x58, 0xe3, 0x55, 0xdc,
0x52, 0x2f, 0x3c, 0xf5, 0x5f, 0x1f, 0x82, 0xf4, 0x47, 0x74, 0xff, 0x15,
0xf4, 0x42, 0x08, 0x91, 0x64, 0x3d, 0x12, 0x0a, 0x60, 0xfc, 0x99, 0x7e,
0xf0, 0xa6, 0x02, 0x08, 0xa8, 0x0e, 0xd7, 0xf5, 0x44, 0x8b, 0x10, 0xc3,
0x86, 0x60, 0x56, 0xe6, 0xdf, 0x50, 0x9e, 0xe0, 0x81, 0xae, 0xa4, 0xe8,
0x24, 0x90, 0x1a, 0x00, 0x9f, 0x3e, 0x4d, 0x2b, 0x58, 0xc7, 0x05, 0x03,
0x1d, 0xce, 0x9e, 0xfe, 0x93, 0x29, 0x44, 0x46, 0x2b, 0x16, 0x19, 0x5e,
0xba, 0x4b, 0x8b, 0x0d, 0x02, 0x56, 0x12, 0x69, 0x18, 0x05, 0x2e, 0xbd,
0x70, 0xcf, 0x2a, 0xb5, 0x1e, 0xd2, 0xbb, 0xae, 0x1b, 0xb8, 0x38, 0xf0,
0x3e, 0x81, 0xd6, 0x31, 0x1e, 0x58, 0x32, 0xa3, 0x10, 0xff, 0x68, 0x00,
0xbb, 0x16, 0xad, 0xbb, 0xb8, 0x05, 0xac, 0x23, 0xba, 0x44, 0xc1, 0xed,
0x59, 0xfc, 0x3c, 0xd1, 0xb0, 0xa6, 0xf4, 0xa9, 0xf8, 0xd5, 0x87, 0x66,
0x11, 0xdf, 0x74, 0x40, 0x81, 0x5a, 0xe5, 0xf5, 0xe7, 0x7a, 0x10, 0xca,
0xd3, 0x0d, 0x6a, 0x78, 0xa1, 0xf0, 0x86, 0x5b, 0x73, 0x6a, 0x35, 0xbe,
0x24, 0x43, 0x55, 0xfc, 0x29, 0xbc, 0x45, 0xe7, 0xbb, 0xde, 0x8a, 0xe7,
0x99, 0xd7, 0x46, 0xe7, 0xaa, 0x5a, 0x7d, 0xb8, 0x7a, 0x3a, 0x1b, 0x0c,
0x63, 0x20, 0x74, 0x88, 0x1c, 0x83, 0x1f, 0x7d, 0xf3, 0xc2, 0x5b, 0xb2,
0x46, 0x10, 0x8b, 0xd7, 0x15, 0x10, 0xa2, 0x80, 0x15, 0x18, 0x3f, 0x06,
0xee, 0xaa, 0x7b, 0x36, 0x90, 0x43, 0x31, 0xb8, 0xd5, 0x55, 0xd7, 0x0d,
0xcc, 0xbb, 0x7c, 0x46, 0x60, 0x7e, 0x19, 0xd3, 0x57, 0xec, 0x5f, 0x41,
0x75, 0xf5, 0x1f, 0x5f, 0x5d, 0x99, 0xc4, 0xc4, 0x0b, 0xe0, 0xd2, 0x0a,
0xad, 0x43, 0x9f, 0x9e, 0x9c, 0x98, 0xa5, 0xa1, 0x6e, 0xe2, 0x86, 0x7b,
0x42, 0x48, 0xfc, 0x7a, 0x02, 0x82, 0x96, 0xc9, 0xcf, 0xf8, 0xa8, 0xd5,
0x80, 0x90, 0x00, 0xd6, 0x70, 0xb8, 0xae, 0x10, 0xd3, 0x93, 0x7f, 0x5d,
0xf3, 0x11, 0x4f, 0xb9, 0xe6, 0x1e, 0x81, 0xea, 0x5e, 0x3d, 0xae, 0x9e,
0xde, 0x86, 0x1c, 0xb8, 0x4f, 0x2d, 0x2d, 0xd5, 0xc0, 0x58, 0xcd, 0xd9,
0x5f, 0x9d, 0x9a, 0x00, 0x1e, 0xaf, 0x30, 0x60, 0x74, 0xf2, 0x8b, 0x47,
0xfa, 0x97, 0x3e, 0x4f, 0x80, 0x56, 0x57, 0x19, 0xd6, 0xaa, 0x63, 0x9e,
0xc9, 0x5f, 0xe9, 0x03, 0x44, 0x61, 0x2f, 0x00, 0x65, 0x03, 0xd7, 0xc1,
0xe3, 0x2a, 0x88, 0xcc, 0xdf, 0x84, 0x7b, 0xe1, 0x5e, 0x78, 0xfe, 0xa1,
0xc9, 0x76, 0x3c, 0x98, 0x66, 0x40, 0x78, 0xc2, 0x55, 0xf5, 0xc1, 0xe9,
0xd9, 0xac, 0x72, 0x21, 0xf2, 0x0c, 0xfb, 0x85, 0x8c, 0xc4, 0x65, 0x60,
0x58, 0xb1, 0xc7, 0xff, 0xb9, 0xc0, 0x23, 0xa4, 0x03, 0xbe, 0xd5, 0x9a,
0x81, 0xc9, 0x67, 0x11, 0xa4, 0x1a, 0x9f, 0xe4, 0x54, 0x1c, 0x47, 0xce,
0xc4, 0x8d, 0x60, 0xc0, 0xb5, 0x95, 0xa8, 0xd2, 0x8c, 0xb7, 0x2f, 0x0c,
0xe2, 0x26, 0xd1, 0x70, 0xc9, 0x59, 0x25, 0x82, 0x85, 0x69, 0xf7, 0x7b,
0xa7, 0x27, 0x4c, 0x0f, 0x48, 0x59, 0x64, 0xe1, 0x9d, 0x25, 0x04, 0xf4,
0x54, 0xe0, 0xd0, 0x03, 0x3d, 0x71, 0xe8, 0xc7, 0xfc, 0xeb, 0x38, 0x0c,
0x98, 0x29, 0xea, 0x1a, 0xc0, 0xab, 0xfc, 0x02, 0x9f, 0xfc, 0x5c, 0xf0,
0x39, 0x40, 0xa4, 0x3f, 0x7c, 0xeb, 0xf9, 0x8f, 0x5e, 0x0b, 0x07, 0xa4,
0x4b, 0xd4, 0xd3, 0x4f, 0x81, 0x86, 0x2b, 0x35, 0xd5, 0x9c, 0x36, 0x67,
0x95, 0x6e, 0xe4, 0xf1, 0xd2, 0x5c, 0x43, 0x3c, 0xc2, 0xe0, 0x18, 0x76,
0x24, 0x3c, 0xae, 0x43, 0x4f, 0xe8, 0x1a, 0xf4, 0x27, 0x87, 0x5e, 0xd2,
0x2f, 0x3f, 0xa5, 0x07, 0x01, 0xe4, 0xae, 0xb8, 0x38, 0xc7, 0xa3, 0x73,
0x18, 0xb9, 0xfc, 0x05, 0x27, 0xaf, 0xa8, 0xa5, 0xa6, 0x6a, 0xa6, 0x4d,
0x62, 0x7f, 0x97, 0x75, 0xa9, 0x0e, 0xd3, 0x78, 0x1a, 0x77, 0x7f, 0xb2,
0xb2, 0x4d, 0x0b, 0x74, 0x64, 0xa9, 0x67, 0x09, 0x05, 0x7e, 0xe5, 0x2f,
0x42, 0x97, 0xd5, 0x4f, 0x1c, 0x1d, 0x3b, 0xfe, 0x62, 0x0d, 0x20, 0x81,
0x8a, 0x6e, 0x05, 0x9e, 0x39, 0xf4, 0x41, 0x07, 0x0f, 0xae, 0x10, 0x9c,
0x5e, 0xac, 0x3a, 0xde, 0x99, 0x0f, 0xad, 0xc3, 0xd8, 0x4e, 0xa6, 0xcc,
0xa5, 0xce, 0x0a, 0x04, 0x90, 0x2c, 0x60, 0xe6, 0x3c, 0xf3, 0x07, 0x9f,
0x92, 0xa3, 0xf6, 0x29, 0x97, 0x1e, 0x1f, 0xb3, 0xaf, 0x68, 0xb1, 0xf4,
0xe8, 0x54, 0xfe, 0xe1, 0xf1, 0x0b, 0x1e, 0xfd, 0xfa, 0xcb, 0x15, 0xc0,
0x5c, 0x5e, 0xfe, 0xd4, 0xa7, 0x96, 0x6b, 0x38, 0x8b, 0x3f, 0x88, 0x7f,
0x40, 0xe0, 0x4f, 0xb9, 0xf2, 0xb2, 0x02, 0xc9, 0x86, 0x19, 0x52, 0x40,
0xe8, 0xb8, 0x2e, 0x2e, 0x9f, 0x4d, 0xf4, 0xf3, 0x95, 0xaa, 0x1c, 0xce,
0x52, 0x95, 0xbc, 0x2b, 0x3c, 0x54, 0xed, 0x23, 0x1f, 0x8f, 0xdc, 0x77,
0xc1, 0xa3, 0xc3, 0xd6, 0x82, 0x0b, 0xc8, 0x67, 0x56, 0xab, 0xc5, 0xeb,
0x2a, 0x3e, 0x7e, 0x82, 0xf4, 0x72, 0x14, 0x92, 0x46, 0x56, 0xc1, 0x0f,
0x88, 0x4b, 0x49, 0xe5, 0xc7, 0x9a, 0x5c, 0xb7, 0x20, 0x3c, 0x69, 0x8e,
0x46, 0xa3, 0xd1, 0x6e, 0x1c, 0x3b, 0xfc, 0x86, 0xef, 0x3f, 0x72, 0xf3,
0xe0, 0xbe, 0x2b, 0x7e, 0x70, 0xd9, 0x6f, 0xc8, 0x8f, 0x9c, 0x55, 0x3e,
0xcc, 0xd7, 0x2d, 0x01, 0x6d, 0xd8, 0x1c, 0x92, 0x05, 0x54, 0xb8, 0xa5,
0x04, 0x90, 0x2c, 0x60, 0x46, 0x76, 0xfb, 0x99, 0x04, 0x47, 0xaf, 0xb7,
0xb5, 0xf7, 0xa0, 0x63, 0x3e, 0x7a, 0xf6, 0xee, 0xfe, 0x61, 0x81, 0xcd,
0x3c, 0x3d, 0x9c, 0xef, 0xfd, 0x86, 0x63, 0xde, 0xe3, 0xef, 0x1b, 0xbd,
0xb2, 0x0a, 0xed, 0x17, 0x93, 0x17, 0x18, 0x45, 0xdf, 0x65, 0x39, 0x24,
0xaf, 0x73, 0x38, 0x23, 0x63, 0x71, 0x3e, 0x49, 0x3a, 0x74, 0x46, 0xfb,
0xe2, 0x83, 0xae, 0xb8, 0x35, 0x4e, 0x9e, 0xd8, 0xb9, 0x79, 0x73, 0xdf,
0x80, 0xdc, 0xdf, 0xb7, 0xcf, 0xdf, 0xd9, 0xfa, 0x0d, 0x17, 0xec, 0x75,
0x3a, 0x09, 0x7e, 0x36, 0x89, 0x77, 0x89, 0x4d, 0xc8, 0x43, 0x0a, 0x15,
0x5b, 0x8b, 0x80, 0xbc, 0x18, 0x22, 0x61, 0xa4, 0x3b, 0xc9, 0xff, 0x0f,
0xe2, 0xbc, 0xf7, 0xec, 0xce, 0xce, 0xce, 0xfe, 0xbe, 0xe0, 0xda, 0xbf,
0xbb, 0xb3, 0x73, 0x57, 0x9e, 0x3f, 0xe0, 0xdc, 0x7b, 0xf4, 0xbb, 0xdb,
0x26, 0x74, 0xf8, 0xbe, 0x4d, 0x62, 0x5e, 0x72, 0x40, 0x09, 0x60, 0x7c,
0xed, 0xab, 0x4c, 0xc3, 0x38, 0x9b, 0x91, 0x87, 0x1b, 0xd6, 0xcf, 0x27,
0x72, 0xc9, 0x02, 0xe2, 0x96, 0xf9, 0xc5, 0x31, 0x4e, 0xda, 0xbe, 0xef,
0xbf, 0x74, 0xc0, 0xb0, 0x6e, 0xb4, 0x89, 0xa6, 0xcf, 0xed, 0x30, 0x51,
0x1f, 0x74, 0x3b, 0x00, 0xb0, 0x6d, 0x00, 0x10, 0xc2, 0x5a, 0x5d, 0x75,
0xe9, 0x26, 0xc6, 0x11, 0x68, 0xa8, 0xe0, 0xb5, 0x4c, 0xc8, 0xed, 0xc4,
0x2d, 0x15, 0x84, 0xbd, 0xfe, 0x03, 0x69, 0xd8, 0x6b, 0xf9, 0xfe, 0x8e,
0x90, 0x71, 0xb7, 0xd7, 0x6e, 0xb5, 0xfc, 0x17, 0x76, 0xf6, 0x7f, 0x23,
0x15, 0x77, 0x7b, 0x44, 0xc2, 0x11, 0x1d, 0xc9, 0x2b, 0x55, 0xa2, 0x21,
0x79, 0x0f, 0x59, 0x3c, 0x81, 0x1c, 0xd6, 0xc8, 0x74, 0xe9, 0x74, 0xd2,
0xa4, 0xe0, 0xe0, 0x7c, 0x07, 0x6b, 0xea, 0xb4, 0xdb, 0xed, 0xce, 0x83,
0x6e, 0x2a, 0x43, 0xdc, 0xb8, 0x49, 0x10, 0x0f, 0x8e, 0xae, 0x24, 0xed,
0xb6, 0xbf, 0xfc, 0xa8, 0x40, 0x7c, 0x67, 0x6b, 0xeb, 0xfe, 0xf3, 0xe9,
0x7b, 0x3a, 0x49, 0xbf, 0xdf, 0x07, 0x42, 0xd2, 0x46, 0xa7, 0x9a, 0x71,
0xdc, 0xd4, 0x42, 0x43, 0xb2, 0xd0, 0x19, 0x19, 0x8f, 0x48, 0x03, 0x21,
0xad, 0x88, 0x10, 0xf6, 0xc6, 0xbf, 0x09, 0xe2, 0x8e, 0x70, 0xca, 0xee,
0x08, 0x2f, 0xce, 0x32, 0xc2, 0xa3, 0x7b, 0xe3, 0x07, 0x02, 0x24, 0x84,
0x63, 0x20, 0xdc, 0x84, 0x7e, 0x25, 0x7f, 0x8a, 0x3c, 0x65, 0xdc, 0xd2,
0x9a, 0x1b, 0x91, 0xc7, 0x91, 0x76, 0xc9, 0xcd, 0xfa, 0x74, 0xa7, 0x03,
0xc6, 0x6a, 0x3f, 0x08, 0x22, 0x81, 0x18, 0x03, 0x22, 0x10, 0xd2, 0x71,
0xa3, 0x6f, 0xf1, 0xe2, 0x9e, 0x5e, 0x1d, 0x6f, 0x8d, 0xb7, 0x16, 0x61,
0xf6, 0x08, 0xa0, 0xd0, 0xb0, 0x43, 0x34, 0x74, 0x59, 0xd6, 0xbb, 0x71,
0x24, 0x08, 0xb5, 0x9e, 0x4e, 0xb2, 0x28, 0xd0, 0x8d, 0x9e, 0x3d, 0xda,
0xc7, 0xa9, 0x38, 0xe7, 0x83, 0x50, 0x6d, 0x08, 0x9b, 0xee, 0x8e, 0x69,
0xf1, 0x44, 0xc4, 0xfc, 0xd5, 0x78, 0x3e, 0x3e, 0x0e, 0x50, 0xc4, 0x90,
0x6f, 0x29, 0x81, 0xa2, 0x58, 0x65, 0x18, 0x0f, 0xbe, 0xcb, 0x34, 0x6c,
0x86, 0x69, 0x3a, 0xb4, 0x08, 0xdb, 0xf8, 0x65, 0x88, 0x76, 0xc5, 0x5b,
0x02, 0x90, 0x10, 0x8e, 0xda, 0x05, 0x0d, 0x93, 0x3e, 0x41, 0x7c, 0xe2,
0x26, 0x33, 0xed, 0x95, 0x3e, 0x5d, 0x11, 0xa7, 0xf3, 0x87, 0x70, 0x7e,
0x9b, 0xbf, 0xa7, 0x63, 0xb9, 0x94, 0xb4, 0x59, 0x9d, 0x42, 0x15, 0xd1,
0x34, 0xc1, 0x80, 0xdc, 0x62, 0x20, 0xfc, 0x56, 0xa3, 0x97, 0xd0, 0x4f,
0x8f, 0x89, 0xf8, 0x00, 0x46, 0x9d, 0xcf, 0x77, 0x7b, 0xad, 0x9c, 0x86,
0x74, 0xf9, 0x5e, 0xeb, 0x39, 0x91, 0x44, 0x42, 0x38, 0x9f, 0x2f, 0x02,
0x4c, 0x0c, 0xbe, 0x91, 0xc8, 0x21, 0x79, 0x73, 0x71, 0x3a, 0xd3, 0x01,
0x7c, 0x1a, 0x8f, 0xfc, 0x6c, 0x8a, 0x04, 0x23, 0x4f, 0x10, 0x9a, 0xe3,
0x38, 0x15, 0xb7, 0x98, 0x8a, 0x6d, 0x43, 0x35, 0xc2, 0x44, 0x47, 0xa7,
0xfd, 0x84, 0xbc, 0x7a, 0xa3, 0x3f, 0x5e, 0xa0, 0xe0, 0xbc, 0x6d, 0xbe,
0x25, 0xc1, 0x8d, 0x00, 0x97, 0xaa, 0x70, 0xd6, 0x9d, 0x65, 0x19, 0x7c,
0x1a, 0x87, 0x7c, 0xed, 0x6c, 0x3a, 0x88, 0x27, 0xfa, 0x87, 0xe7, 0xad,
0x18, 0x26, 0xf7, 0x43, 0x9c, 0xe3, 0x87, 0x11, 0x1e, 0x19, 0x84, 0xc4,
0xa7, 0xbd, 0x8d, 0x43, 0x51, 0xa7, 0xc7, 0x01, 0xb6, 0x41, 0x40, 0xc6,
0x48, 0x6c, 0xfa, 0x8a, 0x03, 0xf7, 0x26, 0x9b, 0x51, 0x9c, 0xc9, 0x08,
0xc9, 0xef, 0x8c, 0x87, 0xe9, 0x30, 0x1b, 0x30, 0xc2, 0x44, 0xa8, 0x88,
0xc7, 0x97, 0x01, 0xca, 0xfc, 0x0a, 0x1b, 0x8e, 0x7b, 0xfe, 0x4b, 0x05,
0xc2, 0x24, 0x79, 0x56, 0x48, 0x78, 0x8f, 0x01, 0xe6, 0x10, 0xb7, 0xe6,
0xe0, 0x01, 0xfe, 0x1e, 0xa8, 0xae, 0xbe, 0xd0, 0x30, 0x1e, 0xc6, 0xe9,
0x30, 0x20, 0x2e, 0xad, 0x7a, 0x4a, 0x4f, 0x67, 0x70, 0xc3, 0xc3, 0xf3,
0x3d, 0x0b, 0x91, 0x39, 0xb5, 0x43, 0x0b, 0xa7, 0x9f, 0xf1, 0xd8, 0xf0,
0x28, 0x53, 0xcd, 0xd2, 0x10, 0x02, 0x3b, 0x7a, 0x4e, 0x4c, 0xc6, 0xdb,
0x44, 0xd0, 0x32, 0x3f, 0x5f, 0xa7, 0x0b, 0x32, 0xab, 0x0b, 0x15, 0x41,
0x43, 0x20, 0x9c, 0x4e, 0x06, 0xab, 0x5f, 0x5d, 0x5a, 0x7a, 0x88, 0x82,
0x03, 0xd2, 0xa5, 0x14, 0xdc, 0x86, 0x8f, 0xb5, 0x0d, 0x38, 0x3e, 0x1a,
0x8d, 0xfe, 0x98, 0x7e, 0xfa, 0xe0, 0x40, 0x39, 0xfa, 0x22, 0x87, 0x47,
0x24, 0x87, 0x57, 0xf8, 0xc4, 0x97, 0x58, 0x26, 0x0f, 0xaf, 0x24, 0xfd,
0xb1, 0xc8, 0x21, 0x33, 0xf3, 0x88, 0xed, 0x69, 0xbb, 0x6d, 0x09, 0xd9,
0x22, 0x59, 0xf7, 0xc2, 0xee, 0x30, 0x4d, 0x63, 0xf6, 0xda, 0xbc, 0x98,
0x10, 0xce, 0x66, 0x59, 0xf4, 0xad, 0x42, 0x0e, 0x7b, 0xb8, 0x62, 0xab,
0x63, 0x2e, 0x64, 0x00, 0xce, 0xc7, 0x2c, 0x87, 0x42, 0x43, 0x50, 0xfa,
0x17, 0xc6, 0xcf, 0x48, 0xe4, 0x24, 0x03, 0x70, 0x7c, 0xbd, 0x6d, 0x0e,
0x61, 0xd5, 0x1e, 0xdd, 0xd2, 0x20, 0x8a, 0x87, 0xb3, 0xe9, 0x94, 0x75,
0x29, 0x09, 0xa2, 0x47, 0x52, 0x39, 0x54, 0xaa, 0xfe, 0x11, 0xa1, 0x1d,
0xd6, 0x26, 0x18, 0x5f, 0x06, 0xed, 0xc6, 0xf9, 0xaf, 0x41, 0x08, 0x39,
0x3c, 0x90, 0x47, 0xfc, 0x1c, 0x5e, 0x91, 0x9b, 0x60, 0x21, 0x8e, 0xdb,
0x0c, 0xaf, 0x84, 0xd0, 0x39, 0x51, 0xd3, 0xf5, 0x66, 0x8c, 0xd0, 0x99,
0x83, 0x99, 0x38, 0x22, 0x4d, 0x43, 0x31, 0x6e, 0xd8, 0x68, 0x5b, 0x21,
0x34, 0x18, 0x13, 0x61, 0xcf, 0x9c, 0x84, 0xa3, 0xde, 0xda, 0xf7, 0xf7,
0x8f, 0xb9, 0x19, 0x87, 0xbf, 0x4e, 0x46, 0xe6, 0x26, 0x08, 0xc4, 0xeb,
0xed, 0x5e, 0x3b, 0xbf, 0x53, 0xe0, 0x88, 0x6f, 0xae, 0xc2, 0xc3, 0x88,
0xb3, 0x78, 0x9a, 0x0e, 0xd8, 0x1e, 0x86, 0x5e, 0x97, 0x08, 0x4a, 0x16,
0xff, 0x23, 0x80, 0x96, 0x03, 0xc4, 0x32, 0x5f, 0x16, 0xaa, 0x6c, 0x31,
0x05, 0x0b, 0x1a, 0x1e, 0x15, 0x17, 0x3d, 0x7c, 0x03, 0x36, 0x81, 0x6f,
0x01, 0x73, 0xea, 0xd6, 0x88, 0xe1, 0xd9, 0xef, 0xc1, 0x2d, 0x6b, 0xc1,
0x1e, 0x86, 0xdd, 0x99, 0xca, 0x74, 0x20, 0x16, 0x5f, 0x65, 0xd3, 0xe9,
0x20, 0x0a, 0xfe, 0x65, 0xa3, 0x5d, 0x2c, 0x4d, 0x20, 0x76, 0xe6, 0xf6,
0x60, 0x76, 0x1d, 0x6d, 0x12, 0x0d, 0x17, 0x11, 0xbe, 0xdb, 0x26, 0x7e,
0x85, 0x26, 0x2d, 0x00, 0x1a, 0x16, 0xcd, 0xbf, 0x07, 0xba, 0x94, 0x7c,
0x9a, 0x6c, 0xa0, 0x53, 0xf6, 0x4b, 0xe9, 0x45, 0x33, 0x8b, 0x87, 0x24,
0x8e, 0xe7, 0xed, 0xe2, 0x0c, 0x25, 0x09, 0x65, 0xbf, 0x0c, 0x70, 0x81,
0x86, 0xe2, 0xd4, 0x1c, 0x08, 0x42, 0xc3, 0xa5, 0x42, 0xc1, 0x9c, 0x07,
0xcc, 0xb3, 0x1e, 0x34, 0x0d, 0x5d, 0x43, 0xc7, 0x61, 0xdd, 0x7a, 0x6d,
0xd3, 0xd9, 0x34, 0xfa, 0x8a, 0xbe, 0x74, 0x7d, 0x01, 0x22, 0xcb, 0xe2,
0x5e, 0x09, 0x20, 0x71, 0xe9, 0x97, 0x5e, 0x13, 0x8b, 0x4f, 0x3e, 0x8d,
0x71, 0x6a, 0x84, 0x86, 0x02, 0x71, 0xce, 0x14, 0x3c, 0x76, 0x24, 0xb7,
0x09, 0x61, 0x48, 0xd7, 0x00, 0x63, 0xc2, 0x5a, 0xd0, 0xd5, 0x2f, 0x0c,
0x67, 0x13, 0x42, 0xf8, 0xe4, 0x6e, 0xa3, 0x5d, 0x5e, 0x1a, 0x64, 0xf1,
0xa2, 0xac, 0x5b, 0x0e, 0xb6, 0x16, 0x6f, 0x42, 0xf6, 0xf6, 0x77, 0x36,
0x70, 0xc0, 0x38, 0xee, 0x27, 0x20, 0x62, 0x9f, 0xb5, 0x0d, 0x64, 0xd0,
0x72, 0xa8, 0xb9, 0x55, 0xed, 0x97, 0x6f, 0x93, 0x77, 0x5e, 0x0f, 0x49,
0x77, 0xc6, 0x61, 0x13, 0x08, 0x3d, 0x32, 0x16, 0xd9, 0x6c, 0x5b, 0x5f,
0xd3, 0x97, 0xc8, 0xf1, 0x69, 0xf7, 0x0a, 0x1a, 0xe0, 0x79, 0x27, 0x97,
0xaf, 0x39, 0x5b, 0x8b, 0x0d, 0x51, 0xa6, 0xb7, 0xc9, 0xa3, 0x59, 0x3b,
0xf7, 0x3a, 0xbf, 0x78, 0x1b, 0x44, 0x64, 0x51, 0x24, 0xcf, 0x0e, 0x9f,
0xce, 0x41, 0x8a, 0x7b, 0x74, 0x9b, 0x0c, 0x70, 0xa8, 0xf5, 0x20, 0xee,
0x4e, 0x80, 0xd0, 0xf1, 0x3c, 0x1d, 0x36, 0x67, 0xe9, 0xc0, 0x0b, 0x2f,
0xed, 0xed, 0x9a, 0x05, 0x76, 0xda, 0x39, 0x15, 0x2f, 0x5a, 0xe2, 0x14,
0x16, 0x9f, 0x68, 0xf8, 0x75, 0x78, 0x70, 0xcb, 0xe7, 0xf8, 0xd5, 0xe1,
0xc8, 0xb2, 0xe9, 0xd8, 0xb0, 0xa8, 0x95, 0x66, 0xd1, 0xc8, 0x74, 0x4b,
0x57, 0xea, 0xb1, 0xd2, 0x5d, 0xcd, 0xf6, 0x70, 0x95, 0x1c, 0x61, 0x1d,
0xcf, 0x06, 0x69, 0x40, 0x08, 0xf7, 0xae, 0x1f, 0x67, 0xb1, 0x02, 0xe2,
0x1e, 0x5b, 0xfc, 0x9d, 0xbb, 0xcc, 0xa5, 0xb7, 0xc9, 0x6b, 0xf3, 0xd7,
0x3e, 0x27, 0x70, 0xdf, 0xb6, 0x6c, 0x3a, 0xef, 0x31, 0xbc, 0xc4, 0xba,
0x0d, 0xf4, 0x4b, 0x36, 0x07, 0x34, 0xf4, 0xd2, 0x28, 0x9d, 0x92, 0xc2,
0x66, 0x1a, 0x7a, 0x61, 0xb3, 0x79, 0x21, 0xd6, 0x01, 0x21, 0xdc, 0x9b,
0x37, 0x4a, 0x64, 0x5c, 0xa0, 0x22, 0xe8, 0x68, 0x11, 0x92, 0xb5, 0xe8,
0x74, 0x1e, 0xf3, 0xfd, 0x93, 0x90, 0xca, 0x5f, 0x92, 0xb5, 0x30, 0x5c,
0x3a, 0x3a, 0xf6, 0x61, 0x96, 0x64, 0xba, 0xe0, 0x89, 0x9a, 0xb7, 0xae,
0x52, 0x92, 0xf4, 0x90, 0x10, 0xc2, 0xef, 0x6f, 0xea, 0x21, 0xb2, 0x34,
0xf4, 0xe6, 0x9e, 0x51, 0x84, 0x4c, 0x3f, 0x3e, 0x5a, 0xed, 0xf1, 0xa2,
0x1c, 0x8a, 0x2e, 0x25, 0x14, 0x6d, 0xa2, 0xe2, 0x4d, 0x66, 0xd9, 0x5d,
0x81, 0x48, 0x24, 0x36, 0x9f, 0x66, 0xfa, 0xd3, 0x37, 0xb4, 0x12, 0x72,
0xc2, 0x6f, 0x53, 0xc8, 0xac, 0x22, 0xb5, 0x8d, 0xdc, 0x93, 0xf8, 0x34,
0x88, 0x2d, 0x74, 0x73, 0x00, 0x84, 0x7b, 0xe3, 0x46, 0x81, 0x31, 0x67,
0xd4, 0xb1, 0x61, 0x53, 0x42, 0x68, 0xed, 0x21, 0x19, 0x3a, 0x72, 0x4c,
0x3f, 0x61, 0x2d, 0x3e, 0x6b, 0xd3, 0x84, 0x3f, 0xdb, 0x29, 0x7f, 0x16,
0x18, 0xc0, 0x34, 0x2b, 0x61, 0x88, 0xcc, 0x5a, 0x68, 0x04, 0x1f, 0x99,
0x4f, 0x0a, 0xd7, 0xf0, 0xee, 0xde, 0xf5, 0x56, 0xdb, 0x48, 0xa3, 0xfc,
0x43, 0xaf, 0xb6, 0x8c, 0x2e, 0x9d, 0x97, 0xec, 0x21, 0x59, 0xf2, 0xeb,
0xbd, 0xd6, 0x13, 0x82, 0x57, 0x34, 0xe9, 0xbc, 0x97, 0x7f, 0xd2, 0x7c,
0xbe, 0x75, 0x11, 0xdf, 0x78, 0xbb, 0x4a, 0x8c, 0x12, 0x28, 0xa4, 0x86,
0x85, 0x4b, 0x55, 0x4c, 0x01, 0xb0, 0x0e, 0x83, 0x67, 0x2e, 0x31, 0x73,
0xf8, 0xbc, 0x4c, 0x61, 0x34, 0xc4, 0x89, 0xc2, 0xa8, 0x0b, 0xf6, 0xf0,
0xe8, 0xe0, 0x6a, 0xbf, 0x6f, 0xbc, 0x36, 0x46, 0x68, 0x29, 0xd8, 0x58,
0x24, 0x3f, 0x03, 0x14, 0x1a, 0x52, 0x04, 0x4c, 0xb1, 0x85, 0xc7, 0xb1,
0x05, 0x11, 0x33, 0x1b, 0x4e, 0xd3, 0xf5, 0x88, 0x2f, 0x48, 0x10, 0x5b,
0x58, 0xa8, 0x50, 0x42, 0x8e, 0xb1, 0xa5, 0x61, 0xe1, 0x97, 0xb2, 0x4f,
0xd3, 0xfa, 0x8e, 0xe8, 0x9d, 0x02, 0x60, 0x0e, 0x11, 0xd4, 0x6f, 0x89,
0x5b, 0x84, 0x5b, 0x8a, 0x5c, 0x5c, 0x96, 0x66, 0xac, 0x69, 0x3c, 0x4f,
0x9d, 0x8a, 0x9a, 0xc8, 0x87, 0xca, 0x05, 0x0d, 0xc4, 0xf2, 0x52, 0x2d,
0xc4, 0xa4, 0xb7, 0xe0, 0x97, 0x26, 0xa0, 0xe8, 0x01, 0x7b, 0xde, 0x04,
0x31, 0x31, 0x9a, 0x38, 0xff, 0xa8, 0x01, 0xb8, 0x07, 0x4d, 0xe3, 0xba,
0xf5, 0xa8, 0x9e, 0xc6, 0x8a, 0x5d, 0x7d, 0x45, 0x2e, 0xe3, 0x34, 0x23,
0xef, 0x54, 0x2e, 0x68, 0xa8, 0xc8, 0x8b, 0x6d, 0x1b, 0x69, 0xda, 0x62,
0x3d, 0x09, 0x93, 0x6f, 0xbd, 0x36, 0x38, 0x9c, 0xbd, 0x67, 0xf7, 0x4d,
0x6c, 0xc1, 0x2c, 0x6a, 0xd9, 0xdb, 0x7c, 0xa6, 0x6d, 0x00, 0xee, 0xdd,
0x72, 0x88, 0x6c, 0x51, 0x38, 0x89, 0xb7, 0x75, 0xf4, 0x03, 0x46, 0xe8,
0xa1, 0xd6, 0x90, 0x45, 0xe1, 0x93, 0x26, 0x4a, 0x6a, 0x35, 0x1a, 0x8b,
0x2a, 0xbf, 0x9d, 0x43, 0x6c, 0xbf, 0xb4, 0xcf, 0x34, 0x24, 0x84, 0x14,
0x40, 0x5d, 0xda, 0x67, 0xa1, 0x7c, 0x03, 0x3c, 0xda, 0x3b, 0x2e, 0x83,
0xbe, 0x01, 0x48, 0x08, 0x71, 0x17, 0x91, 0x6e, 0x6e, 0x82, 0x4b, 0xc9,
0xdf, 0x50, 0x19, 0x2a, 0x16, 0x91, 0x36, 0x08, 0x85, 0x8a, 0x05, 0xc3,
0x61, 0xd9, 0x63, 0x06, 0x48, 0x08, 0x8d, 0x1f, 0xc3, 0x08, 0x93, 0x5f,
0x88, 0xe5, 0x80, 0x14, 0x8e, 0xda, 0xe6, 0xb6, 0xb4, 0x17, 0x59, 0x94,
0x69, 0xe8, 0x42, 0xd8, 0xd3, 0x78, 0x38, 0x35, 0x72, 0x58, 0x27, 0x39,
0x8c, 0x53, 0x55, 0xbf, 0x94, 0x3b, 0xce, 0xec, 0x76, 0xe5, 0xee, 0x9b,
0x50, 0x11, 0x0e, 0x5c, 0x72, 0xe5, 0x4d, 0xb1, 0xbf, 0x90, 0xc3, 0xe4,
0x1b, 0x47, 0x6c, 0x19, 0x6f, 0x2c, 0x00, 0x34, 0x9f, 0x03, 0x8b, 0x1a,
0x4f, 0x15, 0xba, 0xd4, 0x43, 0x15, 0x64, 0x38, 0x55, 0x06, 0x61, 0x98,
0x91, 0x67, 0x1a, 0x29, 0x7b, 0xc1, 0x05, 0x88, 0xbd, 0x9c, 0x51, 0x47,
0x3f, 0x3e, 0x7a, 0xc0, 0x71, 0x78, 0xd8, 0x23, 0x80, 0xbb, 0x56, 0x41,
0x19, 0xe1, 0x6d, 0x59, 0x16, 0xe5, 0x0b, 0x42, 0xd3, 0x50, 0xf8, 0x12,
0x72, 0x16, 0x03, 0xa9, 0xb5, 0x26, 0x4a, 0x16, 0xfa, 0x0b, 0x4f, 0xda,
0x50, 0x10, 0x54, 0x2c, 0xb1, 0x2a, 0x5e, 0x9c, 0x1f, 0x27, 0xc9, 0x73,
0x40, 0x07, 0x6b, 0x98, 0x5f, 0x8d, 0xec, 0xfe, 0xfe, 0x8d, 0x0e, 0xe9,
0x99, 0x5e, 0xa3, 0xd1, 0x28, 0xab, 0xe1, 0x86, 0x9f, 0x03, 0x04, 0x0d,
0x89, 0x88, 0x4d, 0xdd, 0x6d, 0x0e, 0x20, 0x87, 0x30, 0x16, 0x53, 0x42,
0x38, 0x1d, 0xfc, 0xd9, 0xa5, 0xdc, 0xf2, 0x2d, 0x40, 0x14, 0x27, 0xb5,
0x3f, 0xea, 0x21, 0x56, 0x3a, 0x3c, 0x3c, 0x2c, 0x92, 0x35, 0xf4, 0x7c,
0xff, 0x03, 0x0a, 0x73, 0xc7, 0x23, 0x42, 0xd4, 0x32, 0x7c, 0xbd, 0xc8,
0xa2, 0x42, 0x43, 0x45, 0x36, 0x77, 0x90, 0xa5, 0x03, 0xc8, 0xa1, 0x5b,
0x47, 0xae, 0x8d, 0x5c, 0x6f, 0xf5, 0x85, 0x4b, 0x45, 0xb0, 0x6b, 0x19,
0x35, 0x8f, 0x17, 0xfd, 0xf3, 0x09, 0xc5, 0x4a, 0xfb, 0x80, 0x44, 0x87,
0x80, 0x84, 0x5f, 0x73, 0x17, 0x6e, 0x77, 0xbf, 0xe7, 0x1b, 0x5f, 0x3b,
0x47, 0x78, 0xbe, 0x08, 0xa6, 0x6e, 0x55, 0x40, 0xc3, 0x70, 0x80, 0x7a,
0x96, 0xd8, 0xc3, 0x48, 0x0f, 0xa7, 0xe4, 0x97, 0xfe, 0xd9, 0xa5, 0x22,
0x54, 0xba, 0x9e, 0xab, 0x7d, 0x76, 0x2d, 0x59, 0xf1, 0xf7, 0x9e, 0x25,
0x27, 0x86, 0x7c, 0x19, 0x3a, 0xf6, 0xf7, 0x81, 0x94, 0x8e, 0xbb, 0xe4,
0x5c, 0x13, 0x8b, 0xca, 0x0d, 0x49, 0x72, 0xd5, 0x54, 0x06, 0x08, 0x39,
0xa4, 0xdb, 0x98, 0x0e, 0x32, 0xba, 0xa4, 0xd0, 0x50, 0x85, 0x24, 0x86,
0x2a, 0xb4, 0x34, 0xe4, 0xb4, 0x53, 0xdb, 0xda, 0x7e, 0x13, 0x6b, 0x80,
0x42, 0xe7, 0x76, 0x36, 0x76, 0x16, 0x8f, 0x17, 0x3a, 0x8d, 0xce, 0x33,
0xfd, 0x7e, 0xbb, 0x61, 0xf5, 0xef, 0x03, 0x00, 0xb2, 0xa6, 0x21, 0x85,
0x1d, 0xd1, 0x0f, 0xdb, 0x43, 0xe4, 0xdd, 0xd3, 0x78, 0xa2, 0xa2, 0x3f,
0xbe, 0x54, 0x0a, 0xf1, 0x6e, 0x5b, 0x0a, 0xda, 0x68, 0xaa, 0xed, 0xb7,
0x9f, 0x3d, 0x76, 0xb9, 0x9d, 0xcb, 0x04, 0x2c, 0x49, 0xc6, 0x46, 0x35,
0xb1, 0xa9, 0x37, 0x4c, 0x5a, 0x0e, 0x2e, 0x89, 0x4b, 0x1d, 0x15, 0xc4,
0x11, 0x8a, 0x6e, 0x2c, 0x87, 0xf5, 0xb8, 0x39, 0xeb, 0xa6, 0x81, 0x7a,
0xe6, 0xc9, 0x72, 0xc0, 0xdb, 0x6b, 0x1b, 0xbf, 0x24, 0x11, 0x90, 0x0d,
0x7f, 0xb9, 0xe1, 0xf3, 0xb1, 0x8c, 0xdf, 0x65, 0x3c, 0xfa, 0x10, 0xba,
0x3e, 0xee, 0x46, 0x23, 0xa7, 0x36, 0x9f, 0x5b, 0x06, 0x08, 0x39, 0x24,
0x84, 0xdd, 0x6c, 0x16, 0x67, 0xe2, 0xd3, 0x44, 0xba, 0x39, 0x8b, 0x89,
0x86, 0xfa, 0xd2, 0x42, 0x14, 0xdb, 0x32, 0x18, 0x39, 0xee, 0x87, 0xee,
0x5f, 0x43, 0xf2, 0xa9, 0x45, 0x97, 0xa1, 0x47, 0x39, 0x10, 0x20, 0x8d,
0xc6, 0xc2, 0xd2, 0x72, 0x9e, 0x51, 0x32, 0xfd, 0x72, 0x40, 0x7c, 0x8b,
0xe5, 0x90, 0x28, 0x98, 0x4d, 0x27, 0xb0, 0x87, 0xe0, 0xa0, 0x6e, 0x77,
0xaa, 0xdd, 0xdf, 0x79, 0x72, 0x21, 0x2b, 0xd3, 0x2e, 0x18, 0x55, 0x24,
0xcb, 0x3f, 0x49, 0xae, 0xda, 0x42, 0x4e, 0x14, 0xf8, 0x2d, 0x05, 0xf3,
0x33, 0x1b, 0xc4, 0xd1, 0xe5, 0x80, 0x98, 0x68, 0x58, 0xa9, 0xd5, 0x95,
0x0e, 0xbb, 0xb1, 0x8e, 0x38, 0xab, 0xef, 0x46, 0x11, 0x05, 0xdc, 0x91,
0xdb, 0xbf, 0xb4, 0x90, 0x96, 0x31, 0x76, 0x31, 0x5f, 0x35, 0x20, 0x5a,
0x75, 0xd2, 0x13, 0x95, 0x82, 0x10, 0x7e, 0x7c, 0x9f, 0xcc, 0xb6, 0x04,
0xe0, 0xbc, 0x40, 0x58, 0xad, 0x79, 0x64, 0xef, 0xb3, 0x58, 0x62, 0x0b,
0xf2, 0xda, 0xbc, 0x38, 0x56, 0xb1, 0xfe, 0xc3, 0x1c, 0xa1, 0x04, 0x0a,
0x6d, 0x51, 0x36, 0x39, 0x9b, 0x12, 0xe5, 0x3a, 0x0b, 0x47, 0xd2, 0x41,
0x2e, 0xe3, 0x18, 0x40, 0x88, 0xac, 0x24, 0x21, 0xb7, 0x4c, 0x22, 0x12,
0xd6, 0xa2, 0x86, 0xa4, 0x77, 0x2c, 0x79, 0x9a, 0xb3, 0x01, 0xa9, 0x1a,
0x8a, 0x87, 0x4b, 0x5c, 0x2a, 0x3e, 0xca, 0xae, 0xe8, 0x8e, 0x82, 0x32,
0x2d, 0xbf, 0x33, 0x5a, 0x38, 0xe0, 0x6d, 0x5b, 0x80, 0xed, 0x92, 0x52,
0x9a, 0xef, 0x2d, 0xd2, 0xd0, 0x09, 0x3c, 0x94, 0xfc, 0xa7, 0x83, 0x94,
0x33, 0xc2, 0x9e, 0x6e, 0x0e, 0xbb, 0x91, 0x0e, 0xff, 0xcd, 0x93, 0x36,
0xe5, 0xc4, 0x21, 0x2f, 0x53, 0xb1, 0x91, 0x3b, 0xe1, 0x92, 0xd2, 0xee,
0x9b, 0x98, 0x9f, 0xff, 0xe5, 0x67, 0x92, 0x1d, 0x6f, 0x5b, 0x7f, 0x86,
0x4e, 0x3a, 0x8f, 0xcf, 0x6f, 0xed, 0x95, 0x68, 0x58, 0xab, 0xad, 0x10,
0x0d, 0x9b, 0x5a, 0x89, 0xc5, 0x0f, 0x50, 0x61, 0xa6, 0x7b, 0xac, 0x2f,
0x95, 0xd2, 0x6a, 0x1c, 0x4a, 0xe4, 0x54, 0x14, 0x4b, 0x47, 0x64, 0xec,
0x48, 0xc8, 0x3f, 0x36, 0x3f, 0x42, 0xe9, 0x56, 0x1e, 0xd4, 0xf3, 0x39,
0xfd, 0x3c, 0x1a, 0x2e, 0xb8, 0xd4, 0x25, 0x9b, 0x14, 0x6b, 0x9d, 0x72,
0xbe, 0xd4, 0x55, 0xcd, 0x21, 0x1a, 0x11, 0x8c, 0x1c, 0x0a, 0x46, 0x66,
0xd4, 0x5e, 0xc9, 0x00, 0x34, 0x72, 0x88, 0x82, 0x4f, 0x8e, 0xa4, 0xe5,
0x2f, 0x9a, 0x09, 0xc8, 0xa0, 0x3d, 0x72, 0x5d, 0x0a, 0xef, 0x9e, 0x82,
0xee, 0x58, 0xb1, 0x5f, 0xea, 0xad, 0x47, 0x4d, 0x34, 0x27, 0x0c, 0xac,
0x4f, 0x23, 0x0b, 0x04, 0x1d, 0x76, 0x5b, 0xf9, 0xe2, 0x09, 0x06, 0x24,
0x8f, 0xa8, 0x28, 0x81, 0xdb, 0x58, 0xa8, 0xd8, 0x6b, 0x99, 0x53, 0x4a,
0x8e, 0x7a, 0x7e, 0x93, 0xf6, 0x84, 0x96, 0xb7, 0xc8, 0x87, 0xf2, 0x50,
0x38, 0xd0, 0x03, 0xf1, 0xda, 0xc8, 0xd5, 0x9f, 0x65, 0x2a, 0x4e, 0x0b,
0x1a, 0x9a, 0xc4, 0x05, 0x33, 0x6a, 0x23, 0xa7, 0x11, 0x10, 0xfa, 0x0f,
0xf7, 0x4d, 0xf6, 0x86, 0x53, 0x51, 0x89, 0x9f, 0x03, 0x94, 0xb3, 0x1a,
0x46, 0x06, 0xc5, 0x55, 0x97, 0xc4, 0xc6, 0xad, 0xca, 0x8a, 0x5b, 0xab,
0xc7, 0x5c, 0x53, 0xfe, 0x2a, 0xc9, 0x21, 0x6e, 0x6f, 0x36, 0xd5, 0xc6,
0x6b, 0x63, 0xcf, 0xc5, 0xa6, 0x67, 0x48, 0xc6, 0xfc, 0x02, 0xa3, 0x81,
0x08, 0x7c, 0xc8, 0x43, 0x21, 0x8d, 0xb6, 0x69, 0x29, 0xd8, 0xb3, 0x67,
0xf8, 0x7d, 0x4e, 0x7b, 0x18, 0x90, 0x86, 0x86, 0xcc, 0x27, 0xa8, 0xa0,
0x4b, 0x46, 0x38, 0x08, 0xeb, 0xe4, 0xb3, 0x29, 0xa2, 0xa1, 0x61, 0x51,
0x4b, 0x20, 0x32, 0xf2, 0x2d, 0xdf, 0x28, 0x16, 0x4b, 0x47, 0x1f, 0xf9,
0xa9, 0x84, 0xeb, 0x11, 0x00, 0x58, 0xd0, 0xcf, 0x14, 0x70, 0xce, 0xe7,
0xe1, 0xb2, 0x24, 0x36, 0x8c, 0xb5, 0xa8, 0x85, 0x21, 0x77, 0x0a, 0x70,
0x9e, 0x86, 0xae, 0x3c, 0xa3, 0x90, 0x3b, 0x8a, 0x2e, 0xe6, 0x29, 0x0b,
0xb8, 0x61, 0x23, 0xa6, 0x14, 0xeb, 0xcd, 0x92, 0x2b, 0xc6, 0x8c, 0x8a,
0x4c, 0x36, 0x67, 0xd1, 0xfc, 0x96, 0x35, 0x14, 0x06, 0xa0, 0x8d, 0x43,
0x72, 0x4e, 0x17, 0x39, 0x5c, 0x25, 0xba, 0xc5, 0x03, 0x35, 0x88, 0x4c,
0x26, 0xca, 0xeb, 0xce, 0x52, 0xf5, 0xcf, 0x0b, 0x4f, 0x85, 0x62, 0xbe,
0x83, 0x43, 0x7c, 0x25, 0x59, 0x02, 0xbf, 0x2c, 0x67, 0xa0, 0xe2, 0xc9,
0x8b, 0x63, 0x0e, 0xf3, 0xc9, 0x5d, 0x83, 0x26, 0x67, 0x88, 0xe6, 0xfd,
0x86, 0x7f, 0x51, 0x12, 0x8f, 0x3f, 0x96, 0xef, 0xa0, 0x6f, 0x79, 0xd1,
0xda, 0xc3, 0xf0, 0x42, 0xaa, 0x34, 0xfb, 0x34, 0x1e, 0x49, 0x08, 0x29,
0x01, 0xf5, 0xcf, 0x8e, 0x97, 0xb1, 0x90, 0x31, 0x14, 0x6f, 0xa5, 0xb5,
0x40, 0xc5, 0x1f, 0x17, 0x2e, 0xcd, 0x6d, 0xdf, 0x6f, 0x15, 0xd1, 0x64,
0xab, 0x25, 0x51, 0xc8, 0xd6, 0x2f, 0x4b, 0x5f, 0xc3, 0x72, 0x08, 0x84,
0x61, 0xaa, 0xd3, 0x90, 0xb9, 0x34, 0x08, 0xe1, 0xa2, 0x7a, 0x9f, 0x3d,
0x5e, 0x3a, 0x93, 0xf4, 0x44, 0xcf, 0x30, 0xa2, 0x61, 0x42, 0xff, 0xe1,
0x17, 0xcb, 0xe7, 0x7c, 0xdd, 0x40, 0x34, 0x54, 0xbc, 0xc8, 0x09, 0x9d,
0x37, 0x17, 0xbe, 0x06, 0x08, 0xdd, 0x9a, 0x5b, 0x77, 0xd1, 0xf2, 0x00,
0x84, 0x9f, 0x0b, 0xd0, 0x86, 0xb1, 0xed, 0xfe, 0xf6, 0xfe, 0x71, 0x97,
0x73, 0x8f, 0x8c, 0xdd, 0x5c, 0xa8, 0xd8, 0xb2, 0x00, 0xfd, 0x27, 0x16,
0xbd, 0xd2, 0x4d, 0x3f, 0x57, 0x34, 0x2d, 0x8e, 0x24, 0xc7, 0xa3, 0x3f,
0x3f, 0x76, 0xa7, 0x6e, 0x55, 0xab, 0x2e, 0xa1, 0x8a, 0x32, 0x32, 0xb9,
0x40, 0x48, 0x6a, 0x2e, 0xd6, 0xd3, 0xc8, 0xfd, 0xc7, 0xfb, 0xa5, 0xac,
0x96, 0xa9, 0x30, 0x19, 0x88, 0x86, 0x53, 0x61, 0xe3, 0x4f, 0xbe, 0x69,
0x4f, 0x90, 0x53, 0x7e, 0xed, 0x17, 0xf6, 0x91, 0x28, 0x48, 0xe1, 0x47,
0xf2, 0xa6, 0xad, 0xbf, 0x19, 0xe7, 0xee, 0xa7, 0x2c, 0xec, 0x21, 0x9a,
0xa4, 0x88, 0x86, 0x4b, 0xb5, 0x5a, 0x80, 0x46, 0xa0, 0xc1, 0xea, 0x27,
0xf6, 0xf7, 0x73, 0x8c, 0x87, 0xf2, 0xf4, 0x03, 0xa1, 0xa2, 0x40, 0x14,
0x55, 0xf3, 0x9c, 0x75, 0x48, 0xef, 0x4a, 0x6d, 0xed, 0x70, 0x53, 0x24,
0xb1, 0x65, 0x28, 0x38, 0x1a, 0x7d, 0xe7, 0x28, 0x4f, 0x55, 0xc9, 0xb7,
0xbc, 0x57, 0x5d, 0x72, 0x80, 0x30, 0x9d, 0x44, 0xe0, 0xd2, 0x13, 0xb5,
0xb0, 0x89, 0xbe, 0xb2, 0xe0, 0x33, 0x3b, 0x3b, 0x37, 0x4d, 0x09, 0x74,
0xff, 0xe6, 0x8e, 0x54, 0x95, 0xae, 0x5c, 0x29, 0xa8, 0x28, 0x65, 0xd2,
0x6f, 0x88, 0x43, 0xba, 0xb3, 0xc3, 0x79, 0x28, 0x7c, 0x5d, 0xa1, 0x86,
0x38, 0x00, 0x49, 0x24, 0xfa, 0xb8, 0xfb, 0x58, 0x03, 0x85, 0x1b, 0x4e,
0x3a, 0x9c, 0xa1, 0xdb, 0x48, 0xd6, 0x70, 0x4a, 0x21, 0x30, 0xe4, 0xb0,
0x46, 0x7e, 0x3e, 0xf9, 0xdd, 0xc1, 0x27, 0x1d, 0xbf, 0x65, 0x30, 0xf6,
0x5a, 0xfe, 0x39, 0x0e, 0x04, 0xef, 0x41, 0x22, 0x77, 0x5b, 0x7e, 0x4e,
0x43, 0x03, 0xf0, 0xee, 0xd7, 0xd6, 0xaa, 0x8f, 0xee, 0x48, 0xac, 0x98,
0x2b, 0x99, 0x06, 0x03, 0xfc, 0xb6, 0x9c, 0x81, 0x54, 0x15, 0x7d, 0xc9,
0x5d, 0xbc, 0xf8, 0x3b, 0x72, 0xef, 0xc9, 0xbf, 0xdf, 0x36, 0xe6, 0xa9,
0x86, 0x26, 0x36, 0x32, 0x16, 0xab, 0xb5, 0x93, 0xbe, 0x49, 0x15, 0xa2,
0x72, 0xf6, 0xf8, 0xc6, 0x9b, 0x1c, 0xbd, 0x23, 0x32, 0x62, 0x56, 0xa4,
0x1f, 0xa2, 0xa0, 0x2c, 0xff, 0x4b, 0x4e, 0xa5, 0xb2, 0xf4, 0x88, 0x40,
0xfc, 0x95, 0x41, 0x7f, 0xf2, 0x22, 0x07, 0x90, 0xcf, 0x31, 0x27, 0x70,
0x7d, 0x71, 0x79, 0xf9, 0xdc, 0xf7, 0x71, 0xca, 0xa1, 0x83, 0xac, 0x73,
0x98, 0x8a, 0xc5, 0x5f, 0xad, 0x91, 0x99, 0x9a, 0x52, 0x80, 0xb8, 0xea,
0x2e, 0xdb, 0xaa, 0x44, 0xaf, 0xd7, 0x5a, 0xf3, 0x5f, 0xc7, 0xed, 0x78,
0x1f, 0xb1, 0xfd, 0x48, 0x34, 0x2a, 0x51, 0xf0, 0x9c, 0x90, 0xf8, 0xd6,
0x1a, 0x1d, 0x55, 0xc2, 0xc8, 0xa7, 0x6f, 0x0a, 0x05, 0x01, 0x70, 0x3e,
0xea, 0xfd, 0x29, 0x97, 0x14, 0x49, 0x2d, 0x21, 0x1b, 0xb7, 0xb6, 0xc1,
0x09, 0xc7, 0x35, 0x20, 0x84, 0x1c, 0xb2, 0x6a, 0x5b, 0xa9, 0x87, 0xe1,
0x30, 0x1e, 0x46, 0x4e, 0xed, 0x61, 0xff, 0xa6, 0x40, 0xec, 0xa0, 0x72,
0xf6, 0xf8, 0xc6, 0x01, 0x4a, 0x12, 0xb0, 0x7f, 0x3d, 0xd6, 0x99, 0xb4,
0xe6, 0x7f, 0xca, 0x00, 0xef, 0xb1, 0x67, 0x4a, 0x20, 0x05, 0xe2, 0x4f,
0x99, 0x84, 0xfe, 0x45, 0xc9, 0xc6, 0x71, 0x09, 0xf5, 0x1e, 0x7b, 0xa7,
0xe4, 0xca, 0x9e, 0x63, 0x5e, 0x58, 0x42, 0x10, 0xca, 0xcd, 0x2c, 0xf0,
0xda, 0x48, 0xd5, 0x44, 0x44, 0xc5, 0x28, 0x08, 0x1a, 0x2d, 0x53, 0xd5,
0x4d, 0x46, 0x80, 0xc8, 0x49, 0x27, 0x24, 0x64, 0xc6, 0x12, 0x3b, 0xd0,
0x92, 0x99, 0x07, 0x8e, 0xfe, 0x16, 0x6c, 0xeb, 0xaf, 0x9d, 0xa9, 0x7e,
0x91, 0x2f, 0xf8, 0x6e, 0xae, 0x64, 0x80, 0x90, 0xd9, 0xe0, 0x5d, 0xa9,
0x58, 0x10, 0x4a, 0xbe, 0x09, 0x55, 0x72, 0xef, 0x43, 0x20, 0x14, 0x1a,
0x22, 0xe2, 0x6f, 0x66, 0x2a, 0xf8, 0x83, 0x0f, 0xb7, 0x0d, 0x9b, 0x72,
0xe5, 0xcc, 0xf9, 0xe2, 0x4b, 0xf4, 0x62, 0x97, 0xcd, 0x06, 0xa8, 0xe8,
0xfb, 0x95, 0x4f, 0xec, 0xf3, 0x0d, 0xb8, 0x2c, 0x44, 0x5b, 0xab, 0x3c,
0xba, 0xc1, 0xa7, 0x5f, 0x36, 0x2c, 0x4a, 0x4c, 0x9a, 0x34, 0xf8, 0x2b,
0x8c, 0x22, 0x4e, 0x28, 0x1c, 0xc1, 0x6b, 0xa1, 0xa1, 0x0e, 0x63, 0x05,
0x84, 0x2b, 0x81, 0x1a, 0x90, 0xef, 0xad, 0xd6, 0xa3, 0xf3, 0x3d, 0x83,
0x90, 0x4d, 0xf9, 0xda, 0xb9, 0x1d, 0xfa, 0xe8, 0x07, 0x6c, 0x1c, 0x45,
0x16, 0xd7, 0x24, 0xf1, 0x74, 0x28, 0x8a, 0xa7, 0xb5, 0x76, 0x66, 0x45,
0x88, 0x78, 0xab, 0x65, 0x01, 0xe6, 0xc5, 0x29, 0xf1, 0xe9, 0x46, 0xbd,
0x36, 0xd2, 0xc6, 0x87, 0x67, 0x90, 0x58, 0x47, 0xfb, 0x1b, 0xd7, 0x2d,
0xe0, 0x79, 0x67, 0xcd, 0x61, 0x18, 0x46, 0x86, 0x86, 0x47, 0x47, 0xec,
0x63, 0xfa, 0xcb, 0x1b, 0x37, 0x45, 0xdb, 0x30, 0xa3, 0x82, 0xeb, 0x90,
0x96, 0x39, 0x38, 0xda, 0x17, 0xb9, 0xf4, 0x7d, 0xc7, 0xf0, 0xe9, 0x7b,
0x30, 0x21, 0xec, 0xeb, 0x24, 0xb6, 0xfc, 0xf6, 0x76, 0x22, 0xf5, 0xdf,
0xf6, 0x63, 0x8d, 0xce, 0xe5, 0x4a, 0x75, 0x85, 0x64, 0x61, 0x98, 0xc5,
0xa6, 0x17, 0x83, 0xc2, 0x27, 0xf8, 0xc1, 0x6a, 0xbd, 0x81, 0xe5, 0x21,
0xbc, 0xe5, 0x38, 0xa1, 0xb5, 0xb6, 0x83, 0x0b, 0xfe, 0x0a, 0x0a, 0x75,
0x3e, 0xdf, 0x04, 0xd5, 0xa4, 0xc4, 0xfd, 0x6e, 0xcb, 0x18, 0xf7, 0xb5,
0xea, 0xc6, 0x0e, 0x67, 0xf6, 0x69, 0x05, 0x63, 0x4e, 0x65, 0xd0, 0x9d,
0x10, 0xe9, 0x3c, 0x14, 0x53, 0x33, 0x22, 0x43, 0x99, 0x6c, 0x2e, 0x55,
0xc9, 0x6b, 0x8b, 0x67, 0x93, 0x34, 0x0a, 0x84, 0x86, 0xa1, 0xee, 0xea,
0x4c, 0x79, 0xea, 0xe1, 0xd6, 0x6b, 0x52, 0x59, 0xe2, 0x78, 0xc9, 0xf7,
0xc1, 0x13, 0x07, 0xf7, 0xa4, 0x2c, 0x01, 0x8d, 0xea, 0xdc, 0xe4, 0x02,
0xf0, 0xaf, 0x8d, 0x0f, 0xea, 0x2f, 0x57, 0xf8, 0x0c, 0x20, 0x3c, 0xcf,
0x7e, 0x2a, 0x10, 0xfe, 0x5b, 0xc9, 0xc6, 0xcd, 0x3b, 0x52, 0xe3, 0xee,
0x74, 0x9e, 0xd9, 0xac, 0x54, 0x4f, 0xd4, 0xdc, 0x0b, 0x28, 0x6f, 0x89,
0x5f, 0xea, 0x45, 0x30, 0xfe, 0x91, 0x20, 0xe4, 0xf8, 0x9d, 0xfd, 0x15,
0x68, 0x9b, 0x03, 0xc9, 0xc2, 0x70, 0xaa, 0x74, 0x6d, 0xad, 0x26, 0xf4,
0x79, 0xd7, 0x98, 0x07, 0x22, 0x22, 0x8b, 0xd9, 0xd1, 0x07, 0x24, 0x83,
0x26, 0x0b, 0xdf, 0x6b, 0x99, 0x44, 0x38, 0x41, 0xe4, 0x6f, 0x41, 0x2f,
0xc6, 0x52, 0x95, 0x2c, 0x62, 0x3c, 0x45, 0x9f, 0x22, 0xfb, 0xa5, 0x1e,
0xb7, 0x22, 0x12, 0xc2, 0x0f, 0x0b, 0x8b, 0x91, 0x1c, 0x9a, 0x5c, 0x21,
0x2b, 0x9b, 0xab, 0x52, 0x62, 0xeb, 0x11, 0xc9, 0x76, 0x04, 0x50, 0x43,
0x92, 0x8c, 0xc4, 0xb6, 0xa6, 0x5e, 0xda, 0xba, 0x68, 0xca, 0x6f, 0xc4,
0x97, 0xcb, 0x1b, 0xdf, 0x97, 0xd2, 0xf7, 0x0d, 0x53, 0x02, 0xee, 0x6f,
0xc2, 0xa7, 0x21, 0x3f, 0x31, 0x94, 0x9c, 0xb7, 0xe3, 0x11, 0xff, 0xc4,
0xe9, 0x90, 0x58, 0x28, 0xe7, 0x52, 0xbe, 0xff, 0xb4, 0x58, 0x49, 0xda,
0x9b, 0xc5, 0x7f, 0xc9, 0x79, 0x54, 0xde, 0x7e, 0xd7, 0x38, 0x69, 0x2d,
0xa2, 0xa1, 0xd1, 0x4c, 0xb6, 0x02, 0x47, 0x72, 0x08, 0x05, 0xba, 0x6f,
0x8a, 0x52, 0x52, 0xb4, 0x79, 0x05, 0x8d, 0x4c, 0x01, 0xf7, 0x39, 0x72,
0xd7, 0xd7, 0x8a, 0xe7, 0x05, 0xa7, 0xa2, 0x50, 0xb9, 0x8a, 0xe4, 0x50,
0x4c, 0x62, 0xe7, 0x4a, 0xc2, 0x09, 0x5f, 0x06, 0x30, 0x37, 0x05, 0xc4,
0x5e, 0xe5, 0x11, 0x11, 0xd3, 0xf7, 0xc5, 0x8b, 0x21, 0x49, 0x75, 0x0c,
0xc2, 0xab, 0xb9, 0xa3, 0xc6, 0x9f, 0x32, 0x7f, 0x3d, 0xba, 0x71, 0x85,
0xe9, 0xff, 0x0a, 0xf9, 0x4d, 0x35, 0x37, 0x1c, 0x92, 0xa7, 0x68, 0x6b,
0x4f, 0x41, 0x17, 0xfd, 0x84, 0xeb, 0xb9, 0xa6, 0xe1, 0xc8, 0xaf, 0xd7,
0x92, 0x46, 0x84, 0xf7, 0xcd, 0x77, 0x5d, 0xff, 0xd2, 0xa3, 0xfb, 0x16,
0x21, 0x7b, 0x31, 0xc4, 0xa6, 0x1b, 0x79, 0x45, 0x58, 0xbc, 0x59, 0x91,
0xdf, 0xd7, 0x8d, 0x4a, 0x3e, 0xda, 0x45, 0x65, 0x71, 0x8e, 0x2c, 0x06,
0x39, 0xa6, 0x14, 0x82, 0xea, 0x01, 0xb2, 0x89, 0xae, 0x5b, 0x47, 0x7b,
0xb3, 0x0e, 0x02, 0x92, 0x43, 0x41, 0x88, 0xc8, 0xbd, 0x90, 0x29, 0x83,
0x30, 0x69, 0x3d, 0x22, 0x52, 0xfa, 0x7e, 0x43, 0xf2, 0x31, 0xc4, 0xb6,
0x26, 0x03, 0x7e, 0x23, 0x0f, 0xa9, 0x70, 0x63, 0x9c, 0x47, 0xbf, 0x6f,
0x0d, 0xeb, 0x8b, 0x28, 0xd8, 0x00, 0xa1, 0xe3, 0x92, 0x5f, 0x4a, 0xca,
0x86, 0x73, 0xde, 0x01, 0xe9, 0x52, 0x9d, 0x45, 0x40, 0x68, 0xed, 0x21,
0x01, 0x84, 0x02, 0x15, 0x00, 0x26, 0x60, 0x1a, 0xf5, 0xce, 0x15, 0x34,
0xc4, 0x01, 0x2e, 0x2d, 0xd5, 0xf1, 0xa5, 0x3a, 0xc5, 0x5a, 0xf8, 0x85,
0x1d, 0x8b, 0x71, 0x6f, 0x3c, 0xe6, 0x3c, 0xcd, 0x6a, 0x10, 0xe9, 0x28,
0xcf, 0xb5, 0x29, 0x4d, 0xe1, 0xb7, 0xe7, 0x15, 0x34, 0x6c, 0xa3, 0x51,
0x84, 0xd6, 0xfa, 0x19, 0x41, 0x28, 0x31, 0x21, 0x29, 0x46, 0x31, 0x26,
0xef, 0x8b, 0x0f, 0x4a, 0xb1, 0x7c, 0x4e, 0xc3, 0xbe, 0x09, 0x19, 0x13,
0x86, 0xb8, 0x76, 0x72, 0x63, 0x63, 0xc7, 0x60, 0xbc, 0xba, 0x45, 0x08,
0xc1, 0xa5, 0x69, 0x77, 0xe0, 0x31, 0x42, 0x77, 0x15, 0xa9, 0x4c, 0xd2,
0xe4, 0x41, 0x70, 0xbe, 0x97, 0xdb, 0xc3, 0x64, 0x94, 0x10, 0x91, 0x44,
0xcc, 0x12, 0x91, 0xc4, 0x5e, 0xef, 0xdc, 0x4e, 0x4e, 0x43, 0xd1, 0x35,
0x6b, 0x26, 0x03, 0xce, 0x9e, 0xf6, 0xc8, 0x04, 0x55, 0x6c, 0x4c, 0x77,
0x2c, 0xc6, 0xc3, 0x39, 0x68, 0xb8, 0x8a, 0x5c, 0x09, 0x45, 0x13, 0x03,
0xa9, 0xcc, 0x10, 0xc2, 0x8c, 0x20, 0x06, 0xc6, 0x5a, 0x1c, 0x1c, 0xb5,
0xa5, 0xaf, 0xc6, 0x24, 0xed, 0x13, 0x89, 0x34, 0x3a, 0x2d, 0x31, 0x6e,
0x24, 0x87, 0xcc, 0xa4, 0xf4, 0x7e, 0xc5, 0xd4, 0x69, 0xae, 0x1a, 0x29,
0x14, 0x32, 0x42, 0x0d, 0x3f, 0x46, 0xac, 0x2a, 0x18, 0xf7, 0x88, 0x4b,
0xab, 0xe8, 0x5e, 0xd4, 0x51, 0x53, 0xb1, 0x01, 0x26, 0xaf, 0x98, 0xc2,
0xef, 0x78, 0x10, 0x94, 0xb8, 0x94, 0x95, 0x84, 0x2d, 0x69, 0x5b, 0xcd,
0xdf, 0x2a, 0x10, 0x72, 0x22, 0xa3, 0xe5, 0x97, 0x69, 0x38, 0xb6, 0x55,
0x7f, 0x9c, 0xc9, 0xac, 0x6a, 0x30, 0xde, 0xbb, 0xe5, 0x54, 0xd1, 0x9e,
0x49, 0xf1, 0x59, 0x30, 0x30, 0xf6, 0x50, 0xc7, 0xf1, 0x85, 0xd4, 0x0b,
0xd8, 0x5a, 0x88, 0x6a, 0x13, 0x55, 0xc3, 0x49, 0xfb, 0x83, 0x44, 0x20,
0xb6, 0x61, 0xdc, 0x00, 0xe8, 0x3d, 0x23, 0x87, 0x42, 0x43, 0xfc, 0xe5,
0x46, 0x51, 0xeb, 0x37, 0xc2, 0x08, 0x4b, 0xf2, 0x7d, 0xb9, 0x21, 0x87,
0xaf, 0x54, 0x96, 0x3c, 0x8a, 0xb3, 0x9b, 0x03, 0xe5, 0xa1, 0x9f, 0x86,
0x18, 0x48, 0xa1, 0x1d, 0x83, 0x2d, 0xbe, 0x59, 0x94, 0x00, 0xec, 0x7d,
0x59, 0x34, 0x25, 0x5a, 0x46, 0x16, 0x69, 0xd8, 0xcb, 0x75, 0xa9, 0xe9,
0x90, 0x1a, 0xe7, 0xf1, 0xd2, 0x78, 0x6e, 0x20, 0xae, 0x9d, 0x7d, 0xc1,
0xa8, 0x9c, 0xff, 0xb5, 0x54, 0x45, 0xaf, 0x76, 0x3a, 0xd0, 0x01, 0xcb,
0x21, 0xda, 0x08, 0xc2, 0x2c, 0xf6, 0x54, 0xf0, 0xe1, 0xc7, 0x0c, 0x42,
0x68, 0x88, 0x04, 0x5c, 0x09, 0xa6, 0xfd, 0x75, 0x47, 0xea, 0xd8, 0x6c,
0xbe, 0xd9, 0xa5, 0x30, 0xc1, 0x94, 0x9f, 0x73, 0xe9, 0x1b, 0xd2, 0x4f,
0x53, 0x74, 0x34, 0x40, 0x1a, 0x9d, 0x47, 0x8d, 0xca, 0xb9, 0xe7, 0xc8,
0x6d, 0x44, 0x3b, 0xbb, 0xd4, 0x2d, 0x60, 0x8c, 0x33, 0x15, 0x15, 0x34,
0x64, 0x45, 0xdf, 0x6b, 0x35, 0xf8, 0xe5, 0x7b, 0x09, 0x17, 0xea, 0x69,
0xdd, 0x5f, 0x39, 0xc6, 0xa5, 0x56, 0x0e, 0x0f, 0xf3, 0x98, 0xde, 0x48,
0x23, 0x30, 0x92, 0x5f, 0x77, 0xee, 0x3f, 0xc8, 0x07, 0xfe, 0x9a, 0x34,
0x8d, 0x4a, 0x87, 0xdb, 0xa1, 0x9e, 0x48, 0x0d, 0xd8, 0xc3, 0xe6, 0x01,
0xa5, 0x48, 0x0e, 0xc5, 0x1c, 0x1c, 0x70, 0x12, 0xb1, 0xed, 0xb3, 0xdc,
0x1d, 0xdc, 0x60, 0xc3, 0x06, 0x43, 0xe0, 0x48, 0x59, 0xe6, 0x3d, 0x1b,
0x2e, 0x59, 0x84, 0xb6, 0xdb, 0x44, 0x52, 0x1f, 0xcc, 0xae, 0x09, 0xb2,
0x8f, 0xce, 0x39, 0x79, 0xff, 0x03, 0xa8, 0x33, 0xdd, 0x8c, 0x4e, 0xb1,
0xb5, 0xe0, 0x92, 0x02, 0x1a, 0xeb, 0xd7, 0x0b, 0x1a, 0xb2, 0x2a, 0x21,
0x37, 0x9b, 0xa5, 0xec, 0x7a, 0x92, 0x18, 0x15, 0x52, 0x15, 0xc6, 0x7b,
0xd7, 0x44, 0xf5, 0xb9, 0x2e, 0xfd, 0xa0, 0xd4, 0x89, 0x91, 0x43, 0x24,
0x26, 0x5e, 0xb3, 0xe6, 0x1f, 0x82, 0xa8, 0xe3, 0x94, 0x74, 0xa9, 0xc8,
0xa1, 0xa7, 0xba, 0x71, 0x57, 0x2b, 0x91, 0x43, 0xb0, 0x9d, 0x24, 0x9f,
0xa4, 0xe3, 0xe9, 0x2e, 0x93, 0x10, 0xff, 0xad, 0x55, 0x84, 0x28, 0x87,
0x36, 0xe9, 0xe4, 0x1b, 0xf3, 0x71, 0xaf, 0x6f, 0x33, 0x33, 0x63, 0x9b,
0xa5, 0x62, 0x31, 0xf6, 0x97, 0x9f, 0x78, 0x8d, 0x55, 0x17, 0x27, 0x12,
0xba, 0x11, 0xb9, 0x4d, 0x4c, 0xc3, 0x75, 0xf2, 0x69, 0x32, 0x0a, 0x81,
0xd7, 0x0b, 0x84, 0x22, 0x86, 0xc6, 0xc5, 0x94, 0xf2, 0xe7, 0xf8, 0xfa,
0x9a, 0x71, 0xb5, 0x0f, 0x4d, 0xea, 0xa2, 0xe5, 0x1b, 0xf3, 0xf1, 0xd3,
0xbe, 0xcd, 0x3c, 0x11, 0xbc, 0x23, 0x5b, 0x5e, 0x34, 0x8d, 0x7e, 0x47,
0xec, 0x97, 0x12, 0x0d, 0xe3, 0xc1, 0x1d, 0xce, 0x26, 0xa2, 0x8e, 0xaf,
0x9a, 0x33, 0x4d, 0xde, 0xe9, 0xc3, 0xfe, 0x6b, 0x2c, 0x57, 0x07, 0x62,
0x2c, 0x1a, 0x4c, 0xb1, 0x1b, 0x89, 0xe9, 0xa8, 0x69, 0x39, 0x95, 0x47,
0x44, 0xee, 0x2e, 0x4b, 0x48, 0xec, 0x3b, 0xa6, 0xe9, 0xeb, 0x4b, 0x0d,
0xe1, 0xd2, 0xad, 0x3d, 0x62, 0x50, 0x6b, 0x3e, 0x98, 0x55, 0x4d, 0x41,
0x15, 0x29, 0x61, 0x6c, 0x2c, 0x12, 0x8b, 0xbf, 0x4a, 0xfc, 0x19, 0x4d,
0x89, 0x88, 0xd7, 0x72, 0x84, 0x3d, 0x46, 0xf8, 0xac, 0xf8, 0x26, 0x92,
0x35, 0x24, 0x80, 0x6b, 0x55, 0x47, 0x9a, 0x11, 0xff, 0xd6, 0x64, 0x84,
0xd7, 0x5e, 0x12, 0xae, 0x5d, 0xf3, 0x13, 0x93, 0xb0, 0x98, 0x8f, 0xbe,
0x6d, 0xca, 0x8b, 0xa4, 0x55, 0xc9, 0xf1, 0xf3, 0xf9, 0x8c, 0xc3, 0x33,
0x0e, 0x21, 0xd4, 0x53, 0x32, 0xf9, 0x26, 0x13, 0xa5, 0xc2, 0x2c, 0x55,
0xae, 0x57, 0x58, 0x7c, 0x36, 0x16, 0x1c, 0x25, 0xbc, 0x93, 0x88, 0xa2,
0x41, 0xc6, 0xa6, 0xb2, 0xf4, 0x09, 0x26, 0xe2, 0x3d, 0x5f, 0x62, 0xc5,
0x8f, 0x48, 0x2c, 0xf5, 0x53, 0x38, 0x6d, 0xc2, 0xa7, 0xc4, 0x9d, 0x0c,
0x69, 0x0e, 0x9a, 0x13, 0xa3, 0x37, 0x5e, 0x62, 0x2e, 0xa5, 0xab, 0x9c,
0x4a, 0xc9, 0xe4, 0xa6, 0xb1, 0xed, 0xbe, 0x24, 0x1a, 0x46, 0x01, 0xf9,
0x34, 0x85, 0x3d, 0x4c, 0x7a, 0x52, 0x48, 0xfb, 0x1b, 0xee, 0xa0, 0x1c,
0x8f, 0xae, 0xfb, 0x3e, 0xf9, 0x30, 0xb5, 0xc2, 0xd5, 0x26, 0xbf, 0xf4,
0x4f, 0xc5, 0xe6, 0x6d, 0x72, 0xa1, 0x89, 0xa5, 0x70, 0x97, 0x5c, 0x6d,
0xc6, 0x64, 0xfa, 0x38, 0xdb, 0x7c, 0xfa, 0xff, 0xa9, 0x92, 0xfd, 0x4d,
0x79, 0x4b, 0x11, 0x77, 0xb2, 0x23, 0xa5, 0xd1, 0xa5, 0x00, 0x51, 0xfd,
0x56, 0x5b, 0x68, 0x72, 0xc4, 0xfe, 0xd6, 0x73, 0xfc, 0xfc, 0xeb, 0x1d,
0x59, 0xac, 0xbf, 0x7c, 0x92, 0x82, 0x89, 0xca, 0x67, 0x18, 0xe2, 0xfe,
0x65, 0x84, 0xfb, 0xff, 0x44, 0xb2, 0x23, 0xbf, 0x32, 0x09, 0x28, 0xa2,
0x60, 0xd1, 0xf8, 0xb6, 0x2b, 0xed, 0x42, 0xff, 0x9a, 0xbf, 0xe3, 0x6b,
0x15, 0x6e, 0xa1, 0xd5, 0x1a, 0x5c, 0xba, 0x24, 0x85, 0xa1, 0x6c, 0xba,
0x1e, 0xa8, 0xcf, 0x8f, 0x4c, 0x59, 0x89, 0x57, 0xc7, 0x91, 0xd2, 0x7b,
0x09, 0x1b, 0xff, 0xd1, 0xf5, 0x35, 0x20, 0x5c, 0xab, 0x3e, 0xb4, 0xc3,
0xbe, 0xf6, 0x21, 0x5d, 0xd1, 0xa4, 0x33, 0x0e, 0x2f, 0x83, 0x69, 0xb9,
0x50, 0x41, 0x10, 0xf3, 0x66, 0x8d, 0xbf, 0x81, 0x4f, 0x20, 0xe1, 0xfe,
0xd1, 0xbf, 0x20, 0x93, 0x8f, 0x4d, 0x35, 0xe9, 0x3a, 0xb2, 0x89, 0x27,
0x56, 0xea, 0x2a, 0x1c, 0x0e, 0x33, 0xa2, 0xe4, 0xe7, 0x13, 0x93, 0xc7,
0x00, 0xc0, 0x0d, 0x69, 0xb0, 0x32, 0x76, 0x80, 0xd3, 0xa2, 0xa4, 0x3c,
0x97, 0xbe, 0xb8, 0xb1, 0xd0, 0x0a, 0x7d, 0x70, 0xf4, 0xab, 0x65, 0xbf,
0x91, 0x27, 0x11, 0xa1, 0x61, 0x4c, 0x47, 0x66, 0xff, 0xea, 0xd5, 0xab,
0x72, 0x0b, 0xde, 0xab, 0x54, 0x4e, 0x78, 0xd8, 0xd5, 0xa6, 0x03, 0xae,
0x90, 0x9e, 0x25, 0x53, 0x45, 0x3e, 0xcd, 0xba, 0xab, 0x9e, 0x9c, 0x9b,
0xaf, 0x21, 0x1a, 0xbe, 0xfc, 0xcb, 0xbc, 0xf8, 0x29, 0x79, 0xdf, 0x16,
0x87, 0x13, 0xd5, 0x95, 0x9d, 0xfd, 0xfd, 0x85, 0xea, 0xe1, 0x65, 0xc3,
0xb2, 0xa0, 0x22, 0x5a, 0x50, 0x4d, 0x5b, 0x6d, 0xe9, 0x80, 0xc5, 0x0f,
0x79, 0x47, 0x54, 0x34, 0xc0, 0x2d, 0xad, 0xd5, 0x3d, 0x76, 0xf5, 0x1f,
0xff, 0x77, 0x2f, 0xed, 0x99, 0xc5, 0xbf, 0xf8, 0xe2, 0x8b, 0xdf, 0xe0,
0x5c, 0xcc, 0x1b, 0x56, 0x06, 0x4d, 0x1b, 0xf7, 0xf2, 0x02, 0xc4, 0xfd,
0x83, 0xfd, 0x83, 0xbf, 0x5c, 0xf6, 0xf3, 0x34, 0x22, 0x51, 0x71, 0xd4,
0xf6, 0x4f, 0x6e, 0xbc, 0x76, 0xb3, 0x9c, 0xf0, 0x79, 0xe7, 0x15, 0xe2,
0x4c, 0xde, 0x09, 0xa6, 0x42, 0x25, 0x11, 0xb0, 0x9a, 0x64, 0xe9, 0x60,
0xfd, 0xf7, 0x1e, 0x50, 0xfc, 0x1c, 0x49, 0xee, 0xf4, 0xba, 0x49, 0x63,
0x80, 0x8a, 0x35, 0xdb, 0xfd, 0xcc, 0xe5, 0xb5, 0xc3, 0xaf, 0xf9, 0x36,
0x4b, 0x23, 0x54, 0xec, 0xb5, 0xce, 0x6c, 0xd8, 0xf6, 0x68, 0xae, 0x36,
0x1e, 0xcd, 0x6f, 0x55, 0x97, 0x9c, 0x10, 0x9b, 0x69, 0xd2, 0x49, 0x26,
0x75, 0x0b, 0xd5, 0xcc, 0xc8, 0x2d, 0xfd, 0x3d, 0x4b, 0x95, 0x62, 0x71,
0x6f, 0x48, 0x33, 0xd0, 0xc8, 0xb7, 0x29, 0x45, 0xff, 0xa4, 0x53, 0x79,
0x7c, 0x03, 0xed, 0xde, 0xfb, 0xe8, 0x89, 0xba, 0xb9, 0xdf, 0x96, 0x04,
0x87, 0x40, 0x44, 0xc5, 0x63, 0x24, 0xae, 0x37, 0x2b, 0x29, 0x14, 0x1b,
0x0f, 0xde, 0x61, 0xbf, 0x14, 0x31, 0xbe, 0x8a, 0x74, 0xc8, 0xf1, 0xa1,
0xc2, 0x16, 0xbc, 0xc1, 0xfa, 0x67, 0xcd, 0xa2, 0x0a, 0x7c, 0x1f, 0x58,
0x25, 0x83, 0x9c, 0xa1, 0x09, 0x0a, 0x49, 0xdd, 0x9c, 0x23, 0x8c, 0xe6,
0xe8, 0xf9, 0x79, 0xc6, 0xb8, 0x80, 0xb8, 0xf6, 0x02, 0x6e, 0x82, 0x39,
0xee, 0xee, 0x8e, 0x6f, 0x55, 0x2b, 0xe4, 0x19, 0x62, 0x3f, 0x95, 0x64,
0x31, 0x6a, 0x10, 0x91, 0x38, 0x52, 0x9f, 0xdd, 0x97, 0xfa, 0x27, 0x7a,
0xb9, 0x78, 0x71, 0xfb, 0x57, 0x3a, 0xec, 0x91, 0x8e, 0x7c, 0x0b, 0x43,
0x20, 0x56, 0x9c, 0xcf, 0x70, 0x43, 0xd4, 0xce, 0xd7, 0x96, 0x9d, 0x65,
0xdb, 0x87, 0x08, 0xd5, 0x63, 0xf8, 0x94, 0x4e, 0xc7, 0xbb, 0x5c, 0x6b,
0xbc, 0x72, 0xa5, 0x7f, 0x15, 0x34, 0xf4, 0xc2, 0x66, 0x96, 0x46, 0xb1,
0xc6, 0x9e, 0x19, 0x37, 0xc2, 0xc6, 0xac, 0x28, 0xf8, 0x8c, 0xac, 0x48,
0x0a, 0xa0, 0x78, 0x66, 0xda, 0xb9, 0xe6, 0x86, 0x82, 0x02, 0xd1, 0x5f,
0x3b, 0xe3, 0x54, 0x1d, 0x14, 0xd8, 0xaa, 0x6b, 0xce, 0xda, 0x9a, 0x01,
0x28, 0x79, 0xb8, 0x8b, 0x73, 0x04, 0xc1, 0x9c, 0xa0, 0xa1, 0x8b, 0xe2,
0xcd, 0x56, 0x3b, 0x21, 0xcf, 0xbb, 0x4a, 0xea, 0x2c, 0x8c, 0x98, 0x4d,
0x65, 0xcf, 0x4c, 0x13, 0x5d, 0x04, 0xee, 0x6f, 0x13, 0x4d, 0x6e, 0xee,
0xdc, 0x34, 0xb5, 0xc8, 0x9b, 0x3b, 0xb0, 0xf4, 0x6c, 0x4b, 0x4b, 0xf9,
0x42, 0x04, 0x85, 0x8e, 0x53, 0x59, 0x66, 0xa2, 0x55, 0x50, 0x43, 0x6c,
0x14, 0x5b, 0x17, 0x50, 0xd8, 0xe6, 0x38, 0xbf, 0x2d, 0x75, 0x46, 0xdc,
0x96, 0x4e, 0xff, 0xea, 0xd6, 0x2d, 0xba, 0x27, 0x2b, 0xa1, 0xca, 0xb0,
0xe9, 0x92, 0xa3, 0xa7, 0x50, 0xa3, 0x53, 0x3f, 0x78, 0xf4, 0xf5, 0x9d,
0xd7, 0xcd, 0xf1, 0x02, 0xfd, 0xbc, 0xde, 0x2e, 0x03, 0x2c, 0x01, 0xf1,
0xd7, 0x1c, 0xa9, 0x34, 0x01, 0x06, 0x27, 0x11, 0x73, 0x88, 0x1d, 0xee,
0xd7, 0x20, 0x35, 0xfc, 0x75, 0xce, 0x5b, 0xa1, 0xc1, 0x74, 0x3c, 0x47,
0x75, 0x6d, 0x95, 0x19, 0x65, 0xa0, 0x07, 0xa2, 0x4b, 0xb1, 0x9d, 0x2e,
0x74, 0x1d, 0xe7, 0x61, 0xae, 0x12, 0xda, 0xe5, 0x89, 0xaf, 0x66, 0x6a,
0xfa, 0x0d, 0x9b, 0xf1, 0xc6, 0xf1, 0xb0, 0x94, 0x43, 0x39, 0xe3, 0x5d,
0xaa, 0x26, 0xfa, 0x7e, 0x43, 0x9c, 0xef, 0xc4, 0xd4, 0xd9, 0x60, 0x74,
0xc8, 0x8a, 0xdc, 0xae, 0x70, 0x91, 0x92, 0x84, 0xdd, 0x53, 0xa6, 0x63,
0x48, 0x0f, 0xd2, 0x28, 0x72, 0x83, 0xf3, 0x49, 0xd1, 0x42, 0x43, 0xab,
0xe3, 0xda, 0x85, 0x2d, 0x0f, 0xe6, 0x29, 0x6f, 0xd0, 0xc5, 0x34, 0x38,
0xb7, 0x16, 0xf2, 0xe1, 0xb6, 0x34, 0x25, 0x35, 0x1b, 0x31, 0x32, 0x63,
0x53, 0x7b, 0x42, 0x6b, 0x59, 0x9c, 0x4a, 0xdd, 0xc2, 0xc1, 0xde, 0xb9,
0x14, 0x31, 0xbe, 0xfb, 0x5b, 0xdc, 0x78, 0x6e, 0xfa, 0xbc, 0x3b, 0xa6,
0xcf, 0xa9, 0x5c, 0x5b, 0x12, 0x88, 0xe7, 0x39, 0x4c, 0xa2, 0xa3, 0xe7,
0x2f, 0xf4, 0x27, 0x80, 0x8a, 0x17, 0x6d, 0xe1, 0xad, 0x6f, 0x0b, 0x33,
0x92, 0xd5, 0x5f, 0xa1, 0xf0, 0x70, 0xd8, 0xe4, 0xfd, 0x16, 0xce, 0x59,
0xba, 0xa1, 0xdb, 0xc4, 0xa6, 0x2a, 0xf8, 0xbc, 0x59, 0xdd, 0x28, 0x11,
0x57, 0x94, 0x7b, 0x0d, 0x4b, 0x95, 0x19, 0xa9, 0x5b, 0xb4, 0xfb, 0x63,
0x56, 0x40, 0xa4, 0x62, 0x5b, 0xa5, 0x1e, 0x2f, 0xc1, 0xd8, 0xc9, 0x4b,
0x6f, 0x52, 0x7b, 0xca, 0x6b, 0xc0, 0xe1, 0x24, 0x9b, 0x86, 0x8c, 0xf0,
0x84, 0x47, 0x17, 0xa6, 0x88, 0x94, 0xac, 0xe2, 0x3f, 0x62, 0xbf, 0xcb,
0x56, 0x96, 0x78, 0x85, 0x23, 0xc3, 0x86, 0x26, 0x9a, 0x00, 0xc4, 0xf3,
0xe6, 0xed, 0xfe, 0x56, 0xde, 0x81, 0xd1, 0x29, 0x15, 0x18, 0xad, 0xf7,
0x2d, 0xb5, 0x27, 0x94, 0x49, 0xb9, 0x17, 0x43, 0x65, 0x69, 0xf3, 0x14,
0xef, 0x46, 0x40, 0x17, 0x81, 0x8a, 0xa6, 0xd8, 0x90, 0x77, 0xbc, 0x7e,
0x88, 0x04, 0x94, 0x5f, 0x22, 0x92, 0x00, 0xe4, 0x2d, 0x06, 0xf8, 0x05,
0xc4, 0xd6, 0x62, 0x17, 0x1c, 0x53, 0x91, 0xbb, 0xa7, 0x58, 0x45, 0xe5,
0x15, 0x52, 0xa8, 0xb3, 0x81, 0x6e, 0x4a, 0x65, 0x86, 0x98, 0xd4, 0x23,
0xfb, 0x14, 0x46, 0x5f, 0x28, 0xea, 0x87, 0xd6, 0xcd, 0x1c, 0x59, 0x25,
0xda, 0xb0, 0x10, 0x00, 0x70, 0x6c, 0xa8, 0xb4, 0x25, 0x89, 0xd4, 0x72,
0x8d, 0x91, 0xa9, 0x68, 0x9c, 0xd3, 0xf1, 0xd8, 0xd2, 0x90, 0xbb, 0x03,
0xd3, 0xb0, 0x19, 0x05, 0x82, 0x30, 0x52, 0xd8, 0x2a, 0xba, 0x2d, 0x08,
0x8b, 0x9a, 0x11, 0x1a, 0xb9, 0x4a, 0xc5, 0x4f, 0xa9, 0x02, 0xfb, 0x26,
0x1e, 0x36, 0x69, 0x99, 0x96, 0x68, 0xd9, 0xfb, 0x21, 0xce, 0xf3, 0x73,
0x08, 0xa1, 0x1b, 0xb8, 0x21, 0x76, 0xd1, 0x9a, 0x5c, 0x5b, 0x88, 0x76,
0x1e, 0x32, 0x1f, 0x52, 0x5d, 0xe3, 0x02, 0x9b, 0x39, 0x72, 0x0a, 0x4a,
0xe2, 0x9e, 0x59, 0x54, 0x9c, 0x38, 0xa1, 0xd1, 0x38, 0xe9, 0x9d, 0xcc,
0x2b, 0x88, 0xe6, 0x1c, 0x0b, 0xb1, 0xa8, 0xb1, 0xdd, 0xae, 0x9c, 0x20,
0x2e, 0xe5, 0xad, 0xe2, 0x0a, 0x75, 0x0b, 0x8e, 0x9e, 0xa6, 0x69, 0xb4,
0x9e, 0x57, 0xb9, 0xf3, 0xfa, 0xdf, 0xe6, 0xb1, 0xea, 0x2e, 0x05, 0xef,
0x89, 0x50, 0x47, 0x58, 0x91, 0x33, 0x72, 0x7e, 0x5e, 0xe6, 0xb6, 0x8c,
0x6a, 0xde, 0x17, 0x88, 0xa6, 0xdb, 0x04, 0x5b, 0x6e, 0x35, 0x2c, 0x7e,
0x85, 0x59, 0x28, 0xc6, 0xfe, 0xd1, 0xa2, 0x17, 0x83, 0x58, 0x0b, 0x3a,
0x66, 0x64, 0xeb, 0x4a, 0x76, 0xf1, 0x04, 0xb0, 0xa8, 0x0c, 0x32, 0x43,
0x5f, 0x95, 0xa2, 0x46, 0xd1, 0x34, 0x0b, 0x88, 0xa5, 0x0a, 0xa2, 0xa1,
0xa1, 0x4b, 0x0a, 0x34, 0xc4, 0x8e, 0x4f, 0xa1, 0xa1, 0xe2, 0x9d, 0xbe,
0x8b, 0xdd, 0x26, 0x25, 0x80, 0xd2, 0x96, 0x90, 0x17, 0x2d, 0x50, 0xcc,
0x10, 0x39, 0x1b, 0x8d, 0x8c, 0xb5, 0xde, 0x94, 0x7a, 0x7f, 0x22, 0xdd,
0x50, 0x9d, 0xbc, 0xa7, 0x58, 0x42, 0x0e, 0x92, 0xc3, 0xb3, 0x5e, 0x3a,
0x23, 0xc7, 0x7b, 0x3d, 0x30, 0x16, 0x1f, 0x5b, 0xaf, 0xb5, 0xca, 0xfb,
0x69, 0x4c, 0xa4, 0x67, 0x01, 0x76, 0x4c, 0x44, 0xef, 0x9b, 0xed, 0x80,
0xf7, 0xfa, 0x36, 0x73, 0xd3, 0x31, 0x65, 0xa6, 0xaf, 0x37, 0x16, 0x3a,
0x6f, 0x04, 0x62, 0xbf, 0x5f, 0x70, 0x29, 0x32, 0x96, 0xa8, 0x8d, 0xa0,
0x7e, 0xb8, 0xea, 0x78, 0xac, 0x06, 0x22, 0x55, 0xd0, 0x50, 0x1e, 0x37,
0x4d, 0x8f, 0x85, 0xb4, 0x2a, 0x90, 0x43, 0x63, 0xaa, 0x16, 0xf7, 0x8c,
0x23, 0x30, 0xea, 0xd9, 0x2e, 0x37, 0x3a, 0xb3, 0x97, 0x37, 0x89, 0x09,
0x44, 0x8e, 0x13, 0x4b, 0xdd, 0x26, 0x4a, 0xf3, 0xe6, 0xee, 0x1f, 0x30,
0x42, 0xaf, 0x9e, 0x65, 0x43, 0xe5, 0x95, 0x68, 0xb8, 0x55, 0x06, 0x68,
0x3a, 0x7e, 0xf3, 0x6e, 0xd2, 0x7b, 0x16, 0x20, 0x87, 0x1f, 0x26, 0x9c,
0x2a, 0xcb, 0x22, 0xaa, 0x6c, 0xc2, 0xeb, 0x45, 0x3f, 0x0d, 0x8c, 0xc5,
0x2c, 0xf2, 0x9e, 0x42, 0x3f, 0x4d, 0x00, 0xd5, 0x46, 0x5e, 0x94, 0xba,
0xb4, 0xb0, 0x7d, 0xa4, 0x00, 0x98, 0x18, 0x84, 0x8f, 0xee, 0x5b, 0x84,
0x63, 0x93, 0xac, 0xb8, 0x29, 0x7f, 0xb9, 0xdc, 0x6a, 0xdb, 0x2e, 0x46,
0x53, 0xc3, 0x18, 0x97, 0xba, 0x15, 0x38, 0x9b, 0x88, 0xe2, 0x13, 0x79,
0xde, 0x4c, 0x43, 0x97, 0x1c, 0xaa, 0x6e, 0x1a, 0xba, 0x05, 0x0d, 0x99,
0x82, 0x45, 0x13, 0x89, 0xa8, 0x4a, 0xbf, 0x62, 0x36, 0x72, 0x99, 0x2c,
0x38, 0x22, 0xc8, 0x97, 0x24, 0x27, 0x70, 0xb9, 0xdc, 0x13, 0x65, 0x20,
0xe6, 0x45, 0x6e, 0xd6, 0x34, 0x2e, 0x07, 0x17, 0x11, 0x2e, 0xb8, 0xe6,
0x06, 0x64, 0x0f, 0xa7, 0x13, 0x3d, 0x58, 0xe4, 0x52, 0xdb, 0x40, 0x6b,
0xfb, 0x64, 0xb8, 0x58, 0xb6, 0x73, 0xc8, 0x17, 0x1c, 0x1b, 0x1a, 0xb6,
0x8d, 0x76, 0x8c, 0x35, 0x0b, 0x00, 0x00, 0x0e, 0x00, 0x49, 0x44, 0x41,
0x54, 0x93, 0x0d, 0x1a, 0x9a, 0xbe, 0x6e, 0x03, 0xb1, 0xe8, 0x55, 0x30,
0x72, 0xa8, 0xa2, 0x54, 0xc5, 0xeb, 0xa4, 0x4b, 0x4f, 0xac, 0xe2, 0xf2,
0xa4, 0xdc, 0xa2, 0xbc, 0xaf, 0x8d, 0x8f, 0x51, 0xa3, 0x61, 0x7b, 0xb5,
0x4d, 0x33, 0xad, 0xdf, 0x38, 0x67, 0xf2, 0xa0, 0x57, 0x4c, 0xa3, 0x02,
0x37, 0xba, 0x1d, 0x70, 0x69, 0xc6, 0xee, 0xad, 0x28, 0x5a, 0xa7, 0xc7,
0x79, 0x3f, 0x06, 0x57, 0xb9, 0x09, 0xa1, 0x17, 0x2b, 0x41, 0x48, 0x57,
0x9f, 0xc4, 0x93, 0x48, 0x47, 0x97, 0x16, 0x01, 0xb6, 0x8b, 0x76, 0x74,
0x28, 0x9a, 0x76, 0xaf, 0x65, 0xc2, 0x86, 0xf7, 0x4c, 0xa2, 0xbf, 0xf7,
0x0b, 0x43, 0xd4, 0x4d, 0x43, 0x6d, 0x44, 0x84, 0xa2, 0x94, 0xda, 0xe3,
0x72, 0xa7, 0x02, 0x7b, 0x15, 0x3c, 0x42, 0x02, 0x69, 0x13, 0x69, 0xfe,
0x24, 0xf3, 0x54, 0xa6, 0x61, 0xb9, 0xdf, 0xd7, 0x50, 0x86, 0x62, 0xc4,
0x73, 0x36, 0x2f, 0x23, 0xce, 0x40, 0xe7, 0xcd, 0x03, 0x93, 0xb8, 0xb2,
0x7d, 0xc5, 0x45, 0xf3, 0xec, 0x45, 0x91, 0xe6, 0x9c, 0x86, 0x48, 0x77,
0x89, 0x1c, 0x82, 0x86, 0x88, 0x4d, 0x55, 0x89, 0x4b, 0x89, 0x45, 0x8b,
0x3e, 0x43, 0xbb, 0x81, 0x66, 0x94, 0x6c, 0xfa, 0x26, 0xf8, 0xe3, 0xdc,
0xda, 0xc8, 0x96, 0xb3, 0x89, 0xa6, 0x2c, 0x88, 0xe5, 0x5d, 0x0c, 0x68,
0x59, 0x28, 0x75, 0x0c, 0x91, 0x53, 0x43, 0xe6, 0x62, 0x86, 0x6e, 0x93,
0x13, 0xab, 0x2b, 0x5e, 0x93, 0x54, 0xcd, 0x54, 0x97, 0x68, 0xb8, 0x75,
0x3d, 0x17, 0x2c, 0xdb, 0xb6, 0xd7, 0xe0, 0xf4, 0x62, 0x0e, 0x91, 0xc5,
0xf0, 0x4d, 0xd9, 0x5a, 0x72, 0x85, 0x7c, 0x0e, 0xe3, 0x11, 0x74, 0xda,
0x9d, 0x85, 0x06, 0xf8, 0xbc, 0x29, 0xd9, 0x85, 0xdb, 0xa6, 0xb9, 0x9f,
0x66, 0x15, 0x5b, 0xb7, 0x31, 0xa9, 0x43, 0x7d, 0x2b, 0xbf, 0xe0, 0xee,
0xa6, 0x6d, 0xa5, 0x2c, 0x00, 0xce, 0x65, 0xfb, 0xa1, 0x84, 0xf0, 0x9c,
0xfd, 0x4d, 0x4c, 0x8c, 0x44, 0x3c, 0x6b, 0x3a, 0xa0, 0x8b, 0xf6, 0x22,
0xa1, 0xe2, 0x9e, 0xe1, 0x52, 0xb4, 0x79, 0x13, 0x9b, 0x66, 0x26, 0xe7,
0x8d, 0x6c, 0x6d, 0x5d, 0x69, 0x2f, 0xfc, 0x5d, 0xab, 0x66, 0x7a, 0xfe,
0x62, 0x13, 0x10, 0xf6, 0x40, 0x91, 0x64, 0xa1, 0x1c, 0x25, 0x10, 0x6f,
0xc0, 0xf9, 0x7c, 0x89, 0xab, 0x89, 0x07, 0x6f, 0x8f, 0x49, 0x2e, 0x47,
0xf7, 0x99, 0x7e, 0x18, 0x16, 0xb1, 0xae, 0xaf, 0x08, 0x97, 0xaa, 0x2c,
0x53, 0xd2, 0xb9, 0x87, 0xd2, 0x5e, 0x36, 0x9d, 0xa8, 0x9c, 0x86, 0xbb,
0xb6, 0xbf, 0xa4, 0xb0, 0x86, 0xe8, 0x92, 0x01, 0x42, 0x53, 0x93, 0xa0,
0xb8, 0x2a, 0xf9, 0xf6, 0xbe, 0xed, 0x10, 0x86, 0x6e, 0xdd, 0x2c, 0xb5,
0xd0, 0xda, 0xa2, 0xb7, 0x6c, 0x32, 0xd9, 0xbb, 0x5d, 0x45, 0x05, 0x8f,
0xdc, 0x7b, 0x41, 0xe8, 0xf0, 0x98, 0x08, 0x54, 0x86, 0x42, 0x7b, 0x41,
0x03, 0xb0, 0xdc, 0xea, 0xdd, 0x47, 0x13, 0x09, 0x02, 0x23, 0x49, 0x63,
0x40, 0x14, 0x5f, 0x16, 0x19, 0xdc, 0x33, 0x7e, 0xda, 0xf1, 0x4d, 0x0c,
0xbe, 0x34, 0x47, 0x19, 0x1a, 0xd6, 0xb0, 0x97, 0x9b, 0xd4, 0x19, 0x10,
0xa2, 0x55, 0x9f, 0xf4, 0x4c, 0xa4, 0xf4, 0xcb, 0x7b, 0x85, 0x99, 0xb0,
0xd4, 0x93, 0x6d, 0x05, 0x7d, 0x53, 0x58, 0xea, 0xd9, 0xb2, 0xcb, 0x6e,
0x92, 0xfc, 0x58, 0x00, 0xee, 0x8e, 0x45, 0x9f, 0x5c, 0x6f, 0xe7, 0xdb,
0x50, 0xac, 0xba, 0xb1, 0x2d, 0xbb, 0xdc, 0xc9, 0x1e, 0x21, 0xca, 0xd7,
0x8c, 0x30, 0xf4, 0x30, 0xcc, 0x26, 0x53, 0xe1, 0x1f, 0x1a, 0x80, 0x25,
0x67, 0x3a, 0xdf, 0xc5, 0xc6, 0x25, 0x6c, 0x24, 0x7a, 0x19, 0xe2, 0xc1,
0xbd, 0xce, 0xc5, 0x5f, 0x72, 0x3d, 0xf8, 0x9d, 0xbe, 0xe9, 0x7c, 0x5a,
0x80, 0xc8, 0x3e, 0x0e, 0xca, 0xc2, 0xb6, 0xbf, 0x54, 0xa9, 0xba, 0x8e,
0x07, 0xa1, 0x12, 0x84, 0x81, 0x4a, 0x35, 0xf6, 0x90, 0x5e, 0x2a, 0x51,
0xb0, 0x6d, 0x3b, 0x7e, 0xa5, 0x15, 0x4f, 0x2c, 0x5c, 0xa9, 0xb2, 0xd4,
0xfb, 0x8e, 0xa1, 0xa0, 0xdd, 0x12, 0x34, 0xbf, 0x5e, 0x6e, 0xf2, 0xee,
0x95, 0x20, 0x4a, 0xed, 0x29, 0xbc, 0xa6, 0x06, 0x29, 0x76, 0xab, 0x13,
0x0d, 0xb1, 0xef, 0x29, 0xd6, 0xda, 0xc8, 0xe1, 0xfd, 0x2c, 0xda, 0x79,
0xd9, 0xf8, 0x30, 0x5c, 0x3c, 0x7b, 0x82, 0x21, 0xde, 0x78, 0x89, 0x65,
0xf0, 0x6d, 0x1b, 0x63, 0x95, 0x77, 0x3c, 0x99, 0x5f, 0x52, 0x4e, 0x96,
0x86, 0x9e, 0x17, 0x85, 0x2a, 0x96, 0x5e, 0x7d, 0x57, 0xf1, 0x3c, 0x99,
0xe9, 0x34, 0x12, 0x39, 0x2c, 0xda, 0xf5, 0x72, 0x67, 0xb3, 0x3f, 0x37,
0x3b, 0xd8, 0x08, 0xe2, 0x26, 0xd9, 0x8c, 0xff, 0x79, 0xc0, 0xa9, 0x00,
0x40, 0x1c, 0x25, 0xb0, 0x8c, 0x42, 0xc5, 0xdd, 0x7c, 0x33, 0x91, 0x35,
0xfd, 0x02, 0xf1, 0x36, 0x7b, 0x6d, 0xf0, 0x0c, 0x53, 0xb3, 0xef, 0x89,
0x0c, 0x55, 0xac, 0x23, 0x57, 0xb8, 0xb4, 0x57, 0x74, 0x78, 0x1b, 0x77,
0xfb, 0x3c, 0xb3, 0xe8, 0x96, 0xdd, 0xbd, 0xe6, 0x6c, 0x98, 0xbd, 0xc0,
0x28, 0x07, 0x77, 0x4a, 0xbb, 0xba, 0xf6, 0xf2, 0x1e, 0x4c, 0xd3, 0xb2,
0xd9, 0x68, 0x7c, 0x5e, 0x2e, 0x08, 0xa3, 0x8b, 0xb4, 0x3e, 0xeb, 0x52,
0x17, 0x8d, 0xde, 0x74, 0xf5, 0xc1, 0x3a, 0xd3, 0x70, 0xb7, 0xec, 0x65,
0x8a, 0x37, 0x9a, 0x58, 0xa7, 0x4f, 0xf6, 0x58, 0x9c, 0x79, 0xe1, 0x75,
0x2e, 0x86, 0x1f, 0xf2, 0xd6, 0xc3, 0xbc, 0x07, 0x8e, 0xb7, 0x8e, 0xb6,
0x4b, 0x5b, 0xc3, 0xf8, 0x1b, 0xac, 0x58, 0x78, 0x91, 0x9e, 0x4c, 0x85,
0x4b, 0x59, 0x09, 0x74, 0x35, 0x76, 0xc9, 0x5e, 0x5a, 0x64, 0x51, 0x51,
0x31, 0xc8, 0x85, 0xe6, 0xc5, 0x41, 0x56, 0xa8, 0x8f, 0x5a, 0x88, 0x47,
0xfb, 0x5c, 0x02, 0xed, 0xdb, 0x2e, 0xbd, 0xbd, 0x52, 0xaf, 0xb7, 0x11,
0xe2, 0x8b, 0x72, 0xc1, 0x9a, 0x17, 0x79, 0x29, 0x06, 0xc1, 0xb0, 0xa6,
0x71, 0x75, 0x34, 0x4c, 0xc9, 0x6b, 0x8b, 0x5e, 0xe6, 0x45, 0x5a, 0x59,
0xb2, 0xd1, 0x42, 0xbf, 0x48, 0xd5, 0x13, 0xc5, 0x46, 0x9c, 0x87, 0x31,
0xf9, 0xb6, 0x5f, 0x25, 0xd6, 0x0d, 0x17, 0xd3, 0xb7, 0x6b, 0xe5, 0xb6,
0xf8, 0x8e, 0x2d, 0xa1, 0x61, 0x70, 0x2d, 0xc2, 0x30, 0x1f, 0xbb, 0xef,
0x49, 0x0f, 0x49, 0xed, 0x30, 0xc2, 0xfb, 0x76, 0x4d, 0x34, 0xce, 0xe7,
0xf5, 0x16, 0x09, 0x9b, 0x92, 0x96, 0x5f, 0x33, 0xdb, 0x4a, 0x0e, 0xaf,
0x98, 0xad, 0x87, 0xf9, 0xb6, 0xa1, 0x36, 0xbb, 0x09, 0xb9, 0x61, 0xec,
0x30, 0x44, 0xa2, 0x61, 0x6d, 0x45, 0x2b, 0x6d, 0x3a, 0xd9, 0x1d, 0xde,
0x2b, 0x3f, 0x99, 0xa5, 0x01, 0x69, 0x9a, 0xdd, 0x5e, 0xae, 0xf0, 0x2d,
0x15, 0xfa, 0x02, 0xc0, 0x34, 0x2b, 0xb2, 0xaf, 0xe6, 0x9b, 0x4d, 0x88,
0x6f, 0x27, 0xe3, 0x71, 0x39, 0x98, 0xe4, 0x5d, 0x17, 0xb9, 0x93, 0x60,
0x24, 0x72, 0x4b, 0x76, 0x76, 0x69, 0x94, 0x61, 0x39, 0xc9, 0x5e, 0x59,
0x09, 0xea, 0xe8, 0xd9, 0xe5, 0x9d, 0x5d, 0x3d, 0xe3, 0x85, 0x96, 0x5b,
0xd2, 0x4d, 0x50, 0x3c, 0xb6, 0xdb, 0x65, 0xb9, 0x64, 0x93, 0x97, 0xa8,
0xa4, 0xe6, 0x24, 0x6c, 0x8c, 0x8e, 0xd4, 0x7c, 0xff, 0xa2, 0x15, 0xc8,
0x8b, 0xd8, 0x15, 0xe4, 0x7e, 0x94, 0xa2, 0x97, 0xe6, 0x85, 0xd4, 0x33,
0xd6, 0x22, 0x8a, 0x27, 0x03, 0x15, 0x44, 0x97, 0xe6, 0xf7, 0x6d, 0xb1,
0x34, 0x4a, 0xc6, 0xb0, 0x22, 0x13, 0x32, 0xe9, 0xb5, 0x9e, 0x2d, 0x8a,
0x70, 0xe3, 0x72, 0xdd, 0x69, 0x3e, 0xdf, 0xb5, 0xdd, 0xc2, 0xc5, 0x5e,
0xd4, 0x2d, 0x58, 0x7c, 0xc2, 0x34, 0x21, 0xc6, 0x44, 0x27, 0x3b, 0xdb,
0xaa, 0x66, 0x46, 0x7a, 0x2e, 0xfc, 0xdd, 0xfb, 0x29, 0xd8, 0x19, 0xdb,
0x3d, 0x4f, 0x45, 0x4f, 0xa9, 0xd4, 0x15, 0x09, 0xa3, 0x6c, 0xae, 0xec,
0xf7, 0x8b, 0x96, 0x59, 0x32, 0xa5, 0x8d, 0xf6, 0xe2, 0xee, 0xa7, 0x76,
0x47, 0xf6, 0x1f, 0x86, 0xa9, 0x6e, 0x7a, 0x9e, 0xa5, 0xe1, 0x90, 0xfc,
0x52, 0xa5, 0x3b, 0x25, 0xf9, 0x33, 0x4c, 0x36, 0x36, 0x4a, 0xc6, 0x4a,
0x22, 0xd7, 0x15, 0x9f, 0xdd, 0xb7, 0xa6, 0xd0, 0x46, 0x8b, 0xf9, 0x16,
0xd9, 0xf9, 0x6e, 0x6b, 0x71, 0x73, 0x10, 0x3d, 0xbe, 0xe2, 0x54, 0xb1,
0x87, 0x34, 0x85, 0xa7, 0xf6, 0x5d, 0xc4, 0xf8, 0xe4, 0x79, 0x63, 0xd4,
0x59, 0x50, 0xff, 0xc8, 0x03, 0x58, 0x74, 0xab, 0xbc, 0xc3, 0x92, 0x1b,
0x4a, 0x78, 0x67, 0x90, 0xec, 0x03, 0x9e, 0x9b, 0xed, 0xa3, 0xe3, 0x7c,
0x0b, 0x29, 0x43, 0x2c, 0x6f, 0x2a, 0xa2, 0xc7, 0x96, 0x83, 0x0d, 0x01,
0xcd, 0x98, 0x62, 0x52, 0x93, 0xc5, 0x50, 0x7a, 0x9a, 0x4e, 0xa2, 0x75,
0xde, 0x07, 0x5c, 0xa8, 0x09, 0x66, 0xd1, 0x82, 0x3a, 0x86, 0x82, 0x30,
0xf5, 0x87, 0x87, 0x9c, 0xea, 0x35, 0xb6, 0xa2, 0x68, 0x26, 0xe5, 0x5b,
0x31, 0x2a, 0xba, 0xdd, 0xcd, 0xb1, 0xb9, 0x4a, 0xf6, 0x30, 0xa4, 0xf8,
0x2c, 0x1b, 0x70, 0xed, 0xc9, 0xa5, 0x18, 0x9f, 0xcc, 0x61, 0x48, 0x08,
0x17, 0x18, 0x14, 0xcb, 0x1b, 0x2f, 0xe0, 0x33, 0x65, 0x33, 0x06, 0xb8,
0xcf, 0x64, 0xbc, 0x61, 0x22, 0x7e, 0xa3, 0x6b, 0xc6, 0xb2, 0x3f, 0xa8,
0xa4, 0xac, 0xf2, 0x7d, 0xc0, 0xf5, 0x58, 0x37, 0xa7, 0x8c, 0xb0, 0x8a,
0x0d, 0x1e, 0xe4, 0x6f, 0xa8, 0x20, 0x6c, 0xe4, 0x6e, 0x76, 0xb1, 0x67,
0xed, 0x7e, 0x80, 0x3d, 0xec, 0x76, 0x3a, 0xbc, 0x6b, 0xaa, 0xa7, 0x48,
0xd9, 0x14, 0x5d, 0xdf, 0xe3, 0x79, 0x4e, 0xc5, 0x22, 0xf4, 0xda, 0xac,
0x3a, 0xab, 0x51, 0x9d, 0x2c, 0xc4, 0x20, 0x72, 0xb9, 0x9f, 0x26, 0x0c,
0xe3, 0xd9, 0x74, 0x18, 0x2b, 0xcc, 0xc5, 0x30, 0x7b, 0x2b, 0xac, 0x16,
0xcd, 0x13, 0x1a, 0x16, 0x23, 0x01, 0xbc, 0xc4, 0x5a, 0xd4, 0x36, 0x2f,
0x26, 0xf9, 0x86, 0xf6, 0x3c, 0xb9, 0x53, 0x62, 0x54, 0xbe, 0x65, 0x2d,
0x4e, 0xab, 0x77, 0x49, 0x7d, 0x02, 0xe1, 0x52, 0x2d, 0x60, 0x1a, 0xa6,
0x9a, 0x11, 0xe6, 0x3b, 0x0a, 0x58, 0x06, 0xc7, 0x25, 0x09, 0x1b, 0x59,
0x26, 0xbd, 0xc9, 0xd4, 0xfb, 0xe9, 0xb3, 0x3b, 0xa6, 0x81, 0x4d, 0xaa,
0xfc, 0xd8, 0xb5, 0x9f, 0xc7, 0x25, 0x8b, 0xc7, 0x37, 0x57, 0x9d, 0x20,
0x20, 0xaa, 0xa5, 0x93, 0x14, 0x03, 0xe2, 0xd0, 0xf5, 0x85, 0xe1, 0x6a,
0x44, 0xc3, 0x4f, 0x17, 0x00, 0x91, 0x9d, 0xe9, 0xf4, 0x0b, 0xde, 0xcb,
0x59, 0xb4, 0x73, 0x49, 0x52, 0xe2, 0xc6, 0x09, 0x3f, 0xbc, 0x62, 0xaa,
0xfc, 0xf9, 0xb9, 0x14, 0x4f, 0x8c, 0x72, 0x70, 0xf9, 0x6e, 0x75, 0xcf,
0xc3, 0x94, 0xbb, 0xc8, 0x41, 0xdd, 0x42, 0xa1, 0x40, 0x3a, 0xc9, 0x26,
0x03, 0x9e, 0xde, 0x62, 0xf7, 0xbd, 0x30, 0x05, 0x8b, 0x70, 0x58, 0x44,
0xd1, 0x52, 0x10, 0x6d, 0x50, 0x67, 0xc5, 0xb7, 0x79, 0xd7, 0x2a, 0xd9,
0xfc, 0x66, 0x14, 0x10, 0x85, 0x86, 0x18, 0x53, 0x81, 0x82, 0x21, 0x41,
0x9c, 0x9a, 0x99, 0x0a, 0x51, 0x93, 0xdc, 0x8d, 0x34, 0x24, 0x1a, 0x26,
0xdc, 0xc1, 0x2d, 0xca, 0xfe, 0xa2, 0x9d, 0x8c, 0x51, 0x14, 0x77, 0xe9,
0xdd, 0x17, 0x45, 0x02, 0xff, 0xb2, 0xe1, 0x3f, 0x6e, 0x3c, 0xd4, 0x52,
0xce, 0xc9, 0xb4, 0xf9, 0x5b, 0x88, 0x6d, 0xde, 0x93, 0x91, 0x80, 0x86,
0x84, 0x70, 0x38, 0x9c, 0x4d, 0x79, 0x6a, 0x44, 0xe0, 0xa1, 0x7c, 0x98,
0x91, 0x5f, 0xda, 0x49, 0x46, 0xbc, 0xad, 0x90, 0x8f, 0xce, 0xe2, 0xc8,
0x08, 0x49, 0x3c, 0x25, 0x3d, 0xd3, 0xe0, 0x7c, 0x9b, 0xdb, 0xbb, 0x0e,
0x0a, 0x88, 0x85, 0x24, 0x4a, 0x74, 0x69, 0xb7, 0x14, 0x99, 0xf9, 0x34,
0x2a, 0x9c, 0x0e, 0x89, 0x51, 0x5c, 0x9e, 0xf5, 0xe5, 0xa5, 0xdd, 0x18,
0x5d, 0x75, 0xe1, 0xa7, 0xb9, 0x3d, 0xdd, 0x18, 0xb3, 0x8b, 0x5b, 0x65,
0x02, 0x8a, 0x2e, 0x4d, 0x3a, 0xcf, 0x09, 0xc0, 0x7b, 0x9d, 0xa2, 0xf7,
0xe9, 0x6a, 0x69, 0xaf, 0xfa, 0x9e, 0xd9, 0x46, 0x32, 0x2a, 0x06, 0x0e,
0x60, 0xb6, 0x49, 0xa5, 0xa6, 0xea, 0xd8, 0xfb, 0xcb, 0x73, 0xa2, 0x9c,
0x40, 0xad, 0xc7, 0x3c, 0x48, 0x50, 0x9b, 0xb9, 0x18, 0x22, 0x8b, 0x50,
0x8c, 0x96, 0x26, 0x85, 0x47, 0x63, 0x12, 0x33, 0xb7, 0x93, 0xbc, 0xc9,
0xf6, 0xe8, 0xfd, 0xd1, 0xf8, 0xd8, 0x06, 0x0b, 0x84, 0x21, 0xb2, 0x0f,
0xca, 0xce, 0xc5, 0xc0, 0xc0, 0x96, 0x74, 0x9a, 0xf1, 0xe4, 0x8f, 0x13,
0x5e, 0x3d, 0x8b, 0x87, 0xd3, 0x21, 0x59, 0x8b, 0xf3, 0x25, 0x0a, 0x5e,
0xda, 0xda, 0x2b, 0x00, 0xca, 0x06, 0x84, 0xa4, 0x9f, 0x5c, 0x92, 0x5c,
0xd7, 0x21, 0xdb, 0x0c, 0xbf, 0xe8, 0xf9, 0xba, 0x6f, 0x40, 0x4d, 0x0e,
0xd1, 0x0c, 0x53, 0x51, 0xa7, 0x62, 0x3d, 0x1c, 0x36, 0xb9, 0x8e, 0x4f,
0x0c, 0xa4, 0xe3, 0x09, 0xc6, 0xed, 0xe5, 0x73, 0x31, 0xda, 0x4c, 0xc1,
0x62, 0x0f, 0xb7, 0x75, 0x69, 0x6c, 0xc9, 0x13, 0x45, 0xa9, 0xde, 0x65,
0x0a, 0x16, 0x0f, 0x1e, 0x38, 0xd9, 0xc4, 0x50, 0xd1, 0x66, 0xff, 0x89,
0x86, 0x67, 0x65, 0x7a, 0x8b, 0xd4, 0x2d, 0xbc, 0x3a, 0x64, 0x04, 0x33,
0x3e, 0x3f, 0x2d, 0x13, 0x78, 0x00, 0xf0, 0x65, 0xd9, 0xd4, 0xb3, 0x40,
0xc7, 0x3e, 0x82, 0xfa, 0x23, 0x33, 0xf7, 0x03, 0x10, 0x4d, 0xf7, 0xc9,
0x3b, 0xfd, 0xf1, 0xf1, 0xf9, 0x34, 0x56, 0x16, 0x3b, 0xf8, 0x3a, 0xcc,
0x18, 0x0a, 0x48, 0x97, 0xe6, 0x13, 0x78, 0xd0, 0x13, 0x05, 0x2e, 0x0d,
0x3b, 0x89, 0x30, 0x69, 0xbb, 0x60, 0xd1, 0x92, 0xc7, 0x42, 0x3c, 0x6a,
0x00, 0xbe, 0x6b, 0x36, 0x93, 0xf8, 0xa5, 0x86, 0xa1, 0xbd, 0xf9, 0x7d,
0x10, 0x51, 0x98, 0x41, 0x81, 0x60, 0xb3, 0x4a, 0x5e, 0x45, 0x33, 0xc6,
0xdc, 0x49, 0x99, 0xd7, 0x86, 0xee, 0xdd, 0x21, 0x79, 0x38, 0xf5, 0xf3,
0x66, 0x64, 0x0e, 0x4f, 0x8b, 0xd8, 0x3b, 0x96, 0x00, 0x97, 0xa0, 0xfe,
0x40, 0x2a, 0xd1, 0xa6, 0x11, 0xc1, 0x6c, 0x74, 0x7e, 0xa7, 0xbf, 0x75,
0xff, 0x94, 0xa1, 0x91, 0x00, 0x34, 0x73, 0xa2, 0x54, 0xb3, 0xd9, 0x8d,
0xbb, 0xa9, 0x20, 0xd4, 0x51, 0x36, 0xc4, 0xa6, 0x99, 0x30, 0xb1, 0x53,
0x94, 0x3a, 0x0f, 0x9e, 0x84, 0xf5, 0xe7, 0xb6, 0x21, 0x8f, 0xab, 0x16,
0x45, 0x93, 0xd4, 0x91, 0xdd, 0x1f, 0xb3, 0x80, 0xf2, 0xba, 0x74, 0x56,
0xf1, 0x24, 0xac, 0x80, 0x9c, 0x8a, 0xd9, 0x2c, 0xcd, 0x98, 0x86, 0x74,
0x4b, 0xe9, 0xea, 0x93, 0x58, 0xc5, 0xcf, 0xd8, 0x74, 0xd2, 0xcb, 0x7b,
0x65, 0xb9, 0x32, 0x8b, 0x1f, 0x27, 0xd2, 0xc2, 0x6d, 0xb3, 0x89, 0x49,
0x2f, 0xe7, 0xd3, 0x37, 0xf2, 0x86, 0xa1, 0x12, 0xce, 0x71, 0x69, 0x02,
0x8f, 0x7b, 0x0a, 0xfb, 0x72, 0xc2, 0x0b, 0xeb, 0x86, 0x86, 0x7a, 0x36,
0x9b, 0x4d, 0x07, 0x71, 0xc7, 0xcc, 0xa6, 0x49, 0x8e, 0x4d, 0xa6, 0x31,
0xf7, 0x68, 0x64, 0x76, 0x6e, 0xdf, 0x13, 0x33, 0x3f, 0x2a, 0x76, 0xe7,
0xcb, 0xb8, 0x81, 0xe3, 0xd2, 0x38, 0x4a, 0xec, 0xac, 0x2f, 0x0f, 0x1e,
0xcd, 0x74, 0x2a, 0x53, 0x05, 0x79, 0xa3, 0xc0, 0x90, 0x54, 0x4d, 0xda,
0x7d, 0x86, 0x67, 0x7d, 0x75, 0x16, 0x67, 0xef, 0x6c, 0x15, 0xb3, 0xbe,
0x9e, 0x93, 0xd4, 0xda, 0x3d, 0xe3, 0xc7, 0x14, 0xf3, 0x07, 0xfe, 0xfb,
0xd6, 0x03, 0xe7, 0x4a, 0x59, 0x84, 0xa8, 0xdf, 0x85, 0xc4, 0x26, 0x31,
0x47, 0xc0, 0x35, 0x8a, 0x0f, 0xd3, 0x6c, 0x96, 0x0d, 0xa2, 0xe9, 0xb2,
0xa9, 0xe4, 0x2d, 0x6c, 0x63, 0x32, 0x3d, 0xec, 0xed, 0x96, 0x7f, 0xe6,
0xdc, 0x5d, 0x76, 0xd7, 0xde, 0xf5, 0xa5, 0x74, 0xef, 0xfb, 0xd5, 0x0d,
0x99, 0x6f, 0xb6, 0xb9, 0x50, 0xbe, 0xb1, 0x9f, 0x6b, 0x99, 0xaf, 0x3b,
0x83, 0x09, 0x8e, 0x3a, 0x9e, 0xa5, 0x33, 0xee, 0x36, 0xe1, 0xfd, 0x9d,
0xa4, 0x05, 0xa6, 0xf1, 0xf7, 0x1e, 0xe2, 0x99, 0x87, 0x3c, 0x0f, 0x71,
0xd5, 0x91, 0x19, 0x82, 0x3c, 0x3e, 0xcf, 0xe1, 0xa3, 0xba, 0xf4, 0x88,
0x4c, 0x33, 0xfb, 0x3b, 0x47, 0x66, 0xf1, 0x39, 0xce, 0xd2, 0x86, 0x8c,
0x34, 0x5b, 0xe5, 0x57, 0xfc, 0x41, 0x99, 0xd1, 0x87, 0xd9, 0x57, 0xd8,
0x46, 0x82, 0x59, 0x7c, 0xb5, 0xea, 0x87, 0x48, 0x8f, 0xa2, 0x9d, 0x26,
0x54, 0x9e, 0x99, 0xfc, 0x41, 0x21, 0x3e, 0x31, 0xd1, 0x6a, 0xf7, 0xe7,
0xb3, 0x3b, 0x77, 0x7e, 0x9e, 0xdd, 0xc1, 0xe8, 0x60, 0x9d, 0xdd, 0xf9,
0xf9, 0x1d, 0x9e, 0x11, 0x8c, 0xe1, 0xb9, 0x3f, 0x7c, 0xeb, 0xad, 0xb7,
0x06, 0xc1, 0xe3, 0x5c, 0x1d, 0x3e, 0xfa, 0xbf, 0x3a, 0x4b, 0xdf, 0x7a,
0xeb, 0x4e, 0xfa, 0x56, 0x14, 0xbc, 0x86, 0xbf, 0x1c, 0x1d, 0xfd, 0xb7,
0x1f, 0xde, 0xc1, 0x84, 0xdd, 0x54, 0x4e, 0xbf, 0x33, 0xbd, 0x83, 0x49,
0xa1, 0xe9, 0xf4, 0x0e, 0x3d, 0xa3, 0xdf, 0x9f, 0x39, 0x59, 0x8c, 0x21,
0xae, 0xf4, 0x28, 0xba, 0x54, 0x37, 0xe3, 0xee, 0x6c, 0x38, 0xfc, 0xc9,
0x47, 0xa7, 0x98, 0xdc, 0xc9, 0xdb, 0x82, 0x11, 0xca, 0x45, 0x21, 0xa6,
0x3a, 0x6a, 0xc5, 0xe3, 0x39, 0x75, 0x9c, 0x29, 0x75, 0xfa, 0x35, 0x14,
0x87, 0xf7, 0xff, 0x37, 0x8f, 0xfd, 0xa4, 0x73, 0x5d, 0x67, 0xe3, 0x35,
0xde, 0xa4, 0xf1, 0xef, 0x9b, 0xba, 0x49, 0x9f, 0x0c, 0x91, 0xf1, 0xc1,
0x68, 0xc9, 0x3a, 0x7f, 0x08, 0x13, 0x31, 0xd1, 0xca, 0x72, 0xe1, 0xe9,
0x7f, 0x90, 0xea, 0x6e, 0x36, 0xc4, 0x2c, 0x2a, 0xb6, 0x16, 0x9e, 0x3b,
0xe8, 0x4e, 0x87, 0x33, 0x67, 0x46, 0x31, 0x1b, 0xb6, 0x5f, 0x61, 0x44,
0x6b, 0xc4, 0xb3, 0x47, 0x79, 0x4e, 0x24, 0x52, 0x00, 0xe1, 0x35, 0xcc,
0x9d, 0x0d, 0x78, 0x6e, 0x20, 0xf2, 0x3a, 0x18, 0x2f, 0x9b, 0x62, 0x78,
0x29, 0x46, 0x0a, 0xf2, 0xfc, 0xcb, 0x30, 0x8a, 0xe9, 0xc3, 0xeb, 0x1e,
0x79, 0xd7, 0xeb, 0x3c, 0xb8, 0x35, 0xe3, 0x31, 0xaf, 0xb2, 0x03, 0xb7,
0x3a, 0x1b, 0x74, 0x27, 0xf1, 0x7a, 0x24, 0xd6, 0x02, 0x4d, 0x75, 0xa7,
0xb2, 0xee, 0xb5, 0x8f, 0xcf, 0x78, 0x8a, 0x2c, 0xfa, 0x7a, 0x32, 0x19,
0x5d, 0x8a, 0x71, 0xa5, 0x48, 0xdf, 0x86, 0x01, 0x4f, 0xb0, 0x54, 0x66,
0xfa, 0xa5, 0xc7, 0xe3, 0x3e, 0x71, 0x78, 0xae, 0x99, 0xf1, 0xc9, 0xc3,
0x2f, 0xd1, 0x8c, 0x80, 0x67, 0x32, 0xf1, 0x54, 0xf3, 0xd0, 0x5e, 0x72,
0xef, 0xc3, 0x70, 0xf8, 0xbd, 0x8f, 0xa5, 0x4d, 0x72, 0x2b, 0xc8, 0x6f,
0x92, 0x59, 0x5f, 0xe1, 0xf6, 0x85, 0xd9, 0xec, 0xec, 0x70, 0x12, 0xf1,
0x10, 0x60, 0x0a, 0xe4, 0x06, 0x18, 0xf0, 0x89, 0x39, 0xc1, 0x3a, 0x0a,
0xa2, 0x68, 0xa0, 0x79, 0x3a, 0x29, 0x2a, 0x39, 0x32, 0xd1, 0x12, 0xcf,
0xcd, 0x30, 0x4f, 0x97, 0x07, 0x5e, 0xe2, 0x6f, 0x32, 0x70, 0x56, 0x66,
0x0c, 0xf3, 0x39, 0x74, 0x0b, 0x42, 0xcd, 0x43, 0x84, 0xc3, 0x89, 0x33,
0x9b, 0x6d, 0x77, 0x27, 0x99, 0x4c, 0xa4, 0xc3, 0xc6, 0x84, 0x0b, 0xc3,
0xe7, 0x4f, 0xcf, 0xcc, 0xa4, 0x67, 0x9e, 0x27, 0xab, 0x0c, 0x0c, 0x6e,
0x98, 0xe2, 0xf1, 0xac, 0x32, 0xc4, 0x94, 0xf1, 0xc9, 0xdc, 0x4f, 0x9e,
0x66, 0x6a, 0x86, 0x79, 0xd2, 0xc9, 0x75, 0x9e, 0x7c, 0x1a, 0xf2, 0xcc,
0x5d, 0x25, 0x13, 0x6a, 0xc3, 0x50, 0x46, 0x09, 0x87, 0xdd, 0xf5, 0x0f,
0xd1, 0x4d, 0x25, 0x51, 0xe0, 0xf9, 0xa5, 0xe8, 0x89, 0xba, 0x30, 0xa9,
0xfd, 0x7c, 0x9a, 0x4d, 0x29, 0xf2, 0xce, 0xd2, 0x01, 0xcf, 0x9d, 0xd5,
0xda, 0x8c, 0xc7, 0xa5, 0xb5, 0xfe, 0x31, 0x06, 0xaf, 0x02, 0x1f, 0xcf,
0x31, 0x55, 0x91, 0x19, 0xcc, 0x0c, 0x60, 0x2e, 0xff, 0x45, 0xf1, 0xa8,
0x67, 0x25, 0x43, 0x5a, 0x79, 0x58, 0x2f, 0x26, 0xbc, 0xe2, 0x86, 0xa5,
0x44, 0x41, 0x32, 0x13, 0xb3, 0x4f, 0x76, 0xb7, 0x87, 0xd9, 0x4c, 0xfa,
0xda, 0xdc, 0xa8, 0xae, 0xbb, 0x4f, 0x9f, 0x9e, 0xf2, 0xac, 0x6a, 0x06,
0x18, 0x0b, 0x01, 0xb1, 0x7e, 0x86, 0x81, 0x1d, 0xae, 0x42, 0x33, 0x99,
0x00, 0x2d, 0xd0, 0x19, 0xa0, 0xbc, 0x4f, 0x50, 0xb0, 0x41, 0x54, 0xf1,
0xf4, 0x6b, 0xde, 0xe0, 0x14, 0x62, 0x3c, 0xab, 0x8c, 0x18, 0x06, 0xca,
0xee, 0xab, 0x0f, 0x4d, 0xbb, 0xba, 0x2b, 0x34, 0x5c, 0x4f, 0x9b, 0xd9,
0xff, 0x58, 0x99, 0x61, 0x20, 0x32, 0x86, 0x37, 0xea, 0x89, 0xca, 0x50,
0xf2, 0xf6, 0xb0, 0x6a, 0xa2, 0x20, 0xe6, 0x57, 0x30, 0xe7, 0x86, 0x83,
0x49, 0x64, 0x06, 0xed, 0x46, 0x18, 0xd8, 0x1a, 0x98, 0x81, 0xd0, 0x7c,
0x13, 0x32, 0xe4, 0xec, 0x03, 0x8d, 0xf1, 0xca, 0x80, 0x47, 0xe0, 0xc3,
0x41, 0x3e, 0x27, 0x9a, 0xbe, 0xe1, 0xe7, 0x4f, 0x5d, 0x98, 0x6e, 0xcf,
0x86, 0x42, 0xc3, 0xf8, 0xd4, 0x6c, 0x15, 0x73, 0x7d, 0x35, 0xc6, 0x20,
0x37, 0x29, 0x4e, 0x44, 0xc5, 0x9b, 0x57, 0x48, 0x62, 0xc4, 0x93, 0x90,
0x9b, 0x19, 0xba, 0xb4, 0x03, 0xa1, 0x24, 0xce, 0x11, 0xae, 0xe4, 0x61,
0xae, 0x80, 0x5d, 0x07, 0x90, 0x28, 0x07, 0x57, 0x0f, 0xf9, 0x36, 0xe8,
0x00, 0xe5, 0x18, 0xf4, 0x95, 0x86, 0xe1, 0x85, 0xed, 0x13, 0xb3, 0xc9,
0x8c, 0x67, 0xd0, 0xd6, 0x54, 0xdc, 0x24, 0x80, 0x69, 0x44, 0xb0, 0x50,
0xff, 0x0a, 0x30, 0x05, 0x9a, 0x17, 0x69, 0x06, 0xb6, 0x12, 0x1d, 0xc3,
0x14, 0x6d, 0x69, 0x0a, 0x12, 0x26, 0x13, 0x66, 0x41, 0xd1, 0x2f, 0x07,
0xfc, 0x3c, 0x90, 0x91, 0xb5, 0x9a, 0xdb, 0xd6, 0xc0, 0x94, 0x29, 0xcf,
0x0d, 0x8e, 0x64, 0x04, 0x37, 0xd8, 0x95, 0x45, 0x79, 0xf6, 0xd4, 0xef,
0x4f, 0xa6, 0x19, 0x10, 0xae, 0x90, 0x35, 0xfc, 0xe4, 0xe9, 0xa9, 0x8c,
0xe7, 0xe6, 0x59, 0xab, 0xcc, 0x95, 0x18, 0xaf, 0xaa, 0xb4, 0x70, 0x63,
0x9d, 0x6e, 0x50, 0xa6, 0x89, 0x0f, 0x99, 0x29, 0x1d, 0x33, 0xdf, 0xd4,
0x8c, 0x70, 0xe5, 0x89, 0xb3, 0x42, 0x4b, 0xb0, 0xa9, 0x86, 0x6e, 0xe2,
0x59, 0xd1, 0x2c, 0xaf, 0xee, 0x8a, 0xe2, 0xd1, 0xbd, 0x1e, 0x20, 0x4e,
0xb3, 0x6d, 0x4c, 0x4a, 0x0e, 0xba, 0x3f, 0x79, 0x68, 0xaa, 0x0d, 0x4b,
0x42, 0xf2, 0x98, 0xed, 0xcc, 0xbc, 0x5c, 0x34, 0xf2, 0xf3, 0x8c, 0x59,
0xc0, 0x0d, 0xd6, 0x30, 0x5d, 0xd6, 0x39, 0xeb, 0xca, 0x70, 0x5a, 0x9e,
0x4e, 0xcb, 0xf3, 0x69, 0x31, 0x76, 0x38, 0x30, 0xa3, 0x5d, 0x99, 0x93,
0x65, 0x18, 0x6f, 0xa0, 0xcc, 0x1f, 0x70, 0x0c, 0x9f, 0xfa, 0xfd, 0x59,
0xfc, 0x2a, 0xdb, 0xc3, 0xa1, 0x73, 0x2a, 0xe5, 0x01, 0xc8, 0x3c, 0x09,
0x58, 0xc9, 0x8a, 0xed, 0xa8, 0x5c, 0xd7, 0x4c, 0x44, 0x06, 0x41, 0x61,
0x3b, 0x3c, 0x3b, 0x7c, 0xb7, 0x26, 0x43, 0x67, 0x6b, 0x16, 0x6c, 0xc0,
0x37, 0x45, 0x40, 0xcb, 0xc4, 0x61, 0x25, 0x33, 0x68, 0x0d, 0x27, 0x37,
0x07, 0x27, 0x67, 0xdc, 0x5f, 0xea, 0xc5, 0x7f, 0xbd, 0xf2, 0x96, 0x40,
0xc2, 0x10, 0x61, 0xac, 0x57, 0xc9, 0xfa, 0x0c, 0x0e, 0x06, 0xac, 0x18,
0x22, 0x60, 0x90, 0xaa, 0x79, 0x9a, 0x87, 0xb8, 0x62, 0xba, 0xac, 0x27,
0x7f, 0x7b, 0xda, 0xe5, 0xd1, 0xbc, 0x67, 0x65, 0xe6, 0x2e, 0xcf, 0xa5,
0xfd, 0x72, 0xc0, 0xa3, 0x87, 0x79, 0x98, 0x32, 0xe0, 0x07, 0x2a, 0x7e,
0xea, 0xf4, 0x6c, 0x1b, 0x9d, 0x7b, 0xf1, 0xd2, 0xe9, 0xc8, 0xab, 0x07,
0x2e, 0xc5, 0x54, 0x18, 0x72, 0x4c, 0x6b, 0x5a, 0x71, 0x61, 0xd5, 0xbc,
0x1a, 0x8f, 0xcf, 0xc5, 0x6b, 0x4f, 0xa4, 0x4e, 0x86, 0xed, 0xba, 0x62,
0x1f, 0xed, 0x88, 0x5d, 0xc6, 0xc4, 0xc5, 0x0f, 0x97, 0x87, 0xd4, 0xd6,
0xe4, 0x1c, 0xbc, 0xb5, 0x92, 0x0f, 0x53, 0xae, 0xad, 0x04, 0xaa, 0x3e,
0xa8, 0xcc, 0xc0, 0xa5, 0x2b, 0xcf, 0x7f, 0x74, 0x02, 0xe2, 0x09, 0x2a,
0xfa, 0x8f, 0xd4, 0xff, 0x2a, 0x86, 0x02, 0xaf, 0xf2, 0xb2, 0xdd, 0xb3,
0xd0, 0x95, 0xeb, 0x78, 0xc6, 0xba, 0x94, 0xa7, 0xcb, 0x22, 0x89, 0x0d,
0xc3, 0x61, 0x0e, 0x1e, 0x16, 0xac, 0xf2, 0x81, 0xc3, 0x81, 0x55, 0xb1,
0xae, 0x99, 0xb8, 0xcb, 0xcf, 0x95, 0xea, 0x7e, 0xef, 0xf4, 0xab, 0x7f,
0xb4, 0x74, 0xd2, 0xad, 0xc4, 0x91, 0x19, 0xf8, 0xeb, 0x99, 0x81, 0xc1,
0xae, 0x98, 0x7b, 0xcf, 0xb5, 0x53, 0x8f, 0x79, 0x91, 0x32, 0x6e, 0xd7,
0x58, 0x75, 0x31, 0xef, 0xf6, 0x55, 0x8d, 0xe7, 0x27, 0x33, 0xcd, 0x1d,
0xb1, 0x1f, 0xe2, 0x00, 0xb8, 0x32, 0xb4, 0x57, 0x7e, 0x6b, 0xf5, 0xcc,
0x89, 0xbf, 0xbb, 0x74, 0xf2, 0xcc, 0xca, 0xcf, 0xce, 0xae, 0xae, 0xca,
0xfa, 0x80, 0xca, 0x3d, 0xcb, 0xe3, 0x71, 0x65, 0x1e, 0xf0, 0x59, 0x57,
0x46, 0x26, 0x9f, 0x95, 0x19, 0xc1, 0xab, 0x16, 0xd3, 0xd9, 0xd5, 0x12,
0x3a, 0x57, 0x46, 0xf3, 0xe2, 0x16, 0x60, 0xd4, 0x30, 0x53, 0x50, 0x86,
0x0e, 0xf3, 0x7b, 0x72, 0x2a, 0x2c, 0x67, 0xf8, 0xfc, 0x47, 0xff, 0xcb,
0xd2, 0x52, 0x25, 0x14, 0xdf, 0xa3, 0xc6, 0x23, 0x82, 0xe9, 0x1f, 0xae,
0xf6, 0xd5, 0x1c, 0xb7, 0x00, 0x20, 0xc3, 0xad, 0x65, 0x66, 0xb0, 0x3d,
0x8b, 0x1f, 0x19, 0x87, 0xd0, 0xd3, 0x71, 0x0a, 0xbf, 0xc6, 0x7c, 0x82,
0xc7, 0x10, 0x1b, 0x7a, 0x0b, 0xc5, 0x15, 0xe6, 0xe1, 0xd6, 0x78, 0x10,
0x32, 0x2d, 0xa4, 0xea, 0x98, 0x43, 0x9e, 0xaf, 0x9a, 0x17, 0x3c, 0x13,
0xb9, 0xca, 0xcf, 0x1c, 0x19, 0x8f, 0x8c, 0x57, 0xd5, 0x25, 0x7b, 0x32,
0xcf, 0x0f, 0xae, 0xf2, 0x19, 0xf6, 0x7d, 0xc7, 0x7c, 0x02, 0xa7, 0x56,
0xe5, 0x7c, 0x87, 0x47, 0x0a, 0x23, 0xe2, 0x5e, 0x3a, 0x69, 0xaf, 0xe3,
0x54, 0x2a, 0x15, 0xf9, 0xc5, 0x3c, 0xe7, 0x0a, 0x0e, 0x07, 0xcf, 0xe4,
0xb7, 0x22, 0xcf, 0xf8, 0xcf, 0x95, 0x25, 0xfe, 0xb1, 0xa7, 0x98, 0xb3,
0xe5, 0x73, 0xf9, 0x39, 0xf6, 0x2b, 0xed, 0x27, 0xf9, 0x70, 0xff, 0xfe,
0xff, 0x67, 0x13, 0xff, 0x0f, 0xd1, 0x7b, 0xfd, 0xdd, 0x03, 0x94, 0x21,
0x3a, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60,
0x82
};
unsigned int dosbox224x224_png_len = 11905;

428
include/dosbox224x93.h Normal file
View File

@ -0,0 +1,428 @@
unsigned char dosbox224x93_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x5d,
0x04, 0x03, 0x00, 0x00, 0x00, 0x4e, 0x57, 0x77, 0x79, 0x00, 0x00, 0x00,
0x30, 0x50, 0x4c, 0x54, 0x45, 0x26, 0x13, 0x05, 0x49, 0x25, 0x08, 0x6f,
0x39, 0x10, 0x5d, 0x44, 0x1e, 0x93, 0x50, 0x1c, 0x71, 0x5e, 0x33, 0x80,
0x5e, 0x15, 0xb6, 0x65, 0x26, 0x8b, 0x75, 0x42, 0x9c, 0x76, 0x1c, 0x9d,
0x86, 0x51, 0xd8, 0x7b, 0x31, 0xb1, 0x99, 0x5e, 0xca, 0x9b, 0x1b, 0xe6,
0xbb, 0x2b, 0xfb, 0xd2, 0x36, 0x2f, 0x5d, 0x49, 0x05, 0x00, 0x00, 0x13,
0x72, 0x49, 0x44, 0x41, 0x54, 0x68, 0xde, 0xbd, 0x5a, 0x5d, 0x68, 0x1c,
0x59, 0x76, 0x56, 0x5b, 0x64, 0x99, 0x04, 0x02, 0xea, 0x96, 0x66, 0x96,
0x79, 0x09, 0xe9, 0x9a, 0x1a, 0x94, 0x7d, 0xd8, 0xe0, 0x56, 0x4d, 0x3b,
0x16, 0x78, 0x20, 0x53, 0xdc, 0x75, 0xb1, 0xe9, 0x2c, 0x61, 0x28, 0x97,
0x53, 0x6b, 0xb4, 0x10, 0x46, 0x91, 0x62, 0x3d, 0x0c, 0x38, 0xa2, 0xa0,
0x58, 0xea, 0x29, 0xc8, 0x35, 0x94, 0x9b, 0x71, 0x08, 0xc9, 0xae, 0x91,
0x8c, 0x35, 0x84, 0x78, 0xc4, 0x36, 0x95, 0x0e, 0x84, 0x41, 0xd0, 0x0f,
0x4d, 0x20, 0x60, 0x0c, 0xda, 0xde, 0x5e, 0xbf, 0x2c, 0x59, 0x46, 0x83,
0x5a, 0xf3, 0x16, 0x30, 0x58, 0xad, 0xb7, 0xdd, 0xf5, 0x60, 0x77, 0xe7,
0x7c, 0xe7, 0xdc, 0x5b, 0xdd, 0xed, 0x99, 0xe7, 0xdc, 0xee, 0xae, 0xae,
0x9f, 0x5b, 0x55, 0xf7, 0xbb, 0xe7, 0xff, 0xdc, 0x33, 0x37, 0xf7, 0xba,
0xf5, 0xd6, 0x5b, 0x6f, 0x59, 0xfa, 0x43, 0x7b, 0x96, 0x65, 0x7e, 0x56,
0xf1, 0xff, 0x96, 0xf5, 0x36, 0x6d, 0xdf, 0xe6, 0x3e, 0xd4, 0x2a, 0x95,
0x8a, 0xb5, 0x58, 0xa9, 0x2c, 0x56, 0xac, 0x8a, 0xdc, 0x83, 0xab, 0x8b,
0xe6, 0x2a, 0x5d, 0xe7, 0xaf, 0xfc, 0x51, 0x0f, 0xea, 0xcf, 0xcf, 0xc0,
0x67, 0x6e, 0x6e, 0xae, 0x12, 0x77, 0xa2, 0x18, 0xbf, 0x28, 0xa2, 0x1f,
0xed, 0x71, 0x8b, 0x3b, 0x5d, 0xd9, 0xe9, 0x76, 0xba, 0xb4, 0x87, 0xd3,
0x71, 0xac, 0xb7, 0xdc, 0x57, 0xb9, 0x4a, 0x29, 0x3a, 0xe8, 0xf2, 0xf9,
0x18, 0x77, 0xa2, 0x5f, 0xd1, 0x2d, 0xc2, 0xb9, 0x48, 0x45, 0x0a, 0x5f,
0x85, 0x47, 0xab, 0x28, 0xee, 0xbc, 0x77, 0x71, 0x6e, 0xbe, 0x62, 0xff,
0x59, 0x12, 0x7b, 0x49, 0xac, 0x3c, 0x2f, 0xa6, 0x6f, 0x12, 0x27, 0x49,
0x12, 0xc7, 0x1e, 0xee, 0xc3, 0x4e, 0x22, 0x2d, 0xc6, 0x45, 0xcf, 0x93,
0xad, 0x42, 0xc3, 0xd6, 0x93, 0x86, 0x7f, 0xbe, 0x8b, 0xbe, 0x7c, 0xa7,
0xc7, 0x5b, 0xc5, 0xfd, 0x15, 0xdf, 0xe0, 0xd1, 0x51, 0x42, 0x77, 0xdc,
0x9a, 0x2b, 0x55, 0xae, 0x7d, 0x6a, 0x63, 0x98, 0x34, 0x08, 0x33, 0x3a,
0x20, 0x8c, 0x18, 0x15, 0xed, 0xc7, 0xbc, 0x13, 0x45, 0xdb, 0x3c, 0xe4,
0xa8, 0x53, 0x0c, 0x9c, 0x47, 0xce, 0xd0, 0x18, 0x76, 0x57, 0x50, 0x69,
0xb4, 0xf2, 0x0c, 0x97, 0x6e, 0x50, 0xdc, 0x9f, 0x9e, 0xde, 0x75, 0xe3,
0xf8, 0x33, 0x7a, 0xe1, 0x92, 0xed, 0x45, 0x95, 0x04, 0x23, 0xc7, 0xd0,
0xb0, 0xe5, 0x41, 0xf1, 0x46, 0xce, 0x60, 0xbc, 0x82, 0x27, 0x06, 0x2e,
0xcb, 0xa6, 0x66, 0x31, 0x4a, 0x9b, 0x3f, 0x96, 0x2d, 0xc8, 0x71, 0x15,
0xfd, 0x6c, 0x9b, 0x6f, 0x54, 0x38, 0x47, 0x97, 0x65, 0x4e, 0xbc, 0x4e,
0xb9, 0xd1, 0x8d, 0xb7, 0xff, 0x9c, 0x68, 0xe8, 0xc6, 0x5e, 0xc7, 0xfa,
0x05, 0x40, 0xa8, 0x98, 0x27, 0x5c, 0x31, 0x04, 0x57, 0x61, 0x1b, 0xf1,
0xf0, 0xbc, 0xc8, 0xb5, 0x94, 0x8b, 0x86, 0xd3, 0x74, 0xe0, 0xba, 0xd6,
0x0a, 0x31, 0x02, 0x8e, 0x71, 0x22, 0x26, 0x82, 0xc6, 0xdb, 0x05, 0xf4,
0x28, 0xde, 0x26, 0xec, 0xdb, 0x20, 0x34, 0x5d, 0x88, 0x98, 0xda, 0x1d,
0x2b, 0x39, 0xec, 0xc4, 0xdb, 0x84, 0xf0, 0x82, 0xad, 0x96, 0xe3, 0x98,
0x06, 0x15, 0x09, 0x0e, 0xdb, 0xe6, 0xb1, 0x33, 0x0c, 0xfe, 0xda, 0x02,
0xa9, 0xc2, 0x9c, 0xa7, 0xd9, 0xb0, 0x52, 0xae, 0x54, 0xf8, 0x0c, 0x5d,
0xb0, 0x2c, 0xf4, 0x56, 0xd8, 0x03, 0x5a, 0xcb, 0x5a, 0xb2, 0xe5, 0x58,
0x3f, 0x03, 0x7b, 0x84, 0x34, 0x49, 0xa2, 0xc4, 0x73, 0x09, 0x61, 0x99,
0x06, 0x70, 0xd8, 0xe8, 0x46, 0x2a, 0x39, 0x64, 0x78, 0x8a, 0x87, 0x6d,
0xb9, 0xd2, 0x2c, 0xde, 0x23, 0x38, 0x2e, 0x3d, 0xb8, 0x6a, 0x55, 0xd1,
0x64, 0x5b, 0xad, 0x96, 0x69, 0x17, 0x30, 0x09, 0x3c, 0x75, 0x5a, 0xb1,
0x64, 0x43, 0x67, 0x19, 0xbc, 0xb5, 0xe2, 0xf2, 0xb4, 0xe0, 0x7a, 0xb4,
0xe2, 0x26, 0x9f, 0x25, 0x91, 0x46, 0x48, 0xa3, 0x54, 0x8d, 0x4e, 0x23,
0xb6, 0x96, 0x23, 0x96, 0xb0, 0x0a, 0x46, 0x29, 0x52, 0x54, 0xd1, 0x50,
0xf8, 0x6c, 0xb9, 0xf2, 0xc6, 0xf7, 0x37, 0xa9, 0x6d, 0x6d, 0x5e, 0xdd,
0xba, 0xfa, 0x77, 0xf4, 0xd9, 0xbc, 0x5a, 0x2d, 0x53, 0x43, 0x2f, 0x96,
0x38, 0xee, 0x6f, 0x55, 0xe4, 0x8c, 0x39, 0xa6, 0x0e, 0x4b, 0xd6, 0x3c,
0x51, 0x32, 0x6a, 0x10, 0x51, 0x09, 0x61, 0xa9, 0x6c, 0x81, 0x0a, 0x60,
0xc6, 0xf7, 0xac, 0x5a, 0xad, 0x56, 0xc6, 0x87, 0xda, 0x42, 0x59, 0xfe,
0xb9, 0x2d, 0x2c, 0xd0, 0xf1, 0xc2, 0xdc, 0xef, 0x8f, 0x5f, 0x6d, 0x2f,
0x8f, 0x6b, 0x0b, 0x0b, 0x7c, 0x15, 0x7d, 0xa6, 0xda, 0x02, 0x7f, 0xa5,
0x5d, 0x2c, 0xb9, 0x6a, 0x9b, 0x08, 0x46, 0x34, 0x76, 0x21, 0x16, 0x16,
0x09, 0x09, 0x49, 0x10, 0x31, 0xd2, 0xeb, 0x75, 0x69, 0x37, 0xb2, 0x66,
0xd1, 0x72, 0xfa, 0x70, 0xcb, 0xb2, 0xe0, 0xdd, 0xd3, 0xe1, 0x79, 0xf1,
0xae, 0xf3, 0x73, 0xd9, 0x1f, 0x64, 0x59, 0xd3, 0xf4, 0x2f, 0xf6, 0xf2,
0x9c, 0xee, 0xcb, 0xe4, 0x69, 0xc1, 0xfb, 0x04, 0x99, 0x20, 0x92, 0x84,
0x7b, 0x8a, 0x10, 0x56, 0x5c, 0xa5, 0xa5, 0xc8, 0xbb, 0x99, 0x71, 0x4b,
0xd3, 0xbc, 0xcf, 0xed, 0x85, 0xfe, 0x49, 0xeb, 0x1d, 0x6c, 0x1d, 0x1f,
0x1f, 0x9f, 0x0e, 0xf9, 0x35, 0xcf, 0x06, 0xb4, 0x3f, 0xe0, 0xfd, 0xd1,
0xb3, 0xfe, 0x2b, 0x4d, 0xee, 0x3b, 0x4a, 0xb3, 0xac, 0x45, 0x8f, 0x6b,
0xed, 0x54, 0x2b, 0x2b, 0x5e, 0xc4, 0x3a, 0x49, 0x73, 0x29, 0xde, 0x48,
0x6a, 0xc0, 0xfb, 0x93, 0x30, 0xa4, 0x0e, 0x61, 0x10, 0x04, 0x37, 0xda,
0xfd, 0xaf, 0xb5, 0x3c, 0xdf, 0x08, 0x9c, 0xc5, 0xfd, 0x53, 0x40, 0x3b,
0xdf, 0x0d, 0x02, 0xc7, 0x71, 0x56, 0x07, 0xa7, 0x80, 0xd9, 0x6f, 0x7f,
0x43, 0xf7, 0x56, 0x10, 0x84, 0x3c, 0xfe, 0x70, 0x07, 0x08, 0x97, 0x3d,
0x68, 0x2b, 0x97, 0xe5, 0x90, 0xd5, 0x60, 0x12, 0xb9, 0x71, 0x3d, 0x95,
0x16, 0xa4, 0x41, 0xf6, 0xf5, 0x47, 0xf4, 0x7a, 0xf9, 0x81, 0xef, 0xec,
0x0f, 0x19, 0xd6, 0x51, 0xde, 0xca, 0x52, 0xdf, 0xd9, 0x1b, 0xe0, 0x85,
0xa3, 0x5e, 0xde, 0xa3, 0x36, 0xd3, 0x99, 0x1f, 0x24, 0x10, 0x77, 0xca,
0x65, 0x0b, 0x24, 0xec, 0x26, 0x71, 0x44, 0x08, 0x4b, 0x16, 0x54, 0x48,
0x87, 0xe6, 0x17, 0x08, 0xc3, 0x30, 0xc0, 0x8f, 0x46, 0xf7, 0x71, 0x7f,
0xfa, 0x9d, 0x6d, 0x6a, 0x79, 0xde, 0x0a, 0x1c, 0x20, 0x1c, 0x9f, 0x8f,
0x77, 0x41, 0xb1, 0xc0, 0x79, 0x97, 0x11, 0x8e, 0xef, 0x83, 0x6a, 0x0c,
0x53, 0xff, 0xf2, 0x80, 0x9f, 0xc3, 0x33, 0x96, 0xf9, 0x65, 0xe2, 0x93,
0x65, 0x30, 0x8a, 0x67, 0x43, 0x0e, 0x49, 0xeb, 0x80, 0x84, 0x87, 0x51,
0x7c, 0x39, 0xd5, 0x34, 0x64, 0x98, 0xcd, 0xaf, 0x43, 0x3c, 0x4a, 0x7d,
0xa1, 0x1b, 0x21, 0xcc, 0x5b, 0xad, 0x74, 0xe3, 0xae, 0x1c, 0x11, 0xc2,
0x99, 0x9e, 0x47, 0x0c, 0x8f, 0x9f, 0xd6, 0x6a, 0xb5, 0x1e, 0x56, 0xcb,
0x44, 0xb6, 0x2e, 0xac, 0x0e, 0xb8, 0xb4, 0x44, 0xd3, 0x1b, 0x27, 0x1d,
0x28, 0x77, 0x46, 0xc8, 0xf8, 0xd0, 0xea, 0x21, 0x98, 0x0d, 0x0d, 0xe0,
0xb8, 0x09, 0x42, 0xb0, 0xe8, 0x2e, 0x3a, 0xde, 0xbc, 0x3b, 0x04, 0x41,
0x47, 0x3d, 0x01, 0x48, 0x10, 0xe9, 0x43, 0x7d, 0x03, 0x62, 0xcd, 0xb7,
0xf1, 0x08, 0x79, 0x9e, 0x5f, 0xaa, 0xd8, 0xf6, 0x32, 0xac, 0x49, 0x6c,
0x01, 0xa1, 0x45, 0x6a, 0x96, 0xac, 0x5e, 0xb4, 0xed, 0x19, 0x1a, 0x02,
0x1f, 0x37, 0x22, 0x4d, 0x2e, 0xf4, 0xc1, 0x3f, 0x61, 0x2a, 0x68, 0x78,
0x76, 0x72, 0x72, 0x32, 0x38, 0x15, 0x59, 0xec, 0x65, 0x2d, 0x1a, 0x8c,
0xa6, 0x61, 0xaf, 0xdf, 0x4a, 0x7d, 0x3d, 0xe4, 0x00, 0x30, 0xd3, 0xf4,
0x1f, 0x16, 0x40, 0x43, 0xc2, 0xd4, 0x89, 0x84, 0x4b, 0x6d, 0x3b, 0xee,
0x12, 0x40, 0x77, 0xf9, 0xf5, 0x3a, 0x4d, 0x3d, 0x66, 0x5f, 0x43, 0x0c,
0x82, 0x66, 0x9b, 0x5b, 0xce, 0x10, 0x99, 0x6a, 0x9a, 0x86, 0x5a, 0x16,
0x89, 0x61, 0x76, 0xb3, 0x90, 0xe5, 0x2e, 0x97, 0xae, 0xed, 0x16, 0xee,
0x63, 0x78, 0x82, 0x30, 0x08, 0xfc, 0xf2, 0x85, 0x8a, 0xed, 0x35, 0x12,
0x12, 0x06, 0xc5, 0x9a, 0x86, 0xac, 0x04, 0x99, 0x75, 0xda, 0xde, 0x20,
0x60, 0xc4, 0xa2, 0xe9, 0x84, 0x59, 0x83, 0xac, 0x27, 0x4d, 0x4f, 0x69,
0xea, 0xec, 0x9f, 0x89, 0xf0, 0x0d, 0xcf, 0xd0, 0x86, 0x24, 0x85, 0x47,
0x44, 0xa7, 0x9c, 0x27, 0x82, 0xe0, 0xf5, 0x5a, 0x0c, 0x6c, 0xaa, 0x05,
0xe1, 0x43, 0xe2, 0x52, 0x98, 0xfb, 0x38, 0x89, 0xd4, 0xbf, 0xd2, 0x0b,
0x97, 0x94, 0x6a, 0x24, 0xdd, 0x8e, 0xe7, 0x7a, 0x57, 0xfa, 0x98, 0xfd,
0x02, 0x1e, 0xb6, 0xf5, 0xb0, 0x3d, 0x69, 0x42, 0x43, 0x08, 0xe2, 0xf9,
0xcf, 0xef, 0x6c, 0x5e, 0xba, 0xb4, 0xb5, 0xbf, 0x0f, 0x1a, 0xf6, 0x32,
0xad, 0x5c, 0xa8, 0x47, 0x6a, 0xee, 0xe7, 0x89, 0x02, 0xbe, 0x1b, 0xfd,
0xc7, 0xa5, 0x0b, 0x95, 0x65, 0x92, 0x84, 0x46, 0x23, 0xf6, 0x6e, 0x01,
0xa1, 0x62, 0x41, 0x3c, 0x74, 0xe3, 0x35, 0xd2, 0x26, 0x3e, 0x40, 0x6a,
0xa0, 0xb8, 0xcf, 0x0f, 0x78, 0xe8, 0x02, 0x93, 0xc8, 0xa3, 0x69, 0xf8,
0x38, 0x0d, 0x7c, 0xa7, 0x76, 0x69, 0x8f, 0x0f, 0x9e, 0x0a, 0x0d, 0xc1,
0xc5, 0x81, 0x01, 0x88, 0xa7, 0xe0, 0x09, 0xc4, 0xeb, 0x8f, 0x19, 0x21,
0x41, 0x24, 0x03, 0xf9, 0xdf, 0xf4, 0x42, 0x9a, 0x5f, 0xcf, 0x6b, 0xc0,
0xce, 0xaf, 0xb1, 0x82, 0x28, 0x40, 0x1a, 0xa8, 0x37, 0x0c, 0x0d, 0xf3,
0xcc, 0x70, 0xe9, 0x98, 0x28, 0x17, 0x06, 0xce, 0xfc, 0x8c, 0x1c, 0xd2,
0xe5, 0x57, 0xef, 0xad, 0x43, 0xb6, 0x1e, 0x97, 0xa1, 0xb0, 0x15, 0x7b,
0x39, 0x40, 0xf8, 0xb7, 0x64, 0x36, 0x48, 0x10, 0xa3, 0xed, 0xdb, 0x6b,
0xcc, 0x66, 0x3b, 0x7e, 0x41, 0x05, 0x7d, 0x5f, 0x56, 0xb0, 0x69, 0x5a,
0xdb, 0x37, 0x72, 0xd8, 0x02, 0xde, 0x1f, 0x89, 0x36, 0xff, 0x02, 0x2c,
0xda, 0x3b, 0x40, 0xdf, 0x83, 0x82, 0x82, 0x81, 0xef, 0x07, 0xac, 0x3b,
0x04, 0x21, 0x79, 0x49, 0x9d, 0x58, 0xfd, 0x27, 0x29, 0x6f, 0x68, 0xf2,
0x28, 0xf6, 0xc8, 0xfa, 0x5e, 0x11, 0x9d, 0x19, 0x38, 0x3c, 0xd0, 0x7a,
0x41, 0x4b, 0x21, 0x24, 0x40, 0xd2, 0x94, 0x32, 0x09, 0x49, 0x0e, 0xb3,
0x30, 0x0b, 0x2e, 0x7d, 0xc2, 0x2f, 0x7c, 0x79, 0x1f, 0xd7, 0x00, 0xaf,
0x3e, 0x35, 0x31, 0xf5, 0xfa, 0x65, 0xd1, 0x55, 0x8f, 0x69, 0x16, 0x2d,
0x7b, 0x99, 0x1c, 0x15, 0x63, 0x2d, 0x14, 0xfb, 0x94, 0x51, 0xbc, 0x66,
0xf4, 0xa0, 0xef, 0x6b, 0x5a, 0x04, 0x06, 0xa4, 0x96, 0xc8, 0xd6, 0x47,
0xa7, 0x23, 0x41, 0x08, 0x15, 0x72, 0xe7, 0x09, 0x1f, 0x8c, 0x48, 0xed,
0xf4, 0x5a, 0x69, 0x30, 0x91, 0x3e, 0xc1, 0x17, 0x6a, 0xbd, 0xf3, 0x18,
0xaa, 0x4d, 0xc1, 0xdf, 0x8b, 0x23, 0xe2, 0x52, 0x02, 0x68, 0xb3, 0x57,
0xe9, 0x79, 0x57, 0x8c, 0x6a, 0xca, 0x04, 0xa4, 0x96, 0x48, 0xb1, 0x91,
0x79, 0x9e, 0xfd, 0xe8, 0x74, 0xf8, 0x44, 0x4b, 0xe1, 0x93, 0xd3, 0x27,
0xb4, 0x0f, 0xab, 0x38, 0x1c, 0x90, 0x5e, 0x05, 0xf9, 0x66, 0x08, 0x88,
0x3b, 0xda, 0x5a, 0x1b, 0xd3, 0x94, 0x92, 0x53, 0x41, 0xea, 0xac, 0x11,
0xc1, 0x2f, 0xb5, 0xd8, 0xbb, 0xec, 0x76, 0xe3, 0xe8, 0xf6, 0x5a, 0xa1,
0x34, 0x5b, 0x8c, 0x31, 0x9d, 0xd0, 0x92, 0x0e, 0xb3, 0xf4, 0x87, 0xc3,
0xe1, 0x68, 0x34, 0x44, 0xd3, 0x82, 0x4f, 0x07, 0x67, 0xc7, 0xbb, 0xa0,
0xad, 0x6f, 0xc0, 0xf1, 0x96, 0x99, 0xbb, 0xd0, 0xac, 0x8f, 0x84, 0x86,
0x87, 0x5d, 0xe2, 0x53, 0xd0, 0xd0, 0x82, 0xdb, 0x06, 0x8b, 0xff, 0x17,
0x57, 0x26, 0xc6, 0x21, 0x37, 0xe3, 0x35, 0xca, 0x15, 0xa6, 0x7b, 0x75,
0xf0, 0x4a, 0xdb, 0xbb, 0xb7, 0x49, 0x1d, 0x9a, 0x19, 0x5f, 0x0d, 0x82,
0x42, 0x0d, 0x07, 0x4e, 0x38, 0x65, 0x6a, 0x40, 0x43, 0xf0, 0x09, 0xbc,
0xd7, 0x5b, 0xd0, 0xa5, 0x20, 0x61, 0x42, 0x42, 0x92, 0xaf, 0x4d, 0x6b,
0x7c, 0x91, 0x48, 0xd1, 0x86, 0x42, 0x13, 0x87, 0xbe, 0xb3, 0xcd, 0x0f,
0xc8, 0x22, 0xe4, 0x34, 0x1d, 0x53, 0x8c, 0xcd, 0xf3, 0x11, 0x4e, 0x3f,
0x89, 0x10, 0x56, 0x54, 0x44, 0xea, 0x9a, 0x10, 0xde, 0x12, 0x39, 0x54,
0x44, 0x42, 0x65, 0x4f, 0x10, 0x32, 0x53, 0x66, 0x3c, 0xec, 0xc2, 0x7e,
0xd4, 0x1d, 0x67, 0x7e, 0x86, 0x0f, 0xf9, 0x1a, 0x29, 0x99, 0xcc, 0xa9,
0x1b, 0x80, 0xa1, 0xa6, 0xdf, 0x0d, 0xd1, 0x4c, 0xb3, 0x08, 0x3d, 0xbc,
0x04, 0xba, 0x74, 0x85, 0x22, 0x80, 0x2e, 0x62, 0x89, 0x68, 0x6d, 0x62,
0xf9, 0x60, 0xc0, 0x99, 0x32, 0x53, 0x12, 0x49, 0x00, 0x03, 0x30, 0xe7,
0xa4, 0x41, 0xc1, 0x68, 0x96, 0x2e, 0x28, 0x48, 0x87, 0xcd, 0xfe, 0x8c,
0xf9, 0x7f, 0x54, 0xae, 0x7e, 0x60, 0x45, 0x1c, 0xa2, 0x01, 0x61, 0x85,
0xe4, 0x82, 0x5e, 0x4e, 0x32, 0xc2, 0x08, 0xb5, 0x71, 0x10, 0xdd, 0xa9,
0x25, 0xd2, 0xb0, 0x2a, 0x4d, 0x62, 0xfd, 0x86, 0xb8, 0x64, 0xa6, 0x11,
0x3f, 0x0b, 0xc0, 0xe2, 0xe3, 0x5c, 0x6e, 0xb6, 0xf5, 0xfd, 0x9a, 0x4d,
0x1f, 0x43, 0xd6, 0x25, 0x92, 0x52, 0x4c, 0x43, 0xd7, 0xf5, 0x48, 0xd1,
0x90, 0xc9, 0x5f, 0xd3, 0xe0, 0x72, 0x56, 0xfe, 0xd0, 0x8e, 0x53, 0xc3,
0xe7, 0xc1, 0x13, 0xc8, 0x0c, 0x56, 0x03, 0x0d, 0x60, 0x53, 0x10, 0x76,
0xa6, 0x87, 0x13, 0xb2, 0xe6, 0xd5, 0xda, 0xb7, 0x27, 0x08, 0x2b, 0xd6,
0x0a, 0xc7, 0x6f, 0xec, 0xd3, 0xc8, 0xf4, 0x76, 0x89, 0x4b, 0xd5, 0x15,
0x63, 0xfb, 0x00, 0xe2, 0x3e, 0xfb, 0x99, 0x1a, 0x80, 0x01, 0x0a, 0x98,
0x21, 0x7c, 0xd4, 0x9b, 0x19, 0x7c, 0x4a, 0xb9, 0x3a, 0x99, 0x02, 0x96,
0x3e, 0xe3, 0x1e, 0xf0, 0x44, 0x3d, 0xc0, 0x0b, 0x89, 0x86, 0x4b, 0xf4,
0x12, 0x52, 0x35, 0x4a, 0x7b, 0xde, 0x24, 0x86, 0x87, 0xea, 0xaf, 0x66,
0x9d, 0xea, 0xd1, 0xb3, 0x9f, 0x13, 0x08, 0x66, 0xc1, 0x02, 0x04, 0x43,
0xbc, 0xde, 0x37, 0xee, 0xf0, 0xcb, 0xc1, 0x91, 0x3f, 0x0b, 0x30, 0x68,
0x42, 0x23, 0xf5, 0x4f, 0x27, 0xfe, 0xf2, 0xf0, 0xe4, 0x84, 0x68, 0x48,
0xa2, 0x47, 0x92, 0x4f, 0x61, 0x18, 0xe4, 0x70, 0xc9, 0x22, 0x97, 0xb1,
0x1b, 0x59, 0x7f, 0x74, 0x7e, 0x3e, 0xf5, 0x3e, 0xec, 0x0f, 0x76, 0x09,
0x4d, 0x0b, 0x30, 0x34, 0x4c, 0x22, 0xe2, 0xfc, 0xdd, 0x73, 0xe3, 0x79,
0xf3, 0xf3, 0xee, 0x19, 0x1a, 0xe2, 0xf2, 0xe5, 0x8f, 0x69, 0x76, 0xc2,
0x5f, 0x9e, 0x1b, 0xd7, 0x9c, 0xfb, 0x0c, 0x1f, 0xf1, 0x4b, 0x96, 0x39,
0x76, 0x24, 0x1a, 0x56, 0xca, 0x11, 0xc2, 0xd5, 0xc3, 0xf7, 0xbe, 0x73,
0xbc, 0xa7, 0x5d, 0xb2, 0xf1, 0x19, 0xbc, 0x6a, 0xda, 0x1f, 0x7d, 0x0e,
0x8c, 0xa9, 0xc3, 0x20, 0x7d, 0x00, 0xac, 0x8b, 0x1f, 0x33, 0x3a, 0x3e,
0xde, 0xdb, 0x63, 0xdb, 0x3f, 0x7a, 0xea, 0x17, 0xe0, 0x43, 0x22, 0x7b,
0x2b, 0x93, 0x1e, 0xcf, 0xf7, 0xee, 0xdd, 0xdb, 0x14, 0xf7, 0xe0, 0xe5,
0x3f, 0x95, 0x08, 0x21, 0x02, 0x65, 0xcd, 0xa5, 0x1c, 0xd9, 0xc7, 0xaa,
0x5a, 0xf9, 0x3d, 0xe7, 0x14, 0x93, 0x71, 0x3e, 0xbe, 0x79, 0xdd, 0x59,
0x5c, 0x65, 0xcb, 0xc7, 0xbe, 0x45, 0xa6, 0x01, 0xd6, 0x9d, 0x4b, 0x32,
0x59, 0xc7, 0xce, 0x62, 0xb9, 0x5c, 0x9a, 0xff, 0x01, 0xbb, 0xc1, 0x67,
0x81, 0x46, 0x7f, 0x03, 0x5d, 0xc3, 0x0f, 0x19, 0xd6, 0xd1, 0x06, 0x9d,
0x58, 0x5c, 0xbc, 0xc4, 0x0f, 0x19, 0x91, 0x1c, 0x22, 0x4a, 0x4e, 0x3c,
0x8f, 0xbd, 0x36, 0x1b, 0x72, 0x48, 0x73, 0x6a, 0xd5, 0x8d, 0xd7, 0x49,
0xbe, 0xa9, 0x5f, 0xbb, 0x84, 0x83, 0xd1, 0x11, 0x41, 0x24, 0x8f, 0xdb,
0x17, 0x16, 0x14, 0x5b, 0xf1, 0x1b, 0x56, 0x33, 0x14, 0x37, 0x6d, 0x31,
0x9a, 0xdf, 0x68, 0xe9, 0x03, 0x57, 0xa6, 0x1b, 0x1c, 0x7c, 0xbc, 0x14,
0x05, 0xb5, 0xe1, 0xf3, 0x43, 0xc6, 0x0b, 0x55, 0x12, 0x3d, 0xef, 0x30,
0x16, 0xa6, 0xa1, 0xb7, 0x93, 0x9a, 0x4b, 0x94, 0xfb, 0xbd, 0xd7, 0x02,
0x76, 0x58, 0xc6, 0xe3, 0x9b, 0x60, 0xc0, 0xf2, 0xea, 0xfe, 0x97, 0x34,
0x7e, 0xf8, 0xd8, 0x30, 0xf5, 0xd4, 0x16, 0xdf, 0x85, 0x1f, 0x7a, 0x3e,
0xf2, 0x35, 0xa4, 0xf2, 0xb7, 0xc4, 0xfe, 0x3f, 0x86, 0x80, 0x36, 0x73,
0x71, 0xcd, 0xff, 0x8b, 0xdd, 0xba, 0xfb, 0xc4, 0xc3, 0xb8, 0xed, 0xd2,
0xfe, 0xfe, 0xfe, 0xe0, 0x97, 0xe5, 0x0b, 0x3a, 0x0f, 0xa0, 0x80, 0x90,
0x04, 0x9f, 0x93, 0x2a, 0x6a, 0x1b, 0x08, 0x99, 0x2e, 0xac, 0x41, 0xfd,
0x8b, 0x7b, 0x03, 0x10, 0x83, 0xbd, 0x4e, 0xf2, 0xb9, 0x09, 0xd3, 0x80,
0xac, 0xc5, 0x78, 0xf4, 0x1c, 0xf4, 0x04, 0xa8, 0x5a, 0x59, 0xa8, 0xfe,
0xdc, 0x61, 0x15, 0x04, 0x27, 0x60, 0x9d, 0xc2, 0x8d, 0xe1, 0x08, 0x44,
0xde, 0x65, 0xaf, 0x3b, 0x0d, 0x36, 0xd2, 0x9d, 0xb9, 0x85, 0x4a, 0xd5,
0x22, 0x93, 0x4b, 0x31, 0x3f, 0xcb, 0x21, 0xc5, 0xf7, 0x0d, 0x42, 0x68,
0x6b, 0x84, 0x44, 0xc3, 0x10, 0x31, 0x5f, 0xe0, 0x30, 0x44, 0x38, 0x2c,
0x00, 0x49, 0x90, 0xbf, 0x35, 0xe0, 0x09, 0x78, 0x5e, 0x17, 0xdb, 0xe7,
0x94, 0xe7, 0x7e, 0x80, 0xfe, 0xe3, 0x91, 0xaf, 0x9d, 0x74, 0xc2, 0xe4,
0x38, 0x1f, 0x4a, 0x48, 0xf5, 0xa4, 0xbf, 0x2b, 0xa1, 0x45, 0x73, 0xa7,
0x34, 0x47, 0x01, 0x31, 0x03, 0x64, 0x8b, 0xbf, 0x42, 0x31, 0x7d, 0x12,
0xc5, 0x6a, 0xdb, 0xad, 0xfb, 0xda, 0xd2, 0x71, 0xd8, 0x43, 0x98, 0x78,
0xfc, 0x5f, 0xf1, 0xb3, 0x7a, 0x79, 0x7a, 0xf1, 0x4d, 0xf1, 0x49, 0x7f,
0xc7, 0x16, 0x8f, 0xec, 0x47, 0xed, 0x62, 0xe1, 0xe1, 0x70, 0x0f, 0xf6,
0x5c, 0x7d, 0x67, 0x6b, 0xa0, 0x59, 0xe1, 0xe9, 0x01, 0x66, 0xa7, 0x07,
0x7b, 0x68, 0xb9, 0x71, 0x97, 0x68, 0xb8, 0xcd, 0x11, 0x30, 0xcd, 0x6f,
0xec, 0x25, 0x9e, 0xab, 0x88, 0x4b, 0x45, 0xa6, 0x03, 0x98, 0x01, 0x82,
0xf8, 0x21, 0x8f, 0x55, 0x1c, 0xeb, 0x3c, 0xf3, 0xdf, 0x64, 0x26, 0x1e,
0x7f, 0xa5, 0x75, 0x8b, 0x53, 0x2b, 0x1b, 0x1f, 0xae, 0x50, 0xb0, 0x20,
0x7e, 0xe9, 0x8d, 0xbd, 0x7d, 0xfd, 0xa0, 0x27, 0x0f, 0x88, 0xb4, 0x8f,
0x4a, 0xa5, 0x0a, 0x05, 0x14, 0x30, 0x88, 0x6c, 0xf1, 0xe1, 0xc1, 0x25,
0x48, 0x1b, 0x6d, 0xd7, 0xd7, 0xf5, 0xd0, 0x10, 0xd9, 0x11, 0xc2, 0xf7,
0x3f, 0xe4, 0x63, 0x26, 0x22, 0x8d, 0x7d, 0x63, 0x55, 0x2e, 0xff, 0x4e,
0x2b, 0x17, 0x72, 0x4c, 0xb5, 0x97, 0x2a, 0xe0, 0xf8, 0x87, 0x98, 0xca,
0xaf, 0x6d, 0xee, 0xe9, 0xf0, 0x78, 0xfc, 0xec, 0x84, 0x10, 0x2e, 0x10,
0x42, 0x64, 0xdb, 0x14, 0xfb, 0x34, 0x12, 0x7f, 0x37, 0x62, 0xdb, 0x7d,
0x4d, 0xe4, 0x90, 0xb8, 0x14, 0x00, 0x0b, 0x84, 0xc4, 0xb3, 0x18, 0x7c,
0xe8, 0xeb, 0x80, 0xf7, 0x79, 0x5d, 0x9c, 0x39, 0xdf, 0x29, 0x73, 0xa4,
0x61, 0x10, 0x9a, 0x86, 0x3b, 0x17, 0xe1, 0x96, 0xcb, 0xc3, 0xce, 0xfe,
0xa5, 0x34, 0x67, 0x83, 0x53, 0x22, 0xcf, 0x8a, 0x40, 0x43, 0x8b, 0x83,
0xfc, 0x58, 0x45, 0x6e, 0x7d, 0xfd, 0xcc, 0xc8, 0x61, 0x06, 0x4b, 0x70,
0x5d, 0x78, 0x10, 0x56, 0x9d, 0x21, 0xfe, 0x70, 0x60, 0x68, 0x28, 0x08,
0xa7, 0x69, 0xd8, 0xeb, 0x4d, 0xa2, 0x10, 0xdc, 0xeb, 0xd7, 0xc8, 0x2f,
0x97, 0xfe, 0x2f, 0xfe, 0x86, 0x10, 0x92, 0xd7, 0x76, 0xa8, 0x54, 0x87,
0x11, 0x2a, 0x5b, 0x27, 0xd3, 0x5e, 0xbb, 0x3e, 0x10, 0xaf, 0x53, 0xac,
0x37, 0xc5, 0xb7, 0x38, 0xfc, 0x29, 0x79, 0x2d, 0x4c, 0x1e, 0xbf, 0xb4,
0x3f, 0x00, 0x13, 0x7f, 0x55, 0x97, 0xf8, 0xaf, 0xce, 0x08, 0x89, 0xa9,
0x5f, 0x34, 0xf3, 0x49, 0xfc, 0x21, 0x69, 0x0f, 0x72, 0x73, 0x9c, 0xc5,
0xd2, 0x1b, 0x02, 0xf2, 0xac, 0xcc, 0x34, 0xa4, 0x28, 0x98, 0x75, 0x69,
0x55, 0xb9, 0xd0, 0xa6, 0xa0, 0xa1, 0x0f, 0x19, 0xa2, 0xcf, 0x06, 0x81,
0x22, 0x2e, 0xdc, 0x87, 0x44, 0x3d, 0xe7, 0xe0, 0x08, 0x4e, 0x70, 0x6d,
0x61, 0x55, 0x64, 0x6c, 0xdd, 0x17, 0xed, 0x59, 0x5b, 0x3d, 0xc3, 0xf1,
0xf8, 0xd7, 0x4d, 0x1d, 0xe3, 0x03, 0xdf, 0x09, 0x22, 0xc7, 0xa3, 0x16,
0x02, 0x69, 0xad, 0xad, 0xc6, 0xa3, 0x8b, 0xe0, 0xd2, 0x04, 0xa9, 0x47,
0xd6, 0xa5, 0x48, 0x14, 0xb2, 0x3d, 0x64, 0x1a, 0x9e, 0x33, 0x97, 0x82,
0x84, 0x5b, 0x43, 0x89, 0xff, 0x32, 0x64, 0x6b, 0xc8, 0x32, 0x2e, 0x96,
0x4b, 0x22, 0x63, 0xff, 0x2b, 0xe6, 0xc3, 0x59, 0xfc, 0x84, 0x7b, 0x3f,
0x75, 0xe6, 0x43, 0x1d, 0x1f, 0x92, 0x2e, 0xfd, 0x92, 0xb9, 0x08, 0xbe,
0x0e, 0x79, 0x38, 0x0e, 0xf7, 0x18, 0x2d, 0x94, 0x2a, 0xcb, 0x11, 0x9b,
0x60, 0x58, 0xfc, 0x15, 0x44, 0x36, 0xa4, 0x06, 0x5c, 0xf7, 0x72, 0x3a,
0x91, 0xc3, 0x2c, 0xbd, 0xc3, 0x09, 0x8a, 0xff, 0xc9, 0xc4, 0x8d, 0xd9,
0x61, 0xed, 0x59, 0x11, 0xb2, 0x1c, 0xdf, 0x23, 0xbd, 0x53, 0xbf, 0x23,
0x76, 0xe1, 0xd9, 0x0e, 0x0c, 0x45, 0x9f, 0x8d, 0xbc, 0x49, 0x02, 0x8c,
0x8e, 0x7f, 0x0a, 0x5d, 0x7a, 0x5d, 0xa2, 0xab, 0x5f, 0x51, 0x08, 0x8c,
0x44, 0x94, 0xb1, 0x16, 0xec, 0x15, 0xc7, 0xca, 0xb2, 0xff, 0x20, 0x1b,
0x9e, 0x1b, 0x39, 0x0c, 0xef, 0xb2, 0x8b, 0xfd, 0x45, 0xc6, 0x0c, 0x98,
0xc1, 0x41, 0xac, 0x3b, 0xf3, 0xe5, 0xd2, 0xf7, 0x19, 0xe3, 0xf0, 0xf4,
0x54, 0x0c, 0xcb, 0x39, 0x59, 0x0e, 0x07, 0x7a, 0xb5, 0xfe, 0xb1, 0x20,
0xf4, 0xc9, 0x40, 0x00, 0xe4, 0xf0, 0x01, 0xb5, 0x2f, 0xf9, 0x69, 0x4f,
0x09, 0x20, 0x52, 0xa8, 0x5e, 0xac, 0x58, 0x97, 0x5a, 0xef, 0x28, 0xce,
0xf8, 0x7e, 0xf7, 0xe4, 0xd4, 0x78, 0xd4, 0x83, 0xb3, 0x33, 0xee, 0x3a,
0xfa, 0x5c, 0xc8, 0x27, 0x9e, 0x27, 0xa8, 0x56, 0x5b, 0x28, 0xf4, 0x08,
0x5d, 0x1e, 0x0d, 0x47, 0xbf, 0x22, 0x3d, 0xca, 0x96, 0x92, 0xac, 0x05,
0x11, 0x11, 0x9a, 0x66, 0x9f, 0x29, 0x5d, 0xb4, 0x67, 0x8f, 0x16, 0xe6,
0xca, 0x1e, 0x27, 0x5f, 0x7f, 0x62, 0xfc, 0xd2, 0x06, 0xc5, 0xf8, 0xee,
0x9f, 0x9e, 0x4f, 0x99, 0x69, 0xec, 0x0e, 0x87, 0xa0, 0x1f, 0x91, 0x2f,
0xd5, 0x8e, 0x4d, 0x00, 0xba, 0x95, 0x16, 0x49, 0xc2, 0x06, 0x83, 0x53,
0x71, 0xbd, 0xc5, 0xa9, 0x61, 0xe3, 0xc1, 0xde, 0x28, 0x05, 0x51, 0xce,
0xfc, 0xd6, 0xfe, 0x80, 0x26, 0x80, 0x67, 0xe1, 0x74, 0xd0, 0x6b, 0x3f,
0x2c, 0xb1, 0xe3, 0x44, 0xf8, 0xe0, 0x97, 0xce, 0x55, 0x2c, 0xce, 0x5a,
0x47, 0xee, 0x77, 0xcf, 0x28, 0x68, 0x38, 0x93, 0xc6, 0xff, 0xc7, 0x90,
0x3f, 0x71, 0xdd, 0xb4, 0xe7, 0xe2, 0x0b, 0xc8, 0x85, 0xc5, 0xcd, 0xcd,
0x8f, 0x36, 0xd7, 0xd7, 0x6b, 0x35, 0x86, 0x57, 0x38, 0x6c, 0x19, 0x7a,
0xb7, 0xd2, 0x75, 0xd2, 0x34, 0x9b, 0x9b, 0x1b, 0xf4, 0xfb, 0x68, 0xef,
0x20, 0xcb, 0xfb, 0x8f, 0x16, 0x4a, 0x65, 0xf2, 0xf4, 0x11, 0x9f, 0x45,
0x3a, 0x5f, 0x4a, 0x13, 0xac, 0xac, 0x37, 0xae, 0xae, 0xde, 0xb9, 0x73,
0x67, 0x6b, 0x6b, 0x53, 0xda, 0xd6, 0x46, 0x28, 0xf4, 0x2b, 0x1c, 0x37,
0x71, 0x6a, 0x9c, 0xf9, 0xc5, 0x79, 0x51, 0xa6, 0xce, 0xe2, 0xfc, 0xd4,
0x25, 0x5c, 0xbc, 0xcc, 0x2a, 0x35, 0x33, 0x4e, 0x1c, 0xe2, 0x8e, 0x66,
0x9b, 0xfc, 0xd2, 0x52, 0x79, 0x09, 0x3e, 0x86, 0xf2, 0xc4, 0x6b, 0xa3,
0x70, 0xf4, 0x90, 0x20, 0x5a, 0xee, 0xe5, 0x49, 0x1a, 0x8a, 0x24, 0xb1,
0xc5, 0xf0, 0x0e, 0xa6, 0xdd, 0x32, 0xf6, 0xe0, 0x9c, 0x50, 0xf8, 0x16,
0x96, 0x61, 0xda, 0x69, 0x63, 0x4a, 0x36, 0x27, 0x5a, 0xb5, 0xc8, 0xdd,
0x3c, 0x42, 0xea, 0x58, 0x75, 0xe2, 0xae, 0xa7, 0xb6, 0x75, 0x26, 0xca,
0xa6, 0x08, 0xd8, 0x36, 0x7e, 0x69, 0x2e, 0x7e, 0x69, 0x93, 0xfd, 0xca,
0xf4, 0x55, 0xbf, 0xd4, 0x61, 0xbf, 0x54, 0x27, 0x45, 0x33, 0x73, 0x25,
0x94, 0x90, 0x57, 0x3b, 0x36, 0xda, 0x72, 0xe4, 0x3a, 0xbc, 0x78, 0xcc,
0x7e, 0x29, 0x71, 0xe9, 0xb2, 0x12, 0x84, 0xc4, 0x3f, 0x60, 0xd3, 0x43,
0x13, 0x5b, 0x88, 0xcb, 0xcc, 0x9f, 0xb4, 0x80, 0x20, 0x61, 0x03, 0x39,
0xda, 0x40, 0xce, 0x79, 0x19, 0x26, 0x58, 0xe1, 0xb5, 0xa6, 0x66, 0x0e,
0x42, 0x6d, 0x19, 0x73, 0xa3, 0x5f, 0xd9, 0xf3, 0xa6, 0x10, 0x0d, 0x2b,
0x1e, 0xb0, 0xf8, 0x17, 0xd8, 0xa3, 0x9a, 0xc4, 0x16, 0x9c, 0x2f, 0x93,
0xf8, 0x82, 0x63, 0x8b, 0x49, 0xdc, 0xe0, 0xd4, 0xaf, 0x07, 0xd7, 0x9b,
0x0f, 0xee, 0xdf, 0x6f, 0x1a, 0xe3, 0xd0, 0x7c, 0xb0, 0x1b, 0x5c, 0x67,
0xe0, 0x93, 0xd0, 0x57, 0x08, 0x99, 0x17, 0x69, 0xba, 0x7e, 0x7b, 0x3a,
0xb6, 0x00, 0x42, 0x82, 0xa8, 0xf0, 0x76, 0xf5, 0xe9, 0xda, 0x4c, 0xea,
0xb0, 0xa7, 0xe3, 0xbe, 0x40, 0x47, 0xfa, 0xbe, 0xbf, 0x4a, 0x6c, 0x4c,
0x9a, 0xf6, 0x85, 0x76, 0x01, 0x28, 0xbc, 0x38, 0x95, 0x88, 0xf8, 0x61,
0x10, 0x4c, 0x07, 0xcb, 0x4d, 0x9d, 0xf4, 0xd0, 0x39, 0xc6, 0x47, 0x64,
0xf0, 0xdf, 0x81, 0xba, 0x8e, 0xb7, 0x5d, 0x91, 0x43, 0xdb, 0x8e, 0x93,
0xe4, 0xd5, 0xf8, 0xb0, 0xdd, 0x72, 0x66, 0xc2, 0x3e, 0xd2, 0x33, 0x7f,
0x28, 0x06, 0xee, 0x45, 0x26, 0x10, 0x49, 0x59, 0x7e, 0x72, 0xce, 0x1e,
0xf8, 0xfa, 0x34, 0x44, 0x9a, 0x89, 0x50, 0x32, 0x3b, 0xed, 0xf6, 0x4c,
0x7c, 0x48, 0x6c, 0x6a, 0x13, 0xc2, 0x9a, 0x85, 0xd5, 0x13, 0xbc, 0xfe,
0xda, 0x6c, 0x04, 0x2c, 0x01, 0xdf, 0x54, 0xd6, 0xa5, 0x26, 0xc6, 0x62,
0xfc, 0xbc, 0x25, 0x1e, 0x4c, 0xab, 0xc8, 0x9e, 0x12, 0xc2, 0x83, 0x49,
0x20, 0x09, 0xd5, 0x3a, 0x15, 0x3c, 0x71, 0x8c, 0x0f, 0xb7, 0x42, 0x75,
0xb6, 0x21, 0x87, 0x55, 0x2c, 0xaf, 0x20, 0xb0, 0x99, 0x42, 0x88, 0x64,
0x8d, 0x19, 0xf4, 0x54, 0x8c, 0x7f, 0x49, 0x1b, 0xf1, 0xcf, 0x99, 0x07,
0xc9, 0x9e, 0xfc, 0xa3, 0xe8, 0xde, 0xb3, 0x8d, 0x22, 0x58, 0x16, 0x6a,
0x73, 0x90, 0x98, 0xb7, 0xa7, 0xb8, 0xd4, 0x86, 0xd7, 0xc6, 0xba, 0x94,
0x10, 0xea, 0xe5, 0x3d, 0x77, 0x0a, 0xe1, 0x24, 0x2d, 0x51, 0x50, 0x90,
0xfc, 0x38, 0x76, 0x3a, 0xa1, 0x43, 0x4f, 0x00, 0xb1, 0x95, 0xf5, 0xb5,
0xb2, 0x6c, 0xe5, 0xe9, 0x54, 0xd2, 0x23, 0x30, 0x29, 0xba, 0x22, 0x02,
0x5e, 0xa0, 0xf0, 0x09, 0x6c, 0xda, 0xe1, 0xb4, 0x49, 0x19, 0xa1, 0x54,
0xcc, 0x13, 0xac, 0x5f, 0xd8, 0x36, 0x79, 0x9a, 0xa9, 0xc4, 0x62, 0xbd,
0x89, 0x54, 0x9a, 0xb3, 0xa8, 0x9d, 0xce, 0x1e, 0xfc, 0xb3, 0x7d, 0xc9,
0xd9, 0x9c, 0x35, 0xb3, 0xc9, 0x1a, 0xc5, 0x24, 0x8c, 0xac, 0x87, 0xc6,
0x0d, 0x38, 0xe0, 0x4c, 0x14, 0xa9, 0xb3, 0x84, 0xd7, 0x0f, 0xc9, 0xed,
0x77, 0x63, 0xa4, 0xbc, 0xa3, 0x68, 0x92, 0x89, 0x32, 0x89, 0xa8, 0xa2,
0xe5, 0x3a, 0x99, 0x48, 0x4e, 0x27, 0x63, 0x3c, 0x6a, 0xb5, 0x74, 0xbe,
0xfb, 0x44, 0xa8, 0x75, 0x54, 0x74, 0x2e, 0x98, 0x1a, 0x36, 0x92, 0xda,
0x33, 0xd0, 0x10, 0xde, 0x7d, 0x47, 0xb2, 0xfa, 0x65, 0x2c, 0x85, 0x61,
0x99, 0xd1, 0x2e, 0x72, 0x6d, 0x32, 0x56, 0x93, 0x6f, 0xa3, 0x83, 0x70,
0xca, 0x1d, 0x5b, 0xe5, 0x6c, 0xdb, 0x28, 0x58, 0xe3, 0xf5, 0x8b, 0x71,
0x91, 0xef, 0x9e, 0xc9, 0xb5, 0xd5, 0x45, 0x22, 0x27, 0x34, 0x34, 0xb9,
0x36, 0xf1, 0x4b, 0x91, 0xad, 0x2d, 0x72, 0x6d, 0x47, 0x53, 0xd2, 0xa7,
0x47, 0x9d, 0x99, 0x88, 0x1d, 0xe6, 0x8e, 0xfc, 0x14, 0x44, 0x69, 0xcf,
0x48, 0x04, 0x81, 0x54, 0xe7, 0xbb, 0xd9, 0x16, 0x9a, 0x4c, 0x86, 0x30,
0x37, 0x22, 0xaa, 0xbc, 0xc8, 0xb5, 0x61, 0x71, 0x35, 0x32, 0xd9, 0x44,
0x8f, 0x73, 0x99, 0xf6, 0x37, 0xe6, 0x4b, 0x39, 0x6c, 0x9f, 0xe8, 0x47,
0xc1, 0x38, 0x38, 0x97, 0x36, 0x3c, 0x0a, 0x8d, 0xd2, 0x01, 0x98, 0x96,
0xc9, 0x75, 0x9b, 0x6d, 0xbd, 0xfe, 0x31, 0xbf, 0xf0, 0xc2, 0x4c, 0xbe,
0x94, 0xf8, 0x27, 0x42, 0x32, 0x51, 0x81, 0x86, 0x07, 0x86, 0x76, 0x5f,
0x4b, 0xed, 0x9b, 0x95, 0x84, 0x74, 0xdd, 0xd9, 0x94, 0x20, 0x6b, 0x3c,
0xea, 0x89, 0x44, 0x1a, 0xfc, 0xfd, 0xa3, 0x74, 0x26, 0x43, 0xa7, 0x57,
0x3f, 0x90, 0x2f, 0xb5, 0x25, 0x23, 0x2c, 0x16, 0x1f, 0xb1, 0x1b, 0x39,
0xc2, 0x96, 0xf7, 0x97, 0xfd, 0x62, 0x80, 0x93, 0x9c, 0x67, 0x53, 0xcc,
0x07, 0x2c, 0xbf, 0xc0, 0x24, 0x43, 0xb8, 0xaa, 0x1d, 0x6e, 0xb1, 0x98,
0xed, 0x89, 0xe6, 0xd4, 0x39, 0xef, 0xe9, 0x67, 0x84, 0x6d, 0xe4, 0xbc,
0xbf, 0x0d, 0x55, 0xda, 0x88, 0x59, 0x2c, 0xaa, 0x24, 0x87, 0x49, 0xe7,
0x90, 0x5c, 0xef, 0x1b, 0x53, 0x6c, 0xa9, 0xe9, 0x37, 0x9b, 0xd5, 0x87,
0xfa, 0x6c, 0xa5, 0xe9, 0xe6, 0xa9, 0x20, 0x7c, 0xb1, 0xab, 0x7d, 0xd6,
0x42, 0xa9, 0xf4, 0x24, 0x2d, 0x3c, 0xe1, 0x01, 0x4c, 0x13, 0x71, 0x69,
0x15, 0xab, 0xc0, 0x44, 0x42, 0xc5, 0xf6, 0x90, 0x44, 0x24, 0xd1, 0xeb,
0x16, 0xe1, 0x6c, 0xb6, 0x5b, 0x27, 0xcd, 0x0c, 0x00, 0x09, 0x8f, 0xc2,
0xad, 0x2f, 0x87, 0xe4, 0xef, 0x40, 0xc9, 0x9c, 0xed, 0xb2, 0xcf, 0xda,
0x96, 0xac, 0x0c, 0xf7, 0x6c, 0x9b, 0xd4, 0xa2, 0xd1, 0x53, 0x7a, 0xdd,
0x62, 0x99, 0x22, 0x50, 0x4f, 0xd6, 0x80, 0x41, 0x4f, 0x5e, 0x99, 0x51,
0xf5, 0xd9, 0x54, 0xb7, 0x0e, 0xdb, 0xfb, 0x13, 0x88, 0x30, 0xf4, 0xe9,
0x1d, 0xf6, 0xbe, 0xcf, 0x24, 0xee, 0x68, 0x21, 0x9b, 0x98, 0xcf, 0x50,
0x72, 0x46, 0x22, 0xd1, 0x76, 0xaa, 0x65, 0x2c, 0x8a, 0x9a, 0x95, 0x99,
0x12, 0xc4, 0x10, 0xeb, 0x42, 0xae, 0x5e, 0x7b, 0xd2, 0xc6, 0xbb, 0x8e,
0xb5, 0xa7, 0xa9, 0x90, 0x81, 0xa9, 0x48, 0x92, 0x78, 0x97, 0xc3, 0x8f,
0xe1, 0xba, 0x64, 0x39, 0x86, 0xbb, 0xc5, 0x52, 0xea, 0xa4, 0x6f, 0x36,
0xb3, 0x76, 0x11, 0xf8, 0x2c, 0x86, 0x93, 0xb5, 0x27, 0x0e, 0xf1, 0x49,
0xd5, 0xa8, 0x38, 0x9c, 0x5a, 0x5c, 0x9b, 0xac, 0xae, 0xf5, 0xc4, 0xa9,
0xe6, 0xb5, 0xa7, 0x2c, 0xfd, 0x0f, 0x71, 0x39, 0x7f, 0xed, 0x3b, 0xab,
0x83, 0x01, 0xbb, 0xae, 0x93, 0xcc, 0x5c, 0xcf, 0x38, 0x0b, 0x47, 0x93,
0xc5, 0x19, 0x7a, 0xde, 0x0e, 0xa9, 0x52, 0x57, 0x56, 0xd7, 0x2c, 0x5e,
0x3f, 0xb4, 0xa3, 0x46, 0x52, 0xac, 0x1f, 0x66, 0xb2, 0x86, 0x48, 0xd1,
0x45, 0x7b, 0x1a, 0x9e, 0x26, 0x60, 0xf8, 0x89, 0xe8, 0xcf, 0x2f, 0x28,
0xb6, 0x5a, 0xfc, 0xce, 0xbe, 0xd1, 0xab, 0x33, 0xc9, 0x43, 0xbd, 0x3c,
0x1a, 0x14, 0x0b, 0x88, 0x44, 0x43, 0xac, 0x1f, 0x22, 0x4f, 0x63, 0x99,
0x35, 0xe0, 0xa4, 0x83, 0xb5, 0xa7, 0x62, 0xfd, 0x30, 0x48, 0xcd, 0x0a,
0xa9, 0xc0, 0x2b, 0x58, 0x74, 0x5f, 0xec, 0xc3, 0x0b, 0x84, 0x8f, 0xc6,
0x76, 0x8c, 0x7b, 0xc5, 0xd2, 0xda, 0xf4, 0x0a, 0xa9, 0x2c, 0xae, 0xa1,
0x81, 0x86, 0xdb, 0x5e, 0x6c, 0x74, 0xe9, 0x05, 0x6b, 0xd9, 0x8e, 0x1b,
0x5d, 0x42, 0xb8, 0x7c, 0x19, 0x00, 0x79, 0x0d, 0x38, 0x94, 0xb5, 0x40,
0x6d, 0xfb, 0x35, 0xcc, 0xec, 0xe6, 0xbe, 0x78, 0xe5, 0xcf, 0x10, 0x50,
0x21, 0x75, 0x23, 0x11, 0xf2, 0xb8, 0x6f, 0x96, 0xd6, 0xa6, 0x57, 0x8c,
0x33, 0xc6, 0x88, 0x09, 0xc3, 0x1a, 0xb0, 0x5a, 0x6e, 0x24, 0x89, 0x27,
0x9e, 0x37, 0xd6, 0x2d, 0xba, 0xbc, 0x6e, 0x11, 0x66, 0x58, 0xd6, 0x24,
0x80, 0x79, 0xff, 0x1b, 0x5a, 0xaf, 0x75, 0x47, 0x62, 0x86, 0x17, 0x47,
0xac, 0x60, 0x5a, 0x26, 0xcd, 0x41, 0x33, 0x9c, 0x1b, 0x02, 0xce, 0x2c,
0x93, 0x66, 0xb2, 0x06, 0xfc, 0x90, 0x48, 0x88, 0x55, 0xee, 0xae, 0xac,
0x72, 0x57, 0x90, 0x59, 0xc4, 0xba, 0x45, 0x94, 0xbc, 0x3d, 0x61, 0xcf,
0xbc, 0x58, 0xbd, 0xcf, 0x9a, 0xfa, 0x13, 0x04, 0xef, 0x4a, 0xf8, 0xf8,
0x95, 0x5e, 0xf9, 0x0c, 0x9c, 0x92, 0x89, 0xf1, 0xb3, 0xf0, 0x6b, 0x2b,
0xff, 0x59, 0x53, 0x96, 0xa2, 0xea, 0x81, 0x63, 0x49, 0x4e, 0x16, 0xeb,
0xf8, 0x93, 0xd5, 0x35, 0x6a, 0xef, 0xfd, 0x35, 0x22, 0xb8, 0x9f, 0x45,
0xb7, 0x7f, 0xc6, 0x65, 0x3e, 0xd7, 0xa2, 0x4f, 0x29, 0x48, 0xbd, 0x1d,
0x5d, 0x53, 0xca, 0x55, 0xb7, 0x95, 0xeb, 0x96, 0xdf, 0xa4, 0xa8, 0x8a,
0x74, 0xcc, 0x6f, 0x51, 0xb1, 0x81, 0xb3, 0x56, 0x75, 0x7f, 0x80, 0x13,
0xe3, 0x7f, 0x96, 0x12, 0x0e, 0xea, 0x7d, 0xed, 0x36, 0x97, 0x9b, 0x70,
0x3d, 0x51, 0x24, 0xed, 0xf6, 0xbf, 0x55, 0xc8, 0xb5, 0x8f, 0xb1, 0x28,
0x2a, 0x7e, 0x29, 0x19, 0x63, 0xd0, 0x30, 0x71, 0x1b, 0x1d, 0xd4, 0xc3,
0x48, 0xf9, 0x0c, 0x57, 0xc6, 0xd8, 0x52, 0x79, 0x42, 0x0d, 0xf1, 0x2b,
0x1d, 0x5f, 0x55, 0x57, 0xaf, 0x7a, 0x3f, 0xfe, 0x89, 0x92, 0x72, 0x1b,
0x85, 0xf2, 0x12, 0x75, 0x55, 0x6d, 0xfd, 0x98, 0x0b, 0x88, 0x6c, 0xfc,
0x96, 0xf1, 0x6f, 0x2f, 0x9b, 0x1e, 0xdc, 0x1a, 0xd1, 0x92, 0x17, 0x37,
0xe2, 0x46, 0x24, 0xb5, 0x18, 0x15, 0x37, 0xe2, 0x6a, 0x93, 0x6b, 0x89,
0x29, 0x0e, 0xea, 0x74, 0x0e, 0xa5, 0x8c, 0x86, 0x6b, 0x4f, 0xb0, 0x2b,
0x55, 0x34, 0x8a, 0x4b, 0x4e, 0x2c, 0xa9, 0xdd, 0x41, 0x65, 0x0d, 0x6a,
0x49, 0xe4, 0x8c, 0x2b, 0x8f, 0x96, 0x72, 0x95, 0x48, 0x8a, 0x89, 0x22,
0x2e, 0x1c, 0x02, 0x46, 0x92, 0x71, 0xd5, 0x3d, 0x4c, 0xc8, 0x33, 0xfc,
0x7b, 0x5e, 0x03, 0xf6, 0x96, 0xe3, 0xc4, 0x6e, 0xa0, 0x30, 0x8a, 0x4b,
0x9f, 0x62, 0x2e, 0x1a, 0x42, 0x5d, 0x8d, 0x87, 0x0d, 0x3e, 0xa6, 0xea,
0x47, 0x4d, 0xd5, 0xdb, 0x58, 0xbc, 0xc3, 0xd7, 0x11, 0xfc, 0x99, 0x9a,
0xa2, 0xa2, 0x68, 0xca, 0xf6, 0x74, 0xc9, 0x54, 0xec, 0x45, 0xcb, 0x49,
0x64, 0x27, 0xa8, 0xb6, 0xda, 0x06, 0x42, 0x2c, 0x1f, 0x5a, 0xff, 0xce,
0xa5, 0x5c, 0x52, 0xef, 0xc4, 0xc3, 0x62, 0x50, 0xbc, 0xa1, 0xe6, 0xf1,
0xca, 0x98, 0x1e, 0x7c, 0x04, 0xad, 0xef, 0xba, 0xee, 0x07, 0x44, 0x35,
0x29, 0x31, 0x42, 0xdd, 0x93, 0x84, 0xf0, 0x5c, 0x5a, 0xc5, 0xdb, 0x88,
0xe7, 0x84, 0x71, 0xb2, 0x57, 0xd8, 0xa9, 0x26, 0x87, 0x5d, 0xe6, 0xd2,
0x25, 0xbb, 0x11, 0x5d, 0x68, 0xc4, 0x32, 0x27, 0xb6, 0x40, 0xb2, 0xb9,
0xfc, 0x87, 0x10, 0xf0, 0x1f, 0x8e, 0x98, 0x84, 0x52, 0x2d, 0x54, 0xb6,
0x26, 0xad, 0x62, 0xa3, 0x8c, 0x68, 0x49, 0xca, 0x8a, 0x94, 0xa5, 0xe7,
0x43, 0x59, 0xba, 0xd0, 0x08, 0xbb, 0xb6, 0x94, 0x1f, 0x71, 0x4d, 0x54,
0x72, 0x08, 0x84, 0xd1, 0xa7, 0x2b, 0x3c, 0x7a, 0x57, 0x28, 0xe3, 0x92,
0xde, 0xa3, 0x5f, 0xd5, 0x45, 0x05, 0x90, 0x25, 0x55, 0x43, 0x32, 0x1a,
0x4d, 0x30, 0xd7, 0x45, 0xd5, 0x90, 0x25, 0xe5, 0x42, 0x16, 0x0a, 0x83,
0xdc, 0xaa, 0x2e, 0x2c, 0x42, 0xa1, 0x10, 0xee, 0x05, 0xb1, 0xf1, 0x94,
0x2a, 0x5d, 0x45, 0xb2, 0x92, 0xab, 0xa9, 0xe2, 0xf7, 0xbd, 0xee, 0x67,
0xb7, 0x50, 0xd7, 0x66, 0x7b, 0x16, 0x57, 0x3f, 0x71, 0x81, 0x13, 0xc3,
0x90, 0x32, 0xa1, 0xe2, 0x18, 0xb0, 0x27, 0xe5, 0x50, 0x5c, 0x45, 0x24,
0x55, 0x41, 0x45, 0xa9, 0x10, 0xae, 0xe0, 0x09, 0x52, 0x34, 0xa4, 0xbb,
0xe9, 0x3d, 0x79, 0x04, 0x72, 0x96, 0xdf, 0xb3, 0x39, 0x4f, 0xf3, 0x0e,
0x46, 0x82, 0x8a, 0xa7, 0xe9, 0x82, 0xa7, 0xb2, 0xec, 0xa0, 0x0c, 0xaa,
0xb8, 0x54, 0x54, 0x42, 0x61, 0x5b, 0xd6, 0x7b, 0xd6, 0xe4, 0x7c, 0xd1,
0xcf, 0xaa, 0xae, 0x4c, 0x3f, 0xc9, 0x5c, 0xb3, 0x3e, 0x70, 0x6b, 0x7f,
0x3c, 0x37, 0x57, 0xe2, 0xcf, 0xff, 0x4f, 0xa3, 0xf7, 0xfc, 0x1f, 0x9b,
0x07, 0x67, 0xf5, 0x0b, 0x14, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x49,
0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
unsigned int dosbox224x93_png_len = 5095;

View File

@ -126,8 +126,12 @@ union alignas(8) MMX_reg {
} uw;
static_assert(sizeof(uw) == 8, "MMX packing error");
uint16_t uwa[4]; /* for PSHUFW */
uint8_t uba[8];
uint16_t uwa[4];
uint32_t uda[2];
static_assert(sizeof(uba) == 8, "MMX packing error");
static_assert(sizeof(uwa) == 8, "MMX packing error");
static_assert(sizeof(uda) == 8, "MMX packing error");
static_assert(offsetof(uw_t,w0) == 0, "MMX packing error");
static_assert(offsetof(uw_t,w1) == 2, "MMX packing error");
static_assert(offsetof(uw_t,w2) == 4, "MMX packing error");

213
include/iglib.h Normal file
View File

@ -0,0 +1,213 @@
/* this header is copied to/from the doslib.h copy */
#ifndef __DOSLIB_HW_IDE_DOSBOXIGLIB_H
#define __DOSLIB_HW_IDE_DOSBOXIGLIB_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef DOSBOX_INCLUDE
/* In order to be usable as part of a VxD, code must be combined with data.
* In Watcom C we can do this by declaring all global variables __based on _CODE. */
# ifdef TARGET_VXD
# define DOSBOXID_VAR __based( __segname("_CODE") )
# else
# define DOSBOXID_VAR
# endif
extern uint16_t DOSBOXID_VAR dosbox_id_baseio;
# define DOSBOX_IDPORT(x) (dosbox_id_baseio+(x))
#endif
#define DOSBOX_ID_INDEX (0U) /* R/W */
#define DOSBOX_ID_DATA (1U) /* R/W */
#define DOSBOX_ID_STATUS (2U) /* R */
#define DOSBOX_ID_COMMAND (2U) /* W */
/* bits 7-6: register select byte index
* bits 5-4: register byte index
* bit 1: error
* bit 0: busy */
/* DOSBOX_ID_STATUS */
#define DOSBOX_ID_STATUS_BUSY (0x01U)
#define DOSBOX_ID_STATUS_ERROR (0x02U)
#define DOSBOX_ID_STATUS_REGBYTE_SHIFT (4U)
#define DOSBOX_ID_STATUS_REGBYTE_MASK (0x03U << DOSBOX_ID_STATUS_REGBYTE_SHIFT)
#define DOSBOX_ID_STATUS_REGSEL_SHIFT (6U)
#define DOSBOX_ID_STATUS_REGSEL_MASK (0x03U << DOSBOX_ID_STATUS_REGSEL_SHIFT)
/* DOSBOX_ID_COMMAND */
#define DOSBOX_ID_CMD_RESET_LATCH (0x00U)
#define DOSBOX_ID_CMD_FLUSH_WRITE (0x01U)
#define DOSBOX_ID_CMD_PUSH_STATE (0x20U)
#define DOSBOX_ID_CMD_POP_STATE (0x21U)
#define DOSBOX_ID_CMD_DISCARD_STATE (0x22U)
#define DOSBOX_ID_CMD_DISCARD_ALL_STATE (0x23U)
#define DOSBOX_ID_CMD_CLEAR_ERROR (0xFEU)
#define DOSBOX_ID_CMD_RESET_INTERFACE (0xFFU)
/* DOSBOX_ID_DATA after reset */
#define DOSBOX_ID_RESET_DATA_CODE (0x0D05B0C5UL)
#define DOSBOX_ID_RESET_INDEX_CODE (0xAA55BB66UL)
/* DOSBOX_ID_INDEX */
#define DOSBOX_ID_REG_IDENTIFY (0x00000000UL)
#define DOSBOX_ID_REG_TEST (0x00000001UL)
#define DOSBOX_ID_REG_VERSION_STRING (0x00000002UL)
#define DOSBOX_ID_REG_VERSION_NUMBER (0x00000003UL)
#define DOSBOX_ID_REG_READ_EMTIME (0x00000004UL)
#define DOSBOX_ID_REG_DOSBOX_VERSION_MAJOR (0x00000005UL)
#define DOSBOX_ID_REG_DOSBOX_VERSION_MINOR (0x00000006UL)
#define DOSBOX_ID_REG_DOSBOX_VERSION_SUB (0x00000007UL)
#define DOSBOX_ID_REG_DOSBOX_PLATFORM_TYPE (0x00000008UL) /* a code describing the platform, see src/ints/bios.cpp */
#define DOSBOX_ID_REG_DOSBOX_MACHINE_TYPE (0x00000009UL) /* machine type code (MCH_* constant), see include/dosbox.h */
#define DOSBOX_ID_REG_DEBUG_OUT (0x0000DEB0UL)
#define DOSBOX_ID_REG_DEBUG_CLEAR (0x0000DEB1UL)
#define DOSBOX_ID_REG_USER_MOUSE_STATUS (0x00434D54UL) /* status (cursor capture, etc) */
# define DOSBOX_ID_REG_USER_MOUSE_STATUS_CAPTURE (0x00000001UL)
#define DOSBOX_ID_REG_USER_MOUSE_CURSOR (0x00434D55UL) /* screen coordinates, pixels */
#define DOSBOX_ID_REG_USER_MOUSE_CURSOR_NORMALIZED (0x00434D56UL) /* screen coordinates, normalized to 0...65535 for Windows 3.x */
#define DOSBOX_ID_REG_RELEASE_MOUSE_CAPTURE (0x0052434DUL) /* release mouse capture (W) / mouse capture status (R) */
#define DOSBOX_ID_REG_GET_VGA_SIZE (0x006845C0UL) /* size of the VGA screen */
#define DOSBOX_ID_REG_GET_WINDOW_SIZE (0x006845FFUL) /* size of the emulator window (to give USER_MOUSE_CURSOR meaning) */
#define DOSBOX_ID_REG_8042_KB_INJECT (0x00804200UL)
# define DOSBOX_ID_8042_KB_INJECT_KB (0x00UL << 8UL)
# define DOSBOX_ID_8042_KB_INJECT_AUX (0x01UL << 8UL)
# define DOSBOX_ID_8042_KB_INJECT_MOUSEBTN (0x08UL << 8UL)
# define DOSBOX_ID_8042_KB_INJECT_MOUSEMX (0x09UL << 8UL)
# define DOSBOX_ID_8042_KB_INJECT_MOUSEMY (0x0AUL << 8UL)
# define DOSBOX_ID_8042_KB_INJECT_MOUSESCRW (0x0BUL << 8UL)
#define DOSBOX_ID_REG_8042_KB_STATUS (0x00804201UL)
/* WARNING: bitfields may change over time! */
# define DOSBOX_ID_8042_KB_STATUS_LED_STATE_SHIFT (0UL)
# define DOSBOX_ID_8042_KB_STATUS_LED_STATE_MASK (0xFFUL << DOSBOX_ID_8042_KB_STATUS_LED_STATE_SHIFT)
# define DOSBOX_ID_8042_KB_STATUS_SCANSET_SHIFT (8UL)
# define DOSBOX_ID_8042_KB_STATUS_SCANSET_MASK (0x3UL << DOSBOX_ID_8042_KB_STATUS_SCANSET_SHIFT)
# define DOSBOX_ID_8042_KB_STATUS_RESET (0x1UL << 10UL)
# define DOSBOX_ID_8042_KB_STATUS_ACTIVE (0x1UL << 11UL)
# define DOSBOX_ID_8042_KB_STATUS_SCANNING (0x1UL << 12UL)
# define DOSBOX_ID_8042_KB_STATUS_AUXACTIVE (0x1UL << 13UL)
# define DOSBOX_ID_8042_KB_STATUS_SCHEDULED (0x1UL << 14UL)
# define DOSBOX_ID_8042_KB_STATUS_P60CHANGED (0x1UL << 15UL)
# define DOSBOX_ID_8042_KB_STATUS_AUXCHANGED (0x1UL << 16UL)
# define DOSBOX_ID_8042_KB_STATUS_CB_XLAT (0x1UL << 17UL)
# define DOSBOX_ID_8042_KB_STATUS_PS2_MOUSE_LBTN (0x1UL << 18UL)
# define DOSBOX_ID_8042_KB_STATUS_PS2_MOUSE_MBTN (0x1UL << 19UL)
# define DOSBOX_ID_8042_KB_STATUS_PS2_MOUSE_RBTN (0x1UL << 20UL)
# define DOSBOX_ID_8042_KB_STATUS_MOUSE_REPORTING (0x1UL << 21UL)
# define DOSBOX_ID_8042_KB_STATUS_MOUSE_STREAM_MODE (0x1UL << 22UL)
# define DOSBOX_ID_8042_KB_STATUS_MOUSE_LBTN (0x1UL << 23UL)
# define DOSBOX_ID_8042_KB_STATUS_MOUSE_RBTN (0x1UL << 24UL)
# define DOSBOX_ID_8042_KB_STATUS_MOUSE_MBTN (0x1UL << 25UL)
#define DOSBOX_ID_REG_INJECT_NMI (0x00808602UL)
#define DOSBOX_ID_REG_CPU_CYCLES (0x55504300UL) /* fixed cycle count, which may vary if max or auto */
#define DOSBOX_ID_REG_CPU_MAX_PERCENT (0x55504301UL) /* for max cycles, percentage from 0 to 100 */
#define DOSBOX_ID_REG_CPU_CYCLES_INFO (0x55504302UL) /* info about cycles, including fixed, auto, max */
# define DOSBOX_ID_REG_CPU_CYCLES_INFO_MODE_MASK (0xFUL << 0UL)
# define DOSBOX_ID_REG_CPU_CYCLES_INFO_FIXED (1UL << 0UL)
# define DOSBOX_ID_REG_CPU_CYCLES_INFO_MAX (2UL << 0UL)
# define DOSBOX_ID_REG_CPU_CYCLES_INFO_AUTO (3UL << 0UL)
#define DOSBOX_ID_REG_8237_INJECT_WRITE (0x00823700UL)
#define DOSBOX_ID_REG_8237_INJECT_READ (0x00823780UL)
#define DOSBOX_ID_REG_8259_INJECT_IRQ (0x00825900UL)
#define DOSBOX_ID_REG_8259_PIC_INFO (0x00825901UL)
#define DOSBOX_ID_REG_SCREENSHOT_TRIGGER (0x00C54010UL)
/* DOSBOX_ID_REG_SCREENSHOT_TRIGGER bitfield for writing */
# define DOSBOX_ID_SCREENSHOT_IMAGE (1UL << 0UL) /* trigger a screenshot. wait for vertical retrace, then read the register to check it happened */
# define DOSBOX_ID_SCREENSHOT_VIDEO (1UL << 1UL) /* toggle on/off video capture */
# define DOSBOX_ID_SCREENSHOT_WAVE (1UL << 2UL) /* toggle on/off WAVE capture */
/* DOSBOX_ID_REG_SCREENSHOT_TRIGGER readback */
# define DOSBOX_ID_SCREENSHOT_STATUS_IMAGE_IN_PROGRESS (1UL << 0UL) /* if set, DOSBox is prepared to write a screenshot on vertical retrace. will clear itself when it happens */
# define DOSBOX_ID_SCREENSHOT_STATUS_VIDEO_IN_PROGRESS (1UL << 1UL) /* if set, DOSBox is capturing video. */
# define DOSBOX_ID_SCREENSHOT_STATUS_WAVE_IN_PROGRESS (1UL << 2UL) /* if set, DOSBox is capturing WAVE audio */
# define DOSBOX_ID_SCREENSHOT_STATUS_NOT_ENABLED (1UL << 30UL) /* if set, DOSBox has not enabled this register. */
# define DOSBOX_ID_SCREENSHOT_STATUS_NOT_AVAILABLE (1UL << 31UL) /* if set, DOSBox was compiled without screenshot/video support (C_SSHOT not defined) */
#define DOSBOX_ID_REG_DOS_KERNEL_STATUS (0x4B6F4400UL)
#define DOSBOX_ID_REG_DOS_KERNEL_CODEPAGE (0x4B6F4401UL)
#define DOSBOX_ID_REG_DOS_KERNEL_COUNTRY (0x4B6F4402UL)
#define DOSBOX_ID_REG_DOS_KERNEL_VERSION_MAJOR (0x4B6F4403UL)
#define DOSBOX_ID_REG_DOS_KERNEL_VERSION_MINOR (0x4B6F4404UL)
#define DOSBOX_ID_REG_DOS_KERNEL_ERROR_CODE (0x4B6F4405UL)
#define DOSBOX_ID_REG_DOS_KERNEL_BOOT_DRIVE (0x4B6F4406UL)
#define DOSBOX_ID_REG_DOS_KERNEL_CURRENT_DRIVE (0x4B6F4407UL)
#define DOSBOX_ID_REG_DOS_KERNEL_LFN_STATUS (0x4B6F4408UL)
#define DOSBOX_ID_REG_MIXER_QUERY (0x5158494DUL)
#define DOSBOX_ID_REG_SET_WATCHDOG (0x57415444UL)
/* return value of DOSBOX_ID_REG_IDENTIFY */
#define DOSBOX_ID_IDENTIFICATION (0xD05B0740UL)
#ifndef DOSBOX_INCLUDE
static inline void dosbox_id_reset_latch() {
outp(DOSBOX_IDPORT(DOSBOX_ID_COMMAND),DOSBOX_ID_CMD_RESET_LATCH);
}
static inline void dosbox_id_reset_interface() {
outp(DOSBOX_IDPORT(DOSBOX_ID_COMMAND),DOSBOX_ID_CMD_RESET_INTERFACE);
}
static inline void dosbox_id_flush_write() {
outp(DOSBOX_IDPORT(DOSBOX_ID_COMMAND),DOSBOX_ID_CMD_FLUSH_WRITE);
}
static inline uint8_t dosbox_id_read_data_nrl_u8() {
return inp(DOSBOX_IDPORT(DOSBOX_ID_DATA));
}
static inline void dosbox_id_write_data_nrl_u8(const unsigned char c) {
outp(DOSBOX_IDPORT(DOSBOX_ID_DATA),c);
}
static inline void dosbox_id_push_state() {
outp(DOSBOX_IDPORT(DOSBOX_ID_COMMAND),DOSBOX_ID_CMD_PUSH_STATE);
}
static inline void dosbox_id_pop_state() {
outp(DOSBOX_IDPORT(DOSBOX_ID_COMMAND),DOSBOX_ID_CMD_POP_STATE);
}
static inline void dosbox_id_discard_state() {
outp(DOSBOX_IDPORT(DOSBOX_ID_COMMAND),DOSBOX_ID_CMD_DISCARD_STATE);
}
static inline void dosbox_id_discard_all_state() {
outp(DOSBOX_IDPORT(DOSBOX_ID_COMMAND),DOSBOX_ID_CMD_DISCARD_ALL_STATE);
}
uint32_t dosbox_id_read_regsel();
void dosbox_id_write_regsel(const uint32_t reg);
uint32_t dosbox_id_read_data_nrl();
uint32_t dosbox_id_read_data();
int dosbox_id_reset();
uint32_t dosbox_id_read_identification();
int probe_dosbox_id();
int probe_dosbox_id_version_string(char *buf,size_t len);
void dosbox_id_write_data_nrl(const uint32_t val);
void dosbox_id_write_data(const uint32_t val);
void dosbox_id_debug_message(const char *str);
#endif
#ifdef __cplusplus
}
#endif
#endif /* __DOSLIB_HW_IDE_DOSBOXIGLIB_H */

View File

@ -44,7 +44,7 @@
#include <stdlib.h>
#include "zlib.h"
#if defined(__APPLE__) || defined(USE_FILE32API)
#if defined(__APPLE__) || defined(USE_FILE32API) || defined(OS2)
#define fopen64 fopen
#define ftello64 ftell
#define fseeko64 fseek

View File

@ -25,18 +25,31 @@
#define MEM_PAGESIZE (4096U)
typedef uint8_t const * ConstHostPt; /* host (virtual) memory address aka ptr */
/* HostPt and ConstHostPt is for holding linear addresses within this emulator i.e. a normal pointer.
*
* PhysPt is for 32-bit physical memory addresses within the emulation environment.
* PhysPt64 is for 64-bit physical memory addresses for code and device/memory emulation that supports addresses above 4GB.
* LinearPt is a 32-bit linear memory address from the point of view of the CPU execution context, meaning the linear address
* of the code prior to translation through the page tables to physical addresses.
* RealPt is a 32-bit value that holds segment in the upper 16 bits, offset in the lower 16 bits.
*
* Please do not mix these types up in the code, even if they happen to have the same underlying data types */
typedef uint8_t const * ConstHostPt; /* host (virtual) memory address aka ptr */
typedef uint8_t * HostPt; /* host (virtual) memory address aka ptr */
typedef uint32_t PhysPt; /* guest physical memory pointer */
typedef uint32_t LinearPt; /* guest linear memory address */
typedef uint32_t RealPt; /* guest real-mode memory address (16:16 -> seg:offset) */
typedef uint16_t SegmentVal; /* guest segment value */
typedef uint32_t PhysPt; /* guest physical memory pointer */
typedef uint32_t LinearPt; /* guest linear memory address */
typedef uint32_t RealPt; /* guest real-mode memory address (16:16 -> seg:offset) */
typedef uint16_t SegmentVal; /* guest segment value */
typedef uint32_t PageNum; /* page frame number */
typedef int32_t MemHandle;
typedef uint64_t PhysPt64; /* guest physical memory pointer */
extern HostPt MemBase;
typedef int32_t MemHandle;
extern HostPt MemBase;
extern size_t MemSize;
HostPt GetMemBase(void);
bool MEM_A20_Enabled(void);
@ -46,6 +59,8 @@ void MEM_A20_Enable(bool enabled);
Bitu MEM_FreeTotal(void); //Free 4 kb pages
Bitu MEM_FreeLargest(void); //Largest free 4 kb pages block
Bitu MEM_TotalPages(void); //Total amount of 4 kb pages
Bitu MEM_TotalPagesAt4GB(void); //Total amount of 4 kb pages starting at 4GB
Bitu MEM_ConventionalPages(void);
Bitu MEM_AllocatedPages(MemHandle handle); // amount of allocated pages of handle
MemHandle MEM_AllocatePages(Bitu pages,bool sequence);
MemHandle MEM_AllocatePages_A20_friendly(Bitu pages,bool sequence);
@ -56,6 +71,12 @@ bool MEM_ReAllocatePages(MemHandle & handle,Bitu pages,bo
MemHandle MEM_NextHandle(MemHandle handle);
MemHandle MEM_NextHandleAt(MemHandle handle,Bitu where);
uint32_t MEM_HardwareAllocate(const char *name,uint32_t sz);
static constexpr bool build_memlimit_32bit(void) {
return sizeof(void*) < 8;
}
/*
The following six functions are used everywhere in the end so these should be changed for
Working on big or little endian machines
@ -168,56 +189,97 @@ static INLINE uint32_t var_read(uint32_t * var) {
/* The Following six functions are slower but they recognize the paged memory system */
uint8_t mem_readb(const PhysPt address);
uint16_t mem_readw(const PhysPt address);
uint32_t mem_readd(const PhysPt address);
uint8_t mem_readb(const LinearPt address);
uint16_t mem_readw(const LinearPt address);
uint32_t mem_readd(const LinearPt address);
void mem_writeb(const PhysPt address,const uint8_t val);
void mem_writew(const PhysPt address,const uint16_t val);
void mem_writed(const PhysPt address,const uint32_t val);
void mem_writeb(const LinearPt address,const uint8_t val);
void mem_writew(const LinearPt address,const uint16_t val);
void mem_writed(const LinearPt address,const uint32_t val);
void phys_writes(PhysPt addr, const char* string, Bitu length);
/* WARNING: These will cause a segfault or out of bounds access IF
* addr is beyond the end of memory */
/* 2024/12/22: Looking across the DOSBox-X codebase, these functions
* aren't used TOO often, and where they are used, some
* code has memory range checks anyway. So it doesn't hurt
* performance very much if at all to just put the range
* check here instead, in order not to segfault if somehow
* the address given is beyond end of system memory. --J.C.
*
* There is one more important detail here. These functions
* take only a 32-bit physical address. Which means if more
* than 32 address bits are enabled on the CPU and the OS
* has PSE/PAE page tables enabled, these functions will not
* be able to reach above 4GB. Given how memory will be
* segmented between the 'below 4GB' and 'above 4GB' regions,
* if emulating 4GB or more, that is perfectly fine. S3 XGA
* and ISA DMA emulation will never reach above 4GB anyway.
*
* The way the range check is done is ideal for performance,
* yet may fail to work correctly if MemSize is very close
* to zero, low enough that subtraction would cause it to
* wrap back around to the largest possible value. The code,
* when MemBase is a valid pointer, will never set MemSize
* that small. */
/* NTS: Technically these phys_ functions are misnamed. They don't read/write
* all physically addressable memory and MMIO attached to the CPU. These
* functions can only address system RAM. So perhaps they should be named
* physmem_read/physmem_write instead and a physmmio_read/physmmio_write
* function should be added that addresses the "physical" memory addresses
* accessible to the CPU. That hackery in the debugger to dump by physical
* memory addresse could be a useful guide on how to do that. --J.C. */
static INLINE void phys_writeb(const PhysPt addr,const uint8_t val) {
host_writeb(MemBase+addr,val);
if (addr < MemSize)
host_writeb(MemBase+addr,val);
}
static INLINE void phys_writew(const PhysPt addr,const uint16_t val) {
host_writew(MemBase+addr,val);
if (addr < (MemSize-1u))
host_writew(MemBase+addr,val);
}
static INLINE void phys_writed(const PhysPt addr,const uint32_t val) {
host_writed(MemBase+addr,val);
if (addr < (MemSize-3u))
host_writed(MemBase+addr,val);
}
static INLINE uint8_t phys_readb(const PhysPt addr) {
return host_readb(MemBase+addr);
if (addr < MemSize)
return host_readb(MemBase+addr);
else
return 0xFF;
}
static INLINE uint16_t phys_readw(const PhysPt addr) {
return host_readw(MemBase+addr);
if (addr < (MemSize-1u))
return host_readw(MemBase+addr);
else
return 0xFFFFu;
}
static INLINE uint32_t phys_readd(const PhysPt addr) {
return host_readd(MemBase+addr);
if (addr < (MemSize-3u))
return host_readd(MemBase+addr);
else
return 0xFFFFFFFFu;
}
/* These don't check for alignment, better be sure it's correct */
void MEM_BlockWrite(PhysPt pt, const void *data, size_t size);
void MEM_BlockRead(PhysPt pt,void * data,Bitu size);
void MEM_BlockWrite32(PhysPt pt,void * data,Bitu size);
void MEM_BlockRead32(PhysPt pt,void * data,Bitu size);
void MEM_BlockCopy(PhysPt dest,PhysPt src,Bitu size);
void MEM_StrCopy(PhysPt pt,char * data,Bitu size);
void MEM_BlockWrite(LinearPt pt, const void *data, size_t size);
void MEM_BlockRead(LinearPt pt,void * data,Bitu size);
void MEM_BlockWrite32(LinearPt pt,void * data,Bitu size);
void MEM_BlockRead32(LinearPt pt,void * data,Bitu size);
void MEM_BlockCopy(LinearPt dest,LinearPt src,Bitu size);
void MEM_StrCopy(LinearPt pt,char * data,Bitu size);
void mem_memcpy(PhysPt dest,PhysPt src,Bitu size);
Bitu mem_strlen(PhysPt pt);
void mem_strcpy(PhysPt dest,PhysPt src);
void mem_memcpy(LinearPt dest,LinearPt src,Bitu size);
Bitu mem_strlen(LinearPt pt);
void mem_strcpy(LinearPt dest,LinearPt src);
/* The following functions are all shortcuts to the above functions using physical addressing */
static inline constexpr PhysPt PhysMake(const uint16_t seg,const uint16_t off) {
return ((PhysPt)seg << 4U) + (PhysPt)off;
static inline constexpr LinearPt PhysMake(const uint16_t seg,const uint16_t off) {
return ((LinearPt)seg << 4U) + (LinearPt)off;
}
static inline constexpr uint16_t RealSeg(const RealPt pt) {
@ -228,8 +290,8 @@ static inline constexpr uint16_t RealOff(const RealPt pt) {
return (uint16_t)(pt & 0xffffu);
}
static inline constexpr PhysPt Real2Phys(const RealPt pt) {
return (((PhysPt)RealSeg(pt) << 4U) + (PhysPt)RealOff(pt));
static inline constexpr LinearPt Real2Phys(const RealPt pt) {
return (((LinearPt)RealSeg(pt) << 4U) + (LinearPt)RealOff(pt));
}
static inline constexpr RealPt RealMake(const uint16_t seg,const uint16_t off) {
@ -237,11 +299,11 @@ static inline constexpr RealPt RealMake(const uint16_t seg,const uint16_t off) {
}
/* convert physical address to 4:16 real pointer (example: 0xABCDE -> 0xA000:0xBCDE) */
static inline constexpr RealPt PhysToReal416(const PhysPt phys) {
static inline constexpr RealPt PhysToReal416(const LinearPt phys) {
return RealMake((uint16_t)((phys >> 4U) & 0xF000U),(uint16_t)(phys & 0xFFFFU));
}
static inline constexpr PhysPt RealVecAddress(const uint8_t vec) {
static inline constexpr LinearPt RealVecAddress(const uint8_t vec) {
return ((unsigned int)vec << 2U);
}
@ -276,9 +338,21 @@ static INLINE void RealSetVec(const uint8_t vec,const RealPt pt) {
}
static INLINE void RealSetVec(const uint8_t vec,const RealPt pt,RealPt &old) {
const PhysPt addr = RealVecAddress(vec);
const LinearPt addr = RealVecAddress(vec);
old = mem_readd(addr);
mem_writed(addr,pt);
}
uint8_t physdev_readb(const PhysPt64 addr);
uint16_t physdev_readw(const PhysPt64 addr);
uint32_t physdev_readd(const PhysPt64 addr);
void physdev_writeb(const PhysPt64 addr,const uint8_t val);
void physdev_writew(const PhysPt64 addr,const uint16_t val);
void physdev_writed(const PhysPt64 addr,const uint32_t val);
uint32_t MEM_get_address_bits();
uint32_t MEM_get_address_bits4GB();
void MEM_ResetPageHandler_Unmapped(Bitu phys_page, Bitu pages);
#endif

View File

@ -58,6 +58,7 @@ struct DB_Midi {
DB_Midi() {}
};
extern bool roland_gs_sysex;
extern DB_Midi midi;
#endif

View File

@ -20,6 +20,16 @@
#ifndef DOSBOX_MIXER_H
#define DOSBOX_MIXER_H
/*
#ifdef C_SDL2
#define SDL_LockAudio __DO_NOT_USE__1
#define SDL_UnlockAudio __DO_NOT_USE__2
#define SDL_PauseAudio __DO_NOT_USE__3
#define SDL_CloseAudio __DO_NOT_USE__4
#define SDL_OpenAudio __DO_NOT_USE__5
#endif
*/
typedef void (*MIXER_MixHandler)(uint8_t * sampdate,uint32_t len);
typedef void (*MIXER_Handler)(Bitu len);

View File

@ -27,7 +27,7 @@
#define MAX_PATH PATH_MAX
#endif
#ifdef WIN32
#if defined(WIN32) || defined(OS2)
# define BYTESEX_LITTLE
# define _G_DIR_SEPARATOR '\\'
#elif defined(EMSCRIPTEN)

View File

@ -23,10 +23,7 @@
#include <exception>
#include "mem.h"
// disable this to reduce the size of the TLB
// NOTE: does not work with the dynamic core (dynrec is fine)
#define USE_FULL_TLB
#include "bitop.h"
class PageHandler;
class MEM_CalloutObject;
@ -45,6 +42,8 @@ static const Bitu MEMMASK_ISA_20BIT = 0x000000FFU; /* ISA 20-bit decode (20 - 12
static const Bitu MEMMASK_ISA_24BIT = 0x00000FFFU; /* ISA 24-bit decode (24 - 12 = 12) */
static const Bitu MEMMASK_FULL = 0x000FFFFFU; /* full 32-bit decode (32 - 12 = 20) */
extern uint8_t enable_pse_extmask;
/* WARNING: Will only produce a correct result if 'x' is a nonzero power of two.
* For use with MEMMASK_Combine. 'x' is in units of PAGES not BYTES.
*/
@ -58,44 +57,43 @@ static inline Bitu MEMMASK_Combine(const Bitu a,const Bitu b) {
return a & b;
}
#define MEM_PAGE_SIZE (4096)
#define MEM_PAGE_SIZE (4096)
#define XMS_START (0x110)
#if defined(USE_FULL_TLB)
#define TLB_SIZE (1024*1024)
#else
#define TLB_SIZE 65536 // This must a power of 2 and greater than LINK_START
#define BANK_SHIFT 28
#define BANK_MASK 0xffff // always the same as TLB_SIZE-1?
#define TLB_BANKS ((1024*1024/TLB_SIZE)-1)
#endif
#define PFLAG_READABLE 0x1u
#define PFLAG_WRITEABLE 0x2u
#define PFLAG_HASROM 0x4u
#define PFLAG_HASCODE32 0x8u //Page contains dynamic code
#define PFLAG_NOCODE 0x10u //No dynamic code can be generated here
#define PFLAG_INIT 0x20u //No dynamic code can be generated here
#define PFLAG_HASCODE16 0x40u //Page contains 16-bit dynamic code
#define PFLAG_HASCODE32 0x8u //Page contains dynamic code
#define PFLAG_NOCODE 0x10u //No dynamic code can be generated here
#define PFLAG_INIT 0x20u //No dynamic code can be generated here
#define PFLAG_HASCODE16 0x40u //Page contains 16-bit dynamic code
#define PFLAG_HASCODE (PFLAG_HASCODE32|PFLAG_HASCODE16)
#define LINK_START ((1024+64)/4) //Start right after the HMA
#define LINK_START ((1024+64)/4) //Start right after the HMA
//Allow 128 mb of memory to be linked
#define PAGING_LINKS (128*1024/4)
#define PAGING_LINKS (128*1024/4)
/* NTS: Despite that all devices respond to these page handlers, all addresses are still linear addresses.
* Devices that need physical memory addresses will need to call PAGING_GetPhysicalAddress() to translate
* linear to physical, or PAGING_GetPhysicalAddress64() if the device supports responding to addresses
* above 4GB. This sounds crazy, but this is one aspect of emulation inherited from DOSBox SVN and I
* don't think it's wise to break code to change it. */
class PageHandler {
public:
PageHandler(Bitu flg) : flags(flg) {}
virtual ~PageHandler(void) { }
PageHandler(void) : flags(0) { }
virtual uint8_t readb(PhysPt addr);
virtual uint16_t readw(PhysPt addr);
virtual uint32_t readd(PhysPt addr);
virtual void writeb(PhysPt addr,uint8_t val);
virtual void writew(PhysPt addr,uint16_t val);
virtual void writed(PhysPt addr,uint32_t val);
virtual HostPt GetHostReadPt(Bitu phys_page);
virtual HostPt GetHostWritePt(Bitu phys_page);
virtual HostPt GetHostReadPt(PageNum phys_page);
virtual HostPt GetHostWritePt(PageNum phys_page);
virtual bool readb_checked(PhysPt addr,uint8_t * val);
virtual bool readw_checked(PhysPt addr,uint16_t * val);
virtual bool readd_checked(PhysPt addr,uint32_t * val);
@ -103,19 +101,6 @@ public:
virtual bool writew_checked(PhysPt addr,uint16_t val);
virtual bool writed_checked(PhysPt addr,uint32_t val);
#if 0//ENABLE IF PORTING ADDITIONAL CODE WRITTEN AGAINST THE OLDER PAGE HANDLER readb/writeb PROTYPE.
// DEPRECATED. THIS IS HERE TO MAKE ANY DERIVED CLASS NOT YET UPDATED BLOW UP WITH A COMPILER ERROR.
// FIXME: DOES VISUAL STUDIO 2017 HAVE ANY PROBLEMS WITH THIS? CLANG/LLVM?
virtual void writeb(PhysPt addr,Bitu val) final = delete;
virtual void writew(PhysPt addr,Bitu val) final = delete;
virtual void writed(PhysPt addr,Bitu val) final = delete;
virtual void writeb_checked(PhysPt addr,Bitu val) final = delete;
virtual void writew_checked(PhysPt addr,Bitu val) final = delete;
virtual void writed_checked(PhysPt addr,Bitu val) final = delete;
#endif
PageHandler(void) : flags(0) { }
Bitu flags;
Bitu getFlags() const {
return flags;
}
@ -123,6 +108,7 @@ public:
flags = flagsNew;
}
Bitu flags;
private:
PageHandler(const PageHandler&);
@ -139,40 +125,40 @@ private:
* move on to the next device or mark the I/O port as empty. */
class MEM_CalloutObject {
public:
MEM_CalloutObject() {};
void InvalidateCachedHandlers(void);
MEM_CalloutObject() {};
void InvalidateCachedHandlers(void);
void Install(Bitu page,Bitu pagemask/*MEMMASK_ISA_24BIT, etc.*/,MEM_CalloutHandler *handler);
void Uninstall();
public:
bool installed = false;
Bitu mem_mask = 0xFFFFFFFF;
Bitu range_mask = 0;
Bitu alias_mask = 0xFFFFFFFF;
unsigned int getcounter = 0;
MEM_CalloutHandler *m_handler = NULL;
Bitu mem_mask = 0xFFFFFFFF;
Bitu range_mask = 0;
Bitu alias_mask = 0xFFFFFFFF;
unsigned int getcounter = 0;
MEM_CalloutHandler *m_handler = NULL;
Bitu m_base = 0;
bool alloc = false;
bool alloc = false;
public:
inline bool MatchPage(const Bitu p) {
/* (p & io_mask) == (m_port & io_mask) but this also works.
* apparently modern x86 processors are faster at addition/subtraction than bitmasking.
* for this to work, m_port must be a multiple of the I/O range. For example, if the I/O
* range is 16 ports, then m_port must be a multiple of 16. */
return ((p - m_base) & mem_mask) == 0;
}
inline bool isInstalled(void) {
return installed;
}
inline bool MatchPage(const Bitu p) {
/* (p & io_mask) == (m_port & io_mask) but this also works.
* apparently modern x86 processors are faster at addition/subtraction than bitmasking.
* for this to work, m_port must be a multiple of the I/O range. For example, if the I/O
* range is 16 ports, then m_port must be a multiple of 16. */
return ((p - m_base) & mem_mask) == 0;
}
inline bool isInstalled(void) {
return installed;
}
};
enum MEM_Type_t {
MEM_TYPE_NONE=0,
MEM_TYPE_MIN=1,
MEM_TYPE_ISA=1,
MEM_TYPE_PCI,
MEM_TYPE_MB,
MEM_TYPE_NONE=0,
MEM_TYPE_MIN=1,
MEM_TYPE_ISA=1,
MEM_TYPE_PCI,
MEM_TYPE_MB,
MEM_TYPE_MAX
MEM_TYPE_MAX
};
void MEM_InitCallouts(void);
@ -209,12 +195,11 @@ void PAGING_SetDirBase(Bitu cr3);
void PAGING_InitTLB(void);
void PAGING_ClearTLB(void);
void PAGING_LinkPage(Bitu lin_page,Bitu phys_page);
void PAGING_LinkPage_ReadOnly(Bitu lin_page,Bitu phys_page);
void PAGING_UnlinkPages(Bitu lin_page,Bitu pages);
void PAGING_LinkPage(PageNum lin_page,PageNum phys_page);
void PAGING_UnlinkPages(PageNum lin_page,PageNum pages);
/* This maps the page directly, only use when paging is disabled */
void PAGING_MapPage(Bitu lin_page,Bitu phys_page);
bool PAGING_MakePhysPage(Bitu & page);
void PAGING_MapPage(PageNum lin_page,PageNum phys_page);
bool PAGING_MakePhysPage(PageNum &page);
void MEM_SetLFB(Bitu page, Bitu pages, PageHandler *handler, PageHandler *mmiohandler);
void MEM_SetPageHandler(Bitu phys_page, Bitu pages, PageHandler * handler);
@ -223,91 +208,182 @@ void MEM_SetPageHandler(Bitu phys_page, Bitu pages, PageHandler * handler);
#ifdef _MSC_VER
#pragma pack (1)
#endif
struct X86_PageEntryBlock{
/* Page table TLB. At some point, 64-bit builds will have 64-bit TLB type */
typedef uint32_t tlbentry_t;
static constexpr size_t tlbentry_bits = bitop::type_bits<tlbentry_t>();
/* bits 31-30: ACCESS_* contants */
static constexpr tlbentry_t PHYSPAGE_ACCESS_BITS_SHIFT = tlbentry_bits - 2u;
static constexpr tlbentry_t PHYSPAGE_ACCESS_BITS = bitop::bitcount2masklsb<2u,PHYSPAGE_ACCESS_BITS_SHIFT,tlbentry_t>();
/* bit 29: dirty bit */
static constexpr tlbentry_t PHYSPAGE_DIRTY_SHIFT = tlbentry_bits - 3u;
static constexpr tlbentry_t PHYSPAGE_DIRTY = bitop::bit2mask<PHYSPAGE_DIRTY_SHIFT,tlbentry_t>();
/* bits 28: not defined */
/* bits 27-0: physical page. 40-bit addresses, that's as far as we can go, and the limits of PSE anyway */
static constexpr tlbentry_t PHYSPAGE_ADDR =
build_memlimit_32bit() ?
bitop::bitcount2masklsb<20,0,tlbentry_t>() : /* 32-bit builds limited to 1GB no point emulating past 4GB (20+12) = 32 */
bitop::bitcount2masklsb<28,0,tlbentry_t>(); /* 64-bit builds allowed up to 1TB (28+12) = 40 */
struct X86_PageEntryBlock{ // Page Table Entry, though it keeps the PageEntryBlock name to avoid breaking all this code
#ifdef WORDS_BIGENDIAN
uint32_t base:20;
uint32_t avl:3;
uint32_t g:1;
uint32_t pat:1;
uint32_t d:1;
uint32_t a:1;
uint32_t pcd:1;
uint32_t pwt:1;
uint32_t us:1;
uint32_t wr:1;
uint32_t p:1;
uint32_t base:20; // [31:12]
uint32_t avl:3; // [11: 8]
uint32_t g:1; // [ 8: 8]
uint32_t pat:1; // [ 7: 7]
uint32_t d:1; // [ 6: 6]
uint32_t a:1; // [ 5: 5]
uint32_t pcd:1; // [ 4: 4]
uint32_t pwt:1; // [ 3: 3]
uint32_t us:1; // [ 2: 2]
uint32_t wr:1; // [ 1: 1]
uint32_t p:1; // [ 0: 0]
#else
uint32_t p:1;
uint32_t wr:1;
uint32_t us:1;
uint32_t pwt:1;
uint32_t pcd:1;
uint32_t a:1;
uint32_t d:1;
uint32_t pat:1;
uint32_t g:1;
uint32_t avl:3;
uint32_t base:20;
uint32_t p:1; // [ 0: 0]
uint32_t wr:1; // [ 1: 1] R/W
uint32_t us:1; // [ 2: 2] U/S
uint32_t pwt:1; // [ 3: 3]
uint32_t pcd:1; // [ 4: 4]
uint32_t a:1; // [ 5: 5]
uint32_t d:1; // [ 6: 6]
uint32_t pat:1; // [ 7: 7]
uint32_t g:1; // [ 8: 8]
uint32_t avl:3; // [11: 9]
uint32_t base:20; // [31:12]
#endif
} GCC_ATTRIBUTE(packed);
struct X86_PageDirEntryBlock{
#ifdef WORDS_BIGENDIAN
uint32_t base:20; // [31:12]
uint32_t avl:3; // [11: 9]
uint32_t g:1; // [ 8: 8]
uint32_t ps:1; // [ 7: 7]
uint32_t avl6:1; // [ 6: 6]
uint32_t a:1; // [ 5: 5]
uint32_t pcd:1; // [ 4: 4]
uint32_t pwt:1; // [ 3: 3]
uint32_t us:1; // [ 2: 2]
uint32_t wr:1; // [ 1: 1]
uint32_t p:1; // [ 0: 0]
#else
uint32_t p:1; // [ 0: 0]
uint32_t wr:1; // [ 1: 1] R/W
uint32_t us:1; // [ 2: 2] U/S
uint32_t pwt:1; // [ 3: 3]
uint32_t pcd:1; // [ 4: 4]
uint32_t a:1; // [ 5: 5]
uint32_t avl6:1; // [ 6: 6] See Note [*1], this bit changed meaning between the 486 and Pentium!
uint32_t ps:1; // [ 7: 7] Page Size Extension (Pentium), even though Intel didn't document it until later
uint32_t g:1; // [ 8: 8]
uint32_t avl:3; // [11: 9]
uint32_t base:20; // [31:12]
#endif
} GCC_ATTRIBUTE(packed);
/* Note [*1]: The i386 defined just the Page Table Entry to represent the PDE and PTE, because they had the same layout.
*
* The i486 lists the PDE and PTE, even though they have the same bit layout.
*
* The Pentium however, seems to have decided that bit 6 of the PDE is no longer the "dirty" bit and is redefined as AVL.
* Although, if PSE is enabled and the PDE is the 4MB format, bit 6 is once again a "dirty" but.
*
* Ref: [http://hackipedia.org/browse.cgi/Computer/Platform/PC%2c%20IBM%20compatible/CPU/80386/Intel/386DX%20Microprocessor%20Programmer%27s%20Reference%20Manual%20%281990%29%2epdf]
* Ref: [http://hackipedia.org/browse.cgi/Computer/Platform/PC%2c%20IBM%20compatible/CPU/80486/Intel/i486%20Microprocessor%20%281989%2d04%29%2epdf]
* Ref: [http://hackipedia.org/browse.cgi/Computer/Platform/PC%2c%20IBM%20compatible/CPU/Pentium/Pentium%20Processor%20Family%20Developer%27s%20Manual%20%2d%20Volume%203%3a%20Architecture%20and%20Programming%20Manual%20%281995%2d07%29%2epdf] */
struct X86_PageDir4MBEntryBlock{ // PSE=1 and PageDirEntryBlock PS=1
#ifdef WORDS_BIGENDIAN
uint32_t base22:10; // [31:22] bits 31:22
uint32_t reserved:1; // [21:21]
uint32_t base32:8; // [20:13] bits 39:32 if PSE36
uint32_t pat:1; // [12:12]
uint32_t avl:3; // [11: 9]
uint32_t g:1; // [ 8: 8]
uint32_t ps:1; // [ 7: 7] PS=1, or else this is just X86_PageDirEntryBlock
uint32_t d:1; // [ 6: 6]
uint32_t a:1; // [ 5: 5]
uint32_t pcd:1; // [ 4: 4]
uint32_t pwt:1; // [ 3: 3]
uint32_t us:1; // [ 2: 2] U/S
uint32_t wr:1; // [ 1: 1] R/W
uint32_t p:1; // [ 0: 0]
#else
uint32_t p:1; // [ 0: 0]
uint32_t wr:1; // [ 1: 1] R/W
uint32_t us:1; // [ 2: 2] U/S
uint32_t pwt:1; // [ 3: 3]
uint32_t pcd:1; // [ 4: 4]
uint32_t a:1; // [ 5: 5]
uint32_t d:1; // [ 6: 6]
uint32_t ps:1; // [ 7: 7] PS=1, or else this is just X86_PageDirEntryBlock
uint32_t g:1; // [ 8: 8]
uint32_t avl:3; // [11: 9]
uint32_t pat:1; // [12:12]
uint32_t base32:8; // [20:13] bits 39:32 if PSE36
uint32_t reserved:1; // [21:21]
uint32_t base22:10; // [31:22] bits 31:22
#endif
inline PageNum getBase(const LinearPt lin_page) const {
return PageNum(base22 << PageNum(10u)) +
PageNum((base32 & enable_pse_extmask) << PageNum(20u)) +
PageNum(lin_page & 0x3FFu);
}
} GCC_ATTRIBUTE(packed);
#ifdef _MSC_VER
#pragma pack ()
#endif
union X86PageEntry {
uint32_t load;
X86_PageEntryBlock block;
X86_PageDirEntryBlock dirblock;
X86_PageDir4MBEntryBlock dirblock4mb; // PSE=1 and PS=1
template <const uint8_t bitpos/*for constant compile time optimization*/> inline uint8_t accbits(void) const {
if (bitpos == 0)
return (load >> 1u) & 3u; /* ex: (load >> 1u) & 0x3 -> U/S:R/W->[1:0]*/
else /* usually 2 */
return (load << (bitpos - 1u)) & (3u << bitpos); /* ex: (load << 1u) & 0xc -> U/S:R/W->[3:2]*/
}
};
#if !defined(USE_FULL_TLB)
typedef struct {
HostPt read;
HostPt write;
PageHandler * readhandler;
PageHandler * writehandler;
uint32_t phys_page;
} tlb_entry;
#endif
static_assert( sizeof(X86PageEntry) == 4, "oops" );
struct PagingBlock {
Bitu cr3;
Bitu cr2;
bool wp;
uint32_t cr3;
uint32_t cr2;
struct {
Bitu page;
PageNum page;
PhysPt addr;
} base;
#if defined(USE_FULL_TLB)
struct {
HostPt read[TLB_SIZE];
HostPt write[TLB_SIZE];
PageHandler * readhandler[TLB_SIZE];
PageHandler * writehandler[TLB_SIZE];
uint32_t phys_page[TLB_SIZE];
PageHandler *readhandler[TLB_SIZE];
PageHandler *writehandler[TLB_SIZE];
tlbentry_t phys_page[TLB_SIZE];
} tlb;
#else
tlb_entry tlbh[TLB_SIZE];
tlb_entry *tlbh_banks[TLB_BANKS];
#endif
struct {
Bitu used;
uint32_t entries[PAGING_LINKS];
uint32_t used;
uint32_t entries[PAGING_LINKS]; /* does not require more than 32 bits */
} links;
struct {
Bitu used;
uint32_t entries[PAGING_LINKS];
uint32_t used;
uint32_t entries[PAGING_LINKS]; /* does not require more than 32 bits */
} ur_links;
struct {
Bitu used;
uint32_t entries[PAGING_LINKS];
uint32_t used;
uint32_t entries[PAGING_LINKS]; /* does not require more than 32 bits */
} krw_links;
struct {
Bitu used;
uint32_t entries[PAGING_LINKS];
uint32_t used;
uint32_t entries[PAGING_LINKS]; /* does not require more than 32 bits */
} kr_links; // WP-only
uint32_t firstmb[LINK_START];
uint32_t firstmb[LINK_START]; /* does not use flags and does not reach beyond 1MB, does not need more than 32 bits */
bool enabled;
bool wp;
};
extern PagingBlock paging;
@ -318,89 +394,57 @@ PageHandler * MEM_GetPageHandler(const Bitu phys_page);
/* Unaligned address handlers */
uint16_t mem_unalignedreadw(const PhysPt address);
uint32_t mem_unalignedreadd(const PhysPt address);
void mem_unalignedwritew(const PhysPt address,const uint16_t val);
void mem_unalignedwrited(const PhysPt address,const uint32_t val);
uint16_t mem_unalignedreadw(const LinearPt address);
uint32_t mem_unalignedreadd(const LinearPt address);
void mem_unalignedwritew(const LinearPt address,const uint16_t val);
void mem_unalignedwrited(const LinearPt address,const uint32_t val);
bool mem_unalignedreadw_checked(const PhysPt address,uint16_t * const val);
bool mem_unalignedreadd_checked(const PhysPt address,uint32_t * const val);
bool mem_unalignedwritew_checked(const PhysPt address,uint16_t const val);
bool mem_unalignedwrited_checked(const PhysPt address,uint32_t const val);
bool mem_unalignedreadw_checked(const LinearPt address,uint16_t * const val);
bool mem_unalignedreadd_checked(const LinearPt address,uint32_t * const val);
bool mem_unalignedwritew_checked(const LinearPt address,uint16_t const val);
bool mem_unalignedwrited_checked(const LinearPt address,uint32_t const val);
#if defined(USE_FULL_TLB)
static INLINE HostPt get_tlb_read(const PhysPt address) {
static INLINE HostPt get_tlb_read(const LinearPt address) {
return paging.tlb.read[address>>12];
}
static INLINE HostPt get_tlb_write(const PhysPt address) {
static INLINE HostPt get_tlb_write(const LinearPt address) {
return paging.tlb.write[address>>12];
}
static INLINE PageHandler* get_tlb_readhandler(const PhysPt address) {
static INLINE PageHandler* get_tlb_readhandler(const LinearPt address) {
return paging.tlb.readhandler[address>>12];
}
static INLINE PageHandler* get_tlb_writehandler(const PhysPt address) {
static INLINE PageHandler* get_tlb_writehandler(const LinearPt address) {
return paging.tlb.writehandler[address>>12];
}
/* Use these helper functions to access linear addresses in readX/writeX functions */
static INLINE PhysPt PAGING_GetPhysicalPage(const PhysPt linePage) {
/* NTS: 12-bit shift 32-bit constant, upper bits get shifted out, therefore no need to bitmask */
static INLINE PhysPt PAGING_GetPhysicalPage(const LinearPt linePage) {
return (paging.tlb.phys_page[linePage>>12]<<12);
}
static INLINE PhysPt PAGING_GetPhysicalAddress(const PhysPt linAddr) {
static INLINE PhysPt PAGING_GetPhysicalPageNumber(const LinearPt linePage) {
return paging.tlb.phys_page[linePage>>12]&PHYSPAGE_ADDR;
}
/* NTS: 12-bit shift 32-bit constant, upper bits get shifted out, therefore no need to bitmask */
static INLINE PhysPt PAGING_GetPhysicalAddress(const LinearPt linAddr) {
return (paging.tlb.phys_page[linAddr>>12]<<12)|(linAddr&0xfff);
}
#else
void PAGING_InitTLBBank(tlb_entry **bank);
static INLINE tlb_entry *get_tlb_entry(const PhysPt address) {
const Bitu index=(address >> 12U);
if (TLB_BANKS && (index >= TLB_SIZE)) {
const Bitu bank=(address >> BANK_SHIFT) - 1U;
if (!paging.tlbh_banks[bank])
PAGING_InitTLBBank(&paging.tlbh_banks[bank]);
return &paging.tlbh_banks[bank][index & BANK_MASK];
}
return &paging.tlbh[index];
static INLINE PhysPt64 PAGING_GetPhysicalAddress64(const LinearPt linAddr) {
return ((PhysPt64)(paging.tlb.phys_page[linAddr>>12]&PHYSPAGE_ADDR)<<(PhysPt64)12)|(linAddr&0xfff);
}
static INLINE HostPt get_tlb_read(const PhysPt address) {
return get_tlb_entry(address)->read;
}
static INLINE HostPt get_tlb_write(const PhysPt address) {
return get_tlb_entry(address)->write;
}
static INLINE PageHandler* get_tlb_readhandler(const PhysPt address) {
return get_tlb_entry(address)->readhandler;
}
static INLINE PageHandler* get_tlb_writehandler(const PhysPt address) {
return get_tlb_entry(address)->writehandler;
}
/* Use these helper functions to access linear addresses in readX/writeX functions */
static INLINE PhysPt PAGING_GetPhysicalPage(const PhysPt linePage) {
tlb_entry *entry = get_tlb_entry(linePage);
return (entry->phys_page<<12);
}
static INLINE PhysPt PAGING_GetPhysicalAddress(const PhysPt linAddr) {
tlb_entry *entry = get_tlb_entry(linAddr);
return (entry->phys_page<<12)|(linAddr&0xfff);
}
#endif
/* Special inlined memory reading/writing */
static INLINE uint8_t mem_readb_inline(const PhysPt address) {
static INLINE uint8_t mem_readb_inline(const LinearPt address) {
const HostPt tlb_addr=get_tlb_read(address);
if (tlb_addr) return host_readb(tlb_addr+address);
else return (uint8_t)(get_tlb_readhandler(address))->readb(address);
}
static INLINE uint16_t mem_readw_inline(const PhysPt address) {
static INLINE uint16_t mem_readw_inline(const LinearPt address) {
if ((address & 0xfff)<0xfff) {
const HostPt tlb_addr=get_tlb_read(address);
if (tlb_addr) return host_readw(tlb_addr+address);
@ -408,7 +452,7 @@ static INLINE uint16_t mem_readw_inline(const PhysPt address) {
} else return mem_unalignedreadw(address);
}
static INLINE uint32_t mem_readd_inline(const PhysPt address) {
static INLINE uint32_t mem_readd_inline(const LinearPt address) {
if ((address & 0xfff)<0xffd) {
const HostPt tlb_addr=get_tlb_read(address);
if (tlb_addr) return host_readd(tlb_addr+address);
@ -416,13 +460,13 @@ static INLINE uint32_t mem_readd_inline(const PhysPt address) {
} else return mem_unalignedreadd(address);
}
static INLINE void mem_writeb_inline(const PhysPt address,const uint8_t val) {
static INLINE void mem_writeb_inline(const LinearPt address,const uint8_t val) {
const HostPt tlb_addr=get_tlb_write(address);
if (tlb_addr) host_writeb(tlb_addr+address,val);
else (get_tlb_writehandler(address))->writeb(address,val);
}
static INLINE void mem_writew_inline(const PhysPt address,const uint16_t val) {
static INLINE void mem_writew_inline(const LinearPt address,const uint16_t val) {
if ((address & 0xfffu)<0xfffu) {
const HostPt tlb_addr=get_tlb_write(address);
if (tlb_addr) host_writew(tlb_addr+address,val);
@ -430,7 +474,7 @@ static INLINE void mem_writew_inline(const PhysPt address,const uint16_t val) {
} else mem_unalignedwritew(address,val);
}
static INLINE void mem_writed_inline(const PhysPt address,const uint32_t val) {
static INLINE void mem_writed_inline(const LinearPt address,const uint32_t val) {
if ((address & 0xfffu)<0xffdu) {
const HostPt tlb_addr=get_tlb_write(address);
if (tlb_addr) host_writed(tlb_addr+address,val);
@ -439,7 +483,7 @@ static INLINE void mem_writed_inline(const PhysPt address,const uint32_t val) {
}
static INLINE bool mem_readb_checked(const PhysPt address, uint8_t * const val) {
static INLINE bool mem_readb_checked(const LinearPt address, uint8_t * const val) {
const HostPt tlb_addr=get_tlb_read(address);
if (tlb_addr) {
*val=host_readb(tlb_addr+address);
@ -447,7 +491,7 @@ static INLINE bool mem_readb_checked(const PhysPt address, uint8_t * const val)
} else return (get_tlb_readhandler(address))->readb_checked(address, val);
}
static INLINE bool mem_readw_checked(const PhysPt address, uint16_t * const val) {
static INLINE bool mem_readw_checked(const LinearPt address, uint16_t * const val) {
if ((address & 0xfffu)<0xfffu) {
const HostPt tlb_addr=get_tlb_read(address);
if (tlb_addr) {
@ -457,7 +501,7 @@ static INLINE bool mem_readw_checked(const PhysPt address, uint16_t * const val)
} else return mem_unalignedreadw_checked(address, val);
}
static INLINE bool mem_readd_checked(const PhysPt address, uint32_t * const val) {
static INLINE bool mem_readd_checked(const LinearPt address, uint32_t * const val) {
if ((address & 0xfffu)<0xffdu) {
const HostPt tlb_addr=get_tlb_read(address);
if (tlb_addr) {
@ -467,7 +511,7 @@ static INLINE bool mem_readd_checked(const PhysPt address, uint32_t * const val)
} else return mem_unalignedreadd_checked(address, val);
}
static INLINE bool mem_writeb_checked(const PhysPt address,const uint8_t val) {
static INLINE bool mem_writeb_checked(const LinearPt address,const uint8_t val) {
const HostPt tlb_addr=get_tlb_write(address);
if (tlb_addr) {
host_writeb(tlb_addr+address,val);
@ -475,7 +519,7 @@ static INLINE bool mem_writeb_checked(const PhysPt address,const uint8_t val) {
} else return (get_tlb_writehandler(address))->writeb_checked(address,val);
}
static INLINE bool mem_writew_checked(const PhysPt address,const uint16_t val) {
static INLINE bool mem_writew_checked(const LinearPt address,const uint16_t val) {
if ((address & 0xfffu)<0xfffu) {
const HostPt tlb_addr=get_tlb_write(address);
if (tlb_addr) {
@ -485,7 +529,7 @@ static INLINE bool mem_writew_checked(const PhysPt address,const uint16_t val) {
} else return mem_unalignedwritew_checked(address,val);
}
static INLINE bool mem_writed_checked(const PhysPt address,const uint32_t val) {
static INLINE bool mem_writed_checked(const LinearPt address,const uint32_t val) {
if ((address & 0xfffu)<0xffdu) {
const HostPt tlb_addr=get_tlb_write(address);
if (tlb_addr) {
@ -502,10 +546,10 @@ public:
const char *what() const throw() override {
return "Guest page fault exception";
}
GuestPageFaultException(PhysPt n_lin_addr, Bitu n_page_addr, Bitu n_faultcode) : lin_addr(n_lin_addr), page_addr(n_page_addr), faultcode(n_faultcode) {
GuestPageFaultException(LinearPt n_lin_addr, Bitu n_page_addr, Bitu n_faultcode) : lin_addr(n_lin_addr), page_addr(n_page_addr), faultcode(n_faultcode) {
}
public:
PhysPt lin_addr;
LinearPt lin_addr;
Bitu page_addr;
Bitu faultcode;
};
@ -519,4 +563,11 @@ public:
}
};
uint8_t PageHandler_HostPtReadB(PageHandler *p,PhysPt addr);
uint16_t PageHandler_HostPtReadW(PageHandler *p,PhysPt addr);
uint32_t PageHandler_HostPtReadD(PageHandler *p,PhysPt addr);
void PageHandler_HostPtWriteB(PageHandler *p,PhysPt addr,uint8_t val);
void PageHandler_HostPtWriteW(PageHandler *p,PhysPt addr,uint16_t val);
void PageHandler_HostPtWriteD(PageHandler *p,PhysPt addr,uint32_t val);
#endif

5
include/pc98_artic.h Normal file
View File

@ -0,0 +1,5 @@
#include "dos_inc.h"
Bitu pc98_read_artic(Bitu port,Bitu iolen);

View File

@ -1,4 +1,6 @@
#include "dos_inc.h"
#define PC98_GDC_FIFO_SIZE 32 /* taken from Neko Project II, but what is it really? */
#define GDC_COMMAND_BYTE 0x100
@ -191,3 +193,53 @@ extern struct PC98_GDC_state pc98_gdc[2];
extern egc_quad pc98_gdc_tiles;
extern uint8_t pc98_gdc_vramop;
extern uint8_t pc98_gdc_modereg;
extern uint8_t pc98_gdc_tile_counter;
extern uint8_t pc98_gdc_modereg;
extern uint8_t pc98_gdc_vramop;
extern egc_quad pc98_gdc_tiles;
extern uint8_t pc98_egc_srcmask[2]; /* host given (Neko: egc.srcmask) */
extern uint8_t pc98_egc_maskef[2]; /* effective (Neko: egc.mask2) */
extern uint8_t pc98_egc_mask[2]; /* host given (Neko: egc.mask) */
extern bool pc98_timestamp5c;
extern uint8_t GDC_display_plane_wait_for_vsync;
Bitu pc98_read_9a8(Bitu /*port*/,Bitu /*iolen*/);
void pc98_write_9a8(Bitu port,Bitu val,Bitu iolen);
void gdc_5mhz_mode_update_vars(void);
void pc98_port6A_command_write(unsigned char b);
void pc98_wait_write(Bitu port,Bitu val,Bitu iolen);
void pc98_crtc_write(Bitu port,Bitu val,Bitu iolen);
void pc98_port68_command_write(unsigned char b);
Bitu pc98_read_9a0(Bitu /*port*/,Bitu /*iolen*/);
void pc98_write_9a0(Bitu port,Bitu val,Bitu iolen);
Bitu pc98_crtc_read(Bitu port,Bitu iolen);
Bitu pc98_a1_read(Bitu port,Bitu iolen);
void pc98_a1_write(Bitu port,Bitu val,Bitu iolen);
void pc98_gdc_write(Bitu port,Bitu val,Bitu iolen);
Bitu pc98_gdc_read(Bitu port,Bitu iolen);
Bitu pc98_egc4a0_read(Bitu port,Bitu iolen);
void pc98_egc4a0_write(Bitu port,Bitu val,Bitu iolen);
Bitu pc98_egc4a0_read_warning(Bitu port,Bitu iolen);
void pc98_egc4a0_write_warning(Bitu port,Bitu val,Bitu iolen);
extern const UINT8 gdc_defsyncm15[8];
extern const UINT8 gdc_defsyncs15[8];
extern const UINT8 gdc_defsyncm24[8];
extern const UINT8 gdc_defsyncs24[8];
extern const UINT8 gdc_defsyncm31[8];
extern const UINT8 gdc_defsyncs31[8];
extern const UINT8 gdc_defsyncm31_480[8];
extern const UINT8 gdc_defsyncs31_480[8];
void PC98_Set24KHz(void);
void PC98_Set31KHz(void);
void PC98_Set31KHz_480line(void);

View File

@ -84,7 +84,7 @@ public:
/* NTS: If I recall, this virtual function call means that we'll call the
* C++ subclass's config_read() NOT our own--right? */
for (Bitu i=0;i < iolen;i++)
v += ((config_read((uint8_t)(regnum+i),1)&0xFF) << ((iolen-i-1)*8));
v += ((config_read((uint8_t)(regnum+i),1)&0xFF) << (i*8));
}
return v;
@ -100,5 +100,8 @@ void PCI_AddSST_Device(Bitu type);
void PCI_RemoveSST_Device(void);
RealPt PCI_GetPModeInterface(void);
bool has_pcibus_enable(void);
extern bool pcibus_enable;
#endif

View File

@ -75,6 +75,7 @@ static INLINE pic_tickindex_t PIC_FullIndex(void) {
void PIC_ActivateIRQ(Bitu irq);
void PIC_DeActivateIRQ(Bitu irq);
void PIC_EdgeTrigger(Bitu irq,bool set=true);
void PIC_runIRQs(void);
bool PIC_RunQueue(void);

View File

@ -34,6 +34,7 @@
#define FLAG_IOPL 0x00003000U
#define FLAG_NT 0x00004000U
#define FLAG_RF 0x00010000U
#define FLAG_VM 0x00020000U
#define FLAG_AC 0x00040000U
#define FLAG_ID 0x00200000U

View File

@ -212,6 +212,7 @@ typedef struct {
bool has_split;
bool vret_triggered;
bool vga_override;
bool modeswitch_set;
bool doublescan_set;
bool doublescan_effect;
bool char9_set;
@ -606,6 +607,7 @@ typedef struct VGA_Memory_t {
uint32_t memsize = 0;
uint32_t memmask = 0;
uint32_t memmask_crtc = 0; // in CRTC-visible units (depends on byte/word/dword mode)
uint32_t memsize_original = 0; // memsize prior to rounding up to a power of 2
} VGA_Memory;
typedef struct {
@ -794,8 +796,21 @@ void SVGA_Setup_TsengET3K(void);
void SVGA_Setup_ParadisePVGA1A(void);
void SVGA_Setup_Driver(void);
void SVGA_Setup_ATI(void);
bool VGA_IsCaptureEnabled(void);
void VGA_UpdateCapturePending(void);
bool VGA_CaptureHasNextFrame(void);
void VGA_CaptureStartNextFrame(void);
void VGA_CaptureMarkError(void);
bool VGA_CaptureValidateCurrentFrame(void);
void SD3_Reset(bool enable);
void SetClock_S3(Bitu which,Bitu target);
// Amount of video memory required for a mode, implemented in int10_modes.cpp
Bitu VideoModeMemSize(Bitu mode);
bool VGA_DetermineMode_IsDCGA(void);
void VGA_DetermineMode_StandardVGA(void);
void VGA_DetermineMode_S3(void);
extern uint32_t ExpandTable[256];
extern uint32_t FillTable[16];
@ -809,6 +824,9 @@ extern uint32_t TXT_BG_Table[16];
extern uint32_t Expand16Table[4][16];
extern uint32_t Expand16BigTable[0x10000];
extern int hack_lfb_yadjust;
extern int hack_lfb_xadjust;
void VGA_DAC_UpdateColorPalette();
extern uint32_t GFX_Rmask;
@ -830,6 +848,28 @@ extern unsigned char *pc98_pgraph_current_display_page;
/* current CPU page (controlled by A6h) */
extern unsigned char *pc98_pgraph_current_cpu_page;
extern int vga_memio_delay_ns;
extern bool enable_supermegazeux_256colortext;
extern bool vga_memio_lfb_delay;
extern bool gdc_5mhz_mode;
extern bool gdc_5mhz_mode_initial;
extern bool enable_pc98_egc;
extern bool enable_pc98_grcg;
extern bool enable_pc98_16color;
extern bool enable_pc98_256color;
extern bool enable_pc98_256color_planar;
extern bool enable_pc98_188usermod;
extern bool GDC_vsync_interrupt;
extern uint8_t GDC_display_plane;
extern bool pc98_256kb_boundary;
extern bool want_fm_towns;
extern bool enveten;
extern bool enable_pci_vga;
extern unsigned int vbe_window_granularity;
extern unsigned int vbe_window_size;
/* functions to help cleanup memory map access instead of hardcoding offsets.
* your C++ compiler should be smart enough to inline these into the body of this function. */
@ -892,4 +932,26 @@ static inline unsigned char *pc98_vram_256bank_from_window(const unsigned int b)
#define VRAM98_TEXT ( pc98_vram_text() )
#ifdef VGA_INTERNAL
#define gfx(blah) vga.gfx.blah
#define seq(blah) vga.seq.blah
#define crtc(blah) vga.crtc.blah
#endif
#define IS_RESET ((vga.seq.reset&0x3)!=0x3)
#define IS_SCREEN_ON ((vga.seq.clocking_mode&0x20)==0)
bool J3_IsCga4Dcga();
void UpdateCGAFromSaveState(void);
void INT10_PC98_CurMode_Relocate(void);
unsigned int VGA_ComplexityCheck_ODDEVEN(void);
void VGA_VsyncUpdateMode(VGA_Vsync vsyncmode);
uint32_t GetReportedVideoMemorySize(void);
extern void VGA_TweakUserVsyncOffset(float val);
void VGA_UnsetupMisc(void);
void VGA_UnsetupAttr(void);
void VGA_UnsetupDAC(void);
void VGA_UnsetupGFX(void);
void VGA_UnsetupSEQ(void);
#endif

View File

@ -48,6 +48,7 @@ struct GFX_PalEntry {
#define GFX_LOVE_32 0x0080u
#define GFX_RGBONLY 0x0100u
#define GFX_NORMALSCALE 0x0200u // one of the Normal scalers and therefore should be ignored for hardware scaling
#define GFX_SCALING 0x1000u
#define GFX_HARDWARE 0x2000u

View File

@ -22,13 +22,16 @@
#define VOODOO_INITIAL_LFB 0xd0000000
#define VOODOO_LFB_SIZE 0x01000000 /* VOODOO_PAGES == 4096 (4096 << 12) 16MB size must be a power of 2 */
#define VOODOO_LFB_ALIGNMASK ( ~(VOODOO_LFB_SIZE - 1u) ) /* 16MB align */
#define VOODOO_REG_PAGES 1024
#define VOODOO_LFB_PAGES 1024
#define VOODOO_TEX_PAGES 2048
#define VOODOO_PAGES (VOODOO_REG_PAGES+VOODOO_LFB_PAGES+VOODOO_TEX_PAGES)
#define VOODOO_PAGES (VOODOO_REG_PAGES+VOODOO_LFB_PAGES+VOODOO_TEX_PAGES)
static_assert( VOODOO_LFB_ALIGNMASK == 0xFF000000ul, "Voodoo LFB error" );
#define VOODOO_EMU_TYPE_OFF 0
#define VOODOO_EMU_TYPE_OFF 0
#define VOODOO_EMU_TYPE_SOFTWARE 1
#define VOODOO_EMU_TYPE_ACCELERATED 2

79
include/zipcppstdbuf.h Normal file
View File

@ -0,0 +1,79 @@
#ifndef ZIPSTREAMBUF
#define ZIPSTREAMBUF
#include "zip.h"
#include "unzip.h"
#include "ioapi.h"
#include <assert.h>
/* std::streambuf for writing to ZIP archive directly.
* ZIP archive writer can only write one file at a time, do not
* use multiple instances of this C++ class at a time! No seeking,
* only sequential output! */
class zip_ostreambuf : public std::streambuf {
public:
using Base = std::streambuf;
public:
zip_ostreambuf(zipFile &n_zf) : basic_streambuf(), zf(n_zf) { }
virtual ~zip_ostreambuf() { close(); }
public:
virtual std::streamsize xsputn(const Base::char_type *s, std::streamsize count) override {
assert(zf != NULL);
const int err = zipWriteInFileInZip(zf, (void*)s, count);
if (err != ZIP_OK) {
zf_err = err;
return 0;
}
return count;
}
public:
int close(void) {
int err;
if ((err=zipCloseFileInZip(zf)) != ZIP_OK) return err;
if (zf_err != ZIP_OK) return zf_err;
return ZIP_OK;
}
private:
zipFile zf = NULL;
int zf_err = ZIP_OK;
};
class zip_istreambuf : public std::streambuf {
public:
using Base = std::streambuf;
public:
zip_istreambuf(unzFile &n_zf) : basic_streambuf(), zf(n_zf) { }
virtual ~zip_istreambuf() { close(); }
public:
virtual std::streamsize xsgetn(Base::char_type *s, std::streamsize count) override {
assert(zf != NULL);
const int err = unzReadCurrentFile(zf, (void*)s, count);
if (err < 0) {
zf_err = err;
return 0;
}
return std::streamsize(err);
}
public:
int close(void) {
int err;
if ((err=unzCloseCurrentFile(zf)) != UNZ_OK) return err;
if (zf_err != UNZ_OK) return zf_err;
return UNZ_OK;
}
private:
unzFile zf = NULL;
int zf_err = UNZ_OK;
};
#endif

View File

@ -15,7 +15,8 @@ res_DATA = \
../dosbox-x.reference.conf \
../dosbox-x.reference.full.conf \
../contrib/fonts/FREECG98.BMP \
../contrib/fonts/wqy_1?pt.bdf \
../contrib/fonts/wqy_11pt.bdf \
../contrib/fonts/wqy_12pt.bdf \
../contrib/fonts/Nouveau_IBM.ttf \
../contrib/fonts/SarasaGothicFixed.ttf \
../CHANGELOG
@ -34,6 +35,14 @@ dosbox_x_LDADD = debug/libdebug.a dos/libdos.a shell/libshell.a builtin/libbuilt
cpu/libcpu.a hardware/reSID/libresid.a fpu/libfpu.a gui/libgui.a \
misc/libmisc.a output/liboutput.a hardware/mame/libmame.a libs/zmbv/libzmbv.a libs/decoders/internal/libopusint.a
if OS2
dosbox_x_LDADD += os2res.res
.rc.res:
wrc $< -i=. -r $@
endif
if !EMSCRIPTEN
dosbox_x_LDADD += aviwriter/libaviwriter.a
endif
@ -73,7 +82,7 @@ dosbox_x_js_install:
sudo cp -v dosbox-x.js dosbox-x.wasm /var/www/html/em/
endif
EXTRA_DIST = winres.rc ../contrib/icons/dosbox-x.ico
EXTRA_DIST = winres.rc ../contrib/icons/dosbox-x.ico os2res.rc
# Ensure the macOS universal executables are correctly removed when cleaning
distclean-local:

View File

@ -4,6 +4,7 @@ noinst_LIBRARIES = libbuiltin.a
libbuiltin_a_SOURCES = \
dsxmenu_exe_pc98.cpp \
dsxmenu_exe_pc.cpp \
cwsdpmi_exe_pc98.cpp \
cwsdpmi_exe.cpp \
dos32a_exe.cpp \
dos4gw_exe.cpp \

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
# Makefile for XCOPY (using Borland C or Turbo C)
# Makefile for XCOPY (using Open Watcom or Borland/Turbo C)
# Based on the CHOICE makefile by Tom Ehlert
# compression (for final executable)
@ -7,8 +7,8 @@
# if you dont want to UPX choice
# if you use upx: --8086 for 8086 compatibility, --best for smallest
UPX=-rem
#UPX=upx -9
# UPX=-rem
UPX=upx --8086 --best
# set where build files (including intermediate ones) placed
@ -29,25 +29,32 @@ RM=del
# -ms memory model (s=SMALL), -zq quiet mode
# -fe=xxx executable name (must be last)
# -o a=relax alias checking s=for size, -zp# 1=byte align
#CC=wcl
#CFLAGS=-oas -bt=DOS -zp1 -s -ms -0 -wx -we -zq -fm -fe=$*
# -k# set stack size, default is 2048 bytes (2KB) but just under 4KB is needed
# Note: we default to Watcom unless Borland MAKE is used
CC=wcl
CFLAGS=-oas -bt=DOS -zp1 -ms -0 -wx -we -zq -fm -k12288 -fe=$*
# needed for wmake if phony target
#PHONY=.SYMBOLIC
PHONY=.SYMBOLIC
############# TURBO_C ########################
# -w warn -M create map -f- no floating point -Z register optimize
# -O jump optimize -k- no standard stack frame -K unsigned char
# -O jump optimize -k- no standard stack frome -K unsigned char
# -exxx executable name (name must be part of option in CFLAGS)
# -mt tiny (default is small -ms)
# -N stack checking -a- byte alignment -ln no default libs
# -lt create .com file -lx no map file ...
# -v- quiet mode
# -nPATH to place resulting files
#CC=bcc
CC=tcc
# default stack size is 4KB
!ifdef __MAKE__ # defined for Borland MAKE but not Watcom WMAKE
!ifndef BORLAND
CC=bcc # default to BCC, use -DBORLAND=TCC for Turbo C/C++
!else
CC=$(BORLAND) # Note: make won't use CC as cmd line define
!endif
CFLAGS=-d -v- -w -M -f- -Z -a- -O -k- -K -ln -ms -e$*
PHONY=
!endif
CFILES=xcopy.c kitten.c prf.c
@ -62,7 +69,7 @@ all: xcopy.exe
xcopy.exe: $(CFILES) makefile shared.inc kitten.h
-$(MKDIR) $(OUTDIR)
$(CC) $(CFLAGS) $(CFILES)
$(UPX) xcopy.exe
-$(UPX) xcopy.exe
$(MV) xcopy.exe $(OUTDIR)

View File

@ -2,21 +2,6 @@
#include <string.h>
#include <io.h>
struct DiskInfo {
/* buffer to be filled by INT 21h function 0x7303h */
unsigned short size;
unsigned short version;
unsigned long sectorsPerCluster;
unsigned long bytesPerSector;
unsigned long availableClusters;
unsigned long totalClusters;
unsigned long physicalSectorsAvailable;
unsigned long totalPhysicalSectors;
unsigned long availableAllocationUnits;
unsigned long totalAllocationUnits;
char reserved[8];
};
#ifdef __WATCOMC__
#include <direct.h> /* below: Turbo C dir.h values as comments */
#define MAXPATH _MAX_PATH /* 80 */
@ -34,6 +19,10 @@ struct DiskInfo {
#define FA_DIREC _A_SUBDIR
#define FA_ARCH _A_ARCH
/* following are defined in fcntl.h (here to avoid other conflicts) */
#define O_RDONLY 0
#define O_RDWR 2
struct ffblk {
unsigned short cr_time; /* time of file creation */
unsigned short cr_date; /* date of file creation */
@ -91,7 +80,8 @@ int getftime(int handle, struct ftime *ftimep)
{
union borftime ftm;
if( _dos_getftime(handle,
/* Note: fileno() returns POSIX compatible handle, this may or may not match DOS handle, so convert with os_handle() */
if( _dos_getftime(_os_handle(handle),
(unsigned *)&ftm.msc_time.date,
(unsigned *)&ftm.msc_time.time
) == 0 )
@ -105,12 +95,42 @@ int setftime(int handle, struct ftime *ftimep)
{
union borftime ftm;
ftm.bc_time = *ftimep;
return((_dos_setftime(handle,ftm.msc_time.date,ftm.msc_time.time) == 0) ? 0 : -1);
/* Note: fileno() returns POSIX compatible handle, this may or may not match DOS handle, so convert with os_handle() */
return((_dos_setftime(_os_handle(handle),ftm.msc_time.date,ftm.msc_time.time) == 0) ? 0 : -1);
}
int os_setftime(const char *src_filename, const char *dest_filename)
{
int handle;
unsigned date, time;
int ret;
if ((ret = _dos_open(src_filename, O_RDONLY, &handle)) != 0) return ret;
if ((ret = _dos_getftime(handle, &date, &time)) != 0) return ret;
_dos_close(handle);
if ((ret = _dos_open(dest_filename, O_RDWR, &handle)) != 0) return ret;
if ((ret = _dos_setftime(handle, date, time)) != 0) return ret;
_dos_close(handle);
return 0;
}
#else
#include <dir.h>
/* copy file timestamp */
int os_setftime(const char *src_filename, const char *dest_filename)
{
FILE *f;
struct ftime filetime;
if ((f = fopen(src_filename, "r")) == NULL) return 1;
if (getftime(fileno(f), &filetime) != 0) return 1;
fclose(f);
if ((f = fopen(dest_filename, "w")) == NULL) return 1;
if (setftime(fileno(f), &filetime) != 0) return 1;
fclose(f);
return 0;
}
#endif
#ifdef __WATCOMC__ /* "dosdate_t" instead of Borland style "date" ... */
@ -123,6 +143,7 @@ int setftime(int handle, struct ftime *ftimep)
#define ti_minute minute
#define ti_sec second
#define ti_hund hsecond
#define THETIME struct dostime_t
time_t dostounix(THEDATE *date, struct dostime_t *time)
{
@ -140,6 +161,7 @@ time_t dostounix(THEDATE *date, struct dostime_t *time)
}
#else
#define THEDATE struct date
#define THETIME struct time
#endif
/*-------------------------------------------------------------------------*/
@ -233,6 +255,82 @@ void getdfree(unsigned char drive, struct dfree *dtable)
}
#endif
/*-------------------------------------------------------------------------*/
/* Gets the free cluster count and clustersize in bytes of disk */
/* drive 1=A,2=B,3=C,... error can be NULL if don't care */
/*-------------------------------------------------------------------------*/
void getdiskfreeclusters(unsigned drive, unsigned long *clustersize, unsigned long *free_clusters)
{
static char rootname[] = "C:\\";
static union REGS r;
static struct SREGS s;
static struct {
unsigned short whatever;
unsigned short version;
unsigned long sectors_per_cluster;
unsigned long bytes_per_sector;
unsigned long free_clusters;
unsigned long total_clusters;
unsigned long available_physical_sectors;
unsigned long total_physical_sectors;
unsigned long free_allocation_units;
unsigned long total_allocation_units;
unsigned char reserved[8];
} FAT32_Free_Space;
if (!drive) _dos_getdrive(&drive); /* use current drive */
/* Note: RBIL carry clear and al==0 also means unimplemented
alternately carry set and ax==undefined (usually unchanged) for unimplemented
ecm: RBIL is wrong, CF unchanged al=0 is the typical error return.
EDR-DOS returns NC ax=0 so checking for al!=0 here was wrong.
*/
rootname[0] = 'A' + drive - 1;
/* printf("Looking at drive [%s]\n", rootname); */
r.w.cflag = 1; /* CY before 21.73 calls! */
r.w.ax = 0x7303;
s.ds = FP_SEG(rootname);
r.w.dx = FP_OFF(rootname);
s.es = FP_SEG(&FAT32_Free_Space);
r.w.di = FP_OFF(&FAT32_Free_Space);
r.w.cx = sizeof(FAT32_Free_Space);
intdosx( &r, &r, &s );
/* see if call supported, if not then fallback to older get disk free API call */
/* Note: from RBIL returning AL=0 (with carry unchanged/clear) means unimplemented,
in such cases AH is unchanged, so will AH will still by 0x73, i.e. returning AX=0x7300
EDR kernel returns with AX=0 if successful so error must check AX=7300 instead of just AL for 0
FreeDOS kernel returns with AX unchanged, i.e. 0x7303 on success
If returns carry set then AX is undefined, but an error.
(carry OR (AX == 0x7300)) indicates error, so we check for NOT (carry OR (AX == 0x7300))
*/
if (!(r.w.cflag & 0x01) && (r.w.ax != 0x7300)) /* call available and successfully returned */
{
/* calculate free space, but handle some overflow cases (or switch to 64bit values) */
if (clustersize != NULL) *clustersize = FAT32_Free_Space.sectors_per_cluster * FAT32_Free_Space.bytes_per_sector;
if (free_clusters != NULL) *free_clusters = FAT32_Free_Space.free_clusters;
/* total free is cluster size * # of free clusters */
#if 0
if (clustersize)
{
/* if (MAX_ULONG / operand1) < operand2 then will overflow (operand1 * operand2 > MAX_ULONG */
if ((4294967295ul / clustersize) < FAT32_Free_Space.free_clusters) {
freesize = (unsigned long)-1; /* max size */
} else {
freesize = clustersize * FAT32_Free_Space.free_clusters;
}
}
#endif
}
else /* ((r.w.cflag & 0x01) || (!r.h.al)) */
{
static struct dfree disktable;
getdfree(drive, &disktable);
if (clustersize != NULL) *clustersize = (unsigned long) disktable.df_bsec * disktable.df_sclus;
if (free_clusters != NULL) *free_clusters = disktable.df_avail;
}
}
/*-------------------------------------------------------------------------*/
/* Works like function strcpy() but stops copying characters into */
@ -364,6 +462,35 @@ int datevalid(THEDATE * dt) {
}
/*-------------------------------------------------------------------------*/
/* Copies argument into buffer until new option or end of string found. */
/*-------------------------------------------------------------------------*/
static char option_buffer[1024];
static char * get_option(const char **next_argptr, unsigned *count)
{
unsigned int i, tmp_maxlen;
const char *src = *next_argptr+1; /* +1 skip past option char (/ or -) */
char *dest = option_buffer+*count;
int expecting_date = 0; /* flag indicating / may be part of option */
tmp_maxlen = sizeof(option_buffer) - (*count) - 1;
i = 0;
while ((src[i] != '\0') &&
(i < tmp_maxlen) &&
((!expecting_date && ((src[i] != '-') && (src[i] != '/'))) || expecting_date))
{
dest[i] = src[i];
expecting_date |= src[i] == ':'; /* currently only /D:<date> option */
i++;
}
dest[i] = '\0';
if (i >= tmp_maxlen) *next_argptr = dest+i; /* ensure points to '\0' */
else *next_argptr = src+i;
*count += i + 1;
return dest;
}
/*-------------------------------------------------------------------------*/
/* Splits the program arguments into file and switch arguments. */
/*-------------------------------------------------------------------------*/
@ -375,6 +502,8 @@ void classify_args(const int argc,
char **switchargv) {
int i;
char *argptr;
unsigned count = 0;
const char *next_argptr;
*fileargc = 0;
@ -383,8 +512,13 @@ void classify_args(const int argc,
argptr = (char *)argv[i];
if (argptr[0] == '/' || argptr[0] == '-') {
/* first character of parameter is '/' or '-' -> switch argument */
switchargv[*switchargc] = argptr + 1;
*switchargc = *switchargc + 1;
//switchargv[*switchargc] = argptr + 1;
next_argptr = argptr;
do {
switchargv[*switchargc] = get_option(&next_argptr, &count);
/* printf("switcharg[%i]=|%s|\n", *switchargc, switchargv[*switchargc]); */
*switchargc = *switchargc + 1;
} while (*next_argptr != '\0');
}
else {
/* file argument */
@ -513,17 +647,13 @@ char confirm(const char *msg,
/*-------------------------------------------------------------------------*/
void copy_file(const char *src_filename,
const char *dest_filename,
const char return_on_error,
const char keep_attrib,
const char reset_arch) {
const char return_on_error) {
FILE *src_file,
*dest_file;
char buffer[16384];
static char buffer[16384]; /* don't put buffer on stack! */
unsigned int buffersize;
int readsize,
fileattrib;
struct ftime filetime;
/* open source file */
src_file = fopen(src_filename, "rb");
@ -568,62 +698,14 @@ void copy_file(const char *src_filename,
readsize = fread(buffer, sizeof(char), buffersize, src_file);
}
/* copy file timestamp */
getftime(fileno(src_file), &filetime);
setftime(fileno(dest_file), &filetime);
/* close files */
fclose(src_file);
fclose(dest_file);
/* update timestamp after completing copy to ensure OS actually sets to original date and not current time */
os_setftime(src_filename, dest_filename);
/* copy file attributes */
fileattrib = _chmod(src_filename, 0);
if(!keep_attrib) {
fileattrib = fileattrib & FA_ARCH;
}
if(reset_arch){
fileattrib = fileattrib & !FA_ARCH;
}
_chmod(dest_filename, 1, fileattrib);
}
unsigned int getDOSVersion() {
union REGS regs;
regs.h.ah = 0x30; // Function code for get DOS version
intdos(&regs, &regs);
// AL register will contain the DOS major version
// AH register will contain the DOS minor version
if (regs.h.al == 0) {
regs.h.al++;
}
return (regs.h.al << 8) | regs.h.ah;
}
unsigned int get_extendedDiskInfo (char driveNumber, struct DiskInfo *diskInfo) {
union REGS regs;
struct SREGS segregs;
char driveString[4];
if(driveNumber < 1 || driveNumber > 26) return 0xFFFF;
// Set up buffer for result
segread(&segregs); /* Get the segment of DS */
regs.x.di = FP_OFF(diskInfo);
segregs.es = FP_SEG(diskInfo);
// Convert drive number to ASCIZ string
sprintf(driveString, "%c:\\", 'A' + driveNumber - 1);
// Set up registers
regs.h.ah = 0x73; /* Function code for get free disk space */
regs.h.al = 0x03; /* Sub-function code for get disk information */
regs.x.cx = sizeof(struct DiskInfo);
regs.x.dx = FP_OFF(driveString);
segregs.ds = FP_SEG(driveString);
// Perform the interrupt
intdosx(&regs, &regs, &segregs);
return regs.x.ax;
}

View File

@ -25,9 +25,6 @@
/* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/***************************************************************************/
/* Downloaded original source from the following link and fixed attribute copy */
/* https://github.com/FDOS/xcopy/commit/71dd94271057b3a60c6a01d1c3f2c7da856c464c */
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
@ -47,7 +44,7 @@ nl_catd cat; /* message catalog, must be before shared.inc */
#if defined(__TURBOC__) && !defined(__BORLANDC__)
#define _splitpath fnsplit
void _fullpath_tc(char * truename, char * rawname, unsigned int namelen)
void _fullpath(char * truename, char * rawname, unsigned int namelen)
{
union REGS regs;
struct SREGS sregs;
@ -102,13 +99,20 @@ char switch_archive = 0,
switch_verify = 0,
switch_wait = 0,
bak_verify = 0,
switch_keep_attr = 0,
dest_drive;
long int switch_date = 0;
long file_counter = 0;
int file_found = 0;
/* these are only used by xcopy_files, built up as recurse deeper into
into subdirectory to help avoid overflowing stack with each
recursive call */
char new_src_pathname[MAXPATH];
char new_dest_pathname[MAXPATH];
/*-------------------------------------------------------------------------*/
/* PROTOTYPES */
/*-------------------------------------------------------------------------*/
@ -129,7 +133,7 @@ void xcopy_files(const char *src_pathname,
const char *dest_filename);
void xcopy_file(const char *src_filename,
const char *dest_filename);
unsigned int getDOSVersion(void);
/*-------------------------------------------------------------------------*/
/* MAIN-PROGRAM */
@ -149,11 +153,7 @@ int main(int argc, const char **argv) {
ch;
int i, length;
THEDATE dt;
#ifdef __WATCOMC__
struct dostime_t tm;
#else
struct time tm;
#endif
THETIME tm;
cat = catopen ("xcopy", 0); /* initialize kitten */
@ -207,13 +207,9 @@ int main(int argc, const char **argv) {
catclose(cat);
exit(4);
}
#ifdef __WATCOMC__
memset((void *)&tm, 0, sizeof(struct dostime_t));
/* tm.tm_hour = 0; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_hund = 0; */
#else
memset((void *)&tm, 0, sizeof(struct time));
/* tm.ti_hour = 0; tm.ti_min = 0; tm.ti_sec = 0; tm.ti_hund = 0; */
#endif
memset((void *)&tm, 0, sizeof(THETIME));
/* tm.tm_hour = 0; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_hund = 0; -- __WATCOM__ */
/* tm.ti_hour = 0; tm.ti_min = 0; tm.ti_sec = 0; tm.ti_hund = 0; -- all others */
switch_date = dostounix(&dt, &tm);
}
else if (strcmp(tmp_switch, "E") == 0)
@ -224,8 +220,6 @@ int main(int argc, const char **argv) {
switch_hidden = -1;
else if (strcmp(tmp_switch, "I") == 0)
switch_intodir = -1;
else if (strcmp(tmp_switch, "K") == 0)
switch_keep_attr = -1;
else if (strcmp(tmp_switch, "L") == 0)
switch_listmode = -1;
else if (strcmp(tmp_switch, "M") == 0)
@ -267,11 +261,7 @@ int main(int argc, const char **argv) {
catclose(cat);
exit(4);
}
#if defined(__TURBOC__) && !defined(__BORLANDC__)
_fullpath_tc(src_pathname, fileargv[0], MYMAXPATH);
#else
_fullpath(src_pathname, fileargv[0], MYMAXPATH);
#endif
if (src_pathname[0] == '\0') {
printf("%s\n", catgets(cat, 1, 5, "Invalid source drive specification"));
catclose(cat);
@ -317,11 +307,7 @@ int main(int argc, const char **argv) {
catclose(cat);
exit(4);
}
#if defined(__TURBOC__) && !defined(__BORLANDC__)
_fullpath_tc(dest_pathname, fileargv[1], MYMAXPATH);
#else
_fullpath(dest_pathname, fileargv[1], MYMAXPATH);
#endif
if (dest_pathname[0] == '\0') {
printf("%s\n", catgets(cat, 1, 9, "Invalid destination drive specification"));
catclose(cat);
@ -399,6 +385,8 @@ int main(int argc, const char **argv) {
fflush(stdin);
}
strmcpy(new_src_pathname, src_pathname, sizeof(new_src_pathname));
strmcpy(new_dest_pathname, dest_pathname, sizeof(new_dest_pathname));
xcopy_files(src_pathname, src_filename, dest_pathname, dest_filename);
if (!file_found) {
printf("%s - %s\n",catgets(cat, 1, 18, "File not found"), src_filename);
@ -415,7 +403,7 @@ int main(int argc, const char **argv) {
/* SUB-PROGRAMS */
/*-------------------------------------------------------------------------*/
void print_help(void) {
printf("XCOPY v1.5 - Copyright 2001-2003 by Rene Ableidinger (patches 2005: Eric Auer)\n");
printf("XCOPY v1.9a - Copyright 2001-2003 by Rene Ableidinger (patches 2005: Eric Auer)\n");
/* VERSION! */
printf("%s\n\n", catgets(cat, 2, 1, "Copies files and directory trees."));
printf("%s\n\n", catgets(cat, 2, 2, "XCOPY source [destination] [/switches]"));
@ -432,32 +420,31 @@ void print_help(void) {
printf("%s\n", catgets(cat, 2, 13, " /H Copies hidden and system files as well as unprotected files."));
printf("%s\n", catgets(cat, 2, 14, " /I If destination does not exist and copying more than one file,"));
printf("%s\n", catgets(cat, 2, 15, " assume destination is a directory."));
printf("%s\n", catgets(cat, 2, 16, " /K Keep attributes. Otherwise only archive attribute is copied."));
printf("%s\n", catgets(cat, 2, 17, " /L List files without copying them. (simulates copying)"));
printf("%s\n", catgets(cat, 2, 18, " /M Copies only files with the archive attribute set and turns off"));
printf("%s\n", catgets(cat, 2, 16, " /L List files without copying them. (simulates copying)"));
printf("%s\n", catgets(cat, 2, 17, " /M Copies only files with the archive attribute set and turns off"));
printf("%s\n", catgets(cat, 2, 18, " the archive attribute of the source files after copying them."));
if (isatty(1)) {
printf("-- %s --", catgets(cat, 2, 35, "press enter for more"));
(void)getchar();
} /* wait for next page if TTY */
printf("%s\n", catgets(cat, 2, 19, " the archive attribute of the source files after copying them."));
printf("%s\n", catgets(cat, 2, 20, " /N Suppresses prompting to confirm you want to overwrite an"));
printf("%s\n", catgets(cat, 2, 21, " existing destination file and skips these files."));
printf("%s\n", catgets(cat, 2, 22, " /P Prompts for confirmation before creating each destination file."));
printf("%s\n", catgets(cat, 2, 23, " /Q Quiet mode, don't show copied filenames."));
printf("%s\n", catgets(cat, 2, 24, " /R Overwrite read-only files as well as unprotected files."));
printf("%s\n", catgets(cat, 2, 25, " /S Copies directories and subdirectories except empty ones."));
printf("%s\n", catgets(cat, 2, 26, " /T Creates directory tree without copying files. Empty directories"));
printf("%s\n", catgets(cat, 2, 27, " will not be copied. To copy them add switch /E."));
printf("%s\n", catgets(cat, 2, 28, " /V Verifies each new file."));
printf("%s\n", catgets(cat, 2, 29, " /W Waits for a keypress before beginning."));
printf("%s\n", catgets(cat, 2, 30, " /Y Suppresses prompting to confirm you want to overwrite an"));
printf("%s\n", catgets(cat, 2, 31, " existing destination file and overwrites these files."));
printf("%s\n", catgets(cat, 2, 32, " /-Y Causes prompting to confirm you want to overwrite an existing"));
printf("%s\n\n", catgets(cat, 2, 33, " destination file."));
printf("%s\n", catgets(cat, 2, 34, "The switch /Y or /N may be preset in the COPYCMD environment variable."));
printf("%s\n", catgets(cat, 2, 35, "This may be overridden with /-Y on the command line."));
printf("%s\n", catgets(cat, 2, 19, " /N Suppresses prompting to confirm you want to overwrite an"));
printf("%s\n", catgets(cat, 2, 20, " existing destination file and skips these files."));
printf("%s\n", catgets(cat, 2, 21, " /P Prompts for confirmation before creating each destination file."));
printf("%s\n", catgets(cat, 2, 22, " /Q Quiet mode, don't show copied filenames."));
printf("%s\n", catgets(cat, 2, 23, " /R Overwrite read-only files as well as unprotected files."));
printf("%s\n", catgets(cat, 2, 24, " /S Copies directories and subdirectories except empty ones."));
printf("%s\n", catgets(cat, 2, 25, " /T Creates directory tree without copying files. Empty directories"));
printf("%s\n", catgets(cat, 2, 26, " will not be copied. To copy them add switch /E."));
printf("%s\n", catgets(cat, 2, 27, " /V Verifies each new file."));
printf("%s\n", catgets(cat, 2, 28, " /W Waits for a keypress before beginning."));
printf("%s\n", catgets(cat, 2, 29, " /Y Suppresses prompting to confirm you want to overwrite an"));
printf("%s\n", catgets(cat, 2, 30, " existing destination file and overwrites these files."));
printf("%s\n", catgets(cat, 2, 31, " /-Y Causes prompting to confirm you want to overwrite an existing"));
printf("%s\n\n", catgets(cat, 2, 32, " destination file."));
printf("%s\n", catgets(cat, 2, 33, "The switch /Y or /N may be preset in the COPYCMD environment variable."));
printf("%s\n", catgets(cat, 2, 34, "This may be overridden with /-Y on the command line."));
}
@ -609,48 +596,55 @@ void build_name(char *dest,
/*-------------------------------------------------------------------------*/
/* Searches through the source directory (and its subdirectories) and calls */
/* Searchs through the source directory (and its subdirectories) and calls */
/* function "xcopy_file" for every found file. */
/*-------------------------------------------------------------------------*/
void xcopy_files(const char *src_pathname,
const char *src_filename,
const char *dest_pathname,
const char *dest_filename) {
char filepattern[MAXPATH],
new_src_pathname[MAXPATH],
new_dest_pathname[MAXPATH],
src_path_filename[MAXPATH],
dest_path_filename[MAXPATH],
tmp_filename[MAXFILE + MAXEXT],
tmp_pathname[MAXPATH];
char src_path_filename[MAXPATH],
dest_path_filename[MAXPATH];
struct ffblk fileblock;
int fileattrib,
done;
/* WARNING these path values are overwritten on recursive calls */
static char filepattern[MAXPATH],
tmp_filename[MAXFILE + MAXEXT],
tmp_pathname[MAXPATH];
if (switch_emptydir ||
switch_subdir ||
switch_tree) {
/* store current path in static variable, append path to it and revert back after copy */
char *end_new_src_pathname = new_src_pathname + strlen(new_src_pathname);
char *end_new_dest_pathname = new_dest_pathname + strlen(new_dest_pathname);
/* copy files in subdirectories too */
strmcpy(filepattern, src_pathname, sizeof(filepattern));
strmcat(filepattern, "*.*", sizeof(filepattern));
done = findfirst(filepattern, &fileblock, FA_DIREC);
while (!done) {
if ((fileblock.ff_attrib & FA_DIREC) != 0 &&
strcmp(fileblock.ff_name, ".") != 0 &&
strcmp(fileblock.ff_name, "..") != 0) {
/* build source pathname */
strmcpy(new_src_pathname, src_pathname, sizeof(new_src_pathname));
strmcat(new_src_pathname, fileblock.ff_name, sizeof(new_src_pathname));
strmcat(new_src_pathname, DIR_SEPARATOR, sizeof(new_src_pathname));
/*strmcpy(new_src_pathname, src_pathname, sizeof(new_src_pathname));*/
strmcat(end_new_src_pathname, fileblock.ff_name, sizeof(new_src_pathname));
strmcat(end_new_src_pathname, DIR_SEPARATOR, sizeof(new_src_pathname));
/* build destination pathname */
strmcpy(new_dest_pathname, dest_pathname, sizeof(new_dest_pathname));
strmcat(new_dest_pathname, fileblock.ff_name, sizeof(new_dest_pathname));
strmcat(new_dest_pathname, DIR_SEPARATOR, sizeof(new_dest_pathname));
/*strmcpy(new_dest_pathname, dest_pathname, sizeof(new_dest_pathname));*/
strmcat(end_new_dest_pathname, fileblock.ff_name, sizeof(new_dest_pathname));
strmcat(end_new_dest_pathname, DIR_SEPARATOR, sizeof(new_dest_pathname));
xcopy_files(new_src_pathname, src_filename,
new_dest_pathname, dest_filename);
*end_new_src_pathname = '\0';
*end_new_dest_pathname = '\0';
}
done = findnext(&fileblock);
@ -674,7 +668,7 @@ void xcopy_files(const char *src_pathname,
/* check if destination directory must be created */
if ((!done || switch_emptydir) &&
!dir_exists(dest_pathname)) {
!dir_exists(dest_pathname) && !switch_listmode) {
strmcpy(tmp_pathname, dest_pathname, sizeof(tmp_pathname));
if (make_dir(tmp_pathname) != 0) {
printf("%s %s\n", catgets(cat, 1, 20, "Unable to create directory"), tmp_pathname);
@ -714,27 +708,22 @@ void xcopy_files(const char *src_pathname,
}
}
/*-------------------------------------------------------------------------*/
/* Checks all dependencies of the source and destination file and calls */
/* function "copy_file". */
/*-------------------------------------------------------------------------*/
void xcopy_file(const char *src_filename,
const char *dest_filename) {
static char msg_prompt[256];
static struct stat src_statbuf;
static struct stat dest_statbuf;
static unsigned long cluster_size; /* in bytes */
static unsigned long free_clusters; /* count of clusters */
int dest_file_exists;
int fileattrib;
struct stat src_statbuf;
struct stat dest_statbuf;
#if defined(__TURBOC__) && !defined(__BORLANDC__)
struct diskfree_t disk;
#else
struct dfree disktable;
#endif
unsigned long free_diskspace = -1;
unsigned long bsec = 512;
char ch;
char msg_prompt[255];
unsigned int dos_version = 0;
struct DiskInfo diskinfo;
if (switch_prompt) {
/* ask for confirmation to create file */
@ -755,7 +744,7 @@ void xcopy_file(const char *src_filename,
}
/* check source file for read permission */
/* (only useful under an OS with the ability to deny read access) */
/* (only usefull under an OS with the ability to deny read access) */
if (access(src_filename, R_OK) != 0) {
printf("%s - %s\n", catgets(cat, 1, 22, "Read access denied"), src_filename);
if (switch_continue) {
@ -771,54 +760,24 @@ void xcopy_file(const char *src_filename,
stat((char *)src_filename, &src_statbuf);
dest_file_exists = !stat((char *)dest_filename, &dest_statbuf);
dos_version = getDOSVersion();
/* get amount of free disk space in destination drive (in clusters not bytes) */
getdiskfreeclusters(dest_drive, &cluster_size, &free_clusters);
/* get amount of free disk space in destination drive */
if(((dos_version >> 8) > 7) || (((dos_version >> 8) == 7) && ((dos_version & 0xFF) >= 10))){
//printf("%d %s", dest_drive, dest_drive);
if(!get_extendedDiskInfo(dest_drive, &diskinfo)){
bsec = diskinfo.bytesPerSector;
free_diskspace = diskinfo.availableClusters * diskinfo.sectorsPerCluster;
//printf("free_diskspace=%lu avail_clusters=%lu,sectors_per_cluster=%lu \n", free_diskspace, diskinfo.availableClusters, diskinfo.sectorsPerCluster);
}
else {
goto int21_36h; /* Try the old DOS method if failed */
}
}
else {
int21_36h:
#if defined(__TURBOC__) && !defined(__BORLANDC__)
if(_dos_getdiskfree(dest_drive, &disk) != 0) {
printf("Failed to obtain free disk space. Aborting\n");
exit(39);
}
bsec = disk.bytes_per_sector;
free_diskspace = (unsigned long) disk.avail_clusters * disk.sectors_per_cluster;
//printf("dest_drive=%d,free_diskspace=%lu avail_clusters=%u,sectors_per_cluster=%u \n",dest_drive, free_diskspace, disk.avail_clusters, disk.sectors_per_cluster);
#else
getdfree(dest_drive, &disktable);
bsec = disktable.df_bsec;
free_diskspace = (unsigned long) disktable.df_avail * disktable.df_sclus;
//printf("disktable.df_avail=%d,disktable.df_sclus=%d\n",disktable.df_avail * disktable.df_sclus);
//free_diskspace = (unsigned long) disktable.df_avail *
// (unsigned long) disktable.df_sclus *
// (unsigned long) disktable.df_bsec;
#endif
/* only copy files newer than requested date */
/* -1 =if exists then only copy newer, 0=copy regardless of date, >0 date to compare if newer */
if (switch_date > 0) {
/* check, that only files changed on or after the specified date */
/* are copied */
if (src_statbuf.st_mtime < switch_date) {
return;
}
}
if (dest_file_exists) {
if (switch_date) {
if (switch_date < 0) {
/* check, that only newer files are copied */
if (src_statbuf.st_mtime <= dest_statbuf.st_mtime) {
return;
}
}
else {
/* check, that only files changed on or after the specified date */
/* are copied */
if (src_statbuf.st_mtime < switch_date) {
return;
}
if (switch_date < 0) {
/* check, that only newer files are copied */
if (src_statbuf.st_mtime <= dest_statbuf.st_mtime) {
return;
}
}
@ -854,9 +813,11 @@ int21_36h:
}
/* check free space on destination disk */
/* *** was wrong, was: "if (src... > free... - dest...) ..." */
/* Note: if existing file is larger than current then always room for new file even if drive is full;
otherwise need to ensure enough free clusters to support additional file size (additional clusters).
*/
if ( (src_statbuf.st_size > dest_statbuf.st_size) &&
(((src_statbuf.st_size - dest_statbuf.st_size) / bsec) > free_diskspace) ) {
((((src_statbuf.st_size - dest_statbuf.st_size) + (cluster_size-1))/cluster_size) > free_clusters) ) {
printf("%s - %s\n", catgets(cat, 1, 23, "Insufficient disk space in destination path"), dest_filename);
catclose(cat);
exit(39);
@ -888,10 +849,11 @@ int21_36h:
}
else {
/* check free space on destination disk */
unsigned long st_size_sec = (unsigned long)src_statbuf.st_size / bsec;
if (st_size_sec > (unsigned long)free_diskspace) {
printf("%lu - %lu\n", st_size_sec, free_diskspace);
/* Note: files are stored in clusters, so we check if enough free clusters,
but we do this to avoid overflow of 32bit integers if freespace > 4GB
*/
if (((src_statbuf.st_size + (cluster_size-1))/cluster_size) > free_clusters) {
printf("%s - %s\n", catgets(cat, 1, 25, "Insufficient disk space in destination path"), dest_filename);
catclose(cat);
exit(39);
@ -910,7 +872,15 @@ int21_36h:
/* check, if file copying should be simulated */
if (!switch_listmode) {
copy_file(src_filename, dest_filename, switch_continue, switch_keep_attr, switch_archive_reset);
copy_file(src_filename, dest_filename, switch_continue);
fileattrib = _chmod(dest_filename, 0);
_chmod(dest_filename, 1, fileattrib & FA_ARCH);
if (switch_archive_reset) {
/* remove archive attribute from source file */
fileattrib = _chmod(src_filename, 0);
_chmod(src_filename, 1, fileattrib ^ FA_ARCH);
}
}
file_counter++;

File diff suppressed because it is too large Load Diff

View File

@ -403,56 +403,69 @@ Bitu CALLBACK_SetupExtra(Bitu callback, Bitu type, PhysPt physAddress, bool use_
phys_writeb(physAddress+0x0e,(uint8_t)0xcf); //An IRET Instruction
return (use_cb?0x13:0x0f);
case CB_IRQ1: // keyboard int9
phys_writeb(physAddress+0x00,(uint8_t)0x50); // push ax
if (machine == MCH_PCJR || IS_PC98_ARCH) {
/* NTS: NEC PC-98 does not have keyboard input on port 60h, it's a 8251 UART elsewhere.
*
* IBM PCjr reads the infrared input on NMI interrupt, which then calls INT 48h to
* translate to IBM PC/XT scan codes before passing AL directly to IRQ1 (INT 9).
* PCjr keyboard handlers, including games made for the PCjr, assume the scan code
* is in AL and do not read the I/O port */
phys_writew(physAddress+0x01,(uint16_t)0x9090); // nop, nop
}
else {
phys_writew(physAddress+0x01,(uint16_t)0x60e4); // in al, 0x60
}
if (IS_PC98_ARCH || IS_TANDY_ARCH) {
phys_writew(physAddress+0x03,(uint16_t)0x9090); // nop, nop
phys_writeb(physAddress+0x05,(uint8_t)0x90); // nop
phys_writew(physAddress+0x06,(uint16_t)0x9090); // nop, nop (PC-98 does not have INT 15h keyboard hook)
}
else {
phys_writew(physAddress+0x03,(uint16_t)0x4fb4); // mov ah, 0x4f
phys_writeb(physAddress+0x05,(uint8_t)0xf9); // stc
phys_writew(physAddress+0x06,(uint16_t)0x15cd); // int 15
}
if (machine == MCH_PCJR) {
/* IBM PCjr reads the infrared input on NMI interrupt, which then calls INT 48h to
* translate to IBM PC/XT scan codes before passing AL directly to IRQ1 (INT 9).
* PCjr keyboard handlers, including games made for the PCjr, assume the scan code
* is in AL and do not read the I/O port. */
if (use_cb) {
phys_writeb(physAddress+0x00,(uint8_t)0xFE); //GRP 4
phys_writeb(physAddress+0x01,(uint8_t)0x38); //Extra Callback instruction
phys_writew(physAddress+0x02,(uint16_t)callback); //The immediate word
physAddress+=4;
}
if (use_cb) {
if (IS_PC98_ARCH || IS_TANDY_ARCH)
phys_writew(physAddress+0x08,(uint16_t)0x9090); // nop nop
else
phys_writew(physAddress+0x08,(uint16_t)0x0473); // jc skip
phys_writeb(physAddress+0x0a,(uint8_t)0xFE); //GRP 4
phys_writeb(physAddress+0x0b,(uint8_t)0x38); //Extra Callback instruction
phys_writew(physAddress+0x0c,(uint16_t)callback); //The immediate word
// jump here to (skip):
physAddress+=6;
/* It wasn't an interrupt, so there's no need to ack */
phys_writeb(physAddress+0x00,(uint8_t)0xcf); //An IRET Instruction
return (use_cb?0x05:0x01);
}
else {
phys_writeb(physAddress+0x00,(uint8_t)0x50); // push ax
if (IS_PC98_ARCH) {
/* NTS: NEC PC-98 does not have keyboard input on port 60h, it's a 8251 UART elsewhere. */
phys_writew(physAddress+0x01,(uint16_t)0x9090); // nop, nop
}
else {
phys_writew(physAddress+0x01,(uint16_t)0x60e4); // in al, 0x60
}
if (IS_PC98_ARCH || IS_TANDY_ARCH) {
phys_writew(physAddress+0x03,(uint16_t)0x9090); // nop, nop
phys_writeb(physAddress+0x05,(uint8_t)0x90); // nop
phys_writew(physAddress+0x06,(uint16_t)0x9090); // nop, nop (PC-98 does not have INT 15h keyboard hook)
}
else {
phys_writew(physAddress+0x03,(uint16_t)0x4fb4); // mov ah, 0x4f
phys_writeb(physAddress+0x05,(uint8_t)0xf9); // stc
phys_writew(physAddress+0x06,(uint16_t)0x15cd); // int 15
}
if (use_cb) {
if (IS_PC98_ARCH || IS_TANDY_ARCH)
phys_writew(physAddress+0x08,(uint16_t)0x9090); // nop nop
else
phys_writew(physAddress+0x08,(uint16_t)0x0473); // jc skip
phys_writeb(physAddress+0x0a,(uint8_t)0xFE); //GRP 4
phys_writeb(physAddress+0x0b,(uint8_t)0x38); //Extra Callback instruction
phys_writew(physAddress+0x0c,(uint16_t)callback); //The immediate word
// jump here to (skip):
physAddress+=6;
}
phys_writeb(physAddress+0x08,(uint8_t)0xfa); // cli
phys_writew(physAddress+0x09,(uint16_t)0x20b0); // mov al, 0x20
phys_writew(physAddress+0x0b,(uint16_t)(IS_PC98_ARCH ? 0x00e6 : 0x20e6)); // out 0x20, al
phys_writeb(physAddress+0x0d,(uint8_t)0x58); // pop ax
phys_writeb(physAddress+0x0e,(uint8_t)0xcf); //An IRET Instruction
phys_writeb(physAddress+0x0f,(uint8_t)0xfa); // cli
phys_writew(physAddress+0x10,(uint16_t)0x20b0); // mov al, 0x20
phys_writew(physAddress+0x12,(uint16_t)0x20e6); // out 0x20, al
phys_writeb(physAddress+0x14,(uint8_t)0x55); // push bp
phys_writew(physAddress+0x15,(uint16_t)0x05cd); // int 5
phys_writeb(physAddress+0x17,(uint8_t)0x5d); // pop bp
phys_writeb(physAddress+0x18,(uint8_t)0x58); // pop ax
phys_writeb(physAddress+0x19,(uint8_t)0xcf); //An IRET Instruction
return (use_cb?0x20:0x1a);
}
phys_writeb(physAddress+0x08,(uint8_t)0xfa); // cli
phys_writew(physAddress+0x09,(uint16_t)0x20b0); // mov al, 0x20
phys_writew(physAddress+0x0b,(uint16_t)(IS_PC98_ARCH ? 0x00e6 : 0x20e6)); // out 0x20, al
phys_writeb(physAddress+0x0d,(uint8_t)0x58); // pop ax
phys_writeb(physAddress+0x0e,(uint8_t)0xcf); //An IRET Instruction
phys_writeb(physAddress+0x0f,(uint8_t)0xfa); // cli
phys_writew(physAddress+0x10,(uint16_t)0x20b0); // mov al, 0x20
phys_writew(physAddress+0x12,(uint16_t)0x20e6); // out 0x20, al
phys_writeb(physAddress+0x14,(uint8_t)0x55); // push bp
phys_writew(physAddress+0x15,(uint16_t)0x05cd); // int 5
phys_writeb(physAddress+0x17,(uint8_t)0x5d); // pop bp
phys_writeb(physAddress+0x18,(uint8_t)0x58); // pop ax
phys_writeb(physAddress+0x19,(uint8_t)0xcf); //An IRET Instruction
return (use_cb ?0x20:0x1a);
case CB_IRQ1_BREAK: // return from int9, when Ctrl-Break is detected; invokes int 1b
phys_writew(physAddress+0x00,(uint16_t)0x1bcd); // int 1b
phys_writeb(physAddress+0x02,(uint8_t)0xfa); // cli

View File

@ -103,6 +103,7 @@ enum BlockReturnDynX86 {
BR_Cycles,
BR_Link1,BR_Link2,
BR_Opcode,
BR_Opcode2,
BR_Iret,
BR_CallBack,
BR_SMCBlock,
@ -484,6 +485,11 @@ run_block:
CPU_Cycles=1;
if (!use_dynamic_core_with_paging) dosbox_allow_nonrecursive_page_fault = true;
return Safe_CPU_Core_Normal_Run();
case BR_Opcode2:
CPU_CycleLeft+=CPU_Cycles;
CPU_Cycles=2;
if (!use_dynamic_core_with_paging) dosbox_allow_nonrecursive_page_fault = true;
return Safe_CPU_Core_Normal_Run();
case BR_Link1:
case BR_Link2:
{

View File

@ -319,11 +319,11 @@ public:
}
return nullptr;
}
HostPt GetHostReadPt(Bitu phys_page) override {
HostPt GetHostReadPt(PageNum phys_page) override {
hostmem=old_pagehandler->GetHostReadPt(phys_page);
return hostmem;
}
HostPt GetHostWritePt(Bitu phys_page) override {
HostPt GetHostWritePt(PageNum phys_page) override {
return GetHostReadPt( phys_page );
}
public:

View File

@ -73,8 +73,8 @@ static struct DynDecodeDynX86 {
#endif
} decode;
bool PAGING_ForcePageInit(Bitu lin_addr);
static bool MakeCodePage(Bitu lin_addr,CodePageHandler * &cph) {
bool PAGING_ForcePageInit(LinearPt lin_addr);
static bool MakeCodePage(LinearPt lin_addr,CodePageHandler * &cph) {
uint8_t rdval;
const Bitu cflag = cpu.code.big ? PFLAG_HASCODE32:PFLAG_HASCODE16;
//Ensure page contains memory:
@ -103,8 +103,8 @@ static bool MakeCodePage(Bitu lin_addr,CodePageHandler * &cph) {
cph=nullptr; return false;
}
}
Bitu lin_page=lin_addr >> 12;
Bitu phys_page=lin_page;
const PageNum lin_page = PageNum(lin_addr >> 12);
PageNum phys_page = lin_page;
if (!PAGING_MakePhysPage(phys_page)) {
LOG_MSG("DYNX86:Can't find physpage");
cph=nullptr; return false;
@ -3152,13 +3152,7 @@ restart_prefix:
gen_releasereg(DREG(TMPB));
break;
case 0xfb: //STI
gen_releasereg(DREG(FLAGS));
gen_call_function((void *)&CPU_STI,"%Rd",DREG(TMPB));
dyn_check_bool_exception(DREG(TMPB));
gen_releasereg(DREG(TMPB));
dyn_check_irqrequest();
if (max_opcodes<=0) max_opcodes=1; //Allow 1 extra opcode
break;
goto illegalopcode2; // signal "illegal" opcode so the core reflects to normal core which can then properly do the STI delay
case 0xfc: //CLD
gen_protectflags();
gen_dop_word_imm(DOP_AND,true,DREG(FLAGS),~FLAG_DF);
@ -3283,6 +3277,13 @@ illegalopcode:
gen_return(BR_Opcode);
dyn_closeblock();
goto finish_block;
illegalopcode2:
dyn_set_eip_last();
dyn_reduce_cycles();
dyn_save_critical_regs();
gen_return(BR_Opcode2);
dyn_closeblock();
goto finish_block;
finish_block:
/* Setup the correct end-address */
decode.active_block->page.end=(uint16_t)--decode.page.index;

Some files were not shown because too many files have changed in this diff Show More