Interfacing SSD1306 based 128x64 I2C OLED module without Frame Buffer and 4 input keys with 8-pin ATtiny85 in Assembly Code

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 3

Type: 

Compiler/Assembler: 

Initially, I started the project using ATmega32A but migrated to ATtiny85 to lower its power consumption for being able to run it through 4-20mA current loop found in the industries.

 

The circuit is built on a small 3"x2" Generic PCB. The ATtiny85 in the 8-pin PDIP package has only six I/O lines out of which, one pin is RESET, so, every I/O pin used in this project has been picked very carefully. The connection of the I/O lines can be grouped into three categories:

  • I2C Bus: The I2C Bus consists of 2 pins, (i) SDA line for data transmission and (ii) SCL line clock generation. Pin no. 3 is SDA and Pin no. 6 is SCL. Each line has been pulled up using a 4.7K resistor.
  • Input Keys: Due to the scarcity of I/O pins, instead of reading the Digital State (High or Low) of 4 input keys, they have been connected to a single ADC input pin as Voltage Divider Network. Each individual Key Press will produce a unique voltage level at the ADC pin. By comparing the ADC data with certain predefined levels, we can find out which key has been pressed. Simultaneous key-press cannot be detected here.
  • Analog I/O (Future provision): Pin no. 5 and 7 are kept empty in this circuit to work with analog data for future use. Pin no. 5 can be utilized to generate PWM driven by the Timer/Counter 0 and Pin no. 7 can be utilized to read the analog voltage (other than the Input Keys) using ADC channel 1

 

To make a frame buffer for the 128 pixels wide by 64 pixels high display, you need at least 8192 bits or 1024 Bytes of RAM but the ATtiny85 has only 512 Bytes of SRAM.

The SSD1306 has a 128x64 bits of SRAM integrated into it and is called Graphics Display Data RAM (GDDRAM). So, the ATtiny85 will write directly onto the GDDRAM of the SSD1306 chip to be displayed on the small OLED panel. In I2C/TWI mode, the GDDRAM of SSD1306 cannot be read (the I2C Read sub-routine has not been written for now to save some program space), so, you can only work with predefined graphic bitmaps and plotting graphic functions which require reading the existing data on the GDDRAM and modify it is not possible. One additional DIP 8 pin IC base has been connected to add external I2C EEPROM or EERAM (e.g. Microchip 47L04/47C04/47L16/47C16) to the circuit if future applications demand extra memory.

 

As graphical functions cannot be implemented into the SSD1306, the vertical positioning of texts is limited to 8 pages and the height of the fonts is multiples of 8. To display characters and texts, I have used the Horizontal addressing mode. First, a boundary or Character Box (Column Start Address, Column End Address, Page Start Address, Page End Address) is defined according to the position, height and width of the character. In Horizontal Addressing Mode, the Column address pointer automatically increases after sending one bitmap byte and it will move to the next Page location when it reaches Column End Address. So, if you want to display an 8 bits wide by 16 bits (2 Bytes) high character, just throw 16 Bytes of the corresponding bitmap data stored in the program memory, continuously to the defined boundary. This way, one single character is being written. Bitmap images can also be displayed using this method.

 

Three types of Monospaced Fonts have been implemented in this project.

  1. 8w x 16h Roboto Mono (All ASCII characters)
  2. 16w x 24h Deja Vu Sans Mono (Only Numbers and Symbols i.e. ASCII 32 to 63 to save some Program Space)
  3. 6w x 8h Terminal (All ASCII characters)

The bitmap data of the Fonts have been obtained from the MikroElectronika GLCD Font Creator. Then, the data have been exported onto CSV files. Using Excel, the data have been organized as per the pointer movement sequence of Horizontal Addressing. After that, the files are opened again on Text editor and copied to the program along with commas.

Bitmap data of fonts occupied most of the program space, they are 3664 Bytes. The code is only 842 Bytes.

The Font in which characters are to be displayed is selected using a Font Style identifier.

; 0.96 inch SSD1306 Driver based 128x64 Monochrome OLED Display
; Author: Santanu Das
; Initial Date of Creation with ATmega32A: 6th November,2020
; Date of Creation with ATtiny85: 18th February,2021
; Interface type: Software I2C
; MCU Clock: @1MHz



; Pin configuration
; Old ATmega32A Board
;;.EQU		SCLP		= 2		; SCL Pin PORTB.2
;;.EQU		SDAP		= 0		; SDA Pin PORTB.0

; New ATtiny85 Board
.EQU		SCLP		= 1		; SCL Pin PORTB.1
.EQU		SDAP		= 3		; SDA Pin PORTB.3

; 			GPR's usage
;===============================================================
.DEF		BCD0		= R2		; Packed BCD numbers
.DEF		BCD1		= R3		; to be stored
.DEF		BCD2		= R4		; after conversion


.DEF		Temp		= R16		; Defining Temporary Data Register
.DEF		Counter		= R17		; Defining Operator

.DEF		CharBuff	= R18		; Defining Character Buffer

; 16-bit operator
.DEF		Opr16L		= R24		; Defining 16-bit Operator
.DEF		Opr16M		= R25

; 			SRAM usage
;===============================================================
.EQU		ColStart	= 0x60		; Column Start Address
.EQU		ColEnd		= 0x61		; Column End Address

.EQU		PageStart	= 0x62		; Page Start Address
.EQU		PageEnd		= 0x63		; Page End Address

.EQU		FontStyle	= 0x64		; Font Style Identifier

.EQU		Filler		= 0x65		; Screen Filling Byte

; Constants
.EQU		RegPtrL		= 2		; Address of R2 register
.EQU		RegPtrH		= 4		; Address of R4 register (for BCD conversion)

; 			Font Specifications
;===============================================================

; Font Style 1
; Roboto Mono (Trimmed) 8x16
.EQU		FontWidth1	= 8		; in bits
.EQU		FontHeight1	= 2		; in bytes

; Font Style 2
; DejaVu Sans Mono Bold (Trimmed) 16x24
; ***Mainly numeric characters, ASCII 32 to 63 only
.EQU		FontWidth2	= 16		; in bits
.EQU		FontHeight2	= 3		; in bytes

; Default Font Style
; Terminal 6x8
.EQU		FontWidthD	= 6		; in bits
.EQU		FontHeightD	= 1		; in bytes

.EQU		TableOffset	= 32	; 32 for whole ASCII Table

.EQU		CR	= 0x0D	; Carriage Return



.INCLUDE	"TN85DEF.INC"		; ATtiny85
.ORG		0x0000
			RJMP	Initiate		; Power On Reset

.ORG		0x000F

Initiate:
		; Stack pointer Initialization
			LDI		Temp, HIGH(RAMEND)
			OUT		SPH, Temp
			LDI		Temp, LOW(RAMEND)
			OUT		SPL, Temp

			LDI		Temp, 0xEF	;; 0xFF
			OUT		DDRB, Temp

		; ADC Initialization
			LDI		Temp, 0x22		; 0010 0010
			OUT		ADMUX, Temp		; ADC Reference = Vcc ; ADLAR = 1 (For 8-bit result); ADC Channel = 2, Single Ended Input

			LDI 	Temp, 0x83		; ADC Enabled ; Auto-trigger Disabled ; Interrupt Disabled ; Clock/8 = 125kHz
			OUT 	ADCSRA, Temp

			LDI		Temp, 0x00
			OUT		ADCSRB, Temp		; Free Running Mode

;================================================
			RCALL	DL_500ms
			
			RCALL	InitOLED

;================================================
; Run Mode
			CLR		Temp
			STS		Filler, Temp
			RCALL	FillScreen

			LDI		Temp, 0
			STS		ColStart, Temp
			LDI		Temp, 0
			STS		PageStart, Temp

			LDI		Temp, 1
			STS		FontStyle, Temp
			
			LDI		ZL, LOW(Intro<<1)
			LDI		ZH, HIGH(Intro<<1) 
			RCALL	PutString

			LDI		Temp, 2
			STS		FontStyle, Temp

ReadAngKey:
			SBI		ADCSRA, ADSC

	WaitADC:
			SBIC	ADCSRA, ADSC
			RJMP	WaitADC

			IN		Opr16L, ADCH		; 8-bit ADC value
			CLR		Opr16M

			RCALL	bin2BCD16

			LDI		Temp, 0
			STS		ColStart, Temp
			LDI		Temp, 3
			STS		PageStart, Temp

			RCALL	PutNum4D

			RCALL	DL_15ms
			RCALL	DL_15ms
			RCALL	DL_15ms

			RJMP	ReadAngKey



;================================================



;================================================
; Puts 4 digit number on OLED
PutNum4D:
			MOV		CharBuff, BCD1
			SWAP	CharBuff
			ANDI	CharBuff, 0x0F
			ORI		CharBuff, 0x30
			RCALL	PutChar

			MOV		CharBuff, BCD1
			ANDI	CharBuff, 0x0F
			ORI		CharBuff, 0x30
			RCALL	PutChar

			MOV		CharBuff, BCD0
			SWAP	CharBuff
			ANDI	CharBuff, 0x0F
			ORI		CharBuff, 0x30
			RCALL	PutChar

			MOV		CharBuff, BCD0
			ANDI	CharBuff, 0x0F
			ORI		CharBuff, 0x30
			RCALL	PutChar
			
			RET

			
			
;================================================
; Puts String on OLED and stops when CR found
PutString:
			LPM		CharBuff, Z+
			CPI		CharBuff, CR
			BREQ	PutStringExt

			PUSH	ZL
			PUSH	ZH
			RCALL	PutChar
			POP		ZH
			POP		ZL

			RJMP	PutString
	PutStringExt:
			RET


;================================================
; Puts a character on OLED and increases the character position pointer
PutChar:
			SUBI	CharBuff, TableOffset		; Table matching (Lookup table = ASCII table - Table Offset Value)

		; Loading the initial address of lookup table
			LDS		Temp, FontStyle		; Loading Font Style
			CPI		Temp, 1		; If Font Style == 1
			BREQ	LoadFontTable1

			CPI		Temp, 2		; If Font Style == 2
			BREQ	LoadFontTable2

	; Else Load Lookup table of default font
	LoadFontTableDefault:
			LDI		ZL, LOW(Terminal6x8<<1)
			LDI		ZH, HIGH(Terminal6x8<<1)
			RJMP	FetchChar
			
	LoadFontTable1:
			LDI		ZL, LOW(RobotoMono8x16<<1)
			LDI		ZH, HIGH(RobotoMono8x16<<1)
			RJMP	FetchChar

	LoadFontTable2:
			LDI		ZL, LOW(DejaVuSansMonoBold16x24<<1)
			LDI		ZH, HIGH(DejaVuSansMonoBold16x24<<1)	

	; Fetching the target character from lookup table
	FetchChar:
			TST		CharBuff
			BREQ	CharFound		; If Character found, then do accordingly

		; Else move onto next character bitmap data
			LDS		Temp, FontStyle		; Loading Font Style
			CPI		Temp, 1		; If Font Style == 1
			BREQ	FetchCharFont1

			CPI		Temp, 2		; If Font Style == 2
			BREQ	FetchCharFont2

		FetchCharFontD:
			ADIW	ZL, (FontWidthD*FontHeightD)
			RJMP	CheckNextChar

		FetchCharFont1:
			ADIW	ZL, (FontWidth1*FontHeight1)
			RJMP	CheckNextChar

		FetchCharFont2:
			ADIW	ZL, (FontWidth2*FontHeight2)

		CheckNextChar:
			DEC		CharBuff		; Decrease count
			RJMP	FetchChar		; Continue the fetch cycle

	CharFound:
			RCALL	CharBox		; Define character box diemension

			LDS		Temp, FontStyle		; Loading Font Style
			CPI		Temp, 1		; If Font Style == 1
			BREQ	ScanCountFont1

			CPI		Temp, 2		; If Font Style == 2
			BREQ	ScanCountFont2

		; Raster Scan counter for Default Font Style
			LDI		CharBuff, (FontWidthD*FontHeightD)		; Loading raster scanning counter for Default Font Style
			RJMP	InitCharRendering


		; Raster Scan counter for Font Style 1
		ScanCountFont1:
			LDI		CharBuff, (FontWidth1*FontHeight1)		; Loading raster scanning counter for Font Style 1
			RJMP	InitCharRendering

		; Raster Scan counter for Font Style 2
		ScanCountFont2:
			LDI		CharBuff, (FontWidth2*FontHeight2)		; Loading raster scanning counter for Font Style 2

	InitCharRendering:
			RCALL	SendData

		RenderChar:
			LPM		Temp, Z+
			RCALL	MasterTransferTWI
			DEC		CharBuff
			BRNE	RenderChar

			RCALL	StopTWI

	; Increasing Character position pointer
			LDS		Temp, FontStyle		; Loading Font Style
			CPI		Temp, 1		; If Font Style == 1
			BREQ	IncCharPointerFont1

			CPI		Temp, 2		; If Font Style == 2
			BREQ	IncCharPointerFont2

		; Else Default Font
		IncCharPointerFontD:
			LDS		Temp, ColStart
			SUBI	Temp, (0-FontWidthD)
			STS		ColStart, Temp
			RJMP	PutCharExt

		IncCharPointerFont1:
			LDS		Temp, ColStart
			SUBI	Temp, (0-FontWidth1)
			STS		ColStart, Temp
			RJMP	PutCharExt
			
		IncCharPointerFont2:
			LDS		Temp, ColStart
			SUBI	Temp, (0-FontWidth2)
			STS		ColStart, Temp

	PutCharExt:
			RET



;================================================
; Character Box (Font Width x Font Height)
; Single Character to be drawn inside this box
CharBox:
	; Checking selected font style
			LDS		Temp, FontStyle		; Loading Font Style
			CPI		Temp, 1		; If Font Style == 1
			BREQ	CheckColSpaceFont1

			CPI		Temp, 2		; If Font Style == 2
			BREQ	CheckColSpaceFont2

	; Check Column Space for Default Font Style
	CheckColSpaceFontD:
		; Checking for available space on Column
			LDS		Temp, ColStart
			CPI		Temp, (128-FontWidthD+1)		; Number of Columns - Font Width + 1 for Lower checking
			BRLO	CalcFontD

			CLR		Temp
			STS		ColStart, Temp

			LDS		Temp, PageStart
			SUBI	Temp, (0-FontHeightD)
			STS		PageStart, Temp

		CalcFontD:
			LDS		Temp, ColStart		; Loading the value of Column Start address
			SUBI	Temp, (1-FontWidthD)		; Calculating the value of Column End address
			STS		ColEnd, Temp		; Storing the value of Column End address

			LDS		Temp, PageStart		; Loading the value of Page Start address
			SUBI	Temp, (1-FontHeightD)		; Calculating the value of Page End address
			STS		PageEnd, Temp		; Storing the value of Page End address

			RJMP	DefineBox

	; Check Column Space for Font Style 1
	CheckColSpaceFont1:
			; Checking for available space on Column
			LDS		Temp, ColStart
			CPI		Temp, (128-FontWidth1+1)		; Number of Columns - Font Width + 1 for Lower checking
			BRLO	CalcFont1

			CLR		Temp
			STS		ColStart, Temp

			LDS		Temp, PageStart
			SUBI	Temp, (0-FontHeight1)
			STS		PageStart, Temp

		CalcFont1:
			LDS		Temp, ColStart		; Loading the value of Column Start address
			SUBI	Temp, (1-FontWidth1)		; Calculating the value of Column End address
			STS		ColEnd, Temp		; Storing the value of Column End address

			LDS		Temp, PageStart		; Loading the value of Page Start address
			SUBI	Temp, (1-FontHeight1)		; Calculating the value of Page End address
			STS		PageEnd, Temp		; Storing the value of Page End address

			RJMP	DefineBox

	; Check Column Space for Font Style 2
	CheckColSpaceFont2:
			; Checking for available space on Column
			LDS		Temp, ColStart
			CPI		Temp, (128-FontWidth2+1)		; Number of Columns - Font Width + 1 for Lower checking
			BRLO	CalcFont2

			CLR		Temp
			STS		ColStart, Temp

			LDS		Temp, PageStart
			SUBI	Temp, (0-FontHeight2)
			STS		PageStart, Temp

		CalcFont2:
			LDS		Temp, ColStart		; Loading the value of Column Start address
			SUBI	Temp, (1-FontWidth2)		; Calculating the value of Column End address
			STS		ColEnd, Temp		; Storing the value of Column End address

			LDS		Temp, PageStart		; Loading the value of Page Start address
			SUBI	Temp, (1-FontHeight2)		; Calculating the value of Page End address
			STS		PageEnd, Temp		; Storing the value of Page End address

	DefineBox:
			RCALL	SetColumn
			RCALL	SetPage

			RET



;================================================
; Filling whole OLED screen
FillScreen:
			LDI		Temp, 0
			STS		ColStart, Temp
			LDI		Temp, 0
			STS		PageStart, Temp

			LDI		Temp, 127
			STS		ColEnd, Temp
			LDI		Temp, 7
			STS		PageEnd, Temp

			RCALL	SetColumn
			RCALL	SetPage

			LDI		Opr16L, LOW(1024)
			LDI		Opr16M, HIGH(1024)
			
			RCALL	SendData			

	FillScreenLoop:
			LDS		Temp, Filler

			RCALL	MasterTransferTWI

			SBIW	Opr16L, 1
			BRNE	FillScreenLoop

			RCALL	StopTWI

			RET



;================================================
; Set Column address
SetColumn:
			RCALL	SendCommand

			LDI		Temp, 0x21		; Set Column address
			RCALL	MasterTransferTWI

			LDS		Temp, ColStart		; Start
			RCALL	MasterTransferTWI

			LDS		Temp, ColEnd		; End
			RCALL	MasterTransferTWI

			RCALL	StopTWI

			RET



;================================================
; Set Page address
SetPage:
			RCALL	SendCommand

			LDI		Temp, 0x22		; Set Page address
			RCALL	MasterTransferTWI

			LDS		Temp, PageStart		; Start
			RCALL	MasterTransferTWI

			LDS		Temp, PageEnd		; End
			RCALL	MasterTransferTWI

			RCALL	StopTWI

			RET



;================================================
InitOLED:	; OLED Initialization
			RCALL	SendCommand

			LDI		Temp, 0xAE		; Set display off
			RCALL	MasterTransferTWI

			LDI		Temp, 0xD5		; Set display clock divide ratio/oscillator frequency
			RCALL	MasterTransferTWI
			LDI		Temp, 0x80
			RCALL	MasterTransferTWI

			LDI		Temp, 0xA8		; Set multiplex ratio
			RCALL	MasterTransferTWI
			LDI		Temp, 0x3F
			RCALL	MasterTransferTWI

			LDI		Temp, 0xD3		; Set display offset
			RCALL	MasterTransferTWI
			LDI		Temp, 0x00
			RCALL	MasterTransferTWI

			LDI		Temp, 0x40		; Set display start line
			RCALL	MasterTransferTWI

			LDI		Temp, 0x8D		; Set charge pump
			RCALL	MasterTransferTWI
			LDI		Temp, 0x14		; Vcc generated by internal DC-DC circuit
			RCALL	MasterTransferTWI

			LDI		Temp, 0xA1		; Set segment re-map
			RCALL	MasterTransferTWI

			LDI		Temp, 0xC8		; Set COM output scan direction
			RCALL	MasterTransferTWI

			LDI		Temp, 0xDA		; Set COM pins hardware configuration
			RCALL	MasterTransferTWI
			LDI		Temp, 0x12
			RCALL	MasterTransferTWI

			LDI		Temp, 0x81		; Set contrast control
			RCALL	MasterTransferTWI
			LDI		Temp, 0x01 ; 0x7F
			RCALL	MasterTransferTWI

			LDI		Temp, 0xD9		; Set pre-changed period
			RCALL	MasterTransferTWI
			LDI		Temp, 0xF1
			RCALL	MasterTransferTWI

			LDI		Temp, 0xDB		; Set VCOMH deselected level
			RCALL	MasterTransferTWI
			LDI		Temp, 0x00		; *** 0x00 gives a wide range of contrast levels than 0x40
			RCALL	MasterTransferTWI

			LDI		Temp, 0xA4		; Set entire display on/off
			RCALL	MasterTransferTWI

			LDI		Temp, 0xA6		; Normal display
			RCALL	MasterTransferTWI

			LDI		Temp, 0x20		; Set memory address mode
			RCALL	MasterTransferTWI
			LDI		Temp, 0x00		; Horizontal
			RCALL	MasterTransferTWI

			LDI		Temp, 0xAF		; Set display on
			RCALL	MasterTransferTWI

			RCALL	StopTWI

			RET



;================================================
SendData:	; Send Data Stream to OLED
			RCALL	StartTWI		; Start Condition

			LDI		Temp, 0x78		; Write Operation
			RCALL	MasterTransferTWI

			LDI		Temp, 0x40		; Data stream
			RCALL	MasterTransferTWI

			RET



;================================================
SendCommand:	; Send Command Stream to OLED
			RCALL	StartTWI		; Start Condition

			LDI		Temp, 0x78		; Write Operation
			RCALL	MasterTransferTWI

			LDI		Temp, 0x00		; Command stream
			RCALL	MasterTransferTWI

			RET



;===============================================================
;		I2C Commands

; Start with address to Software TWI
StartTWI:
			SBI		PORTB, SDAP		; SDA Pin High
			SBI		PORTB, SCLP		; SCL Pin High

	;;		NOP
	;;		NOP		; Working without the NOPs

			CBI		PORTB, SDAP		; SDA Pin Low

	;;		NOP
	;;		NOP

			CBI		PORTB, SCLP		; SCL Pin Low

			RET



; USI TWI Master Transfer (Write Only)
MasterTransferTWI:
			LDI		Counter, 8		; Bit count
			CLC		; Clear Carry

	ShiftOut:
			ROL		Temp		; Shifting the data out to Carry bit
			BRCC	SDALow		; If Carry bit is 0 then jump to make SDA pin Low
			SBI		PORTB, SDAP		; Else make SDA pin High
			RJMP	SCLHigh		; Jump to make SCL pin High

		SDALow:
			CBI		PORTB, SDAP		; Make SDA pin Low

		SCLHigh:
		; Data transition phase
			SBI		PORTB, SCLP		; Make SCL pin High

	;;		NOP
	;;		NOP

			CBI		PORTB, SCLP		; Make SCL pin Low

			DEC		Counter		; Decrease bit counter
			BRNE	ShiftOut		; If not finished the repeat the shifting process

			SBI		PORTB, SDAP		; SDA Pin High
			SBI		PORTB, SCLP		; SCL Pin High

	;;		NOP
	;;		NOP

			CBI		PORTB, SCLP		; SCL Pin Low

			RET



; Asserts Stop Condition to Software TWI
StopTWI:
			CBI		PORTB, SDAP		; SDA Pin Low
			SBI		PORTB, SCLP		; SCL Pin High

	;;		NOP
	;;		NOP
			
			SBI		PORTB, SDAP		; SDA Pin High

			RET



;===============================================================
;		Math routines

; 16-bit Binary to BCD
bin2BCD16:
			LDI		Counter, 16		; Init Loop counter

			CLR		BCD0		; Clear Results
			CLR		BCD1
			CLR		BCD2

			CLR		XH		; Clear Pointer

	bBCDx_1:
			LSL		Opr16L		; Shift input value
			ROL		Opr16M		; through all bytes

			ROL		BCD0
			ROL		BCD1
			ROL		BCD2

			DEC		Counter		; Decrement Loop Counter

			BRNE	bBCDx_2		; If Counter not Zero

			RET

	bBCDx_2:
			LDI		XL, RegPtrH+1		; Y points to Result MSB + 1

	bBCDx_3:
			LD		Temp, -X		; Get X with pre-decrement
			SUBI	Temp, -0x03		; Add 0x03
			SBRC	Temp, 3		; If Bit 3 not cleared
			ST		X, Temp		; Store back

			LD		Temp, X		; Get X
			SUBI	Temp, -0x30		; Add 0x30
			SBRC	Temp, 7		; If Bit 7 not cleared
			ST		X, Temp		; Store back

			CPI		XL, RegPtrL		; Done all three?
			BRNE	bBCDx_3		; Loop again if not

			RJMP	bBCDx_1



;======================================================================
; 50uS delay subroutine					52 Machine cycles = 52uS
; 1 MC @1MHz = 1uS						Total MC = (Count x 3) + 10 + 3

DL_50us:		PUSH	Counter			; MC = 2
				LDI		Counter, 13			; MC = 1

	DL0:		DEC		Counter			; MC = 1
				BRNE	DL0			; MC = 2 / 1
				POP		Counter			; MC = 2
				RET			; MC = 4

; 100uS delay subroutine (within ISR)		102 Machine cycles = 102uS
; 1 MC @1MHz = 1uS						Total MC = (Count x 3) + 12 + 3

DL_100us:		PUSH	Counter 		; MC = 2
				LDI		Counter, 29 		; MC = 1

				RJMP	DL0 		; MC = 2

; Total MC = (Count x 105) + 10 + 3 = 2008 = 2.008mS
DL_2ms:			PUSH	Counter			; MC = 2
				LDI		Counter, 19			; MC = 1
	DL1:		RCALL	DL_100us 		; MC = 402
				DEC		Counter			; MC = 1
				BRNE	DL1			; MC = 2 / 1
				POP		Counter			; MC = 2
				RET 		; MC = 4

; Total MC = (Count x 105) + 12 + 3 = 15030 = 15.03mS
DL_15ms:		PUSH	Counter			; MC = 2
				LDI		Counter, 143 		; MC = 1
	
				RJMP	DL1 		; MC = 2

; Total MC = (Count x 15030) + 10 + 3 = 511033 = 511.033mS
DL_500ms:		PUSH	Counter			; MC = 2
				LDI		Counter, 34			; MC = 1
	DL2:		RCALL	DL_15ms			; MC = 60360
				DEC		Counter			; MC = 1
				BRNE	DL2			; MC = 2 / 1
				POP		Counter			; MC = 2
				RET 		; MC = 4



;================================================
; Texts
Intro:			.DB		"Press a key...",CR


;================================================
; Font Lookup table

; Font 1
RobotoMono8x16:
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char  
.DB		0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x00, 0x00, 0x00		; Code for char !
.DB		0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char "
.DB		0x00, 0x20, 0xE0, 0x38, 0x20, 0xF0, 0x28, 0x00, 0x01, 0x09, 0x07, 0x01, 0x0E, 0x01, 0x01, 0x00		; Code for char #
.DB		0x00, 0x30, 0x78, 0xC8, 0x8E, 0x98, 0x30, 0x00, 0x00, 0x06, 0x0C, 0x08, 0x18, 0x0D, 0x07, 0x00		; Code for char $
.DB		0x38, 0x48, 0x48, 0xB0, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x0E, 0x09, 0x09, 0x06		; Code for char %
.DB		0x00, 0x10, 0xF8, 0xC8, 0x68, 0x30, 0x00, 0x00, 0x00, 0x07, 0x08, 0x08, 0x0B, 0x06, 0x0B, 0x08		; Code for char &
.DB		0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char '
.DB		0x00, 0x00, 0xC0, 0x70, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1C, 0x20, 0x40, 0x00, 0x00		; Code for char (
.DB		0x00, 0x00, 0x04, 0x08, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x30, 0x0F, 0x00, 0x00, 0x00		; Code for char )
.DB		0x00, 0x30, 0xA0, 0xE0, 0x78, 0xA0, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00		; Code for char *
.DB		0x00, 0x80, 0x80, 0xF0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00		; Code for char +
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x38, 0x00, 0x00, 0x00, 0x00		; Code for char 
.DB		0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char -
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x00		; Code for char .
.DB		0x00, 0x00, 0x00, 0x00, 0xE0, 0x18, 0x08, 0x00, 0x00, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x00, 0x00		; Code for char /
.DB		0x00, 0xF0, 0x08, 0x88, 0xC8, 0x58, 0xF0, 0x00, 0x00, 0x07, 0x0D, 0x08, 0x08, 0x0C, 0x07, 0x00		; Code for char 0
.DB		0x00, 0x10, 0x10, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00		; Code for char 1
.DB		0x00, 0x18, 0x08, 0x08, 0x88, 0x78, 0x00, 0x00, 0x00, 0x0C, 0x0E, 0x0B, 0x08, 0x08, 0x08, 0x00		; Code for char 2
.DB		0x00, 0x18, 0x88, 0x88, 0xC8, 0x78, 0x00, 0x00, 0x00, 0x04, 0x08, 0x08, 0x08, 0x0F, 0x00, 0x00		; Code for char 3
.DB		0x00, 0x00, 0xC0, 0x30, 0x18, 0xF8, 0x00, 0x00, 0x02, 0x03, 0x02, 0x02, 0x02, 0x0F, 0x02, 0x00		; Code for char 4
.DB		0x00, 0x00, 0xF8, 0x48, 0x48, 0xC8, 0x88, 0x00, 0x00, 0x04, 0x0C, 0x08, 0x08, 0x0C, 0x07, 0x00		; Code for char 5
.DB		0x00, 0xE0, 0xD0, 0x48, 0x48, 0xC0, 0x00, 0x00, 0x00, 0x07, 0x0C, 0x08, 0x08, 0x0C, 0x03, 0x00		; Code for char 6
.DB		0x00, 0x08, 0x08, 0x08, 0xC8, 0x78, 0x08, 0x00, 0x00, 0x00, 0x08, 0x06, 0x01, 0x00, 0x00, 0x00		; Code for char 7
.DB		0x00, 0x30, 0xF8, 0x88, 0x88, 0xD8, 0x30, 0x00, 0x00, 0x07, 0x0D, 0x08, 0x08, 0x08, 0x07, 0x00		; Code for char 8
.DB		0x00, 0xF0, 0x88, 0x08, 0x08, 0x98, 0xE0, 0x00, 0x00, 0x00, 0x09, 0x09, 0x0D, 0x06, 0x01, 0x00		; Code for char 9
.DB		0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x00		; Code for char :
.DB		0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x38, 0x00, 0x00, 0x00		; Code for char ;
.DB		0x00, 0x80, 0x80, 0x40, 0x40, 0x60, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x00		; Code for char <
.DB		0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00		; Code for char =
.DB		0x00, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x06, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00		; Code for char >
.DB		0x00, 0x10, 0x08, 0x08, 0x88, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x00, 0x00, 0x00		; Code for char ?
.DB		0xC0, 0x30, 0xC8, 0x28, 0xA8, 0x68, 0xF0, 0x00, 0x01, 0x06, 0x09, 0x0A, 0x09, 0x0A, 0x03, 0x00		; Code for char @
.DB		0x00, 0x00, 0xC0, 0x38, 0x38, 0xC0, 0x00, 0x00, 0x00, 0x0E, 0x03, 0x02, 0x02, 0x03, 0x0E, 0x00		; Code for char A
.DB		0x00, 0xF8, 0x88, 0x88, 0x88, 0xC8, 0x30, 0x00, 0x00, 0x0F, 0x08, 0x08, 0x08, 0x0C, 0x07, 0x00		; Code for char B
.DB		0x00, 0xF0, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, 0x07, 0x0C, 0x08, 0x08, 0x0C, 0x06, 0x00		; Code for char C
.DB		0x00, 0xF8, 0x08, 0x08, 0x08, 0x18, 0xF0, 0x00, 0x00, 0x0F, 0x08, 0x08, 0x08, 0x04, 0x03, 0x00		; Code for char D
.DB		0x00, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x08, 0x00, 0x00, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00		; Code for char E
.DB		0x00, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x08, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char F
.DB		0x00, 0xF0, 0x08, 0x08, 0x88, 0x88, 0x90, 0x00, 0x00, 0x07, 0x0C, 0x08, 0x08, 0x08, 0x07, 0x00		; Code for char G
.DB		0x00, 0xF8, 0x80, 0x80, 0x80, 0x80, 0xF8, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00		; Code for char H
.DB		0x00, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x08, 0x00		; Code for char I
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x06, 0x08, 0x08, 0x08, 0x0F, 0x03, 0x00		; Code for char J
.DB		0x00, 0xF8, 0x80, 0xC0, 0xA0, 0x18, 0x08, 0x00, 0x00, 0x0F, 0x01, 0x00, 0x03, 0x06, 0x0C, 0x08		; Code for char K
.DB		0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00		; Code for char L
.DB		0x00, 0xF8, 0x38, 0xC0, 0xC0, 0x38, 0xF8, 0x00, 0x00, 0x0F, 0x00, 0x01, 0x01, 0x00, 0x0F, 0x00		; Code for char M
.DB		0x00, 0xF8, 0x30, 0xE0, 0x80, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0x0E, 0x0F, 0x00		; Code for char N
.DB		0x00, 0xF0, 0x08, 0x08, 0x08, 0x18, 0xF0, 0x00, 0x00, 0x07, 0x0C, 0x08, 0x08, 0x0C, 0x07, 0x00		; Code for char O
.DB		0x00, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char P
.DB		0x00, 0xF0, 0x08, 0x08, 0x08, 0x18, 0xF0, 0x00, 0x00, 0x07, 0x0C, 0x08, 0x08, 0x1C, 0x37, 0x00		; Code for char Q
.DB		0x00, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0x07, 0x0C, 0x00		; Code for char R
.DB		0x00, 0x30, 0x48, 0x88, 0x88, 0x88, 0x10, 0x00, 0x00, 0x06, 0x08, 0x08, 0x08, 0x09, 0x07, 0x00		; Code for char S
.DB		0x08, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00		; Code for char T
.DB		0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x0C, 0x08, 0x08, 0x0C, 0x07, 0x00		; Code for char U
.DB		0x08, 0x38, 0xE0, 0x00, 0x00, 0xE0, 0x18, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x0F, 0x00, 0x00, 0x00		; Code for char V
.DB		0x08, 0xF8, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0x08, 0x00, 0x07, 0x0F, 0x00, 0x00, 0x0F, 0x07, 0x00		; Code for char W
.DB		0x00, 0x08, 0x30, 0xC0, 0xE0, 0x30, 0x08, 0x00, 0x00, 0x0C, 0x06, 0x01, 0x01, 0x06, 0x0C, 0x00		; Code for char X
.DB		0x08, 0x18, 0x70, 0x80, 0xC0, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00		; Code for char Y
.DB		0x00, 0x08, 0x08, 0x88, 0x68, 0x38, 0x08, 0x00, 0x00, 0x0C, 0x0B, 0x09, 0x08, 0x08, 0x08, 0x00		; Code for char Z
.DB		0x00, 0x00, 0x00, 0xFE, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x20, 0x00, 0x00, 0x00		; Code for char [
.DB		0x00, 0x08, 0x18, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1C, 0x00, 0x00		; Code for char BackSlash
.DB		0x00, 0x00, 0x00, 0x02, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3F, 0x00, 0x00, 0x00		; Code for char ]
.DB		0x00, 0x80, 0xE0, 0x18, 0x38, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char ^
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00		; Code for char _
.DB		0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char `
.DB		0x00, 0x40, 0x20, 0x20, 0x20, 0xE0, 0x80, 0x00, 0x00, 0x06, 0x09, 0x09, 0x09, 0x0F, 0x0F, 0x00		; Code for char a
.DB		0x00, 0xFC, 0x40, 0x20, 0x20, 0x60, 0xC0, 0x00, 0x00, 0x0F, 0x04, 0x08, 0x08, 0x0C, 0x07, 0x00		; Code for char b
.DB		0x00, 0xC0, 0x60, 0x20, 0x20, 0x60, 0x40, 0x00, 0x00, 0x07, 0x0C, 0x08, 0x08, 0x0C, 0x04, 0x00		; Code for char c
.DB		0x00, 0xC0, 0x60, 0x20, 0x20, 0x40, 0xFC, 0x00, 0x00, 0x07, 0x0C, 0x08, 0x08, 0x04, 0x0F, 0x00		; Code for char d
.DB		0x00, 0xC0, 0x60, 0x20, 0x20, 0x60, 0xC0, 0x00, 0x00, 0x07, 0x0D, 0x09, 0x09, 0x09, 0x05, 0x00		; Code for char e
.DB		0x00, 0x20, 0x20, 0xF8, 0x24, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00		; Code for char f
.DB		0x00, 0xC0, 0x60, 0x20, 0x20, 0x40, 0xE0, 0x00, 0x00, 0x27, 0x2C, 0x48, 0x48, 0x34, 0x1F, 0x00		; Code for char g
.DB		0x00, 0xFC, 0x40, 0x20, 0x20, 0x60, 0xC0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00		; Code for char h
.DB		0x00, 0x20, 0x20, 0x28, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x00		; Code for char i
.DB		0x00, 0x00, 0x20, 0x20, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x3F, 0x00, 0x00, 0x00		; Code for char j
.DB		0x00, 0xFC, 0x00, 0x80, 0x40, 0x20, 0x20, 0x00, 0x00, 0x0F, 0x01, 0x01, 0x02, 0x0C, 0x08, 0x00		; Code for char k
.DB		0x00, 0x04, 0x04, 0x04, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x00		; Code for char l
.DB		0x00, 0xE0, 0x20, 0xE0, 0x40, 0x20, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00		; Code for char m
.DB		0x00, 0xE0, 0x40, 0x20, 0x20, 0x60, 0xC0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00		; Code for char n
.DB		0x00, 0xC0, 0x60, 0x20, 0x20, 0x60, 0xC0, 0x00, 0x00, 0x07, 0x08, 0x08, 0x08, 0x0C, 0x07, 0x00		; Code for char o
.DB		0x00, 0xE0, 0x40, 0x20, 0x20, 0x60, 0xC0, 0x00, 0x00, 0x7F, 0x08, 0x08, 0x08, 0x0C, 0x07, 0x00		; Code for char p
.DB		0x00, 0xC0, 0x60, 0x20, 0x20, 0x40, 0xE0, 0x00, 0x00, 0x07, 0x0C, 0x08, 0x08, 0x04, 0x7F, 0x00		; Code for char q
.DB		0x00, 0x00, 0xE0, 0x40, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char r
.DB		0x00, 0xC0, 0xE0, 0x20, 0x20, 0x60, 0x40, 0x00, 0x00, 0x04, 0x09, 0x09, 0x09, 0x0B, 0x06, 0x00		; Code for char s
.DB		0x00, 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x08, 0x08, 0x08, 0x00		; Code for char t
.DB		0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x0C, 0x08, 0x08, 0x04, 0x0F, 0x00		; Code for char u
.DB		0x00, 0x60, 0x80, 0x00, 0x00, 0xC0, 0x60, 0x00, 0x00, 0x00, 0x03, 0x0C, 0x0E, 0x01, 0x00, 0x00		; Code for char v
.DB		0x20, 0xC0, 0x00, 0xE0, 0xC0, 0x00, 0xE0, 0x20, 0x00, 0x07, 0x0E, 0x01, 0x03, 0x0C, 0x03, 0x00		; Code for char w
.DB		0x00, 0x20, 0x40, 0x80, 0x80, 0x40, 0x20, 0x00, 0x00, 0x08, 0x04, 0x03, 0x03, 0x0C, 0x08, 0x00		; Code for char x
.DB		0x20, 0x60, 0x80, 0x00, 0x00, 0xC0, 0x60, 0x00, 0x00, 0x40, 0x63, 0x3E, 0x0E, 0x01, 0x00, 0x00		; Code for char y
.DB		0x00, 0x20, 0x20, 0x20, 0xA0, 0x60, 0x20, 0x00, 0x00, 0x08, 0x0E, 0x0B, 0x09, 0x08, 0x08, 0x00		; Code for char z
.DB		0x00, 0x00, 0x00, 0x80, 0x78, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x1E, 0x20, 0x00, 0x00		; Code for char {
.DB		0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00		; Code for char |
.DB		0x00, 0x00, 0x04, 0x7C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3C, 0x0F, 0x01, 0x00, 0x00		; Code for char }
.DB		0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00		; Code for char ~
.DB		0xFE, 0x02, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char 

; Font 2
DejaVuSansMonoBold16x24:
.DB		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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char  
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char !
.DB		0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 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, 0x00, 0x00, 0x00, 0x00		; Code for char "
.DB		0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xFE, 0xFE, 0xCE, 0xC0, 0xC0, 0xFC, 0xFE, 0xFE, 0xC2, 0xC0, 0xE0, 0xE1, 0xE1, 0xE1, 0xFF, 0xFF, 0xEF, 0xE1, 0xE1, 0xF9, 0xFF, 0xFF, 0xE3, 0xE1, 0xE1, 0x01, 0x00, 0x00, 0x1E, 0x1F, 0x0F, 0x00, 0x00, 0x18, 0x1F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char #
.DB		0x00, 0x00, 0x80, 0xE0, 0xE0, 0xF0, 0x70, 0xFE, 0xFE, 0x70, 0x70, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0x1F, 0x3C, 0x3C, 0xFF, 0xFF, 0x78, 0xF8, 0xF0, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0E, 0x1C, 0x1C, 0x1C, 0xFF, 0xFF, 0x1C, 0x1F, 0x0F, 0x0F, 0x03, 0x00, 0x00		; Code for char $
.DB		0x78, 0xFC, 0xCE, 0x86, 0x86, 0xCE, 0xFC, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x21, 0x31, 0x11, 0x19, 0x08, 0x08, 0x84, 0xC4, 0xE2, 0x62, 0x61, 0xE1, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x1C, 0x18, 0x18, 0x1C, 0x0F, 0x07		; Code for char %
.DB		0x00, 0x00, 0x00, 0x78, 0xFC, 0xFC, 0xFE, 0x8E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0xFC, 0xFE, 0x0F, 0x0F, 0x1F, 0x3F, 0xFC, 0xF8, 0xF0, 0xC0, 0x80, 0xF8, 0xF8, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x1F, 0x1E, 0x1C, 0x1C, 0x1C, 0x1F, 0x0F, 0x0F, 0x1F, 0x1F, 0x1D		; Code for char &
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char '
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFE, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0x7F, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00		; Code for char (
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFE, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0x7F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char )
.DB		0x00, 0x00, 0x10, 0x38, 0x30, 0xF0, 0xE0, 0xFE, 0xFE, 0xE0, 0xF0, 0x30, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x03, 0x03, 0x01, 0x1F, 0x1F, 0x01, 0x03, 0x03, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char *
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xFF, 0xFF, 0xFF, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char +
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char 
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char -
.DB		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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char .
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x70, 0x7E, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char /
.DB		0x00, 0x00, 0xC0, 0xF0, 0xFC, 0xFC, 0x3E, 0x0E, 0x0E, 0x0E, 0x3E, 0xFC, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0E, 0x0E, 0x0E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x1F, 0x1C, 0x1C, 0x1C, 0x1F, 0x0F, 0x0F, 0x03, 0x00, 0x00		; Code for char 0
.DB		0x00, 0x00, 0x00, 0x1C, 0x1C, 0x0E, 0x0E, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 0x1F, 0x1F, 0x1F, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x00		; Code for char 1
.DB		0x00, 0x00, 0x3C, 0x1C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0xFC, 0xFC, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1E, 0x1F, 0x1F, 0x1F, 0x1D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x00		; Code for char 2
.DB		0x00, 0x00, 0x00, 0x3C, 0x1C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0xFE, 0xFC, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x1F, 0xFB, 0xFB, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x0F, 0x0E, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1E, 0x0F, 0x0F, 0x07, 0x03, 0x00		; Code for char 3
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x7C, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFF, 0xEF, 0xE3, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00		; Code for char 4
.DB		0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x1F, 0xFF, 0xFE, 0xFC, 0xF0, 0x00, 0x00, 0x00, 0x0F, 0x0E, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1E, 0x1F, 0x0F, 0x0F, 0x07, 0x01, 0x00		; Code for char 5
.DB		0x00, 0x00, 0x80, 0xF0, 0xF8, 0xFC, 0x7C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x07, 0x07, 0x07, 0x0F, 0xFF, 0xFE, 0xFE, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x1E, 0x1C, 0x1C, 0x1C, 0x1E, 0x1F, 0x0F, 0x07, 0x01, 0x00		; Code for char 6
.DB		0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x8E, 0xFE, 0xFE, 0xFE, 0xFE, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0xFF, 0x7F, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1E, 0x1F, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char 7
.DB		0x00, 0x00, 0xF0, 0xF8, 0xFC, 0xFE, 0x1E, 0x0E, 0x0E, 0x0E, 0x1E, 0xFE, 0xFC, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0xE0, 0xF1, 0xFB, 0xFB, 0x1F, 0x0E, 0x0E, 0x0E, 0x1F, 0xFB, 0xFB, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F, 0x1E, 0x1C, 0x1C, 0x1C, 0x1E, 0x1F, 0x0F, 0x07, 0x03, 0x00		; Code for char 8
.DB		0x00, 0x00, 0xE0, 0xF8, 0xFC, 0xFE, 0x1E, 0x0E, 0x0E, 0x0E, 0x1E, 0xFC, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x1F, 0x3F, 0x3C, 0x38, 0x38, 0x38, 0x9C, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x1E, 0x0F, 0x0F, 0x07, 0x03, 0x00, 0x00		; Code for char 9
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char :
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x87, 0x87, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char ;
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0x00, 0x00, 0x3C, 0x3C, 0x7E, 0x7E, 0x7E, 0xE7, 0xE7, 0xE7, 0xC3, 0xC3, 0xC3, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x07, 0x00		; Code for char <
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00		; Code for char =
.DB		0x00, 0xE0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0xC3, 0xC3, 0xC3, 0xE7, 0xE7, 0xE7, 0x7E, 0x7E, 0x7E, 0x3C, 0x3C, 0x00, 0x00, 0x07, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char >
.DB		0x00, 0x00, 0x00, 0x1C, 0x0C, 0x0E, 0x0E, 0x0E, 0x0E, 0x8E, 0xFE, 0xFC, 0xFC, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x7F, 0x7F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char ?

; Default Font
Terminal6x8:
.DB		0x00, 0x00, 0x00, 0x00, 0x00, 0x00		; Code for char  
.DB		0x00, 0x00, 0x06, 0x5F, 0x06, 0x00		; Code for char !
.DB		0x00, 0x07, 0x03, 0x00, 0x07, 0x03		; Code for char """
.DB		0x00, 0x24, 0x7E, 0x24, 0x7E, 0x24		; Code for char #
.DB		0x00, 0x24, 0x2B, 0x6A, 0x12, 0x00		; Code for char $
.DB		0x00, 0x63, 0x13, 0x08, 0x64, 0x63		; Code for char %
.DB		0x00, 0x36, 0x49, 0x56, 0x20, 0x50		; Code for char &
.DB		0x00, 0x00, 0x07, 0x03, 0x00, 0x00		; Code for char '
.DB		0x00, 0x00, 0x3E, 0x41, 0x00, 0x00		; Code for char (
.DB		0x00, 0x00, 0x41, 0x3E, 0x00, 0x00		; Code for char )
.DB		0x00, 0x08, 0x3E, 0x1C, 0x3E, 0x08		; Code for char *
.DB		0x00, 0x08, 0x08, 0x3E, 0x08, 0x08		; Code for char +
.DB		0x00, 0x00, 0xE0, 0x60, 0x00, 0x00		; Code for char 
.DB		0x00, 0x08, 0x08, 0x08, 0x08, 0x08		; Code for char -
.DB		0x00, 0x00, 0x60, 0x60, 0x00, 0x00		; Code for char .
.DB		0x00, 0x20, 0x10, 0x08, 0x04, 0x02		; Code for char /
.DB		0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E		; Code for char 0
.DB		0x00, 0x00, 0x42, 0x7F, 0x40, 0x00		; Code for char 1
.DB		0x00, 0x62, 0x51, 0x49, 0x49, 0x46		; Code for char 2
.DB		0x00, 0x22, 0x49, 0x49, 0x49, 0x36		; Code for char 3
.DB		0x00, 0x18, 0x14, 0x12, 0x7F, 0x10		; Code for char 4
.DB		0x00, 0x2F, 0x49, 0x49, 0x49, 0x31		; Code for char 5
.DB		0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30		; Code for char 6
.DB		0x00, 0x01, 0x71, 0x09, 0x05, 0x03		; Code for char 7
.DB		0x00, 0x36, 0x49, 0x49, 0x49, 0x36		; Code for char 8
.DB		0x00, 0x06, 0x49, 0x49, 0x29, 0x1E		; Code for char 9
.DB		0x00, 0x00, 0x6C, 0x6C, 0x00, 0x00		; Code for char :
.DB		0x00, 0x00, 0xEC, 0x6C, 0x00, 0x00		; Code for char ;
.DB		0x00, 0x08, 0x14, 0x22, 0x41, 0x00		; Code for char <
.DB		0x00, 0x24, 0x24, 0x24, 0x24, 0x24		; Code for char =
.DB		0x00, 0x00, 0x41, 0x22, 0x14, 0x08		; Code for char >
.DB		0x00, 0x02, 0x01, 0x59, 0x09, 0x06		; Code for char ?
.DB		0x00, 0x3E, 0x41, 0x5D, 0x55, 0x1E		; Code for char @
.DB		0x00, 0x7E, 0x11, 0x11, 0x11, 0x7E		; Code for char A
.DB		0x00, 0x7F, 0x49, 0x49, 0x49, 0x36		; Code for char B
.DB		0x00, 0x3E, 0x41, 0x41, 0x41, 0x22		; Code for char C
.DB		0x00, 0x7F, 0x41, 0x41, 0x41, 0x3E		; Code for char D
.DB		0x00, 0x7F, 0x49, 0x49, 0x49, 0x41		; Code for char E
.DB		0x00, 0x7F, 0x09, 0x09, 0x09, 0x01		; Code for char F
.DB		0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A		; Code for char G
.DB		0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F		; Code for char H
.DB		0x00, 0x00, 0x41, 0x7F, 0x41, 0x00		; Code for char I
.DB		0x00, 0x30, 0x40, 0x40, 0x40, 0x3F		; Code for char J
.DB		0x00, 0x7F, 0x08, 0x14, 0x22, 0x41		; Code for char K
.DB		0x00, 0x7F, 0x40, 0x40, 0x40, 0x40		; Code for char L
.DB		0x00, 0x7F, 0x02, 0x04, 0x02, 0x7F		; Code for char M
.DB		0x00, 0x7F, 0x02, 0x04, 0x08, 0x7F		; Code for char N
.DB		0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E		; Code for char O
.DB		0x00, 0x7F, 0x09, 0x09, 0x09, 0x06		; Code for char P
.DB		0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E		; Code for char Q
.DB		0x00, 0x7F, 0x09, 0x09, 0x19, 0x66		; Code for char R
.DB		0x00, 0x26, 0x49, 0x49, 0x49, 0x32		; Code for char S
.DB		0x00, 0x01, 0x01, 0x7F, 0x01, 0x01		; Code for char T
.DB		0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F		; Code for char U
.DB		0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F		; Code for char V
.DB		0x00, 0x3F, 0x40, 0x3C, 0x40, 0x3F		; Code for char W
.DB		0x00, 0x63, 0x14, 0x08, 0x14, 0x63		; Code for char X
.DB		0x00, 0x07, 0x08, 0x70, 0x08, 0x07		; Code for char Y
.DB		0x00, 0x71, 0x49, 0x45, 0x43, 0x00		; Code for char Z
.DB		0x00, 0x00, 0x7F, 0x41, 0x41, 0x00		; Code for char [
.DB		0x00, 0x02, 0x04, 0x08, 0x10, 0x20		; Code for char BackSlash
.DB		0x00, 0x00, 0x41, 0x41, 0x7F, 0x00		; Code for char ]
.DB		0x00, 0x04, 0x02, 0x01, 0x02, 0x04		; Code for char ^
.DB		0x80, 0x80, 0x80, 0x80, 0x80, 0x80		; Code for char _
.DB		0x00, 0x00, 0x03, 0x07, 0x00, 0x00		; Code for char `
.DB		0x00, 0x20, 0x54, 0x54, 0x54, 0x78		; Code for char a
.DB		0x00, 0x7F, 0x44, 0x44, 0x44, 0x38		; Code for char b
.DB		0x00, 0x38, 0x44, 0x44, 0x44, 0x28		; Code for char c
.DB		0x00, 0x38, 0x44, 0x44, 0x44, 0x7F		; Code for char d
.DB		0x00, 0x38, 0x54, 0x54, 0x54, 0x08		; Code for char e
.DB		0x00, 0x08, 0x7E, 0x09, 0x09, 0x00		; Code for char f
.DB		0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C		; Code for char g
.DB		0x00, 0x7F, 0x04, 0x04, 0x78, 0x00		; Code for char h
.DB		0x00, 0x00, 0x00, 0x7D, 0x40, 0x00		; Code for char i
.DB		0x00, 0x40, 0x80, 0x84, 0x7D, 0x00		; Code for char j
.DB		0x00, 0x7F, 0x10, 0x28, 0x44, 0x00		; Code for char k
.DB		0x00, 0x00, 0x00, 0x7F, 0x40, 0x00		; Code for char l
.DB		0x00, 0x7C, 0x04, 0x18, 0x04, 0x78		; Code for char m
.DB		0x00, 0x7C, 0x04, 0x04, 0x78, 0x00		; Code for char n
.DB		0x00, 0x38, 0x44, 0x44, 0x44, 0x38		; Code for char o
.DB		0x00, 0xFC, 0x44, 0x44, 0x44, 0x38		; Code for char p
.DB		0x00, 0x38, 0x44, 0x44, 0x44, 0xFC		; Code for char q
.DB		0x00, 0x44, 0x78, 0x44, 0x04, 0x08		; Code for char r
.DB		0x00, 0x08, 0x54, 0x54, 0x54, 0x20		; Code for char s
.DB		0x00, 0x04, 0x3E, 0x44, 0x24, 0x00		; Code for char t
.DB		0x00, 0x3C, 0x40, 0x20, 0x7C, 0x00		; Code for char u
.DB		0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C		; Code for char v
.DB		0x00, 0x3C, 0x60, 0x30, 0x60, 0x3C		; Code for char w
.DB		0x00, 0x6C, 0x10, 0x10, 0x6C, 0x00		; Code for char x
.DB		0x00, 0x9C, 0xA0, 0x60, 0x3C, 0x00		; Code for char y
.DB		0x00, 0x64, 0x54, 0x54, 0x4C, 0x00		; Code for char z
.DB		0x00, 0x08, 0x3E, 0x41, 0x41, 0x00		; Code for char {
.DB		0x00, 0x00, 0x00, 0x77, 0x00, 0x00		; Code for char |
.DB		0x00, 0x00, 0x41, 0x41, 0x3E, 0x08		; Code for char }
.DB		0x00, 0x02, 0x01, 0x02, 0x01, 0x00		; Code for char ~
.DB		0x00, 0x3C, 0x26, 0x23, 0x26, 0x3C		; Code for char 


Attachment(s):