diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 070db9f..7cc77c0 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -17,9 +17,6 @@ jobs: uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - - uses: webfactory/ssh-agent@v0.5.0 - with: - ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} - name: npm install, build, and test run: | npm ci diff --git a/apple2js.html b/apple2js.html index 7eb7950..b6acb39 100644 --- a/apple2js.html +++ b/apple2js.html @@ -240,11 +240,15 @@
diff --git a/apple2jse.html b/apple2jse.html index fe2f208..1798561 100644 --- a/apple2jse.html +++ b/apple2jse.html @@ -249,11 +249,15 @@ diff --git a/js/gl.ts b/js/gl.ts index d35301b..1e1b217 100644 --- a/js/gl.ts +++ b/js/gl.ts @@ -517,6 +517,8 @@ export class HiresPageGL implements HiresPage { } } else if (bank === 0) { const hbs = val & 0x80; + const lastCol = col === 39; + const cropLastPixel = hbs && lastCol; const dx = col * 14; let offset = dx * 4 + dy * 560 * 4; if (hbs) { @@ -530,21 +532,24 @@ export class HiresPageGL implements HiresPage { } let bits = val; for (let idx = 0; idx < 7; idx++, offset += 8) { + const drawPixel = cropLastPixel && idx == 6 + ? this._drawHalfPixel + : this._drawPixel; if (bits & 0x01) { - this._drawPixel(data, offset, whiteCol); + drawPixel(data, offset, whiteCol); } else { - this._drawPixel(data, offset, blackCol); + drawPixel(data, offset, blackCol); } bits >>= 1; } + if (!this._refreshing) { + this._refreshing = true; + const after = addr + 1; + this._write(after >> 8, after & 0xff, this._buffer[0][after & 0x1fff], 0); + this._refreshing = false; + } } } - if (!this._refreshing && !doubleHiresMode && bank === 0) { - this._refreshing = true; - const after = addr + 1; - this._write(after >> 8, after & 0xff, this._buffer[0][after & 0x1fff], 0); - this._refreshing = false; - } } refresh() { diff --git a/js/ui/apple2.ts b/js/ui/apple2.ts index 8393fbf..8d2b958 100644 --- a/js/ui/apple2.ts +++ b/js/ui/apple2.ts @@ -49,6 +49,8 @@ type DiskCollection = { [name: string]: DiskDescriptor[] }; +const KNOWN_FILE_TYPES = [...DISK_FORMATS, ...TAPE_TYPES] as readonly string[]; + const disk_categories: DiskCollection = { 'Local Saves': [] }; const disk_sets: DiskCollection = {}; // Disk names @@ -239,7 +241,7 @@ export function loadAjax(drive: DriveNumber, url: string) { }); } -export function doLoad() { +export function doLoad(event: MouseEvent|KeyboardEvent) { MicroModal.close('load-modal'); const select = document.querySelector