mirror of
https://github.com/whscullin/apple1js.git
synced 2024-12-26 13:31:40 +00:00
commit
6e49066162
@ -10,6 +10,10 @@ trim_trailing_whitespace = true
|
||||
[*.js]
|
||||
indent_size = 4
|
||||
|
||||
[*.ts]
|
||||
indent_size = 2
|
||||
quote_type = single
|
||||
|
||||
[*.html]
|
||||
indent_size = 2
|
||||
|
||||
|
208
.eslintrc.json
208
.eslintrc.json
@ -1,20 +1,53 @@
|
||||
{
|
||||
// Global
|
||||
"root": true,
|
||||
"plugins": [
|
||||
"prettier"
|
||||
],
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"extends": [
|
||||
"eslint:recommended",
|
||||
"plugin:prettier/recommended",
|
||||
"plugin:jest/recommended"
|
||||
],
|
||||
"globals": {
|
||||
"tapes": "writable"
|
||||
},
|
||||
"rules": {
|
||||
"indent": [
|
||||
2,
|
||||
4
|
||||
],
|
||||
"quotes": [
|
||||
2,
|
||||
"single"
|
||||
],
|
||||
"linebreak-style": [
|
||||
2,
|
||||
"error",
|
||||
"unix"
|
||||
],
|
||||
"semi": [
|
||||
2,
|
||||
"always"
|
||||
"eqeqeq": [
|
||||
"error",
|
||||
"smart"
|
||||
],
|
||||
"prefer-const": [
|
||||
"error"
|
||||
],
|
||||
"no-var": "error",
|
||||
"no-use-before-define": "off",
|
||||
"no-console": [
|
||||
"error",
|
||||
{
|
||||
"allow": [
|
||||
"info",
|
||||
"warn",
|
||||
"error"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prettier/prettier": "error",
|
||||
// Jest configuration
|
||||
"jest/expect-expect": [
|
||||
"error",
|
||||
{
|
||||
"assertFunctionNames": [
|
||||
"expect*",
|
||||
"checkImageData",
|
||||
"testCode"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"env": {
|
||||
@ -22,16 +55,109 @@
|
||||
"browser": true,
|
||||
"es6": true
|
||||
},
|
||||
"globals": {
|
||||
"tapes": true
|
||||
"overrides": [
|
||||
// All overrides matching a file are applied in-order, with the last
|
||||
// taking precedence.
|
||||
//
|
||||
// TypeScript/TSX-specific configuration
|
||||
{
|
||||
"files": [
|
||||
"*.ts",
|
||||
"*.tsx"
|
||||
],
|
||||
"plugins": [
|
||||
"@typescript-eslint/eslint-plugin"
|
||||
],
|
||||
"extends": [
|
||||
"plugin:@typescript-eslint/recommended",
|
||||
"plugin:@typescript-eslint/recommended-requiring-type-checking"
|
||||
],
|
||||
"rules": {
|
||||
"indent": [
|
||||
"error",
|
||||
2,
|
||||
{
|
||||
"SwitchCase": 1
|
||||
}
|
||||
],
|
||||
// recommended is just "warn"
|
||||
"@typescript-eslint/no-explicit-any": "error",
|
||||
// enforce semicolons at ends of statements
|
||||
"semi": "off",
|
||||
"@typescript-eslint/semi": [
|
||||
"error",
|
||||
"always"
|
||||
],
|
||||
// enforce semicolons to separate members
|
||||
"@typescript-eslint/member-delimiter-style": [
|
||||
"error",
|
||||
{
|
||||
"multiline": {
|
||||
"delimiter": "semi",
|
||||
"requireLast": true
|
||||
},
|
||||
"singleline": {
|
||||
"delimiter": "semi",
|
||||
"requireLast": false
|
||||
}
|
||||
}
|
||||
],
|
||||
// definitions must come before uses for variables
|
||||
"@typescript-eslint/no-use-before-define": [
|
||||
"error",
|
||||
{
|
||||
"functions": false,
|
||||
"classes": false
|
||||
}
|
||||
],
|
||||
// no used variables
|
||||
"no-unused-vars": "off",
|
||||
"@typescript-eslint/no-unused-vars": [
|
||||
"error",
|
||||
{
|
||||
"argsIgnorePattern": "^_"
|
||||
}
|
||||
],
|
||||
// no redeclaration of classes, members or variables
|
||||
"no-redeclare": "off",
|
||||
"@typescript-eslint/no-redeclare": [
|
||||
"error"
|
||||
],
|
||||
// allow empty interface definitions and empty extends
|
||||
"@typescript-eslint/no-empty-interface": "off",
|
||||
// allow explicit type declaration
|
||||
"@typescript-eslint/no-inferrable-types": "off",
|
||||
// allow some non-string types in templates
|
||||
"@typescript-eslint/restrict-template-expressions": [
|
||||
"error",
|
||||
{
|
||||
"allowNumber": true,
|
||||
"allowBoolean": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"parserOptions": {
|
||||
"sourceType": "module"
|
||||
"sourceType": "module",
|
||||
"project": "./tsconfig.json"
|
||||
}
|
||||
},
|
||||
"extends": "eslint:recommended",
|
||||
"overrides": [
|
||||
// UI elements
|
||||
{
|
||||
"files": [ "bin/*", "babel.config.js", "webpack.config.js" ],
|
||||
"files": [
|
||||
"js/ui/**.ts"
|
||||
],
|
||||
"rules": {
|
||||
// allow non-null assertions since these classes reference the DOM
|
||||
"@typescript-eslint/no-non-null-assertion": "off"
|
||||
}
|
||||
},
|
||||
// JS Node configuration
|
||||
{
|
||||
"files": [
|
||||
"bin/*",
|
||||
"babel.config.js",
|
||||
"webpack.config.js"
|
||||
],
|
||||
"rules": {
|
||||
"no-console": 0
|
||||
},
|
||||
@ -40,17 +166,49 @@
|
||||
"jquery": false,
|
||||
"browser": false
|
||||
}
|
||||
}, {
|
||||
"files": [ "test/*"],
|
||||
},
|
||||
// Test configuration
|
||||
{
|
||||
"files": [
|
||||
"test/**/*"
|
||||
],
|
||||
"env": {
|
||||
"node": true,
|
||||
"jest": true
|
||||
"jest": true,
|
||||
"jasmine": true,
|
||||
"node": true
|
||||
},
|
||||
"rules": {
|
||||
"no-console": 0
|
||||
}
|
||||
}, {
|
||||
"files": [ "js/entry1.js"],
|
||||
},
|
||||
// Entry point configuration
|
||||
{
|
||||
"files": [
|
||||
"js/entry2.ts",
|
||||
"js/entry2e.ts",
|
||||
"jest.config.js"
|
||||
],
|
||||
"env": {
|
||||
"commonjs": true
|
||||
}
|
||||
},
|
||||
// Worker configuration
|
||||
{
|
||||
"files": [
|
||||
"workers/*"
|
||||
],
|
||||
"parserOptions": {
|
||||
"project": "workers/tsconfig.json"
|
||||
}
|
||||
}
|
||||
],
|
||||
"ignorePatterns": [
|
||||
"coverage/**/*"
|
||||
],
|
||||
"settings": {
|
||||
"react": {
|
||||
"pragma": "h",
|
||||
"version": "16"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
3
.github/workflows/nodejs.yml
vendored
3
.github/workflows/nodejs.yml
vendored
@ -4,12 +4,11 @@ on: [push]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [12.x]
|
||||
node-version: [16.x, 18.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,4 +1,5 @@
|
||||
.*~
|
||||
.vscode
|
||||
.DS_Store
|
||||
/dist
|
||||
/node_modules
|
||||
|
@ -10,4 +10,15 @@ module.exports = {
|
||||
},
|
||||
],
|
||||
],
|
||||
rules: [
|
||||
{
|
||||
test: /\.ts?$/i,
|
||||
use: [
|
||||
{
|
||||
loader: 'ts-loader'
|
||||
},
|
||||
],
|
||||
exclude: /node_modules/,
|
||||
}
|
||||
]
|
||||
};
|
||||
|
29
jest.config.js
Normal file
29
jest.config.js
Normal file
@ -0,0 +1,29 @@
|
||||
module.exports = {
|
||||
'moduleNameMapper': {
|
||||
'^js/(.*)': '<rootDir>/js/$1',
|
||||
'^test/(.*)': '<rootDir>/test/$1',
|
||||
'\\.css$': 'identity-obj-proxy',
|
||||
'\\.scss$': 'identity-obj-proxy',
|
||||
},
|
||||
'roots': [
|
||||
'js/',
|
||||
'test/',
|
||||
],
|
||||
'testMatch': [
|
||||
'**/?(*.)+(spec|test).+(ts|js|tsx)'
|
||||
],
|
||||
'transform': {
|
||||
'^.+\\.js$': 'babel-jest',
|
||||
'^.+\\.ts$': 'ts-jest',
|
||||
'^.*\\.tsx$': 'ts-jest',
|
||||
},
|
||||
'transformIgnorePatterns': [
|
||||
'/node_modules/(?!(@testing-library/preact/dist/esm)/)',
|
||||
],
|
||||
'coveragePathIgnorePatterns': [
|
||||
'/node_modules/',
|
||||
'/js/roms/',
|
||||
'/test/',
|
||||
],
|
||||
'preset': 'ts-jest',
|
||||
};
|
498
js/apple1.js
498
js/apple1.js
@ -1,498 +0,0 @@
|
||||
import MicroModal from 'micromodal';
|
||||
|
||||
import Apple1IO from './apple1io';
|
||||
import CPU6502 from './cpu6502';
|
||||
import Prefs from './prefs';
|
||||
import RAM from './ram';
|
||||
import { TextPage } from './canvas1';
|
||||
import { debug, hup } from './util';
|
||||
|
||||
import Basic from './roms/basic';
|
||||
import Bios from './roms/bios';
|
||||
import Krusader from './roms/krusader';
|
||||
|
||||
import ACI from './cards/aci';
|
||||
|
||||
import { mapKeyEvent, KeyBoard } from './ui/keyboard';
|
||||
|
||||
var DEBUG=false;
|
||||
var TRACE=true;
|
||||
var skidmarks = [];
|
||||
|
||||
var focused = false;
|
||||
var startTime = Date.now();
|
||||
var lastCycles = 0;
|
||||
var renderedFrames = 0, lastFrames = 0;
|
||||
var paused = false;
|
||||
|
||||
var hashtag;
|
||||
var prefs = new Prefs();
|
||||
var runTimer = null;
|
||||
var cpu = new CPU6502();
|
||||
|
||||
var krusader = window.location.hash == '#krusader';
|
||||
|
||||
var raml, ramh, rom, aci, io, text, keyboard;
|
||||
|
||||
// 32K base memory. Should be 0x0f for 4K, 0x1f for 8K, 0x3f for 16K
|
||||
raml = new RAM(0x00, 0x7f);
|
||||
text = new TextPage();
|
||||
text.init();
|
||||
|
||||
aci = new ACI(cpu, { progress: function(val) {
|
||||
document.querySelector('#tape').style.width = val * 100 + 'px';
|
||||
}});
|
||||
io = new Apple1IO(text);
|
||||
|
||||
if (krusader) {
|
||||
ramh = null;
|
||||
rom = new Krusader();
|
||||
} else {
|
||||
// ramh = new RAM(0xe0, 0xef); // 4K ACI memory.
|
||||
ramh = new Basic();
|
||||
rom = new Bios();
|
||||
}
|
||||
keyboard = new KeyBoard('#keyboard', cpu, io, text);
|
||||
|
||||
cpu.addPageHandler(raml);
|
||||
if (ramh) {
|
||||
cpu.addPageHandler(ramh);
|
||||
}
|
||||
cpu.addPageHandler(rom);
|
||||
|
||||
cpu.addPageHandler(aci);
|
||||
cpu.addPageHandler(io);
|
||||
|
||||
var showFPS = false;
|
||||
|
||||
//aci.setData([0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88])
|
||||
//aci.setData([0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07])
|
||||
//aci.setData([0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef])
|
||||
|
||||
//aci.setData(tapes['BASIC']);
|
||||
aci.setData(window.tapes['Microchess'].tracks);
|
||||
|
||||
// Audio Buffer Source
|
||||
var context;
|
||||
if (typeof window.webkitAudioContext !== 'undefined') {
|
||||
context = new window.webkitAudioContext();
|
||||
} else if (typeof window.AudioContext !== 'undefined') {
|
||||
context = new window.AudioContext();
|
||||
}
|
||||
|
||||
export function doLoadLocal(files) {
|
||||
context.resume();
|
||||
files = files || document.querySelector('#local_file').files;
|
||||
if (files.length == 1) {
|
||||
var file = files[0];
|
||||
var fileReader = new FileReader();
|
||||
fileReader.onload = function(ev) {
|
||||
context.decodeAudioData(
|
||||
ev.target.result,
|
||||
function(buffer) {
|
||||
var buf = [];
|
||||
var data = buffer.getChannelData(0);
|
||||
var old = (data[0] > 0.25);
|
||||
var last = 0;
|
||||
for (var idx = 1; idx < data.length; idx++) {
|
||||
var current = (data[idx] > 0.25);
|
||||
if (current != old) {
|
||||
var delta = idx - last;
|
||||
buf.push(parseInt(delta / buffer.sampleRate * 1023000));
|
||||
old = current;
|
||||
last = idx;
|
||||
}
|
||||
}
|
||||
aci.buffer = buf;
|
||||
MicroModal.close('local-modal');
|
||||
},
|
||||
function() {
|
||||
window.alert('Unable to read tape file: ' + file.name);
|
||||
}
|
||||
);
|
||||
};
|
||||
fileReader.readAsArrayBuffer(file);
|
||||
}
|
||||
}
|
||||
|
||||
function updateKHz() {
|
||||
var now = Date.now();
|
||||
var ms = now - startTime;
|
||||
var cycles = cpu.cycles();
|
||||
var delta;
|
||||
|
||||
if (showFPS) {
|
||||
delta = renderedFrames - lastFrames;
|
||||
var fps = parseInt(delta/(ms/1000));
|
||||
document.querySelector('#khz').innerHTML = fps + 'fps';
|
||||
} else {
|
||||
delta = cycles - lastCycles;
|
||||
var khz = parseInt(delta/ms);
|
||||
document.querySelector('#khz').innerHTML = khz + 'KHz';
|
||||
}
|
||||
|
||||
startTime = now;
|
||||
lastCycles = cycles;
|
||||
lastFrames = renderedFrames;
|
||||
}
|
||||
|
||||
var loading = false;
|
||||
var throttling = true;
|
||||
var turbotape = false;
|
||||
|
||||
export function toggleFPS() {
|
||||
showFPS = !showFPS;
|
||||
}
|
||||
|
||||
export function toggleSpeed()
|
||||
{
|
||||
throttling = document.querySelector('#speed_toggle').checked;
|
||||
if (runTimer) {
|
||||
run();
|
||||
}
|
||||
}
|
||||
|
||||
export function setKeyBuffer(text) {
|
||||
io.paste(text);
|
||||
}
|
||||
|
||||
export function setTurboTape(val) {
|
||||
turbotape = val;
|
||||
}
|
||||
|
||||
var _requestAnimationFrame =
|
||||
window.requestAnimationFrame ||
|
||||
window.mozRequestAnimationFrame ||
|
||||
window.webkitRequestAnimationFrame ||
|
||||
window.msRequestAnimationFrame;
|
||||
|
||||
function run(pc) {
|
||||
if (runTimer) {
|
||||
clearInterval(runTimer);
|
||||
}
|
||||
|
||||
if (pc) {
|
||||
cpu.setPC(pc);
|
||||
}
|
||||
|
||||
var ival = 30, step = 1023 * ival, stepMax = step;
|
||||
|
||||
if (!throttling) {
|
||||
ival = 1;
|
||||
}
|
||||
|
||||
var now, last = Date.now();
|
||||
var runFn = function() {
|
||||
now = Date.now();
|
||||
renderedFrames++;
|
||||
if (_requestAnimationFrame) {
|
||||
step = (now - last) * 1023;
|
||||
last = now;
|
||||
if (step > stepMax) {
|
||||
step = stepMax;
|
||||
}
|
||||
}
|
||||
if (document.location.hash != hashtag) {
|
||||
hashtag = document.location.hash;
|
||||
}
|
||||
if (!loading) {
|
||||
if (DEBUG) {
|
||||
cpu.stepCyclesDebug(TRACE ? 1 : step, function() {
|
||||
var line = cpu.dumpRegisters() + ' ' + cpu.dumpPC();
|
||||
if (TRACE) {
|
||||
debug(line);
|
||||
} else {
|
||||
skidmarks.push();
|
||||
if (skidmarks.length > 256) {
|
||||
skidmarks.shift();
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
cpu.stepCycles(step);
|
||||
}
|
||||
text.blit();
|
||||
}
|
||||
if (!paused && _requestAnimationFrame) {
|
||||
_requestAnimationFrame(runFn);
|
||||
}
|
||||
};
|
||||
if (_requestAnimationFrame) {
|
||||
_requestAnimationFrame(runFn);
|
||||
} else {
|
||||
runTimer = setInterval(runFn, ival);
|
||||
}
|
||||
}
|
||||
|
||||
function stop() {
|
||||
if (runTimer) {
|
||||
clearInterval(runTimer);
|
||||
}
|
||||
runTimer = null;
|
||||
}
|
||||
|
||||
function reset()
|
||||
{
|
||||
cpu.reset();
|
||||
}
|
||||
|
||||
export function loadBinary(bin) {
|
||||
stop();
|
||||
for (var idx = 0; idx < bin.length; idx++) {
|
||||
var pos = bin.start + idx;
|
||||
cpu.write(pos >> 8, pos & 0xff, bin.data[idx]);
|
||||
}
|
||||
run(bin.start);
|
||||
}
|
||||
|
||||
var _key;
|
||||
function _keydown(evt) {
|
||||
if (evt.keyCode === 112) {
|
||||
cpu.reset();
|
||||
} else if (evt.keyCode === 113) {
|
||||
if (document.webkitIsFullScreen) {
|
||||
document.webkitCancelFullScreen();
|
||||
} else {
|
||||
var elem = document.getElementById('display');
|
||||
elem.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
|
||||
}
|
||||
} else if (evt.key === 'Shift') {
|
||||
keyboard.shiftKey(true);
|
||||
} else if (evt.key == 'Control') {
|
||||
keyboard.controlKey(true);
|
||||
} else if (!focused && (!evt.metaKey || evt.ctrlKey)) {
|
||||
evt.preventDefault();
|
||||
|
||||
var key = mapKeyEvent(evt);
|
||||
if (key != 0xff) {
|
||||
if (_key != 0xff) io.keyUp();
|
||||
io.keyDown(key);
|
||||
_key = key;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _keyup(evt) {
|
||||
_key = 0xff;
|
||||
|
||||
if (evt.key === 'Shift') {
|
||||
keyboard.shiftKey(false);
|
||||
} else if (evt.key === 'Control') {
|
||||
keyboard.controlKey(false);
|
||||
} else {
|
||||
if (!focused) {
|
||||
io.keyUp();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var _updateScreenTimer = null;
|
||||
|
||||
export function updateScreen() {
|
||||
var green = document.querySelector('#green_screen').checked;
|
||||
var scanlines = document.querySelector('#show_scanlines').checked;
|
||||
|
||||
text.green(green);
|
||||
text.scanlines(scanlines);
|
||||
|
||||
if (!_updateScreenTimer)
|
||||
_updateScreenTimer =
|
||||
setInterval(function() {
|
||||
text.refresh();
|
||||
clearInterval(_updateScreenTimer);
|
||||
_updateScreenTimer = null;
|
||||
}, 100);
|
||||
}
|
||||
|
||||
paused = false;
|
||||
export function pauseRun(b) {
|
||||
if (paused) {
|
||||
run();
|
||||
b.value = 'Pause';
|
||||
} else {
|
||||
stop();
|
||||
b.value = 'Run';
|
||||
}
|
||||
paused = !paused;
|
||||
}
|
||||
|
||||
export function openOptions() {
|
||||
MicroModal.show('options-modal');
|
||||
}
|
||||
|
||||
export function openLoadText(event) {
|
||||
if (event && event.altKey) {
|
||||
MicroModal.show('local-modal');
|
||||
} else {
|
||||
MicroModal.show('input-modal');
|
||||
}
|
||||
}
|
||||
|
||||
export function doLoadText() {
|
||||
var text = document.querySelector('#text_input').value;
|
||||
if (!text.indexOf('//Binary')) {
|
||||
var lines = text.split('\n');
|
||||
lines.forEach(function(line) {
|
||||
var parts = line.split(': ');
|
||||
if (parts.length == 2) {
|
||||
var addr;
|
||||
if (parts[0].length > 0) {
|
||||
addr = parseInt(parts[0], 16);
|
||||
}
|
||||
var data = parts[1].split(' ');
|
||||
for (var idx = 0; idx < data.length; idx++) {
|
||||
cpu.write(addr >> 8, addr & 0xff, parseInt(data[idx], 16));
|
||||
addr++;
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
io.paste(text);
|
||||
}
|
||||
MicroModal.close('input-modal');
|
||||
}
|
||||
|
||||
export function handleDragOver(event) {
|
||||
event.preventDefault();
|
||||
event.dataTransfer.dropEffect = 'copy';
|
||||
}
|
||||
|
||||
export function handleDrop(event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
||||
var dt = event.dataTransfer;
|
||||
if (dt.files.length > 0) {
|
||||
doLoadLocal(dt.files);
|
||||
}
|
||||
}
|
||||
|
||||
export function handleDragEnd(event) {
|
||||
var dt = event.dataTransfer;
|
||||
if (dt.items) {
|
||||
for (var i = 0; i < dt.items.length; i++) {
|
||||
dt.items.remove(i);
|
||||
}
|
||||
} else {
|
||||
event.dataTransfer.clearData();
|
||||
}
|
||||
}
|
||||
|
||||
MicroModal.init();
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
hashtag = document.location.hash;
|
||||
|
||||
/*
|
||||
* Input Handling
|
||||
*/
|
||||
|
||||
var canvas = document.getElementById('text');
|
||||
var context = canvas.getContext('2d');
|
||||
|
||||
text.setContext(context);
|
||||
|
||||
window.addEventListener('keydown', _keydown);
|
||||
window.addEventListener('keyup', _keyup);
|
||||
|
||||
window.addEventListener('paste', (event) => {
|
||||
var paste = (event.clipboardData || window.clipboardData).getData('text');
|
||||
setKeyBuffer(paste);
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
window.addEventListener('copy', (event) => {
|
||||
event.clipboardData.setData('text/plain', text.getText());
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
document.querySelector('.overscan').addEventListener('paste', function(event) {
|
||||
io.paste(event.originalEvent.clipboardData().getData('text/plain'));
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
document.querySelectorAll('input,textarea').forEach(function(el) {
|
||||
el.addEventListener('focus', function() { focused = true; });
|
||||
});
|
||||
document.querySelectorAll('input,textarea').forEach(function(el) {
|
||||
el.addEventListener('blur', function() { focused = false; });
|
||||
});
|
||||
keyboard.create();
|
||||
|
||||
if (prefs.havePrefs()) {
|
||||
document.querySelectorAll('input[type=checkbox]').forEach(function(el) {
|
||||
var val = prefs.readPref(el.id);
|
||||
if (val != null)
|
||||
el.checked = JSON.parse(val);
|
||||
});
|
||||
document.querySelectorAll('input[type=checkbox]').forEach(function(el) {
|
||||
el.addEventListener('change', function() {
|
||||
prefs.writePref(el.id, JSON.stringify(el.checked));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
turbotape = document.querySelector('#turbo_tape').checked;
|
||||
|
||||
Object.keys(window.tapes).sort().forEach(function(key) {
|
||||
var option = document.createElement('option');
|
||||
option.value = key;
|
||||
option.text = key;
|
||||
document.querySelector('#tape_select').append(option);
|
||||
});
|
||||
|
||||
function doTapeSelect() {
|
||||
var tapeId = document.querySelector('#tape_select').value;
|
||||
var tape = window.tapes[tapeId];
|
||||
if (!tape) {
|
||||
document.querySelector('#text_input').value = '';
|
||||
return;
|
||||
}
|
||||
debug('Loading', tapeId);
|
||||
|
||||
window.location.hash = tapeId;
|
||||
reset();
|
||||
if (turbotape) {
|
||||
var trackIdx = 0, script = '';
|
||||
var parts = tape.script.split('\n');
|
||||
// Ignore part 0 (C100R)
|
||||
// Split part 1 into ranges
|
||||
var ranges = parts[1].split(' ');
|
||||
var idx;
|
||||
for (idx = 0; idx < ranges.length; idx++) {
|
||||
var range = ranges[idx].split('.');
|
||||
var start = parseInt(range[0], 16);
|
||||
var end = parseInt(range[1], 16);
|
||||
var track = tape.tracks[trackIdx];
|
||||
var kdx = 0;
|
||||
for (var jdx = start; jdx <= end; jdx++) {
|
||||
cpu.write(jdx >> 8, jdx & 0xff, track[kdx++]);
|
||||
}
|
||||
trackIdx++;
|
||||
}
|
||||
// Execute parts 2-n
|
||||
for (idx = 2; idx < parts.length; idx++) {
|
||||
if (parts[idx]) {
|
||||
script += parts[idx] + '\n';
|
||||
}
|
||||
}
|
||||
document.querySelector('#text_input').value = script;
|
||||
} else {
|
||||
aci.setData(tape.tracks);
|
||||
document.querySelector('#text_input').value = tape.script;
|
||||
}
|
||||
doLoadText();
|
||||
}
|
||||
document.querySelector('#tape_select').addEventListener('change', doTapeSelect);
|
||||
|
||||
run();
|
||||
setInterval(updateKHz, 1000);
|
||||
updateScreen();
|
||||
|
||||
var tape = hup();
|
||||
if (tape) {
|
||||
openLoadText();
|
||||
document.querySelector('#tape_select').value = tape;
|
||||
doTapeSelect();
|
||||
}
|
||||
});
|
536
js/apple1.ts
Normal file
536
js/apple1.ts
Normal file
@ -0,0 +1,536 @@
|
||||
/* Copyright 2010-2023 Will Scullin <scullin@scullinsteel.com>
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation. No representations are made about the suitability of this
|
||||
* software for any purpose. It is provided 'as is' without express or
|
||||
* implied warranty.
|
||||
*/
|
||||
|
||||
import MicroModal from 'micromodal';
|
||||
|
||||
import Apple1IO from './apple1io';
|
||||
import CPU6502 from './cpu6502';
|
||||
import Prefs from './prefs';
|
||||
import RAM from './ram';
|
||||
import { TextPage } from './canvas1';
|
||||
import { debug, hup } from './util';
|
||||
|
||||
import Basic from './roms/basic';
|
||||
import Bios from './roms/bios';
|
||||
import Krusader from './roms/krusader';
|
||||
|
||||
import ACI from './cards/aci';
|
||||
|
||||
import { mapKeyEvent, KeyBoard } from './ui/keyboard';
|
||||
import { address, byte } from './types';
|
||||
|
||||
// eslint-disable-next-line prefer-const
|
||||
let DEBUG = false;
|
||||
// eslint-disable-next-line prefer-const
|
||||
let TRACE = true;
|
||||
const skidmarks: string[] = [];
|
||||
|
||||
let focused = false;
|
||||
let startTime = Date.now();
|
||||
let lastCycles = 0;
|
||||
let renderedFrames = 0,
|
||||
lastFrames = 0;
|
||||
let paused = false;
|
||||
|
||||
let hashtag: string | undefined;
|
||||
const prefs = new Prefs();
|
||||
let runTimer: ReturnType<typeof setInterval> | null = null;
|
||||
const cpu = new CPU6502();
|
||||
|
||||
const krusader = window.location.hash === '#krusader';
|
||||
|
||||
let ramh, rom;
|
||||
|
||||
// 32K base memory. Should be 0x0f for 4K, 0x1f for 8K, 0x3f for 16K
|
||||
const raml = new RAM(0x00, 0x7f);
|
||||
const text = new TextPage();
|
||||
text.init();
|
||||
|
||||
const aci = new ACI(cpu, {
|
||||
progress: function (val) {
|
||||
document.querySelector<HTMLElement>('#tape')!.style.width =
|
||||
val * 100 + 'px';
|
||||
},
|
||||
});
|
||||
const io = new Apple1IO(text);
|
||||
|
||||
if (krusader) {
|
||||
ramh = null;
|
||||
rom = new Krusader();
|
||||
} else {
|
||||
// ramh = new RAM(0xe0, 0xef); // 4K ACI memory.
|
||||
ramh = new Basic();
|
||||
rom = new Bios();
|
||||
}
|
||||
const keyboard = new KeyBoard('#keyboard', cpu, io, text);
|
||||
|
||||
cpu.addPageHandler(raml);
|
||||
if (ramh) {
|
||||
cpu.addPageHandler(ramh);
|
||||
}
|
||||
cpu.addPageHandler(rom);
|
||||
|
||||
cpu.addPageHandler(aci);
|
||||
cpu.addPageHandler(io);
|
||||
|
||||
let showFPS = false;
|
||||
|
||||
interface Tape {
|
||||
script: string;
|
||||
tracks: number[][];
|
||||
}
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
tapes: Record<string, Tape>;
|
||||
}
|
||||
}
|
||||
|
||||
//aci.setData([0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88])
|
||||
//aci.setData([0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07])
|
||||
//aci.setData([0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef])
|
||||
|
||||
//aci.setData(tapes['BASIC']);
|
||||
aci.setData(window.tapes['Microchess'].tracks);
|
||||
|
||||
// Audio Buffer Source
|
||||
declare global {
|
||||
interface Window {
|
||||
webkitAudioContext: AudioContext;
|
||||
}
|
||||
}
|
||||
|
||||
const AudioContext = window.AudioContext || window.webkitAudioContext;
|
||||
const context = new AudioContext();
|
||||
|
||||
export function doLoadLocal(files: FileList) {
|
||||
context
|
||||
.resume()
|
||||
.then(() => {
|
||||
files =
|
||||
files || document.querySelector<HTMLInputElement>('#local_file')!.files;
|
||||
if (files.length === 1) {
|
||||
const file = files[0];
|
||||
const fileReader = new FileReader();
|
||||
fileReader.onload = function (ev) {
|
||||
context
|
||||
.decodeAudioData(
|
||||
ev.target!.result as ArrayBuffer,
|
||||
function (buffer) {
|
||||
const buf = [];
|
||||
const data = buffer.getChannelData(0);
|
||||
let old = data[0] > 0.25;
|
||||
let last = 0;
|
||||
for (let idx = 1; idx < data.length; idx++) {
|
||||
const current = data[idx] > 0.25;
|
||||
if (current !== old) {
|
||||
const delta = idx - last;
|
||||
buf.push(Math.floor((delta / buffer.sampleRate) * 1023000));
|
||||
old = current;
|
||||
last = idx;
|
||||
}
|
||||
}
|
||||
aci.buffer = buf;
|
||||
MicroModal.close('local-modal');
|
||||
},
|
||||
function () {
|
||||
window.alert('Unable to read tape file: ' + file.name);
|
||||
},
|
||||
)
|
||||
.catch(console.error);
|
||||
};
|
||||
fileReader.readAsArrayBuffer(file);
|
||||
}
|
||||
})
|
||||
.catch(console.error);
|
||||
}
|
||||
|
||||
function updateKHz() {
|
||||
const now = Date.now();
|
||||
const ms = now - startTime;
|
||||
const cycles = cpu.getCycles();
|
||||
let delta: number;
|
||||
|
||||
if (showFPS) {
|
||||
delta = renderedFrames - lastFrames;
|
||||
const fps = Math.floor(delta / (ms / 1000));
|
||||
document.querySelector('#khz')!.innerHTML = fps + 'fps';
|
||||
} else {
|
||||
delta = cycles - lastCycles;
|
||||
const khz = Math.floor(delta / ms);
|
||||
document.querySelector('#khz')!.innerHTML = khz + 'KHz';
|
||||
}
|
||||
|
||||
startTime = now;
|
||||
lastCycles = cycles;
|
||||
lastFrames = renderedFrames;
|
||||
}
|
||||
|
||||
let throttling = true;
|
||||
let turbotape = false;
|
||||
|
||||
export function toggleFPS() {
|
||||
showFPS = !showFPS;
|
||||
}
|
||||
|
||||
export function toggleSpeed() {
|
||||
throttling =
|
||||
document.querySelector<HTMLInputElement>('#speed_toggle')!.checked;
|
||||
if (runTimer) {
|
||||
run();
|
||||
}
|
||||
}
|
||||
|
||||
export function setKeyBuffer(text: string) {
|
||||
io.paste(text);
|
||||
}
|
||||
|
||||
export function setTurboTape(val: boolean) {
|
||||
turbotape = val;
|
||||
}
|
||||
|
||||
function run(pc?: address) {
|
||||
if (runTimer) {
|
||||
clearInterval(runTimer);
|
||||
}
|
||||
|
||||
if (pc) {
|
||||
cpu.setPC(pc);
|
||||
}
|
||||
|
||||
let ival = 30;
|
||||
let step = 1023 * ival;
|
||||
const stepMax = step;
|
||||
|
||||
if (!throttling) {
|
||||
ival = 1;
|
||||
}
|
||||
|
||||
let now;
|
||||
let last = Date.now();
|
||||
const runFn = function () {
|
||||
now = Date.now();
|
||||
renderedFrames++;
|
||||
step = (now - last) * 1023;
|
||||
last = now;
|
||||
if (step > stepMax) {
|
||||
step = stepMax;
|
||||
}
|
||||
if (document.location.hash !== hashtag) {
|
||||
hashtag = document.location.hash;
|
||||
}
|
||||
if (DEBUG) {
|
||||
cpu.stepCyclesDebug(TRACE ? 1 : step, function () {
|
||||
const line = JSON.stringify(cpu.getState());
|
||||
if (TRACE) {
|
||||
debug(line);
|
||||
} else {
|
||||
skidmarks.push(line);
|
||||
if (skidmarks.length > 256) {
|
||||
skidmarks.shift();
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
cpu.stepCycles(step);
|
||||
}
|
||||
text.blit();
|
||||
if (!paused) {
|
||||
requestAnimationFrame(runFn);
|
||||
}
|
||||
};
|
||||
requestAnimationFrame(runFn);
|
||||
}
|
||||
|
||||
function stop() {
|
||||
if (runTimer) {
|
||||
clearInterval(runTimer);
|
||||
}
|
||||
runTimer = null;
|
||||
}
|
||||
|
||||
function reset() {
|
||||
cpu.reset();
|
||||
}
|
||||
|
||||
declare global {
|
||||
interface Document {
|
||||
webkitCancelFullScreen: () => void;
|
||||
webkitIsFullScreen: boolean;
|
||||
}
|
||||
interface Element {
|
||||
webkitRequestFullScreen: (options?: unknown) => void;
|
||||
}
|
||||
}
|
||||
|
||||
let _key: byte;
|
||||
function _keydown(evt: KeyboardEvent) {
|
||||
if (evt.keyCode === 112) {
|
||||
cpu.reset();
|
||||
} else if (evt.keyCode === 113) {
|
||||
if (document.webkitIsFullScreen) {
|
||||
document.webkitCancelFullScreen();
|
||||
} else {
|
||||
const elem = document.getElementById('display');
|
||||
elem!.webkitRequestFullScreen();
|
||||
}
|
||||
} else if (evt.key === 'Shift') {
|
||||
keyboard.shiftKey(true);
|
||||
} else if (evt.key === 'Control') {
|
||||
keyboard.controlKey(true);
|
||||
} else if (!focused && (!evt.metaKey || evt.ctrlKey)) {
|
||||
evt.preventDefault();
|
||||
|
||||
const key = mapKeyEvent(evt);
|
||||
if (key !== 0xff) {
|
||||
if (_key !== 0xff) io.keyUp();
|
||||
io.keyDown(key);
|
||||
_key = key;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _keyup(evt: KeyboardEvent) {
|
||||
_key = 0xff;
|
||||
|
||||
if (evt.key === 'Shift') {
|
||||
keyboard.shiftKey(false);
|
||||
} else if (evt.key === 'Control') {
|
||||
keyboard.controlKey(false);
|
||||
} else {
|
||||
if (!focused) {
|
||||
io.keyUp();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let _updateScreenTimer: ReturnType<typeof setInterval> | null = null;
|
||||
|
||||
export function updateScreen() {
|
||||
const green =
|
||||
document.querySelector<HTMLInputElement>('#green_screen')!.checked;
|
||||
const scanlines =
|
||||
document.querySelector<HTMLInputElement>('#show_scanlines')!.checked;
|
||||
|
||||
text.green(green);
|
||||
text.scanlines(scanlines);
|
||||
|
||||
if (!_updateScreenTimer)
|
||||
_updateScreenTimer = setInterval(function () {
|
||||
text.refresh();
|
||||
if (_updateScreenTimer) {
|
||||
clearInterval(_updateScreenTimer);
|
||||
}
|
||||
_updateScreenTimer = null;
|
||||
}, 100);
|
||||
}
|
||||
|
||||
paused = false;
|
||||
export function pauseRun(b: HTMLButtonElement) {
|
||||
if (paused) {
|
||||
run();
|
||||
b.value = 'Pause';
|
||||
} else {
|
||||
stop();
|
||||
b.value = 'Run';
|
||||
}
|
||||
paused = !paused;
|
||||
}
|
||||
|
||||
export function openOptions() {
|
||||
MicroModal.show('options-modal');
|
||||
}
|
||||
|
||||
export function openLoadText(event?: MouseEvent) {
|
||||
if (event && event.altKey) {
|
||||
MicroModal.show('local-modal');
|
||||
} else {
|
||||
MicroModal.show('input-modal');
|
||||
}
|
||||
}
|
||||
|
||||
export function doLoadText() {
|
||||
const text = document.querySelector<HTMLInputElement>('#text_input')!.value;
|
||||
if (!text.indexOf('//Binary')) {
|
||||
const lines = text.split('\n');
|
||||
lines.forEach(function (line) {
|
||||
const parts = line.split(': ');
|
||||
if (parts.length === 2) {
|
||||
let addr: address = 0;
|
||||
if (parts[0].length > 0) {
|
||||
addr = parseInt(parts[0], 16);
|
||||
}
|
||||
const data = parts[1].split(' ');
|
||||
for (let idx = 0; idx < data.length; idx++) {
|
||||
cpu.write(addr >> 8, addr & 0xff, parseInt(data[idx], 16));
|
||||
addr++;
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
io.paste(text);
|
||||
}
|
||||
MicroModal.close('input-modal');
|
||||
}
|
||||
|
||||
export function handleDragOver(event: DragEvent) {
|
||||
event.preventDefault();
|
||||
event.dataTransfer!.dropEffect = 'copy';
|
||||
}
|
||||
|
||||
export function handleDrop(event: DragEvent) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
||||
const dt = event.dataTransfer;
|
||||
if (dt?.files && dt.files.length > 0) {
|
||||
doLoadLocal(dt.files);
|
||||
}
|
||||
}
|
||||
|
||||
export function handleDragEnd(event: DragEvent) {
|
||||
const dt = event.dataTransfer;
|
||||
if (dt?.items) {
|
||||
for (let i = 0; i < dt.items.length; i++) {
|
||||
dt.items.remove(i);
|
||||
}
|
||||
} else {
|
||||
event.dataTransfer?.clearData();
|
||||
}
|
||||
}
|
||||
|
||||
MicroModal.init();
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
hashtag = document.location.hash;
|
||||
|
||||
/*
|
||||
* Input Handling
|
||||
*/
|
||||
|
||||
const canvas = document.querySelector<HTMLCanvasElement>('#text')!;
|
||||
const context = canvas.getContext('2d')!;
|
||||
|
||||
text.setContext(context);
|
||||
|
||||
window.addEventListener('keydown', _keydown);
|
||||
window.addEventListener('keyup', _keyup);
|
||||
|
||||
window.addEventListener('paste', (event) => {
|
||||
const paste = event.clipboardData!.getData('text/plain');
|
||||
setKeyBuffer(paste);
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
window.addEventListener('copy', (event) => {
|
||||
event.clipboardData?.setData('text/plain', text.getText());
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
document.querySelectorAll('input,textarea').forEach(function (el) {
|
||||
el.addEventListener('focus', function () {
|
||||
focused = true;
|
||||
});
|
||||
});
|
||||
document.querySelectorAll('input,textarea').forEach(function (el) {
|
||||
el.addEventListener('blur', function () {
|
||||
focused = false;
|
||||
});
|
||||
});
|
||||
keyboard.create();
|
||||
|
||||
if (prefs.havePrefs()) {
|
||||
document
|
||||
.querySelectorAll<HTMLInputElement>('input[type=checkbox]')
|
||||
.forEach(function (el) {
|
||||
const val = prefs.readPref(el.id);
|
||||
if (val != null) el.checked = !!JSON.parse(val);
|
||||
});
|
||||
document
|
||||
.querySelectorAll<HTMLInputElement>('input[type=checkbox]')
|
||||
.forEach(function (el) {
|
||||
el.addEventListener('change', function () {
|
||||
prefs.writePref(el.id, JSON.stringify(el.checked));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
turbotape = document.querySelector<HTMLInputElement>('#turbo_tape')!.checked;
|
||||
|
||||
Object.keys(window.tapes)
|
||||
.sort()
|
||||
.forEach(function (key) {
|
||||
const option = document.createElement('option');
|
||||
option.value = key;
|
||||
option.text = key;
|
||||
document.querySelector('#tape_select')!.append(option);
|
||||
});
|
||||
|
||||
function doTapeSelect() {
|
||||
const tapeId =
|
||||
document.querySelector<HTMLInputElement>('#tape_select')!.value;
|
||||
const tape = window.tapes[tapeId];
|
||||
if (!tape) {
|
||||
document.querySelector<HTMLInputElement>('#text_input')!.value = '';
|
||||
return;
|
||||
}
|
||||
debug('Loading', tapeId);
|
||||
|
||||
window.location.hash = tapeId;
|
||||
reset();
|
||||
if (turbotape) {
|
||||
let trackIdx = 0,
|
||||
script = '';
|
||||
const parts = tape.script.split('\n');
|
||||
// Ignore part 0 (C100R)
|
||||
// Split part 1 into ranges
|
||||
const ranges = parts[1].split(' ');
|
||||
let idx;
|
||||
for (idx = 0; idx < ranges.length; idx++) {
|
||||
const range = ranges[idx].split('.');
|
||||
const start = parseInt(range[0], 16);
|
||||
const end = parseInt(range[1], 16);
|
||||
const track = tape.tracks[trackIdx];
|
||||
let kdx = 0;
|
||||
for (let jdx = start; jdx <= end; jdx++) {
|
||||
cpu.write(jdx >> 8, jdx & 0xff, track[kdx++]);
|
||||
}
|
||||
trackIdx++;
|
||||
}
|
||||
// Execute parts 2-n
|
||||
for (idx = 2; idx < parts.length; idx++) {
|
||||
if (parts[idx]) {
|
||||
script += parts[idx] + '\n';
|
||||
}
|
||||
}
|
||||
document.querySelector<HTMLInputElement>('#text_input')!.value = script;
|
||||
} else {
|
||||
aci.setData(tape.tracks);
|
||||
document.querySelector<HTMLInputElement>('#text_input')!.value =
|
||||
tape.script;
|
||||
}
|
||||
doLoadText();
|
||||
}
|
||||
document
|
||||
.querySelector('#tape_select')!
|
||||
.addEventListener('change', doTapeSelect);
|
||||
|
||||
run();
|
||||
setInterval(updateKHz, 1000);
|
||||
updateScreen();
|
||||
|
||||
const tape = hup();
|
||||
if (tape) {
|
||||
openLoadText();
|
||||
document.querySelector<HTMLInputElement>('#tape_select')!.value = tape;
|
||||
doTapeSelect();
|
||||
}
|
||||
});
|
@ -1,97 +0,0 @@
|
||||
/* Copyright 2010-2019 Will Scullin <scullin@scullinsteel.com>
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation. No representations are made about the suitability of this
|
||||
* software for any purpose. It is provided "as is" without express or
|
||||
* implied warranty.
|
||||
*/
|
||||
|
||||
export default function Apple1IO(text) {
|
||||
var _key = 0;
|
||||
var _keyReady = false;
|
||||
|
||||
var _displayReady = false;
|
||||
var _nextDSP = 0;
|
||||
var _buffer = [];
|
||||
|
||||
var LOC = {
|
||||
KBD: 0x10,
|
||||
KBDRDY: 0x011,
|
||||
DSP: 0x12,
|
||||
DSPCTL: 0x13
|
||||
};
|
||||
|
||||
return {
|
||||
start: function() { return 0xd0; },
|
||||
end: function() { return 0xd0; },
|
||||
read: function(page, off) {
|
||||
var result = 0;
|
||||
off &= 0x13;
|
||||
switch (off) {
|
||||
case LOC.KBD:
|
||||
// Keyboard
|
||||
if (_buffer.length) {
|
||||
result = _buffer.shift().toUpperCase().charCodeAt(0) & 0x7f;
|
||||
_keyReady = (_buffer.length > 0);
|
||||
} else {
|
||||
result = _key;
|
||||
_keyReady = false;
|
||||
}
|
||||
result |= 0x80;
|
||||
break;
|
||||
case LOC.KBDRDY:
|
||||
result = _keyReady ? 0x80 : 0x00;
|
||||
break;
|
||||
case LOC.DSP:
|
||||
// Display
|
||||
// result = (Math.random() > 0.5) ? 0x80 : 0x00;
|
||||
result = (Date.now() > _nextDSP) ? 0x00 : 0x80;
|
||||
break;
|
||||
case LOC.DSPCTL:
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
},
|
||||
write: function(page, off, val) {
|
||||
off &= 0x13;
|
||||
switch (off) {
|
||||
case LOC.KBD:
|
||||
break;
|
||||
case LOC.KBDRDY:
|
||||
break;
|
||||
case LOC.DSP:
|
||||
// Display
|
||||
if (_displayReady) {
|
||||
text.write(val);
|
||||
}
|
||||
_nextDSP = Date.now() + ((_buffer.length > 0) ? 0 : 17);
|
||||
break;
|
||||
case LOC.DSPCTL:
|
||||
// Don't pretend we care what the value was...
|
||||
_displayReady = true;
|
||||
break;
|
||||
}
|
||||
},
|
||||
reset: function apple1io_reset() {
|
||||
text.clear();
|
||||
_buffer = [];
|
||||
_keyReady = false;
|
||||
_displayReady = false;
|
||||
},
|
||||
keyUp: function apple1io_keyUp() {
|
||||
},
|
||||
keyDown: function apple1io_keyDown(key) {
|
||||
_key = key;
|
||||
_keyReady = true;
|
||||
},
|
||||
paste: function apple1io_paste(buffer) {
|
||||
buffer = buffer.replace(/\/\/.*\n/g, '');
|
||||
buffer = buffer.replace(/\n/g, '\r');
|
||||
_buffer = buffer.split('');
|
||||
_keyReady = true;
|
||||
}
|
||||
};
|
||||
}
|
106
js/apple1io.ts
Normal file
106
js/apple1io.ts
Normal file
@ -0,0 +1,106 @@
|
||||
/* Copyright 2010-2023 Will Scullin <scullin@scullinsteel.com>
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation. No representations are made about the suitability of this
|
||||
* software for any purpose. It is provided "as is" without express or
|
||||
* implied warranty.
|
||||
*/
|
||||
|
||||
import { TextPage } from './canvas1';
|
||||
import type { byte } from './types';
|
||||
|
||||
const LOC = {
|
||||
KBD: 0x10,
|
||||
KBDRDY: 0x011,
|
||||
DSP: 0x12,
|
||||
DSPCTL: 0x13,
|
||||
} as const;
|
||||
|
||||
export default class Apple1IO {
|
||||
_key = 0;
|
||||
_keyReady = false;
|
||||
|
||||
_displayReady = false;
|
||||
_nextDSP = 0;
|
||||
_buffer: string[] = [];
|
||||
|
||||
constructor(private text: TextPage) {}
|
||||
|
||||
start() {
|
||||
return 0xd0;
|
||||
}
|
||||
end() {
|
||||
return 0xd0;
|
||||
}
|
||||
read(_page: byte, off: byte): byte {
|
||||
let result = 0;
|
||||
off &= 0x13;
|
||||
switch (off) {
|
||||
case LOC.KBD:
|
||||
{
|
||||
// Keyboard
|
||||
const key = this._buffer.shift();
|
||||
if (key != null) {
|
||||
result = key.toUpperCase().charCodeAt(0) & 0x7f;
|
||||
this._keyReady = this._buffer.length > 0;
|
||||
} else {
|
||||
result = this._key;
|
||||
this._keyReady = false;
|
||||
}
|
||||
result |= 0x80;
|
||||
}
|
||||
break;
|
||||
case LOC.KBDRDY:
|
||||
result = this._keyReady ? 0x80 : 0x00;
|
||||
break;
|
||||
case LOC.DSP:
|
||||
// Display
|
||||
// result = (Math.random() > 0.5) ? 0x80 : 0x00;
|
||||
result = Date.now() > this._nextDSP ? 0x00 : 0x80;
|
||||
break;
|
||||
case LOC.DSPCTL:
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
write(_page: byte, off: byte, val: byte): void {
|
||||
off &= 0x13;
|
||||
switch (off) {
|
||||
case LOC.KBD:
|
||||
break;
|
||||
case LOC.KBDRDY:
|
||||
break;
|
||||
case LOC.DSP:
|
||||
// Display
|
||||
if (this._displayReady) {
|
||||
this.text.write(val);
|
||||
}
|
||||
this._nextDSP = Date.now() + (this._buffer.length > 0 ? 0 : 17);
|
||||
break;
|
||||
case LOC.DSPCTL:
|
||||
// Don't pretend we care what the value was...
|
||||
this._displayReady = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
reset() {
|
||||
this.text.clear();
|
||||
this._buffer = [];
|
||||
this._keyReady = false;
|
||||
this._displayReady = false;
|
||||
}
|
||||
keyUp() {}
|
||||
keyDown(key: byte) {
|
||||
this._key = key;
|
||||
this._keyReady = true;
|
||||
}
|
||||
paste(buffer: string) {
|
||||
buffer = buffer.replace(/\/\/.*\n/g, '');
|
||||
buffer = buffer.replace(/\n/g, '\r');
|
||||
this._buffer = buffer.split('');
|
||||
this._keyReady = true;
|
||||
}
|
||||
}
|
110
js/base64.js
110
js/base64.js
@ -1,110 +0,0 @@
|
||||
export function base64_encode (data) {
|
||||
// Twacked by Will Scullin to handle arrays of "bytes"
|
||||
|
||||
// http://kevin.vanzonneveld.net
|
||||
// + original by: Tyler Akins (http://rumkin.com)
|
||||
// + improved by: Bayron Guevara
|
||||
// + improved by: Thunder.m
|
||||
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||
// + bugfixed by: Pellentesque Malesuada
|
||||
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||
// - depends on: utf8_encode
|
||||
// * example 1: base64_encode('Kevin van Zonneveld');
|
||||
// * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='
|
||||
|
||||
// mozilla has this native
|
||||
// - but breaks in 2.0.0.12!
|
||||
//if (typeof this.window['atob'] == 'function') {
|
||||
// return atob(data);
|
||||
//}
|
||||
|
||||
var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
||||
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc='', tmp_arr = [];
|
||||
|
||||
if (!data) {
|
||||
return data;
|
||||
}
|
||||
|
||||
do { // pack three octets into four hexets
|
||||
o1 = data[i++];
|
||||
o2 = data[i++];
|
||||
o3 = data[i++];
|
||||
|
||||
bits = o1<<16 | o2<<8 | o3;
|
||||
|
||||
h1 = bits>>18 & 0x3f;
|
||||
h2 = bits>>12 & 0x3f;
|
||||
h3 = bits>>6 & 0x3f;
|
||||
h4 = bits & 0x3f;
|
||||
|
||||
// use hexets to index into b64, and append result to encoded string
|
||||
tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
|
||||
} while (i < data.length);
|
||||
|
||||
enc = tmp_arr.join('');
|
||||
|
||||
switch (data.length % 3) {
|
||||
case 1:
|
||||
enc = enc.slice(0, -2) + '==';
|
||||
break;
|
||||
case 2:
|
||||
enc = enc.slice(0, -1) + '=';
|
||||
break;
|
||||
}
|
||||
|
||||
return enc;
|
||||
}
|
||||
|
||||
export function base64_decode(data) {
|
||||
// Twacked by Will Scullin to handle arrays of "bytes"
|
||||
|
||||
// http://kevin.vanzonneveld.net
|
||||
// + original by: Tyler Akins (http://rumkin.com)
|
||||
// + improved by: Thunder.m
|
||||
// + input by: Aman Gupta
|
||||
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||
// + bugfixed by: Onno Marsman
|
||||
// + bugfixed by: Pellentesque Malesuada
|
||||
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||
// + input by: Brett Zamir (http://brett-zamir.me)
|
||||
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||
// - depends on: utf8_decode
|
||||
// * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA==');
|
||||
// * returns 1: 'Kevin van Zonneveld'
|
||||
|
||||
// mozilla has this native
|
||||
// - but breaks in 2.0.0.12!
|
||||
//if (typeof this.window['btoa'] == 'function') {
|
||||
// return btoa(data);
|
||||
//}
|
||||
|
||||
var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
||||
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, tmp_arr = [];
|
||||
|
||||
if (!data) {
|
||||
return data;
|
||||
}
|
||||
|
||||
do { // unpack four hexets into three octets using index points in b64
|
||||
h1 = b64.indexOf(data.charAt(i++));
|
||||
h2 = b64.indexOf(data.charAt(i++));
|
||||
h3 = b64.indexOf(data.charAt(i++));
|
||||
h4 = b64.indexOf(data.charAt(i++));
|
||||
|
||||
bits = h1<<18 | h2<<12 | h3<<6 | h4;
|
||||
|
||||
o1 = bits>>16 & 0xff;
|
||||
o2 = bits>>8 & 0xff;
|
||||
o3 = bits & 0xff;
|
||||
|
||||
tmp_arr[ac++] = o1;
|
||||
if (h3 != 64) {
|
||||
tmp_arr[ac++] = o2;
|
||||
}
|
||||
if (h4 != 64) {
|
||||
tmp_arr[ac++] = o3;
|
||||
}
|
||||
} while (i < data.length);
|
||||
|
||||
return tmp_arr;
|
||||
}
|
172
js/base64.ts
Normal file
172
js/base64.ts
Normal file
@ -0,0 +1,172 @@
|
||||
import { memory } from './types';
|
||||
|
||||
const B64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
||||
|
||||
/** Encode an array of bytes in base64. */
|
||||
export function base64_encode(data: null | undefined): undefined;
|
||||
export function base64_encode(data: memory): string;
|
||||
export function base64_encode(
|
||||
data: memory | null | undefined,
|
||||
): string | undefined {
|
||||
// Twacked by Will Scullin to handle arrays of 'bytes'
|
||||
|
||||
// http://kevin.vanzonneveld.net
|
||||
// + original by: Tyler Akins (http://rumkin.com)
|
||||
// + improved by: Bayron Guevara
|
||||
// + improved by: Thunder.m
|
||||
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||
// + bugfixed by: Pellentesque Malesuada
|
||||
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||
// - depends on: utf8_encode
|
||||
// * example 1: base64_encode('Kevin van Zonneveld');
|
||||
// * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='
|
||||
|
||||
// mozilla has this native
|
||||
// - but breaks in 2.0.0.12!
|
||||
//if (typeof this.window['atob'] == 'function') {
|
||||
// return atob(data);
|
||||
//}
|
||||
|
||||
let o1,
|
||||
o2,
|
||||
o3,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
bits,
|
||||
i = 0,
|
||||
ac = 0,
|
||||
enc = '';
|
||||
const tmp_arr = [];
|
||||
|
||||
if (!data) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
do {
|
||||
// pack three octets into four hexets
|
||||
o1 = data[i++];
|
||||
o2 = data[i++];
|
||||
o3 = data[i++];
|
||||
|
||||
bits = (o1 << 16) | (o2 << 8) | o3;
|
||||
|
||||
h1 = (bits >> 18) & 0x3f;
|
||||
h2 = (bits >> 12) & 0x3f;
|
||||
h3 = (bits >> 6) & 0x3f;
|
||||
h4 = bits & 0x3f;
|
||||
|
||||
// use hexets to index into b64, and append result to encoded string
|
||||
tmp_arr[ac++] =
|
||||
B64.charAt(h1) + B64.charAt(h2) + B64.charAt(h3) + B64.charAt(h4);
|
||||
} while (i < data.length);
|
||||
|
||||
enc = tmp_arr.join('');
|
||||
|
||||
switch (data.length % 3) {
|
||||
case 1:
|
||||
enc = enc.slice(0, -2) + '==';
|
||||
break;
|
||||
case 2:
|
||||
enc = enc.slice(0, -1) + '=';
|
||||
break;
|
||||
}
|
||||
|
||||
return enc;
|
||||
}
|
||||
|
||||
/** Returns undefined if the input is null or undefined. */
|
||||
export function base64_decode(data: null | undefined): undefined;
|
||||
/** Returns an array of bytes from the given base64-encoded string. */
|
||||
export function base64_decode(data: string): memory;
|
||||
/** Returns an array of bytes from the given base64-encoded string. */
|
||||
export function base64_decode(
|
||||
data: string | null | undefined,
|
||||
): memory | undefined {
|
||||
// Twacked by Will Scullin to handle arrays of 'bytes'
|
||||
|
||||
// http://kevin.vanzonneveld.net
|
||||
// + original by: Tyler Akins (http://rumkin.com)
|
||||
// + improved by: Thunder.m
|
||||
// + input by: Aman Gupta
|
||||
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||
// + bugfixed by: Onno Marsman
|
||||
// + bugfixed by: Pellentesque Malesuada
|
||||
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||
// + input by: Brett Zamir (http://brett-zamir.me)
|
||||
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||
// - depends on: utf8_decode
|
||||
// * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA==');
|
||||
// * returns 1: 'Kevin van Zonneveld'
|
||||
|
||||
// mozilla has this native
|
||||
// - but breaks in 2.0.0.12!
|
||||
//if (typeof this.window['btoa'] == 'function') {
|
||||
// return btoa(data);
|
||||
//}
|
||||
|
||||
let o1,
|
||||
o2,
|
||||
o3,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
bits,
|
||||
i = 0,
|
||||
ac = 0;
|
||||
const tmp_arr = [];
|
||||
|
||||
if (!data) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
do {
|
||||
// unpack four hexets into three octets using index points in B64
|
||||
h1 = B64.indexOf(data.charAt(i++));
|
||||
h2 = B64.indexOf(data.charAt(i++));
|
||||
h3 = B64.indexOf(data.charAt(i++));
|
||||
h4 = B64.indexOf(data.charAt(i++));
|
||||
|
||||
bits = (h1 << 18) | (h2 << 12) | (h3 << 6) | h4;
|
||||
|
||||
o1 = (bits >> 16) & 0xff;
|
||||
o2 = (bits >> 8) & 0xff;
|
||||
o3 = bits & 0xff;
|
||||
|
||||
tmp_arr[ac++] = o1;
|
||||
if (h3 !== 64) {
|
||||
tmp_arr[ac++] = o2;
|
||||
}
|
||||
if (h4 !== 64) {
|
||||
tmp_arr[ac++] = o3;
|
||||
}
|
||||
} while (i < data.length);
|
||||
|
||||
return new Uint8Array(tmp_arr);
|
||||
}
|
||||
|
||||
const DATA_URL_PREFIX = 'data:application/octet-stream;base64,';
|
||||
|
||||
export function base64_json_parse(json: string): unknown {
|
||||
const reviver = (_key: string, value: unknown) => {
|
||||
if (typeof value === 'string' && value.startsWith(DATA_URL_PREFIX)) {
|
||||
return base64_decode(value.slice(DATA_URL_PREFIX.length));
|
||||
}
|
||||
return value;
|
||||
};
|
||||
|
||||
return JSON.parse(json, reviver);
|
||||
}
|
||||
|
||||
export function base64_json_stringify(json: unknown) {
|
||||
const replacer = (_key: string, value: unknown) => {
|
||||
if (value instanceof Uint8Array) {
|
||||
return DATA_URL_PREFIX + base64_encode(value);
|
||||
}
|
||||
return value;
|
||||
};
|
||||
|
||||
return JSON.stringify(json, replacer);
|
||||
}
|
221
js/canvas1.js
221
js/canvas1.js
@ -1,221 +0,0 @@
|
||||
/* Copyright 2010-2019Will Scullin <scullin@scullinsteel.com>
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation. No representations are made about the suitability of this
|
||||
* software for any purpose. It is provided "as is" without express or
|
||||
* implied warranty.
|
||||
*/
|
||||
|
||||
import { charset } from './roms/apple1char';
|
||||
|
||||
/*
|
||||
0: A9 9 AA 20 EF FF E8 8A 4C 2 0
|
||||
0R
|
||||
*/
|
||||
|
||||
/*
|
||||
* Text Page Drawing
|
||||
*/
|
||||
|
||||
export function TextPage()
|
||||
{
|
||||
var _page;
|
||||
var _context;
|
||||
|
||||
var _buffer = [];
|
||||
var _greenMode = false;
|
||||
var _scanlines = false;
|
||||
|
||||
var _black = [0x00,0x00,0x00];
|
||||
var _white = [0xee,0xff,0xff];
|
||||
var _green = [0x00,0xff,0x80];
|
||||
var _blinking = 0;
|
||||
|
||||
var _row = 0;
|
||||
var _col = 0;
|
||||
var _dirty = false;
|
||||
|
||||
function _init() {
|
||||
_buffer = [];
|
||||
for (var row = 0; row < 24; row++) {
|
||||
_buffer[row] = [];
|
||||
for (var col = 0; col < 40; col++) {
|
||||
_buffer[row][col] = col % 2 ? 0x00 : 0xff;
|
||||
}
|
||||
}
|
||||
_dirty = true;
|
||||
}
|
||||
|
||||
_init();
|
||||
|
||||
return {
|
||||
init: function() {
|
||||
var self = this;
|
||||
window.setInterval(function() {
|
||||
_blinking = (_blinking + 1) % 3;
|
||||
self._blink();
|
||||
_dirty = true;
|
||||
}, 333);
|
||||
},
|
||||
|
||||
write: function(val) {
|
||||
var col;
|
||||
val &= 0x7f;
|
||||
|
||||
if (this.transcript) {
|
||||
if (val == 0xd) {
|
||||
this.transcript += '\n';
|
||||
} else if (val >= 0x20) {
|
||||
if (val >= 0x60) {
|
||||
val &= 0x5f;
|
||||
}
|
||||
this.transcript += String.fromCharCode(val);
|
||||
}
|
||||
}
|
||||
|
||||
if (val == 0x0d) {
|
||||
for (col = _col; col < 40; col++) {
|
||||
_buffer[_row][col] = 0x20;
|
||||
}
|
||||
_col = 0;
|
||||
_row++;
|
||||
} else {
|
||||
_buffer[_row][_col] = val;
|
||||
_col++;
|
||||
if (_col > 39) {
|
||||
_col = 0;
|
||||
_row++;
|
||||
}
|
||||
}
|
||||
if (_row > 23) {
|
||||
_row = 23;
|
||||
_buffer.shift();
|
||||
_buffer.push([]);
|
||||
for (col = 0; col < 40; col++) {
|
||||
_buffer[_row][col] = 0x20;
|
||||
}
|
||||
}
|
||||
_buffer[_row][_col] = 0x00;
|
||||
this.refresh();
|
||||
},
|
||||
writeAt: function(row, col, val) {
|
||||
_buffer[row][col] = val;
|
||||
var data = _page.data, fore, back, color;
|
||||
var off = (col * 14 + row * 560 * 8 * 2) * 4;
|
||||
|
||||
fore = _greenMode ? _green : _white;
|
||||
back = _black;
|
||||
var char = 0;
|
||||
|
||||
if (!val) {
|
||||
if (_blinking) {
|
||||
fore = _black;
|
||||
}
|
||||
} else {
|
||||
char = val & 0x1f;
|
||||
char |= val & 0x40 ? 0 : 0x20;
|
||||
}
|
||||
|
||||
for (var jdx = 0; jdx < 8; jdx++) {
|
||||
var b = charset[char * 8 + jdx];
|
||||
for (var idx = 0; idx < 7; idx += 1) {
|
||||
b <<= 1;
|
||||
color = (b & 0x80) ? fore : back;
|
||||
var c0 = color[0], c1 = color[1], c2 = color[2];
|
||||
data[off + 0] = data[off + 4] = c0;
|
||||
data[off + 1] = data[off + 5] = c1;
|
||||
data[off + 2] = data[off + 6] = c2;
|
||||
if (!_scanlines) {
|
||||
data[off + 560 * 4] = data[off + 560 * 4 + 4] = c0;
|
||||
data[off + 560 * 4 + 1] = data[off + 560 * 4 + 5] = c1;
|
||||
data[off + 560 * 4 + 2] = data[off + 560 * 4 + 6] = c2;
|
||||
} else {
|
||||
data[off + 560 * 4] = data[off + 560 * 4 + 4] = c0 >> 1;
|
||||
data[off + 560 * 4 + 1] = data[off + 560 * 4 + 5] = c1 >> 1;
|
||||
data[off + 560 * 4 + 2] = data[off + 560 * 4 + 6] = c2 >> 1;
|
||||
}
|
||||
off += 8;
|
||||
}
|
||||
off += 546 * 4 + 560 * 4;
|
||||
}
|
||||
},
|
||||
_blink: function() {
|
||||
for (var row = 0; row < 24; row++) {
|
||||
for (var col = 0; col < 40; col++) {
|
||||
var val = _buffer[row][col];
|
||||
if (!val) {
|
||||
this.writeAt(row, col, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
_dirty = true;
|
||||
},
|
||||
refresh: function() {
|
||||
for (var row = 0; row < 24; row++) {
|
||||
for (var col = 0; col < 40; col++) {
|
||||
this.writeAt(row, col, _buffer[row][col]);
|
||||
}
|
||||
}
|
||||
_dirty = true;
|
||||
},
|
||||
green: function(on) {
|
||||
_greenMode = on;
|
||||
this.refresh();
|
||||
},
|
||||
scanlines: function(on) {
|
||||
_scanlines = on;
|
||||
this.refresh();
|
||||
},
|
||||
blit: function() {
|
||||
if (_dirty) {
|
||||
_context.putImageData(_page, 0, 0, 0, 0, 7 * 40 * 2, 8 * 24 * 2);
|
||||
}
|
||||
},
|
||||
setContext: function(context) {
|
||||
_context = context;
|
||||
_page = context.createImageData(560, 384);
|
||||
for (var idx = 0; idx < 560 * 384 * 4; idx++) {
|
||||
_page.data[idx] = 0xff;
|
||||
}
|
||||
},
|
||||
getText: function() {
|
||||
function mapCharCode(charCode) {
|
||||
charCode &= 0x7F;
|
||||
if (charCode < 0x20) {
|
||||
charCode += 0x40;
|
||||
}
|
||||
if (charCode >= 0x60) {
|
||||
charCode -= 0x40;
|
||||
}
|
||||
return charCode;
|
||||
}
|
||||
|
||||
var buffer = '', line, charCode;
|
||||
var row, col;
|
||||
for (row = 0; row < 24; row++) {
|
||||
line = '';
|
||||
for (col = 0; col < 40; col++) {
|
||||
charCode = mapCharCode(_buffer[row][col]);
|
||||
line += String.fromCharCode(charCode);
|
||||
}
|
||||
line = line.trimRight();
|
||||
buffer += line + '\n';
|
||||
}
|
||||
return buffer;
|
||||
},
|
||||
clear: function canvas_clearScreen() {
|
||||
for (var row = 0; row < 24; row++) {
|
||||
for (var col = 0; col < 40; col++) {
|
||||
_buffer[row][col] = 0x20;
|
||||
}
|
||||
}
|
||||
_col = 0;
|
||||
_row = 0;
|
||||
this.refresh();
|
||||
},
|
||||
transcript: ''
|
||||
};
|
||||
}
|
236
js/canvas1.ts
Normal file
236
js/canvas1.ts
Normal file
@ -0,0 +1,236 @@
|
||||
/* Copyright 2010-2023 Will Scullin <scullin@scullinsteel.com>
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation. No representations are made about the suitability of this
|
||||
* software for any purpose. It is provided "as is" without express or
|
||||
* implied warranty.
|
||||
*/
|
||||
|
||||
import { charset } from './roms/apple1char';
|
||||
import type { byte } from './types';
|
||||
|
||||
/*
|
||||
0: A9 9 AA 20 EF FF E8 8A 4C 2 0
|
||||
0R
|
||||
*/
|
||||
|
||||
/*
|
||||
* Text Page Drawing
|
||||
*/
|
||||
|
||||
export class TextPage {
|
||||
_page: ImageData | undefined;
|
||||
_context: CanvasRenderingContext2D | undefined;
|
||||
|
||||
_buffer: byte[][] = [];
|
||||
_greenMode = false;
|
||||
_scanlines = false;
|
||||
|
||||
_black = [0x00, 0x00, 0x00];
|
||||
_white = [0xee, 0xff, 0xff];
|
||||
_green = [0x00, 0xff, 0x80];
|
||||
_blinking = 0;
|
||||
|
||||
_row = 0;
|
||||
_col = 0;
|
||||
_dirty = false;
|
||||
|
||||
constructor() {
|
||||
this._buffer = [];
|
||||
for (let row = 0; row < 24; row++) {
|
||||
this._buffer[row] = [];
|
||||
for (let col = 0; col < 40; col++) {
|
||||
this._buffer[row][col] = col % 2 ? 0x00 : 0xff;
|
||||
}
|
||||
}
|
||||
this._dirty = true;
|
||||
}
|
||||
|
||||
init() {
|
||||
window.setInterval(() => {
|
||||
this._blinking = (this._blinking + 1) % 3;
|
||||
this._blink();
|
||||
this._dirty = true;
|
||||
}, 333);
|
||||
}
|
||||
|
||||
write(val: byte): void {
|
||||
let col;
|
||||
val &= 0x7f;
|
||||
|
||||
if (this.transcript) {
|
||||
if (val === 0xd) {
|
||||
this.transcript += '\n';
|
||||
} else if (val >= 0x20) {
|
||||
if (val >= 0x60) {
|
||||
val &= 0x5f;
|
||||
}
|
||||
this.transcript += String.fromCharCode(val);
|
||||
}
|
||||
}
|
||||
|
||||
if (val === 0x0d) {
|
||||
for (col = this._col; col < 40; col++) {
|
||||
this._buffer[this._row][col] = 0x20;
|
||||
}
|
||||
this._col = 0;
|
||||
this._row++;
|
||||
} else {
|
||||
this._buffer[this._row][this._col] = val;
|
||||
this._col++;
|
||||
if (this._col > 39) {
|
||||
this._col = 0;
|
||||
this._row++;
|
||||
}
|
||||
}
|
||||
if (this._row > 23) {
|
||||
this._row = 23;
|
||||
this._buffer.shift();
|
||||
this._buffer.push([]);
|
||||
for (col = 0; col < 40; col++) {
|
||||
this._buffer[this._row][col] = 0x20;
|
||||
}
|
||||
}
|
||||
this._buffer[this._row][this._col] = 0x00;
|
||||
this.refresh();
|
||||
}
|
||||
writeAt(row: byte, col: byte, val: byte): void {
|
||||
if (!this._page) {
|
||||
return;
|
||||
}
|
||||
this._buffer[row][col] = val;
|
||||
const data = this._page.data;
|
||||
let color;
|
||||
let off = (col * 14 + row * 560 * 8 * 2) * 4;
|
||||
|
||||
let fore = this._greenMode ? this._green : this._white;
|
||||
const back = this._black;
|
||||
let char = 0;
|
||||
|
||||
if (!val) {
|
||||
if (this._blinking) {
|
||||
fore = this._black;
|
||||
}
|
||||
} else {
|
||||
char = val & 0x1f;
|
||||
char |= val & 0x40 ? 0 : 0x20;
|
||||
}
|
||||
|
||||
for (let jdx = 0; jdx < 8; jdx++) {
|
||||
let b = charset[char * 8 + jdx];
|
||||
for (let idx = 0; idx < 7; idx += 1) {
|
||||
b <<= 1;
|
||||
color = b & 0x80 ? fore : back;
|
||||
const c0 = color[0],
|
||||
c1 = color[1],
|
||||
c2 = color[2];
|
||||
data[off + 0] = data[off + 4] = c0;
|
||||
data[off + 1] = data[off + 5] = c1;
|
||||
data[off + 2] = data[off + 6] = c2;
|
||||
if (!this._scanlines) {
|
||||
data[off + 560 * 4] = data[off + 560 * 4 + 4] = c0;
|
||||
data[off + 560 * 4 + 1] = data[off + 560 * 4 + 5] = c1;
|
||||
data[off + 560 * 4 + 2] = data[off + 560 * 4 + 6] = c2;
|
||||
} else {
|
||||
data[off + 560 * 4] = data[off + 560 * 4 + 4] = c0 >> 1;
|
||||
data[off + 560 * 4 + 1] = data[off + 560 * 4 + 5] = c1 >> 1;
|
||||
data[off + 560 * 4 + 2] = data[off + 560 * 4 + 6] = c2 >> 1;
|
||||
}
|
||||
off += 8;
|
||||
}
|
||||
off += 546 * 4 + 560 * 4;
|
||||
}
|
||||
}
|
||||
_blink() {
|
||||
for (let row = 0; row < 24; row++) {
|
||||
for (let col = 0; col < 40; col++) {
|
||||
const val = this._buffer[row][col];
|
||||
if (!val) {
|
||||
this.writeAt(row, col, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
this._dirty = true;
|
||||
}
|
||||
refresh() {
|
||||
for (let row = 0; row < 24; row++) {
|
||||
for (let col = 0; col < 40; col++) {
|
||||
this.writeAt(row, col, this._buffer[row][col]);
|
||||
}
|
||||
}
|
||||
this._dirty = true;
|
||||
}
|
||||
green(on: boolean) {
|
||||
this._greenMode = on;
|
||||
this.refresh();
|
||||
}
|
||||
scanlines(on: boolean) {
|
||||
this._scanlines = on;
|
||||
this.refresh();
|
||||
}
|
||||
blit() {
|
||||
if (!this._page || !this._context) {
|
||||
return;
|
||||
}
|
||||
if (this._dirty) {
|
||||
this._context.putImageData(
|
||||
this._page,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
7 * 40 * 2,
|
||||
8 * 24 * 2,
|
||||
);
|
||||
}
|
||||
}
|
||||
setContext(context: CanvasRenderingContext2D) {
|
||||
this._context = context;
|
||||
this._page = context.createImageData(560, 384);
|
||||
for (let idx = 0; idx < 560 * 384 * 4; idx++) {
|
||||
this._page.data[idx] = 0xff;
|
||||
}
|
||||
}
|
||||
getText() {
|
||||
function mapCharCode(charCode: byte) {
|
||||
charCode &= 0x7f;
|
||||
if (charCode < 0x20) {
|
||||
charCode += 0x40;
|
||||
}
|
||||
if (charCode >= 0x60) {
|
||||
charCode -= 0x40;
|
||||
}
|
||||
return charCode;
|
||||
}
|
||||
|
||||
let buffer = '',
|
||||
line,
|
||||
charCode;
|
||||
let row, col;
|
||||
for (row = 0; row < 24; row++) {
|
||||
line = '';
|
||||
for (col = 0; col < 40; col++) {
|
||||
charCode = mapCharCode(this._buffer[row][col]);
|
||||
line += String.fromCharCode(charCode);
|
||||
}
|
||||
line = line.trimRight();
|
||||
buffer += line + '\n';
|
||||
}
|
||||
return buffer;
|
||||
}
|
||||
clear() {
|
||||
for (let row = 0; row < 24; row++) {
|
||||
for (let col = 0; col < 40; col++) {
|
||||
this._buffer[row][col] = 0x20;
|
||||
}
|
||||
}
|
||||
this._col = 0;
|
||||
this._row = 0;
|
||||
this.refresh();
|
||||
}
|
||||
|
||||
transcript = '';
|
||||
}
|
160
js/cards/aci.js
160
js/cards/aci.js
@ -1,160 +0,0 @@
|
||||
import { debug } from '../util';
|
||||
|
||||
export default function ACI(cpu, cb) {
|
||||
var _last = cpu.cycles();
|
||||
var _next = _last;
|
||||
var _recording = false;
|
||||
var _readOffset = 0;
|
||||
var _flip = false;
|
||||
var _beKind = false;
|
||||
var _progress = 0;
|
||||
|
||||
var rom = [
|
||||
0xA9,0xAA,0x20,0xEF,0xFF,0xA9,0x8D,0x20,
|
||||
0xEF,0xFF,0xA0,0xFF,0xC8,0xAD,0x11,0xD0,
|
||||
0x10,0xFB,0xAD,0x10,0xD0,0x99,0x00,0x02,
|
||||
0x20,0xEF,0xFF,0xC9,0x9B,0xF0,0xE1,0xC9,
|
||||
0x8D,0xD0,0xE9,0xA2,0xFF,0xA9,0x00,0x85,
|
||||
0x24,0x85,0x25,0x85,0x26,0x85,0x27,0xE8,
|
||||
0xBD,0x00,0x02,0xC9,0xD2,0xF0,0x56,0xC9,
|
||||
0xD7,0xF0,0x35,0xC9,0xAE,0xF0,0x27,0xC9,
|
||||
0x8D,0xF0,0x20,0xC9,0xA0,0xF0,0xE8,0x49,
|
||||
0xB0,0xC9,0x0A,0x90,0x06,0x69,0x88,0xC9,
|
||||
0xFA,0x90,0xAD,0x0A,0x0A,0x0A,0x0A,0xA0,
|
||||
0x04,0x0A,0x26,0x24,0x26,0x25,0x88,0xD0,
|
||||
0xF8,0xF0,0xCC,0x4C,0x1A,0xFF,0xA5,0x24,
|
||||
0x85,0x26,0xA5,0x25,0x85,0x27,0xB0,0xBF,
|
||||
0xA9,0x40,0x20,0xCC,0xC1,0x88,0xA2,0x00,
|
||||
0xA1,0x26,0xA2,0x10,0x0A,0x20,0xDB,0xC1,
|
||||
0xD0,0xFA,0x20,0xF1,0xC1,0xA0,0x1E,0x90,
|
||||
0xEC,0xA6,0x28,0xB0,0x98,0x20,0xBC,0xC1,
|
||||
0xA9,0x16,0x20,0xCC,0xC1,0x20,0xBC,0xC1,
|
||||
0xA0,0x1F,0x20,0xBF,0xC1,0xB0,0xF9,0x20,
|
||||
0xBF,0xC1,0xA0,0x3A,0xA2,0x08,0x48,0x20,
|
||||
0xBC,0xC1,0x68,0x2A,0xA0,0x39,0xCA,0xD0,
|
||||
0xF5,0x81,0x26,0x20,0xF1,0xC1,0xA0,0x35,
|
||||
0x90,0xEA,0xB0,0xCD,0x20,0xBF,0xC1,0x88,
|
||||
0xAD,0x81,0xC0,0xC5,0x29,0xF0,0xF8,0x85,
|
||||
0x29,0xC0,0x80,0x60,0x86,0x28,0xA0,0x42,
|
||||
0x20,0xE0,0xC1,0xD0,0xF9,0x69,0xFE,0xB0,
|
||||
0xF5,0xA0,0x1E,0x20,0xE0,0xC1,0xA0,0x2C,
|
||||
0x88,0xD0,0xFD,0x90,0x05,0xA0,0x2F,0x88,
|
||||
0xD0,0xFD,0xBC,0x00,0xC0,0xA0,0x29,0xCA,
|
||||
0x60,0xA5,0x26,0xC5,0x24,0xA5,0x27,0xE5,
|
||||
0x25,0xE6,0x26,0xD0,0x02,0xE6,0x27,0x60
|
||||
];
|
||||
|
||||
return {
|
||||
start: function aci_start() {
|
||||
return 0xc0;
|
||||
},
|
||||
end: function aci_end() {
|
||||
return 0xc1;
|
||||
},
|
||||
read: function aci_read(page, off) {
|
||||
var now = cpu.cycles();
|
||||
var result = rom[off];
|
||||
if (page == 0xc0) {
|
||||
if (_recording) {
|
||||
var delta = now - _last;
|
||||
this.buffer.push(delta);
|
||||
_last = now;
|
||||
} else {
|
||||
var progress;
|
||||
if (_readOffset < this.buffer.length) {
|
||||
if (now > _next) {
|
||||
if ((_readOffset % 1000) == 0) {
|
||||
debug('Read ' + (_readOffset / 1000));
|
||||
}
|
||||
_flip = !_flip;
|
||||
_next = now + this.buffer[_readOffset++];
|
||||
}
|
||||
}
|
||||
result = _flip ? rom[off | 0x01] : rom[off & 0xfe];
|
||||
|
||||
progress = Math.round(_readOffset / this.buffer.length * 100) / 100;
|
||||
if (_progress != progress) {
|
||||
_progress = progress;
|
||||
cb.progress(_progress);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (cpu.sync()) {
|
||||
switch (off) {
|
||||
case 0x00:
|
||||
_recording = false;
|
||||
_beKind = true;
|
||||
debug('Entering ACI CLI');
|
||||
break;
|
||||
case 0x63:
|
||||
if (_recording) {
|
||||
this.buffer.push(5000000);
|
||||
_recording = false;
|
||||
}
|
||||
debug('Exiting ACI CLI');
|
||||
break;
|
||||
case 0x70: // WRITE
|
||||
_recording = true;
|
||||
if (_beKind) {
|
||||
_beKind = false;
|
||||
this.buffer = [];
|
||||
}
|
||||
debug('Start write');
|
||||
_last = now;
|
||||
break;
|
||||
//case 0x7c: // WBITLOOP:
|
||||
// _debug = true;
|
||||
// debug("Write bit loop");
|
||||
// break;
|
||||
case 0x8d: // READ
|
||||
_recording = false;
|
||||
debug('Start read');
|
||||
if (_beKind) {
|
||||
_readOffset = 0;
|
||||
_next = now + 5000000;
|
||||
_beKind = false;
|
||||
|
||||
cb.progress(0);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
},
|
||||
write: function aci_write() {},
|
||||
|
||||
getState: function aci_getState() { return {}; },
|
||||
setState: function aci_setState() {},
|
||||
|
||||
setData: function aci_setData(data) {
|
||||
var seg, idx, jdx, d, b;
|
||||
this.buffer = [];
|
||||
for (seg = 0; seg < data.length; seg++) {
|
||||
for (idx = 0; idx < 16384; idx++) {
|
||||
this.buffer.push(592);
|
||||
}
|
||||
this.buffer.push(180);
|
||||
this.buffer.push(238);
|
||||
d = data[seg];
|
||||
for (idx = 0; idx < d.length; idx++) {
|
||||
b = d[idx];
|
||||
for (jdx = 0; jdx < 8; jdx++) {
|
||||
if (b & 0x80) {
|
||||
this.buffer.push(473);
|
||||
this.buffer.push(473);
|
||||
} else {
|
||||
this.buffer.push(238);
|
||||
this.buffer.push(238);
|
||||
}
|
||||
b <<= 1;
|
||||
}
|
||||
}
|
||||
this.buffer.push(5000000);
|
||||
}
|
||||
},
|
||||
buffer: []
|
||||
};
|
||||
}
|
162
js/cards/aci.ts
Normal file
162
js/cards/aci.ts
Normal file
@ -0,0 +1,162 @@
|
||||
import CPU6502 from '../cpu6502';
|
||||
import { debug } from '../util';
|
||||
import { byte } from '../types';
|
||||
|
||||
const rom = [
|
||||
0xa9, 0xaa, 0x20, 0xef, 0xff, 0xa9, 0x8d, 0x20, 0xef, 0xff, 0xa0, 0xff, 0xc8,
|
||||
0xad, 0x11, 0xd0, 0x10, 0xfb, 0xad, 0x10, 0xd0, 0x99, 0x00, 0x02, 0x20, 0xef,
|
||||
0xff, 0xc9, 0x9b, 0xf0, 0xe1, 0xc9, 0x8d, 0xd0, 0xe9, 0xa2, 0xff, 0xa9, 0x00,
|
||||
0x85, 0x24, 0x85, 0x25, 0x85, 0x26, 0x85, 0x27, 0xe8, 0xbd, 0x00, 0x02, 0xc9,
|
||||
0xd2, 0xf0, 0x56, 0xc9, 0xd7, 0xf0, 0x35, 0xc9, 0xae, 0xf0, 0x27, 0xc9, 0x8d,
|
||||
0xf0, 0x20, 0xc9, 0xa0, 0xf0, 0xe8, 0x49, 0xb0, 0xc9, 0x0a, 0x90, 0x06, 0x69,
|
||||
0x88, 0xc9, 0xfa, 0x90, 0xad, 0x0a, 0x0a, 0x0a, 0x0a, 0xa0, 0x04, 0x0a, 0x26,
|
||||
0x24, 0x26, 0x25, 0x88, 0xd0, 0xf8, 0xf0, 0xcc, 0x4c, 0x1a, 0xff, 0xa5, 0x24,
|
||||
0x85, 0x26, 0xa5, 0x25, 0x85, 0x27, 0xb0, 0xbf, 0xa9, 0x40, 0x20, 0xcc, 0xc1,
|
||||
0x88, 0xa2, 0x00, 0xa1, 0x26, 0xa2, 0x10, 0x0a, 0x20, 0xdb, 0xc1, 0xd0, 0xfa,
|
||||
0x20, 0xf1, 0xc1, 0xa0, 0x1e, 0x90, 0xec, 0xa6, 0x28, 0xb0, 0x98, 0x20, 0xbc,
|
||||
0xc1, 0xa9, 0x16, 0x20, 0xcc, 0xc1, 0x20, 0xbc, 0xc1, 0xa0, 0x1f, 0x20, 0xbf,
|
||||
0xc1, 0xb0, 0xf9, 0x20, 0xbf, 0xc1, 0xa0, 0x3a, 0xa2, 0x08, 0x48, 0x20, 0xbc,
|
||||
0xc1, 0x68, 0x2a, 0xa0, 0x39, 0xca, 0xd0, 0xf5, 0x81, 0x26, 0x20, 0xf1, 0xc1,
|
||||
0xa0, 0x35, 0x90, 0xea, 0xb0, 0xcd, 0x20, 0xbf, 0xc1, 0x88, 0xad, 0x81, 0xc0,
|
||||
0xc5, 0x29, 0xf0, 0xf8, 0x85, 0x29, 0xc0, 0x80, 0x60, 0x86, 0x28, 0xa0, 0x42,
|
||||
0x20, 0xe0, 0xc1, 0xd0, 0xf9, 0x69, 0xfe, 0xb0, 0xf5, 0xa0, 0x1e, 0x20, 0xe0,
|
||||
0xc1, 0xa0, 0x2c, 0x88, 0xd0, 0xfd, 0x90, 0x05, 0xa0, 0x2f, 0x88, 0xd0, 0xfd,
|
||||
0xbc, 0x00, 0xc0, 0xa0, 0x29, 0xca, 0x60, 0xa5, 0x26, 0xc5, 0x24, 0xa5, 0x27,
|
||||
0xe5, 0x25, 0xe6, 0x26, 0xd0, 0x02, 0xe6, 0x27, 0x60,
|
||||
] as const;
|
||||
|
||||
export interface ACICallback {
|
||||
progress: (value: number) => void;
|
||||
}
|
||||
|
||||
export default class ACI {
|
||||
_last: number;
|
||||
_next: number;
|
||||
_recording = false;
|
||||
_readOffset = 0;
|
||||
_flip = false;
|
||||
_beKind = false;
|
||||
_progress = 0;
|
||||
|
||||
constructor(
|
||||
private cpu: CPU6502,
|
||||
private cb: ACICallback,
|
||||
) {
|
||||
this._last = cpu.getCycles();
|
||||
this._next = this._last;
|
||||
}
|
||||
|
||||
start() {
|
||||
return 0xc0;
|
||||
}
|
||||
end() {
|
||||
return 0xc1;
|
||||
}
|
||||
read(page: byte, off: byte) {
|
||||
const now = this.cpu.getCycles();
|
||||
let result = rom[off];
|
||||
if (page === 0xc0) {
|
||||
if (this._recording) {
|
||||
const delta = now - this._last;
|
||||
this.buffer.push(delta);
|
||||
this._last = now;
|
||||
} else {
|
||||
if (this._readOffset < this.buffer.length) {
|
||||
if (now > this._next) {
|
||||
if (this._readOffset % 1000 === 0) {
|
||||
debug('Read ' + this._readOffset / 1000);
|
||||
}
|
||||
this._flip = !this._flip;
|
||||
this._next = now + this.buffer[this._readOffset++];
|
||||
}
|
||||
}
|
||||
result = this._flip ? rom[off | 0x01] : rom[off & 0xfe];
|
||||
|
||||
const progress =
|
||||
Math.round((this._readOffset / this.buffer.length) * 100) / 100;
|
||||
if (this._progress !== progress) {
|
||||
this._progress = progress;
|
||||
this.cb.progress(this._progress);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (this.cpu.getSync()) {
|
||||
switch (off) {
|
||||
case 0x00:
|
||||
this._recording = false;
|
||||
this._beKind = true;
|
||||
debug('Entering ACI CLI');
|
||||
break;
|
||||
case 0x63:
|
||||
if (this._recording) {
|
||||
this.buffer.push(5000000);
|
||||
this._recording = false;
|
||||
}
|
||||
debug('Exiting ACI CLI');
|
||||
break;
|
||||
case 0x70: // WRITE
|
||||
this._recording = true;
|
||||
if (this._beKind) {
|
||||
this._beKind = false;
|
||||
this.buffer = [];
|
||||
}
|
||||
debug('Start write');
|
||||
this._last = now;
|
||||
break;
|
||||
//case 0x7c: // WBITLOOP:
|
||||
// _debug = true;
|
||||
// debug("Write bit loop");
|
||||
// break;
|
||||
case 0x8d: // READ
|
||||
this._recording = false;
|
||||
debug('Start read');
|
||||
if (this._beKind) {
|
||||
this._readOffset = 0;
|
||||
this._next = now + 5000000;
|
||||
this._beKind = false;
|
||||
|
||||
this.cb.progress(0);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
write() {}
|
||||
|
||||
getState() {
|
||||
return {};
|
||||
}
|
||||
setState() {}
|
||||
|
||||
setData(data: number[][]) {
|
||||
let seg, idx, jdx, d, b;
|
||||
this.buffer = [];
|
||||
for (seg = 0; seg < data.length; seg++) {
|
||||
for (idx = 0; idx < 16384; idx++) {
|
||||
this.buffer.push(592);
|
||||
}
|
||||
this.buffer.push(180);
|
||||
this.buffer.push(238);
|
||||
d = data[seg];
|
||||
for (idx = 0; idx < d.length; idx++) {
|
||||
b = d[idx];
|
||||
for (jdx = 0; jdx < 8; jdx++) {
|
||||
if (b & 0x80) {
|
||||
this.buffer.push(473);
|
||||
this.buffer.push(473);
|
||||
} else {
|
||||
this.buffer.push(238);
|
||||
this.buffer.push(238);
|
||||
}
|
||||
b <<= 1;
|
||||
}
|
||||
}
|
||||
this.buffer.push(5000000);
|
||||
}
|
||||
}
|
||||
buffer: byte[] = [];
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
/*!
|
||||
* Copyright 2010-2018 Will Scullin <scullin@scullinsteel.com>
|
||||
* Copyright 2010-2023 Will Scullin <scullin@scullinsteel.com>
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
1626
js/cpu6502.js
1626
js/cpu6502.js
File diff suppressed because it is too large
Load Diff
3265
js/cpu6502.ts
Normal file
3265
js/cpu6502.ts
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,3 @@
|
||||
var Apple1 = require('./apple1');
|
||||
import * as Apple1 from "./apple1";
|
||||
|
||||
module.exports = { Apple1: Apple1 };
|
||||
window.Apple1 = Apple1;
|
||||
|
30
js/prefs.js
30
js/prefs.js
@ -1,30 +0,0 @@
|
||||
/* Copyright 2010-2019 Will Scullin <scullin@scullinsteel.com>
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation. No representations are made about the suitability of this
|
||||
* software for any purpose. It is provided "as is" without express or
|
||||
* implied warranty.
|
||||
*/
|
||||
|
||||
/*exported Prefs */
|
||||
|
||||
export default function Prefs()
|
||||
{
|
||||
return {
|
||||
havePrefs: function() {
|
||||
return typeof(localStorage) !== 'undefined';
|
||||
},
|
||||
readPref: function(name) {
|
||||
if (localStorage)
|
||||
return localStorage.getItem(name);
|
||||
return null;
|
||||
},
|
||||
writePref: function(name, value) {
|
||||
if (localStorage)
|
||||
localStorage.setItem(name, value);
|
||||
}
|
||||
};
|
||||
}
|
23
js/prefs.ts
Normal file
23
js/prefs.ts
Normal file
@ -0,0 +1,23 @@
|
||||
/* Copyright 2010-2023 Will Scullin <scullin@scullinsteel.com>
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation. No representations are made about the suitability of this
|
||||
* software for any purpose. It is provided "as is" without express or
|
||||
* implied warranty.
|
||||
*/
|
||||
|
||||
export default class Prefs {
|
||||
havePrefs() {
|
||||
return typeof localStorage !== 'undefined';
|
||||
}
|
||||
readPref(name: string) {
|
||||
if (localStorage) return localStorage.getItem(name);
|
||||
return null;
|
||||
}
|
||||
writePref(name: string, value: string) {
|
||||
if (localStorage) localStorage.setItem(name, value);
|
||||
}
|
||||
}
|
57
js/ram.js
57
js/ram.js
@ -1,57 +0,0 @@
|
||||
/* -*- mode: JavaScript; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/* Copyright 2010-2019Will Scullin <scullin@scullinsteel.com>
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation. No representations are made about the suitability of this
|
||||
* software for any purpose. It is provided "as is" without express or
|
||||
* implied warranty.
|
||||
*/
|
||||
|
||||
import { base64_decode, base64_encode } from './base64';
|
||||
import { allocMemPages } from './util';
|
||||
|
||||
export default function RAM(sp, ep) {
|
||||
var mem;
|
||||
var start_page = sp;
|
||||
var end_page = ep;
|
||||
|
||||
mem = allocMemPages(ep - sp + 1);
|
||||
|
||||
for (var page = 0; page <= ep; page++) {
|
||||
for (var off = 0; off < 0x100; off++) {
|
||||
mem[page * 0x100 + off] = 0; // Math.floor(Math.random()*256);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
start: function() {
|
||||
return start_page;
|
||||
},
|
||||
end: function() {
|
||||
return end_page;
|
||||
},
|
||||
read: function(page, off) {
|
||||
return mem[(page - start_page) * 0x100 + off];
|
||||
},
|
||||
write: function(page, off, val) {
|
||||
mem[(page - start_page) * 0x100 + off] = val;
|
||||
},
|
||||
|
||||
getState: function() {
|
||||
return {
|
||||
start: start_page,
|
||||
end: end_page,
|
||||
mem: base64_encode(mem)
|
||||
};
|
||||
},
|
||||
|
||||
setState: function(state) {
|
||||
start_page = state.start;
|
||||
end_page = state.end;
|
||||
mem = base64_decode(state.mem);
|
||||
}
|
||||
};
|
||||
}
|
64
js/ram.ts
Normal file
64
js/ram.ts
Normal file
@ -0,0 +1,64 @@
|
||||
/* Copyright 2010-2023 Will Scullin <scullin@scullinsteel.com>
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation. No representations are made about the suitability of this
|
||||
* software for any purpose. It is provided "as is" without express or
|
||||
* implied warranty.
|
||||
*/
|
||||
|
||||
import { base64_decode, base64_encode } from './base64';
|
||||
import { allocMemPages } from './util';
|
||||
import type { byte } from './types';
|
||||
|
||||
export interface RAMState {
|
||||
start: byte;
|
||||
end: byte;
|
||||
mem: string;
|
||||
}
|
||||
|
||||
export default class RAM {
|
||||
mem: Uint8Array | byte[];
|
||||
|
||||
constructor(
|
||||
private start_page: byte,
|
||||
private end_page: byte,
|
||||
) {
|
||||
this.mem = allocMemPages(end_page - start_page + 1);
|
||||
|
||||
for (let page = 0; page <= end_page; page++) {
|
||||
for (let off = 0; off < 0x100; off++) {
|
||||
this.mem[page * 0x100 + off] = 0; // Math.floor(Math.random()*256);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
start() {
|
||||
return this.start_page;
|
||||
}
|
||||
end() {
|
||||
return this.end_page;
|
||||
}
|
||||
read(page: byte, off: byte) {
|
||||
return this.mem[(page - this.start_page) * 0x100 + off];
|
||||
}
|
||||
write(page: byte, off: byte, val: byte) {
|
||||
this.mem[(page - this.start_page) * 0x100 + off] = val;
|
||||
}
|
||||
|
||||
getState(): RAMState {
|
||||
return {
|
||||
start: this.start_page,
|
||||
end: this.end_page,
|
||||
mem: base64_encode(this.mem),
|
||||
};
|
||||
}
|
||||
|
||||
setState(state: RAMState) {
|
||||
this.start_page = state.start;
|
||||
this.end_page = state.end;
|
||||
this.mem = base64_decode(state.mem);
|
||||
}
|
||||
}
|
@ -1,66 +0,0 @@
|
||||
export var charset = [
|
||||
0x00,0x1c,0x22,0x2a,0x2e,0x2c,0x20,0x1e,
|
||||
0x00,0x08,0x14,0x22,0x22,0x3e,0x22,0x22,
|
||||
0x00,0x3c,0x22,0x22,0x3c,0x22,0x22,0x3c,
|
||||
0x00,0x1c,0x22,0x20,0x20,0x20,0x22,0x1c,
|
||||
0x00,0x3c,0x22,0x22,0x22,0x22,0x22,0x3c,
|
||||
0x00,0x3e,0x20,0x20,0x3c,0x20,0x20,0x3e,
|
||||
0x00,0x3e,0x20,0x20,0x3c,0x20,0x20,0x20,
|
||||
0x00,0x1e,0x20,0x20,0x20,0x26,0x22,0x1e,
|
||||
0x00,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,
|
||||
0x00,0x1c,0x08,0x08,0x08,0x08,0x08,0x1c,
|
||||
0x00,0x02,0x02,0x02,0x02,0x02,0x22,0x1c,
|
||||
0x00,0x22,0x24,0x28,0x30,0x28,0x24,0x22,
|
||||
0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x3e,
|
||||
0x00,0x22,0x36,0x2a,0x2a,0x22,0x22,0x22,
|
||||
0x00,0x22,0x22,0x32,0x2a,0x26,0x22,0x22,
|
||||
0x00,0x1c,0x22,0x22,0x22,0x22,0x22,0x1c,
|
||||
0x00,0x3c,0x22,0x22,0x3c,0x20,0x20,0x20,
|
||||
0x00,0x1c,0x22,0x22,0x22,0x2a,0x24,0x1a,
|
||||
0x00,0x3c,0x22,0x22,0x3c,0x28,0x24,0x22,
|
||||
0x00,0x1c,0x22,0x20,0x1c,0x02,0x22,0x1c,
|
||||
0x00,0x3e,0x08,0x08,0x08,0x08,0x08,0x08,
|
||||
0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x1c,
|
||||
0x00,0x22,0x22,0x22,0x22,0x22,0x14,0x08,
|
||||
0x00,0x22,0x22,0x22,0x2a,0x2a,0x36,0x22,
|
||||
0x00,0x22,0x22,0x14,0x08,0x14,0x22,0x22,
|
||||
0x00,0x22,0x22,0x14,0x08,0x08,0x08,0x08,
|
||||
0x00,0x3e,0x02,0x04,0x08,0x10,0x20,0x3e,
|
||||
0x00,0x3e,0x30,0x30,0x30,0x30,0x30,0x3e,
|
||||
0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x00,
|
||||
0x00,0x3e,0x06,0x06,0x06,0x06,0x06,0x3e,
|
||||
0x00,0x00,0x00,0x08,0x14,0x22,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x08,0x08,0x08,0x08,0x08,0x00,0x08,
|
||||
0x00,0x14,0x14,0x14,0x00,0x00,0x00,0x00,
|
||||
0x00,0x14,0x14,0x3e,0x14,0x3e,0x14,0x14,
|
||||
0x00,0x08,0x1e,0x28,0x1c,0x0a,0x3c,0x08,
|
||||
0x00,0x30,0x32,0x04,0x08,0x10,0x26,0x06,
|
||||
0x00,0x10,0x28,0x28,0x10,0x2a,0x24,0x1a,
|
||||
0x00,0x08,0x08,0x08,0x00,0x00,0x00,0x00,
|
||||
0x00,0x08,0x10,0x20,0x20,0x20,0x10,0x08,
|
||||
0x00,0x08,0x04,0x02,0x02,0x02,0x04,0x08,
|
||||
0x00,0x08,0x2a,0x1c,0x08,0x1c,0x2a,0x08,
|
||||
0x00,0x00,0x08,0x08,0x3e,0x08,0x08,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x10,
|
||||
0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
|
||||
0x00,0x00,0x02,0x04,0x08,0x10,0x20,0x00,
|
||||
0x00,0x1c,0x22,0x26,0x2a,0x32,0x22,0x1c,
|
||||
0x00,0x08,0x18,0x08,0x08,0x08,0x08,0x1c,
|
||||
0x00,0x1c,0x22,0x02,0x0c,0x10,0x20,0x3e,
|
||||
0x00,0x3e,0x02,0x04,0x0c,0x02,0x22,0x1c,
|
||||
0x00,0x04,0x0c,0x14,0x24,0x3e,0x04,0x04,
|
||||
0x00,0x3e,0x20,0x3c,0x02,0x02,0x22,0x1c,
|
||||
0x00,0x0e,0x10,0x20,0x3c,0x22,0x22,0x1c,
|
||||
0x00,0x3e,0x02,0x04,0x08,0x10,0x10,0x10,
|
||||
0x00,0x1c,0x22,0x22,0x1c,0x22,0x22,0x1c,
|
||||
0x00,0x1c,0x22,0x22,0x1e,0x02,0x04,0x38,
|
||||
0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x00,
|
||||
0x00,0x00,0x00,0x08,0x00,0x08,0x08,0x10,
|
||||
0x00,0x04,0x08,0x10,0x20,0x10,0x08,0x04,
|
||||
0x00,0x00,0x00,0x3e,0x00,0x3e,0x00,0x00,
|
||||
0x00,0x10,0x08,0x04,0x02,0x04,0x08,0x10,
|
||||
0x00,0x1c,0x22,0x04,0x08,0x08,0x00,0x08
|
||||
];
|
42
js/roms/apple1char.ts
Normal file
42
js/roms/apple1char.ts
Normal file
@ -0,0 +1,42 @@
|
||||
export const charset = [
|
||||
0x00, 0x1c, 0x22, 0x2a, 0x2e, 0x2c, 0x20, 0x1e, 0x00, 0x08, 0x14, 0x22, 0x22,
|
||||
0x3e, 0x22, 0x22, 0x00, 0x3c, 0x22, 0x22, 0x3c, 0x22, 0x22, 0x3c, 0x00, 0x1c,
|
||||
0x22, 0x20, 0x20, 0x20, 0x22, 0x1c, 0x00, 0x3c, 0x22, 0x22, 0x22, 0x22, 0x22,
|
||||
0x3c, 0x00, 0x3e, 0x20, 0x20, 0x3c, 0x20, 0x20, 0x3e, 0x00, 0x3e, 0x20, 0x20,
|
||||
0x3c, 0x20, 0x20, 0x20, 0x00, 0x1e, 0x20, 0x20, 0x20, 0x26, 0x22, 0x1e, 0x00,
|
||||
0x22, 0x22, 0x22, 0x3e, 0x22, 0x22, 0x22, 0x00, 0x1c, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x1c, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x22, 0x1c, 0x00, 0x22, 0x24,
|
||||
0x28, 0x30, 0x28, 0x24, 0x22, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3e,
|
||||
0x00, 0x22, 0x36, 0x2a, 0x2a, 0x22, 0x22, 0x22, 0x00, 0x22, 0x22, 0x32, 0x2a,
|
||||
0x26, 0x22, 0x22, 0x00, 0x1c, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1c, 0x00, 0x3c,
|
||||
0x22, 0x22, 0x3c, 0x20, 0x20, 0x20, 0x00, 0x1c, 0x22, 0x22, 0x22, 0x2a, 0x24,
|
||||
0x1a, 0x00, 0x3c, 0x22, 0x22, 0x3c, 0x28, 0x24, 0x22, 0x00, 0x1c, 0x22, 0x20,
|
||||
0x1c, 0x02, 0x22, 0x1c, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
|
||||
0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1c, 0x00, 0x22, 0x22, 0x22, 0x22, 0x22,
|
||||
0x14, 0x08, 0x00, 0x22, 0x22, 0x22, 0x2a, 0x2a, 0x36, 0x22, 0x00, 0x22, 0x22,
|
||||
0x14, 0x08, 0x14, 0x22, 0x22, 0x00, 0x22, 0x22, 0x14, 0x08, 0x08, 0x08, 0x08,
|
||||
0x00, 0x3e, 0x02, 0x04, 0x08, 0x10, 0x20, 0x3e, 0x00, 0x3e, 0x30, 0x30, 0x30,
|
||||
0x30, 0x30, 0x3e, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x00, 0x3e,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x3e, 0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x08, 0x00,
|
||||
0x14, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x3e, 0x14, 0x3e,
|
||||
0x14, 0x14, 0x00, 0x08, 0x1e, 0x28, 0x1c, 0x0a, 0x3c, 0x08, 0x00, 0x30, 0x32,
|
||||
0x04, 0x08, 0x10, 0x26, 0x06, 0x00, 0x10, 0x28, 0x28, 0x10, 0x2a, 0x24, 0x1a,
|
||||
0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x20, 0x20,
|
||||
0x20, 0x10, 0x08, 0x00, 0x08, 0x04, 0x02, 0x02, 0x02, 0x04, 0x08, 0x00, 0x08,
|
||||
0x2a, 0x1c, 0x08, 0x1c, 0x2a, 0x08, 0x00, 0x00, 0x08, 0x08, 0x3e, 0x08, 0x08,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
|
||||
0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x1c, 0x22, 0x26, 0x2a, 0x32,
|
||||
0x22, 0x1c, 0x00, 0x08, 0x18, 0x08, 0x08, 0x08, 0x08, 0x1c, 0x00, 0x1c, 0x22,
|
||||
0x02, 0x0c, 0x10, 0x20, 0x3e, 0x00, 0x3e, 0x02, 0x04, 0x0c, 0x02, 0x22, 0x1c,
|
||||
0x00, 0x04, 0x0c, 0x14, 0x24, 0x3e, 0x04, 0x04, 0x00, 0x3e, 0x20, 0x3c, 0x02,
|
||||
0x02, 0x22, 0x1c, 0x00, 0x0e, 0x10, 0x20, 0x3c, 0x22, 0x22, 0x1c, 0x00, 0x3e,
|
||||
0x02, 0x04, 0x08, 0x10, 0x10, 0x10, 0x00, 0x1c, 0x22, 0x22, 0x1c, 0x22, 0x22,
|
||||
0x1c, 0x00, 0x1c, 0x22, 0x22, 0x1e, 0x02, 0x04, 0x38, 0x00, 0x00, 0x00, 0x08,
|
||||
0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x08, 0x10, 0x00,
|
||||
0x04, 0x08, 0x10, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x3e,
|
||||
0x00, 0x00, 0x00, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x00, 0x1c, 0x22,
|
||||
0x04, 0x08, 0x08, 0x00, 0x08,
|
||||
] as const;
|
537
js/roms/basic.js
537
js/roms/basic.js
@ -1,537 +0,0 @@
|
||||
export default function Basic() {
|
||||
var ram = [
|
||||
0x4c,0xb0,0xe2,0xad,0x11,0xd0,0x10,0xfb,
|
||||
0xad,0x10,0xd0,0x60,0x8a,0x29,0x20,0xf0,
|
||||
0x23,0xa9,0xa0,0x85,0xe4,0x4c,0xc9,0xe3,
|
||||
0xa9,0x20,0xc5,0x24,0xb0,0x0c,0xa9,0x8d,
|
||||
0xa0,0x07,0x20,0xc9,0xe3,0xa9,0xa0,0x88,
|
||||
0xd0,0xf8,0xa0,0x00,0xb1,0xe2,0xe6,0xe2,
|
||||
0xd0,0x02,0xe6,0xe3,0x60,0x20,0x15,0xe7,
|
||||
0x20,0x76,0xe5,0xa5,0xe2,0xc5,0xe6,0xa5,
|
||||
0xe3,0xe5,0xe7,0xb0,0xef,0x20,0x6d,0xe0,
|
||||
0x4c,0x3b,0xe0,0xa5,0xca,0x85,0xe2,0xa5,
|
||||
0xcb,0x85,0xe3,0xa5,0x4c,0x85,0xe6,0xa5,
|
||||
0x4d,0x85,0xe7,0xd0,0xde,0x20,0x15,0xe7,
|
||||
0x20,0x6d,0xe5,0xa5,0xe4,0x85,0xe2,0xa5,
|
||||
0xe5,0x85,0xe3,0xb0,0xc7,0x86,0xd8,0xa9,
|
||||
0xa0,0x85,0xfa,0x20,0x2a,0xe0,0x98,0x85,
|
||||
0xe4,0x20,0x2a,0xe0,0xaa,0x20,0x2a,0xe0,
|
||||
0x20,0x1b,0xe5,0x20,0x18,0xe0,0x84,0xfa,
|
||||
0xaa,0x10,0x18,0x0a,0x10,0xe9,0xa5,0xe4,
|
||||
0xd0,0x03,0x20,0x11,0xe0,0x8a,0x20,0xc9,
|
||||
0xe3,0xa9,0x25,0x20,0x1a,0xe0,0xaa,0x30,
|
||||
0xf5,0x85,0xe4,0xc9,0x01,0xd0,0x05,0xa6,
|
||||
0xd8,0x4c,0xcd,0xe3,0x48,0x84,0xce,0xa2,
|
||||
0xed,0x86,0xcf,0xc9,0x51,0x90,0x04,0xc6,
|
||||
0xcf,0xe9,0x50,0x48,0xb1,0xce,0xaa,0x88,
|
||||
0xb1,0xce,0x10,0xfa,0xe0,0xc0,0xb0,0x04,
|
||||
0xe0,0x00,0x30,0xf2,0xaa,0x68,0xe9,0x01,
|
||||
0xd0,0xe9,0x24,0xe4,0x30,0x03,0x20,0xf8,
|
||||
0xef,0xb1,0xce,0x10,0x10,0xaa,0x29,0x3f,
|
||||
0x85,0xe4,0x18,0x69,0xa0,0x20,0xc9,0xe3,
|
||||
0x88,0xe0,0xc0,0x90,0xec,0x20,0x0c,0xe0,
|
||||
0x68,0xc9,0x5d,0xf0,0xa4,0xc9,0x28,0xd0,
|
||||
0x8a,0xf0,0x9e,0x20,0x18,0xe1,0x95,0x50,
|
||||
0xd5,0x78,0x90,0x11,0xa0,0x2b,0x4c,0xe0,
|
||||
0xe3,0x20,0x34,0xee,0xd5,0x50,0x90,0xf4,
|
||||
0x20,0xe4,0xef,0x95,0x78,0x4c,0x23,0xe8,
|
||||
0x20,0x34,0xee,0xf0,0xe7,0x38,0xe9,0x01,
|
||||
0x60,0x20,0x18,0xe1,0x95,0x50,0x18,0xf5,
|
||||
0x78,0x4c,0x02,0xe1,0xa0,0x14,0xd0,0xd6,
|
||||
0x20,0x18,0xe1,0xe8,0xb5,0x50,0x85,0xda,
|
||||
0x65,0xce,0x48,0xa8,0xb5,0x78,0x85,0xdb,
|
||||
0x65,0xcf,0x48,0xc4,0xca,0xe5,0xcb,0xb0,
|
||||
0xe3,0xa5,0xda,0x69,0xfe,0x85,0xda,0xa9,
|
||||
0xff,0xa8,0x65,0xdb,0x85,0xdb,0xc8,0xb1,
|
||||
0xda,0xd9,0xcc,0x00,0xd0,0x0f,0x98,0xf0,
|
||||
0xf5,0x68,0x91,0xda,0x99,0xcc,0x00,0x88,
|
||||
0x10,0xf7,0xe8,0x60,0xea,0xa0,0x80,0xd0,
|
||||
0x95,0xa9,0x00,0x20,0x0a,0xe7,0xa0,0x02,
|
||||
0x94,0x78,0x20,0x0a,0xe7,0xa9,0xbf,0x20,
|
||||
0xc9,0xe3,0xa0,0x00,0x20,0x9e,0xe2,0x94,
|
||||
0x78,0xea,0xea,0xea,0xb5,0x51,0x85,0xce,
|
||||
0xb5,0x79,0x85,0xcf,0xe8,0xe8,0x20,0xbc,
|
||||
0xe1,0xb5,0x4e,0xd5,0x76,0xb0,0x15,0xf6,
|
||||
0x4e,0xa8,0xb1,0xce,0xb4,0x50,0xc4,0xe4,
|
||||
0x90,0x04,0xa0,0x83,0xd0,0xc1,0x91,0xda,
|
||||
0xf6,0x50,0x90,0xe5,0xb4,0x50,0x8a,0x91,
|
||||
0xda,0xe8,0xe8,0x60,0xb5,0x51,0x85,0xda,
|
||||
0x38,0xe9,0x02,0x85,0xe4,0xb5,0x79,0x85,
|
||||
0xdb,0xe9,0x00,0x85,0xe5,0xa0,0x00,0xb1,
|
||||
0xe4,0x18,0xe5,0xda,0x85,0xe4,0x60,0xb5,
|
||||
0x53,0x85,0xce,0xb5,0x7b,0x85,0xcf,0xb5,
|
||||
0x51,0x85,0xda,0xb5,0x79,0x85,0xdb,0xe8,
|
||||
0xe8,0xe8,0xa0,0x00,0x94,0x78,0x94,0xa0,
|
||||
0xc8,0x94,0x50,0xb5,0x4d,0xd5,0x75,0x08,
|
||||
0x48,0xb5,0x4f,0xd5,0x77,0x90,0x07,0x68,
|
||||
0x28,0xb0,0x02,0x56,0x50,0x60,0xa8,0xb1,
|
||||
0xce,0x85,0xe4,0x68,0xa8,0x28,0xb0,0xf3,
|
||||
0xb1,0xda,0xc5,0xe4,0xd0,0xed,0xf6,0x4f,
|
||||
0xf6,0x4d,0xb0,0xd7,0x20,0xd7,0xe1,0x4c,
|
||||
0x36,0xe7,0x20,0x54,0xe2,0x06,0xce,0x26,
|
||||
0xcf,0x90,0x0d,0x18,0xa5,0xe6,0x65,0xda,
|
||||
0x85,0xe6,0xa5,0xe7,0x65,0xdb,0x85,0xe7,
|
||||
0x88,0xf0,0x09,0x06,0xe6,0x26,0xe7,0x10,
|
||||
0xe4,0x4c,0x7e,0xe7,0xa5,0xe6,0x20,0x08,
|
||||
0xe7,0xa5,0xe7,0x95,0xa0,0x06,0xe5,0x90,
|
||||
0x28,0x4c,0x6f,0xe7,0xa9,0x55,0x85,0xe5,
|
||||
0x20,0x5b,0xe2,0xa5,0xce,0x85,0xda,0xa5,
|
||||
0xcf,0x85,0xdb,0x20,0x15,0xe7,0x84,0xe6,
|
||||
0x84,0xe7,0xa5,0xcf,0x10,0x09,0xca,0x06,
|
||||
0xe5,0x20,0x6f,0xe7,0x20,0x15,0xe7,0xa0,
|
||||
0x10,0x60,0x20,0x6c,0xee,0xf0,0xc5,0xff,
|
||||
0xc9,0x84,0xd0,0x02,0x46,0xf8,0xc9,0xdf,
|
||||
0xf0,0x11,0xc9,0x9b,0xf0,0x06,0x99,0x00,
|
||||
0x02,0xc8,0x10,0x0a,0xa0,0x8b,0x20,0xc4,
|
||||
0xe3,0xa0,0x01,0x88,0x30,0xf6,0x20,0x03,
|
||||
0xe0,0xea,0xea,0x20,0xc9,0xe3,0xc9,0x8d,
|
||||
0xd0,0xd6,0xa9,0xdf,0x99,0x00,0x02,0x60,
|
||||
0x20,0xd3,0xef,0x20,0xcd,0xe3,0x46,0xd9,
|
||||
0xa9,0xbe,0x20,0xc9,0xe3,0xa0,0x00,0x84,
|
||||
0xfa,0x24,0xf8,0x10,0x0c,0xa6,0xf6,0xa5,
|
||||
0xf7,0x20,0x1b,0xe5,0xa9,0xa0,0x20,0xc9,
|
||||
0xe3,0xa2,0xff,0x9a,0x20,0x9e,0xe2,0x84,
|
||||
0xf1,0x8a,0x85,0xc8,0xa2,0x20,0x20,0x91,
|
||||
0xe4,0xa5,0xc8,0x69,0x00,0x85,0xe0,0xa9,
|
||||
0x00,0xaa,0x69,0x02,0x85,0xe1,0xa1,0xe0,
|
||||
0x29,0xf0,0xc9,0xb0,0xf0,0x03,0x4c,0x83,
|
||||
0xe8,0xa0,0x02,0xb1,0xe0,0x99,0xcd,0x00,
|
||||
0x88,0xd0,0xf8,0x20,0x8a,0xe3,0xa5,0xf1,
|
||||
0xe5,0xc8,0xc9,0x04,0xf0,0xa8,0x91,0xe0,
|
||||
0xa5,0xca,0xf1,0xe0,0x85,0xe4,0xa5,0xcb,
|
||||
0xe9,0x00,0x85,0xe5,0xa5,0xe4,0xc5,0xcc,
|
||||
0xa5,0xe5,0xe5,0xcd,0x90,0x45,0xa5,0xca,
|
||||
0xf1,0xe0,0x85,0xe6,0xa5,0xcb,0xe9,0x00,
|
||||
0x85,0xe7,0xb1,0xca,0x91,0xe6,0xe6,0xca,
|
||||
0xd0,0x02,0xe6,0xcb,0xa5,0xe2,0xc5,0xca,
|
||||
0xa5,0xe3,0xe5,0xcb,0xb0,0xe0,0xb5,0xe4,
|
||||
0x95,0xca,0xca,0x10,0xf9,0xb1,0xe0,0xa8,
|
||||
0x88,0xb1,0xe0,0x91,0xe6,0x98,0xd0,0xf8,
|
||||
0x24,0xf8,0x10,0x09,0xb5,0xf7,0x75,0xf5,
|
||||
0x95,0xf7,0xe8,0xf0,0xf7,0x10,0x7e,0x00,
|
||||
0x00,0x00,0x00,0xa0,0x14,0xd0,0x71,0x20,
|
||||
0x15,0xe7,0xa5,0xe2,0x85,0xe6,0xa5,0xe3,
|
||||
0x85,0xe7,0x20,0x75,0xe5,0xa5,0xe2,0x85,
|
||||
0xe4,0xa5,0xe3,0x85,0xe5,0xd0,0x0e,0x20,
|
||||
0x15,0xe7,0x20,0x6d,0xe5,0xa5,0xe6,0x85,
|
||||
0xe2,0xa5,0xe7,0x85,0xe3,0xa0,0x00,0xa5,
|
||||
0xca,0xc5,0xe4,0xa5,0xcb,0xe5,0xe5,0xb0,
|
||||
0x16,0xa5,0xe4,0xd0,0x02,0xc6,0xe5,0xc6,
|
||||
0xe4,0xa5,0xe6,0xd0,0x02,0xc6,0xe7,0xc6,
|
||||
0xe6,0xb1,0xe4,0x91,0xe6,0x90,0xe0,0xa5,
|
||||
0xe6,0x85,0xca,0xa5,0xe7,0x85,0xcb,0x60,
|
||||
0x20,0xc9,0xe3,0xc8,0xb9,0x00,0xeb,0x30,
|
||||
0xf7,0xc9,0x8d,0xd0,0x06,0xa9,0x00,0x85,
|
||||
0x24,0xa9,0x8d,0xe6,0x24,0x2c,0xf2,0xd0,
|
||||
0x30,0xfb,0x8d,0xf2,0xd0,0x60,0xa0,0x06,
|
||||
0x20,0xd3,0xee,0x24,0xd9,0x30,0x03,0x4c,
|
||||
0xb6,0xe2,0x4c,0x9a,0xeb,0x2a,0x69,0xa0,
|
||||
0xdd,0x00,0x02,0xd0,0x53,0xb1,0xfe,0x0a,
|
||||
0x30,0x06,0x88,0xb1,0xfe,0x30,0x29,0xc8,
|
||||
0x86,0xc8,0x98,0x48,0xa2,0x00,0xa1,0xfe,
|
||||
0xaa,0x4a,0x49,0x48,0x11,0xfe,0xc9,0xc0,
|
||||
0x90,0x01,0xe8,0xc8,0xd0,0xf3,0x68,0xa8,
|
||||
0x8a,0x4c,0xc0,0xe4,0xe6,0xf1,0xa6,0xf1,
|
||||
0xf0,0xbc,0x9d,0x00,0x02,0x60,0xa6,0xc8,
|
||||
0xa9,0xa0,0xe8,0xdd,0x00,0x02,0xb0,0xfa,
|
||||
0xb1,0xfe,0x29,0x3f,0x4a,0xd0,0xb6,0xbd,
|
||||
0x00,0x02,0xb0,0x06,0x69,0x3f,0xc9,0x1a,
|
||||
0x90,0x6f,0x69,0x4f,0xc9,0x0a,0x90,0x69,
|
||||
0xa6,0xfd,0xc8,0xb1,0xfe,0x29,0xe0,0xc9,
|
||||
0x20,0xf0,0x7a,0xb5,0xa8,0x85,0xc8,0xb5,
|
||||
0xd1,0x85,0xf1,0x88,0xb1,0xfe,0x0a,0x10,
|
||||
0xfa,0x88,0xb0,0x38,0x0a,0x30,0x35,0xb4,
|
||||
0x58,0x84,0xff,0xb4,0x80,0xe8,0x10,0xda,
|
||||
0xf0,0xb3,0xc9,0x7e,0xb0,0x22,0xca,0x10,
|
||||
0x04,0xa0,0x06,0x10,0x29,0x94,0x80,0xa4,
|
||||
0xff,0x94,0x58,0xa4,0xc8,0x94,0xa8,0xa4,
|
||||
0xf1,0x94,0xd1,0x29,0x1f,0xa8,0xb9,0x20,
|
||||
0xec,0x0a,0xa8,0xa9,0x76,0x2a,0x85,0xff,
|
||||
0xd0,0x01,0xc8,0xc8,0x86,0xfd,0xb1,0xfe,
|
||||
0x30,0x84,0xd0,0x05,0xa0,0x0e,0x4c,0xe0,
|
||||
0xe3,0xc9,0x03,0xb0,0xc3,0x4a,0xa6,0xc8,
|
||||
0xe8,0xbd,0x00,0x02,0x90,0x04,0xc9,0xa2,
|
||||
0xf0,0x0a,0xc9,0xdf,0xf0,0x06,0x86,0xc8,
|
||||
0x20,0x1c,0xe4,0xc8,0x88,0xa6,0xfd,0xb1,
|
||||
0xfe,0x88,0x0a,0x10,0xcf,0xb4,0x58,0x84,
|
||||
0xff,0xb4,0x80,0xe8,0xb1,0xfe,0x29,0x9f,
|
||||
0xd0,0xed,0x85,0xf2,0x85,0xf3,0x98,0x48,
|
||||
0x86,0xfd,0xb4,0xd0,0x84,0xc9,0x18,0xa9,
|
||||
0x0a,0x85,0xf9,0xa2,0x00,0xc8,0xb9,0x00,
|
||||
0x02,0x29,0x0f,0x65,0xf2,0x48,0x8a,0x65,
|
||||
0xf3,0x30,0x1c,0xaa,0x68,0xc6,0xf9,0xd0,
|
||||
0xf2,0x85,0xf2,0x86,0xf3,0xc4,0xf1,0xd0,
|
||||
0xde,0xa4,0xc9,0xc8,0x84,0xf1,0x20,0x1c,
|
||||
0xe4,0x68,0xa8,0xa5,0xf3,0xb0,0xa9,0xa0,
|
||||
0x00,0x10,0x8b,0x85,0xf3,0x86,0xf2,0xa2,
|
||||
0x04,0x86,0xc9,0xa9,0xb0,0x85,0xf9,0xa5,
|
||||
0xf2,0xdd,0x63,0xe5,0xa5,0xf3,0xfd,0x68,
|
||||
0xe5,0x90,0x0d,0x85,0xf3,0xa5,0xf2,0xfd,
|
||||
0x63,0xe5,0x85,0xf2,0xe6,0xf9,0xd0,0xe7,
|
||||
0xa5,0xf9,0xe8,0xca,0xf0,0x0e,0xc9,0xb0,
|
||||
0xf0,0x02,0x85,0xc9,0x24,0xc9,0x30,0x04,
|
||||
0xa5,0xfa,0xf0,0x0b,0x20,0xc9,0xe3,0x24,
|
||||
0xf8,0x10,0x04,0x99,0x00,0x02,0xc8,0xca,
|
||||
0x10,0xc1,0x60,0x01,0x0a,0x64,0xe8,0x10,
|
||||
0x00,0x00,0x00,0x03,0x27,0xa5,0xca,0x85,
|
||||
0xe6,0xa5,0xcb,0x85,0xe7,0xe8,0xa5,0xe7,
|
||||
0x85,0xe5,0xa5,0xe6,0x85,0xe4,0xc5,0x4c,
|
||||
0xa5,0xe5,0xe5,0x4d,0xb0,0x26,0xa0,0x01,
|
||||
0xb1,0xe4,0xe5,0xce,0xc8,0xb1,0xe4,0xe5,
|
||||
0xcf,0xb0,0x19,0xa0,0x00,0xa5,0xe6,0x71,
|
||||
0xe4,0x85,0xe6,0x90,0x03,0xe6,0xe7,0x18,
|
||||
0xc8,0xa5,0xce,0xf1,0xe4,0xc8,0xa5,0xcf,
|
||||
0xf1,0xe4,0xb0,0xca,0x60,0x46,0xf8,0xa5,
|
||||
0x4c,0x85,0xca,0xa5,0x4d,0x85,0xcb,0xa5,
|
||||
0x4a,0x85,0xcc,0xa5,0x4b,0x85,0xcd,0xa9,
|
||||
0x00,0x85,0xfb,0x85,0xfc,0x85,0xfe,0xa9,
|
||||
0x00,0x85,0x1d,0x60,0xa5,0xd0,0x69,0x05,
|
||||
0x85,0xd2,0xa5,0xd1,0x69,0x00,0x85,0xd3,
|
||||
0xa5,0xd2,0xc5,0xca,0xa5,0xd3,0xe5,0xcb,
|
||||
0x90,0x03,0x4c,0x6b,0xe3,0xa5,0xce,0x91,
|
||||
0xd0,0xa5,0xcf,0xc8,0x91,0xd0,0xa5,0xd2,
|
||||
0xc8,0x91,0xd0,0xa5,0xd3,0xc8,0x91,0xd0,
|
||||
0xa9,0x00,0xc8,0x91,0xd0,0xc8,0x91,0xd0,
|
||||
0xa5,0xd2,0x85,0xcc,0xa5,0xd3,0x85,0xcd,
|
||||
0xa5,0xd0,0x90,0x43,0x85,0xce,0x84,0xcf,
|
||||
0x20,0xff,0xe6,0x30,0x0e,0xc9,0x40,0xf0,
|
||||
0x0a,0x4c,0x28,0xe6,0x06,0xc9,0x49,0xd0,
|
||||
0x07,0xa9,0x49,0x85,0xcf,0x20,0xff,0xe6,
|
||||
0xa5,0x4b,0x85,0xd1,0xa5,0x4a,0x85,0xd0,
|
||||
0xc5,0xcc,0xa5,0xd1,0xe5,0xcd,0xb0,0x94,
|
||||
0xb1,0xd0,0xc8,0xc5,0xce,0xd0,0x06,0xb1,
|
||||
0xd0,0xc5,0xcf,0xf0,0x0e,0xc8,0xb1,0xd0,
|
||||
0x48,0xc8,0xb1,0xd0,0x85,0xd1,0x68,0xa0,
|
||||
0x00,0xf0,0xdb,0xa5,0xd0,0x69,0x03,0x20,
|
||||
0x0a,0xe7,0xa5,0xd1,0x69,0x00,0x95,0x78,
|
||||
0xa5,0xcf,0xc9,0x40,0xd0,0x1c,0x88,0x98,
|
||||
0x20,0x0a,0xe7,0x88,0x94,0x78,0xa0,0x03,
|
||||
0xf6,0x78,0xc8,0xb1,0xd0,0x30,0xf9,0x10,
|
||||
0x09,0xa9,0x00,0x85,0xd4,0x85,0xd5,0xa2,
|
||||
0x20,0x48,0xa0,0x00,0xb1,0xe0,0x10,0x18,
|
||||
0x0a,0x30,0x81,0x20,0xff,0xe6,0x20,0x08,
|
||||
0xe7,0x20,0xff,0xe6,0x95,0xa0,0x24,0xd4,
|
||||
0x10,0x01,0xca,0x20,0xff,0xe6,0xb0,0xe6,
|
||||
0xc9,0x28,0xd0,0x1f,0xa5,0xe0,0x20,0x0a,
|
||||
0xe7,0xa5,0xe1,0x95,0x78,0x24,0xd4,0x30,
|
||||
0x0b,0xa9,0x01,0x20,0x0a,0xe7,0xa9,0x00,
|
||||
0x95,0x78,0xf6,0x78,0x20,0xff,0xe6,0x30,
|
||||
0xf9,0xb0,0xd3,0x24,0xd4,0x10,0x06,0xc9,
|
||||
0x04,0xb0,0xd0,0x46,0xd4,0xa8,0x85,0xd6,
|
||||
0xb9,0x98,0xe9,0x29,0x55,0x0a,0x85,0xd7,
|
||||
0x68,0xa8,0xb9,0x98,0xe9,0x29,0xaa,0xc5,
|
||||
0xd7,0xb0,0x09,0x98,0x48,0x20,0xff,0xe6,
|
||||
0xa5,0xd6,0x90,0x95,0xb9,0x10,0xea,0x85,
|
||||
0xce,0xb9,0x88,0xea,0x85,0xcf,0x20,0xfc,
|
||||
0xe6,0x4c,0xd8,0xe6,0x6c,0xce,0x00,0xe6,
|
||||
0xe0,0xd0,0x02,0xe6,0xe1,0xb1,0xe0,0x60,
|
||||
0x94,0x77,0xca,0x30,0x03,0x95,0x50,0x60,
|
||||
0xa0,0x66,0x4c,0xe0,0xe3,0xa0,0x00,0xb5,
|
||||
0x50,0x85,0xce,0xb5,0xa0,0x85,0xcf,0xb5,
|
||||
0x78,0xf0,0x0e,0x85,0xcf,0xb1,0xce,0x48,
|
||||
0xc8,0xb1,0xce,0x85,0xcf,0x68,0x85,0xce,
|
||||
0x88,0xe8,0x60,0x20,0x4a,0xe7,0x20,0x15,
|
||||
0xe7,0x98,0x20,0x08,0xe7,0x95,0xa0,0xc5,
|
||||
0xce,0xd0,0x06,0xc5,0xcf,0xd0,0x02,0xf6,
|
||||
0x50,0x60,0x20,0x82,0xe7,0x20,0x59,0xe7,
|
||||
0x20,0x15,0xe7,0x24,0xcf,0x30,0x1b,0xca,
|
||||
0x60,0x20,0x15,0xe7,0xa5,0xcf,0xd0,0x04,
|
||||
0xa5,0xce,0xf0,0xf3,0xa9,0xff,0x20,0x08,
|
||||
0xe7,0x95,0xa0,0x24,0xcf,0x30,0xe9,0x20,
|
||||
0x15,0xe7,0x98,0x38,0xe5,0xce,0x20,0x08,
|
||||
0xe7,0x98,0xe5,0xcf,0x50,0x23,0xa0,0x00,
|
||||
0x10,0x90,0x20,0x6f,0xe7,0x20,0x15,0xe7,
|
||||
0xa5,0xce,0x85,0xda,0xa5,0xcf,0x85,0xdb,
|
||||
0x20,0x15,0xe7,0x18,0xa5,0xce,0x65,0xda,
|
||||
0x20,0x08,0xe7,0xa5,0xcf,0x65,0xdb,0x70,
|
||||
0xdd,0x95,0xa0,0x60,0x20,0x15,0xe7,0xa4,
|
||||
0xce,0xf0,0x05,0x88,0xa5,0xcf,0xf0,0x0c,
|
||||
0x60,0xa5,0x24,0x09,0x07,0xa8,0xc8,0xa9,
|
||||
0xa0,0x20,0xc9,0xe3,0xc4,0x24,0xb0,0xf7,
|
||||
0x60,0x20,0xb1,0xe7,0x20,0x15,0xe7,0xa5,
|
||||
0xcf,0x10,0x0a,0xa9,0xad,0x20,0xc9,0xe3,
|
||||
0x20,0x72,0xe7,0x50,0xef,0x88,0x84,0xd5,
|
||||
0x86,0xcf,0xa6,0xce,0x20,0x1b,0xe5,0xa6,
|
||||
0xcf,0x60,0x20,0x15,0xe7,0xa5,0xce,0x85,
|
||||
0xf6,0xa5,0xcf,0x85,0xf7,0x88,0x84,0xf8,
|
||||
0xc8,0xa9,0x0a,0x85,0xf4,0x84,0xf5,0x60,
|
||||
0x20,0x15,0xe7,0xa5,0xce,0xa4,0xcf,0x10,
|
||||
0xf2,0x20,0x15,0xe7,0xb5,0x50,0x85,0xda,
|
||||
0xb5,0x78,0x85,0xdb,0xa5,0xce,0x91,0xda,
|
||||
0xc8,0xa5,0xcf,0x91,0xda,0xe8,0x60,0x68,
|
||||
0x68,0x24,0xd5,0x10,0x05,0x20,0xcd,0xe3,
|
||||
0x46,0xd5,0x60,0xa0,0xff,0x84,0xd7,0x60,
|
||||
0x20,0xcd,0xef,0xf0,0x07,0xa9,0x25,0x85,
|
||||
0xd6,0x88,0x84,0xd4,0xe8,0x60,0xa5,0xca,
|
||||
0xa4,0xcb,0xd0,0x5a,0xa0,0x41,0xa5,0xfc,
|
||||
0xc9,0x08,0xb0,0x5e,0xa8,0xe6,0xfc,0xa5,
|
||||
0xe0,0x99,0x00,0x01,0xa5,0xe1,0x99,0x08,
|
||||
0x01,0xa5,0xdc,0x99,0x10,0x01,0xa5,0xdd,
|
||||
0x99,0x18,0x01,0x20,0x15,0xe7,0x20,0x6d,
|
||||
0xe5,0x90,0x04,0xa0,0x37,0xd0,0x3b,0xa5,
|
||||
0xe4,0xa4,0xe5,0x85,0xdc,0x84,0xdd,0x2c,
|
||||
0x11,0xd0,0x30,0x4f,0x18,0x69,0x03,0x90,
|
||||
0x01,0xc8,0xa2,0xff,0x86,0xd9,0x9a,0x85,
|
||||
0xe0,0x84,0xe1,0x20,0x79,0xe6,0x24,0xd9,
|
||||
0x10,0x49,0x18,0xa0,0x00,0xa5,0xdc,0x71,
|
||||
0xdc,0xa4,0xdd,0x90,0x01,0xc8,0xc5,0x4c,
|
||||
0xd0,0xd1,0xc4,0x4d,0xd0,0xcd,0xa0,0x34,
|
||||
0x46,0xd9,0x4c,0xe0,0xe3,0xa0,0x4a,0xa5,
|
||||
0xfc,0xf0,0xf7,0xc6,0xfc,0xa8,0xb9,0x0f,
|
||||
0x01,0x85,0xdc,0xb9,0x17,0x01,0x85,0xdd,
|
||||
0xbe,0xff,0x00,0xb9,0x07,0x01,0xa8,0x8a,
|
||||
0x4c,0x7a,0xe8,0xa0,0x63,0x20,0xc4,0xe3,
|
||||
0xa0,0x01,0xb1,0xdc,0xaa,0xc8,0xb1,0xdc,
|
||||
0x20,0x1b,0xe5,0x4c,0xb3,0xe2,0xc6,0xfb,
|
||||
0xa0,0x5b,0xa5,0xfb,0xf0,0xc4,0xa8,0xb5,
|
||||
0x50,0xd9,0x1f,0x01,0xd0,0xf0,0xb5,0x78,
|
||||
0xd9,0x27,0x01,0xd0,0xe9,0xb9,0x2f,0x01,
|
||||
0x85,0xda,0xb9,0x37,0x01,0x85,0xdb,0x20,
|
||||
0x15,0xe7,0xca,0x20,0x93,0xe7,0x20,0x01,
|
||||
0xe8,0xca,0xa4,0xfb,0xb9,0x67,0x01,0x95,
|
||||
0x9f,0xb9,0x5f,0x01,0xa0,0x00,0x20,0x08,
|
||||
0xe7,0x20,0x82,0xe7,0x20,0x59,0xe7,0x20,
|
||||
0x15,0xe7,0xa4,0xfb,0xa5,0xce,0xf0,0x05,
|
||||
0x59,0x37,0x01,0x10,0x12,0xb9,0x3f,0x01,
|
||||
0x85,0xdc,0xb9,0x47,0x01,0x85,0xdd,0xbe,
|
||||
0x4f,0x01,0xb9,0x57,0x01,0xd0,0x87,0xc6,
|
||||
0xfb,0x60,0xa0,0x54,0xa5,0xfb,0xc9,0x08,
|
||||
0xf0,0x9a,0xe6,0xfb,0xa8,0xb5,0x50,0x99,
|
||||
0x20,0x01,0xb5,0x78,0x99,0x28,0x01,0x60,
|
||||
0x20,0x15,0xe7,0xa4,0xfb,0xa5,0xce,0x99,
|
||||
0x5f,0x01,0xa5,0xcf,0x99,0x67,0x01,0xa9,
|
||||
0x01,0x99,0x2f,0x01,0xa9,0x00,0x99,0x37,
|
||||
0x01,0xa5,0xdc,0x99,0x3f,0x01,0xa5,0xdd,
|
||||
0x99,0x47,0x01,0xa5,0xe0,0x99,0x4f,0x01,
|
||||
0xa5,0xe1,0x99,0x57,0x01,0x60,0x20,0x15,
|
||||
0xe7,0xa4,0xfb,0xa5,0xce,0x99,0x2f,0x01,
|
||||
0xa5,0xcf,0x4c,0x66,0xe9,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0xab,0x03,0x03,0x03,0x03,
|
||||
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
|
||||
0x03,0x03,0x3f,0x3f,0xc0,0xc0,0x3c,0x3c,
|
||||
0x3c,0x3c,0x3c,0x3c,0x3c,0x30,0x0f,0xc0,
|
||||
0xcc,0xff,0x55,0x00,0xab,0xab,0x03,0x03,
|
||||
0xff,0xff,0x55,0xff,0xff,0x55,0xcf,0xcf,
|
||||
0xcf,0xcf,0xcf,0xff,0x55,0xc3,0xc3,0xc3,
|
||||
0x55,0xf0,0xf0,0xcf,0x56,0x56,0x56,0x55,
|
||||
0xff,0xff,0x55,0x03,0x03,0x03,0x03,0x03,
|
||||
0x03,0x03,0xff,0xff,0xff,0x03,0x03,0x03,
|
||||
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
|
||||
0x03,0x03,0x03,0x03,0x03,0x00,0xab,0x03,
|
||||
0x57,0x03,0x03,0x03,0x03,0x07,0x03,0x03,
|
||||
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
|
||||
0x03,0x03,0xaa,0xff,0xff,0xff,0xff,0xff,
|
||||
0x17,0xff,0xff,0x19,0x5d,0x35,0x4b,0xf2,
|
||||
0xec,0x87,0x6f,0xad,0xb7,0xe2,0xf8,0x54,
|
||||
0x80,0x96,0x85,0x82,0x22,0x10,0x33,0x4a,
|
||||
0x13,0x06,0x0b,0x4a,0x01,0x40,0x47,0x7a,
|
||||
0x00,0xff,0x23,0x09,0x5b,0x16,0xb6,0xcb,
|
||||
0xff,0xff,0xfb,0xff,0xff,0x24,0xf6,0x4e,
|
||||
0x59,0x50,0x00,0xff,0x23,0xa3,0x6f,0x36,
|
||||
0x23,0xd7,0x1c,0x22,0xc2,0xae,0xba,0x23,
|
||||
0xff,0xff,0x21,0x30,0x1e,0x03,0xc4,0x20,
|
||||
0x00,0xc1,0xff,0xff,0xff,0xa0,0x30,0x1e,
|
||||
0xa4,0xd3,0xb6,0xbc,0xaa,0x3a,0x01,0x50,
|
||||
0x7e,0xd8,0xd8,0xa5,0x3c,0xff,0x16,0x5b,
|
||||
0x28,0x03,0xc4,0x1d,0x00,0x0c,0x4e,0x00,
|
||||
0x3e,0x00,0xa6,0xb0,0x00,0xbc,0xc6,0x57,
|
||||
0x8c,0x01,0x27,0xff,0xff,0xff,0xff,0xff,
|
||||
0xe8,0xff,0xff,0xe8,0xe0,0xe0,0xe0,0xef,
|
||||
0xef,0xe3,0xe3,0xe5,0xe5,0xe7,0xe7,0xee,
|
||||
0xef,0xef,0xe7,0xe7,0xe2,0xef,0xe7,0xe7,
|
||||
0xec,0xec,0xec,0xe7,0xec,0xec,0xec,0xe2,
|
||||
0x00,0xff,0xe8,0xe1,0xe8,0xe8,0xef,0xeb,
|
||||
0xff,0xff,0xe0,0xff,0xff,0xef,0xee,0xef,
|
||||
0xe7,0xe7,0x00,0xff,0xe8,0xe7,0xe7,0xe7,
|
||||
0xe8,0xe1,0xe2,0xee,0xee,0xee,0xee,0xe8,
|
||||
0xff,0xff,0xe1,0xe1,0xef,0xee,0xe7,0xe8,
|
||||
0xee,0xe7,0xff,0xff,0xff,0xee,0xe1,0xef,
|
||||
0xe7,0xe8,0xef,0xef,0xeb,0xe9,0xe8,0xe9,
|
||||
0xe9,0xe8,0xe8,0xe8,0xe8,0xff,0xe8,0xe8,
|
||||
0xe8,0xee,0xe7,0xe8,0xef,0xef,0xee,0xef,
|
||||
0xee,0xef,0xee,0xee,0xef,0xee,0xee,0xee,
|
||||
0xe1,0xe8,0xe8,0xff,0xff,0xff,0xff,0xff,
|
||||
0xbe,0xb3,0xb2,0xb7,0xb6,0x37,0xd4,0xcf,
|
||||
0xcf,0xa0,0xcc,0xcf,0xce,0x47,0xd3,0xd9,
|
||||
0xce,0xd4,0xc1,0x58,0xcd,0xc5,0xcd,0xa0,
|
||||
0xc6,0xd5,0xcc,0x4c,0xd4,0xcf,0xcf,0xa0,
|
||||
0xcd,0xc1,0xce,0xd9,0xa0,0xd0,0xc1,0xd2,
|
||||
0xc5,0xce,0x53,0xd3,0xd4,0xd2,0xc9,0xce,
|
||||
0x47,0xce,0xcf,0xa0,0xc5,0xce,0x44,0xc2,
|
||||
0xc1,0xc4,0xa0,0xc2,0xd2,0xc1,0xce,0xc3,
|
||||
0x48,0xbe,0xb8,0xa0,0xc7,0xcf,0xd3,0xd5,
|
||||
0xc2,0x53,0xc2,0xc1,0xc4,0xa0,0xd2,0xc5,
|
||||
0xd4,0xd5,0xd2,0x4e,0xbe,0xb8,0xa0,0xc6,
|
||||
0xcf,0xd2,0x53,0xc2,0xc1,0xc4,0xa0,0xce,
|
||||
0xc5,0xd8,0x54,0xd3,0xd4,0xcf,0xd0,0xd0,
|
||||
0xc5,0xc4,0xa0,0xc1,0xd4,0x20,0xaa,0xaa,
|
||||
0xaa,0x20,0xa0,0xc5,0xd2,0xd2,0x0d,0xbe,
|
||||
0xb2,0xb5,0x35,0xd2,0xc1,0xce,0xc7,0x45,
|
||||
0xc4,0xc9,0x4d,0xd3,0xd4,0xd2,0xa0,0xcf,
|
||||
0xd6,0xc6,0x4c,0xdc,0x0d,0xd2,0xc5,0xd4,
|
||||
0xd9,0xd0,0xc5,0xa0,0xcc,0xc9,0xce,0xc5,
|
||||
0x8d,0x3f,0x46,0xd9,0x90,0x03,0x4c,0xc3,
|
||||
0xe8,0xa6,0xcf,0x9a,0xa6,0xce,0xa0,0x8d,
|
||||
0xd0,0x02,0xa0,0x99,0x20,0xc4,0xe3,0x86,
|
||||
0xce,0xba,0x86,0xcf,0xa0,0xfe,0x84,0xd9,
|
||||
0xc8,0x84,0xc8,0x20,0x99,0xe2,0x84,0xf1,
|
||||
0xa2,0x20,0xa9,0x30,0x20,0x91,0xe4,0xe6,
|
||||
0xd9,0xa6,0xce,0xa4,0xc8,0x0a,0x85,0xce,
|
||||
0xc8,0xb9,0x00,0x02,0xc9,0x74,0xf0,0xd2,
|
||||
0x49,0xb0,0xc9,0x0a,0xb0,0xf0,0xc8,0xc8,
|
||||
0x84,0xc8,0xb9,0x00,0x02,0x48,0xb9,0xff,
|
||||
0x01,0xa0,0x00,0x20,0x08,0xe7,0x68,0x95,
|
||||
0xa0,0xa5,0xce,0xc9,0xc7,0xd0,0x03,0x20,
|
||||
0x6f,0xe7,0x4c,0x01,0xe8,0xff,0xff,0xff,
|
||||
0x50,0x20,0x13,0xec,0xd0,0x15,0x20,0x0b,
|
||||
0xec,0xd0,0x10,0x20,0x82,0xe7,0x20,0x6f,
|
||||
0xe7,0x50,0x03,0x20,0x82,0xe7,0x20,0x59,
|
||||
0xe7,0x56,0x50,0x4c,0x36,0xe7,0xff,0xff,
|
||||
0xc1,0xff,0x7f,0xd1,0xcc,0xc7,0xcf,0xce,
|
||||
0xc5,0x9a,0x98,0x8b,0x96,0x95,0x93,0xbf,
|
||||
0xb2,0x32,0x2d,0x2b,0xbc,0xb0,0xac,0xbe,
|
||||
0x35,0x8e,0x61,0xff,0xff,0xff,0xdd,0xfb,
|
||||
0x20,0xc9,0xef,0x15,0x4f,0x10,0x05,0x20,
|
||||
0xc9,0xef,0x35,0x4f,0x95,0x50,0x10,0xcb,
|
||||
0x4c,0xc9,0xef,0x40,0x60,0x8d,0x60,0x8b,
|
||||
0x00,0x7e,0x8c,0x33,0x00,0x00,0x60,0x03,
|
||||
0xbf,0x12,0x00,0x40,0x89,0xc9,0x47,0x9d,
|
||||
0x17,0x68,0x9d,0x0a,0x00,0x40,0x60,0x8d,
|
||||
0x60,0x8b,0x00,0x7e,0x8c,0x3c,0x00,0x00,
|
||||
0x60,0x03,0xbf,0x1b,0x4b,0x67,0xb4,0xa1,
|
||||
0x07,0x8c,0x07,0xae,0xa9,0xac,0xa8,0x67,
|
||||
0x8c,0x07,0xb4,0xaf,0xac,0xb0,0x67,0x9d,
|
||||
0xb2,0xaf,0xac,0xaf,0xa3,0x67,0x8c,0x07,
|
||||
0xa5,0xab,0xaf,0xb0,0xf4,0xae,0xa9,0xb2,
|
||||
0xb0,0x7f,0x0e,0x27,0xb4,0xae,0xa9,0xb2,
|
||||
0xb0,0x7f,0x0e,0x28,0xb4,0xae,0xa9,0xb2,
|
||||
0xb0,0x64,0x07,0xa6,0xa9,0x67,0xaf,0xb4,
|
||||
0xaf,0xa7,0x78,0xb4,0xa5,0xac,0x78,0x7f,
|
||||
0x02,0xad,0xa5,0xb2,0x67,0xa2,0xb5,0xb3,
|
||||
0xaf,0xa7,0xee,0xb2,0xb5,0xb4,0xa5,0xb2,
|
||||
0x7e,0x8c,0x39,0xb4,0xb8,0xa5,0xae,0x67,
|
||||
0xb0,0xa5,0xb4,0xb3,0x27,0xaf,0xb4,0x07,
|
||||
0x9d,0x19,0xb2,0xaf,0xa6,0x7f,0x05,0x37,
|
||||
0xb4,0xb5,0xb0,0xae,0xa9,0x7f,0x05,0x28,
|
||||
0xb4,0xb5,0xb0,0xae,0xa9,0x7f,0x05,0x2a,
|
||||
0xb4,0xb5,0xb0,0xae,0xa9,0xe4,0xae,0xa5,
|
||||
0x00,0xff,0xff,0x47,0xa2,0xa1,0xb4,0x7f,
|
||||
0x0d,0x30,0xad,0xa9,0xa4,0x7f,0x0d,0x23,
|
||||
0xad,0xa9,0xa4,0x67,0xac,0xac,0xa1,0xa3,
|
||||
0x00,0x40,0x80,0xc0,0xc1,0x80,0x00,0x47,
|
||||
0x8c,0x68,0x8c,0xdb,0x67,0x9b,0x68,0x9b,
|
||||
0x50,0x8c,0x63,0x8c,0x7f,0x01,0x51,0x07,
|
||||
0x88,0x29,0x84,0x80,0xc4,0x80,0x57,0x71,
|
||||
0x07,0x88,0x14,0xed,0xa5,0xad,0xaf,0xac,
|
||||
0xed,0xa5,0xad,0xa9,0xa8,0xf2,0xaf,0xac,
|
||||
0xaf,0xa3,0x71,0x08,0x88,0xae,0xa5,0xac,
|
||||
0x68,0x83,0x08,0x68,0x9d,0x08,0x71,0x07,
|
||||
0x88,0x60,0x76,0xb4,0xaf,0xae,0x76,0x8d,
|
||||
0x76,0x8b,0x51,0x07,0x88,0x19,0xb8,0xa4,
|
||||
0xae,0xb2,0xf2,0xb3,0xb5,0xf3,0xa2,0xa1,
|
||||
0xee,0xa7,0xb3,0xe4,0xae,0xb2,0xeb,0xa5,
|
||||
0xa5,0xb0,0x51,0x07,0x88,0x39,0x81,0xc1,
|
||||
0x4f,0x7f,0x0f,0x2f,0x00,0x51,0x06,0x88,
|
||||
0x29,0xc2,0x0c,0x82,0x57,0x8c,0x6a,0x8c,
|
||||
0x42,0xae,0xa5,0xa8,0xb4,0x60,0xae,0xa5,
|
||||
0xa8,0xb4,0x4f,0x7e,0x1e,0x35,0x8c,0x27,
|
||||
0x51,0x07,0x88,0x09,0x8b,0xfe,0xe4,0xaf,
|
||||
0xad,0xf2,0xaf,0xe4,0xae,0xa1,0xdc,0xde,
|
||||
0x9c,0xdd,0x9c,0xde,0xdd,0x9e,0xc3,0xdd,
|
||||
0xcf,0xca,0xcd,0xcb,0x00,0x47,0x9d,0xad,
|
||||
0xa5,0xad,0xaf,0xac,0x76,0x9d,0xad,0xa5,
|
||||
0xad,0xa9,0xa8,0xe6,0xa6,0xaf,0x60,0x8c,
|
||||
0x20,0xaf,0xb4,0xb5,0xa1,0xf2,0xac,0xa3,
|
||||
0xf2,0xa3,0xb3,0x60,0x8c,0x20,0xac,0xa5,
|
||||
0xa4,0xee,0xb5,0xb2,0x60,0xae,0xb5,0xb2,
|
||||
0xf4,0xb3,0xa9,0xac,0x60,0x8c,0x20,0xb4,
|
||||
0xb3,0xa9,0xac,0x7a,0x7e,0x9a,0x22,0x20,
|
||||
0x00,0x60,0x03,0xbf,0x60,0x03,0xbf,0x1f,
|
||||
0x20,0xb1,0xe7,0xe8,0xe8,0xb5,0x4f,0x85,
|
||||
0xda,0xb5,0x77,0x85,0xdb,0xb4,0x4e,0x98,
|
||||
0xd5,0x76,0xb0,0x09,0xb1,0xda,0x20,0xc9,
|
||||
0xe3,0xc8,0x4c,0x0f,0xee,0xa9,0xff,0x85,
|
||||
0xd5,0x60,0xe8,0xa9,0x00,0x95,0x78,0x95,
|
||||
0xa0,0xb5,0x77,0x38,0xf5,0x4f,0x95,0x50,
|
||||
0x4c,0x23,0xe8,0xff,0x20,0x15,0xe7,0xa5,
|
||||
0xcf,0xd0,0x28,0xa5,0xce,0x60,0x20,0x34,
|
||||
0xee,0xa4,0xc8,0xc9,0x30,0xb0,0x21,0xc0,
|
||||
0x28,0xb0,0x1d,0x60,0xea,0xea,0x20,0x34,
|
||||
0xee,0x60,0xea,0x8a,0xa2,0x01,0xb4,0xce,
|
||||
0x94,0x4c,0xb4,0x48,0x94,0xca,0xca,0xf0,
|
||||
0xf5,0xaa,0x60,0xa0,0x77,0x4c,0xe0,0xe3,
|
||||
0xa0,0x7b,0xd0,0xf9,0x20,0x54,0xe2,0xa5,
|
||||
0xda,0xd0,0x07,0xa5,0xdb,0xd0,0x03,0x4c,
|
||||
0x7e,0xe7,0x06,0xce,0x26,0xcf,0x26,0xe6,
|
||||
0x26,0xe7,0xa5,0xe6,0xc5,0xda,0xa5,0xe7,
|
||||
0xe5,0xdb,0x90,0x0a,0x85,0xe7,0xa5,0xe6,
|
||||
0xe5,0xda,0x85,0xe6,0xe6,0xce,0x88,0xd0,
|
||||
0xe1,0x60,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x20,0x15,0xe7,0x6c,0xce,0x00,0xa5,0x4c,
|
||||
0xd0,0x02,0xc6,0x4d,0xc6,0x4c,0xa5,0x48,
|
||||
0xd0,0x02,0xc6,0x49,0xc6,0x48,0xa0,0x00,
|
||||
0xb1,0x4c,0x91,0x48,0xa5,0xca,0xc5,0x4c,
|
||||
0xa5,0xcb,0xe5,0x4d,0x90,0xe0,0x4c,0x53,
|
||||
0xee,0xc9,0x28,0xb0,0x9b,0xa8,0xa5,0xc8,
|
||||
0x60,0xea,0xea,0x98,0xaa,0xa0,0x6e,0x20,
|
||||
0xc4,0xe3,0x8a,0xa8,0x20,0xc4,0xe3,0xa0,
|
||||
0x72,0x4c,0xc4,0xe3,0x20,0x15,0xe7,0x06,
|
||||
0xce,0x26,0xcf,0x30,0xfa,0xb0,0xdc,0xd0,
|
||||
0x04,0xc5,0xce,0xb0,0xd6,0x60,0x20,0x15,
|
||||
0xe7,0xb1,0xce,0x94,0x9f,0x4c,0x08,0xe7,
|
||||
0x20,0x34,0xee,0xa5,0xce,0x48,0x20,0x15,
|
||||
0xe7,0x68,0x91,0xce,0x60,0xff,0xff,0xff,
|
||||
0x20,0x6c,0xee,0xa5,0xce,0x85,0xe6,0xa5,
|
||||
0xcf,0x85,0xe7,0x4c,0x44,0xe2,0x20,0xe4,
|
||||
0xee,0x4c,0x34,0xe1,0x20,0xe4,0xee,0xb4,
|
||||
0x78,0xb5,0x50,0x69,0xfe,0xb0,0x01,0x88,
|
||||
0x85,0xda,0x84,0xdb,0x18,0x65,0xce,0x95,
|
||||
0x50,0x98,0x65,0xcf,0x95,0x78,0xa0,0x00,
|
||||
0xb5,0x50,0xd1,0xda,0xc8,0xb5,0x78,0xf1,
|
||||
0xda,0xb0,0x80,0x4c,0x23,0xe8,0x20,0x15,
|
||||
0xe7,0xa5,0x4e,0x20,0x08,0xe7,0xa5,0x4f,
|
||||
0xd0,0x04,0xc5,0x4e,0x69,0x00,0x29,0x7f,
|
||||
0x85,0x4f,0x95,0xa0,0xa0,0x11,0xa5,0x4f,
|
||||
0x0a,0x18,0x69,0x40,0x0a,0x26,0x4e,0x26,
|
||||
0x4f,0x88,0xd0,0xf2,0xa5,0xce,0x20,0x08,
|
||||
0xe7,0xa5,0xcf,0x95,0xa0,0x4c,0x7a,0xe2,
|
||||
0x20,0x15,0xe7,0xa4,0xce,0xc4,0x4c,0xa5,
|
||||
0xcf,0xe5,0x4d,0x90,0x1f,0x84,0x48,0xa5,
|
||||
0xcf,0x85,0x49,0x4c,0xb6,0xee,0x20,0x15,
|
||||
0xe7,0xa4,0xce,0xc4,0xca,0xa5,0xcf,0xe5,
|
||||
0xcb,0xb0,0x09,0x84,0x4a,0xa5,0xcf,0x85,
|
||||
0x4b,0x4c,0xb7,0xe5,0x4c,0xcb,0xee,0xea,
|
||||
0xea,0xea,0xea,0x20,0xc9,0xef,0x20,0x71,
|
||||
0xe1,0x4c,0xbf,0xef,0x20,0x03,0xee,0xa9,
|
||||
0xff,0x85,0xc8,0xa9,0x74,0x8d,0x00,0x02,
|
||||
0x60,0x20,0x36,0xe7,0xe8,0x20,0x36,0xe7,
|
||||
0xb5,0x50,0x60,0xa9,0x00,0x85,0x4a,0x85,
|
||||
0x4c,0xa9,0x08,0x85,0x4b,0xa9,0x10,0x85,
|
||||
0x4d,0x4c,0xad,0xe5,0xd5,0x78,0xd0,0x01,
|
||||
0x18,0x4c,0x02,0xe1,0x20,0xb7,0xe5,0x4c,
|
||||
0x36,0xe8,0x20,0xb7,0xe5,0x4c,0x5b,0xe8,
|
||||
0xe0,0x80,0xd0,0x01,0x88,0x4c,0x0c,0xe0
|
||||
];
|
||||
return {
|
||||
start: function basic_start() {
|
||||
return 0xe0;
|
||||
},
|
||||
end: function basic_end() {
|
||||
return 0xef;
|
||||
},
|
||||
read: function basic_read(page, off) {
|
||||
return ram[(page - 0xe0) << 8 | off];
|
||||
},
|
||||
write: function basic_write(page, off, val) {
|
||||
ram[(page - 0xe0) << 8 | off] = val;
|
||||
},
|
||||
|
||||
getState: function() {
|
||||
return {};
|
||||
},
|
||||
|
||||
setState: function() {
|
||||
}
|
||||
};
|
||||
}
|
367
js/roms/basic.ts
Normal file
367
js/roms/basic.ts
Normal file
@ -0,0 +1,367 @@
|
||||
import { byte } from 'js/types';
|
||||
|
||||
export default class Basic {
|
||||
ram = [
|
||||
0x4c, 0xb0, 0xe2, 0xad, 0x11, 0xd0, 0x10, 0xfb, 0xad, 0x10, 0xd0, 0x60,
|
||||
0x8a, 0x29, 0x20, 0xf0, 0x23, 0xa9, 0xa0, 0x85, 0xe4, 0x4c, 0xc9, 0xe3,
|
||||
0xa9, 0x20, 0xc5, 0x24, 0xb0, 0x0c, 0xa9, 0x8d, 0xa0, 0x07, 0x20, 0xc9,
|
||||
0xe3, 0xa9, 0xa0, 0x88, 0xd0, 0xf8, 0xa0, 0x00, 0xb1, 0xe2, 0xe6, 0xe2,
|
||||
0xd0, 0x02, 0xe6, 0xe3, 0x60, 0x20, 0x15, 0xe7, 0x20, 0x76, 0xe5, 0xa5,
|
||||
0xe2, 0xc5, 0xe6, 0xa5, 0xe3, 0xe5, 0xe7, 0xb0, 0xef, 0x20, 0x6d, 0xe0,
|
||||
0x4c, 0x3b, 0xe0, 0xa5, 0xca, 0x85, 0xe2, 0xa5, 0xcb, 0x85, 0xe3, 0xa5,
|
||||
0x4c, 0x85, 0xe6, 0xa5, 0x4d, 0x85, 0xe7, 0xd0, 0xde, 0x20, 0x15, 0xe7,
|
||||
0x20, 0x6d, 0xe5, 0xa5, 0xe4, 0x85, 0xe2, 0xa5, 0xe5, 0x85, 0xe3, 0xb0,
|
||||
0xc7, 0x86, 0xd8, 0xa9, 0xa0, 0x85, 0xfa, 0x20, 0x2a, 0xe0, 0x98, 0x85,
|
||||
0xe4, 0x20, 0x2a, 0xe0, 0xaa, 0x20, 0x2a, 0xe0, 0x20, 0x1b, 0xe5, 0x20,
|
||||
0x18, 0xe0, 0x84, 0xfa, 0xaa, 0x10, 0x18, 0x0a, 0x10, 0xe9, 0xa5, 0xe4,
|
||||
0xd0, 0x03, 0x20, 0x11, 0xe0, 0x8a, 0x20, 0xc9, 0xe3, 0xa9, 0x25, 0x20,
|
||||
0x1a, 0xe0, 0xaa, 0x30, 0xf5, 0x85, 0xe4, 0xc9, 0x01, 0xd0, 0x05, 0xa6,
|
||||
0xd8, 0x4c, 0xcd, 0xe3, 0x48, 0x84, 0xce, 0xa2, 0xed, 0x86, 0xcf, 0xc9,
|
||||
0x51, 0x90, 0x04, 0xc6, 0xcf, 0xe9, 0x50, 0x48, 0xb1, 0xce, 0xaa, 0x88,
|
||||
0xb1, 0xce, 0x10, 0xfa, 0xe0, 0xc0, 0xb0, 0x04, 0xe0, 0x00, 0x30, 0xf2,
|
||||
0xaa, 0x68, 0xe9, 0x01, 0xd0, 0xe9, 0x24, 0xe4, 0x30, 0x03, 0x20, 0xf8,
|
||||
0xef, 0xb1, 0xce, 0x10, 0x10, 0xaa, 0x29, 0x3f, 0x85, 0xe4, 0x18, 0x69,
|
||||
0xa0, 0x20, 0xc9, 0xe3, 0x88, 0xe0, 0xc0, 0x90, 0xec, 0x20, 0x0c, 0xe0,
|
||||
0x68, 0xc9, 0x5d, 0xf0, 0xa4, 0xc9, 0x28, 0xd0, 0x8a, 0xf0, 0x9e, 0x20,
|
||||
0x18, 0xe1, 0x95, 0x50, 0xd5, 0x78, 0x90, 0x11, 0xa0, 0x2b, 0x4c, 0xe0,
|
||||
0xe3, 0x20, 0x34, 0xee, 0xd5, 0x50, 0x90, 0xf4, 0x20, 0xe4, 0xef, 0x95,
|
||||
0x78, 0x4c, 0x23, 0xe8, 0x20, 0x34, 0xee, 0xf0, 0xe7, 0x38, 0xe9, 0x01,
|
||||
0x60, 0x20, 0x18, 0xe1, 0x95, 0x50, 0x18, 0xf5, 0x78, 0x4c, 0x02, 0xe1,
|
||||
0xa0, 0x14, 0xd0, 0xd6, 0x20, 0x18, 0xe1, 0xe8, 0xb5, 0x50, 0x85, 0xda,
|
||||
0x65, 0xce, 0x48, 0xa8, 0xb5, 0x78, 0x85, 0xdb, 0x65, 0xcf, 0x48, 0xc4,
|
||||
0xca, 0xe5, 0xcb, 0xb0, 0xe3, 0xa5, 0xda, 0x69, 0xfe, 0x85, 0xda, 0xa9,
|
||||
0xff, 0xa8, 0x65, 0xdb, 0x85, 0xdb, 0xc8, 0xb1, 0xda, 0xd9, 0xcc, 0x00,
|
||||
0xd0, 0x0f, 0x98, 0xf0, 0xf5, 0x68, 0x91, 0xda, 0x99, 0xcc, 0x00, 0x88,
|
||||
0x10, 0xf7, 0xe8, 0x60, 0xea, 0xa0, 0x80, 0xd0, 0x95, 0xa9, 0x00, 0x20,
|
||||
0x0a, 0xe7, 0xa0, 0x02, 0x94, 0x78, 0x20, 0x0a, 0xe7, 0xa9, 0xbf, 0x20,
|
||||
0xc9, 0xe3, 0xa0, 0x00, 0x20, 0x9e, 0xe2, 0x94, 0x78, 0xea, 0xea, 0xea,
|
||||
0xb5, 0x51, 0x85, 0xce, 0xb5, 0x79, 0x85, 0xcf, 0xe8, 0xe8, 0x20, 0xbc,
|
||||
0xe1, 0xb5, 0x4e, 0xd5, 0x76, 0xb0, 0x15, 0xf6, 0x4e, 0xa8, 0xb1, 0xce,
|
||||
0xb4, 0x50, 0xc4, 0xe4, 0x90, 0x04, 0xa0, 0x83, 0xd0, 0xc1, 0x91, 0xda,
|
||||
0xf6, 0x50, 0x90, 0xe5, 0xb4, 0x50, 0x8a, 0x91, 0xda, 0xe8, 0xe8, 0x60,
|
||||
0xb5, 0x51, 0x85, 0xda, 0x38, 0xe9, 0x02, 0x85, 0xe4, 0xb5, 0x79, 0x85,
|
||||
0xdb, 0xe9, 0x00, 0x85, 0xe5, 0xa0, 0x00, 0xb1, 0xe4, 0x18, 0xe5, 0xda,
|
||||
0x85, 0xe4, 0x60, 0xb5, 0x53, 0x85, 0xce, 0xb5, 0x7b, 0x85, 0xcf, 0xb5,
|
||||
0x51, 0x85, 0xda, 0xb5, 0x79, 0x85, 0xdb, 0xe8, 0xe8, 0xe8, 0xa0, 0x00,
|
||||
0x94, 0x78, 0x94, 0xa0, 0xc8, 0x94, 0x50, 0xb5, 0x4d, 0xd5, 0x75, 0x08,
|
||||
0x48, 0xb5, 0x4f, 0xd5, 0x77, 0x90, 0x07, 0x68, 0x28, 0xb0, 0x02, 0x56,
|
||||
0x50, 0x60, 0xa8, 0xb1, 0xce, 0x85, 0xe4, 0x68, 0xa8, 0x28, 0xb0, 0xf3,
|
||||
0xb1, 0xda, 0xc5, 0xe4, 0xd0, 0xed, 0xf6, 0x4f, 0xf6, 0x4d, 0xb0, 0xd7,
|
||||
0x20, 0xd7, 0xe1, 0x4c, 0x36, 0xe7, 0x20, 0x54, 0xe2, 0x06, 0xce, 0x26,
|
||||
0xcf, 0x90, 0x0d, 0x18, 0xa5, 0xe6, 0x65, 0xda, 0x85, 0xe6, 0xa5, 0xe7,
|
||||
0x65, 0xdb, 0x85, 0xe7, 0x88, 0xf0, 0x09, 0x06, 0xe6, 0x26, 0xe7, 0x10,
|
||||
0xe4, 0x4c, 0x7e, 0xe7, 0xa5, 0xe6, 0x20, 0x08, 0xe7, 0xa5, 0xe7, 0x95,
|
||||
0xa0, 0x06, 0xe5, 0x90, 0x28, 0x4c, 0x6f, 0xe7, 0xa9, 0x55, 0x85, 0xe5,
|
||||
0x20, 0x5b, 0xe2, 0xa5, 0xce, 0x85, 0xda, 0xa5, 0xcf, 0x85, 0xdb, 0x20,
|
||||
0x15, 0xe7, 0x84, 0xe6, 0x84, 0xe7, 0xa5, 0xcf, 0x10, 0x09, 0xca, 0x06,
|
||||
0xe5, 0x20, 0x6f, 0xe7, 0x20, 0x15, 0xe7, 0xa0, 0x10, 0x60, 0x20, 0x6c,
|
||||
0xee, 0xf0, 0xc5, 0xff, 0xc9, 0x84, 0xd0, 0x02, 0x46, 0xf8, 0xc9, 0xdf,
|
||||
0xf0, 0x11, 0xc9, 0x9b, 0xf0, 0x06, 0x99, 0x00, 0x02, 0xc8, 0x10, 0x0a,
|
||||
0xa0, 0x8b, 0x20, 0xc4, 0xe3, 0xa0, 0x01, 0x88, 0x30, 0xf6, 0x20, 0x03,
|
||||
0xe0, 0xea, 0xea, 0x20, 0xc9, 0xe3, 0xc9, 0x8d, 0xd0, 0xd6, 0xa9, 0xdf,
|
||||
0x99, 0x00, 0x02, 0x60, 0x20, 0xd3, 0xef, 0x20, 0xcd, 0xe3, 0x46, 0xd9,
|
||||
0xa9, 0xbe, 0x20, 0xc9, 0xe3, 0xa0, 0x00, 0x84, 0xfa, 0x24, 0xf8, 0x10,
|
||||
0x0c, 0xa6, 0xf6, 0xa5, 0xf7, 0x20, 0x1b, 0xe5, 0xa9, 0xa0, 0x20, 0xc9,
|
||||
0xe3, 0xa2, 0xff, 0x9a, 0x20, 0x9e, 0xe2, 0x84, 0xf1, 0x8a, 0x85, 0xc8,
|
||||
0xa2, 0x20, 0x20, 0x91, 0xe4, 0xa5, 0xc8, 0x69, 0x00, 0x85, 0xe0, 0xa9,
|
||||
0x00, 0xaa, 0x69, 0x02, 0x85, 0xe1, 0xa1, 0xe0, 0x29, 0xf0, 0xc9, 0xb0,
|
||||
0xf0, 0x03, 0x4c, 0x83, 0xe8, 0xa0, 0x02, 0xb1, 0xe0, 0x99, 0xcd, 0x00,
|
||||
0x88, 0xd0, 0xf8, 0x20, 0x8a, 0xe3, 0xa5, 0xf1, 0xe5, 0xc8, 0xc9, 0x04,
|
||||
0xf0, 0xa8, 0x91, 0xe0, 0xa5, 0xca, 0xf1, 0xe0, 0x85, 0xe4, 0xa5, 0xcb,
|
||||
0xe9, 0x00, 0x85, 0xe5, 0xa5, 0xe4, 0xc5, 0xcc, 0xa5, 0xe5, 0xe5, 0xcd,
|
||||
0x90, 0x45, 0xa5, 0xca, 0xf1, 0xe0, 0x85, 0xe6, 0xa5, 0xcb, 0xe9, 0x00,
|
||||
0x85, 0xe7, 0xb1, 0xca, 0x91, 0xe6, 0xe6, 0xca, 0xd0, 0x02, 0xe6, 0xcb,
|
||||
0xa5, 0xe2, 0xc5, 0xca, 0xa5, 0xe3, 0xe5, 0xcb, 0xb0, 0xe0, 0xb5, 0xe4,
|
||||
0x95, 0xca, 0xca, 0x10, 0xf9, 0xb1, 0xe0, 0xa8, 0x88, 0xb1, 0xe0, 0x91,
|
||||
0xe6, 0x98, 0xd0, 0xf8, 0x24, 0xf8, 0x10, 0x09, 0xb5, 0xf7, 0x75, 0xf5,
|
||||
0x95, 0xf7, 0xe8, 0xf0, 0xf7, 0x10, 0x7e, 0x00, 0x00, 0x00, 0x00, 0xa0,
|
||||
0x14, 0xd0, 0x71, 0x20, 0x15, 0xe7, 0xa5, 0xe2, 0x85, 0xe6, 0xa5, 0xe3,
|
||||
0x85, 0xe7, 0x20, 0x75, 0xe5, 0xa5, 0xe2, 0x85, 0xe4, 0xa5, 0xe3, 0x85,
|
||||
0xe5, 0xd0, 0x0e, 0x20, 0x15, 0xe7, 0x20, 0x6d, 0xe5, 0xa5, 0xe6, 0x85,
|
||||
0xe2, 0xa5, 0xe7, 0x85, 0xe3, 0xa0, 0x00, 0xa5, 0xca, 0xc5, 0xe4, 0xa5,
|
||||
0xcb, 0xe5, 0xe5, 0xb0, 0x16, 0xa5, 0xe4, 0xd0, 0x02, 0xc6, 0xe5, 0xc6,
|
||||
0xe4, 0xa5, 0xe6, 0xd0, 0x02, 0xc6, 0xe7, 0xc6, 0xe6, 0xb1, 0xe4, 0x91,
|
||||
0xe6, 0x90, 0xe0, 0xa5, 0xe6, 0x85, 0xca, 0xa5, 0xe7, 0x85, 0xcb, 0x60,
|
||||
0x20, 0xc9, 0xe3, 0xc8, 0xb9, 0x00, 0xeb, 0x30, 0xf7, 0xc9, 0x8d, 0xd0,
|
||||
0x06, 0xa9, 0x00, 0x85, 0x24, 0xa9, 0x8d, 0xe6, 0x24, 0x2c, 0xf2, 0xd0,
|
||||
0x30, 0xfb, 0x8d, 0xf2, 0xd0, 0x60, 0xa0, 0x06, 0x20, 0xd3, 0xee, 0x24,
|
||||
0xd9, 0x30, 0x03, 0x4c, 0xb6, 0xe2, 0x4c, 0x9a, 0xeb, 0x2a, 0x69, 0xa0,
|
||||
0xdd, 0x00, 0x02, 0xd0, 0x53, 0xb1, 0xfe, 0x0a, 0x30, 0x06, 0x88, 0xb1,
|
||||
0xfe, 0x30, 0x29, 0xc8, 0x86, 0xc8, 0x98, 0x48, 0xa2, 0x00, 0xa1, 0xfe,
|
||||
0xaa, 0x4a, 0x49, 0x48, 0x11, 0xfe, 0xc9, 0xc0, 0x90, 0x01, 0xe8, 0xc8,
|
||||
0xd0, 0xf3, 0x68, 0xa8, 0x8a, 0x4c, 0xc0, 0xe4, 0xe6, 0xf1, 0xa6, 0xf1,
|
||||
0xf0, 0xbc, 0x9d, 0x00, 0x02, 0x60, 0xa6, 0xc8, 0xa9, 0xa0, 0xe8, 0xdd,
|
||||
0x00, 0x02, 0xb0, 0xfa, 0xb1, 0xfe, 0x29, 0x3f, 0x4a, 0xd0, 0xb6, 0xbd,
|
||||
0x00, 0x02, 0xb0, 0x06, 0x69, 0x3f, 0xc9, 0x1a, 0x90, 0x6f, 0x69, 0x4f,
|
||||
0xc9, 0x0a, 0x90, 0x69, 0xa6, 0xfd, 0xc8, 0xb1, 0xfe, 0x29, 0xe0, 0xc9,
|
||||
0x20, 0xf0, 0x7a, 0xb5, 0xa8, 0x85, 0xc8, 0xb5, 0xd1, 0x85, 0xf1, 0x88,
|
||||
0xb1, 0xfe, 0x0a, 0x10, 0xfa, 0x88, 0xb0, 0x38, 0x0a, 0x30, 0x35, 0xb4,
|
||||
0x58, 0x84, 0xff, 0xb4, 0x80, 0xe8, 0x10, 0xda, 0xf0, 0xb3, 0xc9, 0x7e,
|
||||
0xb0, 0x22, 0xca, 0x10, 0x04, 0xa0, 0x06, 0x10, 0x29, 0x94, 0x80, 0xa4,
|
||||
0xff, 0x94, 0x58, 0xa4, 0xc8, 0x94, 0xa8, 0xa4, 0xf1, 0x94, 0xd1, 0x29,
|
||||
0x1f, 0xa8, 0xb9, 0x20, 0xec, 0x0a, 0xa8, 0xa9, 0x76, 0x2a, 0x85, 0xff,
|
||||
0xd0, 0x01, 0xc8, 0xc8, 0x86, 0xfd, 0xb1, 0xfe, 0x30, 0x84, 0xd0, 0x05,
|
||||
0xa0, 0x0e, 0x4c, 0xe0, 0xe3, 0xc9, 0x03, 0xb0, 0xc3, 0x4a, 0xa6, 0xc8,
|
||||
0xe8, 0xbd, 0x00, 0x02, 0x90, 0x04, 0xc9, 0xa2, 0xf0, 0x0a, 0xc9, 0xdf,
|
||||
0xf0, 0x06, 0x86, 0xc8, 0x20, 0x1c, 0xe4, 0xc8, 0x88, 0xa6, 0xfd, 0xb1,
|
||||
0xfe, 0x88, 0x0a, 0x10, 0xcf, 0xb4, 0x58, 0x84, 0xff, 0xb4, 0x80, 0xe8,
|
||||
0xb1, 0xfe, 0x29, 0x9f, 0xd0, 0xed, 0x85, 0xf2, 0x85, 0xf3, 0x98, 0x48,
|
||||
0x86, 0xfd, 0xb4, 0xd0, 0x84, 0xc9, 0x18, 0xa9, 0x0a, 0x85, 0xf9, 0xa2,
|
||||
0x00, 0xc8, 0xb9, 0x00, 0x02, 0x29, 0x0f, 0x65, 0xf2, 0x48, 0x8a, 0x65,
|
||||
0xf3, 0x30, 0x1c, 0xaa, 0x68, 0xc6, 0xf9, 0xd0, 0xf2, 0x85, 0xf2, 0x86,
|
||||
0xf3, 0xc4, 0xf1, 0xd0, 0xde, 0xa4, 0xc9, 0xc8, 0x84, 0xf1, 0x20, 0x1c,
|
||||
0xe4, 0x68, 0xa8, 0xa5, 0xf3, 0xb0, 0xa9, 0xa0, 0x00, 0x10, 0x8b, 0x85,
|
||||
0xf3, 0x86, 0xf2, 0xa2, 0x04, 0x86, 0xc9, 0xa9, 0xb0, 0x85, 0xf9, 0xa5,
|
||||
0xf2, 0xdd, 0x63, 0xe5, 0xa5, 0xf3, 0xfd, 0x68, 0xe5, 0x90, 0x0d, 0x85,
|
||||
0xf3, 0xa5, 0xf2, 0xfd, 0x63, 0xe5, 0x85, 0xf2, 0xe6, 0xf9, 0xd0, 0xe7,
|
||||
0xa5, 0xf9, 0xe8, 0xca, 0xf0, 0x0e, 0xc9, 0xb0, 0xf0, 0x02, 0x85, 0xc9,
|
||||
0x24, 0xc9, 0x30, 0x04, 0xa5, 0xfa, 0xf0, 0x0b, 0x20, 0xc9, 0xe3, 0x24,
|
||||
0xf8, 0x10, 0x04, 0x99, 0x00, 0x02, 0xc8, 0xca, 0x10, 0xc1, 0x60, 0x01,
|
||||
0x0a, 0x64, 0xe8, 0x10, 0x00, 0x00, 0x00, 0x03, 0x27, 0xa5, 0xca, 0x85,
|
||||
0xe6, 0xa5, 0xcb, 0x85, 0xe7, 0xe8, 0xa5, 0xe7, 0x85, 0xe5, 0xa5, 0xe6,
|
||||
0x85, 0xe4, 0xc5, 0x4c, 0xa5, 0xe5, 0xe5, 0x4d, 0xb0, 0x26, 0xa0, 0x01,
|
||||
0xb1, 0xe4, 0xe5, 0xce, 0xc8, 0xb1, 0xe4, 0xe5, 0xcf, 0xb0, 0x19, 0xa0,
|
||||
0x00, 0xa5, 0xe6, 0x71, 0xe4, 0x85, 0xe6, 0x90, 0x03, 0xe6, 0xe7, 0x18,
|
||||
0xc8, 0xa5, 0xce, 0xf1, 0xe4, 0xc8, 0xa5, 0xcf, 0xf1, 0xe4, 0xb0, 0xca,
|
||||
0x60, 0x46, 0xf8, 0xa5, 0x4c, 0x85, 0xca, 0xa5, 0x4d, 0x85, 0xcb, 0xa5,
|
||||
0x4a, 0x85, 0xcc, 0xa5, 0x4b, 0x85, 0xcd, 0xa9, 0x00, 0x85, 0xfb, 0x85,
|
||||
0xfc, 0x85, 0xfe, 0xa9, 0x00, 0x85, 0x1d, 0x60, 0xa5, 0xd0, 0x69, 0x05,
|
||||
0x85, 0xd2, 0xa5, 0xd1, 0x69, 0x00, 0x85, 0xd3, 0xa5, 0xd2, 0xc5, 0xca,
|
||||
0xa5, 0xd3, 0xe5, 0xcb, 0x90, 0x03, 0x4c, 0x6b, 0xe3, 0xa5, 0xce, 0x91,
|
||||
0xd0, 0xa5, 0xcf, 0xc8, 0x91, 0xd0, 0xa5, 0xd2, 0xc8, 0x91, 0xd0, 0xa5,
|
||||
0xd3, 0xc8, 0x91, 0xd0, 0xa9, 0x00, 0xc8, 0x91, 0xd0, 0xc8, 0x91, 0xd0,
|
||||
0xa5, 0xd2, 0x85, 0xcc, 0xa5, 0xd3, 0x85, 0xcd, 0xa5, 0xd0, 0x90, 0x43,
|
||||
0x85, 0xce, 0x84, 0xcf, 0x20, 0xff, 0xe6, 0x30, 0x0e, 0xc9, 0x40, 0xf0,
|
||||
0x0a, 0x4c, 0x28, 0xe6, 0x06, 0xc9, 0x49, 0xd0, 0x07, 0xa9, 0x49, 0x85,
|
||||
0xcf, 0x20, 0xff, 0xe6, 0xa5, 0x4b, 0x85, 0xd1, 0xa5, 0x4a, 0x85, 0xd0,
|
||||
0xc5, 0xcc, 0xa5, 0xd1, 0xe5, 0xcd, 0xb0, 0x94, 0xb1, 0xd0, 0xc8, 0xc5,
|
||||
0xce, 0xd0, 0x06, 0xb1, 0xd0, 0xc5, 0xcf, 0xf0, 0x0e, 0xc8, 0xb1, 0xd0,
|
||||
0x48, 0xc8, 0xb1, 0xd0, 0x85, 0xd1, 0x68, 0xa0, 0x00, 0xf0, 0xdb, 0xa5,
|
||||
0xd0, 0x69, 0x03, 0x20, 0x0a, 0xe7, 0xa5, 0xd1, 0x69, 0x00, 0x95, 0x78,
|
||||
0xa5, 0xcf, 0xc9, 0x40, 0xd0, 0x1c, 0x88, 0x98, 0x20, 0x0a, 0xe7, 0x88,
|
||||
0x94, 0x78, 0xa0, 0x03, 0xf6, 0x78, 0xc8, 0xb1, 0xd0, 0x30, 0xf9, 0x10,
|
||||
0x09, 0xa9, 0x00, 0x85, 0xd4, 0x85, 0xd5, 0xa2, 0x20, 0x48, 0xa0, 0x00,
|
||||
0xb1, 0xe0, 0x10, 0x18, 0x0a, 0x30, 0x81, 0x20, 0xff, 0xe6, 0x20, 0x08,
|
||||
0xe7, 0x20, 0xff, 0xe6, 0x95, 0xa0, 0x24, 0xd4, 0x10, 0x01, 0xca, 0x20,
|
||||
0xff, 0xe6, 0xb0, 0xe6, 0xc9, 0x28, 0xd0, 0x1f, 0xa5, 0xe0, 0x20, 0x0a,
|
||||
0xe7, 0xa5, 0xe1, 0x95, 0x78, 0x24, 0xd4, 0x30, 0x0b, 0xa9, 0x01, 0x20,
|
||||
0x0a, 0xe7, 0xa9, 0x00, 0x95, 0x78, 0xf6, 0x78, 0x20, 0xff, 0xe6, 0x30,
|
||||
0xf9, 0xb0, 0xd3, 0x24, 0xd4, 0x10, 0x06, 0xc9, 0x04, 0xb0, 0xd0, 0x46,
|
||||
0xd4, 0xa8, 0x85, 0xd6, 0xb9, 0x98, 0xe9, 0x29, 0x55, 0x0a, 0x85, 0xd7,
|
||||
0x68, 0xa8, 0xb9, 0x98, 0xe9, 0x29, 0xaa, 0xc5, 0xd7, 0xb0, 0x09, 0x98,
|
||||
0x48, 0x20, 0xff, 0xe6, 0xa5, 0xd6, 0x90, 0x95, 0xb9, 0x10, 0xea, 0x85,
|
||||
0xce, 0xb9, 0x88, 0xea, 0x85, 0xcf, 0x20, 0xfc, 0xe6, 0x4c, 0xd8, 0xe6,
|
||||
0x6c, 0xce, 0x00, 0xe6, 0xe0, 0xd0, 0x02, 0xe6, 0xe1, 0xb1, 0xe0, 0x60,
|
||||
0x94, 0x77, 0xca, 0x30, 0x03, 0x95, 0x50, 0x60, 0xa0, 0x66, 0x4c, 0xe0,
|
||||
0xe3, 0xa0, 0x00, 0xb5, 0x50, 0x85, 0xce, 0xb5, 0xa0, 0x85, 0xcf, 0xb5,
|
||||
0x78, 0xf0, 0x0e, 0x85, 0xcf, 0xb1, 0xce, 0x48, 0xc8, 0xb1, 0xce, 0x85,
|
||||
0xcf, 0x68, 0x85, 0xce, 0x88, 0xe8, 0x60, 0x20, 0x4a, 0xe7, 0x20, 0x15,
|
||||
0xe7, 0x98, 0x20, 0x08, 0xe7, 0x95, 0xa0, 0xc5, 0xce, 0xd0, 0x06, 0xc5,
|
||||
0xcf, 0xd0, 0x02, 0xf6, 0x50, 0x60, 0x20, 0x82, 0xe7, 0x20, 0x59, 0xe7,
|
||||
0x20, 0x15, 0xe7, 0x24, 0xcf, 0x30, 0x1b, 0xca, 0x60, 0x20, 0x15, 0xe7,
|
||||
0xa5, 0xcf, 0xd0, 0x04, 0xa5, 0xce, 0xf0, 0xf3, 0xa9, 0xff, 0x20, 0x08,
|
||||
0xe7, 0x95, 0xa0, 0x24, 0xcf, 0x30, 0xe9, 0x20, 0x15, 0xe7, 0x98, 0x38,
|
||||
0xe5, 0xce, 0x20, 0x08, 0xe7, 0x98, 0xe5, 0xcf, 0x50, 0x23, 0xa0, 0x00,
|
||||
0x10, 0x90, 0x20, 0x6f, 0xe7, 0x20, 0x15, 0xe7, 0xa5, 0xce, 0x85, 0xda,
|
||||
0xa5, 0xcf, 0x85, 0xdb, 0x20, 0x15, 0xe7, 0x18, 0xa5, 0xce, 0x65, 0xda,
|
||||
0x20, 0x08, 0xe7, 0xa5, 0xcf, 0x65, 0xdb, 0x70, 0xdd, 0x95, 0xa0, 0x60,
|
||||
0x20, 0x15, 0xe7, 0xa4, 0xce, 0xf0, 0x05, 0x88, 0xa5, 0xcf, 0xf0, 0x0c,
|
||||
0x60, 0xa5, 0x24, 0x09, 0x07, 0xa8, 0xc8, 0xa9, 0xa0, 0x20, 0xc9, 0xe3,
|
||||
0xc4, 0x24, 0xb0, 0xf7, 0x60, 0x20, 0xb1, 0xe7, 0x20, 0x15, 0xe7, 0xa5,
|
||||
0xcf, 0x10, 0x0a, 0xa9, 0xad, 0x20, 0xc9, 0xe3, 0x20, 0x72, 0xe7, 0x50,
|
||||
0xef, 0x88, 0x84, 0xd5, 0x86, 0xcf, 0xa6, 0xce, 0x20, 0x1b, 0xe5, 0xa6,
|
||||
0xcf, 0x60, 0x20, 0x15, 0xe7, 0xa5, 0xce, 0x85, 0xf6, 0xa5, 0xcf, 0x85,
|
||||
0xf7, 0x88, 0x84, 0xf8, 0xc8, 0xa9, 0x0a, 0x85, 0xf4, 0x84, 0xf5, 0x60,
|
||||
0x20, 0x15, 0xe7, 0xa5, 0xce, 0xa4, 0xcf, 0x10, 0xf2, 0x20, 0x15, 0xe7,
|
||||
0xb5, 0x50, 0x85, 0xda, 0xb5, 0x78, 0x85, 0xdb, 0xa5, 0xce, 0x91, 0xda,
|
||||
0xc8, 0xa5, 0xcf, 0x91, 0xda, 0xe8, 0x60, 0x68, 0x68, 0x24, 0xd5, 0x10,
|
||||
0x05, 0x20, 0xcd, 0xe3, 0x46, 0xd5, 0x60, 0xa0, 0xff, 0x84, 0xd7, 0x60,
|
||||
0x20, 0xcd, 0xef, 0xf0, 0x07, 0xa9, 0x25, 0x85, 0xd6, 0x88, 0x84, 0xd4,
|
||||
0xe8, 0x60, 0xa5, 0xca, 0xa4, 0xcb, 0xd0, 0x5a, 0xa0, 0x41, 0xa5, 0xfc,
|
||||
0xc9, 0x08, 0xb0, 0x5e, 0xa8, 0xe6, 0xfc, 0xa5, 0xe0, 0x99, 0x00, 0x01,
|
||||
0xa5, 0xe1, 0x99, 0x08, 0x01, 0xa5, 0xdc, 0x99, 0x10, 0x01, 0xa5, 0xdd,
|
||||
0x99, 0x18, 0x01, 0x20, 0x15, 0xe7, 0x20, 0x6d, 0xe5, 0x90, 0x04, 0xa0,
|
||||
0x37, 0xd0, 0x3b, 0xa5, 0xe4, 0xa4, 0xe5, 0x85, 0xdc, 0x84, 0xdd, 0x2c,
|
||||
0x11, 0xd0, 0x30, 0x4f, 0x18, 0x69, 0x03, 0x90, 0x01, 0xc8, 0xa2, 0xff,
|
||||
0x86, 0xd9, 0x9a, 0x85, 0xe0, 0x84, 0xe1, 0x20, 0x79, 0xe6, 0x24, 0xd9,
|
||||
0x10, 0x49, 0x18, 0xa0, 0x00, 0xa5, 0xdc, 0x71, 0xdc, 0xa4, 0xdd, 0x90,
|
||||
0x01, 0xc8, 0xc5, 0x4c, 0xd0, 0xd1, 0xc4, 0x4d, 0xd0, 0xcd, 0xa0, 0x34,
|
||||
0x46, 0xd9, 0x4c, 0xe0, 0xe3, 0xa0, 0x4a, 0xa5, 0xfc, 0xf0, 0xf7, 0xc6,
|
||||
0xfc, 0xa8, 0xb9, 0x0f, 0x01, 0x85, 0xdc, 0xb9, 0x17, 0x01, 0x85, 0xdd,
|
||||
0xbe, 0xff, 0x00, 0xb9, 0x07, 0x01, 0xa8, 0x8a, 0x4c, 0x7a, 0xe8, 0xa0,
|
||||
0x63, 0x20, 0xc4, 0xe3, 0xa0, 0x01, 0xb1, 0xdc, 0xaa, 0xc8, 0xb1, 0xdc,
|
||||
0x20, 0x1b, 0xe5, 0x4c, 0xb3, 0xe2, 0xc6, 0xfb, 0xa0, 0x5b, 0xa5, 0xfb,
|
||||
0xf0, 0xc4, 0xa8, 0xb5, 0x50, 0xd9, 0x1f, 0x01, 0xd0, 0xf0, 0xb5, 0x78,
|
||||
0xd9, 0x27, 0x01, 0xd0, 0xe9, 0xb9, 0x2f, 0x01, 0x85, 0xda, 0xb9, 0x37,
|
||||
0x01, 0x85, 0xdb, 0x20, 0x15, 0xe7, 0xca, 0x20, 0x93, 0xe7, 0x20, 0x01,
|
||||
0xe8, 0xca, 0xa4, 0xfb, 0xb9, 0x67, 0x01, 0x95, 0x9f, 0xb9, 0x5f, 0x01,
|
||||
0xa0, 0x00, 0x20, 0x08, 0xe7, 0x20, 0x82, 0xe7, 0x20, 0x59, 0xe7, 0x20,
|
||||
0x15, 0xe7, 0xa4, 0xfb, 0xa5, 0xce, 0xf0, 0x05, 0x59, 0x37, 0x01, 0x10,
|
||||
0x12, 0xb9, 0x3f, 0x01, 0x85, 0xdc, 0xb9, 0x47, 0x01, 0x85, 0xdd, 0xbe,
|
||||
0x4f, 0x01, 0xb9, 0x57, 0x01, 0xd0, 0x87, 0xc6, 0xfb, 0x60, 0xa0, 0x54,
|
||||
0xa5, 0xfb, 0xc9, 0x08, 0xf0, 0x9a, 0xe6, 0xfb, 0xa8, 0xb5, 0x50, 0x99,
|
||||
0x20, 0x01, 0xb5, 0x78, 0x99, 0x28, 0x01, 0x60, 0x20, 0x15, 0xe7, 0xa4,
|
||||
0xfb, 0xa5, 0xce, 0x99, 0x5f, 0x01, 0xa5, 0xcf, 0x99, 0x67, 0x01, 0xa9,
|
||||
0x01, 0x99, 0x2f, 0x01, 0xa9, 0x00, 0x99, 0x37, 0x01, 0xa5, 0xdc, 0x99,
|
||||
0x3f, 0x01, 0xa5, 0xdd, 0x99, 0x47, 0x01, 0xa5, 0xe0, 0x99, 0x4f, 0x01,
|
||||
0xa5, 0xe1, 0x99, 0x57, 0x01, 0x60, 0x20, 0x15, 0xe7, 0xa4, 0xfb, 0xa5,
|
||||
0xce, 0x99, 0x2f, 0x01, 0xa5, 0xcf, 0x4c, 0x66, 0xe9, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x3f, 0x3f, 0xc0, 0xc0, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
|
||||
0x3c, 0x30, 0x0f, 0xc0, 0xcc, 0xff, 0x55, 0x00, 0xab, 0xab, 0x03, 0x03,
|
||||
0xff, 0xff, 0x55, 0xff, 0xff, 0x55, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xff,
|
||||
0x55, 0xc3, 0xc3, 0xc3, 0x55, 0xf0, 0xf0, 0xcf, 0x56, 0x56, 0x56, 0x55,
|
||||
0xff, 0xff, 0x55, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff,
|
||||
0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0xab, 0x03, 0x57, 0x03, 0x03, 0x03,
|
||||
0x03, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0x17, 0xff, 0xff, 0x19,
|
||||
0x5d, 0x35, 0x4b, 0xf2, 0xec, 0x87, 0x6f, 0xad, 0xb7, 0xe2, 0xf8, 0x54,
|
||||
0x80, 0x96, 0x85, 0x82, 0x22, 0x10, 0x33, 0x4a, 0x13, 0x06, 0x0b, 0x4a,
|
||||
0x01, 0x40, 0x47, 0x7a, 0x00, 0xff, 0x23, 0x09, 0x5b, 0x16, 0xb6, 0xcb,
|
||||
0xff, 0xff, 0xfb, 0xff, 0xff, 0x24, 0xf6, 0x4e, 0x59, 0x50, 0x00, 0xff,
|
||||
0x23, 0xa3, 0x6f, 0x36, 0x23, 0xd7, 0x1c, 0x22, 0xc2, 0xae, 0xba, 0x23,
|
||||
0xff, 0xff, 0x21, 0x30, 0x1e, 0x03, 0xc4, 0x20, 0x00, 0xc1, 0xff, 0xff,
|
||||
0xff, 0xa0, 0x30, 0x1e, 0xa4, 0xd3, 0xb6, 0xbc, 0xaa, 0x3a, 0x01, 0x50,
|
||||
0x7e, 0xd8, 0xd8, 0xa5, 0x3c, 0xff, 0x16, 0x5b, 0x28, 0x03, 0xc4, 0x1d,
|
||||
0x00, 0x0c, 0x4e, 0x00, 0x3e, 0x00, 0xa6, 0xb0, 0x00, 0xbc, 0xc6, 0x57,
|
||||
0x8c, 0x01, 0x27, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0xff, 0xff, 0xe8,
|
||||
0xe0, 0xe0, 0xe0, 0xef, 0xef, 0xe3, 0xe3, 0xe5, 0xe5, 0xe7, 0xe7, 0xee,
|
||||
0xef, 0xef, 0xe7, 0xe7, 0xe2, 0xef, 0xe7, 0xe7, 0xec, 0xec, 0xec, 0xe7,
|
||||
0xec, 0xec, 0xec, 0xe2, 0x00, 0xff, 0xe8, 0xe1, 0xe8, 0xe8, 0xef, 0xeb,
|
||||
0xff, 0xff, 0xe0, 0xff, 0xff, 0xef, 0xee, 0xef, 0xe7, 0xe7, 0x00, 0xff,
|
||||
0xe8, 0xe7, 0xe7, 0xe7, 0xe8, 0xe1, 0xe2, 0xee, 0xee, 0xee, 0xee, 0xe8,
|
||||
0xff, 0xff, 0xe1, 0xe1, 0xef, 0xee, 0xe7, 0xe8, 0xee, 0xe7, 0xff, 0xff,
|
||||
0xff, 0xee, 0xe1, 0xef, 0xe7, 0xe8, 0xef, 0xef, 0xeb, 0xe9, 0xe8, 0xe9,
|
||||
0xe9, 0xe8, 0xe8, 0xe8, 0xe8, 0xff, 0xe8, 0xe8, 0xe8, 0xee, 0xe7, 0xe8,
|
||||
0xef, 0xef, 0xee, 0xef, 0xee, 0xef, 0xee, 0xee, 0xef, 0xee, 0xee, 0xee,
|
||||
0xe1, 0xe8, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbe, 0xb3, 0xb2, 0xb7,
|
||||
0xb6, 0x37, 0xd4, 0xcf, 0xcf, 0xa0, 0xcc, 0xcf, 0xce, 0x47, 0xd3, 0xd9,
|
||||
0xce, 0xd4, 0xc1, 0x58, 0xcd, 0xc5, 0xcd, 0xa0, 0xc6, 0xd5, 0xcc, 0x4c,
|
||||
0xd4, 0xcf, 0xcf, 0xa0, 0xcd, 0xc1, 0xce, 0xd9, 0xa0, 0xd0, 0xc1, 0xd2,
|
||||
0xc5, 0xce, 0x53, 0xd3, 0xd4, 0xd2, 0xc9, 0xce, 0x47, 0xce, 0xcf, 0xa0,
|
||||
0xc5, 0xce, 0x44, 0xc2, 0xc1, 0xc4, 0xa0, 0xc2, 0xd2, 0xc1, 0xce, 0xc3,
|
||||
0x48, 0xbe, 0xb8, 0xa0, 0xc7, 0xcf, 0xd3, 0xd5, 0xc2, 0x53, 0xc2, 0xc1,
|
||||
0xc4, 0xa0, 0xd2, 0xc5, 0xd4, 0xd5, 0xd2, 0x4e, 0xbe, 0xb8, 0xa0, 0xc6,
|
||||
0xcf, 0xd2, 0x53, 0xc2, 0xc1, 0xc4, 0xa0, 0xce, 0xc5, 0xd8, 0x54, 0xd3,
|
||||
0xd4, 0xcf, 0xd0, 0xd0, 0xc5, 0xc4, 0xa0, 0xc1, 0xd4, 0x20, 0xaa, 0xaa,
|
||||
0xaa, 0x20, 0xa0, 0xc5, 0xd2, 0xd2, 0x0d, 0xbe, 0xb2, 0xb5, 0x35, 0xd2,
|
||||
0xc1, 0xce, 0xc7, 0x45, 0xc4, 0xc9, 0x4d, 0xd3, 0xd4, 0xd2, 0xa0, 0xcf,
|
||||
0xd6, 0xc6, 0x4c, 0xdc, 0x0d, 0xd2, 0xc5, 0xd4, 0xd9, 0xd0, 0xc5, 0xa0,
|
||||
0xcc, 0xc9, 0xce, 0xc5, 0x8d, 0x3f, 0x46, 0xd9, 0x90, 0x03, 0x4c, 0xc3,
|
||||
0xe8, 0xa6, 0xcf, 0x9a, 0xa6, 0xce, 0xa0, 0x8d, 0xd0, 0x02, 0xa0, 0x99,
|
||||
0x20, 0xc4, 0xe3, 0x86, 0xce, 0xba, 0x86, 0xcf, 0xa0, 0xfe, 0x84, 0xd9,
|
||||
0xc8, 0x84, 0xc8, 0x20, 0x99, 0xe2, 0x84, 0xf1, 0xa2, 0x20, 0xa9, 0x30,
|
||||
0x20, 0x91, 0xe4, 0xe6, 0xd9, 0xa6, 0xce, 0xa4, 0xc8, 0x0a, 0x85, 0xce,
|
||||
0xc8, 0xb9, 0x00, 0x02, 0xc9, 0x74, 0xf0, 0xd2, 0x49, 0xb0, 0xc9, 0x0a,
|
||||
0xb0, 0xf0, 0xc8, 0xc8, 0x84, 0xc8, 0xb9, 0x00, 0x02, 0x48, 0xb9, 0xff,
|
||||
0x01, 0xa0, 0x00, 0x20, 0x08, 0xe7, 0x68, 0x95, 0xa0, 0xa5, 0xce, 0xc9,
|
||||
0xc7, 0xd0, 0x03, 0x20, 0x6f, 0xe7, 0x4c, 0x01, 0xe8, 0xff, 0xff, 0xff,
|
||||
0x50, 0x20, 0x13, 0xec, 0xd0, 0x15, 0x20, 0x0b, 0xec, 0xd0, 0x10, 0x20,
|
||||
0x82, 0xe7, 0x20, 0x6f, 0xe7, 0x50, 0x03, 0x20, 0x82, 0xe7, 0x20, 0x59,
|
||||
0xe7, 0x56, 0x50, 0x4c, 0x36, 0xe7, 0xff, 0xff, 0xc1, 0xff, 0x7f, 0xd1,
|
||||
0xcc, 0xc7, 0xcf, 0xce, 0xc5, 0x9a, 0x98, 0x8b, 0x96, 0x95, 0x93, 0xbf,
|
||||
0xb2, 0x32, 0x2d, 0x2b, 0xbc, 0xb0, 0xac, 0xbe, 0x35, 0x8e, 0x61, 0xff,
|
||||
0xff, 0xff, 0xdd, 0xfb, 0x20, 0xc9, 0xef, 0x15, 0x4f, 0x10, 0x05, 0x20,
|
||||
0xc9, 0xef, 0x35, 0x4f, 0x95, 0x50, 0x10, 0xcb, 0x4c, 0xc9, 0xef, 0x40,
|
||||
0x60, 0x8d, 0x60, 0x8b, 0x00, 0x7e, 0x8c, 0x33, 0x00, 0x00, 0x60, 0x03,
|
||||
0xbf, 0x12, 0x00, 0x40, 0x89, 0xc9, 0x47, 0x9d, 0x17, 0x68, 0x9d, 0x0a,
|
||||
0x00, 0x40, 0x60, 0x8d, 0x60, 0x8b, 0x00, 0x7e, 0x8c, 0x3c, 0x00, 0x00,
|
||||
0x60, 0x03, 0xbf, 0x1b, 0x4b, 0x67, 0xb4, 0xa1, 0x07, 0x8c, 0x07, 0xae,
|
||||
0xa9, 0xac, 0xa8, 0x67, 0x8c, 0x07, 0xb4, 0xaf, 0xac, 0xb0, 0x67, 0x9d,
|
||||
0xb2, 0xaf, 0xac, 0xaf, 0xa3, 0x67, 0x8c, 0x07, 0xa5, 0xab, 0xaf, 0xb0,
|
||||
0xf4, 0xae, 0xa9, 0xb2, 0xb0, 0x7f, 0x0e, 0x27, 0xb4, 0xae, 0xa9, 0xb2,
|
||||
0xb0, 0x7f, 0x0e, 0x28, 0xb4, 0xae, 0xa9, 0xb2, 0xb0, 0x64, 0x07, 0xa6,
|
||||
0xa9, 0x67, 0xaf, 0xb4, 0xaf, 0xa7, 0x78, 0xb4, 0xa5, 0xac, 0x78, 0x7f,
|
||||
0x02, 0xad, 0xa5, 0xb2, 0x67, 0xa2, 0xb5, 0xb3, 0xaf, 0xa7, 0xee, 0xb2,
|
||||
0xb5, 0xb4, 0xa5, 0xb2, 0x7e, 0x8c, 0x39, 0xb4, 0xb8, 0xa5, 0xae, 0x67,
|
||||
0xb0, 0xa5, 0xb4, 0xb3, 0x27, 0xaf, 0xb4, 0x07, 0x9d, 0x19, 0xb2, 0xaf,
|
||||
0xa6, 0x7f, 0x05, 0x37, 0xb4, 0xb5, 0xb0, 0xae, 0xa9, 0x7f, 0x05, 0x28,
|
||||
0xb4, 0xb5, 0xb0, 0xae, 0xa9, 0x7f, 0x05, 0x2a, 0xb4, 0xb5, 0xb0, 0xae,
|
||||
0xa9, 0xe4, 0xae, 0xa5, 0x00, 0xff, 0xff, 0x47, 0xa2, 0xa1, 0xb4, 0x7f,
|
||||
0x0d, 0x30, 0xad, 0xa9, 0xa4, 0x7f, 0x0d, 0x23, 0xad, 0xa9, 0xa4, 0x67,
|
||||
0xac, 0xac, 0xa1, 0xa3, 0x00, 0x40, 0x80, 0xc0, 0xc1, 0x80, 0x00, 0x47,
|
||||
0x8c, 0x68, 0x8c, 0xdb, 0x67, 0x9b, 0x68, 0x9b, 0x50, 0x8c, 0x63, 0x8c,
|
||||
0x7f, 0x01, 0x51, 0x07, 0x88, 0x29, 0x84, 0x80, 0xc4, 0x80, 0x57, 0x71,
|
||||
0x07, 0x88, 0x14, 0xed, 0xa5, 0xad, 0xaf, 0xac, 0xed, 0xa5, 0xad, 0xa9,
|
||||
0xa8, 0xf2, 0xaf, 0xac, 0xaf, 0xa3, 0x71, 0x08, 0x88, 0xae, 0xa5, 0xac,
|
||||
0x68, 0x83, 0x08, 0x68, 0x9d, 0x08, 0x71, 0x07, 0x88, 0x60, 0x76, 0xb4,
|
||||
0xaf, 0xae, 0x76, 0x8d, 0x76, 0x8b, 0x51, 0x07, 0x88, 0x19, 0xb8, 0xa4,
|
||||
0xae, 0xb2, 0xf2, 0xb3, 0xb5, 0xf3, 0xa2, 0xa1, 0xee, 0xa7, 0xb3, 0xe4,
|
||||
0xae, 0xb2, 0xeb, 0xa5, 0xa5, 0xb0, 0x51, 0x07, 0x88, 0x39, 0x81, 0xc1,
|
||||
0x4f, 0x7f, 0x0f, 0x2f, 0x00, 0x51, 0x06, 0x88, 0x29, 0xc2, 0x0c, 0x82,
|
||||
0x57, 0x8c, 0x6a, 0x8c, 0x42, 0xae, 0xa5, 0xa8, 0xb4, 0x60, 0xae, 0xa5,
|
||||
0xa8, 0xb4, 0x4f, 0x7e, 0x1e, 0x35, 0x8c, 0x27, 0x51, 0x07, 0x88, 0x09,
|
||||
0x8b, 0xfe, 0xe4, 0xaf, 0xad, 0xf2, 0xaf, 0xe4, 0xae, 0xa1, 0xdc, 0xde,
|
||||
0x9c, 0xdd, 0x9c, 0xde, 0xdd, 0x9e, 0xc3, 0xdd, 0xcf, 0xca, 0xcd, 0xcb,
|
||||
0x00, 0x47, 0x9d, 0xad, 0xa5, 0xad, 0xaf, 0xac, 0x76, 0x9d, 0xad, 0xa5,
|
||||
0xad, 0xa9, 0xa8, 0xe6, 0xa6, 0xaf, 0x60, 0x8c, 0x20, 0xaf, 0xb4, 0xb5,
|
||||
0xa1, 0xf2, 0xac, 0xa3, 0xf2, 0xa3, 0xb3, 0x60, 0x8c, 0x20, 0xac, 0xa5,
|
||||
0xa4, 0xee, 0xb5, 0xb2, 0x60, 0xae, 0xb5, 0xb2, 0xf4, 0xb3, 0xa9, 0xac,
|
||||
0x60, 0x8c, 0x20, 0xb4, 0xb3, 0xa9, 0xac, 0x7a, 0x7e, 0x9a, 0x22, 0x20,
|
||||
0x00, 0x60, 0x03, 0xbf, 0x60, 0x03, 0xbf, 0x1f, 0x20, 0xb1, 0xe7, 0xe8,
|
||||
0xe8, 0xb5, 0x4f, 0x85, 0xda, 0xb5, 0x77, 0x85, 0xdb, 0xb4, 0x4e, 0x98,
|
||||
0xd5, 0x76, 0xb0, 0x09, 0xb1, 0xda, 0x20, 0xc9, 0xe3, 0xc8, 0x4c, 0x0f,
|
||||
0xee, 0xa9, 0xff, 0x85, 0xd5, 0x60, 0xe8, 0xa9, 0x00, 0x95, 0x78, 0x95,
|
||||
0xa0, 0xb5, 0x77, 0x38, 0xf5, 0x4f, 0x95, 0x50, 0x4c, 0x23, 0xe8, 0xff,
|
||||
0x20, 0x15, 0xe7, 0xa5, 0xcf, 0xd0, 0x28, 0xa5, 0xce, 0x60, 0x20, 0x34,
|
||||
0xee, 0xa4, 0xc8, 0xc9, 0x30, 0xb0, 0x21, 0xc0, 0x28, 0xb0, 0x1d, 0x60,
|
||||
0xea, 0xea, 0x20, 0x34, 0xee, 0x60, 0xea, 0x8a, 0xa2, 0x01, 0xb4, 0xce,
|
||||
0x94, 0x4c, 0xb4, 0x48, 0x94, 0xca, 0xca, 0xf0, 0xf5, 0xaa, 0x60, 0xa0,
|
||||
0x77, 0x4c, 0xe0, 0xe3, 0xa0, 0x7b, 0xd0, 0xf9, 0x20, 0x54, 0xe2, 0xa5,
|
||||
0xda, 0xd0, 0x07, 0xa5, 0xdb, 0xd0, 0x03, 0x4c, 0x7e, 0xe7, 0x06, 0xce,
|
||||
0x26, 0xcf, 0x26, 0xe6, 0x26, 0xe7, 0xa5, 0xe6, 0xc5, 0xda, 0xa5, 0xe7,
|
||||
0xe5, 0xdb, 0x90, 0x0a, 0x85, 0xe7, 0xa5, 0xe6, 0xe5, 0xda, 0x85, 0xe6,
|
||||
0xe6, 0xce, 0x88, 0xd0, 0xe1, 0x60, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x20, 0x15, 0xe7, 0x6c, 0xce, 0x00, 0xa5, 0x4c, 0xd0, 0x02, 0xc6, 0x4d,
|
||||
0xc6, 0x4c, 0xa5, 0x48, 0xd0, 0x02, 0xc6, 0x49, 0xc6, 0x48, 0xa0, 0x00,
|
||||
0xb1, 0x4c, 0x91, 0x48, 0xa5, 0xca, 0xc5, 0x4c, 0xa5, 0xcb, 0xe5, 0x4d,
|
||||
0x90, 0xe0, 0x4c, 0x53, 0xee, 0xc9, 0x28, 0xb0, 0x9b, 0xa8, 0xa5, 0xc8,
|
||||
0x60, 0xea, 0xea, 0x98, 0xaa, 0xa0, 0x6e, 0x20, 0xc4, 0xe3, 0x8a, 0xa8,
|
||||
0x20, 0xc4, 0xe3, 0xa0, 0x72, 0x4c, 0xc4, 0xe3, 0x20, 0x15, 0xe7, 0x06,
|
||||
0xce, 0x26, 0xcf, 0x30, 0xfa, 0xb0, 0xdc, 0xd0, 0x04, 0xc5, 0xce, 0xb0,
|
||||
0xd6, 0x60, 0x20, 0x15, 0xe7, 0xb1, 0xce, 0x94, 0x9f, 0x4c, 0x08, 0xe7,
|
||||
0x20, 0x34, 0xee, 0xa5, 0xce, 0x48, 0x20, 0x15, 0xe7, 0x68, 0x91, 0xce,
|
||||
0x60, 0xff, 0xff, 0xff, 0x20, 0x6c, 0xee, 0xa5, 0xce, 0x85, 0xe6, 0xa5,
|
||||
0xcf, 0x85, 0xe7, 0x4c, 0x44, 0xe2, 0x20, 0xe4, 0xee, 0x4c, 0x34, 0xe1,
|
||||
0x20, 0xe4, 0xee, 0xb4, 0x78, 0xb5, 0x50, 0x69, 0xfe, 0xb0, 0x01, 0x88,
|
||||
0x85, 0xda, 0x84, 0xdb, 0x18, 0x65, 0xce, 0x95, 0x50, 0x98, 0x65, 0xcf,
|
||||
0x95, 0x78, 0xa0, 0x00, 0xb5, 0x50, 0xd1, 0xda, 0xc8, 0xb5, 0x78, 0xf1,
|
||||
0xda, 0xb0, 0x80, 0x4c, 0x23, 0xe8, 0x20, 0x15, 0xe7, 0xa5, 0x4e, 0x20,
|
||||
0x08, 0xe7, 0xa5, 0x4f, 0xd0, 0x04, 0xc5, 0x4e, 0x69, 0x00, 0x29, 0x7f,
|
||||
0x85, 0x4f, 0x95, 0xa0, 0xa0, 0x11, 0xa5, 0x4f, 0x0a, 0x18, 0x69, 0x40,
|
||||
0x0a, 0x26, 0x4e, 0x26, 0x4f, 0x88, 0xd0, 0xf2, 0xa5, 0xce, 0x20, 0x08,
|
||||
0xe7, 0xa5, 0xcf, 0x95, 0xa0, 0x4c, 0x7a, 0xe2, 0x20, 0x15, 0xe7, 0xa4,
|
||||
0xce, 0xc4, 0x4c, 0xa5, 0xcf, 0xe5, 0x4d, 0x90, 0x1f, 0x84, 0x48, 0xa5,
|
||||
0xcf, 0x85, 0x49, 0x4c, 0xb6, 0xee, 0x20, 0x15, 0xe7, 0xa4, 0xce, 0xc4,
|
||||
0xca, 0xa5, 0xcf, 0xe5, 0xcb, 0xb0, 0x09, 0x84, 0x4a, 0xa5, 0xcf, 0x85,
|
||||
0x4b, 0x4c, 0xb7, 0xe5, 0x4c, 0xcb, 0xee, 0xea, 0xea, 0xea, 0xea, 0x20,
|
||||
0xc9, 0xef, 0x20, 0x71, 0xe1, 0x4c, 0xbf, 0xef, 0x20, 0x03, 0xee, 0xa9,
|
||||
0xff, 0x85, 0xc8, 0xa9, 0x74, 0x8d, 0x00, 0x02, 0x60, 0x20, 0x36, 0xe7,
|
||||
0xe8, 0x20, 0x36, 0xe7, 0xb5, 0x50, 0x60, 0xa9, 0x00, 0x85, 0x4a, 0x85,
|
||||
0x4c, 0xa9, 0x08, 0x85, 0x4b, 0xa9, 0x10, 0x85, 0x4d, 0x4c, 0xad, 0xe5,
|
||||
0xd5, 0x78, 0xd0, 0x01, 0x18, 0x4c, 0x02, 0xe1, 0x20, 0xb7, 0xe5, 0x4c,
|
||||
0x36, 0xe8, 0x20, 0xb7, 0xe5, 0x4c, 0x5b, 0xe8, 0xe0, 0x80, 0xd0, 0x01,
|
||||
0x88, 0x4c, 0x0c, 0xe0,
|
||||
];
|
||||
|
||||
start() {
|
||||
return 0xe0;
|
||||
}
|
||||
end() {
|
||||
return 0xef;
|
||||
}
|
||||
read(page: byte, off: byte) {
|
||||
return this.ram[((page - 0xe0) << 8) | off];
|
||||
}
|
||||
write(page: byte, off: byte, val: byte) {
|
||||
this.ram[((page - 0xe0) << 8) | off] = val;
|
||||
}
|
||||
|
||||
getState() {
|
||||
return {};
|
||||
}
|
||||
|
||||
setState() {}
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
export default function Bios() {
|
||||
var rom = [
|
||||
0xd8,0x58,0xa0,0x7f,0x8c,0x12,0xd0,0xa9,
|
||||
0xa7,0x8d,0x11,0xd0,0x8d,0x13,0xd0,0xc9,
|
||||
0xdf,0xf0,0x13,0xc9,0x9b,0xf0,0x03,0xc8,
|
||||
0x10,0x0f,0xa9,0xdc,0x20,0xef,0xff,0xa9,
|
||||
0x8d,0x20,0xef,0xff,0xa0,0x01,0x88,0x30,
|
||||
0xf6,0xad,0x11,0xd0,0x10,0xfb,0xad,0x10,
|
||||
0xd0,0x99,0x00,0x02,0x20,0xef,0xff,0xc9,
|
||||
0x8d,0xd0,0xd4,0xa0,0xff,0xa9,0x00,0xaa,
|
||||
0x0a,0x85,0x2b,0xc8,0xb9,0x00,0x02,0xc9,
|
||||
0x8d,0xf0,0xd4,0xc9,0xae,0x90,0xf4,0xf0,
|
||||
0xf0,0xc9,0xba,0xf0,0xeb,0xc9,0xd2,0xf0,
|
||||
0x3b,0x86,0x28,0x86,0x29,0x84,0x2a,0xb9,
|
||||
0x00,0x02,0x49,0xb0,0xc9,0x0a,0x90,0x06,
|
||||
0x69,0x88,0xc9,0xfa,0x90,0x11,0x0a,0x0a,
|
||||
0x0a,0x0a,0xa2,0x04,0x0a,0x26,0x28,0x26,
|
||||
0x29,0xca,0xd0,0xf8,0xc8,0xd0,0xe0,0xc4,
|
||||
0x2a,0xf0,0x97,0x24,0x2b,0x50,0x10,0xa5,
|
||||
0x28,0x81,0x26,0xe6,0x26,0xd0,0xb5,0xe6,
|
||||
0x27,0x4c,0x44,0xff,0x6c,0x24,0x00,0x30,
|
||||
0x2b,0xa2,0x02,0xb5,0x27,0x95,0x25,0x95,
|
||||
0x23,0xca,0xd0,0xf7,0xd0,0x14,0xa9,0x8d,
|
||||
0x20,0xef,0xff,0xa5,0x25,0x20,0xdc,0xff,
|
||||
0xa5,0x24,0x20,0xdc,0xff,0xa9,0xba,0x20,
|
||||
0xef,0xff,0xa9,0xa0,0x20,0xef,0xff,0xa1,
|
||||
0x24,0x20,0xdc,0xff,0x86,0x2b,0xa5,0x24,
|
||||
0xc5,0x28,0xa5,0x25,0xe5,0x29,0xb0,0xc1,
|
||||
0xe6,0x24,0xd0,0x02,0xe6,0x25,0xa5,0x24,
|
||||
0x29,0x07,0x10,0xc8,0x48,0x4a,0x4a,0x4a,
|
||||
0x4a,0x20,0xe5,0xff,0x68,0x29,0x0f,0x09,
|
||||
0xb0,0xc9,0xba,0x90,0x02,0x69,0x06,0x2c,
|
||||
0x12,0xd0,0x30,0xfb,0x8d,0x12,0xd0,0x60,
|
||||
0x00,0x00,0x00,0x0f,0x00,0xff,0x00,0x00
|
||||
];
|
||||
|
||||
return {
|
||||
start: function bios_start() {
|
||||
return 0xff;
|
||||
},
|
||||
end: function bios_end() {
|
||||
return 0xff;
|
||||
},
|
||||
read: function bios_read(page, off) {
|
||||
return rom[off];
|
||||
},
|
||||
write: function bios_write() {},
|
||||
|
||||
getState: function bios_getState() { return {}; },
|
||||
setState: function bios_setState() {}
|
||||
};
|
||||
}
|
44
js/roms/bios.ts
Normal file
44
js/roms/bios.ts
Normal file
@ -0,0 +1,44 @@
|
||||
import { byte } from 'js/types';
|
||||
|
||||
export default class Bios {
|
||||
rom = [
|
||||
0xd8, 0x58, 0xa0, 0x7f, 0x8c, 0x12, 0xd0, 0xa9, 0xa7, 0x8d, 0x11, 0xd0,
|
||||
0x8d, 0x13, 0xd0, 0xc9, 0xdf, 0xf0, 0x13, 0xc9, 0x9b, 0xf0, 0x03, 0xc8,
|
||||
0x10, 0x0f, 0xa9, 0xdc, 0x20, 0xef, 0xff, 0xa9, 0x8d, 0x20, 0xef, 0xff,
|
||||
0xa0, 0x01, 0x88, 0x30, 0xf6, 0xad, 0x11, 0xd0, 0x10, 0xfb, 0xad, 0x10,
|
||||
0xd0, 0x99, 0x00, 0x02, 0x20, 0xef, 0xff, 0xc9, 0x8d, 0xd0, 0xd4, 0xa0,
|
||||
0xff, 0xa9, 0x00, 0xaa, 0x0a, 0x85, 0x2b, 0xc8, 0xb9, 0x00, 0x02, 0xc9,
|
||||
0x8d, 0xf0, 0xd4, 0xc9, 0xae, 0x90, 0xf4, 0xf0, 0xf0, 0xc9, 0xba, 0xf0,
|
||||
0xeb, 0xc9, 0xd2, 0xf0, 0x3b, 0x86, 0x28, 0x86, 0x29, 0x84, 0x2a, 0xb9,
|
||||
0x00, 0x02, 0x49, 0xb0, 0xc9, 0x0a, 0x90, 0x06, 0x69, 0x88, 0xc9, 0xfa,
|
||||
0x90, 0x11, 0x0a, 0x0a, 0x0a, 0x0a, 0xa2, 0x04, 0x0a, 0x26, 0x28, 0x26,
|
||||
0x29, 0xca, 0xd0, 0xf8, 0xc8, 0xd0, 0xe0, 0xc4, 0x2a, 0xf0, 0x97, 0x24,
|
||||
0x2b, 0x50, 0x10, 0xa5, 0x28, 0x81, 0x26, 0xe6, 0x26, 0xd0, 0xb5, 0xe6,
|
||||
0x27, 0x4c, 0x44, 0xff, 0x6c, 0x24, 0x00, 0x30, 0x2b, 0xa2, 0x02, 0xb5,
|
||||
0x27, 0x95, 0x25, 0x95, 0x23, 0xca, 0xd0, 0xf7, 0xd0, 0x14, 0xa9, 0x8d,
|
||||
0x20, 0xef, 0xff, 0xa5, 0x25, 0x20, 0xdc, 0xff, 0xa5, 0x24, 0x20, 0xdc,
|
||||
0xff, 0xa9, 0xba, 0x20, 0xef, 0xff, 0xa9, 0xa0, 0x20, 0xef, 0xff, 0xa1,
|
||||
0x24, 0x20, 0xdc, 0xff, 0x86, 0x2b, 0xa5, 0x24, 0xc5, 0x28, 0xa5, 0x25,
|
||||
0xe5, 0x29, 0xb0, 0xc1, 0xe6, 0x24, 0xd0, 0x02, 0xe6, 0x25, 0xa5, 0x24,
|
||||
0x29, 0x07, 0x10, 0xc8, 0x48, 0x4a, 0x4a, 0x4a, 0x4a, 0x20, 0xe5, 0xff,
|
||||
0x68, 0x29, 0x0f, 0x09, 0xb0, 0xc9, 0xba, 0x90, 0x02, 0x69, 0x06, 0x2c,
|
||||
0x12, 0xd0, 0x30, 0xfb, 0x8d, 0x12, 0xd0, 0x60, 0x00, 0x00, 0x00, 0x0f,
|
||||
0x00, 0xff, 0x00, 0x00,
|
||||
] as const;
|
||||
|
||||
start() {
|
||||
return 0xff;
|
||||
}
|
||||
end() {
|
||||
return 0xff;
|
||||
}
|
||||
read(_page: byte, off: byte) {
|
||||
return this.rom[off];
|
||||
}
|
||||
write() {}
|
||||
|
||||
getState() {
|
||||
return {};
|
||||
}
|
||||
setState() {}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
871
js/roms/enhanced-basic.ts
Normal file
871
js/roms/enhanced-basic.ts
Normal file
@ -0,0 +1,871 @@
|
||||
import { byte } from 'js/types';
|
||||
|
||||
export default class EnhancedBasic {
|
||||
rom = [
|
||||
0xa0, 0x08, 0xb9, 0xbd, 0x78, 0x99, 0xc8, 0x02, 0x88, 0x10, 0xf7, 0xa2,
|
||||
0xff, 0x86, 0x88, 0x9a, 0xa9, 0x4c, 0x85, 0xa1, 0xa2, 0x18, 0xbd, 0xc5,
|
||||
0x78, 0x95, 0xbb, 0xca, 0xd0, 0xf8, 0xa2, 0x12, 0xbd, 0xde, 0x78, 0x95,
|
||||
0x00, 0xca, 0x10, 0xf8, 0xa9, 0x00, 0x85, 0xd8, 0x85, 0xdb, 0x85, 0xb2,
|
||||
0x85, 0x67, 0xa9, 0x08, 0x85, 0x64, 0xa9, 0x03, 0x85, 0xa0, 0xa2, 0x68,
|
||||
0x86, 0x65, 0x20, 0x61, 0x60, 0xa9, 0xf1, 0xa0, 0x78, 0x20, 0x9c, 0x60,
|
||||
0x20, 0x45, 0x5a, 0x86, 0xc3, 0x84, 0xc4, 0x20, 0xbc, 0x00, 0xd0, 0x1f,
|
||||
0xa0, 0x00, 0xe6, 0x11, 0xd0, 0x08, 0xe6, 0x12, 0xa5, 0x12, 0xc9, 0x58,
|
||||
0xf0, 0x1d, 0xa9, 0x55, 0x91, 0x11, 0xd1, 0x11, 0xd0, 0x15, 0x0a, 0x91,
|
||||
0x11, 0xd1, 0x11, 0xf0, 0xe5, 0xd0, 0x0c, 0x20, 0x6a, 0x71, 0xa5, 0xac,
|
||||
0xc9, 0x98, 0xb0, 0xa2, 0x20, 0xb5, 0x6c, 0xa5, 0x11, 0xa4, 0x12, 0xc0,
|
||||
0x04, 0x90, 0x97, 0x85, 0x85, 0x84, 0x86, 0x85, 0x81, 0x84, 0x82, 0xa0,
|
||||
0x00, 0xa2, 0x03, 0x84, 0x79, 0x86, 0x7a, 0x98, 0x91, 0x79, 0xe6, 0x79,
|
||||
0x20, 0x61, 0x60, 0x20, 0x57, 0x5b, 0xa5, 0x85, 0x38, 0xe5, 0x79, 0xaa,
|
||||
0xa5, 0x86, 0xe5, 0x7a, 0x20, 0x45, 0x72, 0xa9, 0xff, 0xa0, 0x78, 0x20,
|
||||
0x9c, 0x60, 0xa9, 0x59, 0xa0, 0x59, 0x85, 0x01, 0x84, 0x02, 0x6c, 0x01,
|
||||
0x00, 0x20, 0x0c, 0x59, 0x85, 0x7f, 0x84, 0x80, 0x38, 0xa5, 0xa6, 0xe5,
|
||||
0xaa, 0x85, 0x71, 0xa8, 0xa5, 0xa7, 0xe5, 0xab, 0xaa, 0xe8, 0x98, 0xf0,
|
||||
0x23, 0xa5, 0xa6, 0x38, 0xe5, 0x71, 0x85, 0xa6, 0xb0, 0x03, 0xc6, 0xa7,
|
||||
0x38, 0xa5, 0xa4, 0xe5, 0x71, 0x85, 0xa4, 0xb0, 0x08, 0xc6, 0xa5, 0x90,
|
||||
0x04, 0xb1, 0xa6, 0x91, 0xa4, 0x88, 0xd0, 0xf9, 0xb1, 0xa6, 0x91, 0xa4,
|
||||
0xc6, 0xa7, 0xc6, 0xa5, 0xca, 0xd0, 0xf2, 0x60, 0x85, 0x78, 0xba, 0xe4,
|
||||
0x78, 0x90, 0x2e, 0x60, 0xc4, 0x82, 0x90, 0x28, 0xd0, 0x04, 0xc5, 0x81,
|
||||
0x90, 0x22, 0x48, 0xa2, 0x08, 0x98, 0x48, 0xb5, 0xa3, 0xca, 0x10, 0xfa,
|
||||
0x20, 0xae, 0x69, 0xa2, 0xf8, 0x68, 0x95, 0xac, 0xe8, 0x30, 0xfa, 0x68,
|
||||
0xa8, 0x68, 0xc4, 0x82, 0x90, 0x06, 0xd0, 0x05, 0xc5, 0x81, 0xb0, 0x01,
|
||||
0x60, 0xa2, 0x0c, 0x20, 0x61, 0x60, 0xbd, 0xfd, 0x7d, 0xbc, 0xfe, 0x7d,
|
||||
0x20, 0x9c, 0x60, 0x20, 0x90, 0x5b, 0xa9, 0x38, 0xa0, 0x7f, 0x20, 0x9c,
|
||||
0x60, 0xa4, 0x88, 0xc8, 0xf0, 0x03, 0x20, 0x3a, 0x72, 0xa9, 0x00, 0x85,
|
||||
0xdb, 0x85, 0xd8, 0xa9, 0x48, 0xa0, 0x7f, 0x20, 0x9c, 0x60, 0x20, 0x52,
|
||||
0x5a, 0x86, 0xc3, 0x84, 0xc4, 0x20, 0xbc, 0x00, 0xf0, 0xf4, 0xa2, 0xff,
|
||||
0x86, 0x88, 0x90, 0x06, 0x20, 0x83, 0x5a, 0x4c, 0xfa, 0x5c, 0x20, 0x19,
|
||||
0x5f, 0x20, 0x83, 0x5a, 0x84, 0x5d, 0x20, 0x29, 0x5b, 0x90, 0x44, 0xa0,
|
||||
0x01, 0xb1, 0xaa, 0x85, 0x72, 0xa5, 0x7b, 0x85, 0x71, 0xa5, 0xab, 0x85,
|
||||
0x74, 0xa5, 0xaa, 0x88, 0xf1, 0xaa, 0x18, 0x65, 0x7b, 0x85, 0x7b, 0x85,
|
||||
0x73, 0xa5, 0x7c, 0x69, 0xff, 0x85, 0x7c, 0xe5, 0xab, 0xaa, 0x38, 0xa5,
|
||||
0xaa, 0xe5, 0x7b, 0xa8, 0xb0, 0x03, 0xe8, 0xc6, 0x74, 0x18, 0x65, 0x71,
|
||||
0x90, 0x03, 0xc6, 0x72, 0x18, 0xb1, 0x71, 0x91, 0x73, 0xc8, 0xd0, 0xf9,
|
||||
0xe6, 0x72, 0xe6, 0x74, 0xca, 0xd0, 0xf2, 0xad, 0x80, 0x02, 0xf0, 0x3f,
|
||||
0xa5, 0x85, 0xa4, 0x86, 0x85, 0x81, 0x84, 0x82, 0xa5, 0x7b, 0x85, 0xa6,
|
||||
0xa4, 0x7c, 0x84, 0xa7, 0x65, 0x5d, 0x90, 0x01, 0xc8, 0x85, 0xa4, 0x84,
|
||||
0xa5, 0x20, 0xc1, 0x58, 0xa5, 0x7f, 0xa4, 0x80, 0x85, 0x7b, 0x84, 0x7c,
|
||||
0xa4, 0x5d, 0x88, 0xb9, 0x7c, 0x02, 0x91, 0xaa, 0x88, 0xc0, 0x03, 0xd0,
|
||||
0xf6, 0xa5, 0x12, 0x91, 0xaa, 0x88, 0xa5, 0x11, 0x91, 0xaa, 0x88, 0xa9,
|
||||
0xff, 0x91, 0xaa, 0x20, 0x6c, 0x5b, 0xa5, 0x79, 0xa4, 0x7a, 0x85, 0x71,
|
||||
0x84, 0x72, 0x18, 0xa0, 0x01, 0xb1, 0x71, 0xd0, 0x03, 0x4c, 0x66, 0x59,
|
||||
0xa0, 0x04, 0xc8, 0xb1, 0x71, 0xd0, 0xfb, 0xc8, 0x98, 0x65, 0x71, 0xaa,
|
||||
0xa0, 0x00, 0x91, 0x71, 0xa5, 0x72, 0x69, 0x00, 0xc8, 0x91, 0x71, 0x86,
|
||||
0x71, 0x85, 0x72, 0x90, 0xda, 0x20, 0xb4, 0x60, 0x20, 0xb1, 0x60, 0xd0,
|
||||
0x05, 0x20, 0xb6, 0x60, 0xca, 0x2c, 0xa2, 0x00, 0x20, 0xb1, 0x78, 0x90,
|
||||
0xfb, 0xf0, 0xf9, 0xc9, 0x07, 0xf0, 0x10, 0xc9, 0x0d, 0xf0, 0x19, 0xe0,
|
||||
0x00, 0xd0, 0x04, 0xc9, 0x21, 0x90, 0xe9, 0xc9, 0x08, 0xf0, 0xde, 0xe0,
|
||||
0x47, 0xb0, 0x0c, 0x9d, 0x80, 0x02, 0xe8, 0x20, 0xb6, 0x60, 0xd0, 0xd8,
|
||||
0x4c, 0x58, 0x60, 0xa9, 0x07, 0xd0, 0xf4, 0xa0, 0xff, 0x38, 0xa5, 0xc3,
|
||||
0xe9, 0x80, 0xaa, 0x86, 0x60, 0xbd, 0x80, 0x02, 0xf0, 0x51, 0xc9, 0x5f,
|
||||
0xb0, 0x4d, 0xc9, 0x3c, 0xb0, 0x0e, 0xc9, 0x30, 0xb0, 0x45, 0x85, 0x5c,
|
||||
0xc9, 0x22, 0xf0, 0x61, 0xc9, 0x2a, 0x90, 0x3b, 0x24, 0x60, 0x70, 0x37,
|
||||
0x86, 0x78, 0x84, 0xba, 0xa0, 0x8d, 0x84, 0x73, 0xa0, 0x7a, 0x84, 0x74,
|
||||
0xa0, 0x00, 0xd1, 0x73, 0xf0, 0x05, 0x90, 0x21, 0xc8, 0xd0, 0xf7, 0x98,
|
||||
0x0a, 0xaa, 0xbd, 0xab, 0x7a, 0x85, 0x73, 0xbd, 0xac, 0x7a, 0x85, 0x74,
|
||||
0xa0, 0xff, 0xa6, 0x78, 0xc8, 0xb1, 0x73, 0x30, 0x08, 0xe8, 0xdd, 0x80,
|
||||
0x02, 0xf0, 0xf5, 0xd0, 0x2b, 0xa4, 0xba, 0xe8, 0xc8, 0x99, 0x80, 0x02,
|
||||
0xc9, 0x00, 0xf0, 0x32, 0xe9, 0x3a, 0xf0, 0x04, 0xc9, 0x49, 0xd0, 0x02,
|
||||
0x85, 0x60, 0x49, 0x57, 0xd0, 0x93, 0x85, 0x5c, 0xbd, 0x80, 0x02, 0xf0,
|
||||
0xe2, 0xc5, 0x5c, 0xf0, 0xde, 0xc8, 0x99, 0x80, 0x02, 0xe8, 0xd0, 0xf0,
|
||||
0xa6, 0x78, 0xb1, 0x73, 0x08, 0xc8, 0x28, 0x10, 0xf9, 0xb1, 0x73, 0xd0,
|
||||
0xbe, 0xbd, 0x80, 0x02, 0x10, 0xc3, 0xc8, 0xc8, 0x99, 0x80, 0x02, 0xc8,
|
||||
0xc8, 0xc8, 0xc6, 0xc3, 0x60, 0xa5, 0x79, 0xa6, 0x7a, 0xa0, 0x01, 0x85,
|
||||
0xaa, 0x86, 0xab, 0xb1, 0xaa, 0xf0, 0x1c, 0xc8, 0xc8, 0xb1, 0xaa, 0x88,
|
||||
0xc5, 0x12, 0xf0, 0x0b, 0xb0, 0x11, 0x88, 0xb1, 0xaa, 0xaa, 0x88, 0xb1,
|
||||
0xaa, 0x90, 0xe2, 0xb1, 0xaa, 0xc5, 0x11, 0x90, 0xf1, 0xf0, 0x01, 0x18,
|
||||
0x60, 0xd0, 0xfd, 0xa9, 0x00, 0xa8, 0x91, 0x79, 0xc8, 0x91, 0x79, 0x18,
|
||||
0xa5, 0x79, 0x69, 0x02, 0x85, 0x7b, 0xa5, 0x7a, 0x69, 0x00, 0x85, 0x7c,
|
||||
0x18, 0xa5, 0x79, 0x69, 0xff, 0x85, 0xc3, 0xa5, 0x7a, 0x69, 0xff, 0x85,
|
||||
0xc4, 0xa5, 0x85, 0xa4, 0x86, 0x85, 0x81, 0x84, 0x82, 0xa5, 0x7b, 0xa4,
|
||||
0x7c, 0x85, 0x7d, 0x84, 0x7e, 0x85, 0x7f, 0x84, 0x80, 0x20, 0x4d, 0x5d,
|
||||
0xa2, 0x68, 0x86, 0x65, 0x68, 0xaa, 0x68, 0x8e, 0xfe, 0x01, 0x8d, 0xff,
|
||||
0x01, 0xa2, 0xfd, 0x9a, 0xa9, 0x00, 0x85, 0x8c, 0x85, 0x61, 0x60, 0xf0,
|
||||
0xd0, 0x60, 0x90, 0x06, 0xf0, 0x04, 0xc9, 0xb6, 0xd0, 0xf4, 0x20, 0x19,
|
||||
0x5f, 0x20, 0x29, 0x5b, 0x20, 0xc2, 0x00, 0xf0, 0x0c, 0xc9, 0xb6, 0xd0,
|
||||
0x93, 0x20, 0xbc, 0x00, 0x20, 0x19, 0x5f, 0xd0, 0x8b, 0xa5, 0x11, 0x05,
|
||||
0x12, 0xd0, 0x06, 0xa9, 0xff, 0x85, 0x11, 0x85, 0x12, 0xa0, 0x01, 0x84,
|
||||
0x60, 0x20, 0x61, 0x60, 0xb1, 0xaa, 0xf0, 0x3e, 0x20, 0x1d, 0x5d, 0xc8,
|
||||
0xb1, 0xaa, 0xaa, 0xc8, 0xb1, 0xaa, 0xc5, 0x12, 0xd0, 0x04, 0xe4, 0x11,
|
||||
0xf0, 0x02, 0xb0, 0x2a, 0x84, 0x97, 0x20, 0x45, 0x72, 0xa9, 0x20, 0xa4,
|
||||
0x97, 0x29, 0x7f, 0x20, 0xb6, 0x60, 0xc9, 0x22, 0xd0, 0x06, 0xa5, 0x60,
|
||||
0x49, 0xff, 0x85, 0x60, 0xc8, 0xb1, 0xaa, 0xd0, 0x0e, 0xa8, 0xb1, 0xaa,
|
||||
0xaa, 0xc8, 0xb1, 0xaa, 0x86, 0xaa, 0x85, 0xab, 0xd0, 0xb7, 0x60, 0x10,
|
||||
0xde, 0x24, 0x60, 0x30, 0xda, 0xa2, 0x7c, 0x0a, 0x0a, 0x90, 0x02, 0xe8,
|
||||
0x18, 0x69, 0x69, 0x90, 0x01, 0xe8, 0x85, 0x73, 0x86, 0x74, 0x84, 0x97,
|
||||
0xa0, 0x00, 0xb1, 0x73, 0xaa, 0xc8, 0xb1, 0x73, 0xca, 0xf0, 0xb8, 0x20,
|
||||
0xb6, 0x60, 0xc8, 0xb1, 0x73, 0x48, 0xc8, 0xb1, 0x73, 0xa0, 0x00, 0x85,
|
||||
0x74, 0x68, 0x85, 0x73, 0xb1, 0x73, 0xca, 0xf0, 0xa2, 0x20, 0xb6, 0x60,
|
||||
0xc8, 0xd0, 0xf5, 0xa9, 0x80, 0x85, 0x61, 0x20, 0x81, 0x5f, 0x68, 0x68,
|
||||
0xa9, 0x10, 0x20, 0x04, 0x59, 0x20, 0xa6, 0x5e, 0x18, 0x98, 0x65, 0xc3,
|
||||
0x48, 0xa5, 0xc4, 0x69, 0x00, 0x48, 0xa5, 0x88, 0x48, 0xa5, 0x87, 0x48,
|
||||
0xa9, 0xac, 0x20, 0xea, 0x63, 0x20, 0x94, 0x62, 0x20, 0x91, 0x62, 0xa5,
|
||||
0xb0, 0x09, 0x7f, 0x25, 0xad, 0x85, 0xad, 0xa9, 0x9e, 0xa0, 0x5c, 0x85,
|
||||
0x71, 0x84, 0x72, 0x4c, 0x46, 0x63, 0xa9, 0xa3, 0xa0, 0x79, 0x20, 0x3e,
|
||||
0x70, 0x20, 0xc2, 0x00, 0xc9, 0xb1, 0xd0, 0x06, 0x20, 0xbc, 0x00, 0x20,
|
||||
0x91, 0x62, 0x20, 0xad, 0x70, 0x85, 0xb0, 0x20, 0x3b, 0x63, 0xa5, 0x98,
|
||||
0x48, 0xa5, 0x97, 0x48, 0xa9, 0x81, 0x48, 0x20, 0x1d, 0x5d, 0xa5, 0xc3,
|
||||
0xa4, 0xc4, 0xa6, 0x88, 0xe8, 0xf0, 0x04, 0x85, 0x8b, 0x84, 0x8c, 0xa0,
|
||||
0x00, 0xb1, 0xc3, 0xf0, 0x07, 0xc9, 0x3a, 0xf0, 0x1d, 0x4c, 0xf3, 0x63,
|
||||
0xa0, 0x02, 0xb1, 0xc3, 0x18, 0xf0, 0x58, 0xc8, 0xb1, 0xc3, 0x85, 0x87,
|
||||
0xc8, 0xb1, 0xc3, 0x85, 0x88, 0x98, 0x65, 0xc3, 0x85, 0xc3, 0x90, 0x02,
|
||||
0xe6, 0xc4, 0x20, 0xbc, 0x00, 0x20, 0x03, 0x5d, 0x4c, 0xc3, 0x5c, 0xf0,
|
||||
0x56, 0x49, 0x80, 0x10, 0x03, 0x4c, 0x81, 0x5f, 0xc9, 0x2b, 0xb0, 0xcd,
|
||||
0x0a, 0xa8, 0xb9, 0xcb, 0x79, 0x48, 0xb9, 0xca, 0x79, 0x48, 0x4c, 0xbc,
|
||||
0x00, 0x6c, 0xcb, 0x02, 0xc9, 0x03, 0xb0, 0x01, 0x18, 0xd0, 0x67, 0xa5,
|
||||
0xc4, 0x49, 0x02, 0xf0, 0x10, 0x49, 0x02, 0xa4, 0xc3, 0x84, 0x8b, 0x85,
|
||||
0x8c, 0xa5, 0x87, 0xa4, 0x88, 0x85, 0x89, 0x84, 0x8a, 0x68, 0x68, 0x90,
|
||||
0x07, 0xa9, 0x31, 0xa0, 0x7f, 0x4c, 0x4e, 0x59, 0x4c, 0x59, 0x59, 0xd0,
|
||||
0x0f, 0x38, 0xa5, 0x79, 0xe9, 0x01, 0xa4, 0x7a, 0xb0, 0x01, 0x88, 0x85,
|
||||
0x8f, 0x84, 0x90, 0x60, 0x20, 0x19, 0x5f, 0x20, 0xa9, 0x5e, 0xa5, 0x88,
|
||||
0xc5, 0x12, 0xb0, 0x0b, 0x98, 0x38, 0x65, 0xc3, 0xa6, 0xc4, 0x90, 0x07,
|
||||
0xe8, 0xb0, 0x04, 0xa5, 0x79, 0xa6, 0x7a, 0x20, 0x2d, 0x5b, 0xb0, 0x03,
|
||||
0x4c, 0x7b, 0x5e, 0xa5, 0xaa, 0xe9, 0x01, 0xa4, 0xab, 0xb0, 0xd0, 0x90,
|
||||
0xcd, 0x20, 0x4a, 0x6c, 0x86, 0x0d, 0x60, 0xd0, 0xfd, 0xa4, 0x8c, 0xd0,
|
||||
0x05, 0xa2, 0x1e, 0x4c, 0x3b, 0x59, 0xa9, 0x93, 0x20, 0xd0, 0x76, 0xa9,
|
||||
0x93, 0x20, 0xd3, 0x76, 0x84, 0xc4, 0xa5, 0x8b, 0x85, 0xc3, 0xa5, 0x89,
|
||||
0xa4, 0x8a, 0x85, 0x87, 0x84, 0x88, 0x60, 0xd0, 0x03, 0x4c, 0x6c, 0x5b,
|
||||
0x20, 0x79, 0x5b, 0xf0, 0x2e, 0xa9, 0x05, 0x20, 0x04, 0x59, 0xa5, 0xc4,
|
||||
0x48, 0xa5, 0xc3, 0x48, 0xa5, 0x88, 0x48, 0xa5, 0x87, 0x48, 0xa9, 0x9d,
|
||||
0x48, 0x20, 0xc2, 0x00, 0x4c, 0xc3, 0x5c, 0xa9, 0x05, 0x20, 0x04, 0x59,
|
||||
0xa5, 0xc4, 0x48, 0xa5, 0xc3, 0x48, 0xa5, 0x88, 0x48, 0xa5, 0x87, 0x48,
|
||||
0xa9, 0x8d, 0x48, 0x20, 0xc2, 0x00, 0x20, 0xf4, 0x5d, 0x4c, 0xc3, 0x5c,
|
||||
0x20, 0x19, 0x5f, 0x20, 0xa9, 0x5e, 0xa5, 0x88, 0xc5, 0x12, 0xb0, 0x0b,
|
||||
0x98, 0x38, 0x65, 0xc3, 0xa6, 0xc4, 0x90, 0x07, 0xe8, 0xb0, 0x04, 0xa5,
|
||||
0x79, 0xa6, 0x7a, 0x20, 0x2d, 0x5b, 0x90, 0x67, 0xa5, 0xaa, 0xe9, 0x01,
|
||||
0x85, 0xc3, 0xa5, 0xab, 0xe9, 0x00, 0x85, 0xc4, 0x60, 0xa2, 0x22, 0x4c,
|
||||
0x3b, 0x59, 0xa8, 0xba, 0xbd, 0x03, 0x01, 0xc9, 0x9d, 0xd0, 0xf2, 0xe8,
|
||||
0xe8, 0x9a, 0x98, 0xf0, 0x20, 0xc9, 0x3a, 0xf0, 0x1c, 0xe9, 0xb2, 0xaa,
|
||||
0xf0, 0x04, 0xca, 0xd0, 0x62, 0xca, 0x86, 0x98, 0x20, 0xbc, 0x00, 0x20,
|
||||
0xa5, 0x62, 0xa5, 0xac, 0xf0, 0x02, 0xa9, 0xff, 0xba, 0x45, 0x98, 0xd0,
|
||||
0x1a, 0xbd, 0x02, 0x01, 0x85, 0x87, 0xbd, 0x03, 0x01, 0x85, 0x88, 0xbd,
|
||||
0x04, 0x01, 0x85, 0xc3, 0xbd, 0x05, 0x01, 0x85, 0xc4, 0x20, 0xc2, 0x00,
|
||||
0x4c, 0xc3, 0x5c, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x9a, 0x4c, 0x95, 0x5e,
|
||||
0xa2, 0x04, 0x2c, 0xa2, 0x0e, 0x4c, 0x3b, 0x59, 0xd0, 0x9e, 0x68, 0x68,
|
||||
0x68, 0xc9, 0x8d, 0xd0, 0xef, 0x68, 0x85, 0x87, 0x68, 0x85, 0x88, 0x68,
|
||||
0x85, 0xc3, 0x68, 0x85, 0xc4, 0x20, 0xa6, 0x5e, 0x98, 0x18, 0x65, 0xc3,
|
||||
0x85, 0xc3, 0x90, 0x02, 0xe6, 0xc4, 0x60, 0x4c, 0xf3, 0x63, 0xa2, 0x3a,
|
||||
0x2c, 0xa2, 0x00, 0x86, 0x5b, 0xa0, 0x00, 0x84, 0x5c, 0xa5, 0x5c, 0xa6,
|
||||
0x5b, 0x85, 0x5b, 0x86, 0x5c, 0xb1, 0xc3, 0xf0, 0xe5, 0xc5, 0x5c, 0xf0,
|
||||
0xe1, 0xc8, 0xc9, 0x22, 0xf0, 0xeb, 0xd0, 0xf1, 0x20, 0xa5, 0x62, 0x20,
|
||||
0xc2, 0x00, 0xc9, 0x89, 0xf0, 0x05, 0xa9, 0xaf, 0x20, 0xea, 0x63, 0xa5,
|
||||
0xac, 0xd0, 0x05, 0x20, 0xa9, 0x5e, 0xf0, 0xb8, 0x20, 0xc2, 0x00, 0xb0,
|
||||
0x03, 0x4c, 0xf4, 0x5d, 0x4c, 0x03, 0x5d, 0xc9, 0xa9, 0xd0, 0x03, 0x4c,
|
||||
0xf5, 0x76, 0xc9, 0xaa, 0xd0, 0x03, 0x4c, 0xf9, 0x76, 0x20, 0x4a, 0x6c,
|
||||
0x48, 0xc9, 0x8d, 0xf0, 0x04, 0xc9, 0x89, 0xd0, 0x9e, 0xc6, 0xaf, 0xd0,
|
||||
0x04, 0x68, 0x4c, 0x05, 0x5d, 0x20, 0xbc, 0x00, 0x20, 0x19, 0x5f, 0xc9,
|
||||
0x2c, 0xf0, 0xee, 0x68, 0x60, 0xa2, 0x00, 0x86, 0x11, 0x86, 0x12, 0xb0,
|
||||
0xf7, 0xe9, 0x2f, 0x85, 0x5b, 0xa5, 0x12, 0x85, 0x71, 0xc9, 0x19, 0xb0,
|
||||
0xd4, 0xa5, 0x11, 0x0a, 0x26, 0x71, 0x0a, 0x26, 0x71, 0x65, 0x11, 0x85,
|
||||
0x11, 0xa5, 0x71, 0x65, 0x12, 0x85, 0x12, 0x06, 0x11, 0x26, 0x12, 0xa5,
|
||||
0x11, 0x65, 0x5b, 0x85, 0x11, 0x90, 0x02, 0xe6, 0x12, 0x20, 0xbc, 0x00,
|
||||
0x4c, 0x1f, 0x5f, 0xa9, 0xa7, 0x2c, 0xa9, 0xa3, 0x48, 0x20, 0x76, 0x65,
|
||||
0xa6, 0x5f, 0x30, 0x1e, 0x85, 0x97, 0x84, 0x98, 0x20, 0x3e, 0x70, 0x68,
|
||||
0x48, 0xa0, 0x79, 0x20, 0x7c, 0x6d, 0x20, 0x67, 0x70, 0x20, 0xc2, 0x00,
|
||||
0xc9, 0x2c, 0xd0, 0x9f, 0x20, 0xbc, 0x00, 0x4c, 0x59, 0x5f, 0x4c, 0xa0,
|
||||
0x62, 0x20, 0x76, 0x65, 0x85, 0x97, 0x84, 0x98, 0xa9, 0xc0, 0x20, 0xea,
|
||||
0x63, 0xa5, 0x5f, 0x48, 0x20, 0xa5, 0x62, 0x68, 0x2a, 0x20, 0x97, 0x62,
|
||||
0xd0, 0x03, 0x4c, 0x67, 0x70, 0xa0, 0x02, 0xb1, 0xae, 0xc5, 0x82, 0x90,
|
||||
0x17, 0xd0, 0x07, 0x88, 0xb1, 0xae, 0xc5, 0x81, 0x90, 0x0e, 0xa4, 0xaf,
|
||||
0xc4, 0x7c, 0x90, 0x08, 0xd0, 0x0d, 0xa5, 0xae, 0xc5, 0x7b, 0xb0, 0x07,
|
||||
0xa5, 0xae, 0xa4, 0xaf, 0x4c, 0xd9, 0x5f, 0xa0, 0x00, 0xb1, 0xae, 0x20,
|
||||
0x01, 0x69, 0xa5, 0x9e, 0xa4, 0x9f, 0x85, 0xb8, 0x84, 0xb9, 0x20, 0xe0,
|
||||
0x6a, 0xa9, 0xac, 0xa0, 0x00, 0x85, 0x9e, 0x84, 0x9f, 0x20, 0x42, 0x6b,
|
||||
0xa0, 0x00, 0xb1, 0x9e, 0x91, 0x97, 0xc8, 0xb1, 0x9e, 0x91, 0x97, 0xc8,
|
||||
0xb1, 0x9e, 0x91, 0x97, 0x60, 0x20, 0x76, 0x65, 0x85, 0x97, 0x84, 0x98,
|
||||
0x20, 0xbc, 0x76, 0xa6, 0x5f, 0x30, 0x07, 0xa8, 0x20, 0x32, 0x68, 0x4c,
|
||||
0x67, 0x70, 0x48, 0xa9, 0x01, 0xb0, 0x01, 0x68, 0x20, 0x09, 0x69, 0xf0,
|
||||
0x05, 0x68, 0xa0, 0x00, 0x91, 0xad, 0x20, 0x54, 0x69, 0x4c, 0x9d, 0x5f,
|
||||
0x20, 0x9f, 0x60, 0x20, 0xc2, 0x00, 0xf0, 0x3d, 0xf0, 0xca, 0xc9, 0xab,
|
||||
0xf0, 0x51, 0xc9, 0xae, 0xf0, 0x4d, 0xc9, 0x2c, 0xf0, 0x33, 0xc9, 0x3b,
|
||||
0xf0, 0x60, 0x20, 0xa5, 0x62, 0x24, 0x5f, 0x30, 0xdf, 0x20, 0x55, 0x72,
|
||||
0x20, 0x13, 0x69, 0xa0, 0x00, 0xa5, 0x0f, 0xf0, 0x0a, 0x38, 0xe5, 0x0e,
|
||||
0xf1, 0xae, 0xb0, 0x03, 0x20, 0x61, 0x60, 0x20, 0x9f, 0x60, 0xf0, 0xc7,
|
||||
0xa9, 0x00, 0x9d, 0x80, 0x02, 0xa2, 0x7f, 0xa0, 0x02, 0xa9, 0x0d, 0xd0,
|
||||
0x51, 0xa5, 0x0e, 0xc5, 0x10, 0x90, 0x05, 0x20, 0x61, 0x60, 0xd0, 0x26,
|
||||
0x38, 0xe5, 0x64, 0xb0, 0xfc, 0x49, 0xff, 0x69, 0x01, 0xd0, 0x14, 0x48,
|
||||
0x20, 0x47, 0x6c, 0xc9, 0x29, 0xd0, 0x7b, 0x68, 0xc9, 0xab, 0xd0, 0x08,
|
||||
0x8a, 0xe5, 0x0e, 0x90, 0x09, 0xf0, 0x07, 0xaa, 0x20, 0xb1, 0x60, 0xca,
|
||||
0xd0, 0xfa, 0x20, 0xbc, 0x00, 0x4c, 0x24, 0x60, 0x20, 0x13, 0x69, 0x20,
|
||||
0x0d, 0x6b, 0xa0, 0x00, 0xaa, 0xf0, 0x4a, 0xb1, 0x71, 0x20, 0xb6, 0x60,
|
||||
0xc8, 0xca, 0xd0, 0xf7, 0x60, 0xa9, 0x20, 0x2c, 0xa9, 0x3f, 0xc9, 0x20,
|
||||
0x90, 0x1a, 0x48, 0xa5, 0x0f, 0xd0, 0x0b, 0x38, 0xa5, 0x0e, 0xe5, 0x64,
|
||||
0xd0, 0x0b, 0x85, 0x0e, 0xf0, 0x07, 0xc5, 0x0e, 0xd0, 0x03, 0x20, 0x61,
|
||||
0x60, 0xe6, 0x0e, 0x68, 0x20, 0xb4, 0x78, 0xc9, 0x0d, 0xd0, 0x14, 0x86,
|
||||
0x78, 0xa6, 0x0d, 0xf0, 0x0a, 0xa9, 0x00, 0x20, 0xb6, 0x60, 0xca, 0xd0,
|
||||
0xfa, 0xa9, 0x0d, 0x86, 0x0e, 0xa6, 0x78, 0x29, 0xff, 0x60, 0xa5, 0x62,
|
||||
0x10, 0x0b, 0xa5, 0x8d, 0xa4, 0x8e, 0x85, 0x87, 0x84, 0x88, 0x4c, 0xf3,
|
||||
0x63, 0xa9, 0x60, 0xa0, 0x7f, 0x20, 0x9c, 0x60, 0xa5, 0x8b, 0xa4, 0x8c,
|
||||
0x85, 0xc3, 0x84, 0xc4, 0x60, 0xc9, 0x22, 0xd0, 0x0b, 0x20, 0xa9, 0x63,
|
||||
0xa9, 0x3b, 0x20, 0xea, 0x63, 0x20, 0x9f, 0x60, 0x20, 0x36, 0x68, 0x20,
|
||||
0x45, 0x5a, 0xad, 0x80, 0x02, 0xd0, 0x09, 0x18, 0x4c, 0x35, 0x5d, 0xa6,
|
||||
0x8f, 0xa4, 0x90, 0xa9, 0x98, 0x85, 0x62, 0x86, 0x91, 0x84, 0x92, 0x20,
|
||||
0x76, 0x65, 0x85, 0x97, 0x84, 0x98, 0xa5, 0xc3, 0xa4, 0xc4, 0x85, 0x11,
|
||||
0x84, 0x12, 0xa6, 0x91, 0xa4, 0x92, 0x86, 0xc3, 0x84, 0xc4, 0x20, 0xc2,
|
||||
0x00, 0xd0, 0x0e, 0x24, 0x62, 0x30, 0x62, 0x20, 0xb4, 0x60, 0x20, 0x45,
|
||||
0x5a, 0x86, 0xc3, 0x84, 0xc4, 0x20, 0xbc, 0x00, 0x24, 0x5f, 0x10, 0x24,
|
||||
0x85, 0x5b, 0xc9, 0x22, 0xf0, 0x07, 0xa9, 0x3a, 0x85, 0x5b, 0xa9, 0x2c,
|
||||
0x18, 0x85, 0x5c, 0xa5, 0xc3, 0xa4, 0xc4, 0x69, 0x00, 0x90, 0x01, 0xc8,
|
||||
0x20, 0x19, 0x69, 0x20, 0x8d, 0x6c, 0x20, 0x9d, 0x5f, 0x4c, 0x96, 0x61,
|
||||
0x20, 0x6a, 0x71, 0x20, 0x67, 0x70, 0x20, 0xc2, 0x00, 0xf0, 0x07, 0xc9,
|
||||
0x2c, 0xf0, 0x03, 0x4c, 0xf2, 0x60, 0xa5, 0xc3, 0xa4, 0xc4, 0x85, 0x91,
|
||||
0x84, 0x92, 0xa5, 0x11, 0xa4, 0x12, 0x85, 0xc3, 0x84, 0xc4, 0x20, 0xc2,
|
||||
0x00, 0xf0, 0x2b, 0x20, 0xe8, 0x63, 0x4c, 0x3b, 0x61, 0x20, 0xa6, 0x5e,
|
||||
0xc8, 0xaa, 0xd0, 0x12, 0xa2, 0x06, 0xc8, 0xb1, 0xc3, 0xf0, 0x72, 0xc8,
|
||||
0xb1, 0xc3, 0x85, 0x8d, 0xc8, 0xb1, 0xc3, 0xc8, 0x85, 0x8e, 0xb1, 0xc3,
|
||||
0xaa, 0x20, 0x98, 0x5e, 0xe0, 0x83, 0xf0, 0x85, 0xd0, 0xdb, 0xa5, 0x91,
|
||||
0xa4, 0x92, 0xa6, 0x62, 0x10, 0x03, 0x4c, 0x57, 0x5d, 0xa0, 0x00, 0xb1,
|
||||
0x91, 0xd0, 0x01, 0x60, 0xa9, 0x50, 0xa0, 0x7f, 0x4c, 0x9c, 0x60, 0xba,
|
||||
0xe8, 0xe8, 0xe8, 0xe8, 0xbd, 0x01, 0x01, 0xc9, 0x81, 0xd0, 0x21, 0xa5,
|
||||
0x98, 0xd0, 0x0a, 0xbd, 0x02, 0x01, 0x85, 0x97, 0xbd, 0x03, 0x01, 0x85,
|
||||
0x98, 0xdd, 0x03, 0x01, 0xd0, 0x07, 0xa5, 0x97, 0xdd, 0x02, 0x01, 0xf0,
|
||||
0x07, 0x8a, 0x18, 0x69, 0x10, 0xaa, 0xd0, 0xd8, 0x60, 0xd0, 0x04, 0xa0,
|
||||
0x00, 0xf0, 0x03, 0x20, 0x76, 0x65, 0x85, 0x97, 0x84, 0x98, 0x20, 0xfb,
|
||||
0x61, 0xf0, 0x04, 0xa2, 0x00, 0xf0, 0x63, 0x9a, 0x8a, 0x38, 0xe9, 0xf7,
|
||||
0x85, 0x73, 0x69, 0xfb, 0xa0, 0x01, 0x20, 0x3e, 0x70, 0xba, 0xbd, 0x08,
|
||||
0x01, 0x85, 0xb0, 0xa5, 0x97, 0xa4, 0x98, 0x20, 0x7c, 0x6d, 0x20, 0x67,
|
||||
0x70, 0xa0, 0x01, 0x20, 0xdd, 0x70, 0xba, 0xdd, 0x08, 0x01, 0xf0, 0x17,
|
||||
0xbd, 0x0d, 0x01, 0x85, 0x87, 0xbd, 0x0e, 0x01, 0x85, 0x88, 0xbd, 0x10,
|
||||
0x01, 0x85, 0xc3, 0xbd, 0x0f, 0x01, 0x85, 0xc4, 0x4c, 0xc3, 0x5c, 0x8a,
|
||||
0x69, 0x0f, 0xaa, 0x9a, 0x20, 0xc2, 0x00, 0xc9, 0x2c, 0xd0, 0xf1, 0x20,
|
||||
0xbc, 0x00, 0x20, 0x2f, 0x62, 0x20, 0xa5, 0x62, 0x18, 0x24, 0x38, 0x24,
|
||||
0x5f, 0x30, 0x03, 0xb0, 0x03, 0x60, 0xb0, 0xfd, 0xa2, 0x18, 0x4c, 0x3b,
|
||||
0x59, 0xa6, 0xc3, 0xd0, 0x02, 0xc6, 0xc4, 0xc6, 0xc3, 0xa9, 0x00, 0x48,
|
||||
0xa9, 0x02, 0x20, 0x04, 0x59, 0x20, 0x80, 0x63, 0xa9, 0x00, 0x85, 0x9b,
|
||||
0x20, 0xc2, 0x00, 0x38, 0xe9, 0xbf, 0x90, 0x17, 0xc9, 0x03, 0xb0, 0x13,
|
||||
0xc9, 0x01, 0x2a, 0x49, 0x01, 0x45, 0x9b, 0xc5, 0x9b, 0x90, 0x65, 0x85,
|
||||
0x9b, 0x20, 0xbc, 0x00, 0x4c, 0xbf, 0x62, 0xa6, 0x9b, 0xd0, 0x2c, 0xb0,
|
||||
0x77, 0x69, 0x0a, 0x90, 0x73, 0x65, 0x5f, 0xd0, 0x03, 0x4c, 0xa3, 0x6a,
|
||||
0x69, 0xff, 0x85, 0x71, 0x0a, 0x65, 0x71, 0xa8, 0x68, 0xd9, 0x66, 0x7a,
|
||||
0xb0, 0x63, 0x20, 0x94, 0x62, 0x48, 0x20, 0x24, 0x63, 0x68, 0xa4, 0x99,
|
||||
0x10, 0x17, 0xaa, 0xf0, 0x74, 0xd0, 0x5b, 0x46, 0x5f, 0x8a, 0x2a, 0xa6,
|
||||
0xc3, 0xd0, 0x02, 0xc6, 0xc4, 0xc6, 0xc3, 0xa0, 0x24, 0x85, 0x9b, 0xd0,
|
||||
0xd7, 0xd9, 0x66, 0x7a, 0xb0, 0x44, 0x90, 0xd9, 0xb9, 0x68, 0x7a, 0x48,
|
||||
0xb9, 0x67, 0x7a, 0x48, 0x20, 0x3b, 0x63, 0xa5, 0x9b, 0x48, 0xb9, 0x66,
|
||||
0x7a, 0x4c, 0xaf, 0x62, 0x4c, 0xf3, 0x63, 0x68, 0x85, 0x71, 0xe6, 0x71,
|
||||
0x68, 0x85, 0x72, 0xa5, 0xb0, 0x48, 0x20, 0x9d, 0x70, 0xa5, 0xaf, 0x48,
|
||||
0xa5, 0xae, 0x48, 0xa5, 0xad, 0x48, 0xa5, 0xac, 0x48, 0x6c, 0x71, 0x00,
|
||||
0xa0, 0xff, 0x68, 0xf0, 0x20, 0xc9, 0x64, 0xf0, 0x03, 0x20, 0x94, 0x62,
|
||||
0x84, 0x99, 0x68, 0x4a, 0x85, 0x63, 0x68, 0x85, 0xb3, 0x68, 0x85, 0xb4,
|
||||
0x68, 0x85, 0xb5, 0x68, 0x85, 0xb6, 0x68, 0x85, 0xb7, 0x45, 0xb0, 0x85,
|
||||
0xb8, 0xa5, 0xac, 0x60, 0xa9, 0x00, 0x85, 0x5f, 0x20, 0xbc, 0x00, 0xb0,
|
||||
0x03, 0x4c, 0x6a, 0x71, 0xc9, 0x24, 0xf0, 0xf9, 0xc9, 0x25, 0xf0, 0xf5,
|
||||
0x20, 0xe8, 0x65, 0xb0, 0x66, 0xc9, 0x2e, 0xf0, 0xec, 0xc9, 0xb6, 0xf0,
|
||||
0x57, 0xc9, 0xb5, 0xf0, 0xdf, 0xc9, 0x22, 0xd0, 0x0f, 0xa5, 0xc3, 0xa4,
|
||||
0xc4, 0x69, 0x00, 0x90, 0x01, 0xc8, 0x20, 0x13, 0x69, 0x4c, 0x8d, 0x6c,
|
||||
0xc9, 0xb0, 0xd0, 0x13, 0xa0, 0x21, 0xd0, 0x3a, 0x20, 0x70, 0x66, 0xa5,
|
||||
0xaf, 0x49, 0xff, 0xa8, 0xa5, 0xae, 0x49, 0xff, 0x4c, 0x23, 0x68, 0xc9,
|
||||
0xad, 0xd0, 0x03, 0x4c, 0x82, 0x68, 0xc9, 0xc2, 0x90, 0x02, 0xb0, 0x32,
|
||||
0x20, 0xe5, 0x63, 0x20, 0xa5, 0x62, 0xa9, 0x29, 0x2c, 0xa9, 0x28, 0x2c,
|
||||
0xa9, 0x2c, 0xa0, 0x00, 0xd1, 0xc3, 0xd0, 0x03, 0x4c, 0xbc, 0x00, 0xa2,
|
||||
0x02, 0x4c, 0x3b, 0x59, 0xa0, 0x1e, 0x68, 0x68, 0x4c, 0xfe, 0x62, 0x20,
|
||||
0x76, 0x65, 0x85, 0xae, 0x84, 0xaf, 0xa6, 0x5f, 0xd0, 0x03, 0x4c, 0x3e,
|
||||
0x70, 0x60, 0x0a, 0x48, 0xaa, 0x20, 0xbc, 0x00, 0xe0, 0xb3, 0x90, 0x56,
|
||||
0xe0, 0xb7, 0x90, 0x24, 0xe0, 0xc3, 0x90, 0x51, 0x20, 0xe5, 0x63, 0x20,
|
||||
0xa5, 0x62, 0x20, 0xe8, 0x63, 0x20, 0x96, 0x62, 0x68, 0xaa, 0xa5, 0xaf,
|
||||
0x48, 0xa5, 0xae, 0x48, 0x8a, 0x48, 0x20, 0x4a, 0x6c, 0x68, 0xa8, 0x8a,
|
||||
0x48, 0x4c, 0x73, 0x64, 0x20, 0xe5, 0x63, 0x20, 0x91, 0x62, 0xa5, 0xac,
|
||||
0xc9, 0x98, 0xb0, 0x1f, 0x20, 0x14, 0x71, 0xa2, 0x02, 0xb5, 0xad, 0x95,
|
||||
0x11, 0xca, 0x10, 0xf9, 0x20, 0xc2, 0x00, 0xa2, 0x00, 0xc9, 0x29, 0xf0,
|
||||
0x10, 0x20, 0x9c, 0x6c, 0x20, 0xc2, 0x00, 0xc9, 0x29, 0xf0, 0x06, 0x4c,
|
||||
0xf3, 0x66, 0x20, 0xdc, 0x63, 0x68, 0xa8, 0xb9, 0x9c, 0x79, 0x85, 0xa2,
|
||||
0xb9, 0x9d, 0x79, 0x85, 0xa3, 0x20, 0xa1, 0x00, 0x4c, 0x94, 0x62, 0x20,
|
||||
0xaa, 0x64, 0x45, 0x5b, 0xa8, 0xa5, 0xae, 0x45, 0x5c, 0x4c, 0x23, 0x68,
|
||||
0x20, 0xaa, 0x64, 0x05, 0x5b, 0xa8, 0xa5, 0xae, 0x05, 0x5c, 0x4c, 0x23,
|
||||
0x68, 0x20, 0xaa, 0x64, 0x25, 0x5b, 0xa8, 0xa5, 0xae, 0x25, 0x5c, 0x4c,
|
||||
0x23, 0x68, 0x20, 0x70, 0x66, 0xa5, 0xae, 0x85, 0x5c, 0xa5, 0xaf, 0x85,
|
||||
0x5b, 0x20, 0x81, 0x6d, 0x20, 0x70, 0x66, 0xa5, 0xaf, 0x60, 0x20, 0x97,
|
||||
0x62, 0xb0, 0x13, 0xa5, 0xb7, 0x09, 0x7f, 0x25, 0xb4, 0x85, 0xb4, 0xa9,
|
||||
0xb3, 0xa0, 0x00, 0x20, 0xdb, 0x70, 0xaa, 0x4c, 0x09, 0x65, 0xa9, 0x00,
|
||||
0x85, 0x5f, 0xc6, 0x9b, 0x20, 0x0d, 0x6b, 0x85, 0xac, 0x86, 0xad, 0x84,
|
||||
0xae, 0xa5, 0xb5, 0xa4, 0xb6, 0x20, 0x11, 0x6b, 0x86, 0xb5, 0x84, 0xb6,
|
||||
0xaa, 0x38, 0xe5, 0xac, 0xf0, 0x08, 0xa9, 0x01, 0x90, 0x04, 0xa6, 0xac,
|
||||
0xa9, 0xff, 0x85, 0xb0, 0xa0, 0xff, 0xe8, 0xc8, 0xca, 0xd0, 0x07, 0xa6,
|
||||
0xb0, 0x30, 0x0f, 0x18, 0x90, 0x0c, 0xb1, 0xb5, 0xd1, 0xad, 0xf0, 0xef,
|
||||
0xa2, 0xff, 0xb0, 0x02, 0xa2, 0x01, 0xe8, 0x8a, 0x2a, 0x25, 0x63, 0xf0,
|
||||
0x02, 0xa9, 0xff, 0x4c, 0xbe, 0x70, 0x20, 0xe8, 0x63, 0xaa, 0x20, 0x7b,
|
||||
0x65, 0x20, 0xc2, 0x00, 0xd0, 0xf4, 0x60, 0x20, 0x6b, 0x65, 0xa5, 0xae,
|
||||
0xa6, 0x78, 0xf0, 0x24, 0xe0, 0x10, 0xb0, 0x25, 0x06, 0xaf, 0x26, 0x00,
|
||||
0xca, 0xd0, 0xf9, 0xa4, 0xaf, 0x4c, 0x23, 0x68, 0x20, 0x6b, 0x65, 0xa5,
|
||||
0xae, 0xa6, 0x78, 0xf0, 0x0b, 0xe0, 0x10, 0xb0, 0x0c, 0x46, 0x00, 0x66,
|
||||
0xaf, 0xca, 0xd0, 0xf9, 0xa4, 0xaf, 0x4c, 0x23, 0x68, 0xa9, 0x00, 0xa8,
|
||||
0x4c, 0x23, 0x68, 0x20, 0x4d, 0x6c, 0x86, 0x78, 0x20, 0x81, 0x6d, 0x4c,
|
||||
0x70, 0x66, 0xa2, 0x00, 0x20, 0xc2, 0x00, 0x86, 0x5e, 0x85, 0x93, 0x20,
|
||||
0xe8, 0x65, 0xb0, 0x03, 0x4c, 0xf3, 0x63, 0xa2, 0x00, 0x86, 0x5f, 0x20,
|
||||
0xbc, 0x00, 0x90, 0x05, 0x20, 0xe8, 0x65, 0x90, 0x0b, 0xaa, 0x20, 0xbc,
|
||||
0x00, 0x90, 0xfb, 0x20, 0xe8, 0x65, 0xb0, 0xf6, 0xc9, 0x24, 0xd0, 0x0b,
|
||||
0xa9, 0xff, 0x85, 0x5f, 0x8a, 0x09, 0x80, 0xaa, 0x20, 0xbc, 0x00, 0x86,
|
||||
0x94, 0x05, 0x61, 0xc9, 0x28, 0xd0, 0x03, 0x4c, 0x82, 0x66, 0xa9, 0x00,
|
||||
0x85, 0x61, 0xa5, 0x7b, 0xa6, 0x7c, 0xa0, 0x00, 0x86, 0xab, 0x85, 0xaa,
|
||||
0xe4, 0x7e, 0xd0, 0x04, 0xc5, 0x7d, 0xf0, 0x2c, 0xa5, 0x93, 0xd1, 0xaa,
|
||||
0xd0, 0x08, 0xa5, 0x94, 0xc8, 0xd1, 0xaa, 0xf0, 0x69, 0x88, 0x18, 0xa5,
|
||||
0xaa, 0x69, 0x06, 0x90, 0xe1, 0xe8, 0xd0, 0xdc, 0xc9, 0x61, 0xb0, 0x0a,
|
||||
0xc9, 0x41, 0x90, 0x05, 0xe9, 0x5b, 0x38, 0xe9, 0xa5, 0x60, 0xe9, 0x7b,
|
||||
0x38, 0xe9, 0x85, 0x60, 0x68, 0x48, 0xc9, 0x01, 0xd0, 0x05, 0xa9, 0xa4,
|
||||
0xa0, 0x79, 0x60, 0xa5, 0x7d, 0xa4, 0x7e, 0x85, 0xaa, 0x84, 0xab, 0xa5,
|
||||
0x7f, 0xa4, 0x80, 0x85, 0xa6, 0x84, 0xa7, 0x18, 0x69, 0x06, 0x90, 0x01,
|
||||
0xc8, 0x85, 0xa4, 0x84, 0xa5, 0x20, 0xc1, 0x58, 0xa5, 0xa4, 0xa4, 0xa5,
|
||||
0xc8, 0x85, 0x7d, 0x84, 0x7e, 0xa0, 0x00, 0xa5, 0x93, 0x91, 0xaa, 0xc8,
|
||||
0xa5, 0x94, 0x91, 0xaa, 0xa9, 0x00, 0xc8, 0x91, 0xaa, 0xc8, 0x91, 0xaa,
|
||||
0xc8, 0x91, 0xaa, 0xc8, 0x91, 0xaa, 0xa5, 0xaa, 0x18, 0x69, 0x02, 0xa4,
|
||||
0xab, 0x90, 0x01, 0xc8, 0x85, 0x95, 0x84, 0x96, 0x60, 0xa5, 0x5d, 0x0a,
|
||||
0x69, 0x05, 0x65, 0xaa, 0xa4, 0xab, 0x90, 0x01, 0xc8, 0x85, 0xa4, 0x84,
|
||||
0xa5, 0x60, 0x20, 0xbc, 0x00, 0x20, 0x91, 0x62, 0xa5, 0xb0, 0x30, 0x0d,
|
||||
0xa5, 0xac, 0xc9, 0x90, 0x90, 0x09, 0xa9, 0xab, 0xa0, 0x79, 0x20, 0xdb,
|
||||
0x70, 0xd0, 0x74, 0x4c, 0x14, 0x71, 0xa5, 0x5e, 0x48, 0xa5, 0x5f, 0x48,
|
||||
0xa0, 0x00, 0x98, 0x48, 0xa5, 0x94, 0x48, 0xa5, 0x93, 0x48, 0x20, 0x66,
|
||||
0x66, 0x68, 0x85, 0x93, 0x68, 0x85, 0x94, 0x68, 0xa8, 0xba, 0xbd, 0x02,
|
||||
0x01, 0x48, 0xbd, 0x01, 0x01, 0x48, 0xa5, 0xae, 0x9d, 0x02, 0x01, 0xa5,
|
||||
0xaf, 0x9d, 0x01, 0x01, 0xc8, 0x20, 0xc2, 0x00, 0xc9, 0x2c, 0xf0, 0xd2,
|
||||
0x84, 0x5d, 0x20, 0xe2, 0x63, 0x68, 0x85, 0x5f, 0x68, 0x85, 0x5e, 0xa6,
|
||||
0x7d, 0xa5, 0x7e, 0x86, 0xaa, 0x85, 0xab, 0xc5, 0x80, 0xd0, 0x04, 0xe4,
|
||||
0x7f, 0xf0, 0x39, 0xa0, 0x00, 0xb1, 0xaa, 0xc8, 0xc5, 0x93, 0xd0, 0x06,
|
||||
0xa5, 0x94, 0xd1, 0xaa, 0xf0, 0x16, 0xc8, 0xb1, 0xaa, 0x18, 0x65, 0xaa,
|
||||
0xaa, 0xc8, 0xb1, 0xaa, 0x65, 0xab, 0x90, 0xd7, 0xa2, 0x10, 0x2c, 0xa2,
|
||||
0x08, 0x4c, 0x3b, 0x59, 0xa2, 0x12, 0xa5, 0x5e, 0xd0, 0xf7, 0x20, 0x55,
|
||||
0x66, 0xa5, 0x5d, 0xa0, 0x04, 0xd1, 0xaa, 0xd0, 0xe7, 0x4c, 0x8f, 0x67,
|
||||
0x20, 0x55, 0x66, 0x20, 0x0c, 0x59, 0xa0, 0x00, 0x84, 0xbb, 0xa5, 0x93,
|
||||
0x91, 0xaa, 0xc8, 0xa5, 0x94, 0x91, 0xaa, 0xa5, 0x5d, 0xa0, 0x04, 0x84,
|
||||
0xba, 0x91, 0xaa, 0x18, 0xa2, 0x0b, 0xa9, 0x00, 0x24, 0x5e, 0x50, 0x07,
|
||||
0x68, 0x69, 0x01, 0xaa, 0x68, 0x69, 0x00, 0xc8, 0x91, 0xaa, 0xc8, 0x8a,
|
||||
0x91, 0xaa, 0x20, 0xde, 0x67, 0x86, 0xba, 0x85, 0xbb, 0xa4, 0x71, 0xc6,
|
||||
0x5d, 0xd0, 0xdd, 0x65, 0xa5, 0xb0, 0x5d, 0x85, 0xa5, 0xa8, 0x8a, 0x65,
|
||||
0xa4, 0x90, 0x03, 0xc8, 0xf0, 0x52, 0x20, 0x0c, 0x59, 0x85, 0x7f, 0x84,
|
||||
0x80, 0xa9, 0x00, 0xe6, 0xbb, 0xa4, 0xba, 0xf0, 0x05, 0x88, 0x91, 0xa4,
|
||||
0xd0, 0xfb, 0xc6, 0xa5, 0xc6, 0xbb, 0xd0, 0xf5, 0xe6, 0xa5, 0x38, 0xa0,
|
||||
0x02, 0xa5, 0x7f, 0xe5, 0xaa, 0x91, 0xaa, 0xc8, 0xa5, 0x80, 0xe5, 0xab,
|
||||
0x91, 0xaa, 0xa5, 0x5e, 0xd0, 0x53, 0xc8, 0xb1, 0xaa, 0x85, 0x5d, 0xa9,
|
||||
0x00, 0x85, 0xba, 0x85, 0xbb, 0xc8, 0x68, 0xaa, 0x85, 0xae, 0x68, 0x85,
|
||||
0xaf, 0xd1, 0xaa, 0x90, 0x0e, 0xd0, 0x06, 0xc8, 0x8a, 0xd1, 0xaa, 0x90,
|
||||
0x07, 0x4c, 0xf0, 0x66, 0x4c, 0x39, 0x59, 0xc8, 0xa5, 0xbb, 0x05, 0xba,
|
||||
0xf0, 0x0a, 0x20, 0xde, 0x67, 0x8a, 0x65, 0xae, 0xaa, 0x98, 0xa4, 0x71,
|
||||
0x65, 0xaf, 0x86, 0xba, 0xc6, 0x5d, 0xd0, 0xcb, 0x06, 0xba, 0x2a, 0x06,
|
||||
0xba, 0x2a, 0xa8, 0xa5, 0xba, 0x65, 0xa4, 0x85, 0x95, 0x98, 0x65, 0xa5,
|
||||
0x85, 0x96, 0xa8, 0xa5, 0x95, 0x60, 0x84, 0x71, 0xb1, 0xaa, 0x85, 0x76,
|
||||
0x88, 0xb1, 0xaa, 0x85, 0x77, 0xa9, 0x10, 0x85, 0xa8, 0xa2, 0x00, 0xa0,
|
||||
0x00, 0x8a, 0x0a, 0xaa, 0x98, 0x2a, 0xa8, 0xb0, 0xb3, 0x06, 0xba, 0x26,
|
||||
0xbb, 0x90, 0x0b, 0x18, 0x8a, 0x65, 0x76, 0xaa, 0x98, 0x65, 0x77, 0xa8,
|
||||
0xb0, 0xa2, 0xc6, 0xa8, 0xd0, 0xe3, 0x60, 0xa5, 0x5f, 0xf0, 0x03, 0x20,
|
||||
0x0d, 0x6b, 0x20, 0xae, 0x69, 0x38, 0xa5, 0x81, 0xe5, 0x7f, 0xa8, 0xa5,
|
||||
0x82, 0xe5, 0x80, 0xa2, 0x00, 0x86, 0x5f, 0x85, 0xad, 0x84, 0xae, 0xa2,
|
||||
0x90, 0x4c, 0xc6, 0x70, 0xa4, 0x0e, 0xa9, 0x00, 0xf0, 0xed, 0xa6, 0x88,
|
||||
0xe8, 0xd0, 0xa2, 0xa2, 0x16, 0x4c, 0x3b, 0x59, 0x20, 0x6d, 0x68, 0x20,
|
||||
0x36, 0x68, 0x20, 0xe5, 0x63, 0xa9, 0x80, 0x85, 0x61, 0x20, 0x76, 0x65,
|
||||
0x20, 0x94, 0x62, 0x20, 0xe2, 0x63, 0xa9, 0xc0, 0x20, 0xea, 0x63, 0xa5,
|
||||
0x96, 0x48, 0xa5, 0x95, 0x48, 0xa5, 0xc4, 0x48, 0xa5, 0xc3, 0x48, 0x20,
|
||||
0x95, 0x5e, 0x4c, 0xdf, 0x68, 0xa9, 0xad, 0x20, 0xea, 0x63, 0x09, 0x80,
|
||||
0x85, 0x61, 0x29, 0x7f, 0x20, 0x7d, 0x65, 0x85, 0x9c, 0x84, 0x9d, 0x4c,
|
||||
0x94, 0x62, 0x20, 0x6d, 0x68, 0xa5, 0x9d, 0x48, 0xa5, 0x9c, 0x48, 0x20,
|
||||
0xdc, 0x63, 0x20, 0x94, 0x62, 0x68, 0x85, 0x9c, 0x68, 0x85, 0x9d, 0xa2,
|
||||
0x20, 0xa0, 0x03, 0xb1, 0x9c, 0xf0, 0x9e, 0x85, 0x96, 0x88, 0xb1, 0x9c,
|
||||
0x85, 0x95, 0xaa, 0xc8, 0xb1, 0x95, 0x48, 0x88, 0x10, 0xfa, 0xa4, 0x96,
|
||||
0x20, 0x6b, 0x70, 0xa5, 0xc4, 0x48, 0xa5, 0xc3, 0x48, 0xb1, 0x9c, 0x85,
|
||||
0xc3, 0xc8, 0xb1, 0x9c, 0x85, 0xc4, 0xa5, 0x96, 0x48, 0xa5, 0x95, 0x48,
|
||||
0x20, 0x91, 0x62, 0x68, 0x85, 0x9c, 0x68, 0x85, 0x9d, 0x20, 0xc2, 0x00,
|
||||
0xf0, 0x03, 0x4c, 0xf3, 0x63, 0x68, 0x85, 0xc3, 0x68, 0x85, 0xc4, 0xa0,
|
||||
0x00, 0x68, 0x91, 0x9c, 0xc8, 0x68, 0x91, 0x9c, 0xc8, 0x68, 0x91, 0x9c,
|
||||
0xc8, 0x68, 0x91, 0x9c, 0x60, 0x20, 0x94, 0x62, 0xa0, 0x00, 0x20, 0x57,
|
||||
0x72, 0x68, 0x68, 0xa9, 0xf0, 0xa0, 0x00, 0xf0, 0x12, 0xa6, 0xae, 0xa4,
|
||||
0xaf, 0x86, 0x9e, 0x84, 0x9f, 0x20, 0x7c, 0x69, 0x86, 0xad, 0x84, 0xae,
|
||||
0x85, 0xac, 0x60, 0xa2, 0x22, 0x86, 0x5b, 0x86, 0x5c, 0x85, 0xb8, 0x84,
|
||||
0xb9, 0x85, 0xad, 0x84, 0xae, 0xa0, 0xff, 0xc8, 0xb1, 0xb8, 0xf0, 0x0c,
|
||||
0xc5, 0x5b, 0xf0, 0x04, 0xc5, 0x5c, 0xd0, 0xf3, 0xc9, 0x22, 0xf0, 0x01,
|
||||
0x18, 0x84, 0xac, 0x98, 0x65, 0xb8, 0x85, 0xba, 0xa6, 0xb9, 0x90, 0x01,
|
||||
0xe8, 0x86, 0xbb, 0xa5, 0xb9, 0xc9, 0x03, 0xb0, 0x0b, 0x98, 0x20, 0x01,
|
||||
0x69, 0xa6, 0xb8, 0xa4, 0xb9, 0x20, 0xee, 0x6a, 0xa6, 0x65, 0xe0, 0x71,
|
||||
0xd0, 0x05, 0xa2, 0x1c, 0x4c, 0x3b, 0x59, 0xa5, 0xac, 0x95, 0x00, 0xa5,
|
||||
0xad, 0x95, 0x01, 0xa5, 0xae, 0x95, 0x02, 0xa0, 0x00, 0x86, 0xae, 0x84,
|
||||
0xaf, 0x88, 0x84, 0x5f, 0x86, 0x66, 0xe8, 0xe8, 0xe8, 0x86, 0x65, 0x60,
|
||||
0x46, 0x60, 0x48, 0x49, 0xff, 0x38, 0x65, 0x81, 0xa4, 0x82, 0xb0, 0x01,
|
||||
0x88, 0xc4, 0x80, 0x90, 0x11, 0xd0, 0x04, 0xc5, 0x7f, 0x90, 0x0b, 0x85,
|
||||
0x81, 0x84, 0x82, 0x85, 0x83, 0x84, 0x84, 0xaa, 0x68, 0x60, 0xa2, 0x0c,
|
||||
0xa5, 0x60, 0x30, 0xb8, 0x20, 0xae, 0x69, 0xa9, 0x80, 0x85, 0x60, 0x68,
|
||||
0xd0, 0xd0, 0xa6, 0x85, 0xa5, 0x86, 0x86, 0x81, 0x85, 0x82, 0xa0, 0x00,
|
||||
0x84, 0x9d, 0xa5, 0x7f, 0xa6, 0x80, 0x85, 0xaa, 0x86, 0xab, 0xa9, 0x68,
|
||||
0x85, 0x71, 0x84, 0x72, 0xc5, 0x65, 0xf0, 0x05, 0x20, 0x32, 0x6a, 0xf0,
|
||||
0xf7, 0x06, 0xa0, 0xa5, 0x7b, 0xa6, 0x7c, 0x85, 0x71, 0x86, 0x72, 0xe4,
|
||||
0x7e, 0xd0, 0x04, 0xc5, 0x7d, 0xf0, 0x05, 0x20, 0x2c, 0x6a, 0xf0, 0xf3,
|
||||
0x85, 0xa4, 0x86, 0xa5, 0xa9, 0x04, 0x85, 0xa0, 0xa5, 0xa4, 0xa6, 0xa5,
|
||||
0xe4, 0x80, 0xd0, 0x04, 0xc5, 0x7f, 0xf0, 0x75, 0x85, 0x71, 0x86, 0x72,
|
||||
0xa0, 0x02, 0xb1, 0x71, 0x65, 0xa4, 0x85, 0xa4, 0xc8, 0xb1, 0x71, 0x65,
|
||||
0xa5, 0x85, 0xa5, 0xa0, 0x01, 0xb1, 0x71, 0x10, 0xdb, 0xa0, 0x04, 0xb1,
|
||||
0x71, 0x0a, 0x69, 0x05, 0x20, 0x64, 0x6a, 0xe4, 0xa5, 0xd0, 0x04, 0xc5,
|
||||
0xa4, 0xf0, 0xcd, 0x20, 0x32, 0x6a, 0xf0, 0xf3, 0xc8, 0xb1, 0x71, 0x10,
|
||||
0x30, 0xc8, 0xb1, 0x71, 0xf0, 0x2b, 0xc8, 0xb1, 0x71, 0xaa, 0xc8, 0xb1,
|
||||
0x71, 0xc5, 0x82, 0x90, 0x06, 0xd0, 0x1e, 0xe4, 0x81, 0xb0, 0x1a, 0xc5,
|
||||
0xab, 0x90, 0x17, 0xd0, 0x04, 0xe4, 0xaa, 0x90, 0x11, 0x86, 0xaa, 0x85,
|
||||
0xab, 0xa5, 0x71, 0xa6, 0x72, 0x85, 0x9c, 0x86, 0x9d, 0x88, 0x88, 0x84,
|
||||
0xa2, 0x18, 0xa5, 0xa0, 0x65, 0x71, 0x85, 0x71, 0x90, 0x02, 0xe6, 0x72,
|
||||
0xa6, 0x72, 0xa0, 0x00, 0x60, 0xc6, 0xa0, 0xa6, 0x9d, 0xf0, 0xf5, 0xa4,
|
||||
0xa2, 0x18, 0xb1, 0x9c, 0x65, 0xaa, 0x85, 0xa6, 0xa5, 0xab, 0x69, 0x00,
|
||||
0x85, 0xa7, 0xa5, 0x81, 0xa6, 0x82, 0x85, 0xa4, 0x86, 0xa5, 0x20, 0xc8,
|
||||
0x58, 0xa4, 0xa2, 0xc8, 0xa5, 0xa4, 0x91, 0x9c, 0xaa, 0xe6, 0xa5, 0xa5,
|
||||
0xa5, 0xc8, 0x91, 0x9c, 0x4c, 0xb2, 0x69, 0xa5, 0xaf, 0x48, 0xa5, 0xae,
|
||||
0x48, 0x20, 0x80, 0x63, 0x20, 0x96, 0x62, 0x68, 0x85, 0xb8, 0x68, 0x85,
|
||||
0xb9, 0xa0, 0x00, 0xb1, 0xb8, 0x18, 0x71, 0xae, 0x90, 0x05, 0xa2, 0x1a,
|
||||
0x4c, 0x3b, 0x59, 0x20, 0x01, 0x69, 0x20, 0xe0, 0x6a, 0xa5, 0x9e, 0xa4,
|
||||
0x9f, 0x20, 0x11, 0x6b, 0x20, 0xf2, 0x6a, 0xa5, 0xb8, 0xa4, 0xb9, 0x20,
|
||||
0x11, 0x6b, 0x20, 0x54, 0x69, 0x4c, 0xbc, 0x62, 0xa0, 0x00, 0xb1, 0xb8,
|
||||
0x48, 0xc8, 0xb1, 0xb8, 0xaa, 0xc8, 0xb1, 0xb8, 0xa8, 0x68, 0x86, 0x71,
|
||||
0x84, 0x72, 0xaa, 0xf0, 0x14, 0xa0, 0x00, 0xb1, 0x71, 0x91, 0x83, 0xc8,
|
||||
0xca, 0xd0, 0xf8, 0x98, 0x18, 0x65, 0x83, 0x85, 0x83, 0x90, 0x02, 0xe6,
|
||||
0x84, 0x60, 0x20, 0x96, 0x62, 0xa5, 0xae, 0xa4, 0xaf, 0x85, 0x71, 0x84,
|
||||
0x72, 0x20, 0x42, 0x6b, 0x08, 0xa0, 0x00, 0xb1, 0x71, 0x48, 0xc8, 0xb1,
|
||||
0x71, 0xaa, 0xc8, 0xb1, 0x71, 0xa8, 0x68, 0x28, 0xd0, 0x13, 0xc4, 0x82,
|
||||
0xd0, 0x0f, 0xe4, 0x81, 0xd0, 0x0b, 0x48, 0x18, 0x65, 0x81, 0x85, 0x81,
|
||||
0x90, 0x02, 0xe6, 0x82, 0x68, 0x86, 0x71, 0x84, 0x72, 0x60, 0xc4, 0x67,
|
||||
0xd0, 0x0c, 0xc5, 0x66, 0xd0, 0x08, 0x85, 0x65, 0xe9, 0x03, 0x85, 0x66,
|
||||
0xa0, 0x00, 0x60, 0x20, 0x4d, 0x6c, 0x8a, 0x48, 0xa9, 0x01, 0x20, 0x09,
|
||||
0x69, 0x68, 0xa0, 0x00, 0x91, 0xad, 0x68, 0x68, 0x4c, 0x54, 0x69, 0x20,
|
||||
0xc5, 0x6b, 0xd1, 0x9e, 0x98, 0xf0, 0x08, 0x20, 0xc5, 0x6b, 0x18, 0xf1,
|
||||
0x9e, 0x49, 0xff, 0x90, 0x04, 0xb1, 0x9e, 0xaa, 0x98, 0x48, 0x8a, 0x48,
|
||||
0x20, 0x09, 0x69, 0xa5, 0x9e, 0xa4, 0x9f, 0x20, 0x11, 0x6b, 0x68, 0xa8,
|
||||
0x68, 0x18, 0x65, 0x71, 0x85, 0x71, 0x90, 0x02, 0xe6, 0x72, 0x98, 0x20,
|
||||
0xf2, 0x6a, 0x4c, 0x54, 0x69, 0xa9, 0xff, 0x85, 0xaf, 0x20, 0xc2, 0x00,
|
||||
0xc9, 0x29, 0xf0, 0x06, 0x20, 0xe8, 0x63, 0x20, 0x4a, 0x6c, 0x20, 0xc5,
|
||||
0x6b, 0xca, 0x8a, 0x48, 0x18, 0xa2, 0x00, 0xf1, 0x9e, 0xb0, 0xc3, 0x49,
|
||||
0xff, 0xc5, 0xaf, 0x90, 0xbe, 0xa5, 0xaf, 0xb0, 0xba, 0x20, 0xe2, 0x63,
|
||||
0x68, 0x85, 0xa2, 0x68, 0x85, 0xa3, 0x68, 0x68, 0x68, 0xaa, 0x68, 0x85,
|
||||
0x9e, 0x68, 0x85, 0x9f, 0xa0, 0x00, 0x8a, 0xf0, 0x67, 0xe6, 0xa2, 0x6c,
|
||||
0xa2, 0x00, 0x20, 0x0a, 0x6b, 0x85, 0xac, 0x86, 0xad, 0x84, 0xae, 0xa8,
|
||||
0xf0, 0x2c, 0x88, 0xb1, 0x71, 0x20, 0xec, 0x65, 0x90, 0x04, 0x09, 0x20,
|
||||
0x91, 0x71, 0x98, 0xd0, 0xf1, 0xf0, 0x1b, 0x20, 0x0a, 0x6b, 0x85, 0xac,
|
||||
0x86, 0xad, 0x84, 0xae, 0xa8, 0xf0, 0x0f, 0x88, 0xb1, 0x71, 0x20, 0xe8,
|
||||
0x65, 0x90, 0x04, 0x29, 0xdf, 0x91, 0x71, 0x98, 0xd0, 0xf1, 0x68, 0x68,
|
||||
0x4c, 0x54, 0x69, 0x20, 0x0a, 0x6b, 0x98, 0xa4, 0x71, 0x4c, 0x23, 0x68,
|
||||
0x20, 0x2e, 0x6c, 0x4c, 0x32, 0x68, 0x20, 0x0a, 0x6b, 0xa2, 0x00, 0x86,
|
||||
0x5f, 0xa8, 0x60, 0x20, 0x2e, 0x6c, 0xf0, 0x08, 0xa0, 0x00, 0xb1, 0x71,
|
||||
0xa8, 0x4c, 0x32, 0x68, 0x4c, 0xf3, 0x66, 0x20, 0xbc, 0x00, 0x20, 0x91,
|
||||
0x62, 0x20, 0x6c, 0x66, 0xa4, 0xae, 0xd0, 0xf0, 0xa6, 0xaf, 0x4c, 0xc2,
|
||||
0x00, 0x20, 0x2e, 0x6c, 0xd0, 0x03, 0x4c, 0x0e, 0x6e, 0xa6, 0xc3, 0xa4,
|
||||
0xc4, 0x86, 0xba, 0x84, 0xbb, 0xa6, 0x71, 0x86, 0xc3, 0x18, 0x65, 0x71,
|
||||
0x85, 0x73, 0xa5, 0x72, 0x85, 0xc4, 0x69, 0x00, 0x85, 0x74, 0xa0, 0x00,
|
||||
0xb1, 0x73, 0x48, 0x98, 0x91, 0x73, 0x20, 0xc2, 0x00, 0x20, 0x6a, 0x71,
|
||||
0x68, 0xa0, 0x00, 0x91, 0x73, 0xa6, 0xba, 0xa4, 0xbb, 0x86, 0xc3, 0x84,
|
||||
0xc4, 0x60, 0x20, 0x91, 0x62, 0x20, 0xaf, 0x6c, 0x20, 0xe8, 0x63, 0xa5,
|
||||
0x12, 0x48, 0xa5, 0x11, 0x48, 0x20, 0x4a, 0x6c, 0x68, 0x85, 0x11, 0x68,
|
||||
0x85, 0x12, 0x60, 0xa5, 0xac, 0xc9, 0x98, 0xb0, 0x8f, 0x20, 0x14, 0x71,
|
||||
0xa5, 0xae, 0xa4, 0xaf, 0x84, 0x11, 0x85, 0x12, 0x60, 0x20, 0xaf, 0x6c,
|
||||
0xa2, 0x00, 0xa1, 0x11, 0xa8, 0x4c, 0x32, 0x68, 0x20, 0x96, 0x6c, 0x8a,
|
||||
0xa2, 0x00, 0x81, 0x11, 0x60, 0x20, 0xaf, 0x6c, 0xa2, 0x00, 0xa1, 0x11,
|
||||
0xa8, 0xe6, 0x11, 0xd0, 0x02, 0xe6, 0x12, 0xa1, 0x11, 0x4c, 0x23, 0x68,
|
||||
0x20, 0x91, 0x62, 0x20, 0xaf, 0x6c, 0x84, 0x97, 0x85, 0x98, 0x20, 0xe8,
|
||||
0x63, 0x20, 0x91, 0x62, 0x20, 0xaf, 0x6c, 0x98, 0xa2, 0x00, 0x81, 0x97,
|
||||
0xe6, 0x97, 0xd0, 0x02, 0xe6, 0x98, 0xa5, 0x12, 0x81, 0x97, 0x4c, 0xc2,
|
||||
0x00, 0x20, 0x76, 0x65, 0x85, 0x97, 0x84, 0x98, 0xa5, 0x5f, 0x48, 0x20,
|
||||
0xe8, 0x63, 0x20, 0x76, 0x65, 0x68, 0xc5, 0x5f, 0xd0, 0x10, 0xa0, 0x03,
|
||||
0xb1, 0x97, 0x48, 0xb1, 0x95, 0x91, 0x97, 0x68, 0x91, 0x95, 0x88, 0x10,
|
||||
0xf3, 0x60, 0x4c, 0xa0, 0x62, 0x20, 0x91, 0x62, 0x20, 0xaf, 0x6c, 0xa9,
|
||||
0x6d, 0x48, 0xa9, 0x43, 0x48, 0x6c, 0x11, 0x00, 0x4c, 0xc2, 0x00, 0x20,
|
||||
0x96, 0x6c, 0x86, 0x97, 0xa2, 0x00, 0x20, 0xc2, 0x00, 0xf0, 0x03, 0x20,
|
||||
0x9c, 0x6c, 0x86, 0x98, 0xb1, 0x11, 0x45, 0x98, 0x25, 0x97, 0xf0, 0xf8,
|
||||
0x60, 0x20, 0x49, 0x6f, 0xa5, 0xb0, 0x49, 0xff, 0x85, 0xb0, 0x45, 0xb7,
|
||||
0x85, 0xb8, 0xa5, 0xac, 0x4c, 0x7f, 0x6d, 0x20, 0x98, 0x6e, 0x90, 0x4d,
|
||||
0xa9, 0xac, 0xa0, 0x79, 0x20, 0x49, 0x6f, 0xd0, 0x10, 0xa5, 0xb7, 0x85,
|
||||
0xb0, 0xa2, 0x04, 0xb5, 0xb2, 0x95, 0xab, 0xca, 0xd0, 0xf9, 0x86, 0xb9,
|
||||
0x60, 0xa6, 0xb9, 0x86, 0xa3, 0xa2, 0xb3, 0xa5, 0xb3, 0xa8, 0xf0, 0xc4,
|
||||
0x38, 0xe5, 0xac, 0xf0, 0x24, 0x90, 0x12, 0x84, 0xac, 0xa4, 0xb7, 0x84,
|
||||
0xb0, 0x49, 0xff, 0x69, 0x00, 0xa0, 0x00, 0x84, 0xa3, 0xa2, 0xac, 0xd0,
|
||||
0x04, 0xa0, 0x00, 0x84, 0xb9, 0xc9, 0xf9, 0x30, 0xb6, 0xa8, 0xa5, 0xb9,
|
||||
0x56, 0x01, 0x20, 0xaf, 0x6e, 0x24, 0xb8, 0x10, 0x4c, 0xa0, 0xac, 0xe0,
|
||||
0xb3, 0xf0, 0x02, 0xa0, 0xb3, 0x38, 0x49, 0xff, 0x65, 0xa3, 0x85, 0xb9,
|
||||
0xb9, 0x03, 0x00, 0xf5, 0x03, 0x85, 0xaf, 0xb9, 0x02, 0x00, 0xf5, 0x02,
|
||||
0x85, 0xae, 0xb9, 0x01, 0x00, 0xf5, 0x01, 0x85, 0xad, 0xb0, 0x03, 0x20,
|
||||
0x54, 0x6e, 0xa0, 0x00, 0x98, 0x18, 0xa6, 0xad, 0xd0, 0x3e, 0xa6, 0xae,
|
||||
0x86, 0xad, 0xa6, 0xaf, 0x86, 0xae, 0xa6, 0xb9, 0x86, 0xaf, 0x84, 0xb9,
|
||||
0x69, 0x08, 0xc9, 0x18, 0xd0, 0xe8, 0xa9, 0x00, 0x85, 0xac, 0x85, 0xb0,
|
||||
0x60, 0x65, 0xa3, 0x85, 0xb9, 0xa5, 0xaf, 0x65, 0xb6, 0x85, 0xaf, 0xa5,
|
||||
0xae, 0x65, 0xb5, 0x85, 0xae, 0xa5, 0xad, 0x65, 0xb4, 0x85, 0xad, 0xb0,
|
||||
0x1a, 0x60, 0x69, 0x01, 0x06, 0xb9, 0x26, 0xaf, 0x26, 0xae, 0x26, 0xad,
|
||||
0x10, 0xf4, 0x38, 0xe5, 0xac, 0xb0, 0xcf, 0x49, 0xff, 0x69, 0x01, 0x85,
|
||||
0xac, 0x90, 0x0c, 0xe6, 0xac, 0xf0, 0x36, 0x66, 0xad, 0x66, 0xae, 0x66,
|
||||
0xaf, 0x66, 0xb9, 0x60, 0xa5, 0xb0, 0x49, 0xff, 0x85, 0xb0, 0xa5, 0xad,
|
||||
0x49, 0xff, 0x85, 0xad, 0xa5, 0xae, 0x49, 0xff, 0x85, 0xae, 0xa5, 0xaf,
|
||||
0x49, 0xff, 0x85, 0xaf, 0xa5, 0xb9, 0x49, 0xff, 0x85, 0xb9, 0xe6, 0xb9,
|
||||
0xd0, 0x0a, 0xe6, 0xaf, 0xd0, 0x06, 0xe6, 0xae, 0xd0, 0x02, 0xe6, 0xad,
|
||||
0x60, 0xa2, 0x0a, 0x4c, 0x3b, 0x59, 0xa2, 0x74, 0xb4, 0x03, 0x84, 0xb9,
|
||||
0xb4, 0x02, 0x94, 0x03, 0xb4, 0x01, 0x94, 0x02, 0xa4, 0xb2, 0x94, 0x01,
|
||||
0x69, 0x08, 0x30, 0xec, 0xf0, 0xea, 0xe9, 0x08, 0xa8, 0xa5, 0xb9, 0xb0,
|
||||
0x12, 0x16, 0x01, 0x90, 0x02, 0xf6, 0x01, 0x76, 0x01, 0x76, 0x01, 0x76,
|
||||
0x02, 0x76, 0x03, 0x6a, 0xc8, 0xd0, 0xee, 0x18, 0x60, 0x20, 0xad, 0x70,
|
||||
0xf0, 0x02, 0x10, 0x03, 0x4c, 0xf3, 0x66, 0xa5, 0xac, 0xe9, 0x7f, 0x48,
|
||||
0xa9, 0x80, 0x85, 0xac, 0xa9, 0x2c, 0xa0, 0x79, 0x20, 0x7c, 0x6d, 0xa9,
|
||||
0x30, 0xa0, 0x79, 0x20, 0xbf, 0x6f, 0xa9, 0xa3, 0xa0, 0x79, 0x20, 0x61,
|
||||
0x6d, 0xa9, 0x1f, 0xa0, 0x79, 0x20, 0x11, 0x74, 0xa9, 0x34, 0xa0, 0x79,
|
||||
0x20, 0x7c, 0x6d, 0x68, 0x20, 0x08, 0x72, 0xa9, 0x38, 0xa0, 0x79, 0x20,
|
||||
0x49, 0x6f, 0xf0, 0x4c, 0x20, 0x6f, 0x6f, 0xa9, 0x00, 0x85, 0x75, 0x85,
|
||||
0x76, 0x85, 0x77, 0xa5, 0xb9, 0x20, 0x1e, 0x6f, 0xa5, 0xaf, 0x20, 0x1e,
|
||||
0x6f, 0xa5, 0xae, 0x20, 0x1e, 0x6f, 0xa5, 0xad, 0x20, 0x23, 0x6f, 0x4c,
|
||||
0x2f, 0x70, 0xd0, 0x03, 0x4c, 0x86, 0x6e, 0x4a, 0x09, 0x80, 0xa8, 0x90,
|
||||
0x13, 0x18, 0xa5, 0x77, 0x65, 0xb6, 0x85, 0x77, 0xa5, 0x76, 0x65, 0xb5,
|
||||
0x85, 0x76, 0xa5, 0x75, 0x65, 0xb4, 0x85, 0x75, 0x66, 0x75, 0x66, 0x76,
|
||||
0x66, 0x77, 0x66, 0xb9, 0x98, 0x4a, 0xd0, 0xde, 0x60, 0x85, 0x71, 0x84,
|
||||
0x72, 0xa0, 0x03, 0xb1, 0x71, 0x85, 0xb6, 0x88, 0xb1, 0x71, 0x85, 0xb5,
|
||||
0x88, 0xb1, 0x71, 0x85, 0xb7, 0x45, 0xb0, 0x85, 0xb8, 0xa5, 0xb7, 0x09,
|
||||
0x80, 0x85, 0xb4, 0x88, 0xb1, 0x71, 0x85, 0xb3, 0xa5, 0xac, 0x60, 0xa5,
|
||||
0xb3, 0xf0, 0x1d, 0x18, 0x65, 0xac, 0x90, 0x04, 0x30, 0x31, 0x18, 0x2c,
|
||||
0x10, 0x12, 0x69, 0x80, 0x85, 0xac, 0xd0, 0x03, 0x4c, 0x12, 0x6e, 0xa5,
|
||||
0xb8, 0x85, 0xb0, 0x60, 0xa5, 0xb0, 0x10, 0x1b, 0x68, 0x68, 0x4c, 0x0e,
|
||||
0x6e, 0x20, 0x8e, 0x70, 0xaa, 0xf0, 0xf0, 0x18, 0x69, 0x02, 0xb0, 0x0b,
|
||||
0xa2, 0x00, 0x86, 0xb8, 0x20, 0x99, 0x6d, 0xe6, 0xac, 0xd0, 0xe0, 0x4c,
|
||||
0x81, 0x6e, 0x20, 0x8e, 0x70, 0xa9, 0xb4, 0xa0, 0x79, 0xa2, 0x00, 0x86,
|
||||
0xb8, 0x20, 0x3e, 0x70, 0x4c, 0xc2, 0x6f, 0x20, 0x49, 0x6f, 0xf0, 0x66,
|
||||
0x20, 0x9d, 0x70, 0xa9, 0x00, 0x38, 0xe5, 0xac, 0x85, 0xac, 0x20, 0x6f,
|
||||
0x6f, 0xe6, 0xac, 0xf0, 0xd6, 0xa2, 0xfd, 0xa9, 0x01, 0xa4, 0xb4, 0xc4,
|
||||
0xad, 0xd0, 0x0a, 0xa4, 0xb5, 0xc4, 0xae, 0xd0, 0x04, 0xa4, 0xb6, 0xc4,
|
||||
0xaf, 0x08, 0x2a, 0x90, 0x0a, 0xe8, 0xf0, 0x2a, 0x10, 0x2c, 0xa0, 0x01,
|
||||
0x95, 0x77, 0x98, 0x28, 0x90, 0x14, 0xa8, 0xa5, 0xb6, 0xe5, 0xaf, 0x85,
|
||||
0xb6, 0xa5, 0xb5, 0xe5, 0xae, 0x85, 0xb5, 0xa5, 0xb4, 0xe5, 0xad, 0x85,
|
||||
0xb4, 0x98, 0x06, 0xb6, 0x26, 0xb5, 0x26, 0xb4, 0xb0, 0xd3, 0x30, 0xc1,
|
||||
0x10, 0xcf, 0xa0, 0x40, 0xd0, 0xd6, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
|
||||
0x85, 0xb9, 0x28, 0x4c, 0x2f, 0x70, 0xa2, 0x14, 0x4c, 0x3b, 0x59, 0xa5,
|
||||
0x75, 0x85, 0xad, 0xa5, 0x76, 0x85, 0xae, 0xa5, 0x77, 0x85, 0xaf, 0x4c,
|
||||
0xf2, 0x6d, 0x85, 0x71, 0x84, 0x72, 0xa0, 0x03, 0xb1, 0x71, 0x85, 0xaf,
|
||||
0x88, 0xb1, 0x71, 0x85, 0xae, 0x88, 0xb1, 0x71, 0x85, 0xb0, 0x09, 0x80,
|
||||
0x85, 0xad, 0x88, 0xb1, 0x71, 0x85, 0xac, 0x84, 0xb9, 0x60, 0xa2, 0xa8,
|
||||
0x2c, 0xa2, 0xa4, 0xa0, 0x00, 0xf0, 0x04, 0xa6, 0x97, 0xa4, 0x98, 0x20,
|
||||
0x9d, 0x70, 0x86, 0x71, 0x84, 0x72, 0xa0, 0x03, 0xa5, 0xaf, 0x91, 0x71,
|
||||
0x88, 0xa5, 0xae, 0x91, 0x71, 0x88, 0xa5, 0xb0, 0x09, 0x7f, 0x25, 0xad,
|
||||
0x91, 0x71, 0x88, 0xa5, 0xac, 0x91, 0x71, 0x84, 0xb9, 0x60, 0x20, 0x9d,
|
||||
0x70, 0xa2, 0x05, 0xb5, 0xab, 0x95, 0xb2, 0xca, 0xd0, 0xf9, 0x86, 0xb9,
|
||||
0x60, 0xa5, 0xac, 0xf0, 0xfb, 0x06, 0xb9, 0x90, 0xf7, 0x20, 0x76, 0x6e,
|
||||
0xd0, 0xf2, 0x4c, 0x47, 0x6e, 0xa5, 0xac, 0xf0, 0x09, 0xa5, 0xb0, 0x2a,
|
||||
0xa9, 0xff, 0xb0, 0x02, 0xa9, 0x01, 0x60, 0x20, 0xad, 0x70, 0x85, 0xad,
|
||||
0xa9, 0x00, 0x85, 0xae, 0xa2, 0x88, 0xa5, 0xad, 0x49, 0xff, 0x2a, 0xa9,
|
||||
0x00, 0x85, 0xaf, 0x86, 0xac, 0x85, 0xb9, 0x85, 0xb0, 0x4c, 0xed, 0x6d,
|
||||
0x46, 0xb0, 0x60, 0x85, 0x73, 0x84, 0x74, 0xa0, 0x00, 0xb1, 0x73, 0xc8,
|
||||
0xaa, 0xf0, 0xc6, 0xb1, 0x73, 0x45, 0xb0, 0x30, 0xc4, 0xe4, 0xac, 0xd0,
|
||||
0x1a, 0xb1, 0x73, 0x09, 0x80, 0xc5, 0xad, 0xd0, 0x12, 0xc8, 0xb1, 0x73,
|
||||
0xc5, 0xae, 0xd0, 0x0b, 0xc8, 0xa9, 0x7f, 0xc5, 0xb9, 0xb1, 0x73, 0xe5,
|
||||
0xaf, 0xf0, 0x28, 0xa5, 0xb0, 0x90, 0x02, 0x49, 0xff, 0x4c, 0xb3, 0x70,
|
||||
0xa5, 0xac, 0xf0, 0x4a, 0x38, 0xe9, 0x98, 0x24, 0xb0, 0x10, 0x09, 0xaa,
|
||||
0xa9, 0xff, 0x85, 0xb2, 0x20, 0x5a, 0x6e, 0x8a, 0xa2, 0xac, 0xc9, 0xf9,
|
||||
0x10, 0x06, 0x20, 0x98, 0x6e, 0x84, 0xb2, 0x60, 0xa8, 0xa5, 0xb0, 0x29,
|
||||
0x80, 0x46, 0xad, 0x05, 0xad, 0x85, 0xad, 0x20, 0xaf, 0x6e, 0x84, 0xb2,
|
||||
0x60, 0xa5, 0xac, 0xc9, 0x98, 0xb0, 0x1e, 0x20, 0x14, 0x71, 0x84, 0xb9,
|
||||
0xa5, 0xb0, 0x84, 0xb0, 0x49, 0x80, 0x2a, 0xa9, 0x98, 0x85, 0xac, 0xa5,
|
||||
0xaf, 0x85, 0x5b, 0x4c, 0xed, 0x6d, 0x85, 0xad, 0x85, 0xae, 0x85, 0xaf,
|
||||
0xa8, 0x60, 0xa0, 0x00, 0xa2, 0x09, 0x94, 0xa8, 0xca, 0x10, 0xfb, 0x90,
|
||||
0x7f, 0xc9, 0x2d, 0xd0, 0x04, 0x86, 0xb1, 0xf0, 0x04, 0xc9, 0x2b, 0xd0,
|
||||
0x05, 0x20, 0xbc, 0x00, 0x90, 0x6e, 0xc9, 0x24, 0xd0, 0x03, 0x4c, 0x2a,
|
||||
0x76, 0xc9, 0x25, 0xd0, 0x08, 0x4c, 0x58, 0x76, 0x20, 0xbc, 0x00, 0x90,
|
||||
0x5b, 0xc9, 0x2e, 0xf0, 0x2e, 0xc9, 0x45, 0xd0, 0x30, 0x20, 0xbc, 0x00,
|
||||
0x90, 0x17, 0xc9, 0xb6, 0xf0, 0x0e, 0xc9, 0x2d, 0xf0, 0x0a, 0xc9, 0xb5,
|
||||
0xf0, 0x08, 0xc9, 0x2b, 0xf0, 0x04, 0xd0, 0x07, 0x66, 0xab, 0x20, 0xbc,
|
||||
0x00, 0x90, 0x5c, 0x24, 0xab, 0x10, 0x0e, 0xa9, 0x00, 0x38, 0xe5, 0xa9,
|
||||
0x4c, 0xd3, 0x71, 0x66, 0xaa, 0x24, 0xaa, 0x50, 0xc3, 0xa5, 0xa9, 0x38,
|
||||
0xe5, 0xa8, 0x85, 0xa9, 0xf0, 0x12, 0x10, 0x09, 0x20, 0xae, 0x6f, 0xe6,
|
||||
0xa9, 0xd0, 0xf9, 0xf0, 0x07, 0x20, 0x95, 0x6f, 0xc6, 0xa9, 0xd0, 0xf9,
|
||||
0xa5, 0xb1, 0x30, 0x01, 0x60, 0x4c, 0xb4, 0x73, 0x48, 0x24, 0xaa, 0x10,
|
||||
0x02, 0xe6, 0xa8, 0x20, 0x95, 0x6f, 0x68, 0x38, 0xe9, 0x30, 0x20, 0x08,
|
||||
0x72, 0x4c, 0x94, 0x71, 0x48, 0x20, 0x8e, 0x70, 0x68, 0x20, 0xbe, 0x70,
|
||||
0xa5, 0xb7, 0x45, 0xb0, 0x85, 0xb8, 0xa6, 0xac, 0x4c, 0x7f, 0x6d, 0xa5,
|
||||
0xa9, 0xc9, 0x0a, 0x90, 0x09, 0xa9, 0x64, 0x24, 0xab, 0x30, 0x0e, 0x4c,
|
||||
0x81, 0x6e, 0x0a, 0x0a, 0x65, 0xa9, 0x0a, 0xa0, 0x00, 0x71, 0xc3, 0xe9,
|
||||
0x2f, 0x85, 0xa9, 0x4c, 0xba, 0x71, 0xa9, 0x3f, 0xa0, 0x7f, 0x20, 0x52,
|
||||
0x72, 0xa5, 0x88, 0xa6, 0x87, 0x85, 0xad, 0x86, 0xae, 0xa2, 0x90, 0x38,
|
||||
0x20, 0xcb, 0x70, 0x20, 0x55, 0x72, 0x4c, 0x9c, 0x60, 0xa0, 0x01, 0xa9,
|
||||
0x20, 0x24, 0xb0, 0x10, 0x02, 0xa9, 0x2d, 0x99, 0xef, 0x00, 0x85, 0xb0,
|
||||
0x84, 0xba, 0xc8, 0xa6, 0xac, 0xd0, 0x05, 0xa9, 0x30, 0x4c, 0x6e, 0x73,
|
||||
0xa9, 0x00, 0xe0, 0x81, 0xb0, 0x09, 0xa9, 0x44, 0xa0, 0x79, 0x20, 0xf7,
|
||||
0x6e, 0xa9, 0xfa, 0x85, 0xa8, 0xa9, 0x40, 0xa0, 0x79, 0x20, 0xdb, 0x70,
|
||||
0xf0, 0x1e, 0x10, 0x12, 0xa9, 0x3c, 0xa0, 0x79, 0x20, 0xdb, 0x70, 0xf0,
|
||||
0x02, 0x10, 0x0e, 0x20, 0x95, 0x6f, 0xc6, 0xa8, 0xd0, 0xee, 0x20, 0xae,
|
||||
0x6f, 0xe6, 0xa8, 0xd0, 0xdc, 0x20, 0x78, 0x6d, 0x20, 0x14, 0x71, 0xa2,
|
||||
0x01, 0xa5, 0xa8, 0x18, 0x69, 0x07, 0x30, 0x09, 0xc9, 0x08, 0xb0, 0x06,
|
||||
0x69, 0xff, 0xaa, 0xa9, 0x02, 0x38, 0xe9, 0x02, 0x85, 0xa9, 0x86, 0xa8,
|
||||
0x8a, 0xf0, 0x02, 0x10, 0x13, 0xa4, 0xba, 0xa9, 0x2e, 0xc8, 0x99, 0xef,
|
||||
0x00, 0x8a, 0xf0, 0x06, 0xa9, 0x30, 0xc8, 0x99, 0xef, 0x00, 0x84, 0xba,
|
||||
0xa0, 0x00, 0xa2, 0x80, 0xa5, 0xaf, 0x18, 0x79, 0xba, 0x79, 0x85, 0xaf,
|
||||
0xa5, 0xae, 0x79, 0xb9, 0x79, 0x85, 0xae, 0xa5, 0xad, 0x79, 0xb8, 0x79,
|
||||
0x85, 0xad, 0xe8, 0xb0, 0x04, 0x10, 0xe5, 0x30, 0x02, 0x30, 0xe1, 0x8a,
|
||||
0x90, 0x04, 0x49, 0xff, 0x69, 0x0a, 0x69, 0x2f, 0xc8, 0xc8, 0xc8, 0x84,
|
||||
0x95, 0xa4, 0xba, 0xc8, 0xaa, 0x29, 0x7f, 0x99, 0xef, 0x00, 0xc6, 0xa8,
|
||||
0xd0, 0x06, 0xa9, 0x2e, 0xc8, 0x99, 0xef, 0x00, 0x84, 0xba, 0xa4, 0x95,
|
||||
0x8a, 0x49, 0xff, 0x29, 0x80, 0xaa, 0xc0, 0x12, 0xd0, 0xb2, 0xa4, 0xba,
|
||||
0xb9, 0xef, 0x00, 0x88, 0xc9, 0x30, 0xf0, 0xf8, 0xc9, 0x2e, 0xf0, 0x01,
|
||||
0xc8, 0xa9, 0x2b, 0xa6, 0xa9, 0xf0, 0x2e, 0x10, 0x08, 0xa9, 0x00, 0x38,
|
||||
0xe5, 0xa9, 0xaa, 0xa9, 0x2d, 0x99, 0xf1, 0x00, 0xa9, 0x45, 0x99, 0xf0,
|
||||
0x00, 0x8a, 0xa2, 0x2f, 0x38, 0xe8, 0xe9, 0x0a, 0xb0, 0xfb, 0x69, 0x3a,
|
||||
0x99, 0xf3, 0x00, 0x8a, 0x99, 0xf2, 0x00, 0xa9, 0x00, 0x99, 0xf4, 0x00,
|
||||
0xf0, 0x08, 0x99, 0xef, 0x00, 0xa9, 0x00, 0x99, 0xf0, 0x00, 0xa9, 0xf0,
|
||||
0xa0, 0x00, 0x60, 0xf0, 0x42, 0xa5, 0xb3, 0xd0, 0x03, 0x4c, 0x10, 0x6e,
|
||||
0xa2, 0x9c, 0xa0, 0x00, 0x20, 0x6b, 0x70, 0xa5, 0xb7, 0x10, 0x0f, 0x20,
|
||||
0x45, 0x71, 0xa9, 0x9c, 0xa0, 0x00, 0x20, 0xdb, 0x70, 0xd0, 0x03, 0x98,
|
||||
0xa4, 0x5b, 0x20, 0x83, 0x6d, 0x98, 0x48, 0x20, 0xb9, 0x6e, 0xa9, 0x9c,
|
||||
0xa0, 0x00, 0x20, 0xf7, 0x6e, 0x20, 0xbf, 0x73, 0x68, 0x4a, 0x90, 0x0a,
|
||||
0xa5, 0xac, 0xf0, 0x06, 0xa5, 0xb0, 0x49, 0xff, 0x85, 0xb0, 0x60, 0xa9,
|
||||
0x48, 0xa0, 0x79, 0x20, 0xf7, 0x6e, 0xa5, 0xb9, 0x69, 0x50, 0x90, 0x03,
|
||||
0x20, 0xa5, 0x70, 0x85, 0xa3, 0x20, 0x91, 0x70, 0xa5, 0xac, 0xc9, 0x88,
|
||||
0x90, 0x03, 0x20, 0x8c, 0x6f, 0x20, 0x45, 0x71, 0xa5, 0x5b, 0x18, 0x69,
|
||||
0x81, 0xf0, 0xf3, 0x38, 0xe9, 0x01, 0x48, 0xa2, 0x04, 0xb5, 0xb3, 0xb4,
|
||||
0xac, 0x95, 0xac, 0x94, 0xb3, 0xca, 0x10, 0xf5, 0xa5, 0xa3, 0x85, 0xb9,
|
||||
0x20, 0x64, 0x6d, 0x20, 0xb4, 0x73, 0xa9, 0x4c, 0xa0, 0x79, 0x20, 0x27,
|
||||
0x74, 0xa9, 0x00, 0x85, 0xb8, 0x68, 0x4c, 0x71, 0x6f, 0x85, 0xba, 0x84,
|
||||
0xbb, 0x20, 0x61, 0x70, 0xa9, 0xa4, 0x20, 0xf7, 0x6e, 0x20, 0x2b, 0x74,
|
||||
0xa9, 0xa4, 0xa0, 0x00, 0x4c, 0xf7, 0x6e, 0x85, 0xba, 0x84, 0xbb, 0x20,
|
||||
0x5e, 0x70, 0xb1, 0xba, 0x85, 0xb1, 0xa4, 0xba, 0xc8, 0x98, 0xd0, 0x02,
|
||||
0xe6, 0xbb, 0x85, 0xba, 0xa4, 0xbb, 0x20, 0xf7, 0x6e, 0xa5, 0xba, 0xa4,
|
||||
0xbb, 0x18, 0x69, 0x04, 0x90, 0x01, 0xc8, 0x85, 0xba, 0x84, 0xbb, 0x20,
|
||||
0x7c, 0x6d, 0xa9, 0xa8, 0xa0, 0x00, 0xc6, 0xb1, 0xd0, 0xe4, 0x60, 0xa5,
|
||||
0xac, 0xf0, 0x07, 0xa2, 0xd4, 0xa0, 0x00, 0x20, 0x6b, 0x70, 0xa2, 0x00,
|
||||
0xa5, 0xd4, 0x6a, 0x6a, 0x90, 0x01, 0xe8, 0x29, 0x08, 0xf0, 0x01, 0xe8,
|
||||
0x8a, 0x4a, 0x66, 0xd5, 0x66, 0xd7, 0x66, 0xd6, 0x66, 0xd4, 0xa2, 0x02,
|
||||
0xb5, 0xd5, 0x95, 0xad, 0xca, 0x10, 0xf9, 0xa9, 0x80, 0x85, 0xac, 0x0a,
|
||||
0x85, 0xb0, 0x4c, 0xf2, 0x6d, 0xa9, 0x69, 0xa0, 0x79, 0x20, 0x7c, 0x6d,
|
||||
0x20, 0x8e, 0x70, 0xa9, 0x7e, 0xa0, 0x79, 0xa6, 0xb7, 0x20, 0xb7, 0x6f,
|
||||
0x20, 0x8e, 0x70, 0x20, 0x45, 0x71, 0xa9, 0x00, 0x85, 0xb8, 0x20, 0x64,
|
||||
0x6d, 0xa9, 0xb0, 0xa0, 0x79, 0x20, 0x61, 0x6d, 0xa5, 0xb0, 0x48, 0x10,
|
||||
0x0d, 0x20, 0x78, 0x6d, 0xa5, 0xb0, 0x30, 0x09, 0xa5, 0x63, 0x49, 0xff,
|
||||
0x85, 0x63, 0x20, 0xb4, 0x73, 0xa9, 0xb0, 0xa0, 0x79, 0x20, 0x7c, 0x6d,
|
||||
0x68, 0x10, 0x03, 0x20, 0xb4, 0x73, 0xa9, 0x6d, 0xa0, 0x79, 0x4c, 0x11,
|
||||
0x74, 0x20, 0x61, 0x70, 0xa9, 0x00, 0x85, 0x63, 0x20, 0x98, 0x74, 0xa2,
|
||||
0x9c, 0xa0, 0x00, 0x20, 0x6b, 0x70, 0xa9, 0xa4, 0xa0, 0x00, 0x20, 0x3e,
|
||||
0x70, 0xa9, 0x00, 0x85, 0xb0, 0xa5, 0x63, 0x20, 0x09, 0x75, 0xa9, 0x9c,
|
||||
0xa0, 0x00, 0x4c, 0xbf, 0x6f, 0x48, 0x4c, 0xca, 0x74, 0xa5, 0xb0, 0x48,
|
||||
0x10, 0x03, 0x20, 0xb4, 0x73, 0xa5, 0xac, 0x48, 0xc9, 0x81, 0x90, 0x07,
|
||||
0xa9, 0xa3, 0xa0, 0x79, 0x20, 0xbf, 0x6f, 0xa9, 0x82, 0xa0, 0x79, 0x20,
|
||||
0x11, 0x74, 0x68, 0xc9, 0x81, 0x90, 0x07, 0xa9, 0x69, 0xa0, 0x79, 0x20,
|
||||
0x61, 0x6d, 0x68, 0x10, 0x16, 0x4c, 0xb4, 0x73, 0x20, 0x96, 0x6c, 0xe0,
|
||||
0x08, 0xb0, 0x20, 0xa9, 0x00, 0x38, 0x2a, 0xca, 0x10, 0xfc, 0xe8, 0x01,
|
||||
0x11, 0x81, 0x11, 0x60, 0x20, 0x96, 0x6c, 0xe0, 0x08, 0xb0, 0x0c, 0xa9,
|
||||
0xff, 0x2a, 0xca, 0x10, 0xfc, 0xe8, 0x21, 0x11, 0x81, 0x11, 0x60, 0x4c,
|
||||
0xf3, 0x66, 0x20, 0xe5, 0x63, 0x20, 0x96, 0x6c, 0xe0, 0x08, 0xb0, 0xf3,
|
||||
0x20, 0xc2, 0x00, 0xc9, 0x29, 0xf0, 0x03, 0x4c, 0xf3, 0x63, 0x20, 0xbc,
|
||||
0x00, 0xa9, 0x00, 0x38, 0x2a, 0xca, 0x10, 0xfc, 0xe8, 0x21, 0x11, 0xf0,
|
||||
0x02, 0xa9, 0xff, 0x4c, 0xbe, 0x70, 0xe0, 0x19, 0xb0, 0x4a, 0x86, 0x78,
|
||||
0xa9, 0x18, 0x20, 0x09, 0x69, 0xa0, 0x17, 0xa2, 0x18, 0x46, 0x11, 0x66,
|
||||
0x12, 0x66, 0x13, 0x8a, 0x2a, 0x91, 0xad, 0x88, 0x10, 0xf3, 0xa5, 0x78,
|
||||
0xf0, 0x0a, 0xaa, 0x38, 0x49, 0xff, 0x69, 0x18, 0xf0, 0x1c, 0xd0, 0x0f,
|
||||
0xa8, 0xb1, 0xad, 0xc9, 0x30, 0xd0, 0x07, 0xca, 0xf0, 0x03, 0xc8, 0x10,
|
||||
0xf4, 0xe8, 0x98, 0x18, 0x65, 0xad, 0x85, 0xad, 0xa9, 0x00, 0x65, 0xae,
|
||||
0x85, 0xae, 0x68, 0x68, 0x86, 0xac, 0x20, 0xbc, 0x00, 0x4c, 0x54, 0x69,
|
||||
0x4c, 0xf3, 0x66, 0xe0, 0x07, 0xb0, 0xf9, 0x86, 0x78, 0xa9, 0x06, 0x20,
|
||||
0x09, 0x69, 0xa0, 0x05, 0xf8, 0xa5, 0x13, 0x20, 0x0d, 0x76, 0xa5, 0x12,
|
||||
0x20, 0x0d, 0x76, 0xa5, 0x11, 0x20, 0x0d, 0x76, 0xd8, 0xa2, 0x06, 0xa5,
|
||||
0x78, 0xf0, 0xb5, 0xaa, 0x38, 0x49, 0xff, 0x69, 0x06, 0xf0, 0xc7, 0xd0,
|
||||
0xba, 0xaa, 0x29, 0x0f, 0x20, 0x18, 0x76, 0x8a, 0x4a, 0x4a, 0x4a, 0x4a,
|
||||
0xc9, 0x0a, 0x69, 0x30, 0x91, 0xad, 0x88, 0x60, 0x85, 0xac, 0xa9, 0x00,
|
||||
0x85, 0xb8, 0x8a, 0x20, 0x08, 0x72, 0x20, 0xbc, 0x00, 0x90, 0x0a, 0x09,
|
||||
0x20, 0xe9, 0x61, 0xc9, 0x06, 0xb0, 0x2a, 0x69, 0x0a, 0x29, 0x0f, 0xaa,
|
||||
0xa5, 0xac, 0xf0, 0xe4, 0x69, 0x04, 0x90, 0xdc, 0x4c, 0x81, 0x6e, 0xaa,
|
||||
0xa5, 0xac, 0xf0, 0x06, 0xe6, 0xac, 0xf0, 0xf4, 0xa9, 0x00, 0x85, 0xb8,
|
||||
0x8a, 0x20, 0x08, 0x72, 0x20, 0xbc, 0x00, 0x49, 0x30, 0xc9, 0x02, 0x90,
|
||||
0xe6, 0x4c, 0xec, 0x71, 0xad, 0xc8, 0x02, 0xd0, 0x18, 0x20, 0xb1, 0x78,
|
||||
0x90, 0x0b, 0x8d, 0xc9, 0x02, 0xa2, 0x20, 0x8e, 0xca, 0x02, 0x4c, 0x20,
|
||||
0x5d, 0xae, 0xca, 0x02, 0xf0, 0x03, 0xce, 0xca, 0x02, 0xa2, 0xd8, 0x20,
|
||||
0x8c, 0x76, 0xa2, 0xdb, 0x20, 0x8c, 0x76, 0x60, 0xb5, 0x00, 0x10, 0xfb,
|
||||
0x0a, 0x29, 0x40, 0xf0, 0xf6, 0x95, 0x00, 0x8a, 0xa8, 0x68, 0x68, 0xa9,
|
||||
0x05, 0x20, 0x04, 0x59, 0xa5, 0xc4, 0x48, 0xa5, 0xc3, 0x48, 0xa5, 0x88,
|
||||
0x48, 0xa5, 0x87, 0x48, 0xa9, 0x8d, 0x48, 0xb9, 0x01, 0x00, 0x85, 0xc3,
|
||||
0xb9, 0x02, 0x00, 0x85, 0xc4, 0x4c, 0xc3, 0x5c, 0x20, 0xb1, 0x78, 0xb0,
|
||||
0x09, 0xad, 0xca, 0x02, 0xf0, 0x09, 0xad, 0xc9, 0x02, 0x38, 0xa2, 0x00,
|
||||
0x8e, 0xca, 0x02, 0x60, 0xa2, 0xdb, 0x2c, 0xa2, 0xd8, 0xc9, 0x93, 0xf0,
|
||||
0x12, 0xc9, 0xb4, 0xf0, 0x08, 0x38, 0xe9, 0xa2, 0xf0, 0x0e, 0x4c, 0xf3,
|
||||
0x63, 0xa9, 0x7f, 0x35, 0x00, 0x10, 0x05, 0xb5, 0x00, 0x0a, 0x15, 0x00,
|
||||
0x95, 0x00, 0x4c, 0xbc, 0x00, 0x58, 0xa2, 0xdb, 0x2c, 0xa2, 0xd8, 0x86,
|
||||
0x78, 0x20, 0xbc, 0x00, 0x20, 0x19, 0x5f, 0xa5, 0x79, 0xa6, 0x7a, 0x20,
|
||||
0x2d, 0x5b, 0xb0, 0x03, 0x4c, 0x7b, 0x5e, 0xa6, 0x78, 0xa5, 0xaa, 0xe9,
|
||||
0x01, 0x95, 0x01, 0xa5, 0xab, 0xe9, 0x00, 0x95, 0x02, 0xa9, 0xc0, 0x95,
|
||||
0x00, 0x60, 0xd0, 0xfd, 0xa5, 0xdb, 0x0a, 0x05, 0xdb, 0x85, 0xdb, 0x4c,
|
||||
0x82, 0x5e, 0xd0, 0xf1, 0xa5, 0xd8, 0x0a, 0x05, 0xd8, 0x85, 0xd8, 0x4c,
|
||||
0x82, 0x5e, 0x20, 0xe5, 0x63, 0x20, 0x91, 0x62, 0x20, 0x74, 0x77, 0x10,
|
||||
0xfb, 0xa5, 0xb4, 0x09, 0x80, 0x85, 0xb4, 0x20, 0x81, 0x6d, 0xf0, 0xf0,
|
||||
0x20, 0xe5, 0x63, 0x20, 0x91, 0x62, 0x20, 0x74, 0x77, 0x30, 0xfb, 0xf0,
|
||||
0xf9, 0xa5, 0xb4, 0x09, 0x80, 0x85, 0xb4, 0x20, 0x81, 0x6d, 0xf0, 0xee,
|
||||
0xc9, 0x29, 0xd0, 0x05, 0x68, 0x68, 0x4c, 0xbc, 0x00, 0x4c, 0xf3, 0x63,
|
||||
0x20, 0xc2, 0x00, 0xc9, 0x2c, 0xd0, 0xed, 0x20, 0x9d, 0x70, 0xa5, 0xb0,
|
||||
0x09, 0x7f, 0x25, 0xad, 0x48, 0xa5, 0xae, 0x48, 0xa5, 0xaf, 0x48, 0xa5,
|
||||
0xac, 0x48, 0x20, 0xbc, 0x00, 0x20, 0x91, 0x62, 0x68, 0x85, 0xb3, 0x68,
|
||||
0x85, 0xb6, 0x68, 0x85, 0xb5, 0x68, 0x85, 0xb4, 0x85, 0xb7, 0xa9, 0xb3,
|
||||
0xa0, 0x00, 0x4c, 0xdb, 0x70, 0xc9, 0x2c, 0xf0, 0x1b, 0x20, 0x4a, 0x6c,
|
||||
0x8a, 0xf0, 0x0a, 0xe0, 0x10, 0x90, 0x45, 0xe4, 0x64, 0xb0, 0x02, 0x86,
|
||||
0x64, 0x86, 0x0f, 0x20, 0xc2, 0x00, 0xf0, 0x1a, 0xc9, 0x2c, 0xd0, 0xa9,
|
||||
0x20, 0x47, 0x6c, 0x8a, 0x30, 0x2e, 0xe0, 0x01, 0x90, 0x2a, 0xa5, 0x0f,
|
||||
0xf0, 0x06, 0xe4, 0x0f, 0xf0, 0x02, 0xb0, 0x20, 0x86, 0x64, 0xa5, 0x0f,
|
||||
0xf0, 0x06, 0xc5, 0x64, 0xb0, 0x03, 0x85, 0x64, 0x38, 0xe5, 0x64, 0xb0,
|
||||
0xfc, 0x65, 0x64, 0x18, 0x65, 0x64, 0x85, 0x10, 0xa5, 0x0f, 0x38, 0xe5,
|
||||
0x10, 0x85, 0x10, 0x60, 0x4c, 0xf3, 0x66, 0xa5, 0xb0, 0x30, 0xf9, 0xa5,
|
||||
0xac, 0xf0, 0xf4, 0x20, 0x8e, 0x70, 0xa9, 0x00, 0x85, 0x77, 0x85, 0x76,
|
||||
0x85, 0x75, 0x85, 0x78, 0x85, 0xaf, 0x85, 0xae, 0x85, 0xad, 0xa2, 0x18,
|
||||
0xa5, 0xb3, 0x4a, 0xb0, 0x0e, 0x06, 0xb6, 0x26, 0xb5, 0x26, 0xb4, 0x26,
|
||||
0x77, 0x26, 0x76, 0x26, 0x75, 0x26, 0x78, 0x06, 0xb6, 0x26, 0xb5, 0x26,
|
||||
0xb4, 0x26, 0x77, 0x26, 0x76, 0x26, 0x75, 0x26, 0x78, 0x06, 0xaf, 0x26,
|
||||
0xae, 0x26, 0xad, 0xa5, 0xaf, 0x2a, 0x85, 0x5b, 0xa5, 0xae, 0x2a, 0x85,
|
||||
0x5c, 0xa5, 0xad, 0x2a, 0x85, 0x5d, 0xa9, 0x00, 0x2a, 0x85, 0x5e, 0xa5,
|
||||
0x77, 0xe5, 0x5b, 0x85, 0x5b, 0xa5, 0x76, 0xe5, 0x5c, 0x85, 0x5c, 0xa5,
|
||||
0x75, 0xe5, 0x5d, 0xa8, 0xa5, 0x78, 0xe5, 0x5e, 0x90, 0x0e, 0x85, 0x78,
|
||||
0x84, 0x75, 0xa5, 0x5c, 0x85, 0x76, 0xa5, 0x5b, 0x85, 0x77, 0xe6, 0xaf,
|
||||
0xca, 0xd0, 0xa2, 0x38, 0xa5, 0xb3, 0xe9, 0x80, 0x6a, 0x69, 0x00, 0x85,
|
||||
0xac, 0x4c, 0xf2, 0x6d, 0x20, 0xe5, 0x63, 0x20, 0x76, 0x65, 0x20, 0xe2,
|
||||
0x63, 0xa4, 0x95, 0xa5, 0x96, 0x4c, 0x23, 0x68, 0x46, 0x5f, 0xa9, 0x7e,
|
||||
0xa0, 0x79, 0x20, 0x3e, 0x70, 0xc6, 0xac, 0x60, 0x46, 0x5f, 0xa9, 0x7e,
|
||||
0xa0, 0x79, 0x4c, 0x3e, 0x70, 0x6c, 0xcd, 0x02, 0x6c, 0xcf, 0x02, 0x6c,
|
||||
0xd1, 0x02, 0x6c, 0xd3, 0x02, 0x00, 0x00, 0x00, 0x64, 0x76, 0x72, 0x7f,
|
||||
0xef, 0xff, 0xe6, 0xc3, 0xd0, 0x02, 0xe6, 0xc4, 0xad, 0xff, 0xff, 0xc9,
|
||||
0x3a, 0xb0, 0x0a, 0xc9, 0x20, 0xf0, 0xef, 0x38, 0xe9, 0x30, 0x38, 0xe9,
|
||||
0xd0, 0x60, 0x4c, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x4c, 0xf3, 0x66, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x03, 0x0d, 0x4d, 0x65,
|
||||
0x6d, 0x6f, 0x72, 0x79, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x00, 0x20,
|
||||
0x42, 0x79, 0x74, 0x65, 0x73, 0x20, 0x66, 0x72, 0x65, 0x65, 0x0d, 0x45,
|
||||
0x6e, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x20, 0x42, 0x41, 0x53, 0x49,
|
||||
0x43, 0x20, 0x31, 0x2e, 0x31, 0x30, 0x00, 0x02, 0x80, 0x19, 0x56, 0x62,
|
||||
0x80, 0x76, 0x22, 0xf3, 0x82, 0x38, 0xaa, 0x40, 0x80, 0x35, 0x04, 0xf3,
|
||||
0x81, 0x35, 0x04, 0xf3, 0x80, 0x80, 0x00, 0x00, 0x80, 0x31, 0x72, 0x18,
|
||||
0x91, 0x43, 0x4f, 0xf8, 0x94, 0x74, 0x23, 0xf7, 0x94, 0x74, 0x24, 0x00,
|
||||
0x81, 0x38, 0xaa, 0x3b, 0x06, 0x74, 0x63, 0x90, 0x8c, 0x77, 0x23, 0x0c,
|
||||
0xab, 0x7a, 0x1e, 0x94, 0x00, 0x7c, 0x63, 0x42, 0x80, 0x7e, 0x75, 0xfe,
|
||||
0xd0, 0x80, 0x31, 0x72, 0x15, 0x81, 0x00, 0x00, 0x00, 0x81, 0x49, 0x0f,
|
||||
0xdb, 0x04, 0x86, 0x1e, 0xd7, 0xfb, 0x87, 0x99, 0x26, 0x65, 0x87, 0x23,
|
||||
0x34, 0x58, 0x86, 0xa5, 0x5d, 0xe1, 0x83, 0x49, 0x0f, 0xdb, 0x08, 0x78,
|
||||
0x3a, 0xc5, 0x37, 0x7b, 0x83, 0xa2, 0x5c, 0x7c, 0x2e, 0xdd, 0x4d, 0x7d,
|
||||
0x99, 0xb0, 0x1e, 0x7d, 0x59, 0xed, 0x24, 0x7e, 0x91, 0x72, 0x00, 0x7e,
|
||||
0x4c, 0xb9, 0x73, 0x7f, 0xaa, 0xaa, 0x53, 0x81, 0x00, 0x00, 0x00, 0x81,
|
||||
0x80, 0x00, 0x00, 0x90, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
|
||||
0x84, 0x20, 0x00, 0x00, 0xfe, 0x79, 0x60, 0x00, 0x27, 0x10, 0xff, 0xfc,
|
||||
0x18, 0x00, 0x00, 0x64, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x01, 0x23, 0x5d,
|
||||
0x5e, 0x5c, 0x28, 0x62, 0x94, 0x5e, 0x10, 0x61, 0x28, 0x65, 0x2e, 0x61,
|
||||
0x80, 0x5f, 0x52, 0x5f, 0xf3, 0x5d, 0xb2, 0x5d, 0xc7, 0x5e, 0x4a, 0x5d,
|
||||
0xd6, 0x5d, 0x21, 0x77, 0x2d, 0x77, 0x7f, 0x5e, 0xda, 0x5e, 0x21, 0x5d,
|
||||
0xea, 0x5e, 0x88, 0x5d, 0x55, 0x5f, 0x46, 0x6d, 0xb6, 0x78, 0xb9, 0x78,
|
||||
0x3f, 0x68, 0xcb, 0x6c, 0xe7, 0x6c, 0x34, 0x6d, 0xbc, 0x5d, 0x25, 0x5e,
|
||||
0x21, 0x60, 0x8e, 0x5d, 0xa9, 0x5b, 0xa6, 0x5b, 0x54, 0x5b, 0xa8, 0x77,
|
||||
0xf0, 0x5f, 0x0c, 0x6d, 0x3b, 0x75, 0x4f, 0x75, 0xcf, 0x76, 0xd2, 0x76,
|
||||
0xbb, 0x70, 0x45, 0x71, 0xd8, 0x70, 0x0a, 0x00, 0x0f, 0x68, 0x30, 0x68,
|
||||
0xff, 0x77, 0x5b, 0x74, 0xb9, 0x6e, 0xbf, 0x73, 0x91, 0x74, 0x98, 0x74,
|
||||
0xe1, 0x74, 0x0d, 0x75, 0xc1, 0x6c, 0xd5, 0x6c, 0x1f, 0x6c, 0x28, 0x6c,
|
||||
0xf1, 0x68, 0x59, 0x6c, 0x37, 0x6c, 0xff, 0x6b, 0xe2, 0x6b, 0x53, 0x6b,
|
||||
0xdf, 0x75, 0x8e, 0x75, 0x66, 0x75, 0x3a, 0x77, 0x50, 0x77, 0x9c, 0x78,
|
||||
0xa8, 0x78, 0x8c, 0x78, 0x67, 0x6b, 0x6f, 0x6b, 0x9d, 0x6b, 0x79, 0x7e,
|
||||
0x6d, 0x79, 0x63, 0x6d, 0x7b, 0xf9, 0x6e, 0x7b, 0xc1, 0x6f, 0x7f, 0x7a,
|
||||
0x73, 0x50, 0x9c, 0x64, 0x46, 0x82, 0x64, 0x46, 0x8f, 0x64, 0x56, 0x4b,
|
||||
0x65, 0x56, 0x32, 0x65, 0x7d, 0xb3, 0x73, 0x5a, 0xbf, 0x63, 0x64, 0xbd,
|
||||
0x64, 0x2a, 0x2b, 0x2d, 0x2f, 0x3c, 0x3d, 0x3e, 0x3f, 0x41, 0x42, 0x43,
|
||||
0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x52,
|
||||
0x53, 0x54, 0x55, 0x56, 0x57, 0x5e, 0x00, 0xe5, 0x7a, 0xe7, 0x7a, 0xe9,
|
||||
0x7a, 0xeb, 0x7a, 0xed, 0x7a, 0xf1, 0x7a, 0xf3, 0x7a, 0xf7, 0x7a, 0xf9,
|
||||
0x7a, 0x06, 0x7b, 0x1d, 0x7b, 0x32, 0x7b, 0x4a, 0x7b, 0x54, 0x7b, 0x5d,
|
||||
0x7b, 0x6a, 0x7b, 0x6f, 0x7b, 0x80, 0x7b, 0xa1, 0x7b, 0xac, 0x7b, 0xbe,
|
||||
0x7b, 0xc6, 0x7b, 0xd9, 0x7b, 0x06, 0x7c, 0x2c, 0x7c, 0x3f, 0x7c, 0x4e,
|
||||
0x7c, 0x58, 0x7c, 0x67, 0x7c, 0xb7, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb8,
|
||||
0x00, 0x3c, 0xbe, 0xc1, 0x00, 0xc0, 0x00, 0x3e, 0xbd, 0xbf, 0x00, 0x9f,
|
||||
0x00, 0x42, 0x53, 0xc4, 0x4e, 0x44, 0xba, 0x53, 0x43, 0xd6, 0x54, 0x4e,
|
||||
0xcf, 0x00, 0x49, 0x4e, 0x24, 0xdb, 0x49, 0x54, 0x43, 0x4c, 0x52, 0xa8,
|
||||
0x49, 0x54, 0x53, 0x45, 0x54, 0xa7, 0x49, 0x54, 0x54, 0x53, 0x54, 0xdc,
|
||||
0x00, 0x41, 0x4c, 0x4c, 0x9c, 0x48, 0x52, 0x24, 0xd9, 0x4c, 0x45, 0x41,
|
||||
0x52, 0xa2, 0x4f, 0x4e, 0x54, 0xa0, 0x4f, 0x53, 0xcc, 0x00, 0x41, 0x54,
|
||||
0x41, 0x83, 0x45, 0x43, 0x88, 0x45, 0x45, 0x4b, 0xd1, 0x45, 0x46, 0x99,
|
||||
0x49, 0x4d, 0x85, 0x4f, 0x4b, 0x45, 0x9b, 0x4f, 0x9d, 0x00, 0x4e, 0x44,
|
||||
0x80, 0x4f, 0x52, 0xbb, 0x58, 0x50, 0xcb, 0x00, 0x4e, 0xad, 0x4f, 0x52,
|
||||
0x81, 0x52, 0x45, 0xc6, 0x00, 0x45, 0x54, 0xa5, 0x4f, 0x53, 0x55, 0x42,
|
||||
0x8d, 0x4f, 0x54, 0x4f, 0x89, 0x00, 0x45, 0x58, 0x24, 0xda, 0x00, 0x46,
|
||||
0x8b, 0x4e, 0x43, 0x95, 0x4e, 0x50, 0x55, 0x54, 0x84, 0x4e, 0x54, 0xc3,
|
||||
0x52, 0x51, 0xa9, 0x00, 0x43, 0x41, 0x53, 0x45, 0x24, 0xd8, 0x45, 0x46,
|
||||
0x54, 0x24, 0xe2, 0x45, 0x4e, 0xd3, 0x45, 0x54, 0x87, 0x49, 0x53, 0x54,
|
||||
0xa1, 0x4f, 0x41, 0x44, 0x97, 0x4f, 0x47, 0xca, 0x4f, 0x4f, 0x50, 0x9e,
|
||||
0x00, 0x41, 0x58, 0xdd, 0x49, 0x44, 0x24, 0xe4, 0x49, 0x4e, 0xde, 0x00,
|
||||
0x45, 0x57, 0xa3, 0x45, 0x58, 0x54, 0x82, 0x4d, 0x49, 0xaa, 0x4f, 0x54,
|
||||
0xb0, 0x55, 0x4c, 0x4c, 0x94, 0x00, 0x46, 0x46, 0xb4, 0x4e, 0x93, 0x52,
|
||||
0xbc, 0x00, 0x45, 0x45, 0x4b, 0xd0, 0x49, 0xdf, 0x4f, 0x4b, 0x45, 0x9a,
|
||||
0x4f, 0x53, 0xc7, 0x52, 0x49, 0x4e, 0x54, 0x9f, 0x00, 0x45, 0x41, 0x44,
|
||||
0x86, 0x45, 0x4d, 0x91, 0x45, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x8c, 0x45,
|
||||
0x54, 0x49, 0x52, 0x51, 0x8e, 0x45, 0x54, 0x4e, 0x4d, 0x49, 0x8f, 0x45,
|
||||
0x54, 0x55, 0x52, 0x4e, 0x90, 0x49, 0x47, 0x48, 0x54, 0x24, 0xe3, 0x4e,
|
||||
0x44, 0xc9, 0x55, 0x4e, 0x8a, 0x00, 0x41, 0x44, 0x44, 0xd2, 0x41, 0x56,
|
||||
0x45, 0x98, 0x47, 0x4e, 0xc2, 0x49, 0x4e, 0xcd, 0x50, 0x43, 0x28, 0xae,
|
||||
0x51, 0x52, 0xc8, 0x54, 0x45, 0x50, 0xb1, 0x54, 0x4f, 0x50, 0x92, 0x54,
|
||||
0x52, 0x24, 0xd4, 0x57, 0x41, 0x50, 0xa6, 0x00, 0x41, 0x42, 0x28, 0xab,
|
||||
0x41, 0x4e, 0xce, 0x48, 0x45, 0x4e, 0xaf, 0x4f, 0xac, 0x57, 0x4f, 0x50,
|
||||
0x49, 0xe0, 0x00, 0x43, 0x41, 0x53, 0x45, 0x24, 0xd7, 0x4e, 0x54, 0x49,
|
||||
0x4c, 0xb2, 0x53, 0x52, 0xc5, 0x00, 0x41, 0x4c, 0xd5, 0x41, 0x52, 0x50,
|
||||
0x54, 0x52, 0xe1, 0x00, 0x41, 0x49, 0x54, 0x96, 0x48, 0x49, 0x4c, 0x45,
|
||||
0xb3, 0x49, 0x44, 0x54, 0x48, 0xa4, 0x00, 0xb9, 0x00, 0x03, 0x45, 0x4a,
|
||||
0x7b, 0x03, 0x46, 0x56, 0x7b, 0x04, 0x4e, 0xaf, 0x7b, 0x04, 0x44, 0x32,
|
||||
0x7b, 0x05, 0x49, 0x74, 0x7b, 0x03, 0x44, 0x40, 0x7b, 0x04, 0x52, 0xd9,
|
||||
0x7b, 0x03, 0x4c, 0x8e, 0x7b, 0x03, 0x44, 0x36, 0x7b, 0x04, 0x47, 0x65,
|
||||
0x7b, 0x03, 0x52, 0x02, 0x7c, 0x02, 0x49, 0x6f, 0x7b, 0x07, 0x52, 0xe0,
|
||||
0x7b, 0x05, 0x47, 0x60, 0x7b, 0x06, 0x52, 0xe7, 0x7b, 0x06, 0x52, 0xed,
|
||||
0x7b, 0x06, 0x52, 0xf3, 0x7b, 0x03, 0x52, 0xdd, 0x7b, 0x04, 0x53, 0x1f,
|
||||
0x7c, 0x02, 0x4f, 0xc1, 0x7b, 0x04, 0x4e, 0xb9, 0x7b, 0x03, 0x49, 0x71,
|
||||
0x7b, 0x04, 0x57, 0x58, 0x7c, 0x04, 0x4c, 0x95, 0x7b, 0x04, 0x53, 0x0a,
|
||||
0x7c, 0x03, 0x44, 0x3d, 0x7b, 0x04, 0x50, 0xcc, 0x7b, 0x04, 0x44, 0x43,
|
||||
0x7b, 0x04, 0x43, 0x1d, 0x7b, 0x02, 0x44, 0x47, 0x7b, 0x04, 0x4c, 0x9c,
|
||||
0x7b, 0x05, 0x50, 0xd3, 0x7b, 0x04, 0x43, 0x2a, 0x7b, 0x04, 0x4c, 0x91,
|
||||
0x7b, 0x05, 0x43, 0x25, 0x7b, 0x03, 0x4e, 0xac, 0x7b, 0x05, 0x57, 0x61,
|
||||
0x7c, 0x03, 0x47, 0x5d, 0x7b, 0x04, 0x53, 0x27, 0x7c, 0x06, 0x42, 0x10,
|
||||
0x7b, 0x06, 0x42, 0x0a, 0x7b, 0x03, 0x49, 0x7c, 0x7b, 0x03, 0x4e, 0xb3,
|
||||
0x7b, 0x04, 0x54, 0x2c, 0x7c, 0x02, 0x54, 0x37, 0x7c, 0x02, 0x46, 0x54,
|
||||
0x7b, 0x04, 0x53, 0x14, 0x7c, 0x04, 0x54, 0x33, 0x7c, 0x03, 0x4e, 0xb6,
|
||||
0x7b, 0x04, 0x53, 0x1b, 0x7c, 0x05, 0x55, 0x45, 0x7c, 0x05, 0x57, 0x5c,
|
||||
0x7c, 0x03, 0x4f, 0xbe, 0x7b, 0x01, 0x2b, 0x00, 0x00, 0x01, 0x2d, 0x00,
|
||||
0x00, 0x01, 0x2a, 0x00, 0x00, 0x01, 0x2f, 0x00, 0x00, 0x01, 0x5e, 0x00,
|
||||
0x00, 0x03, 0x41, 0xfc, 0x7a, 0x03, 0x45, 0x4d, 0x7b, 0x02, 0x4f, 0xc3,
|
||||
0x7b, 0x02, 0x3e, 0xf3, 0x7a, 0x02, 0x3c, 0xed, 0x7a, 0x01, 0x3e, 0x00,
|
||||
0x00, 0x01, 0x3d, 0x00, 0x00, 0x01, 0x3c, 0x00, 0x00, 0x03, 0x53, 0x0e,
|
||||
0x7c, 0x03, 0x49, 0x79, 0x7b, 0x03, 0x41, 0xf9, 0x7a, 0x03, 0x55, 0x4a,
|
||||
0x7c, 0x03, 0x46, 0x59, 0x7b, 0x03, 0x50, 0xd0, 0x7b, 0x03, 0x53, 0x18,
|
||||
0x7c, 0x03, 0x52, 0xff, 0x7b, 0x03, 0x4c, 0x99, 0x7b, 0x03, 0x45, 0x50,
|
||||
0x7b, 0x03, 0x43, 0x2e, 0x7b, 0x03, 0x53, 0x11, 0x7c, 0x03, 0x54, 0x30,
|
||||
0x7c, 0x03, 0x41, 0x02, 0x7b, 0x04, 0x50, 0xc6, 0x7b, 0x04, 0x44, 0x39,
|
||||
0x7b, 0x04, 0x53, 0x06, 0x7c, 0x03, 0x4c, 0x8b, 0x7b, 0x04, 0x53, 0x23,
|
||||
0x7c, 0x03, 0x56, 0x4e, 0x7c, 0x03, 0x41, 0xff, 0x7a, 0x06, 0x55, 0x3f,
|
||||
0x7c, 0x06, 0x4c, 0x80, 0x7b, 0x04, 0x43, 0x21, 0x7b, 0x04, 0x48, 0x6a,
|
||||
0x7b, 0x04, 0x42, 0x06, 0x7b, 0x06, 0x42, 0x16, 0x7b, 0x03, 0x4d, 0xa1,
|
||||
0x7b, 0x03, 0x4d, 0xa8, 0x7b, 0x02, 0x50, 0xca, 0x7b, 0x05, 0x54, 0x39,
|
||||
0x7c, 0x06, 0x56, 0x51, 0x7c, 0x05, 0x4c, 0x86, 0x7b, 0x06, 0x52, 0xf9,
|
||||
0x7b, 0x04, 0x4d, 0xa4, 0x7b, 0x21, 0x7e, 0x32, 0x7e, 0x39, 0x7e, 0x4e,
|
||||
0x7e, 0x5a, 0x7e, 0x68, 0x7e, 0x71, 0x7e, 0x7f, 0x7e, 0x93, 0x7e, 0xa0,
|
||||
0x7e, 0xb1, 0x7e, 0xc0, 0x7e, 0xcf, 0x7e, 0xdd, 0x7e, 0xed, 0x7e, 0x00,
|
||||
0x7f, 0x0e, 0x7f, 0x21, 0x7f, 0x4e, 0x45, 0x58, 0x54, 0x20, 0x77, 0x69,
|
||||
0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x46, 0x4f, 0x52, 0x00, 0x53, 0x79,
|
||||
0x6e, 0x74, 0x61, 0x78, 0x00, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x20,
|
||||
0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x47, 0x4f, 0x53, 0x55,
|
||||
0x42, 0x00, 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x44, 0x41, 0x54,
|
||||
0x41, 0x00, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63,
|
||||
0x61, 0x6c, 0x6c, 0x00, 0x4f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77,
|
||||
0x00, 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f,
|
||||
0x72, 0x79, 0x00, 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64,
|
||||
0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x41,
|
||||
0x72, 0x72, 0x61, 0x79, 0x20, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x00,
|
||||
0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x64, 0x69, 0x6d, 0x65, 0x6e,
|
||||
0x73, 0x69, 0x6f, 0x6e, 0x00, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x20,
|
||||
0x62, 0x79, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x00, 0x49, 0x6c, 0x6c, 0x65,
|
||||
0x67, 0x61, 0x6c, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x00, 0x54,
|
||||
0x79, 0x70, 0x65, 0x20, 0x6d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63, 0x68,
|
||||
0x00, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x6f, 0x20,
|
||||
0x6c, 0x6f, 0x6e, 0x67, 0x00, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20,
|
||||
0x74, 0x6f, 0x6f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x00,
|
||||
0x43, 0x61, 0x6e, 0x27, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e,
|
||||
0x75, 0x65, 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x20,
|
||||
0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x4c, 0x4f, 0x4f,
|
||||
0x50, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x44, 0x4f,
|
||||
0x00, 0x0d, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x00, 0x20, 0x45, 0x72, 0x72,
|
||||
0x6f, 0x72, 0x00, 0x20, 0x69, 0x6e, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x00,
|
||||
0x0d, 0x52, 0x65, 0x61, 0x64, 0x79, 0x0d, 0x00, 0x20, 0x45, 0x78, 0x74,
|
||||
0x72, 0x61, 0x20, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x0d, 0x00,
|
||||
0x20, 0x52, 0x65, 0x64, 0x6f, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x73,
|
||||
0x74, 0x61, 0x72, 0x74, 0x0d, 0x00, 0xad, 0x11, 0xd0, 0x10, 0x07, 0xad,
|
||||
0x10, 0xd0, 0x29, 0x7f, 0x38, 0x60, 0xa9, 0x00, 0x18, 0x60, 0x46, 0x4c,
|
||||
0x4f, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x20, 0x50, 0x4f, 0x49, 0x4e, 0x54,
|
||||
0x20, 0x42, 0x41, 0x53, 0x49, 0x43, 0x20, 0x46, 0x4f, 0x52, 0x20, 0x54,
|
||||
0x48, 0x45, 0x20, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x20, 0x49,
|
||||
0x20, 0x62, 0x79, 0x20, 0x4c, 0x61, 0x72, 0x72, 0x79, 0x20, 0x4e, 0x65,
|
||||
0x6c, 0x73, 0x6f, 0x6e, 0x2e, 0x20, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65,
|
||||
0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x45, 0x68, 0x42, 0x41, 0x53,
|
||||
0x49, 0x43, 0x2e,
|
||||
] as const;
|
||||
|
||||
start() {
|
||||
return 0x58;
|
||||
}
|
||||
end() {
|
||||
return 0x60;
|
||||
}
|
||||
read(page: byte, off: byte) {
|
||||
return this.rom[((page - 0xe0) << 8) | off];
|
||||
}
|
||||
write() {}
|
||||
getState() {
|
||||
return {};
|
||||
}
|
||||
setState() {}
|
||||
}
|
1044
js/roms/krusader.js
1044
js/roms/krusader.js
File diff suppressed because it is too large
Load Diff
706
js/roms/krusader.ts
Normal file
706
js/roms/krusader.ts
Normal file
@ -0,0 +1,706 @@
|
||||
import { byte } from 'js/types';
|
||||
|
||||
export default class Krusader {
|
||||
rom = [
|
||||
0x4c, 0xb0, 0xe2, 0xad, 0x11, 0xd0, 0x10, 0xfb, 0xad, 0x10, 0xd0, 0x60,
|
||||
0x8a, 0x29, 0x20, 0xf0, 0x23, 0xa9, 0xa0, 0x85, 0xe4, 0x4c, 0xc9, 0xe3,
|
||||
0xa9, 0x20, 0xc5, 0x24, 0xb0, 0x0c, 0xa9, 0x8d, 0xa0, 0x07, 0x20, 0xc9,
|
||||
0xe3, 0xa9, 0xa0, 0x88, 0xd0, 0xf8, 0xa0, 0x00, 0xb1, 0xe2, 0xe6, 0xe2,
|
||||
0xd0, 0x02, 0xe6, 0xe3, 0x60, 0x20, 0x15, 0xe7, 0x20, 0x76, 0xe5, 0xa5,
|
||||
0xe2, 0xc5, 0xe6, 0xa5, 0xe3, 0xe5, 0xe7, 0xb0, 0xef, 0x20, 0x6d, 0xe0,
|
||||
0x4c, 0x3b, 0xe0, 0xa5, 0xca, 0x85, 0xe2, 0xa5, 0xcb, 0x85, 0xe3, 0xa5,
|
||||
0x4c, 0x85, 0xe6, 0xa5, 0x4d, 0x85, 0xe7, 0xd0, 0xde, 0x20, 0x15, 0xe7,
|
||||
0x20, 0x6d, 0xe5, 0xa5, 0xe4, 0x85, 0xe2, 0xa5, 0xe5, 0x85, 0xe3, 0xb0,
|
||||
0xc7, 0x86, 0xd8, 0xa9, 0xa0, 0x85, 0xfa, 0x20, 0x2a, 0xe0, 0x98, 0x85,
|
||||
0xe4, 0x20, 0x2a, 0xe0, 0xaa, 0x20, 0x2a, 0xe0, 0x20, 0x1b, 0xe5, 0x20,
|
||||
0x18, 0xe0, 0x84, 0xfa, 0xaa, 0x10, 0x18, 0x0a, 0x10, 0xe9, 0xa5, 0xe4,
|
||||
0xd0, 0x03, 0x20, 0x11, 0xe0, 0x8a, 0x20, 0xc9, 0xe3, 0xa9, 0x25, 0x20,
|
||||
0x1a, 0xe0, 0xaa, 0x30, 0xf5, 0x85, 0xe4, 0xc9, 0x01, 0xd0, 0x05, 0xa6,
|
||||
0xd8, 0x4c, 0xcd, 0xe3, 0x48, 0x84, 0xce, 0xa2, 0xed, 0x86, 0xcf, 0xc9,
|
||||
0x51, 0x90, 0x04, 0xc6, 0xcf, 0xe9, 0x50, 0x48, 0xb1, 0xce, 0xaa, 0x88,
|
||||
0xb1, 0xce, 0x10, 0xfa, 0xe0, 0xc0, 0xb0, 0x04, 0xe0, 0x00, 0x30, 0xf2,
|
||||
0xaa, 0x68, 0xe9, 0x01, 0xd0, 0xe9, 0x24, 0xe4, 0x30, 0x03, 0x20, 0xf8,
|
||||
0xef, 0xb1, 0xce, 0x10, 0x10, 0xaa, 0x29, 0x3f, 0x85, 0xe4, 0x18, 0x69,
|
||||
0xa0, 0x20, 0xc9, 0xe3, 0x88, 0xe0, 0xc0, 0x90, 0xec, 0x20, 0x0c, 0xe0,
|
||||
0x68, 0xc9, 0x5d, 0xf0, 0xa4, 0xc9, 0x28, 0xd0, 0x8a, 0xf0, 0x9e, 0x20,
|
||||
0x18, 0xe1, 0x95, 0x50, 0xd5, 0x78, 0x90, 0x11, 0xa0, 0x2b, 0x4c, 0xe0,
|
||||
0xe3, 0x20, 0x34, 0xee, 0xd5, 0x50, 0x90, 0xf4, 0x20, 0xe4, 0xef, 0x95,
|
||||
0x78, 0x4c, 0x23, 0xe8, 0x20, 0x34, 0xee, 0xf0, 0xe7, 0x38, 0xe9, 0x01,
|
||||
0x60, 0x20, 0x18, 0xe1, 0x95, 0x50, 0x18, 0xf5, 0x78, 0x4c, 0x02, 0xe1,
|
||||
0xa0, 0x14, 0xd0, 0xd6, 0x20, 0x18, 0xe1, 0xe8, 0xb5, 0x50, 0x85, 0xda,
|
||||
0x65, 0xce, 0x48, 0xa8, 0xb5, 0x78, 0x85, 0xdb, 0x65, 0xcf, 0x48, 0xc4,
|
||||
0xca, 0xe5, 0xcb, 0xb0, 0xe3, 0xa5, 0xda, 0x69, 0xfe, 0x85, 0xda, 0xa9,
|
||||
0xff, 0xa8, 0x65, 0xdb, 0x85, 0xdb, 0xc8, 0xb1, 0xda, 0xd9, 0xcc, 0x00,
|
||||
0xd0, 0x0f, 0x98, 0xf0, 0xf5, 0x68, 0x91, 0xda, 0x99, 0xcc, 0x00, 0x88,
|
||||
0x10, 0xf7, 0xe8, 0x60, 0xea, 0xa0, 0x80, 0xd0, 0x95, 0xa9, 0x00, 0x20,
|
||||
0x0a, 0xe7, 0xa0, 0x02, 0x94, 0x78, 0x20, 0x0a, 0xe7, 0xa9, 0xbf, 0x20,
|
||||
0xc9, 0xe3, 0xa0, 0x00, 0x20, 0x9e, 0xe2, 0x94, 0x78, 0xea, 0xea, 0xea,
|
||||
0xb5, 0x51, 0x85, 0xce, 0xb5, 0x79, 0x85, 0xcf, 0xe8, 0xe8, 0x20, 0xbc,
|
||||
0xe1, 0xb5, 0x4e, 0xd5, 0x76, 0xb0, 0x15, 0xf6, 0x4e, 0xa8, 0xb1, 0xce,
|
||||
0xb4, 0x50, 0xc4, 0xe4, 0x90, 0x04, 0xa0, 0x83, 0xd0, 0xc1, 0x91, 0xda,
|
||||
0xf6, 0x50, 0x90, 0xe5, 0xb4, 0x50, 0x8a, 0x91, 0xda, 0xe8, 0xe8, 0x60,
|
||||
0xb5, 0x51, 0x85, 0xda, 0x38, 0xe9, 0x02, 0x85, 0xe4, 0xb5, 0x79, 0x85,
|
||||
0xdb, 0xe9, 0x00, 0x85, 0xe5, 0xa0, 0x00, 0xb1, 0xe4, 0x18, 0xe5, 0xda,
|
||||
0x85, 0xe4, 0x60, 0xb5, 0x53, 0x85, 0xce, 0xb5, 0x7b, 0x85, 0xcf, 0xb5,
|
||||
0x51, 0x85, 0xda, 0xb5, 0x79, 0x85, 0xdb, 0xe8, 0xe8, 0xe8, 0xa0, 0x00,
|
||||
0x94, 0x78, 0x94, 0xa0, 0xc8, 0x94, 0x50, 0xb5, 0x4d, 0xd5, 0x75, 0x08,
|
||||
0x48, 0xb5, 0x4f, 0xd5, 0x77, 0x90, 0x07, 0x68, 0x28, 0xb0, 0x02, 0x56,
|
||||
0x50, 0x60, 0xa8, 0xb1, 0xce, 0x85, 0xe4, 0x68, 0xa8, 0x28, 0xb0, 0xf3,
|
||||
0xb1, 0xda, 0xc5, 0xe4, 0xd0, 0xed, 0xf6, 0x4f, 0xf6, 0x4d, 0xb0, 0xd7,
|
||||
0x20, 0xd7, 0xe1, 0x4c, 0x36, 0xe7, 0x20, 0x54, 0xe2, 0x06, 0xce, 0x26,
|
||||
0xcf, 0x90, 0x0d, 0x18, 0xa5, 0xe6, 0x65, 0xda, 0x85, 0xe6, 0xa5, 0xe7,
|
||||
0x65, 0xdb, 0x85, 0xe7, 0x88, 0xf0, 0x09, 0x06, 0xe6, 0x26, 0xe7, 0x10,
|
||||
0xe4, 0x4c, 0x7e, 0xe7, 0xa5, 0xe6, 0x20, 0x08, 0xe7, 0xa5, 0xe7, 0x95,
|
||||
0xa0, 0x06, 0xe5, 0x90, 0x28, 0x4c, 0x6f, 0xe7, 0xa9, 0x55, 0x85, 0xe5,
|
||||
0x20, 0x5b, 0xe2, 0xa5, 0xce, 0x85, 0xda, 0xa5, 0xcf, 0x85, 0xdb, 0x20,
|
||||
0x15, 0xe7, 0x84, 0xe6, 0x84, 0xe7, 0xa5, 0xcf, 0x10, 0x09, 0xca, 0x06,
|
||||
0xe5, 0x20, 0x6f, 0xe7, 0x20, 0x15, 0xe7, 0xa0, 0x10, 0x60, 0x20, 0x6c,
|
||||
0xee, 0xf0, 0xc5, 0xff, 0xc9, 0x84, 0xd0, 0x02, 0x46, 0xf8, 0xc9, 0xdf,
|
||||
0xf0, 0x11, 0xc9, 0x9b, 0xf0, 0x06, 0x99, 0x00, 0x02, 0xc8, 0x10, 0x0a,
|
||||
0xa0, 0x8b, 0x20, 0xc4, 0xe3, 0xa0, 0x01, 0x88, 0x30, 0xf6, 0x20, 0x03,
|
||||
0xe0, 0xea, 0xea, 0x20, 0xc9, 0xe3, 0xc9, 0x8d, 0xd0, 0xd6, 0xa9, 0xdf,
|
||||
0x99, 0x00, 0x02, 0x60, 0x20, 0xd3, 0xef, 0x20, 0xcd, 0xe3, 0x46, 0xd9,
|
||||
0xa9, 0xbe, 0x20, 0xc9, 0xe3, 0xa0, 0x00, 0x84, 0xfa, 0x24, 0xf8, 0x10,
|
||||
0x0c, 0xa6, 0xf6, 0xa5, 0xf7, 0x20, 0x1b, 0xe5, 0xa9, 0xa0, 0x20, 0xc9,
|
||||
0xe3, 0xa2, 0xff, 0x9a, 0x20, 0x9e, 0xe2, 0x84, 0xf1, 0x8a, 0x85, 0xc8,
|
||||
0xa2, 0x20, 0x20, 0x91, 0xe4, 0xa5, 0xc8, 0x69, 0x00, 0x85, 0xe0, 0xa9,
|
||||
0x00, 0xaa, 0x69, 0x02, 0x85, 0xe1, 0xa1, 0xe0, 0x29, 0xf0, 0xc9, 0xb0,
|
||||
0xf0, 0x03, 0x4c, 0x83, 0xe8, 0xa0, 0x02, 0xb1, 0xe0, 0x99, 0xcd, 0x00,
|
||||
0x88, 0xd0, 0xf8, 0x20, 0x8a, 0xe3, 0xa5, 0xf1, 0xe5, 0xc8, 0xc9, 0x04,
|
||||
0xf0, 0xa8, 0x91, 0xe0, 0xa5, 0xca, 0xf1, 0xe0, 0x85, 0xe4, 0xa5, 0xcb,
|
||||
0xe9, 0x00, 0x85, 0xe5, 0xa5, 0xe4, 0xc5, 0xcc, 0xa5, 0xe5, 0xe5, 0xcd,
|
||||
0x90, 0x45, 0xa5, 0xca, 0xf1, 0xe0, 0x85, 0xe6, 0xa5, 0xcb, 0xe9, 0x00,
|
||||
0x85, 0xe7, 0xb1, 0xca, 0x91, 0xe6, 0xe6, 0xca, 0xd0, 0x02, 0xe6, 0xcb,
|
||||
0xa5, 0xe2, 0xc5, 0xca, 0xa5, 0xe3, 0xe5, 0xcb, 0xb0, 0xe0, 0xb5, 0xe4,
|
||||
0x95, 0xca, 0xca, 0x10, 0xf9, 0xb1, 0xe0, 0xa8, 0x88, 0xb1, 0xe0, 0x91,
|
||||
0xe6, 0x98, 0xd0, 0xf8, 0x24, 0xf8, 0x10, 0x09, 0xb5, 0xf7, 0x75, 0xf5,
|
||||
0x95, 0xf7, 0xe8, 0xf0, 0xf7, 0x10, 0x7e, 0x00, 0x00, 0x00, 0x00, 0xa0,
|
||||
0x14, 0xd0, 0x71, 0x20, 0x15, 0xe7, 0xa5, 0xe2, 0x85, 0xe6, 0xa5, 0xe3,
|
||||
0x85, 0xe7, 0x20, 0x75, 0xe5, 0xa5, 0xe2, 0x85, 0xe4, 0xa5, 0xe3, 0x85,
|
||||
0xe5, 0xd0, 0x0e, 0x20, 0x15, 0xe7, 0x20, 0x6d, 0xe5, 0xa5, 0xe6, 0x85,
|
||||
0xe2, 0xa5, 0xe7, 0x85, 0xe3, 0xa0, 0x00, 0xa5, 0xca, 0xc5, 0xe4, 0xa5,
|
||||
0xcb, 0xe5, 0xe5, 0xb0, 0x16, 0xa5, 0xe4, 0xd0, 0x02, 0xc6, 0xe5, 0xc6,
|
||||
0xe4, 0xa5, 0xe6, 0xd0, 0x02, 0xc6, 0xe7, 0xc6, 0xe6, 0xb1, 0xe4, 0x91,
|
||||
0xe6, 0x90, 0xe0, 0xa5, 0xe6, 0x85, 0xca, 0xa5, 0xe7, 0x85, 0xcb, 0x60,
|
||||
0x20, 0xc9, 0xe3, 0xc8, 0xb9, 0x00, 0xeb, 0x30, 0xf7, 0xc9, 0x8d, 0xd0,
|
||||
0x06, 0xa9, 0x00, 0x85, 0x24, 0xa9, 0x8d, 0xe6, 0x24, 0x2c, 0x12, 0xd0,
|
||||
0x30, 0xfb, 0x8d, 0x12, 0xd0, 0x60, 0xa0, 0x06, 0x20, 0xd3, 0xee, 0x24,
|
||||
0xd9, 0x30, 0x03, 0x4c, 0xb6, 0xe2, 0x4c, 0x9a, 0xeb, 0x2a, 0x69, 0xa0,
|
||||
0xdd, 0x00, 0x02, 0xd0, 0x53, 0xb1, 0xfe, 0x0a, 0x30, 0x06, 0x88, 0xb1,
|
||||
0xfe, 0x30, 0x29, 0xc8, 0x86, 0xc8, 0x98, 0x48, 0xa2, 0x00, 0xa1, 0xfe,
|
||||
0xaa, 0x4a, 0x49, 0x48, 0x11, 0xfe, 0xc9, 0xc0, 0x90, 0x01, 0xe8, 0xc8,
|
||||
0xd0, 0xf3, 0x68, 0xa8, 0x8a, 0x4c, 0xc0, 0xe4, 0xe6, 0xf1, 0xa6, 0xf1,
|
||||
0xf0, 0xbc, 0x9d, 0x00, 0x02, 0x60, 0xa6, 0xc8, 0xa9, 0xa0, 0xe8, 0xdd,
|
||||
0x00, 0x02, 0xb0, 0xfa, 0xb1, 0xfe, 0x29, 0x3f, 0x4a, 0xd0, 0xb6, 0xbd,
|
||||
0x00, 0x02, 0xb0, 0x06, 0x69, 0x3f, 0xc9, 0x1a, 0x90, 0x6f, 0x69, 0x4f,
|
||||
0xc9, 0x0a, 0x90, 0x69, 0xa6, 0xfd, 0xc8, 0xb1, 0xfe, 0x29, 0xe0, 0xc9,
|
||||
0x20, 0xf0, 0x7a, 0xb5, 0xa8, 0x85, 0xc8, 0xb5, 0xd1, 0x85, 0xf1, 0x88,
|
||||
0xb1, 0xfe, 0x0a, 0x10, 0xfa, 0x88, 0xb0, 0x38, 0x0a, 0x30, 0x35, 0xb4,
|
||||
0x58, 0x84, 0xff, 0xb4, 0x80, 0xe8, 0x10, 0xda, 0xf0, 0xb3, 0xc9, 0x7e,
|
||||
0xb0, 0x22, 0xca, 0x10, 0x04, 0xa0, 0x06, 0x10, 0x29, 0x94, 0x80, 0xa4,
|
||||
0xff, 0x94, 0x58, 0xa4, 0xc8, 0x94, 0xa8, 0xa4, 0xf1, 0x94, 0xd1, 0x29,
|
||||
0x1f, 0xa8, 0xb9, 0x20, 0xec, 0x0a, 0xa8, 0xa9, 0x76, 0x2a, 0x85, 0xff,
|
||||
0xd0, 0x01, 0xc8, 0xc8, 0x86, 0xfd, 0xb1, 0xfe, 0x30, 0x84, 0xd0, 0x05,
|
||||
0xa0, 0x0e, 0x4c, 0xe0, 0xe3, 0xc9, 0x03, 0xb0, 0xc3, 0x4a, 0xa6, 0xc8,
|
||||
0xe8, 0xbd, 0x00, 0x02, 0x90, 0x04, 0xc9, 0xa2, 0xf0, 0x0a, 0xc9, 0xdf,
|
||||
0xf0, 0x06, 0x86, 0xc8, 0x20, 0x1c, 0xe4, 0xc8, 0x88, 0xa6, 0xfd, 0xb1,
|
||||
0xfe, 0x88, 0x0a, 0x10, 0xcf, 0xb4, 0x58, 0x84, 0xff, 0xb4, 0x80, 0xe8,
|
||||
0xb1, 0xfe, 0x29, 0x9f, 0xd0, 0xed, 0x85, 0xf2, 0x85, 0xf3, 0x98, 0x48,
|
||||
0x86, 0xfd, 0xb4, 0xd0, 0x84, 0xc9, 0x18, 0xa9, 0x0a, 0x85, 0xf9, 0xa2,
|
||||
0x00, 0xc8, 0xb9, 0x00, 0x02, 0x29, 0x0f, 0x65, 0xf2, 0x48, 0x8a, 0x65,
|
||||
0xf3, 0x30, 0x1c, 0xaa, 0x68, 0xc6, 0xf9, 0xd0, 0xf2, 0x85, 0xf2, 0x86,
|
||||
0xf3, 0xc4, 0xf1, 0xd0, 0xde, 0xa4, 0xc9, 0xc8, 0x84, 0xf1, 0x20, 0x1c,
|
||||
0xe4, 0x68, 0xa8, 0xa5, 0xf3, 0xb0, 0xa9, 0xa0, 0x00, 0x10, 0x8b, 0x85,
|
||||
0xf3, 0x86, 0xf2, 0xa2, 0x04, 0x86, 0xc9, 0xa9, 0xb0, 0x85, 0xf9, 0xa5,
|
||||
0xf2, 0xdd, 0x63, 0xe5, 0xa5, 0xf3, 0xfd, 0x68, 0xe5, 0x90, 0x0d, 0x85,
|
||||
0xf3, 0xa5, 0xf2, 0xfd, 0x63, 0xe5, 0x85, 0xf2, 0xe6, 0xf9, 0xd0, 0xe7,
|
||||
0xa5, 0xf9, 0xe8, 0xca, 0xf0, 0x0e, 0xc9, 0xb0, 0xf0, 0x02, 0x85, 0xc9,
|
||||
0x24, 0xc9, 0x30, 0x04, 0xa5, 0xfa, 0xf0, 0x0b, 0x20, 0xc9, 0xe3, 0x24,
|
||||
0xf8, 0x10, 0x04, 0x99, 0x00, 0x02, 0xc8, 0xca, 0x10, 0xc1, 0x60, 0x01,
|
||||
0x0a, 0x64, 0xe8, 0x10, 0x00, 0x00, 0x00, 0x03, 0x27, 0xa5, 0xca, 0x85,
|
||||
0xe6, 0xa5, 0xcb, 0x85, 0xe7, 0xe8, 0xa5, 0xe7, 0x85, 0xe5, 0xa5, 0xe6,
|
||||
0x85, 0xe4, 0xc5, 0x4c, 0xa5, 0xe5, 0xe5, 0x4d, 0xb0, 0x26, 0xa0, 0x01,
|
||||
0xb1, 0xe4, 0xe5, 0xce, 0xc8, 0xb1, 0xe4, 0xe5, 0xcf, 0xb0, 0x19, 0xa0,
|
||||
0x00, 0xa5, 0xe6, 0x71, 0xe4, 0x85, 0xe6, 0x90, 0x03, 0xe6, 0xe7, 0x18,
|
||||
0xc8, 0xa5, 0xce, 0xf1, 0xe4, 0xc8, 0xa5, 0xcf, 0xf1, 0xe4, 0xb0, 0xca,
|
||||
0x60, 0x46, 0xf8, 0xa5, 0x4c, 0x85, 0xca, 0xa5, 0x4d, 0x85, 0xcb, 0xa5,
|
||||
0x4a, 0x85, 0xcc, 0xa5, 0x4b, 0x85, 0xcd, 0xa9, 0x00, 0x85, 0xfb, 0x85,
|
||||
0xfc, 0x85, 0xfe, 0xa9, 0x00, 0x85, 0x1d, 0x60, 0xa5, 0xd0, 0x69, 0x05,
|
||||
0x85, 0xd2, 0xa5, 0xd1, 0x69, 0x00, 0x85, 0xd3, 0xa5, 0xd2, 0xc5, 0xca,
|
||||
0xa5, 0xd3, 0xe5, 0xcb, 0x90, 0x03, 0x4c, 0x6b, 0xe3, 0xa5, 0xce, 0x91,
|
||||
0xd0, 0xa5, 0xcf, 0xc8, 0x91, 0xd0, 0xa5, 0xd2, 0xc8, 0x91, 0xd0, 0xa5,
|
||||
0xd3, 0xc8, 0x91, 0xd0, 0xa9, 0x00, 0xc8, 0x91, 0xd0, 0xc8, 0x91, 0xd0,
|
||||
0xa5, 0xd2, 0x85, 0xcc, 0xa5, 0xd3, 0x85, 0xcd, 0xa5, 0xd0, 0x90, 0x43,
|
||||
0x85, 0xce, 0x84, 0xcf, 0x20, 0xff, 0xe6, 0x30, 0x0e, 0xc9, 0x40, 0xf0,
|
||||
0x0a, 0x4c, 0x28, 0xe6, 0x06, 0xc9, 0x49, 0xd0, 0x07, 0xa9, 0x49, 0x85,
|
||||
0xcf, 0x20, 0xff, 0xe6, 0xa5, 0x4b, 0x85, 0xd1, 0xa5, 0x4a, 0x85, 0xd0,
|
||||
0xc5, 0xcc, 0xa5, 0xd1, 0xe5, 0xcd, 0xb0, 0x94, 0xb1, 0xd0, 0xc8, 0xc5,
|
||||
0xce, 0xd0, 0x06, 0xb1, 0xd0, 0xc5, 0xcf, 0xf0, 0x0e, 0xc8, 0xb1, 0xd0,
|
||||
0x48, 0xc8, 0xb1, 0xd0, 0x85, 0xd1, 0x68, 0xa0, 0x00, 0xf0, 0xdb, 0xa5,
|
||||
0xd0, 0x69, 0x03, 0x20, 0x0a, 0xe7, 0xa5, 0xd1, 0x69, 0x00, 0x95, 0x78,
|
||||
0xa5, 0xcf, 0xc9, 0x40, 0xd0, 0x1c, 0x88, 0x98, 0x20, 0x0a, 0xe7, 0x88,
|
||||
0x94, 0x78, 0xa0, 0x03, 0xf6, 0x78, 0xc8, 0xb1, 0xd0, 0x30, 0xf9, 0x10,
|
||||
0x09, 0xa9, 0x00, 0x85, 0xd4, 0x85, 0xd5, 0xa2, 0x20, 0x48, 0xa0, 0x00,
|
||||
0xb1, 0xe0, 0x10, 0x18, 0x0a, 0x30, 0x81, 0x20, 0xff, 0xe6, 0x20, 0x08,
|
||||
0xe7, 0x20, 0xff, 0xe6, 0x95, 0xa0, 0x24, 0xd4, 0x10, 0x01, 0xca, 0x20,
|
||||
0xff, 0xe6, 0xb0, 0xe6, 0xc9, 0x28, 0xd0, 0x1f, 0xa5, 0xe0, 0x20, 0x0a,
|
||||
0xe7, 0xa5, 0xe1, 0x95, 0x78, 0x24, 0xd4, 0x30, 0x0b, 0xa9, 0x01, 0x20,
|
||||
0x0a, 0xe7, 0xa9, 0x00, 0x95, 0x78, 0xf6, 0x78, 0x20, 0xff, 0xe6, 0x30,
|
||||
0xf9, 0xb0, 0xd3, 0x24, 0xd4, 0x10, 0x06, 0xc9, 0x04, 0xb0, 0xd0, 0x46,
|
||||
0xd4, 0xa8, 0x85, 0xd6, 0xb9, 0x98, 0xe9, 0x29, 0x55, 0x0a, 0x85, 0xd7,
|
||||
0x68, 0xa8, 0xb9, 0x98, 0xe9, 0x29, 0xaa, 0xc5, 0xd7, 0xb0, 0x09, 0x98,
|
||||
0x48, 0x20, 0xff, 0xe6, 0xa5, 0xd6, 0x90, 0x95, 0xb9, 0x10, 0xea, 0x85,
|
||||
0xce, 0xb9, 0x88, 0xea, 0x85, 0xcf, 0x20, 0xfc, 0xe6, 0x4c, 0xd8, 0xe6,
|
||||
0x6c, 0xce, 0x00, 0xe6, 0xe0, 0xd0, 0x02, 0xe6, 0xe1, 0xb1, 0xe0, 0x60,
|
||||
0x94, 0x77, 0xca, 0x30, 0x03, 0x95, 0x50, 0x60, 0xa0, 0x66, 0x4c, 0xe0,
|
||||
0xe3, 0xa0, 0x00, 0xb5, 0x50, 0x85, 0xce, 0xb5, 0xa0, 0x85, 0xcf, 0xb5,
|
||||
0x78, 0xf0, 0x0e, 0x85, 0xcf, 0xb1, 0xce, 0x48, 0xc8, 0xb1, 0xce, 0x85,
|
||||
0xcf, 0x68, 0x85, 0xce, 0x88, 0xe8, 0x60, 0x20, 0x4a, 0xe7, 0x20, 0x15,
|
||||
0xe7, 0x98, 0x20, 0x08, 0xe7, 0x95, 0xa0, 0xc5, 0xce, 0xd0, 0x06, 0xc5,
|
||||
0xcf, 0xd0, 0x02, 0xf6, 0x50, 0x60, 0x20, 0x82, 0xe7, 0x20, 0x59, 0xe7,
|
||||
0x20, 0x15, 0xe7, 0x24, 0xcf, 0x30, 0x1b, 0xca, 0x60, 0x20, 0x15, 0xe7,
|
||||
0xa5, 0xcf, 0xd0, 0x04, 0xa5, 0xce, 0xf0, 0xf3, 0xa9, 0xff, 0x20, 0x08,
|
||||
0xe7, 0x95, 0xa0, 0x24, 0xcf, 0x30, 0xe9, 0x20, 0x15, 0xe7, 0x98, 0x38,
|
||||
0xe5, 0xce, 0x20, 0x08, 0xe7, 0x98, 0xe5, 0xcf, 0x50, 0x23, 0xa0, 0x00,
|
||||
0x10, 0x90, 0x20, 0x6f, 0xe7, 0x20, 0x15, 0xe7, 0xa5, 0xce, 0x85, 0xda,
|
||||
0xa5, 0xcf, 0x85, 0xdb, 0x20, 0x15, 0xe7, 0x18, 0xa5, 0xce, 0x65, 0xda,
|
||||
0x20, 0x08, 0xe7, 0xa5, 0xcf, 0x65, 0xdb, 0x70, 0xdd, 0x95, 0xa0, 0x60,
|
||||
0x20, 0x15, 0xe7, 0xa4, 0xce, 0xf0, 0x05, 0x88, 0xa5, 0xcf, 0xf0, 0x0c,
|
||||
0x60, 0xa5, 0x24, 0x09, 0x07, 0xa8, 0xc8, 0xa9, 0xa0, 0x20, 0xc9, 0xe3,
|
||||
0xc4, 0x24, 0xb0, 0xf7, 0x60, 0x20, 0xb1, 0xe7, 0x20, 0x15, 0xe7, 0xa5,
|
||||
0xcf, 0x10, 0x0a, 0xa9, 0xad, 0x20, 0xc9, 0xe3, 0x20, 0x72, 0xe7, 0x50,
|
||||
0xef, 0x88, 0x84, 0xd5, 0x86, 0xcf, 0xa6, 0xce, 0x20, 0x1b, 0xe5, 0xa6,
|
||||
0xcf, 0x60, 0x20, 0x15, 0xe7, 0xa5, 0xce, 0x85, 0xf6, 0xa5, 0xcf, 0x85,
|
||||
0xf7, 0x88, 0x84, 0xf8, 0xc8, 0xa9, 0x0a, 0x85, 0xf4, 0x84, 0xf5, 0x60,
|
||||
0x20, 0x15, 0xe7, 0xa5, 0xce, 0xa4, 0xcf, 0x10, 0xf2, 0x20, 0x15, 0xe7,
|
||||
0xb5, 0x50, 0x85, 0xda, 0xb5, 0x78, 0x85, 0xdb, 0xa5, 0xce, 0x91, 0xda,
|
||||
0xc8, 0xa5, 0xcf, 0x91, 0xda, 0xe8, 0x60, 0x68, 0x68, 0x24, 0xd5, 0x10,
|
||||
0x05, 0x20, 0xcd, 0xe3, 0x46, 0xd5, 0x60, 0xa0, 0xff, 0x84, 0xd7, 0x60,
|
||||
0x20, 0xcd, 0xef, 0xf0, 0x07, 0xa9, 0x25, 0x85, 0xd6, 0x88, 0x84, 0xd4,
|
||||
0xe8, 0x60, 0xa5, 0xca, 0xa4, 0xcb, 0xd0, 0x5a, 0xa0, 0x41, 0xa5, 0xfc,
|
||||
0xc9, 0x08, 0xb0, 0x5e, 0xa8, 0xe6, 0xfc, 0xa5, 0xe0, 0x99, 0x00, 0x01,
|
||||
0xa5, 0xe1, 0x99, 0x08, 0x01, 0xa5, 0xdc, 0x99, 0x10, 0x01, 0xa5, 0xdd,
|
||||
0x99, 0x18, 0x01, 0x20, 0x15, 0xe7, 0x20, 0x6d, 0xe5, 0x90, 0x04, 0xa0,
|
||||
0x37, 0xd0, 0x3b, 0xa5, 0xe4, 0xa4, 0xe5, 0x85, 0xdc, 0x84, 0xdd, 0x2c,
|
||||
0x11, 0xd0, 0x30, 0x4f, 0x18, 0x69, 0x03, 0x90, 0x01, 0xc8, 0xa2, 0xff,
|
||||
0x86, 0xd9, 0x9a, 0x85, 0xe0, 0x84, 0xe1, 0x20, 0x79, 0xe6, 0x24, 0xd9,
|
||||
0x10, 0x49, 0x18, 0xa0, 0x00, 0xa5, 0xdc, 0x71, 0xdc, 0xa4, 0xdd, 0x90,
|
||||
0x01, 0xc8, 0xc5, 0x4c, 0xd0, 0xd1, 0xc4, 0x4d, 0xd0, 0xcd, 0xa0, 0x34,
|
||||
0x46, 0xd9, 0x4c, 0xe0, 0xe3, 0xa0, 0x4a, 0xa5, 0xfc, 0xf0, 0xf7, 0xc6,
|
||||
0xfc, 0xa8, 0xb9, 0x0f, 0x01, 0x85, 0xdc, 0xb9, 0x17, 0x01, 0x85, 0xdd,
|
||||
0xbe, 0xff, 0x00, 0xb9, 0x07, 0x01, 0xa8, 0x8a, 0x4c, 0x7a, 0xe8, 0xa0,
|
||||
0x63, 0x20, 0xc4, 0xe3, 0xa0, 0x01, 0xb1, 0xdc, 0xaa, 0xc8, 0xb1, 0xdc,
|
||||
0x20, 0x1b, 0xe5, 0x4c, 0xb3, 0xe2, 0xc6, 0xfb, 0xa0, 0x5b, 0xa5, 0xfb,
|
||||
0xf0, 0xc4, 0xa8, 0xb5, 0x50, 0xd9, 0x1f, 0x01, 0xd0, 0xf0, 0xb5, 0x78,
|
||||
0xd9, 0x27, 0x01, 0xd0, 0xe9, 0xb9, 0x2f, 0x01, 0x85, 0xda, 0xb9, 0x37,
|
||||
0x01, 0x85, 0xdb, 0x20, 0x15, 0xe7, 0xca, 0x20, 0x93, 0xe7, 0x20, 0x01,
|
||||
0xe8, 0xca, 0xa4, 0xfb, 0xb9, 0x67, 0x01, 0x95, 0x9f, 0xb9, 0x5f, 0x01,
|
||||
0xa0, 0x00, 0x20, 0x08, 0xe7, 0x20, 0x82, 0xe7, 0x20, 0x59, 0xe7, 0x20,
|
||||
0x15, 0xe7, 0xa4, 0xfb, 0xa5, 0xce, 0xf0, 0x05, 0x59, 0x37, 0x01, 0x10,
|
||||
0x12, 0xb9, 0x3f, 0x01, 0x85, 0xdc, 0xb9, 0x47, 0x01, 0x85, 0xdd, 0xbe,
|
||||
0x4f, 0x01, 0xb9, 0x57, 0x01, 0xd0, 0x87, 0xc6, 0xfb, 0x60, 0xa0, 0x54,
|
||||
0xa5, 0xfb, 0xc9, 0x08, 0xf0, 0x9a, 0xe6, 0xfb, 0xa8, 0xb5, 0x50, 0x99,
|
||||
0x20, 0x01, 0xb5, 0x78, 0x99, 0x28, 0x01, 0x60, 0x20, 0x15, 0xe7, 0xa4,
|
||||
0xfb, 0xa5, 0xce, 0x99, 0x5f, 0x01, 0xa5, 0xcf, 0x99, 0x67, 0x01, 0xa9,
|
||||
0x01, 0x99, 0x2f, 0x01, 0xa9, 0x00, 0x99, 0x37, 0x01, 0xa5, 0xdc, 0x99,
|
||||
0x3f, 0x01, 0xa5, 0xdd, 0x99, 0x47, 0x01, 0xa5, 0xe0, 0x99, 0x4f, 0x01,
|
||||
0xa5, 0xe1, 0x99, 0x57, 0x01, 0x60, 0x20, 0x15, 0xe7, 0xa4, 0xfb, 0xa5,
|
||||
0xce, 0x99, 0x2f, 0x01, 0xa5, 0xcf, 0x4c, 0x66, 0xe9, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x3f, 0x3f, 0xc0, 0xc0, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
|
||||
0x3c, 0x30, 0x0f, 0xc0, 0xcc, 0xff, 0x55, 0x00, 0xab, 0xab, 0x03, 0x03,
|
||||
0xff, 0xff, 0x55, 0xff, 0xff, 0x55, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xff,
|
||||
0x55, 0xc3, 0xc3, 0xc3, 0x55, 0xf0, 0xf0, 0xcf, 0x56, 0x56, 0x56, 0x55,
|
||||
0xff, 0xff, 0x55, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff,
|
||||
0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0xab, 0x03, 0x57, 0x03, 0x03, 0x03,
|
||||
0x03, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0x17, 0xff, 0xff, 0x19,
|
||||
0x5d, 0x35, 0x4b, 0xf2, 0xec, 0x87, 0x6f, 0xad, 0xb7, 0xe2, 0xf8, 0x54,
|
||||
0x80, 0x96, 0x85, 0x82, 0x22, 0x10, 0x33, 0x4a, 0x13, 0x06, 0x0b, 0x4a,
|
||||
0x01, 0x40, 0x47, 0x7a, 0x00, 0xff, 0x23, 0x09, 0x5b, 0x16, 0xb6, 0xcb,
|
||||
0xff, 0xff, 0xfb, 0xff, 0xff, 0x24, 0xf6, 0x4e, 0x59, 0x50, 0x00, 0xff,
|
||||
0x23, 0xa3, 0x6f, 0x36, 0x23, 0xd7, 0x1c, 0x22, 0xc2, 0xae, 0xba, 0x23,
|
||||
0xff, 0xff, 0x21, 0x30, 0x1e, 0x03, 0xc4, 0x20, 0x00, 0xc1, 0xff, 0xff,
|
||||
0xff, 0xa0, 0x30, 0x1e, 0xa4, 0xd3, 0xb6, 0xbc, 0xaa, 0x3a, 0x01, 0x50,
|
||||
0x7e, 0xd8, 0xd8, 0xa5, 0x3c, 0xff, 0x16, 0x5b, 0x28, 0x03, 0xc4, 0x1d,
|
||||
0x00, 0x0c, 0x4e, 0x00, 0x3e, 0x00, 0xa6, 0xb0, 0x00, 0xbc, 0xc6, 0x57,
|
||||
0x8c, 0x01, 0x27, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0xff, 0xff, 0xe8,
|
||||
0xe0, 0xe0, 0xe0, 0xef, 0xef, 0xe3, 0xe3, 0xe5, 0xe5, 0xe7, 0xe7, 0xee,
|
||||
0xef, 0xef, 0xe7, 0xe7, 0xe2, 0xef, 0xe7, 0xe7, 0xec, 0xec, 0xec, 0xe7,
|
||||
0xec, 0xec, 0xec, 0xe2, 0x00, 0xff, 0xe8, 0xe1, 0xe8, 0xe8, 0xef, 0xeb,
|
||||
0xff, 0xff, 0xe0, 0xff, 0xff, 0xef, 0xee, 0xef, 0xe7, 0xe7, 0x00, 0xff,
|
||||
0xe8, 0xe7, 0xe7, 0xe7, 0xe8, 0xe1, 0xe2, 0xee, 0xee, 0xee, 0xee, 0xe8,
|
||||
0xff, 0xff, 0xe1, 0xe1, 0xef, 0xee, 0xe7, 0xe8, 0xee, 0xe7, 0xff, 0xff,
|
||||
0xff, 0xee, 0xe1, 0xef, 0xe7, 0xe8, 0xef, 0xef, 0xeb, 0xe9, 0xe8, 0xe9,
|
||||
0xe9, 0xe8, 0xe8, 0xe8, 0xe8, 0xff, 0xe8, 0xe8, 0xe8, 0xee, 0xe7, 0xe8,
|
||||
0xef, 0xef, 0xee, 0xef, 0xee, 0xef, 0xee, 0xee, 0xef, 0xee, 0xee, 0xee,
|
||||
0xe1, 0xe8, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbe, 0xb3, 0xb2, 0xb7,
|
||||
0xb6, 0x37, 0xd4, 0xcf, 0xcf, 0xa0, 0xcc, 0xcf, 0xce, 0x47, 0xd3, 0xd9,
|
||||
0xce, 0xd4, 0xc1, 0x58, 0xcd, 0xc5, 0xcd, 0xa0, 0xc6, 0xd5, 0xcc, 0x4c,
|
||||
0xd4, 0xcf, 0xcf, 0xa0, 0xcd, 0xc1, 0xce, 0xd9, 0xa0, 0xd0, 0xc1, 0xd2,
|
||||
0xc5, 0xce, 0x53, 0xd3, 0xd4, 0xd2, 0xc9, 0xce, 0x47, 0xce, 0xcf, 0xa0,
|
||||
0xc5, 0xce, 0x44, 0xc2, 0xc1, 0xc4, 0xa0, 0xc2, 0xd2, 0xc1, 0xce, 0xc3,
|
||||
0x48, 0xbe, 0xb8, 0xa0, 0xc7, 0xcf, 0xd3, 0xd5, 0xc2, 0x53, 0xc2, 0xc1,
|
||||
0xc4, 0xa0, 0xd2, 0xc5, 0xd4, 0xd5, 0xd2, 0x4e, 0xbe, 0xb8, 0xa0, 0xc6,
|
||||
0xcf, 0xd2, 0x53, 0xc2, 0xc1, 0xc4, 0xa0, 0xce, 0xc5, 0xd8, 0x54, 0xd3,
|
||||
0xd4, 0xcf, 0xd0, 0xd0, 0xc5, 0xc4, 0xa0, 0xc1, 0xd4, 0x20, 0xaa, 0xaa,
|
||||
0xaa, 0x20, 0xa0, 0xc5, 0xd2, 0xd2, 0x0d, 0xbe, 0xb2, 0xb5, 0x35, 0xd2,
|
||||
0xc1, 0xce, 0xc7, 0x45, 0xc4, 0xc9, 0x4d, 0xd3, 0xd4, 0xd2, 0xa0, 0xcf,
|
||||
0xd6, 0xc6, 0x4c, 0xdc, 0x0d, 0xd2, 0xc5, 0xd4, 0xd9, 0xd0, 0xc5, 0xa0,
|
||||
0xcc, 0xc9, 0xce, 0xc5, 0x8d, 0x3f, 0x46, 0xd9, 0x90, 0x03, 0x4c, 0xc3,
|
||||
0xe8, 0xa6, 0xcf, 0x9a, 0xa6, 0xce, 0xa0, 0x8d, 0xd0, 0x02, 0xa0, 0x99,
|
||||
0x20, 0xc4, 0xe3, 0x86, 0xce, 0xba, 0x86, 0xcf, 0xa0, 0xfe, 0x84, 0xd9,
|
||||
0xc8, 0x84, 0xc8, 0x20, 0x99, 0xe2, 0x84, 0xf1, 0xa2, 0x20, 0xa9, 0x30,
|
||||
0x20, 0x91, 0xe4, 0xe6, 0xd9, 0xa6, 0xce, 0xa4, 0xc8, 0x0a, 0x85, 0xce,
|
||||
0xc8, 0xb9, 0x00, 0x02, 0xc9, 0x74, 0xf0, 0xd2, 0x49, 0xb0, 0xc9, 0x0a,
|
||||
0xb0, 0xf0, 0xc8, 0xc8, 0x84, 0xc8, 0xb9, 0x00, 0x02, 0x48, 0xb9, 0xff,
|
||||
0x01, 0xa0, 0x00, 0x20, 0x08, 0xe7, 0x68, 0x95, 0xa0, 0xa5, 0xce, 0xc9,
|
||||
0xc7, 0xd0, 0x03, 0x20, 0x6f, 0xe7, 0x4c, 0x01, 0xe8, 0xff, 0xff, 0xff,
|
||||
0x50, 0x20, 0x13, 0xec, 0xd0, 0x15, 0x20, 0x0b, 0xec, 0xd0, 0x10, 0x20,
|
||||
0x82, 0xe7, 0x20, 0x6f, 0xe7, 0x50, 0x03, 0x20, 0x82, 0xe7, 0x20, 0x59,
|
||||
0xe7, 0x56, 0x50, 0x4c, 0x36, 0xe7, 0xff, 0xff, 0xc1, 0xff, 0x7f, 0xd1,
|
||||
0xcc, 0xc7, 0xcf, 0xce, 0xc5, 0x9a, 0x98, 0x8b, 0x96, 0x95, 0x93, 0xbf,
|
||||
0xb2, 0x32, 0x2d, 0x2b, 0xbc, 0xb0, 0xac, 0xbe, 0x35, 0x8e, 0x61, 0xff,
|
||||
0xff, 0xff, 0xdd, 0xfb, 0x20, 0xc9, 0xef, 0x15, 0x4f, 0x10, 0x05, 0x20,
|
||||
0xc9, 0xef, 0x35, 0x4f, 0x95, 0x50, 0x10, 0xcb, 0x4c, 0xc9, 0xef, 0x40,
|
||||
0x60, 0x8d, 0x60, 0x8b, 0x00, 0x7e, 0x8c, 0x33, 0x00, 0x00, 0x60, 0x03,
|
||||
0xbf, 0x12, 0x00, 0x40, 0x89, 0xc9, 0x47, 0x9d, 0x17, 0x68, 0x9d, 0x0a,
|
||||
0x00, 0x40, 0x60, 0x8d, 0x60, 0x8b, 0x00, 0x7e, 0x8c, 0x3c, 0x00, 0x00,
|
||||
0x60, 0x03, 0xbf, 0x1b, 0x4b, 0x67, 0xb4, 0xa1, 0x07, 0x8c, 0x07, 0xae,
|
||||
0xa9, 0xac, 0xa8, 0x67, 0x8c, 0x07, 0xb4, 0xaf, 0xac, 0xb0, 0x67, 0x9d,
|
||||
0xb2, 0xaf, 0xac, 0xaf, 0xa3, 0x67, 0x8c, 0x07, 0xa5, 0xab, 0xaf, 0xb0,
|
||||
0xf4, 0xae, 0xa9, 0xb2, 0xb0, 0x7f, 0x0e, 0x27, 0xb4, 0xae, 0xa9, 0xb2,
|
||||
0xb0, 0x7f, 0x0e, 0x28, 0xb4, 0xae, 0xa9, 0xb2, 0xb0, 0x64, 0x07, 0xa6,
|
||||
0xa9, 0x67, 0xaf, 0xb4, 0xaf, 0xa7, 0x78, 0xb4, 0xa5, 0xac, 0x78, 0x7f,
|
||||
0x02, 0xad, 0xa5, 0xb2, 0x67, 0xa2, 0xb5, 0xb3, 0xaf, 0xa7, 0xee, 0xb2,
|
||||
0xb5, 0xb4, 0xa5, 0xb2, 0x7e, 0x8c, 0x39, 0xb4, 0xb8, 0xa5, 0xae, 0x67,
|
||||
0xb0, 0xa5, 0xb4, 0xb3, 0x27, 0xaf, 0xb4, 0x07, 0x9d, 0x19, 0xb2, 0xaf,
|
||||
0xa6, 0x7f, 0x05, 0x37, 0xb4, 0xb5, 0xb0, 0xae, 0xa9, 0x7f, 0x05, 0x28,
|
||||
0xb4, 0xb5, 0xb0, 0xae, 0xa9, 0x7f, 0x05, 0x2a, 0xb4, 0xb5, 0xb0, 0xae,
|
||||
0xa9, 0xe4, 0xae, 0xa5, 0x00, 0xff, 0xff, 0x47, 0xa2, 0xa1, 0xb4, 0x7f,
|
||||
0x0d, 0x30, 0xad, 0xa9, 0xa4, 0x7f, 0x0d, 0x23, 0xad, 0xa9, 0xa4, 0x67,
|
||||
0xac, 0xac, 0xa1, 0xa3, 0x00, 0x40, 0x80, 0xc0, 0xc1, 0x80, 0x00, 0x47,
|
||||
0x8c, 0x68, 0x8c, 0xdb, 0x67, 0x9b, 0x68, 0x9b, 0x50, 0x8c, 0x63, 0x8c,
|
||||
0x7f, 0x01, 0x51, 0x07, 0x88, 0x29, 0x84, 0x80, 0xc4, 0x80, 0x57, 0x71,
|
||||
0x07, 0x88, 0x14, 0xed, 0xa5, 0xad, 0xaf, 0xac, 0xed, 0xa5, 0xad, 0xa9,
|
||||
0xa8, 0xf2, 0xaf, 0xac, 0xaf, 0xa3, 0x71, 0x08, 0x88, 0xae, 0xa5, 0xac,
|
||||
0x68, 0x83, 0x08, 0x68, 0x9d, 0x08, 0x71, 0x07, 0x88, 0x60, 0x76, 0xb4,
|
||||
0xaf, 0xae, 0x76, 0x8d, 0x76, 0x8b, 0x51, 0x07, 0x88, 0x19, 0xb8, 0xa4,
|
||||
0xae, 0xb2, 0xf2, 0xb3, 0xb5, 0xf3, 0xa2, 0xa1, 0xee, 0xa7, 0xb3, 0xe4,
|
||||
0xae, 0xb2, 0xeb, 0xa5, 0xa5, 0xb0, 0x51, 0x07, 0x88, 0x39, 0x81, 0xc1,
|
||||
0x4f, 0x7f, 0x0f, 0x2f, 0x00, 0x51, 0x06, 0x88, 0x29, 0xc2, 0x0c, 0x82,
|
||||
0x57, 0x8c, 0x6a, 0x8c, 0x42, 0xae, 0xa5, 0xa8, 0xb4, 0x60, 0xae, 0xa5,
|
||||
0xa8, 0xb4, 0x4f, 0x7e, 0x1e, 0x35, 0x8c, 0x27, 0x51, 0x07, 0x88, 0x09,
|
||||
0x8b, 0xfe, 0xe4, 0xaf, 0xad, 0xf2, 0xaf, 0xe4, 0xae, 0xa1, 0xdc, 0xde,
|
||||
0x9c, 0xdd, 0x9c, 0xde, 0xdd, 0x9e, 0xc3, 0xdd, 0xcf, 0xca, 0xcd, 0xcb,
|
||||
0x00, 0x47, 0x9d, 0xad, 0xa5, 0xad, 0xaf, 0xac, 0x76, 0x9d, 0xad, 0xa5,
|
||||
0xad, 0xa9, 0xa8, 0xe6, 0xa6, 0xaf, 0x60, 0x8c, 0x20, 0xaf, 0xb4, 0xb5,
|
||||
0xa1, 0xf2, 0xac, 0xa3, 0xf2, 0xa3, 0xb3, 0x60, 0x8c, 0x20, 0xac, 0xa5,
|
||||
0xa4, 0xee, 0xb5, 0xb2, 0x60, 0xae, 0xb5, 0xb2, 0xf4, 0xb3, 0xa9, 0xac,
|
||||
0x60, 0x8c, 0x20, 0xb4, 0xb3, 0xa9, 0xac, 0x7a, 0x7e, 0x9a, 0x22, 0x20,
|
||||
0x00, 0x60, 0x03, 0xbf, 0x60, 0x03, 0xbf, 0x1f, 0x20, 0xb1, 0xe7, 0xe8,
|
||||
0xe8, 0xb5, 0x4f, 0x85, 0xda, 0xb5, 0x77, 0x85, 0xdb, 0xb4, 0x4e, 0x98,
|
||||
0xd5, 0x76, 0xb0, 0x09, 0xb1, 0xda, 0x20, 0xc9, 0xe3, 0xc8, 0x4c, 0x0f,
|
||||
0xee, 0xa9, 0xff, 0x85, 0xd5, 0x60, 0xe8, 0xa9, 0x00, 0x95, 0x78, 0x95,
|
||||
0xa0, 0xb5, 0x77, 0x38, 0xf5, 0x4f, 0x95, 0x50, 0x4c, 0x23, 0xe8, 0xff,
|
||||
0x20, 0x15, 0xe7, 0xa5, 0xcf, 0xd0, 0x28, 0xa5, 0xce, 0x60, 0x20, 0x34,
|
||||
0xee, 0xa4, 0xc8, 0xc9, 0x30, 0xb0, 0x21, 0xc0, 0x28, 0xb0, 0x1d, 0x60,
|
||||
0xea, 0xea, 0x20, 0x34, 0xee, 0x60, 0xea, 0x8a, 0xa2, 0x01, 0xb4, 0xce,
|
||||
0x94, 0x4c, 0xb4, 0x48, 0x94, 0xca, 0xca, 0xf0, 0xf5, 0xaa, 0x60, 0xa0,
|
||||
0x77, 0x4c, 0xe0, 0xe3, 0xa0, 0x7b, 0xd0, 0xf9, 0x20, 0x54, 0xe2, 0xa5,
|
||||
0xda, 0xd0, 0x07, 0xa5, 0xdb, 0xd0, 0x03, 0x4c, 0x7e, 0xe7, 0x06, 0xce,
|
||||
0x26, 0xcf, 0x26, 0xe6, 0x26, 0xe7, 0xa5, 0xe6, 0xc5, 0xda, 0xa5, 0xe7,
|
||||
0xe5, 0xdb, 0x90, 0x0a, 0x85, 0xe7, 0xa5, 0xe6, 0xe5, 0xda, 0x85, 0xe6,
|
||||
0xe6, 0xce, 0x88, 0xd0, 0xe1, 0x60, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x20, 0x15, 0xe7, 0x6c, 0xce, 0x00, 0xa5, 0x4c, 0xd0, 0x02, 0xc6, 0x4d,
|
||||
0xc6, 0x4c, 0xa5, 0x48, 0xd0, 0x02, 0xc6, 0x49, 0xc6, 0x48, 0xa0, 0x00,
|
||||
0xb1, 0x4c, 0x91, 0x48, 0xa5, 0xca, 0xc5, 0x4c, 0xa5, 0xcb, 0xe5, 0x4d,
|
||||
0x90, 0xe0, 0x4c, 0x53, 0xee, 0xc9, 0x28, 0xb0, 0x9b, 0xa8, 0xa5, 0xc8,
|
||||
0x60, 0xea, 0xea, 0x98, 0xaa, 0xa0, 0x6e, 0x20, 0xc4, 0xe3, 0x8a, 0xa8,
|
||||
0x20, 0xc4, 0xe3, 0xa0, 0x72, 0x4c, 0xc4, 0xe3, 0x20, 0x15, 0xe7, 0x06,
|
||||
0xce, 0x26, 0xcf, 0x30, 0xfa, 0xb0, 0xdc, 0xd0, 0x04, 0xc5, 0xce, 0xb0,
|
||||
0xd6, 0x60, 0x20, 0x15, 0xe7, 0xb1, 0xce, 0x94, 0x9f, 0x4c, 0x08, 0xe7,
|
||||
0x20, 0x34, 0xee, 0xa5, 0xce, 0x48, 0x20, 0x15, 0xe7, 0x68, 0x91, 0xce,
|
||||
0x60, 0xff, 0xff, 0xff, 0x20, 0x6c, 0xee, 0xa5, 0xce, 0x85, 0xe6, 0xa5,
|
||||
0xcf, 0x85, 0xe7, 0x4c, 0x44, 0xe2, 0x20, 0xe4, 0xee, 0x4c, 0x34, 0xe1,
|
||||
0x20, 0xe4, 0xee, 0xb4, 0x78, 0xb5, 0x50, 0x69, 0xfe, 0xb0, 0x01, 0x88,
|
||||
0x85, 0xda, 0x84, 0xdb, 0x18, 0x65, 0xce, 0x95, 0x50, 0x98, 0x65, 0xcf,
|
||||
0x95, 0x78, 0xa0, 0x00, 0xb5, 0x50, 0xd1, 0xda, 0xc8, 0xb5, 0x78, 0xf1,
|
||||
0xda, 0xb0, 0x80, 0x4c, 0x23, 0xe8, 0x20, 0x15, 0xe7, 0xa5, 0x4e, 0x20,
|
||||
0x08, 0xe7, 0xa5, 0x4f, 0xd0, 0x04, 0xc5, 0x4e, 0x69, 0x00, 0x29, 0x7f,
|
||||
0x85, 0x4f, 0x95, 0xa0, 0xa0, 0x11, 0xa5, 0x4f, 0x0a, 0x18, 0x69, 0x40,
|
||||
0x0a, 0x26, 0x4e, 0x26, 0x4f, 0x88, 0xd0, 0xf2, 0xa5, 0xce, 0x20, 0x08,
|
||||
0xe7, 0xa5, 0xcf, 0x95, 0xa0, 0x4c, 0x7a, 0xe2, 0x20, 0x15, 0xe7, 0xa4,
|
||||
0xce, 0xc4, 0x4c, 0xa5, 0xcf, 0xe5, 0x4d, 0x90, 0x1f, 0x84, 0x48, 0xa5,
|
||||
0xcf, 0x85, 0x49, 0x4c, 0xb6, 0xee, 0x20, 0x15, 0xe7, 0xa4, 0xce, 0xc4,
|
||||
0xca, 0xa5, 0xcf, 0xe5, 0xcb, 0xb0, 0x09, 0x84, 0x4a, 0xa5, 0xcf, 0x85,
|
||||
0x4b, 0x4c, 0xb7, 0xe5, 0x4c, 0xcb, 0xee, 0xea, 0xea, 0xea, 0xea, 0x20,
|
||||
0xc9, 0xef, 0x20, 0x71, 0xe1, 0x4c, 0xbf, 0xef, 0x20, 0x03, 0xee, 0xa9,
|
||||
0xff, 0x85, 0xc8, 0xa9, 0x74, 0x8d, 0x00, 0x02, 0x60, 0x20, 0x36, 0xe7,
|
||||
0xe8, 0x20, 0x36, 0xe7, 0xb5, 0x50, 0x60, 0xa9, 0x00, 0x85, 0x4a, 0x85,
|
||||
0x4c, 0xa9, 0x08, 0x85, 0x4b, 0xa9, 0x10, 0x85, 0x4d, 0x4c, 0xad, 0xe5,
|
||||
0xd5, 0x78, 0xd0, 0x01, 0x18, 0x4c, 0x02, 0xe1, 0x20, 0xb7, 0xe5, 0x4c,
|
||||
0x36, 0xe8, 0x20, 0xb7, 0xe5, 0x4c, 0x5b, 0xe8, 0xe0, 0x80, 0xd0, 0x01,
|
||||
0x88, 0x4c, 0x0c, 0xe0, 0xa9, 0x03, 0x85, 0xf8, 0xa9, 0x20, 0x85, 0xff,
|
||||
0xa9, 0x7c, 0x85, 0xf9, 0xa2, 0x1b, 0xbd, 0x67, 0xfd, 0x20, 0xef, 0xff,
|
||||
0xca, 0xd0, 0xf7, 0xca, 0x9a, 0x20, 0x71, 0xf0, 0xd8, 0xa9, 0x00, 0x85,
|
||||
0x5b, 0x20, 0xce, 0xf0, 0xa2, 0x0f, 0x86, 0x58, 0x86, 0x59, 0x20, 0xe5,
|
||||
0xfe, 0xa9, 0x3f, 0x20, 0xef, 0xff, 0x20, 0xe0, 0xfe, 0x20, 0xea, 0xfe,
|
||||
0xc9, 0x08, 0xf0, 0xe0, 0xc9, 0x0d, 0xf0, 0x08, 0x20, 0xef, 0xff, 0x95,
|
||||
0x00, 0xe8, 0xd0, 0xed, 0xa5, 0x0f, 0xf0, 0xd0, 0xa5, 0x10, 0xf0, 0x04,
|
||||
0xc9, 0x20, 0xd0, 0x0c, 0xa2, 0x0d, 0xbd, 0x27, 0xfd, 0xc5, 0x0f, 0xf0,
|
||||
0x0e, 0xca, 0xd0, 0xf6, 0x48, 0x48, 0xa0, 0x03, 0x68, 0x68, 0x20, 0x69,
|
||||
0xf4, 0xd0, 0xb1, 0x20, 0xd6, 0xf0, 0x4c, 0x1c, 0xf0, 0xa9, 0x00, 0xa8,
|
||||
0x85, 0xfe, 0x91, 0xfe, 0xa5, 0xff, 0x85, 0xfd, 0xa9, 0x00, 0x85, 0xfa,
|
||||
0x85, 0xfb, 0x85, 0xfc, 0x60, 0x20, 0x71, 0xf0, 0xa5, 0x11, 0xd0, 0x02,
|
||||
0xa9, 0x01, 0x91, 0xfe, 0x60, 0x20, 0xab, 0xf0, 0xf0, 0xcc, 0x20, 0xe5,
|
||||
0xfe, 0xa5, 0x3f, 0xa6, 0x3e, 0x4c, 0x67, 0xfb, 0x20, 0xab, 0xf0, 0xf0,
|
||||
0xbd, 0x20, 0xe5, 0xfe, 0x6c, 0x3e, 0x00, 0xa2, 0x02, 0xb5, 0x0f, 0xf0,
|
||||
0x08, 0x48, 0x20, 0xd3, 0xf7, 0x68, 0xe8, 0xf0, 0xab, 0x60, 0xa5, 0xf5,
|
||||
0x85, 0x3e, 0xa5, 0xf6, 0x85, 0x3f, 0x60, 0xa5, 0x3e, 0x85, 0xf5, 0xa5,
|
||||
0x3f, 0x85, 0xf6, 0x60, 0xa9, 0x20, 0xa2, 0x27, 0x95, 0xff, 0xca, 0xd0,
|
||||
0xfb, 0x60, 0xbd, 0x34, 0xfd, 0x48, 0xbd, 0x41, 0xfd, 0x48, 0x60, 0x20,
|
||||
0x71, 0xf0, 0x4c, 0x58, 0xf1, 0x20, 0x78, 0xf0, 0x20, 0x1d, 0xf1, 0xf0,
|
||||
0x03, 0x20, 0x53, 0xf2, 0xa0, 0x00, 0xb1, 0xfc, 0xf0, 0x0e, 0x20, 0x72,
|
||||
0xf2, 0x20, 0xdc, 0xf4, 0xad, 0x11, 0xd0, 0x10, 0xef, 0xad, 0x10, 0xd0,
|
||||
0x60, 0x20, 0x4f, 0xf2, 0x20, 0xe5, 0xfe, 0xa2, 0x04, 0xb5, 0xfb, 0x20,
|
||||
0xdc, 0xff, 0xe0, 0x03, 0xd0, 0x03, 0x20, 0xb9, 0xfe, 0xca, 0xd0, 0xf1,
|
||||
0x60, 0xa0, 0x00, 0x84, 0x30, 0xa2, 0x01, 0xb5, 0x0f, 0xf0, 0x25, 0xc9,
|
||||
0x20, 0xf0, 0x07, 0xc9, 0x24, 0xf0, 0x03, 0xe8, 0xd0, 0xf1, 0xe6, 0x30,
|
||||
0xa9, 0x24, 0x95, 0x0f, 0x20, 0x5b, 0xf9, 0xe8, 0xf0, 0x5f, 0xa5, 0x3e,
|
||||
0x99, 0x54, 0x00, 0xc8, 0xa5, 0x3f, 0x99, 0x54, 0x00, 0xc8, 0xd0, 0xd7,
|
||||
0xa4, 0x30, 0x60, 0x20, 0x1d, 0xf1, 0x88, 0xd0, 0x48, 0x20, 0xc7, 0xf1,
|
||||
0x20, 0x1d, 0xf1, 0xe8, 0xf0, 0x3f, 0x98, 0xd0, 0x06, 0x20, 0x4f, 0xf2,
|
||||
0x18, 0x90, 0x03, 0x20, 0x53, 0xf2, 0x20, 0xde, 0xf2, 0xe0, 0xff, 0xf0,
|
||||
0xab, 0x86, 0x2f, 0xa5, 0xfd, 0x85, 0x51, 0x85, 0x53, 0xa5, 0xfc, 0x85,
|
||||
0x50, 0x18, 0x65, 0x2f, 0x85, 0x52, 0x90, 0x02, 0xe6, 0x53, 0x20, 0xa0,
|
||||
0xf1, 0x20, 0x25, 0xf2, 0xa0, 0x00, 0xb9, 0x00, 0x00, 0x91, 0xfc, 0xc8,
|
||||
0xc4, 0x2f, 0xd0, 0xf6, 0x20, 0xdc, 0xf4, 0xd0, 0xcd, 0x4c, 0x62, 0xf0,
|
||||
0xa2, 0xfc, 0xb5, 0xfe, 0x48, 0xe8, 0xd0, 0xfa, 0x20, 0x4f, 0xf2, 0x38,
|
||||
0xa5, 0xfc, 0xe5, 0x50, 0x85, 0x54, 0xa5, 0xfd, 0xe5, 0x51, 0x85, 0x55,
|
||||
0xe6, 0x54, 0xd0, 0x02, 0xe6, 0x55, 0xa2, 0x04, 0x68, 0x95, 0xf9, 0xca,
|
||||
0xd0, 0xfa, 0x60, 0x20, 0x1d, 0xf1, 0xf0, 0xd1, 0x84, 0x30, 0x20, 0x53,
|
||||
0xf2, 0xe0, 0xff, 0xf0, 0xc8, 0xa5, 0xfc, 0x85, 0x52, 0xa5, 0xfd, 0x85,
|
||||
0x53, 0xa5, 0x30, 0x4a, 0xf0, 0x0c, 0xa6, 0x57, 0xa4, 0x56, 0xe4, 0x55,
|
||||
0xd0, 0x02, 0xc4, 0x54, 0x90, 0xaf, 0xc8, 0xd0, 0x01, 0xe8, 0x86, 0x55,
|
||||
0x84, 0x54, 0x20, 0x53, 0xf2, 0xa5, 0xfc, 0x85, 0x50, 0xa5, 0xfd, 0x85,
|
||||
0x51, 0x20, 0xa0, 0xf1, 0xa0, 0x00, 0xa6, 0x55, 0xf0, 0x0e, 0xb1, 0x50,
|
||||
0x91, 0x52, 0xc8, 0xd0, 0xf9, 0xe6, 0x51, 0xe6, 0x53, 0xca, 0xd0, 0xf2,
|
||||
0xa6, 0x54, 0xf0, 0x08, 0xb1, 0x50, 0x91, 0x52, 0xc8, 0xca, 0xd0, 0xf8,
|
||||
0x60, 0xa6, 0x55, 0x18, 0x8a, 0x65, 0x51, 0x85, 0x51, 0x18, 0x8a, 0x65,
|
||||
0x53, 0x85, 0x53, 0xe8, 0xa4, 0x54, 0xf0, 0x0e, 0x88, 0xf0, 0x07, 0xb1,
|
||||
0x50, 0x91, 0x52, 0x88, 0xd0, 0xf9, 0xb1, 0x50, 0x91, 0x52, 0x88, 0xc6,
|
||||
0x51, 0xc6, 0x53, 0xca, 0xd0, 0xed, 0x60, 0xa9, 0xff, 0x85, 0x55, 0x20,
|
||||
0x78, 0xf0, 0xa4, 0x54, 0xc4, 0xfa, 0xd0, 0x06, 0xa6, 0x55, 0xe4, 0xfb,
|
||||
0xf0, 0x51, 0xa0, 0xff, 0xc8, 0xb1, 0xfc, 0xd0, 0xfb, 0x98, 0xf0, 0x45,
|
||||
0xc8, 0x20, 0xdc, 0xf4, 0xd0, 0xe4, 0x20, 0xe5, 0xfe, 0x86, 0x2f, 0x20,
|
||||
0xee, 0xf3, 0xc8, 0x20, 0xd6, 0xfe, 0xa2, 0x00, 0xb5, 0x04, 0xf0, 0x06,
|
||||
0x20, 0xef, 0xff, 0xe8, 0xd0, 0xf6, 0xa6, 0x2f, 0x60, 0x20, 0xea, 0xfe,
|
||||
0xc9, 0x09, 0xd0, 0x02, 0xa9, 0x20, 0xc9, 0x20, 0x10, 0x1a, 0xa8, 0x68,
|
||||
0x68, 0x68, 0x68, 0xc0, 0x08, 0xf0, 0x3b, 0xc0, 0x0d, 0xd0, 0x0a, 0xe0,
|
||||
0x04, 0xf0, 0x29, 0xa9, 0x00, 0x95, 0x00, 0xf0, 0x5c, 0xa2, 0xff, 0x60,
|
||||
0xe0, 0x27, 0x10, 0x1a, 0xc9, 0x5e, 0x10, 0x16, 0x38, 0x60, 0xc9, 0x2e,
|
||||
0xf0, 0xfa, 0xc9, 0x30, 0x30, 0x0c, 0xc9, 0x3a, 0x30, 0xf2, 0xc9, 0x41,
|
||||
0x30, 0x04, 0xc9, 0x5b, 0x30, 0xea, 0x18, 0x60, 0xa9, 0x02, 0xaa, 0x85,
|
||||
0x00, 0xa9, 0x00, 0x85, 0x01, 0x60, 0x20, 0xcc, 0xf0, 0xa9, 0x00, 0x85,
|
||||
0x1d, 0x20, 0xe5, 0xfe, 0x20, 0xd6, 0xfe, 0xa2, 0x04, 0xa9, 0x0a, 0x20,
|
||||
0x9c, 0xf3, 0x20, 0xc4, 0xf3, 0xa5, 0x04, 0xc9, 0x3b, 0xf0, 0x0d, 0xa9,
|
||||
0x0e, 0x20, 0x9c, 0xf3, 0x20, 0xc4, 0xf3, 0xa9, 0x1d, 0x20, 0x9c, 0xf3,
|
||||
0xa9, 0x00, 0x20, 0x9c, 0xf3, 0xa2, 0x00, 0x86, 0x51, 0xa9, 0x20, 0x85,
|
||||
0x55, 0xa9, 0x04, 0x85, 0x50, 0xa9, 0x01, 0x85, 0x54, 0x20, 0xd7, 0xf3,
|
||||
0xa4, 0x04, 0xc0, 0x3b, 0xd0, 0x04, 0xa9, 0x0b, 0xd0, 0x5f, 0x8a, 0x48,
|
||||
0x18, 0x66, 0x56, 0xa2, 0x03, 0x38, 0xb5, 0x0a, 0xe9, 0x40, 0xa0, 0x05,
|
||||
0x4a, 0x66, 0x56, 0x66, 0x57, 0x88, 0xd0, 0xf8, 0xca, 0xd0, 0xee, 0xa2,
|
||||
0x38, 0xbd, 0xe8, 0xfb, 0xc5, 0x56, 0xd0, 0x07, 0xbd, 0x20, 0xfc, 0xc5,
|
||||
0x57, 0xf0, 0x03, 0xca, 0xd0, 0xef, 0xca, 0x8a, 0xc9, 0xff, 0xd0, 0x19,
|
||||
0xa5, 0x0b, 0xc9, 0x2e, 0xd0, 0x0c, 0xa2, 0x05, 0xa5, 0x0c, 0xdd, 0x4e,
|
||||
0xfd, 0xf0, 0x09, 0xca, 0xd0, 0xf8, 0x68, 0xa0, 0x01, 0x4c, 0x69, 0xf4,
|
||||
0xca, 0xa8, 0xc8, 0x68, 0xaa, 0x94, 0x00, 0xe8, 0xa9, 0x0f, 0x85, 0x50,
|
||||
0x20, 0xd7, 0xf3, 0x86, 0x2f, 0xe6, 0x2f, 0xa9, 0x1d, 0x85, 0x50, 0xa9,
|
||||
0x00, 0x85, 0x54, 0x85, 0x55, 0x20, 0xd7, 0xf3, 0xe4, 0x2f, 0xd0, 0x03,
|
||||
0xca, 0x95, 0xff, 0x60, 0x85, 0x54, 0x20, 0x8d, 0xf2, 0x90, 0xfb, 0x20,
|
||||
0xef, 0xff, 0x95, 0x00, 0xe8, 0xc9, 0x20, 0xf0, 0x05, 0xe4, 0x54, 0xd0,
|
||||
0xed, 0x60, 0xa5, 0x54, 0xf0, 0xe8, 0xe4, 0x54, 0xf0, 0xf7, 0xa9, 0x20,
|
||||
0x95, 0x00, 0x20, 0xef, 0xff, 0xe8, 0xd0, 0xee, 0xb5, 0xff, 0xc9, 0x20,
|
||||
0xf0, 0x07, 0x20, 0x8d, 0xf2, 0xc9, 0x20, 0xd0, 0xf9, 0x95, 0x00, 0xe8,
|
||||
0x4c, 0xef, 0xff, 0xa0, 0x00, 0xb1, 0x50, 0xf0, 0x0b, 0xc5, 0x55, 0xf0,
|
||||
0x07, 0x95, 0x00, 0xe8, 0xe6, 0x50, 0xd0, 0xf1, 0xa5, 0x54, 0x95, 0x00,
|
||||
0xe8, 0x60, 0x20, 0xcc, 0xf0, 0xa0, 0x00, 0xa2, 0x04, 0xb1, 0xfc, 0xf0,
|
||||
0x4d, 0xc9, 0x02, 0xd0, 0x05, 0xc8, 0xa9, 0x00, 0xf0, 0x46, 0xc9, 0x01,
|
||||
0xf0, 0x06, 0x95, 0x00, 0xe8, 0xc8, 0xd0, 0xe9, 0xa5, 0x04, 0xc9, 0x3b,
|
||||
0xd0, 0x04, 0xa2, 0x0b, 0xd0, 0x2d, 0xc8, 0xb1, 0xfc, 0xaa, 0xca, 0x86,
|
||||
0x3c, 0xe0, 0x38, 0x10, 0x09, 0x98, 0x48, 0x20, 0x99, 0xfa, 0x68, 0xa8,
|
||||
0xd0, 0x06, 0x86, 0x0c, 0xa9, 0x2e, 0x85, 0x0b, 0xc8, 0xa2, 0x0f, 0xb1,
|
||||
0xfc, 0xf0, 0x11, 0xc9, 0x01, 0xd0, 0x05, 0xc8, 0xa2, 0x1d, 0xd0, 0xf3,
|
||||
0x95, 0x00, 0xe8, 0xc8, 0xd0, 0xed, 0xa2, 0xfe, 0x95, 0x00, 0x60, 0x20,
|
||||
0x94, 0xf4, 0x20, 0xe5, 0xfe, 0x20, 0xf8, 0xf5, 0x20, 0xb8, 0xf4, 0xe8,
|
||||
0xf0, 0x0f, 0xe0, 0xff, 0xd0, 0xf6, 0xe6, 0x58, 0x20, 0x10, 0xf6, 0xe8,
|
||||
0xf0, 0x03, 0x4c, 0xf8, 0xf5, 0x20, 0xe5, 0xfe, 0xa2, 0x05, 0xbd, 0x53,
|
||||
0xfd, 0x20, 0xef, 0xff, 0xca, 0xd0, 0xf7, 0x98, 0x18, 0x8a, 0x69, 0x03,
|
||||
0x88, 0xd0, 0xfb, 0xa8, 0xa2, 0x03, 0xb9, 0x56, 0xfd, 0x20, 0xef, 0xff,
|
||||
0xc8, 0xca, 0xd0, 0xf6, 0xca, 0xa5, 0x59, 0xd0, 0x26, 0x4c, 0x72, 0xf2,
|
||||
0x20, 0x78, 0xf0, 0x85, 0x58, 0x85, 0xeb, 0x85, 0xe9, 0x85, 0xf5, 0xa5,
|
||||
0xf8, 0x85, 0xf6, 0x20, 0xeb, 0xf5, 0x86, 0xea, 0xa9, 0x00, 0x85, 0x2b,
|
||||
0x85, 0x29, 0x85, 0x46, 0xa4, 0xf9, 0xc8, 0x84, 0x2a, 0x84, 0x47, 0x60,
|
||||
0x20, 0xee, 0xf3, 0xe0, 0xfe, 0xf0, 0x1d, 0xe0, 0x04, 0xf0, 0x18, 0xa9,
|
||||
0x00, 0x85, 0x59, 0x85, 0x58, 0x85, 0x5a, 0x20, 0x44, 0xf5, 0xe0, 0xff,
|
||||
0xf0, 0x1d, 0xa0, 0x00, 0xb1, 0xfc, 0xf0, 0x03, 0xc8, 0xd0, 0xf9, 0xc8,
|
||||
0xa5, 0xfc, 0x84, 0x44, 0x18, 0x65, 0x44, 0x85, 0xfc, 0x90, 0x02, 0xe6,
|
||||
0xfd, 0xe6, 0xfa, 0xd0, 0x02, 0xe6, 0xfb, 0x60, 0xa4, 0x3c, 0xb9, 0x73,
|
||||
0xfc, 0xa6, 0x3d, 0x18, 0x7d, 0xab, 0xfc, 0xe0, 0x0b, 0xf0, 0x0e, 0xe0,
|
||||
0x02, 0xd0, 0x11, 0xc0, 0x28, 0x30, 0x0d, 0xc0, 0x30, 0xb0, 0x09, 0x69,
|
||||
0x08, 0xc0, 0x35, 0xd0, 0x03, 0x18, 0x69, 0x04, 0x20, 0x2f, 0xf5, 0xc9,
|
||||
0x00, 0xd0, 0x03, 0x20, 0x2f, 0xf5, 0x8a, 0xf0, 0xce, 0xca, 0xf0, 0xcb,
|
||||
0xa5, 0x3e, 0xe0, 0x08, 0x30, 0x05, 0x20, 0x2f, 0xf5, 0xa5, 0x3f, 0xa0,
|
||||
0x00, 0x91, 0xf5, 0xe6, 0xf5, 0xd0, 0x02, 0xe6, 0xf6, 0x60, 0x20, 0xa9,
|
||||
0xf6, 0xe0, 0xff, 0xd0, 0xaf, 0xa0, 0x02, 0x60, 0xa5, 0x04, 0xc9, 0x3b,
|
||||
0xf0, 0xa5, 0xa6, 0x0b, 0xe0, 0x2e, 0xd0, 0x0d, 0xa6, 0x0c, 0xe0, 0x4d,
|
||||
0xd0, 0x03, 0x4c, 0xb6, 0xf5, 0xe0, 0x3d, 0xf0, 0x47, 0xc9, 0x20, 0xf0,
|
||||
0x03, 0x20, 0xdf, 0xf8, 0xa5, 0x0b, 0xc9, 0x2e, 0xd0, 0xd0, 0xa2, 0x00,
|
||||
0xa5, 0x0c, 0xc9, 0x53, 0xf0, 0x19, 0x85, 0x58, 0x20, 0x7a, 0xf7, 0xe8,
|
||||
0xf0, 0x0c, 0xa5, 0x3e, 0xa6, 0x0c, 0xe0, 0x57, 0xf0, 0xa8, 0xa6, 0x3f,
|
||||
0xf0, 0xa9, 0xa0, 0x03, 0xa2, 0xff, 0x60, 0xb5, 0x0f, 0xc9, 0x27, 0xd0,
|
||||
0xf5, 0xe8, 0xb5, 0x0f, 0xf0, 0xf0, 0xc9, 0x27, 0xf0, 0x09, 0x20, 0x2f,
|
||||
0xf5, 0xe0, 0x0e, 0xd0, 0xf0, 0xf0, 0xe3, 0x60, 0x85, 0x58, 0x20, 0xc2,
|
||||
0xf2, 0x90, 0xdb, 0xa2, 0x00, 0x20, 0x7a, 0xf7, 0xe8, 0xf0, 0xd3, 0x4c,
|
||||
0xe2, 0xf8, 0x20, 0xc2, 0xf2, 0x90, 0xcb, 0xa0, 0x00, 0xa5, 0x0f, 0xf0,
|
||||
0x14, 0xc9, 0x20, 0xf0, 0x10, 0x20, 0xf6, 0xf5, 0xa2, 0x00, 0xa5, 0x0f,
|
||||
0x20, 0x5b, 0xf9, 0xe8, 0xf0, 0xb4, 0x20, 0xc3, 0xf0, 0x20, 0xdf, 0xf8,
|
||||
0xe0, 0xff, 0xf0, 0xc7, 0x20, 0x10, 0xf6, 0xe0, 0xff, 0xf0, 0xc0, 0x20,
|
||||
0xc4, 0xfe, 0xa9, 0x00, 0x20, 0xf6, 0xf5, 0xa2, 0x00, 0x86, 0xee, 0x86,
|
||||
0xec, 0xa6, 0xf9, 0x86, 0xed, 0x60, 0x85, 0x58, 0xa5, 0xf6, 0xa6, 0xf5,
|
||||
0xa4, 0x58, 0xf0, 0x0d, 0x48, 0x20, 0xb9, 0xfe, 0x68, 0xe0, 0x00, 0xd0,
|
||||
0x03, 0x38, 0xe9, 0x01, 0xca, 0x4c, 0x67, 0xfb, 0xa6, 0x2b, 0xf0, 0x72,
|
||||
0x86, 0x59, 0x86, 0x45, 0xa5, 0xf5, 0x48, 0xa5, 0xf6, 0x48, 0x20, 0xa8,
|
||||
0xf4, 0xa0, 0x00, 0xa5, 0x58, 0x85, 0x48, 0x84, 0x5a, 0xb1, 0x46, 0xc9,
|
||||
0x2e, 0xd0, 0x02, 0x85, 0x58, 0xb1, 0x46, 0x99, 0x1d, 0x00, 0xc8, 0xc0,
|
||||
0x06, 0xd0, 0xf6, 0xb1, 0x46, 0x85, 0xf5, 0xc8, 0xb1, 0x46, 0x85, 0xf6,
|
||||
0xc8, 0xb1, 0x46, 0x85, 0x54, 0x20, 0x7e, 0xf8, 0xe0, 0xff, 0xf0, 0x47,
|
||||
0xa5, 0x5a, 0xf0, 0x04, 0xa5, 0x54, 0x91, 0x50, 0x20, 0xc3, 0xf7, 0xa0,
|
||||
0x00, 0xb1, 0xf5, 0x29, 0x1f, 0xc9, 0x10, 0xf0, 0x22, 0x20, 0x33, 0xf5,
|
||||
0xa5, 0x3e, 0x20, 0x2a, 0xf5, 0x18, 0xa5, 0x46, 0x69, 0x09, 0x85, 0x46,
|
||||
0x90, 0x02, 0xe6, 0x47, 0xa5, 0x48, 0x85, 0x58, 0xc6, 0x45, 0xd0, 0xa1,
|
||||
0x68, 0x85, 0xf6, 0x68, 0x85, 0xf5, 0x60, 0x20, 0x62, 0xf7, 0xe0, 0xff,
|
||||
0xf0, 0x09, 0xa0, 0x01, 0xa5, 0x3e, 0x91, 0xf5, 0x4c, 0x6d, 0xf6, 0xa0,
|
||||
0x00, 0x20, 0xe0, 0xfe, 0xb1, 0x46, 0x20, 0xef, 0xff, 0xc8, 0xc0, 0x06,
|
||||
0xd0, 0xf6, 0x88, 0xd0, 0xd7, 0xa2, 0xff, 0x86, 0x3d, 0xa5, 0x3c, 0xa6,
|
||||
0x0f, 0xf0, 0x04, 0xe0, 0x20, 0xd0, 0x0e, 0xa2, 0x00, 0x20, 0x3d, 0xf7,
|
||||
0xe0, 0xff, 0xd0, 0x35, 0xa2, 0x01, 0x4c, 0x3d, 0xf7, 0xe0, 0x23, 0xf0,
|
||||
0x0e, 0xa2, 0x03, 0x20, 0x3d, 0xf7, 0xe0, 0xff, 0xf0, 0x24, 0xa5, 0x0f,
|
||||
0x4c, 0x4f, 0xf7, 0xc9, 0x2c, 0xf0, 0x71, 0xa2, 0x02, 0xc9, 0x35, 0xf0,
|
||||
0x07, 0x20, 0x3d, 0xf7, 0xe0, 0xff, 0xf0, 0x0d, 0x86, 0x3d, 0xca, 0x20,
|
||||
0x7a, 0xf7, 0xe8, 0xf0, 0x5b, 0xa5, 0x3f, 0xd0, 0x57, 0x60, 0xa2, 0x00,
|
||||
0xa5, 0x0f, 0xc9, 0x28, 0xd0, 0x01, 0xe8, 0x20, 0xd3, 0xf7, 0xe0, 0xff,
|
||||
0xf0, 0xef, 0x20, 0x9c, 0xf9, 0xe0, 0xff, 0xf0, 0xe8, 0x86, 0x3d, 0xe0,
|
||||
0x06, 0xd0, 0x0e, 0xa5, 0x3c, 0xc9, 0x28, 0x90, 0x08, 0xc9, 0x30, 0xb0,
|
||||
0x04, 0xa2, 0x0b, 0xd0, 0x28, 0xa0, 0x06, 0xb9, 0x15, 0xfd, 0xc5, 0x3c,
|
||||
0xd0, 0x0e, 0xbe, 0x1b, 0xfd, 0xe4, 0x3d, 0xf0, 0x18, 0xbe, 0x21, 0xfd,
|
||||
0xe4, 0x3d, 0xf0, 0x11, 0x88, 0xd0, 0xe8, 0xa6, 0x3d, 0xa5, 0x3c, 0xdd,
|
||||
0x59, 0xfc, 0x90, 0x08, 0xdd, 0x66, 0xfc, 0xb0, 0x03, 0x86, 0x3d, 0x60,
|
||||
0xa2, 0xff, 0x60, 0xa2, 0x00, 0x86, 0x3e, 0x86, 0x3f, 0xc9, 0x2a, 0xd0,
|
||||
0x06, 0x20, 0xba, 0xf0, 0x20, 0xfd, 0xf7, 0x20, 0xd3, 0xf7, 0x38, 0xa5,
|
||||
0x3e, 0xe5, 0xf5, 0x85, 0x3e, 0xa5, 0x3f, 0xe5, 0xf6, 0x85, 0x3f, 0xf0,
|
||||
0x04, 0xe6, 0x3f, 0xd0, 0xd7, 0xc6, 0x3e, 0xc6, 0x3e, 0x60, 0xb5, 0x0f,
|
||||
0xf0, 0xce, 0xc9, 0x27, 0xf0, 0x03, 0x4c, 0xd3, 0xf7, 0xe8, 0xa9, 0x00,
|
||||
0x85, 0x3f, 0xb5, 0x0f, 0x85, 0x3e, 0xe8, 0xb5, 0x0f, 0xc9, 0x27, 0xd0,
|
||||
0xb7, 0xe8, 0xb5, 0x0f, 0xf0, 0x7c, 0xc9, 0x20, 0xf0, 0x78, 0x48, 0xe8,
|
||||
0xb5, 0x0f, 0x20, 0x51, 0xfa, 0xe0, 0xff, 0xd0, 0x02, 0x68, 0x60, 0x85,
|
||||
0x54, 0x68, 0xc9, 0x2b, 0xf0, 0x09, 0xa5, 0x54, 0x18, 0x49, 0xff, 0x69,
|
||||
0x01, 0x85, 0x54, 0xa5, 0x5a, 0xf0, 0x04, 0xa5, 0x54, 0x91, 0x50, 0xa5,
|
||||
0x54, 0x10, 0x02, 0xc6, 0x3f, 0x18, 0x65, 0x3e, 0x85, 0x3e, 0x90, 0x02,
|
||||
0xe6, 0x3f, 0x60, 0x86, 0x56, 0xb5, 0x0f, 0xc9, 0x3c, 0xf0, 0x04, 0xc9,
|
||||
0x3e, 0xd0, 0x05, 0x85, 0x58, 0xe8, 0xb5, 0x0f, 0x20, 0xbe, 0xf2, 0xb0,
|
||||
0x09, 0x20, 0x5b, 0xf9, 0xe0, 0xff, 0xf0, 0x24, 0xd0, 0x0b, 0x86, 0x2f,
|
||||
0x20, 0x60, 0xf8, 0xe0, 0xff, 0xf0, 0x1b, 0xa6, 0x2f, 0xe8, 0xb5, 0x0f,
|
||||
0x20, 0xbe, 0xf2, 0xb0, 0xf8, 0xc9, 0x2b, 0xf0, 0x04, 0xc9, 0x2d, 0xd0,
|
||||
0x0a, 0x20, 0x9e, 0xf7, 0xe0, 0xff, 0xd0, 0xe9, 0xa0, 0x03, 0x60, 0xa0,
|
||||
0x00, 0xa5, 0x58, 0xc9, 0x3c, 0xf0, 0x08, 0xc9, 0x3e, 0xd0, 0x06, 0xa5,
|
||||
0x3f, 0x85, 0x3e, 0x84, 0x3f, 0xb5, 0x0f, 0x99, 0x1d, 0x00, 0xf0, 0x0a,
|
||||
0xc9, 0x20, 0xf0, 0x06, 0xe8, 0xc8, 0xe0, 0x0e, 0xd0, 0xef, 0xa9, 0x00,
|
||||
0x99, 0x1d, 0x00, 0xa4, 0x56, 0xa9, 0x24, 0x99, 0x0f, 0x00, 0xc8, 0xa5,
|
||||
0x3f, 0xf0, 0x03, 0x20, 0x82, 0xfa, 0xa5, 0x3e, 0x20, 0x82, 0xfa, 0xa2,
|
||||
0x00, 0xb5, 0x1d, 0x99, 0x0f, 0x00, 0xf0, 0xba, 0xe8, 0xc8, 0xd0, 0xf5,
|
||||
0xa0, 0x00, 0xc0, 0x06, 0xf0, 0x18, 0x20, 0xbe, 0xf2, 0x90, 0x09, 0x99,
|
||||
0x1d, 0x00, 0xe8, 0xb5, 0x0f, 0xc8, 0xd0, 0xee, 0xa9, 0x20, 0x99, 0x1d,
|
||||
0x00, 0xc8, 0xc0, 0x06, 0xd0, 0xf8, 0xa9, 0x1d, 0x85, 0x42, 0xa2, 0x00,
|
||||
0x86, 0x43, 0xa9, 0x06, 0x85, 0x2e, 0xa9, 0x08, 0x85, 0x2d, 0xa5, 0x1d,
|
||||
0xc9, 0x2e, 0xf0, 0x11, 0x20, 0x8a, 0xf9, 0xf0, 0x13, 0xa0, 0x06, 0xb1,
|
||||
0x40, 0x85, 0x3e, 0xc8, 0xb1, 0x40, 0x85, 0x3f, 0x60, 0xa2, 0x03, 0x20,
|
||||
0x8a, 0xf9, 0xd0, 0xed, 0xa5, 0x58, 0xd0, 0x4f, 0x20, 0xba, 0xf0, 0xa5,
|
||||
0x2a, 0x85, 0x51, 0xa5, 0x29, 0xa6, 0x2b, 0xf0, 0x0a, 0x18, 0x69, 0x09,
|
||||
0x90, 0x02, 0xe6, 0x51, 0xca, 0xd0, 0xf6, 0x85, 0x50, 0xe6, 0x2b, 0xa5,
|
||||
0x2b, 0xc9, 0x55, 0x10, 0x32, 0xa9, 0x1d, 0x85, 0x5a, 0x85, 0x52, 0x20,
|
||||
0x43, 0xf9, 0xc8, 0x8a, 0x91, 0x50, 0x60, 0x20, 0xba, 0xf0, 0xa9, 0x04,
|
||||
0x85, 0x52, 0x85, 0x42, 0xa2, 0x00, 0x86, 0x43, 0xa9, 0x06, 0x85, 0x2e,
|
||||
0xa5, 0x04, 0xc9, 0x2e, 0xd0, 0x02, 0xa2, 0x03, 0x20, 0x8a, 0xf9, 0xf0,
|
||||
0x0b, 0x68, 0x68, 0xa0, 0x05, 0xd0, 0x02, 0xa0, 0x04, 0xa2, 0xff, 0x60,
|
||||
0xa6, 0x04, 0xe0, 0x2e, 0xf0, 0x17, 0x38, 0xa5, 0xe9, 0xe9, 0x08, 0xb0,
|
||||
0x02, 0xc6, 0xea, 0x85, 0xe9, 0xe6, 0xeb, 0xf0, 0xe6, 0x85, 0x50, 0xa5,
|
||||
0xea, 0x85, 0x51, 0xd0, 0x1e, 0xa5, 0xed, 0x85, 0x51, 0xa5, 0xec, 0xa6,
|
||||
0xee, 0xf0, 0x0a, 0x18, 0x69, 0x08, 0x90, 0x02, 0xe6, 0x51, 0xca, 0xd0,
|
||||
0xf6, 0x85, 0x50, 0xe6, 0xee, 0xa5, 0xee, 0xc9, 0x20, 0x10, 0xc0, 0xa0,
|
||||
0x00, 0x84, 0x53, 0xa2, 0x06, 0xb1, 0x52, 0x91, 0x50, 0xc8, 0xca, 0xd0,
|
||||
0xf8, 0xa5, 0x3e, 0x91, 0x50, 0xc8, 0xa5, 0x3f, 0x91, 0x50, 0x60, 0xc9,
|
||||
0x24, 0xd0, 0xa6, 0x84, 0x1e, 0x20, 0x18, 0xfa, 0xe0, 0xff, 0xf0, 0x9d,
|
||||
0x85, 0x1d, 0xa0, 0x00, 0x84, 0x3f, 0xca, 0xca, 0xb5, 0x0f, 0xc9, 0x24,
|
||||
0xf0, 0x06, 0x20, 0x51, 0xfa, 0x38, 0xb0, 0x03, 0x20, 0x6d, 0xfa, 0x99,
|
||||
0x3e, 0x00, 0xc8, 0xc4, 0x1d, 0xd0, 0xe7, 0xa4, 0x1e, 0x60, 0xb5, 0xe9,
|
||||
0x85, 0x40, 0xb5, 0xea, 0x85, 0x41, 0xb5, 0xeb, 0x85, 0x2c, 0x20, 0x2c,
|
||||
0xfa, 0xe0, 0xff, 0x60, 0xa2, 0x00, 0xa9, 0x04, 0xb4, 0x0f, 0xc0, 0x28,
|
||||
0xd0, 0x04, 0x18, 0x69, 0x03, 0xe8, 0x48, 0x20, 0x18, 0xfa, 0xa8, 0xca,
|
||||
0xa5, 0x3c, 0xc9, 0x21, 0xf0, 0x04, 0xc9, 0x23, 0xd0, 0x01, 0xc8, 0x68,
|
||||
0xe8, 0xf0, 0x56, 0x88, 0xf0, 0x03, 0x18, 0x69, 0x06, 0xa8, 0xb5, 0x0f,
|
||||
0xf0, 0x04, 0xc9, 0x20, 0xd0, 0x14, 0xa5, 0x0f, 0xc9, 0x28, 0xf0, 0x41,
|
||||
0xc0, 0x0f, 0x10, 0x3d, 0xc0, 0x07, 0xf0, 0x39, 0x30, 0x01, 0x88, 0x98,
|
||||
0xaa, 0x60, 0xc9, 0x29, 0xd0, 0x0b, 0xa9, 0x20, 0x85, 0x0f, 0xe8, 0xb5,
|
||||
0x0f, 0xc9, 0x2c, 0xd0, 0xd5, 0xb5, 0x0f, 0xc9, 0x2c, 0xd0, 0x1e, 0xe8,
|
||||
0xb5, 0x0f, 0xc9, 0x58, 0xf0, 0x0d, 0xc9, 0x59, 0xd0, 0x13, 0xa5, 0x0f,
|
||||
0xc9, 0x28, 0xf0, 0x0d, 0x95, 0x0d, 0xc8, 0xc8, 0xb5, 0x0d, 0xc9, 0x29,
|
||||
0xf0, 0x03, 0xe8, 0xd0, 0xb1, 0xa2, 0xff, 0x60, 0xa0, 0x00, 0xe8, 0xc8,
|
||||
0x20, 0x6e, 0xfa, 0xc9, 0xff, 0xd0, 0xf7, 0x98, 0x4a, 0xf0, 0xee, 0xc9,
|
||||
0x03, 0xb0, 0xea, 0x60, 0xa5, 0x2c, 0xf0, 0xe5, 0xa2, 0x00, 0xa0, 0xff,
|
||||
0xc8, 0xc4, 0x2e, 0xf0, 0xde, 0xb1, 0x40, 0xd1, 0x42, 0xf0, 0xf5, 0xe8,
|
||||
0xe4, 0x2c, 0xf0, 0xd1, 0xa5, 0x40, 0x18, 0x65, 0x2d, 0x85, 0x40, 0x90,
|
||||
0xe5, 0xe6, 0x41, 0xb0, 0xe1, 0x20, 0x6e, 0xfa, 0xc9, 0xff, 0xf0, 0xbd,
|
||||
0x48, 0x20, 0x6d, 0xfa, 0xca, 0xc9, 0xff, 0xd0, 0x02, 0x68, 0x60, 0x85,
|
||||
0x44, 0x68, 0x0a, 0x0a, 0x0a, 0x0a, 0x65, 0x44, 0x60, 0xe8, 0xb5, 0x0f,
|
||||
0x49, 0x30, 0xc9, 0x0a, 0x90, 0x08, 0x69, 0x88, 0xc9, 0xfa, 0x90, 0x03,
|
||||
0x29, 0x0f, 0x60, 0xa9, 0xff, 0x60, 0x48, 0x20, 0xd6, 0xfb, 0x20, 0x8a,
|
||||
0xfa, 0x68, 0x29, 0x0f, 0x09, 0x30, 0xc9, 0x3a, 0x90, 0x02, 0x69, 0x06,
|
||||
0x99, 0x0f, 0x00, 0xc8, 0x60, 0xbd, 0xe9, 0xfb, 0x85, 0x56, 0xbd, 0x21,
|
||||
0xfc, 0x85, 0x57, 0xa2, 0x00, 0xa9, 0x00, 0xa0, 0x05, 0x06, 0x57, 0x26,
|
||||
0x56, 0x2a, 0x88, 0xd0, 0xf8, 0x69, 0x40, 0x95, 0x0b, 0xa4, 0x5b, 0xf0,
|
||||
0x03, 0x20, 0xef, 0xff, 0xe8, 0xe0, 0x03, 0xd0, 0xe4, 0x60, 0x20, 0xab,
|
||||
0xf0, 0xf0, 0x03, 0x20, 0xc3, 0xf0, 0x20, 0xdc, 0xfa, 0x20, 0x81, 0xfb,
|
||||
0x85, 0xf5, 0x84, 0xf6, 0xad, 0x11, 0xd0, 0x10, 0xf1, 0xad, 0x10, 0xd0,
|
||||
0x20, 0x6e, 0xfb, 0xa1, 0xf5, 0xa8, 0x4a, 0x90, 0x09, 0x6a, 0xb0, 0x14,
|
||||
0xc9, 0xa2, 0xf0, 0x10, 0x29, 0x87, 0x4a, 0xaa, 0xbd, 0xb8, 0xfc, 0x90,
|
||||
0x03, 0x20, 0xd6, 0xfb, 0x29, 0x0f, 0xd0, 0x04, 0xa0, 0x80, 0xa9, 0x00,
|
||||
0xaa, 0xbd, 0xfc, 0xfc, 0x85, 0x29, 0x29, 0x03, 0x85, 0x2a, 0x98, 0x20,
|
||||
0x90, 0xfb, 0xa0, 0x00, 0x48, 0xb1, 0xf5, 0x20, 0xdc, 0xff, 0xa2, 0x01,
|
||||
0x20, 0x7a, 0xfb, 0xc4, 0x2a, 0xc8, 0x90, 0xf1, 0xa2, 0x03, 0x86, 0x5b,
|
||||
0xc0, 0x04, 0x90, 0xf0, 0x68, 0xaa, 0x20, 0x99, 0xfa, 0x20, 0x78, 0xfb,
|
||||
0xa4, 0x2a, 0xa2, 0x06, 0xe0, 0x03, 0xf0, 0x1e, 0x06, 0x29, 0x90, 0x0e,
|
||||
0xbd, 0x09, 0xfd, 0x20, 0xef, 0xff, 0xbd, 0x0f, 0xfd, 0xf0, 0x03, 0x20,
|
||||
0xef, 0xff, 0xca, 0xd0, 0xe7, 0x86, 0x5b, 0x60, 0x88, 0x30, 0xe5, 0x20,
|
||||
0xdc, 0xff, 0xa5, 0x29, 0xc9, 0xe8, 0xb1, 0xf5, 0x90, 0xf2, 0x20, 0x84,
|
||||
0xfb, 0xaa, 0xe8, 0xd0, 0x01, 0xc8, 0x98, 0x20, 0xdc, 0xff, 0x8a, 0x4c,
|
||||
0xdc, 0xff, 0x20, 0xe5, 0xfe, 0xa5, 0xf6, 0xa6, 0xf5, 0x20, 0x67, 0xfb,
|
||||
0xa2, 0x03, 0x20, 0xe0, 0xfe, 0xca, 0xd0, 0xfa, 0x60, 0x38, 0xa5, 0x2a,
|
||||
0xa4, 0xf6, 0xaa, 0x10, 0x01, 0x88, 0x65, 0xf5, 0x90, 0x01, 0xc8, 0x60,
|
||||
0x85, 0x54, 0x29, 0x8f, 0xc9, 0x8a, 0xf0, 0x43, 0x0a, 0xc9, 0x10, 0xf0,
|
||||
0x37, 0xa5, 0x54, 0x0a, 0x69, 0x80, 0x2a, 0x0a, 0x29, 0x1f, 0x69, 0x20,
|
||||
0x48, 0xa5, 0x54, 0x29, 0x9f, 0xf0, 0x1b, 0x0a, 0xc9, 0x20, 0xf0, 0x10,
|
||||
0x29, 0x06, 0xd0, 0x2f, 0x68, 0x29, 0x07, 0xc9, 0x03, 0x10, 0x02, 0x69,
|
||||
0x02, 0x69, 0x1f, 0x60, 0x68, 0x29, 0x07, 0x69, 0x18, 0x60, 0x68, 0xaa,
|
||||
0xbd, 0xb0, 0xfb, 0x60, 0x16, 0x21, 0x17, 0x18, 0xa5, 0x54, 0x4a, 0x4a,
|
||||
0x4a, 0x4a, 0x60, 0x20, 0xd4, 0xfb, 0xc9, 0x0e, 0xd0, 0x02, 0x69, 0xfd,
|
||||
0x69, 0x08, 0x60, 0x68, 0x60, 0x82, 0x1b, 0x83, 0x99, 0x82, 0x1b, 0x83,
|
||||
0x99, 0x21, 0xa6, 0xa0, 0x1b, 0x4b, 0x1b, 0x4b, 0x99, 0xa6, 0xa6, 0xa0,
|
||||
0xa4, 0x21, 0x73, 0x14, 0x95, 0x95, 0x14, 0x13, 0x15, 0x15, 0x10, 0x10,
|
||||
0x13, 0x11, 0x54, 0x12, 0x53, 0x9d, 0x61, 0x1c, 0x1c, 0x7c, 0x0b, 0x2b,
|
||||
0x09, 0x9d, 0x61, 0x1b, 0x98, 0x0c, 0x93, 0x64, 0x93, 0x9d, 0x61, 0x21,
|
||||
0x4b, 0x20, 0x06, 0x20, 0x46, 0x02, 0x12, 0x02, 0x52, 0x72, 0x42, 0x72,
|
||||
0x2c, 0xb2, 0x08, 0xb0, 0x48, 0x02, 0x26, 0x70, 0xf0, 0x70, 0xe0, 0x96,
|
||||
0x12, 0x26, 0x18, 0x52, 0x86, 0xa6, 0xc6, 0xe6, 0x8a, 0x62, 0xe4, 0x68,
|
||||
0x60, 0x32, 0x32, 0x32, 0x30, 0x82, 0x88, 0xe4, 0x06, 0x02, 0x02, 0x60,
|
||||
0x86, 0xd8, 0xd8, 0xe4, 0xe4, 0x30, 0x30, 0x46, 0x86, 0x00, 0x30, 0x25,
|
||||
0x19, 0x24, 0x28, 0x34, 0x28, 0x28, 0x21, 0x28, 0x28, 0x23, 0x19, 0x34,
|
||||
0x30, 0x21, 0x38, 0x34, 0x36, 0x30, 0x30, 0x38, 0x34, 0x30, 0x24, 0x08,
|
||||
0x18, 0x28, 0x38, 0x48, 0x58, 0x68, 0x78, 0x88, 0x98, 0xa8, 0xb8, 0xc8,
|
||||
0xd8, 0xe8, 0xf8, 0x8a, 0x9a, 0xaa, 0xba, 0xca, 0xea, 0x00, 0x40, 0x60,
|
||||
0x10, 0x30, 0x50, 0x70, 0x90, 0xb0, 0xd0, 0xf0, 0x14, 0x20, 0x40, 0x80,
|
||||
0xa0, 0xc0, 0xe0, 0x01, 0x21, 0x41, 0x61, 0x81, 0xa1, 0xc1, 0xe1, 0x02,
|
||||
0x22, 0x42, 0x62, 0x82, 0xa2, 0xc2, 0xe2, 0x00, 0x08, 0x00, 0x00, 0x04,
|
||||
0x14, 0x14, 0x00, 0x10, 0x0c, 0x1c, 0x18, 0x2c, 0x04, 0x20, 0x54, 0x30,
|
||||
0x0d, 0x80, 0x04, 0x90, 0x03, 0x22, 0x54, 0x33, 0x0d, 0x80, 0x04, 0x90,
|
||||
0x04, 0x20, 0x54, 0x33, 0x0d, 0x80, 0x04, 0x90, 0x04, 0x20, 0x54, 0x3b,
|
||||
0x0d, 0x80, 0x04, 0x90, 0x00, 0x22, 0x44, 0x33, 0x0d, 0xc8, 0x44, 0x00,
|
||||
0x11, 0x22, 0x44, 0x33, 0x0d, 0xc8, 0x44, 0xa9, 0x01, 0x22, 0x44, 0x33,
|
||||
0x0d, 0x80, 0x04, 0x90, 0x01, 0x22, 0x44, 0x33, 0x0d, 0x80, 0x04, 0x90,
|
||||
0x26, 0x31, 0x87, 0x9a, 0x00, 0x21, 0x81, 0x82, 0x00, 0x00, 0x59, 0x4d,
|
||||
0x91, 0x92, 0x86, 0x4a, 0x85, 0x9d, 0x2c, 0x29, 0x2c, 0x23, 0x28, 0x24,
|
||||
0x59, 0x00, 0x58, 0x24, 0x24, 0x00, 0x22, 0x24, 0x25, 0x35, 0x36, 0x37,
|
||||
0x04, 0x05, 0x05, 0x02, 0x05, 0x05, 0x04, 0x05, 0x0a, 0x0b, 0x0a, 0x0a,
|
||||
0x4e, 0x4c, 0x58, 0x45, 0x4d, 0x52, 0x44, 0x49, 0x21, 0x24, 0x41, 0x56,
|
||||
0x50, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf0, 0xfa, 0xf1, 0xff, 0xff, 0xf4,
|
||||
0xf0, 0xf0, 0xde, 0xe4, 0xc6, 0x4e, 0x04, 0x9f, 0xc1, 0x57, 0x1a, 0x0e,
|
||||
0x4a, 0x90, 0x84, 0x42, 0x57, 0x53, 0x3d, 0x4d, 0x20, 0x3a, 0x52, 0x52,
|
||||
0x45, 0x4d, 0x4e, 0x45, 0x41, 0x44, 0x44, 0x53, 0x59, 0x4e, 0x4f, 0x56,
|
||||
0x46, 0x53, 0x59, 0x4d, 0x4e, 0x45, 0x53, 0x53, 0x45, 0x57, 0x20, 0x4e,
|
||||
0x45, 0x4b, 0x20, 0x59, 0x42, 0x20, 0x33, 0x2e, 0x31, 0x20, 0x52, 0x45,
|
||||
0x44, 0x41, 0x53, 0x55, 0x52, 0x4b, 0x0d, 0x50, 0x53, 0x59, 0x58, 0x41,
|
||||
0x4c, 0x48, 0x43, 0x5a, 0x49, 0x44, 0x42, 0x00, 0x56, 0x4e, 0x20, 0xe5,
|
||||
0xfe, 0x20, 0xb9, 0xfe, 0x20, 0xbe, 0xfe, 0xa0, 0x07, 0xd9, 0x82, 0xfd,
|
||||
0xf0, 0x5c, 0x88, 0xd0, 0xf8, 0xc9, 0x52, 0xd0, 0x06, 0x20, 0x9f, 0xfe,
|
||||
0x6c, 0xf5, 0x00, 0xc9, 0x54, 0xd0, 0x3a, 0xa2, 0x08, 0xbd, 0x96, 0xfe,
|
||||
0x95, 0xe0, 0xca, 0xd0, 0xf8, 0xa1, 0xf5, 0xf0, 0x5d, 0xa4, 0x2a, 0xc9,
|
||||
0x20, 0xf0, 0x75, 0xc9, 0x60, 0xf0, 0x63, 0xc9, 0x4c, 0xf0, 0x78, 0xc9,
|
||||
0x6c, 0xf0, 0x75, 0xc9, 0x40, 0xf0, 0x53, 0x29, 0x1f, 0x49, 0x14, 0xc9,
|
||||
0x04, 0xf0, 0x02, 0xb1, 0xf5, 0x99, 0xe0, 0x00, 0x88, 0x10, 0xf8, 0x20,
|
||||
0x9f, 0xfe, 0x4c, 0xe0, 0x00, 0xc9, 0x21, 0xd0, 0x06, 0x20, 0x1b, 0xff,
|
||||
0x4c, 0x1e, 0xfe, 0xc9, 0x24, 0xd0, 0x97, 0x4c, 0x0f, 0xff, 0xa2, 0xfe,
|
||||
0x20, 0xbe, 0xfe, 0x95, 0x11, 0xe8, 0xd0, 0xf8, 0x20, 0x51, 0xfa, 0x99,
|
||||
0xef, 0x00, 0xa6, 0xf1, 0x9a, 0x4c, 0x1e, 0xfe, 0x28, 0x20, 0xaa, 0xfe,
|
||||
0x68, 0x85, 0xf5, 0x68, 0x85, 0xf6, 0xba, 0x86, 0xf1, 0x20, 0x57, 0xfe,
|
||||
0x20, 0xdc, 0xfa, 0x4c, 0x92, 0xfd, 0x18, 0x68, 0x85, 0xf0, 0x68, 0x85,
|
||||
0xf5, 0x68, 0x85, 0xf6, 0x20, 0x82, 0xfb, 0x84, 0xf6, 0x18, 0x90, 0x14,
|
||||
0x18, 0x20, 0x82, 0xfb, 0xaa, 0x98, 0x48, 0x8a, 0x48, 0xa0, 0x02, 0x18,
|
||||
0xb1, 0xf5, 0xaa, 0x88, 0xb1, 0xf5, 0x86, 0xf6, 0x85, 0xf5, 0xb0, 0xf3,
|
||||
0x4c, 0x1e, 0xfe, 0x20, 0xe5, 0xfe, 0xa2, 0x05, 0xbd, 0x82, 0xfd, 0x20,
|
||||
0xef, 0xff, 0x20, 0xb9, 0xfe, 0xb5, 0xef, 0x20, 0xdc, 0xff, 0x20, 0xe0,
|
||||
0xfe, 0xca, 0xd0, 0xec, 0xa5, 0xf0, 0xa2, 0x08, 0x0a, 0x90, 0x08, 0x48,
|
||||
0xbd, 0x89, 0xfd, 0x20, 0xef, 0xff, 0x68, 0xca, 0xd0, 0xf2, 0x60, 0x18,
|
||||
0xa0, 0x01, 0xb1, 0xf5, 0x20, 0x84, 0xfb, 0x85, 0xf5, 0x98, 0x38, 0xb0,
|
||||
0xa1, 0x20, 0xaa, 0xfe, 0x38, 0xb0, 0x9d, 0xea, 0xea, 0x4c, 0x91, 0xfe,
|
||||
0x4c, 0x83, 0xfe, 0xa5, 0xf0, 0x48, 0xa5, 0xf4, 0xa6, 0xf3, 0xa4, 0xf2,
|
||||
0x28, 0x60, 0x85, 0xf4, 0x86, 0xf3, 0x84, 0xf2, 0x08, 0x68, 0x85, 0xf0,
|
||||
0xba, 0x86, 0xf1, 0xd8, 0x60, 0xa9, 0x2d, 0x4c, 0xef, 0xff, 0x20, 0xea,
|
||||
0xfe, 0x4c, 0xef, 0xff, 0x20, 0xe5, 0xfe, 0xa2, 0x00, 0xb5, 0x04, 0x20,
|
||||
0xef, 0xff, 0xe8, 0xe0, 0x06, 0xd0, 0xf6, 0x20, 0xe0, 0xfe, 0xa5, 0xfb,
|
||||
0x20, 0xe5, 0xff, 0xa5, 0xfa, 0x20, 0xdc, 0xff, 0xa9, 0x20, 0x4c, 0xef,
|
||||
0xff, 0xa9, 0x0d, 0x4c, 0xef, 0xff, 0xad, 0x11, 0xd0, 0x10, 0xfb, 0xad,
|
||||
0x10, 0xd0, 0x29, 0x7f, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xd8, 0x58, 0xa0, 0x7f, 0x8c, 0x12, 0xd0, 0xa9,
|
||||
0xa7, 0x8d, 0x11, 0xd0, 0x8d, 0x13, 0xd0, 0xa9, 0x5c, 0x20, 0xef, 0xff,
|
||||
0x20, 0x1b, 0xff, 0x90, 0xf6, 0xb0, 0xf9, 0x20, 0xe5, 0xfe, 0xa0, 0x01,
|
||||
0x88, 0x30, 0xf8, 0x20, 0xbe, 0xfe, 0x99, 0x00, 0x02, 0xc9, 0x0d, 0xf0,
|
||||
0x0b, 0xc9, 0x5f, 0xf0, 0xef, 0xc9, 0x1b, 0xf0, 0xda, 0xc8, 0x10, 0xeb,
|
||||
0xa0, 0xff, 0xa9, 0x00, 0xaa, 0x0a, 0x85, 0x2b, 0xc8, 0xb9, 0x00, 0x02,
|
||||
0xc9, 0x0d, 0xd0, 0x02, 0x38, 0x60, 0x09, 0x80, 0xc9, 0xae, 0x90, 0xf0,
|
||||
0xf0, 0xec, 0xc9, 0xba, 0xf0, 0xe7, 0xc9, 0xd2, 0xf0, 0x3d, 0x86, 0x28,
|
||||
0x86, 0x29, 0x84, 0x2a, 0xb9, 0x00, 0x02, 0x49, 0x30, 0xc9, 0x0a, 0x90,
|
||||
0x06, 0x69, 0x88, 0xc9, 0xfa, 0x90, 0x11, 0x0a, 0x0a, 0x0a, 0x0a, 0xa2,
|
||||
0x04, 0x0a, 0x26, 0x28, 0x26, 0x29, 0xca, 0xd0, 0xf8, 0xc8, 0xd0, 0xe0,
|
||||
0xc4, 0x2a, 0xd0, 0x02, 0x18, 0x60, 0x24, 0x2b, 0x50, 0x10, 0xa5, 0x28,
|
||||
0x81, 0x26, 0xe6, 0x26, 0xd0, 0xaf, 0xe6, 0x27, 0x4c, 0x41, 0xff, 0x6c,
|
||||
0x24, 0x00, 0x30, 0x27, 0xa2, 0x02, 0xb5, 0x27, 0x95, 0x25, 0x95, 0x23,
|
||||
0xca, 0xd0, 0xf7, 0xd0, 0x12, 0x20, 0xe5, 0xfe, 0xa5, 0x25, 0x20, 0xdc,
|
||||
0xff, 0xa5, 0x24, 0x20, 0xdc, 0xff, 0xa9, 0x3a, 0x20, 0xef, 0xff, 0x20,
|
||||
0xe0, 0xfe, 0xa1, 0x24, 0x20, 0xdc, 0xff, 0x86, 0x2b, 0xa5, 0x24, 0xc5,
|
||||
0x28, 0xa5, 0x25, 0xe5, 0x29, 0xb0, 0xc5, 0xe6, 0x24, 0xd0, 0x02, 0xe6,
|
||||
0x25, 0xa5, 0x24, 0x29, 0x07, 0x10, 0xcc, 0x00, 0x48, 0x4a, 0x4a, 0x4a,
|
||||
0x4a, 0x20, 0xe5, 0xff, 0x68, 0x29, 0x0f, 0x09, 0x30, 0xc9, 0x3a, 0x90,
|
||||
0x02, 0x69, 0x06, 0x2c, 0x12, 0xd0, 0x30, 0xfb, 0x8d, 0x12, 0xd0, 0x60,
|
||||
0x00, 0x00, 0x00, 0x0f, 0x00, 0xff, 0x14, 0xfe,
|
||||
];
|
||||
|
||||
start() {
|
||||
return 0xe0;
|
||||
}
|
||||
end() {
|
||||
return 0xff;
|
||||
}
|
||||
read(page: byte, off: byte): byte {
|
||||
return this.rom[((page - 0xe0) << 8) | off];
|
||||
}
|
||||
write(page: byte, off: byte, val: byte) {
|
||||
this.rom[((page - 0xe0) << 8) | off] = val;
|
||||
}
|
||||
getState() {
|
||||
return {};
|
||||
}
|
||||
setState() {}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
export var SYMBOLS = {
|
||||
0xD010: 'KBD',
|
||||
0xD011: 'KBDCR',
|
||||
0xD012: 'DSP',
|
||||
0xD013: 'DSPCR',
|
||||
|
||||
0xFF1F: 'GETLINE',
|
||||
0xFFEF: 'ECHO',
|
||||
0xFFDC: 'PRBYTE',
|
||||
0xFFE5: 'PRHEX'
|
||||
};
|
24
js/symbols.ts
Normal file
24
js/symbols.ts
Normal file
@ -0,0 +1,24 @@
|
||||
/* Copyright 2010-2023 Will Scullin <scullin@scullinsteel.com>
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation. No representations are made about the suitability of this
|
||||
* software for any purpose. It is provided "as is" without express or
|
||||
* implied warranty.
|
||||
*/
|
||||
|
||||
import type { address } from './types';
|
||||
|
||||
export const SYMBOLS: Record<address, string> = {
|
||||
0xd010: 'KBD',
|
||||
0xd011: 'KBDCR',
|
||||
0xd012: 'DSP',
|
||||
0xd013: 'DSPCR',
|
||||
|
||||
0xff1f: 'GETLINE',
|
||||
0xffef: 'ECHO',
|
||||
0xffdc: 'PRBYTE',
|
||||
0xffe5: 'PRHEX',
|
||||
};
|
43
js/types.ts
Normal file
43
js/types.ts
Normal file
@ -0,0 +1,43 @@
|
||||
/* Copyright 2023 Will Scullin <scullin@scullinsteel.com>
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation. No representations are made about the suitability of this
|
||||
* software for any purpose. It is provided "as is" without express or
|
||||
* implied warranty.
|
||||
*/
|
||||
|
||||
export type byte = number;
|
||||
|
||||
export type word = number;
|
||||
|
||||
export type address = word;
|
||||
|
||||
export type memory = Uint8Array | byte[];
|
||||
|
||||
export interface Memory {
|
||||
/** Read a byte. */
|
||||
read(page: byte, offset: byte): byte;
|
||||
/** Write a byte. */
|
||||
write(page: byte, offset: byte, value: byte): void;
|
||||
}
|
||||
|
||||
/** A mapped region of memory. */
|
||||
export interface MemoryPages extends Memory {
|
||||
/** Start page. */
|
||||
start(): byte;
|
||||
/** End page, inclusive. */
|
||||
end(): byte;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts the members of a constant array as a type. Used as:
|
||||
*
|
||||
* @example
|
||||
* const SOME_VALUES = ['a', 'b', 1, 2] as const;
|
||||
* type SomeValues = MemberOf<typeof SOME_VALUES>; // 'a' | 'b' | 1 | 2
|
||||
*/
|
||||
export type MemberOf<T extends ReadonlyArray<unknown>> =
|
||||
T extends ReadonlyArray<infer E> ? E : never;
|
@ -1,311 +0,0 @@
|
||||
/* Copyright 2010-2019 Will Scullin <scullin@scullinstekb.com>
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation. No representations are made about the suitability of this
|
||||
* software for any purpose. It is provided "as is" without express or
|
||||
* implied warranty.
|
||||
*/
|
||||
|
||||
import { debug, toHex } from '../util';
|
||||
|
||||
// keycode: [plain, cntl, shift]
|
||||
|
||||
var keymap = {
|
||||
// Most of these won't happen
|
||||
0x00: [0x00, 0x00, 0x00], //
|
||||
0x01: [0x01, 0x01, 0x01], //
|
||||
0x02: [0x02, 0x02, 0x02], //
|
||||
0x03: [0x03, 0x03, 0x03], //
|
||||
0x04: [0x04, 0x04, 0x04], //
|
||||
0x05: [0x05, 0x05, 0x05], //
|
||||
0x06: [0x06, 0x06, 0x06], //
|
||||
0x07: [0x07, 0x07, 0x07], //
|
||||
0x08: [0x5f, 0x5f, 0x5f], // BS
|
||||
0x09: [0x09, 0x09, 0x09], // TAB
|
||||
0x0A: [0x0A, 0x0A, 0x0A], //
|
||||
0x0B: [0x0B, 0x0B, 0x0B], //
|
||||
0x0C: [0x0C, 0x0C, 0x0C], //
|
||||
0x0D: [0x0D, 0x0D, 0x0D], // CR
|
||||
0x0E: [0x0E, 0x0E, 0x0E], //
|
||||
0x0F: [0x0F, 0x0F, 0x0F], //
|
||||
|
||||
0x10: [0xff, 0xff, 0xff], // SHIFT
|
||||
0x11: [0xff, 0xff, 0xff], // CTRL
|
||||
0x12: [0xff, 0xff, 0xff], // OPTION
|
||||
0x13: [0x13, 0x13, 0x13], //
|
||||
0x14: [0x14, 0x14, 0x14], //
|
||||
0x15: [0x15, 0x15, 0x15], //
|
||||
0x16: [0x16, 0x16, 0x16], //
|
||||
0x17: [0x17, 0x17, 0x18], //
|
||||
0x18: [0x18, 0x18, 0x18], //
|
||||
0x19: [0x19, 0x19, 0x19], //
|
||||
0x1A: [0x1A, 0x1A, 0x1A], //
|
||||
0x1B: [0x1B, 0x1B, 0x1B], // ESC
|
||||
0x1C: [0x1C, 0x1C, 0x1C], //
|
||||
0x1D: [0x1D, 0x1D, 0x1D], //
|
||||
0x1E: [0x1E, 0x1E, 0x1E], //
|
||||
0x1F: [0x1F, 0x1F, 0x1F], //
|
||||
|
||||
// Most of these besides space won't happen
|
||||
0x20: [0x20, 0x20, 0x20], //
|
||||
0x21: [0x21, 0x21, 0x21], //
|
||||
0x22: [0x22, 0x22, 0x22], //
|
||||
0x23: [0x23, 0x23, 0x23], //
|
||||
0x24: [0x24, 0x24, 0x24], //
|
||||
0x25: [0x5f, 0x5f, 0x5f], // <- left
|
||||
0x26: [0x0B, 0x0B, 0x0B], // ^ up
|
||||
0x27: [0x15, 0x15, 0x15], // -> right
|
||||
0x28: [0x0A, 0x0A, 0x0A], // v down
|
||||
0x29: [0x29, 0x29, 0x29], // )
|
||||
0x2A: [0x2A, 0x2A, 0x2A], // *
|
||||
0x2B: [0x2B, 0x2B, 0x2B], // +
|
||||
0x2C: [0x2C, 0x2C, 0x3C], // , - <
|
||||
0x2D: [0x2D, 0x2D, 0x5F], // - - _
|
||||
0x2E: [0x2E, 0x2E, 0x3E], // . - >
|
||||
0x2F: [0x2F, 0x2F, 0x3F], // / - ?
|
||||
|
||||
0x30: [0x30, 0x30, 0x29], // 0 - )
|
||||
0x31: [0x31, 0x31, 0x21], // 1 - !
|
||||
0x32: [0x32, 0x00, 0x40], // 2 - @
|
||||
0x33: [0x33, 0x33, 0x23], // 3 - #
|
||||
0x34: [0x34, 0x34, 0x24], // 4 - $
|
||||
0x35: [0x35, 0x35, 0x25], // 5 - %
|
||||
0x36: [0x36, 0x36, 0x5E], // 6 - ^
|
||||
0x37: [0x37, 0x37, 0x26], // 7 - &
|
||||
0x38: [0x38, 0x38, 0x2A], // 8 - *
|
||||
0x39: [0x39, 0x39, 0x28], // 9 - (
|
||||
0x3A: [0x3A, 0x3A, 0x3A], // :
|
||||
0x3B: [0x3B, 0x3B, 0x3A], // ; - :
|
||||
0x3C: [0x3C, 0x3C, 0x3C], // <
|
||||
0x3D: [0x3D, 0x3D, 0x2B], // = - +
|
||||
0x3E: [0x3E, 0x3E, 0x3E], // >
|
||||
0x3F: [0x3F, 0x3F, 0x3F], // ?
|
||||
|
||||
// Alpha and control
|
||||
0x40: [0x40, 0x00, 0x40], // @
|
||||
0x41: [0x41, 0x01, 0x41], // A
|
||||
0x42: [0x42, 0x02, 0x42], // B
|
||||
0x43: [0x43, 0x03, 0x43], // C - BRK
|
||||
0x44: [0x44, 0x04, 0x44], // D
|
||||
0x45: [0x45, 0x05, 0x45], // E
|
||||
0x46: [0x46, 0x06, 0x46], // F
|
||||
0x47: [0x47, 0x07, 0x47], // G - BELL
|
||||
0x48: [0x48, 0x08, 0x48], // H
|
||||
0x49: [0x49, 0x09, 0x49], // I - TAB
|
||||
0x4A: [0x4A, 0x0A, 0x4A], // J - NL
|
||||
0x4B: [0x4B, 0x0B, 0x4B], // K - VT
|
||||
0x4C: [0x4C, 0x0C, 0x4C], // L
|
||||
0x4D: [0x4D, 0x0D, 0x4D], // M - CR
|
||||
0x4E: [0x4E, 0x0E, 0x4E], // N
|
||||
0x4F: [0x4F, 0x0F, 0x4F], // O
|
||||
|
||||
0x50: [0x50, 0x10, 0x50], // P
|
||||
0x51: [0x51, 0x11, 0x51], // Q
|
||||
0x52: [0x52, 0x12, 0x52], // R
|
||||
0x53: [0x53, 0x13, 0x53], // S
|
||||
0x54: [0x54, 0x14, 0x54], // T
|
||||
0x55: [0x55, 0x15, 0x55], // U
|
||||
0x56: [0x56, 0x16, 0x56], // V
|
||||
0x57: [0x57, 0x17, 0x57], // W
|
||||
0x58: [0x58, 0x18, 0x58], // X
|
||||
0x59: [0x59, 0x19, 0x59], // Y
|
||||
0x5A: [0x5A, 0x1A, 0x5A], // Z
|
||||
// 0x5B: [0x5B, 0x1B, 0x5B], // [ - ESC
|
||||
// 0x5C: [0x5C, 0x1C, 0x5C], // \
|
||||
// 0x5D: [0x5D, 0x1D, 0x5D], // ]
|
||||
0x5E: [0x5E, 0x1E, 0x5E], // ^
|
||||
0x5F: [0x5F, 0x1F, 0x5F], // _
|
||||
|
||||
// Stray keys
|
||||
0xBA: [0x3B, 0x3B, 0x3A], // ; - :
|
||||
0xBB: [0x3D, 0x3D, 0x2B], // = - +
|
||||
0xBC: [0x2C, 0x2C, 0x3C], // , - <
|
||||
0xBD: [0x2D, 0x2D, 0x5F], // - - _
|
||||
0xBE: [0x2E, 0x2E, 0x3E], // . - >
|
||||
0xBF: [0x2F, 0x2F, 0x3F], // / - ?
|
||||
0xDB: [0x5B, 0x5B, 0x5B], // [
|
||||
0xDC: [0x5C, 0x5C, 0x5C], // \
|
||||
0xDD: [0x5D, 0x5D, 0x5D], // ]
|
||||
0xDE: [0x27, 0x27, 0x22], // ' - "
|
||||
|
||||
0xFF: [0xFF, 0xFF, 0xFF] // No comma line
|
||||
};
|
||||
|
||||
export function mapKeyEvent(evt) {
|
||||
var code = evt.keyCode;
|
||||
|
||||
if (code in keymap) {
|
||||
return keymap[code][evt.shiftKey ? 2 : (evt.ctrlKey ? 1 : 0)];
|
||||
}
|
||||
|
||||
debug('Unhandled key = ' + toHex(code));
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
export function KeyBoard(id, cpu, io, text) {
|
||||
var keys =
|
||||
[[['1','2','3','4','5','6','7','8','9','0',':','-','RESET'],
|
||||
['ESC','Q','W','E','R','T','Y','U','I','O','P','FEED','RETURN'],
|
||||
['CTRL','A','S','D','F','G','H','J','K','L',';','OUT','CLS'],
|
||||
['SHIFT','Z','X','C','V','B','N','M',',','.','/','SHIFT'],
|
||||
[' ']],
|
||||
[['!','"','#','$','%','&','\'','(',')','0','*','=','RESET'],
|
||||
['ESC','Q','W','E','R','T','Y','U','I','O','@','LINE','RETURN'],
|
||||
['CTRL','A','S','D','F','BELL','H','J','K','L','+','RUB','CLS'],
|
||||
['SHIFT','Z','X','C','V','B','^','M','<','>','?','SHIFT'],
|
||||
[' ']]];
|
||||
|
||||
var shifted = false;
|
||||
var controlled = false;
|
||||
var kb = document.querySelector(id);
|
||||
|
||||
return {
|
||||
shiftKey: function keyboard_shiftKey(down) {
|
||||
shifted = down;
|
||||
kb.querySelectorAll('.key-SHIFT').forEach(function(el) {
|
||||
if (down) {
|
||||
el.classList.add('active');
|
||||
} else {
|
||||
el.classList.remove('active');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
controlKey: function keyboard_controlKey(down) {
|
||||
controlled = down;
|
||||
kb.querySelectorAll('.key-CTRL').forEach(function(el) {
|
||||
if (down) {
|
||||
el.classList.add('active');
|
||||
} else {
|
||||
el.classList.remove('active');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
create: function keyboard_create() {
|
||||
var x, y, row, key, key1, key2, label, label1, label2;
|
||||
|
||||
function buildLabel(k) {
|
||||
var span = document.createElement('span');
|
||||
span.innerHTML = k;
|
||||
if (k.length > 1 && k.substr(0,1) != '&') {
|
||||
span.classList.add('small');
|
||||
}
|
||||
return span;
|
||||
}
|
||||
|
||||
function _mouseup(event) {
|
||||
event.currentTarget.classList.remove('pressed');
|
||||
}
|
||||
|
||||
function _mousedown(event) {
|
||||
event.currentTarget.classList.add('pressed');
|
||||
var key = event.currentTarget.dataSet[shifted ? 'key2' : 'key1'];
|
||||
switch (key) {
|
||||
case 'BELL':
|
||||
key = 'G';
|
||||
break;
|
||||
case 'RETURN':
|
||||
key = '\r';
|
||||
break;
|
||||
case 'LINE':
|
||||
case 'FEED':
|
||||
key = '\n';
|
||||
break;
|
||||
case 'RUB':
|
||||
case 'OUT':
|
||||
key = '_'; // 0x5f
|
||||
break;
|
||||
case ' ':
|
||||
key = ' ';
|
||||
break;
|
||||
case 'ESC':
|
||||
key = '\0x1b';
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (key.length > 1) {
|
||||
switch (key) {
|
||||
case 'SHIFT':
|
||||
shifted = !shifted;
|
||||
kb.querySelectorAll('.key-SHIFT').forEach(function(el) {
|
||||
el.classList.toggle('active');
|
||||
});
|
||||
break;
|
||||
case 'CTRL':
|
||||
controlled = !controlled;
|
||||
kb.querySelectorAll('.key-CTRL').forEach(function(el) {
|
||||
el.classList.toggle('active');
|
||||
});
|
||||
break;
|
||||
case 'RESET':
|
||||
cpu.reset();
|
||||
break;
|
||||
case 'CLS':
|
||||
text.clear();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (controlled && key >= '@' && key <= '_') {
|
||||
io.keyDown(key.charCodeAt(0) - 0x40);
|
||||
} else {
|
||||
io.keyDown(key.charCodeAt(0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (y = 0; y < 5; y++) {
|
||||
row = document.createElement('div');
|
||||
row.classList.add('row', 'row' + y);
|
||||
kb.append(row);
|
||||
for (x = 0; x < keys[0][y].length; x++) {
|
||||
key1 = keys[0][y][x];
|
||||
key2 = keys[1][y][x];
|
||||
|
||||
label = document.createElement('div');
|
||||
label1 = buildLabel(key1);
|
||||
label2 = buildLabel(key2);
|
||||
|
||||
key = document.createElement('div');
|
||||
key.classList.add('key', 'key-' + key1.replace(/[&;]/g,''));
|
||||
|
||||
if (key1.length > 1) {
|
||||
if (key1 != key2) {
|
||||
key.classList.add('vcenter2');
|
||||
} else {
|
||||
key.classList.add('vcenter');
|
||||
}
|
||||
}
|
||||
|
||||
if (key1 != key2) {
|
||||
key.classList.add('key-' + key2.replace(/[&;]/g,''));
|
||||
label.append(label2);
|
||||
label.append(document.createElement('br'));
|
||||
}
|
||||
label.append(label1);
|
||||
key.append(label);
|
||||
key.dataSet = {'key1': key1, 'key2': key2};
|
||||
|
||||
if (window.ontouchstart === undefined) {
|
||||
key.addEventListener('mousedown', _mousedown);
|
||||
key.addEventListener('mouseup', _mouseup);
|
||||
key.addEventListener('mouseout', _mouseup);
|
||||
} else {
|
||||
key.addEventListener('touchstart', _mousedown);
|
||||
key.addEventListener('touchend', _mouseup);
|
||||
key.addEventListener('touchleave', _mouseup);
|
||||
}
|
||||
|
||||
row.append(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
339
js/ui/keyboard.ts
Normal file
339
js/ui/keyboard.ts
Normal file
@ -0,0 +1,339 @@
|
||||
/* Copyright 2010-2019 Will Scullin <scullin@scullinstekb.com>
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation. No representations are made about the suitability of this
|
||||
* software for any purpose. It is provided "as is" without express or
|
||||
* implied warranty.
|
||||
*/
|
||||
|
||||
import CPU6502 from 'js/cpu6502';
|
||||
import { debug, toHex } from '../util';
|
||||
import Apple1IO from 'js/apple1io';
|
||||
import { TextPage } from 'js/canvas1';
|
||||
import { byte } from 'js/types';
|
||||
|
||||
// keycode: [plain, cntl, shift]
|
||||
|
||||
const keymap: Record<byte, readonly byte[]> = {
|
||||
// Most of these won't happen
|
||||
0x00: [0x00, 0x00, 0x00], //
|
||||
0x01: [0x01, 0x01, 0x01], //
|
||||
0x02: [0x02, 0x02, 0x02], //
|
||||
0x03: [0x03, 0x03, 0x03], //
|
||||
0x04: [0x04, 0x04, 0x04], //
|
||||
0x05: [0x05, 0x05, 0x05], //
|
||||
0x06: [0x06, 0x06, 0x06], //
|
||||
0x07: [0x07, 0x07, 0x07], //
|
||||
0x08: [0x5f, 0x5f, 0x5f], // BS
|
||||
0x09: [0x09, 0x09, 0x09], // TAB
|
||||
0x0a: [0x0a, 0x0a, 0x0a], //
|
||||
0x0b: [0x0b, 0x0b, 0x0b], //
|
||||
0x0c: [0x0c, 0x0c, 0x0c], //
|
||||
0x0d: [0x0d, 0x0d, 0x0d], // CR
|
||||
0x0e: [0x0e, 0x0e, 0x0e], //
|
||||
0x0f: [0x0f, 0x0f, 0x0f], //
|
||||
|
||||
0x10: [0xff, 0xff, 0xff], // SHIFT
|
||||
0x11: [0xff, 0xff, 0xff], // CTRL
|
||||
0x12: [0xff, 0xff, 0xff], // OPTION
|
||||
0x13: [0x13, 0x13, 0x13], //
|
||||
0x14: [0x14, 0x14, 0x14], //
|
||||
0x15: [0x15, 0x15, 0x15], //
|
||||
0x16: [0x16, 0x16, 0x16], //
|
||||
0x17: [0x17, 0x17, 0x18], //
|
||||
0x18: [0x18, 0x18, 0x18], //
|
||||
0x19: [0x19, 0x19, 0x19], //
|
||||
0x1a: [0x1a, 0x1a, 0x1a], //
|
||||
0x1b: [0x1b, 0x1b, 0x1b], // ESC
|
||||
0x1c: [0x1c, 0x1c, 0x1c], //
|
||||
0x1d: [0x1d, 0x1d, 0x1d], //
|
||||
0x1e: [0x1e, 0x1e, 0x1e], //
|
||||
0x1f: [0x1f, 0x1f, 0x1f], //
|
||||
|
||||
// Most of these besides space won't happen
|
||||
0x20: [0x20, 0x20, 0x20], //
|
||||
0x21: [0x21, 0x21, 0x21], //
|
||||
0x22: [0x22, 0x22, 0x22], //
|
||||
0x23: [0x23, 0x23, 0x23], //
|
||||
0x24: [0x24, 0x24, 0x24], //
|
||||
0x25: [0x5f, 0x5f, 0x5f], // <- left
|
||||
0x26: [0x0b, 0x0b, 0x0b], // ^ up
|
||||
0x27: [0x15, 0x15, 0x15], // -> right
|
||||
0x28: [0x0a, 0x0a, 0x0a], // v down
|
||||
0x29: [0x29, 0x29, 0x29], // )
|
||||
0x2a: [0x2a, 0x2a, 0x2a], // *
|
||||
0x2b: [0x2b, 0x2b, 0x2b], // +
|
||||
0x2c: [0x2c, 0x2c, 0x3c], // , - <
|
||||
0x2d: [0x2d, 0x2d, 0x5f], // - - _
|
||||
0x2e: [0x2e, 0x2e, 0x3e], // . - >
|
||||
0x2f: [0x2f, 0x2f, 0x3f], // / - ?
|
||||
|
||||
0x30: [0x30, 0x30, 0x29], // 0 - )
|
||||
0x31: [0x31, 0x31, 0x21], // 1 - !
|
||||
0x32: [0x32, 0x00, 0x40], // 2 - @
|
||||
0x33: [0x33, 0x33, 0x23], // 3 - #
|
||||
0x34: [0x34, 0x34, 0x24], // 4 - $
|
||||
0x35: [0x35, 0x35, 0x25], // 5 - %
|
||||
0x36: [0x36, 0x36, 0x5e], // 6 - ^
|
||||
0x37: [0x37, 0x37, 0x26], // 7 - &
|
||||
0x38: [0x38, 0x38, 0x2a], // 8 - *
|
||||
0x39: [0x39, 0x39, 0x28], // 9 - (
|
||||
0x3a: [0x3a, 0x3a, 0x3a], // :
|
||||
0x3b: [0x3b, 0x3b, 0x3a], // ; - :
|
||||
0x3c: [0x3c, 0x3c, 0x3c], // <
|
||||
0x3d: [0x3d, 0x3d, 0x2b], // = - +
|
||||
0x3e: [0x3e, 0x3e, 0x3e], // >
|
||||
0x3f: [0x3f, 0x3f, 0x3f], // ?
|
||||
|
||||
// Alpha and control
|
||||
0x40: [0x40, 0x00, 0x40], // @
|
||||
0x41: [0x41, 0x01, 0x41], // A
|
||||
0x42: [0x42, 0x02, 0x42], // B
|
||||
0x43: [0x43, 0x03, 0x43], // C - BRK
|
||||
0x44: [0x44, 0x04, 0x44], // D
|
||||
0x45: [0x45, 0x05, 0x45], // E
|
||||
0x46: [0x46, 0x06, 0x46], // F
|
||||
0x47: [0x47, 0x07, 0x47], // G - BELL
|
||||
0x48: [0x48, 0x08, 0x48], // H
|
||||
0x49: [0x49, 0x09, 0x49], // I - TAB
|
||||
0x4a: [0x4a, 0x0a, 0x4a], // J - NL
|
||||
0x4b: [0x4b, 0x0b, 0x4b], // K - VT
|
||||
0x4c: [0x4c, 0x0c, 0x4c], // L
|
||||
0x4d: [0x4d, 0x0d, 0x4d], // M - CR
|
||||
0x4e: [0x4e, 0x0e, 0x4e], // N
|
||||
0x4f: [0x4f, 0x0f, 0x4f], // O
|
||||
|
||||
0x50: [0x50, 0x10, 0x50], // P
|
||||
0x51: [0x51, 0x11, 0x51], // Q
|
||||
0x52: [0x52, 0x12, 0x52], // R
|
||||
0x53: [0x53, 0x13, 0x53], // S
|
||||
0x54: [0x54, 0x14, 0x54], // T
|
||||
0x55: [0x55, 0x15, 0x55], // U
|
||||
0x56: [0x56, 0x16, 0x56], // V
|
||||
0x57: [0x57, 0x17, 0x57], // W
|
||||
0x58: [0x58, 0x18, 0x58], // X
|
||||
0x59: [0x59, 0x19, 0x59], // Y
|
||||
0x5a: [0x5a, 0x1a, 0x5a], // Z
|
||||
// 0x5B: [0x5B, 0x1B, 0x5B], // [ - ESC
|
||||
// 0x5C: [0x5C, 0x1C, 0x5C], // \
|
||||
// 0x5D: [0x5D, 0x1D, 0x5D], // ]
|
||||
0x5e: [0x5e, 0x1e, 0x5e], // ^
|
||||
0x5f: [0x5f, 0x1f, 0x5f], // _
|
||||
|
||||
// Stray keys
|
||||
0xba: [0x3b, 0x3b, 0x3a], // ; - :
|
||||
0xbb: [0x3d, 0x3d, 0x2b], // = - +
|
||||
0xbc: [0x2c, 0x2c, 0x3c], // , - <
|
||||
0xbd: [0x2d, 0x2d, 0x5f], // - - _
|
||||
0xbe: [0x2e, 0x2e, 0x3e], // . - >
|
||||
0xbf: [0x2f, 0x2f, 0x3f], // / - ?
|
||||
0xdb: [0x5b, 0x5b, 0x5b], // [
|
||||
0xdc: [0x5c, 0x5c, 0x5c], // \
|
||||
0xdd: [0x5d, 0x5d, 0x5d], // ]
|
||||
0xde: [0x27, 0x27, 0x22], // ' - "
|
||||
|
||||
0xff: [0xff, 0xff, 0xff], // No comma line
|
||||
} as const;
|
||||
|
||||
const keys = [
|
||||
[
|
||||
['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', ':', '-', 'RESET'],
|
||||
['ESC', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'FEED', 'RETURN'],
|
||||
['CTRL', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ';', 'OUT', 'CLS'],
|
||||
['SHIFT', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', ',', '.', '/', 'SHIFT'],
|
||||
[' '],
|
||||
],
|
||||
[
|
||||
['!', '"', '#', '$', '%', '&', "'", '(', ')', '0', '*', '=', 'RESET'],
|
||||
['ESC', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', '@', 'LINE', 'RETURN'],
|
||||
['CTRL', 'A', 'S', 'D', 'F', 'BELL', 'H', 'J', 'K', 'L', '+', 'RUB', 'CLS'],
|
||||
['SHIFT', 'Z', 'X', 'C', 'V', 'B', '^', 'M', '<', '>', '?', 'SHIFT'],
|
||||
[' '],
|
||||
],
|
||||
] as const;
|
||||
|
||||
export function mapKeyEvent(evt: KeyboardEvent) {
|
||||
const code = evt.keyCode;
|
||||
|
||||
if (code in keymap) {
|
||||
return keymap[code][evt.shiftKey ? 2 : evt.ctrlKey ? 1 : 0];
|
||||
}
|
||||
|
||||
debug('Unhandled key = ' + toHex(code));
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
export class KeyBoard {
|
||||
shifted = false;
|
||||
controlled = false;
|
||||
kb: HTMLDivElement;
|
||||
|
||||
constructor(
|
||||
id: string,
|
||||
private cpu: CPU6502,
|
||||
private io: Apple1IO,
|
||||
private text: TextPage,
|
||||
) {
|
||||
this.kb = document.querySelector<HTMLDivElement>(id)!;
|
||||
}
|
||||
|
||||
shiftKey(down: boolean) {
|
||||
this.shifted = down;
|
||||
this.kb.querySelectorAll('.key-SHIFT').forEach(function (el) {
|
||||
if (down) {
|
||||
el.classList.add('active');
|
||||
} else {
|
||||
el.classList.remove('active');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
controlKey(down: boolean) {
|
||||
this.controlled = down;
|
||||
this.kb.querySelectorAll('.key-CTRL').forEach(function (el) {
|
||||
if (down) {
|
||||
el.classList.add('active');
|
||||
} else {
|
||||
el.classList.remove('active');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
create() {
|
||||
let x, y, row, key, key1, key2, label, label1, label2;
|
||||
|
||||
function buildLabel(k: string) {
|
||||
const span = document.createElement('span');
|
||||
span.innerHTML = k;
|
||||
if (k.length > 1 && !k.startsWith('&')) {
|
||||
span.classList.add('small');
|
||||
}
|
||||
return span;
|
||||
}
|
||||
|
||||
const _mouseup = (event: Event) => {
|
||||
if (!(event.currentTarget instanceof HTMLElement)) {
|
||||
return;
|
||||
}
|
||||
event.currentTarget.classList.remove('pressed');
|
||||
};
|
||||
|
||||
const _mousedown = (event: Event) => {
|
||||
if (!(event.currentTarget instanceof HTMLElement)) {
|
||||
return;
|
||||
}
|
||||
event.currentTarget.classList.add('pressed');
|
||||
let key = event.currentTarget.dataset[this.shifted ? 'key2' : 'key1'];
|
||||
if (!key) {
|
||||
return;
|
||||
}
|
||||
switch (key) {
|
||||
case 'BELL':
|
||||
key = 'G';
|
||||
break;
|
||||
case 'RETURN':
|
||||
key = '\r';
|
||||
break;
|
||||
case 'LINE':
|
||||
case 'FEED':
|
||||
key = '\n';
|
||||
break;
|
||||
case 'RUB':
|
||||
case 'OUT':
|
||||
key = '_'; // 0x5f
|
||||
break;
|
||||
case ' ':
|
||||
key = ' ';
|
||||
break;
|
||||
case 'ESC':
|
||||
key = '\0x1b';
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (key.length > 1) {
|
||||
switch (key) {
|
||||
case 'SHIFT':
|
||||
this.shifted = !this.shifted;
|
||||
this.kb
|
||||
.querySelectorAll<HTMLElement>('.key-SHIFT')
|
||||
.forEach(function (el: HTMLElement) {
|
||||
el.classList.toggle('active');
|
||||
});
|
||||
break;
|
||||
case 'CTRL':
|
||||
this.controlled = !this.controlled;
|
||||
this.kb.querySelectorAll('.key-CTRL').forEach(function (el) {
|
||||
el.classList.toggle('active');
|
||||
});
|
||||
break;
|
||||
case 'RESET':
|
||||
this.cpu.reset();
|
||||
break;
|
||||
case 'CLS':
|
||||
this.text.clear();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (this.controlled && key >= '@' && key <= '_') {
|
||||
this.io.keyDown(key.charCodeAt(0) - 0x40);
|
||||
} else {
|
||||
this.io.keyDown(key.charCodeAt(0));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
for (y = 0; y < 5; y++) {
|
||||
row = document.createElement('div');
|
||||
row.classList.add('row', 'row' + y);
|
||||
this.kb.append(row);
|
||||
for (x = 0; x < keys[0][y].length; x++) {
|
||||
key1 = keys[0][y][x];
|
||||
key2 = keys[1][y][x];
|
||||
|
||||
label = document.createElement('div');
|
||||
label1 = buildLabel(key1);
|
||||
label2 = buildLabel(key2);
|
||||
|
||||
key = document.createElement('div');
|
||||
key.classList.add('key', 'key-' + key1.replace(/[&;]/g, ''));
|
||||
|
||||
if (key1.length > 1) {
|
||||
if (key1 !== key2) {
|
||||
key.classList.add('vcenter2');
|
||||
} else {
|
||||
key.classList.add('vcenter');
|
||||
}
|
||||
}
|
||||
|
||||
if (key1 !== key2) {
|
||||
key.classList.add('key-' + key2.replace(/[&;]/g, ''));
|
||||
label.append(label2);
|
||||
label.append(document.createElement('br'));
|
||||
}
|
||||
label.append(label1);
|
||||
key.append(label);
|
||||
key.dataset['key1'] = key1;
|
||||
key.dataset['key2'] = key2;
|
||||
|
||||
if (window.ontouchstart === undefined) {
|
||||
key.addEventListener('mousedown', _mousedown);
|
||||
key.addEventListener('mouseup', _mouseup);
|
||||
key.addEventListener('mouseout', _mouseup);
|
||||
} else {
|
||||
key.addEventListener('touchstart', _mousedown);
|
||||
key.addEventListener('touchend', _mouseup);
|
||||
key.addEventListener('touchleave', _mouseup);
|
||||
}
|
||||
|
||||
row.append(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
79
js/util.js
79
js/util.js
@ -1,79 +0,0 @@
|
||||
/* Copyright 2010-2019 Will Scullin <scullin@scullinsteel.com>
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation. No representations are made about the suitability of this
|
||||
* software for any purpose. It is provided "as is" without express or
|
||||
* implied warranty.
|
||||
*/
|
||||
|
||||
var hex_digits = '0123456789ABCDEF';
|
||||
var bin_digits = '01';
|
||||
|
||||
export function allocMem(size) {
|
||||
var result;
|
||||
if (window.Uint8Array) {
|
||||
result = new Uint8Array(size);
|
||||
} else {
|
||||
result = new Array(size);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
export function allocMemPages(pages) {
|
||||
return allocMem(pages * 0x100);
|
||||
}
|
||||
|
||||
export function debug(msg) {
|
||||
/*eslint no-console: 0 */
|
||||
if (typeof(console) != 'undefined' && 'log' in console) {
|
||||
console.log(msg);
|
||||
} else if (typeof(environment) == 'object') { // rhino shell
|
||||
print(msg);
|
||||
}
|
||||
}
|
||||
|
||||
export function toHex(v, n) {
|
||||
if (!n) {
|
||||
n = v < 256 ? 2 : 4;
|
||||
}
|
||||
var result = '';
|
||||
for (var idx = 0; idx < n; idx++) {
|
||||
result = hex_digits[v & 0x0f] + result;
|
||||
v >>= 4;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
export function toBinary(v) {
|
||||
var result = '';
|
||||
for (var idx = 0; idx < 8; idx++) {
|
||||
result = bin_digits[v & 0x01] + result;
|
||||
v >>= 1;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
// From http://www.netlobo.com/url_query_string_javascript.html
|
||||
export function gup( name )
|
||||
{
|
||||
name = name.replace(/[[]/,'\\[').replace(/[\]]/,'\\]');
|
||||
var regexS = '[\\?&]'+name+'=([^&#]*)';
|
||||
var regex = new RegExp( regexS );
|
||||
var results = regex.exec( window.location.href );
|
||||
if( !results )
|
||||
return '';
|
||||
else
|
||||
return results[1];
|
||||
}
|
||||
|
||||
export function hup() {
|
||||
var regex = new RegExp('#(.*)');
|
||||
var results = regex.exec(window.location.hash);
|
||||
if ( !results )
|
||||
return '';
|
||||
else
|
||||
return decodeURIComponent(results[1]);
|
||||
}
|
67
js/util.ts
Normal file
67
js/util.ts
Normal file
@ -0,0 +1,67 @@
|
||||
/* Copyright 2010-2023 Will Scullin <scullin@scullinsteel.com>
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation. No representations are made about the suitability of this
|
||||
* software for any purpose. It is provided "as is" without express or
|
||||
* implied warranty.
|
||||
*/
|
||||
|
||||
import { byte, word } from './types';
|
||||
|
||||
const hex_digits = '0123456789ABCDEF';
|
||||
const bin_digits = '01';
|
||||
|
||||
export function allocMem(size: word) {
|
||||
let result;
|
||||
if (window.Uint8Array) {
|
||||
result = new Uint8Array(size);
|
||||
} else {
|
||||
result = new Array(size);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
export function allocMemPages(pages: byte) {
|
||||
return allocMem(pages * 0x100);
|
||||
}
|
||||
|
||||
export function debug(...msg: unknown[]) {
|
||||
/*eslint no-console: 0 */
|
||||
console.log(...msg);
|
||||
}
|
||||
|
||||
export function toHex(v: byte, n?: 2 | 4) {
|
||||
if (!n) {
|
||||
n = v < 256 ? 2 : 4;
|
||||
}
|
||||
let result = '';
|
||||
for (let idx = 0; idx < n; idx++) {
|
||||
result = hex_digits[v & 0x0f] + result;
|
||||
v >>= 4;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
export function toBinary(v: byte) {
|
||||
let result = '';
|
||||
for (let idx = 0; idx < 8; idx++) {
|
||||
result = bin_digits[v & 0x01] + result;
|
||||
v >>= 1;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
export function gup(name: string) {
|
||||
const params = new URLSearchParams(window.location.search);
|
||||
return params.get(name);
|
||||
}
|
||||
|
||||
export function hup() {
|
||||
const regex = new RegExp('#(.*)');
|
||||
const results = regex.exec(window.location.hash);
|
||||
if (!results) return '';
|
||||
else return decodeURIComponent(results[1]);
|
||||
}
|
17455
package-lock.json
generated
17455
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
13
package.json
13
package.json
@ -28,11 +28,20 @@
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.4.0",
|
||||
"@babel/preset-env": "^7.4.2",
|
||||
"@types/micromodal": "^0.3.3",
|
||||
"@typescript-eslint/eslint-plugin": "^6.2.1",
|
||||
"@types/jest": "^29.5.3",
|
||||
"ajv": "^6.9.2",
|
||||
"babel-jest": "^26.3.0",
|
||||
"babel-jest": "^29.5.0",
|
||||
"eslint": "^8.3.0",
|
||||
"jest": "^27.3.1",
|
||||
"eslint-config-prettier": "^9.0.0",
|
||||
"eslint-plugin-jest": "^27.2.3",
|
||||
"eslint-plugin-prettier": "^5.0.0",
|
||||
"jest": "^29.5.0",
|
||||
"node-forge": "^1.3.0",
|
||||
"ts-jest": "^29.1.1",
|
||||
"ts-loader": "^9.4.4",
|
||||
"typescript": "^5.1.6",
|
||||
"webpack": "^5.64.4",
|
||||
"webpack-cli": "^4.9.1",
|
||||
"webpack-dev-server": "^4.6.0"
|
||||
|
@ -1,48 +0,0 @@
|
||||
|
||||
import CPU6502 from '../js/cpu6502';
|
||||
import Test6502 from './roms/6502test';
|
||||
import Test65C02 from './roms/65C02test';
|
||||
|
||||
import { toHex } from '../js/util';
|
||||
|
||||
describe.skip('CPU', function () {
|
||||
var cpu;
|
||||
var lastPC = 0;
|
||||
var done = false;
|
||||
|
||||
function traceCB() {
|
||||
var pc = cpu.getPC();
|
||||
done = lastPC == pc;
|
||||
lastPC = pc;
|
||||
}
|
||||
|
||||
describe('6502', function () {
|
||||
it('completes the test ROM', function () {
|
||||
cpu = new CPU6502();
|
||||
var test = new Test6502();
|
||||
cpu.addPageHandler(test);
|
||||
cpu.setPC(0x400);
|
||||
|
||||
do {
|
||||
cpu.stepCyclesDebug(1000, traceCB);
|
||||
} while (!done);
|
||||
|
||||
expect(toHex(lastPC)).toEqual(toHex(0x3469));
|
||||
});
|
||||
});
|
||||
|
||||
describe('65C02', function () {
|
||||
it('completes the test ROM', function () {
|
||||
cpu = new CPU6502({'65C02': true});
|
||||
var test = new Test65C02();
|
||||
cpu.addPageHandler(test);
|
||||
cpu.setPC(0x400);
|
||||
|
||||
do {
|
||||
cpu.stepCyclesDebug(1000, traceCB);
|
||||
} while (!done);
|
||||
|
||||
expect(toHex(lastPC)).toEqual(toHex(0x24f1));
|
||||
});
|
||||
});
|
||||
});
|
48
test/cpu.spec.ts
Normal file
48
test/cpu.spec.ts
Normal file
@ -0,0 +1,48 @@
|
||||
import CPU6502, { FLAVOR_ROCKWELL_65C02 } from '../js/cpu6502';
|
||||
// From https://github.com/Klaus2m5/6502_65C02_functional_tests
|
||||
import Test6502 from './roms/6502test';
|
||||
import Test65C02 from './roms/65C02test';
|
||||
|
||||
import { toHex } from '../js/util';
|
||||
|
||||
describe('CPU', function () {
|
||||
let cpu: CPU6502;
|
||||
let lastPC = 0;
|
||||
let done = false;
|
||||
|
||||
function traceCB() {
|
||||
const pc = cpu.getPC();
|
||||
done = lastPC === pc;
|
||||
lastPC = pc;
|
||||
}
|
||||
|
||||
describe('6502', function () {
|
||||
it('completes the test ROM', function () {
|
||||
cpu = new CPU6502();
|
||||
const test = new Test6502();
|
||||
cpu.addPageHandler(test);
|
||||
cpu.setPC(0x400);
|
||||
|
||||
do {
|
||||
cpu.stepCyclesDebug(1000, traceCB);
|
||||
} while (!done);
|
||||
|
||||
expect(toHex(lastPC)).toEqual(toHex(0x3469));
|
||||
});
|
||||
});
|
||||
|
||||
describe('65C02', function () {
|
||||
it('completes the test ROM', function () {
|
||||
cpu = new CPU6502({ flavor: FLAVOR_ROCKWELL_65C02 });
|
||||
const test = new Test65C02();
|
||||
cpu.addPageHandler(test);
|
||||
cpu.setPC(0x400);
|
||||
|
||||
do {
|
||||
cpu.stepCyclesDebug(1000, traceCB);
|
||||
} while (!done);
|
||||
|
||||
expect(toHex(lastPC)).toEqual(toHex(0x24f1));
|
||||
});
|
||||
});
|
||||
});
|
2240
test/cpu6502.spec.js
2240
test/cpu6502.spec.js
File diff suppressed because it is too large
Load Diff
3254
test/cpu6502.spec.ts
Normal file
3254
test/cpu6502.spec.ts
Normal file
File diff suppressed because it is too large
Load Diff
BIN
test/roms/6502_functional_test.bin
Normal file
BIN
test/roms/6502_functional_test.bin
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load Diff
29
test/roms/6502test.ts
Normal file
29
test/roms/6502test.ts
Normal file
@ -0,0 +1,29 @@
|
||||
// From https://github.com/Klaus2m5/6502_65C02_functional_tests
|
||||
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { MemoryPages, byte } from '../../js/types';
|
||||
|
||||
export default class Test6502 implements MemoryPages {
|
||||
private data: Buffer;
|
||||
|
||||
constructor() {
|
||||
this.data = fs.readFileSync(path.join(__dirname, '6502_functional_test.bin'));
|
||||
}
|
||||
|
||||
start = () => {
|
||||
return 0x00;
|
||||
};
|
||||
|
||||
end = () => {
|
||||
return 0xff;
|
||||
};
|
||||
|
||||
read = (page: byte, off: byte) => {
|
||||
return this.data[page << 8 | off];
|
||||
};
|
||||
|
||||
write = (page: byte, off: byte, val: byte) => {
|
||||
this.data[page << 8 | off] = val;
|
||||
};
|
||||
}
|
BIN
test/roms/65C02_extended_opcodes_test.bin
Normal file
BIN
test/roms/65C02_extended_opcodes_test.bin
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load Diff
29
test/roms/65C02test.ts
Normal file
29
test/roms/65C02test.ts
Normal file
@ -0,0 +1,29 @@
|
||||
// From https://github.com/Klaus2m5/6502_65C02_functional_tests
|
||||
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { MemoryPages, byte } from '../../js/types';
|
||||
|
||||
export default class Test65C02 implements MemoryPages {
|
||||
private data: Buffer;
|
||||
|
||||
constructor() {
|
||||
this.data = fs.readFileSync(path.join(__dirname, '65C02_extended_opcodes_test.bin'));
|
||||
}
|
||||
|
||||
start = () => {
|
||||
return 0x00;
|
||||
};
|
||||
|
||||
end = () => {
|
||||
return 0xff;
|
||||
};
|
||||
|
||||
read = (page: byte, off: byte) => {
|
||||
return this.data[page << 8 | off];
|
||||
};
|
||||
|
||||
write = (page: byte, off: byte, val: byte) => {
|
||||
this.data[page << 8 | off] = val;
|
||||
};
|
||||
}
|
6
test/util/asserts.ts
Normal file
6
test/util/asserts.ts
Normal file
@ -0,0 +1,6 @@
|
||||
import { byte } from "../../js/types";
|
||||
|
||||
export const assertByte = (b: byte) => {
|
||||
expect(b <= 0xff).toEqual(true);
|
||||
expect(b >= 0x00).toEqual(true);
|
||||
};
|
56
test/util/bios.ts
Normal file
56
test/util/bios.ts
Normal file
@ -0,0 +1,56 @@
|
||||
import { MemoryPages, byte } from "../../js/types";
|
||||
import { assertByte } from "./asserts";
|
||||
|
||||
export class Program implements MemoryPages {
|
||||
private data: Buffer;
|
||||
|
||||
constructor(private page: byte, code: byte[]) {
|
||||
this.data = Buffer.from(code);
|
||||
}
|
||||
|
||||
start() {
|
||||
return this.page;
|
||||
}
|
||||
|
||||
end() {
|
||||
return this.page;
|
||||
}
|
||||
|
||||
read(page: byte, off: byte) {
|
||||
assertByte(page);
|
||||
assertByte(off);
|
||||
return this.data[off];
|
||||
}
|
||||
|
||||
write(_page: byte, _off: byte, _val: byte) {
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
|
||||
export const bios = new Program(
|
||||
0xff,
|
||||
[
|
||||
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, 0x48, 0x45, 0x4c, 0x4c,
|
||||
0x4f, 0x0d, 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, 0xff,
|
||||
0x00, 0x04, 0x00, 0xff,
|
||||
]
|
||||
);
|
34
test/util/cpu.ts
Normal file
34
test/util/cpu.ts
Normal file
@ -0,0 +1,34 @@
|
||||
import { flags, CpuState } from "js/cpu6502";
|
||||
import { byte } from "js/types";
|
||||
import { toHex } from "js/util";
|
||||
|
||||
export const dumpStatusRegister = (sr: byte) =>
|
||||
[
|
||||
sr & flags.N ? "N" : "-",
|
||||
sr & flags.V ? "V" : "-",
|
||||
sr & flags.X ? "X" : "-",
|
||||
sr & flags.B ? "B" : "-",
|
||||
sr & flags.D ? "D" : "-",
|
||||
sr & flags.I ? "I" : "-",
|
||||
sr & flags.Z ? "Z" : "-",
|
||||
sr & flags.C ? "C" : "-",
|
||||
].join("");
|
||||
|
||||
const detail = !!process.env.JEST_DETAIL;
|
||||
|
||||
export function toReadableState(state: CpuState) {
|
||||
if (detail) {
|
||||
const { pc, sp, a, x, y, s } = state;
|
||||
|
||||
return {
|
||||
pc: toHex(pc, 4),
|
||||
sp: toHex(sp),
|
||||
a: toHex(a),
|
||||
x: toHex(x),
|
||||
y: toHex(y),
|
||||
s: dumpStatusRegister(s),
|
||||
};
|
||||
} else {
|
||||
return state;
|
||||
}
|
||||
}
|
60
test/util/memory.ts
Normal file
60
test/util/memory.ts
Normal file
@ -0,0 +1,60 @@
|
||||
import { MemoryPages, byte, word } from "js/types";
|
||||
import { assertByte } from "./asserts";
|
||||
|
||||
export type Log = [address: word, value: byte, types: "read" | "write"];
|
||||
export class TestMemory implements MemoryPages {
|
||||
private data: Buffer;
|
||||
private logging: boolean = false;
|
||||
private log: Log[] = [];
|
||||
|
||||
constructor(private size: number) {
|
||||
this.data = Buffer.alloc(size << 8);
|
||||
}
|
||||
|
||||
start() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
end() {
|
||||
return this.size - 1;
|
||||
}
|
||||
|
||||
read(page: byte, off: byte) {
|
||||
assertByte(page);
|
||||
assertByte(off);
|
||||
|
||||
const val = this.data[(page << 8) | off];
|
||||
if (this.logging) {
|
||||
this.log.push([(page << 8) | off, val, "read"]);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
write(page: byte, off: byte, val: byte) {
|
||||
assertByte(page);
|
||||
assertByte(off);
|
||||
assertByte(val);
|
||||
|
||||
if (this.logging) {
|
||||
this.log.push([(page << 8) | off, val, "write"]);
|
||||
}
|
||||
this.data[(page << 8) | off] = val;
|
||||
}
|
||||
|
||||
reset() {
|
||||
this.log = [];
|
||||
}
|
||||
|
||||
logStart() {
|
||||
this.log = [];
|
||||
this.logging = true;
|
||||
}
|
||||
|
||||
logStop() {
|
||||
this.logging = false;
|
||||
}
|
||||
|
||||
getLog() {
|
||||
return this.log;
|
||||
}
|
||||
}
|
43
tsconfig.json
Normal file
43
tsconfig.json
Normal file
@ -0,0 +1,43 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"jsx": "react",
|
||||
"jsxFactory": "h",
|
||||
"jsxFragmentFactory": "Fragment",
|
||||
"module": "esnext",
|
||||
"esModuleInterop": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"target": "es6",
|
||||
"lib": ["DOM", "ES6"],
|
||||
"strict": true,
|
||||
"noUnusedLocals": true,
|
||||
"noUnusedParameters": true,
|
||||
"exactOptionalPropertyTypes": true,
|
||||
"moduleResolution": "node",
|
||||
"resolveJsonModule": true,
|
||||
"sourceMap": true,
|
||||
"outDir": "dist",
|
||||
"baseUrl": ".",
|
||||
"allowJs": true,
|
||||
"paths": {
|
||||
"*": [
|
||||
"node_modules/*",
|
||||
"types/*"
|
||||
],
|
||||
"js/*": [
|
||||
"js/*"
|
||||
],
|
||||
"json/*": [
|
||||
"json/*"
|
||||
],
|
||||
"test/*": [
|
||||
"test/*"
|
||||
]
|
||||
}
|
||||
},
|
||||
"include": [
|
||||
"js/**/*",
|
||||
"test/**/*",
|
||||
"types/**/*",
|
||||
"*.config.js"
|
||||
]
|
||||
}
|
@ -9,9 +9,25 @@ module.exports =
|
||||
},
|
||||
output: {
|
||||
path: path.resolve('dist/'),
|
||||
library: 'Apple1',
|
||||
libraryExport: 'Apple1',
|
||||
libraryTarget: 'var'
|
||||
},
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.ts$/i,
|
||||
use: [
|
||||
{
|
||||
loader: 'ts-loader'
|
||||
},
|
||||
],
|
||||
exclude: /node_modules/,
|
||||
}
|
||||
]
|
||||
},
|
||||
resolve: {
|
||||
extensions: ['.ts', '.js'],
|
||||
alias: {
|
||||
js: path.resolve(__dirname, 'js/')
|
||||
}
|
||||
},
|
||||
devServer: {
|
||||
compress: true,
|
||||
|
Loading…
Reference in New Issue
Block a user