├── binto1802.c ├── examples ├── Echo.txt ├── Hello.txt ├── QBlink.txt ├── QBlinker.txt ├── bcd.hex ├── bcd.txt ├── bcd1.txt ├── bcdcount.txt ├── bios.txt ├── blink.hex ├── dice.txt ├── disp.hex └── readme.md ├── lib └── readme.txt ├── monitor-readme.txt ├── platformio.ini ├── readme.md └── src ├── 1802.cpp ├── 1802.h ├── 1802bios.cpp ├── 1802config.h ├── 1802etops.h ├── 1802exec.cpp ├── 1802hilo.h ├── 1802idiot.h ├── 1802io.cpp ├── 1802mon.cpp ├── 1802rom.h ├── SSD1306Ascii.cpp ├── SSD1306Ascii.h ├── SSD1306AsciiAvrI2c.h ├── SSD1306init.h ├── data └── morse ├── fonts ├── Adafruit5x7.h ├── Arial14.h ├── Arial_bold_14.h ├── CalBlk36.h ├── CalLite24.h ├── Callibri10.h ├── Callibri11.h ├── Callibri11_bold.h ├── Callibri11_italic.h ├── Callibri14.h ├── Callibri15.h ├── Cooper19.h ├── Cooper21.h ├── Cooper26.h ├── Corsiva_12.h ├── Iain5x7.h ├── Roosewood22.h ├── Roosewood26.h ├── Stang5x7.h ├── System5x7.h ├── SystemFont5x7.h ├── TimesNewRoman13.h ├── TimesNewRoman13_italic.h ├── TimesNewRoman16.h ├── TimesNewRoman16_bold.h ├── TimesNewRoman16_italic.h ├── Verdana12.h ├── Verdana12_bold.h ├── Verdana12_italic.h ├── Verdana_digits_24.h ├── Wendy3x5.h ├── X11fixed7x14.h ├── X11fixed7x14B.h ├── ZevvPeep8x16.h ├── allFonts.h ├── cp437font8x8.h ├── fixed_bold10x15.h ├── fixednums15x31.h ├── fixednums7x15.h ├── fixednums8x16.h ├── font5x7.h ├── font8x8.h ├── junk.jnk ├── lcd5x7.h ├── lcdnums12x16.h ├── lcdnums14x24.h ├── newbasic3x5.h └── utf8font10x16.h ├── ihex.cpp ├── ihex.h ├── ihex1802.cpp ├── ihex1802.h ├── ihexout.cpp ├── ihexout.h ├── main.cpp ├── main.h ├── startrek.h └── utility ├── AvrI2c.h ├── DigitalOutput.h └── oled calcs.xlsx /binto1802.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main(int argc, char *argv[]) 4 | { 5 | int byte; 6 | FILE *bin; 7 | int group=0; 8 | 9 | if (argc!=2) 10 | { 11 | fprintf(stderr,"Usage: binto1802 binaryfile\n"); 12 | return 1; 13 | } 14 | bin=fopen(argv[1],"rb"); 15 | if (!bin) 16 | { 17 | perror(argv[1]); 18 | return 2; 19 | } 20 | printf("@0000:\n"); 21 | while ((byte=getc(bin))!=EOF) 22 | { 23 | printf("%02X ",byte); 24 | if (++group==16) 25 | { 26 | group=0; 27 | printf("\n"); 28 | } 29 | } 30 | printf(".\n"); 31 | fclose(bin); 32 | return 0; 33 | } 34 | 35 | 36 | -------------------------------------------------------------------------------- /examples/Echo.txt: -------------------------------------------------------------------------------- 1 | @0000:F8 01 A1 B1 E1 69 32 05 64 30 00 . 2 | -------------------------------------------------------------------------------- /examples/Hello.txt: -------------------------------------------------------------------------------- 1 | @0000:F8 00 B5 F8 1B A5 E5 72 32 0D 61 30 07 2 | F8 00 A9 AA 2A 8A 3A 11 29 89 3A 11 30 00 3 | 48 45 4C 4C 4F 21 0d 0a 00 . 4 | -------------------------------------------------------------------------------- /examples/QBlink.txt: -------------------------------------------------------------------------------- 1 | @0000:7A 7B 30 00 . 2 | -------------------------------------------------------------------------------- /examples/QBlinker.txt: -------------------------------------------------------------------------------- 1 | @0000:F8 00 A9 AA 7B 2A 8A 3A 04 29 89 3A 04 7A 2A 8A 3A 0e 29 89 3A 0e 30 04 . 2 | 3 | -------------------------------------------------------------------------------- /examples/bcd.hex: -------------------------------------------------------------------------------- 1 | :1000000090B2F8FFA2E26CBFFA0F739FFAF0767617 2 | :1000100073767660F47E60F45264223F1B371D30A5 3 | :1000200006000000000000000000000000000000CA 4 | :00000001FF 5 | -------------------------------------------------------------------------------- /examples/bcd.txt: -------------------------------------------------------------------------------- 1 | @0000:90 B2 F8 FF A2 E2 6C BF FA 0F 73 9F FA F0 76 76 2 | 73 76 76 60 F4 7E 60 F4 52 64 22 3F 1B 37 1D 30 3 | 06 . 4 | -------------------------------------------------------------------------------- /examples/bcd1.txt: -------------------------------------------------------------------------------- 1 | @0000:90 B2 F8 FF A2 E2 6C BF FA 0F 73 9F FA F0 76 76 2 | 73 76 76 60 F4 7E 60 F4 52 64 22 00 30 3 | 06 . 4 | -------------------------------------------------------------------------------- /examples/bcdcount.txt: -------------------------------------------------------------------------------- 1 | @0000: 2 | E1 F8 00 B1 B4 F8 40 A1 64 21 F0 FC 01 A3 FA 0F 3 | FF 0A 3A 21 83 FA F0 FC 10 A3 FF A0 3A 21 F8 00 4 | A3 83 51 F8 21 A4 31 2B 7B 30 2C 7A 24 84 3A 26 5 | F8 01 B4 A4 24 84 3A 34 94 3A 34 30 08 . 6 | 7 | -------------------------------------------------------------------------------- /examples/bios.txt: -------------------------------------------------------------------------------- 1 | @0000: 2 | F8 03 B2 F8 FF A2 E2 F8 00 B6 F8 20 A6 C0 FF 3F 3 | 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4 | D4 00 28 30 23 00 00 00 D4 FF 66 41 42 43 0D 0A 5 | 00 D5 . 6 | -------------------------------------------------------------------------------- /examples/blink.hex: -------------------------------------------------------------------------------- 1 | :040000007B7A3000D7 2 | :00000401FB 3 | -------------------------------------------------------------------------------- /examples/dice.txt: -------------------------------------------------------------------------------- 1 | @0000:64 01 64 02 64 03 64 04 64 05 64 06 30 00 . 2 | -------------------------------------------------------------------------------- /examples/disp.hex: -------------------------------------------------------------------------------- 1 | :1500000090B2F8FFA26702E2F8AA5262F8555263F8915264002E 2 | :00001501EA 3 | -------------------------------------------------------------------------------- /examples/readme.md: -------------------------------------------------------------------------------- 1 | Send these files over the serial port (9600 8 1 N) then reset and go. Files with a .txt extension are in 1802UNO format (the @ sign in the front causes them to load, so just send them to the 1802UNO while in front panel mode). The files that end in .hex are in Intel hex file format. Use the X command in front panel mode to load them. 2 | 3 | Note: To use the terminal as an ASCII input device you need to send | one time and then it will stay in force until you reboot the device (not an 1802 reset). 4 | 5 | You can also turn this on programtically (and off, too) using the control 6 | port. However, note that once you turn the terminal to this mode, you 7 | can't upload over the serial port (until you power off/on). 8 | 9 | * QBlink.txt - Blink the Q LED fast 10 | 11 | * blink.hex - Same thing in Intel hex format (use X command to load) 12 | 13 | * QBlinker.txt - Blink the LED slower 14 | 15 | * Echo.txt - Once you turn the serial terminal to ASCII (|) you can press a key to see its hex value on the LEDs. Note: this assumes you have not remapped the ports (port 1 is the terminal and port 4 is the LEDs). 16 | 17 | * Hello.txt - Say Hello! 18 | 19 | * dice.txt - From QuestData. Press Go to roll dice and stop to see the value. NOTE: this works because P=0 and X=0 at reboot! So 64 is an immediate output command when X==P==0 since OUT reads M[R[X]] and does R[X]++. How cool! 20 | 21 | * bcd.txt - My first program published in QuestData! You do your decimal data entry (00-99) and press GO to see the result. Now you can enter a new value and press enter. The logic, by the way, is 2*(M/4+M/16)+L. Note that this is the same as 2*(5*M/16)+L or 10*M/16+L. Where M=the top digit unshifted and L is the bottom digit. So for number 92, M=90 and L=2 (hex). Remember 16 is 10 hex so in hex you get 0A*90/10+2. 22 | 23 | * bcd.hex - Same as above in Intel hex file format. 24 | 25 | * bcd1.txt - Same as above but uses IDL to stop the processor while waiting for input. Press run to continue. 26 | 27 | * bcdcount.txt - Count from 00-99 on LEDs. 28 | 29 | * disp.hex - Displays AA5591 on the address and data displays 30 | 31 | * bios.txt - Print ABC\r\n on the terminal using simulated BIOS calls and SCRT 32 | -------------------------------------------------------------------------------- /lib/readme.txt: -------------------------------------------------------------------------------- 1 | 2 | This directory is intended for the project specific (private) libraries. 3 | PlatformIO will compile them to static libraries and link to executable file. 4 | 5 | The source code of each library should be placed in separate directory, like 6 | "lib/private_lib/[here are source files]". 7 | 8 | For example, see how can be organized `Foo` and `Bar` libraries: 9 | 10 | |--lib 11 | | |--Bar 12 | | | |--docs 13 | | | |--examples 14 | | | |--src 15 | | | |- Bar.c 16 | | | |- Bar.h 17 | | |--Foo 18 | | | |- Foo.c 19 | | | |- Foo.h 20 | | |- readme.txt --> THIS FILE 21 | |- platformio.ini 22 | |--src 23 | |- main.c 24 | 25 | Then in `src/main.c` you should use: 26 | 27 | #include 28 | #include 29 | 30 | // rest H/C/CPP code 31 | 32 | PlatformIO will find your libraries automatically, configure preprocessor's 33 | include paths and build them. 34 | 35 | More information about PlatformIO Library Dependency Finder 36 | - http://docs.platformio.org/page/librarymanager/ldf.html 37 | -------------------------------------------------------------------------------- /monitor-readme.txt: -------------------------------------------------------------------------------- 1 | Enter Monitor mode with the \ key while in front panel mode. You do NOT have to switch the keyboard using the | character. Note the keyboard and display will be dead while the monitor is active. 2 | 3 | Here's the basic help: 4 | 5 | 6 | Commands: 7 | 8 | Note that backspace sort of works, kind of. 9 | 10 | R - Display all registers 11 | R2 - Display register 2 12 | R2=AA - Set register 2 to AA 13 | 14 | Note: X=10, P=11, D=12, DF=13, Q=14, and T=15 -- display all registers to see that list 15 | 16 | M 400 - Display 100 hex bytes at 400 17 | M 400 10 - Display 10 hex bytes at 400 18 | M 400=20 30 40; - Set data starting at 400 (end with semicolon) 19 | 20 | G 400 - Goto 400 21 | G 400 3 - Goto 400 with P=3 22 | 23 | B - List all enabled breakpoints 24 | B0 - - Disable Breakpoint 0 (that is a dash as in B0 -) 25 | BF @200 - Set breakpoint F to address 200 26 | BF P3 - Set breakpoint when P=3 27 | BF I7A - Set breakpoint when instruction 7A executes 28 | 29 | Note would be possible to do data write (or even read) breakpoints 30 | Would also be possible to do rnages of addresses, if desired 31 | 32 | N - Execute next instruction 33 | 34 | 35 | I 2 - Show input from N=2 36 | O 2 10 - Write 10 to output N=2 37 | 38 | Note: The keypad and display are dead while the monitor is in control 39 | 40 | X - Exit to front panel mode (not running) 41 | 42 | C - Exit and continue running (if already running) 43 | Q - Same as C 44 | 45 | Commands: 46 | 47 | R - Display all registers 48 | R2 - Display register 2 49 | R2=AA - Set register 2 to AA 50 | 51 | Note: X=10, P=11, D=12, DF=13, Q=14, and T=15 -- display all registers to see that list 52 | 53 | M 400 - Display 100 hex bytes at 400 54 | M 400 10 - Display 10 hex bytes at 400 55 | M 400=20 30 40; - Set data starting at 400 (end with semicolon) 56 | 57 | Note that you can use the first line with full backspace: 58 | M 400=20 30 40; 59 | 60 | But if you start a new line (you get a colon prompt), you will not be able to backspace past the current byte: 61 | 62 | M 400= 63 | : 20 30 40 64 | : 50 60 70; 65 | 66 | Backing up while entering 30 can only delete the 30 and not the 20. Also, instead of backing up you can just keep going 67 | as in: 68 | 69 | :M 400= 70 | : 200 300 400; 71 | 72 | All 3 bytes will then be zero. 73 | 74 | G 400 - Goto 400 75 | G 400 3 - Goto 400 with P=3 76 | 77 | B - List all enabled breakpoints 78 | B0 - - Disable Breakpoint 0 (that is a dash as in B0 -) 79 | BF @200 - Set breakpoint F to address 200 80 | BF P3 - Set breakpoint when P=3 81 | BF I7A - Set breakpoint when instruction 7A executes 82 | 83 | Note would be possible to do data write (or even read) breakpoints 84 | Would also be possible to do ranges of addresses, if desired 85 | 86 | N - Execute next instruction 87 | 88 | 89 | I 2 - Show input from N=2 90 | O 2 10 - Write 10 to output N=2 91 | 92 | 93 | X - Exit to front panel mode (not running) 94 | 95 | C - Exit and continue running (if already running) 96 | Q - Same as C 97 | 98 | .+ - Send next character(s) to the front panel interpreter (no spaces) 99 | 100 | The last command is pretty handy. For example: 101 | 102 | .44! 103 | 104 | Will set the data input (port 64) to 44 and then display the address and data 105 | LEDs on the terminal. 106 | 107 | .; is also useful (set/reset trace mode) 108 | 109 | For example, try this: 110 | 111 | .5A 112 | I 4 113 | 114 | You'll see that the input reads 5A, as set. 115 | 116 | 117 | Todo: 118 | 119 | Need to range check certain things. 120 | 121 | Note you still can't write to ROM. 122 | 123 | Note that MP is still respected. 124 | 125 | Maybe to do: 126 | Address range breakpoints 127 | Counted breakpoints 128 | Data read/write breakpoints (ranged) 129 | Rom patch system 130 | Control commands to manipulate port 7 131 | Control command to change display refresh interval 132 | -------------------------------------------------------------------------------- /platformio.ini: -------------------------------------------------------------------------------- 1 | ; PlatformIO Project Configuration File 2 | ; 3 | ; Build options: build flags, source filter 4 | ; Upload options: custom upload port, speed and extra flags 5 | ; Library options: dependencies, extra library storages 6 | ; Advanced options: extra scripting 7 | ; 8 | ; Please visit documentation for the other options and examples 9 | ; http://docs.platformio.org/page/projectconf.html 10 | 11 | [env:pro16MHzatmega168] 12 | platform = atmelavr 13 | board = pro16MHzatmega328 14 | framework = arduino 15 | upload_port = /dev/ttyUSB1 16 | -------------------------------------------------------------------------------- /src/1802.h: -------------------------------------------------------------------------------- 1 | #ifndef __1802_H 2 | #define __1802_H 3 | #include 4 | 5 | #include "1802config.h" 6 | 7 | // public interface 8 | void reset(void); // reset 9 | int run(void); // do an instruction, 0 means stop, negative means error (none yet) 10 | int exec1802(int ch); // do a loop cycle 11 | extern int noserial; 12 | 13 | // Stuff to link with other modules 14 | extern unsigned int idata; 15 | 16 | 17 | // CPU registers and stuff 18 | extern uint16_t reg[16]; 19 | extern uint8_t p,x,d,df,q,t; 20 | extern uint8_t ef1, ef2, ef3, ef4; 21 | extern uint8_t ef4term; 22 | 23 | extern uint8_t mp; // memory protect 24 | // RAM 25 | extern uint8_t ram[MAXMEM+1]; // main 1KB RAM 0x000-0x3FF 26 | 27 | // You can have 3 banks of ROMs (easy to add more) 28 | // This bank of ROM must be at lowest address of all ROMs 29 | extern const uint8_t rom0[]; 30 | extern uint16_t rombase0; 31 | 32 | extern const uint8_t rom1[]; 33 | extern uint16_t rombase1; 34 | 35 | extern const uint8_t rom2[]; 36 | extern uint16_t rombase2; 37 | 38 | extern uint8_t const *roms[]; 39 | extern uint16_t rombase[]; 40 | 41 | 42 | extern uint8_t adhigh; // high address display for I/O 43 | extern uint8_t adlow; // low address display for I/O 44 | extern int addisp; 45 | extern unsigned int data; 46 | // CPU states... run, load memory, or set address 47 | extern int runstate; 48 | extern int loadstate; 49 | extern int addstate; 50 | extern int tracemode; 51 | extern unsigned int caddress; // current load address 52 | 53 | uint8_t memread(uint16_t a); 54 | void memwrite(uint16_t a, uint8_t d); 55 | uint8_t input(uint8_t port); 56 | void output(uint8_t port, uint8_t val); 57 | void print2hex(uint8_t v); 58 | void print4hex(uint16_t v); 59 | void updateLEDdata(void); 60 | 61 | #if MONITOR==1 62 | int monitor(void); 63 | typedef struct 64 | { 65 | uint8_t type; // 0 = off, 1=add, 2=p, 3==i 66 | uint16_t target; 67 | } BP; 68 | 69 | 70 | extern BP bp[16]; 71 | 72 | int mon_checkbp(void); 73 | extern int monactive; 74 | 75 | 76 | #endif 77 | 78 | 79 | 80 | #if BIOS==1 81 | int bios(uint16_t fn); 82 | #endif 83 | 84 | #endif 85 | -------------------------------------------------------------------------------- /src/1802bios.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | Note we use FF01 as a made up SCALL and FF02 as SRET 3 | These should never be transfer control addresses in a real BIOS so... 4 | 5 | FF3F - Setup SCRT (jump with ret in R6) 6 | FF2D - Set up baud rate 7 | FF66 - Print string 8 | FF03 - Send char with 0ch translation 9 | FF4e - Send char 10 | f809 - Send char 11 | 12 | 13 | */ 14 | 15 | 16 | #include 17 | #include "main.h" 18 | #include "1802.h" 19 | 20 | 21 | #if BIOS == 1 22 | 23 | 24 | int bios(uint16_t fn) { 25 | switch (fn) { 26 | case 0xFF01: // made up SCALL 27 | { 28 | uint16_t cv; 29 | // Some code depends on RE.0 = D after a CALL or RETURN 30 | reg[0xe] = (reg[0xe] & 0xFF00) | (d & 0xFF); 31 | 32 | cv = memread(reg[3]) << 8; 33 | cv |= memread(reg[3] + 1); 34 | x = 2; 35 | memwrite(reg[2], reg[6]); 36 | memwrite(reg[2] - 1, reg[6] >> 8); 37 | reg[2] -= 2; 38 | reg[6] = reg[3] + 2; 39 | reg[3] = cv; 40 | p = 3; 41 | reg[4] = 0xFF01; // reset for next call 42 | } 43 | 44 | break; 45 | 46 | case 0xFF02: // made us RET 47 | // Some code depends on RE.0 = D after a CALL or RETURN 48 | reg[0xe] = (reg[0xe] & 0xFF00) | (d & 0xFF); 49 | reg[2]++; 50 | reg[3] = reg[6]; 51 | reg[6] = memread(reg[2]) << 8; 52 | reg[6] |= memread(reg[2] + 1); 53 | reg[2]++; 54 | p = 3; 55 | reg[5] = 0xFF02; 56 | x = 2; 57 | break; 58 | 59 | case 0xFF3F: // set up SCRT 60 | reg[4] = 0xFF01; 61 | reg[5] = 0xFF02; 62 | reg[3] = reg[6]; // assume this wasn't a proper call because we were not set up yet... 63 | p = 3; 64 | break; 65 | 66 | 67 | case 0xFF2d: // Baud rate, not needed here 68 | reg[0xe] = reg[0xe] & 0xFF; // select UART 69 | reg[0xe] |= 0x100; // turn on echo by default 70 | p = 5; 71 | break; 72 | 73 | case 0xFF6C: // serial break 74 | df = 0; // for now no break. TODO: You could read a character to a single byte buffer every time and patch read and check to look there first before querying hardware then you could see if ^C was waiting 75 | p = 5; 76 | break; 77 | 78 | case 0xFF66: // print a string 79 | { 80 | char c; 81 | do { 82 | c = memread(reg[6]++); 83 | if (c) Serial.print(c); 84 | } while (c); 85 | p = 5; 86 | } 87 | break; 88 | 89 | case 0xFF03: 90 | case 0xFF4e: 91 | case 0xf809: 92 | { 93 | char c = d; 94 | if (c == 0xC && (fn == 0xf809 || fn == 0xFF03)) { 95 | Serial.print("\x1b[2J"); 96 | } else 97 | Serial.print(c); 98 | p = 5; 99 | } 100 | break; 101 | 102 | 103 | 104 | case 0xf80c: // uread 105 | case 0xFF06: 106 | { 107 | int c; 108 | do { 109 | 110 | c = Serial.read(); 111 | if (c > 0 && (reg[0xe] & 0x100)) { 112 | char echo = c; 113 | Serial.print(echo); 114 | } 115 | } while (c == -1); 116 | d = c; 117 | p = 5; 118 | } 119 | break; 120 | 121 | 122 | case 0xFF09: 123 | { 124 | char c; 125 | do { 126 | c = memread(reg[0xf]++); 127 | if (c) Serial.print(c); 128 | } while (c); 129 | p = 5; 130 | } 131 | break; 132 | 133 | case 0xFF81: 134 | reg[0xf] = 8; 135 | p = 5; 136 | break; 137 | 138 | case 0xf80f: // key avail? 139 | df = Serial.available() ? 1 : 0; 140 | p = 5; 141 | break; 142 | 143 | 144 | case 0xFF0F: 145 | case 0xFF69: 146 | { 147 | int c; 148 | int n = 0; 149 | int l = 254; 150 | uint16_t ptr = reg[0xF]; 151 | char echo; 152 | 153 | if (fn == 0xFF69) l = reg[0xc] - 1; 154 | do { 155 | do { 156 | c = Serial.read(); 157 | echo = c; 158 | } while (c == -1 || c == 0); 159 | if (c == 0xD) { 160 | c = 0; 161 | df = 0; 162 | } 163 | if (c == 3) { 164 | c = 0; 165 | df = 1; 166 | } 167 | if (c == 8 || c == 0xFF) { 168 | if (n) { 169 | ptr--; 170 | n--; 171 | if (reg[0xe] & 0x100) Serial.print("\x8 \x8"); 172 | } 173 | continue; 174 | } 175 | if (c && n == l) continue; 176 | memwrite(ptr++, c); 177 | n++; 178 | if (c >=0 && (reg[0xe] & 0x100)) Serial.print(echo); 179 | } while (c != 0); 180 | 181 | p = 5; 182 | } 183 | 184 | break; 185 | 186 | // NOTE MUST REDO THIS ONE... DOES NOT WORK IN ROM! 187 | case 0xFF12: 188 | { 189 | #if 0 190 | char *p1=ram+reg[0xf]; 191 | char *p2=ram+reg[0xd]; 192 | d=strcmp(p1,p2); 193 | p=5; 194 | #else 195 | char p1, p2; 196 | d = 0; 197 | do { 198 | p1 = memread(reg[0xf]); 199 | p2 = memread(reg[0xd]); 200 | if (p1 == p2 && p1 == 0) break; // strings equal 201 | if (p1 == 0 || p1 < p2) { 202 | d = 0xFF; 203 | break; 204 | } // I think I got these right 205 | if (p2 == 0 || p1 > p2) { 206 | d = 1; 207 | break; 208 | } 209 | reg[0xf] = reg[0xf] + 1; 210 | reg[0xd] = reg[0xd] + 1; 211 | } while (1); 212 | p = 5; 213 | #endif 214 | } 215 | 216 | break; 217 | 218 | 219 | case 0xFF15: 220 | { 221 | char c; 222 | do { 223 | c = memread(reg[0xf]++); 224 | } while (c && isspace(c)); 225 | reg[0xf]--; 226 | p = 5; 227 | } 228 | break; 229 | 230 | case 0xFF18: 231 | { 232 | char c; 233 | do { 234 | c = memread(reg[0xf]++); 235 | memwrite(reg[0xd]++, c); 236 | } while (c); 237 | } 238 | p = 5; 239 | 240 | break; 241 | 242 | case 0xFF1B: 243 | while (reg[0xC]--) 244 | memwrite(reg[0xd]++, reg[0xF]++); 245 | p = 5; 246 | break; 247 | 248 | case 0xFF54: // not sure this really works as expected 249 | monitor(); 250 | p = 5; 251 | break; 252 | 253 | 254 | case 0xFF57: 255 | reg[0xf] = 0x7EFF; // last address (ROM takes 7F00 as worksapce) 256 | p = 5; 257 | break; 258 | 259 | 260 | default: 261 | return 0; 262 | } 263 | 264 | return 1; 265 | } 266 | 267 | 268 | #endif 269 | -------------------------------------------------------------------------------- /src/1802config.h: -------------------------------------------------------------------------------- 1 | /* Configuration stuff for 1802UNO */ 2 | // Configuration 3 | 4 | // Define to 1 for simulation monitor built-in 5 | #define MONITOR 1 6 | #define BIOS 1 // partial BIOS implementation (experimental) 7 | // remove this to cut out OLED code -- if you don't have the OLED you must not compile this 8 | // or the machine will hang 9 | // - NOTE: if you have an OLED connected, you MUST define OLED. If you don't, you MUST undefine it. !!!!!!!!!!!!!!!!!!!!!! READ THIS !!!!!!!!!!!!!!!!!!!! 10 | //#define OLED 11 | 12 | 13 | 14 | #if BIOS==1 15 | #if MONITOR==0 16 | #error Must enable MONITOR when BIOS enabled 17 | #endif 18 | #endif 19 | 20 | 21 | 22 | // Note: MAXMEM is a mask, so don't make it something like 0x500 23 | // Since the Arduino Pro Mini has 2K of RAM--and we use a good bit of that 24 | // this will probably never be more than 0x3FF and certainly could not be 25 | // more than 0x7FF (which would mean on RAM for the rest of the program!) 26 | // So in reality, probably 0x3FF or less unless you port to a CPU 27 | // with more RAM 28 | #define MAXMEM 0x3FF // maximum memory address; important: only 1K of EEPROM to store stuff in and not much RAM anyway 29 | #define LED_PORT 4 // port for DATA LED display 30 | #define SW_PORT 4 // Front panel switch port 31 | #define CTL_PORT 7 // Control port 32 | #define A0_PORT 2 // LSD address display output port 33 | #define A1_PORT 3 // MSD address display output port 34 | #ifdef OLED 35 | #define PIXIEPORT 1 36 | #define SER_INP 6 37 | #define SER_OUT 6 38 | #else 39 | #define SER_INP 1 // UART input port 40 | #define SER_OUT 1 // UART output port 41 | #endif 42 | 43 | // How many cycles between display refreshes? 44 | // Higher makes the simulation faster, but the screen more blinky 45 | #define DISPLAY_DIVISOR 32 // number of ticks between display refresh 46 | #define NICE_VALUE 40 // number of times to execute instructions while lighting LEDs (0 to disable) 47 | -------------------------------------------------------------------------------- /src/1802etops.h: -------------------------------------------------------------------------------- 1 | // Modified from http://www.elf-emulation.com/software/rctops.html 2 | // THe original was in Popular Electronics 3 | 4 | uint16_t ROM_BASEVAR=ROM_BASE; 5 | 6 | 7 | const uint8_t PROGMEM ROM_ARRAY[]= 8 | { 9 | 0x30, 0X3B, // Jump to end to patch the load of R2 to point to ram 10 | 0xf8, 0XFF, // change this to point to ram 11 | 0xa2, 12 | 0xe2, 13 | 0x90, 14 | 0xb3, 15 | 0xf8, 0x0c, 16 | 0xa3, 17 | 0xd3, 18 | 0x6c, 19 | 0x64, 20 | 0x22, 21 | 0xa1, 22 | 0x3f, 0x10, 23 | 0x37, 0x12, 24 | 0x6c, 25 | 0x64, 26 | 0x22, 27 | 0xb0, 28 | 0x3f, 0x18, 29 | 0x37, 0x1a, 30 | 0x6c, 31 | 0x64, 32 | 0x22, 33 | 0xa0, 34 | 0x81, 35 | 0x3a, 0x24, 36 | 0xd0, 37 | 0xff, 0x01, 38 | 0x32, 0x29, 39 | 0x7b, 40 | 0x3f, 0x29, 41 | 0x80, 42 | 0x52, 43 | 0x64, 44 | 0x22, 45 | 0x37, 0x2f, 46 | 0x39, 0x35, 47 | 0x6c, 48 | 0x50, 49 | 0x40, 50 | 0x52, 51 | 0x64, 52 | 0x22, 53 | 0x30, 0x29, 54 | 0xF8, 0x03, // patch to move R2 to RAM 55 | 0xb2, 56 | 0x30, 0x02 57 | }; 58 | -------------------------------------------------------------------------------- /src/1802exec.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | #include "1802.h" 5 | #include "main.h" 6 | #include "ihex1802.h" 7 | 8 | // CPU states... run, load memory, or set address 9 | int runstate = 0; 10 | int loadstate = 0; 11 | int addstate = 0; // this is bogus but handy 12 | int tracemode = 0; 13 | uint8_t ef4term = 0; 14 | 15 | // Properly print two hex digits 16 | void print2hex(uint8_t v) { 17 | if (v < 0x10) Serial.print('0'); 18 | Serial.print(v, HEX); 19 | } 20 | 21 | void print4hex(uint16_t v) { 22 | print2hex(v >> 8); 23 | print2hex(v); 24 | } 25 | 26 | void updateLEDdata(void) { 27 | // address should show load address or execution address 28 | if (runstate) { 29 | if (addisp) setaddress(adhigh << 8 | adlow); 30 | else setaddress(reg[p]); 31 | } 32 | 33 | if (loadstate) setaddress(caddress); 34 | // set up data display 35 | setdata(data); 36 | // set up DP LEDs 37 | setdp(0, q); 38 | setdp(1, loadstate != 0); 39 | setdp(2, runstate); 40 | if (ef4 == 0) ef4 = ef4term; 41 | setdp(3, ef4); 42 | setdp(4, mp != 0); 43 | } 44 | 45 | 46 | 47 | // Do an execution cycle 48 | int exec1802(int ch) { 49 | int rv = 1; 50 | 51 | // commands 52 | // Go = run 53 | // ST = Stop run or load 54 | // RS = Reset 55 | // AD = Copy extended data to load address 56 | // + - ef4 57 | // DA - load 58 | // PC - memory protect on 59 | // SST - step 60 | // otherwise we build up a hex number in data (which is 16-bits but only 61 | // the lower 8 bits show and are used in most cases) 62 | // Should we stop running? 63 | ch = ch >= 'a' && ch <= 'z' ? ch & 0xDF : ch; // convert to upper case 64 | #if MONITOR == 1 65 | if (ch == '\\') { 66 | monitor(); 67 | return 1; 68 | } 69 | #endif 70 | 71 | // meta keys (1 second press) 72 | if (ch == '>') // save 1K to EEPROM 73 | { 74 | int ptr; 75 | reset(); 76 | for (ptr = 0; ptr <= (MAXMEM < 0x3FF ? MAXMEM : 0x3FF); ptr++) EEPROM.write(ptr, ram[ptr]); 77 | return 0; 78 | } 79 | if (ch == '<' && mp == 0 && runstate == 0) // load 1K from EEPROM if not MP and not running 80 | { 81 | int ptr; 82 | for (ptr = 0; ptr <= (MAXMEM < 0x3FF ? MAXMEM : 0x3FF); ptr++) ram[ptr] = EEPROM.read(ptr); 83 | reset(); 84 | return 0; 85 | } 86 | // end temporary 87 | if (ch == '@' && mp == 0) // load memory from serial 88 | { 89 | uint16_t ptr = 0; 90 | uint8_t val = 0; 91 | int state = 0; 92 | while (state == 0) { 93 | int c; 94 | while ((c = Serialread()) == -1) 95 | ; 96 | if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')) { 97 | ptr <<= 4; 98 | if (c >= 'a') c = c - 'a' + 10; 99 | else if (c >= 'A') c = c - 'A' + 10; 100 | else c -= '0'; 101 | ptr += c; 102 | } else { 103 | state = 4; 104 | } 105 | } 106 | while (state == 1 || state == 4) { 107 | int c; 108 | while ((c = Serialread()) == -1) 109 | ; 110 | if (state == 4 && (c < '0' && c != '.')) continue; 111 | else state = 1; // skip multiple whitespace 112 | if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')) { 113 | val <<= 4; 114 | if (c >= 'a') c = c - 'a' + 10; 115 | else if (c >= 'A') c = c - 'A' + 10; 116 | else c -= '0'; 117 | val += c; 118 | } else if (c == '.') state = 3; 119 | else { 120 | ram[ptr++] = val; 121 | state = 4; 122 | val = 0; 123 | } 124 | } 125 | return 1; 126 | } 127 | if (ch == '!') { 128 | for (int i = 0; i < 3; i++) 129 | for (int j = 0; j < 2; j++) { 130 | if (i == 2 && j == 0) Serial.print(" "); 131 | Serial.print(threeHex[i][j], HEX); 132 | } 133 | Serial.println(""); 134 | Serial.print("LEDS: Q="); 135 | Serial.print(q); 136 | Serial.print(" Load="); 137 | Serial.print(loadstate!=0); 138 | Serial.print(" Run: "); 139 | Serial.print(runstate!=0); 140 | Serial.print(" EF4="); 141 | Serial.print(ef4!=0); 142 | Serial.print(" MP="); 143 | Serial.println(mp!=0); 144 | return 1; 145 | } 146 | if (ch == 'Y' || ch == 'y') // write intel hex 147 | { 148 | ihexo1802 writer; 149 | Serial.println(""); 150 | writer.write(ram, MAXMEM); 151 | return 1; 152 | } 153 | 154 | if (ch == 'X' || ch == 'x') // read intel hex 155 | { 156 | ihex1802 reader; 157 | reader.read(); 158 | return 1; 159 | } 160 | if (ch == '?') // dump memory to serial 161 | { 162 | uint16_t ptr; 163 | int group = 0; 164 | Serial.println("@0000:"); 165 | for (ptr = 0; ptr <= MAXMEM; ptr++) { 166 | print2hex(ram[ptr]); 167 | group++; 168 | if (group == 16) { 169 | Serial.print("\r\n"); 170 | group = 0; 171 | } else Serial.print(' '); 172 | } 173 | Serial.print(".\n"); 174 | return 1; 175 | } 176 | if (ch == ';') tracemode ^= 1; // trace toggle 177 | if (ch == '*') // dump processor state 178 | { 179 | int j; 180 | Serial.println(); 181 | for (j = 0; j < 16; j++) { 182 | Serial.print('R'); 183 | Serial.print(j, HEX); 184 | Serial.print(':'); 185 | print4hex(reg[j]); 186 | Serial.println(""); 187 | } 188 | Serial.print("DR:"); 189 | print2hex(d); 190 | Serial.println(); 191 | Serial.print("DF:"); 192 | Serial.println(df); // all single digit 193 | Serial.print("X:"); 194 | Serial.println(x); 195 | Serial.print("P:"); 196 | Serial.println(p); 197 | Serial.print("Q:"); 198 | Serial.println(q); 199 | return 1; 200 | } 201 | // regular keys 202 | if (ch == KEY_ST && runstate == 1) { 203 | runstate = 0; 204 | caddress = reg[p]; 205 | } // stop 206 | // Should we start running? 207 | if (ch == KEY_GO && runstate == 0 && loadstate == 0 && addstate == 0) runstate = 1; 208 | // Should we go to load state 209 | if (ch == KEY_DA && runstate == 0 && loadstate == 0 && addstate == 0) { 210 | loadstate = 1; 211 | data = memread(caddress); 212 | } 213 | // reset? 214 | if (ch == KEY_RS) { 215 | reset(); 216 | return 1; 217 | } 218 | // Stop load state 219 | if (ch == KEY_ST && loadstate == 1) loadstate = 0; 220 | // Load extended data register into caddress 221 | if (ch == KEY_AD && runstate == 0 && loadstate == 0 && addstate == 0) addstate = 1; 222 | // EF4 push 223 | // if (ch=='+') ef4=1; else ef4=0; // EF4 now set in keyboard routine 224 | if (ch == '$') ef4term = ef4term ? 0 : 1; 225 | if (ef4 == 0) ef4 = ef4term; // let ef4term override ef4 (need this for run even though LED update sets it too) 226 | 227 | if (ch == KEY_SST && runstate == 0) { 228 | data = memread(reg[p]); 229 | setaddress(reg[p]); // we don't care if the program is using address display here 230 | run(); 231 | runstate = 2; 232 | } 233 | if (runstate == 2 && ch != KEY_DA) runstate = 0; 234 | // set memory protect on without race (state 2 while held, then state 1) 235 | // NOTE: If you do this from serial port you will stick in state 2 until you send another key that gets through here 236 | if (ch == KEY_PC) { 237 | if (mp == 0) mp = 2; 238 | if (mp == 1) mp = 0; 239 | } else { 240 | if (mp == 2) mp = 1; 241 | } 242 | 243 | 244 | // build up hex number 245 | if (ch >= '0' && ch <= '9') { 246 | idata = idata << 4 | (ch - '0'); 247 | data = idata; 248 | } 249 | if (ch >= 'A' && ch <= 'F') { 250 | idata = idata << 4 | (ch - 'A' + 10); 251 | data = idata; 252 | } 253 | // in case of serial input 254 | if (ch >= 'a' && ch <= 'f') { 255 | idata = idata << 4 | (ch - 'a' + 10); 256 | data = idata; 257 | } 258 | 259 | // Ok now we can see what state we are in 260 | // if loading (or displaying if mp==1) 261 | if (loadstate == 1 && ef4 == 1) { 262 | if (mp || caddress >= rombase[0]) data = memread(caddress); 263 | else ram[caddress & MAXMEM] = data; 264 | loadstate = 2; 265 | } 266 | // state 2 waits for EF4 release 267 | if (loadstate == 2 && ef4 == 0) { 268 | loadstate = 1; 269 | data = memread(++caddress); 270 | } 271 | // run if required 272 | #if MONITOR == 1 273 | if (runstate == 1 && monactive == 0) { rv = run(); } 274 | #else 275 | if (runstate == 1) rv = run(); 276 | #endif 277 | // copy address if required 278 | if (addstate) { 279 | caddress = data; 280 | addstate = 0; 281 | setaddress(caddress); 282 | addstate = 0; 283 | } // don't care about address display setting here 284 | // stop running if there was an error 285 | if (rv <= 0 && runstate == 1) { 286 | runstate = 0; 287 | caddress = reg[p]; 288 | } 289 | 290 | updateLEDdata(); 291 | return rv; 292 | } 293 | -------------------------------------------------------------------------------- /src/1802hilo.h: -------------------------------------------------------------------------------- 1 | /* 2 | Hi lo game 3 | 4 | From the original documentation: 5 | ELF HI LO Game Instructions: 6 | 7 | The purpose of this game is to guess a number selected by the computer between 1 and 100 in as few tries as possible. 8 | 9 | Reset and Run the ELF. All the LED's will be blinking. Press I and the computer will select a secret number, then the 10 | 11 | Q LED will come on, indicating that your input is needed. Enter a number using the toggle switches then press I. 12 | 13 | At that point, one of 3 things can happen: 14 | 15 | 1- Your number is higher than the secret number, and so the HIGH nibble on the LED display (i.e. the leftmost 4 LED's) will blink 16 | 17 | 2- Your number is lower than the secret number and the LOW nibble on the LED display (i.e. the rightmost 4 LED's) will blink 18 | 19 | 3- Your guessed the correct number and it will appear on the LED display and blink 20 | 21 | Press I again and the Q LED will come on and you will be able to enter another guess as before. If you guessed the correct number, 22 | 23 | then the number of tries will be displayed and blinked and the game will be over. 24 | 25 | Hope you like it. 26 | 27 | Walid Maalouli 28 | 29 | Patched for ROM by Al Williams 30 | 31 | 32 | */ 33 | 34 | uint16_t ROM_BASEVAR=ROM_BASE; 35 | 36 | const uint8_t PROGMEM ROM_ARRAY[]= 37 | { 38 | 0x90, 39 | 0x30, 40 | 0x75, 41 | 0XC4, // filler for patch 42 | 0XB4, 43 | 0XB5, 44 | 0XB6, 45 | 0xC4, // filler for patch 46 | 0XC4, // filler for patch again 47 | 0XF8, 48 | 0XFF, // STOR1 now at 03FF, 49 | 0XA1, 50 | 0x38, 51 | 0XC4, 52 | 0XF8, 53 | 0x64, 54 | 0XA2, 55 | 0XF8, 56 | 0XFF, 57 | 0XA4, 58 | 0XF8, 59 | 0x57, 60 | 0XA6, 61 | 0XD6, 62 | 0x37, 63 | 0x20, 64 | 0x22, 65 | 0x82, 66 | 0X3A, 67 | 0x14, 68 | 0x30, 69 | 0X0E, 70 | 0X7B, 71 | 0x82, 72 | 0x51, 73 | 0XE2, 74 | 0XF8, 75 | 0xFE, // STOR2 now at 03FE 76 | 0XA2, 77 | 0x38, 78 | 0XC4, 79 | 0x37, 80 | 0x29, 81 | 0X3F, 82 | 0X2B, 83 | 0X6C, 84 | 0x37, 85 | 0X2E, 86 | 0x13, 87 | 0X7A, 88 | 0XE1, 89 | 0XF5, 90 | 0x32, 91 | 0x47, 92 | 0X3B, 93 | 0X3B, 94 | 0XF8, 95 | 0X0F, 96 | 0XC8, 97 | 0XF8, 98 | 0XF0, 99 | 0XA4, 100 | 0XF8, 101 | 0x57, 102 | 0XA6, 103 | 0XD6, 104 | 0X3F, 105 | 0X3E, 106 | 0X7B, 107 | 0x30, 108 | 0x23, 109 | 0x02, 110 | 0XA4, 111 | 0XF8, 112 | 0x57, 113 | 0XA6, 114 | 0XD6, 115 | 0X3F, 116 | 0x49, 117 | 0x83, 118 | 0XA4, 119 | 0XF8, 120 | 0x57, 121 | 0XA6, 122 | 0XD6, 123 | 0x30, 124 | 0x51, 125 | 0XF8, 126 | 0XAF, 127 | 0XA5, 128 | 0XF8, 129 | 0xFD, // stor3 now at 03FD 130 | 0XA7, 131 | 0x84, 132 | 0x57, 133 | 0x38, 134 | 0XC4, 135 | 0XE7, 136 | 0x64, 137 | 0x27, 138 | 0x25, 139 | 0x85, 140 | 0X3A, 141 | 0x64, 142 | 0XF8, 143 | 0x00, 144 | 0x57, 145 | 0x64, 146 | 0x27, 147 | 0XF8, 148 | 0XAF, 149 | 0XA5, 150 | 0x25, 151 | 0x85, 152 | 0X3A, 153 | 0x70, 154 | 0XD0, 155 | // patch @ 0x75 for ROM 156 | 0xF8, 0x00, 157 | 0xB1, 158 | 0xB2, 159 | 0xB3, 160 | 0xA3, 161 | 0xB7, 162 | 0x90, 163 | 0x30,0x03 // return 164 | }; 165 | 166 | 167 | 168 | -------------------------------------------------------------------------------- /src/1802idiot.h: -------------------------------------------------------------------------------- 1 | 2 | // Idiot monitor patched 3 | 4 | uint16_t ROM_BASEVARe=ROM_BASE; 5 | 6 | const uint8_t PROGMEM ROM_ARRAY[] = 7 | { 8 | 0x71,0x00,0xF8,0xFF,0xB4,0xF8,0xFF,0xA4,0x54,0x04,0xFB,0xFF,0xC6,0x54,0x04,0x32,0x1A,0x94,0x32,0xD8,0xA4,0x24,0x84,0xB4,0x30,0x05,0xF8,0xDF,0xA4,0xE4,0x8F,0x73, 9 | 0x9F,0x73,0x8E,0x73,0x9E,0x73,0x8D,0x73,0x9D,0x73,0x8C,0x73,0x9C,0x73,0x8B,0x73,0x9B,0x73,0x8A,0x73,0x9A,0x73,0x89,0x73,0x99,0x73,0x88,0x73,0x98,0x73,0x87,0x73, 10 | 0x97,0x73,0x86,0x73,0x96,0x73,0x85,0x73,0x95,0x73,0x73,0x73,0x83,0x73,0x93,0x73,0x82,0x73,0x92,0x73,0x81,0x73,0x91,0x73,0x80,0x73,0x90,0x73,0xF8,0x00,0xB3,0x3F, 11 | 0x63,0xF9,0x04,0x3E,0x67,0xF9,0x30,0x73,0x93,0x3D,0x6D,0xF9,0x02,0x3C,0x71,0xF9,0x10,0x73,0x93,0xC5,0xF9,0x01,0x73,0xF8,0x01,0xCC,0xF8,0x00,0x73,0x93,0x73,0x7C, 12 | 0x00,0x73,0x78,0x24,0xF8,0xC0,0xA1,0x90,0xB1,0xF8,0x8D,0xA1,0xD1,0xF8,0x00,0x54,0xF8,0xCB,0xA5,0x91,0xFC,0x03,0xB5,0xF8,0xA0,0xA4,0xF8,0x18,0xA3,0x45,0x54,0x14, 13 | 0x23,0x83,0x3A,0x9D,0x94,0xB2,0xF8,0xC3,0xA4,0xF8,0xB6,0x73,0x91,0x73,0x91,0xFC,0x01,0xB5,0xF8,0xD4,0xA5,0xD5,0xE2,0x22,0x73,0x94,0x73,0x84,0x52,0xE4,0x30,0x02, 14 | 0xF8,0x10,0x73,0xF8,0xC9,0xA4,0x42,0x73,0x42,0x73,0xF8,0xBB,0xA4,0x42,0x54,0xF8,0xC5,0xA4,0x82,0x73,0x92,0x73,0x30,0x90,0x90,0xFC,0x01,0xB3,0xF8,0xD4,0xA3,0xE2, 15 | 0xD3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD3,0x9E,0xF6,0xAE,0x2E,0x43,0xFF,0x01,0x3A,0xF4,0x8E,0x32,0xEE,0x23,0x30,0xF2,0x00,0x00, 16 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 17 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x07,0x33,0x37,0xFC,0x0A,0x33,0x54,0xFC,0x00,0x9F,0xD5,0xF8,0x80,0x38,0x83,0xC8, 18 | 0xF8,0x00,0xAF,0x69,0x32,0x43,0xBF,0x8F,0xFE,0x3B,0x39,0x9F,0xFF,0x41,0x3B,0x2F,0xFF,0x06,0x33,0x37,0xFE,0xFE,0xFE,0xFE,0xFC,0x08,0xFE,0xAE,0x8D,0x7E,0xAD,0x9D, 19 | 0x7E,0xBD,0x8E,0xFE,0x3A,0x5B,0x30,0x39,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 20 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9E,0xAE,0x38,0xD5, 21 | 0x45,0x38,0x46,0x38,0x9F,0xAD,0x30,0xBA,0xF8,0x01,0xAF,0x9F,0xF6,0xF6,0xF6,0xF6,0xFC,0xF6,0xC7,0xFC,0x07,0xFF,0xC6,0xAD,0x30,0xBD,0xF8,0x00,0xAF,0x8D,0x73,0x60, 22 | 0x61,0xF0,0x73,0x8F,0x32,0x9F,0x2F,0x9F,0xFA,0x0F,0xFC,0xF6,0xC7,0xFC,0x07,0xFF,0xC6,0xAD,0x30,0xBD,0x95,0xB3,0xF8,0x9C,0xA3,0xD3,0x0D,0xD3,0x0A,0xD3,0x49,0xD3, 23 | 0x44,0xD3,0x49,0xD3,0x4F,0xD3,0x54,0xD3,0x2F,0xD3,0x34,0x95,0xB3,0xF8,0x9C,0xA3,0xD3,0x0D,0xD3,0x0A,0xD3,0x2A,0xF8,0x00,0xBD,0xAD,0xF8,0x3B,0xA3,0xD3,0xFB,0x24, 24 | 0x32,0xAB,0xFB,0x05,0xA8,0xCE,0xFB,0x1E,0xCA,0x81,0xF6,0xD3,0xFB,0x52,0x3A,0x1B,0xF8,0xB8,0xAA,0x92,0xBA,0xF8,0x28,0xAD,0xD3,0x30,0x38,0xFB,0x1F,0xCA,0x81,0xF6, 25 | 0xD3,0x3B,0x20,0xD3,0x33,0x23,0xFB,0x20,0x3A,0x9F,0x9D,0xBA,0x8D,0xAA,0x88,0x32,0x88,0xF8,0x00,0xAD,0xBD,0xD3,0x33,0x35,0x8D,0xA8,0x9D,0xB8,0x9F,0xFB,0x21,0x32, 26 | 0xFB,0xFB,0x01,0x3A,0x48,0xD3,0x30,0x3D,0xFB,0x2D,0x3A,0x9F,0xF8,0x9C,0xA3,0xD3,0x0A,0x37,0x9F,0x9A,0xBF,0xF8,0xA8,0xA3,0xD3,0x8A,0xBF,0xF8,0xA8,0xA3,0xD3,0xD3, 27 | 0x20,0x4A,0xBF,0xF8,0xA8,0xA3,0xD3,0x28,0x88,0x3A,0x6F,0x98,0xC2,0x81,0xEB,0x8A,0xFA,0x0F,0x3A,0x7A,0xD3,0x3B,0xD3,0x0D,0x30,0x4F,0xF6,0x33,0x61,0x30,0x5F,0xD3, 28 | 0x3B,0x7F,0xD3,0x3B,0x9F,0x8D,0x5A,0x1A,0xD3,0x33,0x82,0xFB,0x0D,0xC2,0x81,0xEB,0xFB,0x21,0x32,0x7F,0xFB,0x17,0x3A,0x88,0xD3,0xFB,0x0D,0x3A,0x98,0x30,0x20,0xF8, 29 | 0x9C,0xA3,0xD3,0x0D,0xD3,0x0A,0xD3,0x3F,0xC0,0x81,0xEB,0xD3,0xFB,0x52,0xA8,0xCE,0xFB,0x02,0xCA,0x81,0xF6,0xD3,0x33,0xB5,0xFB,0x0D,0x3A,0x9F,0x9D,0xB0,0x8D,0xA0, 30 | 0xF8,0x9C,0xA3,0xD3,0x0A,0x88,0x32,0xFF,0xF8,0xB6,0xA1,0x95,0xFF,0x02,0xB1,0xE5,0x70,0x00,0x30,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 31 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x9F,0xC4,0xC4,0xC0,0x81,0xEB,0x95,0xFC,0x01,0xB5,0x92 32 | 33 | }; 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /src/1802io.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "1802.h" 3 | #include "main.h" // need serialread 4 | // Input from any port gives you the data register 5 | // except port 1 is serial input 6 | 7 | #ifdef OLED 8 | void pixieon() 9 | { 10 | pixie_enable=1; 11 | } 12 | #endif 13 | 14 | uint8_t input(uint8_t port) 15 | { 16 | #ifdef OLED 17 | if (port==PIXIEPORT) 18 | { 19 | pixieon(); 20 | return 0; 21 | } 22 | #endif 23 | if (port==SER_INP) 24 | { 25 | int rv=Serialread(); 26 | if (rv==-1) rv=0; 27 | return rv; 28 | } 29 | return idata; 30 | } 31 | 32 | // Output to any port writes to the data display 33 | void output(uint8_t port, uint8_t val) 34 | { 35 | #ifdef OLED 36 | if (port==PIXIEPORT) 37 | { 38 | pixieon(); 39 | return; 40 | } 41 | #endif 42 | if (port==SER_OUT) Serial.print((char)val); 43 | else if (port==LED_PORT) data=val; 44 | else if (port==A0_PORT) adlow=val; 45 | else if (port==A1_PORT) adhigh=val; 46 | else if (port==CTL_PORT) 47 | { 48 | noserial=val&1; // set 1 to use serial port as I/O, else use as front panel 49 | addisp=(val&2)==2; // set bit 1 to 1 to use address displays 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/1802rom.h: -------------------------------------------------------------------------------- 1 | #ifndef __ROM_H 2 | #define __ROM_H 3 | 4 | // Remember ROM_SLOT 0 must have the lowest address 5 | 6 | // NOTE: Not all 1802 code is address independent (in fact, most probably isn't) 7 | // So the examples below may not work except at address 8000 and are for demo purposes 8 | // only, however they "seem" to work 9 | 10 | 11 | // Define ROM Base addresses 12 | #define ROM0 0x8000 13 | #define ROM1 0x9000 14 | #define ROM2 0xC000 15 | 16 | uint16_t rombase[]= 17 | { 18 | ROM0, ROM1, ROM2 19 | }; 20 | 21 | 22 | 23 | // Macros for ROMs to use 24 | #define ROM_ARRAY ROM_ARRAY_(rom,ROM_SLOT) 25 | #define ROM_ARRAY_(a,b) ROM_ARRAY__(a,b) 26 | #define ROM_ARRAY__(a,b) a ## b 27 | #define ROM_BASEVAR ROM_BASEVAR_(rombase,ROM_SLOT) 28 | #define ROM_BASEVAR_(a,b) ROM_BASEVAR__(a,b) 29 | #define ROM_BASEVAR__(a,b) a ## b 30 | 31 | // You can see the pattern here: Define ROM_SLOT and ROM_BASE, include the file, and #undef 32 | // Then repeat 33 | 34 | #define ROM_SLOT 0 35 | #define ROM_BASE ROM0 36 | #include "1802idiot.h" 37 | #undef ROM_SLOT 38 | #undef ROM_BASE 39 | #define ROM_SLOT 1 40 | #define ROM_BASE ROM1 41 | #include "1802etops.h" 42 | #undef ROM_SLOT 43 | #undef ROM_BASE 44 | #define ROM_SLOT 2 45 | #define ROM_BASE ROM2 46 | #include "1802hilo.h" 47 | 48 | // Array of ROMS 49 | uint8_t const *roms[]= 50 | { 51 | rom0, rom1, rom2 52 | }; 53 | 54 | 55 | // Compute size of ROMs 56 | uint16_t romsize[]= 57 | { 58 | sizeof(rom0)/sizeof(rom0[0]), 59 | sizeof(rom1)/sizeof(rom1[0]), 60 | sizeof(rom2)/sizeof(rom2[0]) 61 | }; 62 | 63 | 64 | // Assume everything starting at rombase[0] is a ROM 65 | #define ISROM(a) ((a)>=rombase[0]) 66 | 67 | 68 | #endif 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /src/SSD1306Ascii.h: -------------------------------------------------------------------------------- 1 | /* Arduino SSD1306Ascii Library 2 | * Copyright (C) 2015 by William Greiman 3 | * 4 | * This file is part of the Arduino SSD1306Ascii Library 5 | * 6 | * This Library is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This Library is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with the Arduino SSD1306Ascii Library. If not, see 18 | * . 19 | */ 20 | /** 21 | * @file SSD1306Ascii.h 22 | * @brief Base class for ssd1306 displays. 23 | */ 24 | #ifndef SSD1306Ascii_h 25 | #define SSD1306Ascii_h 26 | #include "Arduino.h" 27 | #include "SSD1306init.h" 28 | #include "fonts/allFonts.h" 29 | //------------------------------------------------------------------------------ 30 | /** SSD1306Ascii version YYYYMMDD */ 31 | #define SDD1306_ASCII_VERSION 20160127 32 | //------------------------------------------------------------------------------ 33 | // Configuration options. 34 | /** Set Scrolling mode for new line. 35 | * 36 | * If INCLUDE_SCROLLING is defined to be zero, new line will not scroll 37 | * the display and code for scrolling will not be included. This option 38 | * will save some code space and one byte of RAM. 39 | * 40 | * If INCLUDE_SCROLLING is defined to be one, the scroll feature will 41 | * be included but not enabled. A call to setScroll() will be required 42 | * to enable scrolling. 43 | * 44 | * If INCLUDE_SCROLLING is defined to be two, the scroll feature will 45 | * be included and enabled. A call to setScroll() will be required 46 | * to disable scrolling. 47 | */ 48 | #define INCLUDE_SCROLLING 1 49 | 50 | /** Use larger faster I2C code. */ 51 | #define OPTIMIZE_I2C 1 52 | 53 | /** Define OPTIMIZE_AVR_SPI non-zero for a faster smaller AVR SPI code. 54 | * Warning AVR will not use SPI transactions. 55 | */ 56 | #define OPTIMIZE_AVR_SPI 1 57 | //------------------------------------------------------------------------------ 58 | // Values for writeDisplay() mode paarameter. 59 | /** Write to Command register. */ 60 | #define SSD1306_MODE_CMD 0 61 | /** Write one byte to display RAM. */ 62 | #define SSD1306_MODE_RAM 1 63 | /** Write to display RAM with possible buffering. */ 64 | #define SSD1306_MODE_RAM_BUF 2 65 | //------------------------------------------------------------------------------ 66 | /** 67 | * @class SSD1306Ascii 68 | * @brief SSD1306 base class 69 | */ 70 | class SSD1306Ascii : public Print { 71 | public: 72 | SSD1306Ascii() : m_magFactor(1), m_font(0) {} 73 | /** 74 | * @brief Determine the width of a character. 75 | * 76 | * @param[in] c Character code. 77 | * @return Width of the character in pixels. 78 | */ 79 | uint8_t charWidth(uint8_t c); 80 | /** 81 | * @brief Clear the display and set the cursor to (0, 0). 82 | */ 83 | void clear(); 84 | /** 85 | * @brief Clear a region of the display. 86 | * 87 | * @param[in] c0 Starting column. 88 | * @param[in] c1 Ending column. 89 | * @param[in] r0 Starting row; 90 | * @param[in] r1 Ending row; 91 | * @note The final cursor position will be (c0, r0). 92 | */ 93 | void clear(uint8_t c0, uint8_t c1, uint8_t r0, uint8_t r1); 94 | /** 95 | * @brief Clear the display to the end of the current line. 96 | * @note The number of rows cleared will be determined by the height 97 | * of the current font. 98 | * @note The cursor will be returned to the original position. 99 | */ 100 | void clearToEOL(); 101 | /** 102 | * @return The current column in pixels. 103 | */ 104 | uint8_t col() {return m_col;} 105 | /** 106 | * @return The display hight in pixels. 107 | */ 108 | uint8_t displayHeight() {return m_displayHeight;} 109 | /** 110 | * @return The display height in rows with eight pixels to a row. 111 | */ 112 | uint8_t displayRows() {return m_displayHeight/8;} 113 | /** 114 | * @return The display width in pixels. 115 | */ 116 | uint8_t displayWidth() {return m_displayWidth;} 117 | /** 118 | * @return The current font height in pixels. 119 | */ 120 | uint8_t fontHeight(); 121 | /** 122 | * @return The number of eight pixel rows required to display a character 123 | * in the current font. 124 | */ 125 | uint8_t fontRows() {return (fontHeight() + 7)/8;} 126 | /** 127 | * @return The maximum width of characters in the current font. 128 | */ 129 | uint8_t fontWidth(); 130 | /** 131 | * @brief Set the cursor position to (0, 0). 132 | */ 133 | void home() {setCursor(0, 0);} 134 | /** 135 | * @brief Initialize the display controller. 136 | * 137 | * @param[in] dev A display initialization structure. 138 | */ 139 | void init(const DevType* dev); 140 | /** 141 | * @return The character magnification factor. 142 | */ 143 | uint8_t magFactor() {return m_magFactor;} 144 | /** 145 | * @brief Reset the display controller. 146 | * 147 | * @param[in] rst Reset pin number. 148 | */ 149 | static void reset(uint8_t rst); 150 | /** 151 | * @return the current row number with eight pixels to a row. 152 | */ 153 | uint8_t row() {return m_row;} 154 | /** 155 | * @brief Set the character magnification factor to one. 156 | */ 157 | void set1X() {m_magFactor = 1;} 158 | /** 159 | * @brief Set the character magnification factor to two. 160 | */ 161 | void set2X() {m_magFactor = 2;} 162 | /** 163 | * @brief Set the current column number. 164 | * 165 | * @param[in] col The desired column number in pixels. 166 | */ 167 | void setCol(uint8_t col); 168 | /** 169 | * @brief Set the display contrast. 170 | * 171 | * @param[in] value The contrast level in th range 0 to 255. 172 | */ 173 | void setContrast(uint8_t value); 174 | /** 175 | * @brief Set the cursor position. 176 | * 177 | * @param[in] col The column number in pixels. 178 | * @param[in] row the row number in eight pixel rows. 179 | */ 180 | void setCursor(uint8_t col, uint8_t row); 181 | /** 182 | * @brief Set the current font. 183 | * 184 | * @param[in] font Pointer to a font table. 185 | */ 186 | void setFont(const uint8_t* font) {m_font = font;} 187 | /** 188 | * @brief Set the current row number. 189 | * 190 | * @param[in] row the row number in eight pixel rows. 191 | */ 192 | void setRow(uint8_t row); 193 | #if INCLUDE_SCROLLING 194 | /** 195 | * @brief Enable or disable scroll mode. 196 | * 197 | * @param[in] enable true enable scroll on new line false disable scroll. 198 | * @note Scroll mode is only supported on 64 pixel high displays. 199 | * Using setRow() or setCursor() will be unpredictable in scroll mode. 200 | * You must use a font with an integral number of line on 201 | * the display. 202 | */ 203 | void setScroll(bool enable); 204 | #endif // INCLUDE_SCROLLING 205 | /** 206 | * @brief Write a command byte to the display controller. 207 | * 208 | * @param[in] c The command byte. 209 | * @note The byte will immediately be sent to the controller. 210 | */ 211 | void ssd1306WriteCmd(uint8_t c) {writeDisplay(c, SSD1306_MODE_CMD);} 212 | /** 213 | * @brief Write a byte to RAM in the display controller. 214 | * 215 | * @param[in] c The data byte. 216 | * @note The byte will immediately be sent to the controller. 217 | */ 218 | void ssd1306WriteRam(uint8_t c); 219 | /** 220 | * @brief Write a byte to RAM in the display controller. 221 | * 222 | * @param[in] c The data byte. 223 | * @note The byte may be buffered until a call to ssd1306WriteCmd 224 | * or ssd1306WriteRam. 225 | */ 226 | void ssd1306WriteRamBuf(uint8_t c); 227 | /** 228 | * @brief Display a character. 229 | * 230 | * @param[in] c The character to display. 231 | * @return the value one. 232 | */ 233 | size_t write(uint8_t c); 234 | /** 235 | * @brief Display a string. 236 | * 237 | * @param[in] s The string to display. 238 | * @return The length of the string. 239 | */ 240 | size_t write(const char* s); 241 | 242 | 243 | // OLED display ----------------------------------------- 244 | // new by oscar for kim uno 245 | void paintscreen(uint8_t l1,uint8_t l2); 246 | // end of OLED display ----------------------------------------- 247 | 248 | 249 | 250 | private: 251 | virtual void writeDisplay(uint8_t b, uint8_t mode) = 0; 252 | uint8_t m_col; // Cursor column. 253 | uint8_t m_row; // Cursor RAM row. 254 | uint8_t m_displayWidth; // Display width. 255 | uint8_t m_displayHeight; // Display height. 256 | uint8_t m_colOffset; // Column offset RAM to SEG 257 | uint8_t m_magFactor; // Magnification factor. 258 | #if INCLUDE_SCROLLING 259 | uint8_t m_scroll; // Scroll mode 260 | #endif // INCLUDE_SCROLLING 261 | const uint8_t* m_font; // Current font. 262 | }; 263 | #endif // SSD1306Ascii_h 264 | -------------------------------------------------------------------------------- /src/SSD1306AsciiAvrI2c.h: -------------------------------------------------------------------------------- 1 | /* Arduino SSD1306Ascii Library 2 | * Copyright (C) 2015 by William Greiman 3 | * 4 | * This file is part of the Arduino SSD1306Ascii Library 5 | * 6 | * This Library is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This Library is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with the Arduino SSD1306Ascii Library. If not, see 18 | * . 19 | */ 20 | /** 21 | * @file SSD1306AsciiAvrI2c.h 22 | * @brief Class for I2C displays using AvrI2c. 23 | */ 24 | #ifndef SSD1306AsciiAvrI2c_h 25 | #define SSD1306AsciiAvrI2c_h 26 | #include "utility/AvrI2c.h" 27 | #include "SSD1306Ascii.h" 28 | /** 29 | * @class SSD1306AsciiAvrI2c 30 | * @brief Class for I2C displays on AVR. 31 | * 32 | * Uses the AvrI2c class that is smaller and faster than the 33 | * Wire library. 34 | */ 35 | class SSD1306AsciiAvrI2c : public SSD1306Ascii { 36 | public: 37 | /** 38 | * @brief Initialize the display controller. 39 | * 40 | * @param[in] dev A device initialization structure. 41 | * @param[in] i2cAddr The I2C address of the display controller. 42 | * @param[in] fastMode Fast 400 kHz mode if true else standard 100 kHz mode. 43 | */ 44 | void begin(const DevType* dev, uint8_t i2cAddr, bool fastMode = true) { 45 | m_nData = 0; 46 | m_i2cAddr = i2cAddr; 47 | 48 | m_i2c.begin(fastMode); 49 | init(dev); 50 | } 51 | 52 | protected: 53 | void writeDisplay(uint8_t b, uint8_t mode) { 54 | if ((m_nData && mode == SSD1306_MODE_CMD)) { 55 | m_i2c.stop(); 56 | m_nData = 0; 57 | } 58 | if (m_nData == 0) { 59 | m_i2c.start((m_i2cAddr << 1) | I2C_WRITE); 60 | m_i2c.write(mode == SSD1306_MODE_CMD ? 0X00 : 0X40); 61 | } 62 | m_i2c.write(b); 63 | if (mode == SSD1306_MODE_RAM_BUF) { 64 | m_nData++; 65 | }else { 66 | m_i2c.stop(); 67 | m_nData = 0; 68 | } 69 | } 70 | private: 71 | AvrI2c m_i2c; 72 | uint8_t m_i2cAddr; 73 | uint8_t m_nData; 74 | }; 75 | #endif // SSD1306AsciiAvrI2c_h 76 | -------------------------------------------------------------------------------- /src/data/morse: -------------------------------------------------------------------------------- 1 | 2 | // --------------------------------------------------------------------------------------- 3 | // Morse code binary tree table (dichotomic search table) 4 | // see https://raronoff.wordpress.com/2010/12/16/morse-endecoder/ (note: different table!) 5 | // ITU with most punctuation (but without non-english characters - for now) 6 | 7 | #define MORSETABLELENGTH 128 8 | const char morseTable[] PROGMEM = 9 | " ETIANMSURWDKGOHVF*L*PJBXCYZQ!*54*3***2&*+****16=/***(*7***8*90*" 10 | "***********?_****\"**.****@***'**-********;!*)*****,****:*******\0"; 11 | 12 | char morseSignalString2[7];// Morse buffer for 1 character as ASCII string of dots and dashes 13 | int encodeMorse(char encodeMorseChar); 14 | char decodeMorse(void); 15 | // --------------------------------------------------------------------------------------- 16 | 17 | int encodeMorse(char encodeMorseChar) 18 | { 19 | int p; 20 | int pNode; // parent node 21 | int morseSignals=0; // nr of morse signals to send in one morse character 22 | char morseSignalString[7]; // Morse signal for one character (right-to-left inverted!) 23 | 24 | // change to capital letter if not 25 | // if (encodeMorseChar > 96) encodeMorseChar -= 32; 26 | 27 | // Scan for the character to send in the Morse table 28 | for (p=0; p= MORSETABLELENGTH) p = 0; // not found, but send a space instead 32 | 33 | // Reverse binary tree path tracing 34 | if (p > 0) 35 | { 36 | // build the morse signal (backwards morse signal string from last signal to first) 37 | pNode = p; 38 | while (pNode > 0) 39 | { 40 | if ( (pNode & 0x0001) == 1) 41 | morseSignalString[morseSignals++] = '.'; 42 | else 43 | morseSignalString[morseSignals++] = '-'; 44 | // Find parent node 45 | pNode = int((pNode-1)/2); 46 | } 47 | } else { // Top of Morse tree - Add the top space character 48 | // cheating a little; a wordspace for a "morse signal" 49 | morseSignalString[morseSignals++] = ' '; 50 | } 51 | morseSignalString[morseSignals] = '\0'; 52 | 53 | // morseSignalString is reversed, fix it 54 | p=0; 55 | do { 56 | morseSignalString2[p++]=morseSignalString[--morseSignals]; 57 | } while (morseSignals>=0); 58 | morseSignalString2[--p]='\0'; 59 | } 60 | 61 | 62 | char decodeMorse(void) 63 | { 64 | int i=0, morseTablePointer = 0; 65 | 66 | // start tree search 67 | while (morseSignalString2[i]!='\0') 68 | { 69 | morseTablePointer *= 2; // go one level down the tree 70 | if (morseSignalString2[i]=='.') 71 | morseTablePointer++; // point to node for a dot 72 | else if (morseSignalString2[i]=='-') 73 | morseTablePointer+=2; // point to node for a dash 74 | i++; 75 | } 76 | return (pgm_read_byte_near(morseTable + morseTablePointer)); 77 | } 78 | -------------------------------------------------------------------------------- /src/fonts/Callibri10.h: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Callibri10 4 | * 5 | * created with GLCDFontCreator 6 | * original framework by F. Maximilian Thiele 7 | * Modified By Siddharth Kaul 8 | * 9 | * 10 | * File Name : Callibri10.h 11 | * Date : 10.11.2012 12 | * Font size in bytes : 3742 13 | * Font width : 10 14 | * Font height : 10 15 | * Font first char : 32 16 | * Font last char : 128 17 | * Font used chars : 96 18 | * 19 | * The font data are defined as 20 | * 21 | * struct _FONT_ { 22 | * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; 23 | * uint8_t font_Width_in_Pixel_for_fixed_drawing; 24 | * uint8_t font_Height_in_Pixel_for_all_characters; 25 | * unit8_t font_First_Char; 26 | * uint8_t font_Char_Count; 27 | * 28 | * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; 29 | * // for each character the separate width in pixels, 30 | * // characters < 128 have an implicit virtual right empty row 31 | * 32 | * uint8_t font_data[]; 33 | * // bit field of all characters 34 | */ 35 | 36 | #ifndef _Callibri10_H 37 | #define _Callibri10_H 38 | 39 | #define Callibri10_WIDTH 10 40 | #define Callibri10_HEIGHT 10 41 | 42 | GLCDFONTDECL(Callibri10) = { 43 | 0x0E, 0x9E, // size 44 | 0x0A, // width 45 | 0x0A, // height 46 | 0x20, // first char 47 | 0x60, // char count 48 | 49 | // char widths 50 | 0x02, 0x01, 0x02, 0x05, 0x05, 0x07, 0x05, 0x01, 0x02, 0x02, 51 | 0x03, 0x05, 0x02, 0x02, 0x01, 0x04, 0x05, 0x04, 0x04, 0x04, 52 | 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x01, 0x02, 0x04, 0x04, 53 | 0x05, 0x03, 0x07, 0x05, 0x04, 0x05, 0x05, 0x03, 0x03, 0x05, 54 | 0x05, 0x01, 0x03, 0x04, 0x03, 0x07, 0x05, 0x06, 0x04, 0x07, 55 | 0x04, 0x04, 0x05, 0x05, 0x06, 0x09, 0x05, 0x05, 0x04, 0x02, 56 | 0x04, 0x02, 0x03, 0x05, 0x02, 0x04, 0x04, 0x03, 0x04, 0x04, 57 | 0x03, 0x04, 0x04, 0x01, 0x02, 0x04, 0x01, 0x07, 0x04, 0x05, 58 | 0x04, 0x04, 0x02, 0x03, 0x03, 0x04, 0x04, 0x06, 0x04, 0x04, 59 | 0x03, 0x03, 0x01, 0x02, 0x04, 0x04, 60 | 61 | // font data 62 | 0x00, 0x00, 0x00, 0x00, // 0x20 63 | 0xBE, 0x00, // 33 64 | 0x06, 0x06, 0x00, 0x00, // 34 65 | 0x28, 0x7C, 0x28, 0xFC, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 66 | 0x88, 0x94, 0x96, 0xA4, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 67 | 0x1E, 0x92, 0x7E, 0x10, 0xFC, 0x92, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 68 | 0xFC, 0x92, 0xAA, 0x44, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 69 | 0x06, 0x00, // 39 70 | 0xFC, 0x02, 0x40, 0x80, // 40 71 | 0x02, 0xFC, 0x80, 0x40, // 41 72 | 0x0C, 0x1E, 0x0C, 0x00, 0x00, 0x00, // 42 73 | 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 74 | 0x00, 0x80, 0x80, 0x40, // 44 75 | 0x20, 0x20, 0x00, 0x00, // 45 76 | 0x80, 0x00, // 46 77 | 0x80, 0x60, 0x1C, 0x02, 0x40, 0x00, 0x00, 0x00, // 47 78 | 0x78, 0x84, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 79 | 0x88, 0x84, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, // 49 80 | 0x84, 0xC4, 0xA4, 0x9C, 0x00, 0x00, 0x00, 0x00, // 50 81 | 0x84, 0x94, 0x94, 0x6C, 0x00, 0x00, 0x00, 0x00, // 51 82 | 0x60, 0x50, 0x4C, 0xFC, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 83 | 0x9C, 0x94, 0x94, 0x64, 0x00, 0x00, 0x00, 0x00, // 53 84 | 0x78, 0x94, 0x94, 0x74, 0x00, 0x00, 0x00, 0x00, // 54 85 | 0x04, 0xC4, 0x34, 0x0C, 0x00, 0x00, 0x00, 0x00, // 55 86 | 0xEC, 0x94, 0xB4, 0xEC, 0x00, 0x00, 0x00, 0x00, // 56 87 | 0xB8, 0xA4, 0xA4, 0x78, 0x00, 0x00, 0x00, 0x00, // 57 88 | 0x88, 0x00, // 58 89 | 0x00, 0x90, 0x80, 0x40, // 59 90 | 0x10, 0x28, 0x28, 0x44, 0x00, 0x00, 0x00, 0x00, // 60 91 | 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, // 61 92 | 0x88, 0x88, 0x50, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 93 | 0x02, 0x92, 0x1E, 0x00, 0x00, 0x00, // 63 94 | 0xF0, 0x08, 0x74, 0x54, 0x74, 0x44, 0x38, 0x00, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, // 64 95 | 0x80, 0x70, 0x4C, 0x5C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 96 | 0xFC, 0x94, 0x94, 0x6C, 0x00, 0x00, 0x00, 0x00, // 66 97 | 0x78, 0xCC, 0x84, 0x84, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 98 | 0xFC, 0x84, 0x84, 0xCC, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 99 | 0xFC, 0x94, 0x94, 0x00, 0x00, 0x00, // 69 100 | 0xFC, 0x14, 0x14, 0x00, 0x00, 0x00, // 70 101 | 0x78, 0xCC, 0x84, 0xA4, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 102 | 0xFC, 0x10, 0x10, 0x10, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 103 | 0xFC, 0x00, // 73 104 | 0x80, 0x80, 0xFC, 0x00, 0x00, 0x00, // 74 105 | 0xFC, 0x30, 0x48, 0x84, 0x00, 0x00, 0x00, 0x00, // 75 106 | 0xFC, 0x80, 0x80, 0x00, 0x00, 0x00, // 76 107 | 0xFC, 0x0C, 0x70, 0x80, 0x70, 0x0C, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 108 | 0xFC, 0x0C, 0x30, 0xC0, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 109 | 0x78, 0x8C, 0x84, 0x84, 0xC4, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 79 110 | 0xFC, 0x24, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, // 80 111 | 0x78, 0xCC, 0x84, 0x84, 0xC4, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, // 81 112 | 0xFC, 0x24, 0x24, 0xD8, 0x00, 0x00, 0x00, 0x00, // 82 113 | 0x98, 0x94, 0xA4, 0x64, 0x00, 0x00, 0x00, 0x00, // 83 114 | 0x04, 0x04, 0xFC, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 115 | 0x7C, 0x80, 0x80, 0x80, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 116 | 0x04, 0x38, 0xC0, 0xE0, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 117 | 0x04, 0x38, 0xC0, 0x70, 0x0C, 0x70, 0xC0, 0x38, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 87 118 | 0x84, 0x48, 0x30, 0x68, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 119 | 0x04, 0x18, 0xE0, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 120 | 0x84, 0xE4, 0x94, 0x8C, 0x00, 0x00, 0x00, 0x00, // 90 121 | 0xFE, 0x02, 0xC0, 0x80, // 91 122 | 0x06, 0x18, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, // 92 123 | 0x02, 0xFE, 0x80, 0xC0, // 93 124 | 0x18, 0x04, 0x38, 0x00, 0x00, 0x00, // 94 125 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 126 | 0x01, 0x02, 0x00, 0x00, // 96 127 | 0xE8, 0xA8, 0xA8, 0xF8, 0x00, 0x00, 0x00, 0x00, // 97 128 | 0xFE, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, // 98 129 | 0x70, 0x88, 0x88, 0x00, 0x00, 0x00, // 99 130 | 0x70, 0x88, 0x88, 0xFE, 0x00, 0x00, 0x00, 0x00, // 100 131 | 0x70, 0xA8, 0xA8, 0xB0, 0x00, 0x00, 0x00, 0x00, // 101 132 | 0x08, 0xFE, 0x0A, 0x00, 0x00, 0x00, // 102 133 | 0x78, 0xA8, 0xA8, 0xB8, 0xC0, 0x80, 0x80, 0xC0, // 103 134 | 0xFE, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, // 104 135 | 0xFA, 0x00, // 105 136 | 0x00, 0xFA, 0x80, 0xC0, // 106 137 | 0xFE, 0x20, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, // 107 138 | 0xFE, 0x00, // 108 139 | 0xF8, 0x08, 0x08, 0xF8, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 140 | 0xF8, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, // 110 141 | 0x70, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 142 | 0xF8, 0x88, 0x88, 0x70, 0xC0, 0x00, 0x00, 0x00, // 112 143 | 0x70, 0x88, 0x88, 0xF8, 0x00, 0x00, 0x00, 0xC0, // 113 144 | 0xF8, 0x08, 0x00, 0x00, // 114 145 | 0x98, 0xA8, 0xE8, 0x00, 0x00, 0x00, // 115 146 | 0x08, 0xFC, 0x88, 0x00, 0x00, 0x00, // 116 147 | 0xF8, 0x80, 0x80, 0xF8, 0x00, 0x00, 0x00, 0x00, // 117 148 | 0x18, 0xE0, 0xE0, 0x18, 0x00, 0x00, 0x00, 0x00, // 118 149 | 0x38, 0xC0, 0x30, 0x78, 0x80, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 150 | 0x88, 0x70, 0x70, 0x88, 0x00, 0x00, 0x00, 0x00, // 120 151 | 0x08, 0x70, 0xC0, 0x38, 0x00, 0x80, 0x40, 0x00, // 121 152 | 0xC8, 0xA8, 0x98, 0x00, 0x00, 0x00, // 122 153 | 0x20, 0xDE, 0x02, 0x00, 0xC0, 0x80, // 123 154 | 0xFE, 0xC0, // 124 155 | 0xDE, 0x20, 0xC0, 0x00, // 125 156 | 0x0C, 0x04, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, // 126 157 | 0xFC, 0x94, 0xB4, 0xFC, 0x00, 0x00, 0x00, 0x00 // 127 158 | 159 | }; 160 | 161 | #endif 162 | -------------------------------------------------------------------------------- /src/fonts/Callibri11.h: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Callibri11 4 | * 5 | * created with GLCDFontCreator 6 | * original framework by F. Maximilian Thiele 7 | * Modified By Siddharth Kaul 8 | * 9 | * 10 | * File Name : Callibri11.h 11 | * Date : 10.11.2012 12 | * Font size in bytes : 4898 13 | * Font width : 10 14 | * Font height : 11 15 | * Font first char : 32 16 | * Font last char : 128 17 | * Font used chars : 96 18 | * 19 | * The font data are defined as 20 | * 21 | * struct _FONT_ { 22 | * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; 23 | * uint8_t font_Width_in_Pixel_for_fixed_drawing; 24 | * uint8_t font_Height_in_Pixel_for_all_characters; 25 | * unit8_t font_First_Char; 26 | * uint8_t font_Char_Count; 27 | * 28 | * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; 29 | * // for each character the separate width in pixels, 30 | * // characters < 128 have an implicit virtual right empty row 31 | * 32 | * uint8_t font_data[]; 33 | * // bit field of all characters 34 | */ 35 | 36 | 37 | #ifndef _Callibri11_H 38 | #define _Callibri11_H 39 | 40 | #define Callibri11_WIDTH 10 41 | #define Callibri11_HEIGHT 11 42 | 43 | GLCDFONTDECL(Callibri11) = { 44 | 0x13, 0x22, // size 45 | 0x0A, // width 46 | 0x0B, // height 47 | 0x20, // first char 48 | 0x60, // char count 49 | 50 | // char widths 51 | 0x02, 0x01, 0x03, 0x06, 0x04, 0x08, 0x07, 0x01, 0x02, 0x02, 52 | 0x05, 0x05, 0x02, 0x03, 0x01, 0x05, 0x05, 0x05, 0x05, 0x05, 53 | 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x01, 0x02, 0x05, 0x05, 54 | 0x05, 0x04, 0x09, 0x07, 0x05, 0x05, 0x06, 0x04, 0x04, 0x06, 55 | 0x06, 0x01, 0x03, 0x05, 0x04, 0x08, 0x06, 0x06, 0x05, 0x07, 56 | 0x05, 0x04, 0x05, 0x06, 0x07, 0x0B, 0x06, 0x05, 0x06, 0x02, 57 | 0x05, 0x02, 0x05, 0x06, 0x02, 0x05, 0x05, 0x04, 0x05, 0x05, 58 | 0x04, 0x05, 0x05, 0x01, 0x02, 0x04, 0x01, 0x08, 0x05, 0x05, 59 | 0x05, 0x05, 0x03, 0x04, 0x04, 0x05, 0x05, 0x09, 0x05, 0x05, 60 | 0x03, 0x03, 0x01, 0x03, 0x05, 0x06, 61 | 62 | // font data 63 | 0x00, 0x00, 0x00, 0x00, // 0x20 64 | 0x7E, 0x20, // 33 65 | 0x0E, 0x00, 0x0E, 0x00, 0x00, 0x00, // 34 66 | 0x40, 0xE8, 0x5E, 0xE8, 0x5E, 0x08, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, // 35 67 | 0x8C, 0x12, 0x23, 0xC4, 0x00, 0x60, 0x20, 0x00, // 36 68 | 0x0C, 0x12, 0xD2, 0x2C, 0xD0, 0x2C, 0x22, 0xC0, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, // 37 69 | 0xC0, 0x2C, 0x12, 0x32, 0xCC, 0xC0, 0x20, 0x00, 0x20, 0x20, 0x20, 0x00, 0x00, 0x20, // 38 70 | 0x0E, 0x00, // 39 71 | 0xF8, 0x06, 0x20, 0xC0, // 40 72 | 0x06, 0xF8, 0xC0, 0x20, // 41 73 | 0x14, 0x08, 0x3E, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 74 | 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 75 | 0x00, 0x00, 0x80, 0x60, // 44 76 | 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, // 45 77 | 0x00, 0x20, // 46 78 | 0x00, 0x80, 0x70, 0x0C, 0x03, 0xC0, 0x20, 0x00, 0x00, 0x00, // 47 79 | 0xFC, 0x02, 0x02, 0x02, 0xFC, 0x00, 0x20, 0x20, 0x20, 0x00, // 48 80 | 0x04, 0x02, 0xFE, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, // 49 81 | 0x04, 0x82, 0x42, 0x22, 0x1C, 0x20, 0x20, 0x20, 0x20, 0x20, // 50 82 | 0x84, 0x12, 0x12, 0x12, 0xEC, 0x00, 0x20, 0x20, 0x20, 0x00, // 51 83 | 0x60, 0x58, 0x46, 0xFE, 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, // 52 84 | 0x9E, 0x12, 0x12, 0x12, 0xE2, 0x00, 0x20, 0x20, 0x20, 0x00, // 53 85 | 0xF8, 0x14, 0x12, 0x12, 0xE2, 0x00, 0x20, 0x20, 0x20, 0x00, // 54 86 | 0x02, 0x82, 0x62, 0x1A, 0x06, 0x00, 0x20, 0x00, 0x00, 0x00, // 55 87 | 0xEC, 0x12, 0x12, 0x12, 0xEC, 0x00, 0x20, 0x20, 0x20, 0x00, // 56 88 | 0x1C, 0x22, 0x22, 0xA2, 0x7C, 0x20, 0x20, 0x20, 0x00, 0x00, // 57 89 | 0x08, 0x20, // 58 90 | 0x00, 0x08, 0x80, 0x60, // 59 91 | 0x20, 0x20, 0x50, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 92 | 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 93 | 0x88, 0x50, 0x50, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 94 | 0x02, 0x72, 0x12, 0x0C, 0x00, 0x20, 0x00, 0x00, // 63 95 | 0xF0, 0x08, 0x64, 0x92, 0x8A, 0x4A, 0xBA, 0x84, 0x78, 0x00, 0x20, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, // 64 96 | 0x80, 0x60, 0x58, 0x46, 0x58, 0x60, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, // 65 97 | 0xFE, 0x12, 0x12, 0x1C, 0xE0, 0x20, 0x20, 0x20, 0x20, 0x00, // 66 98 | 0xFC, 0x02, 0x02, 0x02, 0x84, 0x00, 0x20, 0x20, 0x20, 0x00, // 67 99 | 0xFE, 0x02, 0x02, 0x02, 0x84, 0x78, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, // 68 100 | 0xFE, 0x12, 0x12, 0x12, 0x20, 0x20, 0x20, 0x20, // 69 101 | 0xFE, 0x12, 0x12, 0x12, 0x20, 0x00, 0x00, 0x00, // 70 102 | 0x78, 0x84, 0x02, 0x22, 0x22, 0xE4, 0x00, 0x00, 0x20, 0x20, 0x20, 0x00, // 71 103 | 0xFE, 0x10, 0x10, 0x10, 0x10, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, // 72 104 | 0xFE, 0x20, // 73 105 | 0x00, 0x00, 0xFE, 0x20, 0x20, 0x00, // 74 106 | 0xFE, 0x10, 0x28, 0xC4, 0x02, 0x20, 0x00, 0x00, 0x00, 0x20, // 75 107 | 0xFE, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, // 76 108 | 0xFE, 0x06, 0x78, 0x80, 0x80, 0x78, 0x06, 0xFE, 0x20, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, // 77 109 | 0xFE, 0x06, 0x18, 0x60, 0x80, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x20, 0x20, // 78 110 | 0xFC, 0x02, 0x02, 0x02, 0x02, 0xFC, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, // 79 111 | 0xFE, 0x22, 0x22, 0x22, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, // 80 112 | 0xFC, 0x02, 0x02, 0x02, 0x02, 0xFC, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, // 81 113 | 0xFE, 0x22, 0x22, 0x62, 0x9C, 0x20, 0x00, 0x00, 0x00, 0x20, // 82 114 | 0x8C, 0x12, 0x22, 0xC4, 0x00, 0x20, 0x20, 0x00, // 83 115 | 0x02, 0x02, 0xFE, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, // 84 116 | 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, // 85 117 | 0x06, 0x18, 0x60, 0x80, 0x60, 0x18, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // 86 118 | 0x06, 0x78, 0x80, 0x60, 0x18, 0x06, 0x18, 0x60, 0x80, 0x78, 0x06, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // 87 119 | 0x02, 0xCC, 0x30, 0x30, 0xCC, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, // 88 120 | 0x06, 0x18, 0xE0, 0x18, 0x06, 0x00, 0x00, 0x20, 0x00, 0x00, // 89 121 | 0x82, 0x42, 0x22, 0x12, 0x0A, 0x06, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 90 122 | 0xFE, 0x02, 0xE0, 0x80, // 91 123 | 0x03, 0x0C, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0xC0, // 92 124 | 0x02, 0xFE, 0x80, 0xE0, // 93 125 | 0x10, 0x0C, 0x02, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 126 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 127 | 0x01, 0x02, 0x00, 0x00, // 96 128 | 0xC8, 0x28, 0x28, 0x28, 0xF0, 0x00, 0x20, 0x20, 0x20, 0x20, // 97 129 | 0xFE, 0x08, 0x08, 0x08, 0xF0, 0x20, 0x20, 0x20, 0x20, 0x00, // 98 130 | 0xF0, 0x08, 0x08, 0x08, 0x00, 0x20, 0x20, 0x20, // 99 131 | 0xF0, 0x08, 0x08, 0x08, 0xFE, 0x00, 0x20, 0x20, 0x20, 0x20, // 100 132 | 0xF0, 0x28, 0x28, 0x28, 0x30, 0x00, 0x20, 0x20, 0x20, 0x20, // 101 133 | 0x08, 0xFC, 0x0A, 0x0A, 0x00, 0x20, 0x00, 0x00, // 102 134 | 0xB0, 0x48, 0x48, 0x38, 0x08, 0xC0, 0xA0, 0xA0, 0xA0, 0x40, // 103 135 | 0xFE, 0x10, 0x08, 0x08, 0xF0, 0x20, 0x00, 0x00, 0x00, 0x20, // 104 136 | 0xFA, 0x20, // 105 137 | 0x00, 0xFA, 0x80, 0x60, // 106 138 | 0xFE, 0x20, 0xD0, 0x08, 0x20, 0x00, 0x00, 0x20, // 107 139 | 0xFE, 0x20, // 108 140 | 0xF8, 0x10, 0x08, 0x08, 0xF0, 0x08, 0x08, 0xF0, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, // 109 141 | 0xF8, 0x10, 0x08, 0x08, 0xF0, 0x20, 0x00, 0x00, 0x00, 0x20, // 110 142 | 0xF0, 0x08, 0x08, 0x08, 0xF0, 0x00, 0x20, 0x20, 0x20, 0x00, // 111 143 | 0xF8, 0x08, 0x08, 0x08, 0xF0, 0xE0, 0x20, 0x20, 0x20, 0x00, // 112 144 | 0xF0, 0x08, 0x08, 0x08, 0xF8, 0x00, 0x20, 0x20, 0x20, 0xE0, // 113 145 | 0xF8, 0x08, 0x08, 0x20, 0x00, 0x00, // 114 146 | 0x30, 0x28, 0x48, 0xC8, 0x20, 0x20, 0x20, 0x00, // 115 147 | 0x08, 0xFC, 0x08, 0x08, 0x00, 0x00, 0x20, 0x20, // 116 148 | 0xF8, 0x00, 0x00, 0x80, 0xF8, 0x00, 0x20, 0x20, 0x00, 0x20, // 117 149 | 0x18, 0x60, 0x80, 0x60, 0x18, 0x00, 0x00, 0x20, 0x00, 0x00, // 118 150 | 0x18, 0x60, 0x80, 0x60, 0x18, 0x60, 0x80, 0x60, 0x18, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // 119 151 | 0x08, 0x90, 0x60, 0x90, 0x08, 0x20, 0x00, 0x00, 0x00, 0x20, // 120 152 | 0x18, 0x60, 0x80, 0x60, 0x18, 0x00, 0xC0, 0x20, 0x00, 0x00, // 121 153 | 0x88, 0x68, 0x18, 0x20, 0x20, 0x20, // 122 154 | 0x20, 0xDC, 0x02, 0x00, 0x60, 0x80, // 123 155 | 0xFE, 0xE0, // 124 156 | 0x02, 0xDC, 0x20, 0x80, 0x60, 0x00, // 125 157 | 0x10, 0x08, 0x18, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 158 | 0xFE, 0x02, 0x0A, 0x7A, 0x02, 0xFE, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 // 127 159 | 160 | }; 161 | 162 | #endif 163 | -------------------------------------------------------------------------------- /src/fonts/Callibri11_bold.h: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Callibri11_bold 4 | * 5 | * created with GLCDFontCreator 6 | * original framework by F. Maximilian Thiele 7 | * Modified By Siddharth Kaul 8 | * 9 | * 10 | * File Name : Callibri11_bold.h 11 | * Date : 10.11.2012 12 | * Font size in bytes : 5217 13 | * Font width : 10 14 | * Font height : 11 15 | * Font first char : 32 16 | * Font last char : 128 17 | * Font used chars : 96 18 | * 19 | * The font data are defined as 20 | * 21 | * struct _FONT_ { 22 | * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; 23 | * uint8_t font_Width_in_Pixel_for_fixed_drawing; 24 | * uint8_t font_Height_in_Pixel_for_all_characters; 25 | * unit8_t font_First_Char; 26 | * uint8_t font_Char_Count; 27 | * 28 | * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; 29 | * // for each character the separate width in pixels, 30 | * // characters < 128 have an implicit virtual right empty row 31 | * 32 | * uint8_t font_data[]; 33 | * // bit field of all characters 34 | */ 35 | 36 | #ifndef _Callibri11_bold_H 37 | #define _Callibri11_bold_H 38 | 39 | #define Callibri11_bold_WIDTH 10 40 | #define Callibri11_bold_HEIGHT 11 41 | 42 | GLCDFONTDECL(Callibri11_bold) = { 43 | 0x14, 0x61, // size 44 | 0x0A, // width 45 | 0x0B, // height 46 | 0x20, // first char 47 | 0x60, // char count 48 | 49 | // char widths 50 | 0x02, 0x02, 0x03, 0x06, 0x05, 0x08, 0x08, 0x01, 0x03, 0x03, 51 | 0x05, 0x05, 0x02, 0x03, 0x02, 0x05, 0x05, 0x06, 0x05, 0x05, 52 | 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x02, 0x02, 0x05, 0x05, 53 | 0x05, 0x05, 0x0A, 0x06, 0x06, 0x05, 0x07, 0x05, 0x05, 0x07, 54 | 0x07, 0x02, 0x03, 0x06, 0x04, 0x09, 0x07, 0x07, 0x05, 0x08, 55 | 0x06, 0x05, 0x06, 0x07, 0x06, 0x0A, 0x06, 0x06, 0x05, 0x03, 56 | 0x05, 0x03, 0x05, 0x06, 0x02, 0x05, 0x05, 0x04, 0x05, 0x05, 57 | 0x03, 0x06, 0x05, 0x02, 0x02, 0x05, 0x02, 0x08, 0x05, 0x05, 58 | 0x05, 0x05, 0x03, 0x04, 0x03, 0x05, 0x05, 0x08, 0x05, 0x05, 59 | 0x04, 0x03, 0x01, 0x04, 0x05, 0x06, 60 | 61 | // font data 62 | 0x00, 0x00, 0x00, 0x00, // 0x20 63 | 0xBE, 0xBE, 0x20, 0x20, // 33 64 | 0x0E, 0x00, 0x0E, 0x00, 0x00, 0x00, // 34 65 | 0x48, 0xE8, 0x5E, 0xE8, 0x5E, 0x48, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, // 35 66 | 0x9C, 0x3E, 0x33, 0xF2, 0xE4, 0x00, 0x20, 0x60, 0x20, 0x00, // 36 67 | 0x0C, 0x12, 0x8C, 0x60, 0x18, 0xC6, 0x20, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, // 37 68 | 0xC0, 0xEC, 0x3E, 0x32, 0x7E, 0xCC, 0xE0, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x20, 0x20, // 38 69 | 0x0E, 0x00, // 39 70 | 0xF0, 0xFC, 0x06, 0x00, 0x60, 0xC0, // 40 71 | 0x06, 0xFC, 0xF0, 0xC0, 0x60, 0x00, // 41 72 | 0x12, 0x0C, 0x3F, 0x0C, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 73 | 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 74 | 0x80, 0x80, 0xE0, 0x60, // 44 75 | 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, // 45 76 | 0x80, 0x80, 0x20, 0x20, // 46 77 | 0x00, 0x80, 0x70, 0x0C, 0x03, 0xC0, 0x20, 0x00, 0x00, 0x00, // 47 78 | 0xFC, 0xFE, 0x02, 0xFE, 0xFC, 0x00, 0x20, 0x20, 0x20, 0x00, // 48 79 | 0x08, 0x04, 0xFE, 0xFE, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 49 80 | 0x84, 0xC2, 0x62, 0x3E, 0x1C, 0x20, 0x20, 0x20, 0x20, 0x20, // 50 81 | 0x84, 0x12, 0x12, 0xFE, 0xEC, 0x00, 0x20, 0x20, 0x20, 0x00, // 51 82 | 0x60, 0x58, 0x46, 0xFE, 0xFE, 0x40, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, // 52 83 | 0x1E, 0x1E, 0x12, 0xF2, 0xE2, 0x20, 0x20, 0x20, 0x20, 0x00, // 53 84 | 0xFC, 0xFE, 0x12, 0xF2, 0xE2, 0x00, 0x20, 0x20, 0x20, 0x00, // 54 85 | 0x02, 0xC2, 0xFA, 0x3E, 0x06, 0x00, 0x20, 0x20, 0x00, 0x00, // 55 86 | 0xEC, 0xFE, 0x12, 0xFE, 0xEC, 0x00, 0x20, 0x20, 0x20, 0x00, // 56 87 | 0x1C, 0x3E, 0x22, 0xFE, 0xFC, 0x20, 0x20, 0x20, 0x20, 0x00, // 57 88 | 0x98, 0x98, 0x20, 0x20, // 58 89 | 0x98, 0x98, 0xE0, 0x60, // 59 90 | 0x20, 0x50, 0x50, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 91 | 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 92 | 0x88, 0x88, 0x50, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 93 | 0x02, 0xB2, 0xB2, 0x1E, 0x0C, 0x00, 0x20, 0x20, 0x00, 0x00, // 63 94 | 0xF0, 0x08, 0x64, 0x92, 0x8A, 0x4A, 0xF2, 0x9A, 0x84, 0x78, 0x00, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, // 64 95 | 0xE0, 0xF8, 0x4E, 0x4E, 0xF8, 0xE0, 0x20, 0x20, 0x00, 0x00, 0x20, 0x20, // 65 96 | 0xFE, 0xFE, 0x12, 0x12, 0xFE, 0xEC, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, // 66 97 | 0xFC, 0xFE, 0x02, 0x02, 0x84, 0x00, 0x20, 0x20, 0x20, 0x00, // 67 98 | 0xFE, 0xFE, 0x02, 0x02, 0x86, 0xFC, 0x78, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, // 68 99 | 0xFE, 0xFE, 0x12, 0x12, 0x12, 0x20, 0x20, 0x20, 0x20, 0x20, // 69 100 | 0xFE, 0xFE, 0x12, 0x12, 0x12, 0x20, 0x20, 0x00, 0x00, 0x00, // 70 101 | 0xFC, 0xFE, 0x02, 0x02, 0x22, 0xE2, 0xE4, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, // 71 102 | 0xFE, 0xFE, 0x10, 0x10, 0x10, 0xFE, 0xFE, 0x20, 0x20, 0x00, 0x00, 0x00, 0x20, 0x20, // 72 103 | 0xFE, 0xFE, 0x20, 0x20, // 73 104 | 0x00, 0xFE, 0xFE, 0x20, 0x20, 0x00, // 74 105 | 0xFE, 0xFE, 0x30, 0xFC, 0xCE, 0x02, 0x20, 0x20, 0x00, 0x00, 0x20, 0x20, // 75 106 | 0xFE, 0xFE, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, // 76 107 | 0xFE, 0xFE, 0x1C, 0x70, 0xC0, 0x70, 0x1C, 0xFE, 0xFE, 0x20, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x20, // 77 108 | 0xFE, 0xFE, 0x0C, 0x30, 0xC0, 0xFE, 0xFE, 0x20, 0x20, 0x00, 0x00, 0x00, 0x20, 0x20, // 78 109 | 0xFC, 0xFE, 0x02, 0x02, 0x02, 0xFE, 0xFC, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, // 79 110 | 0xFE, 0xFE, 0x22, 0x3E, 0x1C, 0x20, 0x20, 0x00, 0x00, 0x00, // 80 111 | 0xFC, 0xFE, 0x02, 0x02, 0x02, 0xFE, 0xFC, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, // 81 112 | 0xFE, 0xFE, 0x12, 0x32, 0xFE, 0xCC, 0x20, 0x20, 0x00, 0x00, 0x20, 0x20, // 82 113 | 0x9C, 0x3E, 0x32, 0xF2, 0xE4, 0x00, 0x20, 0x20, 0x20, 0x00, // 83 114 | 0x02, 0x02, 0xFE, 0xFE, 0x02, 0x02, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, // 84 115 | 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, // 85 116 | 0x0E, 0x7E, 0xE0, 0xE0, 0x7E, 0x0E, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, // 86 117 | 0x06, 0x3E, 0xF8, 0xC0, 0x3E, 0x3E, 0xC0, 0xF8, 0x3E, 0x06, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, // 87 118 | 0x86, 0xCE, 0x78, 0x78, 0xCE, 0x86, 0x20, 0x20, 0x00, 0x00, 0x20, 0x20, // 88 119 | 0x06, 0x1E, 0xF8, 0xF8, 0x1E, 0x06, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, // 89 120 | 0x82, 0xE2, 0x7A, 0x1E, 0x06, 0x20, 0x20, 0x20, 0x20, 0x20, // 90 121 | 0xFE, 0xFE, 0x02, 0xE0, 0xE0, 0x80, // 91 122 | 0x03, 0x0C, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0xC0, // 92 123 | 0x02, 0xFE, 0xFE, 0x80, 0xE0, 0xE0, // 93 124 | 0x10, 0x0C, 0x02, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 125 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 126 | 0x01, 0x02, 0x00, 0x00, // 96 127 | 0xC8, 0xE8, 0x28, 0xF8, 0xF0, 0x00, 0x20, 0x20, 0x20, 0x20, // 97 128 | 0xFE, 0xFE, 0x08, 0xF8, 0xF0, 0x20, 0x20, 0x20, 0x20, 0x00, // 98 129 | 0xF0, 0xF8, 0x08, 0x08, 0x00, 0x20, 0x20, 0x20, // 99 130 | 0xF0, 0xF8, 0x08, 0xFE, 0xFE, 0x00, 0x20, 0x20, 0x20, 0x20, // 100 131 | 0xF0, 0xF8, 0x28, 0x38, 0x30, 0x00, 0x20, 0x20, 0x20, 0x20, // 101 132 | 0xFC, 0xFE, 0x0A, 0x20, 0x20, 0x00, // 102 133 | 0xB0, 0xF8, 0x48, 0x78, 0x38, 0x08, 0xC0, 0xE0, 0xA0, 0xE0, 0x60, 0x00, // 103 134 | 0xFE, 0xFE, 0x08, 0xF8, 0xF0, 0x20, 0x20, 0x00, 0x20, 0x20, // 104 135 | 0xFB, 0xFB, 0x20, 0x20, // 105 136 | 0xFB, 0xFB, 0xE0, 0x60, // 106 137 | 0xFE, 0xFE, 0x60, 0xF8, 0x98, 0x20, 0x20, 0x00, 0x20, 0x20, // 107 138 | 0xFE, 0xFE, 0x20, 0x20, // 108 139 | 0xF8, 0xF8, 0x08, 0xF8, 0xF0, 0x08, 0xF8, 0xF0, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x20, 0x20, // 109 140 | 0xF8, 0xF8, 0x08, 0xF8, 0xF0, 0x20, 0x20, 0x00, 0x20, 0x20, // 110 141 | 0xF0, 0xF8, 0x08, 0xF8, 0xF0, 0x00, 0x20, 0x20, 0x20, 0x00, // 111 142 | 0xF8, 0xF8, 0x08, 0xF8, 0xF0, 0xE0, 0xE0, 0x20, 0x20, 0x00, // 112 143 | 0xF0, 0xF8, 0x08, 0xF8, 0xF8, 0x00, 0x20, 0x20, 0xE0, 0xE0, // 113 144 | 0xF8, 0xF8, 0x08, 0x20, 0x20, 0x00, // 114 145 | 0x30, 0x78, 0xE8, 0xC8, 0x20, 0x20, 0x20, 0x00, // 115 146 | 0xFC, 0xFC, 0x08, 0x00, 0x20, 0x20, // 116 147 | 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x00, 0x20, 0x20, 0x20, 0x20, // 117 148 | 0x38, 0xF8, 0x80, 0xF8, 0x38, 0x00, 0x20, 0x20, 0x20, 0x00, // 118 149 | 0x38, 0xF8, 0xC0, 0x38, 0x38, 0xC0, 0xF8, 0x38, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x20, 0x00, // 119 150 | 0x98, 0xF8, 0x60, 0xF8, 0x98, 0x20, 0x20, 0x00, 0x20, 0x20, // 120 151 | 0x38, 0xF8, 0x80, 0xF8, 0x38, 0x00, 0xC0, 0xE0, 0x20, 0x00, // 121 152 | 0x88, 0xE8, 0x78, 0x18, 0x20, 0x20, 0x20, 0x20, // 122 153 | 0xFC, 0xDE, 0x02, 0x60, 0xE0, 0x80, // 123 154 | 0xFE, 0xE0, // 124 155 | 0x02, 0xDE, 0xFC, 0x20, 0x80, 0xE0, 0x60, 0x00, // 125 156 | 0x10, 0x08, 0x18, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 157 | 0xFE, 0x02, 0x6A, 0x3A, 0x02, 0xFE, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 // 127 158 | 159 | }; 160 | 161 | #endif 162 | -------------------------------------------------------------------------------- /src/fonts/Callibri11_italic.h: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Callibri11_italic 4 | * 5 | * created with GLCDFontCreator 6 | * original framework by F. Maximilian Thiele 7 | * Modified By Siddharth Kaul 8 | * 9 | * 10 | * File Name : Callibri11_italic.h 11 | * Date : 10.11.2012 12 | * Font size in bytes : 5184 13 | * Font width : 10 14 | * Font height : 11 15 | * Font first char : 32 16 | * Font last char : 128 17 | * Font used chars : 96 18 | * 19 | * The font data are defined as 20 | * 21 | * struct _FONT_ { 22 | * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; 23 | * uint8_t font_Width_in_Pixel_for_fixed_drawing; 24 | * uint8_t font_Height_in_Pixel_for_all_characters; 25 | * unit8_t font_First_Char; 26 | * uint8_t font_Char_Count; 27 | * 28 | * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; 29 | * // for each character the separate width in pixels, 30 | * // characters < 128 have an implicit virtual right empty row 31 | * 32 | * uint8_t font_data[]; 33 | * // bit field of all characters 34 | */ 35 | 36 | #ifndef _Callibri11_italic_H 37 | #define _Callibri11_italic_H 38 | 39 | #define Callibri11_italic_WIDTH 10 40 | #define Callibri11_italic_HEIGHT 11 41 | 42 | GLCDFONTDECL(Callibri11_italic) = { 43 | 0x14, 0x40, // size 44 | 0x0A, // width 45 | 0x0B, // height 46 | 0x20, // first char 47 | 0x60, // char count 48 | 49 | // char widths 50 | 0x02, 0x02, 0x03, 0x06, 0x06, 0x08, 0x07, 0x01, 0x03, 0x03, 51 | 0x04, 0x06, 0x02, 0x03, 0x01, 0x05, 0x05, 0x05, 0x06, 0x06, 52 | 0x05, 0x06, 0x05, 0x05, 0x05, 0x06, 0x02, 0x03, 0x05, 0x05, 53 | 0x06, 0x04, 0x0A, 0x07, 0x06, 0x05, 0x06, 0x05, 0x05, 0x07, 54 | 0x06, 0x02, 0x04, 0x05, 0x04, 0x09, 0x07, 0x07, 0x05, 0x07, 55 | 0x06, 0x05, 0x05, 0x07, 0x05, 0x09, 0x06, 0x05, 0x06, 0x03, 56 | 0x03, 0x03, 0x04, 0x05, 0x02, 0x05, 0x05, 0x04, 0x05, 0x05, 57 | 0x04, 0x05, 0x05, 0x02, 0x03, 0x04, 0x02, 0x09, 0x05, 0x05, 58 | 0x05, 0x05, 0x03, 0x05, 0x03, 0x05, 0x04, 0x08, 0x05, 0x05, 59 | 0x05, 0x03, 0x03, 0x04, 0x05, 0x06, 60 | 61 | // font data 62 | 0x00, 0x00, 0x00, 0x00, // 0x20 63 | 0x60, 0x1E, 0x20, 0x00, // 33 64 | 0x08, 0x06, 0x08, 0x00, 0x00, 0x00, // 34 65 | 0xC8, 0x78, 0x4E, 0xC8, 0x78, 0x4E, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, // 35 66 | 0x80, 0x0C, 0x12, 0x22, 0xC3, 0x04, 0x00, 0x60, 0x20, 0x20, 0x00, 0x00, // 36 67 | 0x0C, 0x92, 0x52, 0x2C, 0xD0, 0x28, 0x24, 0xC2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, // 37 68 | 0xC0, 0x20, 0x1C, 0x32, 0xCA, 0xC4, 0x20, 0x00, 0x20, 0x20, 0x20, 0x00, 0x00, 0x20, // 38 69 | 0x08, 0x00, // 39 70 | 0xE0, 0x1C, 0x02, 0x60, 0x80, 0x00, // 40 71 | 0x00, 0x82, 0x7C, 0x80, 0x60, 0x00, // 41 72 | 0x14, 0x38, 0x0E, 0x14, 0x00, 0x00, 0x00, 0x00, // 42 73 | 0x20, 0x20, 0xE0, 0x38, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 74 | 0x00, 0x00, 0x80, 0x60, // 44 75 | 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, // 45 76 | 0x00, 0x20, // 46 77 | 0x80, 0x60, 0x18, 0x06, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, // 47 78 | 0xF0, 0x0C, 0x02, 0xC2, 0x3C, 0x00, 0x20, 0x20, 0x00, 0x00, // 48 79 | 0x00, 0x04, 0xE2, 0x1E, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, // 49 80 | 0x00, 0x80, 0x44, 0x22, 0x12, 0x0C, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, // 50 81 | 0x80, 0x00, 0x14, 0x12, 0xF2, 0x0C, 0x00, 0x20, 0x20, 0x20, 0x00, 0x00, // 51 82 | 0x60, 0x50, 0x48, 0xE4, 0x5E, 0x00, 0x00, 0x00, 0x20, 0x00, // 52 83 | 0x80, 0x18, 0x16, 0x12, 0xE2, 0x02, 0x00, 0x20, 0x20, 0x20, 0x00, 0x00, // 53 84 | 0xE0, 0x18, 0x14, 0x92, 0x62, 0x00, 0x20, 0x20, 0x00, 0x00, // 54 85 | 0x02, 0xC2, 0x32, 0x0A, 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, // 55 86 | 0xE0, 0x1C, 0x12, 0xF2, 0x0C, 0x00, 0x20, 0x20, 0x00, 0x00, // 56 87 | 0x00, 0x18, 0x24, 0xA2, 0x62, 0x1C, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, // 57 88 | 0x00, 0x08, 0x20, 0x00, // 58 89 | 0x00, 0x00, 0x08, 0x80, 0x60, 0x00, // 59 90 | 0x20, 0x50, 0x50, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 91 | 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 92 | 0x80, 0x88, 0x50, 0x50, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 93 | 0x62, 0x12, 0x12, 0x0C, 0x20, 0x00, 0x00, 0x00, // 63 94 | 0xE0, 0x18, 0x04, 0x24, 0x52, 0x4A, 0x7A, 0x4A, 0x22, 0x1C, 0x00, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, // 64 95 | 0x00, 0xC0, 0x70, 0x4C, 0x42, 0x7C, 0xC0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, // 65 96 | 0xE0, 0x1E, 0x12, 0x12, 0x12, 0xEC, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, // 66 97 | 0xF0, 0x0C, 0x02, 0x02, 0x82, 0x00, 0x20, 0x20, 0x20, 0x00, // 67 98 | 0xE0, 0x1E, 0x02, 0x02, 0xC2, 0x3C, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, // 68 99 | 0xE0, 0x1E, 0x12, 0x12, 0x12, 0x20, 0x20, 0x20, 0x20, 0x20, // 69 100 | 0xE0, 0x1E, 0x12, 0x12, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, // 70 101 | 0xF0, 0x0C, 0x02, 0x02, 0x12, 0xD2, 0x34, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, // 71 102 | 0xE0, 0x1E, 0x10, 0x10, 0xF0, 0x1E, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, // 72 103 | 0xE0, 0x1E, 0x20, 0x00, // 73 104 | 0x00, 0x00, 0xE0, 0x1E, 0x20, 0x20, 0x00, 0x00, // 74 105 | 0xE0, 0x1E, 0x30, 0xC8, 0x04, 0x20, 0x00, 0x00, 0x00, 0x20, // 75 106 | 0xE0, 0x1E, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, // 76 107 | 0xE0, 0x1E, 0x06, 0x78, 0x80, 0x60, 0x18, 0xE6, 0x1E, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, // 77 108 | 0xE0, 0x1E, 0x0C, 0x30, 0xC0, 0xE0, 0x1E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, // 78 109 | 0xF0, 0x0C, 0x02, 0x02, 0x02, 0xC2, 0x3C, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, // 79 110 | 0xE0, 0x3E, 0x22, 0x22, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, // 80 111 | 0xF0, 0x0C, 0x02, 0x02, 0x02, 0xC2, 0x3C, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, // 81 112 | 0xE0, 0x1E, 0x12, 0x32, 0xD2, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, // 82 113 | 0x80, 0x0C, 0x12, 0x22, 0xC2, 0x00, 0x20, 0x20, 0x20, 0x00, // 83 114 | 0x02, 0xE2, 0x1E, 0x02, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, // 84 115 | 0xE0, 0x1E, 0x00, 0x00, 0x00, 0xE0, 0x1E, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, // 85 116 | 0xFE, 0x80, 0x60, 0x10, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00, // 86 117 | 0x3E, 0xC0, 0x60, 0x18, 0x0E, 0xF0, 0x40, 0x30, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // 87 118 | 0x00, 0x80, 0x46, 0x78, 0x88, 0x04, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, // 88 119 | 0x06, 0xD8, 0x20, 0x18, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, // 89 120 | 0x80, 0x42, 0x22, 0x12, 0x0A, 0x06, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, // 90 121 | 0xC0, 0x3E, 0x02, 0xE0, 0x80, 0x00, // 91 122 | 0x07, 0xF8, 0x00, 0x00, 0x00, 0xE0, // 92 123 | 0x00, 0xC2, 0x3E, 0x80, 0xE0, 0x00, // 93 124 | 0x10, 0x0C, 0x02, 0x1C, 0x00, 0x00, 0x00, 0x00, // 94 125 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 126 | 0x01, 0x02, 0x00, 0x00, // 96 127 | 0xE0, 0x10, 0x08, 0xC8, 0x38, 0x00, 0x20, 0x20, 0x20, 0x00, // 97 128 | 0xC0, 0x3E, 0x08, 0x88, 0x70, 0x20, 0x20, 0x20, 0x00, 0x00, // 98 129 | 0xE0, 0x10, 0x08, 0x88, 0x00, 0x20, 0x20, 0x00, // 99 130 | 0xE0, 0x10, 0x08, 0xC8, 0x3E, 0x00, 0x20, 0x20, 0x20, 0x00, // 100 131 | 0xE0, 0x30, 0x28, 0x28, 0x10, 0x00, 0x20, 0x20, 0x20, 0x00, // 101 132 | 0x00, 0x88, 0x78, 0x0C, 0x80, 0x60, 0x00, 0x00, // 102 133 | 0xE0, 0x10, 0x08, 0xC8, 0x38, 0x80, 0xA0, 0xA0, 0x60, 0x00, // 103 134 | 0xC0, 0x3E, 0x08, 0xC8, 0x30, 0x20, 0x00, 0x00, 0x20, 0x00, // 104 135 | 0xC0, 0x3A, 0x20, 0x00, // 105 136 | 0x00, 0xC0, 0x3A, 0x80, 0x60, 0x00, // 106 137 | 0xC0, 0x3E, 0xE0, 0x10, 0x20, 0x00, 0x00, 0x20, // 107 138 | 0xC0, 0x3E, 0x20, 0x00, // 108 139 | 0xC0, 0x38, 0x10, 0x08, 0xC8, 0x30, 0x08, 0xC8, 0x30, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, // 109 140 | 0xC0, 0x38, 0x08, 0xC8, 0x30, 0x20, 0x00, 0x00, 0x20, 0x00, // 110 141 | 0xE0, 0x10, 0x08, 0x88, 0x70, 0x00, 0x20, 0x20, 0x00, 0x00, // 111 142 | 0xC0, 0x38, 0x08, 0x88, 0x70, 0xE0, 0x20, 0x20, 0x00, 0x00, // 112 143 | 0xE0, 0x10, 0x08, 0xC8, 0x38, 0x00, 0x20, 0x20, 0xE0, 0x00, // 113 144 | 0xC0, 0x38, 0x08, 0x20, 0x00, 0x00, // 114 145 | 0x00, 0x10, 0x28, 0xC8, 0x08, 0x20, 0x20, 0x20, 0x00, 0x00, // 115 146 | 0xC8, 0x3C, 0x08, 0x00, 0x20, 0x20, // 116 147 | 0xC0, 0x38, 0x00, 0xC0, 0x38, 0x00, 0x20, 0x20, 0x20, 0x00, // 117 148 | 0xF8, 0x80, 0x40, 0x30, 0x20, 0x00, 0x00, 0x00, // 118 149 | 0xF8, 0x80, 0x60, 0x10, 0xF8, 0x80, 0x40, 0x30, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // 119 150 | 0x00, 0x88, 0x70, 0xE0, 0x10, 0x20, 0x00, 0x00, 0x00, 0x20, // 120 151 | 0x00, 0xF8, 0x00, 0xC0, 0x30, 0x80, 0x40, 0x20, 0x00, 0x00, // 121 152 | 0x00, 0x88, 0x48, 0x28, 0x18, 0x20, 0x20, 0x20, 0x20, 0x20, // 122 153 | 0x20, 0xE0, 0x1E, 0x00, 0xE0, 0x80, // 123 154 | 0x00, 0xF0, 0x0E, 0xE0, 0x00, 0x00, // 124 155 | 0x00, 0xC2, 0x3E, 0x20, 0x80, 0x60, 0x00, 0x00, // 125 156 | 0x10, 0x08, 0x08, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 157 | 0xFE, 0x02, 0x5A, 0x0A, 0x02, 0xFE, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 // 127 158 | 159 | }; 160 | 161 | #endif 162 | -------------------------------------------------------------------------------- /src/fonts/Callibri14.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | /* 4 | * 5 | * new Font 6 | * 7 | * created with GLCDFontCreator 8 | * original framework by F. Maximilian Thiele 9 | * Modified By Siddharth Kaul 10 | * 11 | * 12 | * File Name : callibri_size14.h 13 | * Date : 10.11.2012 14 | * Font size in bytes : 7102 15 | * Font width : 10 16 | * Font height : 14 17 | * Font first char : 32 18 | * Font last char : 128 19 | * Font used chars : 96 20 | * 21 | * The font data are defined as 22 | * 23 | * struct _FONT_ { 24 | * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; 25 | * uint8_t font_Width_in_Pixel_for_fixed_drawing; 26 | * uint8_t font_Height_in_Pixel_for_all_characters; 27 | * unit8_t font_First_Char; 28 | * uint8_t font_Char_Count; 29 | * 30 | * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; 31 | * // for each character the separate width in pixels, 32 | * // characters < 128 have an implicit virtual right empty row 33 | * 34 | * uint8_t font_data[]; 35 | * // bit field of all characters 36 | */ 37 | 38 | #ifndef _Callibri14_H 39 | #define _Callibri14_H 40 | 41 | #define Callibri14_WIDTH 10 42 | #define Callibri14_HEIGHT 14 43 | 44 | GLCDFONTDECL(Callibri14) = { 45 | 0x1B, 0xBE, // size 46 | 0x0A, // width 47 | 0x0E, // height 48 | 0x20, // first char 49 | 0x60, // char count 50 | 51 | // char widths 52 | 0x02, 0x01, 0x04, 0x07, 0x05, 0x09, 0x08, 0x01, 0x02, 0x02, 53 | 0x05, 0x07, 0x03, 0x03, 0x01, 0x05, 0x07, 0x05, 0x06, 0x06, 54 | 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x01, 0x02, 0x06, 0x06, 55 | 0x05, 0x05, 0x0A, 0x08, 0x06, 0x06, 0x07, 0x05, 0x05, 0x07, 56 | 0x06, 0x01, 0x03, 0x05, 0x05, 0x0A, 0x07, 0x08, 0x05, 0x08, 57 | 0x06, 0x05, 0x07, 0x07, 0x08, 0x0C, 0x07, 0x05, 0x06, 0x03, 58 | 0x05, 0x02, 0x05, 0x07, 0x02, 0x05, 0x06, 0x05, 0x06, 0x06, 59 | 0x04, 0x06, 0x05, 0x01, 0x02, 0x05, 0x01, 0x09, 0x05, 0x06, 60 | 0x06, 0x06, 0x04, 0x04, 0x04, 0x05, 0x06, 0x0A, 0x06, 0x06, 61 | 0x04, 0x03, 0x01, 0x03, 0x06, 0x07, 62 | 63 | // font data 64 | 0x00, 0x00, 0x00, 0x00, // 0x20 65 | 0xFE, 0x18, // 33 66 | 0x1E, 0x00, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, // 34 67 | 0x80, 0xD0, 0xBC, 0x90, 0xD0, 0xBC, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, // 35 68 | 0x38, 0x64, 0x47, 0x44, 0x88, 0x18, 0x70, 0x10, 0x10, 0x0C, // 36 69 | 0x38, 0x44, 0x44, 0x38, 0x80, 0xC0, 0x70, 0x48, 0x84, 0x00, 0x00, 0x10, 0x08, 0x04, 0x0C, 0x10, 0x10, 0x0C, // 37 70 | 0xC0, 0x7E, 0x62, 0xF2, 0x9E, 0x04, 0xC0, 0x00, 0x0C, 0x10, 0x10, 0x10, 0x1C, 0x0C, 0x1C, 0x10, // 38 71 | 0x1E, 0x00, // 39 72 | 0xF0, 0x0E, 0x1C, 0xE0, // 40 73 | 0x0E, 0xF0, 0xE0, 0x1C, // 41 74 | 0x14, 0x14, 0x3E, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 75 | 0x80, 0x80, 0x80, 0xF0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, // 43 76 | 0x00, 0x00, 0x00, 0x40, 0x38, 0x08, // 44 77 | 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, // 45 78 | 0x00, 0x18, // 46 79 | 0x00, 0x00, 0xC0, 0x38, 0x0E, 0x60, 0x38, 0x04, 0x00, 0x00, // 47 80 | 0xF0, 0x08, 0x04, 0x04, 0x04, 0x0C, 0xF0, 0x04, 0x18, 0x10, 0x10, 0x10, 0x08, 0x04, // 48 81 | 0x08, 0x04, 0xFC, 0x00, 0x00, 0x10, 0x10, 0x1C, 0x10, 0x10, // 49 82 | 0x08, 0x04, 0x04, 0x84, 0x44, 0x38, 0x10, 0x18, 0x14, 0x10, 0x10, 0x10, // 50 83 | 0x08, 0x44, 0x44, 0x44, 0xE4, 0xB8, 0x08, 0x10, 0x10, 0x10, 0x10, 0x0C, // 51 84 | 0x80, 0x60, 0x30, 0x0C, 0xFC, 0x00, 0x04, 0x04, 0x04, 0x04, 0x1C, 0x04, // 52 85 | 0x3C, 0x24, 0x24, 0x24, 0x64, 0xC0, 0x18, 0x10, 0x10, 0x10, 0x18, 0x0C, // 53 86 | 0xF0, 0x28, 0x24, 0x24, 0x24, 0xC4, 0x0C, 0x18, 0x10, 0x10, 0x18, 0x0C, // 54 87 | 0x04, 0x04, 0x04, 0xC4, 0x3C, 0x0C, 0x00, 0x10, 0x1C, 0x04, 0x00, 0x00, // 55 88 | 0x98, 0xA4, 0x44, 0x44, 0xA4, 0x98, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 56 89 | 0x38, 0x44, 0x44, 0x44, 0x4C, 0xF8, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, // 57 90 | 0x30, 0x18, // 58 91 | 0x00, 0x60, 0x40, 0x38, // 59 92 | 0x40, 0xE0, 0xA0, 0x10, 0x10, 0x08, 0x00, 0x00, 0x00, 0x04, 0x04, 0x08, // 60 93 | 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, // 61 94 | 0x10, 0x20, 0x20, 0xC0, 0xC0, 0x08, 0x04, 0x04, 0x00, 0x00, // 62 95 | 0x06, 0xE2, 0x22, 0x36, 0x1C, 0x00, 0x18, 0x18, 0x00, 0x00, // 63 96 | 0xC0, 0x30, 0xC8, 0x64, 0x24, 0xE4, 0x64, 0x04, 0x08, 0xF0, 0x1C, 0x20, 0x4C, 0x48, 0x48, 0x44, 0x48, 0x08, 0x0C, 0x00, // 64 97 | 0x00, 0x80, 0xF0, 0x1C, 0x1C, 0xF0, 0x80, 0x00, 0x10, 0x1C, 0x04, 0x04, 0x04, 0x04, 0x1C, 0x10, // 65 98 | 0xFC, 0x44, 0x44, 0x44, 0x78, 0x80, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 66 99 | 0xF0, 0x08, 0x04, 0x04, 0x04, 0x08, 0x04, 0x08, 0x10, 0x10, 0x10, 0x08, // 67 100 | 0xFC, 0x04, 0x04, 0x04, 0x04, 0x08, 0xF0, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, // 68 101 | 0xFC, 0x44, 0x44, 0x44, 0x04, 0x1C, 0x10, 0x10, 0x10, 0x10, // 69 102 | 0xFC, 0x44, 0x44, 0x44, 0x44, 0x1C, 0x00, 0x00, 0x00, 0x00, // 70 103 | 0xF0, 0x08, 0x04, 0x04, 0x44, 0x44, 0xC8, 0x04, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x1C, // 71 104 | 0xFC, 0x40, 0x40, 0x40, 0x40, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x1C, // 72 105 | 0xFC, 0x1C, // 73 106 | 0x00, 0x00, 0xFC, 0x10, 0x10, 0x0C, // 74 107 | 0xFC, 0x40, 0xB0, 0x18, 0x04, 0x1C, 0x00, 0x00, 0x0C, 0x18, // 75 108 | 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x10, 0x10, 0x10, 0x10, // 76 109 | 0xFC, 0x0C, 0x30, 0xC0, 0x00, 0x00, 0xC0, 0x30, 0x0C, 0xFC, 0x1C, 0x00, 0x00, 0x04, 0x1C, 0x1C, 0x04, 0x00, 0x00, 0x1C, // 77 110 | 0xFC, 0x0C, 0x30, 0x60, 0x80, 0x00, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x04, 0x1C, 0x1C, // 78 111 | 0xF0, 0x08, 0x04, 0x04, 0x04, 0x04, 0x08, 0xF0, 0x04, 0x08, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, // 79 112 | 0xFC, 0x84, 0x84, 0xC4, 0x78, 0x1C, 0x00, 0x00, 0x00, 0x00, // 80 113 | 0xF0, 0x08, 0x04, 0x04, 0x04, 0x04, 0x08, 0xF0, 0x04, 0x08, 0x10, 0x10, 0x10, 0x10, 0x18, 0x34, // 81 114 | 0xFC, 0x44, 0x44, 0xC4, 0x38, 0x00, 0x1C, 0x00, 0x00, 0x04, 0x1C, 0x10, // 82 115 | 0x38, 0x24, 0x44, 0xC4, 0x88, 0x08, 0x10, 0x10, 0x10, 0x0C, // 83 116 | 0x04, 0x04, 0x04, 0xFC, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, // 84 117 | 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x0C, 0x18, 0x10, 0x10, 0x10, 0x08, 0x0C, // 85 118 | 0x04, 0x3C, 0xE0, 0x00, 0x00, 0xE0, 0x3C, 0x04, 0x00, 0x00, 0x04, 0x1C, 0x1C, 0x04, 0x00, 0x00, // 86 119 | 0x04, 0x3C, 0xE0, 0x00, 0xC0, 0x7C, 0x1C, 0xE0, 0x00, 0x80, 0xF0, 0x0C, 0x00, 0x00, 0x0C, 0x18, 0x0C, 0x00, 0x00, 0x04, 0x1C, 0x1C, 0x00, 0x00, // 87 120 | 0x00, 0x0C, 0xB8, 0x60, 0xB0, 0x1C, 0x04, 0x10, 0x18, 0x04, 0x00, 0x04, 0x1C, 0x10, // 88 121 | 0x0C, 0x30, 0xC0, 0x30, 0x0C, 0x00, 0x00, 0x1C, 0x00, 0x00, // 89 122 | 0x04, 0x04, 0x84, 0x64, 0x3C, 0x0C, 0x10, 0x1C, 0x14, 0x10, 0x10, 0x10, // 90 123 | 0xFE, 0x02, 0x02, 0x7C, 0x40, 0x40, // 91 124 | 0x02, 0x1C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, // 92 125 | 0x02, 0xFE, 0x40, 0x7C, // 93 126 | 0x60, 0x18, 0x04, 0x38, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 127 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 128 | 0x02, 0x04, 0x00, 0x00, // 96 129 | 0x20, 0x90, 0x90, 0x90, 0xE0, 0x0C, 0x10, 0x10, 0x10, 0x1C, // 97 130 | 0xFE, 0x20, 0x10, 0x10, 0x30, 0xE0, 0x1C, 0x08, 0x10, 0x10, 0x18, 0x0C, // 98 131 | 0xE0, 0x30, 0x10, 0x10, 0x20, 0x0C, 0x18, 0x10, 0x10, 0x08, // 99 132 | 0xE0, 0x30, 0x10, 0x10, 0x20, 0xFE, 0x0C, 0x18, 0x10, 0x10, 0x08, 0x1C, // 100 133 | 0xE0, 0xB0, 0x90, 0x90, 0xB0, 0xE0, 0x0C, 0x18, 0x10, 0x10, 0x10, 0x10, // 101 134 | 0x10, 0xFC, 0x12, 0x12, 0x00, 0x1C, 0x00, 0x00, // 102 135 | 0xE0, 0x10, 0x10, 0x10, 0xF0, 0x10, 0x6C, 0x94, 0x94, 0x94, 0x90, 0x60, // 103 136 | 0xFE, 0x20, 0x10, 0x10, 0xE0, 0x1C, 0x00, 0x00, 0x00, 0x1C, // 104 137 | 0xF4, 0x1C, // 105 138 | 0x00, 0xF4, 0x80, 0xFC, // 106 139 | 0xFE, 0xC0, 0x60, 0x30, 0x10, 0x1C, 0x00, 0x04, 0x18, 0x10, // 107 140 | 0xFE, 0x1C, // 108 141 | 0xF0, 0x20, 0x10, 0x10, 0xE0, 0x20, 0x10, 0x10, 0xE0, 0x1C, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x1C, // 109 142 | 0xF0, 0x20, 0x10, 0x10, 0xE0, 0x1C, 0x00, 0x00, 0x00, 0x1C, // 110 143 | 0xE0, 0x30, 0x10, 0x10, 0x30, 0xE0, 0x0C, 0x18, 0x10, 0x10, 0x18, 0x0C, // 111 144 | 0xF0, 0x20, 0x10, 0x10, 0x30, 0xE0, 0xFC, 0x08, 0x10, 0x10, 0x18, 0x0C, // 112 145 | 0xE0, 0x30, 0x10, 0x10, 0x20, 0xF0, 0x0C, 0x18, 0x10, 0x10, 0x08, 0xFC, // 113 146 | 0xF0, 0x20, 0x10, 0x10, 0x1C, 0x00, 0x00, 0x00, // 114 147 | 0x60, 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x0C, // 115 148 | 0x10, 0xFC, 0x10, 0x10, 0x00, 0x1C, 0x10, 0x10, // 116 149 | 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x0C, 0x10, 0x10, 0x08, 0x1C, // 117 150 | 0x30, 0xE0, 0x00, 0x00, 0xE0, 0x10, 0x00, 0x04, 0x1C, 0x1C, 0x00, 0x00, // 118 151 | 0x10, 0xF0, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0xF0, 0x10, 0x00, 0x00, 0x1C, 0x1C, 0x00, 0x00, 0x1C, 0x1C, 0x00, 0x00, // 119 152 | 0x00, 0x30, 0xC0, 0xC0, 0x30, 0x10, 0x10, 0x18, 0x04, 0x04, 0x18, 0x10, // 120 153 | 0x10, 0xF0, 0x80, 0x00, 0xC0, 0x30, 0x00, 0x00, 0xDC, 0x38, 0x04, 0x00, // 121 154 | 0x10, 0x90, 0x70, 0x30, 0x18, 0x14, 0x10, 0x10, // 122 155 | 0x40, 0xBE, 0x02, 0x00, 0x7C, 0x40, // 123 156 | 0xFE, 0xFC, // 124 157 | 0x02, 0xBE, 0x40, 0x40, 0x7C, 0x00, // 125 158 | 0x30, 0x08, 0x18, 0x20, 0x20, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 159 | 0xFC, 0x04, 0x14, 0x54, 0x74, 0x04, 0xFC, 0x1C, 0x10, 0x10, 0x14, 0x10, 0x10, 0x1C // 127 160 | 161 | }; 162 | 163 | #endif 164 | -------------------------------------------------------------------------------- /src/fonts/Iain5x7.h: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Iain5x7 4 | * 5 | * created with FontCreator 6 | * written by F. Maximilian Thiele 7 | * 8 | * http://www.apetech.de/fontCreator 9 | * me@apetech.de 10 | * 11 | * File Name : Iain5x7.h 12 | * Date : 28.12.2010 13 | * Font size in bytes : 2461 14 | * Font width : 5 15 | * Font height : 7 16 | * Font first char : 32 17 | * Font last char : 128 18 | * Font used chars : 96 19 | * 20 | * The font data are defined as 21 | * 22 | * struct _FONT_ { 23 | * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; 24 | * uint8_t font_Width_in_Pixel_for_fixed_drawing; 25 | * uint8_t font_Height_in_Pixel_for_all_characters; 26 | * unit8_t font_First_Char; 27 | * uint8_t font_Char_Count; 28 | * 29 | * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; 30 | * // for each character the separate width in pixels, 31 | * // characters < 128 have an implicit virtual right empty row 32 | * 33 | * uint8_t font_data[]; 34 | * // bit field of all characters 35 | */ 36 | 37 | #ifndef IAIN5X7_H_INCLUDED 38 | #define IAIN5X7_H_INCLUDED 39 | 40 | #define IAIN5X7_WIDTH 5 41 | #define IAIN5X7_HEIGHT 7 42 | 43 | //#define SUBFONT 44 | 45 | GLCDFONTDECL(Iain5x7) = { 46 | 0x09, 0x9D, // size 47 | 0x05, // width 48 | 0x07, // height 49 | 50 | #ifdef SUBFONT 51 | 'A', 52 | 63, 53 | #else 54 | 0x20, // first char 55 | 0x60, // char count 56 | #endif 57 | 58 | // char widths 59 | #ifndef SUBFONT 60 | 0x01, 0x01, 0x03, 0x05, 0x05, 0x05, 0x05, 0x01, 0x02, 0x02, 61 | 0x05, 0x03, 0x01, 0x02, 0x01, 0x03, 0x04, 0x02, 0x04, 0x04, 62 | 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x01, 0x01, 0x03, 0x03, 63 | 64 | 0x03, 0x04, 0x05, 65 | #endif 66 | 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 67 | 0x04, 0x03, 0x04, 0x05, 0x03, 0x05, 0x05, 0x05, 0x04, 0x05, 68 | 0x04, 0x04, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x02, 69 | 0x03, 0x02, 0x03, 0x03, 0x01, 0x04, 0x04, 0x04, 0x04, 0x04, 70 | 0x04, 0x04, 0x04, 0x01, 0x03, 0x04, 0x01, 0x05, 0x04, 0x04, 71 | 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x05, 0x03, 0x04, 72 | 0x04, 0x03, 0x01, 0x03, 0x05, 0x00, 73 | 74 | // font data 75 | #ifndef SUBFONT 76 | 0x00, // 32 77 | 0xBE, // 33 ! 78 | 0x0E, 0x00, 0x0E, // 34 " 79 | 0x28, 0xFE, 0x28, 0xFE, 0x28, // 35 # 80 | 0x48, 0x54, 0xFE, 0x54, 0x24, // 36 $ 81 | 0x46, 0x26, 0x10, 0xC8, 0xC4, // 37 % 82 | 0x6C, 0x92, 0xAA, 0x44, 0xA0, // 38 & 83 | 0x06, // 39 ' 84 | 0x3C, 0x42, // 40 ( 85 | 0x42, 0x3C, // 41 ) 86 | 0x00, 0x54, 0x38, 0x54, 0x00, // 42 * 87 | 0x10, 0x38, 0x10, // 43 + 88 | 0xC0, // 44 , 89 | 0x10, 0x10, // 45 - 90 | 0x40, // 46 . 91 | 0xC0, 0x38, 0x06, // 47 / 92 | 0x7C, 0x82, 0x82, 0x7C, // 48 0 93 | 0x04, 0xFE, // 49 1 94 | 0xC4, 0xA2, 0x92, 0x8C, // 50 2 95 | 0x82, 0x92, 0x92, 0x6C, // 51 3 96 | 0x30, 0x28, 0x24, 0xFE, // 52 4 97 | 0x4E, 0x92, 0x92, 0x72, // 53 5 98 | 0x78, 0x94, 0x92, 0x60, // 54 6 99 | 0x02, 0xE2, 0x12, 0x0E, // 55 7 100 | 0x6C, 0x92, 0x92, 0x6C, // 56 8 101 | 0x0C, 0x92, 0x52, 0x3C, // 57 9 102 | 0x6C, // 58 : 103 | 0x6C, // 59 ; 104 | 0x10, 0x28, 0x44, // 60 < 105 | 0x28, 0x28, 0x28, // 61 = 106 | 0x44, 0x28, 0x10, // 62 > 107 | 0x04, 0xA2, 0x12, 0x0C, // 63 ? 108 | 0x64, 0x92, 0xF2, 0x82, 0x7C, // 64 @ 109 | #endif 110 | 0xFC, 0x22, 0x22, 0xFC, // 65 A 111 | 0xFE, 0x92, 0x92, 0x6C, // 66 B 112 | 0x7C, 0x82, 0x82, 0x44, // 67 C 113 | 0xFE, 0x82, 0x82, 0x7C, // 68 D 114 | 0xFE, 0x92, 0x92, 0x82, // 69 E 115 | 0xFE, 0x12, 0x12, 0x02, // 70 F 116 | 0x7C, 0x82, 0xA2, 0x64, // 71 G 117 | 0xFE, 0x10, 0x10, 0xFE, // 72 H 118 | 0x82, 0xFE, 0x82, // 73 I 119 | 0x40, 0x80, 0x80, 0x7E, // 74 J 120 | 0xFE, 0x10, 0x28, 0x44, 0x82, // 75 K 121 | 0xFE, 0x80, 0x80, // 76 L 122 | 0xFE, 0x04, 0x08, 0x04, 0xFE, // 77 M 123 | 0xFE, 0x08, 0x10, 0x20, 0xFE, // 78 N 124 | 0x7C, 0x82, 0x82, 0x82, 0x7C, // 79 O 125 | 0xFE, 0x12, 0x12, 0x0C, // 80 P 126 | 0x7C, 0x82, 0xA2, 0x42, 0xBC, // 81 Q 127 | 0xFE, 0x32, 0x52, 0x8C, // 82 R 128 | 0x4C, 0x92, 0x92, 0x64, // 83 S 129 | 0x02, 0xFE, 0x02, // 84 T 130 | 0x7E, 0x80, 0x80, 0x7E, // 85 U 131 | 0x3E, 0x40, 0x80, 0x40, 0x3E, // 86 V 132 | 0xFE, 0x40, 0x30, 0x40, 0xFE, // 87 W 133 | 0xC6, 0x28, 0x10, 0x28, 0xC6, // 88 X 134 | 0x06, 0x08, 0xF0, 0x08, 0x06, // 89 Y 135 | 0xC2, 0xA2, 0x92, 0x8A, 0x86, // 90 Z 136 | 0xFE, 0x82, // 91 [ 137 | 0x06, 0x38, 0xC0, // 92 '\' 138 | 0x82, 0xFE, // 93 ] 139 | 0x04, 0x02, 0x04, // 94 ^ 140 | 0x80, 0x80, 0x80, // 95 _ 141 | 0x06, // 96 ` 142 | 0x40, 0xA8, 0xA8, 0x70, // 97 a 143 | 0x7E, 0x90, 0x88, 0x70, // 98 b 144 | 0x70, 0x88, 0x88, 0x50, // 99 c 145 | 0x70, 0x88, 0x90, 0x7E, // 100 d 146 | 0x70, 0xA8, 0xA8, 0x30, // 101 e 147 | 0x10, 0xFC, 0x12, 0x04, // 102 f 148 | 0x10, 0xA8, 0xA8, 0x78, // 103 g 149 | 0xFE, 0x10, 0x08, 0xF0, // 104 h 150 | 0xFA, // 105 i 151 | 0x40, 0x80, 0x7A, // 106 j 152 | 0xFE, 0x20, 0x50, 0x88, // 107 k 153 | 0xFE, // 108 l 154 | 0xF8, 0x08, 0x30, 0x08, 0xF0, // 109 m 155 | 0xF8, 0x10, 0x08, 0xF0, // 110 n 156 | 0x70, 0x88, 0x88, 0x70, // 111 o 157 | 0xF8, 0x28, 0x28, 0x10, // 112 p 158 | 0x10, 0x28, 0x28, 0xF8, // 113 q 159 | 0xF8, 0x10, 0x08, 0x10, // 114 r 160 | 0x90, 0xA8, 0xA8, 0x48, // 115 s 161 | 0x08, 0x7E, 0x88, 0x40, // 116 t 162 | 0x78, 0x80, 0x40, 0xF8, // 117 u 163 | 0x78, 0x80, 0x78, // 118 v 164 | 0x78, 0x80, 0x60, 0x80, 0x78, // 119 w 165 | 0xD8, 0x20, 0xD8, // 120 x 166 | 0x18, 0xA0, 0xA0, 0x78, // 121 y 167 | 0xC8, 0xA8, 0xA8, 0x98, // 122 z 168 | 0x10, 0x6C, 0x82, // 123 { 169 | 0xEE, // 124 | 170 | 0x82, 0x6C, 0x10, // 125 } 171 | 0x10, 0x08, 0x10, 0x20, 0x10, // 126 ~ 172 | // no defintion for 127 173 | 174 | }; 175 | #endif 176 | -------------------------------------------------------------------------------- /src/fonts/Stang5x7.h: -------------------------------------------------------------------------------- 1 | /*! \file Stang5x7.h \brief Graphic LCD Font (Ascii Characters). */ 2 | //***************************************************************************** 3 | // 4 | // File Name : 'Stang5x7.h' 5 | // Title : Graphic LCD Font (Ascii Charaters) 6 | // Author : Pascal Stang 7 | // Date : 10/19/2001 8 | // Revised : 10/19/2001 9 | // Version : 0.1 10 | // Target MCU : Atmel AVR 11 | // Editor Tabs : 4 12 | // 13 | //***************************************************************************** 14 | 15 | #ifndef Stang5x7_h 16 | #define Stang5x7_h 17 | 18 | // standard ascii 5x7 font 19 | // defines ascii characters 0x20-0x7F (32-127) 20 | GLCDFONTDECL(Stang5x7) = { 21 | 0x0, 0x0, // size of zero indicates fixed width font, 22 | 0x05, // width 23 | 0x07, // height 24 | 0x20, // first char 25 | 0x60, // char count 26 | 0x00, 0x00, 0x00, 0x00, 0x00,// (space) 27 | 0x00, 0x00, 0x5F, 0x00, 0x00,// ! 28 | 0x00, 0x07, 0x00, 0x07, 0x00,// " 29 | 0x14, 0x7F, 0x14, 0x7F, 0x14,// # 30 | 0x24, 0x2A, 0x7F, 0x2A, 0x12,// $ 31 | 0x23, 0x13, 0x08, 0x64, 0x62,// % 32 | 0x36, 0x49, 0x55, 0x22, 0x50,// & 33 | 0x00, 0x05, 0x03, 0x00, 0x00,// ' 34 | 0x00, 0x1C, 0x22, 0x41, 0x00,// ( 35 | 0x00, 0x41, 0x22, 0x1C, 0x00,// ) 36 | 0x08, 0x2A, 0x1C, 0x2A, 0x08,// * 37 | 0x08, 0x08, 0x3E, 0x08, 0x08,// + 38 | 0x00, 0x50, 0x30, 0x00, 0x00,// , 39 | 0x08, 0x08, 0x08, 0x08, 0x08,// - 40 | 0x00, 0x60, 0x60, 0x00, 0x00,// . 41 | 0x20, 0x10, 0x08, 0x04, 0x02,// / 42 | 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0 43 | 0x00, 0x42, 0x7F, 0x40, 0x00,// 1 44 | 0x42, 0x61, 0x51, 0x49, 0x46,// 2 45 | 0x21, 0x41, 0x45, 0x4B, 0x31,// 3 46 | 0x18, 0x14, 0x12, 0x7F, 0x10,// 4 47 | 0x27, 0x45, 0x45, 0x45, 0x39,// 5 48 | 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6 49 | 0x01, 0x71, 0x09, 0x05, 0x03,// 7 50 | 0x36, 0x49, 0x49, 0x49, 0x36,// 8 51 | 0x06, 0x49, 0x49, 0x29, 0x1E,// 9 52 | 0x00, 0x36, 0x36, 0x00, 0x00,// : 53 | 0x00, 0x56, 0x36, 0x00, 0x00,// ; 54 | 0x00, 0x08, 0x14, 0x22, 0x41,// < 55 | 0x14, 0x14, 0x14, 0x14, 0x14,// = 56 | 0x41, 0x22, 0x14, 0x08, 0x00,// > 57 | 0x02, 0x01, 0x51, 0x09, 0x06,// ? 58 | 0x32, 0x49, 0x79, 0x41, 0x3E,// @ 59 | 0x7E, 0x11, 0x11, 0x11, 0x7E,// A 60 | 0x7F, 0x49, 0x49, 0x49, 0x36,// B 61 | 0x3E, 0x41, 0x41, 0x41, 0x22,// C 62 | 0x7F, 0x41, 0x41, 0x22, 0x1C,// D 63 | 0x7F, 0x49, 0x49, 0x49, 0x41,// E 64 | 0x7F, 0x09, 0x09, 0x01, 0x01,// F 65 | 0x3E, 0x41, 0x41, 0x51, 0x32,// G 66 | 0x7F, 0x08, 0x08, 0x08, 0x7F,// H 67 | 0x00, 0x41, 0x7F, 0x41, 0x00,// I 68 | 0x20, 0x40, 0x41, 0x3F, 0x01,// J 69 | 0x7F, 0x08, 0x14, 0x22, 0x41,// K 70 | 0x7F, 0x40, 0x40, 0x40, 0x40,// L 71 | 0x7F, 0x02, 0x04, 0x02, 0x7F,// M 72 | 0x7F, 0x04, 0x08, 0x10, 0x7F,// N 73 | 0x3E, 0x41, 0x41, 0x41, 0x3E,// O 74 | 0x7F, 0x09, 0x09, 0x09, 0x06,// P 75 | 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q 76 | 0x7F, 0x09, 0x19, 0x29, 0x46,// R 77 | 0x46, 0x49, 0x49, 0x49, 0x31,// S 78 | 0x01, 0x01, 0x7F, 0x01, 0x01,// T 79 | 0x3F, 0x40, 0x40, 0x40, 0x3F,// U 80 | 0x1F, 0x20, 0x40, 0x20, 0x1F,// V 81 | 0x7F, 0x20, 0x18, 0x20, 0x7F,// W 82 | 0x63, 0x14, 0x08, 0x14, 0x63,// X 83 | 0x03, 0x04, 0x78, 0x04, 0x03,// Y 84 | 0x61, 0x51, 0x49, 0x45, 0x43,// Z 85 | 0x00, 0x00, 0x7F, 0x41, 0x41,// [ 86 | 0x02, 0x04, 0x08, 0x10, 0x20,// "\" 87 | 0x41, 0x41, 0x7F, 0x00, 0x00,// ] 88 | 0x04, 0x02, 0x01, 0x02, 0x04,// ^ 89 | 0x40, 0x40, 0x40, 0x40, 0x40,// _ 90 | 0x00, 0x01, 0x02, 0x04, 0x00,// ` 91 | 0x20, 0x54, 0x54, 0x54, 0x78,// a 92 | 0x7F, 0x48, 0x44, 0x44, 0x38,// b 93 | 0x38, 0x44, 0x44, 0x44, 0x20,// c 94 | 0x38, 0x44, 0x44, 0x48, 0x7F,// d 95 | 0x38, 0x54, 0x54, 0x54, 0x18,// e 96 | 0x08, 0x7E, 0x09, 0x01, 0x02,// f 97 | 0x08, 0x14, 0x54, 0x54, 0x3C,// g 98 | 0x7F, 0x08, 0x04, 0x04, 0x78,// h 99 | 0x00, 0x44, 0x7D, 0x40, 0x00,// i 100 | 0x20, 0x40, 0x44, 0x3D, 0x00,// j 101 | 0x00, 0x7F, 0x10, 0x28, 0x44,// k 102 | 0x00, 0x41, 0x7F, 0x40, 0x00,// l 103 | 0x7C, 0x04, 0x18, 0x04, 0x78,// m 104 | 0x7C, 0x08, 0x04, 0x04, 0x78,// n 105 | 0x38, 0x44, 0x44, 0x44, 0x38,// o 106 | 0x7C, 0x14, 0x14, 0x14, 0x08,// p 107 | 0x08, 0x14, 0x14, 0x18, 0x7C,// q 108 | 0x7C, 0x08, 0x04, 0x04, 0x08,// r 109 | 0x48, 0x54, 0x54, 0x54, 0x20,// s 110 | 0x04, 0x3F, 0x44, 0x40, 0x20,// t 111 | 0x3C, 0x40, 0x40, 0x20, 0x7C,// u 112 | 0x1C, 0x20, 0x40, 0x20, 0x1C,// v 113 | 0x3C, 0x40, 0x30, 0x40, 0x3C,// w 114 | 0x44, 0x28, 0x10, 0x28, 0x44,// x 115 | 0x0C, 0x50, 0x50, 0x50, 0x3C,// y 116 | 0x44, 0x64, 0x54, 0x4C, 0x44,// z 117 | 0x00, 0x08, 0x36, 0x41, 0x00,// { 118 | 0x00, 0x00, 0x7F, 0x00, 0x00,// | 119 | 0x00, 0x41, 0x36, 0x08, 0x00,// } 120 | 0x0C, 0x02, 0x0C, 0x10, 0x0C,// ~ 121 | 0x7F, 0x7F, 0x7F, 0x7F, 0x7F // del 122 | }; 123 | 124 | #endif // Stang5x7_H -------------------------------------------------------------------------------- /src/fonts/System5x7.h: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * System5x7 4 | * 5 | * 6 | * File Name : System5x7.h 7 | * Date : 28 Oct 2008 8 | * Font size in bytes : 470 9 | * Font width : 5 10 | * Font height : 7 11 | * Font first char : 32 12 | * Font last char : 127 13 | * Font used chars : 94 14 | * 15 | * The font data are defined as 16 | * 17 | * struct _FONT_ { 18 | * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; 19 | * uint8_t font_Width_in_Pixel_for_fixed_drawing; 20 | * uint8_t font_Height_in_Pixel_for_all_characters; 21 | * unit8_t font_First_Char; 22 | * uint8_t font_Char_Count; 23 | * 24 | * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; 25 | * // for each character the separate width in pixels, 26 | * // characters < 128 have an implicit virtual right empty row 27 | * 28 | * uint8_t font_data[]; 29 | * // bit field of all characters 30 | */ 31 | 32 | #ifndef SYSTEM5x7_H 33 | #define SYSTEM5x7_H 34 | 35 | #define SYSTEM5x7_WIDTH 5 36 | #define SYSTEM5x7_HEIGHT 7 37 | 38 | GLCDFONTDECL(System5x7) = { 39 | 0x0, 0x0, // size of zero indicates fixed width font, 40 | 0x05, // width 41 | 0x07, // height 42 | 0x20, // first char 43 | 0x61, // char count 44 | 45 | // Fixed width; char width table not used !!!! 46 | 47 | // font data 48 | 0x00, 0x00, 0x00, 0x00, 0x00,// (space) 49 | 0x00, 0x00, 0x5F, 0x00, 0x00,// ! 50 | 0x00, 0x07, 0x00, 0x07, 0x00,// " 51 | 0x14, 0x7F, 0x14, 0x7F, 0x14,// # 52 | 0x24, 0x2A, 0x7F, 0x2A, 0x12,// $ 53 | 0x23, 0x13, 0x08, 0x64, 0x62,// % 54 | 0x36, 0x49, 0x55, 0x22, 0x50,// & 55 | 0x00, 0x05, 0x03, 0x00, 0x00,// ' 56 | 0x00, 0x1C, 0x22, 0x41, 0x00,// ( 57 | 0x00, 0x41, 0x22, 0x1C, 0x00,// ) 58 | 0x08, 0x2A, 0x1C, 0x2A, 0x08,// * 59 | 0x08, 0x08, 0x3E, 0x08, 0x08,// + 60 | 0x00, 0x50, 0x30, 0x00, 0x00,// , 61 | 0x08, 0x08, 0x08, 0x08, 0x08,// - 62 | 0x00, 0x60, 0x60, 0x00, 0x00,// . 63 | 0x20, 0x10, 0x08, 0x04, 0x02,// / 64 | 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0 65 | 0x00, 0x42, 0x7F, 0x40, 0x00,// 1 66 | 0x42, 0x61, 0x51, 0x49, 0x46,// 2 67 | 0x21, 0x41, 0x45, 0x4B, 0x31,// 3 68 | 0x18, 0x14, 0x12, 0x7F, 0x10,// 4 69 | 0x27, 0x45, 0x45, 0x45, 0x39,// 5 70 | 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6 71 | 0x01, 0x71, 0x09, 0x05, 0x03,// 7 72 | 0x36, 0x49, 0x49, 0x49, 0x36,// 8 73 | 0x06, 0x49, 0x49, 0x29, 0x1E,// 9 74 | 0x00, 0x36, 0x36, 0x00, 0x00,// : 75 | 0x00, 0x56, 0x36, 0x00, 0x00,// ; 76 | 0x00, 0x08, 0x14, 0x22, 0x41,// < 77 | 0x14, 0x14, 0x14, 0x14, 0x14,// = 78 | 0x41, 0x22, 0x14, 0x08, 0x00,// > 79 | 0x02, 0x01, 0x51, 0x09, 0x06,// ? 80 | 0x32, 0x49, 0x79, 0x41, 0x3E,// @ 81 | 0x7E, 0x11, 0x11, 0x11, 0x7E,// A 82 | 0x7F, 0x49, 0x49, 0x49, 0x36,// B 83 | 0x3E, 0x41, 0x41, 0x41, 0x22,// C 84 | 0x7F, 0x41, 0x41, 0x22, 0x1C,// D 85 | 0x7F, 0x49, 0x49, 0x49, 0x41,// E 86 | 0x7F, 0x09, 0x09, 0x01, 0x01,// F 87 | 0x3E, 0x41, 0x41, 0x51, 0x32,// G 88 | 0x7F, 0x08, 0x08, 0x08, 0x7F,// H 89 | 0x00, 0x41, 0x7F, 0x41, 0x00,// I 90 | 0x20, 0x40, 0x41, 0x3F, 0x01,// J 91 | 0x7F, 0x08, 0x14, 0x22, 0x41,// K 92 | 0x7F, 0x40, 0x40, 0x40, 0x40,// L 93 | 0x7F, 0x02, 0x04, 0x02, 0x7F,// M 94 | 0x7F, 0x04, 0x08, 0x10, 0x7F,// N 95 | 0x3E, 0x41, 0x41, 0x41, 0x3E,// O 96 | 0x7F, 0x09, 0x09, 0x09, 0x06,// P 97 | 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q 98 | 0x7F, 0x09, 0x19, 0x29, 0x46,// R 99 | 0x46, 0x49, 0x49, 0x49, 0x31,// S 100 | 0x01, 0x01, 0x7F, 0x01, 0x01,// T 101 | 0x3F, 0x40, 0x40, 0x40, 0x3F,// U 102 | 0x1F, 0x20, 0x40, 0x20, 0x1F,// V 103 | 0x7F, 0x20, 0x18, 0x20, 0x7F,// W 104 | 0x63, 0x14, 0x08, 0x14, 0x63,// X 105 | 0x03, 0x04, 0x78, 0x04, 0x03,// Y 106 | 0x61, 0x51, 0x49, 0x45, 0x43,// Z 107 | 0x00, 0x00, 0x7F, 0x41, 0x41,// [ 108 | 0x02, 0x04, 0x08, 0x10, 0x20,// "\" 109 | 0x41, 0x41, 0x7F, 0x00, 0x00,// ] 110 | 0x04, 0x02, 0x01, 0x02, 0x04,// ^ 111 | 0x40, 0x40, 0x40, 0x40, 0x40,// _ 112 | 0x00, 0x01, 0x02, 0x04, 0x00,// ` 113 | 0x20, 0x54, 0x54, 0x54, 0x78,// a 114 | 0x7F, 0x48, 0x44, 0x44, 0x38,// b 115 | 0x38, 0x44, 0x44, 0x44, 0x20,// c 116 | 0x38, 0x44, 0x44, 0x48, 0x7F,// d 117 | 0x38, 0x54, 0x54, 0x54, 0x18,// e 118 | 0x08, 0x7E, 0x09, 0x01, 0x02,// f 119 | 0x08, 0x14, 0x54, 0x54, 0x3C,// g 120 | 0x7F, 0x08, 0x04, 0x04, 0x78,// h 121 | 0x00, 0x44, 0x7D, 0x40, 0x00,// i 122 | 0x20, 0x40, 0x44, 0x3D, 0x00,// j 123 | 0x00, 0x7F, 0x10, 0x28, 0x44,// k 124 | 0x00, 0x41, 0x7F, 0x40, 0x00,// l 125 | 0x7C, 0x04, 0x18, 0x04, 0x78,// m 126 | 0x7C, 0x08, 0x04, 0x04, 0x78,// n 127 | 0x38, 0x44, 0x44, 0x44, 0x38,// o 128 | 0x7C, 0x14, 0x14, 0x14, 0x08,// p 129 | 0x08, 0x14, 0x14, 0x18, 0x7C,// q 130 | 0x7C, 0x08, 0x04, 0x04, 0x08,// r 131 | 0x48, 0x54, 0x54, 0x54, 0x20,// s 132 | 0x04, 0x3F, 0x44, 0x40, 0x20,// t 133 | 0x3C, 0x40, 0x40, 0x20, 0x7C,// u 134 | 0x1C, 0x20, 0x40, 0x20, 0x1C,// v 135 | 0x3C, 0x40, 0x30, 0x40, 0x3C,// w 136 | 0x44, 0x28, 0x10, 0x28, 0x44,// x 137 | 0x0C, 0x50, 0x50, 0x50, 0x3C,// y 138 | 0x44, 0x64, 0x54, 0x4C, 0x44,// z 139 | 0x00, 0x08, 0x36, 0x41, 0x00,// { 140 | 0x00, 0x00, 0x7F, 0x00, 0x00,// | 141 | 0x00, 0x41, 0x36, 0x08, 0x00,// } 142 | 0x08, 0x08, 0x2A, 0x1C, 0x08,// -> 143 | 0x08, 0x1C, 0x2A, 0x08, 0x08, // <- 144 | 0x00, 0x06, 0x09, 0x09, 0x06 // degree symbol 145 | 146 | }; 147 | 148 | #endif 149 | -------------------------------------------------------------------------------- /src/fonts/SystemFont5x7.h: -------------------------------------------------------------------------------- 1 | #ifndef SYSTEM5FONTx7_H 2 | #define SYSTEMFONT5x7_H 3 | 4 | /* 5 | * added to allow fontname to match header file name. 6 | * as well as keep the old header filename for backward compability 7 | */ 8 | 9 | #define SYSTEMFONT5x7_WIDTH 5 10 | #define SYSTEMFONT5x7_HEIGHT 7 11 | 12 | #define SystemFont5x7 System5x7 13 | 14 | #include "System5x7.h" 15 | 16 | #endif 17 | -------------------------------------------------------------------------------- /src/fonts/Verdana_digits_24.h: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Verdana_digits_24 4 | * 5 | * created with FontCreator 6 | * written by F. Maximilian Thiele 7 | * 8 | * http://www.apetech.de/fontCreator 9 | * me@apetech.de 10 | * 11 | * File Name : Verdana_digits_24 12 | * Date : 01.05.2008 13 | * Font size in bytes : 3833 14 | * Font width : 10 15 | * Font height : 24 16 | * Font first char : 48 17 | * Font last char : 59 18 | * Font used chars : 11 19 | * 20 | * The font data are defined as 21 | * 22 | * struct _FONT_ { 23 | * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; 24 | * uint8_t font_Width_in_Pixel_for_fixed_drawing; 25 | * uint8_t font_Height_in_Pixel_for_all_characters; 26 | * unit8_t font_First_Char; 27 | * uint8_t font_Char_Count; 28 | * 29 | * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; 30 | * // for each character the separate width in pixels, 31 | * // characters < 128 have an implicit virtual right empty 32 | row 33 | * 34 | * uint8_t font_data[]; 35 | * // bit field of all characters 36 | */ 37 | 38 | #ifndef VERDANA24_H 39 | #define VERDANA24_H 40 | 41 | #define VERDANA24_WIDTH 17 42 | #define VERDANA24_HEIGHT 24 43 | 44 | /* 45 | * define for backward compatiblity 46 | */ 47 | #define Verdana24 Verdana_digits_24 48 | 49 | GLCDFONTDECL(Verdana_digits_24) = { 50 | 0x0E, 0xF9, // size 51 | 0x11, // width 52 | 0x18, // height 53 | 0x30, // first char 54 | 0x0B, // char count 55 | 56 | // char widths 57 | 0x10, 0x0D, 0x0F, 0x0F, 0x11, 0x0F, 0x10, 0x10, 0x10, 0x10, 58 | 0x04, 59 | 60 | // font data 61 | 0x80, 0xF0, 0xFC, 0x7E, 0x0E, 0x0F, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x1E, 62 | 0x7E, 0xFC, 0xF0, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 63 | 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x0F, 0x3F, 0x7E, 64 | 0x70, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0x70, 0x7E, 0x3F, 0x0F, 0x01, //48 '0' 65 | 66 | 0x38, 0x38, 0x38, 0x38, 0x3C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 67 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 68 | 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 69 | 0xE0, 0xE0, 0xE0, // 49 '1' 70 | 71 | 0x00, 0x1E, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x1E, 0xFE, 72 | 0xFC, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 73 | 0x78, 0x3E, 0x1F, 0x07, 0x01, 0x00, 0xF0, 0xF8, 0xFC, 0xFE, 0xEF, 0xE7, 74 | 0xE3, 0xE1, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, // 50 '2' 75 | 76 | 0x00, 0x1E, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x1E, 77 | 0xFE, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 78 | 0x1E, 0x36, 0x77, 0xF3, 0xE1, 0xC0, 0x78, 0x70, 0x70, 0xF0, 0xE0, 0xE0, 79 | 0xE0, 0xE0, 0xE0, 0xF0, 0x70, 0x78, 0x3F, 0x1F, 0x0F, // 51 '3' 80 | 81 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xF8, 0x7C, 0x1E, 0xFF, 82 | 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xFC, 0xFE, 0xDF, 0xC7, 0xC3, 83 | 0xC1, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0x01, 0x01, 84 | 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 85 | 0x01, 0x01, 0x01, // 52 '4' 86 | 87 | 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 88 | 0x07, 0x07, 0x07, 0x00, 0x1F, 0x1F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 89 | 0x1E, 0x1C, 0x3C, 0xF8, 0xF8, 0xE0, 0x78, 0x70, 0x70, 0xF0, 0xE0, 0xE0, 90 | 0xE0, 0xE0, 0xE0, 0xF0, 0x70, 0x7C, 0x3F, 0x1F, 0x07, // 53 '5' 91 | 92 | 0x00, 0xC0, 0xF0, 0xF8, 0x3C, 0x1E, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x07, 93 | 0x07, 0x0F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 94 | 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xF8, 0xF8, 0xE0, 0x03, 0x0F, 0x3F, 0x7C, 95 | 0x78, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x70, 0x78, 0x3F, 0x1F, 0x07, //54 '6' 96 | 97 | 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x87, 98 | 0xE7, 0xFF, 0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 99 | 0xF0, 0xFC, 0x3F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 100 | 0xF8, 0xFC, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //55 '7' 101 | 102 | 0x00, 0xF0, 0xFC, 0xFE, 0x0E, 0x0F, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x1E, 103 | 0xFE, 0xFC, 0xF8, 0x00, 0x80, 0xE0, 0xF3, 0x77, 0x1F, 0x0E, 0x0E, 0x0C, 104 | 0x1C, 0x1C, 0x1C, 0x3E, 0x77, 0xF3, 0xE0, 0x80, 0x0F, 0x1F, 0x3F, 0x78, 105 | 0x70, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x70, 0x78, 0x3F, 0x1F, 0x0F, //56 '8' 106 | 107 | 0xE0, 0xF8, 0xFC, 0x1E, 0x0E, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x1E, 108 | 0x3E, 0xFC, 0xF0, 0xC0, 0x07, 0x1F, 0x1F, 0x3C, 0x78, 0x70, 0x70, 0x70, 109 | 0x70, 0x70, 0x70, 0x38, 0x38, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xF0, 0xE0, 110 | 0xE0, 0xE0, 0xE0, 0xE0, 0x70, 0x70, 0x78, 0x3C, 0x1F, 0x0F, 0x03, 0x00, //57 '9' 111 | 112 | 0xC0, 0xC0, 0xC0, 0xC0, 0x03, 0x03, 0x03, 0x03, 0xF0, 0xF0, 0xF0, 0xF0 // 58 ':' 113 | 114 | }; 115 | 116 | #endif 117 | -------------------------------------------------------------------------------- /src/fonts/Wendy3x5.h: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Wendy3x5 4 | * 5 | * 6 | * File Name : Wendy3x5.h 7 | * Date : 2012 / 04 / 05 8 | * Creator : AustinSaintAubin 9 | * Notes : Based on"Wendy" from DAFont.com 10 | * Font width : 3 11 | * Font height : 5 12 | * Font first char : 32 13 | * Font last char : 127 14 | * Font used chars : 94 15 | * 16 | * The font data are defined as 17 | * 18 | * struct _FONT_ { 19 | * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; 20 | * uint8_t font_Width_in_Pixel_for_fixed_drawing; 21 | * uint8_t font_Height_in_Pixel_for_all_characters; 22 | * unit8_t font_First_Char; 23 | * uint8_t font_Char_Count; 24 | * 25 | * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; 26 | * // for each character the separate width in pixels, 27 | * // characters < 128 have an implicit virtual right empty row 28 | * 29 | * uint8_t font_data[]; 30 | * // bit field of all characters 31 | */ 32 | #ifndef Wendy3x5_H 33 | #define Wendy3x5_H 34 | 35 | #define Wendy3x5_WIDTH 3 36 | #define Wendy3x5_HEIGHT 5 37 | 38 | GLCDFONTDECL(Wendy3x5) = { 39 | 0x0, 0x0, // size of zero indicates fixed width font, actual length is width * height 40 | 0x03, // width 41 | 0x05, // height 42 | 0x20, // first char 43 | 0x60, // char count 44 | 45 | // Fixed width; char width table not used !!!! 46 | 47 | // font data 48 | 0x00, 0x00, 0x00, // (space) 49 | 0x17, 0x00, 0x00, // ! 50 | 0x03, 0x00, 0x03, // " 51 | 0x0A, 0x1F, 0x0A, // # 52 | 0x16, 0x13, 0x1A, // 0x 53 | 0x09, 0x04, 0x0A, // % 54 | 0x0A, 0x15, 0x1A, // & 55 | 0x03, 0x00, 0x00, // ' 56 | 0x00, 0x0E, 0x11, // ( 57 | 0x11, 0x0E, 0x00, // ) 58 | 0x06, 0x06, 0x00, // * 59 | 0x04, 0x0E, 0x04, // + 60 | 0x0C, 0x1C, 0x00, // , 61 | 0x04, 0x04, 0x04, // - 62 | 0x10, 0x00, 0x00, // . 63 | 0x18, 0x04, 0x03, // / 64 | 0x1F, 0x11, 0x1F, // 0 65 | 0x02, 0x1F, 0x00, // 1 66 | 0x1D, 0x15, 0x17, // 2 67 | 0x15, 0x15, 0x1F, // 3 68 | 0x0F, 0x08, 0x1E, // 4 69 | 0x17, 0x15, 0x1D, // 5 70 | 0x1F, 0x15, 0x1D, // 6 71 | 0x01, 0x01, 0x1F, // 7 72 | 0x1F, 0x15, 0x1F, // 8 73 | 0x17, 0x15, 0x1F, // 9 74 | 0x00, 0x0A, 0x00, // : 75 | 0x00, 0x1A, 0x00, // ; 76 | 0x04, 0x0A, 0x11, // < 77 | 0x0A, 0x0A, 0x0A, // = 78 | 0x11, 0x0A, 0x04, // > 79 | 0x00, 0x15, 0x07, // ? 80 | 0x1F, 0x15, 0x17, // @ 81 | 0x1F, 0x05, 0x1F, // A 82 | 0x1F, 0x15, 0x1B, // B 83 | 0x1F, 0x11, 0x11, // C 84 | 0x1F, 0x11, 0x0E, // D 85 | 0x1F, 0x15, 0x15, // E 86 | 0x1F, 0x05, 0x01, // F 87 | 0x1F, 0x11, 0x1D, // G 88 | 0x1F, 0x04, 0x1F, // H 89 | 0x11, 0x1F, 0x11, // I 90 | 0x08, 0x10, 0x0F, // J 91 | 0x1F, 0x04, 0x1B, // K 92 | 0x1F, 0x10, 0x10, // L 93 | 0x1F, 0x06, 0x1F, // M 94 | 0x1C, 0x04, 0x1C, // N 95 | 0x1F, 0x11, 0x1F, // O 96 | 0x1F, 0x05, 0x07, // P 97 | 0x0E, 0x19, 0x1E, // Q 98 | 0x1F, 0x05, 0x1B, // R 99 | 0x17, 0x15, 0x1D, // S 100 | 0x01, 0x1F, 0x01, // T 101 | 0x1F, 0x10, 0x1F, // U 102 | 0x0F, 0x10, 0x0F, // V 103 | 0x1F, 0x0C, 0x1F, // W 104 | 0x1B, 0x04, 0x1B, // X 105 | 0x17, 0x14, 0x1F, // Y 106 | 0x19, 0x15, 0x13, // Z 107 | 0x00, 0x1F, 0x11, // [ 108 | 0x03, 0x04, 0x18, // BackSlash 109 | 0x11, 0x1F, 0x00, // ] 110 | 0x06, 0x01, 0x06, // ^ 111 | 0x10, 0x10, 0x10, // _ 112 | 0x01, 0x01, 0x02, // ` 113 | 0x18, 0x14, 0x1C, // a 114 | 0x1F, 0x14, 0x1C, // b 115 | 0x1C, 0x14, 0x14, // c 116 | 0x1C, 0x14, 0x1F, // d 117 | 0x0C, 0x1A, 0x14, // e 118 | 0x04, 0x1E, 0x05, // f 119 | 0x17, 0x15, 0x1E, // g 120 | 0x1F, 0x04, 0x1C, // h 121 | 0x00, 0x1D, 0x00, // i 122 | 0x08, 0x10, 0x0D, // j 123 | 0x1F, 0x0C, 0x1A, // k 124 | 0x00, 0x1F, 0x00, // l 125 | 0x18, 0x0C, 0x18, // m 126 | 0x18, 0x04, 0x18, // n 127 | 0x1E, 0x12, 0x1E, // o 128 | 0x1F, 0x05, 0x07, // p 129 | 0x07, 0x05, 0x1F, // q 130 | 0x1E, 0x04, 0x04, // r 131 | 0x12, 0x15, 0x09, // s 132 | 0x02, 0x1F, 0x02, // t 133 | 0x1C, 0x10, 0x1C, // u 134 | 0x0C, 0x10, 0x0C, // v 135 | 0x0C, 0x18, 0x0C, // w 136 | 0x14, 0x08, 0x14, // x 137 | 0x16, 0x18, 0x06, // y 138 | 0x04, 0x1C, 0x10, // z 139 | 0x04, 0x0E, 0x11, // { 140 | 0x00, 0x1F, 0x00, // | 141 | 0x11, 0x0E, 0x04, // } 142 | 0x02, 0x04, 0x02, // ~ 143 | 0x1F, 0x1F, 0x1F //  144 | }; 145 | 146 | #endif 147 | -------------------------------------------------------------------------------- /src/fonts/X11fixed7x14.h: -------------------------------------------------------------------------------- 1 | // STARTFONT 2.1 2 | // COMMENT "$Id: 7x14.bdf,v 1.47 2006-01-05 20:24:11+00 mgk25 Rel $" 3 | // COMMENT "Send bug reports to Markus Kuhn " 4 | // FONT -Misc-Fixed-Medium-R-Normal--14-130-75-75-C-70-ISO10646-1 5 | // 6 | // Note: Pixels are only six columns wide. 7 | // 8 | #ifndef X11fixed7x14_h 9 | #define X11fixed7x14_h 10 | 11 | GLCDFONTDECL(X11fixed7x14) = { 12 | 0x0, 0x0, // size of zero indicates fixed width font, 13 | 6, // width 14 | 14, // height 15 | 0x20, // first char 16 | 0x60, // char count 17 | 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // space 18 | 0X00,0X00,0X00,0XFC,0X00,0X00,0X00,0X00,0X00,0X0D,0X00,0X00, // exclam 19 | 0X00,0X00,0X1E,0X00,0X1E,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // quotedbl 20 | 0X00,0X20,0XFC,0X20,0XFC,0X20,0X00,0X01,0X0F,0X01,0X0F,0X01, // numbersign 21 | 0X30,0X48,0X88,0XFC,0X88,0X30,0X06,0X08,0X08,0X1F,0X08,0X07, // dollar 22 | 0X18,0X24,0XA4,0X78,0X10,0X0C,0X0C,0X02,0X07,0X09,0X09,0X06, // percent 23 | 0X00,0XB8,0XC4,0X44,0X38,0X80,0X07,0X08,0X08,0X05,0X06,0X09, // ampersand 24 | 0X00,0X00,0X00,0X1E,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // quotesingle 25 | 0X00,0X00,0XE0,0X18,0X04,0X02,0X00,0X00,0X03,0X0C,0X10,0X20, // parenleft 26 | 0X00,0X02,0X04,0X18,0XE0,0X00,0X00,0X20,0X10,0X0C,0X03,0X00, // parenright 27 | 0X00,0X20,0X40,0XF0,0X40,0X20,0X00,0X02,0X01,0X07,0X01,0X02, // asterisk 28 | 0X00,0X80,0X80,0XF0,0X80,0X80,0X00,0X00,0X00,0X07,0X00,0X00, // plus 29 | 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X24,0X1C,0X00,0X00, // comma 30 | 0X00,0X80,0X80,0X80,0X80,0X80,0X00,0X00,0X00,0X00,0X00,0X00, // hyphen 31 | 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X08,0X1C,0X08,0X00, // period 32 | 0X00,0X00,0X00,0XE0,0X18,0X06,0X30,0X0C,0X03,0X00,0X00,0X00, // slash 33 | 0XF0,0X08,0X04,0X04,0X08,0XF0,0X03,0X04,0X08,0X08,0X04,0X03, // zero 34 | 0X00,0X10,0X08,0XFC,0X00,0X00,0X00,0X08,0X08,0X0F,0X08,0X08, // one 35 | 0X18,0X04,0X04,0X04,0XC4,0X38,0X08,0X0C,0X0A,0X09,0X08,0X08, // two 36 | 0X04,0X04,0X44,0X64,0X54,0X8C,0X06,0X08,0X08,0X08,0X08,0X07, // three 37 | 0X00,0XC0,0X30,0X08,0XFC,0X00,0X03,0X02,0X02,0X02,0X0F,0X02, // four 38 | 0X7C,0X24,0X24,0X24,0X24,0XC4,0X06,0X08,0X08,0X08,0X08,0X07, // five 39 | 0XF0,0X88,0X44,0X44,0X44,0X80,0X07,0X08,0X08,0X08,0X08,0X07, // six 40 | 0X04,0X04,0X04,0XC4,0X34,0X0C,0X00,0X0C,0X03,0X00,0X00,0X00, // seven 41 | 0X18,0XA4,0X44,0X44,0XA4,0X18,0X07,0X08,0X08,0X08,0X08,0X07, // eight 42 | 0X78,0X84,0X84,0X84,0X44,0XF8,0X06,0X08,0X08,0X08,0X04,0X03, // nine 43 | 0X00,0X00,0X20,0X70,0X20,0X00,0X00,0X00,0X04,0X0E,0X04,0X00, // colon 44 | 0X00,0X00,0X60,0X60,0X00,0X00,0X00,0X00,0X12,0X0E,0X00,0X00, // semicolon 45 | 0X00,0X80,0X40,0X20,0X10,0X08,0X00,0X00,0X01,0X02,0X04,0X08, // less 46 | 0X20,0X20,0X20,0X20,0X20,0X20,0X01,0X01,0X01,0X01,0X01,0X01, // equal 47 | 0X00,0X08,0X10,0X20,0X40,0X80,0X00,0X08,0X04,0X02,0X01,0X00, // greater 48 | 0X18,0X04,0X04,0XC4,0X24,0X18,0X00,0X00,0X00,0X0D,0X00,0X00, // question 49 | 0XF0,0X08,0XE4,0X14,0X14,0XF8,0X03,0X04,0X09,0X0A,0X0A,0X0B, // at 50 | 0XF0,0X88,0X84,0X84,0X88,0XF0,0X0F,0X00,0X00,0X00,0X00,0X0F, // A 51 | 0XFC,0X44,0X44,0X44,0XA8,0X10,0X0F,0X08,0X08,0X08,0X04,0X03, // B 52 | 0XF8,0X04,0X04,0X04,0X04,0X18,0X07,0X08,0X08,0X08,0X08,0X06, // C 53 | 0XFC,0X04,0X04,0X04,0X08,0XF0,0X0F,0X08,0X08,0X08,0X04,0X03, // D 54 | 0XFC,0X44,0X44,0X44,0X04,0X04,0X0F,0X08,0X08,0X08,0X08,0X08, // E 55 | 0XFC,0X44,0X44,0X44,0X04,0X04,0X0F,0X00,0X00,0X00,0X00,0X00, // F 56 | 0XF8,0X04,0X04,0X84,0X84,0X98,0X07,0X08,0X08,0X08,0X04,0X0F, // G 57 | 0XFC,0X40,0X40,0X40,0X40,0XFC,0X0F,0X00,0X00,0X00,0X00,0X0F, // H 58 | 0X00,0X04,0X04,0XFC,0X04,0X04,0X00,0X08,0X08,0X0F,0X08,0X08, // I 59 | 0X00,0X00,0X00,0X04,0XFC,0X04,0X06,0X08,0X08,0X08,0X07,0X00, // J 60 | 0XFC,0X40,0XA0,0X10,0X08,0X04,0X0F,0X00,0X00,0X01,0X02,0X0C, // K 61 | 0XFC,0X00,0X00,0X00,0X00,0X00,0X0F,0X08,0X08,0X08,0X08,0X08, // L 62 | 0XFC,0X18,0X60,0X60,0X18,0XFC,0X0F,0X00,0X00,0X00,0X00,0X0F, // M 63 | 0XFC,0X30,0X40,0X80,0X00,0XFC,0X0F,0X00,0X00,0X00,0X03,0X0F, // N 64 | 0XF8,0X04,0X04,0X04,0X04,0XF8,0X07,0X08,0X08,0X08,0X08,0X07, // O 65 | 0XFC,0X84,0X84,0X84,0X84,0X78,0X0F,0X00,0X00,0X00,0X00,0X00, // P 66 | 0XF8,0X04,0X04,0X04,0X04,0XF8,0X07,0X09,0X09,0X0A,0X1C,0X27, // Q 67 | 0XFC,0X84,0X84,0X84,0X84,0X78,0X0F,0X00,0X00,0X01,0X02,0X0C, // R 68 | 0X38,0X44,0X44,0X84,0X84,0X18,0X06,0X08,0X08,0X08,0X08,0X07, // S 69 | 0X04,0X04,0X04,0XFC,0X04,0X04,0X00,0X00,0X00,0X0F,0X00,0X00, // T 70 | 0XFC,0X00,0X00,0X00,0X00,0XFC,0X07,0X08,0X08,0X08,0X08,0X07, // U 71 | 0X3C,0XC0,0X00,0X00,0XC0,0X3C,0X00,0X01,0X0E,0X0E,0X01,0X00, // V 72 | 0X00,0XFC,0X00,0X00,0X00,0XFC,0X00,0X07,0X08,0X07,0X08,0X07, // W 73 | 0X0C,0X30,0XC0,0XC0,0X30,0X0C,0X0C,0X03,0X00,0X00,0X03,0X0C, // X 74 | 0X00,0X1C,0X60,0X80,0X60,0X1C,0X00,0X00,0X00,0X0F,0X00,0X00, // Y 75 | 0X04,0X04,0X84,0X64,0X14,0X0C,0X0C,0X0B,0X08,0X08,0X08,0X08, // Z 76 | 0X00,0X00,0XFE,0X02,0X02,0X02,0X00,0X00,0X3F,0X20,0X20,0X20, // bracketleft 77 | 0X06,0X18,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X0C,0X30, // backslash 78 | 0X00,0X02,0X02,0X02,0XFE,0X00,0X00,0X20,0X20,0X20,0X3F,0X00, // bracketright 79 | 0X08,0X04,0X02,0X02,0X04,0X08,0X00,0X00,0X00,0X00,0X00,0X00, // asciicircum 80 | 0X00,0X00,0X00,0X00,0X00,0X00,0X20,0X20,0X20,0X20,0X20,0X20, // underscore 81 | 0X00,0X00,0X02,0X04,0X08,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // grave 82 | 0X40,0X20,0X20,0X20,0X20,0XC0,0X06,0X09,0X09,0X09,0X09,0X0F, // a 83 | 0XFC,0X40,0X20,0X20,0X20,0XC0,0X0F,0X04,0X08,0X08,0X08,0X07, // b 84 | 0XC0,0X20,0X20,0X20,0X20,0X40,0X07,0X08,0X08,0X08,0X08,0X04, // c 85 | 0XC0,0X20,0X20,0X20,0X40,0XFC,0X07,0X08,0X08,0X08,0X04,0X0F, // d 86 | 0XC0,0X20,0X20,0X20,0X20,0XC0,0X07,0X09,0X09,0X09,0X09,0X05, // e 87 | 0X40,0X40,0XF8,0X44,0X44,0X08,0X00,0X00,0X0F,0X00,0X00,0X00, // f 88 | 0XC0,0X20,0X20,0X20,0XC0,0X20,0X19,0X26,0X2A,0X2A,0X29,0X10, // g 89 | 0XFC,0X40,0X20,0X20,0X20,0XC0,0X0F,0X00,0X00,0X00,0X00,0X0F, // h 90 | 0X00,0X00,0X20,0XEC,0X00,0X00,0X00,0X08,0X08,0X0F,0X08,0X08, // i 91 | 0X00,0X00,0X00,0X00,0X20,0XEC,0X00,0X18,0X20,0X20,0X20,0X1F, // j 92 | 0XFC,0X00,0X80,0X40,0X20,0X00,0X0F,0X01,0X01,0X02,0X04,0X08, // k 93 | 0X00,0X00,0X04,0XFC,0X00,0X00,0X00,0X08,0X08,0X0F,0X08,0X08, // l 94 | 0X00,0XE0,0X20,0XC0,0X20,0XC0,0X00,0X0F,0X00,0X07,0X00,0X0F, // m 95 | 0XE0,0X40,0X20,0X20,0X20,0XC0,0X0F,0X00,0X00,0X00,0X00,0X0F, // n 96 | 0XC0,0X20,0X20,0X20,0X20,0XC0,0X07,0X08,0X08,0X08,0X08,0X07, // o 97 | 0XE0,0X40,0X20,0X20,0X20,0XC0,0X3F,0X04,0X08,0X08,0X08,0X07, // p 98 | 0XC0,0X20,0X20,0X20,0X40,0XE0,0X07,0X08,0X08,0X08,0X04,0X3F, // q 99 | 0XE0,0X40,0X20,0X20,0X20,0XC0,0X0F,0X00,0X00,0X00,0X00,0X00, // r 100 | 0X40,0XA0,0X20,0X20,0X20,0X40,0X04,0X08,0X09,0X09,0X0A,0X04, // s 101 | 0X20,0X20,0XFC,0X20,0X20,0X00,0X00,0X00,0X07,0X08,0X08,0X04, // t 102 | 0XE0,0X00,0X00,0X00,0X00,0XE0,0X07,0X08,0X08,0X08,0X04,0X0F, // u 103 | 0X00,0XE0,0X00,0X00,0X00,0XE0,0X00,0X00,0X03,0X0C,0X03,0X00, // v 104 | 0X00,0XE0,0X00,0X80,0X00,0XE0,0X00,0X07,0X08,0X07,0X08,0X07, // w 105 | 0X60,0X80,0X00,0X00,0X80,0X60,0X0C,0X02,0X01,0X01,0X02,0X0C, // x 106 | 0XE0,0X00,0X00,0X00,0X00,0XE0,0X13,0X24,0X24,0X24,0X22,0X1F, // y 107 | 0X20,0X20,0X20,0XA0,0X60,0X20,0X08,0X0C,0X0B,0X08,0X08,0X08, // z 108 | 0X00,0X00,0X80,0X7C,0X02,0X02,0X00,0X00,0X00,0X1F,0X20,0X20, // braceleft 109 | 0X00,0X00,0X00,0XFE,0X00,0X00,0X00,0X00,0X00,0X3F,0X00,0X00, // bar 110 | 0X00,0X02,0X02,0X7C,0X80,0X00,0X00,0X20,0X20,0X1F,0X00,0X00, // braceright 111 | 0X0C,0X02,0X04,0X08,0X10,0X0C,0X00,0X00,0X00,0X00,0X00,0X00, // asciitilde 112 | 0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F // del 113 | }; 114 | #endif // X11fixed7x14_h 115 | -------------------------------------------------------------------------------- /src/fonts/X11fixed7x14B.h: -------------------------------------------------------------------------------- 1 | // STARTFONT 2.1 2 | // COMMENT "$Id: 7x14B.bdf,v 1.25 2003-07-26 14:55:51+01 mgk25 Rel $" 3 | // COMMENT "Send bug reports to Markus Kuhn " 4 | // FONT -Misc-Fixed-Bold-R-Normal--14-130-75-75-C-70-ISO10646-1 5 | // 6 | // Note: Pixels are only six columns wide. 7 | // 8 | #ifndef X11fixed7x14B_h 9 | #define X11fixed7x14B_h 10 | GLCDFONTDECL(X11fixed7x14B) = { 11 | 0x0, 0x0, // size of zero indicates fixed width font, 12 | 6, // width 13 | 14, // height 14 | 0x20, // first char 15 | 0x60, // char count 16 | 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // space 17 | 0X00,0X00,0XFC,0XFC,0X00,0X00,0X00,0X00,0X0D,0X0D,0X00,0X00, // exclam 18 | 0X00,0X1E,0X1E,0X00,0X1E,0X1E,0X00,0X00,0X00,0X00,0X00,0X00, // quotedbl 19 | 0X20,0XFC,0XFC,0XFC,0XFC,0X20,0X01,0X0F,0X0F,0X0F,0X0F,0X01, // numbersign 20 | 0X30,0X48,0XFC,0XFC,0X88,0X30,0X06,0X08,0X1F,0X1F,0X08,0X07, // dollar 21 | 0X18,0X3C,0XA4,0X78,0X1C,0X0C,0X0C,0X0E,0X07,0X09,0X0F,0X06, // percent 22 | 0X00,0XB8,0XFC,0X44,0XFC,0XB8,0X07,0X0F,0X08,0X07,0X0F,0X09, // ampersand 23 | 0X00,0X00,0X1E,0X1E,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // quotesingle 24 | 0X00,0XE0,0XF8,0X1C,0X06,0X02,0X00,0X03,0X0F,0X1C,0X30,0X20, // parenleft 25 | 0X00,0X02,0X06,0X1C,0XF8,0XE0,0X00,0X20,0X30,0X1C,0X0F,0X03, // parenright 26 | 0X8C,0X50,0XFC,0XFC,0X50,0X8C,0X01,0X00,0X01,0X01,0X00,0X01, // asterisk 27 | 0X80,0X80,0XF0,0XF0,0X80,0X80,0X00,0X00,0X07,0X07,0X00,0X00, // plus 28 | 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X24,0X3C,0X1C,0X00, // comma 29 | 0X80,0X80,0X80,0X80,0X80,0X80,0X00,0X00,0X00,0X00,0X00,0X00, // hyphen 30 | 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0C,0X0C,0X00,0X00, // period 31 | 0X00,0X00,0XC0,0XF0,0X3E,0X0E,0X38,0X3E,0X07,0X01,0X00,0X00, // slash 32 | 0XF8,0XFC,0X04,0X04,0XFC,0XF8,0X07,0X0F,0X08,0X08,0X0F,0X07, // zero 33 | 0X10,0X18,0XFC,0XFC,0X00,0X00,0X08,0X08,0X0F,0X0F,0X08,0X08, // one 34 | 0X18,0X1C,0X04,0XC4,0XFC,0X38,0X0C,0X0E,0X0B,0X09,0X08,0X08, // two 35 | 0X18,0X1C,0X44,0X44,0XFC,0XB8,0X06,0X0E,0X08,0X08,0X0F,0X07, // three 36 | 0X80,0XC0,0X60,0XF8,0XFC,0X00,0X03,0X03,0X02,0X0F,0X0F,0X02, // four 37 | 0X7C,0X7C,0X24,0X24,0XE4,0XC4,0X06,0X0E,0X08,0X08,0X0F,0X07, // five 38 | 0XF0,0XF8,0X4C,0X44,0XDC,0X98,0X07,0X0F,0X08,0X08,0X0F,0X07, // six 39 | 0X1C,0X1C,0XC4,0XF4,0X3C,0X0C,0X00,0X00,0X0F,0X0F,0X00,0X00, // seven 40 | 0X38,0XFC,0XC4,0XC4,0XFC,0X38,0X07,0X0F,0X08,0X08,0X0F,0X07, // eight 41 | 0X78,0XFC,0X84,0X84,0XFC,0XF8,0X06,0X0E,0X08,0X0C,0X07,0X03, // nine 42 | 0X00,0X00,0X30,0X30,0X00,0X00,0X00,0X00,0X06,0X06,0X00,0X00, // colon 43 | 0X00,0X00,0X00,0X30,0X30,0X00,0X00,0X00,0X12,0X1E,0X0E,0X00, // semicolon 44 | 0X80,0XC0,0X60,0X30,0X18,0X08,0X00,0X01,0X03,0X06,0X0C,0X08, // less 45 | 0X40,0X40,0X40,0X40,0X40,0X40,0X02,0X02,0X02,0X02,0X02,0X02, // equal 46 | 0X08,0X18,0X30,0X60,0XC0,0X80,0X08,0X0C,0X06,0X03,0X01,0X00, // greater 47 | 0X18,0X1C,0XC4,0XE4,0X3C,0X18,0X00,0X00,0X0D,0X0D,0X00,0X00, // question 48 | 0XF0,0XF8,0XEC,0XF4,0X1C,0XF8,0X03,0X07,0X0D,0X0B,0X0A,0X0B, // at 49 | 0XF8,0XFC,0X0C,0X0C,0XFC,0XF8,0X0F,0X0F,0X01,0X01,0X0F,0X0F, // A 50 | 0XFC,0XFC,0X44,0X44,0XFC,0X98,0X0F,0X0F,0X08,0X08,0X0F,0X07, // B 51 | 0XF8,0XFC,0X04,0X04,0X1C,0X18,0X07,0X0F,0X08,0X08,0X0E,0X06, // C 52 | 0XFC,0XFC,0X04,0X0C,0XF8,0XF0,0X0F,0X0F,0X08,0X0C,0X07,0X03, // D 53 | 0XFC,0XFC,0X44,0X44,0X44,0X04,0X0F,0X0F,0X08,0X08,0X08,0X08, // E 54 | 0XFC,0XFC,0X44,0X44,0X44,0X04,0X0F,0X0F,0X00,0X00,0X00,0X00, // F 55 | 0XF8,0XFC,0X04,0X84,0X9C,0X98,0X07,0X0F,0X08,0X08,0X0F,0X07, // G 56 | 0XFC,0XFC,0X40,0X40,0XFC,0XFC,0X0F,0X0F,0X00,0X00,0X0F,0X0F, // H 57 | 0X04,0X04,0XFC,0XFC,0X04,0X04,0X08,0X08,0X0F,0X0F,0X08,0X08, // I 58 | 0X00,0X00,0X00,0X00,0XFC,0XFC,0X06,0X0E,0X08,0X0C,0X07,0X03, // J 59 | 0XFC,0XFC,0XF0,0X98,0X0C,0X04,0X0F,0X0F,0X01,0X03,0X0E,0X0C, // K 60 | 0XFC,0XFC,0X00,0X00,0X00,0X00,0X0F,0X0F,0X08,0X08,0X08,0X08, // L 61 | 0XFC,0XF8,0X60,0X60,0XF8,0XFC,0X0F,0X0F,0X00,0X00,0X0F,0X0F, // M 62 | 0XFC,0XFC,0X70,0X80,0XFC,0XFC,0X0F,0X0F,0X00,0X03,0X0F,0X0F, // N 63 | 0XF8,0XFC,0X04,0X04,0XFC,0XF8,0X07,0X0F,0X08,0X08,0X0F,0X07, // O 64 | 0XFC,0XFC,0X84,0X84,0XFC,0X78,0X0F,0X0F,0X00,0X00,0X00,0X00, // P 65 | 0XF8,0XFC,0X04,0X04,0XFC,0XF8,0X07,0X0F,0X09,0X0A,0X1F,0X37, // Q 66 | 0XFC,0XFC,0X44,0XC4,0XFC,0X38,0X0F,0X0F,0X00,0X00,0X0F,0X0F, // R 67 | 0X18,0X3C,0XE4,0XC4,0X1C,0X18,0X06,0X0E,0X08,0X09,0X0F,0X06, // S 68 | 0X04,0X04,0XFC,0XFC,0X04,0X04,0X00,0X00,0X0F,0X0F,0X00,0X00, // T 69 | 0XFC,0XFC,0X00,0X00,0XFC,0XFC,0X07,0X0F,0X08,0X08,0X0F,0X07, // U 70 | 0XFC,0XFC,0X00,0X00,0XFC,0XFC,0X01,0X07,0X0E,0X0E,0X07,0X01, // V 71 | 0XFC,0XFC,0X80,0X80,0XFC,0XFC,0X07,0X0F,0X07,0X07,0X0F,0X07, // W 72 | 0X0C,0X3C,0XF0,0XF0,0X3C,0X0C,0X0C,0X0F,0X03,0X03,0X0F,0X0C, // X 73 | 0X1C,0X7C,0XE0,0XE0,0X7C,0X1C,0X00,0X00,0X0F,0X0F,0X00,0X00, // Y 74 | 0X04,0X04,0XC4,0XF4,0X3C,0X0C,0X0C,0X0F,0X0B,0X08,0X08,0X08, // Z 75 | 0X00,0XFE,0XFE,0X02,0X02,0X02,0X00,0X3F,0X3F,0X20,0X20,0X20, // bracketleft 76 | 0X0E,0X3E,0XF0,0XC0,0X00,0X00,0X00,0X00,0X01,0X07,0X3E,0X38, // backslash 77 | 0X00,0X02,0X02,0X02,0XFE,0XFE,0X00,0X20,0X20,0X20,0X3F,0X3F, // bracketright 78 | 0X04,0X06,0X03,0X03,0X06,0X04,0X00,0X00,0X00,0X00,0X00,0X00, // asciicircum 79 | 0X00,0X00,0X00,0X00,0X00,0X00,0X30,0X30,0X30,0X30,0X30,0X30, // underscore 80 | 0X00,0X02,0X06,0X0C,0X08,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // grave 81 | 0X40,0X60,0X20,0XA0,0XE0,0XC0,0X06,0X0F,0X09,0X08,0X0F,0X0F, // a 82 | 0XFC,0XFC,0X20,0X20,0XE0,0XC0,0X0F,0X0F,0X08,0X08,0X0F,0X07, // b 83 | 0XC0,0XE0,0X20,0X20,0X60,0X40,0X07,0X0F,0X08,0X08,0X0C,0X04, // c 84 | 0XC0,0XE0,0X20,0X20,0XFC,0XFC,0X07,0X0F,0X08,0X08,0X0F,0X0F, // d 85 | 0XC0,0XE0,0X20,0X20,0XE0,0XC0,0X07,0X0F,0X09,0X09,0X0D,0X05, // e 86 | 0X40,0X40,0XF8,0XFC,0X4C,0X48,0X00,0X00,0X0F,0X0F,0X00,0X00, // f 87 | 0XC0,0XE0,0X20,0XE0,0XC0,0X60,0X19,0X3F,0X2A,0X2B,0X39,0X10, // g 88 | 0XFC,0XFC,0X20,0X20,0XE0,0XC0,0X0F,0X0F,0X00,0X00,0X0F,0X0F, // h 89 | 0X00,0X00,0XEC,0XEC,0X00,0X00,0X00,0X00,0X0F,0X0F,0X00,0X00, // i 90 | 0X00,0X00,0X00,0X00,0XEC,0XEC,0X00,0X10,0X30,0X20,0X3F,0X1F, // j 91 | 0XFC,0XFC,0X80,0XC0,0X60,0X00,0X0F,0X0F,0X01,0X03,0X06,0X0C, // k 92 | 0X00,0X00,0XFC,0XFC,0X00,0X00,0X00,0X00,0X0F,0X0F,0X00,0X00, // l 93 | 0XE0,0XE0,0XC0,0XE0,0XE0,0XC0,0X0F,0X0F,0X07,0X07,0X0F,0X0F, // m 94 | 0XE0,0XE0,0X20,0X20,0XE0,0XC0,0X0F,0X0F,0X00,0X00,0X0F,0X0F, // n 95 | 0XC0,0XE0,0X20,0X20,0XE0,0XC0,0X07,0X0F,0X08,0X08,0X0F,0X07, // o 96 | 0XE0,0XE0,0X20,0X20,0XE0,0XC0,0X3F,0X3F,0X08,0X08,0X0F,0X07, // p 97 | 0XC0,0XE0,0X20,0X20,0XE0,0XE0,0X07,0X0F,0X08,0X08,0X3F,0X3F, // q 98 | 0XE0,0XE0,0X20,0X20,0XE0,0XC0,0X0F,0X0F,0X00,0X00,0X00,0X00, // r 99 | 0X40,0XE0,0XA0,0X20,0X60,0X40,0X04,0X0C,0X09,0X0B,0X0E,0X04, // s 100 | 0X20,0X20,0XFC,0XFC,0X20,0X20,0X00,0X00,0X07,0X0F,0X08,0X08, // t 101 | 0XE0,0XE0,0X00,0X00,0XE0,0XE0,0X07,0X0F,0X08,0X08,0X0F,0X0F, // u 102 | 0XE0,0XE0,0X00,0X00,0XE0,0XE0,0X00,0X03,0X0F,0X0F,0X03,0X00, // v 103 | 0XE0,0XE0,0X80,0X80,0XE0,0XE0,0X07,0X0F,0X07,0X07,0X0F,0X07, // w 104 | 0X60,0XE0,0X80,0X80,0XE0,0X60,0X0C,0X0E,0X03,0X03,0X0E,0X0C, // x 105 | 0X60,0XE0,0X80,0X00,0XE0,0XE0,0X10,0X31,0X27,0X3E,0X1F,0X01, // y 106 | 0X20,0X20,0X20,0XA0,0XE0,0X60,0X0C,0X0E,0X0B,0X09,0X08,0X08, // z 107 | 0X00,0X80,0XFC,0X7E,0X02,0X02,0X00,0X00,0X1F,0X3F,0X20,0X20, // braceleft 108 | 0X00,0X00,0XFE,0XFE,0X00,0X00,0X00,0X00,0X3F,0X3F,0X00,0X00, // bar 109 | 0X00,0X02,0X02,0X7E,0XFC,0X80,0X00,0X20,0X20,0X3F,0X1F,0X00, // braceright 110 | 0X1C,0X06,0X0C,0X0C,0X18,0X0E,0X00,0X00,0X00,0X00,0X00,0X00, // asciitilde 111 | 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F // del 112 | }; 113 | #endif // X11fixed7x14B_h 114 | -------------------------------------------------------------------------------- /src/fonts/ZevvPeep8x16.h: -------------------------------------------------------------------------------- 1 | // STARTFONT 2.1 2 | // FONT -zevv-peep-Medium-R-Normal--16-140-75-75-C-80-ISO8859-1 3 | #ifndef font8x16_h 4 | #define font8x16_h 5 | 6 | GLCDFONTDECL(ZevvPeep8x16) = { 7 | 0x0, 0x0, // size of zero indicates fixed width font, 8 | 7, // width 9 | 14, // height 10 | 0x20, // first char 11 | 0x60, // char count 12 | 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // ' ' 13 | 0X00,0X00,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X0D,0X00,0X00,0X00,0X00, // '!' 14 | 0X00,0X3C,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // '"' 15 | 0X20,0XF8,0X20,0X20,0XF8,0X20,0X00,0X01,0X07,0X01,0X01,0X07,0X01,0X00, // '#' 16 | 0X60,0X90,0XF8,0X90,0X10,0X00,0X00,0X04,0X04,0X0F,0X04,0X03,0X00,0X00, // '$' 17 | 0X18,0X24,0X98,0X60,0X10,0X0C,0X00,0X0C,0X02,0X01,0X06,0X09,0X06,0X00, // '%' 18 | 0X30,0XC8,0XC8,0X30,0X00,0X00,0X00,0X07,0X08,0X08,0X09,0X06,0X09,0X00, // '&' 19 | 0X00,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // ''' 20 | 0X00,0X00,0XE0,0X18,0X04,0X02,0X00,0X00,0X00,0X03,0X0C,0X10,0X20,0X00, // '(' 21 | 0X02,0X04,0X18,0XE0,0X00,0X00,0X00,0X20,0X10,0X0C,0X03,0X00,0X00,0X00, // ')' 22 | 0X80,0XA0,0XC0,0XC0,0XA0,0X80,0X00,0X00,0X02,0X01,0X01,0X02,0X00,0X00, // '*' 23 | 0X80,0X80,0X80,0XF0,0X80,0X80,0X80,0X00,0X00,0X00,0X07,0X00,0X00,0X00, // '+' 24 | 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X20,0X18,0X0C,0X04,0X00,0X00,0X00, // ',' 25 | 0X80,0X80,0X80,0X80,0X80,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // '-' 26 | 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X08,0X1C,0X08,0X00,0X00,0X00, // '.' 27 | 0X00,0X00,0X80,0X60,0X18,0X06,0X00,0X18,0X06,0X01,0X00,0X00,0X00,0X00, // '/' 28 | 0XF0,0X08,0X84,0X44,0X08,0XF0,0X00,0X03,0X04,0X08,0X08,0X04,0X03,0X00, // '0' 29 | 0X20,0X10,0X08,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X00,0X00,0X00, // '1' 30 | 0X18,0X04,0X04,0X84,0X44,0X38,0X00,0X0C,0X0A,0X09,0X08,0X08,0X08,0X00, // '2' 31 | 0X08,0X04,0X44,0X44,0X44,0XB8,0X00,0X06,0X08,0X08,0X08,0X08,0X07,0X00, // '3' 32 | 0X80,0X60,0X18,0X04,0XFC,0X00,0X00,0X01,0X01,0X01,0X01,0X0F,0X01,0X00, // '4' 33 | 0X7C,0X24,0X24,0X24,0X24,0XC4,0X00,0X06,0X08,0X08,0X08,0X08,0X07,0X00, // '5' 34 | 0XF8,0X84,0X44,0X44,0X44,0X88,0X00,0X07,0X08,0X08,0X08,0X08,0X07,0X00, // '6' 35 | 0X04,0X04,0X04,0XC4,0X34,0X0C,0X00,0X00,0X0C,0X03,0X00,0X00,0X00,0X00, // '7' 36 | 0XB8,0X44,0X44,0X44,0X44,0XB8,0X00,0X07,0X08,0X08,0X08,0X08,0X07,0X00, // '8' 37 | 0X78,0X84,0X84,0X84,0X44,0XF8,0X00,0X04,0X08,0X08,0X08,0X08,0X07,0X00, // '9' 38 | 0X00,0X20,0X70,0X20,0X00,0X00,0X00,0X00,0X08,0X1C,0X08,0X00,0X00,0X00, // ':' 39 | 0X00,0X20,0X70,0X20,0X00,0X00,0X00,0X20,0X18,0X0C,0X04,0X00,0X00,0X00, // ';' 40 | 0X80,0X40,0X20,0X10,0X08,0X00,0X00,0X00,0X01,0X02,0X04,0X08,0X00,0X00, // '<' 41 | 0X40,0X40,0X40,0X40,0X40,0X40,0X00,0X02,0X02,0X02,0X02,0X02,0X02,0X00, // '=' 42 | 0X00,0X08,0X10,0X20,0X40,0X80,0X00,0X00,0X08,0X04,0X02,0X01,0X00,0X00, // '>' 43 | 0X04,0X84,0X44,0X24,0X18,0X00,0X00,0X00,0X0D,0X00,0X00,0X00,0X00,0X00, // '?' 44 | 0XF0,0X08,0XC4,0X24,0X24,0XF8,0X00,0X03,0X04,0X09,0X0A,0X0A,0X03,0X00, // '@' 45 | 0XF8,0X84,0X84,0X84,0X84,0XF8,0X00,0X0F,0X00,0X00,0X00,0X00,0X0F,0X00, // 'A' 46 | 0XFC,0X44,0X44,0X44,0X78,0X80,0X00,0X0F,0X08,0X08,0X08,0X08,0X07,0X00, // 'B' 47 | 0XF8,0X04,0X04,0X04,0X04,0X18,0X00,0X07,0X08,0X08,0X08,0X08,0X06,0X00, // 'C' 48 | 0XFC,0X04,0X04,0X04,0X08,0XF0,0X00,0X0F,0X08,0X08,0X08,0X04,0X03,0X00, // 'D' 49 | 0XFC,0X44,0X44,0X44,0X44,0X04,0X00,0X0F,0X08,0X08,0X08,0X08,0X08,0X00, // 'E' 50 | 0XFC,0X44,0X44,0X44,0X44,0X04,0X00,0X0F,0X00,0X00,0X00,0X00,0X00,0X00, // 'F' 51 | 0XF8,0X04,0X04,0X84,0X84,0X98,0X00,0X07,0X08,0X08,0X08,0X08,0X07,0X00, // 'G' 52 | 0XFC,0X40,0X40,0X40,0X40,0XFC,0X00,0X0F,0X00,0X00,0X00,0X00,0X0F,0X00, // 'H' 53 | 0X04,0X04,0XFC,0X04,0X04,0X00,0X00,0X08,0X08,0X0F,0X08,0X08,0X00,0X00, // 'I' 54 | 0X00,0X00,0X04,0X04,0X04,0XFC,0X00,0X06,0X08,0X08,0X08,0X08,0X07,0X00, // 'J' 55 | 0XFC,0X40,0X20,0XD0,0X08,0X04,0X00,0X0F,0X00,0X00,0X00,0X03,0X0C,0X00, // 'K' 56 | 0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X08,0X08,0X08,0X08,0X08,0X00, // 'L' 57 | 0XFC,0X18,0X60,0X80,0X60,0X18,0XFC,0X0F,0X00,0X00,0X01,0X00,0X00,0X0F, // 'M' 58 | 0XFC,0X18,0X60,0X80,0X00,0XFC,0X00,0X0F,0X00,0X00,0X01,0X06,0X0F,0X00, // 'N' 59 | 0XF8,0X04,0X04,0X04,0X04,0XF8,0X00,0X07,0X08,0X08,0X08,0X08,0X07,0X00, // 'O' 60 | 0XFC,0X84,0X84,0X84,0X84,0X78,0X00,0X0F,0X00,0X00,0X00,0X00,0X00,0X00, // 'P' 61 | 0XF8,0X04,0X04,0X04,0X04,0XF8,0X00,0X07,0X08,0X08,0X0E,0X18,0X17,0X00, // 'Q' 62 | 0XFC,0X84,0X84,0X84,0X84,0X78,0X00,0X0F,0X00,0X01,0X02,0X04,0X08,0X00, // 'R' 63 | 0X38,0X44,0X44,0X84,0X84,0X08,0X00,0X04,0X08,0X08,0X08,0X08,0X07,0X00, // 'S' 64 | 0X04,0X04,0X04,0XFC,0X04,0X04,0X04,0X00,0X00,0X00,0X0F,0X00,0X00,0X00, // 'T' 65 | 0XFC,0X00,0X00,0X00,0X00,0XFC,0X00,0X07,0X08,0X08,0X08,0X08,0X07,0X00, // 'U' 66 | 0XFC,0X00,0X00,0X00,0X00,0XFC,0X00,0X00,0X03,0X0C,0X0C,0X03,0X00,0X00, // 'V' 67 | 0XFC,0X00,0X00,0XC0,0X00,0X00,0XFC,0X03,0X0C,0X03,0X00,0X03,0X0C,0X03, // 'W' 68 | 0X0C,0X30,0XC0,0XC0,0X30,0X0C,0X00,0X0C,0X03,0X00,0X00,0X03,0X0C,0X00, // 'X' 69 | 0X3C,0X40,0X80,0X80,0X40,0X3C,0X00,0X00,0X00,0X00,0X0F,0X00,0X00,0X00, // 'Y' 70 | 0X04,0X04,0X84,0X44,0X34,0X0C,0X00,0X0C,0X0A,0X09,0X08,0X08,0X08,0X00, // 'Z' 71 | 0X00,0X00,0XFE,0X02,0X02,0X02,0X00,0X00,0X00,0X3F,0X20,0X20,0X20,0X00, // '[' 72 | 0X06,0X18,0X60,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X06,0X18,0X00, // '\' 73 | 0X02,0X02,0X02,0XFE,0X00,0X00,0X00,0X20,0X20,0X20,0X3F,0X00,0X00,0X00, // ']' 74 | 0X10,0X08,0X04,0X04,0X08,0X10,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // '^' 75 | 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X20,0X20,0X20,0X20,0X20,0X20,0X00, // '_' 76 | 0X00,0X04,0X0C,0X18,0X20,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // '`' 77 | 0X00,0XA0,0XA0,0XA0,0XA0,0XC0,0X00,0X07,0X08,0X08,0X08,0X04,0X0F,0X00, // 'a' 78 | 0XFC,0X40,0X20,0X20,0X20,0XC0,0X00,0X0F,0X04,0X08,0X08,0X08,0X07,0X00, // 'b' 79 | 0XC0,0X20,0X20,0X20,0X20,0X40,0X00,0X07,0X08,0X08,0X08,0X08,0X04,0X00, // 'c' 80 | 0XC0,0X20,0X20,0X20,0X40,0XFC,0X00,0X07,0X08,0X08,0X08,0X04,0X0F,0X00, // 'd' 81 | 0XC0,0X20,0X20,0X20,0X20,0XC0,0X00,0X07,0X09,0X09,0X09,0X09,0X09,0X00, // 'e' 82 | 0X80,0XF8,0X84,0X84,0X84,0X08,0X00,0X00,0X0F,0X00,0X00,0X00,0X00,0X00, // 'f' 83 | 0XC0,0X20,0X20,0X20,0X40,0XE0,0X00,0X23,0X44,0X44,0X44,0X42,0X3F,0X00, // 'g' 84 | 0XFC,0X40,0X20,0X20,0X20,0XC0,0X00,0X0F,0X00,0X00,0X00,0X00,0X0F,0X00, // 'h' 85 | 0X00,0X20,0X20,0XEC,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X00,0X00,0X00, // 'i' 86 | 0X00,0X00,0X20,0X20,0XEC,0X00,0X00,0X10,0X20,0X20,0X20,0X1F,0X00,0X00, // 'j' 87 | 0XFC,0X00,0X80,0X40,0X20,0X00,0X00,0X0F,0X01,0X01,0X02,0X04,0X08,0X00, // 'k' 88 | 0X00,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0X08,0X08,0X08,0X00,0X00, // 'l' 89 | 0XE0,0X20,0X20,0XC0,0X20,0X20,0XC0,0X0F,0X00,0X00,0X03,0X00,0X00,0X0F, // 'm' 90 | 0XE0,0X40,0X20,0X20,0X20,0XC0,0X00,0X0F,0X00,0X00,0X00,0X00,0X0F,0X00, // 'n' 91 | 0XC0,0X20,0X20,0X20,0X20,0XC0,0X00,0X07,0X08,0X08,0X08,0X08,0X07,0X00, // 'o' 92 | 0XE0,0X40,0X20,0X20,0X20,0XC0,0X00,0X7F,0X02,0X04,0X04,0X04,0X03,0X00, // 'p' 93 | 0XC0,0X20,0X20,0X20,0X40,0XE0,0X00,0X03,0X04,0X04,0X04,0X02,0X7F,0X00, // 'q' 94 | 0XE0,0X40,0X20,0X20,0X20,0X40,0X00,0X0F,0X00,0X00,0X00,0X00,0X00,0X00, // 'r' 95 | 0XC0,0X20,0X20,0X20,0X20,0X40,0X00,0X04,0X09,0X09,0X09,0X09,0X06,0X00, // 's' 96 | 0X20,0XF8,0X20,0X20,0X20,0X00,0X00,0X00,0X07,0X08,0X08,0X08,0X04,0X00, // 't' 97 | 0XE0,0X00,0X00,0X00,0X00,0XE0,0X00,0X07,0X08,0X08,0X08,0X04,0X0F,0X00, // 'u' 98 | 0XE0,0X00,0X00,0X00,0X00,0XE0,0X00,0X00,0X03,0X0C,0X0C,0X03,0X00,0X00, // 'v' 99 | 0XE0,0X00,0X00,0X80,0X00,0X00,0XE0,0X07,0X08,0X04,0X03,0X04,0X08,0X07, // 'w' 100 | 0X20,0X40,0X80,0X80,0X40,0X20,0X00,0X08,0X04,0X02,0X02,0X04,0X08,0X00, // 'x' 101 | 0XE0,0X00,0X00,0X00,0X00,0XE0,0X00,0X23,0X44,0X44,0X44,0X42,0X3F,0X00, // 'y' 102 | 0X20,0X20,0X20,0X20,0XA0,0X60,0X00,0X08,0X0C,0X0A,0X09,0X08,0X08,0X00, // 'z' 103 | 0X00,0X80,0X80,0X7C,0X02,0X02,0X00,0X00,0X00,0X00,0X1F,0X20,0X20,0X00, // '{' 104 | 0X00,0X00,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0X00,0X00,0X00,0X00, // '|' 105 | 0X02,0X02,0X7C,0X80,0X80,0X00,0X00,0X20,0X20,0X1F,0X00,0X00,0X00,0X00, // '}' 106 | 0X30,0X08,0X08,0X10,0X20,0X20,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // '~' 107 | 0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F // del 108 | }; 109 | #endif // font8x16_h -------------------------------------------------------------------------------- /src/fonts/allFonts.h: -------------------------------------------------------------------------------- 1 | /* 2 | * allFonts.h font header for GLCD library 3 | * The fonts listed below will be available in a sketch if this file is included 4 | * 5 | * If you create your own fonts you can add the header to this file 6 | * 7 | * Note that the build environment only holds a font in Flash if its selected 8 | * so there is no penalty to including a font file here if its not used 9 | */ 10 | 11 | #ifndef _allFonts_h_ 12 | #define _allFonts_h_ 13 | 14 | #ifdef __AVR__ 15 | #include 16 | /** declare a font for AVR. */ 17 | #define GLCDFONTDECL(_n) static const uint8_t __attribute__ ((progmem))_n[] 18 | #define readFontByte(addr) pgm_read_byte(addr) 19 | #else // __AVR__ 20 | /** declare a font. */ 21 | #define GLCDFONTDECL(_n) static const uint8_t _n[] 22 | /** Fake read from flash. */ 23 | #define readFontByte(addr) (*(const unsigned char *)(addr)) 24 | #endif // __AVR__ 25 | //------------------------------------------------------------------------------ 26 | // Font Indices 27 | #define FONT_LENGTH 0 28 | #define FONT_FIXED_WIDTH 2 29 | #define FONT_HEIGHT 3 30 | #define FONT_FIRST_CHAR 4 31 | #define FONT_CHAR_COUNT 5 32 | #define FONT_WIDTH_TABLE 6 33 | // 34 | // FONT_LENGTH is a 16 bit Big Endian length field. 35 | // Unfortunately, FontCreator2 screwed up the value it put in the field 36 | // so it is pretty much meaningless. However it still is used to indicate 37 | // some special things. 38 | // 00 00 (fixed width font with 1 padding pixel on right and below) 39 | // 00 01 (fixed width font with no padding pixels) 40 | 41 | // any other value means variable width font in FontCreator2 (thiele) 42 | // format with pixel padding 43 | 44 | #include "Adafruit5x7.h" // Font from Adafruit GFX library 45 | #include "font5x7.h" 46 | #include "lcd5x7.h" 47 | #include "Stang5x7.h" 48 | #include "X11fixed7x14.h" 49 | #include "X11fixed7x14B.h" 50 | #include "ZevvPeep8x16.h" 51 | 52 | #include "System5x7.h" // system font (fixed width) 53 | #include "SystemFont5x7.h" // backward compability System5x7 header 54 | #include "Iain5x7.h" // similar to system5x7 but proportional 55 | #include "Arial14.h" // proportional font 56 | #include "Arial_bold_14.h" // Bold proportional font 57 | #include "Corsiva_12.h" 58 | #include "Verdana_digits_24.h" // large proportional font contains [0-9] and : 59 | 60 | #include "Callibri10.h" 61 | #include "Callibri11.h" 62 | #include "Callibri11_bold.h" 63 | #include "Callibri11_italic.h" 64 | #include "Callibri14.h" 65 | #include "Callibri15.h" 66 | #include "Cooper19.h" 67 | #include "Cooper21.h" 68 | #include "Cooper26.h" 69 | #include "TimesNewRoman13.h" 70 | #include "TimesNewRoman13_italic.h" 71 | #include "TimesNewRoman16.h" 72 | #include "TimesNewRoman16_bold.h" 73 | #include "TimesNewRoman16_italic.h" 74 | #include "Verdana12.h" 75 | #include "Verdana12_bold.h" 76 | #include "Verdana12_italic.h" 77 | #include "Roosewood22.h" 78 | #include "Roosewood26.h" 79 | 80 | #include "fixednums7x15.h" // fixed width font - + , - . / [0-9] and : 81 | #include "fixednums8x16.h" // fixed width font - + , - . / [0-9] and : 82 | #include "fixednums15x31.h" // fixed width font - + , - . / [0-9] and : 83 | 84 | #include "CalBlk36.h" 85 | #include "CalLite24.h" 86 | #include "lcdnums12x16.h" // font that looks like LCD digits 87 | #include "lcdnums14x24.h" // font that looks like LCD digits 88 | #include "fixed_bold10x15.h" 89 | #include "Wendy3x5.h" 90 | #include "newbasic3x5.h" 91 | 92 | /* 93 | * These fonts require no-pad rendering code 94 | */ 95 | #include "font8x8.h" // fixed wider font but similar to system5x7 font 96 | #include "cp437font8x8.h" // fixed Font from 80's IBM PC 97 | 98 | /* 99 | * These fonts require UTF8 encoding support 100 | */ 101 | 102 | #include "utf8font10x16.h" // UTF8 font up to U+00FF 103 | // http://www.fileformat.info/info/charset/UTF-8/list.htm 104 | 105 | #endif 106 | -------------------------------------------------------------------------------- /src/fonts/cp437font8x8.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wd5gnr/1802UNO/6745daa897946dbd277d03e31840fffe4441c9d4/src/fonts/cp437font8x8.h -------------------------------------------------------------------------------- /src/fonts/fixednums15x31.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Fixed width font for numbers 3 | * 4 | * This font is very useful when using overstrike as all characters & numbers 5 | * are all the same width. 6 | * 7 | * This font also contains a few special characters that are nice for certain applications 8 | * like clocks, signed values or decimal point values. 9 | * 10 | * The rendering code normally inserts a pad pixel so this size allows the font to fit 11 | * perfectly on 32 and 64 tall glcd displays. 12 | * 13 | * Font has also been squeezed to 15 pixels wide for better alignment on 128 & 192 pixel displays. 14 | */ 15 | 16 | #ifndef FIXEDNUMS15x31_H 17 | #define FIXEDNUMS15x31_H 18 | 19 | GLCDFONTDECL(fixednums15x31) = { 20 | 0x0, 0x0, // size of zero indicates fixed width font 21 | 15, // width 22 | 31, // height 23 | '+', // first char (48) 24 | 16, // char count 25 | // char '+' 26 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xfc, 0xfc, 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 30 | 31 | // char ',' 32 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 33 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 34 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 35 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 36 | 37 | // char '-' 38 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 39 | 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 40 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 41 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 42 | 43 | // char '.' 44 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 45 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 46 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 47 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 48 | 49 | // char '/' 50 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xff, 0xff, 0x0f, 51 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xff, 0xff, 0x0f, 0x0f, 0x00, 0x00, 0x00, 52 | 0x00, 0x00, 0xf0, 0xf0, 0xff, 0xff, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 53 | 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 54 | 55 | // char '0' 56 | 0xf0, 0xf0, 0xfc, 0xfc, 0x0f, 0x0f, 0x03, 0x03, 0x03, 0xcf, 0xcf, 0xfc, 0xfc, 0xf0, 0xf0, 57 | 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xc0, 0xc0, 0x3c, 0x3f, 0x03, 0xff, 0xff, 0xff, 0xff, 58 | 0xff, 0xff, 0xff, 0xff, 0x3c, 0x3c, 0x03, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 59 | 0x00, 0x00, 0x03, 0x03, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x0f, 0x0f, 0x03, 0x03, 0x00, 0x00, 60 | 61 | // char '1' 62 | 0x30, 0x30, 0x30, 0x30, 0x3c, 0x3c, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 63 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 64 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 65 | 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 66 | 67 | // char '2' 68 | 0xf0, 0xf0, 0xfc, 0xfc, 0x0f, 0x0f, 0x03, 0x03, 0x03, 0x03, 0x0f, 0xff, 0xfc, 0xfc, 0xf0, 69 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xf0, 0xff, 0x3f, 0x3f, 0x0f, 70 | 0xc0, 0xc0, 0xf0, 0xf0, 0x3c, 0x3c, 0x0f, 0x0f, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 71 | 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 72 | 73 | // char '3' 74 | 0xf0, 0xf0, 0xfc, 0xfc, 0x0f, 0x0f, 0x03, 0x03, 0x03, 0x03, 0x0f, 0x1f, 0xfc, 0xfc, 0xf0, 75 | 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xff, 0xdf, 0x8f, 76 | 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 77 | 0x00, 0x00, 0x03, 0x03, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0f, 0x03, 0x03, 0x00, 78 | 79 | // char '4' 80 | 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xff, 0xff, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 81 | 0x00, 0x00, 0xfc, 0xfc, 0xff, 0xff, 0x03, 0x03, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 82 | 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 83 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 84 | 85 | // char '5' 86 | 0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 87 | 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0xfc, 0xf0, 0xf0, 0xc0, 88 | 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 89 | 0x00, 0x00, 0x03, 0x03, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0f, 0x03, 0x03, 0x00, 90 | 91 | // char '6' 92 | 0x00, 0x00, 0xc0, 0xc0, 0xf0, 0xf0, 0x3c, 0x3c, 0x0f, 0x0f, 0x03, 0x03, 0x03, 0x03, 0x03, 93 | 0xfc, 0xfc, 0xff, 0xff, 0x33, 0x33, 0x30, 0x30, 0x30, 0x30, 0xf0, 0xf0, 0xc0, 0xc0, 0x00, 94 | 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 95 | 0x00, 0x00, 0x03, 0x03, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0f, 0x03, 0x03, 0x00, 96 | 97 | // char '7' 98 | 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff, 0xff, 0xff, 99 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xff, 0xff, 0x3f, 0x3f, 0x00, 0x00, 100 | 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xff, 0xff, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 101 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 102 | 103 | // char '8' 104 | 0xf0, 0xf0, 0xfc, 0xfc, 0x0f, 0x0f, 0x03, 0x03, 0x03, 0x0f, 0x0f, 0xfc, 0xfc, 0xf0, 0xf0, 105 | 0x03, 0x03, 0xcf, 0xcf, 0xfc, 0xfc, 0x30, 0x30, 0x30, 0xfc, 0xfc, 0xcf, 0xcf, 0x03, 0x03, 106 | 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 107 | 0x00, 0x00, 0x03, 0x03, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x0f, 0x0f, 0x03, 0x03, 0x00, 0x00, 108 | 109 | // char '9' 110 | 0xe0, 0xf0, 0xfc, 0xfc, 0x0f, 0x0f, 0x03, 0x03, 0x03, 0x0f, 0x0f, 0xfc, 0xfc, 0xf0, 0xe0, 111 | 0x07, 0x0f, 0x3f, 0x3f, 0xf0, 0xf0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0xff, 0xff, 112 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xfc, 0xfc, 0x3f, 0x3f, 0x03, 113 | 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0f, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 114 | 115 | // char ':' 116 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 117 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 118 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 119 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 120 | 121 | }; 122 | 123 | #endif 124 | -------------------------------------------------------------------------------- /src/fonts/fixednums7x15.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Fixed width font for numbers 3 | * 4 | * This font is very useful when using overstrike as all characters & numbers 5 | * are all the same width. 6 | * 7 | * This font also contains a few special characters that are nice for certain applications 8 | * like clocks, signed values or decimal point values. 9 | * 10 | * When rendering code inserts a pad pixel this size allows the font to fit 11 | * perfectly on 32 and 64 tall glcd displays as well as 128 wide displays. 12 | */ 13 | 14 | #ifndef FIXEDNUMS7x15_H 15 | #define FIXEDNUMS7x15_H 16 | 17 | GLCDFONTDECL(fixednums7x15) = { 18 | 0x0, 0x0, // size of zero indicates fixed width font 19 | 7, // width 20 | 15, // height 21 | '+', // first char (48) 22 | 16, // char count 23 | // char '+' 24 | 0x00, 0x80, 0x80, 0xe0, 0xe0, 0x80, 0x80, 25 | 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 26 | 27 | // char ',' 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00, 0x00, 0x00, 0x58, 0x38, 0x00, 0x00, 30 | 31 | // char '-' 32 | 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 33 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 34 | 35 | // char '.' 36 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 37 | 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 38 | 39 | // char '/' 40 | 0x00, 0x00, 0x00, 0xc0, 0xf0, 0x3c, 0x0f, 41 | 0x00, 0x3c, 0x0f, 0x03, 0x00, 0x00, 0x00, 42 | 43 | // char '0' 44 | 0xfc, 0xfe, 0x03, 0xe1, 0x1b, 0xfe, 0xfc, 45 | 0x0f, 0x1f, 0x36, 0x21, 0x30, 0x1f, 0x0f, 46 | 47 | // char '1' 48 | 0x04, 0x04, 0x06, 0xff, 0xff, 0x00, 0x00, 49 | 0x20, 0x20, 0x20, 0x3f, 0x3f, 0x20, 0x20, 50 | 51 | // char '2' 52 | 0x0c, 0x0e, 0x03, 0x01, 0x81, 0xfe, 0x7c, 53 | 0x38, 0x3c, 0x26, 0x23, 0x21, 0x20, 0x20, 54 | 55 | // char '3' 56 | 0x0c, 0x0e, 0x43, 0x41, 0x43, 0xfe, 0xbc, 57 | 0x0c, 0x1c, 0x30, 0x20, 0x30, 0x1f, 0x0f, 58 | 59 | // char '4' 60 | 0x00, 0xe0, 0xfc, 0x1f, 0x83, 0x80, 0x00, 61 | 0x0f, 0x0f, 0x08, 0x08, 0x3f, 0x3f, 0x08, 62 | 63 | // char '5' 64 | 0x3f, 0x3f, 0x21, 0x21, 0x61, 0xe1, 0x81, 65 | 0x0c, 0x1c, 0x30, 0x20, 0x30, 0x3f, 0x0f, 66 | 67 | // char '6' 68 | 0xe0, 0xf8, 0x5c, 0x46, 0xc3, 0xc1, 0x01, 69 | 0x0f, 0x1f, 0x30, 0x20, 0x30, 0x3f, 0x0f, 70 | 71 | // char '7' 72 | 0x01, 0x01, 0x01, 0x81, 0xf1, 0x7f, 0x0f, 73 | 0x00, 0x00, 0x3c, 0x3f, 0x03, 0x00, 0x00, 74 | 75 | // char '8' 76 | 0x1c, 0xbe, 0xe3, 0x41, 0xe3, 0xbe, 0x1c, 77 | 0x0f, 0x1f, 0x30, 0x20, 0x30, 0x1f, 0x0f, 78 | 79 | // char '9' 80 | 0x3c, 0x7e, 0xc3, 0x81, 0x81, 0xfe, 0xfc, 81 | 0x20, 0x30, 0x38, 0x0c, 0x07, 0x03, 0x00, 82 | 83 | // char ':' 84 | 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 85 | 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 86 | 87 | }; 88 | #endif 89 | -------------------------------------------------------------------------------- /src/fonts/fixednums8x16.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Fixed width font file for numbers only. 3 | * 4 | * This font is very useful when using overstrike as all characters & numbers 5 | * are all the same width. 6 | * 7 | * This font file can be used when only numbers are needed. 8 | * 9 | * This font also contains a few special characters that are nice for certain applications 10 | * like clocks, signed values or decimal point values. 11 | * 12 | * Font is really 16 tall but this file is set to indicate 15 to allow it to line up with the lcd page size. 13 | * It works as the the bottom row in the glyph is whitespace anyway. 14 | * The rendering code normally inserts a pad pixel so this size allows additional rows 15 | * on 32 and 64 tall glcd displays. 16 | * 17 | */ 18 | 19 | #ifndef FIXEDNUMS8x16_H 20 | #define FIXEDNUMS8x16_H 21 | 22 | GLCDFONTDECL(fixednums8x16) = { 23 | 0x0, 0x0, // size of zero indicates fixed width font 24 | 8, // width 25 | 15, // height 26 | '+', // first char (48) 27 | 16, // char count 28 | 29 | 0x80, 0x80, 0x80, 0xe0, 0xe0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, // char '+' 30 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x70, 0x00, 0x00, 0x00, // char ',' 31 | 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // char '-' 32 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, // char '.' 33 | 0x00, 0x00, 0x00, 0xc0, 0xf0, 0x3c, 0x0f, 0x03, 0x30, 0x3c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, // char '/' 34 | 0xfc, 0xfe, 0x03, 0x81, 0x61, 0x1b, 0xfe, 0xfc, 0x0f, 0x1f, 0x36, 0x21, 0x20, 0x30, 0x1f, 0x0f, // char '0' 35 | 0x04, 0x04, 0x06, 0xff, 0xff, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x3f, 0x3f, 0x20, 0x20, 0x20, // char '1' 36 | 0x0c, 0x0e, 0x03, 0x01, 0x81, 0xc3, 0x7e, 0x3c, 0x38, 0x3c, 0x26, 0x23, 0x21, 0x20, 0x20, 0x20, // char '2' 37 | 0x0c, 0x0e, 0x43, 0x41, 0x41, 0x43, 0xfe, 0xbc, 0x0c, 0x1c, 0x30, 0x20, 0x20, 0x30, 0x1f, 0x0f, // char '3' 38 | 0x00, 0xe0, 0xfc, 0x1f, 0x83, 0x80, 0x00, 0x00, 0x0f, 0x0f, 0x08, 0x08, 0x3f, 0x3f, 0x08, 0x08, // char '4' 39 | 0x3f, 0x3f, 0x21, 0x21, 0x21, 0x61, 0xc1, 0x81, 0x0c, 0x1c, 0x30, 0x20, 0x20, 0x30, 0x1f, 0x0f, // char '5' 40 | 0xe0, 0xf8, 0x5c, 0x46, 0x43, 0xc1, 0x81, 0x01, 0x0f, 0x1f, 0x30, 0x20, 0x20, 0x30, 0x1f, 0x0f, // char '6' 41 | 0x01, 0x01, 0x01, 0x01, 0x81, 0xf1, 0x7f, 0x0f, 0x00, 0x00, 0x00, 0x3c, 0x3f, 0x03, 0x00, 0x00, // char '7' 42 | 0x1c, 0xbe, 0xe3, 0x41, 0x41, 0xe3, 0xbe, 0x1c, 0x0f, 0x1f, 0x30, 0x20, 0x20, 0x30, 0x1f, 0x0f, // char '8' 43 | 0x3c, 0x7e, 0xc3, 0x81, 0x81, 0x83, 0xfe, 0xfc, 0x20, 0x20, 0x20, 0x30, 0x18, 0x0e, 0x07, 0x01, // char '9' 44 | 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00 // char ': 45 | }; 46 | #endif 47 | -------------------------------------------------------------------------------- /src/fonts/font5x7.h: -------------------------------------------------------------------------------- 1 | #ifndef font5x7_h 2 | #define font5x7_h 3 | // Mystery font included in early Adafruit SSD1306 library 4 | GLCDFONTDECL(font5x7) = { 5 | 0x0, 0x0, // size of zero indicates fixed width font, 6 | 0x05, // width 7 | 0x07, // height 8 | 0x20, // first char 9 | // 0x60, // char count 10 | 0x63, // char count changed for enigma 11 | 0x00, 0x00, 0x00, 0x00, 0x00, // SPACE 12 | 0x00, 0x00, 0x5F, 0x00, 0x00, // ! 13 | 0x00, 0x03, 0x00, 0x03, 0x00, // " 14 | 0x14, 0x3E, 0x14, 0x3E, 0x14, // # 15 | 0x24, 0x2A, 0x7F, 0x2A, 0x12, // $ 16 | 0x43, 0x33, 0x08, 0x66, 0x61, // % 17 | 0x36, 0x49, 0x55, 0x22, 0x50, // & 18 | 0x00, 0x05, 0x03, 0x00, 0x00, // ' 19 | 0x00, 0x1C, 0x22, 0x41, 0x00, // ( 20 | 0x00, 0x41, 0x22, 0x1C, 0x00, // ) 21 | 0x14, 0x08, 0x3E, 0x08, 0x14, // * 22 | 0x08, 0x08, 0x3E, 0x08, 0x08, // + 23 | 0x00, 0x50, 0x30, 0x00, 0x00, // , 24 | 0x08, 0x08, 0x08, 0x08, 0x08, // - 25 | 0x00, 0x60, 0x60, 0x00, 0x00, // . 26 | 0x20, 0x10, 0x08, 0x04, 0x02, // / 27 | 0x3E, 0x51, 0x49, 0x45, 0x3E, // 0 28 | 0x00, 0x04, 0x02, 0x7F, 0x00, // 1 29 | 0x42, 0x61, 0x51, 0x49, 0x46, // 2 30 | 0x22, 0x41, 0x49, 0x49, 0x36, // 3 31 | 0x18, 0x14, 0x12, 0x7F, 0x10, // 4 32 | 0x27, 0x45, 0x45, 0x45, 0x39, // 5 33 | 0x3E, 0x49, 0x49, 0x49, 0x32, // 6 34 | 0x01, 0x01, 0x71, 0x09, 0x07, // 7 35 | 0x36, 0x49, 0x49, 0x49, 0x36, // 8 36 | 0x26, 0x49, 0x49, 0x49, 0x3E, // 9 37 | 0x00, 0x36, 0x36, 0x00, 0x00, // : 38 | 0x00, 0x56, 0x36, 0x00, 0x00, // ; 39 | 0x08, 0x14, 0x22, 0x41, 0x00, // < 40 | 0x14, 0x14, 0x14, 0x14, 0x14, // = 41 | 0x00, 0x41, 0x22, 0x14, 0x08, // > 42 | 0x02, 0x01, 0x51, 0x09, 0x06, // ? 43 | 0x3E, 0x41, 0x59, 0x55, 0x5E, // @ 44 | 0x7E, 0x09, 0x09, 0x09, 0x7E, // A 45 | 0x7F, 0x49, 0x49, 0x49, 0x36, // B 46 | 0x3E, 0x41, 0x41, 0x41, 0x22, // C 47 | 0x7F, 0x41, 0x41, 0x41, 0x3E, // D 48 | 0x7F, 0x49, 0x49, 0x49, 0x41, // E 49 | 0x7F, 0x09, 0x09, 0x09, 0x01, // F 50 | 0x3E, 0x41, 0x41, 0x49, 0x3A, // G 51 | 0x7F, 0x08, 0x08, 0x08, 0x7F, // H 52 | 0x00, 0x41, 0x7F, 0x41, 0x00, // I 53 | 0x30, 0x40, 0x40, 0x40, 0x3F, // J 54 | 0x7F, 0x08, 0x14, 0x22, 0x41, // K 55 | 0x7F, 0x40, 0x40, 0x40, 0x40, // L 56 | 0x7F, 0x02, 0x0C, 0x02, 0x7F, // M 57 | 0x7F, 0x02, 0x04, 0x08, 0x7F, // N 58 | 0x3E, 0x41, 0x41, 0x41, 0x3E, // O 59 | 0x7F, 0x09, 0x09, 0x09, 0x06, // P 60 | 0x1E, 0x21, 0x21, 0x21, 0x5E, // Q 61 | 0x7F, 0x09, 0x09, 0x09, 0x76, // R 62 | 0x26, 0x49, 0x49, 0x49, 0x32, // S 63 | 0x01, 0x01, 0x7F, 0x01, 0x01, // T 64 | 0x3F, 0x40, 0x40, 0x40, 0x3F, // U 65 | 0x1F, 0x20, 0x40, 0x20, 0x1F, // V 66 | 0x7F, 0x20, 0x10, 0x20, 0x7F, // W 67 | 0x41, 0x22, 0x1C, 0x22, 0x41, // X 68 | 0x07, 0x08, 0x70, 0x08, 0x07, // Y 69 | 0x61, 0x51, 0x49, 0x45, 0x43, // Z 70 | 71 | // 37 chars removed 72 | // inserted graphics characters for enigma: 73 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x20, 0x10, 0x08, 0x0C, 0x04, 0x04, 0x0C, 0x08, 0x10, 0x20, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 0x00, 0x00, 0x80, 0x70, 0x0E, 0x03, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0E, 0x70, 0x80, 0x00, 0x00, 0x00, 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 0x00, 0xF8, 0x07, 0x00, 0xC0, 0x20, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x20, 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x00, 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 0xFC, 0x03, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFC, 0x00, 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 0x3F, 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xC0, 0x3F, 0x00, 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 0x00, 0x1F, 0xE0, 0x00, 0x03, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0xE0, 0x1F, 0x00, 0x00, 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 0x00, 0x00, 0x01, 0x0E, 0x70, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0xA0, 0xA0, 0x40, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x70, 0x0E, 0x01, 0x00, 0x00, 0x00, 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x04, 0x08, 0x10, 0x30, 0x20, 0x20, 0x30, 0x10, 0x08, 0x04, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 130 | 131 | // end of enigma graphics 132 | }; 133 | #endif // font5x7_h 134 | 135 | -------------------------------------------------------------------------------- /src/fonts/font8x8.h: -------------------------------------------------------------------------------- 1 | #ifndef FONT8x8_H 2 | #define FONT8x8_H 3 | 4 | GLCDFONTDECL(font8x8) = { 5 | 0x0, 0x1, // size of one indicates fixed font width and no pixel padding 6 | 0x08, // width 7 | 0x08, // height 8 | 0x20, // first char 9 | 0x5f, // char count 10 | 11 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 12 | 0x00,0x00,0x00,0x00,0x5F,0x00,0x00,0x00, // ! 13 | 0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x00, // " 14 | 0x00,0x24,0x7E,0x24,0x24,0x7E,0x24,0x00, // # 15 | 0x00,0x2E,0x2A,0x7F,0x2A,0x3A,0x00,0x00, // $ 16 | 0x00,0x46,0x26,0x10,0x08,0x64,0x62,0x00, // % 17 | 0x00,0x20,0x54,0x4A,0x54,0x20,0x50,0x00, // & 18 | 0x00,0x00,0x00,0x04,0x02,0x00,0x00,0x00, // ' 19 | 0x00,0x00,0x00,0x3C,0x42,0x00,0x00,0x00, // ( 20 | 0x00,0x00,0x00,0x42,0x3C,0x00,0x00,0x00, // ) 21 | 0x00,0x10,0x54,0x38,0x54,0x10,0x00,0x00, // * 22 | 0x00,0x10,0x10,0x7C,0x10,0x10,0x00,0x00, // + 23 | 0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00, // , 24 | 0x00,0x10,0x10,0x10,0x10,0x10,0x00,0x00, // - 25 | 0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00, // . 26 | 0x00,0x40,0x20,0x10,0x08,0x04,0x00,0x00, // / 27 | 28 | 0x3C,0x62,0x52,0x4A,0x46,0x3C,0x00,0x00, // 0 29 | 0x44,0x42,0x7E,0x40,0x40,0x00,0x00,0x00, // 1 30 | 0x64,0x52,0x52,0x52,0x52,0x4C,0x00,0x00, // 2 31 | 0x24,0x42,0x42,0x4A,0x4A,0x34,0x00,0x00, // 3 32 | 0x30,0x28,0x24,0x7E,0x20,0x20,0x00,0x00, // 4 33 | 0x2E,0x4A,0x4A,0x4A,0x4A,0x32,0x00,0x00, // 5 34 | 0x3C,0x4A,0x4A,0x4A,0x4A,0x30,0x00,0x00, // 6 35 | 0x02,0x02,0x62,0x12,0x0A,0x06,0x00,0x00, // 7 36 | 0x34,0x4A,0x4A,0x4A,0x4A,0x34,0x00,0x00, // 8 37 | 0x0C,0x52,0x52,0x52,0x52,0x3C,0x00,0x00, // 9 38 | 0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00, // : 39 | 0x00,0x00,0x80,0x64,0x00,0x00,0x00,0x00, // ; 40 | 0x00,0x00,0x10,0x28,0x44,0x00,0x00,0x00, // < 41 | 0x00,0x28,0x28,0x28,0x28,0x28,0x00,0x00, // = 42 | 0x00,0x00,0x44,0x28,0x10,0x00,0x00,0x00, // > 43 | 0x00,0x04,0x02,0x02,0x52,0x0A,0x04,0x00, // ? 44 | 45 | 0x00,0x3C,0x42,0x5A,0x56,0x5A,0x1C,0x00, // @ 46 | 0x7C,0x12,0x12,0x12,0x12,0x7C,0x00,0x00, // A 47 | 0x7E,0x4A,0x4A,0x4A,0x4A,0x34,0x00,0x00, // B 48 | 0x3C,0x42,0x42,0x42,0x42,0x24,0x00,0x00, // C 49 | 0x7E,0x42,0x42,0x42,0x24,0x18,0x00,0x00, // D 50 | 0x7E,0x4A,0x4A,0x4A,0x4A,0x42,0x00,0x00, // E 51 | 0x7E,0x0A,0x0A,0x0A,0x0A,0x02,0x00,0x00, // F 52 | 0x3C,0x42,0x42,0x52,0x52,0x34,0x00,0x00, // G 53 | 0x7E,0x08,0x08,0x08,0x08,0x7E,0x00,0x00, // H 54 | 0x00,0x42,0x42,0x7E,0x42,0x42,0x00,0x00, // I 55 | 0x30,0x40,0x40,0x40,0x40,0x3E,0x00,0x00, // J 56 | 0x7E,0x08,0x08,0x14,0x22,0x40,0x00,0x00, // K 57 | 0x7E,0x40,0x40,0x40,0x40,0x40,0x00,0x00, // L 58 | 0x7E,0x04,0x08,0x08,0x04,0x7E,0x00,0x00, // M 59 | 0x7E,0x04,0x08,0x10,0x20,0x7E,0x00,0x00, // N 60 | 0x3C,0x42,0x42,0x42,0x42,0x3C,0x00,0x00, // O 61 | 62 | 0x7E,0x12,0x12,0x12,0x12,0x0C,0x00,0x00, // P 63 | 0x3C,0x42,0x52,0x62,0x42,0x3C,0x00,0x00, // Q 64 | 0x7E,0x12,0x12,0x12,0x32,0x4C,0x00,0x00, // R 65 | 0x24,0x4A,0x4A,0x4A,0x4A,0x30,0x00,0x00, // S 66 | 0x02,0x02,0x02,0x7E,0x02,0x02,0x02,0x00, // T 67 | 0x3E,0x40,0x40,0x40,0x40,0x3E,0x00,0x00, // U 68 | 0x1E,0x20,0x40,0x40,0x20,0x1E,0x00,0x00, // V 69 | 0x3E,0x40,0x20,0x20,0x40,0x3E,0x00,0x00, // W 70 | 0x42,0x24,0x18,0x18,0x24,0x42,0x00,0x00, // X 71 | 0x02,0x04,0x08,0x70,0x08,0x04,0x02,0x00, // Y 72 | 0x42,0x62,0x52,0x4A,0x46,0x42,0x00,0x00, // Z 73 | 0x00,0x00,0x7E,0x42,0x42,0x00,0x00,0x00, // [ 74 | 0x00,0x04,0x08,0x10,0x20,0x40,0x00,0x00, // 75 | 0x00,0x00,0x42,0x42,0x7E,0x00,0x00,0x00, // ] 76 | 0x00,0x08,0x04,0x7E,0x04,0x08,0x00,0x00, // ^ 77 | 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00, // _ 78 | 79 | 0x3C,0x42,0x99,0xA5,0xA5,0x81,0x42,0x3C, // ` 80 | 0x00,0x20,0x54,0x54,0x54,0x78,0x00,0x00, // a 81 | 0x00,0x7E,0x48,0x48,0x48,0x30,0x00,0x00, // b 82 | 0x00,0x00,0x38,0x44,0x44,0x44,0x00,0x00, // c 83 | 0x00,0x30,0x48,0x48,0x48,0x7E,0x00,0x00, // d 84 | 0x00,0x38,0x54,0x54,0x54,0x48,0x00,0x00, // e 85 | 0x00,0x00,0x00,0x7C,0x0A,0x02,0x00,0x00, // f 86 | 0x00,0x18,0xA4,0xA4,0xA4,0xA4,0x7C,0x00, // g 87 | 0x00,0x7E,0x08,0x08,0x08,0x70,0x00,0x00, // h 88 | 0x00,0x00,0x00,0x48,0x7A,0x40,0x00,0x00, // i 89 | 0x00,0x00,0x40,0x80,0x80,0x7A,0x00,0x00, // j 90 | 0x00,0x7E,0x18,0x24,0x40,0x00,0x00,0x00, // k 91 | 0x00,0x00,0x00,0x3E,0x40,0x40,0x00,0x00, // l 92 | 0x00,0x7C,0x04,0x78,0x04,0x78,0x00,0x00, // m 93 | 0x00,0x7C,0x04,0x04,0x04,0x78,0x00,0x00, // n 94 | 0x00,0x38,0x44,0x44,0x44,0x38,0x00,0x00, // o 95 | 96 | 0x00,0xFC,0x24,0x24,0x24,0x18,0x00,0x00, // p 97 | 0x00,0x18,0x24,0x24,0x24,0xFC,0x80,0x00, // q 98 | 0x00,0x00,0x78,0x04,0x04,0x04,0x00,0x00, // r 99 | 0x00,0x48,0x54,0x54,0x54,0x20,0x00,0x00, // s 100 | 0x00,0x00,0x04,0x3E,0x44,0x40,0x00,0x00, // t 101 | 0x00,0x3C,0x40,0x40,0x40,0x3C,0x00,0x00, // u 102 | 0x00,0x0C,0x30,0x40,0x30,0x0C,0x00,0x00, // v 103 | 0x00,0x3C,0x40,0x38,0x40,0x3C,0x00,0x00, // w 104 | 0x00,0x44,0x28,0x10,0x28,0x44,0x00,0x00, // x 105 | 0x00,0x1C,0xA0,0xA0,0xA0,0x7C,0x00,0x00, // y 106 | 0x00,0x44,0x64,0x54,0x4C,0x44,0x00,0x00, // z 107 | 0x00,0x08,0x08,0x76,0x42,0x42,0x00,0x00, // { 108 | 0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, // | 109 | 0x00,0x42,0x42,0x76,0x08,0x08,0x00,0x00, // } 110 | 0x00,0x00,0x04,0x02,0x04,0x02,0x00,0x00, // ~ 111 | }; 112 | 113 | #endif 114 | -------------------------------------------------------------------------------- /src/fonts/junk.jnk: -------------------------------------------------------------------------------- 1 | #ifndef font5x7_h 2 | #define font5x7_h 3 | // Mystery font included in early Adafruit SSD1306 library 4 | GLCDFONTDECL(font5x7) = { 5 | 0x0, 0x0, // size of zero indicates fixed width font, 6 | 0x05, // width 7 | 0x07, // height 8 | 0x20, // first char 9 | 0x60, // char count 10 | 0x00, 0x00, 0x00, 0x00, 0x00, // SPACE 11 | 0x00, 0x00, 0x5F, 0x00, 0x00, // ! 12 | 0x00, 0x03, 0x00, 0x03, 0x00, // " 13 | 0x14, 0x3E, 0x14, 0x3E, 0x14, // # 14 | 0x24, 0x2A, 0x7F, 0x2A, 0x12, // $ 15 | 0x43, 0x33, 0x08, 0x66, 0x61, // % 16 | 0x36, 0x49, 0x55, 0x22, 0x50, // & 17 | 0x00, 0x05, 0x03, 0x00, 0x00, // ' 18 | 0x00, 0x1C, 0x22, 0x41, 0x00, // ( 19 | 0x00, 0x41, 0x22, 0x1C, 0x00, // ) 20 | 0x14, 0x08, 0x3E, 0x08, 0x14, // * 21 | 0x08, 0x08, 0x3E, 0x08, 0x08, // + 22 | 0x00, 0x50, 0x30, 0x00, 0x00, // , 23 | 0x08, 0x08, 0x08, 0x08, 0x08, // - 24 | 0x00, 0x60, 0x60, 0x00, 0x00, // . 25 | 0x20, 0x10, 0x08, 0x04, 0x02, // / 26 | 0x3E, 0x51, 0x49, 0x45, 0x3E, // 0 27 | 0x00, 0x04, 0x02, 0x7F, 0x00, // 1 28 | 0x42, 0x61, 0x51, 0x49, 0x46, // 2 29 | 0x22, 0x41, 0x49, 0x49, 0x36, // 3 30 | 0x18, 0x14, 0x12, 0x7F, 0x10, // 4 31 | 0x27, 0x45, 0x45, 0x45, 0x39, // 5 32 | 0x3E, 0x49, 0x49, 0x49, 0x32, // 6 33 | 0x01, 0x01, 0x71, 0x09, 0x07, // 7 34 | 0x36, 0x49, 0x49, 0x49, 0x36, // 8 35 | 0x26, 0x49, 0x49, 0x49, 0x3E, // 9 36 | 0x00, 0x36, 0x36, 0x00, 0x00, // : 37 | 0x00, 0x56, 0x36, 0x00, 0x00, // ; 38 | 0x08, 0x14, 0x22, 0x41, 0x00, // < 39 | 0x14, 0x14, 0x14, 0x14, 0x14, // = 40 | 0x00, 0x41, 0x22, 0x14, 0x08, // > 41 | 0x02, 0x01, 0x51, 0x09, 0x06, // ? 42 | 0x3E, 0x41, 0x59, 0x55, 0x5E, // @ 43 | 0x7E, 0x09, 0x09, 0x09, 0x7E, // A 44 | 0x7F, 0x49, 0x49, 0x49, 0x36, // B 45 | 0x3E, 0x41, 0x41, 0x41, 0x22, // C 46 | 0x7F, 0x41, 0x41, 0x41, 0x3E, // D 47 | 0x7F, 0x49, 0x49, 0x49, 0x41, // E 48 | 0x7F, 0x09, 0x09, 0x09, 0x01, // F 49 | 0x3E, 0x41, 0x41, 0x49, 0x3A, // G 50 | 0x7F, 0x08, 0x08, 0x08, 0x7F, // H 51 | 0x00, 0x41, 0x7F, 0x41, 0x00, // I 52 | 0x30, 0x40, 0x40, 0x40, 0x3F, // J 53 | 0x7F, 0x08, 0x14, 0x22, 0x41, // K 54 | 0x7F, 0x40, 0x40, 0x40, 0x40, // L 55 | 0x7F, 0x02, 0x0C, 0x02, 0x7F, // M 56 | 0x7F, 0x02, 0x04, 0x08, 0x7F, // N 57 | 0x3E, 0x41, 0x41, 0x41, 0x3E, // O 58 | 0x7F, 0x09, 0x09, 0x09, 0x06, // P 59 | 0x1E, 0x21, 0x21, 0x21, 0x5E, // Q 60 | 0x7F, 0x09, 0x09, 0x09, 0x76, // R 61 | 0x26, 0x49, 0x49, 0x49, 0x32, // S 62 | 0x01, 0x01, 0x7F, 0x01, 0x01, // T 63 | 0x3F, 0x40, 0x40, 0x40, 0x3F, // U 64 | 0x1F, 0x20, 0x40, 0x20, 0x1F, // V 65 | 0x7F, 0x20, 0x10, 0x20, 0x7F, // W 66 | 0x41, 0x22, 0x1C, 0x22, 0x41, // X 67 | 0x07, 0x08, 0x70, 0x08, 0x07, // Y 68 | 0x61, 0x51, 0x49, 0x45, 0x43, // Z 69 | 0x00, 0x7F, 0x41, 0x00, 0x00, // [ 70 | 0x02, 0x04, 0x08, 0x10, 0x20, // backslash 71 | 0x00, 0x00, 0x41, 0x7F, 0x00, // ] 72 | 0x04, 0x02, 0x01, 0x02, 0x04, // ^ 73 | 74 | // enigma graphics inserted at spot 'a'-2, 28 chars in size 75 | 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x30, 0x08, 0x04, 0x02, 0xC3, 0x21, 0x21, 0xC3, 0x02, 0x04, 0x08, 0x30, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 76 | 0x00, 0x00, 0xE0, 0x1C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1C, 0xE0, 0x00, 0x00, 0x00, 77 | 0x00, 0xFE, 0x01, 0x00, 0xF0, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 78 | 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 79 | 0x0F, 0xF0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xF0, 0x0F, 0x00, 80 | 0x00, 0x07, 0x78, 0x80, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x00, 0x80, 0x78, 0x07, 0x00, 0x00, 81 | 0x00, 0x00, 0x00, 0x03, 0x1C, 0x70, 0xC0, 0x00, 0x00, 0x00, 0x30, 0x48, 0x48, 0x30, 0x00, 0x00, 0x00, 0xC0, 0x70, 0x1C, 0x03, 0x00, 0x00, 0x00, 0x00, 82 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0C, 0x08, 0x08, 0x0C, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 83 | 84 | // end of enigma graphics insertion 85 | 86 | 0x00, 0x08, 0x36, 0x41, 0x41, // { 87 | 0x00, 0x00, 0x7F, 0x00, 0x00, // | 88 | 0x41, 0x41, 0x36, 0x08, 0x00, // } 89 | 0x02, 0x01, 0x02, 0x04, 0x02, // ~ 90 | 0X7F, 0X7F, 0X7F, 0X7F, 0X7F // del 91 | }; 92 | #endif // font5x7_h 93 | 94 | -------------------------------------------------------------------------------- /src/fonts/lcd5x7.h: -------------------------------------------------------------------------------- 1 | //http://www.hwsw.no/snippets/5x7_LCD_font.php 2 | 3 | #ifndef lcd5x7_h 4 | #define lcd5x7_h 5 | GLCDFONTDECL(lcd5x7) = { 6 | 0x0, 0x0, // size of zero indicates fixed width font, 7 | 0x05, // width 8 | 0x07, // height 9 | 0x20, // first char 10 | 0x60, // char count 11 | 12 | 0x00,0x00,0x00,0x00,0x00, // SPACE 13 | 14 | 0x00,0x00,0x4F,0x00,0x00, // ! 15 | 0x00,0x07,0x00,0x07,0x00, // " 16 | 0x14,0x7F,0x14,0x7F,0x14, // # 17 | 0x24,0x2A,0x7F,0x2A,0x12, // $ 18 | 0x23,0x13,0x08,0x64,0x62, // % 19 | 0x36,0x49,0x55,0x22,0x50, // & 20 | 0x00,0x05,0x03,0x00,0x00, // ' 21 | 0x00,0x1C,0x22,0x41,0x00, // ( 22 | 0x00,0x41,0x22,0x1C,0x00, // ) 23 | 0x14,0x08,0x3E,0x08,0x14, // * 24 | 0x08,0x08,0x3E,0x08,0x08, // + 25 | 0x00,0x50,0x30,0x00,0x00, // , 26 | 0x08,0x08,0x08,0x08,0x08, // - 27 | 0x00,0x60,0x60,0x00,0x00, // . 28 | 0x20,0x10,0x08,0x04,0x02, // / 29 | 30 | 0x3E,0x51,0x49,0x45,0x3E, // 0 31 | 0x00,0x42,0x7F,0x40,0x00, // 1 32 | 0x42,0x61,0x51,0x49,0x46, // 2 33 | 0x21,0x41,0x45,0x4B,0x31, // 3 34 | 0x18,0x14,0x12,0x7F,0x10, // 4 35 | 0x27,0x45,0x45,0x45,0x39, // 5 36 | 0x3C,0x4A,0x49,0x49,0x30, // 6 37 | 0x01,0x71,0x09,0x05,0x03, // 7 38 | 0x36,0x49,0x49,0x49,0x36, // 8 39 | 0x06,0x49,0x49,0x29,0x1E, // 9 40 | 41 | 0x36,0x36,0x00,0x00,0x00, // : 42 | 0x56,0x36,0x00,0x00,0x00, // ; 43 | 0x08,0x14,0x22,0x41,0x00, // < 44 | 0x14,0x14,0x14,0x14,0x14, // = 45 | 0x00,0x41,0x22,0x14,0x08, // > 46 | 0x02,0x01,0x51,0x09,0x06, // ? 47 | 0x30,0x49,0x79,0x41,0x3E, // @ 48 | 49 | 0x7E,0x11,0x11,0x11,0x7E, // A 50 | 0x7F,0x49,0x49,0x49,0x36, // B 51 | 0x3E,0x41,0x41,0x41,0x22, // C 52 | 0x7F,0x41,0x41,0x22,0x1C, // D 53 | 0x7F,0x49,0x49,0x49,0x41, // E 54 | 0x7F,0x09,0x09,0x09,0x01, // F 55 | 0x3E,0x41,0x49,0x49,0x7A, // G 56 | 0x7F,0x08,0x08,0x08,0x7F, // H 57 | 0x00,0x41,0x7F,0x41,0x00, // I 58 | 0x20,0x40,0x41,0x3F,0x01, // J 59 | 0x7F,0x08,0x14,0x22,0x41, // K 60 | 0x7F,0x40,0x40,0x40,0x40, // L 61 | 0x7F,0x02,0x0C,0x02,0x7F, // M 62 | 0x7F,0x04,0x08,0x10,0x7F, // N 63 | 0x3E,0x41,0x41,0x41,0x3E, // O 64 | 0x7F,0x09,0x09,0x09,0x06, // P 65 | 0x3E,0x41,0x51,0x21,0x5E, // Q 66 | 0x7F,0x09,0x19,0x29,0x46, // R 67 | 0x46,0x49,0x49,0x49,0x31, // S 68 | 0x01,0x01,0x7F,0x01,0x01, // T 69 | 0x3F,0x40,0x40,0x40,0x3F, // U 70 | 0x1F,0x20,0x40,0x20,0x1F, // V 71 | 0x3F,0x40,0x30,0x40,0x3F, // W 72 | 0x63,0x14,0x08,0x14,0x63, // X 73 | 0x07,0x08,0x70,0x08,0x07, // Y 74 | 0x61,0x51,0x49,0x45,0x43, // Z 75 | 76 | 0x00,0x7F,0x41,0x41,0x00, // [ 77 | 0x02,0x04,0x08,0x10,0x20, // backslash 78 | 0x00,0x41,0x41,0x7F,0x00, // ] 79 | 0x04,0x02,0x01,0x02,0x04, // ^ 80 | 0x40,0x40,0x40,0x40,0x40, // _ 81 | 0x00,0x01,0x02,0x04,0x00, // ` 82 | 83 | 0x20,0x54,0x54,0x54,0x78, // a 84 | 0x7F,0x50,0x48,0x48,0x30, // b 85 | 0x38,0x44,0x44,0x44,0x20, // c 86 | 0x38,0x44,0x44,0x48,0x7F, // d 87 | 0x38,0x54,0x54,0x54,0x18, // e 88 | 0x08,0x7E,0x09,0x01,0x02, // f 89 | 0x0C,0x52,0x52,0x52,0x3E, // g 90 | 0x7F,0x08,0x04,0x04,0x78, // h 91 | 0x00,0x44,0x7D,0x40,0x00, // i 92 | 0x20,0x40,0x44,0x3D,0x00, // j 93 | 0x7F,0x10,0x28,0x44,0x00, // k 94 | 0x00,0x41,0x7F,0x40,0x00, // l 95 | 0x78,0x04,0x58,0x44,0x78, // m 96 | 0x7C,0x08,0x04,0x04,0x78, // n 97 | 0x38,0x44,0x44,0x44,0x38, // o 98 | 0x7C,0x14,0x14,0x14,0x08, // p 99 | 0x08,0x14,0x14,0x18,0x7C, // q 100 | 0x7C,0x08,0x04,0x04,0x08, // r 101 | 0x48,0x54,0x54,0x54,0x20, // s 102 | 0x04,0x3F,0x44,0x40,0x20, // t 103 | 0x3C,0x40,0x40,0x20,0x7C, // u 104 | 0x1C,0x20,0x40,0x20,0x1C, // v 105 | 0x3C,0x40,0x30,0x40,0x3C, // w 106 | 0x44,0x28,0x10,0x28,0x44, // x 107 | 0x0C,0x50,0x50,0x50,0x3C, // y 108 | 0x44,0x64,0x54,0x4C,0x44, // z 109 | 110 | 0x00,0x08,0x36,0x41,0x00, // { 111 | 0x00,0x00,0x7F,0x00,0x00, // | 112 | 0x00,0x41,0x36,0x08,0x00, // } 113 | 0x0C,0x02,0x0C,0x10,0x0C, // ~ 114 | 115 | 0x00,0x00,0x00,0x00,0x00 116 | }; 117 | #endif // lcd5x7_h -------------------------------------------------------------------------------- /src/fonts/lcdnums12x16.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Fixed width font for numbers that looks like LCD panel digits 3 | * This font including pad pixels, will render 12x16 pixels on the display 4 | * 5 | * This font is very useful when using overstrike as all characters & numbers 6 | * are all the same width. 7 | * 8 | * This font is not a complete character set. The font only contains 9 | * the characters: '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '9', ':' 10 | * 11 | * This font is nice for certain applications like clocks, signed values or decimal point values. 12 | * 13 | */ 14 | 15 | GLCDFONTDECL(lcdnums12x16) = 16 | { 17 | 0x0, 0x0, // size of zero indicates fixed width font 18 | 11, // width (will be 12 with pad pixel on right) 19 | 15, // height (will be 16 with pad pixel on bottom) 20 | '+', // first char 21 | 16, // char count 22 | 0x00, 0x00, 0x00, 0x80, 0x80, 0xe0, 0xe0, 0x80, 0x80, 0x00, 0x00, 23 | 0x00, 0x00, 0x01, 0x03, 0x03, 0x0f, 0x0f, 0x03, 0x03, 0x01, 0x00, // + 24 | 25 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x60, 0x00, 0x00, 0x00, 0x00, // , 27 | 28 | 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 29 | 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, // - 30 | 31 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 32 | 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, // . 33 | 34 | 0x00, 0x00, 0x02, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x02, 0x00, 35 | 0x00, 0x00, 0x81, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x81, 0x00, // / 36 | 37 | 0x00, 0xfc, 0x7a, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x7a, 0xfc, 38 | 0x00, 0x7e, 0xbc, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xbc, 0x7e, // 0 39 | 40 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xfc, 41 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x7e, // 1 42 | 43 | 0x00, 0x00, 0x02, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x7a, 0xfc, 44 | 0x00, 0x7e, 0xbd, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x81, 0x00, // 2 45 | 46 | 0x00, 0x00, 0x02, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x7a, 0xfc, 47 | 0x00, 0x00, 0x81, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xbd, 0x7e, // 3 48 | 49 | 0x00, 0xfc, 0x78, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x78, 0xfc, 50 | 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x3d, 0x7e, // 4 51 | 52 | 0x00, 0xfc, 0x7a, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x02, 0x00, 53 | 0x00, 0x00, 0x81, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xbd, 0x7e, // 5 54 | 55 | 0x00, 0xfc, 0x7a, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x02, 0x00, 56 | 0x00, 0x7e, 0xbd, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xbd, 0x7e, // 6 57 | 58 | 0x00, 0x00, 0x02, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x7a, 0xfc, 59 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x7e, // 7 60 | 61 | 0x00, 0xfc, 0x7a, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x7a, 0xfc, 62 | 0x00, 0x7e, 0xbd, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xbd, 0x7e, // 8 63 | 64 | 0x00, 0xfc, 0x7a, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x7a, 0xfc, 65 | 0x00, 0x00, 0x81, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xbd, 0x7e, // 9 66 | 67 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 68 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 // : 69 | }; 70 | -------------------------------------------------------------------------------- /src/fonts/lcdnums14x24.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Fixed width font for numbers that looks like LCD panel digits 3 | * This font including pad pixels, will render 14x24 pixels on the display 4 | * 5 | * This font is very useful when using overstrike as all characters & numbers 6 | * are all the same width. 7 | * 8 | * This font is not a complete character set. The font only contains 9 | * the characters: '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '9', ':' 10 | * 11 | * This font is nice for certain applications like clocks, signed values or decimal point values. 12 | * 13 | */ 14 | 15 | 16 | GLCDFONTDECL(lcdnums14x24) = 17 | { 18 | 0x0, 0x0, // size of zero indicates fixed width font 19 | 13, // width (will be 14 with pad pixel on right) 20 | 23, // height (will be 24 with pad pixel on bottom) 21 | '+', // first char 22 | 16, // char count 23 | 24 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 25 | 0x00, 0x00, 0x10, 0x38, 0x38, 0x38, 0xff, 0xff, 0x38, 0x38, 0x38, 0x10, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // + 27 | 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 30 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x78, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, // , 31 | 32 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 33 | 0x00, 0x00, 0x10, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x10, 0x00, 34 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // - 35 | 36 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 37 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 38 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe0, 0xe0, 0x40, 0x00, 0x00, 0x00, 0x00, // . 39 | 40 | 0x00, 0x00, 0x02, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x06, 0x02, 0x00, 41 | 0x00, 0x00, 0x10, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x10, 0x00, 42 | 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, // / 43 | 44 | 0x00, 0xfc, 0xfa, 0xf6, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xf6, 0xfa, 0xfc, 45 | 0x00, 0xef, 0xc7, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc7, 0xef, 46 | 0x00, 0x7f, 0xbf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xdf, 0xbf, 0x7f, // 0 47 | 48 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xfc, 49 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc7, 0xef, 50 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x7f, // 1 51 | 52 | 0x00, 0x00, 0x02, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xf6, 0xfa, 0xfc, 53 | 0x00, 0xe0, 0xd0, 0xb8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x3b, 0x17, 0x0f, 54 | 0x00, 0x7f, 0xbf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, // 2 55 | 56 | 0x00, 0x00, 0x02, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xf6, 0xfa, 0xfc, 57 | 0x00, 0x00, 0x10, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xbb, 0xd7, 0xef, 58 | 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xdf, 0xbf, 0x7f, // 3 59 | 60 | 0x00, 0xfc, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xfc, 61 | 0x00, 0x0f, 0x17, 0x3b, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xbb, 0xd7, 0xef, 62 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x7f, // 4 63 | 64 | 0x00, 0xfc, 0xfa, 0xf6, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x06, 0x02, 0x00, 65 | 0x00, 0x0f, 0x17, 0x3b, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xb8, 0xd0, 0xe0, 66 | 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xdf, 0xbf, 0x7f, // 5 67 | 68 | 0x00, 0xfc, 0xfa, 0xf6, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x06, 0x02, 0x00, 69 | 0x00, 0xef, 0xd7, 0xbb, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xb8, 0xd0, 0xe0, 70 | 0x00, 0x7f, 0xbf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xdf, 0xbf, 0x7f, // 6 71 | 72 | 0x00, 0x00, 0x02, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xf6, 0xfa, 0xfc, 73 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc7, 0xef, 74 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x7f, // 7 75 | 76 | 0x00, 0xfc, 0xfa, 0xf6, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xf6, 0xfa, 0xfc, 77 | 0x00, 0xef, 0xd7, 0xbb, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xbb, 0xd7, 0xef, 78 | 0x00, 0x7f, 0xbf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xdf, 0xbf, 0x7f, // 8 79 | 80 | 0x00, 0xfc, 0xfa, 0xf6, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xf6, 0xfa, 0xfc, 81 | 0x00, 0x0f, 0x17, 0x3b, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xbb, 0xd7, 0xef, 82 | 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xdf, 0xbf, 0x7f, // 9 83 | 84 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 85 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // : 86 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0e, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00 87 | }; 88 | -------------------------------------------------------------------------------- /src/fonts/newbasic3x5.h: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * newbasic3x5 4 | * 5 | * created with FontCreator 6 | * written by F. Maximilian Thiele 7 | * 8 | * http://www.apetech.de/fontCreator 9 | * me@apetech.de 10 | * 11 | * File Name : newbasic3x5.h 12 | * Date : 23.04.2011 13 | * Font size in bytes : 1830 14 | * Font width : 10 15 | * Font height : 6 16 | * Font first char : 32 17 | * Font last char : 128 18 | * Font used chars : 96 19 | * 20 | * The font data are defined as 21 | * 22 | * struct _FONT_ { 23 | * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; 24 | * uint8_t font_Width_in_Pixel_for_fixed_drawing; 25 | * uint8_t font_Height_in_Pixel_for_all_characters; 26 | * unit8_t font_First_Char; 27 | * uint8_t font_Char_Count; 28 | * 29 | * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; 30 | * // for each character the separate width in pixels, 31 | * // characters < 128 have an implicit virtual right empty row 32 | * 33 | * uint8_t font_data[]; 34 | * // bit field of all characters 35 | */ 36 | 37 | #ifndef NEWBASIC3X5_H 38 | #define NEWBASIC3X5_H 39 | 40 | #define NEWBASIC3X5_WIDTH 3 41 | #define NEWBASIC3X5_HEIGHT 6 42 | 43 | GLCDFONTDECL(newbasic3x5) = { 44 | 0x0, 0x0, // size 45 | 0x03, // width 46 | 0x06, // height 47 | 0x20, // first char 48 | 0x60, // char count 49 | 50 | /* char widths 51 | 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 52 | 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 53 | 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 54 | 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 55 | 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 56 | 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 57 | 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 58 | 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 59 | 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 60 | 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 61 | */ 62 | // font data 63 | 0x00, 0x00, 0x00, // 32 64 | 0x00, 0x5C, 0x00, // 33 65 | 0x0C, 0x00, 0x0C, // 34 66 | 0x7C, 0x28, 0x7C, // 35 67 | 0x28, 0x7C, 0x28, // 36 68 | 0x24, 0x10, 0x48, // 37 69 | 0x30, 0x5C, 0x6C, // 38 70 | 0x00, 0x0C, 0x00, // 39 71 | 0x38, 0x44, 0x00, // 40 72 | 0x00, 0x44, 0x38, // 41 73 | 0x08, 0x14, 0x08, // 42 74 | 0x10, 0x38, 0x10, // 43 75 | 0x00, 0x60, 0x00, // 44 76 | 0x10, 0x10, 0x10, // 45 77 | 0x00, 0x40, 0x00, // 46 78 | 0x60, 0x10, 0x0C, // 47 79 | 0x7C, 0x44, 0x7C, // 48 80 | 0x48, 0x7C, 0x40, // 49 81 | 0x74, 0x54, 0x5C, // 50 82 | 0x44, 0x54, 0x7C, // 51 83 | 0x1C, 0x10, 0x7C, // 52 84 | 0x5C, 0x54, 0x74, // 53 85 | 0x7C, 0x54, 0x74, // 54 86 | 0x64, 0x14, 0x1C, // 55 87 | 0x7C, 0x54, 0x7C, // 56 88 | 0x5C, 0x54, 0x7C, // 57 89 | 0x00, 0x28, 0x00, // 58 90 | 0x00, 0x68, 0x00, // 59 91 | 0x10, 0x28, 0x44, // 60 92 | 0x28, 0x28, 0x28, // 61 93 | 0x44, 0x28, 0x10, // 62 94 | 0x04, 0x54, 0x1C, // 63 95 | 0x38, 0x5C, 0x58, // 64 96 | 0x78, 0x14, 0x78, // 65 97 | 0x7C, 0x54, 0x28, // 66 98 | 0x38, 0x44, 0x28, // 67 99 | 0x7C, 0x44, 0x38, // 68 100 | 0x7C, 0x54, 0x44, // 69 101 | 0x7C, 0x14, 0x04, // 70 102 | 0x38, 0x44, 0x74, // 71 103 | 0x7C, 0x10, 0x7C, // 72 104 | 0x44, 0x7C, 0x44, // 73 105 | 0x20, 0x40, 0x3C, // 74 106 | 0x7C, 0x10, 0x6C, // 75 107 | 0x7C, 0x40, 0x40, // 76 108 | 0x7C, 0x08, 0x7C, // 77 109 | 0x7C, 0x18, 0x7C, // 78 110 | 0x38, 0x44, 0x38, // 79 111 | 0x7C, 0x14, 0x08, // 80 112 | 0x38, 0x44, 0x78, // 81 113 | 0x7C, 0x14, 0x68, // 82 114 | 0x48, 0x54, 0x24, // 83 115 | 0x04, 0x7C, 0x04, // 84 116 | 0x7C, 0x40, 0x7C, // 85 117 | 0x3C, 0x40, 0x3C, // 86 118 | 0x7C, 0x30, 0x7C, // 87 119 | 0x6C, 0x10, 0x6C, // 88 120 | 0x0C, 0x70, 0x0C, // 89 121 | 0x64, 0x54, 0x4C, // 90 122 | 0x7C, 0x44, 0x00, // 91 123 | 0x0C, 0x10, 0x60, // 92 124 | 0x44, 0x7C, 0x00, // 93 125 | 0x08, 0x04, 0x08, // 94 126 | 0x80, 0x80, 0x80, // 95 127 | 0x04, 0x00, 0x00, // 96 128 | 0x70, 0x70, 0x70, // 97 129 | 0x7C, 0x50, 0x70, // 98 130 | 0x70, 0x50, 0x50, // 99 131 | 0x70, 0x50, 0x7C, // 100 132 | 0x30, 0x70, 0x10, // 101 133 | 0x7C, 0x14, 0x00, // 102 134 | 0x90, 0xF0, 0x40, // 103 135 | 0x7C, 0x10, 0x70, // 104 136 | 0x74, 0x00, 0x00, // 105 137 | 0xE0, 0x00, 0x00, // 106 138 | 0x7C, 0x30, 0x48, // 107 139 | 0x7C, 0x00, 0x00, // 108 140 | 0x70, 0x70, 0x70, // 109 141 | 0x70, 0x10, 0x70, // 110 142 | 0x70, 0x50, 0x70, // 111 143 | 0x00, 0x00, 0x00, // 112 144 | 0x00, 0x00, 0x00, // 113 145 | 0x30, 0x00, 0x00, // 114 146 | 0x50, 0x70, 0x00, // 115 147 | 0x30, 0x50, 0x40, // 116 148 | 0x70, 0x40, 0x70, // 117 149 | 0x30, 0x70, 0x00, // 118 150 | 0x30, 0x10, 0x30, // 119 151 | 0x50, 0x70, 0x00, // 120 152 | 0x00, 0x00, 0x00, // 121 153 | 0x40, 0x70, 0x00, // 122 154 | 0x10, 0x6C, 0x44, // 123 155 | 0x00, 0x7C, 0x00, // 124 156 | 0x44, 0x6C, 0x10, // 125 157 | 0x10, 0x08, 0x10, // 126 158 | 0x78, 0x48, 0x48 // 127 159 | 160 | }; 161 | 162 | #endif 163 | -------------------------------------------------------------------------------- /src/ihex.cpp: -------------------------------------------------------------------------------- 1 | #include "ihex.h" 2 | 3 | 4 | // helper for checksum calculation 5 | uint8_t ihexread::cksumfin(uint8_t cksum) 6 | { 7 | return (~cksum)+1; 8 | } 9 | 10 | // Read 1 hex digit, -1 on error 11 | int ihexread::hex1() 12 | { 13 | int c; 14 | c=getch(); 15 | if (c==-1) return -1; 16 | if (c>='0'&&c<='9') c-='0'; 17 | if (c>='A'&&c<='F') c=(c-'A')+10; 18 | if (c>='a'&&c<='f') c=(c-'a')+10; 19 | return c; 20 | } 21 | 22 | 23 | // read two hex digits, -1 on error 24 | int ihexread::hex2() 25 | { 26 | int v=0; 27 | int c; 28 | v=hex1(); 29 | if (v==-1) return -1; 30 | v<<=4; 31 | c=hex1(); 32 | if (c==-1) return -1; 33 | v|=c; 34 | return v; 35 | } 36 | 37 | 38 | 39 | // Read hex file 40 | int ihexread::read() 41 | { 42 | // character c, count n, value v, address a, checksum cksum) 43 | int c,i; 44 | unsigned int eof=0,n,v,a,cksum=0; 45 | while (!eof) 46 | { 47 | c=getch(); 48 | if (c==-1) eof=1; 49 | if (eof==1) break; // EOF ok here 50 | if (c!=':') continue; // wait for : 51 | n=hex2(); // read count 52 | cksum=n; 53 | a=hex2();// read address 54 | cksum+=a; 55 | a<<=8; 56 | v=hex2(); 57 | a|=v; 58 | cksum+=v; // read record type 59 | v=hex2(); 60 | cksum+=v; 61 | // v is now record type 62 | // we only look at 00 and 01, but 63 | // you could do more here 64 | if (v==1) // end? 65 | { 66 | // you could read the rest here which should be ff 67 | v=hex2(); 68 | cksum=cksumfin(cksum); 69 | if (v!=cksum) return error(); else return 0; 70 | } 71 | if (v!=0) return error(); // unknown type; 72 | // read type 0 line 73 | for (i=0;i 92 | 93 | class ihexreadstdin : public ihexread 94 | { 95 | protected: 96 | int getch(void); 97 | void setmem(uint16_t a, uint8_t d); 98 | 99 | } ; 100 | 101 | // example function -- you should supply your own 102 | // in a subclass 103 | int ihexreadstdin::getch() 104 | { 105 | return getchar(); 106 | } 107 | 108 | void ihexreadstdin::setmem(uint16_t a, uint8_t d) 109 | { 110 | printf("Write: %04X:%02x\n",a,d); 111 | } 112 | 113 | 114 | int main(int argc, char *argv[]) 115 | { 116 | ihexreadstdin reader; 117 | reader.read(); 118 | return 0; 119 | 120 | } 121 | 122 | #endif 123 | -------------------------------------------------------------------------------- /src/ihex.h: -------------------------------------------------------------------------------- 1 | #ifndef __IHEX_H 2 | #define __IHEX_H 3 | #include 4 | #include "main.h" // need Serialread 5 | 6 | class ihexread 7 | { 8 | public: 9 | int read(void); 10 | protected: 11 | virtual int getch(void)=0; 12 | virtual void setmem(uint16_t add, uint8_t data)=0; 13 | virtual int error(void) { return -1; } 14 | private: 15 | int hex1(void); 16 | int hex2(void); 17 | static uint8_t cksumfin(uint8_t cksum); 18 | }; 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /src/ihex1802.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "ihex1802.h" 3 | #include "1802.h" 4 | 5 | // Intel hex stuff 6 | 7 | int ihex1802::getch(void) 8 | { 9 | int c; 10 | while ((c=Serialread())==-1); 11 | return c; 12 | } 13 | 14 | void ihex1802::setmem(uint16_t a, uint8_t d) 15 | { 16 | ram[a&MAXMEM]=d; 17 | } 18 | 19 | int ihexo1802::putch(int c) 20 | { 21 | Serial.print((char)c); 22 | return 0; 23 | } 24 | -------------------------------------------------------------------------------- /src/ihex1802.h: -------------------------------------------------------------------------------- 1 | #include "ihex.h" 2 | #include "ihexout.h" 3 | 4 | class ihex1802 : public ihexread 5 | { 6 | protected: 7 | int getch(void) ; 8 | void setmem(uint16_t a, uint8_t d); 9 | }; 10 | 11 | class ihexo1802 : public ihexout 12 | { 13 | int putch(int c); 14 | }; 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/ihexout.cpp: -------------------------------------------------------------------------------- 1 | #include "ihexout.h" 2 | 3 | uint8_t ihexout::digit(uint8_t d) 4 | { 5 | d&=0xF;// just in case 6 | if (d<=9) d+='0'; else d+='A'-10; 7 | return d; 8 | } 9 | 10 | 11 | #define safe_putch(c) if (putch(c)) return -1 12 | 13 | int ihexout::write(uint8_t *bytes, uint16_t count, uint16_t base) 14 | { 15 | uint16_t line; 16 | uint8_t cksum; 17 | 18 | int i; 19 | 20 | if (count==0 || bytes==(uint8_t*)0) return -1; 21 | while (count) 22 | { 23 | safe_putch(':'); 24 | cksum=0; 25 | if (count>=16) 26 | { 27 | safe_putch('1'); 28 | safe_putch('0'); 29 | line=16; 30 | cksum+=16; 31 | } else 32 | { 33 | safe_putch(digit(count>>4)); 34 | safe_putch(digit(count)); 35 | line=count; 36 | cksum+=count; 37 | } 38 | safe_putch(digit(base>>12)); 39 | safe_putch(digit(base>>8)); 40 | cksum+=base>>8; 41 | safe_putch(digit(base>>4)); 42 | safe_putch(digit(base)); 43 | cksum+=base; 44 | safe_putch('0'); 45 | safe_putch('0'); 46 | for (i=0;i>4)); 49 | safe_putch(digit(*bytes)); 50 | cksum+=(*bytes++); 51 | base++; 52 | } 53 | cksum=~cksum; 54 | cksum++; 55 | safe_putch(digit(cksum>>4)); 56 | safe_putch(digit(cksum)); 57 | if (crlf()) return -1; 58 | count-=line; 59 | } 60 | safe_putch(':'); 61 | safe_putch('0'); 62 | safe_putch('0'); 63 | safe_putch('0'); 64 | safe_putch('0'); 65 | safe_putch('0'); 66 | safe_putch('0'); 67 | safe_putch('0'); 68 | safe_putch('1'); 69 | safe_putch('F'); 70 | safe_putch('F'); 71 | return crlf(); 72 | } 73 | 74 | 75 | #if 0 76 | #include 77 | 78 | class ihexouttest : public ihexout 79 | { 80 | protected: 81 | int putch(int c); 82 | }; 83 | 84 | int ihexouttest::putch(int c) 85 | { 86 | putchar(c); 87 | return 0; 88 | } 89 | 90 | uint8_t mem[100]= 91 | { 92 | 0xAA, 0x55 93 | }; 94 | 95 | 96 | 97 | 98 | 99 | int main(int argc, char *argv[]) 100 | { 101 | ihexouttest test; 102 | int i; 103 | for (i=0;i<45;i++) mem[i+2]=i; 104 | test.write(mem,45,0); 105 | return 0; 106 | } 107 | 108 | #endif 109 | 110 | 111 | -------------------------------------------------------------------------------- /src/ihexout.h: -------------------------------------------------------------------------------- 1 | #ifndef __IHEXOUT_H 2 | #define __IHEXOUT_H 3 | 4 | #include 5 | 6 | class ihexout 7 | { 8 | public: 9 | int write(uint8_t *bytes,uint16_t count,uint16_t base=0); 10 | protected: 11 | virtual int putch(int c)=0; 12 | virtual int crlf(void) { if (putch('\r')==-1) return -1; return putch('\n'); } 13 | uint8_t digit(uint8_t d); 14 | }; 15 | 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /src/main.h: -------------------------------------------------------------------------------- 1 | #ifndef __MAIN_H 2 | #define __MAIN_H 3 | 4 | 5 | 6 | int freeRam(void); 7 | void interpretkeys(void); 8 | void setupUno(void); 9 | uint8_t xkeyPressed(void); 10 | void scanKeys(void); 11 | void driveLEDs(void); 12 | void setaddress(uint16_t a); 13 | void setdata(uint8_t d); 14 | void setdp(int pos, int state); 15 | int Serialread(int echo=1); 16 | 17 | #define KEY_RS 'R' 18 | #define KEY_AD '=' 19 | #define KEY_DA 'L' 20 | #define KEY_GO 'G' 21 | #define KEY_PC 'P' 22 | #define KEY_ST 'S' 23 | #define KEY_SST '/' 24 | 25 | extern char threeHex[3][2]; 26 | extern int pixie_enable; 27 | 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /src/startrek.h: -------------------------------------------------------------------------------- 1 | // Cosmac Elf spaceship memory image... 2 | //const uint8_t startrek[256] PROGMEM = { 3 | const uint8_t startrek[] PROGMEM = { 4 | // program code (the upper 25% of the screen contains display code) 5 | 0x72, 0x70, 0x22, 0x78, 0x22, 0x52, 0xC4, 0xC4, 6 | 0xC4, 0xF8, 0x00, 0xB0, 0xF8, 0x00, 0xA0, 0x80, 7 | 0xE2, 0xE2, 0x20, 0xA0, 0xE2, 0x20, 0xA0, 0xE2, 8 | 0x20, 0xA0, 0x3C, 0x1E, 0x30, 0x0F, 0xE2, 0x69, 9 | 0x3F, 0x2F, 0x6C, 0xA4, 0x37, 0x33, 0x3F, 0x35, 10 | 0x6C, 0x54, 0x14, 0x30, 0x33, 0x00, 0x00, 0x00, 11 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 12 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 13 | // bitmap (the bottom 75% of the screen is the bitmap) 14 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 15 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 16 | 0x7B, 0xDE, 0xDB, 0xDE, 0x00, 0x00, 0x00, 0x00, 17 | 0x4A, 0x50, 0xDA, 0x52, 0x00, 0x00, 0x00, 0x00, 18 | 0x42, 0x5E, 0xAB, 0xD0, 0x00, 0x00, 0x00, 0x00, 19 | 0x4A, 0x42, 0x8A, 0x52, 0x00, 0x00, 0x00, 0x00, 20 | 0x7B, 0xDE, 0x8A, 0x5E, 0x00, 0x00, 0x00, 0x00, 21 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 22 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, 23 | 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 24 | 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 25 | 0x00, 0x7F, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x02, 26 | 0x7F, 0xC0, 0x3F, 0xE0, 0xFC, 0xFF, 0xFF, 0xFE, 27 | 0x40, 0x0F, 0x00, 0x10, 0x04, 0x80, 0x00, 0x00, 28 | 0x7F, 0xC0, 0x3F, 0xE0, 0x04, 0x80, 0x00, 0x00, 29 | 0x00, 0x3F, 0xD0, 0x40, 0x04, 0x80, 0x00, 0x00, 30 | 0x00, 0x0F, 0x08, 0x20, 0x04, 0x80, 0x7A, 0x1E, 31 | 0x00, 0x00, 0x07, 0x90, 0x04, 0x80, 0x42, 0x10, 32 | 0x00, 0x00, 0x18, 0x7F, 0xFC, 0xF0, 0x72, 0x1C, 33 | 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x42, 0x10, 34 | 0x00, 0x00, 0x73, 0xFC, 0x00, 0x10, 0x7B, 0xD0, 35 | 0x00, 0x00, 0x30, 0x00, 0x3F, 0xF0, 0x00, 0x00, 36 | 0x00, 0x00, 0x18, 0x0F, 0xC0, 0x00, 0x00, 0x00, 37 | 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00 38 | 39 | }; 40 | 41 | -------------------------------------------------------------------------------- /src/utility/AvrI2c.h: -------------------------------------------------------------------------------- 1 | /* Arduino SSD1306Ascii Library 2 | * Copyright (C) 2015 by William Greiman 3 | * 4 | * This file is part of the Arduino SSD1306Ascii Library 5 | * 6 | * This Library is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This Library is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with the Arduino SSD1306Ascii Library. If not, see 18 | * . 19 | */ 20 | /** 21 | * @file AvrI2c.h 22 | * @brief Small fast I2C class for AVR. 23 | */ 24 | #ifndef AvrI2c_h 25 | #define AvrI2c_h 26 | #include 27 | 28 | /** Bit to or with address for read start and read restart */ 29 | uint8_t const I2C_READ = 1; 30 | 31 | /** Bit to or with address for write start and write restart */ 32 | uint8_t const I2C_WRITE = 0; 33 | //------------------------------------------------------------------------------ 34 | // Status codes in TWSR - names are from Atmel TWSR.h with TWSR_ added 35 | 36 | /** start condition transmitted */ 37 | uint8_t const TWSR_START = 0x08; 38 | 39 | /** repeated start condition transmitted */ 40 | uint8_t const TWSR_REP_START = 0x10; 41 | 42 | /** slave address plus write bit transmitted, ACK received */ 43 | uint8_t const TWSR_MTX_ADR_ACK = 0x18; 44 | 45 | /** data transmitted, ACK received */ 46 | uint8_t const TWSR_MTX_DATA_ACK = 0x28; 47 | 48 | /** slave address plus read bit transmitted, ACK received */ 49 | uint8_t const TWSR_MRX_ADR_ACK = 0x40; 50 | //------------------------------------------------------------------------------ 51 | /** 52 | * \class AvrI2c 53 | * \brief Hardware I2C master class for AVR. 54 | * 55 | * Uses ATmega TWI hardware port 56 | */ 57 | class AvrI2c { 58 | public: 59 | /** 60 | * @brief Initialize prescalar and SLC clock rate. 61 | * @param[in] fastMode Fast 400 kHz mode if true else standard 100 kHz mode. 62 | */ 63 | void begin(bool fastMode = true) { 64 | // Zero prescaler. 65 | TWSR = 0; 66 | // Set bit rate factor. 67 | TWBR = fastMode ? (F_CPU/400000 - 16)/2 : (F_CPU/100000 - 16)/2; 68 | } 69 | /** 70 | * @brief Read a byte and send Ack if more reads follow else 71 | Nak to terminate read. 72 | * 73 | * @param[in] last Set true to terminate the read else false. 74 | * @return The byte read from the I2C bus. 75 | */ 76 | uint8_t read(bool last) { 77 | execCmd((1 << TWINT) | (1 << TWEN) | (last ? 0 : (1 << TWEA))); 78 | return TWDR; 79 | } 80 | /** 81 | * @brief Issue a repeated start condition. 82 | * 83 | * same as start with no stop. Included to document intention. 84 | * 85 | * @param[in] addressRW I2C address with read/write bit. 86 | * @return The value true, 1, for success or false, 0, for failure. 87 | */ 88 | bool repeatedStart(uint8_t addressRW) { 89 | return start(addressRW); 90 | } 91 | /** 92 | * @brief Issue a start condition. 93 | * 94 | * @param[in] addressRW I2C address with read/write bit. 95 | * 96 | * @return The value true for success or false for failure. 97 | */ 98 | bool start(uint8_t addressRW) { 99 | // send START condition 100 | execCmd((1<. 19 | */ 20 | /** 21 | * @file DigitalOutput.h 22 | * @brief Faster version of digitalWrite(). 23 | */ 24 | #ifndef DigitalOutput_h 25 | #define DigitalOutput_h 26 | 27 | #include 28 | #ifdef __AVR__ 29 | #include 30 | #include 31 | /** 32 | * @class DigitalOutput 33 | * @brief Faster version of digitalWrite(). 34 | */ 35 | class DigitalOutput { 36 | public: 37 | /** 38 | * @breif initialize the digital pin. 39 | * 40 | * @param[in] pin The Arduino pin number. 41 | */ 42 | void begin(uint8_t pin) { 43 | uint8_t port = digitalPinToPort(pin); 44 | m_portReg = portOutputRegister(port); 45 | m_bit = digitalPinToBitMask(pin); 46 | m_mask = ~m_bit; 47 | pinMode(pin, OUTPUT); 48 | } 49 | /** 50 | * @brief Set the level of a digital pin. 51 | * 52 | * @param[in] level The value to be set. 53 | */ 54 | inline __attribute__((always_inline)) 55 | void write(bool level) {ATOMIC_BLOCK(ATOMIC_FORCEON) {writeI(level);}} 56 | /** 57 | * @brief Set the level of a digital pin. 58 | * 59 | * @param[in] level The value to be set. 60 | * @note This function must be called with interrupts disabled. 61 | */ 62 | inline __attribute__((always_inline)) 63 | void writeI(bool level) { 64 | *m_portReg = level ? *m_portReg | m_bit : *m_portReg & m_mask; 65 | } 66 | private: 67 | uint8_t m_bit; 68 | uint8_t m_mask; 69 | volatile uint8_t* m_portReg; 70 | }; 71 | #else // _AVR_ 72 | /** 73 | * @class DigitalOutput 74 | * @brief Faster version of digitalWrite(). 75 | */ 76 | class DigitalOutput { 77 | public: 78 | /** 79 | * @brief initialize the digital pin. 80 | * 81 | * @param[in] pin The Arduino pin number. 82 | */ 83 | void begin(uint8_t pin) { 84 | m_pin = pin; 85 | pinMode(m_pin, OUTPUT); 86 | } 87 | /** 88 | * @brief Set the level of a digital pin. 89 | * 90 | * @param[in] level The value to be set. 91 | */ 92 | inline __attribute__((always_inline)) 93 | void write(bool level) { 94 | digitalWrite(m_pin, level); 95 | } 96 | private: 97 | uint8_t m_pin; 98 | }; 99 | #endif // _AVR_ 100 | #endif // DigitalOutput_h -------------------------------------------------------------------------------- /src/utility/oled calcs.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wd5gnr/1802UNO/6745daa897946dbd277d03e31840fffe4441c9d4/src/utility/oled calcs.xlsx --------------------------------------------------------------------------------