From 566630920f593f118a8c64afb8ff91816077f779 Mon Sep 17 00:00:00 2001 From: Will Scullin Date: Sun, 24 Sep 2017 07:06:57 -0700 Subject: [PATCH] One canvas to rule them all. --- apple2js.html | 2 +- apple2jse.html | 2 +- js/{canvas2e.js => canvas.js} | 98 +++++-- js/canvas2.js | 499 ---------------------------------- js/cards/disk2.js | 18 +- js/main2.js | 39 +-- js/main2e.js | 28 +- 7 files changed, 119 insertions(+), 567 deletions(-) rename js/{canvas2e.js => canvas.js} (91%) delete mode 100644 js/canvas2.js diff --git a/apple2js.html b/apple2js.html index eba8910..dce26ec 100644 --- a/apple2js.html +++ b/apple2js.html @@ -49,7 +49,7 @@ - + diff --git a/apple2jse.html b/apple2jse.html index a0991ec..b031680 100644 --- a/apple2jse.html +++ b/apple2jse.html @@ -50,7 +50,7 @@ - + diff --git a/js/canvas2e.js b/js/canvas.js similarity index 91% rename from js/canvas2e.js rename to js/canvas.js index 7941a97..98aabe8 100644 --- a/js/canvas2e.js +++ b/js/canvas.js @@ -36,7 +36,7 @@ var scanlines = false; * ***************************************************************************/ -function LoresPage(page, charset, context) +function LoresPage(page, charset, e, context) { 'use strict'; @@ -119,12 +119,6 @@ function LoresPage(page, charset, context) _init(); return { - start: function() { - var self = this; - window.setInterval(function() { - self.blink(); - }, 267); - }, bank0: function() { var self = this; return { @@ -189,19 +183,29 @@ function LoresPage(page, charset, context) // 000001cd eabab000 -> 000abcde var ab = (adj & 0x18), cd = (page & 0x03) << 1, - e = adj >> 7; + ee = adj >> 7; var idx, jdx; - var row = ab | cd | e; + var row = ab | cd | ee; var b; var data = _imageData.data; if ((row < 24) && (col < 40)) { var color; if (textMode || hiresMode || (mixedMode && row > 19)) { - var flash = ((val & 0xc0) == 0x40) && - _blink && !_80colMode && !altCharMode; - fore = flash ? _black : (_greenMode ? _green : _white); - back = flash ? (_greenMode ? _green : _white) : _black; + if (e) { + var flash = ((val & 0xc0) == 0x40) && + _blink && !_80colMode && !altCharMode; + fore = flash ? _black : (_greenMode ? _green : _white); + back = flash ? (_greenMode ? _green : _white) : _black; + } else { + if (val & 0x80 || ((val & 0x40) && _blink)) { + fore = _greenMode ? _green : _white; + back = _black; + } else { + fore = _black; + back = _greenMode ? _green : _white; + } + } if (_80colMode) { if (!enhanced) { @@ -238,15 +242,29 @@ function LoresPage(page, charset, context) back = _colors[_buffer[1][base] & 0x0f]; } - for (jdx = 0; jdx < 8; jdx++) { - b = charset[val * 8 + jdx]; - for (idx = 0; idx < 7; idx++) { - color = (b & 0x01) ? back : fore; - _drawPixel(data, off, color); - b >>= 1; - off += 8; + if (e) { + for (jdx = 0; jdx < 8; jdx++) { + b = charset[val * 8 + jdx]; + for (idx = 0; idx < 7; idx++) { + color = (b & 0x01) ? back : fore; + _drawPixel(data, off, color); + b >>= 1; + off += 8; + } + off += 546 * 4 + 560 * 4; + } + } else { + for (jdx = 0; jdx < 8; jdx++) { + b = charset[val * 8 + jdx]; + b <<= 1; + for (idx = 0; idx < 7; idx++) { + color = (b & 0x80) ? fore : back; + _drawPixel(data, off, color); + b <<= 1; + off += 8; + } + off += 546 * 4 + 560 * 4; } - off += 546 * 4 + 560 * 4; } } } else { @@ -275,7 +293,7 @@ function LoresPage(page, charset, context) } for (jdx = 0; jdx < 8; jdx++) { color = _colors[(jdx < 4) ? - (val & 0x0f) : (val >> 4)]; + (val & 0x0f) : (val >> 4)]; for (idx = 0; idx < 7; idx++) { _drawHalfPixel(data, off, color); off += 4; @@ -306,8 +324,7 @@ function LoresPage(page, charset, context) } } else { for (jdx = 0; jdx < 8; jdx++) { - color = _colors[(jdx < 4) ? - (val & 0x0f) : (val >> 4)]; + color = _colors[(jdx < 4) ? (val & 0x0f) : (val >> 4)]; for (idx = 0; idx < 7; idx++) { _drawPixel(data, off, color); off += 8; @@ -355,6 +372,22 @@ function LoresPage(page, charset, context) context.putImageData(_imageData, 0, 0, 0, 0, 560, 384); } }, + start: function() { + var self = this; + setInterval(function() { + self.blink(); + }, 267); + return this._start(); + }, + end: function() { + return this._end(); + }, + read: function(page, off) { + return this._read(page, off, 0); + }, + write: function(page, off, val) { + return this._write(page, off, val, 0); + }, getState: function() { return { page: _page, @@ -767,6 +800,18 @@ function HiresPage(page, context) context.putImageData(_imageData, 0, 0, 0, 0, 560, 384); } }, + start: function() { + return this._start(); + }, + end: function() { + return this._end(); + }, + read: function(page, off) { + return this._read(page, off, 0); + }, + write: function(page, off, val) { + return this._write(page, off, val, 0); + }, getState: function() { return { page: _page, @@ -788,7 +833,7 @@ function HiresPage(page, context) }; } -function VideoModes(gr, hgr, gr2, hgr2) { +function VideoModes(gr, hgr, gr2, hgr2, e) { var _grs = [gr, gr2]; var _hgrs = [hgr, hgr2]; var _seq = ''; @@ -836,6 +881,7 @@ function VideoModes(gr, hgr, gr2, hgr2) { } }, _80col: function(on) { + if (!e) { return; } var old = _80colMode; _80colMode = on; @@ -848,6 +894,7 @@ function VideoModes(gr, hgr, gr2, hgr2) { } }, altchar: function(on) { + if (!e) { return; } var old = altCharMode; altCharMode = on; if (old != on) { @@ -867,6 +914,7 @@ function VideoModes(gr, hgr, gr2, hgr2) { } }, doublehires: function(on) { + if (!e) { return; } var old = doubleHiresMode; doubleHiresMode = on; diff --git a/js/canvas2.js b/js/canvas2.js deleted file mode 100644 index fdfe0be..0000000 --- a/js/canvas2.js +++ /dev/null @@ -1,499 +0,0 @@ -/* Copyright 2010-2016 Will Scullin - * - * 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. - */ - - /*globals allocMemPages: false, - base64_encode: false, base64_decode: false */ - /*exported LoresPage, HiresPage, VideoModes*/ - -var textMode = true; -var mixedMode = true; -var hiresMode = false; -var pageMode = 1; -var scanlines = false; -var multiScreen = false; - -/**************************************************************************** - * - * Text/Lores Graphics - * - ***************************************************************************/ - -function LoresPage(page, charset, context) -{ - 'use strict'; - - // $00-$3F inverse - // $40-$7F flashing - // $80-$FF normal - - var _page = page; - var _imageData; - var _buffer = []; - var _refreshing = false; - var _greenMode = false; - var _blink = false; - - var _black = [0x00,0x00,0x00]; - var _white = [0xff,0xff,0xff]; - var _green = [0x00,0xff,0x80]; - - var _colors = [ - [0x00,0x00,0x00], // black - [0xdd,0x00,0x33], // 0x1 deep red - [0x00,0x00,0x99], // 0x2 dark blue - [0xdd,0x00,0xdd], // 0x3 purple - [0x00,0x77,0x00], // 0x4 dark green - [0x55,0x55,0x55], // 0x5 dark gray - [0x23,0x22,0xff], // 0x6 medium blue - [0x66,0xaa,0xff], // 0x7 light blue - [0x88,0x55,0x22], // 0x8 brown - [0xff,0x66,0x00], // 0x9 orange - [0xaa,0xaa,0xaa], // 0xa light gray - [0xff,0x99,0x88], // 0xb pink - [0x00,0xdd,0x00], // 0xc green - [0xff,0xff,0x00], // 0xd yellow - [0x00,0xff,0x99], // 0xe aquamarine - [0xff,0xff,0xff] // 0xf white - ]; - - function _init() { - var idx; - _imageData = context.createImageData(560, 384); - for (idx = 0; idx < 560 * 384 * 4; idx++) { - _imageData.data[idx] = 0xff; - } - _buffer = allocMemPages(0x4); - } - - function _drawPixel(data, off, color) { - var c0 = color[0], c1 = color[1], c2 = color[2]; - data[off + 0] = data[off + 4] = c0; - data[off + 1] = data[off + 5] = c1; - data[off + 2] = data[off + 6] = c2; - if (!scanlines) { - data[off + 560 * 4] = data[off + 560 * 4 + 4] = c0; - data[off + 560 * 4 + 1] = data[off + 560 * 4 + 5] = c1; - data[off + 560 * 4 + 2] = data[off + 560 * 4 + 6] = c2; - } else { - data[off + 560 * 4] = data[off + 560 * 4 + 4] = c0 >> 1; - data[off + 560 * 4 + 1] = data[off + 560 * 4 + 5] = c1 >> 1; - data[off + 560 * 4 + 2] = data[off + 560 * 4 + 6] = c2 >> 1; - } - } - - function _drawHalfPixel(data, off, color) { - var c0 = color[0], c1 = color[1], c2 = color[2]; - data[off + 0] = c0; - data[off + 1] = c1; - data[off + 2] = c2; - if (!scanlines) { - data[off + 560 * 4] = c0; - data[off + 560 * 4 + 1] = c1; - data[off + 560 * 4 + 2] = c2; - } else { - data[off + 560 * 4] = c0 >> 1; - data[off + 560 * 4 + 1] = c1 >> 1; - data[off + 560 * 4 + 2] = c2 >> 1; - } - } - - _init(); - - return { - start: function() { - var self = this; - window.setInterval(function() { - self.blink(); - }, 267); - return (0x04 * _page); - }, - end: function() { return (0x04 * _page) + 0x03; }, - read: function(page, off) { - var addr = (page << 8) | off, - base = addr - 0x400 * _page; - return _buffer[base]; - }, - write: function(page, off, val) { - var addr = (page << 8) | off, - base = addr - 0x400 * _page; - - if (_buffer[base] === val && !_refreshing) - return; - _buffer[base] = val; - - var col = (base % 0x80) % 0x28, - adj = off - col; - - // 000001cd eabab000 -> 000abcde - var ab = (adj & 0x18), - cd = (page & 0x03) << 1, - e = adj >> 7; - - var row = ab | cd | e, color, idx, jdx, b; - - if ((row < 24) && (col < 40)) { - var data = _imageData.data, fore, back; - off = (col * 14 + row * 560 * 8 * 2) * 4; - - if (textMode || hiresMode || (mixedMode && row > 19)) { - if (val & 0x80 || ((val & 0x40) && _blink)) { - fore = _greenMode ? _green : _white; - back = _black; - } else { - fore = _black; - back = _greenMode ? _green : _white; - } - for (jdx = 0; jdx < 8; jdx++) { - b = charset[val * 8 + jdx]; - b <<= 1; - for (idx = 0; idx < 7; idx++) { - color = (b & 0x80) ? fore : back; - _drawPixel(data, off, color); - b <<= 1; - off += 8; - } - off += 546 * 4 + 560 * 4; - } - } else { - if (_greenMode) { - fore = _green; - back = _black; - for (jdx = 0; jdx < 8; jdx++) { - b = (jdx < 4) ? (val & 0x0f) : (val >> 4); - b |= (b << 4); - b |= (b << 8); - if ((col & 0x1) !== 0) { - b <<= 2; - } - for (idx = 0; idx < 14; idx++) { - color = (b & 0x8000) ? fore : back; - _drawHalfPixel(data, off, color); - b <<= 1; - off += 4; - } - off += 546 * 4 + 560 * 4; - } - } else { - for (jdx = 0; jdx < 8; jdx++) { - b = (jdx < 4) ? (val & 0x0f) : (val >> 4); - color = _colors[b]; - for (idx = 0; idx < 7; idx++) { - _drawPixel(data, off, color); - off += 8; - } - off += 546 * 4 + 560 * 4; - } - } - } - } - }, - refresh: function() { - var addr = 0x400 * _page; - _refreshing = true; - for (var idx = 0; idx < 0x400; idx++, addr++) { - this.write(addr >> 8, addr & 0xff, _buffer[idx]); - } - _refreshing = false; - }, - blink: function() { - var addr = 0x400 * _page; - _refreshing = true; - _blink = !_blink; - for (var idx = 0; idx < 0x400; idx++, addr++) { - var b = _buffer[idx]; - if ((b & 0xC0) == 0x40) { - this.write(addr >> 8, addr & 0xff, _buffer[idx]); - } - } - _refreshing = false; - }, - green: function(on) { - _greenMode = on; - this.refresh(); - }, - blit: function(mixed) { - if (mixed) { - context.putImageData(_imageData, 0, 0, 0, 320, 560, 64); - } else { - context.putImageData(_imageData, 0, 0, 0, 0, 560, 384); - } - }, - getState: function() { - return { - page: _page, - green: _green, - buffer: base64_encode(_buffer) - }; - }, - setState: function(state) { - _page = state.page; - _green = state.green; - _buffer = base64_decode(state.buffer); - - this.refresh(); - } - }; -} - -function HiresPage(page, context) -{ - var _page = page; - var _imageData; - - var orangeCol = [0xff, 0x65, 0x00]; - var greenCol = [0x00, 0xff, 0x00]; - var blueCol = [0x09, 0x2a, 0xff]; - var violetCol = [0xc9, 0x39, 0xc7]; - var whiteCol = [0xff, 0xff, 0xff]; - var blackCol = [0x00, 0x00, 0x00]; - - var _buffer = []; - var _refreshing = false; - - var _green = [0x00, 0xff, 0x80]; - var _greenMode = false; - - function _init() { - var idx; - _imageData = context.createImageData(560, 384); - for (idx = 0; idx < 560 * 384 * 4; idx++) { - _imageData.data[idx] = 0xff; - } - _buffer = allocMemPages(0x20); - } - - function _drawPixel(data, off, color) { - var c0 = color[0], c1 = color[1], c2 = color[2]; - - data[off + 0] = data[off + 4] = c0; - data[off + 1] = data[off + 5] = c1; - data[off + 2] = data[off + 6] = c2; - if (!scanlines) { - data[off + 560 * 4] = data[off + 560 * 4 + 4] = c0; - data[off + 560 * 4 + 1] = data[off + 560 * 4 + 5] = c1; - data[off + 560 * 4 + 2] = data[off + 560 * 4 + 6] = c2; - } else { - data[off + 560 * 4] = data[off + 560 * 4 + 4] = c0 >> 1; - data[off + 560 * 4 + 1] = data[off + 560 * 4 + 5] = c1 >> 1; - data[off + 560 * 4 + 2] = data[off + 560 * 4 + 6] = c2 >> 1; - } - } - - _init(); - - return { - start: function() { return (0x20 * _page); }, - end: function() { return (0x020 * _page) + 0x1f; }, - read: function(page, off) { - var addr = (page << 8) | off, - base = addr - 0x2000 * _page; - return _buffer[base]; - }, - write: function(page, off, val) { - function dim(c) { - return [c[0] * 0.75, c[1] * 0.75, c[2] * 0.75]; - } - var addr = (page << 8) | off, - base = addr - 0x2000 * _page; - if (_buffer[base] === val && !_refreshing) - return; - _buffer[base] = val; - - var hbs = val & 0x80; - val &= 0x7f; - - var col = (base % 0x80) % 0x28, - adj = off - col; - - // 000001cd eabab000 -> 000abcde - var ab = (adj & 0x18), - cd = (page & 0x03) << 1, - e = adj >> 7; - - var rowa = ab | cd | e, - rowb = base >> 10; - - if ((rowa < 24) && (col < 40)) { - var data = _imageData.data, - dy = rowa * 8 + rowb, - dx = col * 14 - 2, - b0 = col > 0 ? _buffer[base - 1] : 0, - b2 = col < 39 ? _buffer[base + 1] : 0; - val |= (b2 & 0x3) << 7; - var v0 = b0 & 0x20, v1 = b0 & 0x40, v2 = val & 0x1, - odd = (col & 0x1) === 0, - color, - oddCol = (hbs ? orangeCol : greenCol), - evenCol = (hbs ? blueCol : violetCol); - - off = dx * 4 + dy * 560 * 4 * 2; - for (var idx = 0; idx < 9; idx++, off += 8) { - val >>= 1; - - if (v1) { - if (_greenMode) { - color = _green; - } else if (v0 || v2) { - color = whiteCol; - } else { - color = odd ? oddCol : evenCol; - } - } else { - if (_greenMode) { - color = blackCol; - } else if (odd && v2 && v0) { - color = v0 ? dim(evenCol) : evenCol; - } else if (!odd && v0 && v2) { - color = v2 ? dim(oddCol) : oddCol; - } else { - color = blackCol; - } - } - - if (dx > -1 && dx < 560) { - _drawPixel(data, off, color); - } - dx += 2; - - v0 = v1; - v1 = v2; - v2 = val & 0x01; - odd = !odd; - } - } - }, - refresh: function() { - var addr = 0x2000 * _page; - _refreshing = true; - for (var idx = 0; idx < 0x2000; idx++, addr++) { - this.write(addr >> 8, addr & 0xff, _buffer[idx]); - } - _refreshing = false; - }, - green: function(on) { - _greenMode = on; - this.refresh(); - }, - blit: function(mixed) { - if (mixed) { - context.putImageData(_imageData, 0, 0, 0, 0, 560, 320); - } else { - context.putImageData(_imageData, 0, 0, 0, 0, 560, 384); - } - }, - getState: function() { - return { - page: _page, - green: _greenMode, - buffer: base64_encode(_buffer) - }; - }, - setState: function(state) { - _page = state.page; - _greenMode = state.green; - _buffer = base64_decode(state.buffer); - - this.refresh(); - } - }; -} - -function VideoModes(gr,hgr,gr2,hgr2) { - var _grs = [gr, gr2]; - var _hgrs = [hgr, hgr2]; - - function _refresh() { - _grs[0].refresh(); - _grs[1].refresh(); - _hgrs[0].refresh(); - _hgrs[1].refresh(); - } - - return { - refresh: function() { - _refresh(); - }, - text: function(on) { - var old = textMode; - textMode = on; - if (old != on) { - _refresh(); - } - }, - hires: function(on) { - var old = hiresMode; - hiresMode = on; - if (old != on) { - _refresh(); - } - }, - mixed: function(on) { - var old = mixedMode; - mixedMode = on; - if (old != on) { - _refresh(); - } - }, - page: function(pageNo) { - pageMode = pageNo; - }, - blit: function() { - if (multiScreen) { - _grs[0].blit(); - _grs[1].blit(); - _hgrs[0].blit(); - _hgrs[1].blit(); - } else { - if (hiresMode && !textMode) { - if (mixedMode) { - _grs[pageMode - 1].blit(true); - _hgrs[pageMode - 1].blit(true); - } else { - _hgrs[pageMode - 1].blit(); - } - } else { - _grs[pageMode - 1].blit(); - } - } - }, - getState: function() { - return { - grs: [_grs[0].getState(), _grs[1].getState()], - hgrs: [_hgrs[0].getState(), _hgrs[1].getState()], - textMode: textMode, - mixedMode: mixedMode, - hiresMode: hiresMode, - pageMode: pageMode - }; - }, - setState: function(state) { - textMode = state.textMode; - mixedMode = state.mixedMode; - hiresMode = state.hiresMode; - pageMode = state.pageMode; - - _grs[0].setState(state.grs[0]); - _grs[1].setState(state.grs[1]); - _hgrs[0].setState(state.hgrs[0]); - _hgrs[1].setState(state.hgrs[1]); - }, - green: function(on) { - _grs[0].green(on); - _grs[1].green(on); - _hgrs[0].green(on); - _hgrs[1].green(on); - }, - scanlines: function(on) { - scanlines = on; - _refresh(); - } - }; -} diff --git a/js/cards/disk2.js b/js/cards/disk2.js index 392047c..a96343f 100644 --- a/js/cards/disk2.js +++ b/js/cards/disk2.js @@ -70,15 +70,15 @@ function DiskII(io, slot, callbacks) DRIVEWRITEMODE: 0x8F // Q7H }; -// var DO = [0x0,0x7,0xE,0x6,0xD,0x5,0xC,0x4, -// 0xB,0x3,0xA,0x2,0x9,0x1,0x8,0xF]; + // var DO = [0x0,0x7,0xE,0x6,0xD,0x5,0xC,0x4, + // 0xB,0x3,0xA,0x2,0x9,0x1,0x8,0xF]; var _DO = [ 0x0,0xD,0xB,0x9,0x7,0x5,0x3,0x1, 0xE,0xC,0xA,0x8,0x6,0x4,0x2,0xF ]; -// var PO = [0x0,0x8,0x1,0x9,0x2,0xa,0x3,0xb, -// 0x4,0xc,0x5,0xd,0x6,0xe,0x7,0xf]; + // var PO = [0x0,0x8,0x1,0x9,0x2,0xa,0x3,0xb, + // 0x4,0xc,0x5,0xd,0x6,0xe,0x7,0xf]; var _PO = [ 0x0,0x2,0x4,0x6,0x8,0xa,0xc,0xe, 0x1,0x3,0x5,0x7,0x9,0xb,0xd,0xf @@ -130,7 +130,7 @@ function DiskII(io, slot, callbacks) ]; function _debug() { - console.log.apply(this, arguments); + // console.log.apply(this, arguments); } function _init() { @@ -507,9 +507,9 @@ function DiskII(io, slot, callbacks) } var _phase_delta = [[ 0, 1, 2,-1], - [-1, 0, 1, 2], - [-2,-1, 0, 1], - [ 1,-2,-1, 0]]; + [-1, 0, 1, 2], + [-2,-1, 0, 1], + [ 1,-2,-1, 0]]; function setPhase(phase, on) { // _debug('phase ' + phase + (on ? ' on' : ' off')); @@ -670,7 +670,7 @@ function DiskII(io, slot, callbacks) 0xc8,0xd0,0xee,0xe6,0x27,0xe6,0x3d,0xa5, 0x3d,0xcd,0x00,0x08,0xa6,0x2b,0x90,0xdb, 0x4c,0x01,0x08,0x00,0x00,0x00,0x00,0x00 ]; -/* + /* var diskII_13 = [ 0xa2,0x20,0xa0,0x00,0xa9,0x03,0x85,0x3c, 0x18,0x88,0x98,0x24,0x3c,0xf0,0xf5,0x26, diff --git a/js/main2.js b/js/main2.js index 33d1c0d..4e25217 100644 --- a/js/main2.js +++ b/js/main2.js @@ -28,7 +28,8 @@ pauseRun, step, restoreState, saveState, dumpProgram, PageDebug, - multiScreen + multiScreen, + enhanced */ var kHz = 1023; @@ -91,9 +92,12 @@ function DriveLights() { return { driveLight: function(drive, on) { - $('#disk' + drive).css('background-image', - on ? 'url(css/red-on-16.png)' : - 'url(css/red-off-16.png)'); + $('#disk' + drive).css( + 'background-image', + on ? + 'url(css/red-on-16.png)' : + 'url(css/red-off-16.png)' + ); }, dirty: function() { // $('#disksave' + drive).button('option', 'disabled', !dirty); @@ -330,7 +334,7 @@ function doLoadHTTP(drive, _url) { req.responseType = 'arraybuffer'; req.onload = function() { - var parts = url.split(/[\/\.]/); + var parts = url.split(/[/.]/); var name = decodeURIComponent(parts[parts.length - 2]); var ext = parts[parts.length - 1].toLowerCase(); if (disk2.setBinary(drive, name, ext, req.response)) { @@ -381,6 +385,7 @@ if (canvas4) { } var romVersion = prefs.readPref('computer_type2'); +var enhanced = false; var rom; var char_rom = apple2_charset; switch (romVersion) { @@ -406,8 +411,8 @@ default: rom = new Apple2ROM(); } -var gr = new LoresPage(1, char_rom, context1); -var gr2 = new LoresPage(2, char_rom, context2); +var gr = new LoresPage(1, char_rom, false, context1); +var gr2 = new LoresPage(2, char_rom, false, context2); var hgr = new HiresPage(1, context3); var hgr2 = new HiresPage(2, context4); @@ -416,7 +421,7 @@ var ram1 = new RAM(0x00, 0x03), ram3 = new RAM(0x60, 0xBF); -var vm = new VideoModes(gr, hgr, gr2, hgr2); +var vm = new VideoModes(gr, hgr, gr2, hgr2, false); var dumper = new ApplesoftDump(cpu); var drivelights = new DriveLights(); @@ -942,17 +947,17 @@ $(function() { } evt.preventDefault(); }) - .mouseup(function(evt) { - if (!gamepad) { - io.buttonUp(evt.which == 1 ? 0 : 1); - } - }) - .bind('contextmenu', function(evt) { evt.preventDefault(); }); + .mouseup(function(evt) { + if (!gamepad) { + io.buttonUp(evt.which == 1 ? 0 : 1); + } + }) + .bind('contextmenu', function(evt) { evt.preventDefault(); }); $('body').mousemove(_mousemove); $('input,textarea').focus(function() { focused = true; }) - .blur(function() { focused = false; }); + .blur(function() { focused = false; }); keyboard.create($('#keyboard')); @@ -973,9 +978,7 @@ $(function() { }); } - if (romVersion != 'original') { - reset(); - } + reset(); run(); setInterval(updateKHz, 1000); updateSound(); diff --git a/js/main2e.js b/js/main2e.js index 0f9b294..18a9fa5 100644 --- a/js/main2e.js +++ b/js/main2e.js @@ -89,8 +89,8 @@ function DriveLights() return { driveLight: function(drive, on) { $('#disk' + drive).css('background-image', - on ? 'url(css/red-on-16.png)' : - 'url(css/red-off-16.png)'); + on ? 'url(css/red-on-16.png)' : + 'url(css/red-off-16.png)'); }, dirty: function() { // $('#disksave' + drive).button('option', 'disabled', !dirty); @@ -327,7 +327,7 @@ function doLoadHTTP(drive, _url) { req.responseType = 'arraybuffer'; req.onload = function() { - var parts = url.split(/[\/\.]/); + var parts = url.split(/[/.]/); var name = decodeURIComponent(parts[parts.length - 2]); var ext = parts[parts.length - 1].toLowerCase(); if (req.response.byteLength >= 400 * 1024) { @@ -401,12 +401,12 @@ if (canvas4) { context4 = context1; } -var gr = new LoresPage(1, char_rom, context1); -var gr2 = new LoresPage(2, char_rom, context2); +var gr = new LoresPage(1, char_rom, true, context1); +var gr2 = new LoresPage(2, char_rom, true, context2); var hgr = new HiresPage(1, context3); var hgr2 = new HiresPage(2, context4); -var vm = new VideoModes(gr, hgr, gr2, hgr2); +var vm = new VideoModes(gr, hgr, gr2, hgr2, true); var dumper = new ApplesoftDump(cpu); var drivelights = new DriveLights(); @@ -919,20 +919,20 @@ $(function() { } evt.preventDefault(); }) - .mouseup(function(evt) { - if (!gamepad) { - io.buttonUp(evt.which == 1 ? 0 : 1); - } - }) - .bind('contextmenu', function(evt) { evt.preventDefault(); }); + .mouseup(function(evt) { + if (!gamepad) { + io.buttonUp(evt.which == 1 ? 0 : 1); + } + }) + .bind('contextmenu', function(evt) { evt.preventDefault(); }); $('body').mousemove(_mousemove); $('body > div').hover(function() { focused = false; }, - function() { focused = true; }); + function() { focused = true; }); $('input,textarea').focus(function() { focused = true; }) - .blur(function() { focused = false; }); + .blur(function() { focused = false; }); keyboard.create($('#keyboard'));