1 package com.atmel.fpslic;
5 import org.ibex.util.Log;
7 public abstract class Fpslic {
9 public static class Util {
10 public static int lutSwap(int x) {
23 public static class Constants {
24 public static final int NONE = -1;
25 public static final int L0 = 0;
26 public static final int L1 = 1;
27 public static final int L2 = 2;
28 public static final int L3 = 3;
29 public static final int L4 = 4;
31 public static final int NORTH = 8;
32 public static final int WEST = 9;
33 public static final int SOUTH = 10;
34 public static final int EAST = 11;
36 public static final int XLUT = 12;
37 public static final int YLUT = 13;
38 public static final int ZMUX = 14;
40 public static final int H4 = 15;
41 public static final int V4 = 16;
43 public static final int NW = 20;
44 public static final int SW = 21;
45 public static final int NE = 22;
46 public static final int SE = 23;
48 public static final int SLOW = 24;
49 public static final int MEDIUM = 25;
50 public static final int FAST = 26;
52 public static final int ALWAYS_ON = 27;
53 public static final int ALWAYS_OFF = 28;
55 public static final int FB = 29;
57 public static final int LUT_SELF = 0xAA;
58 public static final int LUT_Z = 0xF0;
59 public static final int LUT_OTHER = 0xCC;
61 public static final int TMUX_W_AND_Z = 0x00001001;
62 public static final int TMUX_W = 0x00001002;
63 public static final int TMUX_Z = 0x00001004;
64 public static final int TMUX_W_AND_FB = 0x00001008;
65 public static final int TMUX_FB = 0x00001010;
70 /** issue a command to the device in Mode4 format; see Gosset's documentation for further details */
71 public int getWidth() { return 24; }
72 public int getHeight() { return 24; }
74 private static String hex2(int i) {
75 String ret = Integer.toString(i, 16);
76 while(ret.length() < 2) ret = "0"+ret;
77 return ret.toUpperCase();
80 public void readMode4(InputStream in) throws IOException {
82 BufferedReader br = new BufferedReader(new InputStreamReader(in));
83 for(String str = br.readLine(); str != null; str = br.readLine()) {
84 long foo = Long.parseLong(str, 16);
85 mode4((int)(foo >> 24), (int)(foo >> 16), (int)(foo >> 8), (int)(foo >> 0));
92 public abstract void flush();
94 public void writeMode4(Writer w) throws IOException {
95 for(int x=0; x<getWidth(); x++)
96 for(int y=0; y<getWidth(); y++)
97 for(int z=0; z<255; z++) {
98 if ((z > 0x09 && z < 0x10) ||
99 (z > 0x11 && z < 0x20) ||
100 (z > 0x29 && z < 0x30) ||
101 (z > 0x39 && z < 0x40) ||
102 (z > 0x41 && z < 0x60) ||
103 (z > 0x67 && z < 0x70) ||
104 (z > 0x77 && z < 0xD0) ||
110 w.write(hex2(mode4(z, y, x) & 0xff));
117 public abstract void mode4(int z, int y, int x, int d);
118 public abstract byte mode4(int z, int y, int x);
119 public byte mode4zyx(int zyx) { return mode4(zyx>>24, (zyx>>16)&0xff, (zyx>>8)&0xff); }
120 public void mode4zyx(int zyx, int d, int invmask) { mode4(zyx>>24, (zyx>>16)&0xff, (zyx>>8)&0xff, d, invmask); }
121 public void mode4(int z, int y, int x, int d, int invmask) {
122 int old = mode4(z, y, x);
127 public void mode4zyx(int zyx, int bit, boolean set) { mode4(zyx>>24, (zyx>>16)&0xff, (zyx>>8)&0xff, bit, set); }
128 public void mode4(int z, int y, int x, int bit, boolean set) {
129 int old = mode4(z, y, x);
131 old |= set ? (1 << bit) : 0;