1 |
11 |
ste.fis |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
2 |
|
|
;; This sourcecode is released under BSD license.
|
3 |
|
|
;; Please see http://www.opensource.org/licenses/bsd-license.php for details!
|
4 |
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
5 |
|
|
;;
|
6 |
|
|
;; Copyright (c) 2010, Stefan Fischer
|
7 |
|
|
;; All rights reserved.
|
8 |
|
|
;;
|
9 |
|
|
;; Redistribution and use in source and binary forms, with or without
|
10 |
|
|
;; modification, are permitted provided that the following conditions are met:
|
11 |
|
|
;;
|
12 |
|
|
;; * Redistributions of source code must retain the above copyright notice,
|
13 |
|
|
;; this list of conditions and the following disclaimer.
|
14 |
|
|
;; * Redistributions in binary form must reproduce the above copyright notice,
|
15 |
|
|
;; this list of conditions and the following disclaimer in the documentation
|
16 |
|
|
;; and/or other materials provided with the distribution.
|
17 |
|
|
;; * Neither the name of the author nor the names of his contributors may be
|
18 |
|
|
;; used to endorse or promote products derived from this software without
|
19 |
|
|
;; specific prior written permission.
|
20 |
|
|
;;
|
21 |
|
|
;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
22 |
|
|
;; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
23 |
|
|
;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
24 |
|
|
;; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
25 |
|
|
;; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
26 |
|
|
;; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
27 |
|
|
;; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
28 |
|
|
;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
29 |
|
|
;; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
30 |
|
|
;; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
31 |
|
|
;; POSSIBILITY OF SUCH DAMAGE.
|
32 |
|
|
;;
|
33 |
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
34 |
|
|
;; filename: pbwbuart.psm
|
35 |
|
|
;; description: uart example, demonstrating access to wishbone peripherals
|
36 |
|
|
;; todo4user: modify main program and uart code as needed, i. e. non-blocking
|
37 |
|
|
;; read and write transactions or data burst transfers
|
38 |
|
|
;; version: 0.0.0
|
39 |
|
|
;; changelog: - 0.0.0, initial release
|
40 |
|
|
;; - ...
|
41 |
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
42 |
|
|
|
43 |
|
|
|
44 |
|
|
; wishbone variables
|
45 |
|
|
NAMEREG sF , wb_addr
|
46 |
|
|
NAMEREG sE , wb_data ; also used as tmp-reg for status polling
|
47 |
|
|
|
48 |
|
|
; uart variables
|
49 |
|
|
NAMEREG sD , uart_data
|
50 |
|
|
|
51 |
|
|
|
52 |
|
|
ADDRESS 000
|
53 |
|
|
|
54 |
|
|
; main entry point
|
55 |
|
|
;;;;;;;;;;;;;;;;;;
|
56 |
|
|
|
57 |
|
|
DISABLE INTERRUPT
|
58 |
|
|
|
59 |
|
|
CALL uart_init
|
60 |
|
|
|
61 |
|
|
; obligatory "Hello World!" message
|
62 |
|
|
|
63 |
|
|
; new line
|
64 |
|
|
LOAD uart_data , ASCII_CR_CHAR
|
65 |
|
|
CALL uart_wr_byte
|
66 |
|
|
LOAD uart_data , ASCII_LF_CHAR
|
67 |
|
|
CALL uart_wr_byte
|
68 |
|
|
; H
|
69 |
|
|
LOAD uart_data , ASCII_H_UC
|
70 |
|
|
CALL uart_wr_byte
|
71 |
|
|
; e
|
72 |
|
|
LOAD uart_data , ASCII_E_LC
|
73 |
|
|
CALL uart_wr_byte
|
74 |
|
|
; l
|
75 |
|
|
LOAD uart_data , ASCII_L_LC
|
76 |
|
|
CALL uart_wr_byte
|
77 |
|
|
; l
|
78 |
|
|
LOAD uart_data , ASCII_L_LC
|
79 |
|
|
CALL uart_wr_byte
|
80 |
|
|
; o
|
81 |
|
|
LOAD uart_data , ASCII_O_LC
|
82 |
|
|
CALL uart_wr_byte
|
83 |
|
|
; space
|
84 |
|
|
LOAD uart_data , ASCII_SP_CHAR
|
85 |
|
|
CALL uart_wr_byte
|
86 |
|
|
; W
|
87 |
|
|
LOAD uart_data , ASCII_W_UC
|
88 |
|
|
CALL uart_wr_byte
|
89 |
|
|
; o
|
90 |
|
|
LOAD uart_data , ASCII_O_LC
|
91 |
|
|
CALL uart_wr_byte
|
92 |
|
|
; r
|
93 |
|
|
LOAD uart_data , ASCII_R_LC
|
94 |
|
|
CALL uart_wr_byte
|
95 |
|
|
; l
|
96 |
|
|
LOAD uart_data , ASCII_L_LC
|
97 |
|
|
CALL uart_wr_byte
|
98 |
|
|
; d
|
99 |
|
|
LOAD uart_data , ASCII_D_LC
|
100 |
|
|
CALL uart_wr_byte
|
101 |
|
|
; !
|
102 |
|
|
LOAD uart_data , ASCII_EXCLAMATION_MARK_SIGN
|
103 |
|
|
CALL uart_wr_byte
|
104 |
|
|
; new line
|
105 |
|
|
LOAD uart_data , ASCII_CR_CHAR
|
106 |
|
|
CALL uart_wr_byte
|
107 |
|
|
LOAD uart_data , ASCII_LF_CHAR
|
108 |
|
|
CALL uart_wr_byte
|
109 |
|
|
|
110 |
|
|
; simple loopback of uart data
|
111 |
|
|
mainloop:
|
112 |
|
|
CALL uart_rd_byte
|
113 |
|
|
CALL uart_wr_byte
|
114 |
|
|
JUMP mainloop
|
115 |
|
|
|
116 |
|
|
|
117 |
|
|
; wbs_uart module subroutines and settings
|
118 |
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
119 |
|
|
|
120 |
|
|
; usage:
|
121 |
|
|
; 1. set baud rate in uart_init subroutine
|
122 |
|
|
; 2. call uart_init subroutine to configure wbs_uart module for operation
|
123 |
|
|
; 3. use uart_wr_byte and uart_rd_byte subroutines to access uart transceiver,
|
124 |
|
|
; all accesses are blocking, subroutines do not return, if wbs_uart tx buffer
|
125 |
|
|
; is full or rx buffer is empty
|
126 |
|
|
; uart write code =>
|
127 |
|
|
; LOAD uart_data , ; setting up data
|
128 |
|
|
; CALL uart_wr_byte ; writing data to uart module
|
129 |
|
|
;
|
130 |
|
|
; uart read code =>
|
131 |
|
|
; CALL uart_rd_byte ; reading data from uart module
|
132 |
|
|
; LOAD , uart_data ; uart_data is updated now
|
133 |
|
|
;
|
134 |
|
|
; 4. uart_clr_buff subroutine can be used to discard wbs_uart rx buffer contents
|
135 |
|
|
; during software runtime
|
136 |
|
|
|
137 |
|
|
; uart start-up configuration, i. e. baudrate
|
138 |
|
|
uart_init:
|
139 |
|
|
; setting baud rate
|
140 |
|
|
LOAD wb_addr , UART_BAUD_LO_ADDR
|
141 |
|
|
LOAD wb_data , UART_BAUD_LO_115200_VALUE
|
142 |
|
|
CALL wb_wr
|
143 |
|
|
LOAD wb_addr , UART_BAUD_HI_ADDR
|
144 |
|
|
LOAD wb_data , UART_BAUD_HI_115200_VALUE
|
145 |
|
|
CALL wb_wr
|
146 |
|
|
; clear uart receive buffer, after power up and change of baud rate, there is
|
147 |
|
|
; maybe invalid data in it
|
148 |
|
|
CALL uart_clr_buff
|
149 |
|
|
RETURN
|
150 |
|
|
|
151 |
|
|
; blocking write byte to uart
|
152 |
|
|
uart_wr_byte:
|
153 |
|
|
LOAD wb_addr , UART_RXTX_ADDR
|
154 |
|
|
LOAD wb_data , uart_data
|
155 |
|
|
CALL wb_wr
|
156 |
|
|
RETURN
|
157 |
|
|
|
158 |
|
|
; blocking read byte from uart
|
159 |
|
|
uart_rd_byte:
|
160 |
|
|
LOAD wb_addr , UART_RXTX_ADDR
|
161 |
|
|
CALL wb_rd
|
162 |
|
|
LOAD uart_data , wb_data
|
163 |
|
|
RETURN
|
164 |
|
|
|
165 |
|
|
; uart rx buffer clear
|
166 |
|
|
uart_clr_buff:
|
167 |
|
|
; uart receive buffer software reset, checking status register for level and
|
168 |
|
|
; reading out all available data
|
169 |
|
|
LOAD wb_addr , UART_SR_ADDR ; setting status register address
|
170 |
|
|
CALL wb_rd
|
171 |
|
|
; checking data present flag
|
172 |
|
|
TEST wb_data , UART_SR_RX_DP_FLAG
|
173 |
|
|
; if flag is not set, returning immediately
|
174 |
22 |
ste.fis |
RETURN Z
|
175 |
11 |
ste.fis |
; else reading out next byte and checking flag again
|
176 |
22 |
ste.fis |
CALL uart_rd_byte
|
177 |
|
|
JUMP uart_clr_buff
|
178 |
11 |
ste.fis |
|
179 |
|
|
; register and flag addressing
|
180 |
|
|
CONSTANT UART_RXTX_ADDR , 00 ; receive/transmit data pipe
|
181 |
|
|
CONSTANT UART_SR_ADDR , 01 ; status register
|
182 |
|
|
CONSTANT UART_SR_RX_F_FLAG , 01 ; status rx full
|
183 |
|
|
CONSTANT UART_SR_RX_HF_FLAG , 02 ; status rx half full
|
184 |
|
|
CONSTANT UART_SR_RX_DP_FLAG , 04 ; status rx data present
|
185 |
|
|
CONSTANT UART_SR_TX_F_FLAG , 10 ; status tx full
|
186 |
|
|
CONSTANT UART_SR_TX_HF_FLAG , 20 ; status tx half full
|
187 |
|
|
CONSTANT UART_BAUD_LO_ADDR , 02 ; baud rate cfg. register / low byte
|
188 |
|
|
CONSTANT UART_BAUD_HI_ADDR , 03 ; baud rate cfg. register / high byte
|
189 |
|
|
|
190 |
|
|
; baud rate configuration:
|
191 |
|
|
; baud_limit = round( system clock frequency / (16 * baud rate) ) - 1
|
192 |
|
|
; i. e. 9600 baud at 50 MHz system clock =>
|
193 |
|
|
; baud_limit = round( 50.0E6 / (16 * 9600) ) - 1 = 325 = 0x0145
|
194 |
|
|
|
195 |
|
|
; WARNING, baud rate error should not exceed 1.0 % for reliable operation!
|
196 |
|
|
|
197 |
|
|
; baud rate settings for 50.0E6 Hz system reference clock
|
198 |
|
|
; max. 3125000.0 baud
|
199 |
|
|
; min. 48.0 baud (16 bit baud timer)
|
200 |
|
|
CONSTANT UART_BAUD_LO_300_VALUE , B0 ; actual baud rate 299.99
|
201 |
|
|
CONSTANT UART_BAUD_HI_300_VALUE , 28 ; => baud rate error 0.003 %
|
202 |
|
|
CONSTANT UART_BAUD_LO_600_VALUE , 57 ; actual baud rate 600.04
|
203 |
|
|
CONSTANT UART_BAUD_HI_600_VALUE , 14 ; => baud rate error 0.006 %
|
204 |
|
|
CONSTANT UART_BAUD_LO_1200_VALUE , 2B ; actual baud rate 1200.08
|
205 |
|
|
CONSTANT UART_BAUD_HI_1200_VALUE , 0A ; => baud rate error 0.006 %
|
206 |
|
|
CONSTANT UART_BAUD_LO_2400_VALUE , 15 ; actual baud rate 2400.15
|
207 |
|
|
CONSTANT UART_BAUD_HI_2400_VALUE , 05 ; => baud rate error 0.006 %
|
208 |
|
|
CONSTANT UART_BAUD_LO_4800_VALUE , 8A ; actual baud rate 4800.31
|
209 |
|
|
CONSTANT UART_BAUD_HI_4800_VALUE , 02 ; => baud rate error 0.006 %
|
210 |
|
|
CONSTANT UART_BAUD_LO_9600_VALUE , 45 ; actual baud rate 9585.89
|
211 |
|
|
CONSTANT UART_BAUD_HI_9600_VALUE , 01 ; => baud rate error 0.147 %
|
212 |
|
|
CONSTANT UART_BAUD_LO_19200_VALUE , A2 ; actual baud rate 19171.78
|
213 |
|
|
CONSTANT UART_BAUD_HI_19200_VALUE , 00 ; => baud rate error 0.147 %
|
214 |
|
|
CONSTANT UART_BAUD_LO_38400_VALUE , 50 ; actual baud rate 38580.25
|
215 |
|
|
CONSTANT UART_BAUD_HI_38400_VALUE , 00 ; => baud rate error 0.467 %
|
216 |
|
|
CONSTANT UART_BAUD_LO_57600_VALUE , 35 ; actual baud rate 57870.37
|
217 |
|
|
CONSTANT UART_BAUD_HI_57600_VALUE , 00 ; => baud rate error 0.467 %
|
218 |
|
|
CONSTANT UART_BAUD_LO_115200_VALUE , 1A ; actual baud rate 115740.74
|
219 |
|
|
CONSTANT UART_BAUD_HI_115200_VALUE , 00 ; => baud rate error 0.467 %
|
220 |
|
|
;CONSTANT UART_BAUD_LO_230400_VALUE , 0D ; actual baud rate 223214.29
|
221 |
|
|
;CONSTANT UART_BAUD_HI_230400_VALUE , 00 ; => baud rate error 3.219 %
|
222 |
|
|
;CONSTANT UART_BAUD_LO_460800_VALUE , 06 ; actual baud rate 446428.57
|
223 |
|
|
;CONSTANT UART_BAUD_HI_460800_VALUE , 00 ; => baud rate error 3.219 %
|
224 |
|
|
;CONSTANT UART_BAUD_LO_921600_VALUE , 02 ; actual baud rate 1041666.67
|
225 |
|
|
;CONSTANT UART_BAUD_HI_921600_VALUE , 00 ; => baud rate error 11.526 %
|
226 |
|
|
|
227 |
|
|
|
228 |
|
|
; wbm_picoblaze module subroutines and settings
|
229 |
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
230 |
|
|
|
231 |
|
|
; subroutines wb_wr and wb_rd are working together with external wbm_picoblaze
|
232 |
|
|
; wishbone adapter module and therefore should not be modified. wb_wait_on_ack
|
233 |
|
|
; is a supporting subroutine, which should not be called directly
|
234 |
|
|
;
|
235 |
|
|
; transfer principle wishbone write:
|
236 |
|
|
; 1. OUTPUT cycle to set up wishbone address, data and control signals from
|
237 |
|
|
; PORT_ID, OUT_PORT and WRITE_STROBE
|
238 |
|
|
; 2. INPUT cycle(s) to poll wishbone peripheral acknowledgement using IN_PORT
|
239 |
|
|
; => at least one OUTPUT and one INPUT cycle for a write
|
240 |
|
|
;
|
241 |
|
|
; transfer principle wishbone read:
|
242 |
|
|
; 1. INPUT cycle to set up wishbone address and control signals from PORT_ID
|
243 |
|
|
; and READ_STROBE
|
244 |
|
|
; 2. INPUT cycle(s) to poll wishbone peripheral acknowledgement using IN_PORT
|
245 |
|
|
; 3. the very next INPUT cycle after acknowledgement contains valid wishbone
|
246 |
|
|
; data from IN_PORT
|
247 |
|
|
; => at least three INPUT cycles for a read
|
248 |
|
|
;
|
249 |
|
|
; calling examples:
|
250 |
|
|
;
|
251 |
|
|
; wishbone write code =>
|
252 |
|
|
;
|
253 |
|
|
; LOAD wb_addr , ; setting up address
|
254 |
|
|
; LOAD wb_data , ; setting up data
|
255 |
|
|
; CALL wb_wr ; starting wishbone write cycle
|
256 |
|
|
; ; wishbone cycle finished
|
257 |
|
|
;
|
258 |
|
|
; wishbone read code =>
|
259 |
|
|
;
|
260 |
|
|
; LOAD wb_addr , ; setting up address
|
261 |
|
|
; CALL wb_rd ; starting wishbone read cycle
|
262 |
|
|
; LOAD , wb_data ; wb_data is updated now
|
263 |
|
|
; ; wishbone cycle finished
|
264 |
|
|
|
265 |
|
|
; wishbone write access
|
266 |
|
|
wb_wr:
|
267 |
|
|
OUTPUT wb_data , (wb_addr)
|
268 |
|
|
CALL wb_wait_on_ack
|
269 |
|
|
RETURN
|
270 |
|
|
|
271 |
|
|
; wishbone read access
|
272 |
|
|
wb_rd:
|
273 |
|
|
CALL wb_wait_on_ack
|
274 |
|
|
INPUT wb_data , (wb_addr)
|
275 |
|
|
RETURN
|
276 |
|
|
|
277 |
|
|
; waiting on wishbone cycle to complete
|
278 |
|
|
wb_wait_on_ack:
|
279 |
|
|
INPUT wb_data , (wb_addr)
|
280 |
|
|
TEST wb_data , WB_ACK_FLAG
|
281 |
|
|
JUMP Z , wb_wait_on_ack
|
282 |
|
|
RETURN
|
283 |
|
|
|
284 |
|
|
CONSTANT WB_ACK_FLAG , 01
|
285 |
|
|
|
286 |
|
|
|
287 |
|
|
; interrupt subroutines and settings
|
288 |
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
289 |
|
|
|
290 |
|
|
; IMPORTANT NOTICE!
|
291 |
|
|
; be carefull, if using interrupts. wishbone cycles must be atomar, as any
|
292 |
|
|
; other processor local bus cycles are normally be. interrupting wishbone
|
293 |
|
|
; access may cause a crash of external wishbone master fsm, especially, if
|
294 |
|
|
; program flow through isr leads to another wishbone cycle!
|
295 |
|
|
|
296 |
|
|
; interrupt handling template, if needed
|
297 |
|
|
isr:
|
298 |
|
|
RETURNI DISABLE
|
299 |
|
|
ADDRESS 3FF
|
300 |
|
|
JUMP isr
|
301 |
|
|
|
302 |
|
|
|
303 |
|
|
; ascii table
|
304 |
|
|
;;;;;;;;;;;;;
|
305 |
|
|
|
306 |
|
|
CONSTANT ASCII_NUL_CHAR , 00 ; NUL
|
307 |
|
|
CONSTANT ASCII_SOH_CHAR , 01 ; SOH
|
308 |
|
|
CONSTANT ASCII_STX_CHAR , 02 ; STX
|
309 |
|
|
CONSTANT ASCII_ETX_CHAR , 03 ; ETX
|
310 |
|
|
CONSTANT ASCII_EOT_CHAR , 04 ; EOT
|
311 |
|
|
CONSTANT ASCII_ENQ_CHAR , 05 ; ENQ
|
312 |
|
|
CONSTANT ASCII_ACK_CHAR , 06 ; ACK
|
313 |
|
|
CONSTANT ASCII_BEL_CHAR , 07 ; BEL
|
314 |
|
|
CONSTANT ASCII_BS_CHAR , 08 ; BS
|
315 |
|
|
CONSTANT ASCII_TAB_CHAR , 09 ; TAB
|
316 |
|
|
CONSTANT ASCII_LF_CHAR , 0A ; LF
|
317 |
|
|
CONSTANT ASCII_VT_CHAR , 0B ; VT
|
318 |
|
|
CONSTANT ASCII_FF_CHAR , 0C ; FF
|
319 |
|
|
CONSTANT ASCII_CR_CHAR , 0D ; CR
|
320 |
|
|
CONSTANT ASCII_SO_CHAR , 0E ; SO
|
321 |
|
|
CONSTANT ASCII_SI_CHAR , 0F ; SI
|
322 |
|
|
CONSTANT ASCII_DLE_CHAR , 10 ; DLE
|
323 |
|
|
CONSTANT ASCII_DC1_CHAR , 11 ; DC1
|
324 |
|
|
CONSTANT ASCII_DC2_CHAR , 12 ; DC2
|
325 |
|
|
CONSTANT ASCII_DC3_CHAR , 13 ; DC3
|
326 |
|
|
CONSTANT ASCII_DC4_CHAR , 14 ; DC4
|
327 |
|
|
CONSTANT ASCII_NAK_CHAR , 15 ; NAK
|
328 |
|
|
CONSTANT ASCII_SYN_CHAR , 16 ; SYN
|
329 |
|
|
CONSTANT ASCII_ETB_CHAR , 17 ; ETB
|
330 |
|
|
CONSTANT ASCII_CAN_CHAR , 18 ; CAN
|
331 |
|
|
CONSTANT ASCII_EM_CHAR , 19 ; EM
|
332 |
|
|
CONSTANT ASCII_SUB_CHAR , 1A ; SUB
|
333 |
|
|
CONSTANT ASCII_ESC_CHAR , 1B ; ESC
|
334 |
|
|
CONSTANT ASCII_FS_CHAR , 1C ; FS
|
335 |
|
|
CONSTANT ASCII_GS_CHAR , 1D ; GS
|
336 |
|
|
CONSTANT ASCII_RS_CHAR , 1E ; RS
|
337 |
|
|
CONSTANT ASCII_US_CHAR , 1F ; US
|
338 |
|
|
CONSTANT ASCII_SP_CHAR , 20 ; SP
|
339 |
|
|
CONSTANT ASCII_EXCLAMATION_MARK_SIGN , 21 ; !
|
340 |
|
|
CONSTANT ASCII_DOUBLE_QUOTE_SIGN , 22 ; "
|
341 |
|
|
CONSTANT ASCII_NUMBER_SIGN , 23 ; #
|
342 |
|
|
CONSTANT ASCII_DOLLAR_SIGN , 24 ; $
|
343 |
|
|
CONSTANT ASCII_PERCENT_SIGN , 25 ; %
|
344 |
|
|
CONSTANT ASCII_AMPERSAND_SIGN , 26 ; &
|
345 |
|
|
CONSTANT ASCII_SINGLE_QUOTE_SIGN , 27 ; '
|
346 |
|
|
CONSTANT ASCII_OPN_PARENTHESIS_SIGN , 28 ; (
|
347 |
|
|
CONSTANT ASCII_CLS_PARENTHESIS_SIGN , 29 ; )
|
348 |
|
|
CONSTANT ASCII_ASTERISK_SIGN , 2A ; *
|
349 |
|
|
CONSTANT ASCII_PLUS_SIGN , 2B ; +
|
350 |
|
|
CONSTANT ASCII_COMMA_SIGN , 2C ; ,
|
351 |
|
|
CONSTANT ASCII_MINUS_SIGN , 2D ; -
|
352 |
|
|
CONSTANT ASCII_DOT_SIGN , 2E ; .
|
353 |
|
|
CONSTANT ASCII_SLASH_SIGN , 2F ; /
|
354 |
|
|
CONSTANT ASCII_0_DIGIT , 30 ; 0
|
355 |
|
|
CONSTANT ASCII_1_DIGIT , 31 ; 1
|
356 |
|
|
CONSTANT ASCII_2_DIGIT , 32 ; 2
|
357 |
|
|
CONSTANT ASCII_3_DIGIT , 33 ; 3
|
358 |
|
|
CONSTANT ASCII_4_DIGIT , 34 ; 4
|
359 |
|
|
CONSTANT ASCII_5_DIGIT , 35 ; 5
|
360 |
|
|
CONSTANT ASCII_6_DIGIT , 36 ; 6
|
361 |
|
|
CONSTANT ASCII_7_DIGIT , 37 ; 7
|
362 |
|
|
CONSTANT ASCII_8_DIGIT , 38 ; 8
|
363 |
|
|
CONSTANT ASCII_9_DIGIT , 39 ; 9
|
364 |
|
|
CONSTANT ASCII_COLON_SIGN , 3A ; :
|
365 |
|
|
CONSTANT ASCII_SEMICOLON_SIGN , 3B ; ;
|
366 |
|
|
CONSTANT ASCII_LESS_THAN_SIGN , 3C ; <
|
367 |
|
|
CONSTANT ASCII_EQUAL_SIGN , 3D ; =
|
368 |
|
|
CONSTANT ASCII_GREATER_THAN_SIGN , 3E ; >
|
369 |
|
|
CONSTANT ASCII_QUESTION_MARK_SIGN , 3F ; ?
|
370 |
|
|
CONSTANT ASCII_AT_SIGN , 40 ; @
|
371 |
|
|
CONSTANT ASCII_A_UC , 41 ; A
|
372 |
|
|
CONSTANT ASCII_B_UC , 42 ; B
|
373 |
|
|
CONSTANT ASCII_C_UC , 43 ; C
|
374 |
|
|
CONSTANT ASCII_D_UC , 44 ; D
|
375 |
|
|
CONSTANT ASCII_E_UC , 45 ; E
|
376 |
|
|
CONSTANT ASCII_F_UC , 46 ; F
|
377 |
|
|
CONSTANT ASCII_G_UC , 47 ; G
|
378 |
|
|
CONSTANT ASCII_H_UC , 48 ; H
|
379 |
|
|
CONSTANT ASCII_I_UC , 49 ; I
|
380 |
|
|
CONSTANT ASCII_J_UC , 4A ; J
|
381 |
|
|
CONSTANT ASCII_K_UC , 4B ; K
|
382 |
|
|
CONSTANT ASCII_L_UC , 4C ; L
|
383 |
|
|
CONSTANT ASCII_M_UC , 4D ; M
|
384 |
|
|
CONSTANT ASCII_N_UC , 4E ; N
|
385 |
|
|
CONSTANT ASCII_O_UC , 4F ; O
|
386 |
|
|
CONSTANT ASCII_P_UC , 50 ; P
|
387 |
|
|
CONSTANT ASCII_Q_UC , 51 ; Q
|
388 |
|
|
CONSTANT ASCII_R_UC , 52 ; R
|
389 |
|
|
CONSTANT ASCII_S_UC , 53 ; S
|
390 |
|
|
CONSTANT ASCII_T_UC , 54 ; T
|
391 |
|
|
CONSTANT ASCII_U_UC , 55 ; U
|
392 |
|
|
CONSTANT ASCII_V_UC , 56 ; V
|
393 |
|
|
CONSTANT ASCII_W_UC , 57 ; W
|
394 |
|
|
CONSTANT ASCII_X_UC , 58 ; X
|
395 |
|
|
CONSTANT ASCII_Y_UC , 59 ; Y
|
396 |
|
|
CONSTANT ASCII_Z_UC , 5A ; Z
|
397 |
|
|
CONSTANT ASCII_OPN_BRACKET_SIGN , 5B ; [
|
398 |
|
|
CONSTANT ASCII_BACKSLASH_SIGN , 5C ; \
|
399 |
|
|
CONSTANT ASCII_CLS_BRACKET_SIGN , 5D ; ]
|
400 |
|
|
CONSTANT ASCII_CARET_SIGN , 5E ; ^
|
401 |
|
|
CONSTANT ASCII_UNDERSCORE_SIGN , 5F ; _
|
402 |
|
|
CONSTANT ASCII_ACCENT_SIGN , 60 ; `
|
403 |
|
|
CONSTANT ASCII_A_LC , 61 ; a
|
404 |
|
|
CONSTANT ASCII_B_LC , 62 ; b
|
405 |
|
|
CONSTANT ASCII_C_LC , 63 ; c
|
406 |
|
|
CONSTANT ASCII_D_LC , 64 ; d
|
407 |
|
|
CONSTANT ASCII_E_LC , 65 ; e
|
408 |
|
|
CONSTANT ASCII_F_LC , 66 ; f
|
409 |
|
|
CONSTANT ASCII_G_LC , 67 ; g
|
410 |
|
|
CONSTANT ASCII_H_LC , 68 ; h
|
411 |
|
|
CONSTANT ASCII_I_LC , 69 ; i
|
412 |
|
|
CONSTANT ASCII_J_LC , 6A ; j
|
413 |
|
|
CONSTANT ASCII_K_LC , 6B ; k
|
414 |
|
|
CONSTANT ASCII_L_LC , 6C ; l
|
415 |
|
|
CONSTANT ASCII_M_LC , 6D ; m
|
416 |
|
|
CONSTANT ASCII_N_LC , 6E ; n
|
417 |
|
|
CONSTANT ASCII_O_LC , 6F ; o
|
418 |
|
|
CONSTANT ASCII_P_LC , 70 ; p
|
419 |
|
|
CONSTANT ASCII_Q_LC , 71 ; q
|
420 |
|
|
CONSTANT ASCII_R_LC , 72 ; r
|
421 |
|
|
CONSTANT ASCII_S_LC , 73 ; s
|
422 |
|
|
CONSTANT ASCII_T_LC , 74 ; t
|
423 |
|
|
CONSTANT ASCII_U_LC , 75 ; u
|
424 |
|
|
CONSTANT ASCII_V_LC , 76 ; v
|
425 |
|
|
CONSTANT ASCII_W_LC , 77 ; w
|
426 |
|
|
CONSTANT ASCII_X_LC , 78 ; x
|
427 |
|
|
CONSTANT ASCII_Y_LC , 79 ; y
|
428 |
|
|
CONSTANT ASCII_Z_LC , 7A ; z
|
429 |
|
|
CONSTANT ASCII_OPN_BRACE_SIGN , 7B ; {
|
430 |
|
|
CONSTANT ASCII_VERTICAL_BAR_SIGN , 7C ; |
|
431 |
|
|
CONSTANT ASCII_CLS_BRACE_SIGN , 7D ; }
|
432 |
|
|
CONSTANT ASCII_TILDE_SIGN , 7E ; ~
|
433 |
|
|
CONSTANT ASCII_DEL_CHAR , 7F ; DEL
|