#ifndef __ASCII_H__
#define __ASCII_H__

/* pulled from http://www.asciitable.com */
#define ASCII_NUL        0x00 // (null character)
#define ASCII_SOH        0x01 // (start of header)
#define ASCII_STX        0x02 // (start of text)
#define ASCII_ETX        0x03 // (end of text)
#define ASCII_EOT        0x04 // (end of transmission)
#define ASCII_ENQ        0x05 // (enquiry)
#define ASCII_ACK        0x06 // (acknowledgement)
#define ASCII_BEL        0x07 // (bell)
#define ASCII_BS         0x08 // (backspace)
#define ASCII_HT         0x09 // (horizontal tab)
#define ASCII_LF         0x0a // (line feed)
#define ASCII_VT         0x0b // (vertical tab)
#define ASCII_FF         0x0c // (form feed)
#define ASCII_CR         0x0d // (carriage return)
#define ASCII_SO         0x0e // (shift out)
#define ASCII_SI         0x0f // (shift in)

#define ASCII_DLE        0x10 // (data link escape)
#define ASCII_DC1        0x11 // (device control 1)
#define ASCII_DC2        0x12 // (device control 2)
#define ASCII_DC3        0x13 // (device control 3)
#define ASCII_DC4        0x14 // (device control 4)
#define ASCII_NAK        0x15 // (negative acknowledgement)
#define ASCII_SYN        0x16 // (synchronous idle)
#define ASCII_ETB        0x17 // (end of trans. block)
#define ASCII_CAN        0x18 // (cancel)
#define ASCII_EM         0x19 // (end of medium)
#define ASCII_SUB        0x1a // (substitute)
#define ASCII_ESC        0x1b // (escape)
#define ASCII_FS         0x1c // (file separator)
#define ASCII_GS         0x1d // (group separator)
#define ASCII_RS         0x1e // (record separator)
#define ASCII_US         0x1f // (unit separator)

#define ASCII_SPACE      0x20 // space
#define ASCII_BANG       0x21 // ! (exclamation mark)
#define ASCII_QUOTE      0x22 // " (quotation mark)
#define ASCII_NUMBER     0x23 // # (number sign)
#define ASCII_DOLLAR     0x24 // $ (dollar sign)
#define ASCII_PERCENT    0x25 // % (percentage sign)
#define ASCII_AMPERSAND  0x26 // & (ampersand)
#define ASCII_APOSTROPHE 0x27 // ' (single quote)
#define ASCII_LPAREN     0x28 // ( (left parenthesis)
#define ASCII_RPAREN     0x29 // ) (right parenthesis)
#define ASCII_ASTERISK   0x2a // * (asterisk)
#define ASCII_PLUS       0x2b // + (plus)
#define ASCII_COMMA      0x2c // , (comma)
#define ASCII_HYPHEN     0x2d // - (HYPHEN)
#define ASCII_DOT        0x2e // . (dot, full stop)
#define ASCII_SLASH      0x2f // / (slash)

#define ASCII_0          0x30 // 0
#define ASCII_1          0x31 // 1
#define ASCII_2          0x32 // 2
#define ASCII_3          0x33 // 3
#define ASCII_4          0x34 // 4
#define ASCII_5          0x35 // 5
#define ASCII_6          0x36 // 6
#define ASCII_7          0x37 // 7
#define ASCII_8          0x38 // 8
#define ASCII_9          0x39 // 9
#define ASCII_COLON      0x3a // :
#define ASCII_SEMICOLON  0x3b // ;
#define ASCII_LESS       0x3c // <
#define ASCII_EQUALS     0x3d // =
#define ASCII_GREATER    0x3e // >
#define ASCII_QUESTION   0x3f // ?

#define ASCII_AT         0x40 // @
#define ASCII_A          0x41 // A
#define ASCII_B          0x42 // B
#define ASCII_C          0x43 // C
#define ASCII_D          0x44 // D
#define ASCII_E          0x45 // E
#define ASCII_F          0x46 // F
#define ASCII_G          0x47 // G
#define ASCII_H          0x48 // H
#define ASCII_I          0x49 // I
#define ASCII_J          0x4a // J
#define ASCII_K          0x4b // K
#define ASCII_L          0x4c // L
#define ASCII_M          0x4d // M
#define ASCII_N          0x4e // N
#define ASCII_O          0x4f // O

#define ASCII_P          0x50 // P
#define ASCII_Q          0x51 // Q
#define ASCII_R          0x52 // R
#define ASCII_S          0x53 // S
#define ASCII_T          0x54 // T
#define ASCII_U          0x55 // U
#define ASCII_V          0x56 // V
#define ASCII_W          0x57 // W
#define ASCII_X          0x58 // X
#define ASCII_Y          0x59 // Y
#define ASCII_Z          0x5a // Z
#define ASCII_LBRACK     0x5b // [
#define ASCII_BACKSLASH  0x5c /* \ */
#define ASCII_RBRACK     0x5d // ]
#define ASCII_CARET      0x5e // ^
#define ASCII__          0x5f // _

#define ASCII_GRAVE      0x60 // `
#define ASCII_a          0x61 // a
#define ASCII_b          0x62 // b
#define ASCII_c          0x63 // c
#define ASCII_d          0x64 // d
#define ASCII_e          0x65 // e
#define ASCII_f          0x66 // f
#define ASCII_g          0x67 // g
#define ASCII_h          0x68 // h
#define ASCII_i          0x69 // i
#define ASCII_j          0x6a // j
#define ASCII_k          0x6b // k
#define ASCII_l          0x6c // l
#define ASCII_m          0x6d // m
#define ASCII_n          0x6e // n
#define ASCII_o          0x6f // o

#define ASCII_p          0x70 // p
#define ASCII_q          0x71 // q
#define ASCII_r          0x72 // r
#define ASCII_s          0x73 // s
#define ASCII_t          0x74 // t
#define ASCII_u          0x75 // u
#define ASCII_v          0x76 // v
#define ASCII_w          0x77 // w
#define ASCII_x          0x78 // x
#define ASCII_y          0x79 // y
#define ASCII_z          0x7a // z
#define ASCII_LCURLY     0x7b // {
#define ASCII_VERT       0x7c // |
#define ASCII_RCURLY     0x7d // }
#define ASCII_TILDE      0x7e // ~
#define ASCII_DEL        0x7f // (delete)

#endif //__ASCII_H__
