reg [3:0] wait_until_write;
reg [3:0] wait_until_video;
reg [37:0] addr;
- wire [31:0] data_out;
+ wire [35:0] data_out;
reg [37:0] out_d;
reg [37:0] writeData;
assign data_out[29] = sram_d29; assign sram_d29 = oe ? 1'bz : writeData[29];
assign data_out[30] = sram_d30; assign sram_d30 = oe ? 1'bz : writeData[30];
assign data_out[31] = sram_d31; assign sram_d31 = oe ? 1'bz : writeData[31];
+ assign data_out[32] = sram_dqp0; assign sram_dqp0 = oe ? 1'bz : writeData[32];
+ assign data_out[33] = sram_dqp1; assign sram_dqp1 = oe ? 1'bz : writeData[33];
+ assign data_out[34] = sram_dqp2; assign sram_dqp2 = oe ? 1'bz : writeData[34];
+ assign data_out[35] = sram_dqp3; assign sram_dqp3 = oe ? 1'bz : writeData[35];
assign sram_mode = 0;
assign sram_clk = clk;
assign sram_cs_b = 0;
assign sram_oe_b = ~oe;
- // Framebuffer is 548x478 -- yeah, I know that's completely weird.
+ // Framebuffer is 544x478 -- yeah, I know that's completely weird.
- wire on_screen;
- assign on_screen = (x_coord >= 48) && (x_coord < 592);
+ wire on_screen_;
+ reg on_screen;
+ assign on_screen_ = (x_coord >= 48) && (x_coord < 592);
wire [9:0] adjusted_x_coord;
assign adjusted_x_coord = x_coord - 48;
+ { 7'b0000000, y_coord[8:0], 5'b00000 }
+ { 3'b000, y_coord[8:0], 9'b0000000000 };
- assign dvi_red = on_screen ? mem_out[23:16] : 0;
- assign dvi_green = on_screen ? mem_out[15:8] : 0;
- assign dvi_blue = on_screen ? mem_out[7:0] : 0;
+ assign dvi_red = on_screen ? { mem_out[17:12], 2'b0 } : 0;
+ assign dvi_green = on_screen ? { mem_out[11:6], 2'b0 } : 0;
+ assign dvi_blue = on_screen ? { mem_out[5:0], 2'b0 } : 0;
always @(posedge pix_clk) begin
vga_pixel_addr <= vga_pixel_addr_;
+ on_screen <= on_screen_;
end
wire idle;
== TeX ==============================================================
== Fleeterpreter ====================================================
-
- public void service() { }
+private java.awt.Frame frame = null;
+private java.awt.Panel panel = null;
+private long[][] bits;
+public static int SCREEN_WIDTH = 577;
+public static int SCREEN_HEIGHT = 478;
+public void service() {
+ long x,y,d;
+ if (box_inPixelX.dataReadyForShip() &&
+ box_inPixelY.dataReadyForShip() &&
+ box_inPixelValue.dataReadyForShip()) {
+ x = box_inPixelX.removeDataForShip();
+ y = box_inPixelY.removeDataForShip();
+ d = box_inPixelValue.removeDataForShip();
+ } else if (box_inAddrWrite.dataReadyForShip() &&
+ box_inDataWrite.dataReadyForShip() &&
+ box_out.readyForDataFromShip()) {
+ long addr = box_inAddrWrite.removeDataForShip();
+ x = addr % SCREEN_WIDTH;
+ y = addr / SCREEN_WIDTH;
+ d = box_inDataWrite.removeDataForShip();
+ box_out.addDataFromShip(0,true);
+ } else if (box_inAddrRead.dataReadyForShip() &&
+ box_out.readyForDataFromShip()) {
+ long addr = box_inAddrRead.removeDataForShip();
+ x = addr % SCREEN_WIDTH;
+ y = addr / SCREEN_WIDTH;
+ box_out.addDataFromShip(bits[(int)x][(int)y],false);
+ return;
+ } else {
+ return;
+ }
+ if (frame==null) {
+ frame = new java.awt.Frame();
+ bits = new long[SCREEN_WIDTH][SCREEN_HEIGHT];
+ for(int i=0; i<SCREEN_WIDTH; i++) bits[i] = new long[SCREEN_HEIGHT];
+ frame.setSize(SCREEN_WIDTH,SCREEN_HEIGHT);
+ panel = new java.awt.Panel() {
+ public void paint(java.awt.Graphics g_) {
+ java.awt.Graphics2D g2 = (java.awt.Graphics2D)g_;
+ g2.transform(java.awt.geom.AffineTransform.getScaleInstance(((double)panel.getWidth())/SCREEN_WIDTH,
+ ((double)panel.getHeight())/SCREEN_HEIGHT));
+ for(int xx=0; xx<SCREEN_WIDTH; xx++) {
+ for(int yy=0; yy<SCREEN_HEIGHT; yy++) {
+ long d = bits[xx][yy];
+ java.awt.Color c = new java.awt.Color(
+ (int)(((d >> 12) & ~((-1L) << 6)) << 2),
+ (int)(((d >> 6) & ~((-1L) << 6)) << 2),
+ (int)(((d >> 0) & ~((-1L) << 6)) << 2)
+ );
+ g2.setColor(c);
+ g2.fillRect((int)xx,(int)yy,1,1);
+ }
+ }
+ }
+ };
+ frame.setLayout(new java.awt.BorderLayout());
+ frame.add(panel, java.awt.BorderLayout.CENTER);
+ panel.setBackground(java.awt.Color.black);
+ frame.show();
+ }
+ bits[(int)x][(int)y] = d;
+ panel.repaint();
+}
== FleetSim ==============================================================
== Constants =========================================================
== Test ==============================================================
+#skip
#expect 0
#expect 0