Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 0:806c2f2a7d47, committed 2011-06-29
- Comitter:
- gertk
- Date:
- Wed Jun 29 14:25:56 2011 +0000
- Commit message:
- preliminary version
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bbc_0100.h Wed Jun 29 14:25:56 2011 +0000
@@ -0,0 +1,851 @@
+// the BBC Basic rom for Z80
+// this is the CP/M version
+static const char rom[] = {
+ 0xc3, 0x2a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x50, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+
+ 0xc3, 0x2a, 0x01, 0xc3, 0x97, 0x01, 0xc3, 0x78, 0x0e, 0xc3, 0xd6, 0x07, 0xc3, 0xe6, 0x0c, 0xc3,
+ 0xdd, 0x0c, 0xc3, 0x86, 0x08, 0xc3, 0xaa, 0x08, 0xc3, 0x72, 0x0d, 0xc3, 0xf7, 0xff, 0xc3, 0x98,
+ 0x32, 0xc3, 0x7b, 0x32, 0xc3, 0xb2, 0x32, 0xc3, 0xd9, 0x31, 0x21, 0x00, 0x37, 0xf9, 0x36, 0x0a,
+ 0x2c, 0x36, 0x09, 0x2c, 0xaf, 0x77, 0x2c, 0x20, 0xfc, 0x3d, 0x32, 0xfe, 0x37, 0x21, 0x76, 0x01,
+ 0x22, 0xee, 0x37, 0xcd, 0x64, 0x34, 0xed, 0x53, 0xe4, 0x37, 0x22, 0xdc, 0x37, 0xcd, 0xa2, 0x08,
+ 0xc2, 0x6b, 0x0d, 0xcd, 0xe6, 0x0c, 0x41, 0x63, 0x6f, 0x72, 0x6e, 0x20, 0x42, 0x42, 0x43, 0x20,
+ 0x42, 0x41, 0x53, 0x49, 0x43, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x32, 0x2e,
+ 0x32, 0x30, 0x20, 0x20, 0x0d, 0x0a, 0x28, 0x43, 0x29, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69,
+ 0x67, 0x68, 0x74, 0x20, 0x52, 0x2e, 0x54, 0x2e, 0x52, 0x75, 0x73, 0x73, 0x65, 0x6c, 0x6c, 0x20,
+ 0x31, 0x39, 0x38, 0x33, 0x0d, 0x0a, 0x00, 0xf6, 0x37, 0xed, 0x7b, 0xe4, 0x37, 0xcd, 0x15, 0x13,
+ 0x21, 0xfe, 0x37, 0x7e, 0xe6, 0x0f, 0xf6, 0x30, 0x77, 0x21, 0x00, 0x00, 0x22, 0xec, 0x37, 0x22,
+ 0xf4, 0x37, 0x2a, 0xea, 0x37, 0x22, 0xe6, 0x37, 0x7c, 0xb5, 0x28, 0x17, 0xe5, 0xcd, 0xe3, 0x09,
+ 0xe1, 0xed, 0x4b, 0xff, 0x37, 0x06, 0x00, 0x09, 0xda, 0xf1, 0x2c, 0x22, 0xea, 0x37, 0x3e, 0x20,
+ 0xcd, 0x52, 0x09, 0x21, 0x00, 0x35, 0xcd, 0x99, 0x34, 0xaf, 0x32, 0xfb, 0x37, 0xfd, 0x21, 0x00,
+ 0x35, 0xcd, 0x9f, 0x0b, 0xcd, 0x7f, 0x2f, 0x7c, 0xb5, 0x28, 0x03, 0x22, 0xe6, 0x37, 0x11, 0x00,
+ 0x36, 0x0e, 0x01, 0xcd, 0x10, 0x0c, 0x12, 0xaf, 0x47, 0x4b, 0x13, 0x12, 0x2a, 0xe6, 0x37, 0x7c,
+ 0xb5, 0xfd, 0x21, 0x00, 0x36, 0xca, 0xa2, 0x0d, 0xc5, 0xe5, 0xcd, 0x86, 0x08, 0xe1, 0xcd, 0x89,
+ 0x09, 0xcc, 0x46, 0x08, 0xc1, 0x79, 0xb7, 0xca, 0x98, 0x01, 0xc6, 0x04, 0x4f, 0xd5, 0xc5, 0xeb,
+ 0x2a, 0xde, 0x37, 0xe5, 0x09, 0xe5, 0x24, 0xaf, 0xed, 0x72, 0xe1, 0xd2, 0xc1, 0x07, 0x22, 0xde,
+ 0x37, 0xe3, 0xe5, 0x23, 0xb7, 0xed, 0x52, 0x44, 0x4d, 0xe1, 0xd1, 0x28, 0x02, 0xed, 0xb8, 0xc1,
+ 0xd1, 0x23, 0x71, 0x23, 0x73, 0x23, 0x72, 0x23, 0x11, 0x00, 0x36, 0xeb, 0x0d, 0x0d, 0x0d, 0xed,
+ 0xb0, 0xcd, 0x7b, 0x08, 0xc3, 0x98, 0x01, 0x80, 0x41, 0x4e, 0x44, 0x94, 0x41, 0x42, 0x53, 0x95,
+ 0x41, 0x43, 0x53, 0x96, 0x41, 0x44, 0x56, 0x41, 0x4c, 0x97, 0x41, 0x53, 0x43, 0x98, 0x41, 0x53,
+ 0x4e, 0x99, 0x41, 0x54, 0x4e, 0xc6, 0x41, 0x55, 0x54, 0x4f, 0x9a, 0x42, 0x47, 0x45, 0x54, 0x00,
+ 0xd5, 0x42, 0x50, 0x55, 0x54, 0x00, 0xfb, 0x43, 0x4f, 0x4c, 0x4f, 0x55, 0x52, 0xfb, 0x43, 0x4f,
+ 0x4c, 0x4f, 0x52, 0xd6, 0x43, 0x41, 0x4c, 0x4c, 0xd7, 0x43, 0x48, 0x41, 0x49, 0x4e, 0xbd, 0x43,
+ 0x48, 0x52, 0x24, 0xd8, 0x43, 0x4c, 0x45, 0x41, 0x52, 0x00, 0xd9, 0x43, 0x4c, 0x4f, 0x53, 0x45,
+ 0x00, 0xda, 0x43, 0x4c, 0x47, 0x00, 0xdb, 0x43, 0x4c, 0x53, 0x00, 0x9b, 0x43, 0x4f, 0x53, 0x9c,
+ 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x00, 0xdc, 0x44, 0x41, 0x54, 0x41, 0x9d, 0x44, 0x45, 0x47, 0xdd,
+ 0x44, 0x45, 0x46, 0xc7, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x81, 0x44, 0x49, 0x56, 0xde, 0x44,
+ 0x49, 0x4d, 0xdf, 0x44, 0x52, 0x41, 0x57, 0xe1, 0x45, 0x4e, 0x44, 0x50, 0x52, 0x4f, 0x43, 0x00,
+ 0xe0, 0x45, 0x4e, 0x44, 0x00, 0xe2, 0x45, 0x4e, 0x56, 0x45, 0x4c, 0x4f, 0x50, 0x45, 0x8b, 0x45,
+ 0x4c, 0x53, 0x45, 0xa0, 0x45, 0x56, 0x41, 0x4c, 0x9e, 0x45, 0x52, 0x4c, 0x00, 0x85, 0x45, 0x52,
+ 0x52, 0x4f, 0x52, 0xc5, 0x45, 0x4f, 0x46, 0x00, 0x82, 0x45, 0x4f, 0x52, 0x9f, 0x45, 0x52, 0x52,
+ 0x00, 0xa1, 0x45, 0x58, 0x50, 0xa2, 0x45, 0x58, 0x54, 0x00, 0xe3, 0x46, 0x4f, 0x52, 0xa3, 0x46,
+ 0x41, 0x4c, 0x53, 0x45, 0x00, 0xa4, 0x46, 0x4e, 0xe5, 0x47, 0x4f, 0x54, 0x4f, 0xbe, 0x47, 0x45,
+ 0x54, 0x24, 0xa5, 0x47, 0x45, 0x54, 0xe4, 0x47, 0x4f, 0x53, 0x55, 0x42, 0xe6, 0x47, 0x43, 0x4f,
+ 0x4c, 0x93, 0x48, 0x49, 0x4d, 0x45, 0x4d, 0x00, 0xe8, 0x49, 0x4e, 0x50, 0x55, 0x54, 0xe7, 0x49,
+ 0x46, 0xbf, 0x49, 0x4e, 0x4b, 0x45, 0x59, 0x24, 0xa6, 0x49, 0x4e, 0x4b, 0x45, 0x59, 0xa8, 0x49,
+ 0x4e, 0x54, 0xa7, 0x49, 0x4e, 0x53, 0x54, 0x52, 0x28, 0xc9, 0x4c, 0x49, 0x53, 0x54, 0x86, 0x4c,
+ 0x49, 0x4e, 0x45, 0xc8, 0x4c, 0x4f, 0x41, 0x44, 0x92, 0x4c, 0x4f, 0x4d, 0x45, 0x4d, 0x00, 0xea,
+ 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0xc0, 0x4c, 0x45, 0x46, 0x54, 0x24, 0x28, 0xa9, 0x4c, 0x45, 0x4e,
+ 0xe9, 0x4c, 0x45, 0x54, 0xab, 0x4c, 0x4f, 0x47, 0xaa, 0x4c, 0x4e, 0xc1, 0x4d, 0x49, 0x44, 0x24,
+ 0x28, 0xeb, 0x4d, 0x4f, 0x44, 0x45, 0x83, 0x4d, 0x4f, 0x44, 0xec, 0x4d, 0x4f, 0x56, 0x45, 0xed,
+ 0x4e, 0x45, 0x58, 0x54, 0xca, 0x4e, 0x45, 0x57, 0x00, 0xac, 0x4e, 0x4f, 0x54, 0xcb, 0x4f, 0x4c,
+ 0x44, 0x00, 0xee, 0x4f, 0x4e, 0x87, 0x4f, 0x46, 0x46, 0x84, 0x4f, 0x52, 0x8e, 0x4f, 0x50, 0x45,
+ 0x4e, 0x49, 0x4e, 0xae, 0x4f, 0x50, 0x45, 0x4e, 0x4f, 0x55, 0x54, 0xad, 0x4f, 0x50, 0x45, 0x4e,
+ 0x55, 0x50, 0xff, 0x4f, 0x53, 0x43, 0x4c, 0x49, 0xf1, 0x50, 0x52, 0x49, 0x4e, 0x54, 0x90, 0x50,
+ 0x41, 0x47, 0x45, 0x00, 0x8f, 0x50, 0x54, 0x52, 0x00, 0xaf, 0x50, 0x49, 0x00, 0xf0, 0x50, 0x4c,
+ 0x4f, 0x54, 0xb0, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x28, 0xf2, 0x50, 0x52, 0x4f, 0x43, 0xb1, 0x50,
+ 0x4f, 0x53, 0x00, 0xce, 0x50, 0x55, 0x54, 0xf8, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x00, 0xf5,
+ 0x52, 0x45, 0x50, 0x45, 0x41, 0x54, 0xf6, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x00, 0xf3, 0x52,
+ 0x45, 0x41, 0x44, 0xf4, 0x52, 0x45, 0x4d, 0xf9, 0x52, 0x55, 0x4e, 0x00, 0xb2, 0x52, 0x41, 0x44,
+ 0xf7, 0x52, 0x45, 0x53, 0x54, 0x4f, 0x52, 0x45, 0xc2, 0x52, 0x49, 0x47, 0x48, 0x54, 0x24, 0x28,
+ 0xb3, 0x52, 0x4e, 0x44, 0x00, 0xcc, 0x52, 0x45, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x88, 0x53,
+ 0x54, 0x45, 0x50, 0xcd, 0x53, 0x41, 0x56, 0x45, 0xb4, 0x53, 0x47, 0x4e, 0xb5, 0x53, 0x49, 0x4e,
+ 0xb6, 0x53, 0x51, 0x52, 0x89, 0x53, 0x50, 0x43, 0xc3, 0x53, 0x54, 0x52, 0x24, 0xc4, 0x53, 0x54,
+ 0x52, 0x49, 0x4e, 0x47, 0x24, 0x28, 0xd4, 0x53, 0x4f, 0x55, 0x4e, 0x44, 0xfa, 0x53, 0x54, 0x4f,
+ 0x50, 0x00, 0xb7, 0x54, 0x41, 0x4e, 0x8c, 0x54, 0x48, 0x45, 0x4e, 0xb8, 0x54, 0x4f, 0x8a, 0x54,
+ 0x41, 0x42, 0x28, 0xfc, 0x54, 0x52, 0x41, 0x43, 0x45, 0x91, 0x54, 0x49, 0x4d, 0x45, 0x00, 0xb9,
+ 0x54, 0x52, 0x55, 0x45, 0x00, 0xfd, 0x55, 0x4e, 0x54, 0x49, 0x4c, 0xba, 0x55, 0x53, 0x52, 0xef,
+ 0x56, 0x44, 0x55, 0xbb, 0x56, 0x41, 0x4c, 0xbc, 0x56, 0x50, 0x4f, 0x53, 0x00, 0xfe, 0x57, 0x49,
+ 0x44, 0x54, 0x48, 0xd3, 0x48, 0x49, 0x4d, 0x45, 0x4d, 0xd2, 0x4c, 0x4f, 0x4d, 0x45, 0x4d, 0xd0,
+ 0x50, 0x41, 0x47, 0x45, 0xcf, 0x50, 0x54, 0x52, 0xd1, 0x54, 0x49, 0x4d, 0x45, 0x01, 0x4d, 0x69,
+ 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x02, 0x4e, 0x6f, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x03,
+ 0x42, 0x61, 0x64, 0x20, 0x04, 0x20, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x05, 0x76, 0x61, 0x72, 0x69,
+ 0x61, 0x62, 0x6c, 0x65, 0x06, 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x07, 0x4e, 0x6f, 0x20, 0x08,
+ 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0xff, 0xff, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x00, 0x06, 0x04,
+ 0x00, 0x00, 0x00, 0x4d, 0x69, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x00, 0x01, 0x2c, 0x00, 0x54, 0x79,
+ 0x70, 0x65, 0x20, 0x6d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x00, 0x07, 0xa4, 0x00, 0x00,
+ 0x01, 0x22, 0x00, 0x03, 0xde, 0x00, 0xde, 0x08, 0x00, 0x4e, 0x6f, 0x74, 0x20, 0xea, 0x00, 0x07,
+ 0xf2, 0x00, 0x41, 0x72, 0x72, 0x61, 0x79, 0x00, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70,
+ 0x74, 0x00, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x00, 0x45,
+ 0x73, 0x63, 0x61, 0x70, 0x65, 0x00, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x62,
+ 0x79, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x00, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f,
+ 0x6f, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x00, 0x54, 0x6f, 0x6f, 0x20, 0x62, 0x69, 0x67, 0x00, 0x2d,
+ 0x76, 0x65, 0x20, 0x72, 0x6f, 0x6f, 0x74, 0x00, 0x4c, 0x6f, 0x67, 0x04, 0x00, 0x41, 0x63, 0x63,
+ 0x75, 0x72, 0x61, 0x63, 0x79, 0x20, 0x6c, 0x6f, 0x73, 0x74, 0x00, 0x45, 0x78, 0x70, 0x04, 0x00,
+ 0x00, 0x02, 0x05, 0x00, 0x01, 0x29, 0x00, 0x03, 0x48, 0x45, 0x58, 0x00, 0x02, 0xa4, 0x2f, 0xf2,
+ 0x00, 0x03, 0x63, 0x61, 0x6c, 0x6c, 0x00, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73,
+ 0x00, 0x07, 0xe3, 0x00, 0x43, 0x61, 0x6e, 0x27, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20,
+ 0xe3, 0x00, 0xe3, 0x20, 0x05, 0x00, 0x00, 0x07, 0xb8, 0x00, 0x00, 0x07, 0xe4, 0x00, 0xee, 0x20,
+ 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x00, 0xee, 0x04, 0x00, 0x02, 0x6c, 0x69, 0x6e, 0x65, 0x00,
+ 0x06, 0x20, 0xdc, 0x00, 0x07, 0xf5, 0x00, 0x00, 0x01, 0x23, 0x00, 0xcd, 0x86, 0x08, 0xcd, 0xd2,
+ 0x0b, 0x7e, 0xb7, 0x28, 0x51, 0x23, 0x5e, 0x23, 0x56, 0x7a, 0xb3, 0x28, 0x1a, 0x2b, 0x2b, 0xeb,
+ 0x37, 0xed, 0x42, 0xeb, 0x30, 0x40, 0xc5, 0xcd, 0x46, 0x08, 0xc1, 0x18, 0xe4, 0xfd, 0x23, 0xcd,
+ 0x46, 0x1f, 0xd9, 0x7d, 0x32, 0xfe, 0x37, 0xc3, 0x98, 0x01, 0xfe, 0x4f, 0x28, 0xef, 0xcd, 0xd2,
+ 0x0b, 0x78, 0xb1, 0x20, 0x01, 0x0b, 0xd9, 0xdd, 0x21, 0xfe, 0x37, 0x01, 0x00, 0x00, 0xd9, 0x3e,
+ 0x14, 0x08, 0x7e, 0xb7, 0x28, 0x10, 0x23, 0x5e, 0x23, 0x56, 0x7a, 0xb3, 0x28, 0xd9, 0x23, 0xd5,
+ 0xeb, 0x37, 0xed, 0x42, 0xeb, 0xd1, 0xd2, 0x97, 0x01, 0x22, 0xf4, 0x37, 0xcd, 0xc2, 0x08, 0x08,
+ 0x3d, 0xcd, 0x57, 0x34, 0x18, 0xdb, 0xcd, 0xaa, 0x08, 0xcd, 0xaf, 0x0b, 0xd9, 0x2a, 0xdc, 0x37,
+ 0xed, 0x5b, 0xe0, 0x37, 0x7e, 0xb7, 0x28, 0x2f, 0x23, 0x4e, 0x23, 0x46, 0x78, 0xb1, 0x28, 0xa7,
+ 0xeb, 0x71, 0x23, 0x70, 0x23, 0xd9, 0xe5, 0x09, 0xda, 0xf1, 0x2c, 0xd9, 0xc1, 0x71, 0x23, 0x70,
+ 0x23, 0xeb, 0x2b, 0x2b, 0xaf, 0x47, 0x4e, 0x09, 0xeb, 0xe5, 0x24, 0xed, 0x72, 0xe1, 0xeb, 0x38,
+ 0xd3, 0xcd, 0xd6, 0x07, 0xcc, 0x08, 0x00, 0xeb, 0x36, 0xff, 0x23, 0x36, 0xff, 0xed, 0x5b, 0xe0,
+ 0x37, 0xd9, 0x2a, 0xdc, 0x37, 0x4e, 0x79, 0xb7, 0x28, 0x9c, 0xd9, 0xeb, 0x23, 0x23, 0x5e, 0x23,
+ 0x56, 0x23, 0xd5, 0xeb, 0x22, 0xe6, 0x37, 0xd9, 0xd1, 0x23, 0x73, 0x23, 0x72, 0x23, 0x0d, 0x0d,
+ 0x0d, 0x06, 0x00, 0x3e, 0x8d, 0xed, 0xb1, 0x20, 0xdc, 0xc5, 0xe5, 0xe5, 0xfd, 0xe1, 0xd9, 0xcd,
+ 0xa1, 0x29, 0xd9, 0x44, 0x4d, 0x2a, 0xe0, 0x37, 0x5e, 0x23, 0x56, 0x23, 0xeb, 0xb7, 0xed, 0x42,
+ 0xeb, 0x5e, 0x23, 0x56, 0x23, 0x38, 0xf1, 0xeb, 0x28, 0x19, 0xcd, 0xe6, 0x0c, 0x46, 0x61, 0x69,
+ 0x6c, 0x65, 0x64, 0x20, 0x61, 0x74, 0x20, 0x00, 0x2a, 0xe6, 0x37, 0xcd, 0xdf, 0x09, 0xcd, 0x4b,
+ 0x09, 0x18, 0x06, 0xd1, 0xd5, 0x1b, 0xcd, 0xb4, 0x0c, 0xe1, 0xc1, 0x18, 0xb6, 0xcd, 0xaf, 0x0b,
+ 0x22, 0xea, 0x37, 0x79, 0x32, 0xff, 0x37, 0x18, 0x29, 0xcd, 0xe6, 0x0c, 0x03, 0x70, 0x72, 0x6f,
+ 0x67, 0x72, 0x61, 0x6d, 0x0d, 0x0a, 0x00, 0xcd, 0xa2, 0x08, 0x18, 0x16, 0x2a, 0xdc, 0x37, 0xe5,
+ 0x23, 0x23, 0x23, 0x01, 0xfc, 0x00, 0x3e, 0x0d, 0xed, 0xb1, 0x20, 0xdd, 0x7d, 0xe1, 0x77, 0xcd,
+ 0x7b, 0x08, 0xc3, 0x98, 0x01, 0xcd, 0x4f, 0x1f, 0x3e, 0x0d, 0x12, 0xcd, 0x61, 0x08, 0xcd, 0xaa,
+ 0x08, 0x18, 0x1b, 0xcd, 0x86, 0x08, 0xcd, 0xcb, 0x33, 0x3e, 0x0d, 0x12, 0xed, 0x5b, 0xdc, 0x37,
+ 0x2a, 0xde, 0x37, 0xb7, 0xed, 0x52, 0x44, 0x4d, 0x21, 0x00, 0x35, 0xcd, 0x62, 0x31, 0xc3, 0x97,
+ 0x01, 0xed, 0x7b, 0xe4, 0x37, 0x21, 0x38, 0x05, 0xb7, 0x28, 0x0a, 0x47, 0x08, 0xaf, 0xbe, 0x23,
+ 0x20, 0xfc, 0x10, 0xfa, 0x08, 0xe5, 0xe1, 0x22, 0xee, 0x37, 0xed, 0x7b, 0xe4, 0x37, 0x32, 0xfd,
+ 0x37, 0xcd, 0xa2, 0x09, 0x22, 0xf2, 0x37, 0xb7, 0x28, 0x0b, 0x2a, 0xec, 0x37, 0x7c, 0xb5, 0xe5,
+ 0xfd, 0xe1, 0xc2, 0xa2, 0x0d, 0x21, 0x00, 0x00, 0x22, 0xea, 0x37, 0x22, 0xe8, 0x37, 0xcd, 0x4b,
+ 0x09, 0xcd, 0xda, 0x0c, 0xcd, 0xcc, 0x09, 0xcd, 0x4b, 0x09, 0xc3, 0x98, 0x01, 0x21, 0x57, 0x02,
+ 0xfd, 0x7e, 0x00, 0x46, 0x23, 0xbe, 0x28, 0x08, 0xd8, 0x23, 0xcb, 0x7e, 0x28, 0xfb, 0x18, 0xf0,
+ 0xfd, 0xe5, 0x23, 0xcb, 0x7e, 0x20, 0x1b, 0xfd, 0x23, 0xfd, 0x7e, 0x00, 0xfe, 0x2e, 0x28, 0x12,
+ 0xbe, 0x28, 0xef, 0xcd, 0xf0, 0x0b, 0x38, 0x04, 0xfd, 0xe1, 0x18, 0xdd, 0x7e, 0xb7, 0x20, 0xf8,
+ 0xfd, 0x2b, 0xf1, 0xaf, 0x78, 0xc9, 0xd5, 0xe5, 0xe5, 0x06, 0x00, 0x4e, 0x09, 0xe5, 0xeb, 0x2a,
+ 0xde, 0x37, 0xed, 0x52, 0x44, 0x4d, 0xe1, 0xd1, 0xed, 0xb0, 0xed, 0x53, 0xde, 0x37, 0xe1, 0xd1,
+ 0xc9, 0xed, 0x5b, 0xdc, 0x37, 0x21, 0x00, 0xff, 0x39, 0xed, 0x52, 0x44, 0x4d, 0x21, 0x00, 0x35,
+ 0xcd, 0xa9, 0x31, 0xd4, 0xa2, 0x08, 0x3e, 0x00, 0xd2, 0xc1, 0x07, 0xcd, 0x86, 0x08, 0x2b, 0x36,
+ 0xff, 0x2b, 0x36, 0xff, 0x18, 0x24, 0x2a, 0xdc, 0x37, 0x06, 0x00, 0x3e, 0x0d, 0x4e, 0x0c, 0x0d,
+ 0x28, 0x09, 0x09, 0x2b, 0xbe, 0x23, 0x28, 0xf5, 0xc3, 0x69, 0x07, 0x23, 0x23, 0x23, 0x22, 0xde,
+ 0x37, 0xc9, 0x2a, 0xdc, 0x37, 0x36, 0x00, 0xcd, 0x9b, 0x08, 0xe5, 0x2a, 0xde, 0x37, 0x22, 0xe0,
+ 0x37, 0x22, 0xe2, 0x37, 0x21, 0x6c, 0x37, 0xc5, 0x06, 0x70, 0x36, 0x00, 0x23, 0x10, 0xfb, 0xc1,
+ 0xe1, 0xc9, 0xe5, 0xeb, 0xc5, 0xcd, 0xe3, 0x09, 0xc1, 0xe1, 0x7e, 0xfe, 0xed, 0xcc, 0x2e, 0x09,
+ 0xfe, 0xfd, 0xcc, 0x2e, 0x09, 0xd9, 0x3e, 0x20, 0xdd, 0xcb, 0x00, 0x46, 0xc4, 0x52, 0x09, 0x78,
+ 0x87, 0xdd, 0xcb, 0x00, 0x4e, 0xc4, 0x9c, 0x17, 0x79, 0x87, 0xdd, 0xcb, 0x00, 0x56, 0xc4, 0x9c,
+ 0x17, 0xd9, 0x7e, 0xfe, 0xe3, 0xcc, 0x2e, 0x09, 0xfe, 0xf5, 0xcc, 0x2e, 0x09, 0x1e, 0x00, 0x7e,
+ 0x23, 0xfe, 0x0d, 0x28, 0x46, 0xfe, 0x22, 0x20, 0x01, 0x1c, 0xcd, 0x22, 0x09, 0x18, 0xf0, 0xe5,
+ 0xfd, 0xe1, 0xc5, 0xcd, 0xa1, 0x29, 0xc1, 0xd9, 0xc5, 0xcd, 0xdf, 0x09, 0xc1, 0xd9, 0xfd, 0xe5,
+ 0xe1, 0xc9, 0xcb, 0x43, 0x20, 0x2c, 0xfe, 0x8d, 0x28, 0xe5, 0xcd, 0x6b, 0x09, 0x7e, 0xd9, 0xfe,
+ 0xe3, 0x28, 0x08, 0xfe, 0xed, 0x20, 0x05, 0x05, 0xf2, 0x3c, 0x09, 0x04, 0xfe, 0xf5, 0x28, 0x08,
+ 0xfe, 0xfd, 0x20, 0x05, 0x0d, 0xf2, 0x49, 0x09, 0x0c, 0xd9, 0xc9, 0x3e, 0x0d, 0xcd, 0x52, 0x09,
+ 0x3e, 0x0a, 0xcd, 0xee, 0xff, 0xd6, 0x0d, 0x28, 0x05, 0xd8, 0x3a, 0xfb, 0x37, 0x3c, 0x32, 0xfb,
+ 0x37, 0xc8, 0xe5, 0x2a, 0xfc, 0x37, 0xbd, 0xe1, 0xc0, 0x18, 0xe0, 0xfe, 0x8a, 0xea, 0x52, 0x09,
+ 0xc5, 0xe5, 0x21, 0x57, 0x02, 0x01, 0xdf, 0x02, 0xed, 0xb1, 0x7e, 0x23, 0xfe, 0x8a, 0xf5, 0xec,
+ 0x52, 0x09, 0xf1, 0xea, 0x7a, 0x09, 0xe1, 0xc1, 0xc9, 0xeb, 0x2a, 0xdc, 0x37, 0xaf, 0xbe, 0x3c,
+ 0xd0, 0xaf, 0x47, 0x4e, 0xe5, 0x23, 0x7e, 0x23, 0x66, 0x6f, 0xed, 0x52, 0xe1, 0xd0, 0x09, 0xc3,
+ 0x93, 0x09, 0x06, 0x00, 0xed, 0x5b, 0xf4, 0x37, 0x2a, 0xdc, 0x37, 0xb7, 0xed, 0x52, 0x19, 0x30,
+ 0x16, 0x4e, 0x0c, 0x0d, 0x28, 0x11, 0x09, 0xed, 0x52, 0x19, 0x38, 0xf5, 0xed, 0x42, 0x23, 0x5e,
+ 0x23, 0x56, 0xeb, 0x22, 0xe6, 0x37, 0xc9, 0x21, 0x00, 0x00, 0x18, 0xf7, 0x2a, 0xe6, 0x37, 0x7c,
+ 0xb5, 0xc8, 0xcd, 0xe6, 0x0c, 0x20, 0x61, 0x74, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x00, 0x0e,
+ 0x00, 0x18, 0x02, 0x0e, 0x20, 0x06, 0x05, 0x11, 0x10, 0x27, 0xaf, 0xed, 0x52, 0x3c, 0x30, 0xfb,
+ 0x19, 0x3d, 0x28, 0x04, 0xcb, 0xe1, 0xcb, 0xe9, 0xb1, 0xc4, 0x52, 0x09, 0x78, 0xfe, 0x05, 0x28,
+ 0x06, 0x29, 0x54, 0x5d, 0x29, 0x29, 0x19, 0x11, 0xe8, 0x03, 0x10, 0xde, 0x37, 0xc9, 0xcd, 0x5b,
+ 0x0b, 0xfd, 0x7e, 0x00, 0xfe, 0x28, 0x20, 0x68, 0x3e, 0x0e, 0xc3, 0xc1, 0x07, 0xfd, 0x7e, 0x00,
+ 0xfe, 0x24, 0x28, 0x62, 0xfe, 0x21, 0x28, 0x62, 0xfe, 0x3f, 0x28, 0x62, 0xcd, 0xd3, 0x0a, 0xc0,
+ 0xfd, 0x7e, 0x00, 0xfe, 0x28, 0x20, 0x41, 0xd5, 0x7e, 0xb7, 0x28, 0xdc, 0x23, 0x11, 0x00, 0x00,
+ 0xf5, 0xfd, 0x23, 0x18, 0x04, 0xf5, 0xcd, 0x39, 0x2f, 0xe5, 0xd5, 0xcd, 0x46, 0x1f, 0xd9, 0xd1,
+ 0xe3, 0x4e, 0x23, 0x46, 0x23, 0xe3, 0xeb, 0xd5, 0xcd, 0x15, 0x18, 0xd1, 0x19, 0xeb, 0xb7, 0xed,
+ 0x42, 0x3e, 0x0f, 0x30, 0xb5, 0xe1, 0xf1, 0x3d, 0x20, 0xdb, 0xcd, 0x45, 0x2f, 0xf1, 0xe5, 0xcd,
+ 0x08, 0x18, 0xe1, 0x19, 0x57, 0xfd, 0x7e, 0x00, 0xfe, 0x3f, 0x28, 0x1d, 0xfe, 0x21, 0x28, 0x15,
+ 0xe5, 0xdd, 0xe1, 0x7a, 0xbf, 0xc9, 0x3e, 0x80, 0x18, 0x05, 0x3e, 0x04, 0x18, 0x01, 0xaf, 0x21,
+ 0x00, 0x00, 0xf5, 0x18, 0x15, 0x06, 0x04, 0x18, 0x02, 0x06, 0x00, 0xe5, 0xdd, 0xe1, 0x7a, 0xfe,
+ 0x81, 0xc8, 0xc5, 0xcd, 0xeb, 0x1f, 0xcd, 0xf5, 0x2b, 0xd9, 0xe5, 0xfd, 0x23, 0xcd, 0x5d, 0x1f,
+ 0xd9, 0xd1, 0xf1, 0x19, 0xe5, 0xdd, 0xe1, 0xbf, 0xc9, 0xfd, 0x7e, 0x01, 0xcd, 0xf0, 0x0b, 0xd8,
+ 0xfd, 0x7e, 0x00, 0x21, 0xd8, 0x37, 0xfe, 0xa4, 0x28, 0x43, 0x21, 0xda, 0x37, 0xfe, 0xf2, 0x28,
+ 0x3c, 0x37, 0xc9, 0xd6, 0x40, 0xd8, 0x26, 0x00, 0xfe, 0x1b, 0x30, 0x1d, 0x87, 0x6f, 0xfd, 0x7e,
+ 0x01, 0xfe, 0x25, 0x20, 0x20, 0xfd, 0x7e, 0x02, 0xfe, 0x28, 0x28, 0x19, 0x29, 0x11, 0x00, 0x37,
+ 0x19, 0xfd, 0x23, 0xfd, 0x23, 0x16, 0x04, 0xaf, 0xc9, 0xfe, 0x1f, 0xd8, 0xfe, 0x3b, 0x3f, 0x3d,
+ 0xd8, 0xd6, 0x03, 0x87, 0x6f, 0x11, 0x6c, 0x37, 0x2d, 0x2d, 0x37, 0xf8, 0x19, 0x5e, 0x23, 0x56,
+ 0x7a, 0xb3, 0x28, 0x45, 0x62, 0x6b, 0x23, 0x23, 0xfd, 0xe5, 0x7e, 0x23, 0xfd, 0x23, 0xfd, 0xbe,
+ 0x00, 0x28, 0xf7, 0xb7, 0x28, 0x06, 0xfd, 0xe1, 0xeb, 0xc3, 0x0d, 0x0b, 0xfd, 0x2b, 0xfd, 0x7e,
+ 0x00, 0xfe, 0x28, 0x28, 0x13, 0xfd, 0x23, 0xcd, 0xe4, 0x0b, 0x38, 0x0c, 0xfe, 0x28, 0x28, 0xe6,
+ 0xfd, 0x7e, 0xff, 0xcd, 0xf0, 0x0b, 0x30, 0xde, 0xd1, 0xfd, 0x7e, 0xff, 0xfe, 0x24, 0x16, 0x81,
+ 0xc8, 0xfe, 0x25, 0x16, 0x04, 0xc8, 0x14, 0xbf, 0xc9, 0x3c, 0xc9, 0xaf, 0xed, 0x5b, 0xe2, 0x37,
+ 0x72, 0x2b, 0x73, 0xeb, 0x77, 0x23, 0x77, 0x23, 0xfd, 0x23, 0xcd, 0xe4, 0x0b, 0x38, 0x14, 0x77,
+ 0x23, 0xcd, 0xf0, 0x0b, 0x30, 0xf2, 0xfe, 0x28, 0x28, 0x09, 0xfd, 0x7e, 0x01, 0xfe, 0x28, 0x28,
+ 0xe7, 0xfd, 0x23, 0x36, 0x00, 0x23, 0xe5, 0xcd, 0x49, 0x0b, 0x3e, 0x05, 0xba, 0x28, 0x01, 0x3d,
+ 0x36, 0x00, 0x23, 0x3d, 0x20, 0xfa, 0x22, 0xe2, 0x37, 0xcd, 0x39, 0x16, 0xe1, 0xaf, 0xc9, 0xcd,
+ 0x7f, 0x2f, 0xcd, 0x00, 0x2d, 0xcd, 0xb4, 0x2b, 0x7c, 0xb5, 0xd9, 0xc8, 0xc3, 0xf1, 0x2c, 0xcd,
+ 0x9f, 0x0b, 0x7c, 0xb5, 0x20, 0x02, 0x2e, 0x0a, 0xcd, 0x3c, 0x17, 0xfd, 0x23, 0xe5, 0x21, 0x0a,
+ 0x00, 0xc4, 0x9f, 0x0b, 0xe3, 0xc1, 0x78, 0xb1, 0xc0, 0xcd, 0xd6, 0x07, 0x53, 0x69, 0x6c, 0x6c,
+ 0x79, 0x00, 0xcd, 0x9f, 0x0b, 0xcd, 0x3c, 0x17, 0xfd, 0x23, 0xe5, 0xc4, 0x9f, 0x0b, 0xe3, 0xcd,
+ 0x89, 0x09, 0xc1, 0xc9, 0xfd, 0x7e, 0x00, 0xfe, 0x24, 0xc8, 0xfe, 0x25, 0xc8, 0xfe, 0x28, 0xc8,
+ 0xfe, 0x30, 0xd8, 0xfe, 0x3a, 0x3f, 0xd0, 0xfe, 0x41, 0xd8, 0xfe, 0x5b, 0x3f, 0xd0, 0xfe, 0x5f,
+ 0xd8, 0xfe, 0x7b, 0x3f, 0xc9, 0xaf, 0xcd, 0xd6, 0x07, 0x86, 0x08, 0x00, 0x12, 0x13, 0xfd, 0x23,
+ 0x7b, 0xfe, 0xfc, 0x30, 0xf0, 0xfd, 0x7e, 0x00, 0xfe, 0x0d, 0xc8, 0xcd, 0xf0, 0x0b, 0x30, 0x04,
+ 0xcb, 0xa9, 0xcb, 0x99, 0xfe, 0x20, 0x28, 0xe4, 0xfe, 0x2c, 0x28, 0xe0, 0xfe, 0x47, 0x38, 0x02,
+ 0xcb, 0x99, 0xfe, 0x22, 0x20, 0x05, 0xcb, 0x11, 0x3f, 0xcb, 0x19, 0xcb, 0x61, 0x28, 0x10, 0xcb,
+ 0xa1, 0xc5, 0xd5, 0xcd, 0x9f, 0x0b, 0xd1, 0xc1, 0x7c, 0xb5, 0xc4, 0xb4, 0x0c, 0x18, 0xc1, 0x0d,
+ 0x28, 0x09, 0x0c, 0x20, 0xb7, 0xb7, 0xf4, 0x0d, 0x08, 0x18, 0x12, 0xfe, 0x2a, 0x28, 0x16, 0xb7,
+ 0xf4, 0x0d, 0x08, 0xfe, 0x8f, 0x38, 0x06, 0xfe, 0x94, 0x30, 0x02, 0xc6, 0x40, 0xfe, 0xf4, 0x28,
+ 0x04, 0xfe, 0xdc, 0x20, 0x02, 0xcb, 0xf1, 0xfe, 0xa4, 0x28, 0x09, 0xfe, 0xf2, 0x28, 0x05, 0xcd,
+ 0xf7, 0x0b, 0x38, 0x02, 0xcb, 0xe9, 0xfe, 0x26, 0x20, 0x02, 0xcb, 0xd9, 0x21, 0xab, 0x0c, 0xc5,
+ 0x01, 0x06, 0x00, 0xed, 0xb1, 0xc1, 0x20, 0x02, 0xcb, 0xe1, 0x21, 0xaf, 0x0c, 0xc5, 0x01, 0x05,
+ 0x00, 0xed, 0xb1, 0xc1, 0x20, 0x02, 0xcb, 0xc1, 0xc3, 0x0c, 0x0c, 0xe5, 0xe4, 0xf7, 0xfc, 0x8c,
+ 0x8b, 0xf5, 0x8d, 0x3a, 0xcb, 0xe1, 0xeb, 0x36, 0x8d, 0x23, 0x7a, 0xe6, 0xc0, 0x0f, 0x0f, 0x47,
+ 0x7b, 0xe6, 0xc0, 0xb0, 0x0f, 0x0f, 0xee, 0x54, 0x77, 0x23, 0x7b, 0xe6, 0x3f, 0xf6, 0x40, 0x77,
+ 0x23, 0x7a, 0xe6, 0x3f, 0xf6, 0x40, 0x77, 0x23, 0xeb, 0xc9, 0x2a, 0xee, 0x37, 0x7e, 0x23, 0xb7,
+ 0xc8, 0xcd, 0x6b, 0x09, 0x18, 0xf7, 0xe3, 0xcd, 0xdd, 0x0c, 0xe3, 0xc9, 0x5d, 0x07, 0x3b, 0x06,
+ 0x95, 0x07, 0x6a, 0x06, 0x77, 0x07, 0x7c, 0x07, 0xa6, 0x06, 0xa3, 0x07, 0xb4, 0x15, 0xdc, 0x32,
+ 0x91, 0x14, 0xa0, 0x14, 0xaf, 0x14, 0xc2, 0x14, 0x82, 0x30, 0x36, 0x15, 0x49, 0x15, 0x65, 0x0d,
+ 0x56, 0x14, 0x2d, 0x15, 0x06, 0x31, 0x33, 0x14, 0x18, 0x0e, 0x18, 0x0e, 0xc4, 0x0e, 0xbb, 0x30,
+ 0xca, 0x0d, 0x8f, 0x12, 0x54, 0x30, 0xfa, 0x10, 0xb5, 0x10, 0x9e, 0x10, 0x1e, 0x31, 0x06, 0x14,
+ 0x1a, 0x13, 0x37, 0x0e, 0x41, 0x12, 0xf2, 0x30, 0xb6, 0x30, 0x3f, 0x11, 0x42, 0x10, 0x0c, 0x15,
+ 0xc0, 0x30, 0x71, 0x0f, 0xc4, 0x11, 0xb5, 0x13, 0x18, 0x0e, 0xd0, 0x10, 0x50, 0x14, 0x5e, 0x14,
+ 0xc0, 0x10, 0x60, 0x0d, 0x3d, 0x14, 0x0e, 0x31, 0xf2, 0x14, 0xd8, 0x10, 0xe7, 0x14, 0x04, 0x0e,
+ 0xcd, 0x3c, 0x17, 0x28, 0x0d, 0xcd, 0x4f, 0x1f, 0x3e, 0x0d, 0x12, 0xed, 0x7b, 0xe4, 0x37, 0xcd,
+ 0x61, 0x08, 0xed, 0x7b, 0xe4, 0x37, 0xdd, 0x21, 0xf6, 0x37, 0xed, 0x5f, 0x28, 0xfc, 0x07, 0x07,
+ 0xdd, 0x77, 0x03, 0x9f, 0xdd, 0x77, 0x04, 0xcd, 0xaa, 0x08, 0x21, 0x00, 0x00, 0x22, 0xec, 0x37,
+ 0x2a, 0xdc, 0x37, 0x3e, 0xdc, 0xcd, 0xf2, 0x17, 0x22, 0xf0, 0x37, 0xfd, 0x2a, 0xdc, 0x37, 0xcd,
+ 0xd7, 0x0d, 0xfd, 0x22, 0xf4, 0x37, 0xcd, 0x57, 0x34, 0xcd, 0x7f, 0x2f, 0xfd, 0x23, 0xfe, 0x3a,
+ 0x28, 0xf7, 0xfe, 0x0d, 0x28, 0xe9, 0xd6, 0xc6, 0x38, 0x6c, 0x87, 0x4f, 0x06, 0x00, 0x21, 0xec,
+ 0x0c, 0x09, 0x7e, 0x23, 0x66, 0x6f, 0xcd, 0x7f, 0x2f, 0xe9, 0xcd, 0xa2, 0x09, 0x7c, 0xb5, 0xca,
+ 0x98, 0x01, 0x1e, 0x00, 0xc3, 0x97, 0x01, 0xfd, 0x7e, 0x00, 0x01, 0x03, 0x00, 0xfd, 0x09, 0xb7,
+ 0x28, 0xe8, 0x2a, 0xe8, 0x37, 0x7c, 0xb5, 0xc8, 0xfd, 0x56, 0xff, 0xfd, 0x5e, 0xfe, 0xed, 0x52,
+ 0xd8, 0xeb, 0x3e, 0x5b, 0xcd, 0x52, 0x09, 0xcd, 0xdf, 0x09, 0x3e, 0x5d, 0xcd, 0x52, 0x09, 0x3e,
+ 0x20, 0xc3, 0x52, 0x09, 0xcd, 0x4f, 0x1f, 0x3e, 0x0d, 0x12, 0x21, 0x00, 0x35, 0xcd, 0xf7, 0xff,
+ 0x18, 0x90, 0xfd, 0xe5, 0xe1, 0xcd, 0xf7, 0xff, 0xfd, 0xe5, 0xe1, 0x3e, 0x0d, 0x47, 0xed, 0xb1,
+ 0xe5, 0xfd, 0xe1, 0xc3, 0x9f, 0x0d, 0xfe, 0xc5, 0x28, 0xee, 0xfe, 0x64, 0x28, 0xe4, 0xfe, 0x77,
+ 0x28, 0x4b, 0xc3, 0xd0, 0x32, 0xfd, 0x2b, 0xcd, 0xc6, 0x15, 0xca, 0xa2, 0x0d, 0x38, 0x36, 0xf5,
+ 0xcd, 0x48, 0x17, 0xe5, 0xcd, 0x4f, 0x1f, 0xdd, 0xe1, 0xf1, 0xcd, 0x01, 0x16, 0xc3, 0xa2, 0x0d,
+ 0xcd, 0xd7, 0x0d, 0xfd, 0x22, 0xf4, 0x37, 0xcd, 0x57, 0x34, 0xcd, 0x3b, 0x18, 0x38, 0x16, 0xfe,
+ 0x0d, 0x28, 0xed, 0x21, 0xfe, 0x37, 0x7e, 0xe6, 0x0f, 0xf6, 0x30, 0x77, 0x18, 0xdf, 0xcd, 0x1d,
+ 0x0a, 0xc8, 0xd2, 0x0e, 0x0a, 0x3e, 0x10, 0x21, 0x3e, 0x11, 0xc3, 0xc1, 0x07, 0xcd, 0x36, 0x1e,
+ 0x43, 0xeb, 0xd9, 0xeb, 0xc1, 0x21, 0x1c, 0x17, 0xb7, 0xed, 0x42, 0x28, 0x19, 0x21, 0xc4, 0x11,
+ 0xb7, 0xed, 0x42, 0x3e, 0x07, 0x20, 0xe3, 0xfd, 0xe1, 0xfd, 0x22, 0xf4, 0x37, 0xeb, 0xd9, 0xeb,
+ 0x11, 0x00, 0x35, 0x58, 0x08, 0xc9, 0xdd, 0xe1, 0xc1, 0x78, 0xb7, 0xfa, 0xb7, 0x0e, 0xe1, 0xd9,
+ 0xe1, 0xd9, 0xcd, 0xda, 0x15, 0x18, 0xcd, 0x21, 0x00, 0x00, 0x39, 0xd5, 0x59, 0xcd, 0x04, 0x16,
+ 0xd1, 0xf9, 0x18, 0xc0, 0xcd, 0x1d, 0x0a, 0x38, 0x7b, 0xca, 0x4c, 0x0f, 0xcd, 0x5b, 0x0b, 0xe5,
+ 0xdd, 0xe1, 0xfd, 0x7e, 0x00, 0xfe, 0x28, 0x7a, 0x20, 0x72, 0xe5, 0xf5, 0x11, 0x01, 0x00, 0x42,
+ 0xfd, 0x23, 0xc5, 0xd5, 0xdd, 0xe5, 0xcd, 0x46, 0x1f, 0xcb, 0x7c, 0x20, 0x57, 0xd9, 0x23, 0xdd,
+ 0xe1, 0xdd, 0x23, 0xdd, 0x75, 0x00, 0xdd, 0x23, 0xdd, 0x74, 0x00, 0xc1, 0xcd, 0x15, 0x18, 0x38,
+ 0x46, 0xeb, 0xc1, 0x04, 0xfd, 0x7e, 0x00, 0xfe, 0x2c, 0x28, 0xd5, 0xcd, 0x45, 0x2f, 0xf1, 0xdd,
+ 0x23, 0xdd, 0xe3, 0xdd, 0x70, 0x00, 0xcd, 0x08, 0x18, 0xe1, 0x38, 0x2b, 0x19, 0x38, 0x28, 0xe5,
+ 0x24, 0x28, 0x24, 0xed, 0x72, 0x30, 0x20, 0xe1, 0x22, 0xe2, 0x37, 0x7a, 0xb3, 0x28, 0x06, 0x2b,
+ 0x36, 0x00, 0x1b, 0x18, 0xf6, 0xcd, 0x7f, 0x2f, 0xfe, 0x2c, 0xc2, 0xa2, 0x0d, 0xfd, 0x23, 0xcd,
+ 0x7f, 0x2f, 0x18, 0x80, 0x3e, 0x0a, 0x21, 0x3e, 0x0b, 0xc3, 0xc1, 0x07, 0xb7, 0x28, 0xf5, 0xfa,
+ 0x44, 0x0f, 0x47, 0xfd, 0x7e, 0xff, 0xfe, 0x29, 0x78, 0x28, 0xe9, 0x2a, 0xe2, 0x37, 0xd9, 0x21,
+ 0x00, 0x00, 0x4c, 0xcd, 0xda, 0x15, 0xcd, 0x46, 0x1f, 0xd9, 0x23, 0xeb, 0x2a, 0xe2, 0x37, 0x18,
+ 0xab, 0xfe, 0x23, 0x20, 0x67, 0xcd, 0x33, 0x18, 0xcd, 0x7f, 0x2f, 0xfe, 0x2c, 0xc2, 0xa2, 0x0d,
+ 0xfd, 0x23, 0xd5, 0xcd, 0x36, 0x1e, 0x08, 0xfa, 0xa5, 0x0f, 0xd1, 0xc5, 0xfe, 0x05, 0xca, 0x5b,
+ 0x33, 0x3e, 0x40, 0xcd, 0x7b, 0x32, 0xcd, 0x78, 0x33, 0xcd, 0x7c, 0x33, 0xcd, 0x80, 0x33, 0xcd,
+ 0x86, 0x33, 0xc1, 0x18, 0xd3, 0x26, 0x35, 0x6b, 0xd1, 0xaf, 0xcd, 0x7b, 0x32, 0x7d, 0xcd, 0x7b,
+ 0x32, 0x2c, 0x2d, 0x28, 0xc3, 0x2d, 0x7e, 0xcd, 0x7b, 0x32, 0x18, 0xf5, 0x06, 0x02, 0x18, 0x22,
+ 0x01, 0x00, 0x01, 0x18, 0x1d, 0x21, 0x00, 0x37, 0xaf, 0xbe, 0x28, 0x10, 0x3a, 0xfb, 0x37, 0xb7,
+ 0x28, 0x0a, 0x96, 0x28, 0x07, 0x30, 0xfb, 0xed, 0x44, 0xcd, 0x9c, 0x17, 0x3a, 0x00, 0x37, 0x4f,
+ 0x06, 0x00, 0xcd, 0x3c, 0x17, 0x28, 0x38, 0xcb, 0x80, 0xfd, 0x23, 0xfe, 0x7e, 0x28, 0xcd, 0xfe,
+ 0x3b, 0x28, 0xcd, 0xfe, 0x2c, 0x28, 0xce, 0xcd, 0x55, 0x17, 0x28, 0xe6, 0xfd, 0x2b, 0xc5, 0xcd,
+ 0x36, 0x1e, 0x08, 0xfa, 0x19, 0x10, 0xd1, 0xd5, 0xcb, 0x4a, 0xf5, 0xcc, 0x0f, 0x2a, 0xf1, 0xc4,
+ 0xce, 0x29, 0xc1, 0xc5, 0x79, 0x93, 0xd4, 0x9c, 0x17, 0xc1, 0xcd, 0xaa, 0x17, 0x18, 0xc3, 0xcb,
+ 0x40, 0xcc, 0x4b, 0x09, 0xc3, 0xa2, 0x0d, 0xfd, 0x23, 0x21, 0x00, 0x00, 0x22, 0xec, 0x37, 0xcd,
+ 0x7f, 0x2f, 0xfe, 0x87, 0xfd, 0x23, 0xca, 0xa2, 0x0d, 0xfd, 0x2b, 0xfd, 0x22, 0xec, 0x37, 0xc3,
+ 0x18, 0x0e, 0xfe, 0x85, 0x28, 0xe1, 0xcd, 0x46, 0x1f, 0xfd, 0x7e, 0x00, 0xfd, 0x23, 0xfe, 0xe5,
+ 0x28, 0x06, 0xfe, 0xe4, 0x3e, 0x27, 0x20, 0x43, 0xd9, 0xe5, 0xd9, 0xc1, 0x08, 0x78, 0xb4, 0xb5,
+ 0x20, 0x29, 0xb1, 0x28, 0x26, 0x08, 0x47, 0x0d, 0x28, 0x0e, 0xcd, 0x3c, 0x17, 0x28, 0x1c, 0xfd,
+ 0x23, 0xfe, 0x2c, 0x20, 0xf5, 0x0d, 0x20, 0xf2, 0xc5, 0xcd, 0x5d, 0x1f, 0xc1, 0x78, 0xfe, 0xe5,
+ 0x28, 0x25, 0xcd, 0x3c, 0x17, 0x28, 0x31, 0xfd, 0x23, 0x18, 0xf7, 0xfd, 0x7e, 0x00, 0xfd, 0x23,
+ 0xfe, 0x8b, 0xca, 0x18, 0x14, 0xfe, 0x0d, 0x20, 0xf2, 0x3e, 0x28, 0xc3, 0xc1, 0x07, 0xcd, 0x5d,
+ 0x1f, 0xcd, 0x3c, 0x17, 0xc2, 0x75, 0x0e, 0xd9, 0xcd, 0x89, 0x09, 0xe5, 0xfd, 0xe1, 0xca, 0x9f,
+ 0x0d, 0x3e, 0x29, 0x18, 0xe6, 0xcd, 0x5d, 0x1f, 0xfd, 0xe5, 0xcd, 0x39, 0x16, 0xcd, 0xa1, 0x10,
+ 0xd1, 0x21, 0xc0, 0x10, 0xb7, 0xed, 0x52, 0xfd, 0xe1, 0xca, 0xa2, 0x0d, 0x3e, 0x26, 0x18, 0xcb,
+ 0xfd, 0xe5, 0xcd, 0x39, 0x16, 0xcd, 0xa2, 0x0d, 0xc1, 0xc5, 0x21, 0xd8, 0x10, 0xb7, 0xed, 0x42,
+ 0x3e, 0x2b, 0x20, 0xb7, 0xcd, 0x46, 0x1f, 0xcd, 0xf6, 0x2c, 0xc1, 0xd1, 0x20, 0x05, 0xd5, 0xc5,
+ 0xd5, 0xfd, 0xe1, 0xc3, 0xa2, 0x0d, 0x3e, 0x22, 0x18, 0xa1, 0xcd, 0xc6, 0x15, 0x20, 0xf7, 0xf5,
+ 0xfd, 0x7e, 0x00, 0xfe, 0xb8, 0x3e, 0x24, 0x20, 0x92, 0xfd, 0x23, 0xdd, 0xe5, 0xcd, 0x3f, 0x1f,
+ 0xdd, 0xe1, 0xf1, 0x47, 0xc5, 0xe5, 0x21, 0x00, 0x00, 0x4c, 0xd9, 0xe5, 0x21, 0x01, 0x00, 0xd9,
+ 0xfd, 0x7e, 0x00, 0xfe, 0x88, 0x20, 0x09, 0xfd, 0x23, 0xdd, 0xe5, 0xcd, 0x3f, 0x1f, 0xdd, 0xe1,
+ 0xc5, 0xe5, 0xd9, 0xe5, 0xd9, 0xfd, 0xe5, 0xdd, 0xe5, 0xcd, 0x39, 0x16, 0xcd, 0xa2, 0x0d, 0xc1,
+ 0x21, 0x3f, 0x11, 0xb7, 0xed, 0x42, 0x3e, 0x20, 0x20, 0x73, 0xcd, 0x3c, 0x17, 0xe1, 0xe5, 0xc5,
+ 0xe5, 0xc4, 0x1d, 0x0a, 0xd1, 0xeb, 0xb7, 0xed, 0x52, 0x20, 0x50, 0xd5, 0xdd, 0x21, 0x08, 0x00,
+ 0xdd, 0x39, 0xcd, 0xa6, 0x20, 0xdd, 0x7e, 0x0b, 0xdd, 0xe1, 0xcd, 0xeb, 0x1f, 0xcb, 0x7a, 0xf5,
+ 0x3e, 0x0b, 0xcd, 0x98, 0x2f, 0xf1, 0xf5, 0xcd, 0xda, 0x15, 0xdd, 0x21, 0x0e, 0x00, 0xdd, 0x39,
+ 0xcd, 0xa6, 0x20, 0xf1, 0xcc, 0xdb, 0x2c, 0x3e, 0x08, 0xcd, 0x98, 0x2f, 0x24, 0x20, 0x11, 0x21,
+ 0x12, 0x00, 0x39, 0xf9, 0xcd, 0x7f, 0x2f, 0xfe, 0x2c, 0xc2, 0xa2, 0x0d, 0xfd, 0x23, 0x18, 0x9f,
+ 0xc1, 0xd1, 0xfd, 0xe1, 0xfd, 0xe5, 0xd5, 0xc5, 0xc3, 0xa2, 0x0d, 0x21, 0x12, 0x00, 0x39, 0xf9,
+ 0xc1, 0x21, 0x3f, 0x11, 0xed, 0x42, 0xe1, 0xe5, 0xc5, 0x28, 0x9c, 0x3e, 0x21, 0xc3, 0xc1, 0x07,
+ 0xf5, 0xcd, 0xc8, 0x11, 0xf5, 0xcd, 0xc8, 0x11, 0xcd, 0x39, 0x16, 0xfd, 0x2b, 0xfd, 0xe5, 0xcd,
+ 0xb9, 0x0a, 0xc1, 0x28, 0x39, 0x3e, 0x1e, 0x38, 0xe4, 0xc5, 0x2a, 0xdc, 0x37, 0x3e, 0xdd, 0xcd,
+ 0xf2, 0x17, 0x38, 0x21, 0xe5, 0xfd, 0xe1, 0xfd, 0x23, 0xcd, 0x7f, 0x2f, 0xcd, 0xb9, 0x0a, 0xfd,
+ 0xe5, 0xd1, 0x38, 0x09, 0xc4, 0x5b, 0x0b, 0xfd, 0xe5, 0xd1, 0x73, 0x23, 0x72, 0xeb, 0x3e, 0x0d,
+ 0x47, 0xed, 0xb1, 0x18, 0xd8, 0xfd, 0xe1, 0xcd, 0xb9, 0x0a, 0x3e, 0x1d, 0x20, 0xaf, 0x5e, 0x23,
+ 0x56, 0x21, 0x02, 0x00, 0x39, 0xcd, 0x7f, 0x2f, 0xd5, 0xfd, 0xe3, 0xd1, 0xfe, 0x28, 0x20, 0x1b,
+ 0xcd, 0x7f, 0x2f, 0xfe, 0x28, 0xc2, 0x75, 0x0e, 0xfd, 0xe5, 0xc1, 0xd9, 0xcd, 0xca, 0x16, 0xcd,
+ 0x45, 0x2f, 0xd9, 0xc5, 0xfd, 0xe1, 0xe5, 0xcd, 0x55, 0x16, 0xe1, 0x73, 0x23, 0x72, 0xc3, 0xa2,
+ 0x0d, 0xc1, 0xc5, 0x21, 0xc4, 0x11, 0xb7, 0xed, 0x42, 0x28, 0x13, 0x21, 0xc8, 0x11, 0xb7, 0xed,
+ 0x42, 0x28, 0x0b, 0x21, 0x1c, 0x17, 0xb7, 0xed, 0x42, 0x3e, 0x0c, 0xc2, 0xc1, 0x07, 0xfd, 0xe5,
+ 0xc1, 0xd9, 0xfd, 0x2b, 0xcd, 0xca, 0x16, 0xd9, 0xc5, 0xfd, 0xe1, 0xcd, 0x1d, 0x0a, 0xc2, 0x75,
+ 0x0e, 0xb7, 0x08, 0xcd, 0x00, 0x2d, 0x08, 0xf5, 0xf4, 0xda, 0x15, 0xf1, 0x59, 0xfc, 0x04, 0x16,
+ 0xcd, 0x7f, 0x2f, 0xfe, 0x2c, 0xc2, 0xa2, 0x0d, 0xfd, 0x23, 0xcd, 0x7f, 0x2f, 0x18, 0xdc, 0xc1,
+ 0x21, 0x1c, 0x17, 0xb7, 0xed, 0x42, 0x28, 0x10, 0x21, 0xc8, 0x11, 0xb7, 0xed, 0x42, 0xfd, 0xe1,
+ 0xca, 0xa2, 0x0d, 0x3e, 0x0d, 0xc3, 0xc1, 0x07, 0xdd, 0xe1, 0xc1, 0x78, 0xb7, 0xfa, 0xb9, 0x12,
+ 0xe1, 0xd9, 0xe1, 0xd9, 0xcd, 0xda, 0x15, 0x18, 0xd6, 0x21, 0x00, 0x00, 0x39, 0x59, 0xcd, 0x04,
+ 0x16, 0xf9, 0x18, 0xcb, 0xcd, 0x33, 0x18, 0xcd, 0x7f, 0x2f, 0xfe, 0x2c, 0xc2, 0xa2, 0x0d, 0xfd,
+ 0x23, 0xcd, 0x7f, 0x2f, 0xd5, 0xcd, 0x6e, 0x0e, 0xd1, 0xf5, 0xe5, 0xb7, 0xfa, 0xff, 0x12, 0xcd,
+ 0x98, 0x32, 0xfe, 0xff, 0xca, 0x9a, 0x33, 0xcd, 0xb3, 0x33, 0xcd, 0xb8, 0x33, 0xcd, 0xbd, 0x33,
+ 0xcd, 0xc4, 0x33, 0x0e, 0x00, 0xdd, 0xe1, 0xf1, 0xd5, 0xcd, 0xda, 0x15, 0xd1, 0x18, 0xc8, 0xcd,
+ 0x98, 0x32, 0xcd, 0x98, 0x32, 0xf5, 0x6f, 0x26, 0x35, 0x2c, 0x2d, 0xca, 0x8c, 0x33, 0x2d, 0xcd,
+ 0x98, 0x32, 0x77, 0x18, 0xf4, 0x3e, 0x3e, 0xc3, 0xee, 0xff, 0xfe, 0x23, 0x28, 0xa6, 0x0e, 0x00,
+ 0xfe, 0x86, 0x20, 0x04, 0xfd, 0x23, 0x0e, 0x80, 0x21, 0x00, 0x36, 0x36, 0x0d, 0xcd, 0x3c, 0x17,
+ 0xca, 0xa2, 0x0d, 0xfd, 0x23, 0xfe, 0x2c, 0x28, 0x4d, 0xfe, 0x3b, 0x28, 0x49, 0xe5, 0xfe, 0x22,
+ 0x20, 0x0a, 0xc5, 0xcd, 0x2d, 0x20, 0xc1, 0xcd, 0xaa, 0x17, 0x18, 0x05, 0xcd, 0x55, 0x17, 0x20,
+ 0x05, 0xe1, 0xcb, 0xc1, 0x18, 0xd2, 0xfd, 0x2b, 0xc5, 0xcd, 0x6e, 0x0e, 0xc1, 0xe1, 0xf5, 0x7e,
+ 0x23, 0xfe, 0x0d, 0xcc, 0x8a, 0x13, 0xcb, 0x79, 0xf5, 0xc4, 0xc8, 0x17, 0xf1, 0xcc, 0xb7, 0x17,
+ 0xf1, 0xc5, 0xe5, 0xb7, 0xfa, 0x81, 0x13, 0xf5, 0xcd, 0xeb, 0x21, 0xf1, 0xcd, 0xda, 0x15, 0x18,
+ 0x03, 0xcd, 0x01, 0x16, 0xe1, 0xc1, 0xcb, 0x81, 0x18, 0xa3, 0xcb, 0x41, 0x20, 0x0a, 0x3e, 0x3f,
+ 0xcd, 0x52, 0x09, 0x18, 0x03, 0xcd, 0x52, 0x09, 0x21, 0x00, 0x36, 0xc5, 0xe5, 0xdd, 0xe5, 0xcd,
+ 0x99, 0x34, 0xdd, 0xe1, 0xe1, 0xc1, 0x47, 0xaf, 0x32, 0xfb, 0x37, 0xb8, 0xc8, 0x7e, 0xfe, 0x0d,
+ 0xc8, 0x23, 0x10, 0xf9, 0xc9, 0xfe, 0x23, 0xca, 0xc4, 0x12, 0x2a, 0xf0, 0x37, 0x7e, 0x23, 0xfe,
+ 0x0d, 0xcc, 0xfa, 0x13, 0xe5, 0xcd, 0x6e, 0x0e, 0xe1, 0xb7, 0xfa, 0xe0, 0x13, 0xe5, 0xfd, 0xe3,
+ 0xf5, 0xdd, 0xe5, 0xcd, 0x3f, 0x1f, 0xdd, 0xe1, 0xf1, 0xcd, 0xda, 0x15, 0xfd, 0xe3, 0x18, 0x07,
+ 0xcd, 0xb7, 0x17, 0xe5, 0xcd, 0x01, 0x16, 0xe1, 0x22, 0xf0, 0x37, 0xcd, 0x7f, 0x2f, 0xfe, 0x2c,
+ 0xc2, 0xa2, 0x0d, 0xfd, 0x23, 0xcd, 0x7f, 0x2f, 0x18, 0xc3, 0x3e, 0xdc, 0xcd, 0xf2, 0x17, 0x23,
+ 0xd0, 0x3e, 0x2a, 0xc3, 0xc1, 0x07, 0xcd, 0x46, 0x1f, 0xcd, 0xf6, 0x2c, 0x28, 0x15, 0xfd, 0x7e,
+ 0x00, 0xfe, 0x8c, 0xc2, 0xa2, 0x0d, 0xfd, 0x23, 0xcd, 0x7f, 0x2f, 0xfe, 0x8d, 0xc2, 0xa2, 0x0d,
+ 0xc3, 0x9e, 0x10, 0xfd, 0x7e, 0x00, 0xfe, 0x0d, 0xfd, 0x23, 0xca, 0x9f, 0x0d, 0xfe, 0x8b, 0x20,
+ 0xf2, 0x18, 0xe5, 0xcd, 0xea, 0x2f, 0xaf, 0x32, 0xfb, 0x37, 0xc3, 0xa2, 0x0d, 0xcd, 0xe6, 0x0c,
+ 0x0d, 0x0a, 0xfa, 0x00, 0xcd, 0xa2, 0x09, 0xcd, 0xcc, 0x09, 0xcd, 0x4b, 0x09, 0xc3, 0x98, 0x01,
+ 0xcd, 0xa3, 0x31, 0xc3, 0xa2, 0x0d, 0xcd, 0xaa, 0x08, 0x2a, 0xdc, 0x37, 0x18, 0x13, 0x2a, 0xdc,
+ 0x37, 0xcd, 0x3c, 0x17, 0x28, 0x0b, 0xcd, 0x5d, 0x1f, 0xd9, 0xcd, 0x89, 0x09, 0x3e, 0x29, 0x20,
+ 0x92, 0x3e, 0xdc, 0xcd, 0xf2, 0x17, 0x22, 0xf0, 0x37, 0xc3, 0xa2, 0x0d, 0xcd, 0x29, 0x18, 0xcd,
+ 0x48, 0x17, 0x7b, 0xf5, 0xcd, 0x46, 0x1f, 0xe5, 0xd9, 0xd1, 0xf1, 0xc3, 0x67, 0x32, 0xc3, 0xa2,
+ 0x0d, 0xcd, 0x48, 0x17, 0xcd, 0x46, 0x1f, 0xd9, 0x2e, 0x00, 0x22, 0xdc, 0x37, 0xc3, 0xa2, 0x0d,
+ 0xc3, 0x0e, 0x33, 0xcd, 0x46, 0x1f, 0xe5, 0xd9, 0xd1, 0xcd, 0xcd, 0x2f, 0xc3, 0xa2, 0x0d, 0xcd,
+ 0x48, 0x17, 0xcd, 0x46, 0x1f, 0xcd, 0xaa, 0x08, 0xd9, 0x22, 0xe0, 0x37, 0x22, 0xe2, 0x37, 0xc3,
+ 0xa2, 0x0d, 0xcd, 0x48, 0x17, 0xcd, 0x46, 0x1f, 0xd9, 0xed, 0x5b, 0xe2, 0x37, 0x14, 0xaf, 0xed,
+ 0x52, 0x19, 0xda, 0xc1, 0x07, 0xed, 0x5b, 0xe4, 0x37, 0x22, 0xe4, 0x37, 0xeb, 0xed, 0x72, 0xc2,
+ 0xa2, 0x0d, 0xeb, 0xf9, 0xc3, 0xa2, 0x0d, 0xcd, 0x46, 0x1f, 0xd9, 0x7d, 0x32, 0xfc, 0x37, 0xc3,
+ 0xa2, 0x0d, 0xfd, 0x23, 0x21, 0x00, 0x00, 0xfe, 0xee, 0x28, 0x0a, 0xfe, 0x87, 0x28, 0x07, 0xfd,
+ 0x2b, 0xcd, 0x46, 0x1f, 0xd9, 0x2b, 0x22, 0xe8, 0x37, 0xc3, 0xa2, 0x0d, 0xcd, 0x46, 0x1f, 0xd9,
+ 0x7d, 0xcd, 0xee, 0xff, 0xfd, 0x7e, 0x00, 0xfe, 0x2c, 0x28, 0x08, 0xfe, 0x3b, 0x20, 0x06, 0x7c,
+ 0xcd, 0xee, 0xff, 0xfd, 0x23, 0xcd, 0x3c, 0x17, 0x20, 0xe2, 0xc3, 0xa2, 0x0d, 0xcd, 0x29, 0x18,
+ 0xcd, 0xd9, 0x31, 0xc3, 0xa2, 0x0d, 0xcd, 0x29, 0x18, 0xd5, 0xcd, 0x39, 0x2f, 0xcd, 0x46, 0x1f,
+ 0xd9, 0x7d, 0xd1, 0xcd, 0x7b, 0x32, 0xc3, 0xa2, 0x0d, 0xcd, 0x46, 0x1f, 0xd9, 0xe5, 0x06, 0x00,
+ 0x11, 0x00, 0x36, 0xcd, 0x7f, 0x2f, 0xfe, 0x2c, 0x20, 0x17, 0xfd, 0x23, 0x04, 0xcd, 0x7f, 0x2f,
+ 0xc5, 0xd5, 0xcd, 0x6e, 0x0e, 0xd1, 0xc1, 0x13, 0x12, 0x13, 0xeb, 0x73, 0x23, 0x72, 0xeb, 0x18,
+ 0xe2, 0x78, 0x32, 0x00, 0x36, 0xe1, 0xcd, 0x80, 0x15, 0xc3, 0xa2, 0x0d, 0xcd, 0x5d, 0x1f, 0xd9,
+ 0xe5, 0xfd, 0xe3, 0x24, 0x21, 0xaf, 0x15, 0xe5, 0xdd, 0x21, 0x00, 0x37, 0xcc, 0x3b, 0x31, 0xdd,
+ 0x4e, 0x18, 0xc5, 0xf1, 0xdd, 0x7e, 0x04, 0xdd, 0x46, 0x08, 0xdd, 0x4e, 0x0c, 0xdd, 0x56, 0x10,
+ 0xdd, 0x5e, 0x14, 0xdd, 0x66, 0x20, 0xdd, 0x6e, 0x30, 0xdd, 0x21, 0x00, 0x36, 0xfd, 0xe9, 0xfd,
+ 0xe1, 0xaf, 0x4f, 0xc9, 0xcd, 0x46, 0x1f, 0xd9, 0xe5, 0xcd, 0x39, 0x2f, 0xcd, 0x46, 0x1f, 0xd9,
+ 0xc1, 0xed, 0x69, 0xc3, 0xa2, 0x0d, 0xcd, 0x1d, 0x0a, 0xd8, 0xc4, 0x0e, 0x0a, 0xb7, 0xf8, 0xf5,
+ 0xcd, 0x48, 0x17, 0xe5, 0xcd, 0x3f, 0x1f, 0xdd, 0xe1, 0xf1, 0xcb, 0x47, 0x28, 0x13, 0xbf, 0xdd,
+ 0x71, 0x04, 0xd9, 0xdd, 0x75, 0x00, 0xdd, 0x74, 0x01, 0xd9, 0xdd, 0x75, 0x02, 0xdd, 0x74, 0x03,
+ 0xc9, 0xf5, 0xcd, 0xf5, 0x2b, 0xf1, 0xfe, 0x04, 0x28, 0xe8, 0xbf, 0xd9, 0xdd, 0x75, 0x00, 0xd9,
+ 0xc9, 0x21, 0x00, 0x35, 0x1f, 0x30, 0x3f, 0xe5, 0xcd, 0xf7, 0x1f, 0x7b, 0xd9, 0x6f, 0x7c, 0xd9,
+ 0xbb, 0x30, 0x14, 0xd9, 0x65, 0xd9, 0xe5, 0x06, 0x00, 0x4f, 0x09, 0xed, 0x4b, 0xe2, 0x37, 0xed,
+ 0x42, 0xe1, 0x37, 0x28, 0x02, 0x60, 0x69, 0xcd, 0xe2, 0x15, 0x06, 0x00, 0x4b, 0xeb, 0xe1, 0x0d,
+ 0x0c, 0xc8, 0xed, 0xb0, 0xd0, 0xed, 0x53, 0xe2, 0x37, 0xe5, 0x2a, 0xe2, 0x37, 0x24, 0xed, 0x72,
+ 0xe1, 0xd8, 0xaf, 0xc3, 0xc1, 0x07, 0x4b, 0xdd, 0xe5, 0xd1, 0xaf, 0x47, 0xb9, 0x28, 0x02, 0xed,
+ 0xb0, 0x3e, 0x0d, 0x12, 0xc9, 0x3e, 0xff, 0xf5, 0xfd, 0x23, 0x13, 0xd5, 0xcd, 0x7f, 0x2f, 0xcd,
+ 0x1d, 0x0a, 0x38, 0x38, 0xc4, 0x0e, 0x0a, 0xd1, 0xe5, 0xb7, 0xf5, 0xd5, 0xfd, 0xe3, 0xfa, 0x83,
+ 0x16, 0xcd, 0x3f, 0x1f, 0xfd, 0xe3, 0xd1, 0xf1, 0xd9, 0xe5, 0xd9, 0xe5, 0x47, 0xc5, 0xcd, 0x39,
+ 0x16, 0x18, 0x0d, 0xcd, 0x4f, 0x1f, 0xfd, 0xe3, 0xd9, 0xd1, 0xd9, 0xf1, 0xcd, 0xaa, 0x2d, 0xd9,
+ 0xcd, 0x7f, 0x2f, 0xfe, 0x2c, 0x20, 0x0a, 0x1a, 0xfe, 0x2c, 0x28, 0xbc, 0x3e, 0x1f, 0xc3, 0xc1,
+ 0x07, 0xcd, 0x45, 0x2f, 0x1a, 0xfe, 0x29, 0x20, 0xf3, 0x13, 0xd9, 0xc1, 0x78, 0x3c, 0xd9, 0xc8,
+ 0xd9, 0x3d, 0xfa, 0xc0, 0x16, 0xe1, 0xd9, 0xe1, 0xd9, 0xdd, 0xe1, 0xcd, 0xda, 0x15, 0x18, 0xeb,
+ 0xcd, 0xc9, 0x2d, 0xdd, 0xe1, 0xcd, 0x01, 0x16, 0x18, 0xe1, 0xd1, 0xfd, 0x23, 0xcd, 0x7f, 0x2f,
+ 0xd5, 0xd9, 0xc5, 0xd5, 0xe5, 0xd9, 0xcd, 0x6e, 0x0e, 0xd9, 0xe1, 0xd1, 0xc1, 0xd9, 0xd1, 0xb7,
+ 0xfa, 0xf1, 0x16, 0xd9, 0xe5, 0xd9, 0x47, 0xcd, 0xeb, 0x1f, 0xd9, 0xe3, 0xd9, 0xe5, 0xc5, 0x18,
+ 0x26, 0xf5, 0xd5, 0xd9, 0xe5, 0xd9, 0xcd, 0xb8, 0x20, 0xd9, 0xe1, 0xd9, 0x4b, 0xd1, 0xcd, 0x39,
+ 0x16, 0xf1, 0x21, 0x00, 0x00, 0x45, 0xed, 0x42, 0x39, 0xf9, 0x47, 0xc5, 0x28, 0x09, 0xd5, 0x11,
+ 0x00, 0x35, 0xeb, 0x45, 0xed, 0xb0, 0xd1, 0xdd, 0xe5, 0xcd, 0x1c, 0x17, 0xcd, 0x39, 0x16, 0xcd,
+ 0x7f, 0x2f, 0xfe, 0x2c, 0x28, 0xa5, 0xeb, 0xe9, 0xfd, 0x7e, 0x00, 0xfe, 0x20, 0xc8, 0xfe, 0x2c,
+ 0xc8, 0xfe, 0x29, 0xc8, 0xfe, 0x3b, 0xc8, 0xfe, 0x5c, 0xc8, 0x18, 0x06, 0xcd, 0x7f, 0x2f, 0xfe,
+ 0x8b, 0xd0, 0xfe, 0x3a, 0xd0, 0xfe, 0x0d, 0xc9, 0xcd, 0x7f, 0x2f, 0xfd, 0x23, 0xfe, 0x3d, 0xc8,
+ 0x3e, 0x04, 0xc3, 0xc1, 0x07, 0xfe, 0x8a, 0x28, 0x0c, 0xfe, 0x89, 0x28, 0x38, 0xfe, 0x27, 0xc0,
+ 0xcd, 0x4b, 0x09, 0xaf, 0xc9, 0xc5, 0xcd, 0x46, 0x1f, 0xd9, 0xc1, 0xfd, 0x7e, 0x00, 0xfe, 0x2c,
+ 0x28, 0x11, 0xcd, 0x45, 0x2f, 0x7d, 0x21, 0xfb, 0x37, 0xbe, 0xc8, 0xf5, 0xdc, 0x4b, 0x09, 0xf1,
+ 0x96, 0x18, 0x19, 0xfd, 0x23, 0xc5, 0xe5, 0xcd, 0x46, 0x1f, 0xd9, 0xd1, 0xc1, 0xcd, 0x45, 0x2f,
+ 0xcd, 0xfa, 0x2f, 0xaf, 0xc9, 0xc5, 0xcd, 0x5d, 0x1f, 0xd9, 0x7d, 0xc1, 0xb7, 0xc8, 0xc5, 0x47,
+ 0x3e, 0x20, 0xcd, 0x52, 0x09, 0x10, 0xf9, 0xc1, 0xaf, 0xc9, 0x21, 0x00, 0x35, 0x1c, 0x1d, 0xc8,
+ 0x7e, 0x23, 0xcd, 0x52, 0x09, 0x18, 0xf7, 0xf5, 0xc5, 0xe5, 0xfd, 0xe3, 0xcd, 0xd4, 0x17, 0xcd,
+ 0x7f, 0x2f, 0xfd, 0xe3, 0xe1, 0xc1, 0xf1, 0xc9, 0x11, 0x00, 0x35, 0x7e, 0x12, 0xfe, 0x0d, 0xc8,
+ 0x23, 0x1c, 0x18, 0xf7, 0xcd, 0x7f, 0x2f, 0xfe, 0x22, 0xfd, 0x23, 0xca, 0x2d, 0x20, 0xfd, 0x2b,
+ 0x11, 0x00, 0x35, 0xfd, 0x7e, 0x00, 0x12, 0xfe, 0x2c, 0xc8, 0xfe, 0x0d, 0xc8, 0xfd, 0x23, 0x1c,
+ 0x18, 0xf1, 0x06, 0x00, 0x4e, 0x0c, 0x0d, 0x28, 0x0c, 0x23, 0x23, 0x23, 0xbe, 0xc8, 0x0d, 0x0d,
+ 0x0d, 0x09, 0xc3, 0xf4, 0x17, 0x2b, 0x37, 0xc9, 0xfe, 0x05, 0x62, 0x6b, 0x29, 0xd8, 0x29, 0xd8,
+ 0xeb, 0xc0, 0x19, 0xeb, 0xc9, 0xeb, 0x21, 0x00, 0x00, 0x3e, 0x10, 0x29, 0xd8, 0xcb, 0x23, 0xcb,
+ 0x12, 0x30, 0x02, 0x09, 0xd8, 0x3d, 0x20, 0xf3, 0xc9, 0xcd, 0x7f, 0x2f, 0xfe, 0x23, 0x3e, 0x2d,
+ 0xc2, 0xc1, 0x07, 0xfd, 0x23, 0xcd, 0x5d, 0x1f, 0xd9, 0xeb, 0xc9, 0xcd, 0xb1, 0x1b, 0xfd, 0x23,
+ 0xfe, 0x3a, 0x28, 0xf7, 0xfe, 0x5d, 0xc8, 0xfe, 0x0d, 0xc8, 0xfd, 0x2b, 0xdd, 0x2a, 0x40, 0x37,
+ 0x21, 0xfe, 0x37, 0xcb, 0x76, 0x28, 0x04, 0xdd, 0x2a, 0x3c, 0x37, 0xdd, 0xe5, 0xfd, 0xe5, 0xcd,
+ 0xef, 0x18, 0xc1, 0xd1, 0xd8, 0xcd, 0xb1, 0x1b, 0x37, 0xc0, 0xfd, 0x2b, 0xfd, 0x23, 0xfd, 0x7e,
+ 0x00, 0xcd, 0x42, 0x17, 0x20, 0xf6, 0x3a, 0xfe, 0x37, 0xdd, 0xe5, 0xe1, 0xb7, 0xed, 0x52, 0xeb,
+ 0xe5, 0x2a, 0x40, 0x37, 0xe5, 0x19, 0x22, 0x40, 0x37, 0xcb, 0x77, 0x28, 0x07, 0x2a, 0x3c, 0x37,
+ 0x19, 0x22, 0x3c, 0x37, 0xe1, 0xdd, 0xe1, 0xcb, 0x67, 0x28, 0xa0, 0x7c, 0xcd, 0xdb, 0x18, 0x7d,
+ 0xcd, 0xd4, 0x18, 0xaf, 0xbb, 0x28, 0x15, 0x3a, 0xfb, 0x37, 0xfe, 0x11, 0x3e, 0x05, 0xd4, 0x76,
+ 0x17, 0xdd, 0x7e, 0x00, 0xcd, 0xd4, 0x18, 0xdd, 0x23, 0x1d, 0x20, 0xeb, 0x3e, 0x12, 0xcd, 0x76,
+ 0x17, 0xfd, 0xe5, 0xe1, 0xed, 0x42, 0x0a, 0xcd, 0x6b, 0x09, 0x03, 0x2d, 0x20, 0xf8, 0xcd, 0x4b,
+ 0x09, 0xc3, 0x3b, 0x18, 0xcd, 0xdb, 0x18, 0x3e, 0x20, 0x18, 0x11, 0xf5, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0xcd, 0xe4, 0x18, 0xf1, 0xe6, 0x0f, 0xc6, 0x90, 0x27, 0xce, 0x40, 0x27, 0xc3, 0x6b, 0x09, 0xfe,
+ 0x2e, 0x20, 0x16, 0xfd, 0x23, 0xdd, 0xe5, 0xcd, 0x6e, 0x0e, 0xf5, 0xcd, 0x00, 0x2d, 0xd9, 0x2a,
+ 0x40, 0x37, 0xd9, 0xf1, 0xcd, 0xda, 0x15, 0xdd, 0xe1, 0xcd, 0xb1, 0x1b, 0xc8, 0xfe, 0xd6, 0x0e,
+ 0xc4, 0xfd, 0x23, 0xca, 0x00, 0x1a, 0xfd, 0x2b, 0x21, 0xc3, 0x1b, 0xcd, 0x68, 0x1b, 0xd8, 0x48,
+ 0x16, 0x00, 0xd6, 0x27, 0x30, 0x07, 0xfe, 0xe8, 0xd4, 0xce, 0x1a, 0x18, 0x68, 0xd6, 0x0a, 0x30,
+ 0x0f, 0xfe, 0xf9, 0xdc, 0x58, 0x1b, 0xd8, 0xcd, 0x2d, 0x1b, 0xd8, 0xcd, 0xd2, 0x1a, 0x18, 0x55,
+ 0xd6, 0x03, 0x30, 0x06, 0xcd, 0x4c, 0x1b, 0xd8, 0x18, 0x4b, 0xd6, 0x0a, 0x30, 0x32, 0xfe, 0xfd,
+ 0x06, 0x07, 0xd4, 0xe0, 0x1a, 0x78, 0xfe, 0x07, 0x20, 0x10, 0xcd, 0x2d, 0x1b, 0x79, 0x30, 0x28,
+ 0xee, 0x46, 0xcd, 0xd4, 0x1a, 0xcd, 0x10, 0x1b, 0x18, 0x78, 0xe6, 0x3f, 0xfe, 0x0c, 0x37, 0xc0,
+ 0x79, 0xfe, 0x80, 0x0e, 0x09, 0x28, 0xcd, 0xee, 0x1c, 0x0f, 0x4f, 0xcd, 0xce, 0x1a, 0x18, 0xc4,
+ 0xd6, 0x02, 0x30, 0x14, 0xcd, 0x33, 0x1b, 0x79, 0xd2, 0xd4, 0x1a, 0xee, 0x64, 0x07, 0x07, 0x07,
+ 0x4f, 0xcd, 0x50, 0x1b, 0xd8, 0x79, 0x18, 0x7f, 0xd6, 0x02, 0x30, 0x21, 0xfe, 0xff, 0xcc, 0xc3,
+ 0x1a, 0x08, 0xcd, 0x33, 0x1b, 0xd8, 0x08, 0xdc, 0xc3, 0x1a, 0x24, 0x28, 0xe8, 0x78, 0xfe, 0x07,
+ 0x37, 0xc0, 0x79, 0xee, 0x03, 0x07, 0x07, 0x07, 0xcd, 0x00, 0x1b, 0x18, 0x25, 0xd6, 0x02, 0x30,
+ 0x24, 0xfe, 0xff, 0xc4, 0x39, 0x1b, 0x79, 0x30, 0x02, 0x3e, 0x18, 0xcd, 0x00, 0x1b, 0xcd, 0x10,
+ 0x1b, 0xed, 0x5b, 0x40, 0x37, 0x13, 0x37, 0xed, 0x52, 0x7d, 0x17, 0x9f, 0xbc, 0x3e, 0x01, 0xc2,
+ 0xc1, 0x07, 0x7d, 0x18, 0x32, 0x47, 0x20, 0x16, 0xcd, 0x39, 0x1b, 0x79, 0x30, 0x0b, 0x78, 0xe6,
+ 0x3f, 0xfe, 0x06, 0x3e, 0xe9, 0x28, 0x20, 0x3e, 0xc3, 0xcd, 0x00, 0x1b, 0x18, 0x05, 0x10, 0x0c,
+ 0xcd, 0x1b, 0x1a, 0xcd, 0x10, 0x1b, 0xcd, 0xe2, 0x19, 0x7c, 0x18, 0x0b, 0x10, 0x0b, 0xcd, 0x10,
+ 0x1b, 0xa1, 0xb4, 0x20, 0xc8, 0x7d, 0xb1, 0x18, 0x78, 0x10, 0x0a, 0xcd, 0x39, 0x1b, 0x79, 0x30,
+ 0x70, 0xf6, 0x09, 0x18, 0x6c, 0x10, 0x6c, 0xcd, 0x65, 0x1b, 0x30, 0x5f, 0xcd, 0x33, 0x1b, 0x08,
+ 0xcd, 0xb1, 0x1b, 0xfe, 0x28, 0x28, 0x1d, 0x08, 0xd2, 0x5a, 0x19, 0x0e, 0x01, 0xcd, 0x50, 0x1b,
+ 0xd8, 0x3e, 0x0e, 0xb8, 0x47, 0xcc, 0x4c, 0x1b, 0x78, 0xe6, 0x3f, 0xfe, 0x0c, 0x79, 0x20, 0xa9,
+ 0x3e, 0xf9, 0x18, 0x3d, 0x08, 0xc5, 0xd4, 0x2d, 0x1b, 0x79, 0xc1, 0x30, 0x77, 0x0e, 0x0a, 0xcd,
+ 0x50, 0x1b, 0xcd, 0xaa, 0x1a, 0x30, 0x92, 0xcd, 0x10, 0x1b, 0x0e, 0x02, 0xcd, 0x4c, 0x1b, 0xcd,
+ 0xaa, 0x1a, 0xd8, 0xcd, 0x00, 0x1b, 0x18, 0x8e, 0x05, 0xca, 0x65, 0x19, 0x10, 0x85, 0xcd, 0x10,
+ 0x1b, 0x21, 0xfe, 0x37, 0x4f, 0xed, 0x6f, 0x79, 0xed, 0x67, 0xc9, 0xfe, 0x04, 0xdc, 0xce, 0x1a,
+ 0x78, 0x18, 0x6d, 0x10, 0xe3, 0xdd, 0xe5, 0xcd, 0x4f, 0x1f, 0xdd, 0xe1, 0x21, 0x00, 0x35, 0xaf,
+ 0xbb, 0xc8, 0x7e, 0x23, 0xcd, 0x00, 0x1b, 0x1d, 0x18, 0xf5, 0x78, 0x38, 0x0e, 0x78, 0xe6, 0x3f,
+ 0xfe, 0x0c, 0x79, 0xc8, 0xcd, 0xce, 0x1a, 0x79, 0xf6, 0x43, 0xc9, 0xfe, 0x07, 0x37, 0xc0, 0x79,
+ 0xf6, 0x30, 0xc9, 0xc5, 0xcd, 0xe0, 0x1a, 0xcb, 0x68, 0xc1, 0x28, 0x44, 0x26, 0xff, 0x3e, 0xed,
+ 0x18, 0x2e, 0x3e, 0xcb, 0xfe, 0x76, 0x37, 0xc8, 0xcd, 0x00, 0x1b, 0x14, 0xf0, 0x7b, 0x18, 0x20,
+ 0xe5, 0x21, 0x0a, 0x1d, 0xcd, 0x68, 0x1b, 0xe1, 0xd8, 0xcb, 0x78, 0xc8, 0xcb, 0x58, 0xe5, 0xcc,
+ 0x07, 0x1b, 0x5d, 0xe1, 0x3e, 0xdd, 0xcb, 0x70, 0x28, 0x02, 0x3e, 0xfd, 0xb7, 0x14, 0x57, 0xf8,
+ 0xdd, 0x77, 0x00, 0xdd, 0x23, 0xb7, 0xc9, 0xfd, 0x7e, 0x00, 0xfe, 0x29, 0x21, 0x00, 0x00, 0xc8,
+ 0xcd, 0xb1, 0x1b, 0xc5, 0xd5, 0xdd, 0xe5, 0xcd, 0x46, 0x1f, 0xdd, 0xe1, 0xd9, 0xd1, 0xc1, 0x7d,
+ 0xb7, 0xc9, 0xcd, 0xe0, 0x1a, 0xd8, 0x78, 0xe6, 0x3f, 0xfe, 0x08, 0x3f, 0xc9, 0xcd, 0x22, 0x1b,
+ 0xd8, 0x18, 0x2f, 0xcd, 0x22, 0x1b, 0xd8, 0x18, 0x26, 0xcd, 0xe0, 0x1a, 0xd8, 0x78, 0xe6, 0x1f,
+ 0xd6, 0x10, 0x30, 0x1b, 0xfe, 0xf1, 0x37, 0xc0, 0x3e, 0x03, 0x18, 0x13, 0xcd, 0xe0, 0x1a, 0xd8,
+ 0x78, 0xe6, 0x0f, 0xd6, 0x08, 0xd8, 0x18, 0x07, 0xcd, 0x10, 0x1b, 0xfe, 0x08, 0x3f, 0xd8, 0x07,
+ 0x07, 0x07, 0xb1, 0x4f, 0xc9, 0x21, 0x4f, 0x1d, 0xcd, 0xb1, 0x1b, 0x06, 0x00, 0x37, 0xc8, 0xfe,
+ 0xdd, 0x28, 0x04, 0xfe, 0x85, 0x3f, 0xd8, 0x7e, 0xb7, 0x28, 0xf0, 0xfd, 0xae, 0x00, 0xe6, 0x5f,
+ 0x28, 0x09, 0xcb, 0x7e, 0x23, 0x28, 0xfb, 0x23, 0x04, 0x18, 0xec, 0xfd, 0xe5, 0xcb, 0x7e, 0xfd,
+ 0x23, 0x23, 0x20, 0x10, 0xbe, 0xcc, 0xb0, 0x1b, 0x7e, 0xfd, 0xae, 0x00, 0xe6, 0x5f, 0x28, 0xed,
+ 0xfd, 0xe1, 0x18, 0xde, 0xcd, 0x28, 0x17, 0xc4, 0xbd, 0x1b, 0x20, 0xf4, 0x78, 0x46, 0xe1, 0xc9,
+ 0x23, 0xcd, 0x28, 0x17, 0xc0, 0xcd, 0x34, 0x17, 0xc8, 0xfd, 0x23, 0x18, 0xf4, 0xfe, 0x2b, 0xc8,
+ 0xfe, 0x2d, 0xc9, 0x4e, 0x4f, 0xd0, 0x00, 0x52, 0x4c, 0x43, 0xc1, 0x07, 0x45, 0x58, 0x00, 0x41,
+ 0x46, 0x00, 0x41, 0x46, 0xa7, 0x08, 0x52, 0x52, 0x43, 0xc1, 0x0f, 0x52, 0x4c, 0xc1, 0x17, 0x52,
+ 0x52, 0xc1, 0x1f, 0x44, 0x41, 0xc1, 0x27, 0x43, 0x50, 0xcc, 0x2f, 0x53, 0x43, 0xc6, 0x37, 0x43,
+ 0x43, 0xc6, 0x3f, 0x48, 0x41, 0x4c, 0xd4, 0x76, 0x45, 0x58, 0xd8, 0xd9, 0x45, 0x58, 0x00, 0x44,
+ 0x45, 0x00, 0x48, 0xcc, 0xeb, 0x44, 0xc9, 0xf3, 0x45, 0xc9, 0xfb, 0x4e, 0x45, 0xc7, 0x44, 0x49,
+ 0x4d, 0x00, 0xb0, 0x46, 0x52, 0x45, 0x54, 0xce, 0x45, 0x52, 0x45, 0x54, 0xc9, 0x4d, 0x49, 0x4d,
+ 0x00, 0xb1, 0x56, 0x49, 0x4d, 0x00, 0xb2, 0x5e, 0x52, 0x52, 0xc4, 0x67, 0x52, 0x4c, 0xc4, 0x6f,
+ 0x4c, 0x44, 0xc9, 0xa0, 0x43, 0x50, 0xc9, 0xa1, 0x49, 0x4e, 0xc9, 0xa2, 0x4f, 0x55, 0x54, 0xc9,
+ 0xa3, 0x4c, 0x44, 0xc4, 0xa8, 0x43, 0x50, 0xc4, 0xa9, 0x49, 0x4e, 0xc4, 0xaa, 0x4f, 0x55, 0x54,
+ 0xc4, 0xab, 0x4c, 0x44, 0x49, 0xd2, 0xb0, 0x43, 0x50, 0x49, 0xd2, 0xb1, 0x49, 0x4e, 0x49, 0xd2,
+ 0xb2, 0x4f, 0x54, 0x49, 0xd2, 0xb3, 0x4c, 0x44, 0x44, 0xd2, 0xb8, 0x43, 0x50, 0x44, 0xd2, 0xb9,
+ 0x49, 0x4e, 0x44, 0xd2, 0xba, 0x4f, 0x54, 0x44, 0xd2, 0xbb, 0x42, 0x49, 0xd4, 0x40, 0x52, 0x45,
+ 0xd3, 0x80, 0x53, 0x45, 0xd4, 0xc0, 0x52, 0x4c, 0xc3, 0x00, 0x52, 0x52, 0xc3, 0x08, 0x52, 0xcc,
+ 0x10, 0x52, 0xd2, 0x18, 0x53, 0x4c, 0xc1, 0x20, 0x53, 0x52, 0xc1, 0x28, 0x53, 0x52, 0xcc, 0x38,
+ 0x50, 0x4f, 0xd0, 0xc1, 0x50, 0x55, 0x53, 0xc8, 0xc5, 0x45, 0x58, 0x00, 0x28, 0x53, 0xd0, 0xe3,
+ 0x53, 0x55, 0xc2, 0x90, 0x41, 0x4e, 0xc4, 0xa0, 0x58, 0x4f, 0xd2, 0xa8, 0x4f, 0xd2, 0xb0, 0x43,
+ 0xd0, 0xb8, 0x80, 0xa0, 0x84, 0xb0, 0x41, 0x44, 0xc4, 0x80, 0x41, 0x44, 0xc3, 0x88, 0x53, 0x42,
+ 0xc3, 0x98, 0x49, 0x4e, 0xc3, 0x04, 0x44, 0x45, 0xc3, 0x05, 0x49, 0xce, 0x40, 0x4f, 0x55, 0xd4,
+ 0x41, 0x4a, 0xd2, 0x20, 0x44, 0x4a, 0x4e, 0xda, 0x10, 0x4a, 0xd0, 0xc2, 0x43, 0x41, 0x4c, 0xcc,
+ 0xc4, 0x52, 0x53, 0xd4, 0xc7, 0x52, 0x45, 0xd4, 0xc0, 0x4c, 0xc4, 0x40, 0x5d, 0xcd, 0x00, 0x5d,
+ 0xc2, 0x00, 0x4f, 0x50, 0xd4, 0x00, 0x5d, 0xd7, 0x00, 0x00, 0xc2, 0x00, 0xc3, 0x01, 0xc4, 0x02,
+ 0xc5, 0x03, 0xc8, 0x04, 0xcc, 0x05, 0x28, 0x48, 0xcc, 0x06, 0xc1, 0x07, 0x28, 0x49, 0xd8, 0x86,
+ 0x28, 0x49, 0xd9, 0xc6, 0x42, 0xc3, 0x08, 0x44, 0xc5, 0x0a, 0x48, 0xcc, 0x0c, 0x49, 0xd8, 0x8c,
+ 0x49, 0xd9, 0xcc, 0x41, 0xc6, 0x0e, 0x53, 0xd0, 0x0e, 0x4e, 0xda, 0x10, 0xda, 0x11, 0x4e, 0xc3,
+ 0x12, 0x50, 0xcf, 0x14, 0x50, 0xc5, 0x15, 0xd0, 0x16, 0xcd, 0x17, 0x28, 0xc3, 0x20, 0x00, 0x49,
+ 0x00, 0xc1, 0x47, 0x52, 0x00, 0xc1, 0x4f, 0x41, 0x00, 0xc9, 0x57, 0x41, 0x00, 0xd2, 0x5f, 0x28,
+ 0x42, 0x43, 0x00, 0xc1, 0x02, 0x28, 0x44, 0x45, 0x00, 0xc1, 0x12, 0x41, 0x00, 0x28, 0x42, 0xc3,
+ 0x0a, 0x41, 0x00, 0x28, 0x44, 0xc5, 0x1a, 0x00, 0xa1, 0x29, 0x5a, 0x32, 0x97, 0x21, 0x53, 0x21,
+ 0x9f, 0x21, 0x49, 0x21, 0x4e, 0x21, 0xda, 0x20, 0xed, 0x24, 0x48, 0x30, 0x36, 0x21, 0xee, 0x24,
+ 0x1d, 0x25, 0x12, 0x21, 0x2a, 0x23, 0x71, 0x21, 0xb4, 0x21, 0x67, 0x21, 0x6c, 0x21, 0x08, 0x22,
+ 0xca, 0x23, 0x8f, 0x21, 0x00, 0x2d, 0xc0, 0x11, 0x20, 0x21, 0x1b, 0x21, 0x9f, 0x25, 0x9b, 0x22,
+ 0x43, 0x21, 0x58, 0x24, 0xdb, 0x24, 0xe8, 0x20, 0x62, 0x32, 0x5e, 0x32, 0xa8, 0x21, 0x12, 0x30,
+ 0xfb, 0x20, 0xbc, 0x21, 0x35, 0x22, 0xd5, 0x21, 0x38, 0x23, 0xb4, 0x22, 0x0a, 0x23, 0x58, 0x21,
+ 0x96, 0x29, 0x7c, 0x15, 0xe8, 0x21, 0x01, 0x21, 0x1f, 0x26, 0x3c, 0x26, 0x2c, 0x26, 0x73, 0x26,
+ 0x42, 0x26, 0x8e, 0x26, 0xf7, 0x29, 0xa2, 0x26, 0x06, 0x21, 0xd8, 0x26, 0x3b, 0x27, 0xea, 0x26,
+ 0x0e, 0x27, 0xfc, 0x26, 0x70, 0x29, 0x82, 0x29, 0x60, 0x29, 0x3f, 0x29, 0x92, 0x29, 0x05, 0x28,
+ 0x5e, 0x27, 0x4f, 0x29, 0x48, 0x27, 0xa3, 0x28, 0xbd, 0x27, 0xd5, 0x26, 0x38, 0x27, 0xe7, 0x26,
+ 0x0b, 0x27, 0xf9, 0x26, 0x6b, 0x29, 0x7d, 0x29, 0x5b, 0x29, 0x3a, 0x29, 0x8d, 0x29, 0x53, 0x28,
+ 0x68, 0x27, 0x4a, 0x29, 0x52, 0x27, 0x0b, 0x29, 0xc0, 0x27, 0x66, 0x29, 0x78, 0x29, 0x56, 0x29,
+ 0x35, 0x29, 0x88, 0x29, 0x45, 0x29, 0xcd, 0x4b, 0x1e, 0xfe, 0x82, 0x28, 0x03, 0xfe, 0x84, 0xc0,
+ 0xcd, 0x52, 0x2f, 0xcd, 0x4b, 0x1e, 0xcd, 0x60, 0x2f, 0x18, 0xee, 0xcd, 0x5c, 0x1e, 0xfe, 0x80,
+ 0xc0, 0xcd, 0x52, 0x2f, 0xcd, 0x5c, 0x1e, 0xcd, 0x60, 0x2f, 0x18, 0xf2, 0xcd, 0xbb, 0x1e, 0xcd,
+ 0x22, 0x2f, 0xc0, 0x47, 0xfd, 0x23, 0xcd, 0x7f, 0x2f, 0xcd, 0x22, 0x2f, 0x20, 0x08, 0xfd, 0x23,
+ 0xb8, 0xca, 0x75, 0x0e, 0x80, 0x47, 0x78, 0x08, 0xfa, 0x8e, 0x1e, 0x08, 0xd6, 0x04, 0xfe, 0x3a,
+ 0x20, 0x02, 0xc6, 0x02, 0xcd, 0x54, 0x2f, 0xcd, 0xbb, 0x1e, 0xcd, 0x60, 0x2f, 0xc9, 0x08, 0x3d,
+ 0xe6, 0x07, 0xcd, 0xaa, 0x2d, 0xf5, 0xcd, 0xbb, 0x1e, 0x08, 0xf2, 0x6b, 0x1f, 0xf1, 0x4b, 0xd1,
+ 0x21, 0x00, 0x00, 0x39, 0x43, 0xd5, 0x11, 0x00, 0x35, 0xeb, 0xcd, 0x8a, 0x2f, 0xd1, 0xeb, 0x26,
+ 0x00, 0x39, 0xf9, 0xeb, 0xaf, 0x4f, 0x08, 0xfd, 0x7e, 0x00, 0xc9, 0xcd, 0x0a, 0x1f, 0xfe, 0x2d,
+ 0x28, 0x08, 0xfe, 0x2b, 0xc0, 0x08, 0xfa, 0xd5, 0x1e, 0x08, 0xcd, 0x52, 0x2f, 0xcd, 0x0a, 0x1f,
+ 0xcd, 0x60, 0x2f, 0x18, 0xe9, 0x08, 0xfd, 0x23, 0xcd, 0xaa, 0x2d, 0xcd, 0x0a, 0x1f, 0x08, 0xf2,
+ 0x6b, 0x1f, 0x4b, 0xd1, 0xd5, 0x21, 0x00, 0x35, 0x54, 0x79, 0xb7, 0x28, 0x0f, 0x45, 0x6f, 0x83,
+ 0x5f, 0x3e, 0x13, 0xda, 0xc1, 0x07, 0xd5, 0x1d, 0x2d, 0xed, 0xb8, 0xd1, 0xd9, 0xc1, 0xcd, 0xc9,
+ 0x2d, 0xd9, 0xf6, 0x80, 0x08, 0xfd, 0x7e, 0x00, 0x18, 0xb4, 0xcd, 0x27, 0x1f, 0xfe, 0x2a, 0x28,
+ 0x0b, 0xfe, 0x2f, 0x28, 0x07, 0xfe, 0x83, 0x28, 0x03, 0xfe, 0x81, 0xc0, 0xcd, 0x52, 0x2f, 0xcd,
+ 0x27, 0x1f, 0xcd, 0x60, 0x2f, 0x18, 0xe6, 0xcd, 0xae, 0x1f, 0xb7, 0x08, 0xcd, 0x7f, 0x2f, 0xfe,
+ 0x5e, 0xc0, 0xcd, 0x52, 0x2f, 0xcd, 0xae, 0x1f, 0xb7, 0x08, 0xcd, 0x60, 0x2f, 0x18, 0xed, 0xcd,
+ 0x36, 0x1e, 0x08, 0xf0, 0x18, 0x25, 0xcd, 0x36, 0x1e, 0x08, 0xf2, 0xf5, 0x2b, 0x18, 0x1c, 0xcd,
+ 0x36, 0x1e, 0x08, 0xf8, 0x18, 0x15, 0xcd, 0xae, 0x1f, 0xb7, 0xf0, 0x18, 0x0e, 0xcd, 0xae, 0x1f,
+ 0xb7, 0xf2, 0xf5, 0x2b, 0x18, 0x05, 0xcd, 0xae, 0x1f, 0xb7, 0xf8, 0x3e, 0x06, 0xc3, 0xc1, 0x07,
+ 0xcd, 0x36, 0x1e, 0xcd, 0x45, 0x2f, 0x08, 0xc9, 0xcd, 0x00, 0x2d, 0xcd, 0x0e, 0x2f, 0x38, 0x1b,
+ 0xfd, 0x23, 0xe6, 0x0f, 0xcd, 0x75, 0x2d, 0xcd, 0x75, 0x2d, 0xcd, 0x75, 0x2d, 0xcd, 0x75, 0x2d,
+ 0xd9, 0xb5, 0x6f, 0xd9, 0xcd, 0x0e, 0x2f, 0x30, 0xe7, 0xaf, 0xc9, 0x3e, 0x1c, 0xc3, 0xc1, 0x07,
+ 0xcd, 0x56, 0x1f, 0x0d, 0x0c, 0xca, 0x04, 0x2c, 0x7c, 0xee, 0x80, 0x67, 0xaf, 0xc9, 0xcd, 0x39,
+ 0x16, 0xcd, 0x7f, 0x2f, 0xfd, 0x23, 0xfe, 0x26, 0x28, 0xbe, 0xfe, 0x2d, 0x28, 0xe2, 0xfe, 0x2b,
+ 0x28, 0x94, 0xfe, 0x28, 0x28, 0xaa, 0xfe, 0x22, 0x28, 0x63, 0xfe, 0xc6, 0xd2, 0x82, 0x32, 0xfe,
+ 0x8d, 0xd2, 0x90, 0x2f, 0xfd, 0x2b, 0xfe, 0x3a, 0x30, 0x08, 0xfe, 0x30, 0x30, 0x74, 0xfe, 0x2e,
+ 0x28, 0x70, 0xcd, 0x1d, 0x0a, 0x20, 0x2b, 0xb7, 0xfa, 0xb8, 0x20, 0xb7, 0x28, 0x18, 0x0e, 0x00,
+ 0xcb, 0x47, 0x28, 0x03, 0xdd, 0x4e, 0x04, 0xd9, 0xdd, 0x6e, 0x00, 0xdd, 0x66, 0x01, 0xd9, 0xdd,
+ 0x6e, 0x02, 0xdd, 0x66, 0x03, 0xc9, 0x21, 0x00, 0x00, 0xd9, 0x26, 0x00, 0xdd, 0x6e, 0x00, 0xd9,
+ 0x4c, 0xc9, 0xda, 0x75, 0x0e, 0x3a, 0xfe, 0x37, 0xcb, 0x6f, 0x3e, 0x1a, 0x20, 0x23, 0xfd, 0x23,
+ 0xcd, 0xe4, 0x0b, 0x30, 0xf9, 0xdd, 0x21, 0x40, 0x37, 0xaf, 0x4f, 0x18, 0xca, 0x11, 0x00, 0x35,
+ 0xfd, 0x7e, 0x00, 0xfd, 0x23, 0xfe, 0x22, 0x28, 0x0b, 0x12, 0xfe, 0x20, 0x1c, 0x30, 0xf1, 0x3e,
+ 0x09, 0xc3, 0xc1, 0x07, 0xfd, 0x7e, 0x00, 0xfe, 0x22, 0xfd, 0x23, 0x28, 0xec, 0xfd, 0x2b, 0x3e,
+ 0x80, 0xc9, 0xcd, 0x00, 0x2d, 0x0e, 0x00, 0xcd, 0xb4, 0x2b, 0xfe, 0x2e, 0x06, 0x00, 0xcc, 0xb2,
+ 0x2b, 0xfe, 0x45, 0x3e, 0x00, 0xcc, 0x7d, 0x2b, 0xcb, 0x7c, 0x20, 0x08, 0xb7, 0x20, 0x05, 0xb8,
+ 0x20, 0x02, 0xb9, 0xc8, 0x90, 0x81, 0x0e, 0x9f, 0xcd, 0x97, 0x2c, 0xcb, 0xbc, 0xb7, 0xc8, 0xfa,
+ 0x8a, 0x20, 0xcd, 0x21, 0x2e, 0xcd, 0x53, 0x28, 0xaf, 0xc9, 0xfe, 0xda, 0x38, 0x0a, 0xed, 0x44,
+ 0xcd, 0x21, 0x2e, 0xcd, 0xc0, 0x27, 0xaf, 0xc9, 0xf5, 0x3e, 0x26, 0xcd, 0x21, 0x2e, 0xcd, 0xc0,
+ 0x27, 0xf1, 0xc6, 0x26, 0x18, 0xe4, 0xdd, 0x46, 0x04, 0xd9, 0xdd, 0x5e, 0x00, 0xdd, 0x56, 0x01,
+ 0xd9, 0xdd, 0x5e, 0x02, 0xdd, 0x56, 0x03, 0xc9, 0x11, 0x00, 0x35, 0x1f, 0x30, 0x10, 0xcd, 0xf7,
+ 0x1f, 0xd9, 0x7d, 0xd9, 0xb7, 0x4f, 0x3e, 0x80, 0xc8, 0x06, 0x00, 0xed, 0xb0, 0xc9, 0x7e, 0x12,
+ 0x23, 0xfe, 0x0d, 0x3e, 0x80, 0xc8, 0x1c, 0x20, 0xf5, 0xc9, 0xcd, 0x56, 0x1f, 0xcb, 0x7c, 0xc8,
+ 0x0d, 0x0c, 0xca, 0x04, 0x2c, 0xcb, 0xbc, 0xc9, 0xcd, 0x5d, 0x1f, 0x7c, 0x2f, 0x67, 0x7d, 0x2f,
+ 0x6f, 0xd9, 0x7c, 0x2f, 0x67, 0x7d, 0x2f, 0x6f, 0xd9, 0xaf, 0xc9, 0xcd, 0x07, 0x30, 0xeb, 0x18,
+ 0x75, 0xcd, 0x07, 0x30, 0x18, 0x70, 0xcd, 0x29, 0x18, 0xcd, 0xb2, 0x32, 0xca, 0x96, 0x29, 0xc3,
+ 0x00, 0x2d, 0xcd, 0x29, 0x18, 0xcd, 0x98, 0x32, 0x6f, 0x18, 0x59, 0xcd, 0x2c, 0x26, 0x18, 0x19,
+ 0xcd, 0x7f, 0x2f, 0xfe, 0x28, 0x20, 0x0a, 0xcd, 0x5d, 0x1f, 0xd9, 0x44, 0x4d, 0xed, 0x68, 0x18,
+ 0x43, 0xcd, 0x3c, 0x26, 0x18, 0x08, 0xcd, 0x66, 0x1f, 0xaf, 0xbb, 0xca, 0x96, 0x29, 0x2a, 0x00,
+ 0x35, 0x18, 0x31, 0xcd, 0x66, 0x1f, 0xeb, 0x18, 0x2b, 0x2a, 0xe0, 0x37, 0x18, 0x28, 0x2a, 0xe4,
+ 0x37, 0x18, 0x23, 0x2a, 0xdc, 0x37, 0x18, 0x1e, 0xfd, 0x7e, 0x00, 0xfd, 0x23, 0xfe, 0x50, 0xc2,
+ 0x75, 0x0e, 0x2a, 0xde, 0x37, 0x18, 0x0f, 0x2a, 0xf2, 0x37, 0x18, 0x0a, 0x2a, 0xfd, 0x37, 0x18,
+ 0x03, 0x2a, 0xfb, 0x37, 0x26, 0x00, 0xd9, 0xaf, 0x4f, 0x67, 0x6f, 0xc9, 0xf6, 0x37, 0xf5, 0xcd,
+ 0x66, 0x1f, 0x3e, 0x0d, 0x12, 0xf1, 0x21, 0x00, 0x35, 0xcd, 0xce, 0xff, 0x6f, 0x18, 0xe5, 0xcd,
+ 0x29, 0x18, 0xcd, 0xb4, 0x32, 0x18, 0x0b, 0xcd, 0x29, 0x18, 0xcd, 0xcd, 0x32, 0x18, 0x03, 0xc3,
+ 0xe9, 0x32, 0xd5, 0xd9, 0xe1, 0xaf, 0x4f, 0xc9, 0x21, 0x0f, 0x49, 0xd9, 0x21, 0xa2, 0xda, 0xd9,
+ 0x0e, 0x81, 0xaf, 0xc9, 0xcd, 0xc4, 0x21, 0xcd, 0x53, 0x28, 0xaf, 0xc9, 0xcd, 0xc4, 0x21, 0xcd,
+ 0xc0, 0x27, 0xaf, 0xc9, 0xcd, 0x56, 0x1f, 0xcd, 0xb1, 0x2c, 0x11, 0x2e, 0x65, 0xd9, 0x11, 0xd3,
+ 0xe0, 0xd9, 0x06, 0x85, 0xc9, 0xcd, 0x56, 0x1f, 0xcd, 0xf6, 0x2c, 0xb1, 0xc8, 0xcb, 0x7c, 0xc2,
+ 0x96, 0x29, 0xcd, 0x00, 0x2d, 0xc3, 0xc7, 0x2c, 0xcd, 0x66, 0x1f, 0xaf, 0x12, 0xfd, 0xe5, 0xfd,
+ 0x21, 0x00, 0x35, 0xcd, 0x7f, 0x2f, 0xcd, 0x2b, 0x2f, 0xf5, 0xcd, 0x52, 0x20, 0xf1, 0xfd, 0xe1,
+ 0xfe, 0x2d, 0x3e, 0x00, 0xc0, 0xc3, 0xa3, 0x1f, 0xcd, 0x66, 0x1f, 0x3e, 0x0d, 0x12, 0xfd, 0xe5,
+ 0x11, 0x00, 0x35, 0xfd, 0x21, 0x00, 0x35, 0x0e, 0x00, 0xcd, 0x10, 0x0c, 0x12, 0x13, 0xaf, 0xcd,
+ 0xaa, 0x2d, 0xfd, 0x21, 0x02, 0x00, 0xfd, 0x39, 0xcd, 0x36, 0x1e, 0xfd, 0xe1, 0xfd, 0x39, 0xfd,
+ 0xf9, 0xfd, 0xe1, 0x08, 0xc9, 0xdd, 0x21, 0xf6, 0x37, 0xcd, 0x7f, 0x2f, 0xfe, 0x28, 0x28, 0x1c,
+ 0xcd, 0xf4, 0x1f, 0xcb, 0x19, 0x06, 0x20, 0xd9, 0xed, 0x6a, 0xd9, 0xed, 0x6a, 0xcb, 0x5d, 0x28,
+ 0x01, 0x3f, 0x10, 0xf3, 0xcb, 0x11, 0xcd, 0xdf, 0x15, 0xaf, 0x4f, 0xc9, 0xcd, 0x5d, 0x1f, 0xdd,
+ 0x21, 0xf6, 0x37, 0xcb, 0x7c, 0x37, 0x20, 0xec, 0xcd, 0xf6, 0x2c, 0xf5, 0xcd, 0xdb, 0x2c, 0xd9,
+ 0xcd, 0xf4, 0x1f, 0xc4, 0x43, 0x22, 0xd9, 0x0e, 0x7f, 0xcd, 0x97, 0x2c, 0xcb, 0xbc, 0xf1, 0xc8,
+ 0xd9, 0x7b, 0x3d, 0xb2, 0xd9, 0xb3, 0xb2, 0xc8, 0x06, 0x00, 0xcd, 0xdb, 0x2c, 0xcd, 0xb1, 0x2c,
+ 0xcd, 0x53, 0x28, 0xcd, 0xf5, 0x2b, 0xcd, 0xc7, 0x2c, 0xaf, 0xc9, 0xcd, 0x56, 0x1f, 0x0d, 0x0c,
+ 0xc8, 0x3e, 0x9f, 0x44, 0xcd, 0xdc, 0x2b, 0x08, 0xa0, 0xfc, 0xc7, 0x2c, 0x78, 0xb7, 0xfc, 0x04,
+ 0x2c, 0xaf, 0x4f, 0xc9, 0xcd, 0x56, 0x1f, 0xcd, 0xb1, 0x2c, 0xcb, 0x7c, 0x3e, 0x15, 0xc2, 0xc1,
+ 0x07, 0x0d, 0x0c, 0xc8, 0xcb, 0xfc, 0xcb, 0x41, 0xcc, 0xe3, 0x2c, 0x79, 0xd6, 0x80, 0xcb, 0x2f,
+ 0xc6, 0x80, 0x4f, 0xc5, 0xeb, 0x21, 0x00, 0x00, 0x44, 0x4d, 0xd9, 0xeb, 0x21, 0x00, 0x00, 0x44,
+ 0x4d, 0x3e, 0xe1, 0xcd, 0xbe, 0x2e, 0xd9, 0xcb, 0x78, 0xd9, 0xcc, 0xbe, 0x2e, 0xcd, 0xf7, 0x2e,
+ 0xb7, 0xcd, 0x78, 0x2e, 0xcb, 0x1b, 0x60, 0x69, 0xd9, 0x60, 0x69, 0xdc, 0xc7, 0x2c, 0xc1, 0xdc,
+ 0xef, 0x2c, 0x1f, 0x9f, 0x81, 0x4f, 0xcb, 0xbc, 0xaf, 0xc9, 0xcd, 0x56, 0x1f, 0xcd, 0xb1, 0x2c,
+ 0xcd, 0x95, 0x2d, 0xcd, 0x30, 0x23, 0xcd, 0x9e, 0x2d, 0xcd, 0x95, 0x2d, 0xcd, 0xdb, 0x2c, 0xcd,
+ 0x3e, 0x23, 0xcd, 0x9e, 0x2d, 0xcd, 0xc0, 0x27, 0xaf, 0xc9, 0xcd, 0x56, 0x1f, 0xcd, 0xb1, 0x2c,
+ 0xcd, 0x26, 0x2c, 0x1c, 0x1c, 0x7b, 0x18, 0x11, 0xcd, 0x56, 0x1f, 0xcd, 0xb1, 0x2c, 0xe5, 0xcd,
+ 0x26, 0x2c, 0xf1, 0x07, 0x07, 0x07, 0xe6, 0x04, 0xab, 0xf5, 0xcb, 0xbc, 0x1f, 0xcd, 0xbf, 0x23,
+ 0xdc, 0x58, 0x27, 0xf1, 0xf5, 0xe6, 0x03, 0xe2, 0x88, 0x23, 0xcd, 0x95, 0x2d, 0xcd, 0x8f, 0x2d,
+ 0xcd, 0xfa, 0x2d, 0xb7, 0xa8, 0x11, 0x36, 0x6d, 0x26, 0xde, 0x05, 0xd0, 0x73, 0xc0, 0x80, 0x88,
+ 0x08, 0x79, 0x9d, 0xaa, 0xaa, 0xaa, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x80, 0xcd, 0x9e, 0x2d, 0xcd,
+ 0x9e, 0x2d, 0xcd, 0x53, 0x28, 0xc3, 0xaa, 0x23, 0xcd, 0x8f, 0x2d, 0xcd, 0xfa, 0x2d, 0x71, 0xd5,
+ 0x78, 0x4c, 0x70, 0xaf, 0x94, 0x03, 0xb6, 0x76, 0xc8, 0x9c, 0xaa, 0x2a, 0x7b, 0xdd, 0xff, 0xff,
+ 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x80, 0xcd, 0x9e, 0x2d, 0xf1, 0xe6, 0x04, 0xc8, 0x0d, 0x0c,
+ 0xc8, 0xcb, 0xfc, 0xc9, 0x11, 0x00, 0x00, 0xd9, 0x11, 0x00, 0x00, 0xd9, 0x06, 0x80, 0xc9, 0x11,
+ 0x0f, 0x49, 0xd9, 0x11, 0xa2, 0xda, 0xd9, 0x06, 0x7f, 0xc9, 0xcd, 0x56, 0x1f, 0xcd, 0xb1, 0x2c,
+ 0xcd, 0x4d, 0x24, 0xd9, 0x1d, 0x01, 0xcf, 0xd1, 0xd9, 0xe5, 0xcd, 0x36, 0x2c, 0xf1, 0xcb, 0x7b,
+ 0x28, 0x09, 0x17, 0xda, 0x00, 0x2d, 0x3e, 0x18, 0xc3, 0xc1, 0x07, 0xe6, 0x80, 0xb3, 0xf5, 0xcb,
+ 0xbc, 0xcd, 0x95, 0x2d, 0xcd, 0xfa, 0x2d, 0x72, 0x40, 0x2e, 0x94, 0x73, 0x65, 0x6f, 0x4f, 0x2e,
+ 0x76, 0x37, 0x6d, 0x02, 0x88, 0x79, 0x12, 0xe5, 0xa0, 0x2a, 0x7b, 0x14, 0x4f, 0xaa, 0xaa, 0x7d,
+ 0x56, 0xfd, 0xff, 0x7f, 0x7e, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xcd,
+ 0x9e, 0x2d, 0xf1, 0xf5, 0xf4, 0x44, 0x24, 0xf1, 0xf2, 0x2f, 0x24, 0xe6, 0x7f, 0xed, 0x44, 0xc6,
+ 0x80, 0x81, 0x38, 0x05, 0xf2, 0x00, 0x2d, 0x18, 0x03, 0xfa, 0xf1, 0x2c, 0xc6, 0x80, 0xca, 0x00,
+ 0x2d, 0x4f, 0xaf, 0xc9, 0xcd, 0xb4, 0x23, 0xcd, 0xdb, 0x2c, 0xc3, 0xc0, 0x27, 0x11, 0x62, 0x31,
+ 0xd9, 0x11, 0xf8, 0x17, 0xd9, 0x06, 0x7f, 0xc9, 0xcd, 0x56, 0x1f, 0xcd, 0xb1, 0x2c, 0x3e, 0x16,
+ 0xcb, 0x7c, 0xc2, 0xc1, 0x07, 0x0c, 0x0d, 0xca, 0xc1, 0x07, 0x11, 0x04, 0x35, 0xd9, 0x11, 0x33,
+ 0xf3, 0xd9, 0xcd, 0x12, 0x2d, 0x79, 0x0e, 0x80, 0x38, 0x02, 0x0d, 0x3c, 0xf5, 0xcd, 0xdc, 0x2d,
+ 0xcd, 0x95, 0x2d, 0xcd, 0x8f, 0x2d, 0xcd, 0xfa, 0x2d, 0x48, 0xcc, 0xfb, 0x74, 0x7d, 0xaf, 0xae,
+ 0xff, 0x11, 0x7e, 0x8c, 0xd9, 0xcd, 0x4c, 0x7e, 0xe3, 0xa9, 0xaa, 0x2a, 0x7f, 0x00, 0x00, 0x00,
+ 0x00, 0x81, 0xcd, 0x9e, 0x2d, 0xcd, 0x9e, 0x2d, 0xcd, 0x53, 0x28, 0xf1, 0xcd, 0x95, 0x2d, 0x08,
+ 0xcd, 0x00, 0x2d, 0x08, 0xd6, 0x80, 0x28, 0x1b, 0x30, 0x02, 0x2f, 0x3c, 0x67, 0x0e, 0x87, 0xf5,
+ 0xcd, 0x97, 0x2c, 0xcb, 0xbc, 0xcd, 0x4d, 0x24, 0xcd, 0x53, 0x28, 0xf1, 0x30, 0x05, 0xfa, 0xd3,
+ 0x24, 0xcb, 0xfc, 0xcd, 0x9e, 0x2d, 0xcd, 0x68, 0x27, 0xaf, 0xc9, 0xcd, 0x58, 0x24, 0x11, 0x5b,
+ 0x5e, 0xd9, 0x11, 0xa9, 0xd8, 0xd9, 0x06, 0x7e, 0xcd, 0x53, 0x28, 0xaf, 0xc9, 0xf6, 0xaf, 0xf5,
+ 0xcd, 0x56, 0x1f, 0xcd, 0xb1, 0x2c, 0xcd, 0x95, 0x2d, 0xcd, 0x87, 0x2d, 0xcd, 0x53, 0x28, 0xcd,
+ 0xb4, 0x23, 0xcd, 0x58, 0x27, 0xcd, 0xba, 0x22, 0xcd, 0x9e, 0x2d, 0xf1, 0xcc, 0xdb, 0x2c, 0x04,
+ 0x05, 0x20, 0x05, 0xcd, 0xa8, 0x21, 0x0d, 0xc9, 0xcd, 0xc0, 0x27, 0x18, 0x06, 0xcd, 0x56, 0x1f,
+ 0xcd, 0xb1, 0x2c, 0x7c, 0xf5, 0xcb, 0xbc, 0x11, 0x13, 0x54, 0xd9, 0x11, 0xd0, 0xcc, 0xd9, 0x06,
+ 0x7e, 0xcd, 0x0f, 0x2d, 0x06, 0x00, 0x38, 0x1b, 0x11, 0x82, 0x1a, 0xd9, 0x11, 0x9a, 0x79, 0xd9,
+ 0x06, 0x81, 0xcd, 0x0f, 0x2d, 0x38, 0x07, 0xcd, 0x44, 0x24, 0x06, 0x02, 0x18, 0x05, 0xcd, 0xdc,
+ 0x2d, 0x06, 0x01, 0xc5, 0xcd, 0x95, 0x2d, 0xcd, 0x8f, 0x2d, 0xcd, 0xfa, 0x2d, 0x35, 0xf3, 0xd8,
+ 0x37, 0x7b, 0x91, 0x6b, 0xb9, 0xaa, 0x7c, 0xde, 0x41, 0x97, 0x61, 0x7c, 0x7b, 0x9d, 0x37, 0x92,
+ 0x7d, 0x5a, 0x2a, 0xcc, 0x4c, 0x7d, 0x5c, 0xa9, 0xaa, 0xaa, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xcd, 0x9e, 0x2d, 0xcd, 0x9e, 0x2d, 0xcd, 0x53, 0x28, 0xcd, 0xbf, 0x23, 0xf1, 0x1f, 0xf5, 0xdc,
+ 0x68, 0x27, 0xf1, 0x04, 0x1f, 0xdc, 0x58, 0x27, 0xf1, 0xb7, 0xf0, 0xcb, 0xfc, 0xaf, 0xc9, 0xcd,
+ 0x36, 0x2f, 0xcd, 0xaa, 0x2d, 0xcd, 0x4f, 0x1f, 0x4b, 0xd1, 0x21, 0x00, 0x00, 0x39, 0xd5, 0xcd,
+ 0xbf, 0x25, 0xcd, 0x45, 0x2f, 0xe1, 0x26, 0x00, 0x39, 0xf9, 0xaf, 0x67, 0x6f, 0x4f, 0xc9, 0xcd,
+ 0x7f, 0x2f, 0xfe, 0x2c, 0x3e, 0x00, 0x20, 0x19, 0xfd, 0x23, 0xc5, 0xe5, 0xcd, 0xaa, 0x2d, 0xcd,
+ 0x46, 0x1f, 0xc1, 0xcd, 0xc9, 0x2d, 0xe1, 0xc1, 0xd9, 0x7d, 0xd9, 0xb7, 0x28, 0x03, 0x3d, 0xed,
+ 0x44, 0x43, 0x11, 0x00, 0x35, 0x80, 0xd9, 0x5f, 0x21, 0x00, 0x00, 0xd9, 0x0c, 0x0d, 0xc8, 0x78,
+ 0xb7, 0xc8, 0x08, 0x1a, 0xbe, 0x28, 0x04, 0x23, 0x10, 0xfa, 0xc9, 0xc5, 0xd5, 0xe5, 0x13, 0x0d,
+ 0x28, 0x09, 0x23, 0x05, 0x28, 0x04, 0x1a, 0xbe, 0x28, 0xf4, 0x37, 0xe1, 0xd1, 0xc1, 0x1a, 0x38,
+ 0xe6, 0xd9, 0x7b, 0xd9, 0xb8, 0x1a, 0x38, 0xdf, 0x08, 0x90, 0x3c, 0xd9, 0x6f, 0xd9, 0xc9, 0xcd,
+ 0x5d, 0x1f, 0xd9, 0x7d, 0x11, 0x00, 0x35, 0x12, 0x1c, 0x3e, 0x80, 0xc9, 0xcd, 0x5d, 0x1f, 0xd9,
+ 0xcd, 0xef, 0x2f, 0x11, 0x00, 0x35, 0x12, 0x3e, 0x80, 0xd0, 0x1c, 0xc9, 0xcd, 0xe0, 0xff, 0x37,
+ 0x18, 0xf1, 0xcd, 0x36, 0x2f, 0xcd, 0xaa, 0x2d, 0xcd, 0x46, 0x1f, 0xc1, 0xcd, 0xc9, 0x2d, 0xd9,
+ 0x7d, 0xd9, 0xb7, 0x28, 0x0d, 0x3d, 0x6f, 0x93, 0x1e, 0x00, 0x30, 0x06, 0xed, 0x44, 0x4f, 0xcd,
+ 0x99, 0x26, 0xcd, 0x7f, 0x2f, 0xfe, 0x2c, 0xfd, 0x23, 0x28, 0x0b, 0xfd, 0x2b, 0xcd, 0x45, 0x2f,
+ 0x3e, 0x80, 0xc9, 0xcd, 0x36, 0x2f, 0xcd, 0xaa, 0x2d, 0xcd, 0x46, 0x1f, 0xc1, 0xcd, 0xc9, 0x2d,
+ 0xcd, 0x45, 0x2f, 0xd9, 0x7d, 0xd9, 0xbb, 0x30, 0x02, 0x6b, 0x5f, 0x3e, 0x80, 0xc9, 0xcd, 0x73,
+ 0x26, 0xd0, 0x1c, 0x1d, 0xc8, 0x4b, 0x7d, 0x93, 0x6f, 0x06, 0x00, 0x62, 0x58, 0xed, 0xb0, 0x3e,
+ 0x80, 0xc9, 0xcd, 0x46, 0x1f, 0xcd, 0x39, 0x2f, 0xd9, 0x7d, 0xd9, 0xf5, 0xcd, 0x4f, 0x1f, 0xcd,
+ 0x45, 0x2f, 0xf1, 0xb7, 0x28, 0xd4, 0x3d, 0x4f, 0x3e, 0x80, 0xc8, 0x1c, 0x1d, 0xc8, 0x43, 0x62,
+ 0x2e, 0x00, 0xc5, 0x7e, 0x23, 0x12, 0x1c, 0x3e, 0x13, 0xca, 0xc1, 0x07, 0x10, 0xf5, 0xc1, 0x0d,
+ 0x20, 0xf0, 0x3e, 0x80, 0xc9, 0xcd, 0xec, 0x2b, 0x7c, 0xa2, 0x67, 0x7d, 0xa3, 0x6f, 0xd9, 0x7c,
+ 0xa2, 0x67, 0x7d, 0xa3, 0x6f, 0xd9, 0xc9, 0xcd, 0xec, 0x2b, 0x7c, 0xaa, 0x67, 0x7d, 0xab, 0x6f,
+ 0xd9, 0x7c, 0xaa, 0x67, 0x7d, 0xab, 0x6f, 0xd9, 0xc9, 0xcd, 0xec, 0x2b, 0x7c, 0xb2, 0x67, 0x7d,
+ 0xb3, 0x6f, 0xd9, 0x7c, 0xb2, 0x67, 0x7d, 0xb3, 0x6f, 0xd9, 0xc9, 0xcd, 0xec, 0x2b, 0x7c, 0xaa,
+ 0xcb, 0x7c, 0x08, 0xcb, 0x7c, 0xc4, 0x04, 0x2c, 0xcd, 0xdb, 0x2c, 0xcb, 0x7c, 0xc4, 0x04, 0x2c,
+ 0x44, 0x4d, 0x21, 0x00, 0x00, 0xd9, 0x44, 0x4d, 0x21, 0x00, 0x00, 0x3e, 0xdf, 0xcd, 0x5d, 0x2e,
+ 0xd9, 0x0e, 0x00, 0x08, 0xc8, 0xc3, 0x04, 0x2c, 0xcd, 0xec, 0x2b, 0xcd, 0x0e, 0x27, 0xb7, 0xcd,
+ 0xdb, 0x2c, 0x0e, 0x00, 0xf0, 0xc3, 0x04, 0x2c, 0xcd, 0x5e, 0x2d, 0xe0, 0xcd, 0x58, 0x2d, 0xcd,
+ 0xa8, 0x2c, 0x7a, 0xee, 0x80, 0x57, 0x18, 0x10, 0x7c, 0xee, 0x80, 0x67, 0x18, 0x0a, 0xcd, 0x58,
+ 0x2d, 0xe0, 0xcd, 0x5e, 0x2d, 0xcd, 0xa8, 0x2c, 0x05, 0x04, 0xc8, 0x0d, 0x0c, 0xca, 0xdb, 0x2c,
+ 0xd9, 0x01, 0x00, 0x00, 0xd9, 0x7c, 0xaa, 0xf5, 0x78, 0xb9, 0xdc, 0xdb, 0x2c, 0x78, 0xcb, 0xfc,
+ 0xc4, 0xdc, 0x2b, 0xf1, 0x7a, 0xcb, 0xfa, 0xfa, 0x94, 0x27, 0xcd, 0x58, 0x2d, 0xdc, 0xe3, 0x2c,
+ 0xcb, 0xfc, 0x18, 0x0a, 0xcd, 0x5e, 0x2d, 0xdc, 0x18, 0x2c, 0xcd, 0x85, 0x2c, 0x2f, 0xd9, 0xeb,
+ 0x21, 0x00, 0x80, 0xb7, 0xed, 0x42, 0xeb, 0xd9, 0xcc, 0xd5, 0x2c, 0xdc, 0xc7, 0x2c, 0xdc, 0xef,
+ 0x2c, 0xcb, 0xbc, 0x0d, 0x0c, 0xca, 0x00, 0x2d, 0xb7, 0xf0, 0xcb, 0xfc, 0xc9, 0xcd, 0xa8, 0x2c,
+ 0x05, 0x04, 0x3e, 0x12, 0xca, 0xc1, 0x07, 0x0d, 0x0c, 0xc8, 0x7c, 0xaa, 0x08, 0xcb, 0xfa, 0xcb,
+ 0xfc, 0xc5, 0x42, 0x4b, 0x11, 0x00, 0x00, 0xd9, 0x42, 0x4b, 0x11, 0x00, 0x00, 0x3e, 0xe0, 0xcd,
+ 0x5d, 0x2e, 0xd9, 0xcb, 0x7a, 0xd9, 0xcc, 0x78, 0x2e, 0xeb, 0xd9, 0xcb, 0x38, 0xcb, 0x19, 0xb7,
+ 0xed, 0x42, 0x3f, 0xeb, 0xcc, 0xd5, 0x2c, 0xdc, 0xc7, 0x2c, 0xc1, 0xdc, 0xef, 0x2c, 0x1f, 0x79,
+ 0x98, 0x3f, 0xc3, 0x8c, 0x28, 0x7c, 0xaa, 0x08, 0xcb, 0x7c, 0xc4, 0x04, 0x2c, 0xcd, 0xdb, 0x2c,
+ 0xcb, 0x7c, 0xc4, 0x04, 0x2c, 0x44, 0x4d, 0x21, 0x00, 0x00, 0xd9, 0x44, 0x4d, 0x21, 0x00, 0x00,
+ 0x3e, 0xdf, 0xcd, 0x8b, 0x2e, 0xd9, 0x0e, 0xbf, 0xcd, 0xf6, 0x2c, 0x20, 0x0d, 0xcb, 0x7a, 0x20,
+ 0x09, 0xcd, 0xdb, 0x2c, 0x4a, 0x08, 0xf0, 0xc3, 0x04, 0x2c, 0x0d, 0xd9, 0xcb, 0x23, 0xcb, 0x12,
+ 0xd9, 0xcb, 0x13, 0xcb, 0x12, 0xd9, 0xed, 0x6a, 0xd9, 0xed, 0x6a, 0xf2, 0x3a, 0x28, 0x08, 0xf8,
+ 0xcb, 0xbc, 0xc9, 0x05, 0x04, 0xca, 0x00, 0x2d, 0x0d, 0x0c, 0xc8, 0x7c, 0xaa, 0x08, 0xcb, 0xfa,
+ 0xcb, 0xfc, 0xc5, 0x44, 0x4d, 0x21, 0x00, 0x00, 0xd9, 0x44, 0x4d, 0x21, 0x00, 0x00, 0x3e, 0xe0,
+ 0xcd, 0x8b, 0x2e, 0xdc, 0x9f, 0x2e, 0xd9, 0xe5, 0x21, 0x00, 0x80, 0xb7, 0xed, 0x52, 0xe1, 0xcc,
+ 0xd5, 0x2c, 0xdc, 0xc7, 0x2c, 0xc1, 0xdc, 0xef, 0x2c, 0x1f, 0x79, 0x88, 0x38, 0x05, 0xf2, 0x00,
+ 0x2d, 0x18, 0x03, 0xfa, 0xf1, 0x2c, 0xc6, 0x80, 0x4f, 0xca, 0x00, 0x2d, 0x08, 0xcb, 0xbc, 0xf0,
+ 0xcb, 0xfc, 0xc9, 0xcd, 0xdb, 0x2c, 0xcb, 0x7c, 0xf5, 0xc4, 0x04, 0x2c, 0x48, 0x06, 0x20, 0xcd,
+ 0x75, 0x2d, 0x38, 0x08, 0x10, 0xf9, 0xf1, 0xd9, 0x2c, 0xd9, 0x4c, 0xc9, 0xf1, 0xc5, 0xeb, 0xe5,
+ 0xd9, 0xeb, 0xe5, 0xd9, 0xdd, 0x21, 0x00, 0x00, 0xdd, 0x39, 0x28, 0x34, 0xc5, 0xd9, 0xd5, 0xd9,
+ 0xd5, 0xcd, 0xb1, 0x2c, 0xcd, 0x44, 0x24, 0xcd, 0xdf, 0x15, 0x18, 0x1d, 0xc5, 0xd9, 0xcb, 0x23,
+ 0xcb, 0x12, 0xd5, 0xd9, 0xcb, 0x13, 0xcb, 0x12, 0xd5, 0x3e, 0x0a, 0xf5, 0xcd, 0x87, 0x2d, 0xcd,
+ 0x98, 0x2f, 0xf1, 0xcd, 0xa6, 0x20, 0xdc, 0x98, 0x2f, 0xd1, 0xd9, 0xd1, 0xd9, 0x79, 0xc1, 0x4f,
+ 0x10, 0xda, 0xf1, 0xf1, 0xf1, 0xc9, 0xf1, 0xf1, 0xf1, 0x18, 0xa1, 0xcb, 0x7a, 0xf5, 0xcd, 0xdb,
+ 0x2c, 0xcd, 0x95, 0x2d, 0x0d, 0x0c, 0x28, 0xee, 0x3e, 0x9e, 0xb9, 0x38, 0x08, 0x3c, 0xcd, 0xdc,
+ 0x2b, 0x08, 0xf2, 0x06, 0x29, 0xcd, 0xdb, 0x2c, 0xcd, 0x5e, 0x24, 0xcd, 0x9e, 0x2d, 0xf1, 0xcd,
+ 0x53, 0x28, 0xc3, 0xd0, 0x23, 0xcd, 0x30, 0x2d, 0x18, 0x08, 0xcd, 0x0a, 0x2d, 0x18, 0x03, 0xcd,
+ 0xfd, 0x2c, 0xd0, 0x18, 0x51, 0xcd, 0x30, 0x2d, 0x18, 0x08, 0xcd, 0x0a, 0x2d, 0x18, 0x03, 0xcd,
+ 0xfd, 0x2c, 0xc8, 0xd8, 0x18, 0x40, 0xcd, 0x30, 0x2d, 0x18, 0x08, 0xcd, 0x0a, 0x2d, 0x18, 0x03,
+ 0xcd, 0xfd, 0x2c, 0xd8, 0x18, 0x30, 0xcd, 0x30, 0x2d, 0x18, 0x08, 0xcd, 0x0a, 0x2d, 0x18, 0x03,
+ 0xcd, 0xfd, 0x2c, 0x28, 0x21, 0xd0, 0x18, 0x1e, 0xcd, 0x30, 0x2d, 0x18, 0x08, 0xcd, 0x0a, 0x2d,
+ 0x18, 0x03, 0xcd, 0xfd, 0x2c, 0xc8, 0x18, 0x0e, 0xcd, 0x30, 0x2d, 0x18, 0x08, 0xcd, 0x0a, 0x2d,
+ 0x18, 0x03, 0xcd, 0xfd, 0x2c, 0xc0, 0x21, 0xff, 0xff, 0xd9, 0x21, 0xff, 0xff, 0xd9, 0xaf, 0x4f,
+ 0xc9, 0xd9, 0xfd, 0x7e, 0x00, 0xfd, 0x23, 0x17, 0x17, 0x67, 0xe6, 0xc0, 0xfd, 0xae, 0x00, 0xfd,
+ 0x23, 0x6f, 0x7c, 0x17, 0x17, 0xe6, 0xc0, 0xfd, 0xae, 0x00, 0xfd, 0x23, 0x67, 0xd9, 0xaf, 0x4f,
+ 0x67, 0x6f, 0xc9, 0xfd, 0x23, 0xcd, 0x56, 0x1f, 0xcd, 0xce, 0x29, 0x3e, 0x80, 0xc9, 0xcd, 0xf5,
+ 0x2b, 0x01, 0x08, 0x00, 0x11, 0x00, 0x35, 0xc5, 0x06, 0x04, 0xaf, 0xcd, 0x75, 0x2d, 0x17, 0x10,
+ 0xfa, 0xc1, 0x0d, 0xf8, 0x28, 0x06, 0xb7, 0x20, 0x03, 0xb8, 0x28, 0xeb, 0xc6, 0x90, 0x27, 0xce,
+ 0x40, 0x27, 0x12, 0x13, 0x47, 0x18, 0xe0, 0xcd, 0x7f, 0x2f, 0xfe, 0x7e, 0x28, 0xc5, 0xcd, 0x56,
+ 0x1f, 0xdd, 0x21, 0x00, 0x37, 0xdd, 0x7e, 0x03, 0xb7, 0xdd, 0x21, 0x7a, 0x2b, 0x28, 0x04, 0xdd,
+ 0x21, 0x00, 0x37, 0x11, 0x00, 0x35, 0xcd, 0xb1, 0x2c, 0x06, 0x00, 0xcb, 0x7c, 0x28, 0x06, 0xcb,
+ 0xbc, 0x3e, 0x2d, 0x12, 0x13, 0xaf, 0xb9, 0x28, 0x47, 0xd5, 0x78, 0xf5, 0x79, 0xfe, 0xa1, 0x30,
+ 0x1a, 0xfe, 0x9b, 0x30, 0x25, 0x2f, 0xfe, 0xe1, 0x38, 0x02, 0x3e, 0xf8, 0xc6, 0x1c, 0xcd, 0x21,
+ 0x2e, 0xf5, 0xcd, 0x53, 0x28, 0xf1, 0x47, 0xf1, 0x90, 0x18, 0xe0, 0xd6, 0x20, 0xcd, 0x21, 0x2e,
+ 0xf5, 0xcd, 0xc0, 0x27, 0xf1, 0x47, 0xf1, 0x80, 0x18, 0xd1, 0x3e, 0x09, 0xcd, 0x21, 0x2e, 0xcd,
+ 0x0f, 0x2d, 0x79, 0xc1, 0x4f, 0xcb, 0xfc, 0xdc, 0x4c, 0x2d, 0xd1, 0xcb, 0xb9, 0x3e, 0x00, 0x17,
+ 0x0c, 0x08, 0x78, 0xdd, 0xcb, 0x02, 0x4e, 0x20, 0x08, 0xaf, 0xdd, 0xbe, 0x01, 0x28, 0x0a, 0x3e,
+ 0xf6, 0xdd, 0x86, 0x01, 0xb7, 0xfa, 0x89, 0x2a, 0xaf, 0xf5, 0x08, 0xcd, 0x75, 0x2d, 0x8f, 0xfe,
+ 0x0a, 0x38, 0x05, 0xd6, 0x0a, 0xd9, 0x2c, 0xd9, 0x0d, 0x20, 0xf0, 0x4f, 0x7c, 0xe6, 0x3f, 0x67,
+ 0xf1, 0xf2, 0xae, 0x2a, 0x3c, 0x20, 0x1c, 0x3e, 0x04, 0xb9, 0x3e, 0x00, 0x18, 0x15, 0xf5, 0x79,
+ 0xce, 0x30, 0xfe, 0x30, 0x28, 0x05, 0xfe, 0x3a, 0x3f, 0x30, 0x08, 0xe3, 0xcb, 0x75, 0xe3, 0x20,
+ 0x05, 0x3e, 0x30, 0x3c, 0x3d, 0xf5, 0x04, 0xcd, 0xf6, 0x2c, 0x0e, 0x20, 0x3e, 0x00, 0x20, 0xbb,
+ 0xf1, 0xf5, 0x3e, 0x00, 0x38, 0xb5, 0xeb, 0x0e, 0xff, 0x16, 0x01, 0xdd, 0x5e, 0x01, 0xdd, 0xcb,
+ 0x02, 0x46, 0x20, 0x32, 0xdd, 0xcb, 0x02, 0x4e, 0x28, 0x11, 0x78, 0xb7, 0x28, 0x04, 0xfa, 0xf2,
+ 0x2a, 0x50, 0x7a, 0xdd, 0x86, 0x01, 0x5f, 0xfe, 0x0b, 0x38, 0x17, 0x78, 0x11, 0x01, 0x01, 0xb7,
+ 0xfa, 0x16, 0x2b, 0x28, 0x0d, 0xdd, 0x7e, 0x01, 0xb7, 0x20, 0x02, 0x3e, 0x0a, 0xb8, 0x38, 0x06,
+ 0x50, 0x58, 0x78, 0xc6, 0x81, 0x4f, 0xcb, 0xfa, 0x1d, 0x7a, 0xb9, 0x30, 0x0c, 0xf1, 0x28, 0x03,
+ 0xf2, 0x2b, 0x2b, 0xf5, 0x1c, 0x1d, 0xfa, 0x3a, 0x2b, 0x3e, 0x30, 0x15, 0xe2, 0x32, 0x2b, 0x36,
+ 0x2e, 0x23, 0x77, 0x23, 0x1d, 0xf2, 0x19, 0x2b, 0x18, 0xe3, 0xf1, 0x0c, 0x4d, 0x20, 0x27, 0x36,
+ 0x45, 0x23, 0x78, 0x3d, 0xf2, 0x4c, 0x2b, 0x36, 0x2d, 0x23, 0xed, 0x44, 0x36, 0x30, 0x28, 0x15,
+ 0xfe, 0x0a, 0x47, 0x3e, 0x3a, 0x38, 0x03, 0x23, 0x36, 0x30, 0x34, 0xbe, 0x20, 0x05, 0x36, 0x30,
+ 0x2b, 0x34, 0x23, 0x10, 0xf5, 0x23, 0xeb, 0xdd, 0xcb, 0x02, 0x46, 0x3e, 0x80, 0xc8, 0x79, 0xc6,
+ 0x04, 0xbb, 0x28, 0xf7, 0xeb, 0x36, 0x20, 0x23, 0xeb, 0x18, 0xf6, 0x09, 0x00, 0xc5, 0x47, 0x0e,
+ 0x02, 0xfd, 0x23, 0xfd, 0x7e, 0x00, 0xcd, 0x2b, 0x2f, 0x08, 0xfd, 0x7e, 0x00, 0xcd, 0x1b, 0x2f,
+ 0x38, 0x17, 0x78, 0x87, 0x87, 0x80, 0x87, 0x47, 0xfd, 0x7e, 0x00, 0xfd, 0x23, 0xe6, 0x0f, 0x80,
+ 0x47, 0x0d, 0xf2, 0x8a, 0x2b, 0x06, 0x64, 0x18, 0xe1, 0x08, 0xfe, 0x2d, 0x78, 0xc1, 0xc0, 0xed,
+ 0x44, 0xc9, 0xfd, 0x23, 0xfd, 0x7e, 0x00, 0xcd, 0x1b, 0x2f, 0xd8, 0x04, 0xfd, 0x23, 0xcd, 0x66,
+ 0x2d, 0x38, 0x13, 0x0d, 0x0c, 0x20, 0x0f, 0xe6, 0x0f, 0xd9, 0x06, 0x00, 0x4f, 0x09, 0xd9, 0x30,
+ 0xe3, 0x23, 0x7c, 0xb5, 0x20, 0xde, 0x0c, 0xcd, 0xde, 0x2c, 0x18, 0xd8, 0x08, 0xaf, 0x08, 0xcb,
+ 0xfc, 0xcd, 0xe3, 0x2c, 0xb9, 0xc8, 0xd2, 0xe1, 0x2b, 0xc3, 0xf1, 0x2c, 0xcd, 0xdb, 0x2c, 0xcd,
+ 0xf5, 0x2b, 0xcd, 0xdb, 0x2c, 0x0d, 0x0c, 0xc8, 0xcb, 0x7c, 0xf5, 0x3e, 0x9f, 0xcd, 0xdc, 0x2b,
+ 0xf1, 0x0e, 0x00, 0xc8, 0xb7, 0xd9, 0xd5, 0xeb, 0x21, 0x00, 0x00, 0xed, 0x52, 0xd1, 0xd9, 0xd5,
+ 0xeb, 0x21, 0x00, 0x00, 0xed, 0x52, 0xd1, 0xc9, 0xd9, 0x2f, 0xe5, 0xb7, 0x21, 0x00, 0x00, 0xed,
+ 0x42, 0x44, 0x4d, 0xe1, 0x18, 0xe0, 0x3e, 0x96, 0xb9, 0x3e, 0x17, 0xda, 0xc1, 0x07, 0xcd, 0xbf,
+ 0x23, 0xd9, 0x01, 0x69, 0x21, 0xd9, 0xcb, 0xfa, 0xcb, 0xfc, 0x79, 0x0e, 0x00, 0xdd, 0x21, 0x00,
+ 0x00, 0xdd, 0xe5, 0xb8, 0x38, 0x3a, 0xd9, 0xe3, 0xed, 0x42, 0xe3, 0xed, 0x52, 0xd9, 0xed, 0x52,
+ 0x30, 0x09, 0xd9, 0xe3, 0x09, 0xe3, 0xed, 0x5a, 0xd9, 0xed, 0x5a, 0x3f, 0xcb, 0x11, 0x30, 0x02,
+ 0xcb, 0xf9, 0x3d, 0xb8, 0x38, 0x19, 0xe3, 0x29, 0xe3, 0xd9, 0xed, 0x6a, 0xd9, 0xed, 0x6a, 0x30,
+ 0xd5, 0xb7, 0xd9, 0xe3, 0xed, 0x42, 0xe3, 0xed, 0x52, 0xd9, 0xed, 0x52, 0xb7, 0x18, 0xdc, 0x3c,
+ 0x59, 0x4f, 0xd9, 0xc1, 0xd9, 0xcb, 0x7c, 0xc0, 0xd9, 0xcb, 0x21, 0xcb, 0x10, 0xed, 0x6a, 0xd9,
+ 0xed, 0x6a, 0x0d, 0xc2, 0x85, 0x2c, 0xc9, 0xcb, 0x7c, 0xc0, 0xd9, 0x29, 0xd9, 0xed, 0x6a, 0x0d,
+ 0xc2, 0x97, 0x2c, 0xc9, 0x08, 0xc6, 0x10, 0x08, 0xcd, 0xdb, 0x2c, 0xcd, 0xb1, 0x2c, 0xcd, 0xdb,
+ 0x2c, 0x0d, 0x0c, 0xc0, 0xcd, 0xf6, 0x2c, 0xc8, 0x7c, 0xb7, 0xfc, 0x04, 0x2c, 0x0e, 0x9f, 0xcd,
+ 0x97, 0x2c, 0xb7, 0xf8, 0xcb, 0xbc, 0xc9, 0xd9, 0x01, 0x01, 0x00, 0x09, 0xd9, 0xd0, 0xc5, 0x01,
+ 0x01, 0x00, 0x09, 0xc1, 0xc9, 0xb7, 0xd9, 0xcb, 0xc5, 0xd9, 0xc9, 0x79, 0x48, 0x47, 0xeb, 0xd9,
+ 0xeb, 0xd9, 0xc9, 0xcd, 0x7c, 0x2d, 0xd9, 0xcb, 0x18, 0xcb, 0x19, 0x08, 0xb0, 0x08, 0xd9, 0x0c,
+ 0xc0, 0x3e, 0x14, 0xc3, 0xc1, 0x07, 0x7c, 0xb5, 0xd9, 0xb4, 0xb5, 0xd9, 0xc9, 0xcd, 0x28, 0x2d,
+ 0x3e, 0x00, 0xd9, 0x67, 0x6f, 0xd9, 0x67, 0x6f, 0x4f, 0xc9, 0xcd, 0x1c, 0x2d, 0x18, 0xf1, 0x79,
+ 0xb8, 0xc0, 0xed, 0x52, 0x19, 0xc0, 0xd9, 0xed, 0x52, 0x19, 0xd9, 0xc9, 0x7c, 0xaa, 0x7c, 0x17,
+ 0xf8, 0x30, 0xec, 0xcd, 0x0f, 0x2d, 0x3f, 0xc9, 0x7c, 0xaa, 0xf2, 0x12, 0x2d, 0x7c, 0x17, 0xc9,
+ 0xcd, 0x35, 0x2d, 0x18, 0xcb, 0x04, 0x0c, 0x05, 0x28, 0x0a, 0x0d, 0x28, 0x0c, 0x1a, 0xbe, 0xc0,
+ 0x13, 0x23, 0x18, 0xf3, 0xb7, 0x0d, 0xc8, 0x37, 0xc9, 0xb7, 0x0c, 0xc9, 0x05, 0x0c, 0xcd, 0x88,
+ 0x2d, 0xcd, 0x7b, 0x2d, 0xcd, 0x7b, 0x2d, 0x08, 0xd9, 0x19, 0xd9, 0xed, 0x5a, 0xc9, 0xd9, 0xb7,
+ 0xed, 0x52, 0xd9, 0xed, 0x52, 0xc9, 0xcd, 0x88, 0x2d, 0xcd, 0x75, 0x2d, 0xd8, 0xcd, 0x75, 0x2d,
+ 0xd8, 0xcd, 0x58, 0x2d, 0xd8, 0xd9, 0x29, 0xd9, 0xed, 0x6a, 0xc9, 0x0c, 0xcb, 0x3c, 0xcb, 0x1d,
+ 0xd9, 0xcb, 0x1c, 0xcb, 0x1d, 0xd9, 0xc9, 0x41, 0x54, 0x5d, 0xd9, 0x54, 0x5d, 0xd9, 0xc9, 0xcd,
+ 0x87, 0x2d, 0xcd, 0x53, 0x28, 0xdd, 0xe1, 0xc5, 0xe5, 0xd9, 0xe5, 0xd9, 0xdd, 0xe9, 0xdd, 0xe1,
+ 0xd9, 0xd1, 0xd9, 0xd1, 0x79, 0xc1, 0x41, 0x4f, 0xdd, 0xe9, 0xcd, 0x39, 0x16, 0xdd, 0xe1, 0xb7,
+ 0x21, 0x00, 0x35, 0x54, 0x45, 0xed, 0x52, 0x39, 0xf9, 0x57, 0xd5, 0x28, 0x0a, 0x4b, 0x11, 0x00,
+ 0x35, 0xeb, 0xed, 0xb0, 0xcd, 0x39, 0x16, 0xdd, 0xe9, 0xdd, 0xe1, 0x21, 0x00, 0x00, 0x44, 0x39,
+ 0x11, 0x00, 0x35, 0x0c, 0x0d, 0x28, 0x02, 0xed, 0xb0, 0xf9, 0xdd, 0xe9, 0xcd, 0x95, 0x2d, 0xcd,
+ 0xb4, 0x23, 0xcd, 0x68, 0x27, 0xcd, 0x9e, 0x2d, 0xcd, 0x95, 0x2d, 0xcd, 0xdb, 0x2c, 0xcd, 0xb4,
+ 0x23, 0xcd, 0x52, 0x27, 0xcd, 0x9e, 0x2d, 0xc3, 0xc0, 0x27, 0xdd, 0x21, 0x02, 0x00, 0xdd, 0x39,
+ 0xdd, 0xe3, 0xcd, 0xa6, 0x20, 0xcd, 0x53, 0x28, 0x11, 0x05, 0x00, 0xdd, 0x19, 0xcd, 0xa6, 0x20,
+ 0xdd, 0xe3, 0x04, 0x05, 0xfa, 0x68, 0x27, 0xcd, 0x68, 0x27, 0xcd, 0xa6, 0x20, 0xdd, 0xe3, 0x18,
+ 0xe4, 0x3c, 0x08, 0xe5, 0xd9, 0xe5, 0xd9, 0xcd, 0xb4, 0x23, 0xcd, 0xdb, 0x2c, 0xaf, 0x08, 0x3d,
+ 0x28, 0x20, 0xf2, 0x39, 0x2e, 0xb9, 0x38, 0x1a, 0x3c, 0x08, 0x3c, 0xcb, 0xfc, 0xcd, 0x4e, 0x2d,
+ 0x30, 0x05, 0x08, 0xcd, 0x7b, 0x2d, 0x08, 0x08, 0xdc, 0xc7, 0x2c, 0x0c, 0xfa, 0x2e, 0x2e, 0xc3,
+ 0xf1, 0x2c, 0xcd, 0xdb, 0x2c, 0xcb, 0xba, 0xd9, 0xe1, 0xd9, 0xe1, 0x08, 0xc9, 0xb7, 0xed, 0x42,
+ 0xd9, 0xed, 0x42, 0xd9, 0x30, 0x05, 0x09, 0xd9, 0xed, 0x4a, 0xd9, 0x3f, 0xcb, 0x13, 0xcb, 0x12,
+ 0xd9, 0xcb, 0x13, 0xcb, 0x12, 0xd9, 0x3c, 0xf0, 0xed, 0x6a, 0xd9, 0xed, 0x6a, 0xd9, 0x30, 0xde,
+ 0xb7, 0xed, 0x42, 0xd9, 0xed, 0x42, 0xd9, 0x37, 0xc3, 0x6c, 0x2e, 0xb7, 0xd9, 0xcb, 0x1a, 0xcb,
+ 0x1b, 0xd9, 0xcb, 0x1a, 0xcb, 0x1b, 0x30, 0x05, 0x09, 0xd9, 0xed, 0x4a, 0xd9, 0x3c, 0xf0, 0xd9,
+ 0xcb, 0x1c, 0xcb, 0x1d, 0xd9, 0xcb, 0x1c, 0xcb, 0x1d, 0xc3, 0x8c, 0x2e, 0xed, 0x42, 0xd9, 0xed,
+ 0x42, 0xd9, 0x0c, 0x30, 0x07, 0x0d, 0x09, 0xd9, 0xed, 0x4a, 0xd9, 0x0d, 0x3c, 0xf0, 0xcb, 0x21,
+ 0xcb, 0x10, 0xd9, 0xcb, 0x11, 0xcb, 0x10, 0xd9, 0x0c, 0xcb, 0x23, 0xcb, 0x12, 0xd9, 0xcb, 0x13,
+ 0xcb, 0x12, 0xd9, 0xed, 0x6a, 0xd9, 0xed, 0x6a, 0xd9, 0xcb, 0x23, 0xcb, 0x12, 0xd9, 0xcb, 0x13,
+ 0xcb, 0x12, 0xd9, 0xed, 0x6a, 0xd9, 0xed, 0x6a, 0xd9, 0xd2, 0xac, 0x2e, 0xb7, 0xed, 0x42, 0xd9,
+ 0xed, 0x42, 0xd9, 0x0c, 0xc3, 0xbc, 0x2e, 0x29, 0xd9, 0xed, 0x6a, 0xd9, 0x38, 0xee, 0x3c, 0x0c,
+ 0xed, 0x42, 0xd9, 0xed, 0x42, 0xd9, 0xd0, 0x09, 0xd9, 0xed, 0x4a, 0xd9, 0x0d, 0xc9, 0xfd, 0x7e,
+ 0x00, 0xfe, 0x41, 0x38, 0x06, 0xd6, 0x37, 0xfe, 0x10, 0x3f, 0xc9, 0xfe, 0x3a, 0x3f, 0xd8, 0xfe,
+ 0x30, 0xc9, 0xfe, 0x3e, 0xd0, 0xfe, 0x3d, 0xd0, 0xfe, 0x3c, 0xc9, 0xfd, 0x23, 0xfe, 0x2b, 0xc8,
+ 0xfe, 0x2d, 0xc8, 0xfd, 0x2b, 0xc9, 0xcd, 0x4f, 0x1f, 0xcd, 0x7f, 0x2f, 0xfd, 0x23, 0xfe, 0x2c,
+ 0xc8, 0x3e, 0x05, 0x18, 0x0a, 0xcd, 0x7f, 0x2f, 0xfd, 0x23, 0xfe, 0x29, 0xc8, 0x3e, 0x1b, 0xc3,
+ 0xc1, 0x07, 0xfd, 0x23, 0x08, 0xfa, 0x6b, 0x1f, 0x08, 0xe3, 0xd9, 0xe5, 0xd9, 0xf5, 0xc5, 0xe9,
+ 0x08, 0xfa, 0x6b, 0x1f, 0xd9, 0xc1, 0xd9, 0x79, 0xc1, 0x47, 0xf1, 0xd9, 0xeb, 0xe1, 0xd9, 0xeb,
+ 0xe1, 0xd9, 0xc5, 0xd9, 0xe6, 0x0f, 0xcd, 0x98, 0x2f, 0xaf, 0x08, 0xfd, 0x7e, 0x00, 0xc9, 0xfd,
+ 0x7e, 0x00, 0xfe, 0x20, 0xc0, 0xfd, 0x23, 0xc3, 0x7f, 0x2f, 0xe5, 0x21, 0x2a, 0x1e, 0x18, 0x13,
+ 0xe5, 0xd6, 0x8d, 0x21, 0x78, 0x1d, 0x18, 0x0b, 0x08, 0x78, 0xb1, 0xc4, 0xa4, 0x2c, 0x08, 0xe5,
+ 0x21, 0xea, 0x1d, 0xc5, 0x87, 0x4f, 0x06, 0x00, 0x09, 0x7e, 0x23, 0x66, 0x6f, 0xc1, 0xe3, 0xc9,
+ 0xdd, 0xe5, 0x3e, 0x01, 0x21, 0xee, 0x34, 0xcd, 0xf1, 0xff, 0xdd, 0x21, 0xee, 0x34, 0xdd, 0x6e,
+ 0x00, 0xdd, 0x66, 0x01, 0xdd, 0x5e, 0x02, 0xdd, 0x56, 0x03, 0xdd, 0xe1, 0xc9, 0xdd, 0xe5, 0xdd,
+ 0x21, 0xee, 0x34, 0xdd, 0x75, 0x00, 0xdd, 0x74, 0x01, 0xdd, 0x73, 0x02, 0xdd, 0x72, 0x03, 0x3e,
+ 0x02, 0x21, 0xee, 0x34, 0xcd, 0xf1, 0xff, 0xdd, 0xe1, 0xc9, 0x3e, 0x0c, 0xc3, 0xee, 0xff, 0x3e,
+ 0x81, 0xcd, 0xf4, 0xff, 0x7c, 0xb7, 0xc0, 0x7d, 0x37, 0xc9, 0x3e, 0x1f, 0xcd, 0xee, 0xff, 0x7b,
+ 0xcd, 0xee, 0xff, 0x7d, 0xc3, 0xee, 0xff, 0x3e, 0x86, 0xcd, 0xf4, 0xff, 0x5d, 0x6c, 0x16, 0x00,
+ 0x62, 0xc9, 0xcd, 0x46, 0x1f, 0xd9, 0xe5, 0xcd, 0x39, 0x2f, 0xcd, 0x46, 0x1f, 0xd9, 0xd1, 0xcd,
+ 0x45, 0x2f, 0xdd, 0x21, 0xee, 0x34, 0xdd, 0x73, 0x00, 0xdd, 0x72, 0x01, 0xdd, 0x75, 0x02, 0xdd,
+ 0x74, 0x03, 0x21, 0xee, 0x34, 0x3e, 0x09, 0xcd, 0xf1, 0xff, 0xdd, 0x7e, 0x04, 0x6f, 0xc6, 0x01,
+ 0x9f, 0x67, 0xd9, 0x67, 0x6f, 0xaf, 0x4f, 0xc9, 0xcd, 0x5d, 0x1f, 0xd9, 0x3e, 0x80, 0xcd, 0xf4,
+ 0xff, 0xaf, 0x18, 0xee, 0x06, 0x00, 0xdd, 0x21, 0xee, 0x34, 0xc5, 0xdd, 0xe5, 0xcd, 0x46, 0x1f,
+ 0xd9, 0xdd, 0xe1, 0xc1, 0xdd, 0x75, 0x00, 0x78, 0xfe, 0x0d, 0x28, 0x0b, 0x04, 0xdd, 0x23, 0xc5,
+ 0xdd, 0xe5, 0xcd, 0x39, 0x2f, 0x18, 0xe6, 0x21, 0xee, 0x34, 0x3e, 0x08, 0xcd, 0xf1, 0xff, 0xc3,
+ 0xa2, 0x0d, 0x06, 0x00, 0xdd, 0x21, 0xee, 0x34, 0xc5, 0xdd, 0xe5, 0xcd, 0x46, 0x1f, 0xd9, 0xdd,
+ 0xe1, 0xc1, 0xdd, 0x75, 0x00, 0xdd, 0x74, 0x01, 0xdd, 0x23, 0xdd, 0x23, 0x04, 0x04, 0x78, 0xfe,
+ 0x08, 0x28, 0x08, 0xc5, 0xdd, 0xe5, 0xcd, 0x39, 0x2f, 0x18, 0xe0, 0x21, 0xee, 0x34, 0x3e, 0x07,
+ 0xcd, 0xf1, 0xff, 0xc3, 0xa2, 0x0d, 0x2e, 0x04, 0xe5, 0x18, 0x0d, 0x2e, 0x05, 0xe5, 0x18, 0x08,
+ 0xcd, 0x46, 0x1f, 0xd9, 0xe5, 0xcd, 0x39, 0x2f, 0xcd, 0x46, 0x1f, 0xd9, 0xe5, 0xcd, 0x39, 0x2f,
+ 0xcd, 0x46, 0x1f, 0xd9, 0xd1, 0x3e, 0x19, 0xcd, 0xee, 0xff, 0xc1, 0x79, 0xcd, 0xee, 0xff, 0x7b,
+ 0xcd, 0xee, 0xff, 0x7a, 0xcd, 0xee, 0xff, 0x7d, 0xcd, 0xee, 0xff, 0x7c, 0xcd, 0xee, 0xff, 0xc3,
+ 0xa2, 0x0d, 0xcd, 0x46, 0x1f, 0xaf, 0x32, 0xfb, 0x37, 0xd9, 0x3e, 0x16, 0xcd, 0xee, 0xff, 0x7d,
+ 0xcd, 0xee, 0xff, 0xc3, 0xa2, 0x0d, 0x3e, 0x10, 0xcd, 0xee, 0xff, 0xc3, 0xa2, 0x0d, 0xcd, 0x46,
+ 0x1f, 0xd9, 0x3e, 0x11, 0xcd, 0xee, 0xff, 0x7d, 0xcd, 0xee, 0xff, 0xc3, 0xa2, 0x0d, 0xcd, 0x46,
+ 0x1f, 0xd9, 0xe5, 0xcd, 0x39, 0x2f, 0xcd, 0x46, 0x1f, 0xd9, 0xd1, 0x3e, 0x12, 0xcd, 0xee, 0xff,
+ 0x7b, 0xcd, 0xee, 0xff, 0x7d, 0xcd, 0xee, 0xff, 0xc3, 0xa2, 0x0d, 0xe1, 0x21, 0x4e, 0x31, 0xe5,
+ 0xdd, 0x7e, 0x04, 0xdd, 0x5e, 0x14, 0xdd, 0x66, 0x64, 0xdd, 0x6e, 0x60, 0xfd, 0xe9, 0xf5, 0x7d,
+ 0x6c, 0xd9, 0xc1, 0x67, 0x68, 0x79, 0xd9, 0x67, 0xc9, 0x3e, 0x82, 0xcd, 0xf4, 0xff, 0x22, 0xf2,
+ 0x34, 0xc9, 0xcd, 0xff, 0x33, 0xd0, 0xcd, 0xff, 0x31, 0x3e, 0x80, 0xcd, 0xce, 0xff, 0xa7, 0xca,
+ 0x45, 0x32, 0x67, 0x3e, 0x0d, 0x1b, 0xcd, 0x94, 0x31, 0xaf, 0xc3, 0xce, 0xff, 0x1a, 0xa7, 0x3e,
+ 0xff, 0x28, 0x02, 0x13, 0x13, 0xcd, 0x9f, 0x31, 0xfe, 0xff, 0xc8, 0xcd, 0x9e, 0x31, 0xcd, 0x9e,
+ 0x31, 0x13, 0x13, 0x13, 0xcd, 0x9f, 0x31, 0x13, 0xfe, 0x0d, 0x20, 0xf8, 0x18, 0xdf, 0x1b, 0x1a,
+ 0xc3, 0xd4, 0xff, 0xcd, 0xe7, 0xff, 0xc3, 0xda, 0x0c, 0x22, 0xee, 0x34, 0xed, 0x53, 0xf0, 0x34,
+ 0xcd, 0x59, 0x31, 0xaf, 0x32, 0xf4, 0x34, 0x3d, 0xcd, 0x3f, 0x32, 0xd5, 0xe1, 0x1a, 0xfe, 0x0d,
+ 0x20, 0x3b, 0x13, 0x13, 0x13, 0x1a, 0x77, 0x1b, 0x1a, 0x47, 0x1b, 0x1a, 0x23, 0x70, 0x23, 0x77,
+ 0x3c, 0x28, 0x26, 0x24, 0x28, 0x23, 0x25, 0x18, 0x05, 0xaf, 0x63, 0xc3, 0xce, 0xff, 0x13, 0x13,
+ 0x13, 0x2b, 0x2b, 0x1a, 0xfe, 0x20, 0x20, 0x04, 0x35, 0x13, 0x18, 0xf7, 0x23, 0x23, 0x23, 0x1a,
+ 0x77, 0x23, 0x13, 0xfe, 0x0d, 0x20, 0xf8, 0x18, 0xca, 0x2b, 0x2b, 0x36, 0x00, 0x37, 0xc9, 0x22,
+ 0xee, 0x34, 0xe5, 0xd5, 0xaf, 0x5f, 0xcd, 0xda, 0xff, 0xfe, 0x04, 0x38, 0x2f, 0xd1, 0xd5, 0x13,
+ 0xed, 0x53, 0xf8, 0x34, 0xeb, 0x23, 0x09, 0x22, 0xfc, 0x34, 0xcd, 0x59, 0x31, 0x22, 0xfa, 0x34,
+ 0x22, 0xfe, 0x34, 0x21, 0xff, 0xff, 0x22, 0xf2, 0x34, 0x22, 0xf6, 0x34, 0x21, 0x00, 0xfb, 0x22,
+ 0xf0, 0x34, 0x26, 0x00, 0x22, 0xf4, 0x34, 0xaf, 0xcd, 0x3f, 0x32, 0xa7, 0xd1, 0xe1, 0xc9, 0x21,
+ 0xee, 0x34, 0xc3, 0xdd, 0xff, 0x3e, 0xc0, 0xcd, 0xd6, 0x07, 0x43, 0x61, 0x6e, 0x27, 0x74, 0x20,
+ 0x73, 0x61, 0x76, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x00, 0x3e, 0x40, 0x18, 0x06, 0x3e, 0x80,
+ 0x18, 0x02, 0x3e, 0xc0, 0xc3, 0x7e, 0x21, 0xc1, 0xed, 0x53, 0xf0, 0x34, 0x5f, 0x79, 0xa7, 0x3e,
+ 0x01, 0x20, 0x02, 0x3e, 0x03, 0xcd, 0xe0, 0x32, 0xc3, 0xa2, 0x0d, 0xe5, 0x63, 0xcd, 0xd4, 0xff,
+ 0xe1, 0xc9, 0xfe, 0xeb, 0x28, 0x19, 0xfe, 0xe0, 0x28, 0x08, 0xfe, 0xf6, 0xca, 0x3d, 0x33, 0xc3,
+ 0x76, 0x21, 0x2a, 0xe2, 0x37, 0xc3, 0x76, 0x21, 0xe5, 0x63, 0xcd, 0xd7, 0xff, 0xe1, 0xc9, 0x3e,
+ 0x87, 0xcd, 0xf4, 0xff, 0x6c, 0xc3, 0x74, 0x21, 0x3e, 0x7f, 0x6b, 0xcd, 0xf4, 0xff, 0x7d, 0x2f,
+ 0xa7, 0xc9, 0x18, 0xf4, 0x3e, 0x02, 0x21, 0x00, 0x00, 0x22, 0xf0, 0x34, 0xcd, 0xe0, 0x32, 0x2a,
+ 0xee, 0x34, 0xed, 0x5b, 0xf0, 0x34, 0xc9, 0x21, 0x00, 0x00, 0xc3, 0xf4, 0xff, 0xaf, 0x18, 0xe6,
+ 0xfe, 0x95, 0xca, 0x53, 0x0e, 0xfe, 0xdc, 0xc2, 0x35, 0x0e, 0x0e, 0x00, 0xc5, 0xc3, 0x7c, 0x14,
+ 0x22, 0xee, 0x34, 0x21, 0xee, 0x34, 0xc3, 0xda, 0xff, 0xfd, 0x7e, 0x00, 0xfe, 0x24, 0x28, 0x06,
+ 0xcd, 0xb0, 0x2f, 0xc3, 0xa2, 0x21, 0xfd, 0x23, 0x21, 0x00, 0x35, 0x36, 0x00, 0x3e, 0x0e, 0xcd,
+ 0xf1, 0xff, 0x7e, 0x5f, 0xa7, 0x28, 0x02, 0x1e, 0x18, 0x16, 0x35, 0x3e, 0x80, 0xc9, 0xfd, 0x7e,
+ 0x00, 0xfe, 0x24, 0x28, 0x06, 0xcd, 0x48, 0x17, 0xc3, 0xa3, 0x14, 0xfd, 0x23, 0xcd, 0x48, 0x17,
+ 0xcd, 0x4f, 0x1f, 0x7b, 0xa7, 0x28, 0x0a, 0xd5, 0x62, 0x6b, 0x4b, 0x06, 0x00, 0x2b, 0xed, 0xb8,
+ 0xd1, 0x21, 0x00, 0x35, 0x73, 0x3e, 0x0f, 0xcd, 0xf1, 0xff, 0xc3, 0xa2, 0x0d, 0xfd, 0x7e, 0x00,
+ 0xfe, 0x24, 0x20, 0x02, 0xfd, 0x23, 0x2a, 0xee, 0x37, 0x11, 0x00, 0x35, 0x7e, 0x12, 0x13, 0x23,
+ 0xcb, 0x7b, 0x20, 0x04, 0xa7, 0x20, 0xf5, 0x1d, 0x3e, 0x80, 0xc9, 0x3e, 0xff, 0xcd, 0x7b, 0x32,
+ 0xcd, 0x86, 0x33, 0xcd, 0x80, 0x33, 0xcd, 0x7c, 0x33, 0xcd, 0x78, 0x33, 0xc1, 0x79, 0xa7, 0x28,
+ 0x01, 0x3c, 0xcd, 0x7b, 0x32, 0xc3, 0x78, 0x0f, 0x7c, 0xc3, 0x7b, 0x32, 0x7d, 0xc3, 0x7b, 0x32,
+ 0xd9, 0x7c, 0xd9, 0xc3, 0x7b, 0x32, 0xd9, 0x7d, 0xd9, 0xc3, 0x7b, 0x32, 0xf1, 0x6f, 0xdd, 0xe1,
+ 0xf1, 0xd5, 0xeb, 0xcd, 0x01, 0x16, 0xd1, 0xc3, 0xc7, 0x12, 0xcd, 0xc4, 0x33, 0xcd, 0xbd, 0x33,
+ 0xcd, 0xb8, 0x33, 0xcd, 0xb3, 0x33, 0xcd, 0x98, 0x32, 0x4f, 0xfe, 0x02, 0xda, 0xf5, 0x12, 0x0d,
+ 0xc3, 0xf5, 0x12, 0xcd, 0x98, 0x32, 0x67, 0xc9, 0xcd, 0x98, 0x32, 0x6f, 0xc9, 0xcd, 0x98, 0x32,
+ 0xd9, 0x67, 0xd9, 0xc9, 0xcd, 0x98, 0x32, 0xd9, 0x6f, 0xd9, 0xc9, 0xfd, 0x7e, 0x00, 0xfe, 0x0d,
+ 0xc2, 0x4f, 0x1f, 0x2a, 0xdc, 0x37, 0x23, 0x23, 0x23, 0xcd, 0xf5, 0x33, 0xfe, 0xf4, 0xc2, 0x4f,
+ 0x1f, 0xcd, 0xf5, 0x33, 0xfe, 0x3e, 0xc2, 0x4f, 0x1f, 0x11, 0x00, 0x35, 0x7e, 0x12, 0x13, 0x23,
+ 0xfe, 0x0d, 0x20, 0xf8, 0xc9, 0x7e, 0x23, 0xfe, 0x20, 0x28, 0xfa, 0xc9, 0xe1, 0x37, 0xc9, 0xe5,
+ 0x2a, 0xe2, 0x37, 0x09, 0x38, 0xf6, 0x7c, 0x3c, 0x21, 0x00, 0x00, 0x39, 0xbc, 0x30, 0xed, 0xe1,
+ 0x22, 0xee, 0x34, 0x2a, 0xe2, 0x37, 0x36, 0x0d, 0x23, 0x13, 0x13, 0x1a, 0x77, 0x23, 0xfe, 0xff,
+ 0x28, 0x1d, 0x1b, 0x1a, 0x77, 0x23, 0x1b, 0x1a, 0x77, 0xa7, 0x28, 0x0e, 0x23, 0x13, 0x13, 0x13,
+ 0x1a, 0x77, 0x23, 0x13, 0xfe, 0x0d, 0x20, 0xf8, 0x18, 0xdf, 0x2b, 0x2b, 0x36, 0xff, 0x23, 0xed,
+ 0x5b, 0xe2, 0x37, 0xed, 0x53, 0xf8, 0x34, 0xe5, 0xe5, 0xc3, 0x17, 0x32, 0x2a, 0x82, 0xff, 0xe5,
+ 0xe1, 0x7e, 0x23, 0xe5, 0xc3, 0xd6, 0x07, 0x3a, 0x80, 0xff, 0xb7, 0xf0, 0x3e, 0x7e, 0xcd, 0xf4,
+ 0xff, 0xc3, 0x78, 0x0e, 0x3e, 0xc3, 0x32, 0x38, 0x00, 0x21, 0x50, 0x34, 0x22, 0x39, 0x00, 0x21,
+ 0x4c, 0x34, 0x22, 0xfa, 0xff, 0x3e, 0xe5, 0xcd, 0xc7, 0x32, 0x3e, 0xe6, 0xcd, 0xc7, 0x32, 0xcd,
+ 0xbf, 0x34, 0xf5, 0x3e, 0x84, 0xcd, 0xf4, 0xff, 0xeb, 0x3e, 0x83, 0xcd, 0xf4, 0xff, 0x2e, 0x00,
+ 0x7c, 0xfe, 0x38, 0x30, 0x02, 0x26, 0x38, 0xf1, 0xc9, 0xdd, 0x21, 0xee, 0x34, 0xdd, 0x75, 0x00,
+ 0xdd, 0x74, 0x01, 0xdd, 0x36, 0x02, 0xff, 0xdd, 0x36, 0x03, 0x20, 0xdd, 0x36, 0x04, 0xff, 0x3e,
+ 0xda, 0xcd, 0xc7, 0x32, 0xaf, 0x21, 0xee, 0x34, 0xcd, 0xf1, 0xff, 0x38, 0x9f, 0xaf, 0xc9, 0x11,
+ 0x00, 0x35, 0x2a, 0x86, 0xff, 0x7e, 0x12, 0x23, 0x13, 0xfe, 0x0d, 0x20, 0xf8, 0x1d, 0xc9
+};
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Wed Jun 29 14:25:56 2011 +0000
@@ -0,0 +1,741 @@
+/* BBC Basic emulator on NXP mbed by Gert van der Knokke
+ * Emulation of the Z80 CPU
+ * The z80 emulator is heavily modified by me (Gert)
+ * original Copyright (C) 1994 Ian Collier.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "mbed.h"
+#include "module.h"
+#include "z80.h"
+
+#define DEBUG false
+
+// define serial port for debug
+Serial linktopc(USBTX,USBRX);
+
+
+// VDU queue
+unsigned char vdu_queue[256]; // a somewhat large queue
+unsigned char queue_bytes=0; // vdu queue pointer
+unsigned char oldchar; // which VDU function needs the queue
+
+volatile unsigned char flag,oldy=0;
+
+
+int background_color; // for clear screen
+int cursor_xpos;
+int cursor_ypos;
+int last_line_processed;
+int previous_line_found;
+
+int current_background_color;
+int current_text_color;
+
+
+// prepare mbed storage for local use
+LocalFileSystem local("local"); // Create the local filesystem under the name "local"
+
+// clear the screen
+void cls() {
+ putchar(0x0c);
+}
+
+// dummy function
+void set_cursor_position() {
+}
+
+// home cursor
+void home_cursor() {
+ cursor_xpos=0x00; // ypos
+ cursor_ypos=0x00; // xpos
+ set_cursor_position();
+}
+
+// prepare the screen
+void init_screen() {
+ current_background_color=0; // set initial background color
+ current_text_color=7; // initial text color attributes
+ cls();
+ home_cursor();
+}
+
+// handle VDU calls after all bytes are in queue
+// Note! queue is working front to back (255 is first, 0 is last)
+void do_handle_queue(unsigned char code) {
+ switch (code) {
+ case 0x11: // select text color
+ current_text_color=vdu_queue[255];
+ break;
+ case 0x16: // Mode
+ current_text_color=7;
+ current_background_color=0;
+ init_screen();
+ home_cursor();
+ break;
+ case 0x17: // define character n
+ break;
+ case 0x1f: // move cursor to x,y
+ cursor_xpos=vdu_queue[254];
+ cursor_ypos=vdu_queue[255];
+ set_cursor_position();
+ break;
+ }
+}
+
+// VDU OSWRCHR
+// this routine evaluates the stream characters
+// and prepares the queue if needed
+void printchar(unsigned char ch) {
+
+ // do we need more queue bytes ?
+ if (queue_bytes) {
+ vdu_queue[queue_bytes++]=ch;
+ // all bytes in queue, now handle the call
+ if (queue_bytes==0)
+ do_handle_queue(oldchar);
+
+ } else {
+
+ switch (ch) {
+ case 0x00: // NULL
+ break;
+ case 0x08: // CURSOR LEFT
+ putchar(0x08);
+ if (cursor_xpos>0) {
+ cursor_xpos--;
+ set_cursor_position();
+ }
+ break;
+ case 0x09: // CURSOR RIGHT
+ if (cursor_xpos<39) {
+ cursor_xpos++;
+ set_cursor_position();
+ }
+ break;
+ case 0x0a: // CURSOR DOWN
+ if (cursor_ypos<23) {
+ cursor_ypos++;
+ set_cursor_position();
+ } else {
+ cursor_ypos=23;
+ }
+ break;
+ case 0x0b: // CURSOR UP
+ cursor_ypos++;
+ if (cursor_ypos>0) {
+ cursor_ypos--;
+ set_cursor_position();
+ } else {
+ cursor_ypos=0;
+ }
+ break;
+ case 0x0d: // Carriage Return
+ cursor_xpos=0;
+ putchar(0x0d);
+ putchar(0x0a);
+ set_cursor_position();
+ break;
+ case 0x0c: // CLEAR TEXT WINDOW
+ case 0x10: // CLEAR GRAPHIC WINDOW
+ cls();
+ cursor_xpos=0;
+ cursor_ypos=0;
+ set_cursor_position();
+ break;
+ case 0x11: // set TEXT color
+ oldchar=ch; // this was the code of the initial call
+ queue_bytes=256-1; // for this call we need one more byte
+ break;
+ case 0x14: // reset colors
+ current_text_color=7;
+ current_background_color=0;
+ break;
+ case 0x16: // MODE select
+ oldchar=ch;
+ queue_bytes=256-1;
+ break;
+ case 0x17: // define character n
+ break;
+ case 0x1e:
+ cursor_xpos=0;
+ cursor_ypos=0;
+ set_cursor_position();
+ break;
+ case 0x1f: // set cursor to position X,Y
+ oldchar=ch; // this was the code of the initial call
+ queue_bytes=256-2; // for this call we need two more bytes
+ break;
+ // all else is put on screen literally
+ default:
+ putchar(ch);
+ break;
+ }
+ }
+}
+
+
+void init_ramtop() {
+
+
+ // set all MOS calls to illegal opcode 0xed55
+ // that code is trapped by a mbed routine
+ wrmem(OSWRCH,0xed);
+ wrmem(OSWRCH+1,0x55);
+
+ wrmem(OSWORD,0xed);
+ wrmem(OSWORD+1,0x55);
+
+ wrmem(OSBYTE,0xed);
+ wrmem(OSBYTE+1,0x55);
+
+ wrmem(OSRDCH,0xed);
+ wrmem(OSRDCH+1,0x55);
+
+ wrmem(OSNEWL,0xed);
+ wrmem(OSNEWL+1,0x55);
+
+ wrmem(OSASCI,0xed);
+ wrmem(OSASCI+1,0x55);
+
+ wrmem(OSRDCH,0xed);
+ wrmem(OSRDCH+1,0x55);
+
+ wrmem(MAINVDU,0xed);
+ wrmem(MAINVDU+1,0x55);
+
+ wrmem(GSINIT,0xed);
+ wrmem(GSINIT+1,0x55);
+
+ wrmem(GSREAD,0xed);
+ wrmem(GSREAD+1,0x55);
+
+ wrmem(OSRDRM,0xed);
+ wrmem(OSRDRM+1,0x55);
+
+ wrmem(OSEVEN,0xed);
+ wrmem(OSEVEN+1,0x55);
+
+ wrmem(OSCLI,0xed);
+ wrmem(OSCLI+1,0x55);
+
+ wrmem(OSFILE,0xed);
+ wrmem(OSFILE+1,0x55);
+
+ wrmem(CMDPTR,0xf0); // pointer to CR terminated string (auto start filename)
+ wrmem(CMDPTR+1,0x00); // it is set here to 0x00f0
+
+ wrmem(BRKV,0x00); // break vector
+ wrmem(BRKV+1,0x00);
+
+ wrmem(FAULT,0x38); // fault vector
+ wrmem(FAULT+1,0x00);
+}
+
+unsigned char getkey() {
+ unsigned char key=0x00;
+ if (linktopc.readable()) // get USB status
+ key=linktopc.getc(); // get ASCII key
+ return key;
+}
+
+// crude getline routine
+void mygets(int ad,int max,unsigned char minasc,unsigned char maxasc) {
+ int n=0;
+ int key=0;
+
+ bool eflag=1;
+
+ // show cursor
+ set_cursor_position();
+
+ while (eflag) {
+// key=getkey();
+#if !DEBUG
+ // USB serial data ? then override key (only when NOT in debug mode)
+ if (linktopc.readable()) // get USB status
+ key=linktopc.getc(); // get ASCII key code
+ else key=0;
+ // key=getchar(); // BLOCKING MODE
+#endif
+
+ if (key) // printf("got key code: %02x\n\r",key);
+
+ // only ASCII should arrive here
+ switch (key) {
+ case 0x00: // no key
+ break;
+ case 0x0d: // Enter or Return
+ wrmem(ad+n,key);
+ h=n;
+ // clear carry flag
+ anda(a); // z80 way of clearing carry...
+ eflag=0; // terminate the loop
+ printchar(key);
+ printchar(0x0a);
+ break;
+ case 0x1b: // Escape
+ wrmem(ad+n,key);
+ // set carry flag
+ f=(f&0xc4)|1|(a&0x28);
+ eflag=0;
+ h=n;
+ break;
+ case 0x15: // CTRL-U (clear input)
+ while (n) {
+
+ printchar(0x08);
+ printchar(0x20);
+ printchar(0x08);
+ n--;
+ }
+ wrmem(ad,0x0d);
+ break;
+ case 0x7f: // DELETE
+ if (n) {
+ n--;
+ printchar(0x08); // cursor left
+ printchar(0x20); // delete character by printing a space
+ printchar(0x08); // cursor left
+ wrmem(ad+n,0x20); // overwrite with space
+ }
+ break;
+ default: // all else
+ // keep within maximum lenght and given ascii limits
+ if ((key>=minasc) && (key<=maxasc) && n<max) {
+ wrmem(ad+n,key);
+ n++;
+ printchar(key);
+ }
+ break;
+ }
+ }
+}
+
+
+// OSWORD
+void do_osword() {
+ int ad,n;
+ char buf[40];
+ time_t seconds;
+
+ // printf("OSWORD called with PC=%04x A=%02x HL=%02x%02x\n\r",pc,a,h,l);
+ switch (a) {
+
+ case 0x00: // get a line from the keyboard/input channel
+ ad=(h<<8)+l;
+// printf("Control block:\n\r");
+// printf("buffer address %02x%02x\n\r",rdmem(ad+1),rdmem(ad));
+// printf("maximum length: %d\n\r",rdmem(ad+2));
+// printf("minimum ASCII value %d\n\r",rdmem(ad+3));
+// printf("maximum ASCII value %d\n\r",rdmem(ad+4));
+
+ mygets((rdmem(ad+1)<<8)+rdmem(ad),rdmem(ad+2),rdmem(ad+3),rdmem(ad+4));
+
+ break;
+ case 0x01: // read systemclock (long integer)
+ break;
+ case 0x02: // write systemclock (long integer)
+ break;
+ case 0x07: // emit a sound from the sound library (0-7)
+ break;
+ case 0x0e: // read TIME$ (not present in original BBC Basic)
+ ad=hl; // get pointer to function number
+ switch (rdmem(hl)) { // select function number
+ case 0: // return time string
+ seconds = time(NULL); // get current time from mbed RTC
+ strftime(buf,40, "%a,%d %m %Y.%H:%M:%S\r", localtime(&seconds)); // write to temporary buffer
+ n=0;
+ while (buf[n]) wrmem(ad++,buf[n++]); // copy to pointer from HL
+ break;
+ case 1: // return BCD values of clock
+ // On exit:
+ // XY?0=year (&00-&99)
+ // XY?1=month (&01-&12)
+ // XY?2=date (&01-&31)
+ // XY?3=day of week (&01-&07, Sun-Sat)
+ // XY?4=hours (&00-&23)
+ // XY?5=minutes (&00-&59)
+ // XY?6=seconds (&00-&59).
+ //
+ // A year value of &80-&99 represents 1980-1999, a value of
+ // &00-&79 represents 2000-2079.
+ //
+ break;
+ case 2: // Convert BCD to string.
+ // On entry:
+ // XY+1..7=BCD value
+ // On exit:
+ // XY+1..25=CR-terminated string
+ break;
+ }
+ break;
+ case 0x0f: // write TIME$ (not present in original BBC Basic)
+ // On entry:
+ // XY?0=function code
+ // XY+1.. value to use.
+ // Functions are:
+ // 8 - Set time to value in format "HH:MM:SS"
+ // 16 - Set date to value in format "Day,DD Mon Year"
+ // 24 - Set time and date to value in format
+ // "Day,DD Mon Year.HH:MM:SS"
+ n=0;
+ ad=hl;
+ // printf(" write time$ function %d\n\r",rdmem(ad));
+ ad++;
+ while (rdmem(ad)!=0x0d) buf[n++]=rdmem(ad++); // copy timestring to buffer
+ buf[n]=0;
+ // printf("trying to set time from %s\n\r",buf);
+ break;
+ }
+}
+
+// OSBYTE
+// on 6502 A register and X,Y are used for Low,High parameters
+// Z80 uses L and H (so X=L and H=Y <-> L=X and Y=H)
+void do_osbyte() {
+ unsigned char temp;
+
+ // printf("OSBYTE called with PC=%04x A=%02x H=%02x L=%02x\n\r",pc,a,h,l);
+ switch (a) {
+ case 0x00: // NULL
+ l=0xff;
+ break;
+ case 0x13: // ASCII 19
+ break;
+ case 0x7c: // clear ESCAPE state
+ wrmem(0xff80,rdmem(0xff80)&0x7f);
+ break;
+ case 0x7d: // set ESCAPE state
+ wrmem(0xff80,rdmem(0xff80)|0x80);
+ break;
+ case 0x7e: // acknowledge ESCAPE state ? (CLOSE ALL!)
+ wrmem(0xff80,rdmem(0xff80)&0x7f);
+ break;
+ case 0x7f: // read EOF on channel
+ l=0x01;
+ break;
+ case 0x80: // read ADVAL(hl)
+ h=0;
+ l=0;
+ break;
+ case 0x81: // read key within time limit 'hl' centiseconds
+ temp=hl; // get timeout value (100th seconds)
+ do {
+ l=getkey();
+ wait(0.01);
+ } while ((temp--) && (!l));
+
+ if (l) { // we got a key
+ if (l==0x1b) { // Escape ?
+ f=(f&0xc4)|1|(a&0x28); // set carry
+ h=0x1b;
+ } else {
+ anda(a); // clear carry
+ h=0x00; // clear h
+ }
+ } else { // timeout
+ f=(f&0xc4)|1|(a&0x28); // set carry
+ h=0xff; // signal no key
+ }
+ break; // scan keyboard etc
+ case 0x82:
+ h=l=0;
+ break; // Machine high order address
+ case 0x83:
+ h=PAGE>>8;
+ l=(PAGE & 0xff);
+ break; // lowest available memory address (PAGE)
+ case 0x84: // highest available memory address (HIMEM)
+ h=RAMEND>>8;
+ l=RAMEND & 0xff;
+ break;
+ case 0x85: // read bottom of display RAM for a specific mode
+ h=0x80;
+ l=0x00;
+ break;
+ case 0x86: // return H=VPOS, L=POS
+ h=cursor_ypos;
+ l=cursor_xpos;
+ break;
+ case 0x87: // L=character on screen at cursor position
+ h=7;
+ l=0;
+ break;
+ case 0xda: // read/write the number of items in the VDU queue
+ // on return H contains the new value, L the old
+ temp=queue_bytes;
+ queue_bytes=(queue_bytes & h)^l;
+ h=queue_bytes;
+ l=temp;
+ break; // read/write the number of items in the VDU queue
+ }
+// show_registers();
+// wait(0.1);
+}
+
+void do_osreadchar() {
+ a=getchar();
+ // test for ESCAPE
+ if (a==27) {
+ f=(f&0xc4)|1|(a&0x28);
+ wrmem(0xff80,rdmem(0xff80)|0x80);
+ }
+}
+
+void do_osnewline() {
+ printchar(0x0a);
+ printchar(0x0d);
+ a=0x0d;
+}
+
+void do_osasci() {
+ if (a==0x0d) do_osnewline();
+ else printchar(a);
+}
+
+void do_mainvdu() {
+ printchar(a);
+}
+
+void do_gsinit() {
+ printf("GSINIT called with PC=%04x A=%02x\n\r",pc,a);
+}
+
+void do_gsread() {
+}
+
+void do_osrdrm() {
+ printf("OSRDRM called with PC=%04x A=%02x H=%02x L=%02x\n\r",pc,a,h,l);
+}
+
+void do_oseven() {
+ printf("OSEVEN called with PC=%04x A=%02x H=%02x L=%02x\n\r",pc,a,h,l);
+}
+
+void do_oscli() {
+ printf("OSCLI called with PC=%04x A=%02x H=%02x L=%02x\n\r",pc,a,h,l);
+ do {
+ a=rdmem((h<<8)+l);
+ if (!++l)h++;
+ putchar(a);
+ } while (a!=0x0d);
+}
+
+void do_osfile() {
+ char buffer[200];
+ int n=0;
+ FILE *fp;
+ // get address of control block
+ int controlblock=hl;
+ int offset=rdmem(controlblock)+(rdmem(controlblock+1)<<8);
+ // create a kludgy pointer from this offset to the filename
+ char *filename=(char *)(ram+offset-RAMSTART);
+ long load_address=rdmem(controlblock+2)+(rdmem(controlblock+3)<<8)+(rdmem(controlblock+4)<<16)+(rdmem(controlblock+5)<<24);
+ long execution_address=rdmem(controlblock+6)+(rdmem(controlblock+7)<<8)+(rdmem(controlblock+8)<<16)+(rdmem(controlblock+9)<<24);
+ long start_or_length=rdmem(controlblock+10)+(rdmem(controlblock+11)<<8)+(rdmem(controlblock+12)<<16)+(rdmem(controlblock+13)<<24);
+ long end_address_or_attributes=rdmem(controlblock+14)+(rdmem(controlblock+15)<<8)+(rdmem(controlblock+16)<<16)+(rdmem(controlblock+17)<<24);
+
+
+ // printf("OSFILE called with PC=%04x A=%02x H=%02x L=%02x\n\r",pc,a,h,l);
+
+ // for (n=0; n<=0x11; n++) printf("offset %02x value %02x\n\r",n,rdmem(controlblock+n));
+
+ n=0;
+ while (filename[n]!=0x0d) n++;
+ // overwrite 0x0d with end of string
+ filename[n]=0x00;
+
+ // now determine what to do
+ switch (a) {
+ case 0x00: // save a section of memory as a named file
+ sprintf(buffer,"/local/%s",filename);
+ // printf("Saving file %s load adr:%08lx exec adr:%08lx start/length%08lx end/attr:%08lx\n\r",filename,load_address,execution_address,start_or_length,end_address_or_attributes);
+ fp=fopen(buffer, "w");
+ if (fp) {
+ n=start_or_length;
+ while (n!=end_address_or_attributes) fputc(rdmem(n++),fp);
+ fclose(fp);
+ a=1;
+ } else {
+ // printf("could not write %s\n\r",buffer);
+ a=0;
+ pc=rdmem(0xfffa)+(rdmem(0xfffb)<<8); // do BRK
+ }
+ break;
+ case 0x01: // write the catalogue information (only) for the named file (disc only)
+ break;
+ case 0x02: // write the load address (only) for the named file (disc only)
+ break;
+ case 0x03: // write the execution address (only) for the named file (disc only)
+ break;
+ case 0x04: // write the attributes (only) for the named file (disc only)
+ break;
+ case 0x05: // read the named file's catalogue information, place file type in A (disc only)
+ break;
+ case 0x06: // delete the named file (disc only)
+ break;
+ case 0xff: // load the named file and read the named file's catalogue information
+ sprintf(buffer,"/local/%s",filename);
+ // printf("Loading file %s load adr:%08lx exec adr:%08lx start/length%08lx end/attr:%08lx\n\r",buffer,load_address,execution_address,start_or_length,end_address_or_attributes);
+ fp = fopen(buffer, "r");
+ if (fp) {
+ n=load_address;
+ while (!feof(fp)) wrmem(n++,fgetc(fp));
+ fclose(fp);
+ a=1; // file found
+ } else {
+ // printf("Could not open %s\n",buffer);
+ a=0;
+ pc=rdmem(0xfffa)+(rdmem(0xfffb)<<8); // do BRK
+ }
+ break;
+ }
+}
+
+void terminalgets(char *buffer) {
+ int n=0;
+ int key=0;
+ do {
+ key=getchar();
+ buffer[n]=key;
+ putchar(key);
+ if (n<16) n++;
+ } while (key != 0x0d);
+ buffer[n]=0;
+}
+
+
+// here the OS calls are recognized and
+// diverted to the mbed routines.
+// this needs to be replaced by native Z80 code
+void do_mos() {
+ // printf("Entering MOS emulation with PC %04x\n\r",pc);
+
+ // compensate pc for length of ED55 opcode
+ switch (pc-2) {
+ case OSBYTE:
+ do_osbyte();
+ break;
+ case OSWORD:
+ do_osword();
+ break;
+ case OSWRCH:
+ printchar(a);
+ break;
+ case OSRDCH:
+ do_osreadchar();
+ break;
+ case OSNEWL:
+ do_osnewline();
+ break;
+ case OSASCI:
+ do_osasci();
+ break;
+ case MAINVDU:
+ do_mainvdu();
+ break;
+ case GSINIT:
+ do_gsinit();
+ break;
+ case GSREAD:
+ do_gsread();
+ break;
+ case OSRDRM:
+ do_osrdrm();
+ break;
+ case OSEVEN:
+ do_oseven();
+ break;
+ case OSCLI:
+ do_oscli();
+ break;
+ case OSFILE:
+ do_osfile();
+ break;
+ }
+}
+
+void listdir(void) {
+ DIR *d;
+ struct dirent *p;
+
+ d = opendir("/sd");
+ if (d != NULL) {
+ while ((p = readdir(d)) != NULL) {
+ printf(" - %s\r\n", p->d_name);
+ }
+ } else {
+ printf("Could not open directory!\n");
+ }
+ closedir(d);
+}
+
+
+
+
+
+// ================================================================
+// main loop
+// ================================================================
+int main() {
+
+ // serial port on at 115200 baud
+ linktopc.baud(115200);
+ setbuf(stdout, NULL); // no buffering for this filehandle
+
+ // reset all Z80 registers to some initial values
+ a=f=b=c=d=e=h=l=a1=f1=b1=c1=d1=e1=h1=l1=i=iff1=iff2=im=r=0;
+ ixoriy=new_ixoriy=0;
+ ix=iy=sp=pc=0;
+
+ queue_bytes=0;
+
+ // init MOS vectors
+ init_ramtop();
+
+ init_screen();
+ home_cursor();
+
+ // endless loop
+ while (1) {
+ // wait(0.01);
+ r++;
+ // this is some optimization for the IX and IY opcodes (DD/FD)
+ ixoriy=new_ixoriy;
+ new_ixoriy=0;
+
+ // fetch opcode and execute, the include does all the heavy decoding
+ switch (fetch(pc++)) {
+#include "z80ops.h"
+ }
+
+ // next is the interrupt emulator (only IM1 mode)
+ // interrupt pending? if new_ixoriy is set or iff1==0 don't do interrupt yet (continue DD/FD opcode)
+ // if (intpend && !new_ixoriy && iff1) {
+ // are we HALT-ed ? then resume
+ // if (fetch(pc)==0x76) pc++;
+
+ // block further interrupts for now
+ // iff1=0;
+
+ // do the call to 00x38
+ // push2(pc); // save old pc
+ // pc=0x0038; // setup new pc
+ // intpend=0; // release interrupt pending flag;
+ // } // if intpend
+ } // while
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Jun 29 14:25:56 2011 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/63bcd7ba4912
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/module.h Wed Jun 29 14:25:56 2011 +0000
@@ -0,0 +1,99 @@
+// -------------------------------------------------------------
+// BBC Basic hardware emulation part
+// -------------------------------------------------------------
+
+#include "bbc_0100.h"
+
+#include "mbed.h"
+#define byte unsigned char
+#define word unsigned short
+
+// some defaults
+#define ESCFLG 0xff80 // escape flag
+#define FAULT 0xff82 // fault address
+#define DEFERR 0xff84 // default error handler
+#define CMDPTR 0xff86 // command line tail
+#define SCRATCHPAD 0xff88 // Basic scratchpad area
+#define RESERVED 0xff9a
+#define OSRDRM 0xffb9 // read byte in paged ROM
+#define MAINVDU 0xffbc // main VDU character output entry point
+#define OSEVEN 0xffbf // generate an event
+#define GSINIT 0xffc2 // general string input initialise routine
+#define GSREAD 0xffc5 // read character from string input
+#define UKCMD 0xffc9 // unknown command
+#define OSFSC 0xffcb // filing system control
+#define OSFIND 0xffce // open or close a file
+#define OSGBPB 0xffd1 // multiple byte access
+#define OSBPUT 0xffd4 // put a byte to a file
+#define OSBGET 0xffd7 // get a byte from a file
+#define OSARGS 0xffda // read or set file arguments
+#define OSFILE 0xffdd // load or save a file
+#define OSRDCH 0xffe0 // input a character
+#define OSASCI 0xffe3 // print a character with CR converted to LF, CR
+#define OSNEWL 0xffe7 // print a LF, CR sequence
+#define OSWRCH 0xffee // print a character
+#define OSWORD 0xfff1 // do an OSWORD call
+#define OSBYTE 0xfff4 // do an OSBYTE call
+#define OSCLI 0xfff7 // interpret a command
+#define BRKV 0xfffa // FAULT vector
+
+// default CP/M ram pages
+#define RAMSIZE (word)0x4000 // 16K ram
+#define RAMSTART 0x34ee
+#define RAMEND RAMSTART+RAMSIZE
+#define PAGE 0x3800
+
+// the emulated ram space
+volatile unsigned char ram[RAMSIZE];
+
+// ramtop space with vectors
+volatile unsigned char ramtop[0x80];
+
+
+// read from memory space
+unsigned char rdmem(word addr) {
+ extern volatile unsigned short pc;
+
+ // all rom space
+ if (addr<RAMSTART) {
+ return rom[addr];
+ }
+
+ // ramtop with vectors
+ if ((addr >=0xff80) && (addr <=0xffff)) {
+ return ramtop[addr-0xff80];
+ }
+
+ // relocate $3400
+ if ((addr >= RAMSTART) && (addr < RAMEND)) {
+ return ram[addr-0x34ee];
+ }
+ return 0xff; // non existant memory reads as 0xff
+}
+
+// write to memory space
+void wrmem (word addr, byte val) {
+ extern volatile unsigned short pc;
+
+ // memtop vector space
+ if ((addr >=0xff80) && (addr <=0xffff)) {
+ ramtop[addr-0xff80]=val;
+ return;
+ }
+ // printf("MEMW %04x %02x\n\r",addr,val);
+ if ((addr >= RAMSTART) && (addr < RAMEND)) {
+ ram[addr-RAMSTART] = val;
+ }
+}
+
+// write a byte to IO space
+void out(unsigned char addr, unsigned char val) {
+ printf("IO out called %02d, %02d\n\r",addr,val);
+}
+
+// read a byte from IO space
+unsigned char in(unsigned char addr) {
+ printf("IO in called %02d\n\r",addr);
+ return 0xff;
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/z80/cbops.h Wed Jun 29 14:25:56 2011 +0000
@@ -0,0 +1,174 @@
+/* Emulations of the CB/DD and FD operations of the Z80 instruction set.
+ * Copyright (C) 1994 Ian Collier.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#define var_t unsigned char t
+#define rlc(x) (x=(x<<1)|(x>>7),rflags(x,x&1))
+#define rrc(x) do{var_t=x&1;x=(x>>1)|(t<<7);rflags(x,t);}while(0)
+#define rl(x) do{var_t=x>>7;x=(x<<1)|(f&1);rflags(x,t);}while(0)
+#define rr(x) do{var_t=x&1;x=(x>>1)|(f<<7);rflags(x,t);}while(0)
+#define sla(x) do{var_t=x>>7;x<<=1;rflags(x,t);}while(0)
+#define sra(x) do{var_t=x&1;x=((signed char)x)>>1;rflags(x,t);}while(0)
+#define sll(x) do{var_t=x>>7;x=(x<<1)|1;rflags(x,t);}while(0)
+#define srl(x) do{var_t=x&1;x>>=1;rflags(x,t);}while(0)
+
+#define rflags(x,c) (f=(c)|(x&0xa8)|((!x)<<6)|parity(x))
+
+#define bit(n,x) (f=(f&1)|((x&(1<<n))?0x10:0x54)|(x&0x28))
+#define set(n,x) (x|=(1<<n))
+#define res(n,x) (x&=~(1<<n))
+
+{
+ /* reg/val are initialised to stop gcc's (incorrect) warning,
+ * and static to save initialising them every time.
+ */
+ static unsigned char reg=0,val=0;
+ unsigned short addr;
+ unsigned char op;
+ if(ixoriy){
+ // if IX or IY addressing add the '+d' part
+ addr=(ixoriy==1?ix:iy)+(signed char)fetch(pc);
+ pc++;
+ op=fetch(pc);
+ reg=op&7;
+ op=(op&0xf8)|6;
+ }
+ else{
+ op=fetch(pc);
+ addr=hl;
+ }
+ pc++;
+
+ if(op<64)switch(op){
+ case 0: rlc(b); break;
+ case 1: rlc(c); break;
+ case 2: rlc(d); break;
+ case 3: rlc(e); break;
+ case 4: rlc(h); break;
+ case 5: rlc(l); break;
+ case 6: val=fetch(addr);rlc(val);store(addr,val);break;
+ case 7: rlc(a); break;
+ case 8: rrc(b); break;
+ case 9: rrc(c); break;
+ case 10: rrc(d); break;
+ case 11: rrc(e); break;
+ case 12: rrc(h); break;
+ case 13: rrc(l); break;
+ case 14: val=fetch(addr);rrc(val);store(addr,val);break;
+ case 15: rrc(a); break;
+ case 0x10: rl(b); break;
+ case 0x11: rl(c); break;
+ case 0x12: rl(d); break;
+ case 0x13: rl(e); break;
+ case 0x14: rl(h); break;
+ case 0x15: rl(l); break;
+ case 0x16: val=fetch(addr);rl(val);store(addr,val);break;
+ case 0x17: rl(a); break;
+ case 0x18: rr(b); break;
+ case 0x19: rr(c); break;
+ case 0x1a: rr(d); break;
+ case 0x1b: rr(e); break;
+ case 0x1c: rr(h); break;
+ case 0x1d: rr(l); break;
+ case 0x1e: val=fetch(addr);rr(val);store(addr,val);break;
+ case 0x1f: rr(a); break;
+ case 0x20: sla(b); break;
+ case 0x21: sla(c); break;
+ case 0x22: sla(d); break;
+ case 0x23: sla(e); break;
+ case 0x24: sla(h); break;
+ case 0x25: sla(l); break;
+ case 0x26: val=fetch(addr);sla(val);store(addr,val);break;
+ case 0x27: sla(a); break;
+ case 0x28: sra(b); break;
+ case 0x29: sra(c); break;
+ case 0x2a: sra(d); break;
+ case 0x2b: sra(e); break;
+ case 0x2c: sra(h); break;
+ case 0x2d: sra(l); break;
+ case 0x2e: val=fetch(addr);sra(val);store(addr,val);break;
+ case 0x2f: sra(a); break;
+ case 0x30: sll(b); break;
+ case 0x31: sll(c); break;
+ case 0x32: sll(d); break;
+ case 0x33: sll(e); break;
+ case 0x34: sll(h); break;
+ case 0x35: sll(l); break;
+ case 0x36: val=fetch(addr);sll(val);store(addr,val);break;
+ case 0x37: sll(a); break;
+ case 0x38: srl(b); break;
+ case 0x39: srl(c); break;
+ case 0x3a: srl(d); break;
+ case 0x3b: srl(e); break;
+ case 0x3c: srl(h); break;
+ case 0x3d: srl(l); break;
+ case 0x3e: val=fetch(addr);srl(val);store(addr,val);break;
+ case 0x3f: srl(a); break;
+ }
+ else{
+ unsigned char n=(op>>3)&7;
+ switch(op&0xc7){
+ case 0x40: bit(n,b); break;
+ case 0x41: bit(n,c); break;
+ case 0x42: bit(n,d); break;
+ case 0x43: bit(n,e); break;
+ case 0x44: bit(n,h); break;
+ case 0x45: bit(n,l); break;
+ case 0x46: val=fetch(addr);bit(n,val);break;
+ case 0x47: bit(n,a); break;
+ case 0x80: res(n,b); break;
+ case 0x81: res(n,c); break;
+ case 0x82: res(n,d); break;
+ case 0x83: res(n,e); break;
+ case 0x84: res(n,h); break;
+ case 0x85: res(n,l); break;
+ case 0x86: val=fetch(addr);res(n,val);store(addr,val);break;
+ case 0x87: res(n,a); break;
+ case 0xc0: set(n,b); break;
+ case 0xc1: set(n,c); break;
+ case 0xc2: set(n,d); break;
+ case 0xc3: set(n,e); break;
+ case 0xc4: set(n,h); break;
+ case 0xc5: set(n,l); break;
+ case 0xc6: val=fetch(addr);set(n,val);store(addr,val);break;
+ case 0xc7: set(n,a); break;
+ }
+ }
+ if(ixoriy)switch(reg){
+ case 0:b=val; break;
+ case 1:c=val; break;
+ case 2:d=val; break;
+ case 3:e=val; break;
+ case 4:h=val; break;
+ case 5:l=val; break;
+ case 7:a=val; break;
+ }
+}
+
+#undef var_t
+#undef rlc
+#undef rrc
+#undef rl
+#undef rr
+#undef sla
+#undef sra
+#undef sll
+#undef srl
+#undef rflags
+#undef bit
+#undef set
+#undef res
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/z80/edops.h Wed Jun 29 14:25:56 2011 +0000
@@ -0,0 +1,590 @@
+/* Emulations of the ED operations of the Z80 instruction set.
+ * Copyright (C) 1994 Ian Collier.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#define input(var) { var=in(c);\
+ f=(f&1)|(var&0xa8)|((!var)<<6)|parity(var);\
+ }
+#define sbchl(x) { unsigned short z=(x);\
+ unsigned long t=(hl-z-cy)&0x1ffff;\
+ f=((t>>8)&0xa8)|(t>>16)|2|\
+ (((hl&0xfff)<(z&0xfff)+cy)<<4)|\
+ (((hl^z)&(hl^t)&0x8000)>>13)|\
+ ((!(t&0xffff))<<6)|2;\
+ l=t;\
+ h=t>>8;\
+ }
+
+#define adchl(x) { unsigned short z=(x);\
+ unsigned long t=hl+z+cy;\
+ f=((t>>8)&0xa8)|(t>>16)|\
+ (((hl&0xfff)+(z&0xfff)+cy>0xfff)<<4)|\
+ (((~hl^z)&(hl^t)&0x8000)>>13)|\
+ ((!(t&0xffff))<<6)|2;\
+ l=t;\
+ h=t>>8;\
+ }
+
+#define neg (a=-a,\
+ f=(a&0xa8)|((!a)<<6)|(((a&15)>0)<<4)|((a==128)<<2)|2|(a>0))
+
+{
+ unsigned char op=fetch(pc);
+ pc++;
+
+// IN B,(C)
+ switch(op){
+instr(0x40,8);
+ input(b);
+endinstr;
+
+// OUT (C),B
+instr(0x41,8);
+ out(c,b);
+endinstr;
+
+// SBC HL,BC
+instr(0x42,11);
+ sbchl(bc);
+endinstr;
+
+// LD (nn),BC
+instr(0x43,16);
+ {unsigned short addr=fetch2(pc);
+ pc+=2;
+ store2b(addr,b,c);
+ }
+endinstr;
+
+// NEG
+instr(0x44,4);
+ neg;
+endinstr;
+
+// RETN
+instr(0x45,4);
+ iff1=iff2;
+ ret;
+endinstr;
+
+// IM 0
+instr(0x46,4);
+ im=0;
+endinstr;
+
+// LD I,A
+instr(0x47,5);
+ i=a;
+endinstr;
+
+// IN C,(C)
+instr(0x48,8);
+ input(c);
+endinstr;
+
+// OUT (C),C
+instr(0x49,8);
+ out(c,c);
+endinstr;
+
+// ADC HL,BC
+instr(0x4a,11);
+ adchl(bc);
+endinstr;
+
+// LD BC,(nn)
+instr(0x4b,16);
+ {unsigned short addr=fetch2(pc);
+ pc+=2;
+ c=fetch(addr);
+ b=fetch(addr+1);
+ }
+endinstr;
+
+// ?
+instr(0x4c,4);
+ neg;
+endinstr;
+
+// RETI
+instr(0x4d,4);
+ ret;
+endinstr;
+
+// ?
+instr(0x4e,4);
+ im=1;
+endinstr;
+
+// ?
+instr(0x4f,5);
+ r=a;
+endinstr;
+
+// IN D,(C)
+instr(0x50,8);
+ input(d);
+endinstr;
+
+// OUT (C),D
+instr(0x51,8);
+ out(c,d);
+endinstr;
+
+// SBC HL,DE
+instr(0x52,11);
+ sbchl(de);
+endinstr;
+
+// LD (nn),DE
+instr(0x53,16);
+ {unsigned short addr=fetch2(pc);
+ pc+=2;
+ store2b(addr,d,e);
+ }
+endinstr;
+
+// ?
+instr(0x54,4);
+ neg;
+endinstr;
+
+// my opcode for replacing the MOS routines
+instr(0x55,4);
+ // printf("@ %04x Illegal opcode ED55 (MOS) \n\r",pc);
+ do_mos(); //
+ ret;
+endinstr;
+
+// IM 1
+instr(0x56,4);
+ im=1;
+endinstr;
+
+// LD A,I
+instr(0x57,5);
+ a=i;
+ f=(f&1)|(a&0xa8)|((!a)<<6)|(iff2<<2);
+endinstr;
+
+// IN E,(C)
+instr(0x58,8);
+ input(e);
+endinstr;
+
+// OUT (C),E
+instr(0x59,8);
+ out(c,e);
+endinstr;
+
+// ADC HL,DE
+instr(0x5a,11);
+ adchl(de);
+endinstr;
+
+// LD DE,(nn)
+instr(0x5b,16);
+ {unsigned short addr=fetch2(pc);
+ pc+=2;
+ e=fetch(addr);
+ d=fetch(addr+1);
+ }
+endinstr;
+
+// ?
+instr(0x5c,4);
+ neg;
+endinstr;
+
+// ?
+instr(0x5d,4);
+ ret;
+endinstr;
+
+// IM 2
+instr(0x5e,4);
+ im=2;
+endinstr;
+
+// LDA A,R (unecessary on static memory)
+instr(0x5f,5);
+ a=r;
+ f=(f&1)|(a&0xa8)|((!a)<<6)|(iff2<<2);
+endinstr;
+
+// IN H,(C)
+instr(0x60,8);
+ input(h);
+endinstr;
+
+// OUT (C),H
+instr(0x61,8);
+ out(c,h);
+endinstr;
+
+// SBC HL,HL
+instr(0x62,11);
+ sbchl(hl);
+endinstr;
+
+// ?
+instr(0x63,16);
+ {unsigned short addr=fetch2(pc);
+ pc+=2;
+ store2b(addr,h,l);
+ }
+endinstr;
+
+// ?
+instr(0x64,4);
+ neg;
+endinstr;
+
+// ? illegal instruction ED65
+instr(0x65,4);
+ ret;
+endinstr;
+
+// ?
+instr(0x66,4);
+ ret;
+ // was im=0;
+endinstr;
+
+// RRD
+instr(0x67,14);
+ {unsigned char t=fetch(hl);
+ unsigned char u=(a<<4)|(t>>4);
+ a=(a&0xf0)|(t&0x0f);
+ store(hl,u);
+ f=(f&1)|(a&0xa8)|((!a)<<6)|parity(a);
+ }
+endinstr;
+
+// IN L,(C)
+instr(0x68,8);
+ input(l);
+endinstr;
+
+// OUT (C),L
+instr(0x69,8);
+ out(c,l);
+endinstr;
+
+// ADC HL,HL
+instr(0x6a,11);
+ adchl(hl);
+endinstr;
+
+// ?
+instr(0x6b,16);
+ {unsigned short addr=fetch2(pc);
+ pc+=2;
+ l=fetch(addr);
+ h=fetch(addr+1);
+ }
+endinstr;
+
+// ?
+instr(0x6c,4);
+ neg;
+endinstr;
+
+// ?
+instr(0x6d,4);
+ ret;
+endinstr;
+
+// ?
+instr(0x6e,4);
+ // im=1;
+ ret;
+endinstr;
+
+// RLD
+instr(0x6f,5);
+ {unsigned char t=fetch(hl);
+ unsigned char u=(a&0x0f)|(t<<4);
+ a=(a&0xf0)|(t>>4);
+ store(hl,u);
+ f=(f&1)|(a&0xa8)|((!a)<<6)|parity(a);
+ }
+endinstr;
+
+// ?
+instr(0x70,8);
+ {unsigned char x;input(x);}
+endinstr;
+
+// ?
+instr(0x71,8);
+ out(c,0);
+endinstr;
+
+// SBC HL,SP
+instr(0x72,11);
+ sbchl(sp);
+endinstr;
+
+// LD (nn),SP
+instr(0x73,16);
+ {unsigned short addr=fetch2(pc);
+ pc+=2;
+ store2(addr,sp);
+ }
+endinstr;
+
+// ?
+instr(0x74,4);
+ neg;
+endinstr;
+
+// ?
+instr(0x75,4);
+ ret;
+endinstr;
+
+// ?
+instr(0x76,4);
+ im=2;
+endinstr;
+
+// IN A,(C)
+instr(0x78,8);
+ input(a);
+endinstr;
+
+// OUT (C),A
+instr(0x79,8);
+ out(c,a);
+endinstr;
+
+// ADC HL,SP
+instr(0x7a,11);
+ adchl(sp);
+endinstr;
+
+// LD SP,(nn)
+instr(0x7b,16);
+ {unsigned short addr=fetch2(pc);
+ pc+=2;
+ sp=fetch2(addr);
+ }
+endinstr;
+
+// ?
+instr(0x7c,4);
+ neg;
+endinstr;
+
+// ?
+instr(0x7d,4);
+ ret;
+endinstr;
+
+// ?
+instr(0x7e,4);
+ im=3;
+endinstr;
+
+// LDI
+instr(0xa0,12);
+ {unsigned char x=fetch(hl);
+ store(de,x);
+ if(!++l)h++;
+ if(!++e)d++;
+ if(!c--)b--;
+ f=(f&0xc1)|(x&0x28)|(((b|c)>0)<<2);
+ }
+endinstr;
+
+// CPI
+instr(0xa1,12);
+ {unsigned char carry=cy;
+ cpa(fetch(hl));
+ if(!++l)h++;
+ if(!c--)b--;
+ f=(f&0xfa)|carry|(((b|c)>0)<<2);
+ }
+endinstr;
+
+// INI
+instr(0xa2,12);
+ {unsigned char t=in(c);
+ store(hl,t);
+ if(!++l)h++;
+ b--;
+ f=(b&0xa8)|((!b)<<6)|2|((parity(b)^c)&4);
+ }
+endinstr;
+
+// OUTI
+instr(0xa3,12); /* I can't determine the correct flags outcome for the
+ block OUT instructions. Spec says that the carry
+ flag is left unchanged and N is set to 1, but that
+ doesn't seem to be the case... */
+ {unsigned char x=fetch(hl);
+ // printf("OUTI %02x %02x\n\r",c,x);
+ out(c,x);
+ if(!++l)h++;
+ b--;
+ f=(f&1)|0x12|(b&0xa8)|((!b)<<6);
+ // f=(f & 0xBF)|2|((b==0)<<6);
+
+ }
+endinstr;
+
+// LDD
+instr(0xa8,12);
+ {unsigned char x=fetch(hl);
+ store(de,x);
+ if(!l--)h--;
+ if(!e--)d--;
+ if(!c--)b--;
+ f=(f&0xc1)|(x&0x28)|(((b|c)>0)<<2);
+ }
+endinstr;
+
+// CPD
+instr(0xa9,12);
+ {unsigned char carry=cy;
+ cpa(fetch(hl));
+ if(!l--)h--;
+ if(!c--)b--;
+ f=(f&0xfa)|carry|(((b|c)>0)<<2);
+ }
+endinstr;
+
+// IND
+instr(0xaa,12);
+ {unsigned char t=in(c);
+ store(hl,t);
+ if(!l--)h--;
+ b--;
+// f=(f & 0xBF)|2|((!b)<<6);
+
+ f=(b&0xa8)|((b>0)<<6)|2|((parity(b)^c^4)&4);
+ }
+endinstr;
+
+// OUTD
+instr(0xab,12);
+ {unsigned char x=fetch(hl);
+ out(c,x);
+ if(!l--)h--;
+ b--;
+ f=(f&1)|0x12|(b&0xa8)|((!b)<<6);
+ }
+endinstr;
+
+/* Note: the Z80 implements "*R" as "*" followed by JR -2. No reason
+ to change this... */
+
+// LDIR
+instr(0xb0,12);
+ {unsigned char x=fetch(hl);
+ store(de,x);
+ if(!++l)h++;
+ if(!++e)d++;
+ if(!c--)b--;
+ f=(f&0xc1)|(x&0x28)|(((b|c)>0)<<2);
+ if(b|c)pc-=2;
+ }
+endinstr;
+
+// CPIR
+instr(0xb1,12);
+ {unsigned char carry=cy;
+ cpa(fetch(hl));
+ if(!++l)h++;
+ if(!c--)b--;
+ f=(f&0xfa)|carry|(((b|c)>0)<<2);
+ if((f&0x44)==4)pc-=2;
+ }
+endinstr;
+
+// INIR
+instr(0xb2,12);
+ {unsigned char t=in(c);
+ store(hl,t);
+ if(!++l)h++;
+ b--;
+ f=(b&0xa8)|((!b)<<6)|2|((parity(b)^c)&4);
+ // f=(f & 0xBF)|2|((!b)<<6);
+ if(b)pc-=2;
+ }
+endinstr;
+
+// OTIR
+instr(0xb3,12);
+ {unsigned char x=fetch(hl);
+ out(c,x);
+ if(!++l)h++;
+ b--;
+ f=(f&1)|0x12|(b&0xa8)|((!b)<<6);
+ if(b)pc-=2;
+ }
+endinstr;
+
+// LDDR
+instr(0xb8,12);
+ {unsigned char x=fetch(hl);
+ store(de,x);
+ if(!l--)h--;
+ if(!e--)d--;
+ if(!c--)b--;
+ f=(f&0xc1)|(x&0x28)|(((b|c)>0)<<2);
+ if(b|c)pc-=2;
+ }
+endinstr;
+
+// CPDR
+instr(0xb9,12);
+ {unsigned char carry=cy;
+ cpa(fetch(hl));
+ if(!l--)h--;
+ if(!c--)b--;
+ f=(f&0xfa)|carry|(((b|c)>0)<<2);
+ if((f&0x44)==4)pc-=2;
+ }
+endinstr;
+
+// INDR
+instr(0xba,12);
+ {unsigned char t=in(c);
+ store(hl,t);
+ if(!l--)h--;
+ b--;
+ f=(b&0xa8)|((!b)<<6)|2|((parity(b)^c^4)&4);
+ // f=(f & 0xBF)|2|((!b)<<6);
+
+ if(b)pc-=2;
+ }
+endinstr;
+
+// OTDR
+instr(0xbb,12);
+ {unsigned char x=fetch(hl);
+ out(c,x);
+ if(!l--)h--;
+ b--;
+ f=(f&1)|0x12|(b&0xa8)|((!b)<<6);
+ if(b)pc-=2;
+ }
+endinstr;
+
+}}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/z80/z80.h Wed Jun 29 14:25:56 2011 +0000
@@ -0,0 +1,173 @@
+/* z81/xz81, Linux console and X ZX81/ZX80 emulators.
+ * Copyright (C) 1994 Ian Collier. z81 changes (C) 1995-2001 Russell Marks.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+// I have made all Z80 registers global and volatile
+volatile bool iff1, iff2;
+unsigned char im;
+volatile unsigned char a, f, b, c, d, e, h, l;
+volatile unsigned char r, a1, f1, b1, c1, d1, e1, h1, l1, i;
+volatile unsigned short pc;
+volatile unsigned short ix, iy, sp;
+
+// some flags
+volatile bool intpend=0;
+volatile unsigned char new_ixoriy=0;
+volatile unsigned char ixoriy=0;
+
+
+#define Z80_quit 1
+#define Z80_NMI 2
+#define Z80_reset 3
+#define Z80_load 4
+#define Z80_save 5
+#define Z80_log 6
+
+#define parity(a) (partable[a])
+unsigned char partable[256]={
+ 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4,
+ 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0,
+ 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0,
+ 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4,
+ 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0,
+ 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4,
+ 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4,
+ 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0,
+ 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0,
+ 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4,
+ 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4,
+ 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0,
+ 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4,
+ 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0,
+ 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0,
+ 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4
+ };
+
+
+#define fetch(x) (rdmem(x))
+#define fetch2(x) ((fetch((x)+1)<<8)|fetch(x))
+
+// store 8 bit value y at 16 bit location x
+#define store(x,y) (wrmem(x,(y)))
+
+#define store2b(x,hi,lo) do {wrmem(x,lo);wrmem(x+1,hi);}while(0)
+
+#define store2(x,y) store2b(x,(y)>>8,(y)&255)
+
+#define bc ((b<<8)|c)
+#define de ((d<<8)|e)
+#define hl ((h<<8)|l)
+
+#define instr(opcode,cycles) case opcode: {
+#define HLinstr(opcode) \
+ case opcode: {unsigned short addr; \
+ if(ixoriy==0)addr=hl; \
+ else addr=(ixoriy==1?ix:iy)+ \
+ (signed char)fetch(pc),\
+ pc++
+#define endinstr }; break
+
+#define cy (f&1)
+
+#define xh (ixoriy==0?h:ixoriy==1?(ix>>8):(iy>>8))
+#define xl (ixoriy==0?l:ixoriy==1?(ix&0xff):(iy&0xff))
+
+#define setxh(x) (ixoriy==0?(h=(x)):ixoriy==1?(ix=(ix&0xff)|((x)<<8)):\
+ (iy=(iy&0xff)|((x)<<8)))
+#define setxl(x) (ixoriy==0?(l=(x)):ixoriy==1?(ix=(ix&0xff00)|(x)):\
+ (iy=(iy&0xff00)|(x)))
+
+#define inc(var) /* 8-bit increment */ ( var++,\
+ f=(f&1)|(var&0xa8)|\
+ ((!(var&15))<<4)|((!var)<<6)|\
+ ((var==128)<<2)\
+ )
+#define dec(var) /* 8-bit decrement */ ( f=(f&1)|((!(var&15))<<4)|2,\
+ --var,\
+ f|=(var&0xa8)|((var==127)<<2)|\
+ ((!var)<<6)\
+ )
+#define swap(x,y) {unsigned char t=x; x=y; y=t;}
+#define addhl(hi,lo) /* 16-bit add */ if(!ixoriy){\
+ unsigned short t;\
+ l=t=l+(lo);\
+ f=(f&0xc4)|(((t>>=8)+(h&0x0f)+((hi)&0x0f)>15)<<4);\
+ h=t+=h+(hi);\
+ f|=(h&0x28)|(t>>8);\
+ }\
+ else do{unsigned long t=(ixoriy==1?ix:iy);\
+ f=(f&0xc4)|(((t&0xfff)+((hi<<8)|lo)>0xfff)<<4);\
+ t+=(hi<<8)|lo;\
+ if(ixoriy==1)ix=t; else iy=t;\
+ f|=((t>>8)&0x28)|(t>>16);\
+ } while(0)
+
+#define adda(x,c) /* 8-bit add */ do{unsigned short y;\
+ unsigned char z=(x);\
+ y=a+z+(c);\
+ f=(y&0xa8)|(y>>8)|(((a&0x0f)+(z&0x0f)+(c)>15)<<4)|\
+ (((~a^z)&0x80&(y^a))>>5);\
+ a=y; \
+ f|=(!a)<<6;\
+ } while(0)
+#define suba(x,c) /* 8-bit subtract */ do{unsigned short y;\
+ unsigned char z=(x);\
+ y=(a-z-(c))&0x1ff;\
+ f=(y&0xa8)|(y>>8)|(((a&0x0f)<(z&0x0f)+(c))<<4)|\
+ (((a^z)&0x80&(y^a))>>5)|2;\
+ a=y; \
+ f|=(!a)<<6;\
+ } while(0)
+#define cpa(x) /* 8-bit compare */ do{unsigned short y;\
+ unsigned char z=(x);\
+ y=(a-z)&0x1ff;\
+ f=(y&0xa8)|(y>>8)|(((a&0x0f)<(z&0x0f))<<4)|\
+ (((a^z)&0x80&(y^a))>>5)|2|((!y)<<6);\
+ } while(0)
+#define anda(x) /* logical and */ do{\
+ a&=(x);\
+ f=(a&0xa8)|((!a)<<6)|0x10|parity(a);\
+ } while(0)
+#define xora(x) /* logical xor */ do{\
+ a^=(x);\
+ f=(a&0xa8)|((!a)<<6)|parity(a);\
+ } while(0)
+#define ora(x) /* logical or */ do{\
+ a|=(x);\
+ f=(a&0xa8)|((!a)<<6)|parity(a);\
+ } while(0)
+
+#define jr /* execute relative jump */ do{int j=(signed char)fetch(pc);\
+ pc+=j+1;\
+ } while(0)
+#define jp /* execute jump */ (pc=fetch2(pc))
+#define call /* execute call */ do{\
+ push2(pc+2);\
+ jp;\
+ } while(0)
+#define ret /* execute return */ do{\
+ pop2(pc);\
+ } while(0)
+#define pop2(var) /* pop 16-bit register */ (var=fetch2(sp),sp+=2)
+#define pop1(v1,v2) /* pop register pair */ (v2=fetch(sp),\
+ v1=fetch(sp+1),sp+=2)
+#define push2(val) /* push 16-bit register */ do{sp-=2;store2(sp,(val));}\
+ while(0)
+#define push1(v1,v2) /* push register pair */ do{sp-=2;\
+ store2b(sp,v1,v2);\
+ }while(0)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/z80/z80ops.h Wed Jun 29 14:25:56 2011 +0000
@@ -0,0 +1,1218 @@
+/* Emulations of the Z80 CPU instruction set - part of xz80.
+ * Copyright (C) 1994 Ian Collier.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+/* nop */
+case 0:
+break;
+// ld BC,nn
+instr(0x01,10);
+c=fetch(pc),pc++;
+b=fetch(pc),pc++;
+endinstr;
+// ld (BC),A
+instr(0x02,7);
+store(bc,a);
+endinstr;
+// inc BC
+instr(0x03,6);
+if (!++c)b++;
+endinstr;
+// inc B
+instr(0x04,4);
+inc(b);
+endinstr;
+// dec B
+instr(0x05,4);
+dec(b);
+endinstr;
+// ld B,n
+instr(0x06,7);
+b=fetch(pc),pc++;
+endinstr;
+// rlca
+instr(0x07,4);
+a=(a<<1)|(a>>7);
+f=(f&0xc4)|(a&0x29);
+endinstr;
+// ex AF,AF'
+instr(0x08,4);
+swap(a,a1);
+swap(f,f1);
+endinstr;
+// add HL,BC
+instr(0x09,11);
+addhl(b,c);
+endinstr;
+// ld A,(BC)
+instr(0x0a,7);
+a=fetch(bc);
+endinstr;
+// dec BC
+instr(0x0b,6);
+if (!c--)b--;
+endinstr;
+// inc C
+instr(0x0c,4);
+inc(c);
+endinstr;
+// dec C
+instr(0x0d,4);
+dec(c);
+endinstr;
+// ld C,n
+instr(0x0e,4);
+c=fetch(pc),pc++;
+endinstr;
+// rrca
+instr(0x0f,4);
+f=(f&0xc4)|(a&1);
+a=(a>>1)|(a<<7);
+f|=a&0x28;
+endinstr;
+// djnz
+instr(0x10,8);
+if (!--b)pc++;
+else jr;
+endinstr;
+// ld DE,nn
+instr(0x11,10);
+e=fetch(pc),pc++;
+d=fetch(pc),pc++;
+endinstr;
+// ld (DE),A
+instr(0x12,7);
+store(de,a);
+endinstr;
+// inc DE
+instr(0x13,6);
+if (!++e)d++;
+endinstr;
+// inc D
+instr(0x14,4);
+inc(d);
+endinstr;
+// dec D
+instr(0x15,4);
+dec(d);
+endinstr;
+// ld D,n
+instr(0x16,7);
+d=fetch(pc),pc++;
+endinstr;
+// rla
+instr(0x17,4);
+{
+ int t=a>>7;
+ a=(a<<1)|(f&1);
+ f=(f&0xc4)|(a&0x28)|t;
+}
+endinstr;
+// JR
+instr(0x18,7);
+jr;
+endinstr;
+// add HL,DE
+instr(0x19,11);
+addhl(d,e);
+endinstr;
+// ld A,(DE)
+instr(0x1a,7);
+a=fetch(de);
+endinstr;
+// dec DE
+instr(0x1b,6);
+if (!e--)d--;
+endinstr;
+// inc E
+instr(0x1c,4);
+inc(e);
+endinstr;
+// dec E
+instr(0x1d,4);
+dec(e);
+endinstr;
+// ld E,n
+instr(0x1e,4);
+e=fetch(pc),pc++;
+endinstr;
+// rra
+instr(0x1f,4);
+{
+ int t=a&1;
+ a=(a>>1)|(f<<7);
+ f=(f&0xc4)|(a&0x28)|t;
+}
+endinstr;
+// jr NZ
+instr(0x20,7);
+if (f&0x40)pc++;
+else jr;
+endinstr;
+// ld HL,nn
+instr(0x21,10);
+if (!ixoriy) {
+ l=fetch(pc),pc++;
+ h=fetch(pc),pc++;
+} else {
+ if (ixoriy==1)
+ ix=fetch2(pc);
+ else iy=fetch2(pc);
+ pc+=2;
+}
+endinstr;
+// ld (nn),HL
+instr(0x22,16);
+{
+ unsigned short addr=fetch2(pc);
+ pc+=2;
+ if (!ixoriy) store2b(addr,h,l);
+ else if (ixoriy==1)store2(addr,ix);
+ else store2(addr,iy);
+}
+endinstr;
+// inc HL
+instr(0x23,6);
+if (!ixoriy) {
+ if (!++l)h++;
+} else if (ixoriy==1)ix++;
+else iy++;
+endinstr;
+// inc H
+instr(0x24,4);
+if (ixoriy==0)inc(h);
+else {
+ unsigned char t;
+ t=(ixoriy==1?ix:iy)>>8;
+ inc(t);
+ if (ixoriy==1)ix=(ix&0xff)|(t<<8);
+ else iy=(iy&0xff)|(t<<8);
+}
+endinstr;
+// dec H
+instr(0x25,4);
+if (ixoriy==0)dec(h);
+else {
+ unsigned char t;
+ t=(ixoriy==1?ix:iy)>>8;
+ dec(t);
+ if (ixoriy==1)ix=(ix&0xff)|(t<<8);
+ else iy=(iy&0xff)|(t<<8);
+}
+endinstr;
+// ld H,n
+instr(0x26,7);
+setxh(fetch(pc));
+pc++;
+endinstr;
+// daa
+instr(0x27,4);
+{
+ unsigned char incr=0, carry=cy;
+ if ((f&0x10) || (a&0x0f)>9) incr=6;
+ if ((f&1) || (a>>4)>9) incr|=0x60;
+ if (f&2) suba(incr,0);
+
+ else {
+ if (a>0x90 && (a&15)>9)incr|=0x60;
+ adda(incr,0);
+ }
+ f=((f|carry)&0xfb)|parity(a);
+}
+endinstr;
+// jr Z
+instr(0x28,7);
+if (f&0x40)jr;
+else pc++;
+endinstr;
+// add HL,HL
+instr(0x29,11);
+if (!ixoriy)addhl(h,l);
+else if (ixoriy==1)addhl((ix>>8),(ix&0xff));
+else addhl((iy>>8),(iy&0xff));
+endinstr;
+// ld HL,(nn)
+instr(0x2a,16);
+{
+ unsigned short addr=fetch2(pc);
+ pc+=2;
+ if (!ixoriy) {
+ l=fetch(addr);
+ h=fetch(addr+1);
+ } else if (ixoriy==1)ix=fetch2(addr);
+ else iy=fetch2(addr);
+}
+endinstr;
+// dec HL
+instr(0x2b,6);
+if (!ixoriy) {
+ if (!l--)h--;
+} else if (ixoriy==1)ix--;
+else iy--;
+endinstr;
+// inc L
+instr(0x2c,4);
+if (!ixoriy)inc(l);
+else {
+ unsigned char t;
+ t=(ixoriy==1?ix:iy);
+ inc(t);
+ if (ixoriy==1)ix=(ix&0xff00)|t;
+ else iy=(iy&0xff00)|t;
+}
+endinstr;
+// dec L
+instr(0x2d,4);
+if (!ixoriy)dec(l);
+else {
+ unsigned char t;
+ t=(ixoriy==1?ix:iy);
+ dec(t);
+ if (ixoriy==1)ix=(ix&0xff00)|t;
+ else iy=(iy&0xff00)|t;
+}
+endinstr;
+// ld L,n
+instr(0x2e,4);
+setxl(fetch(pc));
+pc++;
+endinstr;
+// cpl
+instr(0x2f,4);
+a=~a;
+f=(f&0xc5)|(a&0x28)|0x12;
+endinstr;
+// jr NC
+instr(0x30,7);
+if (f&1)pc++;
+else jr;
+endinstr;
+// ld SP,nn
+instr(0x31,10);
+sp=fetch2(pc);
+pc+=2;
+endinstr;
+// ld (nn),A
+instr(0x32,13);
+{
+ unsigned short addr=fetch2(pc);
+ pc+=2;
+ store(addr,a);
+}
+endinstr;
+// inc SP
+instr(0x33,6);
+sp++;
+endinstr;
+// inc (HL)
+HLinstr(0x34);
+{
+ unsigned char t=fetch(addr);
+ inc(t);
+ store(addr,t);
+}
+endinstr;
+// dec (HL)
+HLinstr(0x35);
+{
+ unsigned char t=fetch(addr);
+ dec(t);
+ store(addr,t);
+}
+endinstr;
+// ld (HL),n
+HLinstr(0x36);
+store(addr,fetch(pc));
+pc++;
+endinstr;
+// scf
+instr(0x37,4);
+f=(f&0xc4)|1|(a&0x28);
+endinstr;
+// jr C
+instr(0x38,7);
+if (f&1)jr;
+else pc++;
+endinstr;
+// add HL,SP
+instr(0x39,11);
+addhl((sp>>8),(sp&0xff));
+endinstr;
+// ld A,(nn)
+instr(0x3a,13);
+{
+ unsigned short addr=fetch2(pc);
+ pc+=2;
+ a=fetch(addr);
+}
+endinstr;
+// dec SP
+instr(0x3b,6);
+sp--;
+endinstr;
+// inc A
+instr(0x3c,4);
+inc(a);
+endinstr;
+// dec A
+instr(0x3d,4);
+dec(a);
+endinstr;
+// ld A,n
+instr(0x3e,4);
+a=fetch(pc),pc++;
+endinstr;
+// ccf
+instr(0x3f,4);
+f=(f&0xc4)|(cy^1)|(cy<<4)|(a&0x28);
+endinstr;
+// ld B,B
+instr(0x40,4);
+/* ld b,b */
+endinstr;
+
+instr(0x41,4);
+b=c;
+endinstr;
+
+instr(0x42,4);
+b=d;
+endinstr;
+
+instr(0x43,4);
+b=e;
+endinstr;
+
+instr(0x44,4);
+b=xh;
+endinstr;
+
+instr(0x45,4);
+b=xl;
+endinstr;
+
+HLinstr(0x46);
+b=fetch(addr);
+endinstr;
+
+instr(0x47,4);
+b=a;
+endinstr;
+
+instr(0x48,4);
+c=b;
+endinstr;
+
+instr(0x49,4);
+/* ld c,c */
+endinstr;
+
+instr(0x4a,4);
+c=d;
+endinstr;
+
+instr(0x4b,4);
+c=e;
+endinstr;
+
+instr(0x4c,4);
+c=xh;
+endinstr;
+
+instr(0x4d,4);
+c=xl;
+endinstr;
+
+HLinstr(0x4e);
+c=fetch(addr);
+endinstr;
+
+instr(0x4f,4);
+c=a;
+endinstr;
+
+instr(0x50,4);
+d=b;
+endinstr;
+
+instr(0x51,4);
+d=c;
+endinstr;
+
+instr(0x52,4);
+/* ld d,d */
+endinstr;
+
+instr(0x53,4);
+d=e;
+endinstr;
+
+instr(0x54,4);
+d=xh;
+endinstr;
+
+instr(0x55,4);
+d=xl;
+endinstr;
+
+HLinstr(0x56);
+d=fetch(addr);
+endinstr;
+
+instr(0x57,4);
+d=a;
+endinstr;
+
+instr(0x58,4);
+e=b;
+endinstr;
+
+instr(0x59,4);
+e=c;
+endinstr;
+
+instr(0x5a,4);
+e=d;
+endinstr;
+
+instr(0x5b,4);
+/* ld e,e */
+endinstr;
+
+instr(0x5c,4);
+e=xh;
+endinstr;
+
+instr(0x5d,4);
+e=xl;
+endinstr;
+
+HLinstr(0x5e);
+e=fetch(addr);
+endinstr;
+
+instr(0x5f,4);
+e=a;
+endinstr;
+
+instr(0x60,4);
+setxh(b);
+endinstr;
+
+instr(0x61,4);
+setxh(c);
+endinstr;
+
+instr(0x62,4);
+setxh(d);
+endinstr;
+
+instr(0x63,4);
+setxh(e);
+endinstr;
+
+instr(0x64,4);
+/* ld h,h */
+endinstr;
+
+instr(0x65,4);
+setxh(xl);
+endinstr;
+
+HLinstr(0x66);
+h=fetch(addr);
+endinstr;
+
+instr(0x67,4);
+setxh(a);
+endinstr;
+
+instr(0x68,4);
+setxl(b);
+endinstr;
+
+instr(0x69,4);
+setxl(c);
+endinstr;
+
+instr(0x6a,4);
+setxl(d);
+endinstr;
+
+instr(0x6b,4);
+setxl(e);
+endinstr;
+
+instr(0x6c,4);
+setxl(xh);
+endinstr;
+
+instr(0x6d,4);
+/* ld l,l */
+endinstr;
+
+HLinstr(0x6e);
+l=fetch(addr);
+endinstr;
+
+instr(0x6f,4);
+setxl(a);
+endinstr;
+
+HLinstr(0x70);
+store(addr,b);
+endinstr;
+
+HLinstr(0x71);
+store(addr,c);
+endinstr;
+
+HLinstr(0x72);
+store(addr,d);
+endinstr;
+
+HLinstr(0x73);
+store(addr,e);
+endinstr;
+
+HLinstr(0x74);
+store(addr,h);
+endinstr;
+
+HLinstr(0x75);
+store(addr,l);
+endinstr;
+
+// HALT
+instr(0x76,4);
+pc--; /* keep nopping until int */
+endinstr;
+
+HLinstr(0x77);
+store(addr,a);
+endinstr;
+
+instr(0x78,4);
+a=b;
+endinstr;
+
+instr(0x79,4);
+a=c;
+endinstr;
+
+instr(0x7a,4);
+a=d;
+endinstr;
+
+instr(0x7b,4);
+a=e;
+endinstr;
+
+instr(0x7c,4);
+a=xh;
+endinstr;
+
+instr(0x7d,4);
+a=xl;
+endinstr;
+
+HLinstr(0x7e);
+a=fetch(addr);
+endinstr;
+
+instr(0x7f,4);
+/* ld a,a */
+endinstr;
+
+instr(0x80,4);
+adda(b,0);
+endinstr;
+
+instr(0x81,4);
+adda(c,0);
+endinstr;
+
+instr(0x82,4);
+adda(d,0);
+endinstr;
+
+instr(0x83,4);
+adda(e,0);
+endinstr;
+
+instr(0x84,4);
+adda(xh,0);
+endinstr;
+
+instr(0x85,4);
+adda(xl,0);
+endinstr;
+
+HLinstr(0x86);
+adda(fetch(addr),0);
+endinstr;
+
+instr(0x87,4);
+adda(a,0);
+endinstr;
+
+instr(0x88,4);
+adda(b,cy);
+endinstr;
+
+instr(0x89,4);
+adda(c,cy);
+endinstr;
+
+instr(0x8a,4);
+adda(d,cy);
+endinstr;
+
+instr(0x8b,4);
+adda(e,cy);
+endinstr;
+
+instr(0x8c,4);
+adda(xh,cy);
+endinstr;
+
+instr(0x8d,4);
+adda(xl,cy);
+endinstr;
+
+HLinstr(0x8e);
+adda(fetch(addr),cy);
+endinstr;
+
+instr(0x8f,4);
+adda(a,cy);
+endinstr;
+
+instr(0x90,4);
+suba(b,0);
+endinstr;
+
+instr(0x91,4);
+suba(c,0);
+endinstr;
+
+instr(0x92,4);
+suba(d,0);
+endinstr;
+
+instr(0x93,4);
+suba(e,0);
+endinstr;
+
+instr(0x94,4);
+suba(xh,0);
+endinstr;
+
+instr(0x95,4);
+suba(xl,0);
+endinstr;
+
+HLinstr(0x96);
+suba(fetch(addr),0);
+endinstr;
+
+instr(0x97,4);
+suba(a,0);
+endinstr;
+
+instr(0x98,4);
+suba(b,cy);
+endinstr;
+
+instr(0x99,4);
+suba(c,cy);
+endinstr;
+
+instr(0x9a,4);
+suba(d,cy);
+endinstr;
+
+instr(0x9b,4);
+suba(e,cy);
+endinstr;
+
+instr(0x9c,4);
+suba(xh,cy);
+endinstr;
+
+instr(0x9d,4);
+suba(xl,cy);
+endinstr;
+
+HLinstr(0x9e);
+suba(fetch(addr),cy);
+endinstr;
+
+instr(0x9f,4);
+suba(a,cy);
+endinstr;
+
+instr(0xa0,4);
+anda(b);
+endinstr;
+
+instr(0xa1,4);
+anda(c);
+endinstr;
+
+instr(0xa2,4);
+anda(d);
+endinstr;
+
+instr(0xa3,4);
+anda(e);
+endinstr;
+
+instr(0xa4,4);
+anda(xh);
+endinstr;
+
+instr(0xa5,4);
+anda(xl);
+endinstr;
+
+HLinstr(0xa6);
+anda(fetch(addr));
+endinstr;
+
+instr(0xa7,4);
+anda(a);
+endinstr;
+
+instr(0xa8,4);
+xora(b);
+endinstr;
+
+instr(0xa9,4);
+xora(c);
+endinstr;
+
+instr(0xaa,4);
+xora(d);
+endinstr;
+
+instr(0xab,4);
+xora(e);
+endinstr;
+
+instr(0xac,4);
+xora(xh);
+endinstr;
+
+instr(0xad,4);
+xora(xl);
+endinstr;
+
+HLinstr(0xae);
+xora(fetch(addr));
+endinstr;
+
+instr(0xaf,4);
+xora(a);
+endinstr;
+
+instr(0xb0,4);
+ora(b);
+endinstr;
+
+instr(0xb1,4);
+ora(c);
+endinstr;
+
+instr(0xb2,4);
+ora(d);
+endinstr;
+
+instr(0xb3,4);
+ora(e);
+endinstr;
+
+instr(0xb4,4);
+ora(xh);
+endinstr;
+
+instr(0xb5,4);
+ora(xl);
+endinstr;
+
+HLinstr(0xb6);
+ora(fetch(addr));
+endinstr;
+
+instr(0xb7,4);
+ora(a);
+endinstr;
+
+instr(0xb8,4);
+cpa(b);
+endinstr;
+
+instr(0xb9,4);
+cpa(c);
+endinstr;
+
+instr(0xba,4);
+cpa(d);
+endinstr;
+
+instr(0xbb,4);
+cpa(e);
+endinstr;
+
+instr(0xbc,4);
+cpa(xh);
+endinstr;
+
+instr(0xbd,4);
+cpa(xl);
+endinstr;
+
+HLinstr(0xbe);
+cpa(fetch(addr));
+endinstr;
+
+instr(0xbf,4);
+cpa(a);
+endinstr;
+
+instr(0xc0,5);
+if (!(f&0x40))ret;
+endinstr;
+
+instr(0xc1,10);
+pop1(b,c);
+endinstr;
+
+instr(0xc2,10);
+if (!(f&0x40))jp;
+else pc+=2;
+endinstr;
+
+instr(0xc3,10);
+jp;
+endinstr;
+
+instr(0xc4,10);
+if (!(f&0x40))call;
+else pc+=2;
+endinstr;
+
+instr(0xc5,11);
+push1(b,c);
+endinstr;
+
+instr(0xc6,7);
+adda(fetch(pc),0);
+pc++;
+endinstr;
+
+instr(0xc7,11);
+push2(pc);
+pc=0;
+endinstr;
+
+instr(0xc8,5);
+if (f&0x40)ret;
+endinstr;
+
+instr(0xc9,4);
+ret;
+endinstr;
+
+instr(0xca,10);
+if (f&0x40)jp;
+else pc+=2;
+endinstr;
+
+instr(0xcb,4);
+#include "cbops.h"
+endinstr;
+
+instr(0xcc,10);
+if (f&0x40)call;
+else pc+=2;
+endinstr;
+
+instr(0xcd,10);
+call;
+endinstr;
+
+instr(0xce,7);
+adda(fetch(pc),cy);
+pc++;
+endinstr;
+
+instr(0xcf,11);
+push2(pc);
+pc=8;
+endinstr;
+
+instr(0xd0,5);
+if (!cy)ret;
+endinstr;
+
+instr(0xd1,10);
+pop1(d,e);
+endinstr;
+
+instr(0xd2,10);
+if (!cy)jp;
+else pc+=2;
+endinstr;
+
+// OUT
+instr(0xd3,11);
+out(fetch(pc),a);
+pc++;
+endinstr;
+
+instr(0xd4,10);
+if (!cy)call;
+else pc+=2;
+endinstr;
+
+instr(0xd5,11);
+push1(d,e);
+endinstr;
+
+instr(0xd6,7);
+suba(fetch(pc),0);
+pc++;
+endinstr;
+
+instr(0xd7,11);
+push2(pc);
+pc=16;
+endinstr;
+
+instr(0xd8,5);
+if (cy)ret;
+endinstr;
+
+instr(0xd9,4);
+swap(b,b1);
+swap(c,c1);
+swap(d,d1);
+swap(e,e1);
+swap(h,h1);
+swap(l,l1);
+endinstr;
+
+instr(0xda,10);
+if (cy)jp;
+else pc+=2;
+endinstr;
+
+// IN
+instr(0xdb,11);
+{
+ a=in(fetch(pc));
+ pc++;
+}
+endinstr;
+
+instr(0xdc,10);
+if (cy)call;
+else pc+=2;
+endinstr;
+
+instr(0xdd,4);
+new_ixoriy=1;
+endinstr;
+
+instr(0xde,7);
+suba(fetch(pc),cy);
+pc++;
+endinstr;
+
+// RST 18
+instr(0xdf,11);
+push2(pc);
+pc=0x0018;
+endinstr;
+
+instr(0xe0,5);
+if (!(f&4))ret;
+endinstr;
+
+instr(0xe1,10);
+if (!ixoriy)pop1(h,l);
+else if (ixoriy==1)pop2(ix);
+else pop2(iy);
+endinstr;
+
+instr(0xe2,10);
+if (!(f&4))jp;
+else pc+=2;
+endinstr;
+
+instr(0xe3,19);
+if (!ixoriy) {
+ unsigned short t=fetch2(sp);
+ store2b(sp,h,l);
+ l=t;
+ h=t>>8;
+} else if (ixoriy==1) {
+ unsigned short t=fetch2(sp);
+ store2(sp,ix);
+ ix=t;
+} else {
+ unsigned short t=fetch2(sp);
+ store2(sp,iy);
+ iy=t;
+}
+endinstr;
+
+instr(0xe4,10);
+if (!(f&4))call;
+else pc+=2;
+endinstr;
+
+instr(0xe5,11);
+if (!ixoriy)push1(h,l);
+else if (ixoriy==1)push2(ix);
+else push2(iy);
+endinstr;
+
+instr(0xe6,7);
+anda(fetch(pc));
+pc++;
+endinstr;
+
+instr(0xe7,11);
+push2(pc);
+pc=32;
+endinstr;
+
+instr(0xe8,5);
+if (f&4)ret;
+endinstr;
+
+instr(0xe9,4);
+pc=!ixoriy?hl:ixoriy==1?ix:iy;
+endinstr;
+
+instr(0xea,10);
+if (f&4)jp;
+else pc+=2;
+endinstr;
+
+instr(0xeb,4);
+swap(h,d);
+swap(e,l);
+endinstr;
+
+instr(0xec,10);
+if (f&4)call;
+else pc+=2;
+endinstr;
+
+instr(0xed,4);
+#include"edops.h"
+endinstr;
+
+instr(0xee,7);
+xora(fetch(pc));
+pc++;
+endinstr;
+
+instr(0xef,11);
+push2(pc);
+pc=40;
+endinstr;
+
+instr(0xf0,5);
+if (!(f&0x80))ret;
+endinstr;
+
+instr(0xf1,10);
+pop1(a,f);
+endinstr;
+
+instr(0xf2,10);
+if (!(f&0x80))jp;
+else pc+=2;
+endinstr;
+
+instr(0xf3,4);
+iff1=iff2=0;
+// __disable_irq();
+endinstr;
+
+instr(0xf4,10);
+if (!(f&0x80))call;
+else pc+=2;
+endinstr;
+
+instr(0xf5,11);
+push1(a,f);
+endinstr;
+
+instr(0xf6,7);
+ora(fetch(pc));
+pc++;
+endinstr;
+
+// rst 30
+instr(0xf7,11);
+push2(pc);
+pc=0x30;
+// printf("RST30\n\r");
+endinstr;
+
+instr(0xf8,5);
+if (f&0x80)ret;
+endinstr;
+
+instr(0xf9,6);
+sp=!ixoriy?hl:ixoriy==1?ix:iy;
+endinstr;
+
+instr(0xfa,10);
+if (f&0x80)jp;
+else pc+=2;
+endinstr;
+
+instr(0xfb,4);
+iff1=iff2=1;
+endinstr;
+
+instr(0xfc,10);
+if (f&0x80)call;
+else pc+=2;
+endinstr;
+
+instr(0xfd,4);
+new_ixoriy=2;
+endinstr;
+
+instr(0xfe,7);
+cpa(fetch(pc));
+pc++;
+endinstr;
+
+instr(0xff,11);
+push2(pc);
+pc=56;
+endinstr;
+