checkpoint
[slipway.git] / src / edu / berkeley / slipway / gui / ZoomingPanel.java
index 4a3150f..4d934fd 100644 (file)
@@ -27,7 +27,10 @@ public abstract class ZoomingPanel extends JComponent implements KeyListener, Mo
     private   Point2D recenter;
     private   Point2D recenter2;
 
-    public ZoomingPanel() {
+    private FtdiBoard ftdiboard;
+
+    public ZoomingPanel(FtdiBoard ftdiboard) {
+        this.ftdiboard = ftdiboard;
         setDoubleBuffered(true);
         addKeyListener(this);
         addMouseMotionListener(this);
@@ -109,21 +112,148 @@ public abstract class ZoomingPanel extends JComponent implements KeyListener, Mo
         }
         Gui.Cell cell = whichCell(mousex, mousey);
         Fpslic.Cell c = cell == null ? null : cell.cell;
-        if ((k.getModifiers() & k.ALT_MASK) != 0)
+        if ((k.getModifiers() & k.ALT_MASK) != 0 || (k.getModifiers() & k.META_MASK) != 0)
             switch(k.getKeyCode()) {
                 case VK_S:
                     writeMode4();
                     break;
+                    /*
                 case VK_O:
                     readMode4();
                     break;
+                    */
+                case VK_0: {
+                    c.xlut(0x00);
+                    c.ylut(0x00);
+                    repaint();
+                    return;
+                }
+                case VK_1: {
+                    c.xlut(0xff);
+                    c.ylut(0xff);
+                    repaint();
+                    return;
+                }
+                case VK_F: {
+                    int save1y = c.fpslic().cell(19,22).ylut();
+                    int save1x = c.fpslic().cell(19,22).xlut();
+                    int save2y = c.fpslic().cell(20,22).ylut();
+                    int save2x = c.fpslic().cell(20,22).xlut();
+                    c.fpslic().cell(19,22).ylut(0xff);
+                    c.fpslic().cell(19,22).xlut(0xff);
+                    for(int i=0; i<800; i++) {
+                        c.fpslic().cell(20,22).ylut(0xff);
+                        c.fpslic().cell(20,22).xlut(0xff);
+                        c.fpslic().flush();
+                        c.fpslic().cell(20,22).ylut(0x00);
+                        c.fpslic().cell(20,22).xlut(0x00);
+                        c.fpslic().flush();
+                    }
+                    c.fpslic().cell(19,22).ylut(save1y);
+                    c.fpslic().cell(19,22).xlut(save1x);
+                    c.fpslic().cell(20,22).ylut(save2y);
+                    c.fpslic().cell(20,22).xlut(save2x);
+                    System.out.println("done");
+                    repaint();
+                    return;
+                }
+                case VK_BACK_QUOTE: {
+                    c.xlut(0xff);
+                    c.ylut(0xff);
+                    repaint();
+                    return;
+                }
+                case VK_A: {
+                    c.xlut(LUT_SELF & LUT_OTHER);
+                    c.ylut(LUT_SELF & LUT_OTHER);
+                    repaint();
+                    return;
+                }
+                case VK_2:
+                case VK_G:
+                    {
+                c.c(YLUT);
+                c.ylut(0x00);
+                c.xlut(0x00);
+                c.wi(L0);
+                c.t(TMUX_W_AND_FB);
+                c.ylut((LUT_SELF & ~LUT_OTHER) |
+                       (LUT_Z & ~LUT_OTHER) |
+                       (LUT_Z & LUT_SELF));
+                c.fpslic().flush();
+                c.xlut(LUT_Z);
+                c.fpslic().flush();
+                c.wi(NONE);
+                c.fpslic().flush();
+                    repaint();
+                    return;
+                }
+                case VK_3: {
+
+                c.c(XLUT);
+                c.xlut(0x00);
+                c.ylut(0x00);
+                c.wi(L0);
+                c.t(TMUX_W_AND_FB);
+                c.xlut((LUT_SELF & ~LUT_OTHER) |
+                       (LUT_Z & ~LUT_OTHER) |
+                       (LUT_Z & LUT_SELF));
+                c.fpslic().flush();
+                c.ylut(LUT_Z);
+                c.fpslic().flush();
+                c.wi(NONE);
+                c.fpslic().flush();
+                    repaint();
+                    return;
+                }
+                case VK_Z: {
+                    c.xlut(LUT_Z);
+                    c.ylut(LUT_Z);
+                    repaint();
+                    return;
+                }
+                case VK_W: {
+                    c.xlut(LUT_Z);
+                    c.ylut(LUT_SELF);
+                    c.t(TMUX_W);
+                    repaint();
+                    return;
+                }
+                case VK_T: {
+                    //c.t(;
+                    repaint();
+                    return;
+                }
+                case VK_O: {
+                    c.xlut(LUT_SELF | LUT_OTHER);
+                    c.ylut(LUT_SELF | LUT_OTHER);
+                    repaint();
+                    return;
+                }
+                case VK_X: {
+                    c.xlut(LUT_SELF);
+                    c.ylut(LUT_OTHER);
+                    repaint();
+                    return;
+                }
+                case VK_Y: {
+                    c.xlut(LUT_OTHER);
+                    c.ylut(LUT_SELF);
+                    repaint();
+                    return;
+                }
+                case VK_I: {
+                    System.out.println("interrupt count => " + ftdiboard.readCount());
+                    repaint();
+                    return;
+                }
             }
 
         else switch(k.getKeyCode()) {
             case VK_ESCAPE: scale = 1.0; recenter = null; repaint(); return;
 
-            case VK_0: case VK_1: case VK_2: case VK_3: case VK_4: {
-                int i = L0 + (k.getKeyChar() - '0');
+            case VK_BACK_QUOTE: case VK_0: case VK_1: case VK_2: case VK_3: case VK_4: {
+                int i = k.getKeyCode()==VK_BACK_QUOTE ? NONE : (L0 + (k.getKeyChar() - '0'));
                 switch(lastChar) {
                     case 'x': c.xi(i); break;
                     case 'y': case 'q': c.yi(i); break;
@@ -156,18 +286,28 @@ public abstract class ZoomingPanel extends JComponent implements KeyListener, Mo
                 return;
 
             case VK_F: c.f(!c.f()); repaint(); return;
-            case VK_S: c.ff_reset_value(!c.ff_reset_value()); repaint(); return;
+            case VK_S:
+                Gui.Cell gc = whichCell(mousex,mousey);
+                gc.scanme = !gc.scanme;
+                //case VK_S: c.ff_reset_value(!c.ff_reset_value()); repaint(); return;
             case VK_R: c.b(!c.b()); repaint(); return;
 
             case VK_T:
                 switch(c.t()) {
-                    case TMUX_FB: c.t(TMUX_W_AND_FB); break;
-                    case TMUX_W_AND_FB: c.t(TMUX_W); break;
-                    case TMUX_W: c.t(TMUX_W_AND_Z); break;
-                    case TMUX_W_AND_Z: c.t(TMUX_Z); break;
-                    case TMUX_Z: c.t(TMUX_FB); break;
+                    case TMUX_FB:
+                    case TMUX_W_AND_FB:
+                        c.t(TMUX_W_AND_Z);
+                        break;
+
+                    case TMUX_Z:
+                    case TMUX_W_AND_Z:
+                        c.t(TMUX_W);
+                        break;
+
+                    case TMUX_W:
+                        c.t(TMUX_W_AND_FB);
+                        break;
                 }
-                System.err.println("set " + c.t());
                 repaint();
                 return;