diff --git a/src/main/java/jace/apple2e/VideoDHGR.java b/src/main/java/jace/apple2e/VideoDHGR.java index 3e76829..8abbe12 100644 --- a/src/main/java/jace/apple2e/VideoDHGR.java +++ b/src/main/java/jace/apple2e/VideoDHGR.java @@ -402,7 +402,7 @@ public class VideoDHGR extends Video { writer.setColor(x++, y, color); } - private void displayDoubleLores(WritableImage screen, int xOffset, int y, int rowAddress) { + protected void displayDoubleLores(WritableImage screen, int xOffset, int y, int rowAddress) { int c1 = ((RAM128k) computer.getMemory()).getAuxVideoMemory().readByte(rowAddress + xOffset) & 0x0FF; int c2 = ((RAM128k) computer.getMemory()).getMainMemory().readByte(rowAddress + xOffset) & 0x0FF; if ((y & 7) < 4) { diff --git a/src/main/java/jace/apple2e/VideoNTSC.java b/src/main/java/jace/apple2e/VideoNTSC.java index 37f7fe1..96b0b61 100644 --- a/src/main/java/jace/apple2e/VideoNTSC.java +++ b/src/main/java/jace/apple2e/VideoNTSC.java @@ -121,6 +121,36 @@ public class VideoNTSC extends VideoDHGR { scanline[pos++] = pat; } + @Override + protected void displayDoubleLores(WritableImage screen, int xOffset, int y, int rowAddress) { + if (lastKnownY != y) { + lastKnownY = y; + pos = rowStart = divBy28[xOffset]; + colorActive = true; + } + int c1 = ((RAM128k) computer.getMemory()).getAuxVideoMemory().readByte(rowAddress + xOffset) & 0x0FF; + if ((y & 7) < 4) { + c1 &= 15; + } else { + c1 >>= 4; + } + int c2 = ((RAM128k) computer.getMemory()).getMainMemory().readByte(rowAddress + xOffset) & 0x0FF; + if ((y & 7) < 4) { + c2 &= 15; + } else { + c2 >>= 4; + } + if ((xOffset & 0x01) == 0) { + int pat = c1 | c1 << 4 | c2 << 8 | (c2 & 3) << 12; + scanline[pos] = pat; + } else { + int pat = scanline[pos]; + pat |= (c1 & 12) << 12 | c1 << 16 | c2 << 20 | c2 << 24; + scanline[pos] = pat; + pos++; + } + } + private void doDisplay(WritableImage screen, int xOffset, int y, int dhgrWord) { if (pos >= 20) { pos -= 20; diff --git a/src/main/java/jace/core/Keyboard.java b/src/main/java/jace/core/Keyboard.java index 9a202dd..1ffeac6 100644 --- a/src/main/java/jace/core/Keyboard.java +++ b/src/main/java/jace/core/Keyboard.java @@ -177,6 +177,9 @@ public class Keyboard implements Reconfigurable { case KP_DOWN: c = 10; break; + case ESCAPE: + c = 27; + break; case TAB: c = 9; break; @@ -187,10 +190,6 @@ public class Keyboard implements Reconfigurable { c = 127; break; default: - -// if (e.isControlDown()) { -// c = (char) (c - 'A' + 1); -// } } if (c < 128) { diff --git a/src/main/java/jace/core/Palette.java b/src/main/java/jace/core/Palette.java index 80a55e6..3de0e88 100644 --- a/src/main/java/jace/core/Palette.java +++ b/src/main/java/jace/core/Palette.java @@ -37,21 +37,21 @@ public class Palette { static public Color[] color; static { color = new Color[16]; - color[ 0] = new Color( 0, 0, 0, 1); - color[ 1] = new Color(208, 0, 48, 1); - color[ 2] = new Color( 0, 0,128, 1); - color[ 3] = new Color(255, 0,255, 1); - color[ 4] = new Color( 0,128, 0, 1); - color[ 5] = new Color(128,128,128, 1); - color[ 6] = new Color( 0, 0,255, 1); - color[ 7] = new Color( 96,160,255, 1); - color[ 8] = new Color(128, 80, 0, 1); - color[ 9] = new Color(255,128, 0, 1); - color[10] = new Color(192,192,192, 1); - color[11] = new Color(255,144,128, 1); - color[12] = new Color( 0,255, 0, 1); - color[13] = new Color(255,255, 0, 1); - color[14] = new Color( 64,255,144, 1); - color[15] = new Color(255,255,255, 1); + color[ 0] = Color.rgb(0, 0, 0); + color[ 1] = Color.rgb(208, 0, 48); + color[ 2] = Color.rgb( 0, 0,128); + color[ 3] = Color.rgb(255, 0,255); + color[ 4] = Color.rgb( 0,128, 0); + color[ 5] = Color.rgb(128,128,128); + color[ 6] = Color.rgb( 0, 0,255); + color[ 7] = Color.rgb( 96,160,255); + color[ 8] = Color.rgb(128, 80, 0); + color[ 9] = Color.rgb(255,128, 0); + color[10] = Color.rgb(192,192,192); + color[11] = Color.rgb(255,144,128); + color[12] = Color.rgb( 0,255, 0); + color[13] = Color.rgb(255,255, 0); + color[14] = Color.rgb( 64,255,144); + color[15] = Color.rgb(255,255,255); } } \ No newline at end of file