updates that were lying around but never got checked in; includes reorg of gui
[slipway.git] / src / edu / berkeley / slipway / gui / Inspector.java
1 package edu.berkeley.slipway.gui;
2
3 import static com.atmel.fpslic.FpslicConstants.*;
4 import static edu.berkeley.slipway.gui.GuiConstants.*;
5 import com.atmel.fpslic.*;
6 import edu.berkeley.slipway.*;
7 import java.awt.*;
8
9 public class Inspector {
10
11     private static P bump(P p, R r) {
12         p = p.translate(0, 15);
13         if (p.y + 15 > r.maxy()) {
14             p = new P(p.x + 200, r.miny() + 20);
15         }
16         return p;
17     }
18     public static void draw(G g, R r, FpslicDevice.Cell cell) {
19         g.color(0x000000);
20         r.fill(g);
21         g.color(0xffffff);
22         g.setFont(new Font("monospaced", 0, 14));
23         if (cell==null) return;
24
25         int line = (int)(r.miny() + 10);
26         P p = new P(r.minx() + 10, r.miny() + 20);
27         g.drawString("selected: " + cell.col + "," + cell.row,          p);   p = bump(p, r);
28         g.drawString("    xlut: " + XLUT_EQUATIONS[cell.xlut() & 0xff], p);   p = bump(p, r);
29         g.drawString("    ylut: " + YLUT_EQUATIONS[cell.ylut() & 0xff], p);   p = bump(p, r);
30         String xi = "??";
31         switch(cell.xi()) {
32             case NW : xi = "NW"; break;
33             case NE : xi = "NE"; break;
34             case SW : xi = "SW"; break;
35             case SE : xi = "SE"; break;
36             case NONE  : xi = "."; break;
37             default:  xi = "L"+(cell.xi()-L0); break;
38         }
39         g.drawString("x-in mux: " + xi, p);   p = bump(p, r);
40
41         String yi = "??";
42         switch(cell.yi()) {
43             case NORTH : yi = "NORTH"; break;
44             case SOUTH : yi = "SOUTH"; break;
45             case EAST  : yi = "EAST"; break;
46             case WEST  : yi = "WEST"; break;
47             case NONE  : yi = "."; break;
48             default:     yi = "L"+(cell.yi()-L0); break;
49         }
50         g.drawString("y-in mux: " + yi, p);   p = bump(p, r);
51
52         g.drawString("w-in mux: " + (cell.wi()==NONE ? "." : ("L"+(cell.wi()-L0))),
53                      p);   p = bump(p, r);
54         g.drawString("z-in mux: " + (cell.zi()==NONE ? "." : ("L"+(cell.zi()-L0))),
55                      p);   p = bump(p, r);
56
57         String tm = "??";
58         switch(cell.t()) {
59             case TMUX_FB:       tm = "fb"; break;
60             case TMUX_W_AND_FB: tm = "w&fb"; break;
61             case TMUX_Z:        tm = "z"; break;
62             case TMUX_W_AND_Z:  tm = "w&z"; break;
63             case TMUX_W:        tm = "w"; break;
64         }
65         g.drawString("t-in mux: " + tm, p);   p = bump(p, r);
66
67         g.drawString(" set/rst: " + (cell.ff_reset_value() ? "reset=SET" : "."),
68                      p);   p = bump(p, r);
69
70         String outs = "";
71         for(int i=0; i<5; i++) outs += (cell.out(L0+i) ? (i+" ") : ". ");
72         g.drawString("     out: " + outs,
73                      p);   p = bump(p, r);
74         String hs = "";
75         for(int i=0; i<5; i++) hs += (cell.hx(L0+i) ? (i+" ") : ". ");
76         g.drawString("  h conn: " + hs,
77                      p);   p = bump(p, r);
78         String vs = "";
79         for(int i=0; i<5; i++) vs += (cell.vx(L0+i) ? (i+" ") : ". ");
80         g.drawString("  v conn: " + vs,
81                      p);   p = bump(p, r);
82         g.drawString("out enab: " + (cell.oe()==H4 ? "H4" : cell.oe()==V4 ? "V4" : "."),
83                      p);   p = bump(p, r);
84         g.drawString("   c-mux: " + (cell.c()==ZMUX ? "zmux" : cell.c()==XLUT ? "x-lut" : "y-lut"),
85                      p);   p = bump(p, r);
86         g.drawString("  fb src: " + (cell.f() ? "clocked" : "."),
87                      p);   p = bump(p, r);
88         g.drawString("  bypass: " + (cell.b() ? "clocked" : "."),
89                      p);   p = bump(p, r);
90         g.drawString("   x out: " + (cell.xo() ? (cell.b() ? "register" : "center") : "."),
91                      p);   p = bump(p, r);
92         g.drawString("   y out: " + (cell.yo() ? (cell.b() ? "register" : "center") : "."),
93                      p);   p = bump(p, r);
94
95     }
96 }