avr: work on simple GUI module to be used by node c02.
This commit is contained in:
@@ -268,6 +268,14 @@
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#ifdef MODULES_GUI
|
||||
.include "modules/lcd2/gui/defs.asm"
|
||||
.include "modules/lcd2/gui/main.asm"
|
||||
.include "modules/lcd2/gui/window.asm"
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef MODULES_FONT_8X8
|
||||
.include "modules/lcd2/font/defs.asm"
|
||||
.include "modules/lcd2/font/font8x8.asm"
|
||||
|
||||
@@ -179,6 +179,11 @@ onSystemTimerTick:
|
||||
bigcall Brightness_Every100ms
|
||||
#endif
|
||||
|
||||
#ifdef MODULES_GUI
|
||||
bigcall GUI_Every100ms
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef APPS_NETWORK
|
||||
ldi yl, LOW(netInterfaceData)
|
||||
ldi yh, HIGH(netInterfaceData)
|
||||
@@ -196,7 +201,7 @@ onSystemTimerTick:
|
||||
#ifdef APPS_MA_LIGHT
|
||||
bigcall AppMotionLight_Every100ms
|
||||
#endif
|
||||
|
||||
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
@@ -193,6 +193,10 @@ initModules:
|
||||
bigcall ILI9341_Init
|
||||
#endif
|
||||
|
||||
#ifdef MODULES_GUI
|
||||
bigcall GUI_Init
|
||||
#endif
|
||||
|
||||
#ifdef MODULES_BRIGHTNESS
|
||||
bigcall Brightness_Init
|
||||
#endif
|
||||
|
||||
@@ -137,8 +137,7 @@ main:
|
||||
.include "modules/flash/defs.asm"
|
||||
.include "modules/flash/eeprom.asm"
|
||||
.include "modules/flash/io.asm"
|
||||
.include "modules/flash/io_attn.asm"
|
||||
.include "modules/flash/io_bitbang.asm"
|
||||
.include "modules/flash/io_com2w.asm"
|
||||
.include "modules/flash/flash1pmega.asm"
|
||||
.include "modules/flash/flashxp.asm"
|
||||
.include "modules/flash/flashprocess.asm"
|
||||
|
||||
@@ -72,15 +72,15 @@
|
||||
.equ COM_DATA_OUTPUT = PORTD
|
||||
.equ COM_DATA_PIN = PORTD0
|
||||
|
||||
.equ COM_ATTN_DDR = DDRD
|
||||
.equ COM_ATTN_INPUT = PIND
|
||||
.equ COM_ATTN_OUTPUT = PORTD
|
||||
.equ COM_ATTN_PIN = PORTD2
|
||||
.equ COM_CLK_DDR = DDRD
|
||||
.equ COM_CLK_INPUT = PIND
|
||||
.equ COM_CLK_OUTPUT = PORTD
|
||||
.equ COM_CLK_PIN = PORTD2
|
||||
|
||||
.equ COM_IRQ_ADDR_ATTN = EIMSK
|
||||
.equ COM_IRQ_BIT_ATTN = INT0
|
||||
.equ COM_IRQ_GIFR_ATTN = INTF0
|
||||
;.equ COM_IRQ_GIMSK_ATTN = PCIE0
|
||||
.equ COM_IRQ_ADDR_CLK = EIMSK
|
||||
.equ COM_IRQ_BIT_CLK = INT0
|
||||
.equ COM_IRQ_GIFR_CLK = INTF0
|
||||
;.equ COM_IRQ_GIMSK_CLK = PCIE0
|
||||
|
||||
|
||||
|
||||
@@ -127,9 +127,12 @@
|
||||
; ---------------------------------------------------------------------------
|
||||
; ILI9341 module
|
||||
|
||||
.equ DISPLAY_WIDTH = 320
|
||||
.equ DISPLAY_HEIGHT = 240
|
||||
|
||||
.equ ILI9341_DEVICENUM = 0
|
||||
.equ ILI9341_DSP_WIDTH = 320
|
||||
.equ ILI9341_DSP_HEIGHT = 240
|
||||
.equ ILI9341_DSP_WIDTH = DISPLAY_WIDTH
|
||||
.equ ILI9341_DSP_HEIGHT = DISPLAY_HEIGHT
|
||||
|
||||
.equ ILI9341_RESET_DDR = DDRB
|
||||
.equ ILI9341_RESET_OUTPUT = PORTB
|
||||
|
||||
@@ -47,16 +47,17 @@
|
||||
; #define MODULES_TIMER
|
||||
#define MODULES_CLOCK
|
||||
;#define MODULES_XRAM
|
||||
#define MODULES_HEAP
|
||||
;#define MODULES_HEAP
|
||||
#define MODULES_LED_SIMPLE
|
||||
#define MODULES_NETWORK
|
||||
;#define MODULES_COMONUART0
|
||||
;#define MODULES_UART_HW
|
||||
#define MODULES_UART_BITBANG
|
||||
;#define MODULES_UART_BITBANG
|
||||
#define MODULES_COM2W
|
||||
#define MODULES_SPI_HW
|
||||
#define MODULES_ILI9341
|
||||
#define MODULES_FONT
|
||||
#define MODULES_WIN
|
||||
#define MODULES_GUI
|
||||
;#define MODULES_TWI_MASTER
|
||||
;#define MODULES_LCD
|
||||
;#define LCD_MINIMAL_FONT
|
||||
@@ -112,7 +113,7 @@
|
||||
; ---------------------------------------------------------------------------
|
||||
; Reset and interrupt vectors
|
||||
jmp BOOTLOADER_ADDR ; 1: Reset vector RESET
|
||||
jmp UART_BitBang_PcintIsr ; 2: INT0 External Interrupt Request 0
|
||||
jmp com2wPcintIsr ; 2: INT0 External Interrupt Request 0
|
||||
jmp irqNotSet ; 3: INT1 External Interrupt Request 1
|
||||
jmp irqNotSet ; 4: INT2 External Interrupt Request 2
|
||||
jmp irqNotSet ; 5: PCINT0 Pin Change Interrupt Request 0
|
||||
@@ -227,222 +228,110 @@ onEveryLoop:
|
||||
;.include "modules/lcd2/font/font16x26.asm"
|
||||
;.include "modules/lcd2/font/font4.asm"
|
||||
;.include "modules/lcd2/font/font12x16.asm"
|
||||
.include "modules/lcd2/font/font5.asm"
|
||||
.include "modules/lcd2/font/font12x20.asm"
|
||||
.include "modules/lcd2/ili9341/font6x8.asm"
|
||||
.include "modules/lcd2/ili9341/font6x8_1.asm"
|
||||
;.include "common/list_t.asm"
|
||||
.include "common/tree_t.asm"
|
||||
.include "common/divide.asm"
|
||||
;.include "common/tree_t.asm"
|
||||
;.include "common/divide.asm"
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; defines for network interface
|
||||
|
||||
;.equ netInterfaceData = netUartIface
|
||||
.equ netInterfaceData = uart_bitbang_iface
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; @param %0 X
|
||||
; @param %1 Y
|
||||
; @param %2 W
|
||||
; @param %3 H
|
||||
.macro M_FILL_RECT
|
||||
ldi r16, LOW(@0) ; X0
|
||||
mov r4, r16
|
||||
ldi r16, HIGH(@0)
|
||||
mov r5, r16
|
||||
|
||||
ldi r16, LOW(@1) ; Y0
|
||||
mov r6, r16
|
||||
ldi r16, HIGH(@1)
|
||||
mov r7, r16
|
||||
|
||||
ldi r16, LOW(@2) ; W
|
||||
mov r8, r16
|
||||
ldi r16, HIGH(@2)
|
||||
mov r9, r16
|
||||
|
||||
ldi r16, LOW(@3) ; H
|
||||
mov r10, r16
|
||||
ldi r16, HIGH(@3)
|
||||
mov r11, r16
|
||||
|
||||
bigcall ILI9341_FillRect
|
||||
.endmacro
|
||||
;.equ netInterfaceData = uart_bitbang_iface
|
||||
.equ netInterfaceData = com2w_iface
|
||||
|
||||
|
||||
|
||||
|
||||
test:
|
||||
; set foreground (r3:r2)
|
||||
; 0bRRRRRGGGGGGBBBBB
|
||||
ldi r16, 0b11111111
|
||||
mov r3, r16
|
||||
ldi r16, 0b11111111 ; white
|
||||
mov r2, r16
|
||||
M_FILL_RECT 0, 0, 319, 239
|
||||
|
||||
; set foreground (r3:r2)
|
||||
ldi r16, 0b00000000
|
||||
mov r3, r16
|
||||
ldi r16, 0b00011111 ; blue
|
||||
mov r2, r16
|
||||
M_FILL_RECT 0, 0, 319, 32
|
||||
|
||||
; set background (r1:r0)
|
||||
mov r0, r2
|
||||
mov r1, r3
|
||||
|
||||
; set foreground (r3:r2)
|
||||
ldi r16, 0b11111111
|
||||
mov r3, r16
|
||||
ldi r16, 0b11111111 ; white
|
||||
mov r2, r16
|
||||
|
||||
; set Xpos
|
||||
ldi r16, LOW(10)
|
||||
mov r4, r16
|
||||
ldi r16, HIGH(10)
|
||||
mov r5, r16
|
||||
|
||||
; setYpos
|
||||
ldi r16, LOW(3)
|
||||
mov r6, r16
|
||||
ldi r16, HIGH(3)
|
||||
mov r7, r16
|
||||
|
||||
; set font
|
||||
; ldi zl, LOW(font3_16x26*2)
|
||||
; ldi zh, HIGH(font3_16x26*2)
|
||||
ldi zl, LOW(font5_12x20*2)
|
||||
ldi zh, HIGH(font5_12x20*2)
|
||||
|
||||
; set buffer
|
||||
ldi xl, LOW(glyphBuffer)
|
||||
ldi xh, HIGH(glyphBuffer)
|
||||
|
||||
; write characters
|
||||
ldi r16, 'A'
|
||||
bigcall ili9341_WriteCharacterX1At
|
||||
|
||||
ldi r16, 'Q'
|
||||
bigcall ili9341_WriteCharacterX1At
|
||||
|
||||
ldi r16, 'H'
|
||||
bigcall ili9341_WriteCharacterX1At
|
||||
|
||||
ldi r16, 'O'
|
||||
bigcall ili9341_WriteCharacterX1At
|
||||
|
||||
ldi r16, 'M'
|
||||
bigcall ili9341_WriteCharacterX1At
|
||||
|
||||
ldi r16, 'E'
|
||||
bigcall ili9341_WriteCharacterX1At
|
||||
|
||||
#if 0
|
||||
push xl
|
||||
push xh
|
||||
rcall listTest1
|
||||
pop xh
|
||||
pop xl
|
||||
brcc test_error
|
||||
ldi r16, '!'
|
||||
bigcall ili9341_WriteCharacterX1At
|
||||
|
||||
push xl
|
||||
push xh
|
||||
rcall listTest2
|
||||
pop xh
|
||||
pop xl
|
||||
brcc test_error
|
||||
ldi r16, '!'
|
||||
bigcall ili9341_WriteCharacterX1At
|
||||
|
||||
push xl
|
||||
push xh
|
||||
rcall listTest3
|
||||
pop xh
|
||||
pop xl
|
||||
brcc test_error
|
||||
ldi r16, '!'
|
||||
bigcall ili9341_WriteCharacterX1At
|
||||
|
||||
push xl
|
||||
push xh
|
||||
rcall listTest4
|
||||
pop xh
|
||||
pop xl
|
||||
brcc test_error
|
||||
ldi r16, '!'
|
||||
bigcall ili9341_WriteCharacterX1At
|
||||
#endif
|
||||
|
||||
#ifdef MODULES_GUI
|
||||
ldi yl, LOW(mainWindow)
|
||||
ldi yh, HIGH(mainWindow)
|
||||
ldi zl, LOW(mainWindowInFlash*2);
|
||||
ldi zh, HIGH(mainWindowInFlash*2);
|
||||
ldi r17, WIN_SIZE
|
||||
testCopyWinLoop:
|
||||
lpm r16, Z+
|
||||
st Y+, r16
|
||||
dec r17
|
||||
brne testCopyWinLoop
|
||||
|
||||
ldi yl, LOW(mainWindow)
|
||||
ldi yh, HIGH(mainWindow)
|
||||
bigcall Window_Clear
|
||||
#if 1
|
||||
push xl
|
||||
push xh
|
||||
rcall treeTest1
|
||||
pop xh
|
||||
pop xl
|
||||
brcc test_error
|
||||
ldi r16, '!'
|
||||
bigcall ili9341_WriteCharacterX1At
|
||||
ldi zl, LOW(mainWindowTitle*2)
|
||||
ldi zh, HIGH(mainWindowTitle*2)
|
||||
; print title at 10/2
|
||||
ldi r16, 10
|
||||
mov r4, r16
|
||||
clr r5
|
||||
ldi r16, 2
|
||||
mov r6, r16
|
||||
clr r7
|
||||
bigcall Window_DrawTextFlash
|
||||
#else
|
||||
ldi zl, LOW(ili9341Font6x8_1*2)
|
||||
ldi zh, HIGH(ili9341Font6x8_1*2)
|
||||
|
||||
push xl
|
||||
push xh
|
||||
rcall treeTest2
|
||||
pop xh
|
||||
pop xl
|
||||
brcc test_error
|
||||
ldi r16, '!'
|
||||
bigcall ili9341_WriteCharacterX1At
|
||||
ldi r16, LOW(0b0000000000000000)
|
||||
mov r0, r16
|
||||
ldi r16, HIGH(0b0000000000000000)
|
||||
mov r1, r16
|
||||
|
||||
push xl
|
||||
push xh
|
||||
rcall treeTest3
|
||||
pop xh
|
||||
pop xl
|
||||
brcc test_error
|
||||
ldi r16, '!'
|
||||
bigcall ili9341_WriteCharacterX1At
|
||||
ldi r16, LOW(0b1111111111111111)
|
||||
mov r2, r16
|
||||
ldi r16, HIGH(0b1111111111111111)
|
||||
mov r3, r16
|
||||
|
||||
push xl
|
||||
push xh
|
||||
rcall treeTest4
|
||||
pop xh
|
||||
pop xl
|
||||
brcc test_error
|
||||
ldi r16, '!'
|
||||
bigcall ili9341_WriteCharacterX1At
|
||||
ldi r16, 10
|
||||
mov r4, r16
|
||||
clr r5
|
||||
ldi r16, 20
|
||||
mov r6, r16
|
||||
clr r7
|
||||
|
||||
ldi r16, 'A'
|
||||
bigcall Display_DrawChar
|
||||
|
||||
add r4, r18
|
||||
adc r5, r19
|
||||
|
||||
ldi r16, 'B'
|
||||
bigcall Display_DrawChar
|
||||
|
||||
#endif
|
||||
|
||||
ret
|
||||
|
||||
test_error:
|
||||
ldi r17, '0'
|
||||
add r16, r17
|
||||
bigcall ili9341_WriteCharacterX1At
|
||||
|
||||
|
||||
ret
|
||||
|
||||
|
||||
|
||||
helloWorld: .db "Hello World", 0
|
||||
testHandler:
|
||||
ret
|
||||
|
||||
|
||||
|
||||
#ifdef MODULES_GUI
|
||||
mainWindowInFlash:
|
||||
.dw testHandler ; handler
|
||||
.dw 0 ; X
|
||||
.dw 0 ; Y
|
||||
.dw DISPLAY_WIDTH
|
||||
.dw DISPLAY_HEIGHT
|
||||
; 0bRRRRRGGGGGGBBBBB
|
||||
.dw 0b0000000000011111 ; blue
|
||||
; .dw 0b1111100000000000 ; red
|
||||
.dw 0b1111111111111111 ; white
|
||||
.dw (ili9341Font6x8_1*2)
|
||||
|
||||
mainWindowTitle: .db "AQHOME", 0, 0
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
.dseg
|
||||
|
||||
glyphBuffer: .byte 1024
|
||||
mainWindow: .byte WIN_SIZE
|
||||
|
||||
heapStart:
|
||||
|
||||
|
||||
|
||||
@@ -46,6 +46,30 @@
|
||||
|
||||
|
||||
|
||||
.macro M_COM2WSETUPINT0
|
||||
inr r16, MCUCR
|
||||
cbr r16, (1<<ISC01) | (1<<ISC00)
|
||||
sbr r16, (1<<ISC01) | (0<<ISC00) ; falling edge of ATTN
|
||||
outr MCUCR, r16
|
||||
; sbr r16, (0<<ISC01) | (0<<ISC00) ; low level triggers
|
||||
inr r16, COM_IRQ_ADDR_CLK ; enable irq for ATTN line
|
||||
sbr r16, (1<<COM_IRQ_BIT_CLK)
|
||||
outr COM_IRQ_ADDR_CLK, r16
|
||||
.endmacro
|
||||
|
||||
|
||||
|
||||
.macro M_COM2WSETUPPCI
|
||||
sbi COM_IRQ_ADDR_CLK, COM_IRQ_BIT_CLK ; enable pin change irq for CLK line
|
||||
in r16, GIMSK ; enable pin change irq PCIE0 or PCIE1
|
||||
ori r16, (1<<COM_IRQ_GIMSK_CLK)
|
||||
out GIMSK, R16
|
||||
ldi r16, (1<<COM_IRQ_GIFR_CLK) ; clear pending irq by writing 1 to CLK bit
|
||||
out GIFR, r16
|
||||
.endmacro
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.dseg
|
||||
@@ -91,6 +115,19 @@ COM2W_Init:
|
||||
; setup pin-change interrupt for CLK
|
||||
rcall com2wEnableClkIrq
|
||||
|
||||
; enable IRQ
|
||||
.ifdef INT0
|
||||
.if COM_IRQ_BIT_CLK == INT0
|
||||
M_COM2WSETUPINT0
|
||||
.else
|
||||
M_COM2WSETUPPCI
|
||||
.endif
|
||||
.else
|
||||
M_COM2WSETUPPCI
|
||||
.endif
|
||||
|
||||
|
||||
#if 0
|
||||
inr r16, COM_IRQ_ADDR_CLK
|
||||
sbr r16, (1<<COM_IRQ_BIT_CLK) ; enable pin change irq for ATTN line
|
||||
outr COM_IRQ_ADDR_CLK, r16
|
||||
@@ -100,6 +137,7 @@ COM2W_Init:
|
||||
outr GIMSK, r16
|
||||
ldi r16, (1<<COM_IRQ_GIFR_CLK) ; clear pending irq by writing 1 to ATTN bit
|
||||
outr GIFR, r16
|
||||
#endif
|
||||
|
||||
ret
|
||||
; @end
|
||||
|
||||
13
avr/modules/lcd2/0BUILD
Normal file
13
avr/modules/lcd2/0BUILD
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml?>
|
||||
|
||||
<gwbuild>
|
||||
|
||||
<subdirs>
|
||||
font
|
||||
gui
|
||||
ili9341
|
||||
xpt2046
|
||||
</subdirs>
|
||||
|
||||
</gwbuild>
|
||||
|
||||
@@ -4,16 +4,6 @@
|
||||
|
||||
<extradist>
|
||||
defs.asm
|
||||
font8x8.asm
|
||||
font6x8.asm
|
||||
font12x16.asm
|
||||
font12x20.asm
|
||||
font16x26.asm
|
||||
font1.asm
|
||||
font2.asm
|
||||
font3.asm
|
||||
font4.asm
|
||||
font5.asm
|
||||
main.asm
|
||||
</extradist>
|
||||
|
||||
|
||||
@@ -7,11 +7,12 @@
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
#ifndef AVR_MODULES_FONT_DEFS
|
||||
#define AVR_MODULES_FONT_DEFS
|
||||
#ifndef AQH_AVR_FONT_DEFS_ASM
|
||||
#define AQH_AVR_FONT_DEFS_ASM
|
||||
|
||||
|
||||
.equ FONT_OFFS_HANDLERFN_LOW = 0
|
||||
|
||||
.equ FONT_OFFS_HANDLERFN_LOW = 0 ; pointer to handler fn (word address!)
|
||||
.equ FONT_OFFS_HANDLERFN_HI = 1
|
||||
.equ FONT_OFFS_DATASIZE = 2 ; one byte used, one byte reserved
|
||||
.equ FONT_OFFS_WIDTH = 4
|
||||
@@ -30,6 +31,7 @@
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
#endif ; AQH_AVR_FONT_DEFS_ASM
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,100 +0,0 @@
|
||||
; ***************************************************************************
|
||||
; copyright : (C) 2025 by Martin Preuss
|
||||
; email : martin@libchipcard.de
|
||||
;
|
||||
; ***************************************************************************
|
||||
; * This file is part of the project "AqHome". *
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; This is a font from the project LCD_fonts at
|
||||
; https://github.com/basti79/LCD-fonts.git
|
||||
; which in turn is based on a post by Benedikt K. in a forum post on
|
||||
; https://www.mikrocontroller.net/topic/54860
|
||||
; ***************************************************************************
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; code
|
||||
|
||||
.cseg
|
||||
|
||||
|
||||
|
||||
font1_8x8:
|
||||
; header
|
||||
.dw font6x8MonoHandlerFn ; handlerFn
|
||||
.db 128, 0 ; needed buffer size
|
||||
.db 8, 8 ; width, height of chars
|
||||
.db 32, 64 ; first char, num of chars in font
|
||||
; data (8x8_horizontal_LSB_2)
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x20
|
||||
.db 0x0C,0x1E,0x1E,0x0C,0x0C,0x00,0x0C,0x00, ; 0x21
|
||||
.db 0x36,0x36,0x36,0x00,0x00,0x00,0x00,0x00, ; 0x22
|
||||
.db 0x36,0x36,0x7F,0x36,0x7F,0x36,0x36,0x00, ; 0x23
|
||||
.db 0x0C,0x3E,0x03,0x1E,0x30,0x1F,0x0C,0x00, ; 0x24
|
||||
.db 0x00,0x63,0x33,0x18,0x0C,0x66,0x63,0x00, ; 0x25
|
||||
.db 0x1C,0x36,0x1C,0x6E,0x3B,0x33,0x6E,0x00, ; 0x26
|
||||
.db 0x06,0x06,0x03,0x00,0x00,0x00,0x00,0x00, ; 0x27
|
||||
.db 0x18,0x0C,0x06,0x06,0x06,0x0C,0x18,0x00, ; 0x28
|
||||
.db 0x06,0x0C,0x18,0x18,0x18,0x0C,0x06,0x00, ; 0x29
|
||||
.db 0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00, ; 0x2A
|
||||
.db 0x00,0x0C,0x0C,0x3F,0x0C,0x0C,0x00,0x00, ; 0x2B
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x0E,0x0C,0x06, ; 0x2C
|
||||
.db 0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00, ; 0x2D
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00, ; 0x2E
|
||||
.db 0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x00, ; 0x2F
|
||||
.db 0x1E,0x33,0x3B,0x3F,0x37,0x33,0x1E,0x00, ; 0x30
|
||||
.db 0x0C,0x0F,0x0C,0x0C,0x0C,0x0C,0x3F,0x00, ; 0x31
|
||||
.db 0x1E,0x33,0x30,0x1C,0x06,0x33,0x3F,0x00, ; 0x32
|
||||
.db 0x1E,0x33,0x30,0x1C,0x30,0x33,0x1E,0x00, ; 0x33
|
||||
.db 0x38,0x3C,0x36,0x33,0x7F,0x30,0x30,0x00, ; 0x34
|
||||
.db 0x3F,0x03,0x1F,0x30,0x30,0x33,0x1E,0x00, ; 0x35
|
||||
.db 0x1C,0x06,0x03,0x1F,0x33,0x33,0x1E,0x00, ; 0x36
|
||||
.db 0x3F,0x33,0x30,0x18,0x0C,0x06,0x06,0x00, ; 0x37
|
||||
.db 0x1E,0x33,0x33,0x1E,0x33,0x33,0x1E,0x00, ; 0x38
|
||||
.db 0x1E,0x33,0x33,0x3E,0x30,0x18,0x0E,0x00, ; 0x39
|
||||
.db 0x00,0x00,0x0C,0x0C,0x00,0x0C,0x0C,0x00, ; 0x3A
|
||||
.db 0x00,0x00,0x0C,0x0C,0x00,0x0E,0x0C,0x06, ; 0x3B
|
||||
.db 0x18,0x0C,0x06,0x03,0x06,0x0C,0x18,0x00, ; 0x3C
|
||||
.db 0x00,0x00,0x3F,0x00,0x3F,0x00,0x00,0x00, ; 0x3D
|
||||
.db 0x06,0x0C,0x18,0x30,0x18,0x0C,0x06,0x00, ; 0x3E
|
||||
.db 0x1E,0x33,0x30,0x18,0x0C,0x00,0x0C,0x00, ; 0x3F
|
||||
.db 0x3E,0x63,0x7B,0x7B,0x7B,0x03,0x1E,0x00, ; 0x40
|
||||
.db 0x0C,0x1E,0x33,0x33,0x3F,0x33,0x33,0x00, ; 0x41
|
||||
.db 0x3F,0x66,0x66,0x3E,0x66,0x66,0x3F,0x00, ; 0x42
|
||||
.db 0x3C,0x66,0x03,0x03,0x03,0x66,0x3C,0x00, ; 0x43
|
||||
.db 0x3F,0x36,0x66,0x66,0x66,0x36,0x3F,0x00, ; 0x44
|
||||
.db 0x7F,0x46,0x16,0x1E,0x16,0x46,0x7F,0x00, ; 0x45
|
||||
.db 0x7F,0x46,0x16,0x1E,0x16,0x06,0x0F,0x00, ; 0x46
|
||||
.db 0x3C,0x66,0x03,0x03,0x73,0x66,0x7C,0x00, ; 0x47
|
||||
.db 0x33,0x33,0x33,0x3F,0x33,0x33,0x33,0x00, ; 0x48
|
||||
.db 0x1E,0x0C,0x0C,0x0C,0x0C,0x0C,0x1E,0x00, ; 0x49
|
||||
.db 0x78,0x30,0x30,0x30,0x33,0x33,0x1E,0x00, ; 0x4A
|
||||
.db 0x67,0x66,0x36,0x1E,0x36,0x66,0x67,0x00, ; 0x4B
|
||||
.db 0x0F,0x06,0x06,0x06,0x46,0x66,0x7F,0x00, ; 0x4C
|
||||
.db 0x63,0x77,0x7F,0x6B,0x63,0x63,0x63,0x00, ; 0x4D
|
||||
.db 0x63,0x67,0x6F,0x7B,0x73,0x63,0x63,0x00, ; 0x4E
|
||||
.db 0x1C,0x36,0x63,0x63,0x63,0x36,0x1C,0x00, ; 0x4F
|
||||
.db 0x3F,0x66,0x66,0x3E,0x06,0x06,0x0F,0x00, ; 0x50
|
||||
.db 0x1E,0x33,0x33,0x33,0x3B,0x1E,0x38,0x00, ; 0x51
|
||||
.db 0x3F,0x66,0x66,0x3E,0x1E,0x36,0x67,0x00, ; 0x52
|
||||
.db 0x1E,0x33,0x07,0x1C,0x38,0x33,0x1E,0x00, ; 0x53
|
||||
.db 0x3F,0x2D,0x0C,0x0C,0x0C,0x0C,0x1E,0x00, ; 0x54
|
||||
.db 0x33,0x33,0x33,0x33,0x33,0x33,0x3F,0x00, ; 0x55
|
||||
.db 0x33,0x33,0x33,0x33,0x33,0x1E,0x0C,0x00, ; 0x56
|
||||
.db 0x63,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, ; 0x57
|
||||
.db 0x63,0x63,0x36,0x1C,0x36,0x63,0x63,0x00, ; 0x58
|
||||
.db 0x33,0x33,0x33,0x1E,0x0C,0x0C,0x1E,0x00, ; 0x59
|
||||
.db 0x7F,0x33,0x19,0x0C,0x46,0x63,0x7F,0x00, ; 0x5A
|
||||
.db 0x1E,0x06,0x06,0x06,0x06,0x06,0x1E,0x00, ; 0x5B
|
||||
.db 0x03,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, ; 0x5C
|
||||
.db 0x1E,0x18,0x18,0x18,0x18,0x18,0x1E,0x00, ; 0x5D
|
||||
.db 0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00, ; 0x5E
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF ; 0x5F
|
||||
|
||||
|
||||
|
||||
@@ -1,117 +0,0 @@
|
||||
; ***************************************************************************
|
||||
; copyright : (C) 2025 by Martin Preuss
|
||||
; email : martin@libchipcard.de
|
||||
;
|
||||
; ***************************************************************************
|
||||
; * This file is part of the project "AqHome". *
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; code
|
||||
|
||||
.cseg
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine font12x16MonoHandlerFn
|
||||
;
|
||||
; Handler for 12x16 Mono Fonts
|
||||
;
|
||||
|
||||
font12x16MonoHandlerFn:
|
||||
cpi r23, FONT_FN_RENDER
|
||||
breq font12x16MonoRenderCharacter
|
||||
rjmp FONT_GenericHandler
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine font12x16RenderCharacter
|
||||
|
||||
; @param R16 character to write
|
||||
; @param R1:R0 background color
|
||||
; @param R3:R2 foreground color
|
||||
; @param Z pointer to font
|
||||
; @param X pointer to RAM to store data to
|
||||
; @param r18 char width in pixel
|
||||
; @param r19 char height in pixel
|
||||
; @clobbers r17, r18, r23, r24, r25, x
|
||||
|
||||
font12x16MonoRenderCharacter:
|
||||
push zl
|
||||
push zh
|
||||
rcall font12x16GetCharPosInFont ; (r17, r24, r25, z)
|
||||
ldi r25, 16 ; 16 bytes height
|
||||
font12x16MonoRenderCharacter_loop1:
|
||||
ldi r24, 12 ; 16 bits
|
||||
ldi r23, 8
|
||||
lpm r17, Z+
|
||||
font12x16MonoRenderCharacter_loop2:
|
||||
dec r23
|
||||
brne font12x16MonoRenderCharacter_haveByte
|
||||
lpm r17, Z+
|
||||
ldi r23, 8
|
||||
font12x16MonoRenderCharacter_haveByte:
|
||||
lsr r17
|
||||
brcs font12x16MonoRenderCharacter_writeForeground
|
||||
st X+, r0
|
||||
st X+, r1
|
||||
rjmp font12x16MonoRenderCharacter_loop2end
|
||||
font12x16MonoRenderCharacter_writeForeground:
|
||||
st X+, r2
|
||||
st X+, r3
|
||||
font12x16MonoRenderCharacter_loop2end:
|
||||
dec r24
|
||||
brne font12x16MonoRenderCharacter_loop2
|
||||
dec r25
|
||||
brne font12x16MonoRenderCharacter_loop1
|
||||
ldi r18, 12
|
||||
ldi r19, 16
|
||||
pop zh
|
||||
pop zl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine font12x16GetCharPosInFont
|
||||
|
||||
; @param R16 character to write
|
||||
; @param Z pointer to font
|
||||
; @return Z pointer to begin of char data
|
||||
; @clobbers r17, r24, r25, z
|
||||
|
||||
font12x16GetCharPosInFont:
|
||||
mov r24, r16
|
||||
adiw zh:zl, FONT_OFFS_FIRSTCHAR
|
||||
lpm r24, Z+ ; first char num
|
||||
lpm r25, Z+ ; num of chars
|
||||
sub r16, r24
|
||||
brcs font12x16GetCharPosInFont_ret
|
||||
cp r16, r25
|
||||
brcc font12x16GetCharPosInFont_ret
|
||||
mov r25, r16 ; x256
|
||||
clr r24
|
||||
|
||||
lsr r25 ; x128
|
||||
ror r24
|
||||
|
||||
lsr r25 ; x64
|
||||
ror r24
|
||||
|
||||
lsr r25 ; x32
|
||||
ror r24
|
||||
|
||||
add zl, r24
|
||||
adc zh, r25
|
||||
font12x16GetCharPosInFont_ret:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
@@ -1,123 +0,0 @@
|
||||
; ***************************************************************************
|
||||
; copyright : (C) 2025 by Martin Preuss
|
||||
; email : martin@libchipcard.de
|
||||
;
|
||||
; ***************************************************************************
|
||||
; * This file is part of the project "AqHome". *
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; code
|
||||
|
||||
.cseg
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine font16x26MonoHandlerFn
|
||||
;
|
||||
; Handler for 16x26 Mono Fonts
|
||||
;
|
||||
|
||||
font16x26MonoHandlerFn:
|
||||
cpi r23, FONT_FN_RENDER
|
||||
breq font16x26MonoRenderCharacter
|
||||
rjmp FONT_GenericHandler
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine font16x26RenderCharacter
|
||||
|
||||
; @param R16 character to write
|
||||
; @param R1:R0 background color
|
||||
; @param R3:R2 foreground color
|
||||
; @param Z pointer to font
|
||||
; @param X pointer to RAM to store data to
|
||||
; @param r18 char width in pixel
|
||||
; @param r19 char height in pixel
|
||||
; @clobbers r17, r18, r24, r25, x
|
||||
|
||||
font16x26MonoRenderCharacter:
|
||||
push zl
|
||||
push zh
|
||||
rcall font16x26GetCharPosInFont ; (r17, r24, r25, z)
|
||||
ldi r25, 26 ; 26 bytes height
|
||||
font16x26MonoRenderCharacter_loop1:
|
||||
ldi r24, 16 ; 16 bits
|
||||
font16x26MonoRenderCharacter_loop2:
|
||||
mov r23, r24
|
||||
andi r23, 7
|
||||
brne font16x26MonoRenderCharacter_haveByte
|
||||
lpm r17, Z+
|
||||
font16x26MonoRenderCharacter_haveByte:
|
||||
lsr r17
|
||||
brcs font16x26MonoRenderCharacter_writeForeground
|
||||
st X+, r0
|
||||
st X+, r1
|
||||
rjmp font16x26MonoRenderCharacter_loop2end
|
||||
font16x26MonoRenderCharacter_writeForeground:
|
||||
st X+, r2
|
||||
st X+, r3
|
||||
font16x26MonoRenderCharacter_loop2end:
|
||||
dec r24
|
||||
brne font16x26MonoRenderCharacter_loop2
|
||||
dec r25
|
||||
brne font16x26MonoRenderCharacter_loop1
|
||||
ldi r18, 16
|
||||
ldi r19, 26
|
||||
pop zh
|
||||
pop zl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine font16x26GetCharPosInFont
|
||||
|
||||
; @param R16 character to write
|
||||
; @param Z pointer to font
|
||||
; @return Z pointer to begin of char data
|
||||
; @clobbers r17, r24, r25, z
|
||||
|
||||
font16x26GetCharPosInFont:
|
||||
mov r24, r16
|
||||
adiw zh:zl, FONT_OFFS_FIRSTCHAR
|
||||
lpm r24, Z+ ; first char num
|
||||
lpm r25, Z+ ; num of chars
|
||||
sub r16, r24
|
||||
brcs font16x26GetCharPosInFont_ret
|
||||
cp r16, r25
|
||||
brcc font16x26GetCharPosInFont_ret
|
||||
mov r24, r16
|
||||
clr r25
|
||||
lsl r24 ; x2
|
||||
rol r25
|
||||
add r24, r16 ; x3
|
||||
adc r25, r16
|
||||
sub r25, r16
|
||||
lsl r24 ; x6
|
||||
rol r25
|
||||
lsl r24 ; x12
|
||||
rol r25
|
||||
add r24, r16 ; x13
|
||||
adc r25, r16
|
||||
sub r25, r16
|
||||
lsl r24 ; x26
|
||||
rol r25
|
||||
lsl r24 ; x52
|
||||
rol r25
|
||||
|
||||
add zl, r24
|
||||
adc zh, r25
|
||||
font16x26GetCharPosInFont_ret:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
@@ -1,257 +0,0 @@
|
||||
; ***************************************************************************
|
||||
; copyright : (C) 2025 by Martin Preuss
|
||||
; email : martin@libchipcard.de
|
||||
;
|
||||
; ***************************************************************************
|
||||
; * This file is part of the project "AqHome". *
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; This is a font from the project LCD_fonts at
|
||||
; https://github.com/basti79/LCD-fonts.git
|
||||
; which in turn is based on a post by Benedikt K. in a forum post on
|
||||
; https://www.mikrocontroller.net/topic/54860
|
||||
; ***************************************************************************
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; code
|
||||
|
||||
.cseg
|
||||
|
||||
|
||||
|
||||
font3_16x26:
|
||||
; header
|
||||
.dw font16x26MonoHandlerFn ; handlerFn
|
||||
.dw 832 ; needed buffer size
|
||||
.db 16, 26 ; width, height of chars
|
||||
.db 32, 224 ; first char, num of chars in font
|
||||
; data (16x26_horizontal_LSB_2)
|
||||
.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,0x00,0x00,0x00,0x00, ; 0x20
|
||||
.db 0x00,0x00,0x00,0x00,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x00,0x00,0x00,0x00,0x80,0x03,0x80,0x03,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x21
|
||||
.db 0x00,0x00,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x10,0x04,0x10,0x04,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, ; 0x22
|
||||
.db 0x00,0x00,0x00,0x00,0x80,0x31,0x80,0x31,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xFC,0x7F,0xFC,0x7F,0x60,0x0C,0x60,0x06,0x30,0x06,0xFE,0x3F,0xFE,0x3F,0x18,0x03,0x18,0x03,0x18,0x03,0x18,0x03,0x8C,0x01,0x8C,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x23
|
||||
.db 0x00,0x03,0x00,0x03,0xC0,0x1F,0xF0,0x3F,0x70,0x23,0x38,0x03,0x38,0x03,0x38,0x03,0x78,0x03,0xF0,0x03,0xE0,0x03,0x80,0x07,0x00,0x1F,0x00,0x1F,0x00,0x3B,0x00,0x3B,0x00,0x3B,0x00,0x3B,0x18,0x1B,0xF8,0x1F,0xE0,0x0F,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x24
|
||||
.db 0x00,0x00,0x00,0x00,0x3C,0xC0,0x66,0x60,0xC3,0x30,0xC3,0x18,0xC3,0x18,0xC3,0x0C,0xC3,0x06,0x66,0x03,0x3C,0x03,0x80,0x01,0xC0,0x3C,0xC0,0x66,0x60,0xC3,0x30,0xC3,0x18,0xC3,0x18,0xC3,0x0C,0xC3,0x06,0x66,0x03,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x25
|
||||
.db 0x00,0x00,0x00,0x00,0xE0,0x03,0xF0,0x07,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x06,0x70,0x07,0xF0,0x01,0xF8,0x00,0xFC,0xE0,0xCE,0xE1,0xC7,0xE3,0x87,0x63,0x07,0x67,0x07,0x7E,0x0F,0x3E,0x1E,0x3C,0xFC,0x7F,0xF0,0xF3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x26
|
||||
.db 0x00,0x00,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x80,0x00,0x80,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, ; 0x27
|
||||
.db 0x00,0x00,0x00,0x18,0x00,0x1E,0x00,0x0F,0x80,0x03,0xC0,0x01,0xE0,0x00,0xE0,0x00,0xE0,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x01,0x80,0x03,0x00,0x0F,0x00,0x1E,0x00,0x18,0x00,0x00, ; 0x28
|
||||
.db 0x00,0x00,0x0C,0x00,0x3C,0x00,0x78,0x00,0xE0,0x00,0xC0,0x01,0x80,0x03,0x80,0x03,0x80,0x03,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x80,0x03,0x80,0x03,0x80,0x03,0xC0,0x01,0xE0,0x00,0x78,0x00,0x3C,0x00,0x0C,0x00,0x00,0x00, ; 0x29
|
||||
.db 0x00,0x00,0x00,0x00,0x80,0x03,0x80,0x03,0x80,0x03,0x98,0x1B,0x7C,0x3E,0x30,0x0C,0x40,0x02,0xE0,0x07,0x70,0x0E,0x38,0x1C,0x20,0x04,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, ; 0x2A
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xFE,0x7F,0xFE,0x7F,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x2B
|
||||
.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,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0x00,0x03,0x80,0x03,0x80,0x01,0xC0,0x00,0x00,0x00, ; 0x2C
|
||||
.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,0xF8,0x1F,0xF8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x2D
|
||||
.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,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x2E
|
||||
.db 0x00,0x00,0x00,0x60,0x00,0x30,0x00,0x30,0x00,0x18,0x00,0x18,0x00,0x0C,0x00,0x0C,0x00,0x06,0x00,0x06,0x00,0x03,0x00,0x03,0x80,0x01,0x80,0x01,0xC0,0x00,0xC0,0x00,0x60,0x00,0x60,0x00,0x30,0x00,0x30,0x00,0x18,0x00,0x18,0x00,0x0C,0x00,0x0C,0x00,0x06,0x00,0x00,0x00, ; 0x2F
|
||||
.db 0x00,0x00,0x00,0x00,0xE0,0x03,0xF0,0x07,0x38,0x0E,0x1C,0x1C,0x1C,0x1C,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1C,0x1C,0x1C,0x1C,0x38,0x0E,0xF0,0x07,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x30
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0x03,0xFC,0x03,0x8C,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0xFC,0x7F,0xFC,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x31
|
||||
.db 0x00,0x00,0x00,0x00,0xF0,0x03,0xFC,0x07,0x0C,0x0E,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x0E,0x00,0x0E,0x00,0x07,0x80,0x03,0xC0,0x01,0xE0,0x00,0x70,0x00,0x30,0x00,0x38,0x00,0x1C,0x00,0xFC,0x1F,0xFC,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x32
|
||||
.db 0x00,0x00,0x00,0x00,0xF0,0x03,0xF8,0x0F,0x08,0x1E,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x0C,0x00,0x06,0xE0,0x03,0xE0,0x07,0x00,0x0F,0x00,0x1E,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1E,0x08,0x0F,0xF8,0x07,0xF8,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x33
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x0F,0x80,0x0F,0x80,0x0F,0xC0,0x0E,0xE0,0x0E,0x60,0x0E,0x30,0x0E,0x18,0x0E,0x18,0x0E,0x0C,0x0E,0x06,0x0E,0xFE,0x7F,0xFE,0x7F,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x34
|
||||
.db 0x00,0x00,0x00,0x00,0xF0,0x3F,0xF0,0x3F,0xF0,0x3F,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0xF0,0x03,0xF0,0x0F,0x00,0x1E,0x00,0x3C,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x3C,0x10,0x1E,0xF0,0x0F,0xF0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x35
|
||||
.db 0x00,0x00,0x00,0x00,0x80,0x1F,0xE0,0x3F,0xF0,0x20,0x70,0x00,0x38,0x00,0x38,0x00,0x1C,0x00,0x9C,0x0F,0xDC,0x1F,0x7C,0x3C,0x3C,0x78,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x38,0x70,0x38,0x38,0x70,0x38,0xF0,0x1F,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x36
|
||||
.db 0x00,0x00,0x00,0x00,0xF8,0x3F,0xF8,0x3F,0xF8,0x3F,0x00,0x18,0x00,0x18,0x00,0x0C,0x00,0x0C,0x00,0x06,0x00,0x02,0x00,0x03,0x80,0x01,0x80,0x01,0xC0,0x00,0xC0,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x37
|
||||
.db 0x00,0x00,0x00,0x00,0xC0,0x07,0xF0,0x0F,0x78,0x1E,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x78,0x0C,0xF0,0x0F,0xE0,0x03,0xF0,0x0F,0x38,0x1F,0x18,0x1E,0x1C,0x3C,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x38,0x1C,0xF0,0x0F,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x38
|
||||
.db 0x00,0x00,0x00,0x00,0xC0,0x07,0xF0,0x1F,0x38,0x1C,0x38,0x38,0x1C,0x38,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x3C,0x78,0x78,0x7C,0xF0,0x77,0xE0,0x73,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x1C,0x08,0x1E,0xF8,0x0F,0xF0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x39
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x3A
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0x00,0x03,0x80,0x03,0x80,0x01,0xC0,0x00,0x00,0x00, ; 0x3B
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x70,0x00,0x3C,0x00,0x0F,0xC0,0x03,0xF0,0x00,0x3C,0x00,0x3C,0x00,0xF0,0x00,0xC0,0x03,0x00,0x0F,0x00,0x3C,0x00,0x70,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x3C
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x3D
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x0E,0x00,0x3C,0x00,0xF0,0x00,0xC0,0x03,0x00,0x0F,0x00,0x3C,0x00,0x3C,0x00,0x0F,0xC0,0x03,0xF0,0x00,0x3C,0x00,0x0E,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x3E
|
||||
.db 0x00,0x00,0x00,0x00,0xF8,0x07,0xFC,0x1F,0x0C,0x3C,0x0C,0x38,0x00,0x38,0x00,0x38,0x00,0x1C,0x00,0x1E,0x00,0x0F,0x80,0x07,0x80,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x00,0x00,0x00,0x00,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x3F
|
||||
.db 0x00,0x00,0x00,0x00,0xC0,0x0F,0xE0,0x1F,0x70,0x38,0x18,0x30,0x1C,0x3E,0x0C,0x31,0x8E,0x31,0xC6,0x30,0xC6,0x30,0xC6,0x38,0xC6,0x38,0xC6,0x3C,0xC6,0x34,0x8E,0xF7,0x8C,0xF3,0x1C,0x00,0x38,0x08,0xF0,0x0F,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x40
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0xC0,0x03,0xE0,0x03,0x60,0x07,0x60,0x07,0x70,0x06,0x30,0x0E,0x38,0x0E,0x38,0x1C,0x18,0x1C,0xFC,0x3F,0xFC,0x3F,0x0E,0x38,0x0E,0x70,0x0E,0x70,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x41
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x07,0xFC,0x0F,0x1C,0x1E,0x1C,0x1C,0x1C,0x1C,0x1C,0x0E,0xFC,0x07,0xFC,0x07,0x1C,0x1E,0x1C,0x3C,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x3C,0xFC,0x1F,0xFC,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x42
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x1F,0xF0,0x3F,0x78,0x30,0x3C,0x00,0x1C,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x1C,0x00,0x3C,0x00,0x78,0x20,0xF0,0x3F,0xC0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x43
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x07,0xFC,0x0F,0x1C,0x3C,0x1C,0x38,0x1C,0x78,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x38,0x1C,0x38,0x1C,0x1E,0xFC,0x0F,0xFC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x44
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x3F,0xF8,0x3F,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0xF8,0x1F,0xF8,0x1F,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0xF8,0x7F,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x45
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0xF8,0x7F,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0xF8,0x3F,0xF8,0x3F,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x46
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x1F,0xF0,0x3F,0x78,0x30,0x3C,0x00,0x1C,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x3F,0x0E,0x3F,0x0E,0x38,0x1C,0x38,0x3C,0x38,0x78,0x38,0xF0,0x3F,0xC0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x47
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0xFC,0x3F,0xFC,0x3F,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x48
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x1F,0xFC,0x1F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xFC,0x1F,0xFC,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x49
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x0F,0xF8,0x0F,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x04,0x07,0xFC,0x03,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x4A
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x78,0x1C,0x3C,0x1C,0x1E,0x1C,0x0F,0x1C,0x07,0x9C,0x03,0xDC,0x01,0xFC,0x00,0xDC,0x01,0xDC,0x03,0x9C,0x07,0x1C,0x0F,0x1C,0x1E,0x1C,0x3C,0x1C,0x78,0x1C,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x4B
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0xF8,0x3F,0xF8,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x4C
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x38,0x1E,0x3C,0x1E,0x3C,0x1E,0x3C,0x36,0x36,0x36,0x36,0x36,0x36,0x66,0x32,0x66,0x33,0x66,0x33,0xC6,0x31,0xC6,0x31,0xC6,0x31,0x06,0x30,0x06,0x30,0x06,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x4D
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x30,0x1C,0x30,0x3C,0x30,0x7C,0x30,0x7C,0x30,0xFC,0x30,0xEC,0x31,0xCC,0x31,0xCC,0x33,0x8C,0x37,0x0C,0x3F,0x0C,0x3E,0x0C,0x3E,0x0C,0x3C,0x0C,0x38,0x0C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x4E
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0xF0,0x0F,0x38,0x1C,0x1C,0x38,0x1C,0x38,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x1C,0x38,0x1C,0x38,0x38,0x1C,0xF0,0x0F,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x4F
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x1F,0xF8,0x3F,0x38,0x78,0x38,0x70,0x38,0x70,0x38,0x70,0x38,0x78,0x38,0x3C,0xF8,0x1F,0xF8,0x07,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x50
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0xF0,0x0F,0x38,0x1C,0x1C,0x38,0x1C,0x38,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x1C,0x38,0x1C,0x38,0x38,0x1C,0xF0,0x0F,0xE0,0x07,0x00,0x1E,0x00,0x78,0x00,0xF0,0x00,0x40,0x00,0x00, ; 0x51
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x07,0xFC,0x0F,0x1C,0x1E,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x0E,0xFC,0x07,0xFC,0x03,0x9C,0x07,0x1C,0x07,0x1C,0x0F,0x1C,0x1E,0x1C,0x3C,0x1C,0x38,0x1C,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x52
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x0F,0xF8,0x1F,0x3C,0x18,0x1C,0x00,0x1C,0x00,0x3C,0x00,0xF8,0x00,0xF0,0x07,0xC0,0x1F,0x00,0x3E,0x00,0x38,0x00,0x38,0x00,0x38,0x0C,0x1C,0xFC,0x1F,0xF0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x53
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x7F,0xFF,0x7F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x54
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x3C,0x78,0x38,0x38,0xF0,0x1F,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x55
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x0E,0x70,0x0E,0x70,0x1C,0x70,0x1C,0x38,0x3C,0x38,0x38,0x38,0x38,0x1C,0x70,0x1C,0x70,0x0C,0xE0,0x0E,0xE0,0x0E,0xE0,0x07,0xC0,0x07,0xC0,0x07,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x56
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x03,0xC0,0x07,0xC0,0x86,0x61,0xC6,0x63,0xC6,0x63,0xC6,0x63,0xC6,0x63,0x4E,0x76,0x6C,0x36,0x6C,0x36,0x6C,0x36,0x2C,0x3E,0x3C,0x3C,0x3C,0x1C,0x3C,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x57
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0xE0,0x3C,0x70,0x78,0x38,0x78,0x1C,0xF0,0x0E,0xE0,0x07,0xC0,0x03,0xC0,0x03,0xC0,0x07,0xE0,0x07,0x60,0x0F,0x30,0x1E,0x18,0x3C,0x1C,0x38,0x0E,0x78,0x07,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x58
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x0E,0x70,0x1C,0x30,0x1C,0x18,0x38,0x1C,0x78,0x0E,0x70,0x07,0xE0,0x03,0xE0,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x59
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x3F,0xFC,0x3F,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x07,0x80,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x5A
|
||||
.db 0x00,0x00,0xC0,0x3F,0xC0,0x3F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x3F,0xC0,0x3F,0x00,0x00, ; 0x5B
|
||||
.db 0x00,0x00,0x06,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x30,0x00,0x30,0x00,0x60,0x00,0x60,0x00,0xC0,0x00,0xC0,0x00,0x80,0x01,0x80,0x01,0x00,0x03,0x00,0x03,0x00,0x06,0x00,0x06,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x30,0x00,0x30,0x00,0x60,0x00,0x00, ; 0x5C
|
||||
.db 0x00,0x00,0xFC,0x03,0xFC,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0xFC,0x03,0xFC,0x03,0x00,0x00, ; 0x5D
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x80,0x03,0x80,0x03,0xC0,0x03,0xC0,0x06,0xE0,0x06,0x60,0x0C,0x30,0x0C,0x30,0x18,0x18,0x18,0x18,0x18,0x0C,0x30,0x0C,0x30,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x5E
|
||||
.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,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x5F
|
||||
.db 0xC0,0x01,0x80,0x03,0x00,0x07,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, ; 0x60
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0xF8,0x0F,0x18,0x1E,0x00,0x1C,0x00,0x1C,0xE0,0x1F,0xF0,0x1F,0x38,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x3C,0x1E,0xF8,0x7B,0xF0,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x61
|
||||
.db 0x00,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x9C,0x07,0xDC,0x1F,0x7C,0x1C,0x3C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x1C,0x3C,0x1E,0xFC,0x0F,0xCC,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x62
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x1F,0xF0,0x3F,0x78,0x20,0x38,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x3C,0x00,0x38,0x00,0xF8,0x20,0xF0,0x3F,0xC0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x63
|
||||
.db 0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0xC0,0x73,0xF0,0x7F,0x78,0x7C,0x38,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x3C,0x78,0x38,0x7C,0xF0,0x77,0xE0,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x64
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x07,0xF0,0x0F,0x78,0x1C,0x38,0x38,0x1C,0x38,0x1C,0x38,0xFC,0x3F,0xFC,0x3F,0x1C,0x00,0x1C,0x00,0x38,0x00,0x78,0x20,0xF0,0x3F,0xC0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x65
|
||||
.db 0x00,0x00,0x00,0xFF,0x80,0xFF,0xC0,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xFC,0x7F,0xFC,0x7F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x66
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x73,0xF0,0x7F,0x78,0x7C,0x38,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x3C,0x78,0x38,0x7C,0xF0,0x77,0xE0,0x73,0x00,0x70,0x00,0x38,0x18,0x3C,0xF8,0x1F,0xF0,0x07, ; 0x67
|
||||
.db 0x00,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x0F,0xDC,0x1F,0x7C,0x3C,0x3C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x68
|
||||
.db 0x00,0x00,0x80,0x03,0x80,0x03,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x03,0xFC,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x69
|
||||
.db 0x00,0x00,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x0F,0xF8,0x0F,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x04,0x07,0xFC,0x07,0xF8,0x01, ; 0x6A
|
||||
.db 0x00,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x3C,0x38,0x1E,0x38,0x0E,0x38,0x0F,0xB8,0x07,0xB8,0x03,0xF8,0x03,0xB8,0x03,0xB8,0x07,0x38,0x0F,0x38,0x0E,0x38,0x1E,0x38,0x3C,0x38,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x6B
|
||||
.db 0x00,0x00,0xF8,0x07,0xF8,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x6C
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCE,0x31,0xEE,0x79,0xFE,0x7F,0x9E,0x77,0x9E,0x73,0x8E,0x73,0x8E,0x73,0x8E,0x73,0x8E,0x73,0x8E,0x73,0x8E,0x73,0x8E,0x73,0x8E,0x73,0x8E,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x6D
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x0F,0xDC,0x1F,0x7C,0x3C,0x3C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x6E
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0xF8,0x0F,0x3C,0x1E,0x1C,0x1C,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1C,0x1C,0x3C,0x1E,0xF8,0x0F,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x6F
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9C,0x07,0xDC,0x1F,0x7C,0x1C,0x3C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x1C,0x3C,0x1E,0xFC,0x0F,0x9C,0x07,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00, ; 0x70
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x39,0xF8,0x3F,0x3C,0x3E,0x1C,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1E,0x3C,0x1C,0x3E,0xF8,0x3B,0xF0,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38, ; 0x71
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x3E,0x70,0x3F,0xF0,0x31,0xF0,0x30,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x72
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x0F,0xF0,0x1F,0x78,0x10,0x38,0x00,0x38,0x00,0xF8,0x01,0xF0,0x07,0x80,0x1F,0x00,0x3C,0x00,0x38,0x00,0x38,0x18,0x3C,0xF8,0x1F,0xF0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x73
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0xE0,0x00,0xFC,0x3F,0xFC,0x3F,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x01,0xC0,0x3F,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x74
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x3C,0x3C,0x3E,0xF8,0x3B,0xF0,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x75
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x70,0x1C,0x38,0x1C,0x38,0x3C,0x38,0x38,0x18,0x38,0x1C,0x70,0x1C,0x70,0x0C,0xE0,0x0E,0xE0,0x0E,0xE0,0x06,0xC0,0x07,0xC0,0x07,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x76
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x87,0xC3,0x87,0x43,0xC6,0x63,0xC6,0x63,0x46,0x62,0x6E,0x66,0x6E,0x26,0x6C,0x36,0x2C,0x36,0x3C,0x3C,0x3C,0x3C,0x3C,0x1C,0x18,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x77
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x30,0x3C,0x18,0x78,0x0C,0x70,0x0E,0xF0,0x06,0xE0,0x03,0xC0,0x03,0xC0,0x03,0xE0,0x07,0x70,0x0F,0x30,0x0E,0x38,0x1E,0x1C,0x3C,0x0E,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x78
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x70,0x1C,0x30,0x1C,0x38,0x38,0x18,0x38,0x1C,0x78,0x1C,0x70,0x0E,0xF0,0x0E,0xE0,0x07,0xE0,0x07,0xC0,0x03,0xC0,0x03,0xC0,0x01,0x80,0x01,0xC0,0x01,0xC0,0x00,0xE0,0x00,0x7C,0x00,0x3C,0x00, ; 0x79
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x3F,0xFC,0x3F,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x07,0x80,0x03,0xC0,0x01,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0xFC,0x3F,0xFC,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x7A
|
||||
.db 0x00,0x00,0x00,0x1F,0x80,0x1F,0xC0,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0xC0,0x01,0xF8,0x00,0xF8,0x00,0xC0,0x01,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x03,0x80,0x1F,0x00,0x1F,0x00,0x00, ; 0x7B
|
||||
.db 0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00, ; 0x7C
|
||||
.db 0x00,0x00,0x7C,0x00,0xFC,0x00,0xE0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x01,0x80,0x0F,0x80,0x0F,0xC0,0x01,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xE0,0x01,0xFC,0x00,0x7C,0x00,0x00,0x00, ; 0x7D
|
||||
.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,0x78,0x60,0xFC,0x63,0xC6,0x3F,0x06,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x7E
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x7F
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x1F,0xF0,0x3F,0x78,0x30,0x3C,0x00,0x1C,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x1C,0x00,0x3C,0x00,0x78,0x20,0xF0,0x3F,0xC0,0x1F,0x00,0x02,0x00,0x07,0x00,0x0C,0x00,0x0C,0x80,0x07, ; 0x80
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x06,0x30,0x06,0x00,0x00,0x00,0x00,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x3C,0x3C,0x3E,0xF8,0x3B,0xF0,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x81
|
||||
.db 0x00,0x00,0x00,0x0C,0x00,0x06,0x00,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0xC0,0x07,0xF0,0x0F,0x78,0x1C,0x38,0x38,0x1C,0x38,0x1C,0x38,0xFC,0x3F,0xFC,0x3F,0x1C,0x00,0x1C,0x00,0x38,0x00,0x78,0x20,0xF0,0x3F,0xC0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x82
|
||||
.db 0x00,0x00,0xC0,0x01,0x60,0x03,0x30,0x06,0x18,0x0C,0x00,0x00,0x00,0x00,0xE0,0x07,0xF8,0x0F,0x18,0x1E,0x00,0x1C,0x00,0x1C,0xE0,0x1F,0xF0,0x1F,0x38,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x3C,0x1E,0xF8,0x7B,0xF0,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x83
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x0C,0x60,0x0C,0x00,0x00,0x00,0x00,0xE0,0x07,0xF8,0x0F,0x18,0x1E,0x00,0x1C,0x00,0x1C,0xE0,0x1F,0xF0,0x1F,0x38,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x3C,0x1E,0xF8,0x7B,0xF0,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x84
|
||||
.db 0x00,0x00,0x30,0x00,0x60,0x00,0xC0,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0xE0,0x07,0xF8,0x0F,0x18,0x1E,0x00,0x1C,0x00,0x1C,0xE0,0x1F,0xF0,0x1F,0x38,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x3C,0x1E,0xF8,0x7B,0xF0,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x85
|
||||
.db 0xC0,0x01,0x20,0x02,0x20,0x02,0x20,0x02,0xC0,0x01,0x00,0x00,0x00,0x00,0xE0,0x07,0xF8,0x0F,0x18,0x1E,0x00,0x1C,0x00,0x1C,0xE0,0x1F,0xF0,0x1F,0x38,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x3C,0x1E,0xF8,0x7B,0xF0,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x86
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x1F,0xF0,0x3F,0x78,0x20,0x38,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x3C,0x00,0x38,0x00,0xF8,0x20,0xF0,0x3F,0xC0,0x1F,0x00,0x01,0x80,0x03,0x00,0x06,0x00,0x06,0xC0,0x03, ; 0x87
|
||||
.db 0x00,0x00,0xC0,0x01,0x60,0x03,0x30,0x06,0x18,0x0C,0x00,0x00,0x00,0x00,0xC0,0x07,0xF0,0x0F,0x78,0x1C,0x38,0x38,0x1C,0x38,0x1C,0x38,0xFC,0x3F,0xFC,0x3F,0x1C,0x00,0x1C,0x00,0x38,0x00,0x78,0x20,0xF0,0x3F,0xC0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x88
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x0C,0x60,0x0C,0x00,0x00,0x00,0x00,0xC0,0x07,0xF0,0x0F,0x78,0x1C,0x38,0x38,0x1C,0x38,0x1C,0x38,0xFC,0x3F,0xFC,0x3F,0x1C,0x00,0x1C,0x00,0x38,0x00,0x78,0x20,0xF0,0x3F,0xC0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x89
|
||||
.db 0x00,0x00,0x30,0x00,0x60,0x00,0xC0,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0xC0,0x07,0xF0,0x0F,0x78,0x1C,0x38,0x38,0x1C,0x38,0x1C,0x38,0xFC,0x3F,0xFC,0x3F,0x1C,0x00,0x1C,0x00,0x38,0x00,0x78,0x20,0xF0,0x3F,0xC0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x8A
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x06,0x30,0x06,0x00,0x00,0x00,0x00,0xFC,0x03,0xFC,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x8B
|
||||
.db 0x00,0x00,0x80,0x03,0xC0,0x06,0x60,0x0C,0x30,0x18,0x00,0x00,0x00,0x00,0xFC,0x03,0xFC,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x8C
|
||||
.db 0x00,0x00,0x60,0x00,0xC0,0x00,0x80,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0xFC,0x03,0xFC,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x8D
|
||||
.db 0x30,0x0C,0x30,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0xC0,0x03,0xE0,0x03,0x60,0x07,0x60,0x07,0x70,0x06,0x30,0x0E,0x38,0x0E,0x38,0x1C,0x18,0x1C,0xFC,0x3F,0xFC,0x3F,0x0E,0x38,0x0E,0x70,0x0E,0x70,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x8E
|
||||
.db 0x80,0x03,0x40,0x04,0x40,0x04,0x40,0x04,0x80,0x03,0x80,0x03,0xC0,0x07,0xC0,0x07,0xE0,0x06,0x60,0x0E,0x60,0x0E,0x70,0x0C,0x30,0x1C,0x38,0x1C,0x38,0x38,0xFC,0x3F,0xFC,0x3F,0x1C,0x70,0x0E,0x70,0x0E,0x70,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x8F
|
||||
.db 0x00,0x0E,0x00,0x07,0x80,0x03,0x00,0x00,0x00,0x00,0xF8,0x3F,0xF8,0x3F,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0xF8,0x1F,0xF8,0x1F,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0xF8,0x7F,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x90
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x3C,0xFC,0x7F,0x80,0x67,0x80,0xE3,0x80,0xE3,0xF0,0xFF,0xFC,0xFF,0x9C,0x03,0x8E,0x03,0x8E,0x03,0x8E,0x03,0x9E,0x87,0xFC,0xFF,0x78,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x91
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3F,0xC0,0x3F,0xC0,0x07,0xE0,0x07,0x60,0x07,0x60,0x07,0x70,0x07,0x30,0x3F,0x38,0x3F,0x18,0x07,0x1C,0x07,0xFC,0x07,0xFC,0x07,0x06,0x07,0x06,0x7F,0x03,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x92
|
||||
.db 0x00,0x00,0xC0,0x01,0x60,0x03,0x30,0x06,0x18,0x0C,0x00,0x00,0x00,0x00,0xE0,0x03,0xF8,0x0F,0x3C,0x1E,0x1C,0x1C,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1C,0x1C,0x3C,0x1E,0xF8,0x0F,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x93
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x06,0x30,0x06,0x00,0x00,0x00,0x00,0xE0,0x03,0xF8,0x0F,0x3C,0x1E,0x1C,0x1C,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1C,0x1C,0x3C,0x1E,0xF8,0x0F,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x94
|
||||
.db 0x00,0x00,0x30,0x00,0x60,0x00,0xC0,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0xE0,0x03,0xF8,0x0F,0x3C,0x1E,0x1C,0x1C,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1C,0x1C,0x3C,0x1E,0xF8,0x0F,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x95
|
||||
.db 0x00,0x00,0xC0,0x01,0x60,0x03,0x30,0x06,0x18,0x0C,0x00,0x00,0x00,0x00,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x3C,0x3C,0x3E,0xF8,0x3B,0xF0,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x96
|
||||
.db 0x00,0x00,0x30,0x00,0x60,0x00,0xC0,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x3C,0x3C,0x3E,0xF8,0x3B,0xF0,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x97
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x06,0x30,0x06,0x00,0x00,0x00,0x00,0x1E,0x70,0x1C,0x30,0x1C,0x38,0x38,0x18,0x38,0x1C,0x78,0x1C,0x70,0x0E,0xF0,0x0E,0xE0,0x07,0xE0,0x07,0xC0,0x03,0xC0,0x03,0xC0,0x01,0x80,0x01,0xC0,0x01,0xC0,0x00,0xE0,0x00,0x7C,0x00,0x3C,0x00, ; 0x98
|
||||
.db 0x30,0x0C,0x30,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0xF0,0x0F,0x38,0x1C,0x1C,0x38,0x1C,0x38,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x1C,0x38,0x1C,0x38,0x38,0x1C,0xF0,0x0F,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x99
|
||||
.db 0x60,0x18,0x60,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x3C,0x78,0x38,0x38,0xF0,0x1F,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x9A
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x33,0xF8,0x1F,0x3C,0x1E,0x1C,0x1E,0x0E,0x3B,0x0E,0x39,0x8E,0x39,0xCE,0x38,0x6E,0x38,0x6E,0x38,0x3C,0x1C,0x3C,0x1E,0xFC,0x0F,0xE6,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x9B
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x3E,0x80,0x3F,0x80,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xF0,0x0F,0xF0,0x0F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xE0,0x00,0x70,0x00,0xF8,0x3F,0xF8,0x3F,0xF8,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x9C
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x67,0xF0,0x3F,0x38,0x1C,0x1C,0x3C,0x1C,0x3C,0x0E,0x76,0x0E,0x73,0x8E,0x71,0x8E,0x71,0xCE,0x70,0x6E,0x70,0x3C,0x38,0x3C,0x38,0x38,0x1C,0xFC,0x0F,0xE6,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x9D
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x20,0x0E,0x70,0x1C,0x38,0x38,0x1C,0x70,0x0E,0xE0,0x07,0xC0,0x03,0xC0,0x03,0xE0,0x07,0x70,0x0E,0x38,0x1C,0x1C,0x38,0x0E,0x70,0x04,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x9E
|
||||
.db 0x00,0x00,0x00,0x3F,0x80,0x3F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xF8,0x1F,0xF8,0x1F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xFE,0x00,0x7E,0x00, ; 0x9F
|
||||
.db 0x00,0x00,0x00,0x06,0x00,0x03,0x80,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0xF8,0x0F,0x18,0x1E,0x00,0x1C,0x00,0x1C,0xE0,0x1F,0xF0,0x1F,0x38,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x3C,0x1E,0xF8,0x7B,0xF0,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xA0
|
||||
.db 0x00,0x00,0x00,0x06,0x00,0x03,0x80,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0xFC,0x03,0xFC,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xA1
|
||||
.db 0x00,0x00,0x00,0x06,0x00,0x03,0x80,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0xF8,0x0F,0x3C,0x1E,0x1C,0x1C,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1C,0x1C,0x3C,0x1E,0xF8,0x0F,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xA2
|
||||
.db 0x00,0x00,0x00,0x06,0x00,0x03,0x80,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x3C,0x3C,0x3E,0xF8,0x3B,0xF0,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xA3
|
||||
.db 0x00,0x00,0x00,0x00,0xE0,0x0C,0xF0,0x0F,0x30,0x07,0x00,0x00,0x00,0x00,0x1C,0x0F,0xDC,0x1F,0x7C,0x3C,0x3C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xA4
|
||||
.db 0xE0,0x0C,0xF0,0x0F,0x30,0x07,0x00,0x00,0x00,0x00,0x1C,0x30,0x1C,0x30,0x3C,0x30,0x7C,0x30,0x7C,0x30,0xFC,0x30,0xEC,0x31,0xCC,0x31,0xCC,0x33,0x8C,0x37,0x0C,0x3F,0x0C,0x3E,0x0C,0x3E,0x0C,0x3C,0x0C,0x38,0x0C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xA5
|
||||
.db 0x00,0x00,0x00,0x00,0xE0,0x03,0xF0,0x07,0x10,0x06,0xE0,0x07,0xF0,0x07,0x38,0x06,0x18,0x06,0x18,0x07,0xF8,0x1F,0xF0,0x1C,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, ; 0xA6
|
||||
.db 0x00,0x00,0x00,0x00,0xE0,0x07,0xF0,0x0F,0x38,0x1C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x38,0x1C,0xF0,0x0F,0xE0,0x07,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, ; 0xA7
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x80,0x03,0x80,0x03,0x00,0x00,0x00,0x00,0x80,0x03,0x80,0x03,0x80,0x03,0xC0,0x01,0xE0,0x01,0xF0,0x00,0x78,0x00,0x38,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x30,0x3C,0x30,0xF8,0x3F,0xE0,0x1F, ; 0xA8
|
||||
.db 0x00,0x00,0x00,0x00,0xE0,0x03,0x10,0x04,0xE8,0x09,0x24,0x12,0x24,0x12,0xE4,0x11,0x24,0x11,0x24,0x11,0x28,0x0B,0x10,0x04,0xE0,0x03,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, ; 0xA9
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0xFE,0x7F,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xAA
|
||||
.db 0x00,0x00,0x00,0x00,0x1F,0x0C,0x1F,0x06,0x1C,0x06,0x1C,0x03,0x1C,0x03,0x9C,0x01,0x9C,0x01,0xDC,0x00,0xDC,0x00,0x7C,0x3C,0x30,0xFE,0x30,0xE0,0x18,0xE0,0x18,0x70,0x0C,0x38,0x0C,0x0C,0x06,0x06,0x06,0xFE,0x03,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xAB
|
||||
.db 0x00,0x00,0x00,0x00,0x1F,0x18,0x1F,0x0C,0x1C,0x0C,0x1C,0x06,0x1C,0x06,0x1C,0x03,0x1C,0x03,0x9C,0x01,0x9C,0x01,0xDC,0x38,0x60,0x3C,0x60,0x3A,0x30,0x39,0xB0,0x39,0xD8,0x38,0xD8,0xFF,0x0C,0x38,0x0C,0x38,0x06,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xAC
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x00,0x00,0x00,0x00,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01, ; 0xAD
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x10,0xE0,0x38,0x70,0x1C,0x38,0x0E,0x1C,0x07,0x0C,0x03,0x8E,0x03,0x1C,0x07,0x38,0x0E,0x70,0x1C,0xE0,0x38,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xAE
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x9C,0x03,0x38,0x07,0x70,0x0E,0xE0,0x1C,0xC0,0x39,0xC0,0x18,0xE0,0x1C,0x70,0x0E,0x38,0x07,0x9C,0x03,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xAF
|
||||
.db 0xE7,0x1C,0xE7,0x1C,0xE7,0x1C,0x00,0x00,0x00,0x00,0xE7,0x1C,0xE7,0x1C,0xE7,0x1C,0x00,0x00,0x00,0x00,0xE7,0x1C,0xE7,0x1C,0xE7,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x1C,0xE7,0x1C,0xE7,0x1C,0x00,0x00,0x00,0x00,0xE7,0x1C,0xE7,0x1C,0xE7,0x1C,0x00,0x00,0x00,0x00, ; 0xB0
|
||||
.db 0x38,0xE7,0x38,0xE7,0x38,0xE7,0xE7,0x1C,0xE7,0x1C,0xFF,0xFF,0x38,0xE7,0x38,0xE7,0xE7,0x1C,0xE7,0x1C,0xFF,0xFF,0x38,0xE7,0x38,0xE7,0xE7,0x1C,0xE7,0x1C,0xE7,0x1C,0x38,0xE7,0x38,0xE7,0xFF,0xFF,0xE7,0x1C,0xE7,0x1C,0x38,0xE7,0x38,0xE7,0xFF,0xFF,0xE7,0x1C,0xE7,0x1C, ; 0xB1
|
||||
.db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0x1C,0xE7,0x1C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0x1C,0xE7,0x1C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0x1C,0xE7,0x1C,0xE7,0x1C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0x1C,0xE7,0x1C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0x1C,0xE7,0x1C, ; 0xB2
|
||||
.db 0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, ; 0xB3
|
||||
.db 0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xFF,0x01,0xFF,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, ; 0xB4
|
||||
.db 0x00,0x07,0x80,0x03,0xC0,0x01,0x00,0x00,0x00,0x00,0xC0,0x01,0xC0,0x03,0xE0,0x03,0x60,0x07,0x60,0x07,0x70,0x06,0x30,0x0E,0x38,0x0E,0x38,0x1C,0x18,0x1C,0xFC,0x3F,0xFC,0x3F,0x0E,0x38,0x0E,0x70,0x0E,0x70,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xB5
|
||||
.db 0xE0,0x03,0x70,0x07,0x38,0x0E,0x00,0x00,0x00,0x00,0xC0,0x01,0xC0,0x03,0xE0,0x03,0x60,0x07,0x60,0x07,0x70,0x06,0x30,0x0E,0x38,0x0E,0x38,0x1C,0x18,0x1C,0xFC,0x3F,0xFC,0x3F,0x0E,0x38,0x0E,0x70,0x0E,0x70,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xB6
|
||||
.db 0xE0,0x00,0xC0,0x01,0x80,0x03,0x00,0x00,0x00,0x00,0xC0,0x01,0xC0,0x03,0xE0,0x03,0x60,0x07,0x60,0x07,0x70,0x06,0x30,0x0E,0x38,0x0E,0x38,0x1C,0x18,0x1C,0xFC,0x3F,0xFC,0x3F,0x0E,0x38,0x0E,0x70,0x0E,0x70,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xB7
|
||||
.db 0x00,0x00,0x00,0x00,0xE0,0x0F,0xF0,0x1F,0x38,0x38,0x1C,0x70,0x8C,0x6F,0xEE,0xEF,0x66,0xC8,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x66,0xC8,0xEE,0xEF,0x8C,0x67,0x1C,0x70,0x38,0x38,0xF0,0x1F,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xB8
|
||||
.db 0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x7F,0x06,0x7F,0x06,0x00,0x06,0x00,0x06,0x7F,0x06,0x7F,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06, ; 0xB9
|
||||
.db 0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06, ; 0xBA
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0xFF,0x07,0x00,0x06,0x00,0x06,0x7F,0x06,0x7F,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06, ; 0xBB
|
||||
.db 0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x7F,0x06,0x7F,0x06,0x00,0x06,0x00,0x06,0xFF,0x07,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xBC
|
||||
.db 0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0xC0,0x0F,0xF0,0x0F,0xB8,0x09,0xB8,0x01,0x9C,0x01,0x9C,0x01,0x9C,0x01,0x9C,0x01,0x9C,0x01,0x9C,0x01,0x9C,0x01,0xB8,0x01,0xF8,0x09,0xF0,0x0F,0xE0,0x07,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xBD
|
||||
.db 0x00,0x00,0x00,0x00,0x0E,0xE0,0x1C,0x60,0x38,0x30,0x38,0x30,0x70,0x18,0xE0,0x0C,0xE0,0x0C,0xC0,0x07,0x80,0x03,0xF8,0x3F,0xF8,0x3F,0x80,0x03,0x80,0x03,0x80,0x03,0xF8,0x3F,0xF8,0x3F,0x80,0x03,0x80,0x03,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xBE
|
||||
.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,0xFF,0x01,0xFF,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, ; 0xBF
|
||||
.db 0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0xFF,0x80,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xC0
|
||||
.db 0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xC1
|
||||
.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,0xFF,0xFF,0xFF,0xFF,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, ; 0xC2
|
||||
.db 0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0xFF,0x80,0xFF,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, ; 0xC3
|
||||
.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,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xC4
|
||||
.db 0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xFF,0xFF,0xFF,0xFF,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, ; 0xC5
|
||||
.db 0x00,0x00,0x00,0x00,0xE0,0x0C,0xF0,0x0F,0x30,0x07,0x00,0x00,0x00,0x00,0xE0,0x07,0xF8,0x0F,0x18,0x1E,0x00,0x1C,0x00,0x1C,0xE0,0x1F,0xF0,0x1F,0x38,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x3C,0x1E,0xF8,0x7B,0xF0,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xC6
|
||||
.db 0xE0,0x0C,0xF0,0x0F,0x30,0x07,0x00,0x00,0x00,0x00,0xC0,0x01,0xC0,0x03,0xE0,0x03,0x60,0x07,0x60,0x07,0x70,0x06,0x30,0x0E,0x38,0x0E,0x38,0x1C,0x18,0x1C,0xFC,0x3F,0xFC,0x3F,0x0E,0x38,0x0E,0x70,0x0E,0x70,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xC7
|
||||
.db 0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xFE,0x60,0xFE,0x60,0x00,0x60,0x00,0xE0,0xFF,0xE0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xC8
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xE0,0xFF,0x60,0x00,0x60,0x00,0x60,0xFE,0x60,0xFE,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06, ; 0xC9
|
||||
.db 0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x7F,0xFE,0x7F,0xFE,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xCA
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x7F,0xFE,0x7F,0xFE,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06, ; 0xCB
|
||||
.db 0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xFE,0x60,0xFE,0x60,0x00,0x60,0x00,0x60,0xFE,0x60,0xFE,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06, ; 0xCC
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xCD
|
||||
.db 0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x7F,0xFE,0x7F,0xFE,0x00,0x00,0x00,0x00,0x7F,0xFE,0x7F,0xFE,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06, ; 0xCE
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x20,0xCC,0x33,0xF8,0x1F,0x30,0x0C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x30,0x0C,0xF8,0x1F,0xCC,0x33,0x04,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xCF
|
||||
.db 0x00,0x00,0x1E,0x03,0xFE,0x03,0xF0,0x01,0xF0,0x03,0x18,0x07,0x00,0x0E,0xE0,0x0F,0xF8,0x1F,0x3C,0x1E,0x1C,0x3C,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1C,0x1C,0x3C,0x1E,0xF8,0x0F,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xD0
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x07,0xFC,0x0F,0x1C,0x3C,0x1C,0x38,0x1C,0x78,0x1C,0x70,0x1C,0x70,0xFF,0x70,0xFF,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x38,0x1C,0x38,0x1C,0x1E,0xFC,0x0F,0xFC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xD1
|
||||
.db 0xC0,0x07,0xE0,0x0E,0x70,0x1C,0x00,0x00,0x00,0x00,0xF8,0x3F,0xF8,0x3F,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0xF8,0x1F,0xF8,0x1F,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0xF8,0x7F,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xD2
|
||||
.db 0x60,0x18,0x60,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x3F,0xF8,0x3F,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0xF8,0x1F,0xF8,0x1F,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0xF8,0x7F,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xD3
|
||||
.db 0xC0,0x01,0x80,0x03,0x00,0x07,0x00,0x00,0x00,0x00,0xF8,0x3F,0xF8,0x3F,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0xF8,0x1F,0xF8,0x1F,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0xF8,0x7F,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xD4
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x03,0xFC,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xD5
|
||||
.db 0x00,0x07,0x80,0x03,0xC0,0x01,0x00,0x00,0x00,0x00,0xFC,0x1F,0xFC,0x1F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xFC,0x1F,0xFC,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xD6
|
||||
.db 0xE0,0x03,0x70,0x07,0x38,0x0E,0x00,0x00,0x00,0x00,0xFC,0x1F,0xFC,0x1F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xFC,0x1F,0xFC,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xD7
|
||||
.db 0x30,0x0C,0x30,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x1F,0xFC,0x1F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xFC,0x1F,0xFC,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xD8
|
||||
.db 0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xFF,0x01,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xD9
|
||||
.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,0x80,0xFF,0x80,0xFF,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, ; 0xDA
|
||||
.db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, ; 0xDB
|
||||
.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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, ; 0xDC
|
||||
.db 0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00, ; 0xDD
|
||||
.db 0xE0,0x00,0xC0,0x01,0x80,0x03,0x00,0x00,0x00,0x00,0xFC,0x1F,0xFC,0x1F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xFC,0x1F,0xFC,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xDE
|
||||
.db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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, ; 0xDF
|
||||
.db 0x00,0x07,0x80,0x03,0xC0,0x01,0x00,0x00,0x00,0x00,0xE0,0x07,0xF0,0x0F,0x38,0x1C,0x1C,0x38,0x1C,0x38,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x1C,0x38,0x1C,0x38,0x38,0x1C,0xF0,0x0F,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xE0
|
||||
.db 0x00,0x00,0xF0,0x03,0xF8,0x07,0x3C,0x0E,0x1C,0x0E,0x1C,0x0E,0x1C,0x06,0x1C,0x07,0x9C,0x03,0x9C,0x03,0x9C,0x03,0x9C,0x07,0x1C,0x0F,0x1C,0x1E,0x1C,0x3C,0x1C,0x78,0x1C,0x70,0x1C,0x70,0x9C,0x70,0x9C,0x3F,0x1C,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xE1
|
||||
.db 0xE0,0x03,0x70,0x07,0x38,0x0E,0x00,0x00,0x00,0x00,0xE0,0x07,0xF0,0x0F,0x38,0x1C,0x1C,0x38,0x1C,0x38,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x1C,0x38,0x1C,0x38,0x38,0x1C,0xF0,0x0F,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xE2
|
||||
.db 0xE0,0x00,0xC0,0x01,0x80,0x03,0x00,0x00,0x00,0x00,0xE0,0x07,0xF0,0x0F,0x38,0x1C,0x1C,0x38,0x1C,0x38,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x1C,0x38,0x1C,0x38,0x38,0x1C,0xF0,0x0F,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xE3
|
||||
.db 0x00,0x00,0x00,0x00,0xE0,0x0C,0xF0,0x0F,0x30,0x07,0x00,0x00,0x00,0x00,0xE0,0x03,0xF8,0x0F,0x3C,0x1E,0x1C,0x1C,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1C,0x1C,0x3C,0x1E,0xF8,0x0F,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xE4
|
||||
.db 0xE0,0x0C,0xF0,0x0F,0x30,0x07,0x00,0x00,0x00,0x00,0xE0,0x07,0xF0,0x0F,0x38,0x1C,0x1C,0x38,0x1C,0x38,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x1C,0x38,0x1C,0x38,0x38,0x1C,0xF0,0x0F,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xE5
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x3C,0x3C,0x7C,0x3E,0xFC,0x3B,0xDC,0x7B,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00, ; 0xE6
|
||||
.db 0x00,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x9C,0x07,0xDC,0x1F,0x7C,0x1C,0x3C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x1C,0x3C,0x1E,0xFC,0x0F,0x9C,0x07,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00, ; 0xE7
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0xF8,0x1F,0xF8,0x3F,0x38,0x78,0x38,0x70,0x38,0x70,0x38,0x70,0x38,0x78,0x38,0x3C,0xF8,0x1F,0xF8,0x07,0x38,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xE8
|
||||
.db 0x00,0x07,0x80,0x03,0xC0,0x01,0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x3C,0x78,0x38,0x38,0xF0,0x1F,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xE9
|
||||
.db 0xE0,0x03,0x70,0x07,0x38,0x0E,0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x3C,0x78,0x38,0x38,0xF0,0x1F,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xEA
|
||||
.db 0xE0,0x00,0xC0,0x01,0x80,0x03,0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x3C,0x78,0x38,0x38,0xF0,0x1F,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xEB
|
||||
.db 0x00,0x00,0x00,0x06,0x00,0x03,0x80,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x1E,0x70,0x1C,0x30,0x1C,0x38,0x38,0x18,0x38,0x1C,0x78,0x1C,0x70,0x0E,0xF0,0x0E,0xE0,0x07,0xE0,0x07,0xC0,0x03,0xC0,0x03,0xC0,0x01,0x80,0x01,0xC0,0x01,0xC0,0x00,0xE0,0x00,0x7C,0x00,0x3C,0x00, ; 0xEC
|
||||
.db 0x00,0x07,0x80,0x03,0xC0,0x01,0x00,0x00,0x00,0x00,0x07,0xE0,0x0E,0x70,0x1C,0x30,0x1C,0x18,0x38,0x1C,0x78,0x0E,0x70,0x07,0xE0,0x03,0xE0,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xED
|
||||
.db 0xFF,0xFF,0xFF,0xFF,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, ; 0xEE
|
||||
.db 0x80,0x03,0xC0,0x01,0xE0,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, ; 0xEF
|
||||
.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,0xF8,0x1F,0xF8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xF0
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xFE,0x7F,0xFE,0x7F,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0xFE,0x7F,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xF1
|
||||
.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,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF, ; 0xF2
|
||||
.db 0x00,0x00,0x00,0x00,0x7E,0xE0,0xFE,0x70,0xE0,0x38,0xE0,0x38,0x3C,0x1C,0x7C,0x1C,0xE0,0x0E,0xE0,0x07,0xFE,0x07,0xBE,0x3B,0xC0,0x3D,0xC0,0x3B,0xE0,0x39,0xF0,0x39,0xF0,0x38,0xF8,0xFF,0x38,0x38,0x1C,0x38,0x0E,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xF3
|
||||
.db 0x00,0x00,0x00,0x00,0xF8,0x1F,0xFC,0x1F,0xFE,0x18,0xFE,0x18,0xFE,0x18,0xFE,0x18,0xFE,0x18,0xFC,0x18,0xF8,0x18,0xF0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0x00,0x00, ; 0xF4
|
||||
.db 0x00,0x00,0x00,0x00,0xC0,0x1F,0xF0,0x1F,0x78,0x10,0x38,0x00,0x38,0x00,0x78,0x00,0xF0,0x01,0xE0,0x07,0xF0,0x0F,0x30,0x1E,0x38,0x3C,0x38,0x38,0x78,0x38,0xF0,0x19,0xE0,0x0F,0x80,0x0F,0x00,0x1E,0x00,0x3C,0x00,0x38,0x00,0x38,0x18,0x3C,0xF8,0x1F,0xE0,0x07,0x00,0x00, ; 0xF5
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xF6
|
||||
.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,0x01,0x80,0x03,0x00,0x06,0x00,0x06,0xC0,0x03, ; 0xF7
|
||||
.db 0x00,0x00,0x00,0x00,0xE0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0xE0,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, ; 0xF8
|
||||
.db 0x30,0x0C,0x30,0x0C,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, ; 0xF9
|
||||
.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,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xFA
|
||||
.db 0x00,0x00,0x00,0x00,0xE0,0x03,0xE0,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,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, ; 0xFB
|
||||
.db 0x00,0x00,0x00,0x00,0xE0,0x0F,0xF0,0x1F,0x10,0x1C,0x00,0x1C,0xC0,0x07,0xC0,0x0F,0x00,0x1C,0x00,0x1C,0xF0,0x1F,0xF0,0x07,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, ; 0xFC
|
||||
.db 0x00,0x00,0x00,0x00,0xE0,0x07,0xF0,0x1F,0x10,0x1C,0x00,0x1C,0x00,0x0E,0x80,0x07,0xC0,0x01,0x70,0x00,0xF0,0x1F,0xF0,0x1F,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, ; 0xFD
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xFE
|
||||
.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,0x00,0x00,0x00,0x00 ; 0xFF
|
||||
@@ -1,258 +0,0 @@
|
||||
; ***************************************************************************
|
||||
; copyright : (C) 2025 by Martin Preuss
|
||||
; email : martin@libchipcard.de
|
||||
;
|
||||
; ***************************************************************************
|
||||
; * This file is part of the project "AqHome". *
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; This is a font from the project LCD_fonts at
|
||||
; https://github.com/basti79/LCD-fonts.git
|
||||
; which in turn is based on a post by Benedikt K. in a forum post on
|
||||
; https://www.mikrocontroller.net/topic/54860
|
||||
; ***************************************************************************
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; code
|
||||
|
||||
.cseg
|
||||
|
||||
|
||||
|
||||
font4_12x16:
|
||||
; header
|
||||
.dw font12x16MonoHandlerFn ; handlerFn
|
||||
.dw 384 ; needed buffer size
|
||||
.db 12, 16 ; width, height of chars
|
||||
.db 32, 224 ; first char, num of chars in font
|
||||
; data (12x16_horizontal_LSB_2)
|
||||
.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, ; 0x20
|
||||
.db 0x60,0x00,0x60,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00, ; 0x21
|
||||
.db 0x00,0x00,0x00,0x00,0x98,0x01,0x98,0x01,0x98,0x01,0x98,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x22
|
||||
.db 0x00,0x00,0x60,0x06,0x60,0x06,0x60,0x06,0xFC,0x0F,0x30,0x03,0x30,0x03,0x98,0x01,0x98,0x01,0xFE,0x03,0xCC,0x00,0xCC,0x00,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x23
|
||||
.db 0x60,0x00,0x60,0x00,0xF8,0x01,0xFC,0x03,0x6C,0x00,0x6C,0x00,0xFC,0x01,0xF8,0x03,0x60,0x03,0x60,0x03,0xFC,0x03,0xF8,0x01,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00, ; 0x24
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x08,0x1C,0x0C,0x1C,0x0E,0x1C,0x07,0x80,0x03,0xC0,0x01,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x07,0x0E,0x07,0x06,0x07,0x00,0x00,0x00,0x00, ; 0x25
|
||||
.db 0x00,0x00,0xE0,0x00,0xB0,0x01,0x98,0x01,0x98,0x01,0xD8,0x00,0x70,0x00,0x78,0x00,0x7C,0x00,0xCC,0x06,0xCC,0x03,0x8C,0x01,0xDC,0x03,0x78,0x06,0x00,0x00,0x00,0x00, ; 0x26
|
||||
.db 0x70,0x00,0x70,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x27
|
||||
.db 0xC0,0x01,0x60,0x00,0x70,0x00,0x30,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x30,0x00,0x70,0x00,0x60,0x00,0xC0,0x01,0x00,0x00,0x00,0x00, ; 0x28
|
||||
.db 0x38,0x00,0x60,0x00,0xE0,0x00,0xC0,0x00,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0xE0,0x00,0x60,0x00,0x38,0x00,0x00,0x00,0x00,0x00, ; 0x29
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0x03,0x6C,0x03,0xF8,0x01,0xF0,0x00,0xFC,0x03,0xF0,0x00,0xF8,0x01,0x6C,0x03,0x6C,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x2A
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xFC,0x03,0xFC,0x03,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x2B
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x60,0x00,0x30,0x00, ; 0x2C
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x03,0xFC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x2D
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00, ; 0x2E
|
||||
.db 0x00,0x00,0x00,0x08,0x00,0x0C,0x00,0x0E,0x00,0x07,0x80,0x03,0xC0,0x01,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x2F
|
||||
.db 0xF0,0x01,0xFC,0x07,0x0C,0x06,0x06,0x0E,0x06,0x0F,0x86,0x0D,0xC6,0x0C,0x66,0x0C,0x36,0x0C,0x1E,0x0C,0x0E,0x0C,0x0C,0x06,0xFC,0x07,0xF0,0x01,0x00,0x00,0x00,0x00, ; 0x30
|
||||
.db 0xC0,0x00,0xE0,0x00,0xF8,0x00,0xF8,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xF8,0x07,0xF8,0x07,0x00,0x00,0x00,0x00, ; 0x31
|
||||
.db 0xF8,0x03,0xFC,0x07,0x0E,0x0E,0x06,0x0C,0x06,0x0E,0x00,0x07,0x80,0x03,0xC0,0x01,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0xFE,0x0F,0xFE,0x0F,0x00,0x00,0x00,0x00, ; 0x32
|
||||
.db 0xF8,0x03,0xFC,0x07,0x0E,0x0E,0x06,0x0C,0x00,0x0C,0x00,0x0E,0xF0,0x07,0xF0,0x03,0x00,0x06,0x00,0x0C,0x06,0x0C,0x0E,0x0E,0xFC,0x07,0xF8,0x03,0x00,0x00,0x00,0x00, ; 0x33
|
||||
.db 0x80,0x03,0xC0,0x03,0xE0,0x03,0x70,0x03,0x38,0x03,0x1C,0x03,0x0E,0x03,0x06,0x03,0xFE,0x0F,0xFE,0x0F,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00, ; 0x34
|
||||
.db 0xFE,0x0F,0xFE,0x0F,0x06,0x00,0x06,0x00,0x06,0x00,0xFE,0x03,0xFC,0x07,0x00,0x0E,0x00,0x0C,0x00,0x0C,0x06,0x0C,0x0E,0x0E,0xFC,0x07,0xF8,0x03,0x00,0x00,0x00,0x00, ; 0x35
|
||||
.db 0xC0,0x03,0xE0,0x03,0x70,0x00,0x38,0x00,0x1C,0x00,0x0C,0x00,0xFE,0x03,0xFE,0x07,0x0E,0x0E,0x06,0x0C,0x06,0x0C,0x0E,0x0E,0xFC,0x07,0xF8,0x03,0x00,0x00,0x00,0x00, ; 0x36
|
||||
.db 0xFE,0x0F,0xFE,0x0F,0x00,0x06,0x00,0x06,0x00,0x03,0x00,0x03,0x80,0x01,0x80,0x01,0xC0,0x00,0xC0,0x00,0x60,0x00,0x60,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00, ; 0x37
|
||||
.db 0xF0,0x01,0xF8,0x03,0x1C,0x07,0x0C,0x06,0x0C,0x06,0x1C,0x07,0xF8,0x03,0xFC,0x07,0x0E,0x0E,0x06,0x0C,0x06,0x0C,0x0E,0x0E,0xFC,0x07,0xF8,0x03,0x00,0x00,0x00,0x00, ; 0x38
|
||||
.db 0xF8,0x03,0xFC,0x07,0x0E,0x0E,0x06,0x0C,0x06,0x0C,0x0E,0x0E,0xFC,0x0F,0xF8,0x0F,0x00,0x06,0x00,0x07,0x80,0x03,0xC0,0x01,0xF8,0x00,0x78,0x00,0x00,0x00,0x00,0x00, ; 0x39
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x3A
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x30,0x00, ; 0x3B
|
||||
.db 0x00,0x03,0x80,0x03,0xC0,0x01,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0xC0,0x01,0x80,0x03,0x00,0x03,0x00,0x00,0x00,0x00, ; 0x3C
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x07,0xFC,0x07,0x00,0x00,0x00,0x00,0xFC,0x07,0xFC,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x3D
|
||||
.db 0x0C,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0xC0,0x01,0x80,0x03,0x80,0x03,0xC0,0x01,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00, ; 0x3E
|
||||
.db 0xF8,0x01,0xFC,0x03,0x0E,0x07,0x06,0x06,0x06,0x07,0x80,0x03,0xC0,0x01,0xE0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00, ; 0x3F
|
||||
.db 0xF8,0x03,0xFC,0x07,0x0C,0x06,0xE6,0x0D,0xF6,0x0D,0xB6,0x0D,0xB6,0x0D,0xB6,0x0D,0xB6,0x0D,0xF6,0x07,0xE6,0x03,0x0E,0x00,0xFC,0x03,0xF0,0x03,0x00,0x00,0x00,0x00, ; 0x40
|
||||
.db 0x60,0x00,0x60,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0x98,0x01,0x98,0x01,0x98,0x01,0x0C,0x03,0xFC,0x03,0xFC,0x03,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00, ; 0x41
|
||||
.db 0xFE,0x00,0xFE,0x01,0x86,0x03,0x06,0x03,0x06,0x03,0x86,0x03,0xFE,0x01,0xFE,0x03,0x06,0x07,0x06,0x06,0x06,0x06,0x06,0x07,0xFE,0x03,0xFE,0x01,0x00,0x00,0x00,0x00, ; 0x42
|
||||
.db 0xF0,0x01,0xF8,0x03,0x1C,0x07,0x0C,0x06,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0C,0x06,0x1C,0x07,0xF8,0x03,0xF0,0x01,0x00,0x00,0x00,0x00, ; 0x43
|
||||
.db 0xFE,0x00,0xFE,0x01,0x86,0x03,0x06,0x03,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x03,0x86,0x03,0xFE,0x01,0xFE,0x00,0x00,0x00,0x00,0x00, ; 0x44
|
||||
.db 0xFE,0x07,0xFE,0x07,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xFE,0x01,0xFE,0x01,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xFE,0x07,0xFE,0x07,0x00,0x00,0x00,0x00, ; 0x45
|
||||
.db 0xFE,0x07,0xFE,0x07,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xFE,0x01,0xFE,0x01,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00, ; 0x46
|
||||
.db 0xF0,0x03,0xF8,0x07,0x1C,0x06,0x0C,0x00,0x06,0x00,0x06,0x00,0xC6,0x07,0xC6,0x07,0x06,0x06,0x06,0x06,0x0C,0x06,0x1C,0x06,0xF8,0x07,0xF0,0x07,0x00,0x00,0x00,0x00, ; 0x47
|
||||
.db 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0xFE,0x07,0xFE,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00, ; 0x48
|
||||
.db 0xF8,0x01,0xF8,0x01,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xF8,0x01,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x49
|
||||
.db 0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x06,0x0E,0x03,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x4A
|
||||
.db 0x06,0x06,0x06,0x07,0x86,0x03,0xC6,0x01,0xE6,0x00,0x76,0x00,0x3E,0x00,0x3E,0x00,0x76,0x00,0xE6,0x00,0xC6,0x01,0x86,0x03,0x06,0x07,0x06,0x06,0x00,0x00,0x00,0x00, ; 0x4B
|
||||
.db 0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xFE,0x07,0xFE,0x07,0x00,0x00,0x00,0x00, ; 0x4C
|
||||
.db 0x06,0x06,0x0E,0x07,0x0E,0x07,0x9E,0x07,0x9E,0x07,0xF6,0x06,0xF6,0x06,0x66,0x06,0x66,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00, ; 0x4D
|
||||
.db 0x06,0x06,0x0E,0x06,0x0E,0x06,0x1E,0x06,0x36,0x06,0x36,0x06,0x66,0x06,0x66,0x06,0xC6,0x06,0xC6,0x06,0x86,0x07,0x06,0x07,0x06,0x07,0x06,0x06,0x00,0x00,0x00,0x00, ; 0x4E
|
||||
.db 0xF0,0x00,0xF8,0x01,0x9C,0x03,0x0C,0x03,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0C,0x03,0x9C,0x03,0xF8,0x01,0xF0,0x00,0x00,0x00,0x00,0x00, ; 0x4F
|
||||
.db 0xFE,0x01,0xFE,0x03,0x06,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x07,0xFE,0x03,0xFE,0x01,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00, ; 0x50
|
||||
.db 0xF0,0x00,0xF8,0x01,0x9C,0x03,0x0C,0x03,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0xC6,0x06,0xCC,0x03,0x9C,0x03,0xF8,0x07,0xF0,0x06,0x00,0x00,0x00,0x00, ; 0x51
|
||||
.db 0xFE,0x01,0xFE,0x03,0x06,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x07,0xFE,0x03,0xFE,0x01,0xE6,0x00,0xC6,0x01,0x86,0x03,0x06,0x07,0x06,0x06,0x00,0x00,0x00,0x00, ; 0x52
|
||||
.db 0xF8,0x01,0xFC,0x03,0x0E,0x07,0x06,0x06,0x06,0x00,0x0E,0x00,0xFC,0x01,0xF8,0x03,0x00,0x07,0x00,0x06,0x06,0x06,0x0E,0x07,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x53
|
||||
.db 0xFC,0x03,0xFC,0x03,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00, ; 0x54
|
||||
.db 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0C,0x03,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x55
|
||||
.db 0x06,0x06,0x06,0x06,0x06,0x06,0x0C,0x03,0x0C,0x03,0x0C,0x03,0x98,0x01,0x98,0x01,0x98,0x01,0xF0,0x00,0xF0,0x00,0xF0,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00, ; 0x56
|
||||
.db 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x66,0x06,0x66,0x06,0xF6,0x06,0x9E,0x07,0x0E,0x07,0x0E,0x07,0x06,0x06,0x00,0x00,0x00,0x00, ; 0x57
|
||||
.db 0x06,0x06,0x06,0x06,0x0C,0x03,0x0C,0x03,0x98,0x01,0xF0,0x00,0x60,0x00,0x60,0x00,0xF0,0x00,0x98,0x01,0x0C,0x03,0x0C,0x03,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00, ; 0x58
|
||||
.db 0x06,0x06,0x06,0x06,0x0C,0x03,0x0C,0x03,0x98,0x01,0x98,0x01,0xF0,0x00,0xF0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00, ; 0x59
|
||||
.db 0xFE,0x07,0xFE,0x07,0x00,0x03,0x00,0x03,0x80,0x01,0xC0,0x00,0x60,0x00,0x60,0x00,0x30,0x00,0x18,0x00,0x0C,0x00,0x0C,0x00,0xFE,0x07,0xFE,0x07,0x00,0x00,0x00,0x00, ; 0x5A
|
||||
.db 0xF8,0x01,0xF8,0x01,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0xF8,0x01,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x5B
|
||||
.db 0x00,0x00,0x02,0x00,0x06,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0xC0,0x01,0x80,0x03,0x00,0x07,0x00,0x0E,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x5C
|
||||
.db 0xF8,0x01,0xF8,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xF8,0x01,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x5D
|
||||
.db 0x40,0x00,0xE0,0x00,0xF0,0x01,0xB8,0x03,0x1C,0x07,0x0E,0x0E,0x06,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x5E
|
||||
.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,0xFE,0x0F,0xFE,0x0F, ; 0x5F
|
||||
.db 0x00,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0x60,0x00,0x60,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x60
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x03,0xFC,0x07,0x00,0x06,0xF8,0x07,0xFC,0x07,0x06,0x06,0x06,0x06,0xFE,0x07,0xFC,0x07,0x00,0x00,0x00,0x00, ; 0x61
|
||||
.db 0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xF6,0x01,0xFE,0x03,0x0E,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x07,0xFE,0x03,0xFE,0x01,0x00,0x00,0x00,0x00, ; 0x62
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x01,0xFC,0x03,0x0E,0x06,0x06,0x00,0x06,0x00,0x06,0x00,0x0E,0x06,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x63
|
||||
.db 0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0xF8,0x06,0xFC,0x07,0x8E,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x06,0xFC,0x07,0xF8,0x07,0x00,0x00,0x00,0x00, ; 0x64
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x01,0xFC,0x03,0x0E,0x06,0xFE,0x07,0xFE,0x03,0x06,0x00,0x0E,0x00,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x65
|
||||
.db 0xE0,0x01,0xF0,0x01,0x38,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0xFE,0x00,0xFE,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00, ; 0x66
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x07,0xFC,0x07,0x0E,0x06,0x06,0x06,0x0E,0x07,0xFC,0x07,0xF8,0x06,0x00,0x06,0x00,0x07,0xFC,0x03,0xFC,0x01, ; 0x67
|
||||
.db 0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xF6,0x00,0xFE,0x01,0x8E,0x03,0x06,0x03,0x06,0x03,0x06,0x03,0x06,0x03,0x06,0x03,0x06,0x03,0x00,0x00,0x00,0x00, ; 0x68
|
||||
.db 0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xF8,0x01,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x69
|
||||
.db 0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x00,0x00,0xC0,0x01,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x98,0x01,0xF8,0x01,0xF0,0x00, ; 0x6A
|
||||
.db 0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x8C,0x01,0xCC,0x01,0xEC,0x00,0x7C,0x00,0x7C,0x00,0xEC,0x00,0xCC,0x01,0x8C,0x03,0x0C,0x03,0x00,0x00,0x00,0x00, ; 0x6B
|
||||
.db 0x70,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xF8,0x01,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x6C
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9A,0x01,0xFE,0x03,0xFE,0x07,0x66,0x06,0x66,0x06,0x66,0x06,0x66,0x06,0x66,0x06,0x66,0x06,0x00,0x00,0x00,0x00, ; 0x6D
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0xFC,0x03,0x0C,0x07,0x0C,0x06,0x0C,0x06,0x0C,0x06,0x0C,0x06,0x0C,0x06,0x0C,0x06,0x00,0x00,0x00,0x00, ; 0x6E
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x01,0xFC,0x03,0x0E,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x6F
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0xFE,0x03,0x06,0x07,0x06,0x06,0x06,0x06,0x0E,0x07,0xFE,0x03,0xF6,0x01,0x06,0x00,0x06,0x00,0x06,0x00, ; 0x70
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x07,0xFC,0x07,0x0E,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x07,0xF8,0x06,0x00,0x06,0x00,0x06,0x00,0x06, ; 0x71
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEC,0x03,0xFC,0x07,0x1C,0x06,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00, ; 0x72
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0xFE,0x01,0x06,0x00,0xFE,0x00,0xFC,0x01,0x80,0x01,0x80,0x01,0xFE,0x01,0xFC,0x00,0x00,0x00,0x00,0x00, ; 0x73
|
||||
.db 0x00,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0xFE,0x00,0xFE,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0xF8,0x01,0xF0,0x01,0x00,0x00,0x00,0x00, ; 0x74
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x07,0xF8,0x06,0x00,0x00,0x00,0x00, ; 0x75
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x0C,0x03,0x0C,0x03,0x98,0x01,0x98,0x01,0xF0,0x00,0xF0,0x00,0x60,0x00,0x00,0x00,0x00,0x00, ; 0x76
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x06,0x66,0x06,0x66,0x06,0x66,0x06,0x66,0x06,0xF6,0x06,0xFC,0x03,0x9C,0x03,0x08,0x01,0x00,0x00,0x00,0x00, ; 0x77
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x03,0x8E,0x03,0xDC,0x01,0xF8,0x00,0x70,0x00,0xF8,0x00,0xDC,0x01,0x8E,0x03,0x06,0x03,0x00,0x00,0x00,0x00, ; 0x78
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x03,0x0C,0x03,0x98,0x01,0x98,0x01,0xF0,0x00,0xF0,0x00,0x60,0x00,0x60,0x00,0x30,0x00,0x30,0x00,0x18,0x00, ; 0x79
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0xFE,0x01,0xC0,0x00,0x60,0x00,0x30,0x00,0x18,0x00,0x0C,0x00,0xFE,0x03,0xFE,0x03,0x00,0x00,0x00,0x00, ; 0x7A
|
||||
.db 0xC0,0x03,0xE0,0x03,0x70,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x38,0x00,0x1C,0x00,0x38,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x70,0x00,0xE0,0x03,0xC0,0x03,0x00,0x00, ; 0x7B
|
||||
.db 0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00, ; 0x7C
|
||||
.db 0x3C,0x00,0x7C,0x00,0xE0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x01,0x80,0x03,0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xE0,0x00,0x7C,0x00,0x3C,0x00,0x00,0x00, ; 0x7D
|
||||
.db 0x00,0x00,0x00,0x00,0x38,0x06,0x6C,0x03,0xC6,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x7E
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xF0,0x00,0x98,0x01,0x0C,0x03,0x06,0x06,0x06,0x06,0xFE,0x07,0xFE,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x7F
|
||||
.db 0xF0,0x01,0xF8,0x03,0x1C,0x07,0x0C,0x06,0x06,0x06,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0C,0x06,0x1C,0x07,0xF8,0x03,0xF0,0x01,0x60,0x00,0x78,0x00,0x78,0x00, ; 0x80
|
||||
.db 0x00,0x00,0x00,0x00,0x98,0x01,0x98,0x01,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x07,0xF8,0x06,0x00,0x00,0x00,0x00, ; 0x81
|
||||
.db 0x00,0x00,0x80,0x01,0xC0,0x00,0x60,0x00,0x00,0x00,0xF8,0x01,0xFC,0x03,0x0E,0x06,0xFE,0x07,0xFE,0x07,0x06,0x00,0x0E,0x00,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x82
|
||||
.db 0x00,0x00,0x60,0x00,0xF0,0x00,0x98,0x01,0x00,0x00,0xF8,0x03,0xFC,0x07,0x00,0x06,0xF8,0x07,0xFC,0x07,0x06,0x06,0x06,0x06,0xFE,0x07,0xFC,0x07,0x00,0x00,0x00,0x00, ; 0x83
|
||||
.db 0x00,0x00,0x00,0x00,0x98,0x01,0x98,0x01,0x00,0x00,0xF8,0x03,0xFC,0x07,0x00,0x06,0xF8,0x07,0xFC,0x07,0x06,0x06,0x06,0x06,0xFE,0x07,0xFC,0x07,0x00,0x00,0x00,0x00, ; 0x84
|
||||
.db 0x00,0x00,0x30,0x00,0x60,0x00,0xC0,0x00,0x00,0x00,0xF8,0x03,0xFC,0x07,0x00,0x06,0xF8,0x07,0xFC,0x07,0x06,0x06,0x06,0x06,0xFE,0x07,0xFC,0x07,0x00,0x00,0x00,0x00, ; 0x85
|
||||
.db 0x00,0x00,0x60,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0xF8,0x03,0xFC,0x07,0x00,0x06,0xF8,0x07,0xFC,0x07,0x06,0x06,0x06,0x06,0xFE,0x07,0xFC,0x07,0x00,0x00,0x00,0x00, ; 0x86
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x01,0xFC,0x03,0x0E,0x07,0x06,0x00,0x06,0x00,0x06,0x00,0x0E,0x07,0xFC,0x03,0xF8,0x01,0x60,0x00,0x78,0x00, ; 0x87
|
||||
.db 0x00,0x00,0x60,0x00,0xF0,0x00,0x98,0x01,0x00,0x00,0xF8,0x01,0xFC,0x03,0x0E,0x06,0xFE,0x07,0xFE,0x07,0x06,0x00,0x06,0x00,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x88
|
||||
.db 0x00,0x00,0x00,0x00,0x98,0x01,0x98,0x01,0x00,0x00,0xF8,0x01,0xFC,0x03,0x0E,0x06,0xFE,0x07,0xFE,0x07,0x06,0x00,0x06,0x00,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x89
|
||||
.db 0x00,0x00,0x30,0x00,0x60,0x00,0xC0,0x00,0x00,0x00,0xF8,0x01,0xFC,0x03,0x0E,0x06,0xFE,0x07,0xFE,0x07,0x06,0x00,0x06,0x00,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x8A
|
||||
.db 0x00,0x00,0x00,0x00,0xD8,0x00,0xD8,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xF8,0x01,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x8B
|
||||
.db 0x00,0x00,0x60,0x00,0xF0,0x00,0x98,0x01,0x00,0x00,0x70,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xF8,0x01,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x8C
|
||||
.db 0x00,0x00,0x30,0x00,0x60,0x00,0xC0,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xF8,0x01,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x8D
|
||||
.db 0x98,0x01,0x98,0x01,0x00,0x00,0x60,0x00,0x60,0x00,0xF0,0x00,0xF0,0x00,0x98,0x01,0x98,0x01,0x0C,0x03,0xFC,0x03,0xFE,0x07,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00, ; 0x8E
|
||||
.db 0x60,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0xF0,0x00,0xF0,0x00,0x98,0x01,0x98,0x01,0x0C,0x03,0xFC,0x03,0xFE,0x07,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00, ; 0x8F
|
||||
.db 0x80,0x01,0xC0,0x00,0x60,0x00,0xFE,0x07,0xFE,0x07,0x06,0x00,0x06,0x00,0xFE,0x01,0xFE,0x01,0x06,0x00,0x06,0x00,0x06,0x00,0xFE,0x07,0xFE,0x07,0x00,0x00,0x00,0x00, ; 0x90
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xBC,0x03,0x66,0x06,0x60,0x06,0xFC,0x03,0x66,0x00,0x66,0x00,0x66,0x06,0xDC,0x03,0x00,0x00,0x00,0x00, ; 0x91
|
||||
.db 0xE0,0x07,0xE0,0x07,0xF0,0x00,0xF0,0x00,0xF8,0x00,0xD8,0x00,0xD8,0x03,0xCC,0x03,0xCC,0x00,0xFC,0x00,0xFE,0x00,0xC6,0x00,0xC6,0x07,0xC6,0x07,0x00,0x00,0x00,0x00, ; 0x92
|
||||
.db 0x00,0x00,0x60,0x00,0xF0,0x00,0x98,0x01,0x00,0x00,0xF8,0x01,0xFC,0x03,0x0E,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x93
|
||||
.db 0x00,0x00,0x00,0x00,0x98,0x01,0x98,0x01,0x00,0x00,0xF8,0x01,0xFC,0x03,0x0E,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x94
|
||||
.db 0x00,0x00,0x30,0x00,0x60,0x00,0xC0,0x00,0x00,0x00,0xF8,0x01,0xFC,0x03,0x0E,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x95
|
||||
.db 0x00,0x00,0x60,0x00,0xF0,0x00,0x98,0x01,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x07,0xF8,0x06,0x00,0x00,0x00,0x00, ; 0x96
|
||||
.db 0x00,0x00,0x30,0x00,0x60,0x00,0xC0,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x07,0xF8,0x06,0x00,0x00,0x00,0x00, ; 0x97
|
||||
.db 0x00,0x00,0x00,0x00,0x98,0x01,0x98,0x01,0x00,0x00,0x0C,0x03,0x0C,0x03,0x98,0x01,0x98,0x01,0xF0,0x00,0xF0,0x00,0x60,0x00,0x60,0x00,0x30,0x00,0x30,0x00,0x18,0x00, ; 0x98
|
||||
.db 0x98,0x01,0x98,0x01,0x00,0x00,0xF8,0x01,0xFC,0x03,0x0E,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0x99
|
||||
.db 0x00,0x00,0x00,0x00,0x98,0x01,0x98,0x01,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x07,0xF8,0x06,0x00,0x00,0x00,0x00, ; 0x9A
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x06,0xFC,0x03,0x8E,0x07,0xC6,0x06,0x66,0x06,0x36,0x06,0x1E,0x07,0xFC,0x03,0xF6,0x01,0x00,0x00,0x00,0x00, ; 0x9B
|
||||
.db 0x00,0x00,0x00,0x00,0xE0,0x01,0xF0,0x03,0x30,0x03,0x30,0x00,0x30,0x00,0xF8,0x00,0x30,0x00,0x30,0x00,0x18,0x00,0xFC,0x07,0xDC,0x03,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x9C
|
||||
.db 0x00,0x00,0x00,0x00,0xF8,0x06,0xFC,0x03,0x8E,0x07,0xC6,0x06,0xC6,0x06,0x66,0x06,0x66,0x06,0x36,0x06,0x36,0x06,0x1E,0x07,0xFC,0x03,0xF6,0x01,0x00,0x00,0x00,0x00, ; 0x9D
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x03,0x98,0x01,0xF0,0x00,0x60,0x00,0xF0,0x00,0x98,0x01,0x0C,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0x9E
|
||||
.db 0xC0,0x01,0xE0,0x03,0x60,0x03,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xF8,0x01,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x6C,0x00,0x7C,0x00,0x38,0x00,0x00,0x00, ; 0x9F
|
||||
.db 0x00,0x00,0xC0,0x00,0x60,0x00,0x30,0x00,0x00,0x00,0xF8,0x03,0xFC,0x07,0x00,0x06,0xF8,0x07,0xFC,0x07,0x06,0x06,0x06,0x06,0xFE,0x07,0xFC,0x07,0x00,0x00,0x00,0x00, ; 0xA0
|
||||
.db 0x00,0x00,0xC0,0x00,0x60,0x00,0x30,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xF8,0x01,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0xA1
|
||||
.db 0x00,0x00,0xC0,0x00,0x60,0x00,0x30,0x00,0x00,0x00,0xF8,0x01,0xFC,0x03,0x0E,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0xA2
|
||||
.db 0x00,0x00,0xC0,0x00,0x60,0x00,0x30,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x07,0xF8,0x06,0x00,0x00,0x00,0x00, ; 0xA3
|
||||
.db 0x00,0x00,0x00,0x00,0x70,0x03,0xD8,0x01,0x00,0x00,0xFC,0x01,0xFC,0x03,0x0C,0x07,0x0C,0x06,0x0C,0x06,0x0C,0x06,0x0C,0x06,0x0C,0x06,0x0C,0x06,0x00,0x00,0x00,0x00, ; 0xA4
|
||||
.db 0x70,0x03,0xD8,0x01,0x00,0x00,0x06,0x06,0x0E,0x06,0x1E,0x06,0x3E,0x06,0x76,0x06,0xE6,0x06,0xC6,0x07,0x86,0x07,0x06,0x07,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00, ; 0xA5
|
||||
.db 0xF8,0x03,0xFC,0x07,0x00,0x06,0xFC,0x07,0xFE,0x07,0x06,0x06,0xFE,0x07,0xFC,0x07,0x00,0x00,0xFC,0x03,0xFC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xA6
|
||||
.db 0xF8,0x01,0xFC,0x03,0x0E,0x07,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x03,0xF8,0x01,0x00,0x00,0xFC,0x03,0xFC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xA7
|
||||
.db 0x60,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x0E,0x06,0x06,0x06,0x0E,0x07,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0xA8
|
||||
.db 0x00,0x00,0x00,0x00,0xF8,0x03,0xFC,0x07,0x0E,0x0E,0xF6,0x0C,0xB6,0x0D,0xF6,0x0C,0xB6,0x0D,0xB6,0x0D,0x0E,0x0E,0xFC,0x07,0xF8,0x03,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xA9
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0xFF,0x07,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xAA
|
||||
.db 0x00,0x00,0x00,0x00,0x0C,0x00,0x0E,0x00,0x0C,0x03,0x8C,0x01,0xDE,0x00,0x60,0x00,0xB0,0x03,0x18,0x06,0x0C,0x03,0x80,0x01,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xAB
|
||||
.db 0x00,0x00,0x00,0x00,0x0C,0x00,0x0E,0x00,0x0C,0x03,0x8C,0x01,0xDE,0x00,0x60,0x00,0xB0,0x06,0xD8,0x06,0xCC,0x07,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xAC
|
||||
.db 0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00, ; 0xAD
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x03,0x8C,0x01,0xC6,0x00,0x8C,0x01,0x18,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xAE
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x00,0x8C,0x01,0x18,0x03,0x8C,0x01,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xAF
|
||||
.db 0x11,0x01,0x44,0x04,0x11,0x01,0x44,0x04,0x11,0x01,0x44,0x04,0x11,0x01,0x44,0x04,0x11,0x01,0x44,0x04,0x11,0x01,0x44,0x04,0x11,0x01,0x44,0x04,0x11,0x01,0x44,0x04, ; 0xB0
|
||||
.db 0xAA,0x0A,0x55,0x05,0xAA,0x0A,0x55,0x05,0xAA,0x0A,0x55,0x05,0xAA,0x0A,0x55,0x05,0xAA,0x0A,0x55,0x05,0xAA,0x0A,0x55,0x05,0xAA,0x0A,0x55,0x05,0xAA,0x0A,0x55,0x05, ; 0xB1
|
||||
.db 0xEE,0x0E,0xBB,0x0B,0xEE,0x0E,0xBB,0x0B,0xEE,0x0E,0xBB,0x0B,0xEE,0x0E,0xBB,0x0B,0xEE,0x0E,0xBB,0x0B,0xEE,0x0E,0xBB,0x0B,0xEE,0x0E,0xBB,0x0B,0xEE,0x0E,0xBB,0x0B, ; 0xB2
|
||||
.db 0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00, ; 0xB3
|
||||
.db 0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x7F,0x00,0x7F,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00, ; 0xB4
|
||||
.db 0xC0,0x00,0x60,0x00,0x30,0x00,0x60,0x00,0x60,0x00,0xF0,0x00,0xF0,0x00,0x98,0x01,0x98,0x01,0x0C,0x03,0xFC,0x03,0xFE,0x07,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00, ; 0xB5
|
||||
.db 0x60,0x00,0xF0,0x00,0x98,0x01,0x60,0x00,0x60,0x00,0xF0,0x00,0xF0,0x00,0x98,0x01,0x98,0x01,0x0C,0x03,0xFC,0x03,0xFE,0x07,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00, ; 0xB6
|
||||
.db 0x30,0x00,0x60,0x00,0xC0,0x00,0x60,0x00,0x60,0x00,0xF0,0x00,0xF0,0x00,0x98,0x01,0x98,0x01,0x0C,0x03,0xFC,0x03,0xFE,0x07,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00, ; 0xB7
|
||||
.db 0x00,0x00,0x00,0x00,0xF8,0x03,0xFC,0x07,0x0E,0x0E,0xE6,0x0C,0xB6,0x0D,0x36,0x0C,0xB6,0x0D,0xE6,0x0C,0x0E,0x0E,0xFC,0x07,0xF8,0x03,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xB8
|
||||
.db 0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6F,0x00,0x6F,0x00,0x60,0x00,0x6F,0x00,0x6F,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00, ; 0xB9
|
||||
.db 0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00, ; 0xBA
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x7F,0x00,0x60,0x00,0x6F,0x00,0x6F,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00, ; 0xBB
|
||||
.db 0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6F,0x00,0x6F,0x00,0x60,0x00,0x7F,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xBC
|
||||
.db 0x00,0x00,0x60,0x00,0x60,0x00,0xF0,0x01,0xF8,0x03,0x7C,0x03,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x7C,0x03,0xF8,0x03,0xF0,0x01,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00, ; 0xBD
|
||||
.db 0x06,0x06,0x06,0x06,0x0C,0x03,0x0C,0x03,0x98,0x01,0x98,0x01,0xF0,0x00,0xF0,0x00,0x60,0x00,0xFC,0x03,0x60,0x00,0xFC,0x03,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00, ; 0xBE
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x7F,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00, ; 0xBF
|
||||
.db 0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xE0,0x0F,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xC0
|
||||
.db 0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xFF,0x0F,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xC1
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0xFF,0x0F,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00, ; 0xC2
|
||||
.db 0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xE0,0x0F,0xE0,0x0F,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00, ; 0xC3
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xC4
|
||||
.db 0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xFF,0x0F,0xFF,0x0F,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00, ; 0xC5
|
||||
.db 0x00,0x00,0x00,0x00,0x70,0x03,0xD8,0x01,0x00,0x00,0xF8,0x03,0xFC,0x07,0x00,0x06,0xF8,0x07,0xFC,0x07,0x06,0x06,0x06,0x06,0xFE,0x07,0xFC,0x07,0x00,0x00,0x00,0x00, ; 0xC6
|
||||
.db 0x70,0x03,0xD8,0x01,0x00,0x00,0x60,0x00,0x60,0x00,0xF0,0x00,0xF0,0x00,0x98,0x01,0x98,0x01,0x0C,0x03,0xFC,0x03,0xFE,0x07,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00, ; 0xC7
|
||||
.db 0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0xEC,0x0F,0xEC,0x0F,0x0C,0x00,0xFC,0x0F,0xFC,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xC8
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x0F,0xFC,0x0F,0x0C,0x00,0xEC,0x0F,0xEC,0x0F,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00, ; 0xC9
|
||||
.db 0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0xEF,0x0F,0xEF,0x0F,0x00,0x00,0xFF,0x0F,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xCA
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0xFF,0x0F,0x00,0x00,0xEF,0x0F,0xEF,0x0F,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00, ; 0xCB
|
||||
.db 0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0xEC,0x0F,0xEC,0x0F,0x0C,0x00,0xEC,0x0F,0xEC,0x0F,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00, ; 0xCC
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0xFF,0x0F,0x00,0x00,0xFF,0x0F,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xCD
|
||||
.db 0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0xEF,0x0F,0xEF,0x0F,0x00,0x00,0xEF,0x0F,0xEF,0x0F,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00, ; 0xCE
|
||||
.db 0x00,0x00,0x06,0x06,0xF6,0x06,0xFC,0x03,0x0E,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x03,0xF6,0x06,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xCF
|
||||
.db 0x00,0x00,0x00,0x00,0xF0,0x00,0xF8,0x01,0x18,0x01,0x18,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0xF0,0x01,0x98,0x01,0x98,0x01,0xF8,0x01,0xF0,0x00,0x00,0x00,0x00,0x00, ; 0xD0
|
||||
.db 0xFC,0x00,0xFC,0x01,0x8C,0x03,0x0C,0x03,0x0C,0x06,0x0C,0x06,0x1E,0x06,0x1E,0x06,0x0C,0x06,0x0C,0x06,0x0C,0x03,0x8C,0x03,0xFC,0x01,0xFC,0x00,0x00,0x00,0x00,0x00, ; 0xD1
|
||||
.db 0x60,0x00,0xF0,0x00,0x98,0x01,0xFE,0x07,0xFE,0x07,0x06,0x00,0x06,0x00,0xFE,0x01,0xFE,0x01,0x06,0x00,0x06,0x00,0x06,0x00,0xFE,0x07,0xFE,0x07,0x00,0x00,0x00,0x00, ; 0xD2
|
||||
.db 0x98,0x01,0x98,0x01,0x00,0x00,0xFE,0x07,0xFE,0x07,0x06,0x00,0x06,0x00,0xFE,0x01,0xFE,0x01,0x06,0x00,0x06,0x00,0x06,0x00,0xFE,0x07,0xFE,0x07,0x00,0x00,0x00,0x00, ; 0xD3
|
||||
.db 0x18,0x00,0x30,0x00,0x60,0x00,0xFE,0x07,0xFE,0x07,0x06,0x00,0x06,0x00,0xFE,0x01,0xFE,0x01,0x06,0x00,0x06,0x00,0x06,0x00,0xFE,0x07,0xFE,0x07,0x00,0x00,0x00,0x00, ; 0xD4
|
||||
.db 0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xD5
|
||||
.db 0x80,0x01,0xC0,0x00,0x60,0x00,0xF8,0x01,0xF8,0x01,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xF8,0x01,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0xD6
|
||||
.db 0x60,0x00,0xF0,0x00,0x98,0x01,0xF8,0x01,0xF8,0x01,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xF8,0x01,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0xD7
|
||||
.db 0x98,0x01,0x98,0x01,0x00,0x00,0xF8,0x01,0xF8,0x01,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xF8,0x01,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0xD8
|
||||
.db 0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x7F,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xD9
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x0F,0xE0,0x0F,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00, ; 0xDA
|
||||
.db 0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F, ; 0xDB
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F, ; 0xDC
|
||||
.db 0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00, ; 0xDD
|
||||
.db 0x18,0x00,0x30,0x00,0x60,0x00,0xF8,0x01,0xF8,0x01,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xF8,0x01,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0xDE
|
||||
.db 0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xDF
|
||||
.db 0x80,0x01,0xC0,0x00,0x60,0x00,0xF8,0x01,0xFC,0x03,0x0E,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0xE0
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x98,0x01,0x0C,0x03,0x0C,0x03,0xFC,0x01,0x8C,0x03,0x0C,0x03,0x0C,0x03,0x8C,0x03,0xFC,0x01,0x0C,0x00,0x0C,0x00, ; 0xE1
|
||||
.db 0x60,0x00,0xF0,0x00,0x98,0x01,0xF8,0x01,0xFC,0x03,0x0E,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0xE2
|
||||
.db 0x18,0x00,0x30,0x00,0x60,0x00,0xF8,0x01,0xFC,0x03,0x0E,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0xE3
|
||||
.db 0x00,0x00,0x00,0x00,0xB8,0x01,0xEC,0x00,0x00,0x00,0xF8,0x01,0xFC,0x03,0x0E,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0xE4
|
||||
.db 0x70,0x03,0xD8,0x01,0x00,0x00,0xF8,0x01,0xFC,0x03,0x0E,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0x07,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0xE5
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x03,0x06,0x03,0x06,0x03,0x06,0x03,0x06,0x03,0x8E,0x03,0xFE,0x03,0x7E,0x03,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00, ; 0xE6
|
||||
.db 0x00,0x00,0x00,0x00,0x3C,0x00,0x3C,0x00,0x18,0x00,0xF8,0x01,0xF8,0x03,0x18,0x03,0x18,0x03,0xF8,0x03,0xF8,0x01,0x18,0x00,0x3C,0x00,0x3C,0x00,0x00,0x00,0x00,0x00, ; 0xE7
|
||||
.db 0x3C,0x00,0x3C,0x00,0x18,0x00,0xF8,0x01,0xF8,0x03,0x18,0x03,0x18,0x03,0x18,0x03,0x18,0x03,0xF8,0x03,0xF8,0x01,0x18,0x00,0x3C,0x00,0x3C,0x00,0x00,0x00,0x00,0x00, ; 0xE8
|
||||
.db 0x80,0x01,0xC0,0x00,0x60,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0C,0x03,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0xE9
|
||||
.db 0x60,0x00,0xF0,0x00,0x98,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0C,0x03,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0xEA
|
||||
.db 0x18,0x00,0x30,0x00,0x60,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0C,0x03,0xFC,0x03,0xF8,0x01,0x00,0x00,0x00,0x00, ; 0xEB
|
||||
.db 0x00,0x00,0x00,0x00,0x80,0x01,0xC0,0x00,0x60,0x00,0x0C,0x03,0x0C,0x03,0x98,0x01,0x98,0x01,0xF0,0x00,0xF0,0x00,0x60,0x00,0x60,0x00,0x30,0x00,0x30,0x00,0x18,0x00, ; 0xEC
|
||||
.db 0x80,0x01,0xC0,0x00,0x60,0x00,0x06,0x06,0x0C,0x03,0x98,0x01,0xF0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00, ; 0xED
|
||||
.db 0x00,0x00,0x00,0x00,0xE0,0x01,0xE0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xEE
|
||||
.db 0xC0,0x00,0x60,0x00,0x30,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, ; 0xEF
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x01,0xF8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xF0
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0xF8,0x01,0xF8,0x01,0x60,0x00,0x60,0x00,0x00,0x00,0xF8,0x01,0xF8,0x01,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xF1
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x01,0xF8,0x01,0x00,0x00,0xF8,0x01,0xF8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xF2
|
||||
.db 0x00,0x00,0x00,0x00,0x0E,0x00,0x18,0x00,0x0C,0x03,0x98,0x01,0xCE,0x00,0x60,0x00,0xB0,0x06,0xD8,0x06,0xCC,0x07,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xF3
|
||||
.db 0x00,0x00,0xF8,0x07,0x6C,0x03,0x66,0x03,0x66,0x03,0x66,0x03,0x6C,0x03,0x78,0x03,0x60,0x03,0x60,0x03,0x60,0x03,0x60,0x03,0x60,0x03,0x60,0x03,0x00,0x00,0x00,0x00, ; 0xF4
|
||||
.db 0x00,0x00,0xF8,0x01,0x0C,0x03,0x0C,0x00,0x0C,0x00,0xF8,0x01,0x0C,0x03,0x0C,0x03,0xF8,0x01,0x00,0x03,0x00,0x03,0x0C,0x03,0xF8,0x01,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xF5
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0xFC,0x03,0xFC,0x03,0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xF6
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC8,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xF7
|
||||
.db 0xF0,0x00,0xF8,0x01,0x98,0x01,0x98,0x01,0xF8,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xF8
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x9C,0x03,0x9C,0x03,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xF9
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xE0,0x00,0xE0,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xFA
|
||||
.db 0x18,0x00,0x1C,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xFB
|
||||
.db 0x3C,0x00,0x60,0x00,0x38,0x00,0x60,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xFC
|
||||
.db 0x3C,0x00,0x60,0x00,0x38,0x00,0x0C,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xFD
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xFE
|
||||
.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 ; 0xFF
|
||||
|
||||
@@ -1,108 +0,0 @@
|
||||
; ***************************************************************************
|
||||
; copyright : (C) 2025 by Martin Preuss
|
||||
; email : martin@libchipcard.de
|
||||
;
|
||||
; ***************************************************************************
|
||||
; * This file is part of the project "AqHome". *
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; code
|
||||
|
||||
.cseg
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine font8x8MonoHandlerFn
|
||||
;
|
||||
; Handler for 8x8 Mono Fonts
|
||||
;
|
||||
|
||||
font8x8MonoHandlerFn:
|
||||
cpi r23, FONT_FN_RENDER
|
||||
breq font8x8MonoRenderCharacter
|
||||
rjmp FONT_GenericHandler
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine font8x8RenderCharacter
|
||||
|
||||
; @param R16 character to write
|
||||
; @param R1:R0 background color
|
||||
; @param R3:R2 foreground color
|
||||
; @param Z pointer to font
|
||||
; @param X pointer to RAM to store data to
|
||||
; @param r18 char width in pixel
|
||||
; @param r19 char height in pixel
|
||||
; @clobbers r17, r24, r25, x
|
||||
|
||||
font8x8MonoRenderCharacter:
|
||||
push zl
|
||||
push zh
|
||||
rcall font8x8GetCharPosInFont8x8 ; (r17, r24, r25, z)
|
||||
ldi r25, 8 ; 8 bytes
|
||||
font8x8MonoRenderCharacter_loop1:
|
||||
ldi r24, 8 ; 8 bits
|
||||
lpm r17, Z+
|
||||
font8x8MonoRenderCharacter_loop2:
|
||||
lsr r17
|
||||
brcs font8x8MonoRenderCharacter_writeForeground
|
||||
st X+, r0
|
||||
st X+, r1
|
||||
rjmp font8x8MonoRenderCharacter_loop2end
|
||||
font8x8MonoRenderCharacter_writeForeground:
|
||||
st X+, r2
|
||||
st X+, r3
|
||||
font8x8MonoRenderCharacter_loop2end:
|
||||
dec r24
|
||||
brne font8x8MonoRenderCharacter_loop2
|
||||
dec r25
|
||||
brne font8x8MonoRenderCharacter_loop1
|
||||
ldi r18, 8
|
||||
ldi r19, 8
|
||||
pop zh
|
||||
pop zl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine font8x8GetCharPosInFont8x8
|
||||
|
||||
; @param R16 character to write
|
||||
; @param Z pointer to font
|
||||
; @return Z pointer to begin of char data
|
||||
; @clobbers r17, r24, r25, z
|
||||
|
||||
font8x8GetCharPosInFont8x8:
|
||||
mov r24, r16
|
||||
adiw zh:zl, FONT_OFFS_FIRSTCHAR
|
||||
lpm r24, Z+ ; first char num
|
||||
lpm r25, Z+ ; num of chars
|
||||
sub r16, r24
|
||||
brcs font8x8GetCharPosInFont8x8_ret
|
||||
cp r16, r25
|
||||
brcc font8x8GetCharPosInFont8x8_ret
|
||||
mov r24, r16
|
||||
clr r25
|
||||
lsl r24 ; x2
|
||||
rol r25
|
||||
lsl r24 ; x4
|
||||
rol r25
|
||||
lsl r24 ; x8
|
||||
rol r25
|
||||
add zl, r24
|
||||
adc zh, r25
|
||||
font8x8GetCharPosInFont8x8_ret:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
#ifndef AQH_AVR_FONT_MAIN_ASM
|
||||
#define AQH_AVR_FONT_MAIN_ASM
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
@@ -24,8 +27,8 @@
|
||||
; @param R3:R2 foreground color
|
||||
; @param Z pointer to font
|
||||
; @param X pointer to RAM to store data to
|
||||
; @param r18 char width in pixel
|
||||
; @param r19 char height in pixel
|
||||
; @return r18 char width in pixel
|
||||
; @return r19 char height in pixel
|
||||
; @clobbers any, !Z
|
||||
|
||||
FONT_RenderChar:
|
||||
@@ -40,6 +43,7 @@ FONT_RenderChar:
|
||||
; @routine FONT_GetCharWidth
|
||||
|
||||
; @param Z pointer to font
|
||||
; @param R16 character for which to determine size
|
||||
; @return R16 character width for given character set
|
||||
; @clobbers any, !Z
|
||||
|
||||
@@ -65,11 +69,11 @@ FONT_GetCharHeight:
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine FONT_GetStringWidth
|
||||
; @routine FONT_GetStringWidthFlash
|
||||
|
||||
; @param Z pointer to font
|
||||
; @param X pointer to null-terminated string in flash
|
||||
; @return R16 character width for given character set
|
||||
; @param Z pointer to font
|
||||
; @param X pointer to null-terminated string in flash
|
||||
; @return R17:R16 character width for given character set (in pixel)
|
||||
; @clobbers any, !Z
|
||||
|
||||
FONT_GetStringWidthFlash:
|
||||
@@ -80,14 +84,14 @@ FONT_GetStringWidthFlash:
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine FONT_GetStringHeight
|
||||
; @routine FONT_GetStringHeightFlash
|
||||
|
||||
; @param Z pointer to font
|
||||
; @param X pointer to null-terminated string in flash
|
||||
; @return R16 character width for given character set
|
||||
; @clobbers any, !Z
|
||||
|
||||
FONT_GetStringHeight:
|
||||
FONT_GetStringHeightFlash:
|
||||
ldi r23, FONT_FN_GETSTRINGHEIGHT
|
||||
rjmp fontCallHandler
|
||||
; @end
|
||||
@@ -130,38 +134,47 @@ FONT_GenericHandler:
|
||||
cpi r23, FONT_FN_GETSTRINGHEIGHT
|
||||
breq fontGenericFnGetStringHeight
|
||||
ret
|
||||
|
||||
fontGenericFnGetCharWidth:
|
||||
adiw zh:zl, FONT_OFFS_WIDTH
|
||||
ld r16, X
|
||||
lpm r16, Z
|
||||
sbiw zh:zl, FONT_OFFS_WIDTH
|
||||
ret
|
||||
|
||||
fontGenericFnGetCharHeight:
|
||||
adiw zh:zl, FONT_OFFS_HEIGHT
|
||||
ld r16, X
|
||||
lpm r16, Z
|
||||
sbiw zh:zl, FONT_OFFS_HEIGHT
|
||||
ret
|
||||
|
||||
fontGenericFnGetStringWidth:
|
||||
clr r16 ; sum (LOW)
|
||||
clr r17 ; sum (HIGH)
|
||||
adiw zh:zl, FONT_OFFS_WIDTH
|
||||
ld r17, X
|
||||
lpm r19, Z
|
||||
sbiw zh:zl, FONT_OFFS_WIDTH
|
||||
clr r16
|
||||
push zl
|
||||
push zh
|
||||
mov zl, xl
|
||||
mov zh, xh
|
||||
fontGenericFnGetStringWidth_loop:
|
||||
lpm r18, Z+
|
||||
lpm r18, Z+ ; current byte in string
|
||||
tst r18
|
||||
breq fontGenericFnGetStringWidth_loopEnd
|
||||
add r16, r17
|
||||
add r16, r19 ; add char width to sum
|
||||
adc r17, r19
|
||||
sub r17, r19
|
||||
rjmp fontGenericFnGetStringWidth_loop
|
||||
fontGenericFnGetStringWidth_loopEnd:
|
||||
pop zh
|
||||
pop zl
|
||||
ret
|
||||
|
||||
fontGenericFnGetStringHeight:
|
||||
rjmp fontGenericFnGetCharHeight ; for now monospace fonts only
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
#endif ; AQH_AVR_FONT_MAIN_ASM
|
||||
|
||||
|
||||
13
avr/modules/lcd2/gui/0BUILD
Normal file
13
avr/modules/lcd2/gui/0BUILD
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml?>
|
||||
|
||||
<gwbuild>
|
||||
|
||||
<extradist>
|
||||
defs.asm
|
||||
main.asm
|
||||
window.asm
|
||||
</extradist>
|
||||
|
||||
</gwbuild>
|
||||
|
||||
|
||||
@@ -7,28 +7,28 @@
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
#ifndef AQH_AVR_GUI_H
|
||||
#define AQH_AVR_GUI_H
|
||||
#ifndef AQH_AVR_GUI_DEFS_ASM
|
||||
#define AQH_AVR_GUI_DEFS_ASM
|
||||
|
||||
|
||||
|
||||
.equ SCR_OFFS_HANDLER_LO = 0
|
||||
.equ SCR_OFFS_HANDLER_HI = 1
|
||||
.equ SCR_OFFS_X_LO = 2
|
||||
.equ SCR_OFFS_X_HI = 3
|
||||
.equ SCR_OFFS_Y_LO = 4
|
||||
.equ SCR_OFFS_Y_HI = 5
|
||||
.equ SCR_OFFS_WIDTH_LO = 6
|
||||
.equ SCR_OFFS_WIDTH_HI = 7
|
||||
.equ SCR_OFFS_HEIGHT_LO = 8
|
||||
.equ SCR_OFFS_HEIGHT_HI = 9
|
||||
.equ SCR_OFFS_BG_COL_LO = 10
|
||||
.equ SCR_OFFS_BG_COL_HI = 11
|
||||
.equ SCR_OFFS_FG_COL_LO = 12
|
||||
.equ SCR_OFFS_FG_COL_HI = 13
|
||||
.equ SCR_OFFS_FONT_LO = 14
|
||||
.equ SCR_OFFS_FONT_HI = 15
|
||||
.equ SCR_SIZE = 16
|
||||
.equ WIN_OFFS_HANDLER_LO = 0 ; word address!
|
||||
.equ WIN_OFFS_HANDLER_HI = 1
|
||||
.equ WIN_OFFS_X_LO = 2
|
||||
.equ WIN_OFFS_X_HI = 3
|
||||
.equ WIN_OFFS_Y_LO = 4
|
||||
.equ WIN_OFFS_Y_HI = 5
|
||||
.equ WIN_OFFS_WIDTH_LO = 6
|
||||
.equ WIN_OFFS_WIDTH_HI = 7
|
||||
.equ WIN_OFFS_HEIGHT_LO = 8
|
||||
.equ WIN_OFFS_HEIGHT_HI = 9
|
||||
.equ WIN_OFFS_BG_COL_LO = 10
|
||||
.equ WIN_OFFS_BG_COL_HI = 11
|
||||
.equ WIN_OFFS_FG_COL_LO = 12
|
||||
.equ WIN_OFFS_FG_COL_HI = 13
|
||||
.equ WIN_OFFS_FONT_LO = 14 ;byte address!
|
||||
.equ WIN_OFFS_FONT_HI = 15
|
||||
.equ WIN_SIZE = 16
|
||||
|
||||
|
||||
|
||||
|
||||
27
avr/modules/lcd2/gui/main.asm
Normal file
27
avr/modules/lcd2/gui/main.asm
Normal file
@@ -0,0 +1,27 @@
|
||||
; ***************************************************************************
|
||||
; copyright : (C) 2025 by Martin Preuss
|
||||
; email : martin@libchipcard.de
|
||||
;
|
||||
; ***************************************************************************
|
||||
; * This file is part of the project "AqHome". *
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
#ifndef AQH_AVR_GUI_MAIN_ASM
|
||||
#define AQH_AVR_GUI_MAIN_ASM
|
||||
|
||||
|
||||
GUI_Init:
|
||||
sec
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
GUI_Every100ms:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
368
avr/modules/lcd2/gui/window.asm
Normal file
368
avr/modules/lcd2/gui/window.asm
Normal file
@@ -0,0 +1,368 @@
|
||||
; ***************************************************************************
|
||||
; copyright : (C) 2025 by Martin Preuss
|
||||
; email : martin@libchipcard.de
|
||||
;
|
||||
; ***************************************************************************
|
||||
; * This file is part of the project "AqHome". *
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
#ifndef AQH_AVR_GUI_WINDOW_ASM
|
||||
#define AQH_AVR_GUI_WINDOW_ASM
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine Window_Clear @global
|
||||
;
|
||||
; @param Y pointer to screen object in SDRAM
|
||||
; @clobbers any, !Y
|
||||
|
||||
Window_Clear:
|
||||
ldd r2, Y+WIN_OFFS_BG_COL_LO ; background color low
|
||||
ldd r3, Y+WIN_OFFS_BG_COL_HI ; background color high
|
||||
ldd r4, Y+WIN_OFFS_X_LO ; X low
|
||||
ldd r5, Y+WIN_OFFS_X_HI ; X high
|
||||
ldd r6, Y+WIN_OFFS_Y_LO ; Y low
|
||||
ldd r7, Y+WIN_OFFS_Y_HI ; Y high
|
||||
ldd r8, Y+WIN_OFFS_WIDTH_LO ; width low
|
||||
ldd r9, Y+WIN_OFFS_WIDTH_HI ; width high
|
||||
ldd r10, Y+WIN_OFFS_HEIGHT_LO ; height low
|
||||
ldd r11, Y+WIN_OFFS_HEIGHT_HI ; height high
|
||||
bigcall Display_FillRect
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine Window_DrawTextFlash @global
|
||||
;
|
||||
; @param Y pointer to screen object in SDRAM
|
||||
; @param R5:R4 X (dest)
|
||||
; @param R7:R6 Y (dest)
|
||||
; @return R5:R4 X pos behind string
|
||||
; @return R7:R6 Y pos behind string
|
||||
; @clobbers any, !Y
|
||||
|
||||
Window_DrawTextFlash:
|
||||
rcall winCalcAbsPosAndBorders ; (R18, R19)
|
||||
|
||||
ldd r0, Y+WIN_OFFS_BG_COL_LO
|
||||
ldd r1, Y+WIN_OFFS_BG_COL_HI
|
||||
ldd r2, Y+WIN_OFFS_FG_COL_LO
|
||||
ldd r3, Y+WIN_OFFS_FG_COL_HI
|
||||
|
||||
Window_DrawTextFlash_loop:
|
||||
lpm r16, Z
|
||||
tst r16
|
||||
breq Window_DrawTextFlash_loopEnd
|
||||
rcall winDrawChar
|
||||
brcc Window_DrawTextFlash_loopEnd
|
||||
adiw zh:zl, 1 ; next char
|
||||
rjmp Window_DrawTextFlash_loop
|
||||
Window_DrawTextFlash_loopEnd:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine Window_DrawCharAt @global
|
||||
;
|
||||
; @param Y pointer to screen object in SDRAM
|
||||
; @param R16 char to write
|
||||
; @param R5:R4 X (dest)
|
||||
; @param R7:R6 Y (dest)
|
||||
; @return R5:R4 X pos behind char
|
||||
; @clobbers any, !Y, !R6, !R7
|
||||
|
||||
Window_DrawCharAt:
|
||||
rcall winCalcAbsPosAndBorders
|
||||
|
||||
ldd r0, Y+WIN_OFFS_BG_COL_LO
|
||||
ldd r1, Y+WIN_OFFS_BG_COL_HI
|
||||
ldd r2, Y+WIN_OFFS_FG_COL_LO
|
||||
ldd r3, Y+WIN_OFFS_FG_COL_HI
|
||||
|
||||
rjmp winDrawChar
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine winCalcAbsPosAndBorders
|
||||
;
|
||||
; @param Y pointer to screen object in SDRAM
|
||||
; @param R5:R4 X relative to window
|
||||
; @param R7:R6 Y relative to window
|
||||
; @return R9:R8 first X pos right of windows
|
||||
; @return R5:R4 X relative to screen
|
||||
; @return R7:R6 Y relative to screen
|
||||
; @return R9:R8 first X pos right of window (abs)
|
||||
; @return R11:R10 first Y pos below window (abs)
|
||||
; @clobbers r18, r19
|
||||
|
||||
winCalcAbsPosAndBorders:
|
||||
; calc abs X pos
|
||||
ldd r18, Y+WIN_OFFS_X_LO
|
||||
ldd r19, Y+WIN_OFFS_X_HI
|
||||
add r4, r18 ; add X of window
|
||||
adc r5, r19
|
||||
|
||||
; calc first X pos behind window
|
||||
ldd r8, Y+WIN_OFFS_WIDTH_LO
|
||||
ldd r9, Y+WIN_OFFS_WIDTH_HI
|
||||
add r8, r18
|
||||
adc r9, r19
|
||||
|
||||
; calc abs Y pos
|
||||
ldd r18, Y+WIN_OFFS_Y_LO
|
||||
ldd r19, Y+WIN_OFFS_Y_HI
|
||||
add r6, r18 ; add Y of window
|
||||
adc r7, r19
|
||||
|
||||
; calc first Y pos behind window
|
||||
ldd r10, Y+WIN_OFFS_HEIGHT_LO
|
||||
ldd r11, Y+WIN_OFFS_HEIGHT_HI
|
||||
add r10, r18
|
||||
adc r11, r19
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine winDrawChar
|
||||
;
|
||||
; @param Y pointer to screen object in SDRAM
|
||||
; @param R16 char to write
|
||||
; @param R5:R4 absolute X on screen
|
||||
; @param R7:R6 absolute Y on screen
|
||||
; @param R9:R8 first X pos right of windows
|
||||
; @return R5:R4 X pos behind char
|
||||
; @clobbers any, !Y, !R6, !R7
|
||||
|
||||
winDrawChar:
|
||||
push zl
|
||||
push zh
|
||||
mov r12, r16
|
||||
ldd zl, Y+WIN_OFFS_FONT_LO
|
||||
ldd zh, Y+WIN_OFFS_FONT_HI
|
||||
|
||||
; check whether the char fits inside window
|
||||
bigcall FONT_GetCharWidth ; r16=char width
|
||||
|
||||
clr r17
|
||||
add r16, r4 ; char width+X
|
||||
adc r17, r5
|
||||
sub r16, r8 ; check against window width
|
||||
sbc r17, r9
|
||||
brcc winDrawChar_ret ; not fit, jmp
|
||||
|
||||
; actually draw char
|
||||
mov r16, r12
|
||||
push r8
|
||||
push r9
|
||||
push r10
|
||||
push r11
|
||||
bigcall Display_DrawChar
|
||||
pop r11
|
||||
pop r10
|
||||
pop r9
|
||||
pop r8
|
||||
clr r16
|
||||
add r4, r18 ; increment X
|
||||
adc r5, r16
|
||||
sec ; write succeeded
|
||||
winDrawChar_ret:
|
||||
pop zh
|
||||
pop zl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#if 0
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine Window_DrawTextFlash @global
|
||||
;
|
||||
; @param Y pointer to screen object in SDRAM
|
||||
; @param R5:R4 X (dest)
|
||||
; @param R7:R6 Y (dest)
|
||||
; @return R5:R4 X pos behind string
|
||||
; @return R7:R6 Y pos behind string
|
||||
; @clobbers any, !Y
|
||||
|
||||
Window_DrawTextFlash:
|
||||
; calc abs X pos
|
||||
ldd r18, Y+WIN_OFFS_X_LO
|
||||
ldd r19, Y+WIN_OFFS_X_HI
|
||||
add r4, r18 ; add X of window
|
||||
adc r5, r19
|
||||
|
||||
; calc first X pos behind window
|
||||
ldd r8, Y+WIN_OFFS_WIDTH_LO
|
||||
ldd r9, Y+WIN_OFFS_WIDTH_HI
|
||||
add r8, r18
|
||||
adc r9, r19
|
||||
|
||||
; calc abs Y pos
|
||||
ldd r18, Y+WIN_OFFS_Y_LO
|
||||
ldd r19, Y+WIN_OFFS_Y_HI
|
||||
add r6, r18 ; add Y of window
|
||||
adc r7, r19
|
||||
|
||||
; calc first Y pos behind window
|
||||
ldd r10, Y+WIN_OFFS_HEIGHT_LO
|
||||
ldd r11, Y+WIN_OFFS_HEIGHT_HI
|
||||
add r10, r18
|
||||
adc r11, r19
|
||||
|
||||
Window_DrawTextFlash_loop:
|
||||
push zl
|
||||
push zh
|
||||
rcall winCalcLengthWordFlash
|
||||
pop zh
|
||||
pop zl
|
||||
mov r18, r4
|
||||
mov r19, r5
|
||||
add r18, r12
|
||||
adc r19, r13
|
||||
sub r18, r8
|
||||
sbc r19, r9
|
||||
brcs Window_DrawTextFlash_xOkay
|
||||
; we need to go to the beginning of the next line
|
||||
rcall Window_DrawTextFlash_nextLine
|
||||
brcc Window_DrawTextFlash_loopEnd ; outside the window, jmp
|
||||
Window_DrawTextFlash_xOkay:
|
||||
rcall winDrawWordFlash ; Z points at blank/0 byte after call
|
||||
lpm r16, Z+
|
||||
tst r16 ; end of string?
|
||||
breq Window_DrawTextFlash_loopEnd
|
||||
cpi r16, 13
|
||||
breq Window_DrawTextFlash_handle13
|
||||
; insert other handled chars here
|
||||
; write blank char
|
||||
push zl
|
||||
push zh
|
||||
ldd zl, Y+WIN_OFFS_FONT_LO
|
||||
ldd zh, Y+WIN_OFFS_FONT_HI
|
||||
ldi r16, 32 ; space
|
||||
bigcall Display_DrawChar
|
||||
pop zh
|
||||
pop zl
|
||||
add r4, r8 ; increment X
|
||||
adc r5, r9
|
||||
|
||||
|
||||
rjmp Window_DrawTextFlash_loopNext
|
||||
Window_DrawTextFlash_handle13:
|
||||
rcall Window_DrawTextFlash_nextLine
|
||||
Window_DrawTextFlash_loopNext:
|
||||
rjmp Window_DrawTextFlash_loop
|
||||
Window_DrawTextFlash_nextLine:
|
||||
push zl
|
||||
push zh
|
||||
ldd zl, Y+WIN_OFFS_FONT_LO
|
||||
ldd zh, Y+WIN_OFFS_FONT_HI
|
||||
bigcall FONT_GetCharWidth ; r16=char width
|
||||
pop zh
|
||||
pop zl
|
||||
ldd r4, Y+WIN_OFFS_X_LO ; X=left border
|
||||
ldd r5, Y+WIN_OFFS_X_HI
|
||||
clr r17
|
||||
add r6, r16 ; increment Y by font height
|
||||
adc r7, r17
|
||||
mov r16, r6 ; check against lower border of window
|
||||
mov r17, r7
|
||||
sub r16, r10
|
||||
sbc r17, r11 ; CF set if inside window, cleared otherwise
|
||||
ret
|
||||
Window_DrawTextFlash_loopEnd:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine winDrawWordFlash
|
||||
;
|
||||
; @param Y pointer to screen object in SDRAM
|
||||
; @param Z pointer to string in FLASH
|
||||
; @param R1:R0 background color
|
||||
; @param R3:R2 foreground color
|
||||
; @param R5:R4 X (dest)
|
||||
; @param R7:R6 Y (dest)
|
||||
; @return r5:r4 next X pos
|
||||
; @return Z pointer to next char behind current word
|
||||
; @clobbers any, !Y, !r1-r15
|
||||
|
||||
winDrawWordFlash:
|
||||
winDrawWordFlash_loop:
|
||||
lpm r16, Z
|
||||
cpi r16, 33
|
||||
brcs winDrawWordFlash_ret
|
||||
push zl
|
||||
push zh
|
||||
ldd zl, Y+WIN_OFFS_FONT_LO
|
||||
ldd zh, Y+WIN_OFFS_FONT_HI
|
||||
bigcall Display_DrawChar
|
||||
pop zh
|
||||
pop zl
|
||||
clr r16
|
||||
add r4, r18 ; increment X
|
||||
adc r5, r16
|
||||
adiw zh:zl, 1
|
||||
rjmp winDrawWordFlash_loop
|
||||
winDrawWordFlash_ret:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine winCalcLengthWordFlash
|
||||
;
|
||||
; @param Y pointer to screen object in SDRAM
|
||||
; @param Z pointer to string in FLASH
|
||||
; @return r13:r12 width of next word in pixels
|
||||
; @return Z pointer to next char behind current word
|
||||
; @clobbers any, !Y, !r1-r11, !r14, !r15
|
||||
|
||||
winCalcLengthWordFlash:
|
||||
clr r12
|
||||
clr r13
|
||||
winCalcLengthWordFlash_loop:
|
||||
lpm r16, Z
|
||||
cpi r16, 33
|
||||
brcs winCalcLengthWordFlash_ret
|
||||
push zl
|
||||
push zh
|
||||
ldd zl, Y+WIN_OFFS_FONT_LO
|
||||
ldd zh, Y+WIN_OFFS_FONT_HI
|
||||
bigcall FONT_GetCharWidth ; r16=char width
|
||||
clr r17
|
||||
add r12, r16
|
||||
adc r13, r17
|
||||
pop zh
|
||||
pop zl
|
||||
brcs winCalcLengthWordFlash_error
|
||||
adiw zh:zl, 1 ; next char
|
||||
rjmp winCalcLengthWordFlash_loop
|
||||
winCalcLengthWordFlash_error:
|
||||
ldi r12, 0xff
|
||||
ldi r13, 0xff
|
||||
winCalcLengthWordFlash_ret:
|
||||
ret
|
||||
; @end
|
||||
|
||||
#endif ; if 0
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -3,6 +3,13 @@
|
||||
<gwbuild>
|
||||
|
||||
<extradist>
|
||||
defs.asm
|
||||
font12x20.asm
|
||||
font12x20_1.asm
|
||||
font6x8.asm
|
||||
font6x8_1.asm
|
||||
graphops.asm
|
||||
io_spi.asm
|
||||
main.asm
|
||||
</extradist>
|
||||
|
||||
|
||||
16
avr/modules/lcd2/ili9341/README
Normal file
16
avr/modules/lcd2/ili9341/README
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
|
||||
|
||||
Display API Implementation for ILI9341 Displays
|
||||
|
||||
|
||||
- Display_FillRect
|
||||
- Display_BitBlit
|
||||
- Display_WriteChar
|
||||
|
||||
- Display_DrawHLine
|
||||
- Display_DrawVLine
|
||||
|
||||
later
|
||||
- Display_DrawLine
|
||||
|
||||
23
avr/modules/lcd2/ili9341/colors.asm
Normal file
23
avr/modules/lcd2/ili9341/colors.asm
Normal file
@@ -0,0 +1,23 @@
|
||||
; ***************************************************************************
|
||||
; copyright : (C) 2025 by Martin Preuss
|
||||
; email : martin@libchipcard.de
|
||||
;
|
||||
; ***************************************************************************
|
||||
; * This file is part of the project "AqHome". *
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
#ifndef AQH_AVR_ILI9341_COLORS_ASM
|
||||
#define AQH_AVR_ILI9341_COLORS_ASM
|
||||
|
||||
|
||||
|
||||
; FEDCBA9876543210
|
||||
; 0bRRRRRGGGGGGBBBBB
|
||||
|
||||
#define DISPLAY_COLOR_FROM_RGB(r, g, b) ((r<<11) | (g<<5) | (b & 0x1f))
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,3 +1,14 @@
|
||||
; ***************************************************************************
|
||||
; copyright : (C) 2025 by Martin Preuss
|
||||
; email : martin@libchipcard.de
|
||||
;
|
||||
; ***************************************************************************
|
||||
; * This file is part of the project "AqHome". *
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
#ifndef AQH_AVR_ILI9341_DEFS_ASM
|
||||
#define AQH_AVR_ILI9341_DEFS_ASM
|
||||
|
||||
|
||||
|
||||
@@ -58,4 +69,5 @@
|
||||
|
||||
|
||||
|
||||
#endif ; AQH_AVR_ILI9341_DEFS_ASM
|
||||
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
#ifndef AQH_AVR_ILI9341_FONT12X20_ASM
|
||||
#define AQH_AVR_ILI9341_FONT12X20_ASM
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; code
|
||||
@@ -14,16 +18,15 @@
|
||||
.cseg
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine font12x20MonoHandlerFn
|
||||
; @routine ili9341Font12x20MonoHandlerFn
|
||||
;
|
||||
; Handler for 12x20 Mono Fonts
|
||||
;
|
||||
|
||||
font12x20MonoHandlerFn:
|
||||
ili9341Font12x20MonoHandlerFn:
|
||||
cpi r23, FONT_FN_RENDER
|
||||
breq font12x20MonoRenderCharacter
|
||||
breq ili9341Font12x20MonoRenderChar
|
||||
bigjmp FONT_GenericHandler
|
||||
; @end
|
||||
|
||||
@@ -31,45 +34,49 @@ font12x20MonoHandlerFn:
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine font12x20RenderCharacter
|
||||
; @routine ili9341Font12x20RenderCharacter
|
||||
|
||||
; @param R16 character to write
|
||||
; @param R1:R0 background color
|
||||
; @param R3:R2 foreground color
|
||||
; @param Z pointer to font
|
||||
; @param X pointer to RAM to store data to
|
||||
; @param r18 char width in pixel
|
||||
; @param r19 char height in pixel
|
||||
; @clobbers r17, r18, r23, r24, r25, x
|
||||
; @return r18 char width in pixel
|
||||
; @return r19 char height in pixel
|
||||
; @clobbers r17, r18, r19, r23, r24, r25, x
|
||||
|
||||
font12x20MonoRenderCharacter:
|
||||
ili9341Font12x20MonoRenderChar:
|
||||
push zl
|
||||
push zh
|
||||
rcall font12x20GetCharPosInFont ; (r17, r24, r25, z)
|
||||
rcall ili9341Font12x20GetCharPosInFont ; (r17, r24, r25, z)
|
||||
ldi r25, 20 ; 20 bytes height
|
||||
font12x20MonoRenderCharacter_loop1:
|
||||
ili9341Font12x20MonoRenderChar_loop1:
|
||||
ldi r24, 12 ; 16 bits
|
||||
ldi r23, 8
|
||||
lpm r17, Z+
|
||||
font12x20MonoRenderCharacter_loop2:
|
||||
ldi r23, 8 ; bit counter
|
||||
lpm r17, Z+ ; current font byte
|
||||
ili9341Font12x20MonoRenderChar_loop2:
|
||||
dec r23
|
||||
brne font12x20MonoRenderCharacter_haveByte
|
||||
brne ili9341Font12x20MonoRenderChar_haveByte
|
||||
lpm r17, Z+
|
||||
ldi r23, 8
|
||||
font12x20MonoRenderCharacter_haveByte:
|
||||
ili9341Font12x20MonoRenderChar_haveByte:
|
||||
lsr r17
|
||||
brcs font12x20MonoRenderCharacter_writeForeground
|
||||
st X+, r0
|
||||
st X+, r1
|
||||
rjmp font12x20MonoRenderCharacter_loop2end
|
||||
font12x20MonoRenderCharacter_writeForeground:
|
||||
st X+, r2
|
||||
st X+, r3
|
||||
font12x20MonoRenderCharacter_loop2end:
|
||||
brcs ili9341Font12x20MonoRenderChar_writeForeground
|
||||
mov r18, r0
|
||||
mov r19, r1
|
||||
rjmp ili9341Font12x20MonoRenderChar_sendToDisplay
|
||||
ili9341Font12x20MonoRenderChar_writeForeground:
|
||||
mov r18, r2
|
||||
mov r19, r3
|
||||
ili9341Font12x20MonoRenderChar_sendToDisplay:
|
||||
mov r16, r18
|
||||
rcall SPIHW_MasterTransfer ; (R16)
|
||||
mov r16, r19
|
||||
rcall SPIHW_MasterTransfer ; (R16)
|
||||
ili9341Font12x20MonoRenderChar_loop2end:
|
||||
dec r24
|
||||
brne font12x20MonoRenderCharacter_loop2
|
||||
brne ili9341Font12x20MonoRenderChar_loop2
|
||||
dec r25
|
||||
brne font12x20MonoRenderCharacter_loop1
|
||||
brne ili9341Font12x20MonoRenderChar_loop1
|
||||
ldi r18, 12
|
||||
ldi r19, 20
|
||||
pop zh
|
||||
@@ -80,22 +87,22 @@ font12x20MonoRenderCharacter_loop2end:
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine font12x20GetCharPosInFont
|
||||
; @routine ili9341Font12x20GetCharPosInFont
|
||||
|
||||
; @param R16 character to write
|
||||
; @param Z pointer to font
|
||||
; @return Z pointer to begin of char data
|
||||
; @clobbers r17, r24, r25, z
|
||||
|
||||
font12x20GetCharPosInFont:
|
||||
ili9341Font12x20GetCharPosInFont:
|
||||
mov r24, r16
|
||||
adiw zh:zl, FONT_OFFS_FIRSTCHAR
|
||||
lpm r24, Z+ ; first char num
|
||||
lpm r25, Z+ ; num of chars
|
||||
sub r16, r24
|
||||
brcs font12x20GetCharPosInFont_ret
|
||||
brcs ili9341Font12x20GetCharPosInFont_ret
|
||||
cp r16, r25
|
||||
brcc font12x20GetCharPosInFont_ret
|
||||
brcc ili9341Font12x20GetCharPosInFont_ret
|
||||
|
||||
mov r24, r16
|
||||
clr r25
|
||||
@@ -121,9 +128,11 @@ font12x20GetCharPosInFont:
|
||||
|
||||
add zl, r24
|
||||
adc zh, r25
|
||||
font12x20GetCharPosInFont_ret:
|
||||
ili9341Font12x20GetCharPosInFont_ret:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
#endif ; AQH_AVR_ILI9341_FONT12X20_ASM
|
||||
|
||||
@@ -15,6 +15,9 @@
|
||||
; https://www.mikrocontroller.net/topic/54860
|
||||
; ***************************************************************************
|
||||
|
||||
#ifndef AQH_AVR_ILI9341_FONT12X20_1_ASM
|
||||
#define AQH_AVR_ILI9341_FONT12X20_1_ASM
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
@@ -24,9 +27,9 @@
|
||||
|
||||
|
||||
|
||||
font5_12x20:
|
||||
ili9341Font12x20_1:
|
||||
; header
|
||||
.dw font12x20MonoHandlerFn ; handlerFn
|
||||
.dw ili9341Font12x20MonoHandlerFn ; handlerFn
|
||||
.dw 480 ; needed buffer size
|
||||
.db 12, 20 ; width, height of chars
|
||||
.db 32, 224 ; first char, num of chars in font
|
||||
@@ -256,3 +259,5 @@ font5_12x20:
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x07,0xFE,0x07,0xFE,0x07,0xFE,0x07,0xFE,0x07,0xFE,0x07,0xFE,0x07,0xFE,0x07,0xFE,0x07,0xFE,0x07,0xFE,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ; 0xFE
|
||||
.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 ; 0xFF
|
||||
|
||||
|
||||
#endif ; AQH_AVR_ILI9341_FONT12X20_1_ASM
|
||||
@@ -7,6 +7,11 @@
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
#ifndef AQH_AVR_ILI9341_FONT6X8_ASM
|
||||
#define AQH_AVR_ILI9341_FONT6X8_ASM
|
||||
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; code
|
||||
@@ -16,57 +21,63 @@
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine font6x8MonoHandlerFn
|
||||
; @routine ili9341Font6x8MonoHandlerFn
|
||||
;
|
||||
; Handler for 6x8 Mono Fonts
|
||||
;
|
||||
|
||||
font6x8MonoHandlerFn:
|
||||
ili9341Font6x8MonoHandlerFn:
|
||||
cpi r23, FONT_FN_RENDER
|
||||
breq font6x8MonoRenderCharacter
|
||||
breq ili9341Font6x8WriteChar
|
||||
rjmp FONT_GenericHandler
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine font6x8RenderCharacter
|
||||
; @routine ili9341Font6x8WriteChar
|
||||
|
||||
; @param R16 character to write
|
||||
; @param R1:R0 background color
|
||||
; @param R3:R2 foreground color
|
||||
; @param Z pointer to font
|
||||
; @param X pointer to RAM to store data to
|
||||
; @param r18 char width in pixel
|
||||
; @param r19 char height in pixel
|
||||
; @clobbers r16, r17, r24, r25, x
|
||||
; @return R18 width of char in pixels
|
||||
; @return R19 height of char in pixels
|
||||
; @clobbers r16, r17, r18, r19, r22, r23, r24, r25
|
||||
|
||||
font6x8MonoRenderCharacter:
|
||||
ili9341Font6x8WriteChar:
|
||||
push zl
|
||||
push zh
|
||||
adiw zh:zl, FONT_OFFS_WIDTH
|
||||
lpm r18, Z+ ; char width in pixels
|
||||
lpm r19, Z ; char height in pixels
|
||||
sbiw zh:zl, FONT_OFFS_WIDTH+1
|
||||
rcall font6x8GetCharPosInFont ; (r16, r17, r24, r25, z)
|
||||
mov r25, r19 ; height in pixels
|
||||
font6x8MonoRenderCharacter_loop1:
|
||||
mov r24, r18 ; width in pixels
|
||||
lpm r17, Z+
|
||||
font6x8MonoRenderCharacter_loop2:
|
||||
rcall ili9341Font6x8GetCharPosInFont ; (r16, r24, r25, z)
|
||||
mov r25, r19 ; height in pixels
|
||||
ili9341Font6x8WriteChar_loop1:
|
||||
mov r24, r18 ; width in pixels
|
||||
lpm r17, Z+ ; font data
|
||||
ili9341Font6x8WriteChar_loop2:
|
||||
lsr r17
|
||||
brcs font6x8MonoRenderCharacter_writeForeground
|
||||
st X+, r0
|
||||
st X+, r1
|
||||
rjmp font6x8MonoRenderCharacter_loop2end
|
||||
font6x8MonoRenderCharacter_writeForeground:
|
||||
st X+, r2
|
||||
st X+, r3
|
||||
font6x8MonoRenderCharacter_loop2end:
|
||||
brcs ili9341Font6x8WriteChar_writeForeground
|
||||
mov r22, r0
|
||||
mov r23, r1
|
||||
rjmp ili9341Font6x8WriteChar_sendToDisplay
|
||||
ili9341Font6x8WriteChar_writeForeground:
|
||||
mov r22, r2
|
||||
mov r23, r3
|
||||
ili9341Font6x8WriteChar_sendToDisplay:
|
||||
mov r16, r23
|
||||
rcall SPIHW_MasterTransfer ; (R16)
|
||||
mov r16, r22
|
||||
rcall SPIHW_MasterTransfer ; (R16)
|
||||
ili9341Font6x8WriteChar_loop2end:
|
||||
dec r24
|
||||
brne font6x8MonoRenderCharacter_loop2
|
||||
brne ili9341Font6x8WriteChar_loop2
|
||||
dec r25
|
||||
brne font6x8MonoRenderCharacter_loop1
|
||||
brne ili9341Font6x8WriteChar_loop1
|
||||
ili9341Font6x8WriteChar_end:
|
||||
pop zh
|
||||
pop zl
|
||||
ret
|
||||
@@ -75,22 +86,22 @@ font6x8MonoRenderCharacter_loop2end:
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine font6x8GetCharPosInFont (same as font8x8GetCharPosInFont!)
|
||||
; @routine ili9341Font6x8GetCharPosInFont (same as font8x8GetCharPosInFont!)
|
||||
|
||||
; @param R16 character to write
|
||||
; @param Z pointer to font
|
||||
; @return Z pointer to begin of char data
|
||||
; @clobbers r16, r17, r24, r25, z
|
||||
; @clobbers r16, r24, r25, z
|
||||
|
||||
font6x8GetCharPosInFont:
|
||||
mov r24, r16
|
||||
ili9341Font6x8GetCharPosInFont:
|
||||
adiw zh:zl, FONT_OFFS_FIRSTCHAR
|
||||
lpm r24, Z+ ; first char num
|
||||
lpm r25, Z+ ; num of chars
|
||||
; Z now points to begin of font data
|
||||
sub r16, r24
|
||||
brcs font6x8GetCharPosInFont_ret
|
||||
brcs ili9341Font6x8GetCharPosInFont_ret
|
||||
cp r16, r25
|
||||
brcc font6x8GetCharPosInFont_ret
|
||||
brcc ili9341Font6x8GetCharPosInFont_ret
|
||||
mov r24, r16
|
||||
clr r25
|
||||
lsl r24 ; x2
|
||||
@@ -101,9 +112,11 @@ font6x8GetCharPosInFont:
|
||||
rol r25
|
||||
add zl, r24
|
||||
adc zh, r25
|
||||
font6x8GetCharPosInFont_ret:
|
||||
ili9341Font6x8GetCharPosInFont_ret:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
#endif ; AQH_AVR_ILI9341_FONT6X8_ASM
|
||||
|
||||
@@ -15,6 +15,10 @@
|
||||
; https://www.mikrocontroller.net/topic/54860
|
||||
; ***************************************************************************
|
||||
|
||||
#ifndef AQH_AVR_ILI9341_FONT6X8_1_ASM
|
||||
#define AQH_AVR_ILI9341_FONT6X8_1_ASM
|
||||
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
@@ -24,9 +28,9 @@
|
||||
|
||||
|
||||
|
||||
font2_6x8:
|
||||
ili9341Font6x8_1:
|
||||
; header
|
||||
.dw font6x8MonoHandlerFn ; handlerFn
|
||||
.dw ili9341Font6x8MonoHandlerFn ; handlerFn
|
||||
.db 96, 0 ; needed buffer size
|
||||
.db 6, 8 ; width, height of chars
|
||||
.db 32, 224 ; first char, num of chars in font
|
||||
@@ -255,3 +259,7 @@ font2_6x8:
|
||||
.db 0x06,0x08,0x04,0x0E,0x00,0x00,0x00,0x00, ; 0xFD
|
||||
.db 0x00,0x00,0x1E,0x1E,0x1E,0x1E,0x00,0x00, ; 0xFE
|
||||
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ; 0xFF
|
||||
|
||||
|
||||
#endif ; AQH_AVR_ILI9341_FONT6X8_1_ASM
|
||||
|
||||
@@ -7,75 +7,21 @@
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
#ifndef AQH_AVR_ILI9341_GRAPHOPS_ASM
|
||||
#define AQH_AVR_ILI9341_GRAPHOPS_ASM
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine ili9341SetAddressWindow
|
||||
; @routine Display_FillRect @global
|
||||
;
|
||||
; @param r5:r4 X0
|
||||
; @param r7:r6 Y0
|
||||
; @param r9:r8 W
|
||||
; @param r11:r10 H
|
||||
; @clobbers R16, r20, r21
|
||||
|
||||
ili9341SetAddressWindow:
|
||||
; calc XEnd (=X+W-1)
|
||||
mov r20, r8
|
||||
mov r21, r9
|
||||
add r20, r4
|
||||
adc r21, r5
|
||||
subi r20, 1
|
||||
sbci r21, 0
|
||||
|
||||
; send column address
|
||||
ldi r16, ILI9341_CMD_CASET
|
||||
rcall ili9341SendCommand
|
||||
; X0
|
||||
mov r16, r5
|
||||
rcall ili9341SendData
|
||||
mov r16, r4
|
||||
rcall ili9341SendData
|
||||
; X1
|
||||
mov r16, r21
|
||||
rcall ili9341SendData
|
||||
mov r16, r20
|
||||
rcall ili9341SendData
|
||||
|
||||
; calc YEnd (=Y+H-1)
|
||||
mov r20, r10
|
||||
mov r21, r11
|
||||
add r20, r6
|
||||
adc r21, r7
|
||||
subi r20, 1
|
||||
sbci r21, 0
|
||||
|
||||
; send row address
|
||||
ldi r16, ILI9341_CMD_PASET
|
||||
rcall ili9341SendCommand
|
||||
; Y0
|
||||
mov r16, r7
|
||||
rcall ili9341SendData
|
||||
mov r16, r6
|
||||
rcall ili9341SendData
|
||||
; Y1
|
||||
mov r16, r21
|
||||
rcall ili9341SendData
|
||||
mov r16, r20
|
||||
rcall ili9341SendData
|
||||
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine ILI9341_FillRect
|
||||
; @param r3:r2 color
|
||||
; @param r5:r4 X0
|
||||
; @param r7:r6 Y0
|
||||
; @param r9:r8 X1/W
|
||||
; @param r11:r10 Y1/H
|
||||
|
||||
ILI9341_FillRect:
|
||||
Display_FillRect:
|
||||
push r15
|
||||
in r15, SREG
|
||||
cli
|
||||
@@ -87,28 +33,28 @@ ILI9341_FillRect:
|
||||
mov r19, r3
|
||||
mov r22, r10 ; H low
|
||||
mov r23, r11 ; H high
|
||||
ldi r16, ILI9341_CMD_RAMWR ; start writing ro RAM
|
||||
rcall ili9341SendCommand
|
||||
ldi r16, ILI9341_CMD_RAMWR ; start writing ro RAM
|
||||
rcall ili9341SendCommand ; (R16)
|
||||
|
||||
cbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS low
|
||||
sbi ILI9341_DC_OUTPUT, ILI9341_DC_PIN ; D high (DATA)
|
||||
ILI9341_FillRect_loopH:
|
||||
Display_FillRect_loopH:
|
||||
mov r24, r8 ; W low
|
||||
mov r25, r9 ; W high
|
||||
ILI9341_FillRect_loopW:
|
||||
Display_FillRect_loopW:
|
||||
mov r16, r19
|
||||
rcall SPIHW_MasterTransfer
|
||||
rcall SPIHW_MasterTransfer ; (R16)
|
||||
mov r16, r18
|
||||
rcall SPIHW_MasterTransfer
|
||||
rcall SPIHW_MasterTransfer ; (R16)
|
||||
sbiw r25:r24, 1
|
||||
brne ILI9341_FillRect_loopW
|
||||
brne Display_FillRect_loopW
|
||||
mov r24, r22 ; H low
|
||||
mov r25, r23 ; H high
|
||||
sbiw r25:r24, 1 ; dec
|
||||
mov r22, r24 ; save in r23:r22
|
||||
mov r23, r25
|
||||
brne ILI9341_FillRect_loopH
|
||||
sbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS high
|
||||
brne Display_FillRect_loopH
|
||||
sbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS high
|
||||
rcall ili9341EndSpi
|
||||
out SREG, r15
|
||||
pop r15
|
||||
@@ -118,7 +64,62 @@ ILI9341_FillRect_loopW:
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine ili9341BitBlit
|
||||
; @routine Display_DrawChar @global
|
||||
|
||||
; @param R16 character to write
|
||||
; @param R1:R0 background color
|
||||
; @param R3:R2 foreground color
|
||||
; @param R5:R4 X (dest)
|
||||
; @param R7:R6 Y (dest)
|
||||
; @param Z pointer to font
|
||||
; @return R18 width of char written (in pixel)
|
||||
; @return R19 height of char written (in pixel)
|
||||
; @clobbers any, !Z
|
||||
|
||||
Display_DrawChar:
|
||||
push r15
|
||||
in r15, SREG
|
||||
cli
|
||||
|
||||
push zl
|
||||
push zh
|
||||
mov r22, r16 ; save char to R22
|
||||
adiw zh:zl, FONT_OFFS_WIDTH
|
||||
lpm r8, Z+ ; char width in pixels
|
||||
clr r9
|
||||
lpm r10, Z ; char height in pixels
|
||||
clr r11
|
||||
sbiw zh:zl, FONT_OFFS_WIDTH+1
|
||||
|
||||
rcall ili9341BeginSpi ; (r16, r17)
|
||||
rcall ili9341SetAddressWindow ; (R16, R20, R21)
|
||||
|
||||
ldi r16, ILI9341_CMD_RAMWR ; start writing ro RAM
|
||||
rcall ili9341SendCommand ; (R16)
|
||||
|
||||
cbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS low
|
||||
sbi ILI9341_DC_OUTPUT, ILI9341_DC_PIN ; D high (DATA)
|
||||
|
||||
mov r16, r22 ; char to write
|
||||
rcall FONT_RenderChar ; (any)
|
||||
pop zh
|
||||
pop zl
|
||||
|
||||
sbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS high
|
||||
rcall ili9341EndSpi ; (R16)
|
||||
|
||||
out SREG, r15
|
||||
pop r15
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine Display_BitBlit @global
|
||||
|
||||
; @param r5:r4 X (dest)
|
||||
; @param r7:r6 Y (dest)
|
||||
@@ -127,7 +128,7 @@ ILI9341_FillRect_loopW:
|
||||
; @param X source data pointer (RAM)
|
||||
; @clobbers r16, r22, r23, r24, r25, X (r17, r20, r21)
|
||||
|
||||
ili9341BitBlit:
|
||||
Display_BitBlit:
|
||||
push r15
|
||||
in r15, SREG
|
||||
cli
|
||||
@@ -138,30 +139,30 @@ ili9341BitBlit:
|
||||
ldi r16, ILI9341_CMD_RAMWR ; start writing ro RAM
|
||||
rcall ili9341SendCommand
|
||||
|
||||
mov r22, r10
|
||||
mov r22, r10 ; store remaining height
|
||||
mov r23, r11
|
||||
cbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS low
|
||||
sbi ILI9341_DC_OUTPUT, ILI9341_DC_PIN ; D high (DATA)
|
||||
ili9341BitBlit_loopH:
|
||||
mov r24, r8
|
||||
Display_BitBlit_loopH:
|
||||
mov r24, r8 ; r25:r24=width in pixel
|
||||
mov r25, r9
|
||||
ili9341BitBlit_loopW:
|
||||
ld r18, X+
|
||||
Display_BitBlit_loopW:
|
||||
ld r18, X+ ; read color from X
|
||||
ld r19, X+
|
||||
mov r16, r19
|
||||
rcall SPIHW_MasterTransfer ; (R16)
|
||||
rcall SPIHW_MasterTransfer ; (R16)
|
||||
mov r16, r18
|
||||
rcall SPIHW_MasterTransfer ; (R16)
|
||||
rcall SPIHW_MasterTransfer ; (R16)
|
||||
sbiw r25:r24, 1
|
||||
brne ili9341BitBlit_loopW
|
||||
brne Display_BitBlit_loopW
|
||||
mov r24, r22
|
||||
mov r25, r23
|
||||
sbiw r25:r24, 1
|
||||
mov r22, r24
|
||||
mov r23, r25
|
||||
brne ili9341BitBlit_loopH
|
||||
sbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS high
|
||||
rcall ili9341EndSpi ; (R16)
|
||||
brne Display_BitBlit_loopH
|
||||
sbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS high
|
||||
rcall ili9341EndSpi ; (R16)
|
||||
out SREG, r15
|
||||
pop r15
|
||||
ret
|
||||
@@ -333,4 +334,67 @@ ili9341BitBlitStretchNWriteLine_loop2:
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine ili9341SetAddressWindow
|
||||
;
|
||||
; @param r5:r4 X0
|
||||
; @param r7:r6 Y0
|
||||
; @param r9:r8 W
|
||||
; @param r11:r10 H
|
||||
; @clobbers R16, r20, r21
|
||||
|
||||
ili9341SetAddressWindow:
|
||||
; calc XEnd (=X+W-1)
|
||||
mov r20, r8
|
||||
mov r21, r9
|
||||
add r20, r4
|
||||
adc r21, r5
|
||||
subi r20, 1
|
||||
sbci r21, 0
|
||||
|
||||
; send column address
|
||||
ldi r16, ILI9341_CMD_CASET
|
||||
rcall ili9341SendCommand ; (R16)
|
||||
; X0
|
||||
mov r16, r5
|
||||
rcall ili9341SendData ; (R16)
|
||||
mov r16, r4
|
||||
rcall ili9341SendData ; (R16)
|
||||
; X1
|
||||
mov r16, r21
|
||||
rcall ili9341SendData ; (R16)
|
||||
mov r16, r20
|
||||
rcall ili9341SendData ; (R16)
|
||||
|
||||
; calc YEnd (=Y+H-1)
|
||||
mov r20, r10
|
||||
mov r21, r11
|
||||
add r20, r6
|
||||
adc r21, r7
|
||||
subi r20, 1
|
||||
sbci r21, 0
|
||||
|
||||
; send row address
|
||||
ldi r16, ILI9341_CMD_PASET
|
||||
rcall ili9341SendCommand ; (R16)
|
||||
; Y0
|
||||
mov r16, r7
|
||||
rcall ili9341SendData ; (R16)
|
||||
mov r16, r6
|
||||
rcall ili9341SendData
|
||||
; Y1
|
||||
mov r16, r21
|
||||
rcall ili9341SendData ; (R16)
|
||||
mov r16, r20
|
||||
rcall ili9341SendData ; (R16)
|
||||
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif ; AQH_AVR_ILI9341_GRAPHOPS_ASM
|
||||
|
||||
|
||||
@@ -7,6 +7,11 @@
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
#ifndef AQH_AVR_ILI9341_IO_SPI_ASM
|
||||
#define AQH_AVR_ILI9341_IO_SPI_ASM
|
||||
|
||||
|
||||
|
||||
; generally we use the following parameters here:
|
||||
; @param r1:r0 background color
|
||||
; @param r3:r2 foreground color
|
||||
@@ -59,7 +64,7 @@ ILI9341IoInit:
|
||||
ili9341BeginSpi:
|
||||
ldi r16, ILI9341_SPIMODE
|
||||
ldi r17, ILI9341_DEVICENUM
|
||||
rjmp SPIHW_MasterStart ; (R18)
|
||||
rjmp SPIHW_MasterStart ; (R17)
|
||||
; @end
|
||||
|
||||
|
||||
@@ -75,17 +80,31 @@ ili9341EndSpi:
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine ili9341SendCommand
|
||||
;
|
||||
; @param r16 byte to send
|
||||
; @return r16 byte received
|
||||
; @clobbers r16
|
||||
|
||||
ili9341SendCommand:
|
||||
cbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS low
|
||||
cbi ILI9341_DC_OUTPUT, ILI9341_DC_PIN ; D low
|
||||
nop
|
||||
rcall SPIHW_MasterTransfer
|
||||
rcall SPIHW_MasterTransfer ; (none)
|
||||
sbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS low
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine ili9341SendData
|
||||
;
|
||||
; @param r16 byte to send
|
||||
; @return r16 byte received
|
||||
; @clobbers r16
|
||||
|
||||
ili9341SendData:
|
||||
cbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS low
|
||||
sbi ILI9341_DC_OUTPUT, ILI9341_DC_PIN ; D high
|
||||
@@ -96,7 +115,12 @@ ili9341SendData:
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine ili9341Send16BitData
|
||||
;
|
||||
; @param r19:18 data
|
||||
; @clobbers r16
|
||||
|
||||
ili9341Send16BitData:
|
||||
cbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS low
|
||||
sbi ILI9341_DC_OUTPUT, ILI9341_DC_PIN ; D high
|
||||
@@ -110,3 +134,5 @@ ili9341Send16BitData:
|
||||
|
||||
|
||||
|
||||
#endif ; AQH_AVR_ILI9341_IO_SPI_ASM
|
||||
|
||||
|
||||
@@ -7,6 +7,11 @@
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
#ifndef AQH_AVR_ILI9341_MAIN_ASM
|
||||
#define AQH_AVR_ILI9341_MAIN_ASM
|
||||
|
||||
|
||||
|
||||
; generally we use the following parameters here:
|
||||
; @param r1:r0 background color
|
||||
; @param r3:r2 foreground color
|
||||
@@ -14,6 +19,8 @@
|
||||
; @param r7:r6 Y0
|
||||
; @param r9:r8 X1/W
|
||||
; @param r11:r10 Y1/H
|
||||
; @param r13:r12 source data width in bytes (for bit blit, i.e. byte offset from
|
||||
; one source data line to the next)
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
@@ -65,7 +72,7 @@ ILI9341_Fini:
|
||||
; Z=byte pointer to command list (as for LPM)
|
||||
|
||||
ili9341SendCommands:
|
||||
rcall ili9341BeginSpi
|
||||
rcall ili9341BeginSpi ; (R16, R17)
|
||||
ili9341SendCommands_loop1:
|
||||
lpm r16, Z+ ; read command
|
||||
lpm r18, Z+ ; read number of args
|
||||
@@ -229,3 +236,6 @@ ili9341InitCommands:
|
||||
.db 0xff, 0xff
|
||||
|
||||
|
||||
#endif ; AQH_AVR_ILI9341_MAIN_ASM
|
||||
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
|
||||
|
||||
#if 0
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine ili9341_WriteCharacterX1At
|
||||
|
||||
@@ -256,4 +257,4 @@ Debug_WriteHexBuffer_loop:
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#endif ; if 0
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
#ifndef AQH_AVR_WIN_H
|
||||
#define AQH_AVR_WIN_H
|
||||
#ifndef AQH_AVR_WIN_DEFS_H
|
||||
#define AQH_AVR_WIN_DEFS_H
|
||||
|
||||
|
||||
; tree/list data
|
||||
@@ -18,12 +18,11 @@
|
||||
.equ OBJ_OFFS_OBJECT = OBJ_OFFS_TREE+TREE_SIZE
|
||||
.equ OBJ_OFFS_HANDLERFN_LO = OBJ_OFFS_OBJECT
|
||||
.equ OBJ_OFFS_HANDLERFN_HI = OBJ_OFFS_OBJECT+1
|
||||
.equ OBJ_OFFS_LINKS_LO = OBJ_OFFS_OBJECT+2
|
||||
.equ OBJ_OFFS_LINKS_HI = OBJ_OFFS_OBJECT+3
|
||||
.equ OBJ_OFFS_TIMERS_LO = OBJ_OFFS_OBJECT+4
|
||||
.equ OBJ_OFFS_TIMERS_HI = OBJ_OFFS_OBJECT+5
|
||||
.equ OBJ_OFFS_OPTIONS = OBJ_OFFS_OBJECT+6
|
||||
.equ OBJ_OFFS_SIZE = OBJ_OFFS_OBJECT+7
|
||||
.equ OBJ_OFFS_TARGET_LO = OBJ_OFFS_OBJECT+2
|
||||
.equ OBJ_OFFS_TARGET_HI = OBJ_OFFS_OBJECT+3
|
||||
.equ OBJ_OFFS_IDFORTARGET = OBJ_OFFS_OBJECT+4
|
||||
.equ OBJ_OFFS_OPTIONS = OBJ_OFFS_OBJECT+5
|
||||
.equ OBJ_OFFS_SIZE = OBJ_OFFS_OBJECT+6
|
||||
|
||||
; widget data
|
||||
.equ WID_OFFS_WIDGET = OBJ_OFFS_SIZE
|
||||
@@ -59,6 +58,7 @@
|
||||
.equ WID_OPTIONS0_BIT_VISIBLE = 0 ; OBJ_OFFS_OPTIONS
|
||||
.equ WID_OPTIONS0_BIT_DIRTY = 1
|
||||
.equ WID_OPTIONS0_BIT_LAYOUT = 2
|
||||
.equ WID_OPTIONS0_BIT_DATAINSDRAM = 3 ; text or other data is in SDRAM, not in flash
|
||||
|
||||
.equ WID_OPTIONS1_BIT_STRETCH_X = 0 ; WID_OFFS_OPTIONS1
|
||||
.equ WID_OPTIONS1_BIT_STRETCH_Y = 1
|
||||
@@ -98,21 +98,6 @@
|
||||
|
||||
|
||||
|
||||
; Links
|
||||
|
||||
.equ OBJ_LINK_OFFS_LIST = 0
|
||||
.equ OBJ_LINK_OFFS_SIGNAL = LIST_SIZE
|
||||
.equ OBJ_LINK_OFFS_SLOT = LIST_SIZE+1
|
||||
.equ OBJ_LINK_OFFS_TARGET_LO = LIST_SIZE+2
|
||||
.equ OBJ_LINK_OFFS_TARGET_HI = LIST_SIZE+3
|
||||
.equ OBJ_LINK_SIZE = LIST_SIZE+4
|
||||
; fns:
|
||||
; - removeLinksTo(Y=win, r19:r18=target)
|
||||
; - addLink(Y=win, r16=signal, r17=slot, r19:r18=target)
|
||||
; - removeLinks(Y=win)
|
||||
|
||||
|
||||
|
||||
.equ TIMER_OFFS_LIST = 0
|
||||
.equ TIMER_OFFS_TIMER = LIST_SIZE
|
||||
.equ TIMER_OFFS_VALUE_LO = TIMER_OFFS_TIMER
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
#ifndef AQH_AVR_WIN_OBJECT_H
|
||||
#define AQH_AVR_WIN_OBJECT_H
|
||||
|
||||
|
||||
.cseg
|
||||
|
||||
@@ -15,20 +18,24 @@
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine OBJ_Init @global
|
||||
;
|
||||
; @param Y pointer to object SRAM
|
||||
; @param r17 options
|
||||
; @clobbers X
|
||||
; Generally every object only reports its signals to a single other object
|
||||
; (called the target). However, every object can receive signals from multiple
|
||||
; sender objects. To allow this the target assigns its own id (called idForTarget)
|
||||
; to the new object in order to determine who sent the signal and to act accordingly.
|
||||
; There are system signals which don't use idForTarget (like OBJ_SIGNAL_DESTROY).
|
||||
;
|
||||
; @param Y pointer to object in SRAM
|
||||
; @param r18 options
|
||||
; @clobbers r16, r17, X
|
||||
|
||||
OBJ_Init:
|
||||
push r17
|
||||
mov xl, yl
|
||||
mov xh, yh
|
||||
clr r16
|
||||
ldi r17, OBJ_OFFS_SIZE
|
||||
bigcall Utils_FillSram ; (R17, X)
|
||||
bigcall Tree_InitObject ; (R16)
|
||||
pop r17
|
||||
std Y+OBJ_OFFS_OPTIONS, r17
|
||||
mov xl, yl
|
||||
mov xh, yh
|
||||
clr r16
|
||||
ldi r17, OBJ_OFFS_SIZE
|
||||
bigcall Utils_FillSram ; (R17, X)
|
||||
bigcall Tree_InitObject ; (R16)
|
||||
std Y+OBJ_OFFS_OPTIONS, r18
|
||||
ldi r16, LOW(OBJ_DefaultHandler)
|
||||
std Y+OBJ_OFFS_HANDLERFN_LO, r16
|
||||
ldi r16, HIGH(OBJ_DefaultHandler)
|
||||
@@ -38,12 +45,28 @@ OBJ_Init:
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine OBJ_SetTarget @global
|
||||
;
|
||||
; @param r19 srcIdForTarget
|
||||
; @param X pointer to target
|
||||
; @clobbers none
|
||||
|
||||
OBJ_SetTarget:
|
||||
std Y+OBJ_OFFS_TARGET_LO, xl
|
||||
std Y+OBJ_OFFS_TARGET_HI, xh
|
||||
std Y+OBJ_OFFS_IDFORTARGET, r19
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine OBJ_SetHandler @global
|
||||
;
|
||||
; @param Y pointer to object SRAM
|
||||
; @param Z pointer to handler function (word address)
|
||||
; @clobbers X
|
||||
; @clobbers none
|
||||
|
||||
OBJ_SetHandler:
|
||||
std Y+OBJ_OFFS_HANDLERFN_LO, zl
|
||||
@@ -68,55 +91,20 @@ OBJ_GetHandler:
|
||||
|
||||
|
||||
|
||||
OBJ_DefaultHandler:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine OBJ_free @global
|
||||
; @routine OBJ_DefaultHandler @global
|
||||
;
|
||||
; @param Y pointer to object in SRAM
|
||||
; This is a default signal handler which does nothing.
|
||||
;
|
||||
; @param Y pointer to object SRAM
|
||||
; @param r18 signal
|
||||
; @param r19 srcIdForTarget
|
||||
; @param R20 1st param
|
||||
; @param R21 2nd param
|
||||
; @param X 3rd param
|
||||
; @clobbers any
|
||||
|
||||
OBJ_free:
|
||||
; free children
|
||||
push yl
|
||||
push yh
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
OBJ_free_loop:
|
||||
mov r16, xl
|
||||
or r16, xh
|
||||
breq OBJ_free_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
rcall Tree_GetNextSibling
|
||||
push xl ; next
|
||||
push xh ; next
|
||||
rcall OBJ_free
|
||||
pop xh ; next
|
||||
pop xl ; next
|
||||
rjmp OBJ_free_loop
|
||||
OBJ_free_loopEnd:
|
||||
pop yh
|
||||
pop yl
|
||||
|
||||
rcall Tree_UnlinkObject ; (r16, r17, x)
|
||||
|
||||
push yl
|
||||
push yh
|
||||
ldi r16, OBJ_SIGNAL_DESTROY
|
||||
rcall OBJ_Handler
|
||||
pop yh
|
||||
pop yl
|
||||
rcall objFreeLinks
|
||||
rcall objFreeTimers
|
||||
mov xl, yl
|
||||
mov xh, yh
|
||||
rcall Heap_free
|
||||
OBJ_DefaultHandler:
|
||||
clc
|
||||
ret
|
||||
; @end
|
||||
@@ -124,15 +112,62 @@ OBJ_free_loopEnd:
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine OBJ_Handler
|
||||
; @routine OBJ_Fini @global
|
||||
;
|
||||
; This routine calls OBJ_Fini on every child object, Then it sends the signal
|
||||
; OBJ_SIGNAL_DESTROY to this object allowing it to release all its ressources
|
||||
; (including memory space if using heap or other dynamic ressources).
|
||||
;
|
||||
; @param Y pointer to object in SRAM
|
||||
; @clobbers any, !Y
|
||||
|
||||
OBJ_Fini:
|
||||
; fini children
|
||||
push yl
|
||||
push yh
|
||||
bigcall Tree_GetFirstChildObject ; (none)
|
||||
OBJ_Fini_loop:
|
||||
mov r16, xl
|
||||
or r16, xh
|
||||
breq OBJ_Fini_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
bigcall Tree_GetNextSibling
|
||||
push xl ; next
|
||||
push xh ; next
|
||||
rcall OBJ_Fini
|
||||
pop xh ; next
|
||||
pop xl ; next
|
||||
rjmp OBJ_Fini_loop
|
||||
OBJ_Fini_loopEnd:
|
||||
pop yh
|
||||
pop yl
|
||||
|
||||
bigcall Tree_UnlinkObject ; (r16, r17, x)
|
||||
|
||||
push yl
|
||||
push yh
|
||||
ldi r18, OBJ_SIGNAL_DESTROY
|
||||
clr r19
|
||||
rcall OBJ_Handler
|
||||
pop yh ; probably no longer usable pointer,
|
||||
pop yl ; especially if using heap!
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine OBJ_Handler @global
|
||||
;
|
||||
; Signal handler for an object. A signal can have up to 3 parameters
|
||||
; conveyed in registers R18, R19 and X.
|
||||
; conveyed in registers R20, R21 and X.
|
||||
;
|
||||
; @param Y pointer to object SRAM
|
||||
; @param r16 signal
|
||||
; @param R18 1st param
|
||||
; @param R19 2nd param
|
||||
; @param r18 signal
|
||||
; @param r19 srcIdForTarget
|
||||
; @param R20 1st param
|
||||
; @param R21 2nd param
|
||||
; @param X 3rd param
|
||||
|
||||
OBJ_Handler:
|
||||
@@ -146,22 +181,22 @@ OBJ_Handler:
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine OBJ_ForwardSignalToChildren
|
||||
; @routine OBJ_ForwardSignalToChildren @global
|
||||
;
|
||||
; Signal handler for an object. A signal can have up to 3 parameters
|
||||
; conveyed in registers R18, R19 and X.
|
||||
;
|
||||
; @param Y pointer to object SRAM
|
||||
; @param r16 signal
|
||||
; @param R18 1st param
|
||||
; @param R19 2nd param
|
||||
; @param r18 signal
|
||||
; @param R20 1st param
|
||||
; @param R21 2nd param
|
||||
; @param X 3rd param
|
||||
; @clobbers any, !r16, !r18, !r19, !Y
|
||||
; @clobbers any, !r18, !r20, !r21, !Y
|
||||
|
||||
OBJ_ForwardSignalToChildren:
|
||||
push yl
|
||||
push yh
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
bigcall Tree_GetFirstChildObject ; (none)
|
||||
OBJ_ForwardSignalToChildren_loop:
|
||||
clc
|
||||
mov r17, xl
|
||||
@@ -169,21 +204,22 @@ OBJ_ForwardSignalToChildren_loop:
|
||||
breq OBJ_ForwardSignalToChildren_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
push r16
|
||||
push r18
|
||||
push r19
|
||||
push r18
|
||||
push r20
|
||||
push r21
|
||||
push xl
|
||||
push xh
|
||||
push yl
|
||||
push yh
|
||||
clr r19 ; srcId for target set to 0 (this is a direct call to the handler)
|
||||
rcall OBJ_Handler
|
||||
pop yh
|
||||
pop yl
|
||||
pop xh
|
||||
pop xl
|
||||
pop r19
|
||||
pop r18
|
||||
pop r16
|
||||
pop r21
|
||||
pop r20
|
||||
pop r18
|
||||
rcall Tree_GetNextSibling
|
||||
rjmp OBJ_ForwardSignalToChildren_loop
|
||||
OBJ_ForwardSignalToChildren_loopEnd:
|
||||
@@ -195,246 +231,27 @@ OBJ_ForwardSignalToChildren_loopEnd:
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine OBJ_EmitSignal
|
||||
; @routine OBJ_EmitSignal @global
|
||||
;
|
||||
; @param Y pointer to object SRAM
|
||||
; @param r16 signal to emit
|
||||
; @param R18 1st param
|
||||
; @param R19 2nd param
|
||||
; @param r18 signal
|
||||
; @param R20 1st param
|
||||
; @param R21 2nd param
|
||||
; @param X 3rd param
|
||||
; @clobbers any, !Y
|
||||
|
||||
OBJ_EmitSignal:
|
||||
push yl
|
||||
push yh
|
||||
ldd r17, Y+OBJ_OFFS_LINKS_LO
|
||||
ldd yh, Y+OBJ_OFFS_LINKS_HI
|
||||
mov yl, r17
|
||||
OBJ_EmitSignal_loop:
|
||||
push r16
|
||||
rcall objCheckEmitSignalForLink ; (any, !X, !Y, !R18, !R19)
|
||||
pop r16
|
||||
push xl
|
||||
push xh
|
||||
rcall List_GetNextObject ; (none)
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
pop xh
|
||||
pop xl
|
||||
mov r17, yl
|
||||
or r17, yh
|
||||
brne OBJ_EmitSignal_loop
|
||||
OBJ_EmitSignal_popRet:
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine OBJ_AddLink @global
|
||||
;
|
||||
; @param Y pointer to object SRAM
|
||||
; @param X pointer to link
|
||||
; @clobbers R16, R17
|
||||
|
||||
OBJ_AddLink:
|
||||
ldd r16, Y+OBJ_OFFS_LINKS_LO
|
||||
ldd r17, Y+OBJ_OFFS_LINKS_HI
|
||||
tst r16
|
||||
brne OBJ_AddLink_addToExisting
|
||||
tst r17
|
||||
brne OBJ_AddLink_addToExisting
|
||||
; empty list, new link is first
|
||||
std Y+OBJ_OFFS_LINKS_LO, xl
|
||||
std Y+OBJ_OFFS_LINKS_HI, xh
|
||||
rjmp OBJ_AddLink_end
|
||||
OBJ_AddLink_addToExisting:
|
||||
push xl
|
||||
push xh
|
||||
push yl
|
||||
push yh
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
mov xl, r16
|
||||
mov xh, r17
|
||||
rcall List_AddObject ; (r16, r17, x)
|
||||
pop yh
|
||||
pop yl
|
||||
pop xh
|
||||
pop xl
|
||||
OBJ_AddLink_end:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine OBJ_RemoveLink @global
|
||||
;
|
||||
; @param Y pointer to object SRAM
|
||||
; @param X pointer to link
|
||||
; @clobbers R16, R17
|
||||
|
||||
OBJ_RemoveLink:
|
||||
ldd r16, Y+OBJ_OFFS_LINKS_LO
|
||||
ldd r17, Y+OBJ_OFFS_LINKS_HI
|
||||
cp r16, xl
|
||||
brne OBJ_RemoveLink_notFirst
|
||||
cp r17, xh
|
||||
brne OBJ_RemoveLink_notFirst
|
||||
clr r16
|
||||
std Y+OBJ_OFFS_LINKS_LO, r16
|
||||
std Y+OBJ_OFFS_LINKS_HI, r16
|
||||
rjmp OBJ_RemoveLink_end
|
||||
OBJ_RemoveLink_notFirst:
|
||||
push xl
|
||||
push xh
|
||||
push yl
|
||||
push yh
|
||||
mov yl, xl
|
||||
mov yh, r17
|
||||
mov xl, r16
|
||||
mov xh, r17
|
||||
rcall List_UnlinkObject ; (r16, r17, x)
|
||||
pop yh
|
||||
pop yl
|
||||
pop xh
|
||||
pop xl
|
||||
OBJ_RemoveLink_end:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine OBJ_AddTimer @global
|
||||
;
|
||||
; @param Y pointer to object SRAM
|
||||
; @param X pointer to timer
|
||||
; @clobbers R16, R17
|
||||
|
||||
OBJ_AddTimer:
|
||||
ldd r16, Y+OBJ_OFFS_TIMERS_LO
|
||||
ldd r17, Y+OBJ_OFFS_TIMERS_HI
|
||||
tst r16
|
||||
brne OBJ_AddTimer_addToExisting
|
||||
tst r17
|
||||
brne OBJ_AddTimer_addToExisting
|
||||
; empty list, new timer is first
|
||||
std Y+OBJ_OFFS_TIMERS_LO, xl
|
||||
std Y+OBJ_OFFS_TIMERS_HI, xh
|
||||
rjmp OBJ_AddTimer_end
|
||||
OBJ_AddTimer_addToExisting:
|
||||
push xl
|
||||
push xh
|
||||
push yl
|
||||
push yh
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
mov xl, r16
|
||||
mov xh, r17
|
||||
rcall List_AddObject ; (r16, r17, x)
|
||||
pop yh
|
||||
pop yl
|
||||
pop xh
|
||||
pop xl
|
||||
OBJ_AddTimer_end:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine OBJ_RemoveTimer @global
|
||||
;
|
||||
; @param Y pointer to object SRAM
|
||||
; @param X pointer to timer
|
||||
; @clobbers R16, R17
|
||||
|
||||
OBJ_RemoveTimer:
|
||||
ldd r16, Y+OBJ_OFFS_TIMERS_LO
|
||||
ldd r17, Y+OBJ_OFFS_TIMERS_HI
|
||||
cp r16, xl
|
||||
brne OBJ_RemoveTimer_notFirst
|
||||
cp r17, xh
|
||||
brne OBJ_RemoveTimer_notFirst
|
||||
clr r16
|
||||
std Y+OBJ_OFFS_TIMERS_LO, r16
|
||||
std Y+OBJ_OFFS_TIMERS_HI, r16
|
||||
rjmp OBJ_RemoveTimer_end
|
||||
OBJ_RemoveTimer_notFirst:
|
||||
push xl
|
||||
push xh
|
||||
push yl
|
||||
push yh
|
||||
mov yl, xl
|
||||
mov yh, r17
|
||||
mov xl, r16
|
||||
mov xh, r17
|
||||
rcall List_UnlinkObject ; (r16, r17, x)
|
||||
pop yh
|
||||
pop yl
|
||||
pop xh
|
||||
pop xl
|
||||
OBJ_RemoveTimer_end:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @param r16 signal
|
||||
; @param Y link
|
||||
; @clobbers any, !X, !Y, !R18, !R19
|
||||
|
||||
objCheckEmitSignalForLink:
|
||||
ldd r17, Y+OBJ_LINK_OFFS_SIGNAL
|
||||
cp r16, r17
|
||||
brne objCheckEmitSignalForLink_ret
|
||||
push yl
|
||||
push yh
|
||||
push xl
|
||||
push xh
|
||||
push r18
|
||||
push r19
|
||||
ldd r16, Y+OBJ_LINK_OFFS_SLOT
|
||||
ldd r17, Y+OBJ_LINK_OFFS_TARGET_LO
|
||||
ldd yh, Y+OBJ_LINK_OFFS_TARGET_HI
|
||||
mov yl, r17
|
||||
rcall OBJ_Handler
|
||||
pop r19
|
||||
pop r18
|
||||
pop xh
|
||||
pop xl
|
||||
pop yh
|
||||
pop yl
|
||||
objCheckEmitSignalForLink_ret:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine objFreeLinks
|
||||
;
|
||||
; @clobbers r16, r17, r18, r19, r24, r25, X
|
||||
|
||||
objFreeLinks:
|
||||
push yl
|
||||
push yh
|
||||
ldd r16, Y+OBJ_OFFS_LINKS_LO
|
||||
ldd r17, Y+OBJ_OFFS_LINKS_HI
|
||||
clr r18
|
||||
std Y+OBJ_OFFS_LINKS_LO, r18
|
||||
std Y+OBJ_OFFS_LINKS_HI, r18
|
||||
ldd r16, Y+OBJ_OFFS_TARGET_LO
|
||||
ldd r17, Y+OBJ_OFFS_TARGET_HI
|
||||
ldd r19, Y+OBJ_OFFS_IDFORTARGET
|
||||
mov yl, r16
|
||||
mov yh, r17
|
||||
ldi zl, LOW(Obj_Link_free)
|
||||
ldi zh, HIGH(Obj_Link_free)
|
||||
rcall List_ForEveryObject ; (r16, r17, r18, r19, r24, r25, X, Y)
|
||||
or r16, r17
|
||||
breq OBJ_EmitSignal_end
|
||||
rcall OBJ_Handler
|
||||
OBJ_EmitSignal_end:
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
@@ -442,115 +259,5 @@ objFreeLinks:
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine objFreeTimers
|
||||
;
|
||||
; @clobbers r16, r17, r18, r19, r24, r25, X
|
||||
|
||||
objFreeTimers:
|
||||
push yl
|
||||
push yh
|
||||
ldd r16, Y+OBJ_OFFS_TIMERS_LO
|
||||
ldd r17, Y+OBJ_OFFS_TIMERS_HI
|
||||
clr r18
|
||||
std Y+OBJ_OFFS_TIMERS_LO, r18
|
||||
std Y+OBJ_OFFS_TIMERS_HI, r18
|
||||
mov yl, r16
|
||||
mov yh, r17
|
||||
ldi zl, LOW(Obj_Timer_free)
|
||||
ldi zh, HIGH(Obj_Timer_free)
|
||||
rcall List_ForEveryObject ; (r16, r17, r18, r19, r24, r25, X, Y)
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine OBJ_Link_new @global
|
||||
;
|
||||
; @return CF set if okay, cleared on error
|
||||
; @return Y pointer to SRAM for link
|
||||
; @clobbers r16, r17, X
|
||||
|
||||
OBJ_Link_new:
|
||||
ldi r24, LOW(OBJ_LINK_SIZE)
|
||||
ldi r25, HIGH(OBJ_LINK_SIZE)
|
||||
bigcall Heap_Alloc
|
||||
brcc OBJ_Link_new_end
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
clr r16
|
||||
ldi r17, OBJ_LINK_SIZE
|
||||
bigcall Utils_FillSram ; (R17, X)
|
||||
rcall List_InitObject ; (R16)
|
||||
sec
|
||||
OBJ_Link_new_end:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine OBJ_Link_free @global
|
||||
;
|
||||
; @param Y pointer to SRAM for link
|
||||
; @clobbers r16, r17, r24, r25, X
|
||||
|
||||
OBJ_Link_free:
|
||||
rcall List_FiniObject ; (R16)
|
||||
mov xl, yl
|
||||
mov xh, yh
|
||||
rcall Heap_free ; (r16, r17, r24, r25, X)
|
||||
clc
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine OBJ_Timer_new @global
|
||||
;
|
||||
; @return CF set if okay, cleared on error
|
||||
; @return Y pointer to SRAM for timer
|
||||
; @clobbers r16, r17, X
|
||||
|
||||
OBJ_Timer_new:
|
||||
ldi r24, LOW(TIMER_SIZE)
|
||||
ldi r25, HIGH(TIMER_SIZE)
|
||||
bigcall Heap_Alloc
|
||||
brcc OBJ_Timer_new_end
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
clr r16
|
||||
ldi r17, TIMER_SIZE
|
||||
bigcall Utils_FillSram ; (R17, X)
|
||||
rcall List_InitObject ; (R16)
|
||||
sec
|
||||
OBJ_Timer_new_end:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine OBJ_Timer_free @global
|
||||
;
|
||||
; @param Y pointer to SRAM for timer
|
||||
; @clobbers r16, r17, r24, r25, X
|
||||
|
||||
OBJ_Timer_free:
|
||||
rcall List_FiniObject ; (R16)
|
||||
mov xl, yl
|
||||
mov xh, yh
|
||||
bigcall Heap_free ; (r16, r17, r24, r25, X)
|
||||
clc
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
#endif ; AQH_AVR_WIN_OBJECT_H
|
||||
|
||||
|
||||
770
avr/modules/lcd2/win/w_layout.asm
Normal file
770
avr/modules/lcd2/win/w_layout.asm
Normal file
@@ -0,0 +1,770 @@
|
||||
; ***************************************************************************
|
||||
; copyright : (C) 2025 by Martin Preuss
|
||||
; email : martin@libchipcard.de
|
||||
;
|
||||
; ***************************************************************************
|
||||
; * This file is part of the project "AqHome". *
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; defs
|
||||
|
||||
.equ WID_WIDGET_INTER_BORDER = 2
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; code
|
||||
|
||||
.cseg
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine WID_Widget_new @global
|
||||
;
|
||||
; @param Y pointer to window SRAM
|
||||
; @param X pointer to parent
|
||||
; @param r18 WID_OFFS_OPTIONS1
|
||||
; @param r19 WID_OFFS_OPTIONS2
|
||||
|
||||
WID_Widget_Init:
|
||||
push r18
|
||||
push r19
|
||||
push xl
|
||||
push xh
|
||||
ldi zl, LOW(WID_Widget_Handler)
|
||||
ldi zh, HIGH(WID_Widget_Handler)
|
||||
clr r17
|
||||
rcall OBJ_Init
|
||||
pop xh
|
||||
pop xl
|
||||
pop r19
|
||||
pop r18
|
||||
std Y+WID_OFFS_OPTIONS1, r18
|
||||
std Y+WID_OFFS_OPTIONS2, r19
|
||||
mov r16, xl
|
||||
or r16, xh
|
||||
breq WID_Widget_noParent
|
||||
; copy defaults from parent
|
||||
adiw xh:xl, WID_OFFS_BG_COL_LO
|
||||
ld r16, X+ ; WID_OFFS_BG_COL_LO
|
||||
std Y+WID_OFFS_BG_COL_LO, r16
|
||||
ld r16, X+ ; WID_OFFS_BG_COL_HI
|
||||
std Y+WID_OFFS_BG_COL_HI, r16
|
||||
ld r16, X+ ; WID_OFFS_FG_COL_LO
|
||||
std Y+WID_OFFS_FG_COL_LO, r16
|
||||
ld r16, X+ ; WID_OFFS_FG_COL_HI
|
||||
std Y+WID_OFFS_FG_COL_HI, r16
|
||||
ld r16, X+ ; WID_OFFS_FONT_LO
|
||||
std Y+WID_OFFS_FONT_LO, r16
|
||||
ld r16, X+ ; WID_OFFS_FONT_HI
|
||||
std Y+WID_OFFS_FONT_HI, r16
|
||||
rjmp WID_Widget_end
|
||||
WID_Widget_noParent: ; preset without parent
|
||||
clr r16
|
||||
std Y+WID_OFFS_FONT_LO, r16
|
||||
std Y+WID_OFFS_FONT_HI, r16
|
||||
|
||||
std Y+WID_OFFS_FG_COL_LO, r16 ; foreground black
|
||||
std Y+WID_OFFS_FG_COL_HI, r16
|
||||
dec r16
|
||||
std Y+WID_OFFS_BG_COL_LO, r16 ; background white
|
||||
std Y+WID_OFFS_BG_COL_HI, r16
|
||||
|
||||
ldi r16, 2 ; default borders
|
||||
std Y+WID_OFFS_BORDER_TOP, r16
|
||||
std Y+WID_OFFS_BORDER_BOT, r16
|
||||
std Y+WID_OFFS_BORDER_LEFT, r16
|
||||
std Y+WID_OFFS_BORDER_RIGHT, r16
|
||||
WID_Widget_end:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine WID_Widget_Handler
|
||||
;
|
||||
; Signal handler for an object. A signal can have up to 3 parameters
|
||||
; conveyed in registers R18, R19 and X.
|
||||
;
|
||||
; @param Y pointer to object SRAM
|
||||
; @param r16 signal
|
||||
; @param R18 1st param
|
||||
; @param R19 2nd param
|
||||
; @param X 3rd param
|
||||
; @clobbers any, !Y
|
||||
|
||||
WID_Widget_Handler:
|
||||
cpi r16, WID_SIGNAL_GETMINWIDTH
|
||||
breq WID_Widget_Handler_getMinWidth
|
||||
cpi r16, WID_SIGNAL_GETMINHEIGHT
|
||||
breq WID_Widget_Handler_getMinHeight
|
||||
cpi r16, WID_SIGNAL_LAYOUT
|
||||
breq WID_Widget_Handler_layout
|
||||
cpi r16, WID_SIGNAL_DRAW
|
||||
breq WID_Widget_Handler_draw
|
||||
; for now just forward signal to all children
|
||||
WID_Widget_Handler_forward:
|
||||
rcall OBJ_ForwardSignalToChildren
|
||||
ret
|
||||
WID_Widget_Handler_getMinWidth:
|
||||
rjmp widgetGetMinWidth
|
||||
WID_Widget_Handler_getMinHeight:
|
||||
rjmp widgetGetMinHeight
|
||||
WID_Widget_Handler_layout:
|
||||
rjmp widgetLayout
|
||||
WID_Widget_Handler_draw:
|
||||
rjmp wDraw
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
wDraw:
|
||||
ldd r16, Y+OBJ_OFFS_OPTIONS
|
||||
sbrs r16, WID_OPTIONS0_BIT_VISIBLE ; only draw visible widgets
|
||||
rjmp wDraw_ret
|
||||
cbr r16, (1<<WID_OPTIONS0_BIT_DIRTY)
|
||||
std Y+OBJ_OFFS_OPTIONS, r16
|
||||
|
||||
; fill window background
|
||||
ldd r2, Y+WID_OFFS_BG_COL_LO
|
||||
ldd r3, Y+WID_OFFS_BG_COL_HI
|
||||
ldd r4, Y+WID_OFFS_ABS_X_LO
|
||||
ldd r5, Y+WID_OFFS_ABS_X_HI
|
||||
ldd r6, Y+WID_OFFS_ABS_Y_LO
|
||||
ldd r7, Y+WID_OFFS_ABS_Y_HI
|
||||
ldd r8, Y+WID_OFFS_WIDTH_LO
|
||||
ldd r9, Y+WID_OFFS_WIDTH_HI
|
||||
ldd r10, Y+WID_OFFS_HEIGHT_LO
|
||||
ldd r11, Y+WID_OFFS_HEIGHT_HI
|
||||
bigcall ILI9341_FillRect
|
||||
wDraw_ret:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
widgetLayout:
|
||||
rjmp wVLayout
|
||||
|
||||
|
||||
|
||||
wVLayout:
|
||||
rcall wSetChildrenWidthsFromMinWidths
|
||||
rcall wSetChildrenHeightsFromMinHeights
|
||||
|
||||
; count number of expandable children
|
||||
ldi r16, (1<<WID_OPTIONS1_BIT_STRETCH_Y) ; value
|
||||
ldi r17, (1<<WID_OPTIONS1_BIT_STRETCH_Y) ; mask
|
||||
rcall widgetCountVisibleChildrenWithOptions1 ; r18=number of matching visible children (r24, r25, X)
|
||||
tst r18
|
||||
breq wVLayout_Ydone ; no expandable children, nothing to distribute
|
||||
; determine full height needed by all children
|
||||
push r18 ; number of visible expandable child widgets
|
||||
clr r17 ; mask=0 -> count all visible children
|
||||
rcall wGetSumOfMatchingVisibleChildrenHeights ; r19:r18=sum of all children heights
|
||||
pop r22
|
||||
clr r23 ; r23:r22=number of visible expandable children
|
||||
; calculate number of bytes to add to each expandable child widget
|
||||
ldd r20, Y+WID_OFFS_HEIGHT_LO ; total height
|
||||
ldd r21, Y+WID_OFFS_HEIGHT_HI
|
||||
clr r16
|
||||
ldd r17, Y+WID_OFFS_BORDER_TOP ; subtract top border
|
||||
sub r20, r17
|
||||
sbc r21, r16
|
||||
brcs wVLayout_heightTooSmall ; jmp if too small
|
||||
ldd r17, Y+WID_OFFS_BORDER_BOT ; subtract bottom border
|
||||
sub r20, r17
|
||||
sbc r21, r16
|
||||
brcs wVLayout_heightTooSmall ; jmp if too small
|
||||
|
||||
sub r20, r18 ; r21:r20 = HEIGHT-SUM_OF_VIS_CHILDREN_HEIGHTS
|
||||
sbc r21, r19
|
||||
brcc wVLayout_heightTooSmall
|
||||
breq wVLayout_yDone ; nothing to distribute
|
||||
bigcall Utils_Divu16_16_16 ; r17:r16 = r21:r20 / r23:r22
|
||||
; add additional pixel to heights of expandable child widgets
|
||||
rcall wAddToHeightsOfExpandableVisibleChildren
|
||||
|
||||
wVLayout_yDone:
|
||||
rcall wSetRelYFromHeightInVisibleChildren
|
||||
rcall wAlignChildrenHorizontally
|
||||
; rcall wSetAbsoluteCoords call in GUI loop after calling layout on all widgets
|
||||
wVLayout_heightTooSmall:
|
||||
; TODO: how to handle this case?
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
wSetAbsoluteCoords:
|
||||
push yl
|
||||
push yh
|
||||
wSetAbsoluteCoords_loop:
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
andi r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
breq wSetAbsoluteCoords_nextSibling
|
||||
push yl
|
||||
push yh
|
||||
bigcall Tree_GetParentObject
|
||||
clr r18
|
||||
clr r19
|
||||
clr r20
|
||||
clr r21
|
||||
mov r17, xl
|
||||
or r17, xh
|
||||
breq wSetAbsoluteCoords_r1820set
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
ldd r18, Y+WID_OFFS_ABS_X_LO
|
||||
ldd r19, Y+WID_OFFS_ABS_X_HI
|
||||
ldd r20, Y+WID_OFFS_ABS_Y_LO
|
||||
ldd r21, Y+WID_OFFS_ABS_Y_HI
|
||||
wSetAbsoluteCoords_r1820set:
|
||||
pop yh
|
||||
pop yl
|
||||
; handle X
|
||||
ldd r16, Y+WID_OFFS_REL_X_LO
|
||||
ldd r17, Y+WID_OFFS_REL_X_HI
|
||||
add r16, r18
|
||||
adc r17, r19
|
||||
std Y+WID_OFFS_ABS_X_LO, r16
|
||||
std Y+WID_OFFS_ABS_X_HI, r17
|
||||
; handle Y
|
||||
ldd r16, Y+WID_OFFS_REL_Y_LO
|
||||
ldd r17, Y+WID_OFFS_REL_Y_HI
|
||||
add r16, r20
|
||||
adc r17, r21
|
||||
std Y+WID_OFFS_ABS_Y_LO, r16
|
||||
std Y+WID_OFFS_ABS_Y_HI, r17
|
||||
bigcall Tree_GetObjectBelow
|
||||
rjmp wSetAbsoluteCoords_loopEnd
|
||||
wSetAbsoluteCoords_nextSibling:
|
||||
bigcall Tree_GetNextSibling
|
||||
wSetAbsoluteCoords_loopEnd:
|
||||
mov r17, xl
|
||||
or r17, xh
|
||||
breq wSetAbsoluteCoords_end
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
rjmp wSetAbsoluteCoords_loop
|
||||
wSetAbsoluteCoords_end:
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine wAlignChildrenHorizontally
|
||||
;
|
||||
; Horizontally align children within the width of the parent widget.
|
||||
; Only changes Y+WID_OFFS_REL_X_LO/HI.
|
||||
;
|
||||
; @param Y pointer to object SRAM
|
||||
; @clobbers r16, r17, r18, r19, r24, r25
|
||||
|
||||
wAlignChildrenHorizontally:
|
||||
push yl
|
||||
push yh
|
||||
ldd r24, Y+WID_OFFS_WIDTH_LO ; parent width
|
||||
ldd r25, Y+WID_OFFS_WIDTH_HI
|
||||
ldd r19, Y+WID_OFFS_BORDER_LEFT ; subtract left border
|
||||
mov r16, r19
|
||||
clr r17
|
||||
sub r24, r16
|
||||
sbc r25, r17
|
||||
ldd r16, Y+WID_OFFS_BORDER_RIGHT ; subtract right border
|
||||
sub r24, r16
|
||||
sbc r25, r17 ; r25:r24=parent width minus lateral borders, r19=left border
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
wAlignChildrenHorizontally_loop:
|
||||
mov r17, xl
|
||||
or r17, xh
|
||||
breq wAlignChildrenHorizontally_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
andi r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
breq wAlignChildrenHorizontally_loopNext
|
||||
push r24
|
||||
push r25
|
||||
push r19
|
||||
rcall wAlignHorizontally
|
||||
pop r19
|
||||
add r24, r19
|
||||
adc r25, r19
|
||||
sub r25, r19
|
||||
std Y+WID_OFFS_REL_X_LO, r24
|
||||
std Y+WID_OFFS_REL_X_HI, r25
|
||||
pop r25
|
||||
pop r24
|
||||
wAlignChildrenHorizontally_loopNext:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp wAlignChildrenHorizontally_loop
|
||||
wAlignChildrenHorizontally_loopEnd:
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine wAlignHorizontally
|
||||
;
|
||||
; @param r25:r24 parent width minus lateral borders
|
||||
; @return r25:r24 proposed X position relative to parent
|
||||
; @clobbers r16, r17
|
||||
|
||||
wAlignHorizontally:
|
||||
ldd r16, Y+WID_OFFS_OPTIONS1
|
||||
sbrc r16, WID_OPTIONS1_BIT_STRETCH_X
|
||||
rjmp wAlignHorizontally_stretch
|
||||
andi r16, (WID_OPTIONS1_BIT_HALIGN0 | WID_OPTIONS1_BIT_HALIGN1)
|
||||
cpi r16, (0<<WID_OPTIONS1_BIT_HALIGN1) | (0<<WID_OPTIONS1_BIT_HALIGN0)
|
||||
breq wAlignHorizontally_left
|
||||
cpi r16, (0<<WID_OPTIONS1_BIT_HALIGN1) | (1<<WID_OPTIONS1_BIT_HALIGN0)
|
||||
breq wAlignHorizontally_right
|
||||
wAlignHorizontally_center:
|
||||
ldd r16, Y+WID_OFFS_WIDTH_LO
|
||||
ldd r17, Y+WID_OFFS_WIDTH_HI
|
||||
sub r24, r16
|
||||
sbc r25, r17
|
||||
lsr r25
|
||||
ror r24
|
||||
ret
|
||||
wAlignHorizontally_left:
|
||||
clr r24
|
||||
clr r25
|
||||
ret
|
||||
wAlignHorizontally_right:
|
||||
ldd r16, Y+WID_OFFS_WIDTH_LO
|
||||
ldd r17, Y+WID_OFFS_WIDTH_HI
|
||||
sub r24, r16
|
||||
sbc r25, r17
|
||||
wAlignHorizontally_stretch:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine wSetRelYFromHeightInVisibleChildren
|
||||
;
|
||||
; @param Y pointer to object SRAM
|
||||
; @clobbers r17, r18, r19, r24, r25, X
|
||||
|
||||
wSetRelYFromHeightInVisibleChildren:
|
||||
push yl
|
||||
push yh
|
||||
ldd r24, Y+WID_OFFS_BORDER_TOP
|
||||
clr r25
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
wSetRelYFromHeightInVisibleChildren_loop:
|
||||
mov r17, xl
|
||||
or r17, xh
|
||||
breq wSetRelYFromHeightInVisibleChildren_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
andi r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
breq wSetRelYFromHeightInVisibleChildren_loopNext
|
||||
std Y+WID_OFFS_REL_Y_LO, r24
|
||||
std Y+WID_OFFS_REL_Y_HI, r25
|
||||
ldd r18, Y+WID_OFFS_WIDTH_LO
|
||||
ldd r19, Y+WID_OFFS_WIDTH_HI
|
||||
add r24, r18 ; TODO: handle carry later
|
||||
adc r25, r19
|
||||
adiw r25:r24, WID_WIDGET_INTER_BORDER
|
||||
wSetRelYFromHeightInVisibleChildren_loopNext:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp wSetRelYFromHeightInVisibleChildren_loop
|
||||
wSetRelYFromHeightInVisibleChildren_loopEnd:
|
||||
mov r18, r24
|
||||
mov r19, r25
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine widgetGetMinWidth
|
||||
;
|
||||
; @return r19:r18 minimum width of widget
|
||||
; @clobbers any, !Y
|
||||
|
||||
widgetGetMinWidth:
|
||||
ldi r16, WID_SIGNAL_GETMINWIDTH
|
||||
rjmp widgetGetLargestChildMinSize
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine widgetGetMinHeight
|
||||
;
|
||||
; @return r19:r18 minimum height of widget
|
||||
; @clobbers any, !Y
|
||||
|
||||
widgetGetMinHeight:
|
||||
ldi r16, WID_SIGNAL_GETMINHEIGHT
|
||||
rjmp widgetSumOfChildrenMinSize
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine widgetSumOfChildrenMinSize
|
||||
;
|
||||
; @param r16 signal to send (WID_SIGNAL_GETMINWIDTH, WID_SIGNAL_GETMINHEIGHT)
|
||||
; @return r19:r18 minimum width or height of widget
|
||||
; @clobbers any, !Y
|
||||
|
||||
widgetSumOfChildrenMinSize:
|
||||
push yl
|
||||
push yh
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
clr r24
|
||||
clr r25
|
||||
widgetSumOfChildrenMinSize_loop:
|
||||
mov r17, xl
|
||||
or r17, xh
|
||||
breq widgetSumOfChildrenMinSize_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
andi r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
breq widgetSumOfChildrenMinSize_loopNext
|
||||
push r16
|
||||
push r24
|
||||
push r25
|
||||
ldi r18, 1 ; default value for when the signal is not handled
|
||||
ldi r19, 0 ; default value for when the signal is not handled
|
||||
rcall OBJ_Handler ; ask child for its minimum size
|
||||
pop r25
|
||||
pop r24
|
||||
pop r16
|
||||
add r24, r18 ; TODO: handle carry later
|
||||
adc r25, r19
|
||||
adiw r25:r24, WID_WIDGET_INTER_BORDER
|
||||
widgetSumOfChildrenMinSize_loopNext:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp widgetSumOfChildrenMinSize_loop
|
||||
widgetSumOfChildrenMinSize_loopEnd:
|
||||
mov r18, r24
|
||||
mov r19, r25
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine widgetGetLargestChildMinSize
|
||||
;
|
||||
; @param r16 signal to send (WID_SIGNAL_GETMINWIDTH, WID_SIGNAL_GETMINHEIGHT)
|
||||
; @return r19:r18 minimum width or height of widget
|
||||
; @clobbers any, !Y
|
||||
|
||||
widgetGetLargestChildMinSize:
|
||||
push yl
|
||||
push yh
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
clr r24
|
||||
clr r25
|
||||
widgetGetLargestChildMinSize_loop:
|
||||
mov r17, xl
|
||||
or r17, xh
|
||||
breq widgetGetLargestChildMinSize_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
andi r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
breq widgetGetLargestChildMinSize_loopNext
|
||||
push r16
|
||||
push r24
|
||||
push r25
|
||||
ldi r18, 1 ; default value for when the signal is not handled
|
||||
ldi r19, 0 ; default value for when the signal is not handled
|
||||
rcall OBJ_Handler ; ask child for its minimum size
|
||||
pop r25
|
||||
pop r24
|
||||
pop r16
|
||||
sub r24, r18
|
||||
sbc r25, r19
|
||||
add r24, r18
|
||||
adc r25, r19
|
||||
brcc widgetGetLargestChildMinSize_loopNext
|
||||
mov r24, r18
|
||||
mov r25, r19
|
||||
widgetGetLargestChildMinSize_loopNext:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp widgetGetLargestChildMinSize_loop
|
||||
widgetGetLargestChildMinSize_loopEnd:
|
||||
mov r18, r24
|
||||
mov r19, r25
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine widgetCountVisibleChildrenWithOptions1
|
||||
;
|
||||
; Count visible direct children with a matching WID_OFFS_OPTIONS1 field.
|
||||
;
|
||||
; @param r16 option1 value combination wanted
|
||||
; @param r17 option1 mask of bits to match
|
||||
; @return r18 number of matching direct children
|
||||
; @clobbers r18, r24, r25, X
|
||||
|
||||
widgetCountVisibleChildrenWithOptions1:
|
||||
push yl
|
||||
push yh
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
clr r24
|
||||
widgetCountVisibleChildrenWithOptions1_loop:
|
||||
mov r25, xl
|
||||
or r25, xh
|
||||
breq widgetCountVisibleChildrenWithOptions1_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
andi r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
breq widgetCountVisibleChildrenWithOptions1_next
|
||||
ldd r18, Y+WID_OFFS_OPTIONS1
|
||||
eor r18, r17
|
||||
and r18, r16
|
||||
brne widgetCountVisibleChildrenWithOptions1_next
|
||||
inc r24
|
||||
widgetCountVisibleChildrenWithOptions1_next:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp widgetSumOfChildrenMinSize_loop
|
||||
widgetCountVisibleChildrenWithOptions1_loopEnd:
|
||||
mov r18, r24
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine wGetSumOfMatchingVisibleChildrenHeights
|
||||
;
|
||||
; Add heights of all matching visible children.
|
||||
;
|
||||
; @param r16 option1 value combination wanted
|
||||
; @param r17 option1 mask of bits to match
|
||||
; @return r19:r18 sum of widths of all visible direct children
|
||||
; @clobbers r24, r25, X
|
||||
|
||||
wGetSumOfMatchingVisibleChildrenHeights:
|
||||
push yl
|
||||
push yh
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
clr r24
|
||||
clr r25
|
||||
wGetSumOfMatchingVisibleChildrenHeights_loop:
|
||||
mov r18, xl
|
||||
or r18, xh
|
||||
breq wGetSumOfMatchingVisibleChildrenHeights_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
andi r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
breq wGetSumOfMatchingVisibleChildrenHeights_next
|
||||
ldd r18, Y+WID_OFFS_OPTIONS1
|
||||
eor r18, r17
|
||||
and r18, r16
|
||||
brne wGetSumOfMatchingVisibleChildrenHeights_next
|
||||
ldd r18, Y+WID_OFFS_HEIGHT_LO
|
||||
ldd r19, Y+WID_OFFS_HEIGHT_HI
|
||||
add r24, r18
|
||||
adc r25, r19
|
||||
wGetSumOfMatchingVisibleChildrenHeights_next:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp wGetSumOfMatchingVisibleChildrenHeights_loop
|
||||
wGetSumOfMatchingVisibleChildrenHeights_loopEnd:
|
||||
mov r18, r24
|
||||
mov r19, r25
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine wAddToWidthsOfExpandableVisibleChildren
|
||||
;
|
||||
; @param Y = pointer to widget data in SRAM
|
||||
; @param r17:r16 number to add to the widths of all visible X-expandable children
|
||||
; @clobbers r18, r19, X
|
||||
|
||||
wAddToWidthsOfExpandableVisibleChildren:
|
||||
push yl
|
||||
push yh
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
wAddToWidthsOfExpandableVisibleChildren_loop:
|
||||
mov r18, xl
|
||||
or r18, xh
|
||||
breq wAddToWidthsOfExpandableVisibleChildren_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
andi r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
breq wAddToWidthsOfExpandableVisibleChildren_next
|
||||
ldd r18, Y+WID_OFFS_OPTIONS1
|
||||
andi r18, WID_OPTIONS1_BIT_STRETCH_X
|
||||
breq wAddToWidthsOfExpandableVisibleChildren_next
|
||||
ldd r18, Y+WID_OFFS_WIDTH_LO
|
||||
ldd r19, Y+WID_OFFS_WIDTH_HI
|
||||
add r18, r16
|
||||
adc r19, r17
|
||||
std Y+WID_OFFS_WIDTH_LO, r18
|
||||
std Y+WID_OFFS_WIDTH_HI, r19
|
||||
wAddToWidthsOfExpandableVisibleChildren_next:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp wAddToWidthsOfExpandableVisibleChildren_loop
|
||||
wAddToWidthsOfExpandableVisibleChildren_loopEnd:
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine wAddToHeightsOfExpandableVisibleChildren
|
||||
;
|
||||
; @param Y = pointer to widget data in SRAM
|
||||
; @param r17:r16 number to add to the heights of all visible Y-expandable children
|
||||
; @clobbers r18, r19, X
|
||||
|
||||
wAddToHeightsOfExpandableVisibleChildren:
|
||||
push yl
|
||||
push yh
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
wAddToHeightsOfExpandableVisibleChildren_loop:
|
||||
mov r18, xl
|
||||
or r18, xh
|
||||
breq wAddToHeightsOfExpandableVisibleChildren_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
andi r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
breq wAddToHeightsOfExpandableVisibleChildren_next
|
||||
ldd r18, Y+WID_OFFS_OPTIONS1
|
||||
andi r18, WID_OPTIONS1_BIT_STRETCH_Y
|
||||
breq wAddToHeightsOfExpandableVisibleChildren_next
|
||||
ldd r18, Y+WID_OFFS_HEIGHT_LO
|
||||
ldd r19, Y+WID_OFFS_HEIGHT_HI
|
||||
add r18, r16
|
||||
adc r19, r17
|
||||
std Y+WID_OFFS_HEIGHT_LO, r18
|
||||
std Y+WID_OFFS_HEIGHT_HI, r19
|
||||
wAddToHeightsOfExpandableVisibleChildren_next:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp wAddToHeightsOfExpandableVisibleChildren_loop
|
||||
wAddToHeightsOfExpandableVisibleChildren_loopEnd:
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine wSetChildrenWidthsFromMinWidths
|
||||
;
|
||||
; @clobbers any, !Y
|
||||
|
||||
wSetChildrenWidthsFromMinWidths:
|
||||
push yl
|
||||
push yh
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
wSetChildrenWidthsFromMinWidths_loop:
|
||||
mov r17, xl
|
||||
or r17, xh
|
||||
breq wSetChildrenWidthsFromMinWidths_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
sbrs r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
rjmp wSetChildrenWidthsFromMinWidths_loopNext ; jump if not visible
|
||||
sbrc r18, WID_OPTIONS1_BIT_FIXED_WIDTH
|
||||
rjmp wSetChildrenWidthsFromMinWidths_loopNext ; jump if fixed width
|
||||
ldi r16, WID_SIGNAL_GETMINWIDTH
|
||||
ldi r18, 1 ; default value for when the signal is not handled
|
||||
ldi r19, 0 ; default value for when the signal is not handled
|
||||
rcall OBJ_Handler ; ask child for its minimum size
|
||||
std Y+WID_OFFS_WIDTH_LO, r18
|
||||
std Y+WID_OFFS_WIDTH_HI, r19
|
||||
wSetChildrenWidthsFromMinWidths_loopNext:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp wSetChildrenWidthsFromMinWidths_loop
|
||||
wSetChildrenWidthsFromMinWidths_loopEnd:
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine wSetChildrenHeightsFromMinHeights
|
||||
;
|
||||
; @clobbers any, !Y
|
||||
|
||||
wSetChildrenHeightsFromMinHeights:
|
||||
push yl
|
||||
push yh
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
wSetChildrenHeightsFromMinHeights_loop:
|
||||
mov r17, xl
|
||||
or r17, xh
|
||||
breq wSetChildrenHeightsFromMinHeights_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
sbrs r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
rjmp wSetChildrenHeightsFromMinHeights_loopNext ; jump if not visible
|
||||
sbrc r18, WID_OPTIONS1_BIT_FIXED_HEIGHT
|
||||
rjmp wSetChildrenHeightsFromMinHeights_loopNext ; jump if fixed height
|
||||
ldi r16, WID_SIGNAL_GETMINHEIGHT
|
||||
ldi r18, 1 ; default value for when the signal is not handled
|
||||
ldi r19, 0 ; default value for when the signal is not handled
|
||||
rcall OBJ_Handler ; ask child for its minimum size
|
||||
std Y+WID_OFFS_HEIGHT_LO, r18
|
||||
std Y+WID_OFFS_HEIGHT_HI, r19
|
||||
wSetChildrenHeightsFromMinHeights_loopNext:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp wSetChildrenHeightsFromMinHeights_loop
|
||||
wSetChildrenHeightsFromMinHeights_loopEnd:
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -7,12 +7,14 @@
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
#ifndef AQH_AVR_WIN_WIDGET_H
|
||||
#define AQH_AVR_WIN_WIDGET_H
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; defs
|
||||
|
||||
.equ WID_WIDGET_INTER_BORDER = 2
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
@@ -23,31 +25,41 @@
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine WID_Widget_new @global
|
||||
; @routine Widget_Init @global
|
||||
;
|
||||
; @param Y pointer to window SRAM
|
||||
; @param X pointer to parent
|
||||
; @param r18 WID_OFFS_OPTIONS1
|
||||
; @param r19 WID_OFFS_OPTIONS2
|
||||
; @param r18 OBJ options
|
||||
; @param r19 WID_OFFS_OPTIONS1
|
||||
; @param r20 WID_OFFS_OPTIONS2
|
||||
; @clobbers r16, r17, X, Z
|
||||
|
||||
WID_Widget_Init:
|
||||
push r18
|
||||
push r19
|
||||
Widget_Init:
|
||||
push r19
|
||||
push r20
|
||||
push xl
|
||||
push xh
|
||||
ldi zl, LOW(WID_Widget_Handler)
|
||||
ldi zh, HIGH(WID_Widget_Handler)
|
||||
clr r17
|
||||
rcall OBJ_Init
|
||||
ldi zl, LOW(Widget_Handler) ; handler
|
||||
ldi zh, HIGH(Widget_Handler)
|
||||
rcall OBJ_Init ; (r16, r17, X)
|
||||
pop xh
|
||||
pop xl
|
||||
pop r19
|
||||
pop r18
|
||||
std Y+WID_OFFS_OPTIONS1, r18
|
||||
std Y+WID_OFFS_OPTIONS2, r19
|
||||
pop r20
|
||||
pop r19
|
||||
|
||||
; store options
|
||||
std Y+WID_OFFS_OPTIONS1, r19
|
||||
std Y+WID_OFFS_OPTIONS2, r20
|
||||
|
||||
; set basic handler
|
||||
ldi zl, LOW(Widget_Handler) ; handler
|
||||
ldi zh, HIGH(Widget_Handler)
|
||||
rcall OBJ_SetHandler
|
||||
|
||||
mov r16, xl
|
||||
or r16, xh
|
||||
breq WID_Widget_noParent
|
||||
breq Widget_noParent
|
||||
|
||||
; copy defaults from parent
|
||||
adiw xh:xl, WID_OFFS_BG_COL_LO
|
||||
ld r16, X+ ; WID_OFFS_BG_COL_LO
|
||||
@@ -62,8 +74,9 @@ WID_Widget_Init:
|
||||
std Y+WID_OFFS_FONT_LO, r16
|
||||
ld r16, X+ ; WID_OFFS_FONT_HI
|
||||
std Y+WID_OFFS_FONT_HI, r16
|
||||
rjmp WID_Widget_end
|
||||
WID_Widget_noParent: ; preset without parent
|
||||
rjmp Widget_end
|
||||
|
||||
Widget_noParent: ; preset without parent
|
||||
clr r16
|
||||
std Y+WID_OFFS_FONT_LO, r16
|
||||
std Y+WID_OFFS_FONT_HI, r16
|
||||
@@ -79,55 +92,56 @@ WID_Widget_noParent: ; preset without parent
|
||||
std Y+WID_OFFS_BORDER_BOT, r16
|
||||
std Y+WID_OFFS_BORDER_LEFT, r16
|
||||
std Y+WID_OFFS_BORDER_RIGHT, r16
|
||||
WID_Widget_end:
|
||||
Widget_end:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine WID_Widget_Handler
|
||||
; @routine Widget_Handler @global
|
||||
;
|
||||
; Signal handler for an object. A signal can have up to 3 parameters
|
||||
; conveyed in registers R18, R19 and X.
|
||||
;
|
||||
; @param Y pointer to object SRAM
|
||||
; @param r16 signal
|
||||
; @param R18 1st param
|
||||
; @param R19 2nd param
|
||||
; @param r18 signal
|
||||
; @param r19 srcIdForTarget
|
||||
; @param R20 1st param
|
||||
; @param R21 2nd param
|
||||
; @param X 3rd param
|
||||
; @clobbers any, !Y
|
||||
|
||||
WID_Widget_Handler:
|
||||
cpi r16, WID_SIGNAL_GETMINWIDTH
|
||||
breq WID_Widget_Handler_getMinWidth
|
||||
cpi r16, WID_SIGNAL_GETMINHEIGHT
|
||||
breq WID_Widget_Handler_getMinHeight
|
||||
cpi r16, WID_SIGNAL_LAYOUT
|
||||
breq WID_Widget_Handler_layout
|
||||
cpi r16, WID_SIGNAL_DRAW
|
||||
breq WID_Widget_Handler_draw
|
||||
; for now just forward signal to all children
|
||||
WID_Widget_Handler_forward:
|
||||
rcall OBJ_ForwardSignalToChildren
|
||||
Widget_Handler:
|
||||
cpi r18, OBJ_SIGNAL_DESTROY
|
||||
breq Widget_Handler_destroy
|
||||
cpi r18, WID_SIGNAL_DRAW
|
||||
breq Widget_Handler_draw
|
||||
clc
|
||||
rjmp Widget_Handler_ret
|
||||
Widget_Handler_destroy:
|
||||
; nothing to do here (for HEAP objects we would call Heap_Free)
|
||||
rjmp Widget_Handler_secRet
|
||||
Widget_Handler_draw:
|
||||
rcall Widget_Draw
|
||||
Widget_Handler_secRet:
|
||||
sec
|
||||
Widget_Handler_ret:
|
||||
ret
|
||||
WID_Widget_Handler_getMinWidth:
|
||||
rjmp widgetGetMinWidth
|
||||
WID_Widget_Handler_getMinHeight:
|
||||
rjmp widgetGetMinHeight
|
||||
WID_Widget_Handler_layout:
|
||||
rjmp widgetLayout
|
||||
WID_Widget_Handler_draw:
|
||||
rjmp wDraw
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine Widget_Draw @global
|
||||
;
|
||||
; @param Y pointer to object SRAM
|
||||
; @clobbers
|
||||
|
||||
wDraw:
|
||||
Widget_Draw:
|
||||
ldd r16, Y+OBJ_OFFS_OPTIONS
|
||||
sbrs r16, WID_OPTIONS0_BIT_VISIBLE ; only draw visible widgets
|
||||
rjmp wDraw_ret
|
||||
rjmp widgetDraw_ret
|
||||
cbr r16, (1<<WID_OPTIONS0_BIT_DIRTY)
|
||||
std Y+OBJ_OFFS_OPTIONS, r16
|
||||
|
||||
@@ -142,74 +156,24 @@ wDraw:
|
||||
ldd r9, Y+WID_OFFS_WIDTH_HI
|
||||
ldd r10, Y+WID_OFFS_HEIGHT_LO
|
||||
ldd r11, Y+WID_OFFS_HEIGHT_HI
|
||||
bigcall ILI9341_FillRect
|
||||
wDraw_ret:
|
||||
bigcall Display_FillRect
|
||||
widgetDraw_ret:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine Widget_SetAbsoluteCoords @global
|
||||
;
|
||||
|
||||
widgetLayout:
|
||||
rjmp wVLayout
|
||||
|
||||
|
||||
|
||||
wVLayout:
|
||||
rcall wSetChildrenWidthsFromMinWidths
|
||||
rcall wSetChildrenHeightsFromMinHeights
|
||||
|
||||
; count number of expandable children
|
||||
ldi r16, (1<<WID_OPTIONS1_BIT_STRETCH_Y) ; value
|
||||
ldi r17, (1<<WID_OPTIONS1_BIT_STRETCH_Y) ; mask
|
||||
rcall widgetCountVisibleChildrenWithOptions1 ; r18=number of matching visible children (r24, r25, X)
|
||||
tst r18
|
||||
breq wVLayout_Ydone ; no expandable children, nothing to distribute
|
||||
; determine full height needed by all children
|
||||
push r18 ; number of visible expandable child widgets
|
||||
clr r17 ; mask=0 -> count all visible children
|
||||
rcall wGetSumOfMatchingVisibleChildrenHeights ; r19:r18=sum of all children heights
|
||||
pop r22
|
||||
clr r23 ; r23:r22=number of visible expandable children
|
||||
; calculate number of bytes to add to each expandable child widget
|
||||
ldd r20, Y+WID_OFFS_HEIGHT_LO ; total height
|
||||
ldd r21, Y+WID_OFFS_HEIGHT_HI
|
||||
clr r16
|
||||
ldd r17, Y+WID_OFFS_BORDER_TOP ; subtract top border
|
||||
sub r20, r17
|
||||
sbc r21, r16
|
||||
brcs wVLayout_heightTooSmall ; jmp if too small
|
||||
ldd r17, Y+WID_OFFS_BORDER_BOT ; subtract bottom border
|
||||
sub r20, r17
|
||||
sbc r21, r16
|
||||
brcs wVLayout_heightTooSmall ; jmp if too small
|
||||
|
||||
sub r20, r18 ; r21:r20 = HEIGHT-SUM_OF_VIS_CHILDREN_HEIGHTS
|
||||
sbc r21, r19
|
||||
brcc wVLayout_heightTooSmall
|
||||
breq wVLayout_yDone ; nothing to distribute
|
||||
bigcall Utils_Divu16_16_16 ; r17:r16 = r21:r20 / r23:r22
|
||||
; add additional pixel to heights of expandable child widgets
|
||||
rcall wAddToHeightsOfExpandableVisibleChildren
|
||||
|
||||
wVLayout_yDone:
|
||||
rcall wSetRelYFromHeightInVisibleChildren
|
||||
rcall wAlignChildrenHorizontally
|
||||
; rcall wSetAbsoluteCoords call in GUI loop after calling layout on all widgets
|
||||
wVLayout_heightTooSmall:
|
||||
; TODO: how to handle this case?
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
wSetAbsoluteCoords:
|
||||
Widget_SetAbsoluteCoords:
|
||||
push yl
|
||||
push yh
|
||||
wSetAbsoluteCoords_loop:
|
||||
Widget_SetAbsoluteCoords_loop:
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
andi r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
breq wSetAbsoluteCoords_nextSibling
|
||||
breq Widget_SetAbsoluteCoords_nextSibling
|
||||
push yl
|
||||
push yh
|
||||
bigcall Tree_GetParentObject
|
||||
@@ -219,14 +183,14 @@ wSetAbsoluteCoords_loop:
|
||||
clr r21
|
||||
mov r17, xl
|
||||
or r17, xh
|
||||
breq wSetAbsoluteCoords_r1820set
|
||||
breq Widget_SetAbsoluteCoords_r1820set
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
ldd r18, Y+WID_OFFS_ABS_X_LO
|
||||
ldd r19, Y+WID_OFFS_ABS_X_HI
|
||||
ldd r20, Y+WID_OFFS_ABS_Y_LO
|
||||
ldd r21, Y+WID_OFFS_ABS_Y_HI
|
||||
wSetAbsoluteCoords_r1820set:
|
||||
Widget_SetAbsoluteCoords_r1820set:
|
||||
pop yh
|
||||
pop yl
|
||||
; handle X
|
||||
@@ -244,152 +208,17 @@ wSetAbsoluteCoords_r1820set:
|
||||
std Y+WID_OFFS_ABS_Y_LO, r16
|
||||
std Y+WID_OFFS_ABS_Y_HI, r17
|
||||
bigcall Tree_GetObjectBelow
|
||||
rjmp wSetAbsoluteCoords_loopEnd
|
||||
wSetAbsoluteCoords_nextSibling:
|
||||
rjmp Widget_SetAbsoluteCoords_loopEnd
|
||||
Widget_SetAbsoluteCoords_nextSibling:
|
||||
bigcall Tree_GetNextSibling
|
||||
wSetAbsoluteCoords_loopEnd:
|
||||
Widget_SetAbsoluteCoords_loopEnd:
|
||||
mov r17, xl
|
||||
or r17, xh
|
||||
breq wSetAbsoluteCoords_end
|
||||
breq Widget_SetAbsoluteCoords_end
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
rjmp wSetAbsoluteCoords_loop
|
||||
wSetAbsoluteCoords_end:
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine wAlignChildrenHorizontally
|
||||
;
|
||||
; Horizontally align children within the width of the parent widget.
|
||||
; Only changes Y+WID_OFFS_REL_X_LO/HI.
|
||||
;
|
||||
; @param Y pointer to object SRAM
|
||||
; @clobbers r16, r17, r18, r19, r24, r25
|
||||
|
||||
wAlignChildrenHorizontally:
|
||||
push yl
|
||||
push yh
|
||||
ldd r24, Y+WID_OFFS_WIDTH_LO ; parent width
|
||||
ldd r25, Y+WID_OFFS_WIDTH_HI
|
||||
ldd r19, Y+WID_OFFS_BORDER_LEFT ; subtract left border
|
||||
mov r16, r19
|
||||
clr r17
|
||||
sub r24, r16
|
||||
sbc r25, r17
|
||||
ldd r16, Y+WID_OFFS_BORDER_RIGHT ; subtract right border
|
||||
sub r24, r16
|
||||
sbc r25, r17 ; r25:r24=parent width minus lateral borders, r19=left border
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
wAlignChildrenHorizontally_loop:
|
||||
mov r17, xl
|
||||
or r17, xh
|
||||
breq wAlignChildrenHorizontally_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
andi r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
breq wAlignChildrenHorizontally_loopNext
|
||||
push r24
|
||||
push r25
|
||||
push r19
|
||||
rcall wAlignHorizontally
|
||||
pop r19
|
||||
add r24, r19
|
||||
adc r25, r19
|
||||
sub r25, r19
|
||||
std Y+WID_OFFS_REL_X_LO, r24
|
||||
std Y+WID_OFFS_REL_X_HI, r25
|
||||
pop r25
|
||||
pop r24
|
||||
wAlignChildrenHorizontally_loopNext:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp wAlignChildrenHorizontally_loop
|
||||
wAlignChildrenHorizontally_loopEnd:
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine wAlignHorizontally
|
||||
;
|
||||
; @param r25:r24 parent width minus lateral borders
|
||||
; @return r25:r24 proposed X position relative to parent
|
||||
; @clobbers r16, r17
|
||||
|
||||
wAlignHorizontally:
|
||||
ldd r16, Y+WID_OFFS_OPTIONS1
|
||||
sbrc r16, WID_OPTIONS1_BIT_STRETCH_X
|
||||
rjmp wAlignHorizontally_stretch
|
||||
andi r16, (WID_OPTIONS1_BIT_HALIGN0 | WID_OPTIONS1_BIT_HALIGN1)
|
||||
cpi r16, (0<<WID_OPTIONS1_BIT_HALIGN1) | (0<<WID_OPTIONS1_BIT_HALIGN0)
|
||||
breq wAlignHorizontally_left
|
||||
cpi r16, (0<<WID_OPTIONS1_BIT_HALIGN1) | (1<<WID_OPTIONS1_BIT_HALIGN0)
|
||||
breq wAlignHorizontally_right
|
||||
wAlignHorizontally_center:
|
||||
ldd r16, Y+WID_OFFS_WIDTH_LO
|
||||
ldd r17, Y+WID_OFFS_WIDTH_HI
|
||||
sub r24, r16
|
||||
sbc r25, r17
|
||||
lsr r25
|
||||
ror r24
|
||||
ret
|
||||
wAlignHorizontally_left:
|
||||
clr r24
|
||||
clr r25
|
||||
ret
|
||||
wAlignHorizontally_right:
|
||||
ldd r16, Y+WID_OFFS_WIDTH_LO
|
||||
ldd r17, Y+WID_OFFS_WIDTH_HI
|
||||
sub r24, r16
|
||||
sbc r25, r17
|
||||
wAlignHorizontally_stretch:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine wSetRelYFromHeightInVisibleChildren
|
||||
;
|
||||
; @param Y pointer to object SRAM
|
||||
; @clobbers r17, r18, r19, r24, r25, X
|
||||
|
||||
wSetRelYFromHeightInVisibleChildren:
|
||||
push yl
|
||||
push yh
|
||||
ldd r24, Y+WID_OFFS_BORDER_TOP
|
||||
clr r25
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
wSetRelYFromHeightInVisibleChildren_loop:
|
||||
mov r17, xl
|
||||
or r17, xh
|
||||
breq wSetRelYFromHeightInVisibleChildren_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
andi r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
breq wSetRelYFromHeightInVisibleChildren_loopNext
|
||||
std Y+WID_OFFS_REL_Y_LO, r24
|
||||
std Y+WID_OFFS_REL_Y_HI, r25
|
||||
ldd r18, Y+WID_OFFS_WIDTH_LO
|
||||
ldd r19, Y+WID_OFFS_WIDTH_HI
|
||||
add r24, r18 ; TODO: handle carry later
|
||||
adc r25, r19
|
||||
adiw r25:r24, WID_WIDGET_INTER_BORDER
|
||||
wSetRelYFromHeightInVisibleChildren_loopNext:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp wSetRelYFromHeightInVisibleChildren_loop
|
||||
wSetRelYFromHeightInVisibleChildren_loopEnd:
|
||||
mov r18, r24
|
||||
mov r19, r25
|
||||
rjmp Widget_SetAbsoluteCoords_loop
|
||||
Widget_SetAbsoluteCoords_end:
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
@@ -400,371 +229,6 @@ wSetRelYFromHeightInVisibleChildren_loopEnd:
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine widgetGetMinWidth
|
||||
;
|
||||
; @return r19:r18 minimum width of widget
|
||||
; @clobbers any, !Y
|
||||
|
||||
widgetGetMinWidth:
|
||||
ldi r16, WID_SIGNAL_GETMINWIDTH
|
||||
rjmp widgetGetLargestChildMinSize
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine widgetGetMinHeight
|
||||
;
|
||||
; @return r19:r18 minimum height of widget
|
||||
; @clobbers any, !Y
|
||||
|
||||
widgetGetMinHeight:
|
||||
ldi r16, WID_SIGNAL_GETMINHEIGHT
|
||||
rjmp widgetSumOfChildrenMinSize
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine widgetSumOfChildrenMinSize
|
||||
;
|
||||
; @param r16 signal to send (WID_SIGNAL_GETMINWIDTH, WID_SIGNAL_GETMINHEIGHT)
|
||||
; @return r19:r18 minimum width or height of widget
|
||||
; @clobbers any, !Y
|
||||
|
||||
widgetSumOfChildrenMinSize:
|
||||
push yl
|
||||
push yh
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
clr r24
|
||||
clr r25
|
||||
widgetSumOfChildrenMinSize_loop:
|
||||
mov r17, xl
|
||||
or r17, xh
|
||||
breq widgetSumOfChildrenMinSize_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
andi r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
breq widgetSumOfChildrenMinSize_loopNext
|
||||
push r16
|
||||
push r24
|
||||
push r25
|
||||
ldi r18, 1 ; default value for when the signal is not handled
|
||||
ldi r19, 0 ; default value for when the signal is not handled
|
||||
rcall OBJ_Handler ; ask child for its minimum size
|
||||
pop r25
|
||||
pop r24
|
||||
pop r16
|
||||
add r24, r18 ; TODO: handle carry later
|
||||
adc r25, r19
|
||||
adiw r25:r24, WID_WIDGET_INTER_BORDER
|
||||
widgetSumOfChildrenMinSize_loopNext:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp widgetSumOfChildrenMinSize_loop
|
||||
widgetSumOfChildrenMinSize_loopEnd:
|
||||
mov r18, r24
|
||||
mov r19, r25
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine widgetGetLargestChildMinSize
|
||||
;
|
||||
; @param r16 signal to send (WID_SIGNAL_GETMINWIDTH, WID_SIGNAL_GETMINHEIGHT)
|
||||
; @return r19:r18 minimum width or height of widget
|
||||
; @clobbers any, !Y
|
||||
|
||||
widgetGetLargestChildMinSize:
|
||||
push yl
|
||||
push yh
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
clr r24
|
||||
clr r25
|
||||
widgetGetLargestChildMinSize_loop:
|
||||
mov r17, xl
|
||||
or r17, xh
|
||||
breq widgetGetLargestChildMinSize_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
andi r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
breq widgetGetLargestChildMinSize_loopNext
|
||||
push r16
|
||||
push r24
|
||||
push r25
|
||||
ldi r18, 1 ; default value for when the signal is not handled
|
||||
ldi r19, 0 ; default value for when the signal is not handled
|
||||
rcall OBJ_Handler ; ask child for its minimum size
|
||||
pop r25
|
||||
pop r24
|
||||
pop r16
|
||||
sub r24, r18
|
||||
sbc r25, r19
|
||||
add r24, r18
|
||||
adc r25, r19
|
||||
brcc widgetGetLargestChildMinSize_loopNext
|
||||
mov r24, r18
|
||||
mov r25, r19
|
||||
widgetGetLargestChildMinSize_loopNext:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp widgetGetLargestChildMinSize_loop
|
||||
widgetGetLargestChildMinSize_loopEnd:
|
||||
mov r18, r24
|
||||
mov r19, r25
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine widgetCountVisibleChildrenWithOptions1
|
||||
;
|
||||
; Count visible direct children with a matching WID_OFFS_OPTIONS1 field.
|
||||
;
|
||||
; @param r16 option1 value combination wanted
|
||||
; @param r17 option1 mask of bits to match
|
||||
; @return r18 number of matching direct children
|
||||
; @clobbers r18, r24, r25, X
|
||||
|
||||
widgetCountVisibleChildrenWithOptions1:
|
||||
push yl
|
||||
push yh
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
clr r24
|
||||
widgetCountVisibleChildrenWithOptions1_loop:
|
||||
mov r25, xl
|
||||
or r25, xh
|
||||
breq widgetCountVisibleChildrenWithOptions1_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
andi r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
breq widgetCountVisibleChildrenWithOptions1_next
|
||||
ldd r18, Y+WID_OFFS_OPTIONS1
|
||||
eor r18, r17
|
||||
and r18, r16
|
||||
brne widgetCountVisibleChildrenWithOptions1_next
|
||||
inc r24
|
||||
widgetCountVisibleChildrenWithOptions1_next:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp widgetSumOfChildrenMinSize_loop
|
||||
widgetCountVisibleChildrenWithOptions1_loopEnd:
|
||||
mov r18, r24
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine wGetSumOfMatchingVisibleChildrenHeights
|
||||
;
|
||||
; Add heights of all matching visible children.
|
||||
;
|
||||
; @param r16 option1 value combination wanted
|
||||
; @param r17 option1 mask of bits to match
|
||||
; @return r19:r18 sum of widths of all visible direct children
|
||||
; @clobbers r24, r25, X
|
||||
|
||||
wGetSumOfMatchingVisibleChildrenHeights:
|
||||
push yl
|
||||
push yh
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
clr r24
|
||||
clr r25
|
||||
wGetSumOfMatchingVisibleChildrenHeights_loop:
|
||||
mov r18, xl
|
||||
or r18, xh
|
||||
breq wGetSumOfMatchingVisibleChildrenHeights_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
andi r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
breq wGetSumOfMatchingVisibleChildrenHeights_next
|
||||
ldd r18, Y+WID_OFFS_OPTIONS1
|
||||
eor r18, r17
|
||||
and r18, r16
|
||||
brne wGetSumOfMatchingVisibleChildrenHeights_next
|
||||
ldd r18, Y+WID_OFFS_HEIGHT_LO
|
||||
ldd r19, Y+WID_OFFS_HEIGHT_HI
|
||||
add r24, r18
|
||||
adc r25, r19
|
||||
wGetSumOfMatchingVisibleChildrenHeights_next:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp wGetSumOfMatchingVisibleChildrenHeights_loop
|
||||
wGetSumOfMatchingVisibleChildrenHeights_loopEnd:
|
||||
mov r18, r24
|
||||
mov r19, r25
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine wAddToWidthsOfExpandableVisibleChildren
|
||||
;
|
||||
; @param Y = pointer to widget data in SRAM
|
||||
; @param r17:r16 number to add to the widths of all visible X-expandable children
|
||||
; @clobbers r18, r19, X
|
||||
|
||||
wAddToWidthsOfExpandableVisibleChildren:
|
||||
push yl
|
||||
push yh
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
wAddToWidthsOfExpandableVisibleChildren_loop:
|
||||
mov r18, xl
|
||||
or r18, xh
|
||||
breq wAddToWidthsOfExpandableVisibleChildren_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
andi r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
breq wAddToWidthsOfExpandableVisibleChildren_next
|
||||
ldd r18, Y+WID_OFFS_OPTIONS1
|
||||
andi r18, WID_OPTIONS1_BIT_STRETCH_X
|
||||
breq wAddToWidthsOfExpandableVisibleChildren_next
|
||||
ldd r18, Y+WID_OFFS_WIDTH_LO
|
||||
ldd r19, Y+WID_OFFS_WIDTH_HI
|
||||
add r18, r16
|
||||
adc r19, r17
|
||||
std Y+WID_OFFS_WIDTH_LO, r18
|
||||
std Y+WID_OFFS_WIDTH_HI, r19
|
||||
wAddToWidthsOfExpandableVisibleChildren_next:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp wAddToWidthsOfExpandableVisibleChildren_loop
|
||||
wAddToWidthsOfExpandableVisibleChildren_loopEnd:
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine wAddToHeightsOfExpandableVisibleChildren
|
||||
;
|
||||
; @param Y = pointer to widget data in SRAM
|
||||
; @param r17:r16 number to add to the heights of all visible Y-expandable children
|
||||
; @clobbers r18, r19, X
|
||||
|
||||
wAddToHeightsOfExpandableVisibleChildren:
|
||||
push yl
|
||||
push yh
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
wAddToHeightsOfExpandableVisibleChildren_loop:
|
||||
mov r18, xl
|
||||
or r18, xh
|
||||
breq wAddToHeightsOfExpandableVisibleChildren_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
andi r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
breq wAddToHeightsOfExpandableVisibleChildren_next
|
||||
ldd r18, Y+WID_OFFS_OPTIONS1
|
||||
andi r18, WID_OPTIONS1_BIT_STRETCH_Y
|
||||
breq wAddToHeightsOfExpandableVisibleChildren_next
|
||||
ldd r18, Y+WID_OFFS_HEIGHT_LO
|
||||
ldd r19, Y+WID_OFFS_HEIGHT_HI
|
||||
add r18, r16
|
||||
adc r19, r17
|
||||
std Y+WID_OFFS_HEIGHT_LO, r18
|
||||
std Y+WID_OFFS_HEIGHT_HI, r19
|
||||
wAddToHeightsOfExpandableVisibleChildren_next:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp wAddToHeightsOfExpandableVisibleChildren_loop
|
||||
wAddToHeightsOfExpandableVisibleChildren_loopEnd:
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine wSetChildrenWidthsFromMinWidths
|
||||
;
|
||||
; @clobbers any, !Y
|
||||
|
||||
wSetChildrenWidthsFromMinWidths:
|
||||
push yl
|
||||
push yh
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
wSetChildrenWidthsFromMinWidths_loop:
|
||||
mov r17, xl
|
||||
or r17, xh
|
||||
breq wSetChildrenWidthsFromMinWidths_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
sbrs r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
rjmp wSetChildrenWidthsFromMinWidths_loopNext ; jump if not visible
|
||||
sbrc r18, WID_OPTIONS1_BIT_FIXED_WIDTH
|
||||
rjmp wSetChildrenWidthsFromMinWidths_loopNext ; jump if fixed width
|
||||
ldi r16, WID_SIGNAL_GETMINWIDTH
|
||||
ldi r18, 1 ; default value for when the signal is not handled
|
||||
ldi r19, 0 ; default value for when the signal is not handled
|
||||
rcall OBJ_Handler ; ask child for its minimum size
|
||||
std Y+WID_OFFS_WIDTH_LO, r18
|
||||
std Y+WID_OFFS_WIDTH_HI, r19
|
||||
wSetChildrenWidthsFromMinWidths_loopNext:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp wSetChildrenWidthsFromMinWidths_loop
|
||||
wSetChildrenWidthsFromMinWidths_loopEnd:
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine wSetChildrenHeightsFromMinHeights
|
||||
;
|
||||
; @clobbers any, !Y
|
||||
|
||||
wSetChildrenHeightsFromMinHeights:
|
||||
push yl
|
||||
push yh
|
||||
rcall Tree_GetFirstChildObject ; (none)
|
||||
wSetChildrenHeightsFromMinHeights_loop:
|
||||
mov r17, xl
|
||||
or r17, xh
|
||||
breq wSetChildrenHeightsFromMinHeights_loopEnd
|
||||
mov yl, xl
|
||||
mov yh, yl
|
||||
ldd r18, Y+OBJ_OFFS_OPTIONS
|
||||
sbrs r18, WID_OPTIONS0_BIT_VISIBLE
|
||||
rjmp wSetChildrenHeightsFromMinHeights_loopNext ; jump if not visible
|
||||
sbrc r18, WID_OPTIONS1_BIT_FIXED_HEIGHT
|
||||
rjmp wSetChildrenHeightsFromMinHeights_loopNext ; jump if fixed height
|
||||
ldi r16, WID_SIGNAL_GETMINHEIGHT
|
||||
ldi r18, 1 ; default value for when the signal is not handled
|
||||
ldi r19, 0 ; default value for when the signal is not handled
|
||||
rcall OBJ_Handler ; ask child for its minimum size
|
||||
std Y+WID_OFFS_HEIGHT_LO, r18
|
||||
std Y+WID_OFFS_HEIGHT_HI, r19
|
||||
wSetChildrenHeightsFromMinHeights_loopNext:
|
||||
rcall Tree_GetNextSibling ; (none)
|
||||
rjmp wSetChildrenHeightsFromMinHeights_loop
|
||||
wSetChildrenHeightsFromMinHeights_loopEnd:
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
#endif ; AQH_AVR_WIN_WIDGET_H
|
||||
|
||||
|
||||
|
||||
@@ -156,8 +156,8 @@ spiHwSelectDevice:
|
||||
; @clobbers none
|
||||
|
||||
SPIHW_MasterTransfer:
|
||||
rcall SPIHW_MasterSendByte
|
||||
rjmp SPIHW_WaitForTransferComplete
|
||||
rcall SPIHW_MasterSendByte ; (none)
|
||||
rjmp SPIHW_WaitForTransferComplete ; (none)
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user