Annotation of gforth/arch/misc/misc-sim.v, revision 1.4
1.1 pazsan 1: // misc simulator environment
2:
1.3 anton 3: // Copyright (C) 1998,2000,2003,2004 Free Software Foundation, Inc.
1.2 pazsan 4:
5: // This file is part of Gforth.
6:
7: // Gforth is free software; you can redistribute it and/or
8: // modify it under the terms of the GNU General Public License
1.4 ! anton 9: // as published by the Free Software Foundation, either version 3
1.2 pazsan 10: // of the License, or (at your option) any later version.
11:
12: // This program is distributed in the hope that it will be useful,
13: // but WITHOUT ANY WARRANTY; without even the implied warranty of
14: // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15: // GNU General Public License for more details.
16:
17: // You should have received a copy of the GNU General Public License
1.4 ! anton 18: // along with this program; if not, see http://www.gnu.org/licenses/.
1.2 pazsan 19:
1.1 pazsan 20: `define L [0:l-1]
21:
22: module main;
23: parameter l=16, d=10;
24: reg clock;
25: wire `L addr, data;
26: wire csel, rw, read, write;
27:
28: reg `L mem[0:(1<<l)-1];
29: reg [0:7] keys[0:15];
30: integer inputq, fileno, start;
31:
32: initial
33: begin
34: clock = 0;
35: for(start='h0000; start < 'h8000; start=start+1)
36: mem[start] = 0;
37: $readmemh("kernl-misc.hex", mem);
38: // fileno=$fopen("misc.out");
39: mem['hffff] = 1;
40: mem['hfffe] = 32;
41: keys[0]=99;
42: keys[1]=114;
43: keys[2]=32;
44: keys[3]=49;
45: keys[4]=32;
46: keys[5]=50;
47: keys[6]=32;
48: keys[7]=43;
49: keys[8]=32;
50: keys[9]=46;
51: keys[10]=13;
52: keys[11]=32;
53: inputq=0;
54: #d clock = 0;
55: #d clock = 0;
56: forever
57: begin
58: #d clock = ~clock;
59: end
60: end
61:
62: assign #d
63: write = csel & ~rw,
64: read = csel & rw;
65:
66: always @(posedge write)
67: #d if(addr == 'hfffc) $write("%c", data);
68: else
69: mem[addr] = data;
70:
71: assign
72: data = (read & ~write) ? mem[addr] : {l{1'bz}};
73:
74: always @(addr or read or write)
75: if(read & ~write & (addr == 'hfffe))
76: begin
77: #(d*4)
78: mem['hfffe] = { 8'b0, keys[inputq] };
79: inputq = inputq + 1;
80: if(inputq > 11) $finish;
81: end
82:
83: misc #(l,d)
84: misc0(clock, data, addr, csel, rw);
85:
86: endmodule /* main */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>