X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fcom%2Fatmel%2Ffpslic%2FFpslic.java;h=8182d21250b52cf2aedf1375adba1c4a609dde33;hb=12c7959edabf832a969f4d95a9359657247440f1;hp=76a95d315064c62cfc46dd00d3889e83e9d74ca4;hpb=f6f476bd63c268a2dbcc09c85f79dbc807a74ba3;p=slipway.git diff --git a/src/com/atmel/fpslic/Fpslic.java b/src/com/atmel/fpslic/Fpslic.java index 76a95d3..8182d21 100644 --- a/src/com/atmel/fpslic/Fpslic.java +++ b/src/com/atmel/fpslic/Fpslic.java @@ -60,12 +60,26 @@ public abstract class Fpslic { public final int row; public final int col; public SectorWire(boolean horizontal, int plane, int col, int row) { + this(horizontal, plane, col, row, false); + } + + public void useColumnClock() { + // this is very poorly understood + if (horizontal) throw new RuntimeException(); + mode4(0x25, (row>>2)+1, col, 0x80); + mode4(0x29, (row>>2), col, 0x40); + } + + public SectorWire(boolean horizontal, int plane, int col, int row, boolean global) { this.horizontal=horizontal; - this.global = false; + this.global=global; this.plane=plane; this.col= horizontal ? (col & ~0x3) : col; this.row=!horizontal ? (row & ~0x3) : row; } + public SectorWire global() { + return new SectorWire(horizontal, plane, col, row, true); + } public boolean isDriven() { // FIXME: bridging connections (horiz-to-vert) for(int i=0; i<4; i++) @@ -116,9 +130,20 @@ public abstract class Fpslic { throw new Error("not implemented"); } + public void dork() { + mode4zyx(switchbox(north()), (1<<6), (1<<6)); + } + public void drives(SectorWire w, boolean enable) { // FIXME: better error checks? - mode4zyx(switchbox(w), enable?0x02:0x00, 0x07); + int val = 0; + if (enable) { + if (!global) val = 0x02; + else val = 0x04; + } + int mask = 0x07; + if (w.global) { mask = mask << 3; val = val << 3; } + mode4zyx(switchbox(w), val, mask); } public boolean drives(SectorWire w) { @@ -173,6 +198,10 @@ public abstract class Fpslic { public final int col; public final int row; + public void setColumnClock(int where) { + mode4(0x50, 0x00, col, where); + } + public String toString() { return "cell@("+col+","+row+")"; } public Cell(int col, int row) {