Merge pull request #9 from whscullin/whscullin/webpack

Convert to webpack first pass.
This commit is contained in:
Will Scullin 2019-03-02 12:26:56 -08:00 committed by GitHub
commit d5ab930935
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
49 changed files with 8429 additions and 498 deletions

View File

@ -20,7 +20,11 @@
"env": {
"builtin": true,
"browser": true,
"jquery": true
"jquery": true,
"es6": true
},
"parserOptions": {
"sourceType": "module"
},
"extends": "eslint:recommended"
}

3
.gitignore vendored
View File

@ -1,3 +1,4 @@
.*~
.checked-*.js
node_modules
/dist
/node_modules

View File

@ -44,32 +44,6 @@
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js">
</script>
<!-- Emulator Scripts -->
<script type="text/javascript" src="js/util.js"></script>
<script type="text/javascript" src="js/prefs.js"></script>
<script type="text/javascript" src="js/ram.js"></script>
<script type="text/javascript" src="js/applesoft/decompiler.js"></script>
<script type="text/javascript" src="js/intbasic/decompiler.js"></script>
<script type="text/javascript" src="js/canvas.js"></script>
<script type="text/javascript" src="js/apple2io.js"></script>
<script type="text/javascript" src="js/cards/langcard.js"></script>
<script type="text/javascript" src="js/cards/parallel.js"></script>
<script type="text/javascript" src="js/cards/videoterm.js"></script>
<script type="text/javascript" src="js/cards/disk2.js"></script>
<script type="text/javascript" src="js/cards/ramfactor.js"></script>
<script type="text/javascript" src="js/cards/thunderclock.js"></script>
<script type="text/javascript" src="js/cpu6502.js"></script>
<script type="text/javascript" src="js/base64.js"></script>
<script type="text/javascript" src="js/roms/fpbasic.js"></script>
<script type="text/javascript" src="js/roms/intbasic.js"></script>
<script type="text/javascript" src="js/roms/original.js"></script>
<script type="text/javascript" src="js/roms/apple2_char.js"></script>
<script type="text/javascript" src="js/ui/audio.js"></script>
<script type="text/javascript" src="js/ui/keyboard.js"></script>
<script type="text/javascript" src="js/ui/gamepad.js"></script>
<script type="text/javascript" src="js/ui/printer.js"></script>
<script type="text/javascript" src="js/ui/tape.js"></script>
<!-- Disk Index -->
<script type="text/javascript" src="json/disks/index.js"></script>
@ -189,6 +163,9 @@
<option value="apple2plus">Apple ][+</option>
<option value="apple2">Autostart Apple ][</option>
<option value="original">Apple ][</option>
<option value="apple2j">Apple ][j+</option>
<option value="apple2lc">Apple ][+ (lowercase font)</option>
<option value="apple2pig">Apple ][+ (pig font)</option>
</select>
</li>
<li>
@ -310,6 +287,6 @@
<div class="paper">
</div>
</div>
<script src="js/main2.js"></script>
<script src="dist/main2.js"></script>
</body>
</html>

View File

@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
Copyright 2010-2016 Will Scullin <scullin@scullinsteel.com>
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
@ -44,31 +44,6 @@
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js">
</script>
<!-- Emulator Scripts -->
<script type="text/javascript" src="js/util.js"></script>
<script type="text/javascript" src="js/prefs.js"></script>
<script type="text/javascript" src="js/ram.js"></script>
<script type="text/javascript" src="js/mmu.js"></script>
<script type="text/javascript" src="js/applesoft/decompiler.js"></script>
<script type="text/javascript" src="js/intbasic/decompiler.js"></script>
<script type="text/javascript" src="js/canvas.js"></script>
<script type="text/javascript" src="js/apple2io.js"></script>
<script type="text/javascript" src="js/cards/parallel.js"></script>
<script type="text/javascript" src="js/cards/disk2.js"></script>
<script type="text/javascript" src="js/cards/ramfactor.js"></script>
<script type="text/javascript" src="js/cards/thunderclock.js"></script>
<script type="text/javascript" src="js/cpu6502.js"></script>
<script type="text/javascript" src="js/base64.js"></script>
<script type="text/javascript" src="js/roms/apple2e.js"></script>
<script type="text/javascript" src="js/roms/apple2enh.js"></script>
<script type="text/javascript" src="js/roms/apple2e_char.js"></script>
<script type="text/javascript" src="js/roms/apple2enh_char.js"></script>
<script type="text/javascript" src="js/ui/audio.js"></script>
<script type="text/javascript" src="js/ui/keyboard.js"></script>
<script type="text/javascript" src="js/ui/gamepad.js"></script>
<script type="text/javascript" src="js/ui/printer.js"></script>
<script type="text/javascript" src="js/ui/tape.js"></script>
<!-- Disk Index -->
<script type="text/javascript" src="json/disks/index.js"></script>
@ -149,8 +124,8 @@
</div>
</div>
<input id="reset" type="button" value="Reset"
onclick="keyboard.reset(event)"
oncontextmenu="keyboard.reset(event)" />
onclick="reset(event)"
oncontextmenu="reset(event)" />
</div>
<div class="inset">
<div id="keyboard"></div>
@ -166,6 +141,7 @@
<select id="computer_type2e" value="apple2enh" onchange="updateCPU()">
<option value="apple2enh">Enhanced Apple //e</option>
<option value="apple2e">Apple //e</option>
<option value="apple2rm">Enhanced Apple //e (Reactive Micro)</option>
</select>
</li>
<li>
@ -287,6 +263,6 @@
<div class="paper">
</div>
</div>
<script src="js/main2e.js"></script>
<script type="text/javascript" src="dist/main2e.js"></script>
</body>
</html>

View File

@ -1,4 +1,4 @@
/* Copyright 2010-2016 Will Scullin */
/* Copyright 2010-2019 Will Scullin */
#header {
width: 580px;

View File

@ -4,7 +4,7 @@
var LOG = false;
function Test6502() {
export default function Test6502() {
var data = [
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

View File

@ -5,7 +5,7 @@
var LOG = false;
function Test65C02() {
export default function Test65C02() {
var data = [
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

View File

@ -1,4 +1,4 @@
/* Copyright 2010-2017 Will Scullin <scullin@scullinsteel.com>
/* 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
@ -9,13 +9,10 @@
* implied warranty.
*/
/*globals debug: false */
/*exported Apple2IO */
import { debug } from './util';
function Apple2IO(cpu, callbacks)
export default function Apple2IO(cpu, callbacks)
{
'use strict';
var _slot = [];
var _auxRom = null;

View File

@ -1,7 +1,6 @@
/*exported ApplesoftDump */
/*global debug */
import { debug } from '../util';
function ApplesoftDump(mem)
export default function ApplesoftDump(mem)
{
var _mem = mem;

View File

@ -1,6 +1,6 @@
/*exported base64_encode, base64_decode */
function base64_encode (data) {
export function base64_encode (data) {
// Twacked by Will Scullin to handle arrays of "bytes"
// http://kevin.vanzonneveld.net
@ -57,7 +57,7 @@ function base64_encode (data) {
return enc;
}
function base64_decode(data) {
export function base64_decode(data) {
// Twacked by Will Scullin to handle arrays of "bytes"
// http://kevin.vanzonneveld.net

View File

@ -1,4 +1,4 @@
/* Copyright 2010-2017 Will Scullin <scullin@scullinsteel.com>
/* 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
@ -9,11 +9,10 @@
* implied warranty.
*/
/*globals allocMemPages: false, debug: false,
base64_encode: false, base64_decode: false,
enhanced: false */
/*exported LoresPage, HiresPage, VideoModes, scanlines, multiScreen */
import { base64_decode, base64_encode } from './base64';
import { allocMemPages, debug } from './util';
var enhanced = false;
var multiScreen = false;
var textMode = true;
var mixedMode = false;
@ -52,10 +51,8 @@ var blackCol = [0x00, 0x00, 0x00];
*
***************************************************************************/
function LoresPage(page, charset, e, context)
export function LoresPage(page, charset, e, context)
{
'use strict';
// $00-$3F inverse
// $40-$7F flashing
// $80-$FF normal
@ -479,10 +476,8 @@ function LoresPage(page, charset, e, context)
*
***************************************************************************/
function HiresPage(page, context)
export function HiresPage(page, context)
{
'use strict';
var _page = page;
var _imageData;
var _dirty = {
@ -912,7 +907,7 @@ function HiresPage(page, context)
};
}
function VideoModes(gr, hgr, gr2, hgr2, e) {
export function VideoModes(gr, hgr, gr2, hgr2, e) {
var _grs = [gr, gr2];
var _hgrs = [hgr, hgr2];
var _seq = '';
@ -1052,6 +1047,12 @@ function VideoModes(gr, hgr, gr2, hgr2, e) {
_refresh();
}
},
enhanced: function(on) {
enhanced = on;
},
multiScreen: function(on) {
multiScreen = on;
},
isText: function() {
return textMode;
},

View File

@ -1,4 +1,4 @@
/* Copyright 2010-2017 Will Scullin <scullin@scullinsteel.com>
/* 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
@ -9,16 +9,11 @@
* implied warranty.
*/
/*exported DiskII */
/*globals bytify: false, debug: false
base64_decode: false, base64_encode: false
Uint8Array: false
*/
import { base64_decode, base64_encode } from '../base64';
import { bytify, debug } from '../util';
function DiskII(io, slot, callbacks)
export default function DiskII(io, slot, callbacks)
{
'use strict';
slot = slot || 6;
var _drives = [
{ // Drive 1
@ -791,6 +786,22 @@ function DiskII(io, slot, callbacks)
var s = _drives[disk - 1].fmt == 'po' ? _PO[sector] : _DO[sector];
return _readSector(disk, track, s);
},
getMetadata: function disk_getMetadata(driveNo) {
var drive = _drives[driveNo - 1];
if (drive.tracks.length) {
return {
format: drive.format,
volume: drive.volume,
track: drive.track,
head: drive.head,
phase: drive.phase,
readOnly: drive.readOnly,
dirty: drive.dirty
};
} else {
return null;
}
},
setDisk: function disk2_setDisk(drive, disk) {
var fmt = disk.type, readOnly = disk.readOnly;

View File

@ -1,4 +1,4 @@
/* Copyright 2010-2017 Will Scullin <scullin@scullinsteel.com>
/* 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
@ -9,13 +9,10 @@
* implied warranty.
*/
/*exported LanguageCard */
/*globals debug: false
RAM: false */
function LanguageCard(io, slot, rom) {
'use strict';
import RAM from '../ram';
import { debug } from '../util';
export default function LanguageCard(io, slot, rom) {
var _rom = rom;
var _bank1 = null;
var _bank2 = null;

View File

@ -1,4 +1,4 @@
/* Copyright 2010-2017 Will Scullin <scullin@scullinsteel.com>
/* 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
@ -9,12 +9,9 @@
* implied warranty.
*/
/*exported Parallel */
/*globals debug: false */
function Parallel(io, slot, cbs) {
'use strict';
import { debug } from '../util';
export default function Parallel(io, slot, cbs) {
slot = slot || 1;
debug('Parallel card in slot', slot);

View File

@ -1,4 +1,4 @@
/* Copyright 2010-2017 Will Scullin <scullin@scullinsteel.com>
/* 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
@ -9,13 +9,10 @@
* implied warranty.
*/
/*exported RAMFactor */
/*globals allocMem: false, bytify: false, debug: false,
base64_encode: false, base64_decode: false
*/
function RAMFactor(io, slot, size) {
'use strict';
import { base64_decode, base64_encode } from '../base64';
import { allocMem, bytify, debug } from '../util';
export default function RAMFactor(io, slot, size) {
var rom = [
0x43,0x4f,0x50,0x59,0x52,0x49,0x47,0x48,
0x54,0x20,0x28,0x43,0x29,0x20,0x31,0x39,

View File

@ -1,4 +1,4 @@
/* Copyright 2010-2017 Will Scullin <scullin@scullinsteel.com>
/* 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
@ -9,13 +9,10 @@
* implied warranty.
*/
/*exported Thunderclock */
/*global debug: false */
import { debug } from '../util';
function Thunderclock(io, slot)
export default function Thunderclock(io, slot)
{
'use strict';
var rom = [
0x08,0x78,0x28,0x2c,0x58,0xff,0x70,0x05, // 00
0x38,0xb0,0x01,0x18,0xb8,0x08,0x78,0x48,

View File

@ -9,12 +9,9 @@
* implied warranty.
*/
/*exported Videoterm */
/*globals debug: false, allocMemPages: false */
function Videoterm(io, slot, context) {
'use strict';
import { allocMemPages, debug } from '../util';
export default function Videoterm(io, slot, context) {
slot = slot || 3;
debug('Videx Videoterm card in slot', slot);

View File

@ -1,5 +1,5 @@
/*
* Copyright 2010-2017 Will Scullin <scullin@scullinsteel.com>
* 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
@ -10,13 +10,10 @@
* implied warranty.
*/
/*exported CPU6502 */
/*globals debug: false, toHex: false */
import { debug, toHex } from './util';
function CPU6502(options)
export default function CPU6502(options)
{
'use strict';
options = options || {};
var is65C02 = options['65C02'] ? true : false;

View File

@ -1,6 +1,6 @@
/*exported IntBasicDump */
function IntBasicDump(mem)
export default function IntBasicDump(mem)
{
var _mem = mem;

View File

@ -1,38 +1,35 @@
/* globals debug: false, gup: false, hup: false, toHex: false,
CPU6502: false,
RAM: false,
Apple2ROM: false, IntBASIC: false, OriginalROM: false,
Apple2jROM: false,
apple2_charset: false, apple2j_charset: false,
pigfont_charset: false, apple2lc_charset: false,
Apple2IO: false
LoresPage: false, HiresPage: false, VideoModes: false,
KeyBoard: false,
Parallel: false,
Videoterm: false,
DiskII: false,
Printer: false,
LanguageCard: false,
RAMFactor: false,
Thunderclock: false,
Prefs: false,
disk_index: false,
Audio: false,
initGamepad: false, processGamepad: false, gamepad: false,
Tape: false,
ApplesoftDump: false, SYMBOLS: false,
multiScreen: true
*/
/* exported openLoad, openSave, doDelete, handleDragOver, handleDragEnd, handleDrop,
selectCategory, selectDisk, clickDisk,
multiScreen,
updateJoystick,
pauseRun, step,
toggleSound,
restoreState, saveState,
dumpProgram, PageDebug,
enhanced
*/
import Apple2IO from './apple2io';
import ApplesoftDump from './applesoft/decompiler';
import { HiresPage, LoresPage, VideoModes, multiScreen } from './canvas';
import CPU6502 from './cpu6502';
import Prefs from './prefs';
import RAM from './ram';
import { debug, gup, hup } from './util';
import Audio from './ui/audio';
import { gamepad, configGamepad, initGamepad, processGamepad } from './ui/gamepad';
import KeyBoard from './ui/keyboard';
import Printer from './ui/printer';
import Tape from './ui/tape';
import DiskII from './cards/disk2';
import LanguageCard from './cards/langcard';
import Parallel from './cards/parallel';
import RAMFactor from './cards/ramfactor';
import Thunderclock from './cards/thunderclock';
import Videoterm from './cards/videoterm';
import apple2_charset from './roms/apple2_char';
import apple2j_charset from './roms/apple2j_char';
import apple2lc_charset from './roms/apple2lc_char';
import pigfont_charset from './roms/pigfont_char';
import Apple2ROM from './roms/fpbasic';
import Apple2jROM from './roms/apple2j_char';
import IntBASIC from './roms/intbasic';
import OriginalROM from './roms/original';
import SYMBOLS from './symbols';
var kHz = 1023;
@ -53,6 +50,7 @@ var trace = [];
* Page viewer
*/
/*
function PageDebug(page)
{
var _page = page;
@ -84,6 +82,7 @@ function PageDebug(page)
}
};
}
*/
var disk_categories = {'Local Saves': []};
var disk_sets = {};
@ -129,7 +128,7 @@ var TAPE_TYPES = ['wav','aiff','aif','mp3','m4a'];
var _currentDrive = 1;
function openLoad(drive, event)
window.openLoad = function(drive, event)
{
_currentDrive = parseInt(drive, 10);
if (event.metaKey) {
@ -140,9 +139,9 @@ function openLoad(drive, event)
}
$('#load').dialog('open');
}
}
};
function openSave(drive, event)
window.openSave = function(drive, event)
{
_currentDrive = parseInt(drive, 10);
@ -160,14 +159,14 @@ function openSave(drive, event)
$('#save_name').val(drivelights.label(drive));
$('#save').dialog('open');
}
}
};
function handleDragOver(drive, event) {
window.handleDragOver = function(drive, event) {
event.preventDefault();
event.dataTransfer.dropEffect = 'copy';
}
};
function handleDragEnd(drive, event) {
window.handleDragEnd = function(drive, event) {
var dt = event.dataTransfer;
if (dt.items) {
for (var i = 0; i < dt.items.length; i++) {
@ -176,9 +175,9 @@ function handleDragEnd(drive, event) {
} else {
event.dataTransfer.clearData();
}
}
};
function handleDrop(drive, event) {
window.handleDrop = function(drive, event) {
event.preventDefault();
event.stopPropagation();
@ -208,7 +207,7 @@ function handleDrop(drive, event) {
}
}
}
}
};
var loading = false;
@ -282,11 +281,11 @@ function doSave() {
$('#save').dialog('close');
}
function doDelete(name) {
window.doDelete = function(name) {
if (window.confirm('Delete ' + name + '?')) {
deleteLocalStorage(name);
}
}
};
function doLoadLocal(drive, file) {
var parts = file.name.split('.');
@ -352,7 +351,7 @@ function openManage() {
var prefs = new Prefs();
var romVersion = prefs.readPref('computer_type2');
var enhanced = false;
export var enhanced = false;
var rom;
var char_rom = apple2_charset;
switch (romVersion) {
@ -420,7 +419,7 @@ var dumper = new ApplesoftDump(cpu);
var drivelights = new DriveLights();
var io = new Apple2IO(cpu, vm);
var keyboard = new KeyBoard(io);
var keyboard = new KeyBoard(cpu, io);
var audio = new Audio(io);
var tape = new Tape(io);
var printer = new Printer($('#printer .paper'));
@ -449,7 +448,7 @@ io.setSlot(3, videoterm);
io.setSlot(6, disk2);
io.setSlot(7, clock);
var showFPS = false;
window.showFPS = false;
function updateKHz() {
var now = Date.now();
@ -457,7 +456,7 @@ function updateKHz() {
var cycles = cpu.cycles();
var delta;
if (showFPS) {
if (window.showFPS) {
delta = renderedFrames - lastFrames;
var fps = parseInt(delta/(ms/1000), 10);
$('#khz').text( fps + 'fps');
@ -472,7 +471,7 @@ function updateKHz() {
lastFrames = renderedFrames;
}
function updateSound() {
window.updateSound = function updateSound() {
var on = $('#enable_sound').prop('checked');
var label = $('#toggle-sound i');
audio.enable(on);
@ -481,7 +480,7 @@ function updateSound() {
} else {
label.removeClass('fa-volume-up').addClass('fa-volume-off');
}
}
};
function dumpDisk(drive) {
var wind = window.open('', '_blank');
@ -492,16 +491,16 @@ function dumpDisk(drive) {
wind.document.close();
}
function dumpProgram() {
window.dumpProgram = function() {
var wind = window.open('', '_blank');
wind.document.title = 'Program Listing';
wind.document.write('<pre>');
wind.document.write(dumper.toString());
wind.document.write('</pre>');
wind.document.close();
}
};
function step()
window.step = function()
{
if (runTimer) {
clearInterval(runTimer);
@ -512,11 +511,11 @@ function step()
debug(cpu.dumpRegisters());
debug(cpu.dumpPC());
});
}
};
var accelerated = false;
function updateCPU()
window.updateCPU = function updateCPU()
{
accelerated = $('#accelerator_toggle').prop('checked');
kHz = accelerated ? 4092 : 1023;
@ -524,7 +523,7 @@ function updateCPU()
if (runTimer) {
run();
}
}
};
var _requestAnimationFrame =
window.requestAnimationFrame ||
@ -685,7 +684,7 @@ function loadBinary(bin) {
run(bin.start);
}
function selectCategory() {
window.selectCategory = function() {
$('#disk_select').empty();
var cat = disk_categories[$('#category_select').val()];
if (cat) {
@ -701,15 +700,15 @@ function selectCategory() {
}
}
}
}
};
function selectDisk() {
window.selectDisk = function() {
$('#local_file').val('');
}
};
function clickDisk() {
window.clickDisk = function() {
doLoad();
}
};
function loadDisk(drive, disk) {
var name = disk.name;
@ -875,31 +874,32 @@ function _keyup(evt) {
}
}
function updateScreen() {
window.updateScreen = function updateScreen() {
var green = $('#green_screen').prop('checked');
var scanlines = $('#show_scanlines').prop('checked');
vm.green(green);
vm.scanlines(scanlines);
}
};
var disableMouseJoystick = false;
var flipX = false;
var flipY = false;
var swapXY = false;
function updateJoystick() {
window.updateJoystick = function() {
disableMouseJoystick = $('#disable_mouse').prop('checked');
flipX = $('#flip_x').prop('checked');
flipY = $('#flip_y').prop('checked');
swapXY = $('#swap_x_y').prop('checked');
configGamepad(flipX, flipY);
if (disableMouseJoystick) {
io.paddle(0, 0.5);
io.paddle(1, 0.5);
return;
}
}
};
function _mousemove(evt) {
if (gamepad || disableMouseJoystick) {
@ -921,7 +921,7 @@ function _mousemove(evt) {
io.paddle(1, flipY ? 1 - y : y);
}
function pauseRun() {
window.pauseRun = function() {
var label = $('#pause-run i');
if (paused) {
run();
@ -931,13 +931,13 @@ function pauseRun() {
label.removeClass('fa-pause').addClass('fa-play');
}
paused = !paused;
}
};
function toggleSound() {
window.toggleSound = function() {
var enableSound = $('#enable_sound');
enableSound.prop('checked', !enableSound.prop('checked'));
updateSound();
}
window.updateSound();
};
$(function() {
hashtag = document.location.hash;
@ -1000,9 +1000,9 @@ $(function() {
reset();
setInterval(updateKHz, 1000);
updateSound();
updateScreen();
updateCPU();
window.updateSound();
window.updateScreen();
window.updateCPU();
var cancel = function() { $(this).dialog('close'); };
$('#loading').dialog({ autoOpen: false, modal: true });
@ -1052,8 +1052,8 @@ $(function() {
}
var oldcat = '';
for (var idx = 0; idx < disk_index.length; idx++) {
var file = disk_index[idx];
for (var idx = 0; idx < window.disk_index.length; idx++) {
var file = window.disk_index[idx];
var cat = file.category;
var name = file.name, disk = file.disk;
if (file.e) {

View File

@ -1,35 +1,30 @@
/* globals debug: false, gup: false, hup: false, toHex: false,
CPU6502: false,
Apple2eROM: false, Apple2eEnhancedROM: false,
apple2e_charset: false, rmfont_charset: false,
apple2enh_charset: false,
Apple2IO: false
LoresPage: false, HiresPage: false, VideoModes: false,
KeyBoard: false,
Parallel: false,
DiskII: false,
Printer: false,
MMU: false,
RAMFactor: false,
Thunderclock: false,
Prefs: false,
disk_index: false,
Audio: false,
initGamepad: false, processGamepad: false, gamepad: false,
Tape: false,
ApplesoftDump: false, SYMBOLS: false,
multiScreen: true
*/
/* exported openLoad, openSave, doDelete, handleDragOver, handleDragEnd, handleDrop,
selectCategory, selectDisk, clickDisk,
multiScreen,
updateJoystick,
pauseRun, step,
toggleSound,
restoreState, saveState,
dumpProgram, PageDebug,
enhanced
*/
import Apple2IO from './apple2io';
import ApplesoftDump from './applesoft/decompiler';
import { HiresPage, LoresPage, VideoModes } from './canvas';
import CPU6502 from './cpu6502';
import MMU from './mmu';
import Prefs from './prefs';
import { debug, gup, hup } from './util';
import Audio from './ui/audio';
import { gamepad, configGamepad, initGamepad, processGamepad } from './ui/gamepad';
import KeyBoard from './ui/keyboard';
import Printer from './ui/printer';
import Tape from './ui/tape';
import DiskII from './cards/disk2';
import Parallel from './cards/parallel';
import RAMFactor from './cards/ramfactor';
import Thunderclock from './cards/thunderclock';
import apple2e_charset from './roms/apple2e_char';
import apple2enh_charset from './roms/apple2enh_char';
import rmfont_charset from './roms/rmfont_char';
import Apple2eROM from './roms/apple2e';
import Apple2eEnhancedROM from './roms/apple2enh';
import SYMBOLS from './symbols';
var kHz = 1023;
@ -50,6 +45,7 @@ var trace = [];
* Page viewer
*/
/*
function PageDebug(page)
{
var _page = page;
@ -81,6 +77,7 @@ function PageDebug(page)
}
};
}
*/
var disk_categories = {'Local Saves': []};
var disk_sets = {};
@ -126,7 +123,7 @@ var TAPE_TYPES = ['wav','aiff','aif','mp3','m4a'];
var _currentDrive = 1;
function openLoad(drive, event)
window.openLoad = function(drive, event)
{
_currentDrive = parseInt(drive, 10);
if (event.metaKey) {
@ -137,9 +134,9 @@ function openLoad(drive, event)
}
$('#load').dialog('open');
}
}
};
function openSave(drive, event)
window.openSave = function(drive, event)
{
_currentDrive = parseInt(drive, 10);
@ -157,14 +154,14 @@ function openSave(drive, event)
$('#save_name').val(drivelights.label(drive));
$('#save').dialog('open');
}
}
};
function handleDragOver(drive, event) {
window.handleDragOver = function(drive, event) {
event.preventDefault();
event.dataTransfer.dropEffect = 'copy';
}
};
function handleDragEnd(drive, event) {
window.handleDragEnd = function(drive, event) {
var dt = event.dataTransfer;
if (dt.items) {
for (var i = 0; i < dt.items.length; i++) {
@ -173,9 +170,9 @@ function handleDragEnd(drive, event) {
} else {
event.dataTransfer.clearData();
}
}
};
function handleDrop(drive, event) {
window.handleDrop = function(drive, event) {
event.preventDefault();
event.stopPropagation();
@ -195,7 +192,7 @@ function handleDrop(drive, event) {
doLoadLocal(1, dt.files[0]);
doLoadLocal(2, dt.files[1]);
}
}
};
var loading = false;
@ -269,11 +266,11 @@ function doSave() {
$('#save').dialog('close');
}
function doDelete(name) {
window.doDelete = function(name) {
if (window.confirm('Delete ' + name + '?')) {
deleteLocalStorage(name);
}
}
};
function doLoadLocal(drive, file) {
var parts = file.name.split('.');
@ -340,6 +337,7 @@ function openManage() {
var prefs = new Prefs();
var romVersion = prefs.readPref('computer_type2e');
var enhanced = false;
var multiScreen = false;
var rom;
var char_rom = apple2e_charset;
switch (romVersion) {
@ -390,11 +388,13 @@ var hgr = new HiresPage(1, context3);
var hgr2 = new HiresPage(2, context4);
var vm = new VideoModes(gr, hgr, gr2, hgr2, true);
vm.enhanced(enhanced);
vm.multiScreen(multiScreen);
var dumper = new ApplesoftDump(cpu);
var drivelights = new DriveLights();
var io = new Apple2IO(cpu, vm);
var keyboard = new KeyBoard(io, true);
var keyboard = new KeyBoard(cpu, io, true);
var audio = new Audio(io);
var tape = new Tape(io);
var printer = new Printer($('#printer .paper'));
@ -413,7 +413,7 @@ io.setSlot(2, slinky);
io.setSlot(6, disk2);
io.setSlot(7, clock);
var showFPS = false;
window.showFPS = false;
function updateKHz() {
var now = Date.now();
@ -421,7 +421,7 @@ function updateKHz() {
var cycles = cpu.cycles();
var delta;
if (showFPS) {
if (window.showFPS) {
delta = renderedFrames - lastFrames;
var fps = parseInt(delta/(ms/1000), 10);
$('#khz').text( fps + 'fps');
@ -436,7 +436,7 @@ function updateKHz() {
lastFrames = renderedFrames;
}
function updateSound() {
window.updateSound = function() {
var on = $('#enable_sound').prop('checked');
var label = $('#toggle-sound i');
audio.enable(on);
@ -445,7 +445,7 @@ function updateSound() {
} else {
label.removeClass('fa-volume-up').addClass('fa-volume-off');
}
}
};
function dumpDisk(drive) {
var wind = window.open('', '_blank');
@ -456,16 +456,16 @@ function dumpDisk(drive) {
wind.document.close();
}
function dumpProgram() {
window.dumpProgram = function() {
var wind = window.open('', '_blank');
wind.document.title = 'Program Listing';
wind.document.write('<pre>');
wind.document.write(dumper.toString());
wind.document.write('</pre>');
wind.document.close();
}
};
function step()
window.step = function()
{
if (runTimer) {
clearInterval(runTimer);
@ -476,11 +476,11 @@ function step()
debug(cpu.dumpRegisters());
debug(cpu.dumpPC());
});
}
};
var accelerated = false;
function updateCPU()
window.updateCPU = function()
{
accelerated = $('#accelerator_toggle').prop('checked');
kHz = accelerated ? 4092 : 1023;
@ -488,7 +488,7 @@ function updateCPU()
if (runTimer) {
run();
}
}
};
var _requestAnimationFrame =
window.requestAnimationFrame ||
@ -634,7 +634,7 @@ function loadBinary(bin) {
run(bin.start);
}
function selectCategory() {
window.selectCategory = function() {
$('#disk_select').empty();
var cat = disk_categories[$('#category_select').val()];
if (cat) {
@ -650,15 +650,15 @@ function selectCategory() {
}
}
}
}
};
function selectDisk() {
window.selectDisk = function() {
$('#local_file').val('');
}
};
function clickDisk() {
window.clickDisk = function() {
doLoad();
}
};
function loadDisk(drive, disk) {
var name = disk.name;
@ -770,6 +770,8 @@ function processHash(hash) {
* Keyboard/Gamepad routines
*/
window.reset = keyboard.reset;
function _keydown(evt) {
audio.autoStart();
@ -852,31 +854,32 @@ function _keyup(evt) {
}
}
function updateScreen() {
window.updateScreen = function() {
var green = $('#green_screen').prop('checked');
var scanlines = $('#show_scanlines').prop('checked');
vm.green(green);
vm.scanlines(scanlines);
}
};
var disableMouseJoystick = false;
var flipX = false;
var flipY = false;
var swapXY = false;
function updateJoystick() {
window.updateJoystick = function() {
disableMouseJoystick = $('#disable_mouse').prop('checked');
flipX = $('#flip_x').prop('checked');
flipY = $('#flip_y').prop('checked');
swapXY = $('#swap_x_y').prop('checked');
configGamepad(flipX, flipY);
if (disableMouseJoystick) {
io.paddle(0, 0.5);
io.paddle(1, 0.5);
return;
}
}
};
function _mousemove(evt) {
if (gamepad || disableMouseJoystick) {
@ -898,7 +901,7 @@ function _mousemove(evt) {
io.paddle(1, flipY ? 1 - y : y);
}
function pauseRun() {
window.pauseRun = function() {
var label = $('#pause-run i');
if (paused) {
run();
@ -908,13 +911,13 @@ function pauseRun() {
label.removeClass('fa-pause').addClass('fa-play');
}
paused = !paused;
}
};
function toggleSound() {
window.toggleSound = function() {
var enableSound = $('#enable_sound');
enableSound.prop('checked', !enableSound.prop('checked'));
updateSound();
}
window.updateSound();
};
$(function() {
hashtag = document.location.hash;
@ -977,9 +980,9 @@ $(function() {
reset();
setInterval(updateKHz, 1000);
updateSound();
updateScreen();
updateCPU();
window.updateSound();
window.updateScreen();
window.updateCPU();
var cancel = function() { $(this).dialog('close'); };
$('#loading').dialog({ autoOpen: false, modal: true });
@ -1029,8 +1032,8 @@ $(function() {
}
var oldcat = '';
for (var idx = 0; idx < disk_index.length; idx++) {
var file = disk_index[idx];
for (var idx = 0; idx < window.disk_index.length; idx++) {
var file = window.disk_index[idx];
var cat = file.category;
var name = file.name, disk = file.disk;
if (cat != oldcat) {

View File

@ -1,4 +1,4 @@
/* Copyright 2010-2017 Will Scullin <scullin@scullinsteel.com>
/* 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
@ -9,15 +9,11 @@
* implied warranty.
*/
/*exported MMU */
/*globals debug: false, toHex: false
RAM: false
*/
import RAM from './ram';
import { debug, toHex } from './util';
function MMU(cpu, vm, lores1, lores2, hires1, hires2, io, rom)
export default function MMU(cpu, vm, lores1, lores2, hires1, hires2, io, rom)
{
'use strict';
var idx;
var _readPages = new Array(0x100);
@ -494,7 +490,7 @@ function MMU(cpu, vm, lores1, lores2, hires1, hires2, io, rom)
}
break;
// Graphics Switches
// Graphics Switches
case LOC.PAGE1:
_page2 = false;
@ -523,7 +519,7 @@ function MMU(cpu, vm, lores1, lores2, hires1, hires2, io, rom)
_debug('Hires on');
break;
// Language Card Switches
// Language Card Switches
case LOC.READBSR2: // 0xC080
case LOC._READBSR2: // 0xC084
@ -590,7 +586,7 @@ function MMU(cpu, vm, lores1, lores2, hires1, hires2, io, rom)
//_debug('Bank 1 Read/Write');
break;
// Status registers
// Status registers
case LOC.BSRBANK2:
_debug('Bank 2 Read ' + !_bank1);

View File

@ -1,4 +1,4 @@
/* Copyright 2010-2017 Will Scullin <scullin@scullinsteel.com>
/* 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
@ -9,12 +9,8 @@
* implied warranty.
*/
/*exported Prefs */
function Prefs()
export default function Prefs()
{
'use strict';
return {
havePrefs: function() {
return typeof(localStorage) != 'undefined';

View File

@ -1,4 +1,4 @@
/* Copyright 2010-2017 Will Scullin <scullin@scullinsteel.com>
/* 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
@ -9,14 +9,10 @@
* implied warranty.
*/
/*exported RAM */
/*globals allocMemPages: false
base64_encode: false, base64_decode: false
*/
function RAM(sp, ep) {
'use strict';
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;

View File

@ -258,3 +258,5 @@ var apple2_charset = [
0x80,0x90,0x88,0x84,0x82,0x84,0x88,0x90,
0x80,0x9c,0xa2,0x84,0x88,0x88,0x80,0x88
];
export default apple2_charset;

View File

@ -1,6 +1,6 @@
/*exported Apple2eROM*/
function Apple2eROM()
export default function Apple2eROM()
{
var rom = [
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

View File

@ -514,3 +514,5 @@ var apple2e_charset = [
0x81,0x81,0x11,0x44,0x81,0x81,0x00,0x00,
0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x00
];
export default apple2e_charset;

View File

@ -1,6 +1,6 @@
/*exported Apple2eEnhancedROM */
function Apple2eEnhancedROM()
export default function Apple2eEnhancedROM()
{
var rom = [
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

View File

@ -514,3 +514,5 @@ var apple2enh_charset = [
0x81,0x81,0x11,0x44,0x81,0x81,0x00,0x00,
0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x00
];
export default apple2enh_charset;

1559
js/roms/apple2j.js Normal file

File diff suppressed because it is too large Load Diff

262
js/roms/apple2j_char.js Normal file
View File

@ -0,0 +1,262 @@
/* exported apple2j_charset */
var apple2j_charset = [
0xff,0xef,0xe1,0xed,0xd5,0xfb,0xf7,0xef,
0xff,0xfb,0xc7,0xf7,0xc1,0xf7,0xf7,0xef,
0xff,0xff,0xd5,0xd5,0xfd,0xfd,0xfb,0xf7,
0xff,0xff,0xe3,0xff,0xc1,0xf7,0xf7,0xef,
0xff,0xef,0xef,0xef,0xe7,0xeb,0xef,0xef,
0xff,0xf7,0xf7,0xc1,0xf7,0xf7,0xf7,0xef,
0xff,0xff,0xe3,0xff,0xff,0xff,0xff,0xc1,
0xff,0xff,0xc1,0xfd,0xeb,0xf7,0xeb,0xdf,
0xff,0xf7,0xc1,0xfb,0xf3,0xe5,0xd7,0xf7,
0xff,0xff,0xfd,0xfd,0xfb,0xf7,0xef,0xdf,
0xff,0xff,0xff,0xeb,0xed,0xed,0xed,0xdd,
0xff,0xff,0xdf,0xdf,0xc1,0xdf,0xdf,0xc1,
0xff,0xff,0xc1,0xfd,0xfd,0xfb,0xf7,0xef,
0xff,0xff,0xff,0xef,0xd7,0xfb,0xfd,0xff,
0xff,0xf7,0xf7,0xc1,0xf7,0xd5,0xd5,0xf7,
0xff,0xff,0xc1,0xfd,0xfd,0xeb,0xf7,0xfb,
0xff,0xef,0xf1,0xff,0xf1,0xff,0xef,0xf1,
0xff,0xff,0xfb,0xf7,0xef,0xdd,0xc1,0xfd,
0xff,0xff,0xfd,0xfd,0xeb,0xf7,0xeb,0xdf,
0xff,0xff,0xc3,0xef,0xc1,0xef,0xef,0xe1,
0xff,0xef,0xef,0xc1,0xed,0xeb,0xef,0xef,
0xff,0xff,0xe3,0xfb,0xfb,0xfb,0xfb,0xc1,
0xff,0xff,0xc1,0xfd,0xe1,0xfd,0xfd,0xc1,
0xff,0xff,0xe3,0xff,0xc1,0xfd,0xfd,0xf3,
0xff,0xff,0xed,0xed,0xed,0xfd,0xfd,0xfb,
0xff,0xff,0xd7,0xd7,0xd7,0xd5,0xd5,0xd3,
0xff,0xff,0xdf,0xdf,0xdd,0xdb,0xd7,0xcf,
0xff,0xff,0xc1,0xdd,0xdd,0xdd,0xdd,0xc1,
0xff,0xff,0xc1,0xdd,0xdd,0xfd,0xfb,0xf7,
0xff,0xff,0xcf,0xfd,0xfd,0xfb,0xf7,0xcf,
0xff,0xd7,0xd7,0xff,0xff,0xff,0xff,0xff,
0xff,0xef,0xd7,0xef,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xef,0xd7,0xef,
0xff,0xe1,0xef,0xef,0xef,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xfb,0xfb,0xfb,0xc3,
0xff,0xff,0xff,0xff,0xff,0xef,0xef,0xdf,
0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,
0xff,0xff,0xc1,0xfd,0xc1,0xfd,0xfb,0xf7,
0xff,0xff,0xff,0xe1,0xfd,0xf3,0xf7,0xef,
0xff,0xff,0xff,0xfb,0xf7,0xe7,0xd7,0xf7,
0xff,0xff,0xc1,0xdd,0xdd,0xdd,0xdd,0xc1,
0xff,0xff,0xc1,0xdd,0xdd,0xfd,0xfb,0xf7,
0xff,0xff,0xef,0xd7,0xef,0xff,0xff,0xff,
0xff,0xff,0xff,0xef,0xc1,0xed,0xeb,0xef,
0xff,0xff,0xff,0xff,0xe3,0xfb,0xfb,0xc1,
0xff,0xff,0xff,0xe1,0xfd,0xe1,0xfd,0xe1,
0xff,0xff,0xff,0xff,0xd5,0xd5,0xfd,0xf3,
0xff,0xff,0xff,0xff,0xc1,0xff,0xff,0xff,
0xff,0xff,0xc1,0xfd,0xf3,0xf7,0xf7,0xef,
0xff,0xfb,0xf7,0xe7,0xd7,0xf7,0xf7,0xf7,
0xff,0xf7,0xc1,0xdd,0xfd,0xfb,0xf7,0xef,
0xff,0xff,0xc1,0xf7,0xf7,0xf7,0xf7,0xc1,
0xff,0xfb,0xc1,0xfb,0xf3,0xeb,0xdb,0xfb,
0xff,0xf7,0xf7,0xc1,0xf5,0xf5,0xed,0xdb,
0xff,0xf7,0xc1,0xf7,0xc1,0xf7,0xf7,0xf7,
0xff,0xff,0xe1,0xed,0xdd,0xfb,0xf7,0xef,
0xff,0xef,0xef,0xe1,0xdb,0xfb,0xfb,0xf7,
0xff,0xff,0xc1,0xfd,0xfd,0xfd,0xfd,0xc1,
0xff,0xff,0xeb,0xc1,0xeb,0xeb,0xfb,0xf7,
0xff,0xff,0xcf,0xff,0xcd,0xfd,0xfb,0xc7,
0xff,0xff,0xc1,0xfd,0xfb,0xf7,0xeb,0xdd,
0xff,0xff,0xef,0xc1,0xed,0xeb,0xef,0xe1,
0xff,0xff,0xdd,0xed,0xfd,0xfd,0xfb,0xf7,
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,
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,
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,
];
export default apple2j_charset;

262
js/roms/apple2lc_char.js Normal file
View File

@ -0,0 +1,262 @@
/*exported apple2lc_charset */
var apple2lc_charset = [
0x1c,0x22,0x2a,0x2a,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,0x26,0x22,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,
0x08,0x14,0x22,0x00,0x00,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,
0x32,0x32,0x04,0x08,0x10,0x26,0x26,0x00,
0x18,0x24,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,0x00,0x18,0x08,0x10,
0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x18,0x18,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,0x18,0x18,0x00,0x18,0x18,0x00,
0x00,0x00,0x18,0x18,0x00,0x18,0x08,0x10,
0x04,0x08,0x10,0x20,0x10,0x08,0x04,0x00,
0x00,0x00,0x3c,0x00,0x3c,0x00,0x00,0x00,
0x10,0x08,0x04,0x02,0x04,0x08,0x10,0x00,
0x1c,0x22,0x04,0x08,0x08,0x00,0x08,0x00,
0x9c,0xa2,0xaa,0xaa,0xac,0xa0,0x9e,0x80,
0x88,0x94,0xa2,0xa2,0xbe,0xa2,0xa2,0x80,
0xbc,0xa2,0xa2,0xbc,0xa2,0xa2,0xbc,0x80,
0x9c,0xa2,0xa0,0xa0,0xa0,0xa2,0x9c,0x80,
0xbc,0xa2,0xa2,0xa2,0xa2,0xa2,0xbc,0x80,
0xbe,0xa0,0xa0,0xbc,0xa0,0xa0,0xbe,0x80,
0xbe,0xa0,0xa0,0xbc,0xa0,0xa0,0xa0,0x80,
0x9e,0xa0,0xa0,0xa6,0xa2,0xa2,0x9e,0x80,
0xa2,0xa2,0xa2,0xbe,0xa2,0xa2,0xa2,0x80,
0x9c,0x88,0x88,0x88,0x88,0x88,0x9c,0x80,
0x82,0x82,0x82,0x82,0x82,0xa2,0x9c,0x80,
0xa2,0xa4,0xa8,0xb0,0xa8,0xa4,0xa2,0x80,
0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xbe,0x80,
0xa2,0xb6,0xaa,0xaa,0xa2,0xa2,0xa2,0x80,
0xa2,0xa2,0xb2,0xaa,0xa6,0xa2,0xa2,0x80,
0x9c,0xa2,0xa2,0xa2,0xa2,0xa2,0x9c,0x80,
0xbc,0xa2,0xa2,0xbc,0xa0,0xa0,0xa0,0x80,
0x9c,0xa2,0xa2,0xa2,0xaa,0xa4,0x9a,0x80,
0xbc,0xa2,0xa2,0xbc,0xa8,0xa4,0xa2,0x80,
0x9c,0xa2,0xa0,0x9c,0x82,0xa2,0x9c,0x80,
0xbe,0x88,0x88,0x88,0x88,0x88,0x88,0x80,
0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0x9c,0x80,
0xa2,0xa2,0xa2,0xa2,0xa2,0x94,0x88,0x80,
0xa2,0xa2,0xa2,0xaa,0xaa,0xb6,0xa2,0x80,
0xa2,0xa2,0x94,0x88,0x94,0xa2,0xa2,0x80,
0xa2,0xa2,0x94,0x88,0x88,0x88,0x88,0x80,
0xbe,0x82,0x84,0x88,0x90,0xa0,0xbe,0x80,
0xbe,0xb0,0xb0,0xb0,0xb0,0xb0,0xbe,0x80,
0x80,0xa0,0x90,0x88,0x84,0x82,0x80,0x80,
0xbe,0x86,0x86,0x86,0x86,0x86,0xbe,0x80,
0x88,0x94,0xa2,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0xbe,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x88,0x88,0x88,0x88,0x88,0x80,0x88,0x80,
0x94,0x94,0x94,0x80,0x80,0x80,0x80,0x80,
0x94,0x94,0xbe,0x94,0xbe,0x94,0x94,0x80,
0x88,0x9e,0xa8,0x9c,0x8a,0xbc,0x88,0x80,
0xb2,0xb2,0x84,0x88,0x90,0xa6,0xa6,0x80,
0x98,0xa4,0xa8,0x90,0xaa,0xa4,0x9a,0x80,
0x88,0x88,0x88,0x80,0x80,0x80,0x80,0x80,
0x88,0x90,0xa0,0xa0,0xa0,0x90,0x88,0x80,
0x88,0x84,0x82,0x82,0x82,0x84,0x88,0x80,
0x88,0xaa,0x9c,0x88,0x9c,0xaa,0x88,0x80,
0x80,0x88,0x88,0xbe,0x88,0x88,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x98,0x88,0x90,
0x80,0x80,0x80,0x9c,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x98,0x98,0x80,
0x80,0x82,0x84,0x88,0x90,0xa0,0x80,0x80,
0x9c,0xa2,0xa6,0xaa,0xb2,0xa2,0x9c,0x80,
0x88,0x98,0x88,0x88,0x88,0x88,0x9c,0x80,
0x9c,0xa2,0x82,0x8c,0x90,0xa0,0xbe,0x80,
0xbe,0x82,0x84,0x8c,0x82,0xa2,0x9c,0x80,
0x84,0x8c,0x94,0xa4,0xbe,0x84,0x84,0x80,
0xbe,0xa0,0xbc,0x82,0x82,0xa2,0x9c,0x80,
0x8e,0x90,0xa0,0xbc,0xa2,0xa2,0x9c,0x80,
0xbe,0x82,0x84,0x88,0x90,0x90,0x90,0x80,
0x9c,0xa2,0xa2,0x9c,0xa2,0xa2,0x9c,0x80,
0x9c,0xa2,0xa2,0x9e,0x82,0x84,0xb8,0x80,
0x80,0x80,0x98,0x98,0x80,0x98,0x98,0x80,
0x80,0x80,0x98,0x98,0x80,0x98,0x88,0x90,
0x84,0x88,0x90,0xa0,0x90,0x88,0x84,0x80,
0x80,0x80,0xbc,0x80,0xbc,0x80,0x80,0x80,
0x90,0x88,0x84,0x82,0x84,0x88,0x90,0x80,
0x9c,0xa2,0x84,0x88,0x88,0x80,0x88,0x80,
0x1c,0x22,0x2a,0x2a,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,0x26,0x22,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,
0x08,0x14,0x22,0x00,0x00,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,
0x32,0x32,0x04,0x08,0x10,0x26,0x26,0x00,
0x18,0x24,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,0x00,0x18,0x08,0x10,
0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x18,0x18,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,0x18,0x18,0x00,0x18,0x18,0x00,
0x00,0x00,0x18,0x18,0x00,0x18,0x08,0x10,
0x04,0x08,0x10,0x20,0x10,0x08,0x04,0x00,
0x00,0x00,0x3c,0x00,0x3c,0x00,0x00,0x00,
0x10,0x08,0x04,0x02,0x04,0x08,0x10,0x00,
0x1c,0x22,0x04,0x08,0x08,0x00,0x08,0x00,
0x1c,0x22,0x2a,0x2a,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,0x26,0x22,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,
0x08,0x14,0x22,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,
0x20,0x10,0x08,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x1c,0x02,0x1e,0x22,0x1e,0x00,
0x20,0x20,0x2c,0x32,0x22,0x32,0x2c,0x00,
0x00,0x00,0x1e,0x20,0x20,0x20,0x1e,0x00,
0x02,0x02,0x1a,0x26,0x22,0x26,0x1a,0x00,
0x00,0x00,0x1c,0x22,0x3e,0x20,0x1c,0x00,
0x0c,0x12,0x10,0x38,0x10,0x10,0x10,0x00,
0x00,0x02,0x1c,0x22,0x22,0x1e,0x02,0x1c,
0x20,0x20,0x2c,0x32,0x22,0x22,0x22,0x00,
0x08,0x00,0x18,0x08,0x08,0x08,0x1c,0x00,
0x04,0x00,0x0c,0x04,0x04,0x04,0x24,0x18,
0x20,0x20,0x22,0x24,0x38,0x24,0x22,0x00,
0x18,0x08,0x08,0x08,0x08,0x08,0x1c,0x00,
0x00,0x00,0x34,0x2a,0x2a,0x2a,0x2a,0x00,
0x00,0x00,0x2c,0x32,0x22,0x22,0x22,0x00,
0x00,0x00,0x1c,0x22,0x22,0x22,0x1c,0x00,
0x00,0x00,0x2c,0x32,0x32,0x2c,0x20,0x20,
0x00,0x00,0x1a,0x26,0x26,0x1a,0x02,0x02,
0x00,0x00,0x2c,0x30,0x20,0x20,0x20,0x00,
0x00,0x00,0x1e,0x20,0x1c,0x02,0x3c,0x00,
0x10,0x10,0x38,0x10,0x10,0x12,0x0c,0x00,
0x00,0x00,0x22,0x22,0x22,0x26,0x1a,0x00,
0x00,0x00,0x22,0x22,0x22,0x14,0x08,0x00,
0x00,0x00,0x22,0x2a,0x2a,0x2a,0x14,0x00,
0x00,0x00,0x22,0x14,0x08,0x14,0x22,0x00,
0x00,0x00,0x22,0x22,0x26,0x1a,0x02,0x1c,
0x00,0x00,0x3e,0x04,0x08,0x10,0x3e,0x00,
0x06,0x08,0x08,0x30,0x08,0x08,0x06,0x00,
0x08,0x08,0x08,0x00,0x08,0x08,0x08,0x00,
0x30,0x08,0x08,0x06,0x08,0x08,0x30,0x00,
0x00,0x00,0x10,0x2a,0x04,0x00,0x00,0x00,
0x2a,0x14,0x2a,0x14,0x2a,0x14,0x2a,0x00
];
export default apple2lc_charset;

View File

@ -1,5 +1,4 @@
/*exported Apple2ROM */
function Apple2ROM()
export default function Apple2ROM()
{
var rom = [
0x6f,0xd8,0x65,0xd7,0xf8,0xdc,0x94,0xd9,

View File

@ -1,6 +1,4 @@
/*exported IntBASIC */
function IntBASIC()
export default function IntBASIC()
{
var rom = [
0xa9,0x20,0x8d,0x26,0x03,0xad,0x57,0xc0,

View File

@ -1,6 +1,4 @@
/*exported OriginalROM */
function OriginalROM()
export default function OriginalROM()
{
var rom = [
0xa9,0x20,0x8d,0x26,0x03,0xad,0x57,0xc0,

262
js/roms/pigfont_char.js Normal file
View File

@ -0,0 +1,262 @@
/*exported pigfont_charset */
var pigfont_charset = [
0x00,0x1c,0x22,0x2a,0x2e,0x20,0x1e,0x00,
0x0c,0x12,0x21,0x3f,0x21,0x21,0x00,0x00,
0x3e,0x11,0x1e,0x11,0x11,0x3e,0x00,0x00,
0x1e,0x21,0x20,0x20,0x21,0x1e,0x00,0x00,
0x3e,0x01,0x11,0x11,0x11,0x3e,0x00,0x00,
0x3f,0x00,0x3c,0x20,0x20,0x3f,0x00,0x00,
0x3f,0x00,0x3c,0x20,0x20,0x20,0x00,0x00,
0x1e,0x20,0x27,0x21,0x21,0x1e,0x00,0x00,
0x21,0x21,0x7f,0x21,0x21,0x21,0x00,0x00,
0x0e,0x04,0x04,0x04,0x04,0x0e,0x00,0x00,
0x07,0x02,0x02,0x02,0x22,0x1c,0x00,0x00,
0x22,0x24,0x38,0x24,0x22,0x21,0x00,0x00,
0x20,0x20,0x20,0x20,0x20,0x3f,0x00,0x00,
0x21,0x33,0x2d,0x2d,0x21,0x21,0x00,0x00,
0x21,0x31,0x29,0x25,0x23,0x21,0x00,0x00,
0x1e,0x01,0x21,0x21,0x21,0x1e,0x00,0x00,
0x3e,0x01,0x3e,0x20,0x20,0x20,0x00,0x00,
0x1e,0x01,0x21,0x25,0x22,0x1d,0x00,0x00,
0x3e,0x01,0x3e,0x24,0x22,0x21,0x00,0x00,
0x1e,0x20,0x1e,0x01,0x21,0x1e,0x00,0x00,
0x7f,0x08,0x08,0x08,0x08,0x08,0x00,0x00,
0x21,0x21,0x21,0x21,0x21,0x1e,0x00,0x00,
0x21,0x21,0x12,0x12,0x0c,0x0c,0x00,0x00,
0x21,0x21,0x2d,0x2d,0x33,0x21,0x00,0x00,
0x21,0x12,0x0c,0x12,0x21,0x21,0x00,0x00,
0x41,0x22,0x1c,0x08,0x08,0x08,0x00,0x00,
0x3f,0x01,0x06,0x18,0x20,0x3f,0x00,0x00,
0x3e,0x30,0x30,0x30,0x30,0x3e,0x00,0x00,
0x00,0x20,0x10,0x08,0x04,0x02,0x00,0x00,
0x3e,0x06,0x06,0x06,0x06,0x3e,0x00,0x00,
0x0c,0x12,0x21,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x0c,0x0c,0x0c,0x0c,0x00,0x0c,0x00,0x00,
0x33,0x33,0x33,0x00,0x00,0x00,0x00,0x00,
0x12,0x3f,0x12,0x3f,0x12,0x00,0x00,0x00,
0x0a,0x1f,0x20,0x1e,0x01,0x3e,0x14,0x00,
0x31,0x32,0x04,0x08,0x13,0x23,0x00,0x00,
0x18,0x24,0x18,0x25,0x22,0x1d,0x00,0x00,
0x06,0x06,0x0c,0x00,0x00,0x00,0x00,0x00,
0x02,0x04,0x08,0x08,0x04,0x02,0x00,0x00,
0x10,0x08,0x04,0x04,0x08,0x10,0x00,0x00,
0x00,0x04,0x15,0x0e,0x15,0x04,0x00,0x00,
0x00,0x0c,0x0c,0x3f,0x0c,0x0c,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x0c,0x0c,0x18,
0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0c,0x0c,0x00,0x00,
0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x00,
0x1e,0x03,0x25,0x29,0x31,0x1e,0x00,0x00,
0x04,0x0c,0x14,0x04,0x04,0x1f,0x00,0x00,
0x1e,0x21,0x06,0x18,0x20,0x3f,0x00,0x00,
0x1e,0x21,0x0e,0x01,0x21,0x1e,0x00,0x00,
0x02,0x06,0x0a,0x12,0x3f,0x02,0x00,0x00,
0x3f,0x00,0x3e,0x01,0x21,0x1e,0x00,0x00,
0x1e,0x20,0x3e,0x21,0x21,0x1e,0x00,0x00,
0x3f,0x21,0x02,0x04,0x08,0x08,0x00,0x00,
0x1e,0x21,0x1e,0x21,0x21,0x1e,0x00,0x00,
0x1e,0x21,0x1f,0x01,0x02,0x1c,0x00,0x00,
0x00,0x0c,0x0c,0x00,0x0c,0x0c,0x00,0x00,
0x00,0x00,0x0c,0x0c,0x00,0x0c,0x0c,0x18,
0x00,0x03,0x0c,0x30,0x0c,0x03,0x00,0x00,
0x00,0x00,0x3e,0x00,0x3e,0x00,0x00,0x00,
0x00,0x30,0x0c,0x03,0x0c,0x30,0x00,0x00,
0x1e,0x21,0x06,0x08,0x00,0x08,0x00,0x00,
0x9e,0xa1,0xad,0xae,0xa0,0x9f,0x80,0x80,
0x8c,0x92,0xa1,0xbf,0xa1,0xa1,0x80,0x80,
0xbe,0x81,0x9e,0x91,0x91,0xbe,0x80,0x80,
0x9e,0xa1,0xa0,0xa0,0xa1,0x9e,0x80,0x80,
0xbe,0x81,0x91,0x91,0x91,0xbe,0x80,0x80,
0xbf,0x80,0xbc,0xa0,0xa0,0xbf,0x80,0x80,
0xbf,0x80,0xbc,0xa0,0xa0,0xa0,0x80,0x80,
0x9e,0xa0,0xa7,0xa1,0xa1,0x9e,0x80,0x80,
0xa1,0xa1,0xbf,0xa1,0xa1,0xa1,0x80,0x80,
0x8e,0x84,0x84,0x84,0x84,0x8e,0x80,0x80,
0x87,0x82,0x82,0x82,0xa2,0x9c,0x80,0x80,
0xa2,0xa4,0xb8,0xa4,0xa2,0xa1,0x80,0x80,
0xa0,0xa0,0xa0,0xa0,0xa0,0xbf,0x80,0x80,
0xa1,0xb3,0xad,0xad,0xa1,0xa1,0x80,0x80,
0xa1,0xb1,0xa9,0xa5,0xa3,0xa1,0x80,0x80,
0x9e,0x81,0xa1,0xa1,0xa1,0x9e,0x80,0x80,
0xbe,0x81,0xbe,0xa0,0xa0,0xa0,0x80,0x80,
0x9e,0x81,0xa1,0xa5,0xa2,0x9d,0x80,0x80,
0xbe,0x81,0xbe,0xa4,0xa2,0xa1,0x80,0x80,
0x9e,0xa0,0x9e,0x81,0xa1,0x9e,0x80,0x80,
0xff,0x88,0x88,0x88,0x88,0x88,0x80,0x80,
0xa1,0xa1,0xa1,0xa1,0xa1,0x9e,0x80,0x80,
0xa1,0xa1,0x92,0x92,0x8c,0x8c,0x80,0x80,
0xa1,0xa1,0xad,0xad,0xb3,0xa1,0x80,0x80,
0xa1,0x92,0x8c,0x92,0xa1,0xa1,0x80,0x80,
0xc1,0xa2,0x9c,0x88,0x88,0x88,0x80,0x80,
0xbf,0x81,0x86,0x98,0xa0,0xbf,0x80,0x80,
0xbe,0xb0,0xb0,0xb0,0xb0,0xbe,0x80,0x80,
0x80,0xa0,0x90,0x88,0x84,0x82,0x80,0x80,
0xbe,0x86,0x86,0x86,0x86,0xbe,0x80,0x80,
0x8c,0x92,0xa1,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x8c,0x8c,0x8c,0x8c,0x80,0x8c,0x80,0x80,
0xb3,0xb3,0xb3,0x80,0x80,0x80,0x80,0x80,
0x92,0xbf,0x92,0xbf,0x92,0x80,0x80,0x80,
0x8a,0x9f,0xa0,0x9e,0x81,0xbe,0x94,0x80,
0xb1,0xb2,0x84,0x88,0x93,0xa3,0x80,0x80,
0x98,0xa4,0x98,0xa5,0xa2,0x9d,0x80,0x80,
0x86,0x86,0x8c,0x80,0x80,0x80,0x80,0x80,
0x82,0x84,0x88,0x88,0x84,0x82,0x80,0x80,
0x90,0x88,0x84,0x84,0x88,0x90,0x80,0x80,
0x80,0x84,0x95,0x8e,0x95,0x84,0x80,0x80,
0x80,0x8c,0x8c,0xbf,0x8c,0x8c,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x8c,0x8c,0x98,
0x80,0x80,0x80,0xbf,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x8c,0x8c,0x80,0x80,
0x80,0x82,0x84,0x88,0x90,0xa0,0x80,0x80,
0x9e,0x83,0xa5,0xa9,0xb1,0x9e,0x80,0x80,
0x84,0x8c,0x94,0x84,0x84,0x9f,0x80,0x80,
0x9e,0xa1,0x86,0x98,0xa0,0xbf,0x80,0x80,
0x9e,0xa1,0x8e,0x81,0xa1,0x9e,0x80,0x80,
0x82,0x86,0x8a,0x92,0xbf,0x82,0x80,0x80,
0xbf,0x80,0xbe,0x81,0xa1,0x9e,0x80,0x80,
0x9e,0xa0,0xbe,0xa1,0xa1,0x9e,0x80,0x80,
0xbf,0xa1,0x82,0x84,0x88,0x88,0x80,0x80,
0x9e,0xa1,0x9e,0xa1,0xa1,0x9e,0x80,0x80,
0x9e,0xa1,0x9f,0x81,0x82,0x9c,0x80,0x80,
0x80,0x8c,0x8c,0x80,0x8c,0x8c,0x80,0x80,
0x80,0x80,0x8c,0x8c,0x80,0x8c,0x8c,0x98,
0x80,0x83,0x8c,0xb0,0x8c,0x83,0x80,0x80,
0x80,0x80,0xbe,0x80,0xbe,0x80,0x80,0x80,
0x80,0xb0,0x8c,0x83,0x8c,0xb0,0x80,0x80,
0x9e,0xa1,0x86,0x88,0x80,0x88,0x80,0x80,
0x1e,0x21,0x2d,0x2e,0x20,0x1f,0x00,0x00,
0x0c,0x12,0x21,0x3f,0x21,0x21,0x00,0x00,
0x3e,0x01,0x1e,0x11,0x11,0x3e,0x00,0x00,
0x1e,0x21,0x20,0x20,0x21,0x1e,0x00,0x00,
0x3e,0x01,0x11,0x11,0x11,0x3e,0x00,0x00,
0x3f,0x00,0x3c,0x20,0x20,0x3f,0x00,0x00,
0x3f,0x00,0x3c,0x20,0x20,0x20,0x00,0x00,
0x1e,0x20,0x27,0x21,0x21,0x1e,0x00,0x00,
0x21,0x21,0x3f,0x21,0x21,0x21,0x00,0x00,
0x0e,0x04,0x04,0x04,0x04,0x0e,0x00,0x00,
0x07,0x02,0x02,0x02,0x22,0x1c,0x00,0x00,
0x22,0x24,0x38,0x24,0x22,0x21,0x00,0x00,
0x20,0x20,0x20,0x20,0x20,0x3f,0x00,0x00,
0x21,0x33,0x2d,0x2d,0x21,0x21,0x00,0x00,
0x21,0x31,0x29,0x25,0x23,0x21,0x00,0x00,
0x1e,0x01,0x21,0x21,0x21,0x1e,0x00,0x00,
0x3e,0x01,0x3e,0x20,0x20,0x20,0x00,0x00,
0x1e,0x01,0x21,0x25,0x22,0x1d,0x00,0x00,
0x3e,0x01,0x3e,0x24,0x22,0x21,0x00,0x00,
0x1e,0x20,0x1e,0x01,0x21,0x1e,0x00,0x00,
0x7f,0x08,0x08,0x08,0x08,0x08,0x00,0x00,
0x21,0x21,0x21,0x21,0x21,0x1e,0x00,0x00,
0x21,0x21,0x12,0x12,0x0c,0x0c,0x00,0x00,
0x21,0x21,0x2d,0x2d,0x33,0x21,0x00,0x00,
0x21,0x12,0x0c,0x12,0x21,0x21,0x00,0x00,
0x41,0x22,0x1c,0x08,0x08,0x08,0x00,0x00,
0x3f,0x01,0x06,0x18,0x20,0x3f,0x00,0x00,
0x3e,0x30,0x30,0x30,0x30,0x3e,0x00,0x00,
0x00,0x20,0x10,0x08,0x04,0x02,0x00,0x00,
0x3e,0x06,0x06,0x06,0x06,0x3e,0x00,0x00,
0x0c,0x12,0x21,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x0c,0x0c,0x0c,0x0c,0x00,0x0c,0x00,0x00,
0x33,0x33,0x33,0x00,0x00,0x00,0x00,0x00,
0x12,0x3f,0x12,0x3f,0x12,0x00,0x00,0x00,
0x0a,0x1f,0x20,0x1e,0x01,0x3e,0x14,0x00,
0x31,0x32,0x04,0x08,0x13,0x23,0x00,0x00,
0x18,0x24,0x18,0x25,0x22,0x1d,0x00,0x00,
0x06,0x06,0x0c,0x00,0x00,0x00,0x00,0x00,
0x02,0x04,0x08,0x08,0x04,0x02,0x00,0x00,
0x10,0x08,0x04,0x04,0x08,0x10,0x00,0x00,
0x00,0x04,0x15,0x0e,0x15,0x04,0x00,0x00,
0x00,0x0c,0x0c,0x3f,0x0c,0x0c,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x0c,0x0c,0x18,
0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0c,0x0c,0x00,0x00,
0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x00,
0x1e,0x03,0x25,0x29,0x31,0x1e,0x00,0x00,
0x04,0x0c,0x14,0x04,0x04,0x1f,0x00,0x00,
0x1e,0x21,0x06,0x18,0x20,0x3f,0x00,0x00,
0x1e,0x21,0x0e,0x01,0x21,0x1e,0x00,0x00,
0x02,0x06,0x0a,0x12,0x3f,0x02,0x00,0x00,
0x3f,0x00,0x3e,0x01,0x21,0x1e,0x00,0x00,
0x1e,0x20,0x3e,0x21,0x21,0x1e,0x00,0x00,
0x3f,0x21,0x02,0x04,0x08,0x08,0x00,0x00,
0x1e,0x21,0x1e,0x21,0x21,0x1e,0x00,0x00,
0x1e,0x21,0x1f,0x01,0x02,0x1c,0x00,0x00,
0x00,0x0c,0x0c,0x00,0x0c,0x0c,0x00,0x00,
0x00,0x00,0x0c,0x0c,0x00,0x0c,0x0c,0x18,
0x00,0x03,0x0c,0x30,0x0c,0x03,0x00,0x00,
0x00,0x00,0x3e,0x00,0x3e,0x00,0x00,0x00,
0x00,0x30,0x0c,0x03,0x0c,0x30,0x00,0x00,
0x1e,0x21,0x06,0x08,0x00,0x08,0x00,0x00,
0x9e,0xa1,0xad,0xae,0xa0,0x9f,0x80,0x80,
0x8c,0x92,0xa1,0xbf,0xa1,0xa1,0x80,0x80,
0xbe,0x81,0x9e,0x91,0x91,0xbe,0x80,0x80,
0x9e,0xa1,0xa0,0xa0,0xa1,0x9e,0x80,0x80,
0xbe,0x81,0x91,0x91,0x91,0xbe,0x80,0x80,
0xbf,0x80,0xbc,0xa0,0xa0,0xbf,0x80,0x80,
0xbf,0x80,0xbc,0xa0,0xa0,0xa0,0x80,0x80,
0x9e,0xa0,0xa7,0xa1,0xa1,0x9e,0x80,0x80,
0xa1,0xa1,0xbf,0xa1,0xa1,0xa1,0x80,0x80,
0x8e,0x84,0x84,0x84,0x84,0x8e,0x80,0x80,
0x87,0x82,0x82,0x82,0xa2,0x9c,0x80,0x80,
0xa2,0xa4,0xb8,0xa4,0xa2,0xa1,0x80,0x80,
0xa0,0xa0,0xa0,0xa0,0xa0,0xbf,0x80,0x80,
0xa1,0xb3,0xad,0xad,0xa1,0xa1,0x80,0x80,
0xa1,0xb1,0xa9,0xa5,0xa3,0xa1,0x80,0x80,
0x9e,0x81,0xa1,0xa1,0xa1,0x9e,0x80,0x80,
0xbe,0x81,0xbe,0xa0,0xa0,0xa0,0x80,0x80,
0x9e,0x81,0xa1,0xa5,0xa2,0x9d,0x80,0x80,
0xbe,0x81,0xbe,0xa4,0xa2,0xa1,0x80,0x80,
0x9e,0xa0,0x9e,0x81,0xa1,0x9e,0x80,0x80,
0xff,0x88,0x88,0x88,0x88,0x88,0x80,0x80,
0xa1,0xa1,0xa1,0xa1,0xa1,0x9e,0x80,0x80,
0xa1,0xa1,0x92,0x92,0x8c,0x8c,0x80,0x80,
0xa1,0xa1,0xad,0xad,0xb3,0xa1,0x80,0x80,
0xa1,0x92,0x8c,0x92,0xa1,0xa1,0x80,0x80,
0xc1,0xa2,0x9c,0x88,0x88,0x88,0x80,0x80,
0xbf,0x81,0x86,0x98,0xa0,0xbf,0x80,0x80,
0xbe,0xb0,0xb0,0xb0,0xb0,0xbe,0x80,0x80,
0x80,0xa0,0x90,0x88,0x84,0x82,0x80,0x80,
0xbe,0x86,0x86,0x86,0x86,0xbe,0x80,0x80,
0x8c,0x92,0xa1,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x80,
0x88,0x84,0x82,0x80,0x80,0x80,0x80,0x80,
0x80,0x9c,0x82,0x9e,0xa2,0x9d,0x80,0x80,
0xa0,0xae,0xb1,0xa1,0xb1,0xae,0x80,0x80,
0x80,0x9e,0xa0,0xa0,0xa0,0x9e,0x80,0x80,
0x81,0x9d,0xa3,0xa1,0xa3,0x9d,0x80,0x80,
0x80,0x9e,0xa1,0xbf,0xa0,0x9f,0x80,0x80,
0x8e,0x90,0xbc,0x90,0x90,0x90,0x80,0x80,
0x80,0x9d,0xa3,0xa3,0x9d,0x81,0xa1,0x9e,
0xa0,0xae,0xb1,0xa1,0xa1,0xa1,0x80,0x80,
0x84,0x80,0x8c,0x84,0x84,0x8e,0x80,0x80,
0x82,0x80,0x86,0x82,0x82,0x82,0xa2,0x9c,
0xa0,0xa2,0xa4,0xa8,0xb4,0xa2,0x80,0x80,
0x8c,0x84,0x84,0x84,0x84,0x8e,0x80,0x80,
0x80,0xaa,0x95,0x95,0x95,0x95,0x80,0x80,
0x80,0xae,0x91,0x91,0x91,0x91,0x80,0x80,
0x80,0x9e,0xa1,0xa1,0xa1,0x9e,0x80,0x80,
0x80,0xae,0xb1,0xb1,0xae,0xa0,0xa0,0xa0,
0x80,0x9d,0xa3,0xa3,0x9d,0x81,0x81,0x81,
0x80,0xaf,0xb0,0xa0,0xa0,0xa0,0x80,0x80,
0x80,0x9e,0xa0,0x9e,0x81,0xbe,0x80,0x80,
0x90,0xbe,0x90,0x90,0x91,0x8e,0x80,0x80,
0x80,0xa2,0xa2,0xa2,0xa2,0x9c,0x80,0x80,
0x80,0xa1,0xa1,0xa1,0x92,0x8c,0x80,0x80,
0x80,0xa2,0xa2,0xaa,0xaa,0x94,0x80,0x80,
0x80,0xa1,0x92,0x8c,0x92,0xa1,0x80,0x80,
0x80,0xa1,0xa1,0xa3,0x9d,0x81,0xa1,0x9e,
0x80,0x9f,0x82,0x8c,0x90,0xbf,0x80,0x80,
0x8c,0x98,0xbc,0xf4,0xff,0xff,0xfb,0xbc,
0xe3,0xbe,0xaa,0xbe,0xeb,0xdd,0xc1,0xbe,
0x98,0x8c,0x9e,0x97,0xff,0xff,0xef,0x9e,
0xbe,0xc9,0xc9,0xbe,0x9c,0xc1,0xbe,0xc1,
0x84,0x88,0xb6,0xff,0xfc,0xfc,0xbe,0xb6,
];
export default pigfont_charset;

518
js/roms/rmfont_char.js Normal file
View File

@ -0,0 +1,518 @@
/*exported rmfont_charset */
var rmfont_charset = [
0x3c,0x42,0x59,0x55,0x55,0x39,0x02,0x3c,
0x08,0x14,0x22,0x22,0x3e,0x22,0x22,0x00,
0x1e,0x24,0x24,0x1c,0x24,0x24,0x1e,0x00,
0x1c,0x22,0x02,0x02,0x02,0x22,0x1c,0x00,
0x1e,0x24,0x24,0x24,0x24,0x24,0x1e,0x00,
0x3e,0x02,0x02,0x1e,0x02,0x02,0x3e,0x00,
0x3e,0x02,0x02,0x1e,0x02,0x02,0x02,0x00,
0x1c,0x22,0x02,0x02,0x32,0x22,0x3c,0x00,
0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x00,
0x1c,0x08,0x08,0x08,0x08,0x08,0x1c,0x00,
0x38,0x10,0x10,0x10,0x10,0x12,0x0c,0x00,
0x22,0x12,0x0a,0x16,0x12,0x22,0x22,0x00,
0x02,0x02,0x02,0x02,0x02,0x02,0x3e,0x00,
0x22,0x36,0x2a,0x2a,0x22,0x22,0x22,0x00,
0x22,0x22,0x26,0x2a,0x32,0x22,0x22,0x00,
0x1c,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,
0x1e,0x22,0x22,0x1e,0x02,0x02,0x02,0x00,
0x1c,0x22,0x22,0x22,0x2a,0x12,0x2c,0x00,
0x1e,0x22,0x22,0x1e,0x0a,0x12,0x22,0x00,
0x1c,0x22,0x02,0x1c,0x20,0x22,0x1c,0x00,
0x3e,0x08,0x08,0x08,0x08,0x08,0x08,0x00,
0x22,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,
0x22,0x22,0x22,0x22,0x14,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,0x20,0x10,0x08,0x04,0x02,0x3e,0x00,
0x3e,0x06,0x06,0x06,0x06,0x06,0x3e,0x00,
0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x00,
0x3e,0x30,0x30,0x30,0x30,0x30,0x3e,0x00,
0x00,0x00,0x08,0x14,0x22,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x08,0x1c,0x1c,0x08,0x08,0x00,0x08,0x00,
0x36,0x36,0x14,0x00,0x00,0x00,0x00,0x00,
0x14,0x14,0x3e,0x14,0x3e,0x14,0x14,0x00,
0x08,0x3c,0x0a,0x1c,0x28,0x1e,0x08,0x00,
0x06,0x26,0x10,0x08,0x04,0x32,0x30,0x00,
0x04,0x0a,0x0a,0x04,0x2a,0x12,0x2c,0x00,
0x18,0x10,0x08,0x00,0x00,0x00,0x00,0x00,
0x08,0x04,0x02,0x02,0x02,0x04,0x08,0x00,
0x08,0x10,0x20,0x20,0x20,0x10,0x08,0x00,
0x08,0x2a,0x1c,0x3e,0x1c,0x2a,0x08,0x00,
0x00,0x08,0x08,0x3e,0x08,0x08,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x04,
0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,
0x00,0x20,0x10,0x08,0x04,0x02,0x00,0x00,
0x1c,0x22,0x22,0x2a,0x22,0x22,0x1c,0x00,
0x08,0x0c,0x08,0x08,0x08,0x08,0x1c,0x00,
0x1c,0x22,0x20,0x18,0x04,0x02,0x3e,0x00,
0x3e,0x20,0x10,0x18,0x20,0x22,0x1c,0x00,
0x10,0x18,0x14,0x12,0x3e,0x10,0x10,0x00,
0x3e,0x02,0x1e,0x22,0x20,0x22,0x1c,0x00,
0x38,0x04,0x02,0x1e,0x22,0x22,0x1c,0x00,
0x3e,0x20,0x10,0x08,0x04,0x04,0x04,0x00,
0x1c,0x22,0x22,0x1c,0x22,0x22,0x1c,0x00,
0x1c,0x22,0x22,0x3c,0x20,0x10,0x08,0x00,
0x00,0x00,0x08,0x00,0x08,0x00,0x00,0x00,
0x00,0x00,0x08,0x00,0x00,0x08,0x08,0x04,
0x10,0x08,0x04,0x02,0x04,0x08,0x10,0x00,
0x00,0x00,0x3e,0x00,0x3e,0x00,0x00,0x00,
0x04,0x08,0x10,0x20,0x10,0x08,0x04,0x00,
0x1c,0x22,0x20,0x10,0x08,0x00,0x08,0x00,
0xef,0xf7,0xc9,0x80,0xc0,0xc0,0x81,0xc9,
0xef,0xf7,0xc9,0xbe,0xde,0xde,0xb5,0xc9,
0xff,0xff,0xfd,0xf9,0xf1,0xe1,0xc9,0xbd,
0x80,0xdd,0xeb,0xf7,0xf7,0xeb,0xd5,0x80,
0xff,0xbf,0xdf,0xee,0xf5,0xfb,0xfb,0xff,
0x80,0xc0,0xa0,0x93,0x8a,0x84,0x84,0x80,
0x40,0x40,0x40,0x44,0x46,0x7f,0x06,0x04,
0x00,0x7f,0x00,0x7f,0x00,0x7f,0x7f,0x00,
0xf7,0xfb,0xfd,0x80,0xfd,0xfb,0xf7,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd5,
0xf7,0xf7,0xf7,0xf7,0xb6,0xd5,0xe3,0xf7,
0xf7,0xe3,0xd5,0xb6,0xf7,0xf7,0xf7,0xf7,
0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xbf,0xbf,0xbf,0xbb,0xb9,0x80,0xf9,0xfb,
0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
0xec,0xe7,0xe3,0x81,0xe3,0xe7,0xef,0x90,
0x9b,0xf3,0xe3,0xc0,0xe3,0xf3,0xfb,0x84,
0xbf,0xb7,0xf7,0x80,0xc1,0xe3,0xb7,0xbf,
0xbf,0xb7,0xe3,0xc1,0x80,0xf7,0xb7,0xbf,
0xff,0xff,0xff,0x80,0xff,0xff,0xff,0xff,
0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0x80,
0xf7,0xef,0xdf,0x80,0xdf,0xef,0xf7,0xff,
0xd5,0xaa,0xd5,0xaa,0xd5,0xaa,0xd5,0xaa,
0xaa,0xd5,0xaa,0xd5,0xaa,0xd5,0xaa,0xd5,
0xff,0xc1,0xbe,0xfe,0xfe,0xfe,0x80,0xff,
0xff,0xff,0xc0,0xbf,0xbf,0xbf,0x80,0xff,
0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,
0xf7,0xe3,0xc1,0x80,0xc1,0xe3,0xf7,0xff,
0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x80,
0xeb,0xeb,0x88,0xff,0x88,0xeb,0xeb,0xff,
0x80,0xbf,0xbf,0xb3,0xb3,0xbf,0xbf,0x80,
0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
0x04,0x08,0x10,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x1c,0x20,0x3c,0x22,0x3c,0x00,
0x02,0x02,0x1e,0x22,0x22,0x22,0x1e,0x00,
0x00,0x00,0x3c,0x02,0x02,0x02,0x3c,0x00,
0x20,0x20,0x3c,0x22,0x22,0x22,0x3c,0x00,
0x00,0x00,0x1c,0x22,0x3e,0x02,0x3c,0x00,
0x18,0x24,0x04,0x1e,0x04,0x04,0x04,0x00,
0x00,0x00,0x1c,0x22,0x22,0x3c,0x20,0x1c,
0x02,0x02,0x1e,0x22,0x22,0x22,0x22,0x00,
0x08,0x00,0x0c,0x08,0x08,0x08,0x1c,0x00,
0x10,0x00,0x18,0x10,0x10,0x10,0x12,0x0c,
0x02,0x02,0x22,0x12,0x0e,0x12,0x22,0x00,
0x0c,0x08,0x08,0x08,0x08,0x08,0x1c,0x00,
0x00,0x00,0x36,0x2a,0x2a,0x2a,0x22,0x00,
0x00,0x00,0x1e,0x22,0x22,0x22,0x22,0x00,
0x00,0x00,0x1c,0x22,0x22,0x22,0x1c,0x00,
0x00,0x00,0x1e,0x22,0x22,0x1e,0x02,0x02,
0x00,0x00,0x3c,0x22,0x22,0x3c,0x20,0x60,
0x00,0x00,0x1a,0x26,0x02,0x02,0x02,0x00,
0x00,0x00,0x3c,0x02,0x1c,0x20,0x1e,0x00,
0x04,0x04,0x1e,0x04,0x04,0x24,0x18,0x00,
0x00,0x00,0x22,0x22,0x22,0x32,0x2c,0x00,
0x00,0x00,0x22,0x22,0x22,0x14,0x08,0x00,
0x00,0x00,0x22,0x22,0x2a,0x2a,0x14,0x00,
0x00,0x00,0x22,0x14,0x08,0x14,0x22,0x00,
0x00,0x00,0x22,0x22,0x22,0x3c,0x20,0x1c,
0x00,0x00,0x3e,0x10,0x08,0x04,0x3e,0x00,
0x38,0x0c,0x0c,0x06,0x0c,0x0c,0x38,0x00,
0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
0x0e,0x18,0x18,0x30,0x18,0x18,0x0e,0x00,
0x2c,0x1a,0x00,0x00,0x00,0x00,0x00,0x00,
0x6f,0x77,0x41,0x00,0x40,0x40,0x00,0x49,
0x43,0x3c,0x26,0x2a,0x2a,0x46,0x7d,0x43,
0xf7,0xeb,0xdd,0xdd,0xc1,0xdd,0xdd,0xff,
0xe1,0xdb,0xdb,0xe3,0xdb,0xdb,0xe1,0x7f,
0xe3,0xdd,0xfd,0xfd,0xfd,0xdd,0xe3,0xff,
0xe1,0xdb,0xdb,0xdb,0xdb,0xdb,0xe1,0x7f,
0xc1,0xfd,0xfd,0xe1,0xfd,0xfd,0xc1,0xff,
0xc1,0xfd,0xfd,0xe1,0xfd,0xfd,0xfd,0xff,
0xe3,0xdd,0xfd,0xfd,0xcd,0xdd,0xc3,0x7f,
0xdd,0xdd,0xdd,0xc1,0xdd,0xdd,0xdd,0xff,
0xe3,0xf7,0xf7,0xf7,0xf7,0xf7,0xe3,0xff,
0xc7,0xef,0xef,0xef,0xef,0xed,0xf3,0x7f,
0xdd,0xed,0xf5,0xe9,0xed,0xdd,0xdd,0x7f,
0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xc1,0xff,
0xdd,0xc9,0xd5,0xd5,0xdd,0xdd,0xdd,0xff,
0xdd,0xdd,0xd9,0xd5,0xcd,0xdd,0xdd,0xff,
0xe3,0xdd,0xdd,0xdd,0xdd,0xdd,0xe3,0xff,
0xe1,0xdd,0xdd,0xe1,0xfd,0xfd,0xfd,0xff,
0xe3,0xdd,0xdd,0xdd,0xd5,0xed,0xd3,0xff,
0xe1,0xdd,0xdd,0xe1,0xf5,0xed,0xdd,0xff,
0xe3,0xdd,0xfd,0xe3,0xdf,0xdd,0xe3,0xff,
0xc1,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xff,
0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xe3,0xff,
0xdd,0xdd,0xdd,0xdd,0xeb,0xeb,0xf7,0x7f,
0xdd,0xdd,0xdd,0xd5,0xd5,0xc9,0xdd,0xff,
0xdd,0xdd,0xeb,0xf7,0xeb,0xdd,0xdd,0xff,
0xdd,0xdd,0xeb,0xf7,0xf7,0xf7,0xf7,0xff,
0xc1,0xdf,0xef,0xf7,0xfb,0xfd,0xc1,0xff,
0xc1,0xf9,0xf9,0xf9,0xf9,0xf9,0xc1,0xff,
0xff,0xfd,0xfb,0xf7,0xef,0xdf,0xff,0xff,
0xc1,0xcf,0xcf,0xcf,0xcf,0xcf,0xc1,0xff,
0xff,0xff,0xf7,0xeb,0xdd,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0x77,0x63,0x63,0x77,0x77,0x7f,0x77,0x7f,
0x49,0x49,0x6b,0x7f,0x7f,0x7f,0x7f,0x7f,
0xeb,0xeb,0xc1,0xeb,0xc1,0xeb,0xeb,0xff,
0xf7,0xc3,0xf5,0xe3,0xd7,0xe1,0xf7,0xff,
0xf9,0xd9,0xef,0xf7,0xfb,0xcd,0xcf,0xff,
0xfb,0xf5,0xf5,0xfb,0xd5,0xed,0xd3,0xff,
0x67,0x6f,0x77,0x7f,0x7f,0x7f,0x7f,0x7f,
0xf7,0xfb,0xfd,0xfd,0xfd,0xfb,0xf7,0xff,
0xf7,0xef,0xdf,0xdf,0xdf,0xef,0xf7,0xff,
0xf7,0xd5,0xe3,0xc1,0xe3,0xd5,0xf7,0xff,
0xff,0xf7,0xf7,0xc1,0xf7,0xf7,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xf7,0xf7,0xfb,
0xff,0xff,0xff,0xc1,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,
0xff,0xdf,0xef,0xf7,0xfb,0xfd,0xff,0xff,
0x63,0x5d,0x5d,0x55,0x5d,0x5d,0x63,0x7f,
0xf7,0xf3,0xf7,0xf7,0xf7,0xf7,0xe3,0xff,
0xe3,0xdd,0xdf,0xe7,0xfb,0xfd,0xc1,0xff,
0xc1,0xdf,0xef,0xe7,0xdf,0xdd,0xe3,0xff,
0xef,0xe7,0xeb,0xed,0xc1,0xef,0xef,0xff,
0x41,0x7d,0x61,0x5d,0x5f,0x5d,0x63,0x7f,
0xc7,0xfb,0xfd,0xe1,0xdd,0xdd,0xe3,0xff,
0xc1,0xdf,0xef,0xf7,0xfb,0xfb,0xfb,0xff,
0xe3,0xdd,0xdd,0xe3,0xdd,0xdd,0xe3,0xff,
0xe3,0xdd,0xdd,0xc3,0xdf,0xef,0xf7,0xff,
0xff,0xff,0xf7,0xff,0xf7,0xff,0xff,0xff,
0xff,0xff,0xf7,0xff,0xff,0xf7,0xf7,0xfb,
0xef,0xf7,0xfb,0xfd,0xfb,0xf7,0xef,0xff,
0xff,0xff,0xc1,0xff,0xc1,0xff,0xff,0xff,
0xfb,0xf7,0xef,0xdf,0xef,0xf7,0xfb,0xff,
0x63,0x5d,0x5f,0x6f,0x77,0x7f,0x77,0x7f,
0x43,0x3c,0x26,0x2a,0x2a,0x46,0x7d,0x43,
0xf7,0xeb,0xdd,0xdd,0xc1,0xdd,0xdd,0xff,
0xe1,0xdb,0xdb,0xe3,0xdb,0xdb,0xe1,0xff,
0xe3,0xdd,0xfd,0xfd,0xfd,0xdd,0xe3,0xff,
0xe1,0xdb,0xdb,0xdb,0xdb,0xdb,0xe1,0xff,
0xc1,0xfd,0xfd,0xe1,0xfd,0xfd,0xc1,0xff,
0xc1,0xfd,0xfd,0xe1,0xfd,0xfd,0xfd,0xff,
0xe3,0xdd,0xfd,0xfd,0xcd,0xdd,0xc3,0xff,
0xdd,0xdd,0xdd,0xc1,0xdd,0xdd,0xdd,0xff,
0xe3,0xf7,0xf7,0xf7,0xf7,0xf7,0xe3,0xff,
0xc7,0xef,0xef,0xef,0xef,0xed,0xf3,0xff,
0xdd,0xed,0xf5,0xe9,0xed,0xdd,0xdd,0xff,
0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xc1,0xff,
0xdd,0xc9,0xd5,0xd5,0xdd,0xdd,0xdd,0xff,
0xdd,0xdd,0xd9,0xd5,0xcd,0xdd,0xdd,0xff,
0xe3,0xdd,0xdd,0xdd,0xdd,0xdd,0xe3,0xff,
0xe1,0xdd,0xdd,0xe1,0xfd,0xfd,0xfd,0xff,
0xe3,0xdd,0xdd,0xdd,0xd5,0xed,0xd3,0xff,
0xe1,0xdd,0xdd,0xe1,0xf5,0xed,0xdd,0xff,
0xe3,0xdd,0xfd,0xe3,0xdf,0xdd,0xe3,0xff,
0xc1,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xff,
0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xe3,0xff,
0xdd,0xdd,0xdd,0xdd,0xeb,0xeb,0xf7,0xff,
0xdd,0xdd,0xdd,0xd5,0xd5,0xc9,0xdd,0xff,
0xdd,0xdd,0xeb,0xf7,0xeb,0xdd,0xdd,0xff,
0xdd,0xdd,0xeb,0xf7,0xf7,0xf7,0xf7,0xff,
0xc1,0xdf,0xef,0xf7,0xfb,0xfd,0xc1,0xff,
0xc1,0xf9,0xf9,0xf9,0xf9,0xf9,0xc1,0xff,
0xff,0xfd,0xfb,0xf7,0xef,0xdf,0xff,0xff,
0xc1,0xcf,0xcf,0xcf,0xcf,0xcf,0xc1,0xff,
0xff,0xff,0xf7,0xeb,0xdd,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,
0xfb,0xf7,0xef,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xe3,0xdf,0xc3,0xdd,0xc3,0xff,
0xfd,0xfd,0xe1,0xdd,0xdd,0xdd,0xe1,0xff,
0xff,0xff,0xc3,0xfd,0xfd,0xfd,0xc3,0xff,
0xdf,0xdf,0xc3,0xdd,0xdd,0xdd,0xc3,0xff,
0xff,0xff,0xe3,0xdd,0xc1,0xfd,0xc3,0xff,
0xe7,0xdb,0xfb,0xe1,0xfb,0xfb,0xfb,0xff,
0xff,0xff,0xe3,0xdd,0xdd,0xc3,0xdf,0xe3,
0xfd,0xfd,0xe1,0xdd,0xdd,0xdd,0xdd,0xff,
0xf7,0xff,0xf3,0xf7,0xf7,0xf7,0xe3,0xff,
0xef,0xff,0xe7,0xef,0xef,0xef,0xed,0xf3,
0xfd,0xfd,0xdd,0xed,0xf1,0xed,0xdd,0xff,
0xf3,0xf7,0xf7,0xf7,0xf7,0xf7,0xe3,0xff,
0xff,0xff,0xc9,0xd5,0xd5,0xd5,0xdd,0xff,
0xff,0xff,0xe1,0xdd,0xdd,0xdd,0xdd,0xff,
0xff,0xff,0xe3,0xdd,0xdd,0xdd,0xe3,0xff,
0xff,0xff,0xe1,0xdd,0xdd,0xe1,0xfd,0xfd,
0x7f,0x7f,0x43,0x5d,0x5d,0x43,0x5f,0x1f,
0x7f,0x7f,0x65,0x59,0x7d,0x7d,0x7d,0x7f,
0xff,0xff,0xc3,0xfd,0xe3,0xdf,0xe1,0xff,
0xfb,0xfb,0xe1,0xfb,0xfb,0xdb,0xe7,0xff,
0xff,0xff,0xdd,0xdd,0xdd,0xcd,0xd3,0xff,
0xff,0xff,0xdd,0xdd,0xdd,0xeb,0xf7,0xff,
0xff,0xff,0x5d,0x5d,0x55,0x55,0x6b,0x7f,
0xff,0xff,0xdd,0xeb,0xf7,0xeb,0xdd,0xff,
0xff,0xff,0xdd,0xdd,0xdd,0xc3,0xdf,0xe3,
0xff,0xff,0xc1,0xef,0xf7,0xfb,0xc1,0xff,
0xc7,0xf3,0xf3,0xf9,0xf3,0xf3,0xc7,0xff,
0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,
0xf1,0xe7,0xe7,0xcf,0xe7,0xe7,0xf1,0xff,
0xd3,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,
0x6f,0x77,0x49,0x3e,0x5e,0x5e,0x36,0x49,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xfe,0xfe,0xee,0xbb,0xfe,0xfe,0xff,0xff,
0xfd,0xfd,0xdd,0x77,0xfd,0xfd,0xff,0xff,
0xfc,0xfc,0xcc,0x33,0xfc,0xfc,0xff,0xff,
0xfb,0xfb,0xbb,0xee,0xfb,0xfb,0xff,0xff,
0xfa,0xfa,0xaa,0xaa,0xfa,0xfa,0xff,0xff,
0xf9,0xf9,0x99,0x66,0xf9,0xf9,0xff,0xff,
0xf8,0xf8,0x88,0x22,0xf8,0xf8,0xff,0xff,
0xf7,0xf7,0x77,0xdd,0xf7,0xf7,0xff,0xff,
0xf6,0xf6,0x66,0x99,0xf6,0xf6,0xff,0xff,
0xf5,0xf5,0x55,0x55,0xf5,0xf5,0xff,0xff,
0xf4,0xf4,0x44,0x11,0xf4,0xf4,0xff,0xff,
0xf3,0xf3,0x33,0xcc,0xf3,0xf3,0xff,0xff,
0xf2,0xf2,0x22,0x88,0xf2,0xf2,0xff,0xff,
0xf1,0xf1,0x11,0x44,0xf1,0xf1,0xff,0xff,
0xf0,0xf0,0x00,0x00,0xf0,0xf0,0xff,0xff,
0xef,0xef,0xff,0xff,0xef,0xef,0xee,0xbb,
0xee,0xee,0xee,0xbb,0xee,0xee,0xee,0xbb,
0xed,0xed,0xdd,0x77,0xed,0xed,0xee,0xbb,
0xec,0xec,0xcc,0x33,0xec,0xec,0xee,0xbb,
0xeb,0xeb,0xbb,0xee,0xeb,0xeb,0xee,0xbb,
0xea,0xea,0xaa,0xaa,0xea,0xea,0xee,0xbb,
0xe9,0xe9,0x99,0x66,0xe9,0xe9,0xee,0xbb,
0xe8,0xe8,0x88,0x22,0xe8,0xe8,0xee,0xbb,
0xe7,0xe7,0x77,0xdd,0xe7,0xe7,0xee,0xbb,
0xe6,0xe6,0x66,0x99,0xe6,0xe6,0xee,0xbb,
0xe5,0xe5,0x55,0x55,0xe5,0xe5,0xee,0xbb,
0xe4,0xe4,0x44,0x11,0xe4,0xe4,0xee,0xbb,
0xe3,0xe3,0x33,0xcc,0xe3,0xe3,0xee,0xbb,
0xe2,0xe2,0x22,0x88,0xe2,0xe2,0xee,0xbb,
0xe1,0xe1,0x11,0x44,0xe1,0xe1,0xee,0xbb,
0xe0,0xe0,0x00,0x00,0xe0,0xe0,0xee,0xbb,
0xdf,0xdf,0xff,0xff,0xdf,0xdf,0xdd,0x77,
0xde,0xde,0xee,0xbb,0xde,0xde,0xdd,0x77,
0xdd,0xdd,0xdd,0x77,0xdd,0xdd,0xdd,0x77,
0xdc,0xdc,0xcc,0x33,0xdc,0xdc,0xdd,0x77,
0xdb,0xdb,0xbb,0xee,0xdb,0xdb,0xdd,0x77,
0xda,0xda,0xaa,0xaa,0xda,0xda,0xdd,0x77,
0xd9,0xd9,0x99,0x66,0xd9,0xd9,0xdd,0x77,
0xd8,0xd8,0x88,0x22,0xd8,0xd8,0xdd,0x77,
0xd7,0xd7,0x77,0xdd,0xd7,0xd7,0xdd,0x77,
0xd6,0xd6,0x66,0x99,0xd6,0xd6,0xdd,0x77,
0xd5,0xd5,0x55,0x55,0xd5,0xd5,0xdd,0x77,
0xd4,0xd4,0x44,0x11,0xd4,0xd4,0xdd,0x77,
0xd3,0xd3,0x33,0xcc,0xd3,0xd3,0xdd,0x77,
0xd2,0xd2,0x22,0x88,0xd2,0xd2,0xdd,0x77,
0xd1,0xd1,0x11,0x44,0xd1,0xd1,0xdd,0x77,
0xd0,0xd0,0x00,0x00,0xd0,0xd0,0xdd,0x77,
0xcf,0xcf,0xff,0xff,0xcf,0xcf,0xcc,0x33,
0xce,0xce,0xee,0xbb,0xce,0xce,0xcc,0x33,
0xcd,0xcd,0xdd,0x77,0xcd,0xcd,0xcc,0x33,
0xcc,0xcc,0xcc,0x33,0xcc,0xcc,0xcc,0x33,
0xcb,0xcb,0xbb,0xee,0xcb,0xcb,0xcc,0x33,
0xca,0xca,0xaa,0xaa,0xca,0xca,0xcc,0x33,
0xc9,0xc9,0x99,0x66,0xc9,0xc9,0xcc,0x33,
0xc8,0xc8,0x88,0x22,0xc8,0xc8,0xcc,0x33,
0xc7,0xc7,0x77,0xdd,0xc7,0xc7,0xcc,0x33,
0xc6,0xc6,0x66,0x99,0xc6,0xc6,0xcc,0x33,
0xc5,0xc5,0x55,0x55,0xc5,0xc5,0xcc,0x33,
0xc4,0xc4,0x44,0x11,0xc4,0xc4,0xcc,0x33,
0xc3,0xc3,0x33,0xcc,0xc3,0xc3,0xcc,0x33,
0xc2,0xc2,0x22,0x88,0xc2,0xc2,0xcc,0x33,
0xc1,0xc1,0x11,0x44,0xc1,0xc1,0xcc,0x33,
0xc0,0xc0,0x00,0x00,0xc0,0xc0,0xcc,0x33,
0xbf,0xbf,0xff,0xff,0xbf,0xbf,0xbb,0xee,
0xbe,0xbe,0xee,0xbb,0xbe,0xbe,0xbb,0xee,
0xbd,0xbd,0xdd,0x77,0xbd,0xbd,0xbb,0xee,
0xbc,0xbc,0xcc,0x33,0xbc,0xbc,0xbb,0xee,
0xbb,0xbb,0xbb,0xee,0xbb,0xbb,0xbb,0xee,
0xba,0xba,0xaa,0xaa,0xba,0xba,0xbb,0xee,
0xb9,0xb9,0x99,0x66,0xb9,0xb9,0xbb,0xee,
0xb8,0xb8,0x88,0x22,0xb8,0xb8,0xbb,0xee,
0xb7,0xb7,0x77,0xdd,0xb7,0xb7,0xbb,0xee,
0xb6,0xb6,0x66,0x99,0xb6,0xb6,0xbb,0xee,
0xb5,0xb5,0x55,0x55,0xb5,0xb5,0xbb,0xee,
0xb4,0xb4,0x44,0x11,0xb4,0xb4,0xbb,0xee,
0xb3,0xb3,0x33,0xcc,0xb3,0xb3,0xbb,0xee,
0xb2,0xb2,0x22,0x88,0xb2,0xb2,0xbb,0xee,
0xb1,0xb1,0x11,0x44,0xb1,0xb1,0xbb,0xee,
0xb0,0xb0,0x00,0x00,0xb0,0xb0,0xbb,0xee,
0xaf,0xaf,0xff,0xff,0xaf,0xaf,0xaa,0xaa,
0xae,0xae,0xee,0xbb,0xae,0xae,0xaa,0xaa,
0xad,0xad,0xdd,0x77,0xad,0xad,0xaa,0xaa,
0xac,0xac,0xcc,0x33,0xac,0xac,0xaa,0xaa,
0xab,0xab,0xbb,0xee,0xab,0xab,0xaa,0xaa,
0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
0xa9,0xa9,0x99,0x66,0xa9,0xa9,0xaa,0xaa,
0xa8,0xa8,0x88,0x22,0xa8,0xa8,0xaa,0xaa,
0xa7,0xa7,0x77,0xdd,0xa7,0xa7,0xaa,0xaa,
0xa6,0xa6,0x66,0x99,0xa6,0xa6,0xaa,0xaa,
0xa5,0xa5,0x55,0x55,0xa5,0xa5,0xaa,0xaa,
0xa4,0xa4,0x44,0x11,0xa4,0xa4,0xaa,0xaa,
0xa3,0xa3,0x33,0xcc,0xa3,0xa3,0xaa,0xaa,
0xa2,0xa2,0x22,0x88,0xa2,0xa2,0xaa,0xaa,
0xa1,0xa1,0x11,0x44,0xa1,0xa1,0xaa,0xaa,
0xa0,0xa0,0x00,0x00,0xa0,0xa0,0xaa,0xaa,
0x9f,0x9f,0xff,0xff,0x9f,0x9f,0x99,0x66,
0x9e,0x9e,0xee,0xbb,0x9e,0x9e,0x99,0x66,
0x9d,0x9d,0xdd,0x77,0x9d,0x9d,0x99,0x66,
0x9c,0x9c,0xcc,0x33,0x9c,0x9c,0x99,0x66,
0x9b,0x9b,0xbb,0xee,0x9b,0x9b,0x99,0x66,
0x9a,0x9a,0xaa,0xaa,0x9a,0x9a,0x99,0x66,
0x99,0x99,0x99,0x66,0x99,0x99,0x99,0x66,
0x98,0x98,0x88,0x22,0x98,0x98,0x99,0x66,
0x97,0x97,0x77,0xdd,0x97,0x97,0x99,0x66,
0x96,0x96,0x66,0x99,0x96,0x96,0x99,0x66,
0x95,0x95,0x55,0x55,0x95,0x95,0x99,0x66,
0x94,0x94,0x44,0x11,0x94,0x94,0x99,0x66,
0x93,0x93,0x33,0xcc,0x93,0x93,0x99,0x66,
0x92,0x92,0x22,0x88,0x92,0x92,0x99,0x66,
0x91,0x91,0x11,0x44,0x91,0x91,0x99,0x66,
0x90,0x90,0x00,0x00,0x90,0x90,0x99,0x66,
0x8f,0x8f,0xff,0xff,0x8f,0x8f,0x88,0x22,
0x8e,0x8e,0xee,0xbb,0x8e,0x8e,0x88,0x22,
0x8d,0x8d,0xdd,0x77,0x8d,0x8d,0x88,0x22,
0x8c,0x8c,0xcc,0x33,0x8c,0x8c,0x88,0x22,
0x8b,0x8b,0xbb,0xee,0x8b,0x8b,0x88,0x22,
0x8a,0x8a,0xaa,0xaa,0x8a,0x8a,0x88,0x22,
0x89,0x89,0x99,0x66,0x89,0x89,0x88,0x22,
0x88,0x88,0x88,0x22,0x88,0x88,0x88,0x22,
0x87,0x87,0x77,0xdd,0x87,0x87,0x88,0x22,
0x86,0x86,0x66,0x99,0x86,0x86,0x88,0x22,
0x85,0x85,0x55,0x55,0x85,0x85,0x88,0x22,
0x84,0x84,0x44,0x11,0x84,0x84,0x88,0x22,
0x83,0x83,0x33,0xcc,0x83,0x83,0x88,0x22,
0x82,0x82,0x22,0x88,0x82,0x82,0x88,0x22,
0x81,0x81,0x11,0x44,0x81,0x81,0x88,0x22,
0x80,0x80,0x00,0x00,0x80,0x80,0x88,0x22,
0xff,0xff,0xff,0xff,0xff,0xff,0x77,0xdd,
0xfe,0xfe,0xee,0xbb,0xfe,0xfe,0x77,0xdd,
0xfd,0xfd,0xdd,0x77,0xfd,0xfd,0x77,0xdd,
0xfc,0xfc,0xcc,0x33,0xfc,0xfc,0x77,0xdd,
0xfb,0xfb,0xbb,0xee,0xfb,0xfb,0x77,0xdd,
0xfa,0xfa,0xaa,0xaa,0xfa,0xfa,0x77,0xdd,
0xf9,0xf9,0x99,0x66,0xf9,0xf9,0x77,0xdd,
0xf8,0xf8,0x88,0x22,0xf8,0xf8,0x77,0xdd,
0xf7,0xf7,0x77,0xdd,0xf7,0xf7,0x77,0xdd,
0xf6,0xf6,0x66,0x99,0xf6,0xf6,0x77,0xdd,
0xf5,0xf5,0x55,0x55,0xf5,0xf5,0x77,0xdd,
0xf4,0xf4,0x44,0x11,0xf4,0xf4,0x77,0xdd,
0xf3,0xf3,0x33,0xcc,0xf3,0xf3,0x77,0xdd,
0xf2,0xf2,0x22,0x88,0xf2,0xf2,0x77,0xdd,
0xf1,0xf1,0x11,0x44,0xf1,0xf1,0x77,0xdd,
0xf0,0xf0,0x00,0x00,0xf0,0xf0,0x77,0xdd,
0xef,0xef,0xff,0xff,0xef,0xef,0x66,0x99,
0xee,0xee,0xee,0xbb,0xee,0xee,0x66,0x99,
0xed,0xed,0xdd,0x77,0xed,0xed,0x66,0x99,
0xec,0xec,0xcc,0x33,0xec,0xec,0x66,0x99,
0xeb,0xeb,0xbb,0xee,0xeb,0xeb,0x66,0x99,
0xea,0xea,0xaa,0xaa,0xea,0xea,0x66,0x99,
0xe9,0xe9,0x99,0x66,0xe9,0xe9,0x66,0x99,
0xe8,0xe8,0x88,0x22,0xe8,0xe8,0x66,0x99,
0xe7,0xe7,0x77,0xdd,0xe7,0xe7,0x66,0x99,
0xe6,0xe6,0x66,0x99,0xe6,0xe6,0x66,0x99,
0xe5,0xe5,0x55,0x55,0xe5,0xe5,0x66,0x99,
0xe4,0xe4,0x44,0x11,0xe4,0xe4,0x66,0x99,
0xe3,0xe3,0x33,0xcc,0xe3,0xe3,0x66,0x99,
0xe2,0xe2,0x22,0x88,0xe2,0xe2,0x66,0x99,
0xe1,0xe1,0x11,0x44,0xe1,0xe1,0x66,0x99,
0xe0,0xe0,0x00,0x00,0xe0,0xe0,0x66,0x99,
0xdf,0xdf,0xff,0xff,0xdf,0xdf,0x55,0x55,
0xde,0xde,0xee,0xbb,0xde,0xde,0x55,0x55,
0xdd,0xdd,0xdd,0x77,0xdd,0xdd,0x55,0x55,
0xdc,0xdc,0xcc,0x33,0xdc,0xdc,0x55,0x55,
0xdb,0xdb,0xbb,0xee,0xdb,0xdb,0x55,0x55,
0xda,0xda,0xaa,0xaa,0xda,0xda,0x55,0x55,
0xd9,0xd9,0x99,0x66,0xd9,0xd9,0x55,0x55,
0xd8,0xd8,0x88,0x22,0xd8,0xd8,0x55,0x55,
0xd7,0xd7,0x77,0xdd,0xd7,0xd7,0x55,0x55,
0xd6,0xd6,0x66,0x99,0xd6,0xd6,0x55,0x55,
0xd5,0xd5,0x55,0x55,0xd5,0xd5,0x55,0x55,
0xd4,0xd4,0x44,0x11,0xd4,0xd4,0x55,0x55,
0xd3,0xd3,0x33,0xcc,0xd3,0xd3,0x55,0x55,
0xd2,0xd2,0x22,0x88,0xd2,0xd2,0x55,0x55,
0xd1,0xd1,0x11,0x44,0xd1,0xd1,0x55,0x55,
0xd0,0xd0,0x00,0x00,0xd0,0xd0,0x55,0x55,
0xcf,0xcf,0xff,0xff,0xcf,0xcf,0x44,0x11,
0xce,0xce,0xee,0xbb,0xce,0xce,0x44,0x11,
0xcd,0xcd,0xdd,0x77,0xcd,0xcd,0x44,0x11,
0xcc,0xcc,0xcc,0x33,0xcc,0xcc,0x44,0x11,
0xcb,0xcb,0xbb,0xee,0xcb,0xcb,0x44,0x11,
0xca,0xca,0xaa,0xaa,0xca,0xca,0x44,0x11,
0xc9,0xc9,0x99,0x66,0xc9,0xc9,0x44,0x11,
0xc8,0xc8,0x88,0x22,0xc8,0xc8,0x44,0x11,
0xc7,0xc7,0x77,0xdd,0xc7,0xc7,0x44,0x11,
0xc6,0xc6,0x66,0x99,0xc6,0xc6,0x44,0x11,
0xc5,0xc5,0x55,0x55,0xc5,0xc5,0x44,0x11,
0xc4,0xc4,0x44,0x11,0xc4,0xc4,0x44,0x11,
0xc3,0xc3,0x33,0xcc,0xc3,0xc3,0x44,0x11,
0xc2,0xc2,0x22,0x88,0xc2,0xc2,0x44,0x11,
0xc1,0xc1,0x11,0x44,0xc1,0xc1,0x44,0x11,
0xc0,0xc0,0x00,0x00,0xc0,0xc0,0x44,0x11,
0xbf,0xbf,0xff,0xff,0xbf,0xbf,0x33,0xcc,
0xbe,0xbe,0xee,0xbb,0xbe,0xbe,0x33,0xcc,
0xbd,0xbd,0xdd,0x77,0xbd,0xbd,0x33,0xcc,
0xbc,0xbc,0xcc,0x33,0xbc,0xbc,0x33,0xcc,
0xbb,0xbb,0xbb,0xee,0xbb,0xbb,0x33,0xcc,
0xba,0xba,0xaa,0xaa,0xba,0xba,0x33,0xcc,
0xb9,0xb9,0x99,0x66,0xb9,0xb9,0x33,0xcc,
0xb8,0xb8,0x88,0x22,0xb8,0xb8,0x33,0xcc,
0xb7,0xb7,0x77,0xdd,0xb7,0xb7,0x33,0xcc,
0xb6,0xb6,0x66,0x99,0xb6,0xb6,0x33,0xcc,
0xb5,0xb5,0x55,0x55,0xb5,0xb5,0x33,0xcc,
0xb4,0xb4,0x44,0x11,0xb4,0xb4,0x33,0xcc,
0xb3,0xb3,0x33,0xcc,0xb3,0xb3,0x33,0xcc,
0xb2,0xb2,0x22,0x88,0xb2,0xb2,0x33,0xcc,
0xb1,0xb1,0x11,0x44,0xb1,0xb1,0x33,0xcc,
0xb0,0xb0,0x00,0x00,0xb0,0xb0,0x33,0xcc,
0xaf,0xaf,0xff,0xff,0xaf,0xaf,0x22,0x88,
0xae,0xae,0xee,0xbb,0xae,0xae,0x22,0x88,
0xad,0xad,0xdd,0x77,0xad,0xad,0x22,0x88,
0xac,0xac,0xcc,0x33,0xac,0xac,0x22,0x88,
0xab,0xab,0xbb,0xee,0xab,0xab,0x22,0x88,
0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x22,0x88,
0xa9,0xa9,0x99,0x66,0xa9,0xa9,0x22,0x88,
0xa8,0xa8,0x88,0x22,0xa8,0xa8,0x22,0x88,
0xa7,0xa7,0x77,0xdd,0xa7,0xa7,0x22,0x88,
0xa6,0xa6,0x66,0x99,0xa6,0xa6,0x22,0x88,
0xa5,0xa5,0x55,0x55,0xa5,0xa5,0x22,0x88,
0xa4,0xa4,0x44,0x11,0xa4,0xa4,0x22,0x88,
0xa3,0xa3,0x33,0xcc,0xa3,0xa3,0x22,0x88,
0xa2,0xa2,0x22,0x88,0xa2,0xa2,0x22,0x88,
0xa1,0xa1,0x11,0x44,0xa1,0xa1,0x22,0x88,
0xa0,0xa0,0x00,0x00,0xa0,0xa0,0x22,0x88,
0x9f,0x9f,0xff,0xff,0x9f,0x9f,0x11,0x44,
0x9e,0x9e,0xee,0xbb,0x9e,0x9e,0x11,0x44,
0x9d,0x9d,0xdd,0x77,0x9d,0x9d,0x11,0x44,
0x9c,0x9c,0xcc,0x33,0x9c,0x9c,0x11,0x44,
0x9b,0x9b,0xbb,0xee,0x9b,0x9b,0x11,0x44,
0x9a,0x9a,0xaa,0xaa,0x9a,0x9a,0x11,0x44,
0x99,0x99,0x99,0x66,0x99,0x99,0x11,0x44,
0x98,0x98,0x88,0x22,0x98,0x98,0x11,0x44,
0x97,0x97,0x77,0xdd,0x97,0x97,0x11,0x44,
0x96,0x96,0x66,0x99,0x96,0x96,0x11,0x44,
0x95,0x95,0x55,0x55,0x95,0x95,0x11,0x44,
0x94,0x94,0x44,0x11,0x94,0x94,0x11,0x44,
0x93,0x93,0x33,0xcc,0x93,0x93,0x11,0x44,
0x92,0x92,0x22,0x88,0x92,0x92,0x11,0x44,
0x91,0x91,0x11,0x44,0x91,0x91,0x11,0x44,
0x90,0x90,0x00,0x00,0x90,0x90,0x11,0x44,
0x8f,0x8f,0xff,0xff,0x8f,0x8f,0x00,0x00,
0x8e,0x8e,0xee,0xbb,0x8e,0x8e,0x00,0x00,
0x8d,0x8d,0xdd,0x77,0x8d,0x8d,0x00,0x00,
0x8c,0x8c,0xcc,0x33,0x8c,0x8c,0x00,0x00,
0x8b,0x8b,0xbb,0xee,0x8b,0x8b,0x00,0x00,
0x8a,0x8a,0xaa,0xaa,0x8a,0x8a,0x00,0x00,
0x89,0x89,0x99,0x66,0x89,0x89,0x00,0x00,
0x88,0x88,0x88,0x22,0x88,0x88,0x00,0x00,
0x87,0x87,0x77,0xdd,0x87,0x87,0x00,0x00,
0x86,0x86,0x66,0x99,0x86,0x86,0x00,0x00,
0x85,0x85,0x55,0x55,0x85,0x85,0x00,0x00,
0x84,0x84,0x44,0x11,0x84,0x84,0x00,0x00,
0x83,0x83,0x33,0xcc,0x83,0x83,0x00,0x00,
0x82,0x82,0x22,0x88,0x82,0x82,0x00,0x00,
0x81,0x81,0x11,0x44,0x81,0x81,0x00,0x00,
0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x00
];
export default rmfont_charset;

View File

@ -740,3 +740,5 @@ var SYMBOLS = {
0xFEFD: 'MON.READ',
0xFF02: 'MON.READ2'
};
export default SYMBOLS;

51
js/test.js Normal file
View File

@ -0,0 +1,51 @@
import CPU6502 from './cpu6502';
import Test6502 from './6502test';
import Test65C02 from './65C02test';
import { toHex } from './util';
var SYMBOLS = {};
var cpu;
var trace = [];
var lastPC = 0;
var done = false;
function traceCB() {
var pc = cpu.getPC();
done = lastPC == pc;
lastPC = pc;
var line = cpu.dumpRegisters() + ' ' + cpu.dumpPC(undefined, SYMBOLS);
trace.push(line);
if (trace.length > 1000) {
trace.shift();
}
}
window.test6502 = function test6502() {
cpu = new CPU6502();
var test = new Test6502();
cpu.addPageHandler(test);
cpu.setPC(0x400);
do {
cpu.stepCyclesDebug(1000, traceCB);
} while (!done);
if (lastPC == 0x3469) {
window.alert('6502 Success!');
} else {
window.alert('Failed! ' + toHex(lastPC));
}
};
window.test65C02 = function test65C02() {
cpu = new CPU6502({'65C02': true});
var test = new Test65C02();
cpu.addPageHandler(test);
cpu.setPC(0x400);
do {
cpu.stepCyclesDebug(1000, traceCB);
} while (!done);
if (lastPC == 0x24f1) {
window.alert('65C02 Success!');
} else {
window.alert('Failed! ' + toHex(lastPC));
}
};

View File

@ -1,4 +1,4 @@
/* Copyright 2010-2017 Will Scullin <scullin@scullinsteel.com>
/* 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
@ -9,14 +9,13 @@
* implied warranty.
*/
/*globals debug: false */
/*exported Audio */
import { debug } from '../util';
/*
* Audio Handling
*/
function Audio(io) {
export default function Audio(io) {
var sound = true;
var _samples = [];

View File

@ -1,4 +1,4 @@
/* Copyright 2010-2017 Will Scullin <scullin@scullinsteel.com>
/* 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
@ -9,14 +9,12 @@
* implied warranty.
*/
/*jshint jquery: true, browser: true */
/*globals flipX: false, flipY: false */
/*exported processGamepad, initGamepad, gamepad */
var getGamepads = navigator.getGamepads || navigator.webkitGetGamepads;
var gamepad;
export var gamepad;
var gamepadMap = [];
var gamepadState = [];
var flipX = false;
var flipY = false;
var BUTTON = {
// Buttons
@ -50,14 +48,14 @@ var DEFAULT_GAMEPAD = {
'B': 1,
'L1': 0,
'R1': 1,
'START': '\033'
'START': 0x1B
};
window.addEventListener('gamepadconnected', function(e) {
gamepad = e.gamepad;
});
function processGamepad(io) {
export function processGamepad(io) {
if (getGamepads) {
gamepad = getGamepads.call(navigator)[0];
}
@ -98,7 +96,12 @@ function processGamepad(io) {
}
}
function initGamepad(data) {
export function configGamepad(configFlipX, configFlipY) {
flipX = configFlipX;
flipY = configFlipY;
}
export function initGamepad(data) {
for (var idx = 0; idx < 16; idx++) {
gamepadMap[idx] = undefined;
}

View File

@ -1,4 +1,4 @@
/* Copyright 2010-2017 Will Scullin <scullin@scullinsteel.com>
/* 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
@ -9,11 +9,9 @@
* implied warranty.
*/
/*jshint jquery: true, browser: true */
/*globals debug: false, toHex: false, reset: false */
/*exported KeyBoard */
import { debug, toHex } from '../util';
function KeyBoard(io, e) {
export default function KeyBoard(cpu, io, e) {
// keycode: [plain, cntl, shift]
var keymap = {
// Most of these won't happen
@ -219,7 +217,7 @@ function KeyBoard(io, e) {
}
if (key == 0x7F && evt.shiftKey && evt.ctrlKey) {
reset();
cpu.reset();
key = 0xff;
}
@ -281,7 +279,7 @@ function KeyBoard(io, e) {
reset: function keyboard_reset(event) {
event.preventDefault();
event.stopPropagation();
reset();
cpu.reset();
},
create: function keyboard_create(el) {
@ -316,25 +314,25 @@ function KeyBoard(io, e) {
key = '\t';
break;
case 'DELETE':
key = '\177';
key = 0x7F;
break;
case '&larr;':
key = '\010';
key = 0x04;
break;
case '&rarr;':
key = '\025';
key = 0x15;
break;
case '&darr;':
key = '\012';
key = 0x0A;
break;
case '&uarr;':
key = '\013';
key = 0x0B;
break;
case '&nbsp;':
key = ' ';
break;
case 'ESC':
key = '\033';
key = 0x1B;
break;
default:
break;
@ -358,7 +356,7 @@ function KeyBoard(io, e) {
window.location.reload();
break;
case 'RESET':
reset();
cpu.reset();
break;
case 'OPEN_APPLE':
self.commandKey(!commanded);

View File

@ -1,6 +1,15 @@
/*exported Printer */
/* 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.
*/
function Printer(paper) {
export default function Printer(paper) {
var _lineBuffer;
var _line;
@ -23,7 +32,7 @@ function Printer(paper) {
_lineBuffer = '';
} else if (c == '\t') {
_lineBuffer += ' ';
} else if (c == '\010') {
} else if (c == 0x04) {
_lineBuffer = _lineBuffer.slice(0, -1);
} else {
if (visible) {

View File

@ -1,7 +1,18 @@
/*globals debug */
/*exported Tape */
function Tape(io) {
/* 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.
*/
import { debug } from '../util';
export default function Tape(io) {
var AudioContext = window.AudioContext || window.webkitAudioContext;
return {

View File

@ -1,4 +1,4 @@
/* Copyright 2010-2017 Will Scullin <scullin@scullinsteel.com>
/* 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
@ -10,20 +10,11 @@
*/
/*eslint no-console: 0*/
/*exported allocMemPages, bytify, debug, each, gup, hup, toBinary, toHex
*/
/*global Uint8Array: false */
if (!Date.now) {
Date.now = function now() {
return new Date().getTime();
};
}
var hex_digits = '0123456789ABCDEF';
var bin_digits = '01';
function allocMem(size) {
export function allocMem(size) {
function garbage() {
return (Math.random() * 0x100) & 0xff;
}
@ -47,11 +38,11 @@ function allocMem(size) {
return result;
}
function allocMemPages(pages) {
export function allocMemPages(pages) {
return allocMem(pages * 0x100);
}
function bytify(ary) {
export function bytify(ary) {
var result = ary;
if (window.Uint8Array) {
result = new Uint8Array(ary);
@ -59,13 +50,13 @@ function bytify(ary) {
return result;
}
function debug() {
export function debug() {
if (typeof console != 'undefined' && 'log' in console) {
console.log.apply(console, arguments);
}
}
function toHex(v, n) {
export function toHex(v, n) {
if (!n) {
n = v < 256 ? 2 : 4;
}
@ -77,7 +68,7 @@ function toHex(v, n) {
return result;
}
function toBinary(v) {
export function toBinary(v) {
var result = '';
for (var idx = 0; idx < 8; idx++) {
result = bin_digits[v & 0x01] + result;
@ -87,7 +78,7 @@ function toBinary(v) {
}
// From http://www.netlobo.com/url_query_string_javascript.html
function gup( name )
export function gup( name )
{
name = name.replace(/[[]/,'\\[').replace(/[\]]/,'\\]');
var regexS = '[\\?&]'+name+'=([^&#]*)';
@ -99,7 +90,7 @@ function gup( name )
return results[1];
}
function hup() {
export function hup() {
var regex = new RegExp('#(.*)');
var results = regex.exec(window.location.hash);
if ( !results )
@ -108,7 +99,7 @@ function hup() {
return results[1];
}
function keys(obj) {
export function keys(obj) {
var result = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
@ -118,6 +109,6 @@ function keys(obj) {
return result;
}
function each(obj, fn) {
export function each(obj, fn) {
keys(obj).forEach(fn);
}

5228
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -2,10 +2,11 @@
"name": "apple2js",
"version": "0.0.1",
"description": "Apple II Emulator in JavaScript",
"main": "index.js",
"scripts": {
"build": "webpack --mode=production",
"index": "scripts/index.pl > json/disks/index.js",
"lint": "eslint js"
"lint": "eslint js",
"start": "webpack-dev-server"
},
"repository": {
"type": "git",
@ -17,7 +18,11 @@
"url": "https://github.com/whscullin/apple2js/issues"
},
"homepage": "https://github.com/whscullin/apple2js#readme",
"dependencies": {
"eslint": "^5.12.0"
"devDependencies": {
"ajv": "^6.9.2",
"eslint": "^5.12.0",
"webpack": "^4.29.6",
"webpack-cli": "^3.2.3",
"webpack-dev-server": "^3.2.1"
}
}

View File

@ -4,58 +4,7 @@
<title>Test</title>
</head>
<body>
<script src="js/util.js"></script>
<script src="js/cpu6502.js"></script>
<script src="js/6502test.js"></script>
<script src="js/65C02test.js"></script>
<script>
var SYMBOLS = {};
var cpu;
var trace = [];
var lastPC = 0;
var done = false;
function traceCB() {
var pc = cpu.getPC()
done = lastPC == pc
lastPC = pc
var line = cpu.dumpRegisters() + ' ' + cpu.dumpPC(undefined, SYMBOLS);
trace.push(line);
if (trace.length > 1000) {
trace.shift();
}
}
function test6502() {
cpu = new CPU6502();
var test = new Test6502();
cpu.addPageHandler(test);
cpu.setPC(0x400);
do {
cpu.stepCyclesDebug(1000, traceCB);
} while (!done)
if (lastPC == 0x3469) {
window.alert("6502 Success!")
} else {
window.alert("Failed! " + toHex(lastPC))
}
}
function test65C02() {
cpu = new CPU6502({'65C02': true});
var test = new Test65C02();
cpu.addPageHandler(test);
cpu.setPC(0x400);
do {
cpu.stepCyclesDebug(1000, traceCB);
} while (!done)
if (lastPC == 0x24f1) {
window.alert("65C02 Success!")
} else {
window.alert("Failed! " + toHex(lastPC))
}
}
</script>
<script src="dist/test.js"></script>
<button onclick="test6502()">Test 6502</button>
<button onclick="test65C02()">Test 65C02</button>
</body>

20
webpack.config.js Normal file
View File

@ -0,0 +1,20 @@
/*globals require module */
const path = require('path');
module.exports =
{
devtool: 'source-map',
entry: {
main2: path.resolve('js/main2.js'),
main2e: path.resolve('js/main2e.js'),
test: path.resolve('js/test.js')
},
output: {
path: path.resolve('dist/')
},
devServer: {
compress: true,
watchContentBase: true,
writeToDisk: true
}
};