mirror of
https://github.com/autc04/Retro68.git
synced 2025-01-13 16:33:02 +00:00
improve LaunchAPPL
This commit is contained in:
parent
360a9858e3
commit
270cafaab4
11
AutomatedTests/Log.c
Normal file
11
AutomatedTests/Log.c
Normal file
@ -0,0 +1,11 @@
|
||||
#include "Test.h"
|
||||
|
||||
int main()
|
||||
{
|
||||
TEST_LOG_SIZED("One",3);
|
||||
TEST_LOG_SIZED("Two",3);
|
||||
for(;;)
|
||||
;
|
||||
TEST_LOG_SIZED("Three",5);
|
||||
return 0;
|
||||
}
|
@ -3,12 +3,15 @@
|
||||
|
||||
#include <Files.h>
|
||||
#include <Devices.h>
|
||||
#include <string.h>
|
||||
|
||||
#define TEST_LOG_SIZED(str, size) \
|
||||
do { \
|
||||
HParamBlockRec _hpb; \
|
||||
memset(&_hpb,0,sizeof(_hpb)); \
|
||||
\
|
||||
unsigned char _fileName[4]; \
|
||||
short _ref;\
|
||||
_fileName[0] = 3; \
|
||||
_fileName[1] = 'o'; \
|
||||
_fileName[2] = 'u'; \
|
||||
@ -20,19 +23,27 @@
|
||||
_hpb.fileParam.ioDirID = 0; \
|
||||
_hpb.ioParam.ioPermssn = fsRdWrPerm; \
|
||||
PBHOpenSync(&_hpb); \
|
||||
\
|
||||
_ref = _hpb.ioParam.ioRefNum; \
|
||||
\
|
||||
memset(&_hpb,0,sizeof(_hpb)); \
|
||||
_hpb.ioParam.ioBuffer = str; \
|
||||
_hpb.ioParam.ioReqCount = size; \
|
||||
_hpb.ioParam.ioPosMode = fsFromLEOF; \
|
||||
_hpb.ioParam.ioPosOffset = 0; \
|
||||
_hpb.ioParam.ioRefNum = _ref; \
|
||||
PBWriteSync((void*)&_hpb); \
|
||||
memset(&_hpb,0,sizeof(_hpb)); \
|
||||
char _newline = '\n'; \
|
||||
_hpb.ioParam.ioBuffer = &_newline; \
|
||||
_hpb.ioParam.ioReqCount = 1; \
|
||||
_hpb.ioParam.ioPosMode = fsFromLEOF; \
|
||||
_hpb.ioParam.ioPosOffset = 0; \
|
||||
_hpb.ioParam.ioRefNum = _ref; \
|
||||
PBWriteSync((void*)&_hpb); \
|
||||
memset(&_hpb,0,sizeof(_hpb)); \
|
||||
_hpb.ioParam.ioRefNum = _ref; \
|
||||
PBCloseSync((void*)&_hpb); \
|
||||
FlushVol(NULL,0); \
|
||||
} while(0);
|
||||
|
||||
void TestLog(const char *str);
|
||||
|
15
Dockerfile
Normal file
15
Dockerfile
Normal file
@ -0,0 +1,15 @@
|
||||
# vim:ft=dockerfile
|
||||
FROM ubuntu:16.04
|
||||
|
||||
RUN apt-get update && apt-get -y install \
|
||||
g++ \
|
||||
cmake libgmp-dev libmpfr-dev libmpc-dev libboost-all-dev bison \
|
||||
zlib1g-dev \
|
||||
perl texinfo
|
||||
|
||||
RUN mkdir /root/Retro68
|
||||
COPY . /root/Retro68/
|
||||
|
||||
RUN mkdir /root/Retro68-build
|
||||
|
||||
RUN sh -c "cd /root/Retro68-build && sh ../Retro68/build-toolchain.sh --clean-after-build"
|
@ -1,6 +1,6 @@
|
||||
find_package(Boost COMPONENTS filesystem program_options)
|
||||
|
||||
add_executable(LaunchAPPL LaunchAPPL.cc)
|
||||
add_executable(LaunchAPPL LaunchAPPL.cc bootblock.c)
|
||||
target_include_directories(LaunchAPPL PRIVATE ${CMAKE_INSTALL_PREFIX}/include ${Boost_INCLUDE_DIR})
|
||||
target_link_libraries(LaunchAPPL ResourceFiles ${Boost_LIBRARIES})
|
||||
|
||||
|
@ -13,6 +13,11 @@
|
||||
#include "ResourceFork.h"
|
||||
#include "ResourceFile.h"
|
||||
|
||||
extern "C" {
|
||||
#include "hfs.h"
|
||||
}
|
||||
|
||||
|
||||
namespace po = boost::program_options;
|
||||
namespace fs = boost::filesystem;
|
||||
|
||||
@ -119,12 +124,18 @@ int ChildProcess(string program, vector<string> args)
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
desc.add_options()
|
||||
("help,h", "show this help message")
|
||||
("executor-path", po::value<std::string>()->default_value("executor"),"path to executor")
|
||||
("help,h", "show this help message")
|
||||
("executor,e", "run using executor")
|
||||
("minivmac,m", "run using executor")
|
||||
|
||||
("executor-path", po::value<std::string>()->default_value("executor"),"path to executor")
|
||||
("minivmac-path", po::value<std::string>()->default_value("minivmac"),"path to minivmac")
|
||||
("minivmac-dir", po::value<std::string>()->default_value("."),"directory containing vMac.ROM")
|
||||
("system-image", po::value<std::string>(),"path to disk image with system")
|
||||
|
||||
("timeout,t", po::value<int>(),"abort after timeout")
|
||||
("timeout-ok","timeout counts as success")
|
||||
("logfile", po::value<std::string>(), "read log file")
|
||||
("result,r", "TEST 128")
|
||||
;
|
||||
po::options_description hidden, alldesc;
|
||||
hidden.add_options()
|
||||
@ -169,7 +180,6 @@ int main(int argc, char *argv[])
|
||||
if(options.count("executor"))
|
||||
{
|
||||
fs::path tempDir = fs::unique_path();
|
||||
std::cerr << "Unique path: " << tempDir.string() << std::endl;
|
||||
fs::create_directories(tempDir);
|
||||
|
||||
fs::path appPath = tempDir / "Application";
|
||||
@ -194,22 +204,156 @@ int main(int argc, char *argv[])
|
||||
std::cout << in.rdbuf();
|
||||
}
|
||||
|
||||
|
||||
if(result == 0 && options.count("result"))
|
||||
{
|
||||
app.read();
|
||||
auto& resmap = app.resources.resources;
|
||||
auto p = resmap.find(ResRef("TEST", 128));
|
||||
if(p == resmap.end())
|
||||
return 1;
|
||||
|
||||
std::cout << p->second.getData();
|
||||
}
|
||||
|
||||
fs::remove_all(tempDir);
|
||||
|
||||
return result;
|
||||
}
|
||||
if(options.count("minivmac"))
|
||||
{
|
||||
assert(options.count("system-image"));
|
||||
fs::path tempDir = fs::unique_path();
|
||||
fs::path path = tempDir / "image.dsk";
|
||||
fs::create_directories(tempDir);
|
||||
|
||||
hfsvol *sysvol = hfs_mount(options["system-image"].as<std::string>().c_str(),
|
||||
0, HFS_MODE_RDONLY);
|
||||
|
||||
int size = 5000*1024;
|
||||
fs::ofstream(path, std::ios::binary | std::ios::trunc).seekp(size-1).put(0);
|
||||
hfs_format(path.string().c_str(), 0, 0, "SysAndApp", 0, NULL);
|
||||
hfsvol *vol = hfs_mount(path.string().c_str(), 0, HFS_MODE_RDWR);
|
||||
|
||||
hfsvolent ent;
|
||||
hfs_vstat(sysvol, &ent);
|
||||
|
||||
hfs_setcwd(sysvol, ent.blessed);
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
const char *fn = "System";
|
||||
hfsdirent fileent;
|
||||
hfs_stat(sysvol, fn, &fileent);
|
||||
hfsfile *in = hfs_open(sysvol, fn);
|
||||
hfsfile *out = hfs_create(vol, fn, fileent.u.file.type,fileent.u.file.creator);
|
||||
|
||||
std::vector<uint8_t> buffer(std::max(fileent.u.file.dsize, fileent.u.file.rsize));
|
||||
hfs_setfork(in, 0);
|
||||
hfs_setfork(out, 0);
|
||||
hfs_read(in, buffer.data(), fileent.u.file.dsize);
|
||||
hfs_write(out, buffer.data(), fileent.u.file.dsize);
|
||||
hfs_setfork(in, 1);
|
||||
hfs_setfork(out, 1);
|
||||
hfs_read(in, buffer.data(), fileent.u.file.rsize);
|
||||
hfs_write(out, buffer.data(), fileent.u.file.rsize);
|
||||
hfs_close(in);
|
||||
hfs_close(out);
|
||||
}
|
||||
{
|
||||
const char *fn = "Finder";
|
||||
hfsdirent fileent;
|
||||
hfs_stat(sysvol, fn, &fileent);
|
||||
hfsfile *in = hfs_open(sysvol, fn);
|
||||
hfsfile *out = hfs_create(vol, fn, fileent.u.file.type,fileent.u.file.creator);
|
||||
|
||||
std::vector<uint8_t> buffer(std::max(fileent.u.file.dsize, fileent.u.file.rsize));
|
||||
hfs_setfork(in, 0);
|
||||
hfs_setfork(out, 0);
|
||||
hfs_read(in, buffer.data(), fileent.u.file.dsize);
|
||||
hfs_write(out, buffer.data(), fileent.u.file.dsize);
|
||||
hfs_setfork(in, 1);
|
||||
hfs_setfork(out, 1);
|
||||
hfs_read(in, buffer.data(), fileent.u.file.rsize);
|
||||
hfs_write(out, buffer.data(), fileent.u.file.rsize);
|
||||
hfs_close(in);
|
||||
hfs_close(out);
|
||||
}
|
||||
{
|
||||
const char *fn = "MacsBug";
|
||||
hfsdirent fileent;
|
||||
hfs_stat(sysvol, fn, &fileent);
|
||||
hfsfile *in = hfs_open(sysvol, fn);
|
||||
hfsfile *out = hfs_create(vol, fn, fileent.u.file.type,fileent.u.file.creator);
|
||||
|
||||
std::vector<uint8_t> buffer(std::max(fileent.u.file.dsize, fileent.u.file.rsize));
|
||||
hfs_setfork(in, 0);
|
||||
hfs_setfork(out, 0);
|
||||
hfs_read(in, buffer.data(), fileent.u.file.dsize);
|
||||
hfs_write(out, buffer.data(), fileent.u.file.dsize);
|
||||
hfs_setfork(in, 1);
|
||||
hfs_setfork(out, 1);
|
||||
hfs_read(in, buffer.data(), fileent.u.file.rsize);
|
||||
hfs_write(out, buffer.data(), fileent.u.file.rsize);
|
||||
hfs_close(in);
|
||||
hfs_close(out);
|
||||
}
|
||||
|
||||
{
|
||||
std::ostringstream rsrcOut;
|
||||
app.resources.writeFork(rsrcOut);
|
||||
std::string rsrc = rsrcOut.str();
|
||||
std::string& data = app.data;
|
||||
|
||||
hfsfile *file = hfs_create(vol, "App","APPL","????");
|
||||
hfs_setfork(file, 0);
|
||||
hfs_write(file, data.data(), data.size());
|
||||
hfs_setfork(file, 1);
|
||||
hfs_write(file, rsrc.data(), rsrc.size());
|
||||
hfs_close(file);
|
||||
}
|
||||
|
||||
{
|
||||
hfsfile *out = hfs_create(vol, "out", "TEXT", "????");
|
||||
hfs_close(out);
|
||||
}
|
||||
|
||||
hfs_vstat(vol, &ent);
|
||||
ent.blessed = hfs_getcwd(vol);
|
||||
std::cout << "blessed: " << ent.blessed << std::endl;
|
||||
hfs_vsetattr(vol, &ent);
|
||||
|
||||
hfs_umount(vol);
|
||||
hfs_umount(sysvol);
|
||||
|
||||
extern unsigned char bootblock[1024];
|
||||
std::vector<unsigned char> bootblock1(bootblock, bootblock+1024);
|
||||
std::fstream out(path.string(), std::ios::in | std::ios::out | std::ios::binary);
|
||||
|
||||
bootblock1[0x5A] = 3;
|
||||
bootblock1[0x5B] = 'A';
|
||||
bootblock1[0x5C] = 'p';
|
||||
bootblock1[0x5D] = 'p';
|
||||
|
||||
out.write((const char*) bootblock1.data(), 1024);
|
||||
|
||||
path = fs::absolute(path);
|
||||
|
||||
fs::path minivmacdir = fs::absolute( options["minivmac-dir"].as<std::string>() );
|
||||
fs::path minivmacpath = fs::absolute( minivmacdir / options["minivmac-path"].as<std::string>() );
|
||||
|
||||
fs::current_path(minivmacdir);
|
||||
|
||||
int result = ChildProcess(minivmacpath.string(), { path.string() });
|
||||
|
||||
std::cerr << "volume at: " << path.string() << std::endl;
|
||||
vol = hfs_mount(path.string().c_str(), 0, HFS_MODE_RDONLY);
|
||||
{
|
||||
hfsfile *out = hfs_open(vol, "out");
|
||||
if(!out)
|
||||
return 1;
|
||||
hfsdirent fileent;
|
||||
int statres = hfs_stat(vol, "out", &fileent);
|
||||
std::cerr << "stat: " << statres << "\n";
|
||||
std::cerr << "out: " << fileent.u.file.dsize << " bytes\n";
|
||||
std::vector<char> buffer(fileent.u.file.dsize);
|
||||
hfs_setfork(out, 0);
|
||||
hfs_read(out, buffer.data(), fileent.u.file.dsize);
|
||||
hfs_close(out);
|
||||
std::cout << string(buffer.begin(), buffer.end());
|
||||
}
|
||||
hfs_umount(vol);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
67
LaunchAPPL/bootblock.c
Normal file
67
LaunchAPPL/bootblock.c
Normal file
@ -0,0 +1,67 @@
|
||||
unsigned char bootblock[] = {
|
||||
/* 00000000 */ 0x4c, 0x4b, 0x60, 0x00, 0x00, 0x86, 0x00, 0x17, 0x00, 0x00, 0x06, 0x53, 0x79, 0x73, 0x74, 0x65, /* |LK`........Syste| */
|
||||
/* 00000010 */ 0x6d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x06, 0x46, 0x69, 0x6e, 0x64, 0x65, /* |m .Finde| */
|
||||
/* 00000020 */ 0x72, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x07, 0x4d, 0x61, 0x63, 0x73, 0x62, /* |r .Macsb| */
|
||||
/* 00000030 */ 0x75, 0x67, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0c, 0x44, 0x69, 0x73, 0x61, 0x73, /* |ug .Disas| */
|
||||
/* 00000040 */ 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x72, 0x20, 0x20, 0x20, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, /* |sembler .Start| */
|
||||
/* 00000050 */ 0x55, 0x70, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x20, 0x20, 0x06, 0x46, 0x69, 0x6e, 0x64, 0x65, /* |UpScreen .Finde| */
|
||||
/* 00000060 */ 0x72, 0x00, 0x81, 0x00, 0x00, 0x72, 0x00, 0x00, 0x64, 0x0c, 0x0e, 0x43, 0x6c, 0x69, 0x70, 0x62, /* |r....r..d..Clipb| */
|
||||
/* 00000070 */ 0x6f, 0x61, 0x72, 0x64, 0x20, 0x46, 0x69, 0x6c, 0x65, 0x20, 0x00, 0x0a, 0x00, 0x14, 0x00, 0x00, /* |oard File ......| */
|
||||
/* 00000080 */ 0x43, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, 0x22, 0x38, 0x01, 0x08, 0x48, 0x41, /* |C........."8..HA| */
|
||||
/* 00000090 */ 0x0c, 0x41, 0x00, 0x04, 0x6e, 0x2c, 0x72, 0x00, 0x50, 0xf9, 0x00, 0x01, 0xff, 0xf0, 0x42, 0xb9, /* |.A..n,r.P.....B.| */
|
||||
/* 000000a0 */ 0x00, 0x03, 0xff, 0xf0, 0x4a, 0xb9, 0x00, 0x01, 0xff, 0xf0, 0x67, 0x16, 0x70, 0x02, 0x48, 0x40, /* |....J.....g.p.H@| */
|
||||
/* 000000b0 */ 0xd1, 0xb8, 0x01, 0x08, 0xd1, 0xb8, 0x08, 0x24, 0xd1, 0xb8, 0x02, 0x66, 0xd1, 0xb8, 0x01, 0x0c, /* |.......$...f....| */
|
||||
/* 000000c0 */ 0x72, 0x04, 0x20, 0x78, 0x02, 0xa6, 0x0c, 0x41, 0x00, 0x08, 0x6f, 0x02, 0x72, 0x08, 0xd1, 0xfb, /* |r. x...A..o.r...| */
|
||||
/* 000000d0 */ 0x10, 0xae, 0x2f, 0x08, 0x70, 0x07, 0x41, 0xf8, 0x0a, 0xb8, 0x42, 0x98, 0x51, 0xc8, 0xff, 0xfc, /* |../.p.A...B.Q...| */
|
||||
/* 000000e0 */ 0x34, 0x3a, 0xff, 0x9a, 0x70, 0x16, 0xc0, 0xc2, 0x22, 0x00, 0xa7, 0x1e, 0x43, 0xf8, 0x01, 0x54, /* |4:..p..."...C..T| */
|
||||
/* 000000f0 */ 0x53, 0x42, 0x32, 0x82, 0x42, 0xa1, 0x42, 0xa1, 0x42, 0x61, 0x23, 0x08, 0x46, 0x58, 0x55, 0x41, /* |SB2.B.B.Ba#.FXUA| */
|
||||
/* 00000100 */ 0x66, 0xfa, 0x33, 0x3c, 0xff, 0xef, 0x42, 0x78, 0x01, 0x84, 0x72, 0xfc, 0x70, 0x0f, 0x14, 0x38, /* |f.3<..Bx..r.p..8| */
|
||||
/* 00000110 */ 0x02, 0x06, 0xc0, 0x02, 0xd0, 0x40, 0x48, 0x40, 0x10, 0x02, 0xe4, 0x48, 0xc0, 0x41, 0x48, 0x40, /* |.....@H@...H.AH@| */
|
||||
/* 00000120 */ 0x21, 0xc0, 0x01, 0x8e, 0x70, 0x0f, 0x14, 0x38, 0x02, 0x09, 0xc0, 0x02, 0xe5, 0x48, 0x21, 0xc0, /* |!...p..8.....H!.| */
|
||||
/* 00000130 */ 0x02, 0xf4, 0x10, 0x02, 0xe4, 0x48, 0xc0, 0x41, 0x21, 0xc0, 0x02, 0xf0, 0x41, 0xf8, 0x03, 0x40, /* |.....H.A!...A..@| */
|
||||
/* 00000140 */ 0x72, 0x50, 0x42, 0x58, 0x51, 0xc9, 0xff, 0xfc, 0x70, 0x1e, 0xc0, 0xfa, 0xff, 0x2e, 0x32, 0x38, /* |rPBXQ...p.....28| */
|
||||
/* 00000150 */ 0x01, 0x08, 0xe2, 0x49, 0xc0, 0xc1, 0x54, 0x40, 0x32, 0x00, 0xa7, 0x1e, 0x21, 0xc8, 0x03, 0x4e, /* |...I..T@2...!..N| */
|
||||
/* 00000160 */ 0x30, 0xc1, 0x31, 0xfc, 0x00, 0x02, 0x03, 0x4c, 0x9e, 0xfc, 0x00, 0x32, 0x20, 0x4f, 0x31, 0x78, /* |0.1....L...2 O1x| */
|
||||
/* 00000170 */ 0x02, 0x10, 0x00, 0x16, 0xa0, 0x0f, 0x66, 0x00, 0x01, 0xb2, 0xde, 0xfc, 0x00, 0x32, 0x43, 0xf8, /* |......f......2C.| */
|
||||
/* 00000180 */ 0x0a, 0xd8, 0x41, 0xfa, 0xfe, 0x86, 0x70, 0x10, 0xa0, 0x2e, 0x55, 0x4f, 0x2f, 0x0f, 0x48, 0x78, /* |..A...p...UO/.Hx| */
|
||||
/* 00000190 */ 0x09, 0xfa, 0x20, 0x78, 0x08, 0x10, 0x4e, 0x90, 0x30, 0x1f, 0xe6, 0x48, 0x31, 0xc0, 0x01, 0x06, /* |.. x..N.0..H1...| */
|
||||
/* 000001a0 */ 0x08, 0x38, 0x00, 0x06, 0x02, 0x0b, 0x56, 0xf8, 0x08, 0xd3, 0xa8, 0x52, 0x43, 0xfa, 0xfe, 0x9c, /* |.8....V....RC...| */
|
||||
/* 000001b0 */ 0x76, 0x01, 0x61, 0x00, 0x01, 0x98, 0x0c, 0x44, 0x40, 0x00, 0x6e, 0x02, 0x70, 0xff, 0x3f, 0x00, /* |v.a....D@.n.p.?.| */
|
||||
/* 000001c0 */ 0x66, 0x04, 0x61, 0x00, 0x01, 0xf0, 0xa8, 0x53, 0x55, 0x4f, 0x42, 0xb8, 0x0a, 0xf2, 0xa9, 0x95, /* |f.a....SUOB.....| */
|
||||
/* 000001d0 */ 0x4a, 0x5f, 0x6b, 0x00, 0x01, 0x56, 0x3e, 0x1f, 0x20, 0x5f, 0xa0, 0x57, 0x21, 0xf8, 0x02, 0xa6, /* |J_k..V>. _.W!...| */
|
||||
/* 000001e0 */ 0x01, 0x18, 0x59, 0x4f, 0x2f, 0x3c, 0x44, 0x53, 0x41, 0x54, 0x42, 0x67, 0xa9, 0xa0, 0x2a, 0x1f, /* |..YO/<DSATBg..*.| */
|
||||
/* 000001f0 */ 0x67, 0x00, 0x01, 0x1e, 0x20, 0x45, 0x21, 0xd0, 0x02, 0xba, 0xa8, 0xfe, 0x70, 0x28, 0x61, 0x00, /* |g... E!.....p(a.| */
|
||||
/* 00000200 */ 0x01, 0x16, 0x20, 0x3c, 0x00, 0x00, 0x06, 0x00, 0x32, 0x3a, 0xfd, 0xfe, 0x67, 0x0a, 0x6a, 0x04, /* |.. <....2:..g.j.| */
|
||||
/* 00000210 */ 0x70, 0x01, 0xe2, 0x58, 0x91, 0xb8, 0x01, 0x0c, 0x04, 0xb8, 0x00, 0x00, 0x04, 0x00, 0x01, 0x0c, /* |p..X............| */
|
||||
/* 00000220 */ 0x43, 0xfa, 0xfe, 0x08, 0x61, 0x00, 0x01, 0x24, 0x66, 0x00, 0x00, 0xf4, 0x4e, 0x91, 0x70, 0xf6, /* |C...a..$f...N.p.| */
|
||||
/* 00000230 */ 0x61, 0x00, 0x00, 0xe4, 0x43, 0xfa, 0xfe, 0x04, 0x61, 0x00, 0x01, 0x10, 0x66, 0x08, 0x4e, 0x91, /* |a...C...a...f.N.| */
|
||||
/* 00000240 */ 0x70, 0xf5, 0x61, 0x00, 0x00, 0xd2, 0x43, 0xf8, 0x0a, 0xd8, 0x76, 0xff, 0x61, 0x00, 0x00, 0xfe, /* |p.a...C...v.a...| */
|
||||
/* 00000250 */ 0x66, 0x00, 0x00, 0x04, 0x4e, 0x91, 0x21, 0xf8, 0x02, 0xa6, 0x02, 0xb2, 0x70, 0x0c, 0xa7, 0x22, /* |f...N.!.....p.."| */
|
||||
/* 00000260 */ 0x21, 0xc8, 0x0a, 0xec, 0xa0, 0x2c, 0xa0, 0x4f, 0x2f, 0x05, 0xa9, 0xa3, 0x7c, 0x00, 0x59, 0x4f, /* |!....,.O/...|.YO| */
|
||||
/* 00000270 */ 0x2f, 0x3c, 0x49, 0x4e, 0x49, 0x54, 0x3f, 0x06, 0xa9, 0xa0, 0x2e, 0x17, 0x67, 0x00, 0x00, 0x64, /* |/<INIT?.....g..d| */
|
||||
/* 00000280 */ 0xa9, 0x92, 0x20, 0x47, 0x20, 0x50, 0x4e, 0x90, 0x20, 0x47, 0x20, 0x50, 0x30, 0x3c, 0x4e, 0x71, /* |.. G PN. G P0<Nq| */
|
||||
/* 00000290 */ 0x30, 0xc0, 0x30, 0xc0, 0x52, 0x46, 0x0c, 0x46, 0x00, 0x20, 0x6d, 0xd2, 0x70, 0x02, 0x48, 0x40, /* |0.0.RF.F. m.p.H@| */
|
||||
/* 000002a0 */ 0xa4, 0x4c, 0x43, 0xf8, 0x09, 0x70, 0x21, 0xc9, 0x09, 0x6c, 0x41, 0xfa, 0xfd, 0xbe, 0x70, 0x10, /* |.LC..p!..lA...p.| */
|
||||
/* 000002b0 */ 0xa0, 0x2e, 0x41, 0xfa, 0xfd, 0x66, 0x43, 0xf8, 0x02, 0xe0, 0x70, 0x10, 0xa0, 0x2e, 0x42, 0x78, /* |..A..fC...p...Bx| */
|
||||
/* 000002c0 */ 0x09, 0x00, 0x47, 0xfa, 0xfd, 0x96, 0x61, 0x6a, 0x67, 0x08, 0x47, 0xfa, 0xfd, 0x4e, 0x61, 0x62, /* |..G...ajg.G..Nab| */
|
||||
/* 000002d0 */ 0x66, 0x0a, 0x42, 0x67, 0x42, 0xa7, 0x2f, 0x0b, 0x20, 0x4f, 0xa9, 0xf2, 0x70, 0x29, 0xa9, 0xc9, /* |f.BgB./. O..p)..| */
|
||||
/* 000002e0 */ 0xa9, 0xff, 0x58, 0x4f, 0x60, 0xae, 0x61, 0x08, 0x20, 0x79, 0x00, 0x40, 0x00, 0x04, 0x4e, 0xd0, /* |..XO`.a. y.@..N.| */
|
||||
/* 000002f0 */ 0x9e, 0xfc, 0x00, 0x32, 0x20, 0x4f, 0x31, 0x7c, 0xff, 0xfb, 0x00, 0x18, 0x31, 0x7c, 0x00, 0x07, /* |...2 O1|....1|..| */
|
||||
/* 00000300 */ 0x00, 0x1a, 0x31, 0x78, 0x02, 0x10, 0x00, 0x16, 0xa0, 0x04, 0xde, 0xfc, 0x00, 0x32, 0x4e, 0x75, /* |..1x.........2Nu| */
|
||||
/* 00000310 */ 0x7e, 0x00, 0x60, 0x00, 0xfe, 0xe6, 0x4a, 0x47, 0x67, 0x02, 0xa9, 0xc9, 0x4e, 0x75, 0x06, 0xb8, /* |~.`...JGg...Nu..| */
|
||||
/* 00000320 */ 0x00, 0x00, 0x04, 0x00, 0x01, 0x0c, 0x60, 0x00, 0xff, 0x1e, 0x61, 0xc4, 0x70, 0x64, 0xa9, 0xc9, /* |......`...a.pd..| */
|
||||
/* 00000330 */ 0x60, 0xb4, 0x70, 0x13, 0x42, 0xa7, 0x51, 0xc8, 0xff, 0xfc, 0x2f, 0x4b, 0x00, 0x12, 0x20, 0x4f, /* |`.p.B.Q.../K.. O| */
|
||||
/* 00000340 */ 0xa0, 0x0c, 0xde, 0xfc, 0x00, 0x50, 0x4a, 0x40, 0x4e, 0x75, 0x76, 0x00, 0x9e, 0xfc, 0x00, 0x32, /* |.....PJ@Nuv....2| */
|
||||
/* 00000350 */ 0x20, 0x4f, 0x74, 0xff, 0x45, 0xe8, 0x00, 0x12, 0x24, 0xc9, 0x42, 0x9a, 0x42, 0x1a, 0x14, 0xfc, /* | Ot.E...$.B.B...| */
|
||||
/* 00000360 */ 0x00, 0x01, 0x24, 0xbc, 0x00, 0x01, 0x10, 0x00, 0xa0, 0x00, 0x66, 0x2c, 0xa0, 0x11, 0x66, 0x26, /* |..$.......f,..f&| */
|
||||
/* 00000370 */ 0x28, 0x1a, 0x7c, 0x02, 0xe1, 0x46, 0x98, 0x86, 0x4a, 0x43, 0x6b, 0x2e, 0x66, 0x22, 0x22, 0x78, /* |(.|..F..JCk.f""x| */
|
||||
/* 00000380 */ 0x01, 0x0c, 0x93, 0xc4, 0x24, 0xc9, 0x24, 0xc4, 0x58, 0x4a, 0x34, 0xfc, 0x00, 0x01, 0x24, 0x86, /* |....$.$.XJ4...$.| */
|
||||
/* 00000390 */ 0xa0, 0x02, 0x66, 0x02, 0x74, 0x00, 0xa0, 0x01, 0x30, 0x02, 0xde, 0xfc, 0x00, 0x32, 0x4e, 0x75, /* |..f.t...0....2Nu| */
|
||||
/* 000003a0 */ 0x32, 0x7c, 0x60, 0x00, 0xd8, 0x86, 0x7c, 0x00, 0x60, 0xda, 0x20, 0x04, 0xa1, 0x1e, 0x22, 0x48, /* |2|`...|.`. ..."H| */
|
||||
/* 000003b0 */ 0x20, 0x4f, 0x60, 0xd0, 0x2f, 0x3c, 0x01, 0x56, 0x02, 0x00, 0x42, 0xa7, 0x2f, 0x3c, 0x60, 0x00, /* | O`./<.V..B./<`.| */
|
||||
/* 000003c0 */ 0x00, 0x40, 0x42, 0x67, 0x4b, 0xf9, 0x00, 0x00, 0xfd, 0x90, 0x45, 0xed, 0x00, 0x72, 0x2f, 0x0f, /* |.@BgK.....E..r/.| */
|
||||
/* 000003d0 */ 0x48, 0x52, 0x48, 0x6f, 0x00, 0x0e, 0x48, 0x6a, 0x00, 0x06, 0x42, 0x67, 0x42, 0xa7, 0xa8, 0xec, /* |HRHo..Hj..BgB...| */
|
||||
/* 000003e0 */ 0xde, 0xfc, 0x00, 0x0e, 0x4e, 0x75, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, /* |....Nu..........| */
|
||||
/* 000003f0 */ 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda /* |................| */
|
||||
/* 00000400 */
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user