home *** CD-ROM | disk | FTP | other *** search
- import java.awt.Canvas;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Event;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.TextField;
- import java.awt.image.ImageObserver;
- import java.io.BufferedInputStream;
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.InputStream;
- import java.net.URL;
- import java.net.URLConnection;
- import java.util.Hashtable;
-
- public class Spectrum extends Z80 {
- public Graphics parentGraphics;
- public Graphics canvasGraphics;
- public Graphics bufferGraphics;
- public Image bufferImage;
- public Container parent;
- public Canvas canvas;
- public TextField urlField;
- public AMDProgressBar progressBar;
- public int sleepHack;
- public int refreshRate = 1;
- private int interruptCounter;
- private boolean resetAtNextInterrupt = false;
- private boolean pauseAtNextInterrupt = false;
- private boolean refreshNextInterrupt = true;
- private boolean loadFromURLFieldNextInterrupt = false;
- public Thread pausedThread;
- public long timeOfLastInterrupt;
- private long timeOfLastSample;
- public int borderWidth = 20;
- public static final int pixelScale = 1;
- public static final int nPixelsWide = 256;
- public static final int nPixelsHigh = 192;
- public static final int nCharsWide = 32;
- public static final int nCharsHigh = 24;
- private static final int sat = 238;
- private static final Color[] brightColors;
- private static final int firstAttr = 6144;
- private static final int lastAttr = 6912;
- private int first = -1;
- private int FIRST = -1;
- private final int[] last = new int[6912];
- private final int[] next = new int[6912];
- public int newBorder = 7;
- public int oldBorder = -1;
- public long oldTime;
- public int oldSpeed = -1;
- public int newSpeed;
- public boolean showStats = true;
- public String statsMessage;
- private static final String cancelMessage;
- private boolean flashInvert = false;
- private static final String fullSpeed = "Full Speed: ";
- private static final String slowSpeed = "Slow Speed: ";
- public boolean runAtFullSpeed = true;
- public static Hashtable patternMap;
- public static Image[] imageMap;
- // $FF: renamed from: b4 int
- private static final int field_0 = 16;
- // $FF: renamed from: b3 int
- private static final int field_1 = 8;
- // $FF: renamed from: b2 int
- private static final int field_2 = 4;
- // $FF: renamed from: b1 int
- private static final int field_3 = 2;
- // $FF: renamed from: b0 int
- private static final int field_4 = 1;
- private int _B_SPC = 255;
- private int _H_ENT = 255;
- private int _Y_P = 255;
- private int _6_0 = 255;
- private int _1_5 = 255;
- private int _Q_T = 255;
- private int _A_G = 255;
- private int _CAPS_V = 255;
- public int bytesReadSoFar;
- public int bytesToReadTotal;
-
- public Spectrum(Container var1) throws Exception {
- super((double)3.5F);
- this.parent = var1;
- this.parent.add(this.canvas = new Canvas());
- this.canvas.resize(256, 192);
- this.canvas.show();
- this.bufferImage = this.parent.createImage(256, 192);
- this.bufferGraphics = this.bufferImage.getGraphics();
- this.parentGraphics = this.parent.getGraphics();
- this.canvasGraphics = this.canvas.getGraphics();
- this.parent.add(this.progressBar = new AMDProgressBar());
- this.progressBar.setBarColor(new Color(192, 52, 4));
- this.progressBar.show();
- this.progressBar.hide();
- this.parent.add(this.urlField = new TextField());
- this.urlField.show();
- this.urlField.hide();
- }
-
- public void setBorderWidth(int var1) {
- this.borderWidth = var1;
- this.canvas.move(this.borderWidth, this.borderWidth);
- this.urlField.reshape(0, 0, this.parent.preferredSize().width, this.urlField.preferredSize().height);
- this.progressBar.reshape(1, this.borderWidth + 192 + 2, 256 + this.borderWidth * 2 - 2, this.borderWidth - 2);
- this.progressBar.setFont(this.urlField.getFont());
- }
-
- public int inb(int var1) {
- int var2 = 255;
- if ((var1 & 1) == 0) {
- if ((var1 & 'ΦÇÇ') == 0) {
- var2 &= this._B_SPC;
- }
-
- if ((var1 & 16384) == 0) {
- var2 &= this._H_ENT;
- }
-
- if ((var1 & 8192) == 0) {
- var2 &= this._Y_P;
- }
-
- if ((var1 & 4096) == 0) {
- var2 &= this._6_0;
- }
-
- if ((var1 & 2048) == 0) {
- var2 &= this._1_5;
- }
-
- if ((var1 & 1024) == 0) {
- var2 &= this._Q_T;
- }
-
- if ((var1 & 512) == 0) {
- var2 &= this._A_G;
- }
-
- if ((var1 & 256) == 0) {
- var2 &= this._CAPS_V;
- }
- }
-
- return var2;
- }
-
- public void outb(int var1, int var2, int var3) {
- if ((var1 & 1) == 0) {
- this.newBorder = var2 & 7;
- }
-
- }
-
- public void pokeb(int var1, int var2) {
- if (var1 >= 23296) {
- super.mem[var1] = var2;
- } else if (var1 >= 16384) {
- if (super.mem[var1] != var2) {
- this.plot(var1, var2);
- super.mem[var1] = var2;
- }
-
- }
- }
-
- public void pokew(int var1, int var2) {
- int[] var3 = super.mem;
- if (var1 >= 23296) {
- var3[var1] = var2 & 255;
- ++var1;
- if (var1 != 65536) {
- var3[var1] = var2 >> 8;
- }
-
- } else if (var1 >= 16384) {
- int var4 = var2 & 255;
- if (var3[var1] != var4) {
- this.plot(var1, var4);
- var3[var1] = var4;
- }
-
- int var5 = var2 >> 8;
- ++var1;
- if (var1 != 23296) {
- if (var3[var1] != var5) {
- this.plot(var1, var5);
- var3[var1] = var5;
- return;
- }
- } else {
- var3[var1] = var5;
- }
-
- }
- }
-
- private void loadFromURLField() {
- try {
- this.pauseOrResume();
- this.urlField.hide();
- URL var1 = new URL(this.urlField.getText());
- URLConnection var2 = var1.openConnection();
- InputStream var3 = var2.getInputStream();
- this.loadSnapshot(var1.toString(), var3, var2.getContentLength());
- var3.close();
- } catch (Exception var4) {
- this.showMessage(((Throwable)var4).toString());
- }
- }
-
- public final int interrupt() {
- if (this.pauseAtNextInterrupt) {
- this.urlField.show();
- this.pausedThread = Thread.currentThread();
-
- while(this.pauseAtNextInterrupt) {
- this.showMessage("Adam Davidson & Andrew Pollard");
- if (this.refreshNextInterrupt) {
- this.refreshNextInterrupt = false;
- this.oldBorder = -1;
- this.paintBuffer();
- }
-
- if (this.loadFromURLFieldNextInterrupt) {
- this.loadFromURLFieldNextInterrupt = false;
- this.loadFromURLField();
- } else {
- try {
- Thread.sleep(500L);
- } catch (Exception var5) {
- }
- }
- }
-
- this.pausedThread = null;
- this.urlField.hide();
- }
-
- if (this.refreshNextInterrupt) {
- this.refreshNextInterrupt = false;
- this.oldBorder = -1;
- this.paintBuffer();
- }
-
- if (this.resetAtNextInterrupt) {
- this.resetAtNextInterrupt = false;
- this.reset();
- }
-
- ++this.interruptCounter;
- if (this.interruptCounter % 25 == 0) {
- this.refreshFlashChars();
- }
-
- if (this.interruptCounter % 100 == 0) {
- this.refreshSpeed();
- }
-
- if (this.interruptCounter % this.refreshRate == 0) {
- this.screenPaint();
- }
-
- this.timeOfLastInterrupt = System.currentTimeMillis();
- if (this.interruptCounter % 4 == 0) {
- long var1 = this.timeOfLastInterrupt - this.timeOfLastSample;
- this.timeOfLastSample = this.timeOfLastInterrupt;
- if (!this.runAtFullSpeed && var1 < 40L) {
- try {
- Thread.sleep(50L - var1);
- } catch (Exception var4) {
- }
- }
- }
-
- if (this.sleepHack > 0) {
- try {
- Thread.sleep((long)this.sleepHack);
- } catch (Exception var3) {
- }
- }
-
- return super.interrupt();
- }
-
- public void pauseOrResume() {
- if (this.pausedThread == null) {
- this.pauseAtNextInterrupt = true;
- } else {
- this.pauseAtNextInterrupt = false;
- }
- }
-
- public void repaint() {
- this.refreshNextInterrupt = true;
- }
-
- public void reset() {
- super.reset();
- this.outb(254, 255, 0);
- }
-
- public final void refreshSpeed() {
- long var1 = this.timeOfLastInterrupt;
- if (this.oldTime != 0L) {
- this.newSpeed = (int)((double)200000.0F / (double)(var1 - this.oldTime));
- }
-
- this.oldTime = var1;
- if (this.statsMessage != null && this.sleepHack > 0 && this.statsMessage != cancelMessage) {
- this.showMessage(cancelMessage);
- } else {
- this.showMessage((String)null);
- }
- }
-
- private final void refreshFlashChars() {
- this.flashInvert = !this.flashInvert;
-
- for(int var1 = 6144; var1 < 6912; ++var1) {
- int var2 = super.mem[var1 + 16384];
- if ((var2 & 128) != 0) {
- this.last[var1] = ~var2 & 255;
- if (this.next[var1] == -1) {
- this.next[var1] = this.FIRST;
- this.FIRST = var1;
- }
- }
- }
-
- }
-
- public final void refreshWholeScreen() {
- this.showMessage("Drawing Off-Screen Buffer");
-
- for(int var1 = 0; var1 < 6144; ++var1) {
- this.next[var1] = var1 - 1;
- this.last[var1] = ~super.mem[var1 + 16384] & 255;
- }
-
- for(int var2 = 6144; var2 < 6912; ++var2) {
- this.next[var2] = -1;
- this.last[var2] = super.mem[var2 + 16384];
- }
-
- this.first = 6143;
- this.FIRST = -1;
- this.oldBorder = -1;
- this.oldSpeed = -1;
- }
-
- private final void plot(int var1, int var2) {
- int var3 = var1 - 16384;
- if (this.next[var3] == -1) {
- if (var3 < 6144) {
- this.next[var3] = this.first;
- this.first = var3;
- return;
- }
-
- this.next[var3] = this.FIRST;
- this.FIRST = var3;
- }
-
- }
-
- public final void borderPaint() {
- if (this.oldBorder != this.newBorder) {
- this.oldBorder = this.newBorder;
- if (this.borderWidth != 0) {
- this.parentGraphics.setColor(brightColors[this.newBorder]);
- this.parentGraphics.fillRect(0, 0, 256 + this.borderWidth * 2, 192 + this.borderWidth * 2);
- }
- }
- }
-
- private final void toggleSpeed() {
- this.runAtFullSpeed = !this.runAtFullSpeed;
- this.showMessage(this.statsMessage);
- }
-
- public void showMessage(String var1) {
- this.statsMessage = var1;
- this.oldSpeed = -1;
- this.statsPaint();
- }
-
- public final void statsPaint() {
- if (this.oldSpeed != this.newSpeed) {
- this.oldSpeed = this.newSpeed;
- if (this.showStats && this.borderWidth >= 10) {
- String var1 = this.statsMessage;
- if (var1 == null) {
- String var2 = this.runAtFullSpeed ? "Full Speed: " : "Slow Speed: ";
- if (this.newSpeed > 0) {
- var1 = var2 + String.valueOf(this.newSpeed) + "%";
- } else {
- var1 = "Speed: calculating";
- }
-
- if (this.sleepHack > 0) {
- var1 = var1 + ", Sleep: " + this.sleepHack;
- }
- }
-
- this.progressBar.setText(var1);
- this.progressBar.show();
- }
- }
- }
-
- public static synchronized Image getImage(Component var0, int var1, int var2) {
- try {
- return tryGetImage(var0, var1, var2);
- } catch (OutOfMemoryError var3) {
- imageMap = null;
- patternMap = null;
- System.gc();
- patternMap = new Hashtable();
- imageMap = new Image[2048];
- return tryGetImage(var0, var1, var2);
- }
- }
-
- private static Image tryGetImage(Component var0, int var1, int var2) {
- int var3 = var1 >> 3 & 8;
- int var4 = var1 & 7 | var3;
- int var5 = var1 >> 3 & 7 | var3;
- int var6 = 0;
-
- for(int var7 = 0; var7 < 4; ++var7) {
- int var8 = (var2 & 1 << var7) == 0 ? var5 : var4;
- var6 |= var8 << (var7 << 2);
- }
-
- Integer var14 = new Integer(var6);
- Image var9 = (Image)patternMap.get(var14);
- if (var9 == null) {
- Color[] var10 = brightColors;
- var9 = var0.createImage(4, 1);
- Graphics var11 = var9.getGraphics();
-
- for(int var12 = 0; var12 < 4; ++var12) {
- int var13 = (var2 & 1 << var12) == 0 ? var5 : var4;
- var11.setColor(var10[var13]);
- var11.fillRect(3 - var12, 0, 1, 1);
- }
-
- patternMap.put(var14, var9);
- }
-
- return var9;
- }
-
- public final void screenPaint() {
- int var19;
- for(int var1 = this.FIRST; var1 >= 0; var1 = var19) {
- int var2 = this.last[var1];
- int var3 = super.mem[var1 + 16384];
- this.last[var1] = var3;
- boolean var4 = (var2 & 71) != (var3 & 71);
- boolean var5 = (var2 & 120) != (var3 & 120);
- boolean var6 = (var2 & 128) != (var3 & 128);
- if (var4 || var5 || var6) {
- var19 = var4 && var5 || var6;
- int var8 = (var1 & 768) << 3 | var1 & 255;
-
- for(int var9 = 8; var9 != 0; --var9) {
- if (var19) {
- this.last[var8] = ~super.mem[var8 + 16384] & 255;
- } else {
- int var10 = this.last[var8];
- int var11 = super.mem[var8 + 16384];
- int var12 = var10 ^ var11;
- if (var4) {
- var12 |= var11;
- } else {
- var12 |= ~var11 & 255;
- }
-
- if (var12 == 0) {
- var8 += 256;
- continue;
- }
-
- this.last[var8] = var12 ^ var11;
- }
-
- if (this.next[var8] == -1) {
- this.next[var8] = this.first;
- this.first = var8;
- }
-
- var8 += 256;
- }
- }
-
- var19 = this.next[var1];
- this.next[var1] = -1;
- }
-
- this.FIRST = -1;
- if (this.first >= 0) {
- int var23;
- for(int var13 = this.first; var13 >= 0; var13 = var23) {
- int var14 = this.last[var13];
- int var15 = super.mem[var13 + 16384];
- int var16 = var14 ^ var15;
- this.last[var13] = var15;
- int var17 = (var13 & 31) << 3;
- int var18 = ((var13 & 224) >> 2) + ((var13 & 1792) >> 8) + ((var13 & 6144) >> 5);
- int var20 = super.mem[22528 + (var13 & 31) + (var18 >> 3) * 32];
- if (this.flashInvert && (var20 & 128) != 0) {
- var15 = ~var15 & 255;
- }
-
- if ((var16 & 240) != 0) {
- var23 = (var15 & 240) >> 4;
- int var24 = (var20 & 127) << 4 | var23;
- Image var27 = imageMap[var24];
- if (var27 == null) {
- var27 = getImage(this.parent, var20, var23);
- imageMap[var24] = var27;
- }
-
- this.bufferGraphics.drawImage(var27, var17, var18, (ImageObserver)null);
- }
-
- if ((var16 & 15) != 0) {
- var23 = var15 & 15;
- int var25 = (var20 & 127) << 4 | var23;
- Image var28 = imageMap[var25];
- if (var28 == null) {
- var28 = getImage(this.parent, var20, var23);
- imageMap[var25] = var28;
- }
-
- this.bufferGraphics.drawImage(var28, var17 + 4, var18, (ImageObserver)null);
- }
-
- var23 = this.next[var13];
- this.next[var13] = -1;
- }
-
- this.first = -1;
- this.paintBuffer();
- }
- }
-
- public void paintBuffer() {
- this.canvasGraphics.drawImage(this.bufferImage, 0, 0, (ImageObserver)null);
- this.borderPaint();
- }
-
- public boolean handleEvent(Event var1) {
- if (var1.target == this.progressBar) {
- if (var1.id == 501) {
- if (this.sleepHack > 0) {
- this.sleepHack = 0;
- this.showMessage("Sleep Cancelled");
- } else {
- this.runAtFullSpeed = !this.runAtFullSpeed;
- this.showMessage(this.statsMessage);
- }
-
- this.canvas.requestFocus();
- return true;
- } else {
- return false;
- }
- } else if (var1.target == this.urlField) {
- if (var1.id == 1001) {
- this.loadFromURLFieldNextInterrupt = true;
- return true;
- } else {
- return false;
- }
- } else {
- switch (var1.id) {
- case 401:
- case 403:
- return this.doKey(true, var1.key, var1.modifiers);
- case 402:
- case 404:
- return this.doKey(false, var1.key, var1.modifiers);
- case 501:
- this.canvas.requestFocus();
- return true;
- case 1004:
- case 1005:
- this.resetKeyboard();
- return true;
- default:
- return false;
- }
- }
- }
-
- public void resetKeyboard() {
- this._B_SPC = 255;
- this._H_ENT = 255;
- this._Y_P = 255;
- this._6_0 = 255;
- this._1_5 = 255;
- this._Q_T = 255;
- this._A_G = 255;
- this._CAPS_V = 255;
- }
-
- // $FF: renamed from: K1 (boolean) void
- private final void method_0(boolean var1) {
- if (var1) {
- this._1_5 &= -2;
- } else {
- this._1_5 |= 1;
- }
- }
-
- // $FF: renamed from: K2 (boolean) void
- private final void method_1(boolean var1) {
- if (var1) {
- this._1_5 &= -3;
- } else {
- this._1_5 |= 2;
- }
- }
-
- // $FF: renamed from: K3 (boolean) void
- private final void method_2(boolean var1) {
- if (var1) {
- this._1_5 &= -5;
- } else {
- this._1_5 |= 4;
- }
- }
-
- // $FF: renamed from: K4 (boolean) void
- private final void method_3(boolean var1) {
- if (var1) {
- this._1_5 &= -9;
- } else {
- this._1_5 |= 8;
- }
- }
-
- // $FF: renamed from: K5 (boolean) void
- private final void method_4(boolean var1) {
- if (var1) {
- this._1_5 &= -17;
- } else {
- this._1_5 |= 16;
- }
- }
-
- // $FF: renamed from: K6 (boolean) void
- private final void method_5(boolean var1) {
- if (var1) {
- this._6_0 &= -17;
- } else {
- this._6_0 |= 16;
- }
- }
-
- // $FF: renamed from: K7 (boolean) void
- private final void method_6(boolean var1) {
- if (var1) {
- this._6_0 &= -9;
- } else {
- this._6_0 |= 8;
- }
- }
-
- // $FF: renamed from: K8 (boolean) void
- private final void method_7(boolean var1) {
- if (var1) {
- this._6_0 &= -5;
- } else {
- this._6_0 |= 4;
- }
- }
-
- // $FF: renamed from: K9 (boolean) void
- private final void method_8(boolean var1) {
- if (var1) {
- this._6_0 &= -3;
- } else {
- this._6_0 |= 2;
- }
- }
-
- // $FF: renamed from: K0 (boolean) void
- private final void method_9(boolean var1) {
- if (var1) {
- this._6_0 &= -2;
- } else {
- this._6_0 |= 1;
- }
- }
-
- // $FF: renamed from: KQ (boolean) void
- private final void method_10(boolean var1) {
- if (var1) {
- this._Q_T &= -2;
- } else {
- this._Q_T |= 1;
- }
- }
-
- // $FF: renamed from: KW (boolean) void
- private final void method_11(boolean var1) {
- if (var1) {
- this._Q_T &= -3;
- } else {
- this._Q_T |= 2;
- }
- }
-
- // $FF: renamed from: KE (boolean) void
- private final void method_12(boolean var1) {
- if (var1) {
- this._Q_T &= -5;
- } else {
- this._Q_T |= 4;
- }
- }
-
- // $FF: renamed from: KR (boolean) void
- private final void method_13(boolean var1) {
- if (var1) {
- this._Q_T &= -9;
- } else {
- this._Q_T |= 8;
- }
- }
-
- // $FF: renamed from: KT (boolean) void
- private final void method_14(boolean var1) {
- if (var1) {
- this._Q_T &= -17;
- } else {
- this._Q_T |= 16;
- }
- }
-
- // $FF: renamed from: KY (boolean) void
- private final void method_15(boolean var1) {
- if (var1) {
- this._Y_P &= -17;
- } else {
- this._Y_P |= 16;
- }
- }
-
- // $FF: renamed from: KU (boolean) void
- private final void method_16(boolean var1) {
- if (var1) {
- this._Y_P &= -9;
- } else {
- this._Y_P |= 8;
- }
- }
-
- // $FF: renamed from: KI (boolean) void
- private final void method_17(boolean var1) {
- if (var1) {
- this._Y_P &= -5;
- } else {
- this._Y_P |= 4;
- }
- }
-
- // $FF: renamed from: KO (boolean) void
- private final void method_18(boolean var1) {
- if (var1) {
- this._Y_P &= -3;
- } else {
- this._Y_P |= 2;
- }
- }
-
- // $FF: renamed from: KP (boolean) void
- private final void method_19(boolean var1) {
- if (var1) {
- this._Y_P &= -2;
- } else {
- this._Y_P |= 1;
- }
- }
-
- // $FF: renamed from: KA (boolean) void
- private final void method_20(boolean var1) {
- if (var1) {
- this._A_G &= -2;
- } else {
- this._A_G |= 1;
- }
- }
-
- // $FF: renamed from: KS (boolean) void
- private final void method_21(boolean var1) {
- if (var1) {
- this._A_G &= -3;
- } else {
- this._A_G |= 2;
- }
- }
-
- // $FF: renamed from: KD (boolean) void
- private final void method_22(boolean var1) {
- if (var1) {
- this._A_G &= -5;
- } else {
- this._A_G |= 4;
- }
- }
-
- // $FF: renamed from: KF (boolean) void
- private final void method_23(boolean var1) {
- if (var1) {
- this._A_G &= -9;
- } else {
- this._A_G |= 8;
- }
- }
-
- // $FF: renamed from: KG (boolean) void
- private final void method_24(boolean var1) {
- if (var1) {
- this._A_G &= -17;
- } else {
- this._A_G |= 16;
- }
- }
-
- // $FF: renamed from: KH (boolean) void
- private final void method_25(boolean var1) {
- if (var1) {
- this._H_ENT &= -17;
- } else {
- this._H_ENT |= 16;
- }
- }
-
- // $FF: renamed from: KJ (boolean) void
- private final void method_26(boolean var1) {
- if (var1) {
- this._H_ENT &= -9;
- } else {
- this._H_ENT |= 8;
- }
- }
-
- // $FF: renamed from: KK (boolean) void
- private final void method_27(boolean var1) {
- if (var1) {
- this._H_ENT &= -5;
- } else {
- this._H_ENT |= 4;
- }
- }
-
- // $FF: renamed from: KL (boolean) void
- private final void method_28(boolean var1) {
- if (var1) {
- this._H_ENT &= -3;
- } else {
- this._H_ENT |= 2;
- }
- }
-
- private final void KENT(boolean var1) {
- if (var1) {
- this._H_ENT &= -2;
- } else {
- this._H_ENT |= 1;
- }
- }
-
- private final void KCAPS(boolean var1) {
- if (var1) {
- this._CAPS_V &= -2;
- } else {
- this._CAPS_V |= 1;
- }
- }
-
- // $FF: renamed from: KZ (boolean) void
- private final void method_29(boolean var1) {
- if (var1) {
- this._CAPS_V &= -3;
- } else {
- this._CAPS_V |= 2;
- }
- }
-
- // $FF: renamed from: KX (boolean) void
- private final void method_30(boolean var1) {
- if (var1) {
- this._CAPS_V &= -5;
- } else {
- this._CAPS_V |= 4;
- }
- }
-
- // $FF: renamed from: KC (boolean) void
- private final void method_31(boolean var1) {
- if (var1) {
- this._CAPS_V &= -9;
- } else {
- this._CAPS_V |= 8;
- }
- }
-
- // $FF: renamed from: KV (boolean) void
- private final void method_32(boolean var1) {
- if (var1) {
- this._CAPS_V &= -17;
- } else {
- this._CAPS_V |= 16;
- }
- }
-
- // $FF: renamed from: KB (boolean) void
- private final void method_33(boolean var1) {
- if (var1) {
- this._B_SPC &= -17;
- } else {
- this._B_SPC |= 16;
- }
- }
-
- // $FF: renamed from: KN (boolean) void
- private final void method_34(boolean var1) {
- if (var1) {
- this._B_SPC &= -9;
- } else {
- this._B_SPC |= 8;
- }
- }
-
- // $FF: renamed from: KM (boolean) void
- private final void method_35(boolean var1) {
- if (var1) {
- this._B_SPC &= -5;
- } else {
- this._B_SPC |= 4;
- }
- }
-
- private final void KSYMB(boolean var1) {
- if (var1) {
- this._B_SPC &= -3;
- } else {
- this._B_SPC |= 2;
- }
- }
-
- private final void KSPC(boolean var1) {
- if (var1) {
- this._B_SPC &= -2;
- } else {
- this._B_SPC |= 1;
- }
- }
-
- public final boolean doKey(boolean var1, int var2, int var3) {
- boolean var4 = (var3 & 2) != 0;
- boolean var5 = (var3 & 4) != 0;
- boolean var6 = (var3 & 1) != 0;
- if (var2 >= 1 && var2 <= 39 && var5) {
- var2 += 96;
- }
-
- switch (var2) {
- case 8:
- case 127:
- var4 = true;
- if (var1) {
- this._6_0 &= -2;
- } else {
- this._6_0 |= 1;
- }
- break;
- case 9:
- var4 = true;
- var5 = true;
- break;
- case 10:
- case 13:
- var4 = var6;
- if (var1) {
- this._H_ENT &= -2;
- } else {
- this._H_ENT |= 1;
- }
- break;
- case 27:
- case 1000:
- if (var1) {
- this.pauseOrResume();
- }
- break;
- case 32:
- var4 = var6;
- if (var1) {
- this._B_SPC &= -2;
- } else {
- this._B_SPC |= 1;
- }
- break;
- case 33:
- var5 = true;
- if (var1) {
- this._1_5 &= -2;
- } else {
- this._1_5 |= 1;
- }
- break;
- case 34:
- var5 = true;
- if (var1) {
- this._Y_P &= -2;
- } else {
- this._Y_P |= 1;
- }
- break;
- case 35:
- var5 = true;
- if (var1) {
- this._1_5 &= -5;
- } else {
- this._1_5 |= 4;
- }
- break;
- case 36:
- var5 = true;
- if (var1) {
- this._1_5 &= -9;
- } else {
- this._1_5 |= 8;
- }
- break;
- case 37:
- var5 = true;
- if (var1) {
- this._1_5 &= -17;
- } else {
- this._1_5 |= 16;
- }
- break;
- case 38:
- var5 = true;
- if (var1) {
- this._6_0 &= -17;
- } else {
- this._6_0 |= 16;
- }
- break;
- case 39:
- var5 = true;
- if (var1) {
- this._6_0 &= -9;
- } else {
- this._6_0 |= 8;
- }
- break;
- case 40:
- var5 = true;
- if (var1) {
- this._6_0 &= -5;
- } else {
- this._6_0 |= 4;
- }
- break;
- case 41:
- var5 = true;
- if (var1) {
- this._6_0 &= -3;
- } else {
- this._6_0 |= 2;
- }
- break;
- case 42:
- var5 = true;
- if (var1) {
- this._B_SPC &= -17;
- } else {
- this._B_SPC |= 16;
- }
- break;
- case 43:
- var5 = true;
- if (var1) {
- this._H_ENT &= -5;
- } else {
- this._H_ENT |= 4;
- }
- break;
- case 44:
- var5 = true;
- if (var1) {
- this._B_SPC &= -9;
- } else {
- this._B_SPC |= 8;
- }
- break;
- case 45:
- var5 = true;
- if (var1) {
- this._H_ENT &= -9;
- } else {
- this._H_ENT |= 8;
- }
- break;
- case 46:
- var5 = true;
- if (var1) {
- this._B_SPC &= -5;
- } else {
- this._B_SPC |= 4;
- }
- break;
- case 47:
- var5 = true;
- if (var1) {
- this._CAPS_V &= -17;
- } else {
- this._CAPS_V |= 16;
- }
- break;
- case 48:
- if (var1) {
- this._6_0 &= -2;
- } else {
- this._6_0 |= 1;
- }
- break;
- case 49:
- if (var1) {
- this._1_5 &= -2;
- } else {
- this._1_5 |= 1;
- }
- break;
- case 50:
- if (var1) {
- this._1_5 &= -3;
- } else {
- this._1_5 |= 2;
- }
- break;
- case 51:
- if (var1) {
- this._1_5 &= -5;
- } else {
- this._1_5 |= 4;
- }
- break;
- case 52:
- if (var1) {
- this._1_5 &= -9;
- } else {
- this._1_5 |= 8;
- }
- break;
- case 53:
- if (var1) {
- this._1_5 &= -17;
- } else {
- this._1_5 |= 16;
- }
- break;
- case 54:
- if (var1) {
- this._6_0 &= -17;
- } else {
- this._6_0 |= 16;
- }
- break;
- case 55:
- if (var1) {
- this._6_0 &= -9;
- } else {
- this._6_0 |= 8;
- }
- break;
- case 56:
- if (var1) {
- this._6_0 &= -5;
- } else {
- this._6_0 |= 4;
- }
- break;
- case 57:
- if (var1) {
- this._6_0 &= -3;
- } else {
- this._6_0 |= 2;
- }
- break;
- case 58:
- var5 = true;
- if (var1) {
- this._CAPS_V &= -3;
- } else {
- this._CAPS_V |= 2;
- }
- break;
- case 59:
- var5 = true;
- if (var1) {
- this._Y_P &= -3;
- } else {
- this._Y_P |= 2;
- }
- break;
- case 60:
- var5 = true;
- if (var1) {
- this._Q_T &= -9;
- } else {
- this._Q_T |= 8;
- }
- break;
- case 61:
- var5 = true;
- if (var1) {
- this._H_ENT &= -3;
- } else {
- this._H_ENT |= 2;
- }
- break;
- case 62:
- var5 = true;
- if (var1) {
- this._Q_T &= -17;
- } else {
- this._Q_T |= 16;
- }
- break;
- case 63:
- var5 = true;
- if (var1) {
- this._CAPS_V &= -9;
- } else {
- this._CAPS_V |= 8;
- }
- break;
- case 64:
- var5 = true;
- if (var1) {
- this._1_5 &= -3;
- } else {
- this._1_5 |= 2;
- }
- break;
- case 65:
- var4 = true;
- if (var1) {
- this._A_G &= -2;
- } else {
- this._A_G |= 1;
- }
- break;
- case 66:
- var4 = true;
- if (var1) {
- this._B_SPC &= -17;
- } else {
- this._B_SPC |= 16;
- }
- break;
- case 67:
- var4 = true;
- if (var1) {
- this._CAPS_V &= -9;
- } else {
- this._CAPS_V |= 8;
- }
- break;
- case 68:
- var4 = true;
- if (var1) {
- this._A_G &= -5;
- } else {
- this._A_G |= 4;
- }
- break;
- case 69:
- var4 = true;
- if (var1) {
- this._Q_T &= -5;
- } else {
- this._Q_T |= 4;
- }
- break;
- case 70:
- var4 = true;
- if (var1) {
- this._A_G &= -9;
- } else {
- this._A_G |= 8;
- }
- break;
- case 71:
- var4 = true;
- if (var1) {
- this._A_G &= -17;
- } else {
- this._A_G |= 16;
- }
- break;
- case 72:
- var4 = true;
- if (var1) {
- this._H_ENT &= -17;
- } else {
- this._H_ENT |= 16;
- }
- break;
- case 73:
- var4 = true;
- if (var1) {
- this._Y_P &= -5;
- } else {
- this._Y_P |= 4;
- }
- break;
- case 74:
- var4 = true;
- if (var1) {
- this._H_ENT &= -9;
- } else {
- this._H_ENT |= 8;
- }
- break;
- case 75:
- var4 = true;
- if (var1) {
- this._H_ENT &= -5;
- } else {
- this._H_ENT |= 4;
- }
- break;
- case 76:
- var4 = true;
- if (var1) {
- this._H_ENT &= -3;
- } else {
- this._H_ENT |= 2;
- }
- break;
- case 77:
- var4 = true;
- if (var1) {
- this._B_SPC &= -5;
- } else {
- this._B_SPC |= 4;
- }
- break;
- case 78:
- var4 = true;
- if (var1) {
- this._B_SPC &= -9;
- } else {
- this._B_SPC |= 8;
- }
- break;
- case 79:
- var4 = true;
- if (var1) {
- this._Y_P &= -3;
- } else {
- this._Y_P |= 2;
- }
- break;
- case 80:
- var4 = true;
- if (var1) {
- this._Y_P &= -2;
- } else {
- this._Y_P |= 1;
- }
- break;
- case 81:
- var4 = true;
- if (var1) {
- this._Q_T &= -2;
- } else {
- this._Q_T |= 1;
- }
- break;
- case 82:
- var4 = true;
- if (var1) {
- this._Q_T &= -9;
- } else {
- this._Q_T |= 8;
- }
- break;
- case 83:
- var4 = true;
- if (var1) {
- this._A_G &= -3;
- } else {
- this._A_G |= 2;
- }
- break;
- case 84:
- var4 = true;
- if (var1) {
- this._Q_T &= -17;
- } else {
- this._Q_T |= 16;
- }
- break;
- case 85:
- var4 = true;
- if (var1) {
- this._Y_P &= -9;
- } else {
- this._Y_P |= 8;
- }
- break;
- case 86:
- var4 = true;
- if (var1) {
- this._CAPS_V &= -17;
- } else {
- this._CAPS_V |= 16;
- }
- break;
- case 87:
- var4 = true;
- if (var1) {
- this._Q_T &= -3;
- } else {
- this._Q_T |= 2;
- }
- break;
- case 88:
- var4 = true;
- if (var1) {
- this._CAPS_V &= -5;
- } else {
- this._CAPS_V |= 4;
- }
- break;
- case 89:
- var4 = true;
- if (var1) {
- this._Y_P &= -17;
- } else {
- this._Y_P |= 16;
- }
- break;
- case 90:
- var4 = true;
- if (var1) {
- this._CAPS_V &= -3;
- } else {
- this._CAPS_V |= 2;
- }
- break;
- case 91:
- var5 = true;
- if (var1) {
- this._Y_P &= -17;
- } else {
- this._Y_P |= 16;
- }
- break;
- case 92:
- var5 = true;
- if (var1) {
- this._A_G &= -5;
- } else {
- this._A_G |= 4;
- }
- break;
- case 93:
- var5 = true;
- if (var1) {
- this._Y_P &= -9;
- } else {
- this._Y_P |= 8;
- }
- break;
- case 94:
- var5 = true;
- if (var1) {
- this._H_ENT &= -17;
- } else {
- this._H_ENT |= 16;
- }
- break;
- case 95:
- var5 = true;
- if (var1) {
- this._6_0 &= -2;
- } else {
- this._6_0 |= 1;
- }
- break;
- case 97:
- if (var1) {
- this._A_G &= -2;
- } else {
- this._A_G |= 1;
- }
- break;
- case 98:
- if (var1) {
- this._B_SPC &= -17;
- } else {
- this._B_SPC |= 16;
- }
- break;
- case 99:
- if (var1) {
- this._CAPS_V &= -9;
- } else {
- this._CAPS_V |= 8;
- }
- break;
- case 100:
- if (var1) {
- this._A_G &= -5;
- } else {
- this._A_G |= 4;
- }
- break;
- case 101:
- if (var1) {
- this._Q_T &= -5;
- } else {
- this._Q_T |= 4;
- }
- break;
- case 102:
- if (var1) {
- this._A_G &= -9;
- } else {
- this._A_G |= 8;
- }
- break;
- case 103:
- if (var1) {
- this._A_G &= -17;
- } else {
- this._A_G |= 16;
- }
- break;
- case 104:
- if (var1) {
- this._H_ENT &= -17;
- } else {
- this._H_ENT |= 16;
- }
- break;
- case 105:
- if (var1) {
- this._Y_P &= -5;
- } else {
- this._Y_P |= 4;
- }
- break;
- case 106:
- if (var1) {
- this._H_ENT &= -9;
- } else {
- this._H_ENT |= 8;
- }
- break;
- case 107:
- if (var1) {
- this._H_ENT &= -5;
- } else {
- this._H_ENT |= 4;
- }
- break;
- case 108:
- if (var1) {
- this._H_ENT &= -3;
- } else {
- this._H_ENT |= 2;
- }
- break;
- case 109:
- if (var1) {
- this._B_SPC &= -5;
- } else {
- this._B_SPC |= 4;
- }
- break;
- case 110:
- if (var1) {
- this._B_SPC &= -9;
- } else {
- this._B_SPC |= 8;
- }
- break;
- case 111:
- if (var1) {
- this._Y_P &= -3;
- } else {
- this._Y_P |= 2;
- }
- break;
- case 112:
- if (var1) {
- this._Y_P &= -2;
- } else {
- this._Y_P |= 1;
- }
- break;
- case 113:
- if (var1) {
- this._Q_T &= -2;
- } else {
- this._Q_T |= 1;
- }
- break;
- case 114:
- if (var1) {
- this._Q_T &= -9;
- } else {
- this._Q_T |= 8;
- }
- break;
- case 115:
- if (var1) {
- this._A_G &= -3;
- } else {
- this._A_G |= 2;
- }
- break;
- case 116:
- if (var1) {
- this._Q_T &= -17;
- } else {
- this._Q_T |= 16;
- }
- break;
- case 117:
- if (var1) {
- this._Y_P &= -9;
- } else {
- this._Y_P |= 8;
- }
- break;
- case 118:
- if (var1) {
- this._CAPS_V &= -17;
- } else {
- this._CAPS_V |= 16;
- }
- break;
- case 119:
- if (var1) {
- this._Q_T &= -3;
- } else {
- this._Q_T |= 2;
- }
- break;
- case 120:
- if (var1) {
- this._CAPS_V &= -5;
- } else {
- this._CAPS_V |= 4;
- }
- break;
- case 121:
- if (var1) {
- this._Y_P &= -17;
- } else {
- this._Y_P |= 16;
- }
- break;
- case 122:
- if (var1) {
- this._CAPS_V &= -3;
- } else {
- this._CAPS_V |= 2;
- }
- break;
- case 123:
- var5 = true;
- if (var1) {
- this._A_G &= -9;
- } else {
- this._A_G |= 8;
- }
- break;
- case 124:
- var5 = true;
- if (var1) {
- this._A_G &= -3;
- } else {
- this._A_G |= 2;
- }
- break;
- case 125:
- var5 = true;
- if (var1) {
- this._A_G &= -9;
- } else {
- this._A_G |= 8;
- }
- break;
- case 126:
- var5 = true;
- if (var1) {
- this._A_G &= -2;
- } else {
- this._A_G |= 1;
- }
- break;
- case 163:
- var5 = true;
- if (var1) {
- this._CAPS_V &= -5;
- } else {
- this._CAPS_V |= 4;
- }
- break;
- case 1001:
- if (var1) {
- this.resetAtNextInterrupt = true;
- }
- break;
- case 1004:
- var4 = var6;
- if (var1) {
- this._6_0 &= -9;
- } else {
- this._6_0 |= 8;
- }
- break;
- case 1005:
- var4 = var6;
- if (var1) {
- this._6_0 &= -17;
- } else {
- this._6_0 |= 16;
- }
- break;
- case 1006:
- var4 = var6;
- if (var1) {
- this._1_5 &= -17;
- } else {
- this._1_5 |= 16;
- }
- break;
- case 1007:
- var4 = var6;
- if (var1) {
- this._6_0 &= -5;
- } else {
- this._6_0 |= 4;
- }
- break;
- case 1008:
- var4 = true;
- if (var1) {
- this._1_5 &= -2;
- } else {
- this._1_5 |= 1;
- }
- break;
- case 1009:
- var4 = true;
- if (var1) {
- this._1_5 &= -3;
- } else {
- this._1_5 |= 2;
- }
- break;
- case 1010:
- var4 = true;
- if (var1) {
- this._1_5 &= -5;
- } else {
- this._1_5 |= 4;
- }
- break;
- case 1011:
- var4 = true;
- if (var1) {
- this._1_5 &= -9;
- } else {
- this._1_5 |= 8;
- }
- break;
- case 1012:
- var4 = true;
- if (var1) {
- this._1_5 &= -17;
- } else {
- this._1_5 |= 16;
- }
- break;
- case 1013:
- var4 = true;
- if (var1) {
- this._6_0 &= -17;
- } else {
- this._6_0 |= 16;
- }
- break;
- case 1014:
- var4 = true;
- if (var1) {
- this._6_0 &= -9;
- } else {
- this._6_0 |= 8;
- }
- break;
- case 1015:
- var4 = true;
- if (var1) {
- this._6_0 &= -5;
- } else {
- this._6_0 |= 4;
- }
- break;
- case 1016:
- var4 = true;
- if (var1) {
- this._6_0 &= -3;
- } else {
- this._6_0 |= 2;
- }
- break;
- case 1017:
- var4 = true;
- if (var1) {
- this._6_0 &= -2;
- } else {
- this._6_0 |= 1;
- }
- break;
- case 1018:
- var4 = true;
- break;
- case 1019:
- var5 = true;
- break;
- default:
- return false;
- }
-
- boolean var7 = var5 & var1;
- if (var7) {
- this._B_SPC &= -3;
- } else {
- this._B_SPC |= 2;
- }
-
- var7 = var4 & var1;
- if (var7) {
- this._CAPS_V &= -2;
- } else {
- this._CAPS_V |= 1;
- }
-
- return true;
- }
-
- public void loadSnapshot(String var1, InputStream var2, int var3) throws Exception {
- if (var3 < 0) {
- ByteArrayOutputStream var4 = new ByteArrayOutputStream();
- BufferedInputStream var7 = new BufferedInputStream((InputStream)var2, 4096);
-
- int var5;
- int var6;
- for(var6 = 0; (var5 = ((InputStream)var7).read()) != -1; ++var6) {
- var4.write((byte)var5);
- }
-
- var2 = new ByteArrayInputStream(var4.toByteArray());
- var3 = var6;
- }
-
- if (var3 == 49179) {
- this.loadSNA(var1, (InputStream)var2);
- } else {
- this.loadZ80(var1, (InputStream)var2, var3);
- }
-
- this.refreshWholeScreen();
- this.resetKeyboard();
- }
-
- public void loadROM(String var1, InputStream var2) throws Exception {
- this.startProgress("Loading " + var1, 16384);
- this.readBytes(var2, super.mem, 0, 16384);
- }
-
- public void loadSNA(String var1, InputStream var2) throws Exception {
- this.startProgress("Loading " + var1, 49179);
- int[] var3 = new int[27];
- this.readBytes(var2, var3, 0, 27);
- this.readBytes(var2, super.mem, 16384, 49152);
- int var4 = var3[0];
- super._I = var4;
- var4 = var3[1] | var3[2] << 8;
- super._HL = var4;
- var4 = var3[3] | var3[4] << 8;
- super._DE = var4;
- var4 = var3[5] | var3[6] << 8;
- int var5 = var4 >> 8;
- super._B = var5;
- var5 = var4 & 255;
- super._C = var5;
- var4 = var3[7] | var3[8] << 8;
- var5 = var4 >> 8;
- super._A = var5;
- ((Z80)this).F(var4 & 255);
- ((Z80)this).exx();
- ((Z80)this).ex_af_af();
- var4 = var3[9] | var3[10] << 8;
- super._HL = var4;
- var4 = var3[11] | var3[12] << 8;
- super._DE = var4;
- var4 = var3[13] | var3[14] << 8;
- var5 = var4 >> 8;
- super._B = var5;
- var5 = var4 & 255;
- super._C = var5;
- var4 = var3[15] | var3[16] << 8;
- super._IY = var4;
- var4 = var3[17] | var3[18] << 8;
- super._IX = var4;
- if ((var3[19] & 4) != 0) {
- super._IFF2 = true;
- } else {
- super._IFF2 = false;
- }
-
- var4 = var3[20];
- super._R = var4;
- super._R7 = var4 & 128;
- var4 = var3[21] | var3[22] << 8;
- var5 = var4 >> 8;
- super._A = var5;
- ((Z80)this).F(var4 & 255);
- var4 = var3[23] | var3[24] << 8;
- super._SP = var4;
- switch (var3[25]) {
- case 0:
- super._IM = 0;
- break;
- case 1:
- super._IM = 1;
- break;
- default:
- super._IM = 2;
- }
-
- this.outb(254, var3[26], 0);
- var4 = super._IFF2;
- super._IFF1 = (boolean)var4;
- super._R += 2;
- var4 = ((Z80)this).popw();
- super._PC = var4;
- if (this.urlField != null) {
- this.urlField.setText(var1);
- }
-
- }
-
- public void loadZ80(String var1, InputStream var2, int var3) throws Exception {
- this.startProgress("Loading " + var1, var3);
- int[] var4 = new int[30];
- boolean var5 = false;
- var3 -= this.readBytes(var2, var4, 0, 30);
- int var6 = var4[0];
- super._A = var6;
- ((Z80)this).F(var4[1]);
- var6 = var4[2];
- super._C = var6;
- var6 = var4[3];
- super._B = var6;
- var6 = var4[4];
- super._HL = super._HL & '\uff00' | var6;
- var6 = var4[5];
- super._HL = var6 << 8 | super._HL & 255;
- var6 = var4[6] | var4[7] << 8;
- super._PC = var6;
- var6 = var4[8] | var4[9] << 8;
- super._SP = var6;
- var6 = var4[10];
- super._I = var6;
- var6 = var4[11];
- super._R = var6;
- super._R7 = var6 & 128;
- var6 = var4[12];
- if (var6 == 255) {
- var6 = 1;
- }
-
- this.outb(254, var6 >> 1 & 7, 0);
- if ((var6 & 1) != 0) {
- int var7 = super._R & 127 | super._R7 | 128;
- super._R = var7;
- super._R7 = var7 & 128;
- }
-
- var5 = (var6 & 32) != 0;
- int var26 = var4[13];
- super._DE = super._DE & '\uff00' | var26;
- var26 = var4[14];
- super._DE = var26 << 8 | super._DE & 255;
- ((Z80)this).ex_af_af();
- ((Z80)this).exx();
- var26 = var4[15];
- super._C = var26;
- var26 = var4[16];
- super._B = var26;
- var26 = var4[17];
- super._DE = super._DE & '\uff00' | var26;
- var26 = var4[18];
- super._DE = var26 << 8 | super._DE & 255;
- var26 = var4[19];
- super._HL = super._HL & '\uff00' | var26;
- var26 = var4[20];
- super._HL = var26 << 8 | super._HL & 255;
- var26 = var4[21];
- super._A = var26;
- ((Z80)this).F(var4[22]);
- ((Z80)this).ex_af_af();
- ((Z80)this).exx();
- var26 = var4[23] | var4[24] << 8;
- super._IY = var26;
- var26 = var4[25] | var4[26] << 8;
- super._IX = var26;
- var26 = var4[27] != 0;
- super._IFF1 = (boolean)var26;
- var26 = var4[28] != 0;
- super._IFF2 = (boolean)var26;
- switch (var4[29] & 3) {
- case 0:
- super._IM = 0;
- break;
- case 1:
- super._IM = 1;
- break;
- default:
- super._IM = 2;
- }
-
- if (super._PC == 0) {
- this.loadZ80_extended(var2, var3);
- if (this.urlField != null) {
- this.urlField.setText(var1);
- }
-
- } else {
- if (var5) {
- int[] var39 = new int[var3];
- int var8 = 16384;
- int var9 = this.readBytes(var2, var39, 0, var3);
- int var10 = 0;
-
- while(var8 < 65536 && var10 < var9) {
- var6 = var39[var10++];
- if (var6 != 237) {
- this.pokeb(var8, var6);
- ++var8;
- } else {
- var6 = var39[var10++];
- if (var6 != 237) {
- this.pokeb(var8, 237);
- --var10;
- ++var8;
- } else {
- int var11 = var39[var10++];
-
- for(int var25 = var39[var10++]; var11-- != 0; ++var8) {
- this.pokeb(var8, var25);
- }
- }
- }
- }
- } else {
- this.readBytes(var2, super.mem, 16384, 49152);
- }
-
- if (this.urlField != null) {
- this.urlField.setText(var1);
- }
-
- }
- }
-
- private void loadZ80_extended(InputStream var1, int var2) throws Exception {
- int[] var3 = new int[2];
- var2 -= this.readBytes(var1, var3, 0, var3.length);
- int var4 = var3[0] | var3[1] << 8;
- switch (var4) {
- case 23:
- this.loadZ80_v201(var1, var2);
- return;
- case 54:
- this.loadZ80_v300(var1, var2);
- return;
- case 58:
- this.loadZ80_v301(var1, var2);
- return;
- default:
- throw new Exception("Z80 (extended): unsupported type " + var4);
- }
- }
-
- private void loadZ80_v201(InputStream var1, int var2) throws Exception {
- int[] var3 = new int[23];
- var2 -= this.readBytes(var1, var3, 0, var3.length);
- int var4 = var3[0] | var3[1] << 8;
- super._PC = var4;
- var4 = var3[2];
- if (var4 > 1) {
- throw new Exception("Z80 (v201): unsupported type " + var4);
- } else {
- int[] var5 = new int[var2];
- this.readBytes(var1, var5, 0, var2);
- int var6 = 0;
-
- for(int var7 = 0; var7 < 3; ++var7) {
- var6 = this.loadZ80_page(var5, var6);
- }
-
- }
- }
-
- private void loadZ80_v300(InputStream var1, int var2) throws Exception {
- int[] var3 = new int[54];
- var2 -= this.readBytes(var1, var3, 0, var3.length);
- int var4 = var3[0] | var3[1] << 8;
- super._PC = var4;
- var4 = var3[2];
- if (var4 > 6) {
- throw new Exception("Z80 (v300): unsupported type " + var4);
- } else {
- int[] var5 = new int[var2];
- this.readBytes(var1, var5, 0, var2);
- int var6 = 0;
-
- for(int var7 = 0; var7 < 3; ++var7) {
- var6 = this.loadZ80_page(var5, var6);
- }
-
- }
- }
-
- private void loadZ80_v301(InputStream var1, int var2) throws Exception {
- int[] var3 = new int[58];
- var2 -= this.readBytes(var1, var3, 0, var3.length);
- int var4 = var3[0] | var3[1] << 8;
- super._PC = var4;
- var4 = var3[2];
- if (var4 > 7) {
- throw new Exception("Z80 (v301): unsupported type " + var4);
- } else {
- int[] var5 = new int[var2];
- this.readBytes(var1, var5, 0, var2);
- int var6 = 0;
-
- for(int var7 = 0; var7 < 3; ++var7) {
- var6 = this.loadZ80_page(var5, var6);
- }
-
- }
- }
-
- private int loadZ80_page(int[] var1, int var2) throws Exception {
- int var3 = var1[var2++];
- var3 |= var1[var2++] << 8;
- int var4 = var1[var2++];
- int var5;
- switch (var4) {
- case 4:
- var5 = 32768;
- break;
- case 5:
- var5 = 49152;
- break;
- case 6:
- case 7:
- default:
- throw new Exception("Z80 (page): out of range " + var4);
- case 8:
- var5 = 16384;
- }
-
- int var6 = 0;
-
- while(var6 < var3) {
- int var7 = var1[var2++];
- ++var6;
- if (var7 != 237) {
- this.pokeb(var5, ~var7);
- this.pokeb(var5, var7);
- ++var5;
- } else {
- var7 = var1[var2++];
- ++var6;
- if (var7 != 237) {
- this.pokeb(var5, 0);
- this.pokeb(var5, 237);
- ++var5;
- --var2;
- --var6;
- } else {
- int var8 = var1[var2++];
- ++var6;
- var7 = var1[var2++];
- ++var6;
-
- while(var8-- > 0) {
- this.pokeb(var5, ~var7);
- this.pokeb(var5, var7);
- ++var5;
- }
- }
- }
- }
-
- if ((var5 & 16383) != 0) {
- throw new Exception("Z80 (page): overrun");
- } else {
- return var2;
- }
- }
-
- private void startProgress(String var1, int var2) {
- this.progressBar.setText(var1);
- this.bytesReadSoFar = 0;
- this.bytesToReadTotal = var2;
- this.updateProgress(0);
- if (this.showStats) {
- this.progressBar.show();
- Thread.yield();
- }
-
- }
-
- private void stopProgress() {
- this.bytesReadSoFar = 0;
- this.bytesToReadTotal = 0;
- this.progressBar.setPercent((double)0.0F);
- if (this.showStats) {
- this.progressBar.show();
- Thread.yield();
- }
-
- }
-
- private void updateProgress(int var1) {
- this.bytesReadSoFar += var1;
- if (this.bytesReadSoFar >= this.bytesToReadTotal) {
- this.stopProgress();
- } else {
- this.progressBar.setPercent((double)this.bytesReadSoFar / (double)this.bytesToReadTotal);
- Thread.yield();
- }
- }
-
- private int readBytes(InputStream var1, int[] var2, int var3, int var4) throws Exception {
- try {
- BufferedInputStream var5 = new BufferedInputStream(var1, var4);
- byte[] var6 = new byte[var4];
- int var7 = var4;
-
- while(var7 > 0) {
- int var8 = var5.read(var6, var4 - var7, var7);
- var7 -= var8;
- this.updateProgress(var8);
- }
-
- for(int var10 = 0; var10 < var4; ++var10) {
- var2[var10 + var3] = var6[var10] + 256 & 255;
- }
-
- return var4;
- } catch (Exception var9) {
- System.err.println(var9);
- ((Throwable)var9).printStackTrace();
- this.stopProgress();
- throw var9;
- }
- }
-
- static {
- brightColors = new Color[]{new Color(0, 0, 0), new Color(0, 0, 238), new Color(238, 0, 0), new Color(238, 0, 238), new Color(0, 238, 0), new Color(0, 238, 238), new Color(238, 238, 0), new Color(238, 238, 238), Color.black, Color.blue, Color.red, Color.magenta, Color.green, Color.cyan, Color.yellow, Color.white};
- cancelMessage = new String("Click here at any time to cancel sleep");
- patternMap = new Hashtable();
- imageMap = new Image[2048];
- }
- }
-