1 |
20 |
samiam9512 |
`timescale 1ns / 1ps
|
2 |
|
|
//////////////////////////////////////////////////////////////////////////////////
|
3 |
|
|
// Company:
|
4 |
|
|
// Engineer:
|
5 |
|
|
//
|
6 |
|
|
// Create Date: 12:02:03 10/22/2006
|
7 |
|
|
// Design Name:
|
8 |
|
|
// Module Name: vgachr
|
9 |
|
|
// Project Name:
|
10 |
|
|
// Target Devices:
|
11 |
|
|
// Tool versions:
|
12 |
|
|
// Description:
|
13 |
|
|
//
|
14 |
|
|
// Dependencies:
|
15 |
|
|
//
|
16 |
|
|
// Revision:
|
17 |
|
|
// Revision 0.01 - File Created
|
18 |
|
|
// Additional Comments:
|
19 |
|
|
//
|
20 |
|
|
// Simulation plugs exist in this code. Look for "????? SIMULATION PLUG"
|
21 |
|
|
//
|
22 |
|
|
// Debug plugs exist in this code. Look for "????? DEBUG PLUG"
|
23 |
|
|
//
|
24 |
|
|
//////////////////////////////////////////////////////////////////////////////////
|
25 |
|
|
|
26 |
|
|
////////////////////////////////////////////////////////////////////////////////
|
27 |
|
|
//
|
28 |
|
|
// TERMINAL EMULATOR
|
29 |
|
|
//
|
30 |
|
|
// Emulates an ADM 3A dumb terminal, with a MITS serial I/O board interface.
|
31 |
|
|
// Two ports are emulated:
|
32 |
|
|
//
|
33 |
|
|
// 0: Control
|
34 |
|
|
// 1: Data
|
35 |
|
|
//
|
36 |
|
|
// The MITS serial card has all of its configuration performed by jumpers on the
|
37 |
|
|
// card, which means there is no programming configuration required. The data
|
38 |
|
|
// to the terminal is sent out of the data port, while the data from the
|
39 |
|
|
// keyboard, which is not yet implemented, is read from the same data port.
|
40 |
|
|
// The parity is ignored on output, and set to 0 on input.
|
41 |
|
|
//
|
42 |
|
|
// The control register ignores all writes, and returns $80 if the terminal is
|
43 |
|
|
// busy, otherwise $00. This is the output ready to send bit. The busy bit
|
44 |
|
|
// reflects if the state machine is processing an operation. This is a cheat
|
45 |
|
|
// that only works with our emulated terminal/serial board pair, because
|
46 |
|
|
// normally there is no way for the local CPU to know that the remote terminal
|
47 |
|
|
// is busy. This can lead to problems in the real world, and it's why Unix
|
48 |
|
|
// "termcap" terminal descriptions commonly have waiting periods perscribed
|
49 |
|
|
// time consuming operations like screen clear. This emulated terminal is
|
50 |
|
|
// "ideal" in that it accounts for all of this automatically, but it does not
|
51 |
|
|
// hurt the realisim of the emulation. An application that performs delays based
|
52 |
|
|
// on real terminal operations won't be incorrect because it performs a delay,
|
53 |
|
|
// but a stupid application that relies on this "smart" implementation might
|
54 |
|
|
// fail to run on the real thing.
|
55 |
|
|
//
|
56 |
|
|
// The ADM 3A terminal emulation is based on "ADM-3A Operators manual" of 1979,
|
57 |
|
|
// and "ADM 3A Dumb Terminal Users Reference Manual" of April, 1986, and the
|
58 |
|
|
// Unix termcap definition of the terminal.
|
59 |
|
|
//
|
60 |
|
|
// Several actions of terminals are typically not listed in the documentation,
|
61 |
|
|
// and the ADM 3A is no different. That's why termcap exists. The following
|
62 |
|
|
// actions were derived from the termcap definition:
|
63 |
|
|
//
|
64 |
|
|
// 1. The screen clear command also homes the cursor.
|
65 |
|
|
// 2. Giving the terminal a right cursor command while at the right side of the
|
66 |
|
|
// 3. Screen wraps the cursor around to the right, one line down. If the cursor
|
67 |
|
|
// is at the 80th collumn of the 24th line, it will then scroll.
|
68 |
|
|
// 4. Down cursor (line feed) on the 24th line scrolls the screen.
|
69 |
|
|
//
|
70 |
|
|
// Note that rule (3) causes the terminal to be unable to ever write a character
|
71 |
|
|
// to the collumn 80 character of line 24, which is interesting if you are
|
72 |
|
|
// writing a full screen editor. The ADM 3A had a switch for this behavior, but
|
73 |
|
|
// the user could hardly be expected to open the side panel and flip this switch
|
74 |
|
|
// to be able to edit.
|
75 |
|
|
//
|
76 |
|
|
// The following actions are unknown:
|
77 |
|
|
//
|
78 |
|
|
// 1. A cursor left command given when the cursor is at the left side of the
|
79 |
|
|
// screen has unknown effect. According to termcap, it is not to go to the
|
80 |
|
|
// end of the next line up. I have guessed here that it is to simply
|
81 |
|
|
// refuse to move.
|
82 |
|
|
// 2. A cursor up command given when the cursor is at the top of the screen
|
83 |
|
|
// has unknown effect. I have guessed here that is is to simply refuse to
|
84 |
|
|
// move.
|
85 |
|
|
//
|
86 |
|
|
// These are terminal features there are no plans to implement:
|
87 |
|
|
//
|
88 |
|
|
// 1. ENQ or answerback mode.
|
89 |
|
|
// 2. Bell (where would it go?).
|
90 |
|
|
// 3. Ctrl-N and Ctrl-O keyboard locking and extention port.
|
91 |
|
|
// 4. Graphics modes. This was added in later ADM 3A terminals, so were unlikely
|
92 |
|
|
// to be used in early software, and would take up another table.
|
93 |
|
|
// 5. Any of the setup modes or features, as operated by the keyboard.
|
94 |
|
|
//
|
95 |
|
|
// The ADM 3A terminal will pretty much serve as an upward compatible version
|
96 |
|
|
// of the ASR-33 teletypes (Western Union Surplus) that were also commonly used
|
97 |
|
|
// in the time of the Altair. The ADM 3A was a common replacement for such
|
98 |
|
|
// units.
|
99 |
|
|
//
|
100 |
|
|
// Bugs/problems/issues:
|
101 |
|
|
//
|
102 |
|
|
// 1. The emulation was occasionally observed to hang. The CPU was still running
|
103 |
|
|
// and polling the keyboard, but no reply is received when keys are hit. The rdy
|
104 |
|
|
// signal is not coming from the low level keyboard logic.
|
105 |
|
|
// 2. Cursor left at left hand side does not refuse to move (see above).
|
106 |
|
|
// 3. moving to the 80th collum on line 24 and typing a character does not cause
|
107 |
|
|
// the screen to scroll.
|
108 |
|
|
// 4. On sign-on, the first two characters are missing the top row. I suspect
|
109 |
|
|
// this is due to the start of frame character preloading that is done.
|
110 |
|
|
// 5. \ESCGc or set attributes does not work from the keyboard unless you hit
|
111 |
|
|
// caps lock or hold the shift key down before and after the escape. It should
|
112 |
|
|
// work anytime the upper case G is hit.
|
113 |
|
|
// 6. Need to add reduce modes.
|
114 |
|
|
//
|
115 |
|
|
|
116 |
|
|
//
|
117 |
|
|
// Terminal height and width
|
118 |
|
|
//
|
119 |
|
|
`define scnchrs 80 // width
|
120 |
|
|
`define scnlins 24 // height
|
121 |
|
|
|
122 |
|
|
//
|
123 |
|
|
// Terminal states
|
124 |
|
|
//
|
125 |
|
|
`define term_idle 5'h00 // idle
|
126 |
|
|
`define term_wrtstd2 5'h01 // write standard character #2
|
127 |
|
|
`define term_wrtstd3 5'h02 // write standard character #3
|
128 |
|
|
`define term_wrtstd4 5'h03 // write standard character #4
|
129 |
|
|
`define term_clear 5'h04 // clear screen and home cursor
|
130 |
|
|
`define term_clear2 5'h05 // clear screen and home cursor #2
|
131 |
|
|
`define term_clear3 5'h06 // clear screen and home cursor #3
|
132 |
|
|
`define term_clear4 5'h07 // clear screen and home cursor #4
|
133 |
|
|
`define term_fndstr 5'h08 // find start of current line
|
134 |
|
|
`define term_scroll 5'h09 // scroll screen
|
135 |
|
|
`define term_scroll1 5'h0a // scroll screen #1
|
136 |
|
|
`define term_scroll2 5'h0b // scroll screen #2
|
137 |
|
|
`define term_scroll3 5'h0c // scroll screen #3
|
138 |
|
|
`define term_scroll4 5'h0d // scroll screen #4
|
139 |
|
|
`define term_scroll5 5'h0e // scroll screen #5
|
140 |
|
|
`define term_scroll6 5'h0f // scroll screen #6
|
141 |
|
|
`define term_esc 5'h10 // escape
|
142 |
|
|
`define term_poscur 5'h11 // position cursor
|
143 |
|
|
`define term_poscur2 5'h12 // position cursor #2
|
144 |
|
|
`define term_attset 5'h13 // set screen attributes
|
145 |
|
|
|
146 |
|
|
//
|
147 |
|
|
// Terminal attribute bits
|
148 |
|
|
//
|
149 |
|
|
`define attr_blank 5'b00001 // blank
|
150 |
|
|
`define attr_blink 5'b00010 // blink
|
151 |
|
|
`define attr_reverse 5'b00100 // reverse
|
152 |
|
|
`define attr_under 5'b01000 // underline
|
153 |
|
|
`define attr_rinten 5'b10000 // reduced intensity
|
154 |
|
|
|
155 |
|
|
module terminal(addr, data, write, read, select, r, g, b, hsync_n, vsync_n,
|
156 |
|
|
ps2_clk, ps2_data, reset, clock, diag);
|
157 |
|
|
|
158 |
|
|
input addr; // control reg/data reg address
|
159 |
|
|
inout [7:0] data; // CPU data
|
160 |
|
|
input write; // CPU write
|
161 |
|
|
input read; // CPU read
|
162 |
|
|
input select; // controller select
|
163 |
|
|
input reset; // CPU reset
|
164 |
|
|
input clock; // CPU clock
|
165 |
|
|
output [2:0] r, g, b; // R,G,B color output buses
|
166 |
|
|
output hsync_n; // horizontal sync pulse
|
167 |
|
|
output vsync_n; // vertical sync pulse
|
168 |
|
|
input ps2_clk; // clock from keyboard
|
169 |
|
|
input ps2_data; // data from keyboard
|
170 |
|
|
output [7:0] diag; // diagnostic 8 bit port
|
171 |
|
|
|
172 |
|
|
// internal definitions
|
173 |
|
|
reg [4:0] state; // terminal state machine
|
174 |
|
|
reg [10:0] cursor; // cursor address
|
175 |
|
|
reg [10:0] tcursor; // cursor temp address
|
176 |
|
|
reg [7:0] chrdatw; // character write data
|
177 |
|
|
reg outrdy; // output ready to send
|
178 |
|
|
reg wrtchr; // character ready to write
|
179 |
|
|
reg [7:0] datao; // intermediate for data output
|
180 |
|
|
reg [7:0] rowchr; // row holding character
|
181 |
|
|
reg [4:0] curatr; // current attribute set
|
182 |
|
|
|
183 |
|
|
// character map communication bus
|
184 |
|
|
reg [10:0] cmaddr; // character map address to read or write
|
185 |
|
|
reg cmread; // character map read from address
|
186 |
|
|
reg cmwrite; // character map write from address
|
187 |
|
|
wire [7:0] cmdata; // character map data to be written/read
|
188 |
|
|
wire [4:0] cmattr; // character map attributes to be written/read
|
189 |
|
|
reg [7:0] cmdatai; // character map data to be written
|
190 |
|
|
reg cmdatae; // character map data enable
|
191 |
|
|
reg [7:0] cmattri; // character map attribute to be written
|
192 |
|
|
reg cmattre; // character map attribute enable
|
193 |
|
|
|
194 |
|
|
// keyboard communication
|
195 |
|
|
wire [7:0] scancode; // key scancode
|
196 |
|
|
wire parity; // keyboard parity
|
197 |
|
|
wire busy; // busy scanning code
|
198 |
|
|
wire rdy; // ready with code
|
199 |
|
|
wire error; // scancode error
|
200 |
|
|
reg scnrdy; // scancode
|
201 |
|
|
reg extkey; // is extended key
|
202 |
|
|
reg capslock; // caps lock toggle
|
203 |
|
|
reg leftshift; // state of left shift key
|
204 |
|
|
reg rightshift; // state of right shift key
|
205 |
|
|
reg leftctrl; // state of left control key
|
206 |
|
|
reg rightctrl; // state of right control key
|
207 |
|
|
reg relcod; // release code active
|
208 |
|
|
reg extcod; // extention code active
|
209 |
|
|
wire [7:0] asciidata; // output of lookup rom
|
210 |
|
|
wire [7:0] asciidatau; // output of lookup rom
|
211 |
|
|
reg clrrdy; // clear input ready
|
212 |
|
|
|
213 |
|
|
// here we put signals out the diagnostic port if required.
|
214 |
|
|
assign diag[0] = busy;
|
215 |
|
|
assign diag[1] = rdy;
|
216 |
|
|
assign diag[2] = scnrdy;
|
217 |
|
|
assign diag[3] = ps2_clk;
|
218 |
|
|
assign diag[4] = ps2_data;
|
219 |
|
|
assign diag[5] = relcod;
|
220 |
|
|
assign diag[6] = leftctrl;
|
221 |
|
|
assign diag[7] = rightctrl;
|
222 |
|
|
|
223 |
|
|
// instantiate memory mapped character display
|
224 |
|
|
chrmemmap display(!reset, clock, r, g, b, hsync_n, vsync_n, cmaddr, cmread,
|
225 |
|
|
cmwrite, cmdata, cmattr, cursor);
|
226 |
|
|
|
227 |
|
|
// instantiate ps/2 keyboard. Note that the keyboard decoder only generates
|
228 |
|
|
// codes on release, which has to be changed, since we need both asserts and
|
229 |
|
|
// deasserts.
|
230 |
|
|
ps2_kbd vgai(.clk(clock), .rst(reset), .ps2_clk(ps2_clk), .ps2_data(ps2_data),
|
231 |
|
|
.scancode(scancode), .parity(parity), .busy(busy), .rdy(rdy),
|
232 |
|
|
.error(error));
|
233 |
|
|
|
234 |
|
|
// instantiate keyboard scan lookup roms
|
235 |
|
|
scnrom kbdtbl(scancode, asciidata); // lower case
|
236 |
|
|
scnromu kbdtblu(scancode, asciidatau); // lower case
|
237 |
|
|
|
238 |
|
|
// process keyboard input state
|
239 |
|
|
always @(posedge clock)
|
240 |
|
|
if (reset) begin // perform reset actions
|
241 |
|
|
|
242 |
|
|
leftshift <= 0; // clear left shift key state
|
243 |
|
|
rightshift <= 0; // clear right shift key state
|
244 |
|
|
leftctrl <= 0; // clear left control key state
|
245 |
|
|
rightctrl <= 0; // clear right control key state
|
246 |
|
|
capslock <= 0; // clear caps lock state
|
247 |
|
|
relcod <= 0; // clear release status
|
248 |
|
|
scnrdy <= 0; // clear key ready
|
249 |
|
|
extkey <= 0; // is an extended key
|
250 |
|
|
|
251 |
|
|
end else begin
|
252 |
|
|
|
253 |
|
|
if (rdy) begin
|
254 |
|
|
|
255 |
|
|
// if the release code $f0 occurs, set release until the next key occurs
|
256 |
|
|
if (scancode == 8'hf0) relcod <= 1;
|
257 |
|
|
// if the extention code $e0 occurs, set the extention flag
|
258 |
|
|
else if (scancode == 8'he0) extcod <= 1;
|
259 |
|
|
else if (relcod) begin // release
|
260 |
|
|
|
261 |
|
|
relcod <= 0; // reset release code
|
262 |
|
|
// reset any extention code
|
263 |
|
|
if (scancode != 8'hf0 && scancode != 8'he0) extcod <= 0;
|
264 |
|
|
// if caps lock is hit, toggle caps lock status
|
265 |
|
|
if (scancode == 8'h58) capslock <= !capslock;
|
266 |
|
|
// process left and right shift key up
|
267 |
|
|
if (scancode == 8'h12) leftshift <= 0; // left up
|
268 |
|
|
if (scancode == 8'h59) rightshift <= 0; // right up
|
269 |
|
|
// process control key up
|
270 |
|
|
if (scancode == 8'h14) begin
|
271 |
|
|
|
272 |
|
|
if (extcod) rightctrl <= 0; // right up
|
273 |
|
|
else leftctrl <= 0; // left up
|
274 |
|
|
|
275 |
|
|
end
|
276 |
|
|
|
277 |
|
|
end else begin // assert
|
278 |
|
|
|
279 |
|
|
scnrdy <= 1; // set key is ready
|
280 |
|
|
extkey <= extcod; // set extended status of key
|
281 |
|
|
// reset any extention code
|
282 |
|
|
if (scancode != 8'hf0 && scancode != 8'he0) extcod <= 0;
|
283 |
|
|
// process left and right shift key down
|
284 |
|
|
if (scancode == 8'h12) leftshift <= 1; // left down
|
285 |
|
|
if (scancode == 8'h59) rightshift <= 1; // right down
|
286 |
|
|
// process control key down
|
287 |
|
|
if (scancode == 8'h14) begin
|
288 |
|
|
|
289 |
|
|
if (extcod) rightctrl <= 1; // right down
|
290 |
|
|
else leftctrl <= 1; // left down
|
291 |
|
|
|
292 |
|
|
end
|
293 |
|
|
|
294 |
|
|
end
|
295 |
|
|
|
296 |
|
|
end else if (clrrdy) scnrdy <= 0; // clear key ready
|
297 |
|
|
|
298 |
|
|
end
|
299 |
|
|
|
300 |
|
|
// process terminal emulation
|
301 |
|
|
always @(posedge clock)
|
302 |
|
|
if (reset) begin // reset
|
303 |
|
|
|
304 |
|
|
// on reset, we set the state machine to perform a screen clear and
|
305 |
|
|
// home cursor
|
306 |
|
|
// ????? SIMULATION PLUG
|
307 |
|
|
// Don't clear screen, this takes too long in simulation
|
308 |
|
|
state <= `term_clear; // set to clear screen
|
309 |
|
|
// state <= `term_idle; // continue
|
310 |
|
|
cursor <= 0; // set cursor to home
|
311 |
|
|
outrdy <= 0; // set not ready to send
|
312 |
|
|
wrtchr <= 0; // set no character to write
|
313 |
|
|
cmread <= 0; // clear read character
|
314 |
|
|
cmwrite <= 0; // clear write character
|
315 |
|
|
cmdatae <= 0; // no enable character map data
|
316 |
|
|
cmattre <= 0; // no enable character map attributes
|
317 |
|
|
clrrdy <= 0; // set clear ready off
|
318 |
|
|
curatr <= 5'b0; // set no attributes active
|
319 |
|
|
|
320 |
|
|
end else begin
|
321 |
|
|
|
322 |
|
|
if (write&select) begin // CPU write
|
323 |
|
|
|
324 |
|
|
if (addr) begin
|
325 |
|
|
|
326 |
|
|
chrdatw <= data & 8'h7f; // set character write data without parity
|
327 |
|
|
wrtchr <= 1; // character ready to write
|
328 |
|
|
outrdy <= 0; // remove ready to send
|
329 |
|
|
|
330 |
|
|
end
|
331 |
|
|
|
332 |
|
|
end else if (read&select) begin // CPU read
|
333 |
|
|
|
334 |
|
|
if (addr) begin
|
335 |
|
|
|
336 |
|
|
// Return decoded keyboard, with shifting. The letter keys, 'a'-'z',
|
337 |
|
|
// can be shifted by the shift keys, but not by caps lock state.
|
338 |
|
|
// The other keys can be shifted by either. This matches PC
|
339 |
|
|
// behavior, which lets you have cap locks on without shifting the
|
340 |
|
|
// letter keys. The control codes are shifted as a block from `($60)
|
341 |
|
|
// to ~($7e) down to $00. This leaves out \US and \DEL, but these
|
342 |
|
|
// codes get generated by the DEL key.
|
343 |
|
|
if (extkey) begin // its an extended key
|
344 |
|
|
|
345 |
|
|
if (scancode == 8'h75) datao <= 8'h0b; // up
|
346 |
|
|
else if (scancode == 8'h6b) datao <= 8'h08; // left
|
347 |
|
|
else if (scancode == 8'h72) datao <= 8'h0a; // down
|
348 |
|
|
else if (scancode == 8'h74) datao <= 8'h0c; // right
|
349 |
|
|
else if (scancode == 8'h6c) datao <= 8'h1e; // home
|
350 |
|
|
else if (scancode == 8'h71) datao <= 8'h1f; // delete (rub out)
|
351 |
|
|
|
352 |
|
|
end else if (asciidata >= 8'h60 && asciidata <= 8'h7e &&
|
353 |
|
|
(leftctrl || rightctrl))
|
354 |
|
|
datao <= asciidata & 8'h1f;
|
355 |
|
|
else if (asciidata >= 8'h61 && asciidata <= 8'h7a)
|
356 |
|
|
datao <= leftshift||rightshift||capslock ? asciidatau: asciidata;
|
357 |
|
|
else
|
358 |
|
|
datao <= leftshift||rightshift ? asciidatau: asciidata;
|
359 |
|
|
clrrdy <= 1; // clear scancode ready f/f
|
360 |
|
|
|
361 |
|
|
end else
|
362 |
|
|
datao <= (!outrdy << 7) | (scnrdy << 5); // return ready statuses
|
363 |
|
|
|
364 |
|
|
end else clrrdy <= 0; // clear keyboard ready signal
|
365 |
|
|
|
366 |
|
|
case (state) // run output state
|
367 |
|
|
|
368 |
|
|
`term_idle: begin // idle waiting for character
|
369 |
|
|
|
370 |
|
|
// We wait for the cpu cycle to end before running the state machine
|
371 |
|
|
// write procedure. This allows this module to run at full speed,
|
372 |
|
|
// while the rest of the CPU logic runs slow. The vga logic must run
|
373 |
|
|
// at a fixed speed because it has the display to run, but the rest
|
374 |
|
|
// can be slow to allow debugging.
|
375 |
|
|
if (wrtchr&!(select&read|select&write)) begin
|
376 |
|
|
|
377 |
|
|
// process character after CPU goes away
|
378 |
|
|
if (chrdatw >= 8'h20 && chrdatw != 8'h7f) begin
|
379 |
|
|
|
380 |
|
|
// write standard (non-control) character
|
381 |
|
|
cmaddr <= cursor; // set address at cursor
|
382 |
|
|
cmdatai <= chrdatw; // place character data to write
|
383 |
|
|
cmattri <= curatr; // set with current attributes
|
384 |
|
|
cmdatae <= 1; // enable data to memory
|
385 |
|
|
cmattre <= 1; // enable attributes to memory
|
386 |
|
|
state <= `term_wrtstd2; // continue
|
387 |
|
|
|
388 |
|
|
end else begin // control character
|
389 |
|
|
|
390 |
|
|
if (chrdatw == 8'h0a) begin // line down (line feed)
|
391 |
|
|
|
392 |
|
|
if (cursor < 23*80) begin // not at screen end
|
393 |
|
|
|
394 |
|
|
cursor <= cursor+80;
|
395 |
|
|
wrtchr <= 0; // remove ready to write
|
396 |
|
|
outrdy <= 1; // set ready to send
|
397 |
|
|
|
398 |
|
|
end else begin
|
399 |
|
|
|
400 |
|
|
tcursor <= 0; // set temp cursor to screen start
|
401 |
|
|
state <= `term_scroll; // go to scroll screen
|
402 |
|
|
|
403 |
|
|
end
|
404 |
|
|
|
405 |
|
|
end else if (chrdatw == 8'h0b) begin // line up
|
406 |
|
|
|
407 |
|
|
if (cursor >= 80) cursor <= cursor-80;
|
408 |
|
|
wrtchr <= 0; // remove ready to write
|
409 |
|
|
outrdy <= 1; // set ready to send
|
410 |
|
|
|
411 |
|
|
end else if (chrdatw == 8'h0d) begin // carriage return
|
412 |
|
|
|
413 |
|
|
tcursor <= 0; // set start of line cursor
|
414 |
|
|
state <= `term_fndstr; // go to find start of line
|
415 |
|
|
|
416 |
|
|
end else if (chrdatw == 8'h08) begin // character left
|
417 |
|
|
|
418 |
|
|
// if not at home position, back up
|
419 |
|
|
if (cursor > 0) cursor <= cursor-1;
|
420 |
|
|
wrtchr <= 0; // remove ready to write
|
421 |
|
|
outrdy <= 1; // set ready to send
|
422 |
|
|
|
423 |
|
|
end else if (chrdatw == 8'h0c) begin // character right
|
424 |
|
|
|
425 |
|
|
// if not at screen end, go forward
|
426 |
|
|
if (cursor < 80*24-1) cursor <= cursor+1;
|
427 |
|
|
wrtchr <= 0; // remove ready to write
|
428 |
|
|
outrdy <= 1; // set ready to send
|
429 |
|
|
|
430 |
|
|
end else if (chrdatw == 8'h1e) begin // home
|
431 |
|
|
|
432 |
|
|
cursor <= 0; // set to home position
|
433 |
|
|
wrtchr <= 0; // remove ready to write
|
434 |
|
|
outrdy <= 1; // set ready to send
|
435 |
|
|
|
436 |
|
|
end else if (chrdatw == 8'h1a) begin // clear screen
|
437 |
|
|
|
438 |
|
|
state <= `term_clear; // go to screen clear
|
439 |
|
|
wrtchr <= 0; // remove ready to write
|
440 |
|
|
outrdy <= 1; // set ready to send
|
441 |
|
|
|
442 |
|
|
end else if (chrdatw == 8'h1b) begin // escape
|
443 |
|
|
|
444 |
|
|
wrtchr <= 0; // remove ready to write
|
445 |
|
|
outrdy <= 1; // set ready to send
|
446 |
|
|
state <= `term_esc; // go escape handler
|
447 |
|
|
|
448 |
|
|
end else begin // unsupported control character
|
449 |
|
|
|
450 |
|
|
wrtchr <= 0; // remove ready to write
|
451 |
|
|
outrdy <= 1; // set ready to send
|
452 |
|
|
|
453 |
|
|
end
|
454 |
|
|
|
455 |
|
|
end
|
456 |
|
|
|
457 |
|
|
end
|
458 |
|
|
|
459 |
|
|
end
|
460 |
|
|
|
461 |
|
|
`term_wrtstd2: begin // write standard character #2
|
462 |
|
|
|
463 |
|
|
cmwrite <= 1; // set write to memory
|
464 |
|
|
state <= `term_wrtstd3; // continue
|
465 |
|
|
|
466 |
|
|
end
|
467 |
|
|
|
468 |
|
|
`term_wrtstd3: begin // write standard character #3
|
469 |
|
|
|
470 |
|
|
cmwrite <= 0; // remove write to memory
|
471 |
|
|
state <= `term_wrtstd4; // continue
|
472 |
|
|
|
473 |
|
|
end
|
474 |
|
|
|
475 |
|
|
`term_wrtstd4: begin // write standard character #3
|
476 |
|
|
|
477 |
|
|
cmdatae <= 0; // release data enable to memory
|
478 |
|
|
cmattre <= 0; // release attribute enable to memory
|
479 |
|
|
outrdy <= 1; // set ready to send
|
480 |
|
|
cursor <= cursor+1; // advance cursor
|
481 |
|
|
wrtchr <= 0; // remove ready to write
|
482 |
|
|
state <= `term_idle; // continue
|
483 |
|
|
|
484 |
|
|
end
|
485 |
|
|
|
486 |
|
|
`term_clear: begin // clear screen and home cursor
|
487 |
|
|
|
488 |
|
|
cmaddr <= 0; // clear buffer address
|
489 |
|
|
cmdatai <= 8'h20; // clear to spaces
|
490 |
|
|
cmattri <= 5'b0; // clear attributes
|
491 |
|
|
cmdatae <= 1; // enable data to memory
|
492 |
|
|
cmattre <= 1; // enable attributes to memory
|
493 |
|
|
state <= `term_clear2; // continue
|
494 |
|
|
|
495 |
|
|
end
|
496 |
|
|
|
497 |
|
|
`term_clear2: begin // clear screen and home cursor #2
|
498 |
|
|
|
499 |
|
|
cmwrite <= 1; // set write to memory
|
500 |
|
|
state <= `term_clear3; // continue
|
501 |
|
|
|
502 |
|
|
end
|
503 |
|
|
|
504 |
|
|
`term_clear3: begin // clear screen and home cursor #2
|
505 |
|
|
|
506 |
|
|
cmwrite <= 0; // reset write to memory
|
507 |
|
|
state <= `term_clear4; // continue
|
508 |
|
|
|
509 |
|
|
end
|
510 |
|
|
|
511 |
|
|
`term_clear4: begin // clear screen and home cursor #4
|
512 |
|
|
|
513 |
|
|
if (cmaddr < `scnchrs*`scnlins) begin
|
514 |
|
|
|
515 |
|
|
cmaddr <= cmaddr+1; // next character
|
516 |
|
|
// Uncomment the next to put an incrementing pattern instead of
|
517 |
|
|
// spaces.
|
518 |
|
|
//cmdatai <= cmdatai+1;
|
519 |
|
|
state <= `term_clear2; // continue
|
520 |
|
|
|
521 |
|
|
end else begin // done
|
522 |
|
|
|
523 |
|
|
outrdy <= 1; // set ready to send
|
524 |
|
|
cursor <= 0; // set cursor to home position
|
525 |
|
|
cmdatae <= 0; // release data enable to memory
|
526 |
|
|
cmattre <= 0; // release attribute enable to memory
|
527 |
|
|
state <= `term_idle; // continue
|
528 |
|
|
|
529 |
|
|
end
|
530 |
|
|
|
531 |
|
|
end
|
532 |
|
|
|
533 |
|
|
`term_fndstr: begin // find start of current line
|
534 |
|
|
|
535 |
|
|
if (tcursor+80 > cursor) begin // found
|
536 |
|
|
|
537 |
|
|
cursor <= tcursor; // set cursor to line start
|
538 |
|
|
wrtchr <= 0; // remove ready to write
|
539 |
|
|
outrdy <= 1; // set ready to send
|
540 |
|
|
state <= `term_idle; // continue
|
541 |
|
|
|
542 |
|
|
end else tcursor <= tcursor+80; // advance to next line
|
543 |
|
|
|
544 |
|
|
end
|
545 |
|
|
|
546 |
|
|
`term_scroll: begin // scroll screen up
|
547 |
|
|
|
548 |
|
|
// move all data up a line
|
549 |
|
|
if (tcursor < 80*23) begin // scroll up
|
550 |
|
|
|
551 |
|
|
cmread <= 1; // set read display
|
552 |
|
|
cmaddr <= tcursor+80; // set address to read
|
553 |
|
|
state <= `term_scroll1; // continue
|
554 |
|
|
|
555 |
|
|
end else state <= `term_scroll5; // go blank last line
|
556 |
|
|
|
557 |
|
|
end
|
558 |
|
|
|
559 |
|
|
`term_scroll1: begin // scroll screen up #1
|
560 |
|
|
|
561 |
|
|
state <= `term_scroll2; // hold read
|
562 |
|
|
|
563 |
|
|
end
|
564 |
|
|
|
565 |
|
|
`term_scroll2: begin // scroll screen up #2
|
566 |
|
|
|
567 |
|
|
cmdatai <= cmdata; // get data at address
|
568 |
|
|
cmattri <= cmattr; // get attribute at address
|
569 |
|
|
cmread <= 0; // turn off read
|
570 |
|
|
state <= `term_scroll3; // continue
|
571 |
|
|
|
572 |
|
|
end
|
573 |
|
|
|
574 |
|
|
`term_scroll3: begin // scroll screen up #3
|
575 |
|
|
|
576 |
|
|
cmdatae <= 1; // enable data to write
|
577 |
|
|
cmattre <= 1; // enable attribute to write
|
578 |
|
|
cmwrite <= 1; // set to write
|
579 |
|
|
cmaddr <= tcursor;
|
580 |
|
|
state <= `term_scroll4; // continue
|
581 |
|
|
|
582 |
|
|
end
|
583 |
|
|
|
584 |
|
|
`term_scroll4: begin // scroll screen up #4
|
585 |
|
|
|
586 |
|
|
cmwrite <= 0; // turn off write
|
587 |
|
|
cmdatae <= 0; // turn off data enable
|
588 |
|
|
cmattre <= 0; // turn off attribute enable
|
589 |
|
|
tcursor <= tcursor+1; // next address
|
590 |
|
|
state <= `term_scroll; // repeat character move
|
591 |
|
|
|
592 |
|
|
end
|
593 |
|
|
|
594 |
|
|
`term_scroll5: begin // scroll screen up #5
|
595 |
|
|
|
596 |
|
|
// blank out last line
|
597 |
|
|
if (tcursor < 80*24) begin // blank out
|
598 |
|
|
|
599 |
|
|
cmdatai <= 8'h20; // set to write spaces
|
600 |
|
|
cmattri <= 0; // set no attribute
|
601 |
|
|
cmdatae <= 1; // enable data to write
|
602 |
|
|
cmattre <= 1; // enable attribute to write
|
603 |
|
|
cmwrite <= 1; // set to write
|
604 |
|
|
cmaddr <= tcursor;
|
605 |
|
|
state <= `term_scroll6; // continue
|
606 |
|
|
|
607 |
|
|
end else begin // terminate
|
608 |
|
|
|
609 |
|
|
wrtchr <= 0; // remove ready to write
|
610 |
|
|
outrdy <= 1; // set ready to send
|
611 |
|
|
state <= `term_idle; // continue
|
612 |
|
|
|
613 |
|
|
end
|
614 |
|
|
|
615 |
|
|
end
|
616 |
|
|
|
617 |
|
|
`term_scroll6: begin // scroll screen up #6
|
618 |
|
|
|
619 |
|
|
cmwrite <= 0; // turn off write
|
620 |
|
|
cmdatae <= 0; // turn off data enable
|
621 |
|
|
cmattre <= 0; // turn off attribute enable
|
622 |
|
|
tcursor <= tcursor+1; // next address
|
623 |
|
|
state <= `term_scroll5; // repeat blank out
|
624 |
|
|
|
625 |
|
|
end
|
626 |
|
|
|
627 |
|
|
`term_esc: begin // handle escape codes
|
628 |
|
|
|
629 |
|
|
// wait for next character
|
630 |
|
|
if (wrtchr&!(select&read|select&write)) begin
|
631 |
|
|
|
632 |
|
|
// check its a cursor position, or "\esc="
|
633 |
|
|
if (chrdatw == 8'h3d) begin
|
634 |
|
|
|
635 |
|
|
wrtchr <= 0; // remove ready to write
|
636 |
|
|
outrdy <= 1; // set ready to send
|
637 |
|
|
state <= `term_poscur;
|
638 |
|
|
|
639 |
|
|
// check its a attribute set, or "\escG"
|
640 |
|
|
end else if (chrdatw == 8'h47) begin
|
641 |
|
|
|
642 |
|
|
wrtchr <= 0; // remove ready to write
|
643 |
|
|
outrdy <= 1; // set ready to send
|
644 |
|
|
state <= `term_attset;
|
645 |
|
|
|
646 |
|
|
end else begin // invalid sequence, abort
|
647 |
|
|
|
648 |
|
|
wrtchr <= 0; // remove ready to write
|
649 |
|
|
outrdy <= 1; // set ready to send
|
650 |
|
|
state <= `term_idle;
|
651 |
|
|
|
652 |
|
|
end
|
653 |
|
|
|
654 |
|
|
|
655 |
|
|
end
|
656 |
|
|
|
657 |
|
|
end
|
658 |
|
|
|
659 |
|
|
`term_poscur: begin // handle cursor direct position
|
660 |
|
|
|
661 |
|
|
// wait for next character
|
662 |
|
|
if (wrtchr&!(select&read|select&write)) begin
|
663 |
|
|
|
664 |
|
|
rowchr <= chrdatw; // save row character
|
665 |
|
|
wrtchr <= 0; // remove ready to write
|
666 |
|
|
outrdy <= 1; // set ready to send
|
667 |
|
|
state <= `term_poscur2;
|
668 |
|
|
|
669 |
|
|
end
|
670 |
|
|
|
671 |
|
|
end
|
672 |
|
|
|
673 |
|
|
`term_poscur2: begin // handle cursor direct position #2
|
674 |
|
|
|
675 |
|
|
// wait for next character
|
676 |
|
|
if (wrtchr&!(select&read|select&write)) begin
|
677 |
|
|
|
678 |
|
|
// check row and collumn are valid
|
679 |
|
|
if (rowchr >= 8'h20 && rowchr <= 8'h37 &&
|
680 |
|
|
chrdatw >= 8'h20 && chrdatw <= 8'h6f)
|
681 |
|
|
// perform position
|
682 |
|
|
cursor <= (rowchr-8'h20)*80+(chrdatw-8'h20);
|
683 |
|
|
wrtchr <= 0; // remove ready to write
|
684 |
|
|
outrdy <= 1; // set ready to send
|
685 |
|
|
state <= `term_idle;
|
686 |
|
|
|
687 |
|
|
end
|
688 |
|
|
|
689 |
|
|
end
|
690 |
|
|
|
691 |
|
|
`term_attset: begin // handle attribute set
|
692 |
|
|
|
693 |
|
|
// wait for next character
|
694 |
|
|
if (wrtchr&!(select&read|select&write)) begin
|
695 |
|
|
|
696 |
|
|
// Process attribute set code. The ADM 3A attributes are arranged
|
697 |
|
|
// so that the bits in characters '0'-'N' correspond to attribute
|
698 |
|
|
// bits. Some of the combinations are "invalid", but these are
|
699 |
|
|
// ones that override each other. For example, blank overrides
|
700 |
|
|
// all others.
|
701 |
|
|
if (chrdatw >= 8'h30 && chrdatw <= 8'h4e) // its '0'-'N'
|
702 |
|
|
curatr <= chrdatw-8'h30 & 5'b11111;
|
703 |
|
|
wrtchr <= 0; // remove ready to write
|
704 |
|
|
outrdy <= 1; // set ready to send
|
705 |
|
|
state <= `term_idle;
|
706 |
|
|
|
707 |
|
|
end
|
708 |
|
|
|
709 |
|
|
end
|
710 |
|
|
|
711 |
|
|
default: state <= 6'bx;
|
712 |
|
|
|
713 |
|
|
endcase
|
714 |
|
|
|
715 |
|
|
end
|
716 |
|
|
|
717 |
|
|
// Enable drive to character memory
|
718 |
|
|
assign cmdata = cmdatae ? cmdatai: 8'bz;
|
719 |
|
|
|
720 |
|
|
// Enable drive to character attributes
|
721 |
|
|
assign cmattr = cmattre ? cmattri: 8'bz;
|
722 |
|
|
|
723 |
|
|
// Enable drive for data output
|
724 |
|
|
assign data = read&select ? datao: 8'bz;
|
725 |
|
|
|
726 |
|
|
endmodule
|
727 |
|
|
|
728 |
|
|
////////////////////////////////////////////////////////////////////////////////
|
729 |
|
|
//
|
730 |
|
|
// MEMORY MAPPED CHARACTER DISPLAY
|
731 |
|
|
//
|
732 |
|
|
// Contains the 20x8 characters used in a 640x480, 24 lines of 80 characters
|
733 |
|
|
// display. This display is accessed vi a 1920 character memory, which can be
|
734 |
|
|
// written and read. It is dual port, so has no restrictions on read and write.
|
735 |
|
|
//
|
736 |
|
|
// This block can either be directly mapped to CPU main memory, or can be run
|
737 |
|
|
// via a terminal emulator.
|
738 |
|
|
//
|
739 |
|
|
// Note there wasn't a mode for 24 lines, or for 640x480 pixels for alpha mode
|
740 |
|
|
// on the PC. Instead, 640x480 was a standard VGA mode for graphics. I like it
|
741 |
|
|
// because it unifies graphics and alpha modes, and has even divisions to
|
742 |
|
|
// character cells. Its a bit difficult to fit characters into a 8x20 cell,
|
743 |
|
|
// but the modes used for alpha, like 640x400 or 640x300 are not 4:3 aspect
|
744 |
|
|
// ratios, and really work by stretching the pixels vertically. We just do
|
745 |
|
|
// the same thing by explicit mapping.
|
746 |
|
|
//
|
747 |
|
|
|
748 |
|
|
`define clkfreq 50000000 // input clock frequency
|
749 |
|
|
`define blinkfreq 1 // blink cycle in seconds
|
750 |
|
|
`define blinkmax (`clkfreq*`blinkfreq) // total blink cycle
|
751 |
|
|
|
752 |
|
|
module chrmemmap(rst_n, clk, r, g, b, hsync_n, vsync_n, addr, read, write,
|
753 |
|
|
data, attr, cursor);
|
754 |
|
|
|
755 |
|
|
input rst_n; // reset
|
756 |
|
|
input clk; // master clock
|
757 |
|
|
output [2:0] r, g, b; // R,G,B color output buses
|
758 |
|
|
output hsync_n; // horizontal sync pulse
|
759 |
|
|
output vsync_n; // vertical sync pulse
|
760 |
|
|
input [10:0] addr; // address to read or write
|
761 |
|
|
input read; // read from address
|
762 |
|
|
input write; // write from address
|
763 |
|
|
inout [7:0] data; // data to be written/read
|
764 |
|
|
inout [4:0] attr; // attributes to be written/read
|
765 |
|
|
input [10:0] cursor; // cursor address
|
766 |
|
|
|
767 |
|
|
reg [15:0] pixeldata; // 16 bit pixel feed
|
768 |
|
|
|
769 |
|
|
reg [6:0] chrcnt; // character counter
|
770 |
|
|
reg [4:0] rowcnt; // character row counter
|
771 |
|
|
reg [4:0] lincnt; // line counter
|
772 |
|
|
reg [10:0] scnadr; // screen character buffer address
|
773 |
|
|
reg [7:0] curchr; // current character indexed by scnadr
|
774 |
|
|
reg [4:0] curatr; // current attribute indexed by scnadr
|
775 |
|
|
reg [1:0] fchsta; // character fetch state, 0 = load high, 1 = load low
|
776 |
|
|
wire [10:0] chradr; // character generator address
|
777 |
|
|
wire [7:0] chrdata; // character generator data
|
778 |
|
|
reg [7:0] datao; // intermediate for data output
|
779 |
|
|
reg [4:0] attro; // intermediate for attribute output
|
780 |
|
|
reg [7:0] pixdatl; // pixel data low holding
|
781 |
|
|
reg [31:0] blinkcnt; // blink cycle counter
|
782 |
|
|
reg blon; // blink on/off
|
783 |
|
|
|
784 |
|
|
// storage for character based screen
|
785 |
|
|
|
786 |
|
|
reg [7:0] scnbuf[1919:0]; // screen
|
787 |
|
|
reg [4:0] atrbuf[1919:0]; // attributes
|
788 |
|
|
|
789 |
|
|
assign rst = ~rst_n; // change reset polarity
|
790 |
|
|
|
791 |
|
|
vga vgai(.rst(rst), .clk(clk), .pixel_data_in(pixeldata), .rd(rd), .eof(eof),
|
792 |
|
|
.r(r), .g(g), .b(b), .hsync_n(hsync_n), .vsync_n(vsync_n),
|
793 |
|
|
.blank(blank));
|
794 |
|
|
|
795 |
|
|
chrrom crom(chradr, chrdata); // place character generator
|
796 |
|
|
|
797 |
|
|
// run the blink cycle counter
|
798 |
|
|
always @(posedge clk)
|
799 |
|
|
if (rst) begin
|
800 |
|
|
|
801 |
|
|
blinkcnt <= 0; // clear blink cycle
|
802 |
|
|
blon <= 0; // clear cursor blink on
|
803 |
|
|
|
804 |
|
|
end else begin
|
805 |
|
|
|
806 |
|
|
blinkcnt <= blinkcnt+1; // count blink cycle
|
807 |
|
|
// check blink cycle maxed, recycle if so
|
808 |
|
|
if (blinkcnt >= `blinkmax) begin
|
809 |
|
|
|
810 |
|
|
blinkcnt <= 0; // clear blink count
|
811 |
|
|
blon <= ~blon; // flip blink state
|
812 |
|
|
|
813 |
|
|
end
|
814 |
|
|
|
815 |
|
|
end
|
816 |
|
|
|
817 |
|
|
// run the character to screen scan
|
818 |
|
|
always @(posedge clk)
|
819 |
|
|
if (rst) begin // if reset
|
820 |
|
|
|
821 |
|
|
// ????? SIMULATION PLUG
|
822 |
|
|
// starting the character counter at the end of the line allows the scan
|
823 |
|
|
// to cross the area the CPU is filling, and is ok at hardware time.
|
824 |
|
|
// chrcnt <= 7'h0; // clear counters
|
825 |
|
|
chrcnt <= 80-20; // clear counters
|
826 |
|
|
// ????? SIMULATION PLUG
|
827 |
|
|
// Starting the row count at 1 allows pixels to appear on the simulation,
|
828 |
|
|
// and produces only a single bad line in real hardware
|
829 |
|
|
rowcnt <= 5'h0;
|
830 |
|
|
// rowcnt <= 5'h1;
|
831 |
|
|
lincnt <= 5'h0;
|
832 |
|
|
scnadr <= 11'h0;
|
833 |
|
|
fchsta <= 0;
|
834 |
|
|
|
835 |
|
|
end else if (eof) begin // if end of frame
|
836 |
|
|
|
837 |
|
|
chrcnt <= 7'h0; // clear counters
|
838 |
|
|
rowcnt <= 5'h0;
|
839 |
|
|
lincnt <= 5'h0;
|
840 |
|
|
scnadr <= 11'h0;
|
841 |
|
|
fchsta <= 1; // set to fetch first set of characters
|
842 |
|
|
|
843 |
|
|
end else if (rd || fchsta) begin
|
844 |
|
|
|
845 |
|
|
if (fchsta == 1 || fchsta == 3) begin
|
846 |
|
|
|
847 |
|
|
// advance counters
|
848 |
|
|
if (chrcnt < 79) chrcnt <= chrcnt+1; // next character count
|
849 |
|
|
else begin // next row
|
850 |
|
|
|
851 |
|
|
chrcnt <= 0; // reset character
|
852 |
|
|
if (rowcnt < 19) rowcnt <= rowcnt+1; // next character row
|
853 |
|
|
else begin // next line
|
854 |
|
|
|
855 |
|
|
rowcnt <= 0; // reset row
|
856 |
|
|
lincnt <= lincnt+1; // next line
|
857 |
|
|
scnadr <= scnadr+80; // advance character fetch
|
858 |
|
|
|
859 |
|
|
end
|
860 |
|
|
|
861 |
|
|
end
|
862 |
|
|
|
863 |
|
|
end
|
864 |
|
|
|
865 |
|
|
// Choose high or low character, and next state. Note we have to flip the
|
866 |
|
|
// characters left to right to be correct.
|
867 |
|
|
case (fchsta)
|
868 |
|
|
|
869 |
|
|
0: fchsta <= 1; // delay until rd cycle is over
|
870 |
|
|
|
871 |
|
|
1: begin
|
872 |
|
|
|
873 |
|
|
// Set low bits of pixel register, and reverse if cursor matches the
|
874 |
|
|
// current position, or if reverse attribute is on. Turn it all off
|
875 |
|
|
// if blank is on.
|
876 |
|
|
if ((scnadr+chrcnt == cursor)^curatr[2])
|
877 |
|
|
pixdatl <= ~(curatr[0]|(curatr[1]&blon)? 8'h00: // blink and blank
|
878 |
|
|
(curatr[3]&rowcnt == 14? 8'hff: // underline
|
879 |
|
|
{ chrdata[0], chrdata[1], chrdata[2], chrdata[3],
|
880 |
|
|
chrdata[4], chrdata[5], chrdata[6], chrdata[7] }));
|
881 |
|
|
else
|
882 |
|
|
pixdatl <= curatr[0]|(curatr[1]&blon)? 8'h00: // blink and blank
|
883 |
|
|
(curatr[3]&rowcnt == 14? 8'hff: // underline
|
884 |
|
|
{ chrdata[0], chrdata[1], chrdata[2], chrdata[3],
|
885 |
|
|
chrdata[4], chrdata[5], chrdata[6], chrdata[7] });
|
886 |
|
|
fchsta <= 2; // next state
|
887 |
|
|
|
888 |
|
|
end
|
889 |
|
|
|
890 |
|
|
2: fchsta <= 3; // delay a cycle for ROM read time
|
891 |
|
|
|
892 |
|
|
3: begin
|
893 |
|
|
|
894 |
|
|
// form 2 bit pixel data by doubling each character pixel
|
895 |
|
|
pixeldata[0] <= chrdata[7];
|
896 |
|
|
pixeldata[1] <= chrdata[7];
|
897 |
|
|
pixeldata[2] <= chrdata[6];
|
898 |
|
|
pixeldata[3] <= chrdata[6];
|
899 |
|
|
pixeldata[4] <= chrdata[5];
|
900 |
|
|
pixeldata[5] <= chrdata[5];
|
901 |
|
|
pixeldata[6] <= chrdata[4];
|
902 |
|
|
pixeldata[7] <= chrdata[4];
|
903 |
|
|
pixeldata[8] <= chrdata[3];
|
904 |
|
|
pixeldata[9] <= chrdata[3];
|
905 |
|
|
pixeldata[10] <= chrdata[2];
|
906 |
|
|
pixeldata[11] <= chrdata[2];
|
907 |
|
|
pixeldata[12] <= chrdata[1];
|
908 |
|
|
pixeldata[13] <= chrdata[1];
|
909 |
|
|
pixeldata[14] <= chrdata[0];
|
910 |
|
|
pixeldata[15] <= chrdata[0];
|
911 |
|
|
// // Set low bits of pixel register, and reverse if cursor matches the
|
912 |
|
|
// // current position, or if reverse attribute is on. Turn it all off
|
913 |
|
|
// // if blank is on.
|
914 |
|
|
// if ((scnadr+chrcnt == cursor)^curatr[2])
|
915 |
|
|
// pixeldata <= pixdatl |
|
916 |
|
|
// (~(curatr[0]|(curatr[1]&blon)? 8'h00: // blink and blank
|
917 |
|
|
// (curatr[3]&rowcnt == 14? 8'hff: // underline
|
918 |
|
|
// { chrdata[0], chrdata[1], chrdata[2], chrdata[3],
|
919 |
|
|
// chrdata[4], chrdata[5], chrdata[6], chrdata[7] })) &
|
920 |
|
|
// 8'hff) << 8;
|
921 |
|
|
// else
|
922 |
|
|
// pixeldata <= pixdatl |
|
923 |
|
|
// (curatr[0]|(curatr[1]&blon)? 8'h00: // blink and blank
|
924 |
|
|
// (curatr[3]&rowcnt == 14? 8'hff: // underline
|
925 |
|
|
// { chrdata[0], chrdata[1], chrdata[2], chrdata[3],
|
926 |
|
|
// chrdata[4], chrdata[5], chrdata[6], chrdata[7] })) << 8;
|
927 |
|
|
fchsta <= 0; // back to start
|
928 |
|
|
|
929 |
|
|
end
|
930 |
|
|
|
931 |
|
|
endcase
|
932 |
|
|
|
933 |
|
|
end
|
934 |
|
|
|
935 |
|
|
// operate dual port screen character RAM
|
936 |
|
|
always @(posedge clk) begin
|
937 |
|
|
|
938 |
|
|
// set current indexed character without parity
|
939 |
|
|
curchr <= scnbuf[scnadr+chrcnt] & 8'h7f;
|
940 |
|
|
if (write) scnbuf[addr] <= data;
|
941 |
|
|
datao <= scnbuf[addr];
|
942 |
|
|
|
943 |
|
|
end
|
944 |
|
|
|
945 |
|
|
// operate dual port screen attribute RAM
|
946 |
|
|
always @(posedge clk) begin
|
947 |
|
|
|
948 |
|
|
// set current indexed character without parity
|
949 |
|
|
curatr <= atrbuf[scnadr+chrcnt];
|
950 |
|
|
if (write) atrbuf[addr] <= attr;
|
951 |
|
|
attro <= atrbuf[addr];
|
952 |
|
|
|
953 |
|
|
end
|
954 |
|
|
|
955 |
|
|
// create character address from character in buffer and current row
|
956 |
|
|
assign chradr =
|
957 |
|
|
(curchr < 8'h20 || curchr == 8'h7f) ? 11'h0: (curchr-8'h20)*20+rowcnt;
|
958 |
|
|
|
959 |
|
|
// Enable drive for data output
|
960 |
|
|
assign data = read ? datao: 8'bz;
|
961 |
|
|
assign attr = read ? attro: 8'bz;
|
962 |
|
|
|
963 |
|
|
endmodule
|
964 |
|
|
|
965 |
|
|
////////////////////////////////////////////////////////////////////////////////
|
966 |
|
|
//
|
967 |
|
|
// CHARACTER ROM
|
968 |
|
|
//
|
969 |
|
|
// Contains the 20x8 characters used in a 640x480, 25 lines of 80 characters
|
970 |
|
|
// display.
|
971 |
|
|
//
|
972 |
|
|
|
973 |
|
|
module chrrom(addr, data);
|
974 |
|
|
|
975 |
|
|
input [10:0] addr;
|
976 |
|
|
output [7:0] data;
|
977 |
|
|
|
978 |
|
|
reg [7:0] data;
|
979 |
|
|
|
980 |
|
|
always @(addr) case (addr)
|
981 |
|
|
|
982 |
|
|
// Character set starting with space, and ending with '~'
|
983 |
|
|
|
984 |
|
|
// The design of characters is such that they are embedded into an odd
|
985 |
|
|
// number of pixels, 7x19, with one space pixel to the right and bottom
|
986 |
|
|
// of each cell. The character layout works best on an odd cell width
|
987 |
|
|
// and height, because this gives a clear center to the character.
|
988 |
|
|
// Each characters baseline is marked. The baseline is where the capital
|
989 |
|
|
// characters sit, and only the descenders go below this position.
|
990 |
|
|
|
991 |
|
|
11'h000: data = 8'b00000000; // ' '
|
992 |
|
|
11'h001: data = 8'b00000000;
|
993 |
|
|
11'h002: data = 8'b00000000;
|
994 |
|
|
11'h003: data = 8'b00000000;
|
995 |
|
|
11'h004: data = 8'b00000000;
|
996 |
|
|
11'h005: data = 8'b00000000;
|
997 |
|
|
11'h006: data = 8'b00000000;
|
998 |
|
|
11'h007: data = 8'b00000000;
|
999 |
|
|
11'h008: data = 8'b00000000;
|
1000 |
|
|
11'h009: data = 8'b00000000;
|
1001 |
|
|
11'h00A: data = 8'b00000000;
|
1002 |
|
|
11'h00B: data = 8'b00000000;
|
1003 |
|
|
11'h00C: data = 8'b00000000; // B
|
1004 |
|
|
11'h00D: data = 8'b00000000;
|
1005 |
|
|
11'h00E: data = 8'b00000000;
|
1006 |
|
|
11'h00F: data = 8'b00000000;
|
1007 |
|
|
11'h010: data = 8'b00000000;
|
1008 |
|
|
11'h011: data = 8'b00000000;
|
1009 |
|
|
11'h012: data = 8'b00000000;
|
1010 |
|
|
11'h013: data = 8'b00000000;
|
1011 |
|
|
|
1012 |
|
|
11'h014: data = 8'b00010000; // '!'
|
1013 |
|
|
11'h015: data = 8'b00010000;
|
1014 |
|
|
11'h016: data = 8'b00010000;
|
1015 |
|
|
11'h017: data = 8'b00010000;
|
1016 |
|
|
11'h018: data = 8'b00010000;
|
1017 |
|
|
11'h019: data = 8'b00010000;
|
1018 |
|
|
11'h01A: data = 8'b00010000;
|
1019 |
|
|
11'h01B: data = 8'b00010000;
|
1020 |
|
|
11'h01C: data = 8'b00010000;
|
1021 |
|
|
11'h01D: data = 8'b00010000;
|
1022 |
|
|
11'h01E: data = 8'b00000000;
|
1023 |
|
|
11'h01F: data = 8'b00010000;
|
1024 |
|
|
11'h020: data = 8'b00010000; // B
|
1025 |
|
|
11'h021: data = 8'b00000000;
|
1026 |
|
|
11'h022: data = 8'b00000000;
|
1027 |
|
|
11'h023: data = 8'b00000000;
|
1028 |
|
|
11'h024: data = 8'b00000000;
|
1029 |
|
|
11'h025: data = 8'b00000000;
|
1030 |
|
|
11'h026: data = 8'b00000000;
|
1031 |
|
|
11'h027: data = 8'b00000000;
|
1032 |
|
|
|
1033 |
|
|
11'h028: data = 8'b00000000; // '"'
|
1034 |
|
|
11'h029: data = 8'b00101000;
|
1035 |
|
|
11'h02A: data = 8'b00101000;
|
1036 |
|
|
11'h02B: data = 8'b00000000;
|
1037 |
|
|
11'h02C: data = 8'b00000000;
|
1038 |
|
|
11'h02D: data = 8'b00000000;
|
1039 |
|
|
11'h02E: data = 8'b00000000;
|
1040 |
|
|
11'h02F: data = 8'b00000000;
|
1041 |
|
|
11'h030: data = 8'b00000000;
|
1042 |
|
|
11'h031: data = 8'b00000000;
|
1043 |
|
|
11'h032: data = 8'b00000000;
|
1044 |
|
|
11'h033: data = 8'b00000000;
|
1045 |
|
|
11'h034: data = 8'b00000000; // B
|
1046 |
|
|
11'h035: data = 8'b00000000;
|
1047 |
|
|
11'h036: data = 8'b00000000;
|
1048 |
|
|
11'h037: data = 8'b00000000;
|
1049 |
|
|
11'h038: data = 8'b00000000;
|
1050 |
|
|
11'h039: data = 8'b00000000;
|
1051 |
|
|
11'h03A: data = 8'b00000000;
|
1052 |
|
|
11'h03B: data = 8'b00000000;
|
1053 |
|
|
|
1054 |
|
|
11'h03C: data = 8'b01000100; // '#'
|
1055 |
|
|
11'h03D: data = 8'b01000100;
|
1056 |
|
|
11'h03E: data = 8'b01000100;
|
1057 |
|
|
11'h03F: data = 8'b01000100;
|
1058 |
|
|
11'h040: data = 8'b11111110;
|
1059 |
|
|
11'h041: data = 8'b01000100;
|
1060 |
|
|
11'h042: data = 8'b01000100;
|
1061 |
|
|
11'h043: data = 8'b01000100;
|
1062 |
|
|
11'h044: data = 8'b11111110;
|
1063 |
|
|
11'h045: data = 8'b01000100;
|
1064 |
|
|
11'h046: data = 8'b01000100;
|
1065 |
|
|
11'h047: data = 8'b01000100;
|
1066 |
|
|
11'h048: data = 8'b01000100; // B
|
1067 |
|
|
11'h049: data = 8'b00000000;
|
1068 |
|
|
11'h04A: data = 8'b00000000;
|
1069 |
|
|
11'h04B: data = 8'b00000000;
|
1070 |
|
|
11'h04C: data = 8'b00000000;
|
1071 |
|
|
11'h04D: data = 8'b00000000;
|
1072 |
|
|
11'h04E: data = 8'b00000000;
|
1073 |
|
|
11'h04F: data = 8'b00000000;
|
1074 |
|
|
|
1075 |
|
|
11'h050: data = 8'b00010000; // '$'
|
1076 |
|
|
11'h051: data = 8'b01111100;
|
1077 |
|
|
11'h052: data = 8'b10010010;
|
1078 |
|
|
11'h053: data = 8'b10010000;
|
1079 |
|
|
11'h054: data = 8'b10010000;
|
1080 |
|
|
11'h055: data = 8'b10010000;
|
1081 |
|
|
11'h056: data = 8'b01111100;
|
1082 |
|
|
11'h057: data = 8'b00010010;
|
1083 |
|
|
11'h058: data = 8'b00010010;
|
1084 |
|
|
11'h059: data = 8'b00010010;
|
1085 |
|
|
11'h05A: data = 8'b10010010;
|
1086 |
|
|
11'h05B: data = 8'b01111100;
|
1087 |
|
|
11'h05C: data = 8'b00010000; // B
|
1088 |
|
|
11'h05D: data = 8'b00000000;
|
1089 |
|
|
11'h05E: data = 8'b00000000;
|
1090 |
|
|
11'h05F: data = 8'b00000000;
|
1091 |
|
|
11'h060: data = 8'b00000000;
|
1092 |
|
|
11'h061: data = 8'b00000000;
|
1093 |
|
|
11'h062: data = 8'b00000000;
|
1094 |
|
|
11'h063: data = 8'b00000000;
|
1095 |
|
|
|
1096 |
|
|
11'h064: data = 8'b11100000; // '%'
|
1097 |
|
|
11'h065: data = 8'b10100010;
|
1098 |
|
|
11'h066: data = 8'b11100100;
|
1099 |
|
|
11'h067: data = 8'b00000100;
|
1100 |
|
|
11'h068: data = 8'b00001000;
|
1101 |
|
|
11'h069: data = 8'b00001000;
|
1102 |
|
|
11'h06A: data = 8'b00010000;
|
1103 |
|
|
11'h06B: data = 8'b00010000;
|
1104 |
|
|
11'h06C: data = 8'b00100000;
|
1105 |
|
|
11'h06D: data = 8'b00100000;
|
1106 |
|
|
11'h06E: data = 8'b01001110;
|
1107 |
|
|
11'h06F: data = 8'b01001010;
|
1108 |
|
|
11'h070: data = 8'b10001110; // B
|
1109 |
|
|
11'h071: data = 8'b00000000;
|
1110 |
|
|
11'h072: data = 8'b00000000;
|
1111 |
|
|
11'h073: data = 8'b00000000;
|
1112 |
|
|
11'h074: data = 8'b00000000;
|
1113 |
|
|
11'h075: data = 8'b00000000;
|
1114 |
|
|
11'h076: data = 8'b00000000;
|
1115 |
|
|
11'h077: data = 8'b00000000;
|
1116 |
|
|
|
1117 |
|
|
11'h078: data = 8'b00000000; // '&'
|
1118 |
|
|
11'h079: data = 8'b00000000;
|
1119 |
|
|
11'h07A: data = 8'b00110000;
|
1120 |
|
|
11'h07B: data = 8'b01001000;
|
1121 |
|
|
11'h07C: data = 8'b10001000;
|
1122 |
|
|
11'h07D: data = 8'b10010000;
|
1123 |
|
|
11'h07E: data = 8'b01100000;
|
1124 |
|
|
11'h07F: data = 8'b00100000;
|
1125 |
|
|
11'h080: data = 8'b01010000;
|
1126 |
|
|
11'h081: data = 8'b10001010;
|
1127 |
|
|
11'h082: data = 8'b10000100;
|
1128 |
|
|
11'h083: data = 8'b10001010;
|
1129 |
|
|
11'h084: data = 8'b01110000; // B
|
1130 |
|
|
11'h085: data = 8'b00000000;
|
1131 |
|
|
11'h086: data = 8'b00000000;
|
1132 |
|
|
11'h087: data = 8'b00000000;
|
1133 |
|
|
11'h088: data = 8'b00000000;
|
1134 |
|
|
11'h089: data = 8'b00000000;
|
1135 |
|
|
11'h08A: data = 8'b00000000;
|
1136 |
|
|
11'h08B: data = 8'b00000000;
|
1137 |
|
|
|
1138 |
|
|
11'h08C: data = 8'b00010000; // '''
|
1139 |
|
|
11'h08D: data = 8'b00010000;
|
1140 |
|
|
11'h08E: data = 8'b00000000;
|
1141 |
|
|
11'h08F: data = 8'b00000000;
|
1142 |
|
|
11'h090: data = 8'b00000000;
|
1143 |
|
|
11'h091: data = 8'b00000000;
|
1144 |
|
|
11'h092: data = 8'b00000000;
|
1145 |
|
|
11'h093: data = 8'b00000000;
|
1146 |
|
|
11'h094: data = 8'b00000000;
|
1147 |
|
|
11'h095: data = 8'b00000000;
|
1148 |
|
|
11'h096: data = 8'b00000000;
|
1149 |
|
|
11'h097: data = 8'b00000000;
|
1150 |
|
|
11'h098: data = 8'b00000000; // B
|
1151 |
|
|
11'h099: data = 8'b00000000;
|
1152 |
|
|
11'h09A: data = 8'b00000000;
|
1153 |
|
|
11'h09B: data = 8'b00000000;
|
1154 |
|
|
11'h09C: data = 8'b00000000;
|
1155 |
|
|
11'h09D: data = 8'b00000000;
|
1156 |
|
|
11'h09E: data = 8'b00000000;
|
1157 |
|
|
11'h09F: data = 8'b00000000;
|
1158 |
|
|
|
1159 |
|
|
11'h0A0: data = 8'b00000100; // '('
|
1160 |
|
|
11'h0A1: data = 8'b00001000;
|
1161 |
|
|
11'h0A2: data = 8'b00010000;
|
1162 |
|
|
11'h0A3: data = 8'b00100000;
|
1163 |
|
|
11'h0A4: data = 8'b00100000;
|
1164 |
|
|
11'h0A5: data = 8'b01000000;
|
1165 |
|
|
11'h0A6: data = 8'b01000000;
|
1166 |
|
|
11'h0A7: data = 8'b01000000;
|
1167 |
|
|
11'h0A8: data = 8'b00100000;
|
1168 |
|
|
11'h0A9: data = 8'b00100000;
|
1169 |
|
|
11'h0AA: data = 8'b00010000;
|
1170 |
|
|
11'h0AB: data = 8'b00001000;
|
1171 |
|
|
11'h0AC: data = 8'b00000100; // B
|
1172 |
|
|
11'h0AD: data = 8'b00000000;
|
1173 |
|
|
11'h0AE: data = 8'b00000000;
|
1174 |
|
|
11'h0AF: data = 8'b00000000;
|
1175 |
|
|
11'h0B0: data = 8'b00000000;
|
1176 |
|
|
11'h0B1: data = 8'b00000000;
|
1177 |
|
|
11'h0B2: data = 8'b00000000;
|
1178 |
|
|
11'h0B3: data = 8'b00000000;
|
1179 |
|
|
|
1180 |
|
|
11'h0B4: data = 8'b01000000; // ')'
|
1181 |
|
|
11'h0B5: data = 8'b00100000;
|
1182 |
|
|
11'h0B6: data = 8'b00010000;
|
1183 |
|
|
11'h0B7: data = 8'b00001000;
|
1184 |
|
|
11'h0B8: data = 8'b00001000;
|
1185 |
|
|
11'h0B9: data = 8'b00000100;
|
1186 |
|
|
11'h0BA: data = 8'b00000100;
|
1187 |
|
|
11'h0BB: data = 8'b00000100;
|
1188 |
|
|
11'h0BC: data = 8'b00001000;
|
1189 |
|
|
11'h0BD: data = 8'b00001000;
|
1190 |
|
|
11'h0BE: data = 8'b00010000;
|
1191 |
|
|
11'h0BF: data = 8'b00100000;
|
1192 |
|
|
11'h0C0: data = 8'b01000000; // B
|
1193 |
|
|
11'h0C1: data = 8'b00000000;
|
1194 |
|
|
11'h0C2: data = 8'b00000000;
|
1195 |
|
|
11'h0C3: data = 8'b00000000;
|
1196 |
|
|
11'h0C4: data = 8'b00000000;
|
1197 |
|
|
11'h0C5: data = 8'b00000000;
|
1198 |
|
|
11'h0C6: data = 8'b00000000;
|
1199 |
|
|
11'h0C7: data = 8'b00000000;
|
1200 |
|
|
|
1201 |
|
|
11'h0C8: data = 8'b00000000; // '*'
|
1202 |
|
|
11'h0C9: data = 8'b00000000;
|
1203 |
|
|
11'h0CA: data = 8'b00000000;
|
1204 |
|
|
11'h0CB: data = 8'b00000000;
|
1205 |
|
|
11'h0CC: data = 8'b01000100;
|
1206 |
|
|
11'h0CD: data = 8'b00101000;
|
1207 |
|
|
11'h0CE: data = 8'b01111100;
|
1208 |
|
|
11'h0CF: data = 8'b00101000;
|
1209 |
|
|
11'h0D0: data = 8'b01000100;
|
1210 |
|
|
11'h0D1: data = 8'b00000000;
|
1211 |
|
|
11'h0D2: data = 8'b00000000;
|
1212 |
|
|
11'h0D3: data = 8'b00000000;
|
1213 |
|
|
11'h0D4: data = 8'b00000000; // B
|
1214 |
|
|
11'h0D5: data = 8'b00000000;
|
1215 |
|
|
11'h0D6: data = 8'b00000000;
|
1216 |
|
|
11'h0D7: data = 8'b00000000;
|
1217 |
|
|
11'h0D8: data = 8'b00000000;
|
1218 |
|
|
11'h0D9: data = 8'b00000000;
|
1219 |
|
|
11'h0DA: data = 8'b00000000;
|
1220 |
|
|
11'h0DB: data = 8'b00000000;
|
1221 |
|
|
|
1222 |
|
|
11'h0DC: data = 8'b00000000; // '+'
|
1223 |
|
|
11'h0DD: data = 8'b00000000;
|
1224 |
|
|
11'h0DE: data = 8'b00000000;
|
1225 |
|
|
11'h0DF: data = 8'b00010000;
|
1226 |
|
|
11'h0E0: data = 8'b00010000;
|
1227 |
|
|
11'h0E1: data = 8'b00010000;
|
1228 |
|
|
11'h0E2: data = 8'b11111110;
|
1229 |
|
|
11'h0E3: data = 8'b00010000;
|
1230 |
|
|
11'h0E4: data = 8'b00010000;
|
1231 |
|
|
11'h0E5: data = 8'b00010000;
|
1232 |
|
|
11'h0E6: data = 8'b00000000;
|
1233 |
|
|
11'h0E7: data = 8'b00000000;
|
1234 |
|
|
11'h0E8: data = 8'b00000000; // B
|
1235 |
|
|
11'h0E9: data = 8'b00000000;
|
1236 |
|
|
11'h0EA: data = 8'b00000000;
|
1237 |
|
|
11'h0EB: data = 8'b00000000;
|
1238 |
|
|
11'h0EC: data = 8'b00000000;
|
1239 |
|
|
11'h0ED: data = 8'b00000000;
|
1240 |
|
|
11'h0EE: data = 8'b00000000;
|
1241 |
|
|
11'h0EF: data = 8'b00000000;
|
1242 |
|
|
|
1243 |
|
|
11'h0F0: data = 8'b00000000; // ','
|
1244 |
|
|
11'h0F1: data = 8'b00000000;
|
1245 |
|
|
11'h0F2: data = 8'b00000000;
|
1246 |
|
|
11'h0F3: data = 8'b00000000;
|
1247 |
|
|
11'h0F4: data = 8'b00000000;
|
1248 |
|
|
11'h0F5: data = 8'b00000000;
|
1249 |
|
|
11'h0F6: data = 8'b00000000;
|
1250 |
|
|
11'h0F7: data = 8'b00000000;
|
1251 |
|
|
11'h0F8: data = 8'b00000000;
|
1252 |
|
|
11'h0F9: data = 8'b00000000;
|
1253 |
|
|
11'h0FA: data = 8'b00000000;
|
1254 |
|
|
11'h0FB: data = 8'b00000000;
|
1255 |
|
|
11'h0FC: data = 8'b00010000; // B
|
1256 |
|
|
11'h0FD: data = 8'b00010000;
|
1257 |
|
|
11'h0FE: data = 8'b00100000;
|
1258 |
|
|
11'h0FF: data = 8'b00000000;
|
1259 |
|
|
11'h100: data = 8'b00000000;
|
1260 |
|
|
11'h101: data = 8'b00000000;
|
1261 |
|
|
11'h102: data = 8'b00000000;
|
1262 |
|
|
11'h103: data = 8'b00000000;
|
1263 |
|
|
|
1264 |
|
|
11'h104: data = 8'b00000000; // '-'
|
1265 |
|
|
11'h105: data = 8'b00000000;
|
1266 |
|
|
11'h106: data = 8'b00000000;
|
1267 |
|
|
11'h107: data = 8'b00000000;
|
1268 |
|
|
11'h108: data = 8'b00000000;
|
1269 |
|
|
11'h109: data = 8'b00000000;
|
1270 |
|
|
11'h10A: data = 8'b01111100;
|
1271 |
|
|
11'h10B: data = 8'b00000000;
|
1272 |
|
|
11'h10C: data = 8'b00000000;
|
1273 |
|
|
11'h10D: data = 8'b00000000;
|
1274 |
|
|
11'h10E: data = 8'b00000000;
|
1275 |
|
|
11'h10F: data = 8'b00000000;
|
1276 |
|
|
11'h110: data = 8'b00000000; // B
|
1277 |
|
|
11'h111: data = 8'b00000000;
|
1278 |
|
|
11'h112: data = 8'b00000000;
|
1279 |
|
|
11'h113: data = 8'b00000000;
|
1280 |
|
|
11'h114: data = 8'b00000000;
|
1281 |
|
|
11'h115: data = 8'b00000000;
|
1282 |
|
|
11'h116: data = 8'b00000000;
|
1283 |
|
|
11'h117: data = 8'b00000000;
|
1284 |
|
|
|
1285 |
|
|
11'h118: data = 8'b00000000; // '.'
|
1286 |
|
|
11'h119: data = 8'b00000000;
|
1287 |
|
|
11'h11A: data = 8'b00000000;
|
1288 |
|
|
11'h11B: data = 8'b00000000;
|
1289 |
|
|
11'h11C: data = 8'b00000000;
|
1290 |
|
|
11'h11D: data = 8'b00000000;
|
1291 |
|
|
11'h11E: data = 8'b00000000;
|
1292 |
|
|
11'h11F: data = 8'b00000000;
|
1293 |
|
|
11'h120: data = 8'b00000000;
|
1294 |
|
|
11'h121: data = 8'b00000000;
|
1295 |
|
|
11'h122: data = 8'b00000000;
|
1296 |
|
|
11'h123: data = 8'b00000000;
|
1297 |
|
|
11'h124: data = 8'b00010000; // B
|
1298 |
|
|
11'h125: data = 8'b00000000;
|
1299 |
|
|
11'h126: data = 8'b00000000;
|
1300 |
|
|
11'h127: data = 8'b00000000;
|
1301 |
|
|
11'h128: data = 8'b00000000;
|
1302 |
|
|
11'h129: data = 8'b00000000;
|
1303 |
|
|
11'h12A: data = 8'b00000000;
|
1304 |
|
|
11'h12B: data = 8'b00000000;
|
1305 |
|
|
|
1306 |
|
|
11'h12C: data = 8'b00000000; // '/'
|
1307 |
|
|
11'h12D: data = 8'b00000010;
|
1308 |
|
|
11'h12E: data = 8'b00000100;
|
1309 |
|
|
11'h12F: data = 8'b00000100;
|
1310 |
|
|
11'h130: data = 8'b00001000;
|
1311 |
|
|
11'h131: data = 8'b00001000;
|
1312 |
|
|
11'h132: data = 8'b00010000;
|
1313 |
|
|
11'h133: data = 8'b00010000;
|
1314 |
|
|
11'h134: data = 8'b00100000;
|
1315 |
|
|
11'h135: data = 8'b00100000;
|
1316 |
|
|
11'h136: data = 8'b01000000;
|
1317 |
|
|
11'h137: data = 8'b01000000;
|
1318 |
|
|
11'h138: data = 8'b10000000; // B
|
1319 |
|
|
11'h139: data = 8'b00000000;
|
1320 |
|
|
11'h13A: data = 8'b00000000;
|
1321 |
|
|
11'h13B: data = 8'b00000000;
|
1322 |
|
|
11'h13C: data = 8'b00000000;
|
1323 |
|
|
11'h13D: data = 8'b00000000;
|
1324 |
|
|
11'h13E: data = 8'b00000000;
|
1325 |
|
|
11'h13F: data = 8'b00000000;
|
1326 |
|
|
|
1327 |
|
|
11'h140: data = 8'b01111100; // '0'
|
1328 |
|
|
11'h141: data = 8'b10000010;
|
1329 |
|
|
11'h142: data = 8'b10000110;
|
1330 |
|
|
11'h143: data = 8'b10001110;
|
1331 |
|
|
11'h144: data = 8'b10001010;
|
1332 |
|
|
11'h145: data = 8'b10011010;
|
1333 |
|
|
11'h146: data = 8'b10010010;
|
1334 |
|
|
11'h147: data = 8'b10110010;
|
1335 |
|
|
11'h148: data = 8'b10100010;
|
1336 |
|
|
11'h149: data = 8'b11100010;
|
1337 |
|
|
11'h14A: data = 8'b11000010;
|
1338 |
|
|
11'h14B: data = 8'b10000010;
|
1339 |
|
|
11'h14C: data = 8'b01111100; // B
|
1340 |
|
|
11'h14D: data = 8'b00000000;
|
1341 |
|
|
11'h14E: data = 8'b00000000;
|
1342 |
|
|
11'h14F: data = 8'b00000000;
|
1343 |
|
|
11'h150: data = 8'b00000000;
|
1344 |
|
|
11'h151: data = 8'b00000000;
|
1345 |
|
|
11'h152: data = 8'b00000000;
|
1346 |
|
|
11'h153: data = 8'b00000000;
|
1347 |
|
|
|
1348 |
|
|
11'h154: data = 8'b00010000; // '1'
|
1349 |
|
|
11'h155: data = 8'b00110000;
|
1350 |
|
|
11'h156: data = 8'b01010000;
|
1351 |
|
|
11'h157: data = 8'b00010000;
|
1352 |
|
|
11'h158: data = 8'b00010000;
|
1353 |
|
|
11'h159: data = 8'b00010000;
|
1354 |
|
|
11'h15A: data = 8'b00010000;
|
1355 |
|
|
11'h15B: data = 8'b00010000;
|
1356 |
|
|
11'h15C: data = 8'b00010000;
|
1357 |
|
|
11'h15D: data = 8'b00010000;
|
1358 |
|
|
11'h15E: data = 8'b00010000;
|
1359 |
|
|
11'h15F: data = 8'b00010000;
|
1360 |
|
|
11'h160: data = 8'b11111110; // B
|
1361 |
|
|
11'h161: data = 8'b00000000;
|
1362 |
|
|
11'h162: data = 8'b00000000;
|
1363 |
|
|
11'h163: data = 8'b00000000;
|
1364 |
|
|
11'h164: data = 8'b00000000;
|
1365 |
|
|
11'h165: data = 8'b00000000;
|
1366 |
|
|
11'h166: data = 8'b00000000;
|
1367 |
|
|
11'h167: data = 8'b00000000;
|
1368 |
|
|
|
1369 |
|
|
11'h168: data = 8'b01111100; // '2'
|
1370 |
|
|
11'h169: data = 8'b10000010;
|
1371 |
|
|
11'h16A: data = 8'b00000010;
|
1372 |
|
|
11'h16B: data = 8'b00000010;
|
1373 |
|
|
11'h16C: data = 8'b00000010;
|
1374 |
|
|
11'h16D: data = 8'b00000010;
|
1375 |
|
|
11'h16E: data = 8'b00000010;
|
1376 |
|
|
11'h16F: data = 8'b00000100;
|
1377 |
|
|
11'h170: data = 8'b00001000;
|
1378 |
|
|
11'h171: data = 8'b00010000;
|
1379 |
|
|
11'h172: data = 8'b00100000;
|
1380 |
|
|
11'h173: data = 8'b01000000;
|
1381 |
|
|
11'h174: data = 8'b11111110; // B
|
1382 |
|
|
11'h175: data = 8'b00000000;
|
1383 |
|
|
11'h176: data = 8'b00000000;
|
1384 |
|
|
11'h177: data = 8'b00000000;
|
1385 |
|
|
11'h178: data = 8'b00000000;
|
1386 |
|
|
11'h179: data = 8'b00000000;
|
1387 |
|
|
11'h17A: data = 8'b00000000;
|
1388 |
|
|
11'h17B: data = 8'b00000000;
|
1389 |
|
|
|
1390 |
|
|
11'h17C: data = 8'b01111100; // '3'
|
1391 |
|
|
11'h17D: data = 8'b10000010;
|
1392 |
|
|
11'h17E: data = 8'b00000010;
|
1393 |
|
|
11'h17F: data = 8'b00000010;
|
1394 |
|
|
11'h180: data = 8'b00000010;
|
1395 |
|
|
11'h181: data = 8'b00000010;
|
1396 |
|
|
11'h182: data = 8'b01111100;
|
1397 |
|
|
11'h183: data = 8'b00000010;
|
1398 |
|
|
11'h184: data = 8'b00000010;
|
1399 |
|
|
11'h185: data = 8'b00000010;
|
1400 |
|
|
11'h186: data = 8'b00000010;
|
1401 |
|
|
11'h187: data = 8'b10000010;
|
1402 |
|
|
11'h188: data = 8'b01111100; // B
|
1403 |
|
|
11'h189: data = 8'b00000000;
|
1404 |
|
|
11'h18A: data = 8'b00000000;
|
1405 |
|
|
11'h18B: data = 8'b00000000;
|
1406 |
|
|
11'h18C: data = 8'b00000000;
|
1407 |
|
|
11'h18D: data = 8'b00000000;
|
1408 |
|
|
11'h18E: data = 8'b00000000;
|
1409 |
|
|
11'h18F: data = 8'b00000000;
|
1410 |
|
|
|
1411 |
|
|
11'h190: data = 8'b10000010; // '4'
|
1412 |
|
|
11'h191: data = 8'b10000010;
|
1413 |
|
|
11'h192: data = 8'b10000010;
|
1414 |
|
|
11'h193: data = 8'b10000010;
|
1415 |
|
|
11'h194: data = 8'b10000010;
|
1416 |
|
|
11'h195: data = 8'b10000010;
|
1417 |
|
|
11'h196: data = 8'b11111110;
|
1418 |
|
|
11'h197: data = 8'b00000010;
|
1419 |
|
|
11'h198: data = 8'b00000010;
|
1420 |
|
|
11'h199: data = 8'b00000010;
|
1421 |
|
|
11'h19A: data = 8'b00000010;
|
1422 |
|
|
11'h19B: data = 8'b00000010;
|
1423 |
|
|
11'h19C: data = 8'b00000010; // B
|
1424 |
|
|
11'h19D: data = 8'b00000000;
|
1425 |
|
|
11'h19E: data = 8'b00000000;
|
1426 |
|
|
11'h19F: data = 8'b00000000;
|
1427 |
|
|
11'h1A0: data = 8'b00000000;
|
1428 |
|
|
11'h1A1: data = 8'b00000000;
|
1429 |
|
|
11'h1A2: data = 8'b00000000;
|
1430 |
|
|
11'h1A3: data = 8'b00000000;
|
1431 |
|
|
|
1432 |
|
|
11'h1A4: data = 8'b11111110; // '5'
|
1433 |
|
|
11'h1A5: data = 8'b10000000;
|
1434 |
|
|
11'h1A6: data = 8'b10000000;
|
1435 |
|
|
11'h1A7: data = 8'b10000000;
|
1436 |
|
|
11'h1A8: data = 8'b10000000;
|
1437 |
|
|
11'h1A9: data = 8'b10000000;
|
1438 |
|
|
11'h1AA: data = 8'b11111100;
|
1439 |
|
|
11'h1AB: data = 8'b00000010;
|
1440 |
|
|
11'h1AC: data = 8'b00000010;
|
1441 |
|
|
11'h1AD: data = 8'b00000010;
|
1442 |
|
|
11'h1AE: data = 8'b00000010;
|
1443 |
|
|
11'h1AF: data = 8'b10000010;
|
1444 |
|
|
11'h1B0: data = 8'b01111100; // B
|
1445 |
|
|
11'h1B1: data = 8'b00000000;
|
1446 |
|
|
11'h1B2: data = 8'b00000000;
|
1447 |
|
|
11'h1B3: data = 8'b00000000;
|
1448 |
|
|
11'h1B4: data = 8'b00000000;
|
1449 |
|
|
11'h1B5: data = 8'b00000000;
|
1450 |
|
|
11'h1B6: data = 8'b00000000;
|
1451 |
|
|
11'h1B7: data = 8'b00000000;
|
1452 |
|
|
|
1453 |
|
|
11'h1B8: data = 8'b01111100; // '6'
|
1454 |
|
|
11'h1B9: data = 8'b10000010;
|
1455 |
|
|
11'h1BA: data = 8'b10000000;
|
1456 |
|
|
11'h1BB: data = 8'b10000000;
|
1457 |
|
|
11'h1BC: data = 8'b10000000;
|
1458 |
|
|
11'h1BD: data = 8'b10000000;
|
1459 |
|
|
11'h1BE: data = 8'b01111100;
|
1460 |
|
|
11'h1BF: data = 8'b10000010;
|
1461 |
|
|
11'h1C0: data = 8'b10000010;
|
1462 |
|
|
11'h1C1: data = 8'b10000010;
|
1463 |
|
|
11'h1C2: data = 8'b10000010;
|
1464 |
|
|
11'h1C3: data = 8'b10000010;
|
1465 |
|
|
11'h1C4: data = 8'b01111110; // B
|
1466 |
|
|
11'h1C5: data = 8'b00000000;
|
1467 |
|
|
11'h1C6: data = 8'b00000000;
|
1468 |
|
|
11'h1C7: data = 8'b00000000;
|
1469 |
|
|
11'h1C8: data = 8'b00000000;
|
1470 |
|
|
11'h1C9: data = 8'b00000000;
|
1471 |
|
|
11'h1CA: data = 8'b00000000;
|
1472 |
|
|
11'h1CB: data = 8'b00000000;
|
1473 |
|
|
|
1474 |
|
|
11'h1CC: data = 8'b11111110; // '7'
|
1475 |
|
|
11'h1CD: data = 8'b00000110;
|
1476 |
|
|
11'h1CE: data = 8'b00000100;
|
1477 |
|
|
11'h1CF: data = 8'b00001000;
|
1478 |
|
|
11'h1D0: data = 8'b00001000;
|
1479 |
|
|
11'h1D1: data = 8'b00010000;
|
1480 |
|
|
11'h1D2: data = 8'b00010000;
|
1481 |
|
|
11'h1D3: data = 8'b00100000;
|
1482 |
|
|
11'h1D4: data = 8'b00100000;
|
1483 |
|
|
11'h1D5: data = 8'b01000000;
|
1484 |
|
|
11'h1D6: data = 8'b01000000;
|
1485 |
|
|
11'h1D7: data = 8'b10000000;
|
1486 |
|
|
11'h1D8: data = 8'b10000000; // B
|
1487 |
|
|
11'h1D9: data = 8'b00000000;
|
1488 |
|
|
11'h1DA: data = 8'b00000000;
|
1489 |
|
|
11'h1DB: data = 8'b00000000;
|
1490 |
|
|
11'h1DC: data = 8'b00000000;
|
1491 |
|
|
11'h1DD: data = 8'b00000000;
|
1492 |
|
|
11'h1DE: data = 8'b00000000;
|
1493 |
|
|
11'h1DF: data = 8'b00000000;
|
1494 |
|
|
|
1495 |
|
|
11'h1E0: data = 8'b01111100; // '8'
|
1496 |
|
|
11'h1E1: data = 8'b10000010;
|
1497 |
|
|
11'h1E2: data = 8'b10000010;
|
1498 |
|
|
11'h1E3: data = 8'b10000010;
|
1499 |
|
|
11'h1E4: data = 8'b10000010;
|
1500 |
|
|
11'h1E5: data = 8'b10000010;
|
1501 |
|
|
11'h1E6: data = 8'b01111100;
|
1502 |
|
|
11'h1E7: data = 8'b10000010;
|
1503 |
|
|
11'h1E8: data = 8'b10000010;
|
1504 |
|
|
11'h1E9: data = 8'b10000010;
|
1505 |
|
|
11'h1EA: data = 8'b10000010;
|
1506 |
|
|
11'h1EB: data = 8'b10000010;
|
1507 |
|
|
11'h1EC: data = 8'b01111100; // B
|
1508 |
|
|
11'h1ED: data = 8'b00000000;
|
1509 |
|
|
11'h1EE: data = 8'b00000000;
|
1510 |
|
|
11'h1EF: data = 8'b00000000;
|
1511 |
|
|
11'h1F0: data = 8'b00000000;
|
1512 |
|
|
11'h1F1: data = 8'b00000000;
|
1513 |
|
|
11'h1F2: data = 8'b00000000;
|
1514 |
|
|
11'h1F3: data = 8'b00000000;
|
1515 |
|
|
|
1516 |
|
|
11'h1F4: data = 8'b01111100; // '9'
|
1517 |
|
|
11'h1F5: data = 8'b10000010;
|
1518 |
|
|
11'h1F6: data = 8'b10000010;
|
1519 |
|
|
11'h1F7: data = 8'b10000010;
|
1520 |
|
|
11'h1F8: data = 8'b10000010;
|
1521 |
|
|
11'h1F9: data = 8'b10000010;
|
1522 |
|
|
11'h1FA: data = 8'b01111100;
|
1523 |
|
|
11'h1FB: data = 8'b00000010;
|
1524 |
|
|
11'h1FC: data = 8'b00000010;
|
1525 |
|
|
11'h1FD: data = 8'b00000010;
|
1526 |
|
|
11'h1FE: data = 8'b00000010;
|
1527 |
|
|
11'h1FF: data = 8'b10000010;
|
1528 |
|
|
11'h200: data = 8'b01111100; // B
|
1529 |
|
|
11'h201: data = 8'b00000000;
|
1530 |
|
|
11'h202: data = 8'b00000000;
|
1531 |
|
|
11'h203: data = 8'b00000000;
|
1532 |
|
|
11'h204: data = 8'b00000000;
|
1533 |
|
|
11'h205: data = 8'b00000000;
|
1534 |
|
|
11'h206: data = 8'b00000000;
|
1535 |
|
|
11'h207: data = 8'b00000000;
|
1536 |
|
|
|
1537 |
|
|
11'h208: data = 8'b00000000; // ':'
|
1538 |
|
|
11'h209: data = 8'b00000000;
|
1539 |
|
|
11'h20A: data = 8'b00000000;
|
1540 |
|
|
11'h20B: data = 8'b00000000;
|
1541 |
|
|
11'h20C: data = 8'b00010000;
|
1542 |
|
|
11'h20D: data = 8'b00000000;
|
1543 |
|
|
11'h20E: data = 8'b00000000;
|
1544 |
|
|
11'h20F: data = 8'b00000000;
|
1545 |
|
|
11'h210: data = 8'b00010000;
|
1546 |
|
|
11'h211: data = 8'b00000000;
|
1547 |
|
|
11'h212: data = 8'b00000000;
|
1548 |
|
|
11'h213: data = 8'b00000000;
|
1549 |
|
|
11'h214: data = 8'b00000000; // B
|
1550 |
|
|
11'h215: data = 8'b00000000;
|
1551 |
|
|
11'h216: data = 8'b00000000;
|
1552 |
|
|
11'h217: data = 8'b00000000;
|
1553 |
|
|
11'h218: data = 8'b00000000;
|
1554 |
|
|
11'h219: data = 8'b00000000;
|
1555 |
|
|
11'h21A: data = 8'b00000000;
|
1556 |
|
|
11'h21B: data = 8'b00000000;
|
1557 |
|
|
|
1558 |
|
|
11'h21C: data = 8'b00000000; // ';'
|
1559 |
|
|
11'h21D: data = 8'b00000000;
|
1560 |
|
|
11'h21E: data = 8'b00000000;
|
1561 |
|
|
11'h21F: data = 8'b00000000;
|
1562 |
|
|
11'h220: data = 8'b00000000;
|
1563 |
|
|
11'h221: data = 8'b00000000;
|
1564 |
|
|
11'h222: data = 8'b00000000;
|
1565 |
|
|
11'h223: data = 8'b00000000;
|
1566 |
|
|
11'h224: data = 8'b00000000;
|
1567 |
|
|
11'h225: data = 8'b00010000;
|
1568 |
|
|
11'h226: data = 8'b00000000;
|
1569 |
|
|
11'h227: data = 8'b00000000;
|
1570 |
|
|
11'h228: data = 8'b00010000; // B
|
1571 |
|
|
11'h229: data = 8'b00010000;
|
1572 |
|
|
11'h22A: data = 8'b00100000;
|
1573 |
|
|
11'h22B: data = 8'b00000000;
|
1574 |
|
|
11'h22C: data = 8'b00000000;
|
1575 |
|
|
11'h22D: data = 8'b00000000;
|
1576 |
|
|
11'h22E: data = 8'b00000000;
|
1577 |
|
|
11'h22F: data = 8'b00000000;
|
1578 |
|
|
|
1579 |
|
|
11'h230: data = 8'b00000010; // '<'
|
1580 |
|
|
11'h231: data = 8'b00000100;
|
1581 |
|
|
11'h232: data = 8'b00001000;
|
1582 |
|
|
11'h233: data = 8'b00010000;
|
1583 |
|
|
11'h234: data = 8'b00100000;
|
1584 |
|
|
11'h235: data = 8'b01000000;
|
1585 |
|
|
11'h236: data = 8'b10000000;
|
1586 |
|
|
11'h237: data = 8'b01000000;
|
1587 |
|
|
11'h238: data = 8'b00100000;
|
1588 |
|
|
11'h239: data = 8'b00010000;
|
1589 |
|
|
11'h23A: data = 8'b00001000;
|
1590 |
|
|
11'h23B: data = 8'b00000100;
|
1591 |
|
|
11'h23C: data = 8'b00000010; // B
|
1592 |
|
|
11'h23D: data = 8'b00000000;
|
1593 |
|
|
11'h23E: data = 8'b00000000;
|
1594 |
|
|
11'h23F: data = 8'b00000000;
|
1595 |
|
|
11'h240: data = 8'b00000000;
|
1596 |
|
|
11'h241: data = 8'b00000000;
|
1597 |
|
|
11'h242: data = 8'b00000000;
|
1598 |
|
|
11'h243: data = 8'b00000000;
|
1599 |
|
|
|
1600 |
|
|
11'h244: data = 8'b00000000; // '='
|
1601 |
|
|
11'h245: data = 8'b00000000;
|
1602 |
|
|
11'h246: data = 8'b00000000;
|
1603 |
|
|
11'h247: data = 8'b00000000;
|
1604 |
|
|
11'h248: data = 8'b00000000;
|
1605 |
|
|
11'h249: data = 8'b01111100;
|
1606 |
|
|
11'h24A: data = 8'b00000000;
|
1607 |
|
|
11'h24B: data = 8'b01111100;
|
1608 |
|
|
11'h24C: data = 8'b00000000;
|
1609 |
|
|
11'h24D: data = 8'b00000000;
|
1610 |
|
|
11'h24E: data = 8'b00000000;
|
1611 |
|
|
11'h24F: data = 8'b00000000;
|
1612 |
|
|
11'h250: data = 8'b00000000; // B
|
1613 |
|
|
11'h251: data = 8'b00000000;
|
1614 |
|
|
11'h252: data = 8'b00000000;
|
1615 |
|
|
11'h253: data = 8'b00000000;
|
1616 |
|
|
11'h254: data = 8'b00000000;
|
1617 |
|
|
11'h255: data = 8'b00000000;
|
1618 |
|
|
11'h256: data = 8'b00000000;
|
1619 |
|
|
11'h257: data = 8'b00000000;
|
1620 |
|
|
|
1621 |
|
|
11'h258: data = 8'b10000000; // '>'
|
1622 |
|
|
11'h259: data = 8'b01000000;
|
1623 |
|
|
11'h25A: data = 8'b00100000;
|
1624 |
|
|
11'h25B: data = 8'b00010000;
|
1625 |
|
|
11'h25C: data = 8'b00001000;
|
1626 |
|
|
11'h25D: data = 8'b00000100;
|
1627 |
|
|
11'h25E: data = 8'b00000010;
|
1628 |
|
|
11'h25F: data = 8'b00000100;
|
1629 |
|
|
11'h260: data = 8'b00001000;
|
1630 |
|
|
11'h261: data = 8'b00010000;
|
1631 |
|
|
11'h262: data = 8'b00100000;
|
1632 |
|
|
11'h263: data = 8'b01000000;
|
1633 |
|
|
11'h264: data = 8'b10000000; // B
|
1634 |
|
|
11'h265: data = 8'b00000000;
|
1635 |
|
|
11'h266: data = 8'b00000000;
|
1636 |
|
|
11'h267: data = 8'b00000000;
|
1637 |
|
|
11'h268: data = 8'b00000000;
|
1638 |
|
|
11'h269: data = 8'b00000000;
|
1639 |
|
|
11'h26A: data = 8'b00000000;
|
1640 |
|
|
11'h26B: data = 8'b00000000;
|
1641 |
|
|
|
1642 |
|
|
11'h26C: data = 8'b01111100; // '?'
|
1643 |
|
|
11'h26D: data = 8'b10000010;
|
1644 |
|
|
11'h26E: data = 8'b00000010;
|
1645 |
|
|
11'h26F: data = 8'b00000010;
|
1646 |
|
|
11'h270: data = 8'b00000010;
|
1647 |
|
|
11'h271: data = 8'b00000010;
|
1648 |
|
|
11'h272: data = 8'b00011100;
|
1649 |
|
|
11'h273: data = 8'b00010000;
|
1650 |
|
|
11'h274: data = 8'b00010000;
|
1651 |
|
|
11'h275: data = 8'b00010000;
|
1652 |
|
|
11'h276: data = 8'b00010000;
|
1653 |
|
|
11'h277: data = 8'b00000000;
|
1654 |
|
|
11'h278: data = 8'b00010000; // B
|
1655 |
|
|
11'h279: data = 8'b00000000;
|
1656 |
|
|
11'h27A: data = 8'b00000000;
|
1657 |
|
|
11'h27B: data = 8'b00000000;
|
1658 |
|
|
11'h27C: data = 8'b00000000;
|
1659 |
|
|
11'h27D: data = 8'b00000000;
|
1660 |
|
|
11'h27E: data = 8'b00000000;
|
1661 |
|
|
11'h27F: data = 8'b00000000;
|
1662 |
|
|
|
1663 |
|
|
11'h280: data = 8'b01111100; // '@'
|
1664 |
|
|
11'h281: data = 8'b10000010;
|
1665 |
|
|
11'h282: data = 8'b10000010;
|
1666 |
|
|
11'h283: data = 8'b10000010;
|
1667 |
|
|
11'h284: data = 8'b10011110;
|
1668 |
|
|
11'h285: data = 8'b10010010;
|
1669 |
|
|
11'h286: data = 8'b10010010;
|
1670 |
|
|
11'h287: data = 8'b10011110;
|
1671 |
|
|
11'h288: data = 8'b10000000;
|
1672 |
|
|
11'h289: data = 8'b10000000;
|
1673 |
|
|
11'h28A: data = 8'b10000000;
|
1674 |
|
|
11'h28B: data = 8'b10000000;
|
1675 |
|
|
11'h28C: data = 8'b01111110; // B
|
1676 |
|
|
11'h28D: data = 8'b00000000;
|
1677 |
|
|
11'h28E: data = 8'b00000000;
|
1678 |
|
|
11'h28F: data = 8'b00000000;
|
1679 |
|
|
11'h290: data = 8'b00000000;
|
1680 |
|
|
11'h291: data = 8'b00000000;
|
1681 |
|
|
11'h292: data = 8'b00000000;
|
1682 |
|
|
11'h293: data = 8'b00000000;
|
1683 |
|
|
|
1684 |
|
|
11'h294: data = 8'b01111100; // 'A'
|
1685 |
|
|
11'h295: data = 8'b10000010;
|
1686 |
|
|
11'h296: data = 8'b10000010;
|
1687 |
|
|
11'h297: data = 8'b10000010;
|
1688 |
|
|
11'h298: data = 8'b10000010;
|
1689 |
|
|
11'h299: data = 8'b10000010;
|
1690 |
|
|
11'h29A: data = 8'b11111110;
|
1691 |
|
|
11'h29B: data = 8'b10000010;
|
1692 |
|
|
11'h29C: data = 8'b10000010;
|
1693 |
|
|
11'h29D: data = 8'b10000010;
|
1694 |
|
|
11'h29E: data = 8'b10000010;
|
1695 |
|
|
11'h29F: data = 8'b10000010;
|
1696 |
|
|
11'h2A0: data = 8'b10000010; // B
|
1697 |
|
|
11'h2A1: data = 8'b00000000;
|
1698 |
|
|
11'h2A2: data = 8'b00000000;
|
1699 |
|
|
11'h2A3: data = 8'b00000000;
|
1700 |
|
|
11'h2A4: data = 8'b00000000;
|
1701 |
|
|
11'h2A5: data = 8'b00000000;
|
1702 |
|
|
11'h2A6: data = 8'b00000000;
|
1703 |
|
|
11'h2A7: data = 8'b00000000;
|
1704 |
|
|
|
1705 |
|
|
11'h2A8: data = 8'b11111100; // 'B'
|
1706 |
|
|
11'h2A9: data = 8'b10000010;
|
1707 |
|
|
11'h2AA: data = 8'b10000010;
|
1708 |
|
|
11'h2AB: data = 8'b10000010;
|
1709 |
|
|
11'h2AC: data = 8'b10000010;
|
1710 |
|
|
11'h2AD: data = 8'b10000010;
|
1711 |
|
|
11'h2AE: data = 8'b11111100;
|
1712 |
|
|
11'h2AF: data = 8'b10000010;
|
1713 |
|
|
11'h2B0: data = 8'b10000010;
|
1714 |
|
|
11'h2B1: data = 8'b10000010;
|
1715 |
|
|
11'h2B2: data = 8'b10000010;
|
1716 |
|
|
11'h2B3: data = 8'b10000010;
|
1717 |
|
|
11'h2B4: data = 8'b11111100; // B
|
1718 |
|
|
11'h2B5: data = 8'b00000000;
|
1719 |
|
|
11'h2B6: data = 8'b00000000;
|
1720 |
|
|
11'h2B7: data = 8'b00000000;
|
1721 |
|
|
11'h2B8: data = 8'b00000000;
|
1722 |
|
|
11'h2B9: data = 8'b00000000;
|
1723 |
|
|
11'h2BA: data = 8'b00000000;
|
1724 |
|
|
11'h2BB: data = 8'b00000000;
|
1725 |
|
|
|
1726 |
|
|
11'h2BC: data = 8'b01111100; // 'C'
|
1727 |
|
|
11'h2BD: data = 8'b10000010;
|
1728 |
|
|
11'h2BE: data = 8'b10000000;
|
1729 |
|
|
11'h2BF: data = 8'b10000000;
|
1730 |
|
|
11'h2C0: data = 8'b10000000;
|
1731 |
|
|
11'h2C1: data = 8'b10000000;
|
1732 |
|
|
11'h2C2: data = 8'b10000000;
|
1733 |
|
|
11'h2C3: data = 8'b10000000;
|
1734 |
|
|
11'h2C4: data = 8'b10000000;
|
1735 |
|
|
11'h2C5: data = 8'b10000000;
|
1736 |
|
|
11'h2C6: data = 8'b10000000;
|
1737 |
|
|
11'h2C7: data = 8'b10000010;
|
1738 |
|
|
11'h2C8: data = 8'b01111100; // B
|
1739 |
|
|
11'h2C9: data = 8'b00000000;
|
1740 |
|
|
11'h2CA: data = 8'b00000000;
|
1741 |
|
|
11'h2CB: data = 8'b00000000;
|
1742 |
|
|
11'h2CC: data = 8'b00000000;
|
1743 |
|
|
11'h2CD: data = 8'b00000000;
|
1744 |
|
|
11'h2CE: data = 8'b00000000;
|
1745 |
|
|
11'h2CF: data = 8'b00000000;
|
1746 |
|
|
|
1747 |
|
|
11'h2D0: data = 8'b11111100; // 'D'
|
1748 |
|
|
11'h2D1: data = 8'b10000010;
|
1749 |
|
|
11'h2D2: data = 8'b10000010;
|
1750 |
|
|
11'h2D3: data = 8'b10000010;
|
1751 |
|
|
11'h2D4: data = 8'b10000010;
|
1752 |
|
|
11'h2D5: data = 8'b10000010;
|
1753 |
|
|
11'h2D6: data = 8'b10000010;
|
1754 |
|
|
11'h2D7: data = 8'b10000010;
|
1755 |
|
|
11'h2D8: data = 8'b10000010;
|
1756 |
|
|
11'h2D9: data = 8'b10000010;
|
1757 |
|
|
11'h2DA: data = 8'b10000010;
|
1758 |
|
|
11'h2DB: data = 8'b10000010;
|
1759 |
|
|
11'h2DC: data = 8'b11111100; // B
|
1760 |
|
|
11'h2DD: data = 8'b00000000;
|
1761 |
|
|
11'h2DE: data = 8'b00000000;
|
1762 |
|
|
11'h2DF: data = 8'b00000000;
|
1763 |
|
|
11'h2E0: data = 8'b00000000;
|
1764 |
|
|
11'h2E1: data = 8'b00000000;
|
1765 |
|
|
11'h2E2: data = 8'b00000000;
|
1766 |
|
|
11'h2E3: data = 8'b00000000;
|
1767 |
|
|
|
1768 |
|
|
11'h2E4: data = 8'b11111110; // 'E'
|
1769 |
|
|
11'h2E5: data = 8'b10000000;
|
1770 |
|
|
11'h2E6: data = 8'b10000000;
|
1771 |
|
|
11'h2E7: data = 8'b10000000;
|
1772 |
|
|
11'h2E8: data = 8'b10000000;
|
1773 |
|
|
11'h2E9: data = 8'b10000000;
|
1774 |
|
|
11'h2EA: data = 8'b11111000;
|
1775 |
|
|
11'h2EB: data = 8'b10000000;
|
1776 |
|
|
11'h2EC: data = 8'b10000000;
|
1777 |
|
|
11'h2ED: data = 8'b10000000;
|
1778 |
|
|
11'h2EE: data = 8'b10000000;
|
1779 |
|
|
11'h2EF: data = 8'b10000000;
|
1780 |
|
|
11'h2F0: data = 8'b11111110; // B
|
1781 |
|
|
11'h2F1: data = 8'b00000000;
|
1782 |
|
|
11'h2F2: data = 8'b00000000;
|
1783 |
|
|
11'h2F3: data = 8'b00000000;
|
1784 |
|
|
11'h2F4: data = 8'b00000000;
|
1785 |
|
|
11'h2F5: data = 8'b00000000;
|
1786 |
|
|
11'h2F6: data = 8'b00000000;
|
1787 |
|
|
11'h2F7: data = 8'b00000000;
|
1788 |
|
|
|
1789 |
|
|
11'h2F8: data = 8'b11111110; // 'F'
|
1790 |
|
|
11'h2F9: data = 8'b10000000;
|
1791 |
|
|
11'h2FA: data = 8'b10000000;
|
1792 |
|
|
11'h2FB: data = 8'b10000000;
|
1793 |
|
|
11'h2FC: data = 8'b10000000;
|
1794 |
|
|
11'h2FD: data = 8'b10000000;
|
1795 |
|
|
11'h2FE: data = 8'b11111000;
|
1796 |
|
|
11'h2FF: data = 8'b10000000;
|
1797 |
|
|
11'h300: data = 8'b10000000;
|
1798 |
|
|
11'h301: data = 8'b10000000;
|
1799 |
|
|
11'h302: data = 8'b10000000;
|
1800 |
|
|
11'h303: data = 8'b10000000;
|
1801 |
|
|
11'h304: data = 8'b10000000; // B
|
1802 |
|
|
11'h305: data = 8'b00000000;
|
1803 |
|
|
11'h306: data = 8'b00000000;
|
1804 |
|
|
11'h307: data = 8'b00000000;
|
1805 |
|
|
11'h308: data = 8'b00000000;
|
1806 |
|
|
11'h309: data = 8'b00000000;
|
1807 |
|
|
11'h30A: data = 8'b00000000;
|
1808 |
|
|
11'h30B: data = 8'b00000000;
|
1809 |
|
|
|
1810 |
|
|
11'h30C: data = 8'b01111100; // 'G'
|
1811 |
|
|
11'h30D: data = 8'b10000010;
|
1812 |
|
|
11'h30E: data = 8'b10000000;
|
1813 |
|
|
11'h30F: data = 8'b10000000;
|
1814 |
|
|
11'h310: data = 8'b10000000;
|
1815 |
|
|
11'h311: data = 8'b10000000;
|
1816 |
|
|
11'h312: data = 8'b10011100;
|
1817 |
|
|
11'h313: data = 8'b10000010;
|
1818 |
|
|
11'h314: data = 8'b10000010;
|
1819 |
|
|
11'h315: data = 8'b10000010;
|
1820 |
|
|
11'h316: data = 8'b10000010;
|
1821 |
|
|
11'h317: data = 8'b10000010;
|
1822 |
|
|
11'h318: data = 8'b01111100; // B
|
1823 |
|
|
11'h319: data = 8'b00000000;
|
1824 |
|
|
11'h31A: data = 8'b00000000;
|
1825 |
|
|
11'h31B: data = 8'b00000000;
|
1826 |
|
|
11'h31C: data = 8'b00000000;
|
1827 |
|
|
11'h31D: data = 8'b00000000;
|
1828 |
|
|
11'h31E: data = 8'b00000000;
|
1829 |
|
|
11'h31F: data = 8'b00000000;
|
1830 |
|
|
|
1831 |
|
|
11'h320: data = 8'b10000010; // 'H'
|
1832 |
|
|
11'h321: data = 8'b10000010;
|
1833 |
|
|
11'h322: data = 8'b10000010;
|
1834 |
|
|
11'h323: data = 8'b10000010;
|
1835 |
|
|
11'h324: data = 8'b10000010;
|
1836 |
|
|
11'h325: data = 8'b10000010;
|
1837 |
|
|
11'h326: data = 8'b11111110;
|
1838 |
|
|
11'h327: data = 8'b10000010;
|
1839 |
|
|
11'h328: data = 8'b10000010;
|
1840 |
|
|
11'h329: data = 8'b10000010;
|
1841 |
|
|
11'h32A: data = 8'b10000010;
|
1842 |
|
|
11'h32B: data = 8'b10000010;
|
1843 |
|
|
11'h32C: data = 8'b10000010; // B
|
1844 |
|
|
11'h32D: data = 8'b00000000;
|
1845 |
|
|
11'h32E: data = 8'b00000000;
|
1846 |
|
|
11'h32F: data = 8'b00000000;
|
1847 |
|
|
11'h330: data = 8'b00000000;
|
1848 |
|
|
11'h331: data = 8'b00000000;
|
1849 |
|
|
11'h332: data = 8'b00000000;
|
1850 |
|
|
11'h333: data = 8'b00000000;
|
1851 |
|
|
|
1852 |
|
|
11'h334: data = 8'b11111110; // 'I'
|
1853 |
|
|
11'h335: data = 8'b00010000;
|
1854 |
|
|
11'h336: data = 8'b00010000;
|
1855 |
|
|
11'h337: data = 8'b00010000;
|
1856 |
|
|
11'h338: data = 8'b00010000;
|
1857 |
|
|
11'h339: data = 8'b00010000;
|
1858 |
|
|
11'h33A: data = 8'b00010000;
|
1859 |
|
|
11'h33B: data = 8'b00010000;
|
1860 |
|
|
11'h33C: data = 8'b00010000;
|
1861 |
|
|
11'h33D: data = 8'b00010000;
|
1862 |
|
|
11'h33E: data = 8'b00010000;
|
1863 |
|
|
11'h33F: data = 8'b00010000;
|
1864 |
|
|
11'h340: data = 8'b11111110; // B
|
1865 |
|
|
11'h341: data = 8'b00000000;
|
1866 |
|
|
11'h342: data = 8'b00000000;
|
1867 |
|
|
11'h343: data = 8'b00000000;
|
1868 |
|
|
11'h344: data = 8'b00000000;
|
1869 |
|
|
11'h345: data = 8'b00000000;
|
1870 |
|
|
11'h346: data = 8'b00000000;
|
1871 |
|
|
11'h347: data = 8'b00000000;
|
1872 |
|
|
|
1873 |
|
|
11'h348: data = 8'b00000010; // 'J'
|
1874 |
|
|
11'h349: data = 8'b00000010;
|
1875 |
|
|
11'h34A: data = 8'b00000010;
|
1876 |
|
|
11'h34B: data = 8'b00000010;
|
1877 |
|
|
11'h34C: data = 8'b00000010;
|
1878 |
|
|
11'h34D: data = 8'b00000010;
|
1879 |
|
|
11'h34E: data = 8'b00000010;
|
1880 |
|
|
11'h34F: data = 8'b00000010;
|
1881 |
|
|
11'h350: data = 8'b00000010;
|
1882 |
|
|
11'h351: data = 8'b00000010;
|
1883 |
|
|
11'h352: data = 8'b00000010;
|
1884 |
|
|
11'h353: data = 8'b10000010;
|
1885 |
|
|
11'h354: data = 8'b01111100; // B
|
1886 |
|
|
11'h355: data = 8'b00000000;
|
1887 |
|
|
11'h356: data = 8'b00000000;
|
1888 |
|
|
11'h357: data = 8'b00000000;
|
1889 |
|
|
11'h358: data = 8'b00000000;
|
1890 |
|
|
11'h359: data = 8'b00000000;
|
1891 |
|
|
11'h35A: data = 8'b00000000;
|
1892 |
|
|
11'h35B: data = 8'b00000000;
|
1893 |
|
|
|
1894 |
|
|
11'h35C: data = 8'b10000010; // 'K'
|
1895 |
|
|
11'h35D: data = 8'b10000100;
|
1896 |
|
|
11'h35E: data = 8'b10001000;
|
1897 |
|
|
11'h35F: data = 8'b10010000;
|
1898 |
|
|
11'h360: data = 8'b10100000;
|
1899 |
|
|
11'h361: data = 8'b11000000;
|
1900 |
|
|
11'h362: data = 8'b10000000;
|
1901 |
|
|
11'h363: data = 8'b11000000;
|
1902 |
|
|
11'h364: data = 8'b10100000;
|
1903 |
|
|
11'h365: data = 8'b10010000;
|
1904 |
|
|
11'h366: data = 8'b10001000;
|
1905 |
|
|
11'h367: data = 8'b10000100;
|
1906 |
|
|
11'h368: data = 8'b10000010; // B
|
1907 |
|
|
11'h369: data = 8'b00000000;
|
1908 |
|
|
11'h36A: data = 8'b00000000;
|
1909 |
|
|
11'h36B: data = 8'b00000000;
|
1910 |
|
|
11'h36C: data = 8'b00000000;
|
1911 |
|
|
11'h36D: data = 8'b00000000;
|
1912 |
|
|
11'h36E: data = 8'b00000000;
|
1913 |
|
|
11'h36F: data = 8'b00000000;
|
1914 |
|
|
|
1915 |
|
|
11'h370: data = 8'b10000000; // 'L'
|
1916 |
|
|
11'h371: data = 8'b10000000;
|
1917 |
|
|
11'h372: data = 8'b10000000;
|
1918 |
|
|
11'h373: data = 8'b10000000;
|
1919 |
|
|
11'h374: data = 8'b10000000;
|
1920 |
|
|
11'h375: data = 8'b10000000;
|
1921 |
|
|
11'h376: data = 8'b10000000;
|
1922 |
|
|
11'h377: data = 8'b10000000;
|
1923 |
|
|
11'h378: data = 8'b10000000;
|
1924 |
|
|
11'h379: data = 8'b10000000;
|
1925 |
|
|
11'h37A: data = 8'b10000000;
|
1926 |
|
|
11'h37B: data = 8'b10000000;
|
1927 |
|
|
11'h37C: data = 8'b11111110; // B
|
1928 |
|
|
11'h37D: data = 8'b00000000;
|
1929 |
|
|
11'h37E: data = 8'b00000000;
|
1930 |
|
|
11'h37F: data = 8'b00000000;
|
1931 |
|
|
11'h380: data = 8'b00000000;
|
1932 |
|
|
11'h381: data = 8'b00000000;
|
1933 |
|
|
11'h382: data = 8'b00000000;
|
1934 |
|
|
11'h383: data = 8'b00000000;
|
1935 |
|
|
|
1936 |
|
|
11'h384: data = 8'b10000010; // 'M'
|
1937 |
|
|
11'h385: data = 8'b11000110;
|
1938 |
|
|
11'h386: data = 8'b10101010;
|
1939 |
|
|
11'h387: data = 8'b10010010;
|
1940 |
|
|
11'h388: data = 8'b10000010;
|
1941 |
|
|
11'h389: data = 8'b10000010;
|
1942 |
|
|
11'h38A: data = 8'b10000010;
|
1943 |
|
|
11'h38B: data = 8'b10000010;
|
1944 |
|
|
11'h38C: data = 8'b10000010;
|
1945 |
|
|
11'h38D: data = 8'b10000010;
|
1946 |
|
|
11'h38E: data = 8'b10000010;
|
1947 |
|
|
11'h38F: data = 8'b10000010;
|
1948 |
|
|
11'h390: data = 8'b10000010; // B
|
1949 |
|
|
11'h391: data = 8'b00000000;
|
1950 |
|
|
11'h392: data = 8'b00000000;
|
1951 |
|
|
11'h393: data = 8'b00000000;
|
1952 |
|
|
11'h394: data = 8'b00000000;
|
1953 |
|
|
11'h395: data = 8'b00000000;
|
1954 |
|
|
11'h396: data = 8'b00000000;
|
1955 |
|
|
11'h397: data = 8'b00000000;
|
1956 |
|
|
|
1957 |
|
|
11'h398: data = 8'b10000010; // 'N'
|
1958 |
|
|
11'h399: data = 8'b11000010;
|
1959 |
|
|
11'h39A: data = 8'b10100010;
|
1960 |
|
|
11'h39B: data = 8'b10010010;
|
1961 |
|
|
11'h39C: data = 8'b10001010;
|
1962 |
|
|
11'h39D: data = 8'b10000110;
|
1963 |
|
|
11'h39E: data = 8'b10000010;
|
1964 |
|
|
11'h39F: data = 8'b10000010;
|
1965 |
|
|
11'h3A0: data = 8'b10000010;
|
1966 |
|
|
11'h3A1: data = 8'b10000010;
|
1967 |
|
|
11'h3A2: data = 8'b10000010;
|
1968 |
|
|
11'h3A3: data = 8'b10000010;
|
1969 |
|
|
11'h3A4: data = 8'b10000010; // B
|
1970 |
|
|
11'h3A5: data = 8'b00000000;
|
1971 |
|
|
11'h3A6: data = 8'b00000000;
|
1972 |
|
|
11'h3A7: data = 8'b00000000;
|
1973 |
|
|
11'h3A8: data = 8'b00000000;
|
1974 |
|
|
11'h3A9: data = 8'b00000000;
|
1975 |
|
|
11'h3AA: data = 8'b00000000;
|
1976 |
|
|
11'h3AB: data = 8'b00000000;
|
1977 |
|
|
|
1978 |
|
|
11'h3AC: data = 8'b01111100; // 'O'
|
1979 |
|
|
11'h3AD: data = 8'b10000010;
|
1980 |
|
|
11'h3AE: data = 8'b10000010;
|
1981 |
|
|
11'h3AF: data = 8'b10000010;
|
1982 |
|
|
11'h3B0: data = 8'b10000010;
|
1983 |
|
|
11'h3B1: data = 8'b10000010;
|
1984 |
|
|
11'h3B2: data = 8'b10000010;
|
1985 |
|
|
11'h3B3: data = 8'b10000010;
|
1986 |
|
|
11'h3B4: data = 8'b10000010;
|
1987 |
|
|
11'h3B5: data = 8'b10000010;
|
1988 |
|
|
11'h3B6: data = 8'b10000010;
|
1989 |
|
|
11'h3B7: data = 8'b10000010;
|
1990 |
|
|
11'h3B8: data = 8'b01111100; // B
|
1991 |
|
|
11'h3B9: data = 8'b00000000;
|
1992 |
|
|
11'h3BA: data = 8'b00000000;
|
1993 |
|
|
11'h3BB: data = 8'b00000000;
|
1994 |
|
|
11'h3BC: data = 8'b00000000;
|
1995 |
|
|
11'h3BD: data = 8'b00000000;
|
1996 |
|
|
11'h3BE: data = 8'b00000000;
|
1997 |
|
|
11'h3BF: data = 8'b00000000;
|
1998 |
|
|
|
1999 |
|
|
11'h3C0: data = 8'b11111100; // 'P'
|
2000 |
|
|
11'h3C1: data = 8'b10000010;
|
2001 |
|
|
11'h3C2: data = 8'b10000010;
|
2002 |
|
|
11'h3C3: data = 8'b10000010;
|
2003 |
|
|
11'h3C4: data = 8'b10000010;
|
2004 |
|
|
11'h3C5: data = 8'b10000010;
|
2005 |
|
|
11'h3C6: data = 8'b11111100;
|
2006 |
|
|
11'h3C7: data = 8'b10000000;
|
2007 |
|
|
11'h3C8: data = 8'b10000000;
|
2008 |
|
|
11'h3C9: data = 8'b10000000;
|
2009 |
|
|
11'h3CA: data = 8'b10000000;
|
2010 |
|
|
11'h3CB: data = 8'b10000000;
|
2011 |
|
|
11'h3CC: data = 8'b10000000; // B
|
2012 |
|
|
11'h3CD: data = 8'b00000000;
|
2013 |
|
|
11'h3CE: data = 8'b00000000;
|
2014 |
|
|
11'h3CF: data = 8'b00000000;
|
2015 |
|
|
11'h3D0: data = 8'b00000000;
|
2016 |
|
|
11'h3D1: data = 8'b00000000;
|
2017 |
|
|
11'h3D2: data = 8'b00000000;
|
2018 |
|
|
11'h3D3: data = 8'b00000000;
|
2019 |
|
|
|
2020 |
|
|
11'h3D4: data = 8'b01111100; // 'Q'
|
2021 |
|
|
11'h3D5: data = 8'b10000010;
|
2022 |
|
|
11'h3D6: data = 8'b10000010;
|
2023 |
|
|
11'h3D7: data = 8'b10000010;
|
2024 |
|
|
11'h3D8: data = 8'b10000010;
|
2025 |
|
|
11'h3D9: data = 8'b10000010;
|
2026 |
|
|
11'h3DA: data = 8'b10000010;
|
2027 |
|
|
11'h3DB: data = 8'b10000010;
|
2028 |
|
|
11'h3DC: data = 8'b10000010;
|
2029 |
|
|
11'h3DD: data = 8'b10000010;
|
2030 |
|
|
11'h3DE: data = 8'b10001010;
|
2031 |
|
|
11'h3DF: data = 8'b10000110;
|
2032 |
|
|
11'h3E0: data = 8'b01111110; // B
|
2033 |
|
|
11'h3E1: data = 8'b00000000;
|
2034 |
|
|
11'h3E2: data = 8'b00000000;
|
2035 |
|
|
11'h3E3: data = 8'b00000000;
|
2036 |
|
|
11'h3E4: data = 8'b00000000;
|
2037 |
|
|
11'h3E5: data = 8'b00000000;
|
2038 |
|
|
11'h3E6: data = 8'b00000000;
|
2039 |
|
|
11'h3E7: data = 8'b00000000;
|
2040 |
|
|
|
2041 |
|
|
11'h3E8: data = 8'b11111100; // 'R'
|
2042 |
|
|
11'h3E9: data = 8'b10000010;
|
2043 |
|
|
11'h3EA: data = 8'b10000010;
|
2044 |
|
|
11'h3EB: data = 8'b10000010;
|
2045 |
|
|
11'h3EC: data = 8'b10000010;
|
2046 |
|
|
11'h3ED: data = 8'b10000010;
|
2047 |
|
|
11'h3EE: data = 8'b11111100;
|
2048 |
|
|
11'h3EF: data = 8'b11000000;
|
2049 |
|
|
11'h3F0: data = 8'b10100000;
|
2050 |
|
|
11'h3F1: data = 8'b10010000;
|
2051 |
|
|
11'h3F2: data = 8'b10001000;
|
2052 |
|
|
11'h3F3: data = 8'b10000100;
|
2053 |
|
|
11'h3F4: data = 8'b10000010; // B
|
2054 |
|
|
11'h3F5: data = 8'b00000000;
|
2055 |
|
|
11'h3F6: data = 8'b00000000;
|
2056 |
|
|
11'h3F7: data = 8'b00000000;
|
2057 |
|
|
11'h3F8: data = 8'b00000000;
|
2058 |
|
|
11'h3F9: data = 8'b00000000;
|
2059 |
|
|
11'h3FA: data = 8'b00000000;
|
2060 |
|
|
11'h3FB: data = 8'b00000000;
|
2061 |
|
|
|
2062 |
|
|
11'h3FC: data = 8'b01111100; // 'S'
|
2063 |
|
|
11'h3FD: data = 8'b10000010;
|
2064 |
|
|
11'h3FE: data = 8'b10000000;
|
2065 |
|
|
11'h3FF: data = 8'b10000000;
|
2066 |
|
|
11'h400: data = 8'b10000000;
|
2067 |
|
|
11'h401: data = 8'b10000000;
|
2068 |
|
|
11'h402: data = 8'b01111100;
|
2069 |
|
|
11'h403: data = 8'b00000010;
|
2070 |
|
|
11'h404: data = 8'b00000010;
|
2071 |
|
|
11'h405: data = 8'b00000010;
|
2072 |
|
|
11'h406: data = 8'b00000010;
|
2073 |
|
|
11'h407: data = 8'b10000010;
|
2074 |
|
|
11'h408: data = 8'b01111100; // B
|
2075 |
|
|
11'h409: data = 8'b00000000;
|
2076 |
|
|
11'h40A: data = 8'b00000000;
|
2077 |
|
|
11'h40B: data = 8'b00000000;
|
2078 |
|
|
11'h40C: data = 8'b00000000;
|
2079 |
|
|
11'h40D: data = 8'b00000000;
|
2080 |
|
|
11'h40E: data = 8'b00000000;
|
2081 |
|
|
11'h40F: data = 8'b00000000;
|
2082 |
|
|
|
2083 |
|
|
11'h410: data = 8'b11111110; // 'T'
|
2084 |
|
|
11'h411: data = 8'b00010000;
|
2085 |
|
|
11'h412: data = 8'b00010000;
|
2086 |
|
|
11'h413: data = 8'b00010000;
|
2087 |
|
|
11'h414: data = 8'b00010000;
|
2088 |
|
|
11'h415: data = 8'b00010000;
|
2089 |
|
|
11'h416: data = 8'b00010000;
|
2090 |
|
|
11'h417: data = 8'b00010000;
|
2091 |
|
|
11'h418: data = 8'b00010000;
|
2092 |
|
|
11'h419: data = 8'b00010000;
|
2093 |
|
|
11'h41A: data = 8'b00010000;
|
2094 |
|
|
11'h41B: data = 8'b00010000;
|
2095 |
|
|
11'h41C: data = 8'b00010000; // B
|
2096 |
|
|
11'h41D: data = 8'b00000000;
|
2097 |
|
|
11'h41E: data = 8'b00000000;
|
2098 |
|
|
11'h41F: data = 8'b00000000;
|
2099 |
|
|
11'h420: data = 8'b00000000;
|
2100 |
|
|
11'h421: data = 8'b00000000;
|
2101 |
|
|
11'h422: data = 8'b00000000;
|
2102 |
|
|
11'h423: data = 8'b00000000;
|
2103 |
|
|
|
2104 |
|
|
11'h424: data = 8'b10000010; // 'U'
|
2105 |
|
|
11'h425: data = 8'b10000010;
|
2106 |
|
|
11'h426: data = 8'b10000010;
|
2107 |
|
|
11'h427: data = 8'b10000010;
|
2108 |
|
|
11'h428: data = 8'b10000010;
|
2109 |
|
|
11'h429: data = 8'b10000010;
|
2110 |
|
|
11'h42A: data = 8'b10000010;
|
2111 |
|
|
11'h42B: data = 8'b10000010;
|
2112 |
|
|
11'h42C: data = 8'b10000010;
|
2113 |
|
|
11'h42D: data = 8'b10000010;
|
2114 |
|
|
11'h42E: data = 8'b10000010;
|
2115 |
|
|
11'h42F: data = 8'b10000010;
|
2116 |
|
|
11'h430: data = 8'b01111100; // B
|
2117 |
|
|
11'h431: data = 8'b00000000;
|
2118 |
|
|
11'h432: data = 8'b00000000;
|
2119 |
|
|
11'h433: data = 8'b00000000;
|
2120 |
|
|
11'h434: data = 8'b00000000;
|
2121 |
|
|
11'h435: data = 8'b00000000;
|
2122 |
|
|
11'h436: data = 8'b00000000;
|
2123 |
|
|
11'h437: data = 8'b00000000;
|
2124 |
|
|
|
2125 |
|
|
11'h438: data = 8'b10000010; // 'V'
|
2126 |
|
|
11'h439: data = 8'b10000010;
|
2127 |
|
|
11'h43A: data = 8'b10000010;
|
2128 |
|
|
11'h43B: data = 8'b10000010;
|
2129 |
|
|
11'h43C: data = 8'b10000010;
|
2130 |
|
|
11'h43D: data = 8'b10000010;
|
2131 |
|
|
11'h43E: data = 8'b10000010;
|
2132 |
|
|
11'h43F: data = 8'b10000010;
|
2133 |
|
|
11'h440: data = 8'b10000010;
|
2134 |
|
|
11'h441: data = 8'b10000010;
|
2135 |
|
|
11'h442: data = 8'b01000100;
|
2136 |
|
|
11'h443: data = 8'b00101000;
|
2137 |
|
|
11'h444: data = 8'b00010000; // B
|
2138 |
|
|
11'h445: data = 8'b00000000;
|
2139 |
|
|
11'h446: data = 8'b00000000;
|
2140 |
|
|
11'h447: data = 8'b00000000;
|
2141 |
|
|
11'h448: data = 8'b00000000;
|
2142 |
|
|
11'h449: data = 8'b00000000;
|
2143 |
|
|
11'h44A: data = 8'b00000000;
|
2144 |
|
|
11'h44B: data = 8'b00000000;
|
2145 |
|
|
|
2146 |
|
|
11'h44C: data = 8'b10000010; // 'W'
|
2147 |
|
|
11'h44D: data = 8'b10000010;
|
2148 |
|
|
11'h44E: data = 8'b10000010;
|
2149 |
|
|
11'h44F: data = 8'b10000010;
|
2150 |
|
|
11'h450: data = 8'b10000010;
|
2151 |
|
|
11'h451: data = 8'b10000010;
|
2152 |
|
|
11'h452: data = 8'b10000010;
|
2153 |
|
|
11'h453: data = 8'b10000010;
|
2154 |
|
|
11'h454: data = 8'b10000010;
|
2155 |
|
|
11'h455: data = 8'b10010010;
|
2156 |
|
|
11'h456: data = 8'b10101010;
|
2157 |
|
|
11'h457: data = 8'b11000110;
|
2158 |
|
|
11'h458: data = 8'b10000010; // B
|
2159 |
|
|
11'h459: data = 8'b00000000;
|
2160 |
|
|
11'h45A: data = 8'b00000000;
|
2161 |
|
|
11'h45B: data = 8'b00000000;
|
2162 |
|
|
11'h45C: data = 8'b00000000;
|
2163 |
|
|
11'h45D: data = 8'b00000000;
|
2164 |
|
|
11'h45E: data = 8'b00000000;
|
2165 |
|
|
11'h45F: data = 8'b00000000;
|
2166 |
|
|
|
2167 |
|
|
11'h460: data = 8'b10000010; // 'X'
|
2168 |
|
|
11'h461: data = 8'b10000010;
|
2169 |
|
|
11'h462: data = 8'b10000010;
|
2170 |
|
|
11'h463: data = 8'b10000010;
|
2171 |
|
|
11'h464: data = 8'b01000100;
|
2172 |
|
|
11'h465: data = 8'b00101000;
|
2173 |
|
|
11'h466: data = 8'b00010000;
|
2174 |
|
|
11'h467: data = 8'b00101000;
|
2175 |
|
|
11'h468: data = 8'b01000100;
|
2176 |
|
|
11'h469: data = 8'b10000010;
|
2177 |
|
|
11'h46A: data = 8'b10000010;
|
2178 |
|
|
11'h46B: data = 8'b10000010;
|
2179 |
|
|
11'h46C: data = 8'b10000010; // B
|
2180 |
|
|
11'h46D: data = 8'b00000000;
|
2181 |
|
|
11'h46E: data = 8'b00000000;
|
2182 |
|
|
11'h46F: data = 8'b00000000;
|
2183 |
|
|
11'h470: data = 8'b00000000;
|
2184 |
|
|
11'h471: data = 8'b00000000;
|
2185 |
|
|
11'h472: data = 8'b00000000;
|
2186 |
|
|
11'h473: data = 8'b00000000;
|
2187 |
|
|
|
2188 |
|
|
11'h474: data = 8'b10000010; // 'Y'
|
2189 |
|
|
11'h475: data = 8'b10000010;
|
2190 |
|
|
11'h476: data = 8'b10000010;
|
2191 |
|
|
11'h477: data = 8'b10000010;
|
2192 |
|
|
11'h478: data = 8'b01000100;
|
2193 |
|
|
11'h479: data = 8'b00101000;
|
2194 |
|
|
11'h47A: data = 8'b00010000;
|
2195 |
|
|
11'h47B: data = 8'b00010000;
|
2196 |
|
|
11'h47C: data = 8'b00010000;
|
2197 |
|
|
11'h47D: data = 8'b00010000;
|
2198 |
|
|
11'h47E: data = 8'b00010000;
|
2199 |
|
|
11'h47F: data = 8'b00010000;
|
2200 |
|
|
11'h480: data = 8'b00010000; // B
|
2201 |
|
|
11'h481: data = 8'b00000000;
|
2202 |
|
|
11'h482: data = 8'b00000000;
|
2203 |
|
|
11'h483: data = 8'b00000000;
|
2204 |
|
|
11'h484: data = 8'b00000000;
|
2205 |
|
|
11'h485: data = 8'b00000000;
|
2206 |
|
|
11'h486: data = 8'b00000000;
|
2207 |
|
|
11'h487: data = 8'b00000000;
|
2208 |
|
|
|
2209 |
|
|
11'h488: data = 8'b11111110; // 'Z'
|
2210 |
|
|
11'h489: data = 8'b00000010;
|
2211 |
|
|
11'h48A: data = 8'b00000010;
|
2212 |
|
|
11'h48B: data = 8'b00000010;
|
2213 |
|
|
11'h48C: data = 8'b00000100;
|
2214 |
|
|
11'h48D: data = 8'b00001000;
|
2215 |
|
|
11'h48E: data = 8'b00010000;
|
2216 |
|
|
11'h48F: data = 8'b00100000;
|
2217 |
|
|
11'h490: data = 8'b01000000;
|
2218 |
|
|
11'h491: data = 8'b10000000;
|
2219 |
|
|
11'h492: data = 8'b10000000;
|
2220 |
|
|
11'h493: data = 8'b10000000;
|
2221 |
|
|
11'h494: data = 8'b11111110; // B
|
2222 |
|
|
11'h495: data = 8'b00000000;
|
2223 |
|
|
11'h496: data = 8'b00000000;
|
2224 |
|
|
11'h497: data = 8'b00000000;
|
2225 |
|
|
11'h498: data = 8'b00000000;
|
2226 |
|
|
11'h499: data = 8'b00000000;
|
2227 |
|
|
11'h49A: data = 8'b00000000;
|
2228 |
|
|
11'h49B: data = 8'b00000000;
|
2229 |
|
|
|
2230 |
|
|
11'h49C: data = 8'b00111000; // '['
|
2231 |
|
|
11'h49D: data = 8'b00100000;
|
2232 |
|
|
11'h49E: data = 8'b00100000;
|
2233 |
|
|
11'h49F: data = 8'b00100000;
|
2234 |
|
|
11'h4A0: data = 8'b00100000;
|
2235 |
|
|
11'h4A1: data = 8'b00100000;
|
2236 |
|
|
11'h4A2: data = 8'b00100000;
|
2237 |
|
|
11'h4A3: data = 8'b00100000;
|
2238 |
|
|
11'h4A4: data = 8'b00100000;
|
2239 |
|
|
11'h4A5: data = 8'b00100000;
|
2240 |
|
|
11'h4A6: data = 8'b00100000;
|
2241 |
|
|
11'h4A7: data = 8'b00100000;
|
2242 |
|
|
11'h4A8: data = 8'b00111000; // B
|
2243 |
|
|
11'h4A9: data = 8'b00000000;
|
2244 |
|
|
11'h4AA: data = 8'b00000000;
|
2245 |
|
|
11'h4AB: data = 8'b00000000;
|
2246 |
|
|
11'h4AC: data = 8'b00000000;
|
2247 |
|
|
11'h4AD: data = 8'b00000000;
|
2248 |
|
|
11'h4AE: data = 8'b00000000;
|
2249 |
|
|
11'h4AF: data = 8'b00000000;
|
2250 |
|
|
|
2251 |
|
|
11'h4B0: data = 8'b00000000; // '\'
|
2252 |
|
|
11'h4B1: data = 8'b10000000;
|
2253 |
|
|
11'h4B2: data = 8'b01000000;
|
2254 |
|
|
11'h4B3: data = 8'b01000000;
|
2255 |
|
|
11'h4B4: data = 8'b00100000;
|
2256 |
|
|
11'h4B5: data = 8'b00100000;
|
2257 |
|
|
11'h4B6: data = 8'b00010000;
|
2258 |
|
|
11'h4B7: data = 8'b00010000;
|
2259 |
|
|
11'h4B8: data = 8'b00001000;
|
2260 |
|
|
11'h4B9: data = 8'b00001000;
|
2261 |
|
|
11'h4BA: data = 8'b00000100;
|
2262 |
|
|
11'h4BB: data = 8'b00000100;
|
2263 |
|
|
11'h4BC: data = 8'b00000010; // B
|
2264 |
|
|
11'h4BD: data = 8'b00000000;
|
2265 |
|
|
11'h4BE: data = 8'b00000000;
|
2266 |
|
|
11'h4BF: data = 8'b00000000;
|
2267 |
|
|
11'h4C0: data = 8'b00000000;
|
2268 |
|
|
11'h4C1: data = 8'b00000000;
|
2269 |
|
|
11'h4C2: data = 8'b00000000;
|
2270 |
|
|
11'h4C3: data = 8'b00000000;
|
2271 |
|
|
|
2272 |
|
|
11'h4C4: data = 8'b00111000; // ']'
|
2273 |
|
|
11'h4C5: data = 8'b00001000;
|
2274 |
|
|
11'h4C6: data = 8'b00001000;
|
2275 |
|
|
11'h4C7: data = 8'b00001000;
|
2276 |
|
|
11'h4C8: data = 8'b00001000;
|
2277 |
|
|
11'h4C9: data = 8'b00001000;
|
2278 |
|
|
11'h4CA: data = 8'b00001000;
|
2279 |
|
|
11'h4CB: data = 8'b00001000;
|
2280 |
|
|
11'h4CC: data = 8'b00001000;
|
2281 |
|
|
11'h4CD: data = 8'b00001000;
|
2282 |
|
|
11'h4CE: data = 8'b00001000;
|
2283 |
|
|
11'h4CF: data = 8'b00001000;
|
2284 |
|
|
11'h4D0: data = 8'b00111000; // B
|
2285 |
|
|
11'h4D1: data = 8'b00000000;
|
2286 |
|
|
11'h4D2: data = 8'b00000000;
|
2287 |
|
|
11'h4D3: data = 8'b00000000;
|
2288 |
|
|
11'h4D4: data = 8'b00000000;
|
2289 |
|
|
11'h4D5: data = 8'b00000000;
|
2290 |
|
|
11'h4D6: data = 8'b00000000;
|
2291 |
|
|
11'h4D7: data = 8'b00000000;
|
2292 |
|
|
|
2293 |
|
|
11'h4D8: data = 8'b00010000; // '^'
|
2294 |
|
|
11'h4D9: data = 8'b00101000;
|
2295 |
|
|
11'h4DA: data = 8'b01000100;
|
2296 |
|
|
11'h4DB: data = 8'b00000000;
|
2297 |
|
|
11'h4DC: data = 8'b00000000;
|
2298 |
|
|
11'h4DD: data = 8'b00000000;
|
2299 |
|
|
11'h4DE: data = 8'b00000000;
|
2300 |
|
|
11'h4DF: data = 8'b00000000;
|
2301 |
|
|
11'h4E0: data = 8'b00000000;
|
2302 |
|
|
11'h4E1: data = 8'b00000000;
|
2303 |
|
|
11'h4E2: data = 8'b00000000;
|
2304 |
|
|
11'h4E3: data = 8'b00000000;
|
2305 |
|
|
11'h4E4: data = 8'b00000000; // B
|
2306 |
|
|
11'h4E5: data = 8'b00000000;
|
2307 |
|
|
11'h4E6: data = 8'b00000000;
|
2308 |
|
|
11'h4E7: data = 8'b00000000;
|
2309 |
|
|
11'h4E8: data = 8'b00000000;
|
2310 |
|
|
11'h4E9: data = 8'b00000000;
|
2311 |
|
|
11'h4EA: data = 8'b00000000;
|
2312 |
|
|
11'h4EB: data = 8'b00000000;
|
2313 |
|
|
|
2314 |
|
|
11'h4EC: data = 8'b00000000; // '_'
|
2315 |
|
|
11'h4ED: data = 8'b00000000;
|
2316 |
|
|
11'h4EE: data = 8'b00000000;
|
2317 |
|
|
11'h4EF: data = 8'b00000000;
|
2318 |
|
|
11'h4F0: data = 8'b00000000;
|
2319 |
|
|
11'h4F1: data = 8'b00000000;
|
2320 |
|
|
11'h4F2: data = 8'b00000000;
|
2321 |
|
|
11'h4F3: data = 8'b00000000;
|
2322 |
|
|
11'h4F4: data = 8'b00000000;
|
2323 |
|
|
11'h4F5: data = 8'b00000000;
|
2324 |
|
|
11'h4F6: data = 8'b00000000;
|
2325 |
|
|
11'h4F7: data = 8'b00000000;
|
2326 |
|
|
11'h4F8: data = 8'b11111110; // B
|
2327 |
|
|
11'h4F9: data = 8'b00000000;
|
2328 |
|
|
11'h4FA: data = 8'b00000000;
|
2329 |
|
|
11'h4FB: data = 8'b00000000;
|
2330 |
|
|
11'h4FC: data = 8'b00000000;
|
2331 |
|
|
11'h4FD: data = 8'b00000000;
|
2332 |
|
|
11'h4FE: data = 8'b00000000;
|
2333 |
|
|
11'h4FF: data = 8'b00000000;
|
2334 |
|
|
|
2335 |
|
|
11'h500: data = 8'b00100000; // '`'
|
2336 |
|
|
11'h501: data = 8'b00010000;
|
2337 |
|
|
11'h502: data = 8'b00000000;
|
2338 |
|
|
11'h503: data = 8'b00000000;
|
2339 |
|
|
11'h504: data = 8'b00000000;
|
2340 |
|
|
11'h505: data = 8'b00000000;
|
2341 |
|
|
11'h506: data = 8'b00000000;
|
2342 |
|
|
11'h507: data = 8'b00000000;
|
2343 |
|
|
11'h508: data = 8'b00000000;
|
2344 |
|
|
11'h509: data = 8'b00000000;
|
2345 |
|
|
11'h50A: data = 8'b00000000;
|
2346 |
|
|
11'h50B: data = 8'b00000000;
|
2347 |
|
|
11'h50C: data = 8'b00000000; // B
|
2348 |
|
|
11'h50D: data = 8'b00000000;
|
2349 |
|
|
11'h50E: data = 8'b00000000;
|
2350 |
|
|
11'h50F: data = 8'b00000000;
|
2351 |
|
|
11'h510: data = 8'b00000000;
|
2352 |
|
|
11'h511: data = 8'b00000000;
|
2353 |
|
|
11'h512: data = 8'b00000000;
|
2354 |
|
|
11'h513: data = 8'b00000000;
|
2355 |
|
|
|
2356 |
|
|
11'h514: data = 8'b00000000; // 'a'
|
2357 |
|
|
11'h515: data = 8'b00000000;
|
2358 |
|
|
11'h516: data = 8'b00000000;
|
2359 |
|
|
11'h517: data = 8'b00000000;
|
2360 |
|
|
11'h518: data = 8'b00000000;
|
2361 |
|
|
11'h519: data = 8'b00000000;
|
2362 |
|
|
11'h51A: data = 8'b01111000;
|
2363 |
|
|
11'h51B: data = 8'b00000100;
|
2364 |
|
|
11'h51C: data = 8'b00111100;
|
2365 |
|
|
11'h51D: data = 8'b01000100;
|
2366 |
|
|
11'h51E: data = 8'b01000100;
|
2367 |
|
|
11'h51F: data = 8'b01000100;
|
2368 |
|
|
11'h520: data = 8'b00111100; // B
|
2369 |
|
|
11'h521: data = 8'b00000000;
|
2370 |
|
|
11'h522: data = 8'b00000000;
|
2371 |
|
|
11'h523: data = 8'b00000000;
|
2372 |
|
|
11'h524: data = 8'b00000000;
|
2373 |
|
|
11'h525: data = 8'b00000000;
|
2374 |
|
|
11'h526: data = 8'b00000000;
|
2375 |
|
|
11'h527: data = 8'b00000000;
|
2376 |
|
|
|
2377 |
|
|
11'h528: data = 8'b01000000; // 'b'
|
2378 |
|
|
11'h529: data = 8'b01000000;
|
2379 |
|
|
11'h52A: data = 8'b01000000;
|
2380 |
|
|
11'h52B: data = 8'b01000000;
|
2381 |
|
|
11'h52C: data = 8'b01000000;
|
2382 |
|
|
11'h52D: data = 8'b01000000;
|
2383 |
|
|
11'h52E: data = 8'b01111000;
|
2384 |
|
|
11'h52F: data = 8'b01000100;
|
2385 |
|
|
11'h530: data = 8'b01000100;
|
2386 |
|
|
11'h531: data = 8'b01000100;
|
2387 |
|
|
11'h532: data = 8'b01000100;
|
2388 |
|
|
11'h533: data = 8'b01000100;
|
2389 |
|
|
11'h534: data = 8'b01111000; // B
|
2390 |
|
|
11'h535: data = 8'b00000000;
|
2391 |
|
|
11'h536: data = 8'b00000000;
|
2392 |
|
|
11'h537: data = 8'b00000000;
|
2393 |
|
|
11'h538: data = 8'b00000000;
|
2394 |
|
|
11'h539: data = 8'b00000000;
|
2395 |
|
|
11'h53A: data = 8'b00000000;
|
2396 |
|
|
11'h53B: data = 8'b00000000;
|
2397 |
|
|
|
2398 |
|
|
11'h53C: data = 8'b00000000; // 'c'
|
2399 |
|
|
11'h53D: data = 8'b00000000;
|
2400 |
|
|
11'h53E: data = 8'b00000000;
|
2401 |
|
|
11'h53F: data = 8'b00000000;
|
2402 |
|
|
11'h540: data = 8'b00000000;
|
2403 |
|
|
11'h541: data = 8'b00000000;
|
2404 |
|
|
11'h542: data = 8'b00111000;
|
2405 |
|
|
11'h543: data = 8'b01000100;
|
2406 |
|
|
11'h544: data = 8'b01000000;
|
2407 |
|
|
11'h545: data = 8'b01000000;
|
2408 |
|
|
11'h546: data = 8'b01000000;
|
2409 |
|
|
11'h547: data = 8'b01000100;
|
2410 |
|
|
11'h548: data = 8'b00111000; // B
|
2411 |
|
|
11'h549: data = 8'b00000000;
|
2412 |
|
|
11'h54A: data = 8'b00000000;
|
2413 |
|
|
11'h54B: data = 8'b00000000;
|
2414 |
|
|
11'h54C: data = 8'b00000000;
|
2415 |
|
|
11'h54D: data = 8'b00000000;
|
2416 |
|
|
11'h54E: data = 8'b00000000;
|
2417 |
|
|
11'h54F: data = 8'b00000000;
|
2418 |
|
|
|
2419 |
|
|
11'h550: data = 8'b00000100; // 'd'
|
2420 |
|
|
11'h551: data = 8'b00000100;
|
2421 |
|
|
11'h552: data = 8'b00000100;
|
2422 |
|
|
11'h553: data = 8'b00000100;
|
2423 |
|
|
11'h554: data = 8'b00000100;
|
2424 |
|
|
11'h555: data = 8'b00000100;
|
2425 |
|
|
11'h556: data = 8'b00111100;
|
2426 |
|
|
11'h557: data = 8'b01000100;
|
2427 |
|
|
11'h558: data = 8'b01000100;
|
2428 |
|
|
11'h559: data = 8'b01000100;
|
2429 |
|
|
11'h55A: data = 8'b01000100;
|
2430 |
|
|
11'h55B: data = 8'b01000100;
|
2431 |
|
|
11'h55C: data = 8'b00111100; // B
|
2432 |
|
|
11'h55D: data = 8'b00000000;
|
2433 |
|
|
11'h55E: data = 8'b00000000;
|
2434 |
|
|
11'h55F: data = 8'b00000000;
|
2435 |
|
|
11'h560: data = 8'b00000000;
|
2436 |
|
|
11'h561: data = 8'b00000000;
|
2437 |
|
|
11'h562: data = 8'b00000000;
|
2438 |
|
|
11'h563: data = 8'b00000000;
|
2439 |
|
|
|
2440 |
|
|
11'h564: data = 8'b00000000; // 'e'
|
2441 |
|
|
11'h565: data = 8'b00000000;
|
2442 |
|
|
11'h566: data = 8'b00000000;
|
2443 |
|
|
11'h567: data = 8'b00000000;
|
2444 |
|
|
11'h568: data = 8'b00000000;
|
2445 |
|
|
11'h569: data = 8'b00000000;
|
2446 |
|
|
11'h56A: data = 8'b00111000;
|
2447 |
|
|
11'h56B: data = 8'b01000100;
|
2448 |
|
|
11'h56C: data = 8'b01000100;
|
2449 |
|
|
11'h56D: data = 8'b01111100;
|
2450 |
|
|
11'h56E: data = 8'b01000000;
|
2451 |
|
|
11'h56F: data = 8'b01000000;
|
2452 |
|
|
11'h570: data = 8'b00111100; // B
|
2453 |
|
|
11'h571: data = 8'b00000000;
|
2454 |
|
|
11'h572: data = 8'b00000000;
|
2455 |
|
|
11'h573: data = 8'b00000000;
|
2456 |
|
|
11'h574: data = 8'b00000000;
|
2457 |
|
|
11'h575: data = 8'b00000000;
|
2458 |
|
|
11'h576: data = 8'b00000000;
|
2459 |
|
|
11'h577: data = 8'b00000000;
|
2460 |
|
|
|
2461 |
|
|
11'h578: data = 8'b00001100; // 'f'
|
2462 |
|
|
11'h579: data = 8'b00010000;
|
2463 |
|
|
11'h57A: data = 8'b00010000;
|
2464 |
|
|
11'h57B: data = 8'b00010000;
|
2465 |
|
|
11'h57C: data = 8'b00010000;
|
2466 |
|
|
11'h57D: data = 8'b00010000;
|
2467 |
|
|
11'h57E: data = 8'b01111100;
|
2468 |
|
|
11'h57F: data = 8'b00010000;
|
2469 |
|
|
11'h580: data = 8'b00010000;
|
2470 |
|
|
11'h581: data = 8'b00010000;
|
2471 |
|
|
11'h582: data = 8'b00010000;
|
2472 |
|
|
11'h583: data = 8'b00010000;
|
2473 |
|
|
11'h584: data = 8'b00010000; // B
|
2474 |
|
|
11'h585: data = 8'b00000000;
|
2475 |
|
|
11'h586: data = 8'b00000000;
|
2476 |
|
|
11'h587: data = 8'b00000000;
|
2477 |
|
|
11'h588: data = 8'b00000000;
|
2478 |
|
|
11'h589: data = 8'b00000000;
|
2479 |
|
|
11'h58A: data = 8'b00000000;
|
2480 |
|
|
11'h58B: data = 8'b00000000;
|
2481 |
|
|
|
2482 |
|
|
11'h58C: data = 8'b00000000; // 'g'
|
2483 |
|
|
11'h58D: data = 8'b00000000;
|
2484 |
|
|
11'h58E: data = 8'b00000000;
|
2485 |
|
|
11'h58F: data = 8'b00000000;
|
2486 |
|
|
11'h590: data = 8'b00000000;
|
2487 |
|
|
11'h591: data = 8'b00000000;
|
2488 |
|
|
11'h592: data = 8'b00111000;
|
2489 |
|
|
11'h593: data = 8'b01000100;
|
2490 |
|
|
11'h594: data = 8'b01000100;
|
2491 |
|
|
11'h595: data = 8'b01000100;
|
2492 |
|
|
11'h596: data = 8'b01000100;
|
2493 |
|
|
11'h597: data = 8'b01000100;
|
2494 |
|
|
11'h598: data = 8'b00111100; // B
|
2495 |
|
|
11'h599: data = 8'b00000100;
|
2496 |
|
|
11'h59A: data = 8'b00000100;
|
2497 |
|
|
11'h59B: data = 8'b00000100;
|
2498 |
|
|
11'h59C: data = 8'b00000100;
|
2499 |
|
|
11'h59D: data = 8'b01000100;
|
2500 |
|
|
11'h59E: data = 8'b00111000;
|
2501 |
|
|
11'h59F: data = 8'b00000000;
|
2502 |
|
|
|
2503 |
|
|
11'h5A0: data = 8'b01000000; // 'h'
|
2504 |
|
|
11'h5A1: data = 8'b01000000;
|
2505 |
|
|
11'h5A2: data = 8'b01000000;
|
2506 |
|
|
11'h5A3: data = 8'b01000000;
|
2507 |
|
|
11'h5A4: data = 8'b01000000;
|
2508 |
|
|
11'h5A5: data = 8'b01000000;
|
2509 |
|
|
11'h5A6: data = 8'b01111000;
|
2510 |
|
|
11'h5A7: data = 8'b01000100;
|
2511 |
|
|
11'h5A8: data = 8'b01000100;
|
2512 |
|
|
11'h5A9: data = 8'b01000100;
|
2513 |
|
|
11'h5AA: data = 8'b01000100;
|
2514 |
|
|
11'h5AB: data = 8'b01000100;
|
2515 |
|
|
11'h5AC: data = 8'b01000100; // B
|
2516 |
|
|
11'h5AD: data = 8'b00000000;
|
2517 |
|
|
11'h5AE: data = 8'b00000000;
|
2518 |
|
|
11'h5AF: data = 8'b00000000;
|
2519 |
|
|
11'h5B0: data = 8'b00000000;
|
2520 |
|
|
11'h5B1: data = 8'b00000000;
|
2521 |
|
|
11'h5B2: data = 8'b00000000;
|
2522 |
|
|
11'h5B3: data = 8'b00000000;
|
2523 |
|
|
|
2524 |
|
|
11'h5B4: data = 8'b00000000; // 'i'
|
2525 |
|
|
11'h5B5: data = 8'b00000000;
|
2526 |
|
|
11'h5B6: data = 8'b00000000;
|
2527 |
|
|
11'h5B7: data = 8'b00000000;
|
2528 |
|
|
11'h5B8: data = 8'b00010000;
|
2529 |
|
|
11'h5B9: data = 8'b00000000;
|
2530 |
|
|
11'h5BA: data = 8'b00110000;
|
2531 |
|
|
11'h5BB: data = 8'b00010000;
|
2532 |
|
|
11'h5BC: data = 8'b00010000;
|
2533 |
|
|
11'h5BD: data = 8'b00010000;
|
2534 |
|
|
11'h5BE: data = 8'b00010000;
|
2535 |
|
|
11'h5BF: data = 8'b00010000;
|
2536 |
|
|
11'h5C0: data = 8'b00111000; // B
|
2537 |
|
|
11'h5C1: data = 8'b00000000;
|
2538 |
|
|
11'h5C2: data = 8'b00000000;
|
2539 |
|
|
11'h5C3: data = 8'b00000000;
|
2540 |
|
|
11'h5C4: data = 8'b00000000;
|
2541 |
|
|
11'h5C5: data = 8'b00000000;
|
2542 |
|
|
11'h5C6: data = 8'b00000000;
|
2543 |
|
|
11'h5C7: data = 8'b00000000;
|
2544 |
|
|
|
2545 |
|
|
11'h5C8: data = 8'b00000000; // 'j'
|
2546 |
|
|
11'h5C9: data = 8'b00000000;
|
2547 |
|
|
11'h5CA: data = 8'b00000000;
|
2548 |
|
|
11'h5CB: data = 8'b00000000;
|
2549 |
|
|
11'h5CC: data = 8'b00001000;
|
2550 |
|
|
11'h5CD: data = 8'b00000000;
|
2551 |
|
|
11'h5CE: data = 8'b00011000;
|
2552 |
|
|
11'h5CF: data = 8'b00001000;
|
2553 |
|
|
11'h5D0: data = 8'b00001000;
|
2554 |
|
|
11'h5D1: data = 8'b00001000;
|
2555 |
|
|
11'h5D2: data = 8'b00001000;
|
2556 |
|
|
11'h5D3: data = 8'b00001000;
|
2557 |
|
|
11'h5D4: data = 8'b00001000; // B
|
2558 |
|
|
11'h5D5: data = 8'b00001000;
|
2559 |
|
|
11'h5D6: data = 8'b00001000;
|
2560 |
|
|
11'h5D7: data = 8'b00001000;
|
2561 |
|
|
11'h5D8: data = 8'b00001000;
|
2562 |
|
|
11'h5D9: data = 8'b01001000;
|
2563 |
|
|
11'h5DA: data = 8'b00110000;
|
2564 |
|
|
11'h5DB: data = 8'b00000000;
|
2565 |
|
|
|
2566 |
|
|
11'h5DC: data = 8'b01000000; // 'k'
|
2567 |
|
|
11'h5DD: data = 8'b01000000;
|
2568 |
|
|
11'h5DE: data = 8'b01000000;
|
2569 |
|
|
11'h5DF: data = 8'b01000000;
|
2570 |
|
|
11'h5E0: data = 8'b01000000;
|
2571 |
|
|
11'h5E1: data = 8'b01000000;
|
2572 |
|
|
11'h5E2: data = 8'b01000100;
|
2573 |
|
|
11'h5E3: data = 8'b01001000;
|
2574 |
|
|
11'h5E4: data = 8'b01010000;
|
2575 |
|
|
11'h5E5: data = 8'b01100000;
|
2576 |
|
|
11'h5E6: data = 8'b01010000;
|
2577 |
|
|
11'h5E7: data = 8'b01001000;
|
2578 |
|
|
11'h5E8: data = 8'b01000100; // B
|
2579 |
|
|
11'h5E9: data = 8'b00000000;
|
2580 |
|
|
11'h5EA: data = 8'b00000000;
|
2581 |
|
|
11'h5EB: data = 8'b00000000;
|
2582 |
|
|
11'h5EC: data = 8'b00000000;
|
2583 |
|
|
11'h5ED: data = 8'b00000000;
|
2584 |
|
|
11'h5EE: data = 8'b00000000;
|
2585 |
|
|
11'h5EF: data = 8'b00000000;
|
2586 |
|
|
|
2587 |
|
|
11'h5F0: data = 8'b00110000; // 'l'
|
2588 |
|
|
11'h5F1: data = 8'b00010000;
|
2589 |
|
|
11'h5F2: data = 8'b00010000;
|
2590 |
|
|
11'h5F3: data = 8'b00010000;
|
2591 |
|
|
11'h5F4: data = 8'b00010000;
|
2592 |
|
|
11'h5F5: data = 8'b00010000;
|
2593 |
|
|
11'h5F6: data = 8'b00010000;
|
2594 |
|
|
11'h5F7: data = 8'b00010000;
|
2595 |
|
|
11'h5F8: data = 8'b00010000;
|
2596 |
|
|
11'h5F9: data = 8'b00010000;
|
2597 |
|
|
11'h5FA: data = 8'b00010000;
|
2598 |
|
|
11'h5FB: data = 8'b00010000;
|
2599 |
|
|
11'h5FC: data = 8'b01111100; // B
|
2600 |
|
|
11'h5FD: data = 8'b00000000;
|
2601 |
|
|
11'h5FE: data = 8'b00000000;
|
2602 |
|
|
11'h5FF: data = 8'b00000000;
|
2603 |
|
|
11'h600: data = 8'b00000000;
|
2604 |
|
|
11'h601: data = 8'b00000000;
|
2605 |
|
|
11'h602: data = 8'b00000000;
|
2606 |
|
|
11'h603: data = 8'b00000000;
|
2607 |
|
|
|
2608 |
|
|
11'h604: data = 8'b00000000; // 'm'
|
2609 |
|
|
11'h605: data = 8'b00000000;
|
2610 |
|
|
11'h606: data = 8'b00000000;
|
2611 |
|
|
11'h607: data = 8'b00000000;
|
2612 |
|
|
11'h608: data = 8'b00000000;
|
2613 |
|
|
11'h609: data = 8'b00000000;
|
2614 |
|
|
11'h60A: data = 8'b01101100;
|
2615 |
|
|
11'h60B: data = 8'b01010100;
|
2616 |
|
|
11'h60C: data = 8'b01010100;
|
2617 |
|
|
11'h60D: data = 8'b01010100;
|
2618 |
|
|
11'h60E: data = 8'b01010100;
|
2619 |
|
|
11'h60F: data = 8'b01010100;
|
2620 |
|
|
11'h610: data = 8'b01000100; // B
|
2621 |
|
|
11'h611: data = 8'b00000000;
|
2622 |
|
|
11'h612: data = 8'b00000000;
|
2623 |
|
|
11'h613: data = 8'b00000000;
|
2624 |
|
|
11'h614: data = 8'b00000000;
|
2625 |
|
|
11'h615: data = 8'b00000000;
|
2626 |
|
|
11'h616: data = 8'b00000000;
|
2627 |
|
|
11'h617: data = 8'b00000000;
|
2628 |
|
|
|
2629 |
|
|
11'h618: data = 8'b00000000; // 'n'
|
2630 |
|
|
11'h619: data = 8'b00000000;
|
2631 |
|
|
11'h61A: data = 8'b00000000;
|
2632 |
|
|
11'h61B: data = 8'b00000000;
|
2633 |
|
|
11'h61C: data = 8'b00000000;
|
2634 |
|
|
11'h61D: data = 8'b00000000;
|
2635 |
|
|
11'h61E: data = 8'b00111000;
|
2636 |
|
|
11'h61F: data = 8'b01000100;
|
2637 |
|
|
11'h620: data = 8'b01000100;
|
2638 |
|
|
11'h621: data = 8'b01000100;
|
2639 |
|
|
11'h622: data = 8'b01000100;
|
2640 |
|
|
11'h623: data = 8'b01000100;
|
2641 |
|
|
11'h624: data = 8'b01000100; // B
|
2642 |
|
|
11'h625: data = 8'b00000000;
|
2643 |
|
|
11'h626: data = 8'b00000000;
|
2644 |
|
|
11'h627: data = 8'b00000000;
|
2645 |
|
|
11'h628: data = 8'b00000000;
|
2646 |
|
|
11'h629: data = 8'b00000000;
|
2647 |
|
|
11'h62A: data = 8'b00000000;
|
2648 |
|
|
11'h62B: data = 8'b00000000;
|
2649 |
|
|
|
2650 |
|
|
11'h62C: data = 8'b00000000; // 'o'
|
2651 |
|
|
11'h62D: data = 8'b00000000;
|
2652 |
|
|
11'h62E: data = 8'b00000000;
|
2653 |
|
|
11'h62F: data = 8'b00000000;
|
2654 |
|
|
11'h630: data = 8'b00000000;
|
2655 |
|
|
11'h631: data = 8'b00000000;
|
2656 |
|
|
11'h632: data = 8'b00111000;
|
2657 |
|
|
11'h633: data = 8'b01000100;
|
2658 |
|
|
11'h634: data = 8'b01000100;
|
2659 |
|
|
11'h635: data = 8'b01000100;
|
2660 |
|
|
11'h636: data = 8'b01000100;
|
2661 |
|
|
11'h637: data = 8'b01000100;
|
2662 |
|
|
11'h638: data = 8'b00111000; // B
|
2663 |
|
|
11'h639: data = 8'b00000000;
|
2664 |
|
|
11'h63A: data = 8'b00000000;
|
2665 |
|
|
11'h63B: data = 8'b00000000;
|
2666 |
|
|
11'h63C: data = 8'b00000000;
|
2667 |
|
|
11'h63D: data = 8'b00000000;
|
2668 |
|
|
11'h63E: data = 8'b00000000;
|
2669 |
|
|
11'h63F: data = 8'b00000000;
|
2670 |
|
|
|
2671 |
|
|
11'h640: data = 8'b00000000; // 'p'
|
2672 |
|
|
11'h641: data = 8'b00000000;
|
2673 |
|
|
11'h642: data = 8'b00000000;
|
2674 |
|
|
11'h643: data = 8'b00000000;
|
2675 |
|
|
11'h644: data = 8'b00000000;
|
2676 |
|
|
11'h645: data = 8'b00000000;
|
2677 |
|
|
11'h646: data = 8'b01111000;
|
2678 |
|
|
11'h647: data = 8'b01000100;
|
2679 |
|
|
11'h648: data = 8'b01000100;
|
2680 |
|
|
11'h649: data = 8'b01000100;
|
2681 |
|
|
11'h64A: data = 8'b01000100;
|
2682 |
|
|
11'h64B: data = 8'b01000100;
|
2683 |
|
|
11'h64C: data = 8'b01111000; // B
|
2684 |
|
|
11'h64D: data = 8'b01000000;
|
2685 |
|
|
11'h64E: data = 8'b01000000;
|
2686 |
|
|
11'h64F: data = 8'b01000000;
|
2687 |
|
|
11'h650: data = 8'b01000000;
|
2688 |
|
|
11'h651: data = 8'b01000000;
|
2689 |
|
|
11'h652: data = 8'b01000000;
|
2690 |
|
|
11'h653: data = 8'b00000000;
|
2691 |
|
|
|
2692 |
|
|
11'h654: data = 8'b00000000; // 'q'
|
2693 |
|
|
11'h655: data = 8'b00000000;
|
2694 |
|
|
11'h656: data = 8'b00000000;
|
2695 |
|
|
11'h657: data = 8'b00000000;
|
2696 |
|
|
11'h658: data = 8'b00000000;
|
2697 |
|
|
11'h659: data = 8'b00000000;
|
2698 |
|
|
11'h65A: data = 8'b00111100;
|
2699 |
|
|
11'h65B: data = 8'b01000100;
|
2700 |
|
|
11'h65C: data = 8'b01000100;
|
2701 |
|
|
11'h65D: data = 8'b01000100;
|
2702 |
|
|
11'h65E: data = 8'b01000100;
|
2703 |
|
|
11'h65F: data = 8'b01000100;
|
2704 |
|
|
11'h660: data = 8'b00111100; // B
|
2705 |
|
|
11'h661: data = 8'b00000100;
|
2706 |
|
|
11'h662: data = 8'b00000100;
|
2707 |
|
|
11'h663: data = 8'b00000100;
|
2708 |
|
|
11'h664: data = 8'b00000100;
|
2709 |
|
|
11'h665: data = 8'b00000100;
|
2710 |
|
|
11'h666: data = 8'b00000100;
|
2711 |
|
|
11'h667: data = 8'b00000000;
|
2712 |
|
|
|
2713 |
|
|
11'h668: data = 8'b00000000; // 'r'
|
2714 |
|
|
11'h669: data = 8'b00000000;
|
2715 |
|
|
11'h66A: data = 8'b00000000;
|
2716 |
|
|
11'h66B: data = 8'b00000000;
|
2717 |
|
|
11'h66C: data = 8'b00000000;
|
2718 |
|
|
11'h66D: data = 8'b00000000;
|
2719 |
|
|
11'h66E: data = 8'b00111100;
|
2720 |
|
|
11'h66F: data = 8'b01000000;
|
2721 |
|
|
11'h670: data = 8'b01000000;
|
2722 |
|
|
11'h671: data = 8'b01000000;
|
2723 |
|
|
11'h672: data = 8'b01000000;
|
2724 |
|
|
11'h673: data = 8'b01000000;
|
2725 |
|
|
11'h674: data = 8'b01000000; // B
|
2726 |
|
|
11'h675: data = 8'b00000000;
|
2727 |
|
|
11'h676: data = 8'b00000000;
|
2728 |
|
|
11'h677: data = 8'b00000000;
|
2729 |
|
|
11'h678: data = 8'b00000000;
|
2730 |
|
|
11'h679: data = 8'b00000000;
|
2731 |
|
|
11'h67A: data = 8'b00000000;
|
2732 |
|
|
11'h67B: data = 8'b00000000;
|
2733 |
|
|
|
2734 |
|
|
11'h67C: data = 8'b00000000; // 's'
|
2735 |
|
|
11'h67D: data = 8'b00000000;
|
2736 |
|
|
11'h67E: data = 8'b00000000;
|
2737 |
|
|
11'h67F: data = 8'b00000000;
|
2738 |
|
|
11'h680: data = 8'b00000000;
|
2739 |
|
|
11'h681: data = 8'b00000000;
|
2740 |
|
|
11'h682: data = 8'b00111100;
|
2741 |
|
|
11'h683: data = 8'b01000000;
|
2742 |
|
|
11'h684: data = 8'b01000000;
|
2743 |
|
|
11'h685: data = 8'b00111000;
|
2744 |
|
|
11'h686: data = 8'b00000100;
|
2745 |
|
|
11'h687: data = 8'b00000100;
|
2746 |
|
|
11'h688: data = 8'b01111000; // B
|
2747 |
|
|
11'h689: data = 8'b00000000;
|
2748 |
|
|
11'h68A: data = 8'b00000000;
|
2749 |
|
|
11'h68B: data = 8'b00000000;
|
2750 |
|
|
11'h68C: data = 8'b00000000;
|
2751 |
|
|
11'h68D: data = 8'b00000000;
|
2752 |
|
|
11'h68E: data = 8'b00000000;
|
2753 |
|
|
11'h68F: data = 8'b00000000;
|
2754 |
|
|
|
2755 |
|
|
11'h690: data = 8'b00000000; // 't'
|
2756 |
|
|
11'h691: data = 8'b00000000;
|
2757 |
|
|
11'h692: data = 8'b00000000;
|
2758 |
|
|
11'h693: data = 8'b00000000;
|
2759 |
|
|
11'h694: data = 8'b00010000;
|
2760 |
|
|
11'h695: data = 8'b00010000;
|
2761 |
|
|
11'h696: data = 8'b01111100;
|
2762 |
|
|
11'h697: data = 8'b00010000;
|
2763 |
|
|
11'h698: data = 8'b00010000;
|
2764 |
|
|
11'h699: data = 8'b00010000;
|
2765 |
|
|
11'h69A: data = 8'b00010000;
|
2766 |
|
|
11'h69B: data = 8'b00010000;
|
2767 |
|
|
11'h69C: data = 8'b00011000; // B
|
2768 |
|
|
11'h69D: data = 8'b00000000;
|
2769 |
|
|
11'h69E: data = 8'b00000000;
|
2770 |
|
|
11'h69F: data = 8'b00000000;
|
2771 |
|
|
11'h6A0: data = 8'b00000000;
|
2772 |
|
|
11'h6A1: data = 8'b00000000;
|
2773 |
|
|
11'h6A2: data = 8'b00000000;
|
2774 |
|
|
11'h6A3: data = 8'b00000000;
|
2775 |
|
|
|
2776 |
|
|
11'h6A4: data = 8'b00000000; // 'u'
|
2777 |
|
|
11'h6A5: data = 8'b00000000;
|
2778 |
|
|
11'h6A6: data = 8'b00000000;
|
2779 |
|
|
11'h6A7: data = 8'b00000000;
|
2780 |
|
|
11'h6A8: data = 8'b00000000;
|
2781 |
|
|
11'h6A9: data = 8'b00000000;
|
2782 |
|
|
11'h6AA: data = 8'b01000100;
|
2783 |
|
|
11'h6AB: data = 8'b01000100;
|
2784 |
|
|
11'h6AC: data = 8'b01000100;
|
2785 |
|
|
11'h6AD: data = 8'b01000100;
|
2786 |
|
|
11'h6AE: data = 8'b01000100;
|
2787 |
|
|
11'h6AF: data = 8'b01000100;
|
2788 |
|
|
11'h6B0: data = 8'b00111000; // B
|
2789 |
|
|
11'h6B1: data = 8'b00000000;
|
2790 |
|
|
11'h6B2: data = 8'b00000000;
|
2791 |
|
|
11'h6B3: data = 8'b00000000;
|
2792 |
|
|
11'h6B4: data = 8'b00000000;
|
2793 |
|
|
11'h6B5: data = 8'b00000000;
|
2794 |
|
|
11'h6B6: data = 8'b00000000;
|
2795 |
|
|
11'h6B7: data = 8'b00000000;
|
2796 |
|
|
|
2797 |
|
|
11'h6B8: data = 8'b00000000; // 'v'
|
2798 |
|
|
11'h6B9: data = 8'b00000000;
|
2799 |
|
|
11'h6BA: data = 8'b00000000;
|
2800 |
|
|
11'h6BB: data = 8'b00000000;
|
2801 |
|
|
11'h6BC: data = 8'b00000000;
|
2802 |
|
|
11'h6BD: data = 8'b00000000;
|
2803 |
|
|
11'h6BE: data = 8'b01000100;
|
2804 |
|
|
11'h6BF: data = 8'b01000100;
|
2805 |
|
|
11'h6C0: data = 8'b01000100;
|
2806 |
|
|
11'h6C1: data = 8'b01000100;
|
2807 |
|
|
11'h6C2: data = 8'b01000100;
|
2808 |
|
|
11'h6C3: data = 8'b00101000;
|
2809 |
|
|
11'h6C4: data = 8'b00010000; // B
|
2810 |
|
|
11'h6C5: data = 8'b00000000;
|
2811 |
|
|
11'h6C6: data = 8'b00000000;
|
2812 |
|
|
11'h6C7: data = 8'b00000000;
|
2813 |
|
|
11'h6C8: data = 8'b00000000;
|
2814 |
|
|
11'h6C9: data = 8'b00000000;
|
2815 |
|
|
11'h6CA: data = 8'b00000000;
|
2816 |
|
|
11'h6CB: data = 8'b00000000;
|
2817 |
|
|
|
2818 |
|
|
11'h6CC: data = 8'b00000000; // 'w'
|
2819 |
|
|
11'h6CD: data = 8'b00000000;
|
2820 |
|
|
11'h6CE: data = 8'b00000000;
|
2821 |
|
|
11'h6CF: data = 8'b00000000;
|
2822 |
|
|
11'h6D0: data = 8'b00000000;
|
2823 |
|
|
11'h6D1: data = 8'b00000000;
|
2824 |
|
|
11'h6D2: data = 8'b01000100;
|
2825 |
|
|
11'h6D3: data = 8'b01010100;
|
2826 |
|
|
11'h6D4: data = 8'b01010100;
|
2827 |
|
|
11'h6D5: data = 8'b01010100;
|
2828 |
|
|
11'h6D6: data = 8'b01010100;
|
2829 |
|
|
11'h6D7: data = 8'b01010100;
|
2830 |
|
|
11'h6D8: data = 8'b00101000; // B
|
2831 |
|
|
11'h6D9: data = 8'b00000000;
|
2832 |
|
|
11'h6DA: data = 8'b00000000;
|
2833 |
|
|
11'h6DB: data = 8'b00000000;
|
2834 |
|
|
11'h6DC: data = 8'b00000000;
|
2835 |
|
|
11'h6DD: data = 8'b00000000;
|
2836 |
|
|
11'h6DE: data = 8'b00000000;
|
2837 |
|
|
11'h6DF: data = 8'b00000000;
|
2838 |
|
|
|
2839 |
|
|
11'h6E0: data = 8'b00000000; // 'x'
|
2840 |
|
|
11'h6E1: data = 8'b00000000;
|
2841 |
|
|
11'h6E2: data = 8'b00000000;
|
2842 |
|
|
11'h6E3: data = 8'b00000000;
|
2843 |
|
|
11'h6E4: data = 8'b00000000;
|
2844 |
|
|
11'h6E5: data = 8'b00000000;
|
2845 |
|
|
11'h6E6: data = 8'b01000100;
|
2846 |
|
|
11'h6E7: data = 8'b01000100;
|
2847 |
|
|
11'h6E8: data = 8'b00101000;
|
2848 |
|
|
11'h6E9: data = 8'b00010000;
|
2849 |
|
|
11'h6EA: data = 8'b00101000;
|
2850 |
|
|
11'h6EB: data = 8'b01000100;
|
2851 |
|
|
11'h6EC: data = 8'b01000100; // B
|
2852 |
|
|
11'h6ED: data = 8'b00000000;
|
2853 |
|
|
11'h6EE: data = 8'b00000000;
|
2854 |
|
|
11'h6EF: data = 8'b00000000;
|
2855 |
|
|
11'h6F0: data = 8'b00000000;
|
2856 |
|
|
11'h6F1: data = 8'b00000000;
|
2857 |
|
|
11'h6F2: data = 8'b00000000;
|
2858 |
|
|
11'h6F3: data = 8'b00000000;
|
2859 |
|
|
|
2860 |
|
|
11'h6F4: data = 8'b00000000; // 'y'
|
2861 |
|
|
11'h6F5: data = 8'b00000000;
|
2862 |
|
|
11'h6F6: data = 8'b00000000;
|
2863 |
|
|
11'h6F7: data = 8'b00000000;
|
2864 |
|
|
11'h6F8: data = 8'b00000000;
|
2865 |
|
|
11'h6F9: data = 8'b00000000;
|
2866 |
|
|
11'h6FA: data = 8'b01000100;
|
2867 |
|
|
11'h6FB: data = 8'b01000100;
|
2868 |
|
|
11'h6FC: data = 8'b01000100;
|
2869 |
|
|
11'h6FD: data = 8'b01000100;
|
2870 |
|
|
11'h6FE: data = 8'b01000100;
|
2871 |
|
|
11'h6FF: data = 8'b01000100;
|
2872 |
|
|
11'h700: data = 8'b00111100; // B
|
2873 |
|
|
11'h701: data = 8'b00000100;
|
2874 |
|
|
11'h702: data = 8'b00000100;
|
2875 |
|
|
11'h703: data = 8'b00000100;
|
2876 |
|
|
11'h704: data = 8'b00000100;
|
2877 |
|
|
11'h705: data = 8'b01000100;
|
2878 |
|
|
11'h706: data = 8'b00111000;
|
2879 |
|
|
11'h707: data = 8'b00000000;
|
2880 |
|
|
|
2881 |
|
|
11'h708: data = 8'b00000000; // 'z'
|
2882 |
|
|
11'h709: data = 8'b00000000;
|
2883 |
|
|
11'h70A: data = 8'b00000000;
|
2884 |
|
|
11'h70B: data = 8'b00000000;
|
2885 |
|
|
11'h70C: data = 8'b00000000;
|
2886 |
|
|
11'h70D: data = 8'b00000000;
|
2887 |
|
|
11'h70E: data = 8'b01111100;
|
2888 |
|
|
11'h70F: data = 8'b00000100;
|
2889 |
|
|
11'h710: data = 8'b00001000;
|
2890 |
|
|
11'h711: data = 8'b00010000;
|
2891 |
|
|
11'h712: data = 8'b00100000;
|
2892 |
|
|
11'h713: data = 8'b01000000;
|
2893 |
|
|
11'h714: data = 8'b01111100; // B
|
2894 |
|
|
11'h715: data = 8'b00000000;
|
2895 |
|
|
11'h716: data = 8'b00000000;
|
2896 |
|
|
11'h717: data = 8'b00000000;
|
2897 |
|
|
11'h718: data = 8'b00000000;
|
2898 |
|
|
11'h719: data = 8'b00000000;
|
2899 |
|
|
11'h71A: data = 8'b00000000;
|
2900 |
|
|
11'h71B: data = 8'b00000000;
|
2901 |
|
|
|
2902 |
|
|
11'h71C: data = 8'b00001000; // '{'
|
2903 |
|
|
11'h71D: data = 8'b00010000;
|
2904 |
|
|
11'h71E: data = 8'b00010000;
|
2905 |
|
|
11'h71F: data = 8'b00010000;
|
2906 |
|
|
11'h720: data = 8'b00010000;
|
2907 |
|
|
11'h721: data = 8'b00010000;
|
2908 |
|
|
11'h722: data = 8'b00100000;
|
2909 |
|
|
11'h723: data = 8'b00010000;
|
2910 |
|
|
11'h724: data = 8'b00010000;
|
2911 |
|
|
11'h725: data = 8'b00010000;
|
2912 |
|
|
11'h726: data = 8'b00010000;
|
2913 |
|
|
11'h727: data = 8'b00010000;
|
2914 |
|
|
11'h728: data = 8'b00001000; // B
|
2915 |
|
|
11'h729: data = 8'b00000000;
|
2916 |
|
|
11'h72A: data = 8'b00000000;
|
2917 |
|
|
11'h72B: data = 8'b00000000;
|
2918 |
|
|
11'h72C: data = 8'b00000000;
|
2919 |
|
|
11'h72D: data = 8'b00000000;
|
2920 |
|
|
11'h72E: data = 8'b00000000;
|
2921 |
|
|
11'h72F: data = 8'b00000000;
|
2922 |
|
|
|
2923 |
|
|
11'h730: data = 8'b00010000; // '|'
|
2924 |
|
|
11'h731: data = 8'b00010000;
|
2925 |
|
|
11'h732: data = 8'b00010000;
|
2926 |
|
|
11'h733: data = 8'b00010000;
|
2927 |
|
|
11'h734: data = 8'b00010000;
|
2928 |
|
|
11'h735: data = 8'b00010000;
|
2929 |
|
|
11'h736: data = 8'b00010000;
|
2930 |
|
|
11'h737: data = 8'b00010000;
|
2931 |
|
|
11'h738: data = 8'b00010000;
|
2932 |
|
|
11'h739: data = 8'b00010000;
|
2933 |
|
|
11'h73A: data = 8'b00010000;
|
2934 |
|
|
11'h73B: data = 8'b00010000;
|
2935 |
|
|
11'h73C: data = 8'b00010000; // B
|
2936 |
|
|
11'h73D: data = 8'b00000000;
|
2937 |
|
|
11'h73E: data = 8'b00000000;
|
2938 |
|
|
11'h73F: data = 8'b00000000;
|
2939 |
|
|
11'h740: data = 8'b00000000;
|
2940 |
|
|
11'h741: data = 8'b00000000;
|
2941 |
|
|
11'h742: data = 8'b00000000;
|
2942 |
|
|
11'h743: data = 8'b00000000;
|
2943 |
|
|
|
2944 |
|
|
11'h744: data = 8'b00100000; // '}'
|
2945 |
|
|
11'h745: data = 8'b00010000;
|
2946 |
|
|
11'h746: data = 8'b00010000;
|
2947 |
|
|
11'h747: data = 8'b00010000;
|
2948 |
|
|
11'h748: data = 8'b00010000;
|
2949 |
|
|
11'h749: data = 8'b00010000;
|
2950 |
|
|
11'h74A: data = 8'b00001000;
|
2951 |
|
|
11'h74B: data = 8'b00010000;
|
2952 |
|
|
11'h74C: data = 8'b00010000;
|
2953 |
|
|
11'h74D: data = 8'b00010000;
|
2954 |
|
|
11'h74E: data = 8'b00010000;
|
2955 |
|
|
11'h74F: data = 8'b00010000;
|
2956 |
|
|
11'h750: data = 8'b00100000; // B
|
2957 |
|
|
11'h751: data = 8'b00000000;
|
2958 |
|
|
11'h752: data = 8'b00000000;
|
2959 |
|
|
11'h753: data = 8'b00000000;
|
2960 |
|
|
11'h754: data = 8'b00000000;
|
2961 |
|
|
11'h755: data = 8'b00000000;
|
2962 |
|
|
11'h756: data = 8'b00000000;
|
2963 |
|
|
11'h757: data = 8'b00000000;
|
2964 |
|
|
|
2965 |
|
|
11'h758: data = 8'b01100010; // '~'
|
2966 |
|
|
11'h759: data = 8'b10010010;
|
2967 |
|
|
11'h75A: data = 8'b10001100;
|
2968 |
|
|
11'h75B: data = 8'b00000000;
|
2969 |
|
|
11'h75C: data = 8'b00000000;
|
2970 |
|
|
11'h75D: data = 8'b00000000;
|
2971 |
|
|
11'h75E: data = 8'b00000000;
|
2972 |
|
|
11'h75F: data = 8'b00000000;
|
2973 |
|
|
11'h760: data = 8'b00000000;
|
2974 |
|
|
11'h761: data = 8'b00000000;
|
2975 |
|
|
11'h762: data = 8'b00000000;
|
2976 |
|
|
11'h763: data = 8'b00000000;
|
2977 |
|
|
11'h764: data = 8'b00000000; // B
|
2978 |
|
|
11'h765: data = 8'b00000000;
|
2979 |
|
|
11'h766: data = 8'b00000000;
|
2980 |
|
|
11'h767: data = 8'b00000000;
|
2981 |
|
|
11'h768: data = 8'b00000000;
|
2982 |
|
|
11'h769: data = 8'b00000000;
|
2983 |
|
|
11'h76A: data = 8'b00000000;
|
2984 |
|
|
11'h76B: data = 8'b00000000;
|
2985 |
|
|
|
2986 |
|
|
default data = 8'b00000000; // blank
|
2987 |
|
|
|
2988 |
|
|
endcase
|
2989 |
|
|
|
2990 |
|
|
endmodule
|
2991 |
|
|
|
2992 |
|
|
////////////////////////////////////////////////////////////////////////////////
|
2993 |
|
|
//
|
2994 |
|
|
// KEYBOARD SCAN CODE CONVERTER
|
2995 |
|
|
//
|
2996 |
|
|
// Converts an 8 bit scan code to ASCII characters. Note that we don't represent
|
2997 |
|
|
// any control or other special characters in this table. Controls, shifts and
|
2998 |
|
|
// other keys are created at a higher level.
|
2999 |
|
|
//
|
3000 |
|
|
// There are two tables, the lower case or "normal" lookup table, and a shifted
|
3001 |
|
|
// table that gives either the upper case for the key, or an alternate
|
3002 |
|
|
// character.
|
3003 |
|
|
//
|
3004 |
|
|
// To determine the proper arrangement of scan codes to ascii codes, a keyboard
|
3005 |
|
|
// scan code table was used, which can be found various places on the internet.
|
3006 |
|
|
//
|
3007 |
|
|
|
3008 |
|
|
module scnrom(addr, data);
|
3009 |
|
|
|
3010 |
|
|
input [7:0] addr;
|
3011 |
|
|
output [7:0] data;
|
3012 |
|
|
|
3013 |
|
|
reg [7:0] data;
|
3014 |
|
|
|
3015 |
|
|
always @(addr) case (addr)
|
3016 |
|
|
|
3017 |
|
|
8'h00: data = 8'h00; //
|
3018 |
|
|
8'h01: data = 8'h00; // f9
|
3019 |
|
|
8'h02: data = 8'h00; //
|
3020 |
|
|
8'h03: data = 8'h00; // f5
|
3021 |
|
|
8'h04: data = 8'h00; // f3
|
3022 |
|
|
8'h05: data = 8'h00; // f1
|
3023 |
|
|
8'h06: data = 8'h00; // f2
|
3024 |
|
|
8'h07: data = 8'h00; // f12
|
3025 |
|
|
8'h08: data = 8'h00; //
|
3026 |
|
|
8'h09: data = 8'h00; // f10
|
3027 |
|
|
8'h0A: data = 8'h00; // f8
|
3028 |
|
|
8'h0B: data = 8'h00; // f6
|
3029 |
|
|
8'h0C: data = 8'h00; // f4
|
3030 |
|
|
8'h0D: data = 8'h09; // tab
|
3031 |
|
|
8'h0E: data = 8'h60; // `
|
3032 |
|
|
8'h0F: data = 8'h00; //
|
3033 |
|
|
8'h10: data = 8'h00; //
|
3034 |
|
|
8'h11: data = 8'h00; // lft alt
|
3035 |
|
|
8'h12: data = 8'h00; // lft shift
|
3036 |
|
|
8'h13: data = 8'h00; //
|
3037 |
|
|
8'h14: data = 8'h00; // left ctl
|
3038 |
|
|
8'h15: data = 8'h71; // q
|
3039 |
|
|
8'h16: data = 8'h31; // 1
|
3040 |
|
|
8'h17: data = 8'h00; //
|
3041 |
|
|
8'h18: data = 8'h00; //
|
3042 |
|
|
8'h19: data = 8'h00; //
|
3043 |
|
|
8'h1A: data = 8'h7a; // z
|
3044 |
|
|
8'h1B: data = 8'h73; // s
|
3045 |
|
|
8'h1C: data = 8'h61; // a
|
3046 |
|
|
8'h1D: data = 8'h77; // w
|
3047 |
|
|
8'h1E: data = 8'h32; // 2
|
3048 |
|
|
8'h1F: data = 8'h00; //
|
3049 |
|
|
8'h20: data = 8'h00; //
|
3050 |
|
|
8'h21: data = 8'h63; // c
|
3051 |
|
|
8'h22: data = 8'h78; // x
|
3052 |
|
|
8'h23: data = 8'h64; // d
|
3053 |
|
|
8'h24: data = 8'h65; // e
|
3054 |
|
|
8'h25: data = 8'h34; // 4
|
3055 |
|
|
8'h26: data = 8'h33; // 3
|
3056 |
|
|
8'h27: data = 8'h00; //
|
3057 |
|
|
8'h28: data = 8'h00; //
|
3058 |
|
|
8'h29: data = 8'h20; // sp
|
3059 |
|
|
8'h2A: data = 8'h76; // v
|
3060 |
|
|
8'h2B: data = 8'h66; // f
|
3061 |
|
|
8'h2C: data = 8'h74; // t
|
3062 |
|
|
8'h2D: data = 8'h72; // r
|
3063 |
|
|
8'h2E: data = 8'h35; // 5
|
3064 |
|
|
8'h2F: data = 8'h00; //
|
3065 |
|
|
8'h30: data = 8'h00; //
|
3066 |
|
|
8'h31: data = 8'h6e; // n
|
3067 |
|
|
8'h32: data = 8'h62; // b
|
3068 |
|
|
8'h33: data = 8'h68; // h
|
3069 |
|
|
8'h34: data = 8'h67; // g
|
3070 |
|
|
8'h35: data = 8'h79; // y
|
3071 |
|
|
8'h36: data = 8'h36; // 6
|
3072 |
|
|
8'h37: data = 8'h00; //
|
3073 |
|
|
8'h38: data = 8'h00; //
|
3074 |
|
|
8'h39: data = 8'h00; //
|
3075 |
|
|
8'h3A: data = 8'h6d; // m
|
3076 |
|
|
8'h3B: data = 8'h6a; // j
|
3077 |
|
|
8'h3C: data = 8'h75; // u
|
3078 |
|
|
8'h3D: data = 8'h37; // 7
|
3079 |
|
|
8'h3E: data = 8'h38; // 8
|
3080 |
|
|
8'h3F: data = 8'h00; //
|
3081 |
|
|
8'h40: data = 8'h00; //
|
3082 |
|
|
8'h41: data = 8'h2c; // ,
|
3083 |
|
|
8'h42: data = 8'h6b; // k
|
3084 |
|
|
8'h43: data = 8'h69; // i
|
3085 |
|
|
8'h44: data = 8'h6f; // o
|
3086 |
|
|
8'h45: data = 8'h30; // 0
|
3087 |
|
|
8'h46: data = 8'h39; // 9
|
3088 |
|
|
8'h47: data = 8'h00; //
|
3089 |
|
|
8'h48: data = 8'h00; //
|
3090 |
|
|
8'h49: data = 8'h2e; // .
|
3091 |
|
|
8'h4A: data = 8'h2f; // /
|
3092 |
|
|
8'h4B: data = 8'h6c; // l
|
3093 |
|
|
8'h4C: data = 8'h3b; // ;
|
3094 |
|
|
8'h4D: data = 8'h70; // p
|
3095 |
|
|
8'h4E: data = 8'h2d; // -
|
3096 |
|
|
8'h4F: data = 8'h00; //
|
3097 |
|
|
8'h50: data = 8'h00; //
|
3098 |
|
|
8'h51: data = 8'h00; //
|
3099 |
|
|
8'h52: data = 8'h27; // '
|
3100 |
|
|
8'h53: data = 8'h00; //
|
3101 |
|
|
8'h54: data = 8'h5b; // [
|
3102 |
|
|
8'h55: data = 8'h3d; // =
|
3103 |
|
|
8'h56: data = 8'h00; //
|
3104 |
|
|
8'h57: data = 8'h00; //
|
3105 |
|
|
8'h58: data = 8'h00; // caps lock
|
3106 |
|
|
8'h59: data = 8'h00; // rgt shift
|
3107 |
|
|
8'h5A: data = 8'h0D; // ent
|
3108 |
|
|
8'h5B: data = 8'h5d; // ]
|
3109 |
|
|
8'h5C: data = 8'h00; //
|
3110 |
|
|
8'h5D: data = 8'h5c; // \
|
3111 |
|
|
8'h5E: data = 8'h00; //
|
3112 |
|
|
8'h5F: data = 8'h00; //
|
3113 |
|
|
8'h60: data = 8'h00; //
|
3114 |
|
|
8'h61: data = 8'h00; //
|
3115 |
|
|
8'h62: data = 8'h00; //
|
3116 |
|
|
8'h63: data = 8'h00; //
|
3117 |
|
|
8'h64: data = 8'h00; //
|
3118 |
|
|
8'h65: data = 8'h00; //
|
3119 |
|
|
8'h66: data = 8'h08; // bcksp
|
3120 |
|
|
8'h67: data = 8'h00; //
|
3121 |
|
|
8'h68: data = 8'h00; //
|
3122 |
|
|
8'h69: data = 8'h31; // 1
|
3123 |
|
|
8'h6A: data = 8'h00; //
|
3124 |
|
|
8'h6B: data = 8'h34; // 4
|
3125 |
|
|
8'h6C: data = 8'h37; // 7
|
3126 |
|
|
8'h6D: data = 8'h00; //
|
3127 |
|
|
8'h6E: data = 8'h00; //
|
3128 |
|
|
8'h6F: data = 8'h00; //
|
3129 |
|
|
8'h70: data = 8'h30; // 0
|
3130 |
|
|
8'h71: data = 8'h2e; // .
|
3131 |
|
|
8'h72: data = 8'h32; // 2
|
3132 |
|
|
8'h73: data = 8'h35; // 5
|
3133 |
|
|
8'h74: data = 8'h36; // 6
|
3134 |
|
|
8'h75: data = 8'h38; // 8
|
3135 |
|
|
8'h76: data = 8'h1B; // esc
|
3136 |
|
|
8'h77: data = 8'h00; // num lock
|
3137 |
|
|
8'h78: data = 8'h00; // f11
|
3138 |
|
|
8'h79: data = 8'h2b; // +
|
3139 |
|
|
8'h7A: data = 8'h33; // 3
|
3140 |
|
|
8'h7B: data = 8'h2d; // -
|
3141 |
|
|
8'h7C: data = 8'h2a; // -
|
3142 |
|
|
8'h7D: data = 8'h39; // 9
|
3143 |
|
|
8'h7E: data = 8'h00; // scl lock
|
3144 |
|
|
8'h7F: data = 8'h00; //
|
3145 |
|
|
8'h80: data = 8'h00; //
|
3146 |
|
|
8'h81: data = 8'h00; //
|
3147 |
|
|
8'h82: data = 8'h00; //
|
3148 |
|
|
8'h83: data = 8'h00; // f7
|
3149 |
|
|
8'h84: data = 8'h00; //
|
3150 |
|
|
8'h85: data = 8'h00; //
|
3151 |
|
|
8'h86: data = 8'h00; //
|
3152 |
|
|
8'h87: data = 8'h00; //
|
3153 |
|
|
8'h88: data = 8'h00; //
|
3154 |
|
|
8'h89: data = 8'h00; //
|
3155 |
|
|
8'h8A: data = 8'h00; //
|
3156 |
|
|
8'h8B: data = 8'h00; //
|
3157 |
|
|
8'h8C: data = 8'h00; //
|
3158 |
|
|
8'h8D: data = 8'h00; //
|
3159 |
|
|
8'h8E: data = 8'h00; //
|
3160 |
|
|
8'h8F: data = 8'h00; //
|
3161 |
|
|
|
3162 |
|
|
default data = 8'b00000000; // blank
|
3163 |
|
|
|
3164 |
|
|
endcase
|
3165 |
|
|
|
3166 |
|
|
endmodule
|
3167 |
|
|
|
3168 |
|
|
// upper case version
|
3169 |
|
|
|
3170 |
|
|
module scnromu(addr, data);
|
3171 |
|
|
|
3172 |
|
|
input [7:0] addr;
|
3173 |
|
|
output [7:0] data;
|
3174 |
|
|
|
3175 |
|
|
reg [7:0] data;
|
3176 |
|
|
|
3177 |
|
|
always @(addr) case (addr)
|
3178 |
|
|
|
3179 |
|
|
8'h00: data = 8'h00; //
|
3180 |
|
|
8'h01: data = 8'h00; // f9
|
3181 |
|
|
8'h02: data = 8'h00; //
|
3182 |
|
|
8'h03: data = 8'h00; // f5
|
3183 |
|
|
8'h04: data = 8'h00; // f3
|
3184 |
|
|
8'h05: data = 8'h00; // f1
|
3185 |
|
|
8'h06: data = 8'h00; // f2
|
3186 |
|
|
8'h07: data = 8'h00; // f12
|
3187 |
|
|
8'h08: data = 8'h00; //
|
3188 |
|
|
8'h09: data = 8'h00; // f10
|
3189 |
|
|
8'h0A: data = 8'h00; // f8
|
3190 |
|
|
8'h0B: data = 8'h00; // f6
|
3191 |
|
|
8'h0C: data = 8'h00; // f4
|
3192 |
|
|
8'h0D: data = 8'h09; // tab
|
3193 |
|
|
8'h0E: data = 8'h7e; // ~
|
3194 |
|
|
8'h0F: data = 8'h00; //
|
3195 |
|
|
8'h10: data = 8'h00; //
|
3196 |
|
|
8'h11: data = 8'h00; // lft alt
|
3197 |
|
|
8'h12: data = 8'h00; // lft shift
|
3198 |
|
|
8'h13: data = 8'h00; //
|
3199 |
|
|
8'h14: data = 8'h00; // lft ctl
|
3200 |
|
|
8'h15: data = 8'h51; // Q
|
3201 |
|
|
8'h16: data = 8'h21; // !
|
3202 |
|
|
8'h17: data = 8'h00; //
|
3203 |
|
|
8'h18: data = 8'h00; //
|
3204 |
|
|
8'h19: data = 8'h00; //
|
3205 |
|
|
8'h1A: data = 8'h5a; // Z
|
3206 |
|
|
8'h1B: data = 8'h53; // S
|
3207 |
|
|
8'h1C: data = 8'h41; // A
|
3208 |
|
|
8'h1D: data = 8'h57; // W
|
3209 |
|
|
8'h1E: data = 8'h40; // @
|
3210 |
|
|
8'h1F: data = 8'h00; //
|
3211 |
|
|
8'h20: data = 8'h00; //
|
3212 |
|
|
8'h21: data = 8'h43; // C
|
3213 |
|
|
8'h22: data = 8'h58; // X
|
3214 |
|
|
8'h23: data = 8'h44; // D
|
3215 |
|
|
8'h24: data = 8'h45; // E
|
3216 |
|
|
8'h25: data = 8'h24; // $
|
3217 |
|
|
8'h26: data = 8'h23; // #
|
3218 |
|
|
8'h27: data = 8'h00; //
|
3219 |
|
|
8'h28: data = 8'h00; //
|
3220 |
|
|
8'h29: data = 8'h20; // sp
|
3221 |
|
|
8'h2A: data = 8'h56; // V
|
3222 |
|
|
8'h2B: data = 8'h46; // F
|
3223 |
|
|
8'h2C: data = 8'h54; // T
|
3224 |
|
|
8'h2D: data = 8'h52; // R
|
3225 |
|
|
8'h2E: data = 8'h25; // %
|
3226 |
|
|
8'h2F: data = 8'h00; //
|
3227 |
|
|
8'h30: data = 8'h00; //
|
3228 |
|
|
8'h31: data = 8'h4e; // N
|
3229 |
|
|
8'h32: data = 8'h42; // B
|
3230 |
|
|
8'h33: data = 8'h48; // H
|
3231 |
|
|
8'h34: data = 8'h47; // G
|
3232 |
|
|
8'h35: data = 8'h59; // Y
|
3233 |
|
|
8'h36: data = 8'h5e; // ^
|
3234 |
|
|
8'h37: data = 8'h00; //
|
3235 |
|
|
8'h38: data = 8'h00; //
|
3236 |
|
|
8'h39: data = 8'h00; //
|
3237 |
|
|
8'h3A: data = 8'h4d; // M
|
3238 |
|
|
8'h3B: data = 8'h4a; // J
|
3239 |
|
|
8'h3C: data = 8'h55; // U
|
3240 |
|
|
8'h3D: data = 8'h26; // &
|
3241 |
|
|
8'h3E: data = 8'h2a; // *
|
3242 |
|
|
8'h3F: data = 8'h00; //
|
3243 |
|
|
8'h40: data = 8'h00; //
|
3244 |
|
|
8'h41: data = 8'h3c; // <
|
3245 |
|
|
8'h42: data = 8'h4b; // K
|
3246 |
|
|
8'h43: data = 8'h49; // I
|
3247 |
|
|
8'h44: data = 8'h4f; // O
|
3248 |
|
|
8'h45: data = 8'h29; // )
|
3249 |
|
|
8'h46: data = 8'h28; // (
|
3250 |
|
|
8'h47: data = 8'h00; //
|
3251 |
|
|
8'h48: data = 8'h00; //
|
3252 |
|
|
8'h49: data = 8'h3e; // >
|
3253 |
|
|
8'h4A: data = 8'h3f; // ?
|
3254 |
|
|
8'h4B: data = 8'h4c; // L
|
3255 |
|
|
8'h4C: data = 8'h3a; // :
|
3256 |
|
|
8'h4D: data = 8'h50; // P
|
3257 |
|
|
8'h4E: data = 8'h5f; // _
|
3258 |
|
|
8'h4F: data = 8'h00; //
|
3259 |
|
|
8'h50: data = 8'h00; //
|
3260 |
|
|
8'h51: data = 8'h00; //
|
3261 |
|
|
8'h52: data = 8'h22; // "
|
3262 |
|
|
8'h53: data = 8'h00; //
|
3263 |
|
|
8'h54: data = 8'h7b; // {
|
3264 |
|
|
8'h55: data = 8'h2b; // +
|
3265 |
|
|
8'h56: data = 8'h00; //
|
3266 |
|
|
8'h57: data = 8'h00; //
|
3267 |
|
|
8'h58: data = 8'h00; // caps lock
|
3268 |
|
|
8'h59: data = 8'h00; // rgt shift
|
3269 |
|
|
8'h5A: data = 8'h0D; // ent
|
3270 |
|
|
8'h5B: data = 8'h7d; // }
|
3271 |
|
|
8'h5C: data = 8'h00; //
|
3272 |
|
|
8'h5D: data = 8'h7c; // |
|
3273 |
|
|
8'h5E: data = 8'h00; //
|
3274 |
|
|
8'h5F: data = 8'h00; //
|
3275 |
|
|
8'h60: data = 8'h00; //
|
3276 |
|
|
8'h61: data = 8'h00; //
|
3277 |
|
|
8'h62: data = 8'h00; //
|
3278 |
|
|
8'h63: data = 8'h00; //
|
3279 |
|
|
8'h64: data = 8'h00; //
|
3280 |
|
|
8'h65: data = 8'h00; //
|
3281 |
|
|
8'h66: data = 8'h08; // bcksp
|
3282 |
|
|
8'h67: data = 8'h00; //
|
3283 |
|
|
8'h68: data = 8'h00; //
|
3284 |
|
|
8'h69: data = 8'h31; // 1
|
3285 |
|
|
8'h6A: data = 8'h00; //
|
3286 |
|
|
8'h6B: data = 8'h34; // 4
|
3287 |
|
|
8'h6C: data = 8'h37; // 7
|
3288 |
|
|
8'h6D: data = 8'h00; //
|
3289 |
|
|
8'h6E: data = 8'h00; //
|
3290 |
|
|
8'h6F: data = 8'h00; //
|
3291 |
|
|
8'h70: data = 8'h30; // 0
|
3292 |
|
|
8'h71: data = 8'h2e; // .
|
3293 |
|
|
8'h72: data = 8'h32; // 2
|
3294 |
|
|
8'h73: data = 8'h35; // 5
|
3295 |
|
|
8'h74: data = 8'h36; // 6
|
3296 |
|
|
8'h75: data = 8'h38; // 8
|
3297 |
|
|
8'h76: data = 8'h1B; // esc
|
3298 |
|
|
8'h77: data = 8'h00; // num lock
|
3299 |
|
|
8'h78: data = 8'h00; // f11
|
3300 |
|
|
8'h79: data = 8'h2b; // +
|
3301 |
|
|
8'h7A: data = 8'h33; // 3
|
3302 |
|
|
8'h7B: data = 8'h2d; // -
|
3303 |
|
|
8'h7C: data = 8'h2a; // *
|
3304 |
|
|
8'h7D: data = 8'h39; // 9
|
3305 |
|
|
8'h7E: data = 8'h00; // scl lock
|
3306 |
|
|
8'h7F: data = 8'h00; //
|
3307 |
|
|
8'h80: data = 8'h00; //
|
3308 |
|
|
8'h81: data = 8'h00; //
|
3309 |
|
|
8'h82: data = 8'h00; //
|
3310 |
|
|
8'h83: data = 8'h00; // f7
|
3311 |
|
|
8'h84: data = 8'h00; //
|
3312 |
|
|
8'h85: data = 8'h00; //
|
3313 |
|
|
8'h86: data = 8'h00; //
|
3314 |
|
|
8'h87: data = 8'h00; //
|
3315 |
|
|
8'h88: data = 8'h00; //
|
3316 |
|
|
8'h89: data = 8'h00; //
|
3317 |
|
|
8'h8A: data = 8'h00; //
|
3318 |
|
|
8'h8B: data = 8'h00; //
|
3319 |
|
|
8'h8C: data = 8'h00; //
|
3320 |
|
|
8'h8D: data = 8'h00; //
|
3321 |
|
|
8'h8E: data = 8'h00; //
|
3322 |
|
|
8'h8F: data = 8'h00; //
|
3323 |
|
|
|
3324 |
|
|
default data = 8'b00000000; // blank
|
3325 |
|
|
|
3326 |
|
|
endcase
|
3327 |
|
|
|
3328 |
|
|
endmodule
|