From f9af0c1565031ee762251785299b226f32f43bd4 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 17 Apr 2008 23:09:42 +0000 Subject: 2008-04-17 Joel Sherrill * Makefile.am: Move .s files to .S * dswifi/common/source/spinlock.S, libfat/source/disc_io/io_dldi.S, libfat/source/disc_io/io_scsd_s.S, libnds/source/arm9/COS.S, libnds/source/arm9/SIN.S, libnds/source/arm9/TAN.S, libnds/source/arm9/dcache.S, libnds/source/arm9/default_font.S, libnds/source/arm9/icache.S, libnds/source/common/biosCalls.S, libnds/source/common/interruptDispatcher.S: New files. * dswifi/common/source/spinlock.s, libfat/source/disc_io/io_dldi.s, libfat/source/disc_io/io_scsd_s.s, libnds/source/arm9/COS.s, libnds/source/arm9/SIN.s, libnds/source/arm9/TAN.s, libnds/source/arm9/dcache.s, libnds/source/arm9/default_font.s, libnds/source/arm9/exceptionHandler.s, libnds/source/arm9/icache.s, libnds/source/common/biosCalls.s, libnds/source/common/interruptDispatcher.s: Removed. --- c/src/lib/libbsp/arm/nds/ChangeLog | 17 + c/src/lib/libbsp/arm/nds/Makefile.am | 18 +- .../libbsp/arm/nds/dswifi/common/source/spinlock.S | 42 ++ .../libbsp/arm/nds/dswifi/common/source/spinlock.s | 42 -- .../libbsp/arm/nds/libfat/source/disc_io/io_dldi.S | 73 +++ .../libbsp/arm/nds/libfat/source/disc_io/io_dldi.s | 73 --- .../arm/nds/libfat/source/disc_io/io_scsd_s.S | 139 ++++++ .../arm/nds/libfat/source/disc_io/io_scsd_s.s | 139 ------ c/src/lib/libbsp/arm/nds/libnds/source/arm9/COS.S | 75 +++ c/src/lib/libbsp/arm/nds/libnds/source/arm9/COS.s | 75 --- c/src/lib/libbsp/arm/nds/libnds/source/arm9/SIN.S | 75 +++ c/src/lib/libbsp/arm/nds/libnds/source/arm9/SIN.s | 75 --- c/src/lib/libbsp/arm/nds/libnds/source/arm9/TAN.S | 75 +++ c/src/lib/libbsp/arm/nds/libnds/source/arm9/TAN.s | 75 --- .../lib/libbsp/arm/nds/libnds/source/arm9/dcache.S | 245 ++++++++++ .../lib/libbsp/arm/nds/libnds/source/arm9/dcache.s | 107 ----- .../arm/nds/libnds/source/arm9/default_font.S | 523 +++++++++++++++++++++ .../arm/nds/libnds/source/arm9/default_font.s | 523 --------------------- .../arm/nds/libnds/source/arm9/exceptionHandler.s | 123 ----- .../lib/libbsp/arm/nds/libnds/source/arm9/icache.S | 57 +++ .../lib/libbsp/arm/nds/libnds/source/arm9/icache.s | 57 --- .../arm/nds/libnds/source/common/biosCalls.S | 490 +++++++++++++++++++ .../arm/nds/libnds/source/common/biosCalls.s | 352 -------------- .../nds/libnds/source/common/interruptDispatcher.S | 290 ++++++++++++ .../nds/libnds/source/common/interruptDispatcher.s | 152 ------ 25 files changed, 2110 insertions(+), 1802 deletions(-) create mode 100644 c/src/lib/libbsp/arm/nds/dswifi/common/source/spinlock.S delete mode 100644 c/src/lib/libbsp/arm/nds/dswifi/common/source/spinlock.s create mode 100644 c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_dldi.S delete mode 100644 c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_dldi.s create mode 100644 c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_scsd_s.S delete mode 100644 c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_scsd_s.s create mode 100644 c/src/lib/libbsp/arm/nds/libnds/source/arm9/COS.S delete mode 100644 c/src/lib/libbsp/arm/nds/libnds/source/arm9/COS.s create mode 100644 c/src/lib/libbsp/arm/nds/libnds/source/arm9/SIN.S delete mode 100644 c/src/lib/libbsp/arm/nds/libnds/source/arm9/SIN.s create mode 100644 c/src/lib/libbsp/arm/nds/libnds/source/arm9/TAN.S delete mode 100644 c/src/lib/libbsp/arm/nds/libnds/source/arm9/TAN.s create mode 100644 c/src/lib/libbsp/arm/nds/libnds/source/arm9/dcache.S delete mode 100644 c/src/lib/libbsp/arm/nds/libnds/source/arm9/dcache.s create mode 100644 c/src/lib/libbsp/arm/nds/libnds/source/arm9/default_font.S delete mode 100644 c/src/lib/libbsp/arm/nds/libnds/source/arm9/default_font.s delete mode 100644 c/src/lib/libbsp/arm/nds/libnds/source/arm9/exceptionHandler.s create mode 100644 c/src/lib/libbsp/arm/nds/libnds/source/arm9/icache.S delete mode 100644 c/src/lib/libbsp/arm/nds/libnds/source/arm9/icache.s create mode 100644 c/src/lib/libbsp/arm/nds/libnds/source/common/biosCalls.S delete mode 100644 c/src/lib/libbsp/arm/nds/libnds/source/common/biosCalls.s create mode 100644 c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.S delete mode 100644 c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.s (limited to 'c/src/lib/libbsp/arm') diff --git a/c/src/lib/libbsp/arm/nds/ChangeLog b/c/src/lib/libbsp/arm/nds/ChangeLog index f432d8c737..0f6763a04b 100644 --- a/c/src/lib/libbsp/arm/nds/ChangeLog +++ b/c/src/lib/libbsp/arm/nds/ChangeLog @@ -1,3 +1,20 @@ +2008-04-17 Joel Sherrill + + * Makefile.am: Move .s files to .S + * dswifi/common/source/spinlock.S, libfat/source/disc_io/io_dldi.S, + libfat/source/disc_io/io_scsd_s.S, libnds/source/arm9/COS.S, + libnds/source/arm9/SIN.S, libnds/source/arm9/TAN.S, + libnds/source/arm9/dcache.S, libnds/source/arm9/default_font.S, + libnds/source/arm9/icache.S, libnds/source/common/biosCalls.S, + libnds/source/common/interruptDispatcher.S: New files. + * dswifi/common/source/spinlock.s, libfat/source/disc_io/io_dldi.s, + libfat/source/disc_io/io_scsd_s.s, libnds/source/arm9/COS.s, + libnds/source/arm9/SIN.s, libnds/source/arm9/TAN.s, + libnds/source/arm9/dcache.s, libnds/source/arm9/default_font.s, + libnds/source/arm9/exceptionHandler.s, libnds/source/arm9/icache.s, + libnds/source/common/biosCalls.s, + libnds/source/common/interruptDispatcher.s: Removed. + 2008-04-17 Joel Sherrill * .cvsignore, include/.cvsignore: New files. diff --git a/c/src/lib/libbsp/arm/nds/Makefile.am b/c/src/lib/libbsp/arm/nds/Makefile.am index d129897f12..f72970282a 100644 --- a/c/src/lib/libbsp/arm/nds/Makefile.am +++ b/c/src/lib/libbsp/arm/nds/Makefile.am @@ -101,7 +101,7 @@ bin2s: $(srcdir)/tools/bin2s.c SUFFIXES = .bin -%.s: %.bin bin2s +%.S: %.bin bin2s $(srcdir)/tools/bin2s $< > $(srcdir)/$@ libnds9_rel_SOURCES = libnds/source/common/biosCalls.S \ @@ -110,9 +110,9 @@ libnds9_rel_SOURCES = libnds/source/common/biosCalls.S \ libnds/source/common/interruptDispatcher.S \ libnds/source/common/interrupts.c \ libnds/source/arm9/boxtest.c \ - libnds/source/arm9/default_font.s \ + libnds/source/arm9/default_font.S \ libnds/source/arm9/console.c \ - libnds/source/arm9/COS.s \ + libnds/source/arm9/COS.S \ libnds/source/arm9/dcache.S \ libnds/source/arm9/exceptionHandler.S \ libnds/source/arm9/exceptions.c \ @@ -124,10 +124,10 @@ libnds9_rel_SOURCES = libnds/source/common/biosCalls.S \ libnds/source/arm9/ndsmotion.c \ libnds/source/arm9/pcx.c \ libnds/source/arm9/rumble.c \ - libnds/source/arm9/SIN.s \ + libnds/source/arm9/SIN.S \ libnds/source/arm9/sound.c \ libnds/source/arm9/system.c \ - libnds/source/arm9/TAN.s \ + libnds/source/arm9/TAN.S \ libnds/source/arm9/touch.c \ libnds/source/arm9/video.c \ libnds/source/arm9/videoGL.c @@ -139,7 +139,7 @@ if HAS_NETWORKING # dswifi, ARM9 side noinst_PROGRAMS += dswifi9.rel dswifi9_rel_SOURCES = dswifi/arm9/source/wifi_arm9.c \ - dswifi/common/source/spinlock.s + dswifi/common/source/spinlock.S dswifi9_rel_CPPFLAGS = $(AM_CPPFLAGS) -DARM9 -I$(srcdir)/dswifi/include -I$(srcdir)/libnds/include -I$(srcdir)/dswifi/common/source -I$(srcdir)/wifi -D_KERNEL -Dcaddr_t=uint32_t dswifi9_rel_LDFLAGS = $(RTEMS_RELLDFLAGS) endif @@ -160,8 +160,8 @@ libdldi_rel_SOURCES = libfat/source/disc_io/disc.c \ libfat/source/disc_io/io_sc_common.c \ libfat/source/disc_io/io_scsd.c \ libfat/source/disc_io/io_sd_common.c \ - libfat/source/disc_io/io_dldi.s \ - libfat/source/disc_io/io_scsd_s.s + libfat/source/disc_io/io_dldi.S \ + libfat/source/disc_io/io_scsd_s.S libdldi_rel_CPPFLAGS = $(AM_CPPFLAGS) -DARM9 -I$(srcdir)/libnds/include -I$(srcdir)/libfat/source/disc_io libdldi_rel_CCASFLAGS = $(AM_CCASFLAGS) -DARM9 -I$(srcdir)/libnds/include -I$(srcdir)/libfat/source/disc_io libdldi_rel_LDFLAGS = $(RTEMS_RELLDFLAGS) @@ -188,7 +188,7 @@ if HAS_NETWORKING # dswifi, ARM7 side noinst_PROGRAMS += dswifi7.rel dswifi7_rel_SOURCES = dswifi/arm7/source/wifi_arm7.c \ - dswifi/common/source/spinlock.s + dswifi/common/source/spinlock.S dswifi7_rel_CPPFLAGS = $(AM_CPPFLAGS) -DARM7 -I$(srcdir)/dswifi/include -I$(srcdir)/libnds/include -I$(srcdir)/dswifi/common/source dswifi7_rel_CFLAGS = -mcpu=arm7tdmi -msoft-float dswifi7_rel_CCASFLAGS = -mcpu=arm7tdmi -msoft-float diff --git a/c/src/lib/libbsp/arm/nds/dswifi/common/source/spinlock.S b/c/src/lib/libbsp/arm/nds/dswifi/common/source/spinlock.S new file mode 100644 index 0000000000..e2f36ef81e --- /dev/null +++ b/c/src/lib/libbsp/arm/nds/dswifi/common/source/spinlock.S @@ -0,0 +1,42 @@ + + .text + + .code 32 + + +.GLOBL SLasm_Acquire, SLasm_Release +.ARM +SLasm_Acquire: + ldr r2,[r0] + cmp r2,#0 + movne r0,#1 + bxne lr + mov r2,r1 + swp r2,r2,[r0] + cmp r2,#0 + cmpne r2,r1 + moveq r0,#0 + bxeq lr + swp r2,r2,[r0] + mov r0,#1 + bx lr + + + +SLasm_Release: + ldr r2,[r0] + cmp r2,r1 + movne r0,#2 + bxne lr + mov r2,#0 + swp r2,r2,[r0] + cmp r2,r1 + moveq r0,#0 + movne r0,#2 + bx lr + + + + .pool + .end + diff --git a/c/src/lib/libbsp/arm/nds/dswifi/common/source/spinlock.s b/c/src/lib/libbsp/arm/nds/dswifi/common/source/spinlock.s deleted file mode 100644 index e2f36ef81e..0000000000 --- a/c/src/lib/libbsp/arm/nds/dswifi/common/source/spinlock.s +++ /dev/null @@ -1,42 +0,0 @@ - - .text - - .code 32 - - -.GLOBL SLasm_Acquire, SLasm_Release -.ARM -SLasm_Acquire: - ldr r2,[r0] - cmp r2,#0 - movne r0,#1 - bxne lr - mov r2,r1 - swp r2,r2,[r0] - cmp r2,#0 - cmpne r2,r1 - moveq r0,#0 - bxeq lr - swp r2,r2,[r0] - mov r0,#1 - bx lr - - - -SLasm_Release: - ldr r2,[r0] - cmp r2,r1 - movne r0,#2 - bxne lr - mov r2,#0 - swp r2,r2,[r0] - cmp r2,r1 - moveq r0,#0 - movne r0,#2 - bx lr - - - - .pool - .end - diff --git a/c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_dldi.S b/c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_dldi.S new file mode 100644 index 0000000000..3c71649a8a --- /dev/null +++ b/c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_dldi.S @@ -0,0 +1,73 @@ +@--------------------------------------------------------------------------------- + .align 4 + .arm + .global _io_dldi +@--------------------------------------------------------------------------------- +.equ FEATURE_MEDIUM_CANREAD, 0x00000001 +.equ FEATURE_MEDIUM_CANWRITE, 0x00000002 +.equ FEATURE_SLOT_GBA, 0x00000010 +.equ FEATURE_SLOT_NDS, 0x00000020 + + +_dldi_start: + +@--------------------------------------------------------------------------------- +@ Driver patch file standard header -- 16 bytes + .word 0xBF8DA5ED @ Magic number to identify this region + .asciz " Chishm" @ Identifying Magic string (8 bytes with null terminator) + .byte 0x01 @ Version number + .byte 0x0F @32KiB @ Log [base-2] of the size of this driver in bytes. + .byte 0x00 @ Sections to fix + .byte 0x0F @32KiB @ Log [base-2] of the allocated space in bytes. + +@--------------------------------------------------------------------------------- +@ Text identifier - can be anything up to 47 chars + terminating null -- 16 bytes + .align 4 + .asciz "Default (No interface)" + +@--------------------------------------------------------------------------------- +@ Offsets to important sections within the data -- 32 bytes + .align 6 + .word _dldi_start @ data start + .word _dldi_end @ data end + .word 0x00000000 @ Interworking glue start -- Needs address fixing + .word 0x00000000 @ Interworking glue end + .word 0x00000000 @ GOT start -- Needs address fixing + .word 0x00000000 @ GOT end + .word 0x00000000 @ bss start -- Needs setting to zero + .word 0x00000000 @ bss end + +@--------------------------------------------------------------------------------- +@ IO_INTERFACE data -- 32 bytes +_io_dldi: + .ascii "DLDI" @ ioType + .word 0x00000000 @ Features + .word _DLDI_startup @ + .word _DLDI_isInserted @ + .word _DLDI_readSectors @ Function pointers to standard device driver functions + .word _DLDI_writeSectors @ + .word _DLDI_clearStatus @ + .word _DLDI_shutdown @ + +@--------------------------------------------------------------------------------- + +_DLDI_startup: +_DLDI_isInserted: +_DLDI_readSectors: +_DLDI_writeSectors: +_DLDI_clearStatus: +_DLDI_shutdown: + mov r0, #0x00 @ Return false for every function + bx lr + + + +@--------------------------------------------------------------------------------- + .align + .pool + +.space 32632 @ Fill to 32KiB + +_dldi_end: + .end +@--------------------------------------------------------------------------------- diff --git a/c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_dldi.s b/c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_dldi.s deleted file mode 100644 index 3c71649a8a..0000000000 --- a/c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_dldi.s +++ /dev/null @@ -1,73 +0,0 @@ -@--------------------------------------------------------------------------------- - .align 4 - .arm - .global _io_dldi -@--------------------------------------------------------------------------------- -.equ FEATURE_MEDIUM_CANREAD, 0x00000001 -.equ FEATURE_MEDIUM_CANWRITE, 0x00000002 -.equ FEATURE_SLOT_GBA, 0x00000010 -.equ FEATURE_SLOT_NDS, 0x00000020 - - -_dldi_start: - -@--------------------------------------------------------------------------------- -@ Driver patch file standard header -- 16 bytes - .word 0xBF8DA5ED @ Magic number to identify this region - .asciz " Chishm" @ Identifying Magic string (8 bytes with null terminator) - .byte 0x01 @ Version number - .byte 0x0F @32KiB @ Log [base-2] of the size of this driver in bytes. - .byte 0x00 @ Sections to fix - .byte 0x0F @32KiB @ Log [base-2] of the allocated space in bytes. - -@--------------------------------------------------------------------------------- -@ Text identifier - can be anything up to 47 chars + terminating null -- 16 bytes - .align 4 - .asciz "Default (No interface)" - -@--------------------------------------------------------------------------------- -@ Offsets to important sections within the data -- 32 bytes - .align 6 - .word _dldi_start @ data start - .word _dldi_end @ data end - .word 0x00000000 @ Interworking glue start -- Needs address fixing - .word 0x00000000 @ Interworking glue end - .word 0x00000000 @ GOT start -- Needs address fixing - .word 0x00000000 @ GOT end - .word 0x00000000 @ bss start -- Needs setting to zero - .word 0x00000000 @ bss end - -@--------------------------------------------------------------------------------- -@ IO_INTERFACE data -- 32 bytes -_io_dldi: - .ascii "DLDI" @ ioType - .word 0x00000000 @ Features - .word _DLDI_startup @ - .word _DLDI_isInserted @ - .word _DLDI_readSectors @ Function pointers to standard device driver functions - .word _DLDI_writeSectors @ - .word _DLDI_clearStatus @ - .word _DLDI_shutdown @ - -@--------------------------------------------------------------------------------- - -_DLDI_startup: -_DLDI_isInserted: -_DLDI_readSectors: -_DLDI_writeSectors: -_DLDI_clearStatus: -_DLDI_shutdown: - mov r0, #0x00 @ Return false for every function - bx lr - - - -@--------------------------------------------------------------------------------- - .align - .pool - -.space 32632 @ Fill to 32KiB - -_dldi_end: - .end -@--------------------------------------------------------------------------------- diff --git a/c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_scsd_s.S b/c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_scsd_s.S new file mode 100644 index 0000000000..2b68d3f905 --- /dev/null +++ b/c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_scsd_s.S @@ -0,0 +1,139 @@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@ io_scsd_s.s +@ +@ Hardware Routines for reading a Secure Digital card +@ using the SC SD +@ +@ Based on code supplied by Romman +@ +@ Copyright (c) 2006 Michael "Chishm" Chisholm +@ +@ Redistribution and use in source and binary forms, with or without modification, +@ are permitted provided that the following conditions are met: +@ +@ 1. Redistributions of source code must retain the above copyright notice, +@ this list of conditions and the following disclaimer. +@ 2. Redistributions in binary form must reproduce the above copyright notice, +@ this list of conditions and the following disclaimer in the documentation and/or +@ other materials provided with the distribution. +@ 3. The name of the author may not be used to endorse or promote products derived +@ from this software without specific prior written permission. +@ +@ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +@ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +@ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE +@ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +@ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +@ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +@ +@ 2006-07-22 - Chishm +@ * First release of stable code +@ +@ 2006-08-19 - Chishm +@ * Added SuperCard Lite support +@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + + .align 4 + .arm + + .equ REG_SCSD_DATAWRITE, 0x09000000 + .equ BYTES_PER_READ, 0x200 + .equ SCSD_STS_BUSY, 0x100 + .equ BUSY_WAIT_TIMEOUT, 0x10000 + .equ FALSE, 0 + .equ TRUE, 1 + +@ bool _SCSD_writeData_s (u8 *data, u16* crc) + + .global _SCSD_writeData_s + +_SCSD_writeData_s: + stmfd r13!, {r4-r5} + mov r5, #BYTES_PER_READ + mov r2, #REG_SCSD_DATAWRITE + +@ Wait for a free data buffer on the SD card + mov r4, #BUSY_WAIT_TIMEOUT +_SCSD_writeData_busy_wait: + @ Test for timeout + subs r4, r4, #1 + moveq r0, #FALSE @ return false on failure + beq _SCSD_writeData_return + @ Check the busy bit of the status register + ldrh r3, [r2] + tst r3, #SCSD_STS_BUSY + beq _SCSD_writeData_busy_wait + + ldrh r3, [r2] @ extra clock + + mov r3, #0 @ start bit + strh r3,[r2] + +@ Check if the data buffer is aligned on a halfword boundary + tst r0, #1 + beq _SCSD_writeData_data_loop + +@ Used when the source data is unaligned +_SCSD_writeData_data_loop_unaligned: + ldrb r3, [r0], #1 + ldrb r4, [r0], #1 + orr r3, r3, r4, lsl #8 + stmia r2, {r3-r4} + subs r5, r5, #2 + bne _SCSD_writeData_data_loop_unaligned + b _SCSD_writeData_crc + +@ Write the data to the card +@ 4 halfwords are transmitted to the Supercard at once, for timing purposes +@ Only the first halfword needs to contain data for standard SuperCards +@ For the SuperCard Lite, the data is split into 4 nibbles, one per halfword +_SCSD_writeData_data_loop: + ldrh r3, [r0], #2 + +@ This bit added for SCLite. Notice that the shift is not the same as in +@ the original (buggy) code supplied by Romman + add r3, r3, r3, lsl #20 + mov r4, r3, lsr #8 + + stmia r2, {r3-r4} + + subs r5, r5, #2 + bne _SCSD_writeData_data_loop + +@ Send the data CRC +_SCSD_writeData_crc: + cmp r1, #0 + movne r0, r1 + movne r1, #0 + movne r5, #8 + bne _SCSD_writeData_data_loop + + mov r3, #0xff @ end bit + strh r3, [r2] + +@ Wait for the SD card to signal that it is finished recieving + mov r4, #BUSY_WAIT_TIMEOUT +_SCSD_writeData_finished_wait: + @ Test for timeout + subs r4, r4, #1 + moveq r0, #FALSE @ return false on failure + beq _SCSD_writeData_return + @ Check the busy bit of the status register + ldrh r3, [r2] + tst r3, #0x100 + bne _SCSD_writeData_finished_wait + +@ Send 8 more clocks, as required by the SD card + ldmia r2, {r3-r4} + +@ return true for success + mov r0, #TRUE + +_SCSD_writeData_return: + ldmfd r13!,{r4-r5} + bx r14 + diff --git a/c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_scsd_s.s b/c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_scsd_s.s deleted file mode 100644 index 2b68d3f905..0000000000 --- a/c/src/lib/libbsp/arm/nds/libfat/source/disc_io/io_scsd_s.s +++ /dev/null @@ -1,139 +0,0 @@ -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -@ io_scsd_s.s -@ -@ Hardware Routines for reading a Secure Digital card -@ using the SC SD -@ -@ Based on code supplied by Romman -@ -@ Copyright (c) 2006 Michael "Chishm" Chisholm -@ -@ Redistribution and use in source and binary forms, with or without modification, -@ are permitted provided that the following conditions are met: -@ -@ 1. Redistributions of source code must retain the above copyright notice, -@ this list of conditions and the following disclaimer. -@ 2. Redistributions in binary form must reproduce the above copyright notice, -@ this list of conditions and the following disclaimer in the documentation and/or -@ other materials provided with the distribution. -@ 3. The name of the author may not be used to endorse or promote products derived -@ from this software without specific prior written permission. -@ -@ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -@ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY -@ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE -@ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -@ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -@ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -@ 2006-07-22 - Chishm -@ * First release of stable code -@ -@ 2006-08-19 - Chishm -@ * Added SuperCard Lite support -@ -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - - .align 4 - .arm - - .equ REG_SCSD_DATAWRITE, 0x09000000 - .equ BYTES_PER_READ, 0x200 - .equ SCSD_STS_BUSY, 0x100 - .equ BUSY_WAIT_TIMEOUT, 0x10000 - .equ FALSE, 0 - .equ TRUE, 1 - -@ bool _SCSD_writeData_s (u8 *data, u16* crc) - - .global _SCSD_writeData_s - -_SCSD_writeData_s: - stmfd r13!, {r4-r5} - mov r5, #BYTES_PER_READ - mov r2, #REG_SCSD_DATAWRITE - -@ Wait for a free data buffer on the SD card - mov r4, #BUSY_WAIT_TIMEOUT -_SCSD_writeData_busy_wait: - @ Test for timeout - subs r4, r4, #1 - moveq r0, #FALSE @ return false on failure - beq _SCSD_writeData_return - @ Check the busy bit of the status register - ldrh r3, [r2] - tst r3, #SCSD_STS_BUSY - beq _SCSD_writeData_busy_wait - - ldrh r3, [r2] @ extra clock - - mov r3, #0 @ start bit - strh r3,[r2] - -@ Check if the data buffer is aligned on a halfword boundary - tst r0, #1 - beq _SCSD_writeData_data_loop - -@ Used when the source data is unaligned -_SCSD_writeData_data_loop_unaligned: - ldrb r3, [r0], #1 - ldrb r4, [r0], #1 - orr r3, r3, r4, lsl #8 - stmia r2, {r3-r4} - subs r5, r5, #2 - bne _SCSD_writeData_data_loop_unaligned - b _SCSD_writeData_crc - -@ Write the data to the card -@ 4 halfwords are transmitted to the Supercard at once, for timing purposes -@ Only the first halfword needs to contain data for standard SuperCards -@ For the SuperCard Lite, the data is split into 4 nibbles, one per halfword -_SCSD_writeData_data_loop: - ldrh r3, [r0], #2 - -@ This bit added for SCLite. Notice that the shift is not the same as in -@ the original (buggy) code supplied by Romman - add r3, r3, r3, lsl #20 - mov r4, r3, lsr #8 - - stmia r2, {r3-r4} - - subs r5, r5, #2 - bne _SCSD_writeData_data_loop - -@ Send the data CRC -_SCSD_writeData_crc: - cmp r1, #0 - movne r0, r1 - movne r1, #0 - movne r5, #8 - bne _SCSD_writeData_data_loop - - mov r3, #0xff @ end bit - strh r3, [r2] - -@ Wait for the SD card to signal that it is finished recieving - mov r4, #BUSY_WAIT_TIMEOUT -_SCSD_writeData_finished_wait: - @ Test for timeout - subs r4, r4, #1 - moveq r0, #FALSE @ return false on failure - beq _SCSD_writeData_return - @ Check the busy bit of the status register - ldrh r3, [r2] - tst r3, #0x100 - bne _SCSD_writeData_finished_wait - -@ Send 8 more clocks, as required by the SD card - ldmia r2, {r3-r4} - -@ return true for success - mov r0, #TRUE - -_SCSD_writeData_return: - ldmfd r13!,{r4-r5} - bx r14 - diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/COS.S b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/COS.S new file mode 100644 index 0000000000..405e9f74a6 --- /dev/null +++ b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/COS.S @@ -0,0 +1,75 @@ +/* Generated by BIN2S - please don't edit directly */ + .section .rodata + .balign 4 + .global COS_bin_size +COS_bin_size: .int 1024 + .global COS_bin +COS_bin: + .byte 0, 16,255, 15,254, 15,253, 15,251, 15,248, 15,244, 15,240, 15 + .byte 236, 15,231, 15,225, 15,218, 15,211, 15,203, 15,195, 15,186, 15 + .byte 177, 15,167, 15,156, 15,145, 15,133, 15,120, 15,107, 15, 93, 15 + .byte 79, 15, 64, 15, 49, 15, 33, 15, 16, 15,255, 14,237, 14,219, 14 + .byte 200, 14,180, 14,160, 14,139, 14,118, 14, 96, 14, 74, 14, 51, 14 + .byte 28, 14, 4, 14,235, 13,210, 13,185, 13,159, 13,132, 13,105, 13 + .byte 77, 13, 49, 13, 20, 13,247, 12,217, 12,187, 12,157, 12,125, 12 + .byte 94, 12, 62, 12, 29, 12,252, 11,218, 11,184, 11,150, 11,115, 11 + .byte 80, 11, 44, 11, 8, 11,227, 10,190, 10,153, 10,115, 10, 77, 10 + .byte 38, 10,255, 9,215, 9,176, 9,135, 9, 95, 9, 54, 9, 13, 9 + .byte 227, 8,185, 8,143, 8,100, 8, 57, 8, 14, 8,226, 7,183, 7 + .byte 138, 7, 94, 7, 49, 7, 4, 7,215, 6,169, 6,123, 6, 77, 6 + .byte 31, 6,240, 5,194, 5,147, 5, 99, 5, 52, 5, 4, 5,213, 4 + .byte 165, 4,116, 4, 68, 4, 19, 4,227, 3,178, 3,129, 3, 80, 3 + .byte 31, 3,237, 2,188, 2,138, 2, 89, 2, 39, 2,245, 1,195, 1 + .byte 145, 1, 95, 1, 45, 1,251, 0,200, 0,150, 0,100, 0, 50, 0 + .byte 0, 0,206,255,156,255,106,255, 56,255, 5,255,211,254,161,254 + .byte 111,254, 61,254, 11,254,217,253,167,253,118,253, 68,253, 19,253 + .byte 225,252,176,252,127,252, 78,252, 29,252,237,251,188,251,140,251 + .byte 91,251, 43,251,252,250,204,250,157,250,109,250, 62,250, 16,250 + .byte 225,249,179,249,133,249, 87,249, 41,249,252,248,207,248,162,248 + .byte 118,248, 73,248, 30,248,242,247,199,247,156,247,113,247, 71,247 + .byte 29,247,243,246,202,246,161,246,121,246, 80,246, 41,246, 1,246 + .byte 218,245,179,245,141,245,103,245, 66,245, 29,245,248,244,212,244 + .byte 176,244,141,244,106,244, 72,244, 38,244, 4,244,227,243,194,243 + .byte 162,243,131,243, 99,243, 69,243, 39,243, 9,243,236,242,207,242 + .byte 179,242,151,242,124,242, 97,242, 71,242, 46,242, 21,242,252,241 + .byte 228,241,205,241,182,241,160,241,138,241,117,241, 96,241, 76,241 + .byte 56,241, 37,241, 19,241, 1,241,240,240,223,240,207,240,192,240 + .byte 177,240,163,240,149,240,136,240,123,240,111,240,100,240, 89,240 + .byte 79,240, 70,240, 61,240, 53,240, 45,240, 38,240, 31,240, 25,240 + .byte 20,240, 16,240, 12,240, 8,240, 5,240, 3,240, 2,240, 1,240 + .byte 0,240, 1,240, 2,240, 3,240, 5,240, 8,240, 12,240, 16,240 + .byte 20,240, 25,240, 31,240, 38,240, 45,240, 53,240, 61,240, 70,240 + .byte 79,240, 89,240,100,240,111,240,123,240,136,240,149,240,163,240 + .byte 177,240,192,240,207,240,223,240,240,240, 1,241, 19,241, 37,241 + .byte 56,241, 76,241, 96,241,117,241,138,241,160,241,182,241,205,241 + .byte 228,241,252,241, 21,242, 46,242, 71,242, 97,242,124,242,151,242 + .byte 179,242,207,242,236,242, 9,243, 39,243, 69,243, 99,243,131,243 + .byte 162,243,194,243,227,243, 4,244, 38,244, 72,244,106,244,141,244 + .byte 176,244,212,244,248,244, 29,245, 66,245,103,245,141,245,179,245 + .byte 218,245, 1,246, 41,246, 80,246,121,246,161,246,202,246,243,246 + .byte 29,247, 71,247,113,247,156,247,199,247,242,247, 30,248, 73,248 + .byte 118,248,162,248,207,248,252,248, 41,249, 87,249,133,249,179,249 + .byte 225,249, 16,250, 62,250,109,250,157,250,204,250,252,250, 43,251 + .byte 91,251,140,251,188,251,237,251, 29,252, 78,252,127,252,176,252 + .byte 225,252, 19,253, 68,253,118,253,167,253,217,253, 11,254, 61,254 + .byte 111,254,161,254,211,254, 5,255, 56,255,106,255,156,255,206,255 + .byte 0, 0, 50, 0,100, 0,150, 0,200, 0,251, 0, 45, 1, 95, 1 + .byte 145, 1,195, 1,245, 1, 39, 2, 89, 2,138, 2,188, 2,237, 2 + .byte 31, 3, 80, 3,129, 3,178, 3,227, 3, 19, 4, 68, 4,116, 4 + .byte 165, 4,213, 4, 4, 5, 52, 5, 99, 5,147, 5,194, 5,240, 5 + .byte 31, 6, 77, 6,123, 6,169, 6,215, 6, 4, 7, 49, 7, 94, 7 + .byte 138, 7,183, 7,226, 7, 14, 8, 57, 8,100, 8,143, 8,185, 8 + .byte 227, 8, 13, 9, 54, 9, 95, 9,135, 9,176, 9,215, 9,255, 9 + .byte 38, 10, 77, 10,115, 10,153, 10,190, 10,227, 10, 8, 11, 44, 11 + .byte 80, 11,115, 11,150, 11,184, 11,218, 11,252, 11, 29, 12, 62, 12 + .byte 94, 12,125, 12,157, 12,187, 12,217, 12,247, 12, 20, 13, 49, 13 + .byte 77, 13,105, 13,132, 13,159, 13,185, 13,210, 13,235, 13, 4, 14 + .byte 28, 14, 51, 14, 74, 14, 96, 14,118, 14,139, 14,160, 14,180, 14 + .byte 200, 14,219, 14,237, 14,255, 14, 16, 15, 33, 15, 49, 15, 64, 15 + .byte 79, 15, 93, 15,107, 15,120, 15,133, 15,145, 15,156, 15,167, 15 + .byte 177, 15,186, 15,195, 15,203, 15,211, 15,218, 15,225, 15,231, 15 + .byte 236, 15,240, 15,244, 15,248, 15,251, 15,253, 15,254, 15,255, 15 + + .global COS_bin_end +COS_bin_end: + diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/COS.s b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/COS.s deleted file mode 100644 index 405e9f74a6..0000000000 --- a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/COS.s +++ /dev/null @@ -1,75 +0,0 @@ -/* Generated by BIN2S - please don't edit directly */ - .section .rodata - .balign 4 - .global COS_bin_size -COS_bin_size: .int 1024 - .global COS_bin -COS_bin: - .byte 0, 16,255, 15,254, 15,253, 15,251, 15,248, 15,244, 15,240, 15 - .byte 236, 15,231, 15,225, 15,218, 15,211, 15,203, 15,195, 15,186, 15 - .byte 177, 15,167, 15,156, 15,145, 15,133, 15,120, 15,107, 15, 93, 15 - .byte 79, 15, 64, 15, 49, 15, 33, 15, 16, 15,255, 14,237, 14,219, 14 - .byte 200, 14,180, 14,160, 14,139, 14,118, 14, 96, 14, 74, 14, 51, 14 - .byte 28, 14, 4, 14,235, 13,210, 13,185, 13,159, 13,132, 13,105, 13 - .byte 77, 13, 49, 13, 20, 13,247, 12,217, 12,187, 12,157, 12,125, 12 - .byte 94, 12, 62, 12, 29, 12,252, 11,218, 11,184, 11,150, 11,115, 11 - .byte 80, 11, 44, 11, 8, 11,227, 10,190, 10,153, 10,115, 10, 77, 10 - .byte 38, 10,255, 9,215, 9,176, 9,135, 9, 95, 9, 54, 9, 13, 9 - .byte 227, 8,185, 8,143, 8,100, 8, 57, 8, 14, 8,226, 7,183, 7 - .byte 138, 7, 94, 7, 49, 7, 4, 7,215, 6,169, 6,123, 6, 77, 6 - .byte 31, 6,240, 5,194, 5,147, 5, 99, 5, 52, 5, 4, 5,213, 4 - .byte 165, 4,116, 4, 68, 4, 19, 4,227, 3,178, 3,129, 3, 80, 3 - .byte 31, 3,237, 2,188, 2,138, 2, 89, 2, 39, 2,245, 1,195, 1 - .byte 145, 1, 95, 1, 45, 1,251, 0,200, 0,150, 0,100, 0, 50, 0 - .byte 0, 0,206,255,156,255,106,255, 56,255, 5,255,211,254,161,254 - .byte 111,254, 61,254, 11,254,217,253,167,253,118,253, 68,253, 19,253 - .byte 225,252,176,252,127,252, 78,252, 29,252,237,251,188,251,140,251 - .byte 91,251, 43,251,252,250,204,250,157,250,109,250, 62,250, 16,250 - .byte 225,249,179,249,133,249, 87,249, 41,249,252,248,207,248,162,248 - .byte 118,248, 73,248, 30,248,242,247,199,247,156,247,113,247, 71,247 - .byte 29,247,243,246,202,246,161,246,121,246, 80,246, 41,246, 1,246 - .byte 218,245,179,245,141,245,103,245, 66,245, 29,245,248,244,212,244 - .byte 176,244,141,244,106,244, 72,244, 38,244, 4,244,227,243,194,243 - .byte 162,243,131,243, 99,243, 69,243, 39,243, 9,243,236,242,207,242 - .byte 179,242,151,242,124,242, 97,242, 71,242, 46,242, 21,242,252,241 - .byte 228,241,205,241,182,241,160,241,138,241,117,241, 96,241, 76,241 - .byte 56,241, 37,241, 19,241, 1,241,240,240,223,240,207,240,192,240 - .byte 177,240,163,240,149,240,136,240,123,240,111,240,100,240, 89,240 - .byte 79,240, 70,240, 61,240, 53,240, 45,240, 38,240, 31,240, 25,240 - .byte 20,240, 16,240, 12,240, 8,240, 5,240, 3,240, 2,240, 1,240 - .byte 0,240, 1,240, 2,240, 3,240, 5,240, 8,240, 12,240, 16,240 - .byte 20,240, 25,240, 31,240, 38,240, 45,240, 53,240, 61,240, 70,240 - .byte 79,240, 89,240,100,240,111,240,123,240,136,240,149,240,163,240 - .byte 177,240,192,240,207,240,223,240,240,240, 1,241, 19,241, 37,241 - .byte 56,241, 76,241, 96,241,117,241,138,241,160,241,182,241,205,241 - .byte 228,241,252,241, 21,242, 46,242, 71,242, 97,242,124,242,151,242 - .byte 179,242,207,242,236,242, 9,243, 39,243, 69,243, 99,243,131,243 - .byte 162,243,194,243,227,243, 4,244, 38,244, 72,244,106,244,141,244 - .byte 176,244,212,244,248,244, 29,245, 66,245,103,245,141,245,179,245 - .byte 218,245, 1,246, 41,246, 80,246,121,246,161,246,202,246,243,246 - .byte 29,247, 71,247,113,247,156,247,199,247,242,247, 30,248, 73,248 - .byte 118,248,162,248,207,248,252,248, 41,249, 87,249,133,249,179,249 - .byte 225,249, 16,250, 62,250,109,250,157,250,204,250,252,250, 43,251 - .byte 91,251,140,251,188,251,237,251, 29,252, 78,252,127,252,176,252 - .byte 225,252, 19,253, 68,253,118,253,167,253,217,253, 11,254, 61,254 - .byte 111,254,161,254,211,254, 5,255, 56,255,106,255,156,255,206,255 - .byte 0, 0, 50, 0,100, 0,150, 0,200, 0,251, 0, 45, 1, 95, 1 - .byte 145, 1,195, 1,245, 1, 39, 2, 89, 2,138, 2,188, 2,237, 2 - .byte 31, 3, 80, 3,129, 3,178, 3,227, 3, 19, 4, 68, 4,116, 4 - .byte 165, 4,213, 4, 4, 5, 52, 5, 99, 5,147, 5,194, 5,240, 5 - .byte 31, 6, 77, 6,123, 6,169, 6,215, 6, 4, 7, 49, 7, 94, 7 - .byte 138, 7,183, 7,226, 7, 14, 8, 57, 8,100, 8,143, 8,185, 8 - .byte 227, 8, 13, 9, 54, 9, 95, 9,135, 9,176, 9,215, 9,255, 9 - .byte 38, 10, 77, 10,115, 10,153, 10,190, 10,227, 10, 8, 11, 44, 11 - .byte 80, 11,115, 11,150, 11,184, 11,218, 11,252, 11, 29, 12, 62, 12 - .byte 94, 12,125, 12,157, 12,187, 12,217, 12,247, 12, 20, 13, 49, 13 - .byte 77, 13,105, 13,132, 13,159, 13,185, 13,210, 13,235, 13, 4, 14 - .byte 28, 14, 51, 14, 74, 14, 96, 14,118, 14,139, 14,160, 14,180, 14 - .byte 200, 14,219, 14,237, 14,255, 14, 16, 15, 33, 15, 49, 15, 64, 15 - .byte 79, 15, 93, 15,107, 15,120, 15,133, 15,145, 15,156, 15,167, 15 - .byte 177, 15,186, 15,195, 15,203, 15,211, 15,218, 15,225, 15,231, 15 - .byte 236, 15,240, 15,244, 15,248, 15,251, 15,253, 15,254, 15,255, 15 - - .global COS_bin_end -COS_bin_end: - diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/SIN.S b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/SIN.S new file mode 100644 index 0000000000..7a9723b39b --- /dev/null +++ b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/SIN.S @@ -0,0 +1,75 @@ +/* Generated by BIN2S - please don't edit directly */ + .section .rodata + .balign 4 + .global SIN_bin_size +SIN_bin_size: .int 1024 + .global SIN_bin +SIN_bin: + .byte 0, 0, 50, 0,100, 0,150, 0,200, 0,251, 0, 45, 1, 95, 1 + .byte 145, 1,195, 1,245, 1, 39, 2, 89, 2,138, 2,188, 2,237, 2 + .byte 31, 3, 80, 3,129, 3,178, 3,227, 3, 19, 4, 68, 4,116, 4 + .byte 165, 4,213, 4, 4, 5, 52, 5, 99, 5,147, 5,194, 5,240, 5 + .byte 31, 6, 77, 6,123, 6,169, 6,215, 6, 4, 7, 49, 7, 94, 7 + .byte 138, 7,183, 7,226, 7, 14, 8, 57, 8,100, 8,143, 8,185, 8 + .byte 227, 8, 13, 9, 54, 9, 95, 9,135, 9,176, 9,215, 9,255, 9 + .byte 38, 10, 77, 10,115, 10,153, 10,190, 10,227, 10, 8, 11, 44, 11 + .byte 80, 11,115, 11,150, 11,184, 11,218, 11,252, 11, 29, 12, 62, 12 + .byte 94, 12,125, 12,157, 12,187, 12,217, 12,247, 12, 20, 13, 49, 13 + .byte 77, 13,105, 13,132, 13,159, 13,185, 13,210, 13,235, 13, 4, 14 + .byte 28, 14, 51, 14, 74, 14, 96, 14,118, 14,139, 14,160, 14,180, 14 + .byte 200, 14,219, 14,237, 14,255, 14, 16, 15, 33, 15, 49, 15, 64, 15 + .byte 79, 15, 93, 15,107, 15,120, 15,133, 15,145, 15,156, 15,167, 15 + .byte 177, 15,186, 15,195, 15,203, 15,211, 15,218, 15,225, 15,231, 15 + .byte 236, 15,240, 15,244, 15,248, 15,251, 15,253, 15,254, 15,255, 15 + .byte 0, 16,255, 15,254, 15,253, 15,251, 15,248, 15,244, 15,240, 15 + .byte 236, 15,231, 15,225, 15,218, 15,211, 15,203, 15,195, 15,186, 15 + .byte 177, 15,167, 15,156, 15,145, 15,133, 15,120, 15,107, 15, 93, 15 + .byte 79, 15, 64, 15, 49, 15, 33, 15, 16, 15,255, 14,237, 14,219, 14 + .byte 200, 14,180, 14,160, 14,139, 14,118, 14, 96, 14, 74, 14, 51, 14 + .byte 28, 14, 4, 14,235, 13,210, 13,185, 13,159, 13,132, 13,105, 13 + .byte 77, 13, 49, 13, 20, 13,247, 12,217, 12,187, 12,157, 12,125, 12 + .byte 94, 12, 62, 12, 29, 12,252, 11,218, 11,184, 11,150, 11,115, 11 + .byte 80, 11, 44, 11, 8, 11,227, 10,190, 10,153, 10,115, 10, 77, 10 + .byte 38, 10,255, 9,215, 9,176, 9,135, 9, 95, 9, 54, 9, 13, 9 + .byte 227, 8,185, 8,143, 8,100, 8, 57, 8, 14, 8,226, 7,183, 7 + .byte 138, 7, 94, 7, 49, 7, 4, 7,215, 6,169, 6,123, 6, 77, 6 + .byte 31, 6,240, 5,194, 5,147, 5, 99, 5, 52, 5, 4, 5,213, 4 + .byte 165, 4,116, 4, 68, 4, 19, 4,227, 3,178, 3,129, 3, 80, 3 + .byte 31, 3,237, 2,188, 2,138, 2, 89, 2, 39, 2,245, 1,195, 1 + .byte 145, 1, 95, 1, 45, 1,251, 0,200, 0,150, 0,100, 0, 50, 0 + .byte 0, 0,206,255,156,255,106,255, 56,255, 5,255,211,254,161,254 + .byte 111,254, 61,254, 11,254,217,253,167,253,118,253, 68,253, 19,253 + .byte 225,252,176,252,127,252, 78,252, 29,252,237,251,188,251,140,251 + .byte 91,251, 43,251,252,250,204,250,157,250,109,250, 62,250, 16,250 + .byte 225,249,179,249,133,249, 87,249, 41,249,252,248,207,248,162,248 + .byte 118,248, 73,248, 30,248,242,247,199,247,156,247,113,247, 71,247 + .byte 29,247,243,246,202,246,161,246,121,246, 80,246, 41,246, 1,246 + .byte 218,245,179,245,141,245,103,245, 66,245, 29,245,248,244,212,244 + .byte 176,244,141,244,106,244, 72,244, 38,244, 4,244,227,243,194,243 + .byte 162,243,131,243, 99,243, 69,243, 39,243, 9,243,236,242,207,242 + .byte 179,242,151,242,124,242, 97,242, 71,242, 46,242, 21,242,252,241 + .byte 228,241,205,241,182,241,160,241,138,241,117,241, 96,241, 76,241 + .byte 56,241, 37,241, 19,241, 1,241,240,240,223,240,207,240,192,240 + .byte 177,240,163,240,149,240,136,240,123,240,111,240,100,240, 89,240 + .byte 79,240, 70,240, 61,240, 53,240, 45,240, 38,240, 31,240, 25,240 + .byte 20,240, 16,240, 12,240, 8,240, 5,240, 3,240, 2,240, 1,240 + .byte 0,240, 1,240, 2,240, 3,240, 5,240, 8,240, 12,240, 16,240 + .byte 20,240, 25,240, 31,240, 38,240, 45,240, 53,240, 61,240, 70,240 + .byte 79,240, 89,240,100,240,111,240,123,240,136,240,149,240,163,240 + .byte 177,240,192,240,207,240,223,240,240,240, 1,241, 19,241, 37,241 + .byte 56,241, 76,241, 96,241,117,241,138,241,160,241,182,241,205,241 + .byte 228,241,252,241, 21,242, 46,242, 71,242, 97,242,124,242,151,242 + .byte 179,242,207,242,236,242, 9,243, 39,243, 69,243, 99,243,131,243 + .byte 162,243,194,243,227,243, 4,244, 38,244, 72,244,106,244,141,244 + .byte 176,244,212,244,248,244, 29,245, 66,245,103,245,141,245,179,245 + .byte 218,245, 1,246, 41,246, 80,246,121,246,161,246,202,246,243,246 + .byte 29,247, 71,247,113,247,156,247,199,247,242,247, 30,248, 73,248 + .byte 118,248,162,248,207,248,252,248, 41,249, 87,249,133,249,179,249 + .byte 225,249, 16,250, 62,250,109,250,157,250,204,250,252,250, 43,251 + .byte 91,251,140,251,188,251,237,251, 29,252, 78,252,127,252,176,252 + .byte 225,252, 19,253, 68,253,118,253,167,253,217,253, 11,254, 61,254 + .byte 111,254,161,254,211,254, 5,255, 56,255,106,255,156,255,206,255 + + .global SIN_bin_end +SIN_bin_end: + diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/SIN.s b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/SIN.s deleted file mode 100644 index 7a9723b39b..0000000000 --- a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/SIN.s +++ /dev/null @@ -1,75 +0,0 @@ -/* Generated by BIN2S - please don't edit directly */ - .section .rodata - .balign 4 - .global SIN_bin_size -SIN_bin_size: .int 1024 - .global SIN_bin -SIN_bin: - .byte 0, 0, 50, 0,100, 0,150, 0,200, 0,251, 0, 45, 1, 95, 1 - .byte 145, 1,195, 1,245, 1, 39, 2, 89, 2,138, 2,188, 2,237, 2 - .byte 31, 3, 80, 3,129, 3,178, 3,227, 3, 19, 4, 68, 4,116, 4 - .byte 165, 4,213, 4, 4, 5, 52, 5, 99, 5,147, 5,194, 5,240, 5 - .byte 31, 6, 77, 6,123, 6,169, 6,215, 6, 4, 7, 49, 7, 94, 7 - .byte 138, 7,183, 7,226, 7, 14, 8, 57, 8,100, 8,143, 8,185, 8 - .byte 227, 8, 13, 9, 54, 9, 95, 9,135, 9,176, 9,215, 9,255, 9 - .byte 38, 10, 77, 10,115, 10,153, 10,190, 10,227, 10, 8, 11, 44, 11 - .byte 80, 11,115, 11,150, 11,184, 11,218, 11,252, 11, 29, 12, 62, 12 - .byte 94, 12,125, 12,157, 12,187, 12,217, 12,247, 12, 20, 13, 49, 13 - .byte 77, 13,105, 13,132, 13,159, 13,185, 13,210, 13,235, 13, 4, 14 - .byte 28, 14, 51, 14, 74, 14, 96, 14,118, 14,139, 14,160, 14,180, 14 - .byte 200, 14,219, 14,237, 14,255, 14, 16, 15, 33, 15, 49, 15, 64, 15 - .byte 79, 15, 93, 15,107, 15,120, 15,133, 15,145, 15,156, 15,167, 15 - .byte 177, 15,186, 15,195, 15,203, 15,211, 15,218, 15,225, 15,231, 15 - .byte 236, 15,240, 15,244, 15,248, 15,251, 15,253, 15,254, 15,255, 15 - .byte 0, 16,255, 15,254, 15,253, 15,251, 15,248, 15,244, 15,240, 15 - .byte 236, 15,231, 15,225, 15,218, 15,211, 15,203, 15,195, 15,186, 15 - .byte 177, 15,167, 15,156, 15,145, 15,133, 15,120, 15,107, 15, 93, 15 - .byte 79, 15, 64, 15, 49, 15, 33, 15, 16, 15,255, 14,237, 14,219, 14 - .byte 200, 14,180, 14,160, 14,139, 14,118, 14, 96, 14, 74, 14, 51, 14 - .byte 28, 14, 4, 14,235, 13,210, 13,185, 13,159, 13,132, 13,105, 13 - .byte 77, 13, 49, 13, 20, 13,247, 12,217, 12,187, 12,157, 12,125, 12 - .byte 94, 12, 62, 12, 29, 12,252, 11,218, 11,184, 11,150, 11,115, 11 - .byte 80, 11, 44, 11, 8, 11,227, 10,190, 10,153, 10,115, 10, 77, 10 - .byte 38, 10,255, 9,215, 9,176, 9,135, 9, 95, 9, 54, 9, 13, 9 - .byte 227, 8,185, 8,143, 8,100, 8, 57, 8, 14, 8,226, 7,183, 7 - .byte 138, 7, 94, 7, 49, 7, 4, 7,215, 6,169, 6,123, 6, 77, 6 - .byte 31, 6,240, 5,194, 5,147, 5, 99, 5, 52, 5, 4, 5,213, 4 - .byte 165, 4,116, 4, 68, 4, 19, 4,227, 3,178, 3,129, 3, 80, 3 - .byte 31, 3,237, 2,188, 2,138, 2, 89, 2, 39, 2,245, 1,195, 1 - .byte 145, 1, 95, 1, 45, 1,251, 0,200, 0,150, 0,100, 0, 50, 0 - .byte 0, 0,206,255,156,255,106,255, 56,255, 5,255,211,254,161,254 - .byte 111,254, 61,254, 11,254,217,253,167,253,118,253, 68,253, 19,253 - .byte 225,252,176,252,127,252, 78,252, 29,252,237,251,188,251,140,251 - .byte 91,251, 43,251,252,250,204,250,157,250,109,250, 62,250, 16,250 - .byte 225,249,179,249,133,249, 87,249, 41,249,252,248,207,248,162,248 - .byte 118,248, 73,248, 30,248,242,247,199,247,156,247,113,247, 71,247 - .byte 29,247,243,246,202,246,161,246,121,246, 80,246, 41,246, 1,246 - .byte 218,245,179,245,141,245,103,245, 66,245, 29,245,248,244,212,244 - .byte 176,244,141,244,106,244, 72,244, 38,244, 4,244,227,243,194,243 - .byte 162,243,131,243, 99,243, 69,243, 39,243, 9,243,236,242,207,242 - .byte 179,242,151,242,124,242, 97,242, 71,242, 46,242, 21,242,252,241 - .byte 228,241,205,241,182,241,160,241,138,241,117,241, 96,241, 76,241 - .byte 56,241, 37,241, 19,241, 1,241,240,240,223,240,207,240,192,240 - .byte 177,240,163,240,149,240,136,240,123,240,111,240,100,240, 89,240 - .byte 79,240, 70,240, 61,240, 53,240, 45,240, 38,240, 31,240, 25,240 - .byte 20,240, 16,240, 12,240, 8,240, 5,240, 3,240, 2,240, 1,240 - .byte 0,240, 1,240, 2,240, 3,240, 5,240, 8,240, 12,240, 16,240 - .byte 20,240, 25,240, 31,240, 38,240, 45,240, 53,240, 61,240, 70,240 - .byte 79,240, 89,240,100,240,111,240,123,240,136,240,149,240,163,240 - .byte 177,240,192,240,207,240,223,240,240,240, 1,241, 19,241, 37,241 - .byte 56,241, 76,241, 96,241,117,241,138,241,160,241,182,241,205,241 - .byte 228,241,252,241, 21,242, 46,242, 71,242, 97,242,124,242,151,242 - .byte 179,242,207,242,236,242, 9,243, 39,243, 69,243, 99,243,131,243 - .byte 162,243,194,243,227,243, 4,244, 38,244, 72,244,106,244,141,244 - .byte 176,244,212,244,248,244, 29,245, 66,245,103,245,141,245,179,245 - .byte 218,245, 1,246, 41,246, 80,246,121,246,161,246,202,246,243,246 - .byte 29,247, 71,247,113,247,156,247,199,247,242,247, 30,248, 73,248 - .byte 118,248,162,248,207,248,252,248, 41,249, 87,249,133,249,179,249 - .byte 225,249, 16,250, 62,250,109,250,157,250,204,250,252,250, 43,251 - .byte 91,251,140,251,188,251,237,251, 29,252, 78,252,127,252,176,252 - .byte 225,252, 19,253, 68,253,118,253,167,253,217,253, 11,254, 61,254 - .byte 111,254,161,254,211,254, 5,255, 56,255,106,255,156,255,206,255 - - .global SIN_bin_end -SIN_bin_end: - diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/TAN.S b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/TAN.S new file mode 100644 index 0000000000..c30a88de43 --- /dev/null +++ b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/TAN.S @@ -0,0 +1,75 @@ +/* Generated by BIN2S - please don't edit directly */ + .section .rodata + .balign 4 + .global TAN_bin_size +TAN_bin_size: .int 1024 + .global TAN_bin +TAN_bin: + .byte 0, 0, 50, 0,100, 0,150, 0,201, 0,251, 0, 46, 1, 96, 1 + .byte 147, 1,198, 1,249, 1, 44, 2, 95, 2,147, 2,198, 2,250, 2 + .byte 46, 3, 99, 3,151, 3,204, 3, 1, 4, 55, 4,109, 4,163, 4 + .byte 218, 4, 17, 5, 73, 5,129, 5,185, 5,242, 5, 44, 6,102, 6 + .byte 160, 6,219, 6, 23, 7, 84, 7,145, 7,207, 7, 13, 8, 77, 8 + .byte 141, 8,206, 8, 16, 9, 83, 9,151, 9,219, 9, 33, 10,104, 10 + .byte 176, 10,250, 10, 68, 11,144, 11,221, 11, 44, 12,124, 12,206, 12 + .byte 33, 13,118, 13,205, 13, 37, 14,128, 14,220, 14, 59, 15,156, 15 + .byte 255, 15,101, 16,206, 16, 57, 17,167, 17, 24, 18,140, 18, 3, 19 + .byte 126, 19,253, 19,128, 20, 7, 21,146, 21, 34, 22,183, 22, 82, 23 + .byte 242, 23,152, 24, 68, 25,247, 25,177, 26,115, 27, 62, 28, 17, 29 + .byte 239, 29,214, 30,201, 31,200, 32,212, 33,238, 34, 24, 36, 83, 37 + .byte 160, 38, 2, 40,122, 41, 11, 43,183, 44,130, 46,110, 48,129, 50 + .byte 190, 52, 44, 55,209, 57,180, 60,224, 63, 95, 67, 64, 71,147, 75 + .byte 111, 80,239, 85, 53, 92,112, 99,220,107,206,117,185,129, 70,144 + .byte 115,162,204,185,232,216,110, 4,175, 69,103,178,196,139,187, 23 + .byte 80,248, 69,232, 60,116,153, 77, 81,186,146,251, 24, 39, 52, 70 + .byte 141, 93,186,111, 71,126, 50,138, 36,148,144,156,203,163, 17,170 + .byte 145,175,109,180,192,184,161,188, 32,192, 76,195, 47,198,212,200 + .byte 66,203,127,205,146,207,126,209, 73,211,245,212,134,214,254,215 + .byte 96,217,173,218,232,219, 18,221, 44,222, 56,223, 55,224, 42,225 + .byte 17,226,239,226,194,227,141,228, 79,229, 9,230,188,230,104,231 + .byte 14,232,174,232, 73,233,222,233,110,234,249,234,128,235, 3,236 + .byte 130,236,253,236,116,237,232,237, 89,238,199,238, 50,239,155,239 + .byte 0,240,100,240,197,240, 36,241,128,241,219,241, 51,242,138,242 + .byte 223,242, 50,243,132,243,212,243, 35,244,112,244,188,244, 6,245 + .byte 80,245,152,245,223,245, 37,246,105,246,173,246,240,246, 50,247 + .byte 115,247,179,247,243,247, 49,248,111,248,172,248,233,248, 37,249 + .byte 96,249,154,249,212,249, 14,250, 71,250,127,250,183,250,239,250 + .byte 38,251, 93,251,147,251,201,251,255,251, 52,252,105,252,157,252 + .byte 210,252, 6,253, 58,253,109,253,161,253,212,253, 7,254, 58,254 + .byte 109,254,160,254,210,254, 5,255, 55,255,106,255,156,255,206,255 + .byte 0, 0, 50, 0,100, 0,150, 0,201, 0,251, 0, 46, 1, 96, 1 + .byte 147, 1,198, 1,249, 1, 44, 2, 95, 2,147, 2,198, 2,250, 2 + .byte 46, 3, 99, 3,151, 3,204, 3, 1, 4, 55, 4,109, 4,163, 4 + .byte 218, 4, 17, 5, 73, 5,129, 5,185, 5,242, 5, 44, 6,102, 6 + .byte 160, 6,219, 6, 23, 7, 84, 7,145, 7,207, 7, 13, 8, 77, 8 + .byte 141, 8,206, 8, 16, 9, 83, 9,151, 9,219, 9, 33, 10,104, 10 + .byte 176, 10,250, 10, 68, 11,144, 11,221, 11, 44, 12,124, 12,206, 12 + .byte 33, 13,118, 13,205, 13, 37, 14,128, 14,220, 14, 59, 15,156, 15 + .byte 255, 15,101, 16,206, 16, 57, 17,167, 17, 24, 18,140, 18, 3, 19 + .byte 126, 19,253, 19,128, 20, 7, 21,146, 21, 34, 22,183, 22, 82, 23 + .byte 242, 23,152, 24, 68, 25,247, 25,177, 26,115, 27, 62, 28, 17, 29 + .byte 239, 29,214, 30,201, 31,200, 32,212, 33,238, 34, 24, 36, 83, 37 + .byte 160, 38, 2, 40,122, 41, 11, 43,183, 44,130, 46,110, 48,129, 50 + .byte 190, 52, 44, 55,209, 57,180, 60,224, 63, 95, 67, 64, 71,147, 75 + .byte 111, 80,239, 85, 53, 92,112, 99,220,107,206,117,185,129, 70,144 + .byte 115,162,204,185,232,216,110, 4,175, 69,103,178,196,139,187, 23 + .byte 196,128, 69,232, 60,116,153, 77, 81,186,146,251, 24, 39, 52, 70 + .byte 141, 93,186,111, 71,126, 50,138, 36,148,144,156,203,163, 17,170 + .byte 145,175,109,180,192,184,161,188, 32,192, 76,195, 47,198,212,200 + .byte 66,203,127,205,146,207,126,209, 73,211,245,212,134,214,254,215 + .byte 96,217,173,218,232,219, 18,221, 44,222, 56,223, 55,224, 42,225 + .byte 17,226,239,226,194,227,141,228, 79,229, 9,230,188,230,104,231 + .byte 14,232,174,232, 73,233,222,233,110,234,249,234,128,235, 3,236 + .byte 130,236,253,236,116,237,232,237, 89,238,199,238, 50,239,155,239 + .byte 0,240,100,240,197,240, 36,241,128,241,219,241, 51,242,138,242 + .byte 223,242, 50,243,132,243,212,243, 35,244,112,244,188,244, 6,245 + .byte 80,245,152,245,223,245, 37,246,105,246,173,246,240,246, 50,247 + .byte 115,247,179,247,243,247, 49,248,111,248,172,248,233,248, 37,249 + .byte 96,249,154,249,212,249, 14,250, 71,250,127,250,183,250,239,250 + .byte 38,251, 93,251,147,251,201,251,255,251, 52,252,105,252,157,252 + .byte 210,252, 6,253, 58,253,109,253,161,253,212,253, 7,254, 58,254 + .byte 109,254,160,254,210,254, 5,255, 55,255,106,255,156,255,206,255 + + .global TAN_bin_end +TAN_bin_end: + diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/TAN.s b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/TAN.s deleted file mode 100644 index c30a88de43..0000000000 --- a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/TAN.s +++ /dev/null @@ -1,75 +0,0 @@ -/* Generated by BIN2S - please don't edit directly */ - .section .rodata - .balign 4 - .global TAN_bin_size -TAN_bin_size: .int 1024 - .global TAN_bin -TAN_bin: - .byte 0, 0, 50, 0,100, 0,150, 0,201, 0,251, 0, 46, 1, 96, 1 - .byte 147, 1,198, 1,249, 1, 44, 2, 95, 2,147, 2,198, 2,250, 2 - .byte 46, 3, 99, 3,151, 3,204, 3, 1, 4, 55, 4,109, 4,163, 4 - .byte 218, 4, 17, 5, 73, 5,129, 5,185, 5,242, 5, 44, 6,102, 6 - .byte 160, 6,219, 6, 23, 7, 84, 7,145, 7,207, 7, 13, 8, 77, 8 - .byte 141, 8,206, 8, 16, 9, 83, 9,151, 9,219, 9, 33, 10,104, 10 - .byte 176, 10,250, 10, 68, 11,144, 11,221, 11, 44, 12,124, 12,206, 12 - .byte 33, 13,118, 13,205, 13, 37, 14,128, 14,220, 14, 59, 15,156, 15 - .byte 255, 15,101, 16,206, 16, 57, 17,167, 17, 24, 18,140, 18, 3, 19 - .byte 126, 19,253, 19,128, 20, 7, 21,146, 21, 34, 22,183, 22, 82, 23 - .byte 242, 23,152, 24, 68, 25,247, 25,177, 26,115, 27, 62, 28, 17, 29 - .byte 239, 29,214, 30,201, 31,200, 32,212, 33,238, 34, 24, 36, 83, 37 - .byte 160, 38, 2, 40,122, 41, 11, 43,183, 44,130, 46,110, 48,129, 50 - .byte 190, 52, 44, 55,209, 57,180, 60,224, 63, 95, 67, 64, 71,147, 75 - .byte 111, 80,239, 85, 53, 92,112, 99,220,107,206,117,185,129, 70,144 - .byte 115,162,204,185,232,216,110, 4,175, 69,103,178,196,139,187, 23 - .byte 80,248, 69,232, 60,116,153, 77, 81,186,146,251, 24, 39, 52, 70 - .byte 141, 93,186,111, 71,126, 50,138, 36,148,144,156,203,163, 17,170 - .byte 145,175,109,180,192,184,161,188, 32,192, 76,195, 47,198,212,200 - .byte 66,203,127,205,146,207,126,209, 73,211,245,212,134,214,254,215 - .byte 96,217,173,218,232,219, 18,221, 44,222, 56,223, 55,224, 42,225 - .byte 17,226,239,226,194,227,141,228, 79,229, 9,230,188,230,104,231 - .byte 14,232,174,232, 73,233,222,233,110,234,249,234,128,235, 3,236 - .byte 130,236,253,236,116,237,232,237, 89,238,199,238, 50,239,155,239 - .byte 0,240,100,240,197,240, 36,241,128,241,219,241, 51,242,138,242 - .byte 223,242, 50,243,132,243,212,243, 35,244,112,244,188,244, 6,245 - .byte 80,245,152,245,223,245, 37,246,105,246,173,246,240,246, 50,247 - .byte 115,247,179,247,243,247, 49,248,111,248,172,248,233,248, 37,249 - .byte 96,249,154,249,212,249, 14,250, 71,250,127,250,183,250,239,250 - .byte 38,251, 93,251,147,251,201,251,255,251, 52,252,105,252,157,252 - .byte 210,252, 6,253, 58,253,109,253,161,253,212,253, 7,254, 58,254 - .byte 109,254,160,254,210,254, 5,255, 55,255,106,255,156,255,206,255 - .byte 0, 0, 50, 0,100, 0,150, 0,201, 0,251, 0, 46, 1, 96, 1 - .byte 147, 1,198, 1,249, 1, 44, 2, 95, 2,147, 2,198, 2,250, 2 - .byte 46, 3, 99, 3,151, 3,204, 3, 1, 4, 55, 4,109, 4,163, 4 - .byte 218, 4, 17, 5, 73, 5,129, 5,185, 5,242, 5, 44, 6,102, 6 - .byte 160, 6,219, 6, 23, 7, 84, 7,145, 7,207, 7, 13, 8, 77, 8 - .byte 141, 8,206, 8, 16, 9, 83, 9,151, 9,219, 9, 33, 10,104, 10 - .byte 176, 10,250, 10, 68, 11,144, 11,221, 11, 44, 12,124, 12,206, 12 - .byte 33, 13,118, 13,205, 13, 37, 14,128, 14,220, 14, 59, 15,156, 15 - .byte 255, 15,101, 16,206, 16, 57, 17,167, 17, 24, 18,140, 18, 3, 19 - .byte 126, 19,253, 19,128, 20, 7, 21,146, 21, 34, 22,183, 22, 82, 23 - .byte 242, 23,152, 24, 68, 25,247, 25,177, 26,115, 27, 62, 28, 17, 29 - .byte 239, 29,214, 30,201, 31,200, 32,212, 33,238, 34, 24, 36, 83, 37 - .byte 160, 38, 2, 40,122, 41, 11, 43,183, 44,130, 46,110, 48,129, 50 - .byte 190, 52, 44, 55,209, 57,180, 60,224, 63, 95, 67, 64, 71,147, 75 - .byte 111, 80,239, 85, 53, 92,112, 99,220,107,206,117,185,129, 70,144 - .byte 115,162,204,185,232,216,110, 4,175, 69,103,178,196,139,187, 23 - .byte 196,128, 69,232, 60,116,153, 77, 81,186,146,251, 24, 39, 52, 70 - .byte 141, 93,186,111, 71,126, 50,138, 36,148,144,156,203,163, 17,170 - .byte 145,175,109,180,192,184,161,188, 32,192, 76,195, 47,198,212,200 - .byte 66,203,127,205,146,207,126,209, 73,211,245,212,134,214,254,215 - .byte 96,217,173,218,232,219, 18,221, 44,222, 56,223, 55,224, 42,225 - .byte 17,226,239,226,194,227,141,228, 79,229, 9,230,188,230,104,231 - .byte 14,232,174,232, 73,233,222,233,110,234,249,234,128,235, 3,236 - .byte 130,236,253,236,116,237,232,237, 89,238,199,238, 50,239,155,239 - .byte 0,240,100,240,197,240, 36,241,128,241,219,241, 51,242,138,242 - .byte 223,242, 50,243,132,243,212,243, 35,244,112,244,188,244, 6,245 - .byte 80,245,152,245,223,245, 37,246,105,246,173,246,240,246, 50,247 - .byte 115,247,179,247,243,247, 49,248,111,248,172,248,233,248, 37,249 - .byte 96,249,154,249,212,249, 14,250, 71,250,127,250,183,250,239,250 - .byte 38,251, 93,251,147,251,201,251,255,251, 52,252,105,252,157,252 - .byte 210,252, 6,253, 58,253,109,253,161,253,212,253, 7,254, 58,254 - .byte 109,254,160,254,210,254, 5,255, 55,255,106,255,156,255,206,255 - - .global TAN_bin_end -TAN_bin_end: - diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/dcache.S b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/dcache.S new file mode 100644 index 0000000000..1b3943164f --- /dev/null +++ b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/dcache.S @@ -0,0 +1,245 @@ +/*--------------------------------------------------------------------------------- + $Id$ + + Copyright (C) 2005 + Michael Noland (joat) + Jason Rogers (dovoto) + Dave Murphy (WinterMute) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + 3. This notice may not be removed or altered from any source + distribution. + + $Log$ + Revision 1.1 2008/04/16 18:37:32 joel + 2008-04-16 Matthieu Bucchianeri + + * ChangeLog, Makefile.am, README, bsp_specs, configure.ac, + mk_libnds.sh, patch.libnds, preinstall.am, block/block.c, + clock/clock.c, console/console.c, coproc/coproc.S, coproc/coproc.c, + coproc/coproc.ld, dswifi/dswifi_license.txt, dswifi/makefile, + dswifi/arm7/makefile, dswifi/arm7/source/wifi_arm7.c, + dswifi/arm7/source/wifi_arm7.h, dswifi/arm9/makefile, + dswifi/arm9/source/sgIP.c, dswifi/arm9/source/sgIP.h, + dswifi/arm9/source/sgIP_ARP.c, dswifi/arm9/source/sgIP_ARP.h, + dswifi/arm9/source/sgIP_Config.h, dswifi/arm9/source/sgIP_DHCP.c, + dswifi/arm9/source/sgIP_DHCP.h, dswifi/arm9/source/sgIP_DNS.c, + dswifi/arm9/source/sgIP_DNS.h, dswifi/arm9/source/sgIP_Hub.c, + dswifi/arm9/source/sgIP_Hub.h, dswifi/arm9/source/sgIP_ICMP.c, + dswifi/arm9/source/sgIP_ICMP.h, dswifi/arm9/source/sgIP_IP.c, + dswifi/arm9/source/sgIP_IP.h, dswifi/arm9/source/sgIP_TCP.c, + dswifi/arm9/source/sgIP_TCP.h, dswifi/arm9/source/sgIP_UDP.c, + dswifi/arm9/source/sgIP_UDP.h, dswifi/arm9/source/sgIP_memblock.c, + dswifi/arm9/source/sgIP_memblock.h, + dswifi/arm9/source/sgIP_sockets.c, dswifi/arm9/source/sgIP_sockets.h, + dswifi/arm9/source/wifi_arm9.c, dswifi/arm9/source/wifi_arm9.h, + dswifi/common/source/dsregs.h, dswifi/common/source/spinlock.h, + dswifi/common/source/spinlock.s, dswifi/common/source/wifi_shared.h, + dswifi/include/dswifi7.h, dswifi/include/dswifi9.h, + dswifi/include/dswifi_version.h, dswifi/include/netdb.h, + dswifi/include/sgIP_errno.h, dswifi/include/netinet/in.h, fb/fb.c, + fb/fb.h, include/bsp.h, include/my_ipc.h, include/tm27.h, + include/types.h, include/sys/iosupport.h, irq/irq.c, irq/irq.h, + libfat/gba/include/fat.h, libfat/include/fat.h, + libfat/nds/include/fat.h, libfat/source/bit_ops.h, + libfat/source/cache.c, libfat/source/cache.h, libfat/source/common.h, + libfat/source/directory.c, libfat/source/directory.h, + libfat/source/fatdir.c, libfat/source/fatdir.h, + libfat/source/fatfile.c, libfat/source/fatfile.h, + libfat/source/file_allocation_table.c, + libfat/source/file_allocation_table.h, libfat/source/filetime.c, + libfat/source/filetime.h, libfat/source/libfat.c, + libfat/source/mem_allocate.h, libfat/source/partition.c, + libfat/source/partition.h, libfat/source/disc_io/disc.c, + libfat/source/disc_io/disc.h, libfat/source/disc_io/disc_io.h, + libfat/source/disc_io/io_cf_common.c, + libfat/source/disc_io/io_cf_common.h, + libfat/source/disc_io/io_dldi.h, libfat/source/disc_io/io_dldi.s, + libfat/source/disc_io/io_efa2.c, libfat/source/disc_io/io_efa2.h, + libfat/source/disc_io/io_fcsr.c, libfat/source/disc_io/io_fcsr.h, + libfat/source/disc_io/io_m3_common.c, + libfat/source/disc_io/io_m3_common.h, + libfat/source/disc_io/io_m3cf.c, libfat/source/disc_io/io_m3cf.h, + libfat/source/disc_io/io_m3sd.c, libfat/source/disc_io/io_m3sd.h, + libfat/source/disc_io/io_mpcf.c, libfat/source/disc_io/io_mpcf.h, + libfat/source/disc_io/io_njsd.c, libfat/source/disc_io/io_njsd.h, + libfat/source/disc_io/io_nmmc.c, libfat/source/disc_io/io_nmmc.h, + libfat/source/disc_io/io_sc_common.c, + libfat/source/disc_io/io_sc_common.h, + libfat/source/disc_io/io_sccf.c, libfat/source/disc_io/io_sccf.h, + libfat/source/disc_io/io_scsd.c, libfat/source/disc_io/io_scsd.h, + libfat/source/disc_io/io_scsd_s.s, + libfat/source/disc_io/io_sd_common.c, + libfat/source/disc_io/io_sd_common.h, libnds/Makefile.arm7, + libnds/Makefile.arm9, libnds/libnds_license.txt, + libnds/basicARM7/source/defaultARM7.c, + libnds/include/default_font_bin.h, libnds/include/gbfs.h, + libnds/include/nds.h, libnds/include/nds/bios.h, + libnds/include/nds/card.h, libnds/include/nds/dma.h, + libnds/include/nds/interrupts.h, libnds/include/nds/ipc.h, + libnds/include/nds/jtypes.h, libnds/include/nds/memory.h, + libnds/include/nds/registers_alt.h, libnds/include/nds/reload.h, + libnds/include/nds/system.h, libnds/include/nds/timers.h, + libnds/include/nds/arm7/audio.h, libnds/include/nds/arm7/clock.h, + libnds/include/nds/arm7/serial.h, libnds/include/nds/arm7/touch.h, + libnds/include/nds/arm9/background.h, + libnds/include/nds/arm9/boxtest.h, libnds/include/nds/arm9/cache.h, + libnds/include/nds/arm9/console.h, + libnds/include/nds/arm9/exceptions.h, + libnds/include/nds/arm9/image.h, libnds/include/nds/arm9/input.h, + libnds/include/nds/arm9/math.h, libnds/include/nds/arm9/ndsmotion.h, + libnds/include/nds/arm9/pcx.h, libnds/include/nds/arm9/postest.h, + libnds/include/nds/arm9/rumble.h, libnds/include/nds/arm9/sound.h, + libnds/include/nds/arm9/sprite.h, libnds/include/nds/arm9/trig_lut.h, + libnds/include/nds/arm9/video.h, libnds/include/nds/arm9/videoGL.h, + libnds/source/arm7/audio.c, libnds/source/arm7/clock.c, + libnds/source/arm7/microphone.c, libnds/source/arm7/spi.c, + libnds/source/arm7/touch.c, libnds/source/arm7/userSettings.c, + libnds/source/arm9/COS.bin, libnds/source/arm9/COS.s, + libnds/source/arm9/SIN.bin, libnds/source/arm9/SIN.s, + libnds/source/arm9/TAN.bin, libnds/source/arm9/TAN.s, + libnds/source/arm9/boxtest.c, libnds/source/arm9/console.c, + libnds/source/arm9/dcache.s, libnds/source/arm9/default_font.bin, + libnds/source/arm9/default_font.s, + libnds/source/arm9/exceptionHandler.S, + libnds/source/arm9/exceptionHandler.s, + libnds/source/arm9/exceptions.c, libnds/source/arm9/gurumeditation.c, + libnds/source/arm9/icache.s, libnds/source/arm9/image.c, + libnds/source/arm9/initSystem.c, libnds/source/arm9/keys.c, + libnds/source/arm9/ndsmotion.c, libnds/source/arm9/pcx.c, + libnds/source/arm9/rumble.c, libnds/source/arm9/sound.c, + libnds/source/arm9/system.c, libnds/source/arm9/touch.c, + libnds/source/arm9/video.c, libnds/source/arm9/videoGL.c, + libnds/source/common/biosCalls.s, libnds/source/common/card.c, + libnds/source/common/gbfs.c, + libnds/source/common/interruptDispatcher.s, + libnds/source/common/interrupts.c, rtc/rtc.c, sound/sound.c, + sound/sound.h, start/start.S, startup/linkcmds, startup/start.c, + timer/timer.c, tools/Makefile.am, tools/bin2s, tools/bin2s.c, + tools/configure.ac, tools/runtest, + tools/ndstool/include/arm7_sha1_homebrew.h, + tools/ndstool/include/arm7_sha1_nintendo.h, + tools/ndstool/include/banner.h, tools/ndstool/include/bigint.h, + tools/ndstool/include/crc.h, tools/ndstool/include/default_icon.h, + tools/ndstool/include/encryption.h, tools/ndstool/include/header.h, + tools/ndstool/include/hook.h, tools/ndstool/include/little.h, + tools/ndstool/include/loadme.h, tools/ndstool/include/logo.h, + tools/ndstool/include/ndscreate.h, + tools/ndstool/include/ndsextract.h, tools/ndstool/include/ndstool.h, + tools/ndstool/include/ndstree.h, tools/ndstool/include/overlay.h, + tools/ndstool/include/passme.h, tools/ndstool/include/passme_sram.h, + tools/ndstool/include/passme_vhd1.h, + tools/ndstool/include/passme_vhd2.h, tools/ndstool/include/raster.h, + tools/ndstool/include/sha1.h, tools/ndstool/include/types.h, + tools/ndstool/source/arm7_sha1_homebrew.c, + tools/ndstool/source/arm7_sha1_nintendo.c, + tools/ndstool/source/banner.cpp, tools/ndstool/source/bigint.cpp, + tools/ndstool/source/compile_date.c, tools/ndstool/source/crc.cpp, + tools/ndstool/source/default_icon.c, + tools/ndstool/source/encryption.cpp, tools/ndstool/source/header.cpp, + tools/ndstool/source/hook.cpp, tools/ndstool/source/loadme.c, + tools/ndstool/source/logo.cpp, tools/ndstool/source/ndscodes.cpp, + tools/ndstool/source/ndscreate.cpp, + tools/ndstool/source/ndsextract.cpp, + tools/ndstool/source/ndstool.cpp, tools/ndstool/source/ndstree.cpp, + tools/ndstool/source/passme.cpp, tools/ndstool/source/passme_sram.c, + tools/ndstool/source/raster.cpp, tools/ndstool/source/sha1.cpp, + touchscreen/README.reco, touchscreen/parser.c, touchscreen/reco.c, + touchscreen/reco.h, touchscreen/touchscreen.c, + touchscreen/touchscreen.h, wifi/compat.c, wifi/compat.h, wifi/wifi.c: + New files. + + Revision 1.1 2006/07/04 01:35:32 wntrmute + move cache.s to dcache.s + + Revision 1.5 2006/06/18 21:18:32 wntrmute + *** empty log message *** + + Revision 1.4 2005/08/23 17:06:10 wntrmute + converted all endings to unix + + Revision 1.3 2005/08/03 05:12:29 wntrmute + adjusted header for logging + +---------------------------------------------------------------------------------*/ +#define ICACHE_SIZE 0x2000 +#define DCACHE_SIZE 0x1000 +#define CACHE_LINE_SIZE 32 +//--------------------------------------------------------------------------------- + .arm +//--------------------------------------------------------------------------------- + .global DC_FlushAll +//--------------------------------------------------------------------------------- +DC_FlushAll: +/*--------------------------------------------------------------------------------- + Clean and invalidate entire data cache +---------------------------------------------------------------------------------*/ + mov r1, #0 +outer_loop: + mov r0, #0 +inner_loop: + orr r2, r1, r0 @ generate segment and line address + mcr p15, 0, r2, c7, c14, 2 @ clean and flush the line + add r0, r0, #CACHE_LINE_SIZE + cmp r0, #DCACHE_SIZE/4 + bne inner_loop + add r1, r1, #0x40000000 + cmp r1, #0 + bne outer_loop + bx lr + +//--------------------------------------------------------------------------------- + .global DC_FlushRange +//--------------------------------------------------------------------------------- +DC_FlushRange: +/*--------------------------------------------------------------------------------- + Clean and invalidate a range +---------------------------------------------------------------------------------*/ + add r1, r1, r0 + bic r0, r0, #(CACHE_LINE_SIZE - 1) +.flush: + mcr p15, 0, r0, c7, c14, 1 @ clean and flush address + add r0, r0, #CACHE_LINE_SIZE + cmp r0, r1 + blt .flush + bx lr + +//--------------------------------------------------------------------------------- + .global DC_InvalidateAll +//--------------------------------------------------------------------------------- +DC_InvalidateAll: +/*--------------------------------------------------------------------------------- + Clean and invalidate entire data cache +---------------------------------------------------------------------------------*/ + mov r0, #0 + mcr p15, 0, r0, c7, c6, 0 + bx lr + +//--------------------------------------------------------------------------------- + .global DC_InvalidateRange +//--------------------------------------------------------------------------------- +DC_InvalidateRange: +/*--------------------------------------------------------------------------------- + Invalidate a range +---------------------------------------------------------------------------------*/ + add r1, r1, r0 + bic r0, r0, #CACHE_LINE_SIZE - 1 +.invalidate: + mcr p15, 0, r0, c7, c6, 1 + add r0, r0, #CACHE_LINE_SIZE + cmp r0, r1 + blt .invalidate + bx lr diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/dcache.s b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/dcache.s deleted file mode 100644 index 39c8519933..0000000000 --- a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/dcache.s +++ /dev/null @@ -1,107 +0,0 @@ -/*--------------------------------------------------------------------------------- - $Id$ - - Copyright (C) 2005 - Michael Noland (joat) - Jason Rogers (dovoto) - Dave Murphy (WinterMute) - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any - damages arising from the use of this software. - - Permission is granted to anyone to use this software for any - purpose, including commercial applications, and to alter it and - redistribute it freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you - must not claim that you wrote the original software. If you use - this software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and - must not be misrepresented as being the original software. - 3. This notice may not be removed or altered from any source - distribution. - - $Log$ - Revision 1.1 2006/07/04 01:35:32 wntrmute - move cache.s to dcache.s - - Revision 1.5 2006/06/18 21:18:32 wntrmute - *** empty log message *** - - Revision 1.4 2005/08/23 17:06:10 wntrmute - converted all endings to unix - - Revision 1.3 2005/08/03 05:12:29 wntrmute - adjusted header for logging - ----------------------------------------------------------------------------------*/ -#define ICACHE_SIZE 0x2000 -#define DCACHE_SIZE 0x1000 -#define CACHE_LINE_SIZE 32 -//--------------------------------------------------------------------------------- - .arm -//--------------------------------------------------------------------------------- - .global DC_FlushAll -//--------------------------------------------------------------------------------- -DC_FlushAll: -/*--------------------------------------------------------------------------------- - Clean and invalidate entire data cache ----------------------------------------------------------------------------------*/ - mov r1, #0 -outer_loop: - mov r0, #0 -inner_loop: - orr r2, r1, r0 @ generate segment and line address - mcr p15, 0, r2, c7, c14, 2 @ clean and flush the line - add r0, r0, #CACHE_LINE_SIZE - cmp r0, #DCACHE_SIZE/4 - bne inner_loop - add r1, r1, #0x40000000 - cmp r1, #0 - bne outer_loop - bx lr - -//--------------------------------------------------------------------------------- - .global DC_FlushRange -//--------------------------------------------------------------------------------- -DC_FlushRange: -/*--------------------------------------------------------------------------------- - Clean and invalidate a range ----------------------------------------------------------------------------------*/ - add r1, r1, r0 - bic r0, r0, #(CACHE_LINE_SIZE - 1) -.flush: - mcr p15, 0, r0, c7, c14, 1 @ clean and flush address - add r0, r0, #CACHE_LINE_SIZE - cmp r0, r1 - blt .flush - bx lr - -//--------------------------------------------------------------------------------- - .global DC_InvalidateAll -//--------------------------------------------------------------------------------- -DC_InvalidateAll: -/*--------------------------------------------------------------------------------- - Clean and invalidate entire data cache ----------------------------------------------------------------------------------*/ - mov r0, #0 - mcr p15, 0, r0, c7, c6, 0 - bx lr - -//--------------------------------------------------------------------------------- - .global DC_InvalidateRange -//--------------------------------------------------------------------------------- -DC_InvalidateRange: -/*--------------------------------------------------------------------------------- - Invalidate a range ----------------------------------------------------------------------------------*/ - add r1, r1, r0 - bic r0, r0, #CACHE_LINE_SIZE - 1 -.invalidate: - mcr p15, 0, r0, c7, c6, 1 - add r0, r0, #CACHE_LINE_SIZE - cmp r0, r1 - blt .invalidate - bx lr diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/default_font.S b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/default_font.S new file mode 100644 index 0000000000..743677700e --- /dev/null +++ b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/default_font.S @@ -0,0 +1,523 @@ +/* Generated by BIN2S - please don't edit directly */ + .section .rodata + .balign 4 + .global default_font_bin_size +default_font_bin_size: .int 8192 + .global default_font_bin +default_font_bin: + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 16, 17, 17, 1, 1, 0, 0, 16, 1, 1, 16, 16, 1, 0, 0, 16 + .byte 1, 17, 17, 16, 1, 16, 1, 16, 1, 0, 0, 16, 16, 17, 17, 1 + .byte 16, 17, 17, 1, 17, 17, 17, 17, 17, 16, 1, 17, 17, 17, 17, 17 + .byte 17, 0, 0, 17, 17, 1, 16, 17, 17, 17, 17, 17, 16, 17, 17, 1 + .byte 16, 1, 17, 0, 17, 17, 17, 1, 17, 17, 17, 1, 17, 17, 17, 1 + .byte 16, 17, 17, 0, 0, 17, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0 + .byte 0, 16, 0, 0, 0, 17, 1, 0, 16, 17, 17, 0, 17, 17, 17, 1 + .byte 16, 17, 17, 0, 0, 17, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0 + .byte 0, 17, 17, 0, 0, 17, 17, 0, 0, 16, 1, 0, 17, 17, 17, 17 + .byte 17, 1, 16, 17, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 16, 0, 0, 0, 17, 1, 0, 16, 17, 17, 0, 17, 17, 17, 1 + .byte 17, 1, 17, 1, 0, 16, 0, 0, 0, 17, 1, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 1, 0, 0, 17, 17, 0 + .byte 0, 17, 17, 0, 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 17, 17, 17, 17, 17, 17, 17, 17, 17, 1, 16, 17, 17, 0, 0, 17 + .byte 17, 0, 0, 17, 17, 1, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17 + .byte 0, 0, 0, 0, 0, 17, 17, 0, 16, 1, 16, 1, 16, 0, 0, 1 + .byte 16, 0, 0, 1, 16, 1, 16, 1, 0, 17, 17, 0, 0, 0, 0, 0 + .byte 17, 17, 17, 17, 17, 0, 0, 17, 1, 16, 1, 16, 1, 17, 17, 16 + .byte 1, 17, 17, 16, 1, 16, 1, 16, 17, 0, 0, 17, 17, 17, 17, 17 + .byte 0, 0, 17, 17, 0, 0, 16, 17, 0, 0, 17, 17, 16, 17, 17, 16 + .byte 17, 0, 17, 0, 17, 0, 17, 0, 17, 0, 17, 0, 16, 17, 1, 0 + .byte 0, 17, 17, 0, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1 + .byte 0, 17, 17, 0, 0, 16, 1, 0, 16, 17, 17, 1, 0, 16, 1, 0 + .byte 0, 0, 1, 0, 0, 0, 17, 0, 0, 0, 1, 1, 0, 0, 1, 1 + .byte 0, 0, 1, 0, 16, 17, 1, 0, 17, 17, 0, 0, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 0, 16, 16, 0, 0, 16, 1, 1, 0, 16, 16, 1 + .byte 16, 17, 0, 1, 17, 1, 0, 1, 0, 0, 17, 1, 0, 16, 17, 0 + .byte 0, 16, 0, 0, 16, 16, 16, 0, 0, 17, 1, 0, 17, 1, 17, 1 + .byte 0, 17, 1, 0, 16, 16, 16, 0, 0, 16, 0, 0, 0, 0, 0, 0 + .byte 1, 0, 0, 0, 17, 1, 0, 0, 17, 17, 1, 0, 17, 17, 17, 1 + .byte 17, 17, 1, 0, 17, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 1, 0, 0, 17, 1, 0, 17, 17, 1, 17, 17, 17, 1 + .byte 0, 17, 17, 1, 0, 0, 17, 1, 0, 0, 0, 1, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 0, 17, 17, 0, 16, 16, 1, 1, 0, 16, 1, 0 + .byte 16, 16, 1, 1, 0, 17, 17, 0, 0, 16, 1, 0, 0, 0, 0, 0 + .byte 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1 + .byte 16, 1, 16, 1, 0, 0, 0, 0, 16, 1, 16, 1, 0, 0, 0, 0 + .byte 16, 17, 17, 17, 17, 16, 1, 17, 17, 16, 1, 17, 17, 16, 1, 17 + .byte 16, 17, 1, 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 0, 0, 0 + .byte 0, 16, 17, 0, 0, 1, 0, 1, 0, 17, 1, 0, 16, 0, 16, 0 + .byte 16, 0, 16, 0, 0, 17, 1, 0, 1, 0, 1, 0, 16, 17, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 16, 17, 17, 1, 16, 17, 17, 1, 16, 17, 17, 1, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 0, 17, 17, 0, 16, 16, 1, 1, 0, 16, 1, 0 + .byte 16, 16, 1, 1, 0, 17, 17, 0, 0, 16, 1, 0, 16, 17, 17, 1 + .byte 0, 16, 1, 0, 0, 17, 17, 0, 16, 16, 1, 1, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 16, 16, 1, 1, 0, 17, 17, 0, 0, 16, 1, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 16, 1, 0, 0, 0, 17, 0, 17, 17, 17, 1 + .byte 0, 0, 17, 0, 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 17, 0, 0, 16, 1, 0, 0, 17, 17, 17, 1 + .byte 16, 1, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0 + .byte 17, 0, 0, 0, 17, 17, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 1, 16, 0, 16, 0, 0, 1, 17, 17, 17, 17 + .byte 16, 0, 0, 1, 0, 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 16, 0, 0, 0, 17, 1, 0, 16, 17, 17, 0 + .byte 17, 17, 17, 1, 17, 17, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 17, 17, 17, 1, 17, 17, 17, 1, 16, 17, 17, 0 + .byte 0, 17, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 0, 17, 17, 0, 0, 17, 17, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 0 + .byte 16, 1, 17, 0, 0, 1, 16, 0, 0, 1, 16, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 16, 1, 17, 0, 16, 1, 17, 0, 17, 17, 17, 1, 16, 1, 17, 0 + .byte 17, 17, 17, 1, 16, 1, 17, 0, 16, 1, 17, 0, 0, 0, 0, 0 + .byte 0, 16, 0, 0, 16, 17, 17, 0, 17, 16, 0, 0, 16, 17, 17, 0 + .byte 0, 16, 16, 1, 17, 17, 17, 0, 0, 16, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 16, 1, 16, 1, 1, 1, 17, 0, 17, 16, 1, 0 + .byte 0, 17, 16, 1, 16, 1, 1, 1, 17, 0, 17, 0, 0, 0, 0, 0 + .byte 0, 17, 1, 0, 16, 0, 17, 0, 0, 17, 1, 0, 16, 17, 1, 0 + .byte 17, 0, 17, 1, 17, 0, 17, 0, 16, 17, 1, 1, 0, 0, 0, 0 + .byte 0, 17, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 0, 17, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0 + .byte 16, 1, 0, 0, 0, 17, 0, 0, 0, 16, 1, 0, 0, 0, 0, 0 + .byte 16, 1, 0, 0, 0, 17, 0, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 17, 0, 0, 16, 1, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 16, 1, 16, 1, 0, 17, 17, 0, 17, 17, 17, 17 + .byte 0, 17, 17, 0, 16, 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 17, 17, 17, 0 + .byte 0, 17, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 17, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 1, 0, 0, 16, 1, 0, 0, 17, 0, 0, 16, 1, 0 + .byte 0, 17, 0, 0, 16, 1, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 17, 0, 17, 1, 17, 16, 17, 1, 17, 17, 16, 1 + .byte 17, 1, 16, 1, 17, 1, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 0, 17, 1, 0, 16, 17, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 16, 17, 17, 1, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 17, 0, 16, 1, 0, 0, 16, 1, 0, 16, 17, 0 + .byte 16, 17, 0, 0, 17, 0, 16, 1, 17, 17, 17, 1, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 17, 0, 16, 1, 0, 0, 16, 1, 0, 17, 17, 0 + .byte 0, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 16, 17, 0, 0, 17, 17, 0, 16, 1, 17, 0, 17, 0, 17, 0 + .byte 17, 17, 17, 1, 0, 0, 17, 0, 0, 16, 17, 1, 0, 0, 0, 0 + .byte 17, 17, 17, 1, 17, 0, 0, 0, 17, 17, 17, 0, 0, 0, 16, 1 + .byte 0, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 0, 0, 17, 17, 17, 0 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 17, 17, 17, 1, 17, 0, 16, 1, 0, 0, 17, 0, 0, 16, 1, 0 + .byte 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 1 + .byte 0, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 17, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0 + .byte 0, 0, 17, 0, 0, 16, 1, 0, 0, 17, 0, 0, 16, 1, 0, 0 + .byte 0, 17, 0, 0, 0, 16, 1, 0, 0, 0, 17, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 1, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 16, 17, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 16, 1, 0, 0, 0, 17, 0, 0, 0, 16, 1, 0, 0, 0, 17, 0 + .byte 0, 16, 1, 0, 0, 17, 0, 0, 16, 1, 0, 0, 0, 0, 0, 0 + .byte 16, 17, 1, 0, 17, 0, 17, 0, 0, 0, 17, 0, 0, 16, 1, 0 + .byte 0, 17, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 1, 0, 0, 1, 1, 16, 17, 1, 1, 1, 16, 1 + .byte 1, 16, 17, 1, 1, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1, 17, 17, 17, 1 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1, 0, 0, 0, 0 + .byte 17, 17, 17, 0, 16, 1, 16, 1, 16, 1, 16, 1, 16, 17, 17, 0 + .byte 16, 1, 16, 1, 16, 1, 16, 1, 17, 17, 17, 0, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 0, 0, 17, 0, 0, 0 + .byte 17, 0, 0, 0, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 17, 17, 17, 0, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1 + .byte 16, 1, 16, 1, 16, 1, 16, 1, 17, 17, 17, 0, 0, 0, 0, 0 + .byte 17, 17, 17, 1, 16, 1, 0, 1, 16, 1, 1, 0, 16, 17, 1, 0 + .byte 16, 1, 1, 0, 16, 1, 0, 1, 17, 17, 17, 1, 0, 0, 0, 0 + .byte 17, 17, 17, 1, 16, 1, 0, 1, 16, 1, 1, 0, 16, 17, 1, 0 + .byte 16, 1, 1, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 0, 0 + .byte 17, 0, 17, 1, 17, 0, 16, 1, 16, 17, 17, 1, 0, 0, 0, 0 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1, 17, 17, 17, 1 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1, 0, 0, 0, 0 + .byte 0, 17, 17, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 16, 17, 1, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0 + .byte 17, 0, 17, 0, 17, 0, 17, 0, 16, 17, 1, 0, 0, 0, 0, 0 + .byte 17, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 0, 16, 17, 1, 0 + .byte 16, 1, 17, 0, 16, 1, 16, 1, 17, 1, 16, 1, 0, 0, 0, 0 + .byte 17, 17, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0 + .byte 16, 1, 0, 1, 16, 1, 16, 1, 17, 17, 17, 1, 0, 0, 0, 0 + .byte 1, 0, 0, 1, 17, 0, 16, 1, 17, 1, 17, 1, 17, 17, 17, 1 + .byte 17, 16, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1, 0, 0, 0, 0 + .byte 17, 0, 16, 1, 17, 1, 16, 1, 17, 17, 16, 1, 17, 16, 17, 1 + .byte 17, 0, 17, 1, 17, 0, 16, 1, 17, 0, 16, 1, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 17, 17, 17, 0, 16, 1, 16, 1, 16, 1, 16, 1, 16, 17, 17, 0 + .byte 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1 + .byte 17, 16, 16, 1, 17, 16, 17, 1, 16, 17, 17, 0, 0, 0, 16, 1 + .byte 17, 17, 17, 0, 16, 1, 16, 1, 16, 1, 16, 1, 16, 17, 17, 0 + .byte 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 16, 1, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 0, 0, 16, 17, 17, 0 + .byte 0, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 16, 17, 17, 1, 16, 16, 1, 1, 16, 16, 1, 1, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1 + .byte 16, 1, 17, 0, 0, 17, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 17, 16, 16, 1, 17, 17, 17, 1 + .byte 17, 1, 17, 1, 17, 0, 16, 1, 1, 0, 0, 1, 0, 0, 0, 0 + .byte 17, 0, 16, 1, 16, 1, 17, 0, 0, 17, 1, 0, 0, 17, 1, 0 + .byte 0, 17, 1, 0, 16, 1, 17, 0, 17, 0, 16, 1, 0, 0, 0, 0 + .byte 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 0, 17, 17, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 + .byte 17, 17, 17, 1, 17, 0, 16, 1, 1, 0, 17, 0, 0, 16, 1, 0 + .byte 0, 17, 0, 1, 16, 1, 16, 1, 17, 17, 17, 1, 0, 0, 0, 0 + .byte 16, 17, 1, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0 + .byte 16, 1, 0, 0, 16, 1, 0, 0, 16, 17, 1, 0, 0, 0, 0, 0 + .byte 17, 0, 0, 0, 16, 1, 0, 0, 0, 17, 0, 0, 0, 16, 1, 0 + .byte 0, 0, 17, 0, 0, 0, 16, 1, 0, 0, 0, 1, 0, 0, 0, 0 + .byte 16, 17, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 16, 17, 1, 0, 0, 0, 0, 0 + .byte 0, 16, 0, 0, 0, 17, 1, 0, 16, 1, 17, 0, 17, 0, 16, 1 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17 + .byte 0, 17, 0, 0, 0, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 1, 0, 0, 0, 17, 0 + .byte 16, 17, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 + .byte 17, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 17, 17, 0 + .byte 16, 1, 16, 1, 16, 1, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 + .byte 17, 0, 0, 0, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 16, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 16, 17, 17, 0 + .byte 17, 0, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 + .byte 17, 17, 17, 1, 17, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 16, 17, 0, 0, 17, 16, 1, 0, 17, 0, 0, 16, 17, 1, 0 + .byte 0, 17, 0, 0, 0, 17, 0, 0, 16, 17, 1, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 16, 1, 17, 0, 17, 0 + .byte 17, 0, 17, 0, 16, 17, 17, 0, 0, 0, 17, 0, 16, 17, 1, 0 + .byte 17, 1, 0, 0, 16, 1, 0, 0, 16, 1, 17, 0, 16, 17, 16, 1 + .byte 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 16, 1, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 0, 0, 0, 0, 0, 17, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 16, 17, 0 + .byte 0, 0, 17, 0, 0, 0, 17, 0, 17, 0, 17, 0, 16, 17, 1, 0 + .byte 17, 1, 0, 0, 16, 1, 0, 0, 16, 1, 16, 1, 16, 1, 17, 0 + .byte 16, 17, 1, 0, 16, 1, 17, 0, 17, 1, 16, 1, 0, 0, 0, 0 + .byte 0, 17, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 17, 0, 17, 17, 17, 1 + .byte 17, 16, 16, 1, 17, 16, 16, 1, 17, 16, 16, 1, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 16, 17, 0, 16, 1, 16, 1 + .byte 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 16, 17, 0, 16, 1, 16, 1 + .byte 16, 1, 16, 1, 16, 17, 17, 0, 16, 1, 0, 0, 17, 17, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 17, 0 + .byte 17, 0, 17, 0, 16, 17, 17, 0, 0, 0, 17, 0, 0, 16, 17, 1 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 16, 17, 1, 16, 17, 16, 1 + .byte 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 0, 0 + .byte 16, 17, 17, 0, 0, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 16, 0, 0, 0, 17, 0, 0, 17, 17, 17, 0, 0, 17, 0, 0 + .byte 0, 17, 0, 0, 0, 17, 16, 0, 0, 16, 1, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 17, 0, 17, 0, 17, 0 + .byte 17, 0, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 16, 1, 17, 0, 16, 1 + .byte 16, 1, 17, 0, 0, 17, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 16, 1, 17, 16, 16, 1 + .byte 17, 16, 16, 1, 17, 17, 17, 1, 16, 1, 17, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 16, 1, 16, 1, 17, 0 + .byte 0, 17, 1, 0, 16, 1, 17, 0, 17, 0, 16, 1, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 17, 0, 17, 0, 17, 0 + .byte 17, 0, 17, 0, 16, 17, 17, 0, 0, 0, 17, 0, 17, 17, 1, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 0, 1, 16, 1, 0 + .byte 0, 17, 0, 0, 16, 1, 16, 0, 17, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 0, 17, 1, 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 0, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 0, 17, 1, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 0, 0, 0 + .byte 17, 1, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 16, 1, 0 + .byte 0, 17, 0, 0, 0, 17, 0, 0, 17, 1, 0, 0, 0, 0, 0, 0 + .byte 16, 17, 16, 1, 17, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 16, 0, 0, 0, 17, 1, 0, 16, 1, 17, 0 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 17, 17, 17, 1, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 0, 0, 17, 0, 0, 0 + .byte 17, 0, 16, 1, 16, 17, 17, 0, 0, 16, 1, 0, 16, 17, 0, 0 + .byte 17, 0, 17, 0, 0, 0, 0, 0, 17, 0, 17, 0, 17, 0, 17, 0 + .byte 17, 0, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 + .byte 0, 0, 17, 1, 0, 16, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 + .byte 17, 17, 17, 1, 17, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 1, 0, 0, 1, 0, 17, 1, 0, 0, 0, 17, 0 + .byte 16, 17, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 + .byte 17, 0, 17, 0, 0, 0, 0, 0, 16, 17, 1, 0, 0, 0, 17, 0 + .byte 16, 17, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 + .byte 17, 1, 0, 0, 0, 16, 0, 0, 16, 17, 1, 0, 0, 0, 17, 0 + .byte 16, 17, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 + .byte 0, 17, 0, 0, 0, 17, 0, 0, 16, 17, 1, 0, 0, 0, 17, 0 + .byte 16, 17, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 0, 0 + .byte 17, 0, 0, 0, 16, 17, 17, 0, 0, 16, 1, 0, 16, 17, 0, 0 + .byte 16, 17, 17, 0, 1, 0, 0, 1, 16, 17, 17, 0, 17, 0, 16, 1 + .byte 17, 17, 17, 1, 17, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 17, 0, 16, 1, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 + .byte 17, 17, 17, 1, 17, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 17, 1, 0, 0, 0, 16, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 + .byte 17, 17, 17, 1, 17, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 16, 1, 16, 1, 0, 0, 0, 0, 0, 17, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 1, 0, 0, 1, 0, 17, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 + .byte 17, 1, 0, 0, 0, 16, 0, 0, 0, 17, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 + .byte 17, 0, 16, 1, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 + .byte 17, 17, 17, 1, 17, 0, 16, 1, 17, 0, 16, 1, 0, 0, 0, 0 + .byte 0, 17, 1, 0, 0, 17, 1, 0, 16, 17, 17, 0, 17, 0, 16, 1 + .byte 17, 17, 17, 1, 17, 0, 16, 1, 17, 0, 16, 1, 0, 0, 0, 0 + .byte 0, 0, 17, 1, 0, 16, 0, 0, 17, 17, 17, 1, 16, 1, 0, 0 + .byte 16, 17, 1, 0, 16, 1, 0, 0, 17, 17, 17, 1, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 0, 16, 0, 1 + .byte 16, 17, 17, 1, 17, 16, 0, 0, 16, 17, 17, 1, 0, 0, 0, 0 + .byte 16, 17, 17, 1, 17, 0, 1, 0, 17, 0, 1, 0, 17, 17, 17, 1 + .byte 17, 0, 1, 0, 17, 0, 1, 0, 17, 0, 17, 1, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 1, 0, 0, 1, 16, 17, 17, 0, 17, 0, 16, 1 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 17, 0, 16, 1, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 17, 1, 0, 0, 0, 16, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 1, 0, 0, 1, 17, 0, 17, 0, 17, 0, 17, 0 + .byte 17, 0, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 + .byte 17, 1, 0, 0, 0, 16, 0, 0, 17, 0, 17, 0, 17, 0, 17, 0 + .byte 17, 0, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 + .byte 17, 0, 17, 0, 0, 0, 0, 0, 17, 0, 17, 0, 17, 0, 17, 0 + .byte 17, 0, 17, 0, 16, 17, 17, 0, 0, 0, 17, 0, 17, 17, 1, 0 + .byte 17, 0, 16, 1, 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 17, 0, 16, 1, 0, 0, 0, 0, 17, 0, 16, 1, 17, 0, 16, 1 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 16, 17, 17, 0, 17, 16, 16, 1, 17, 16, 0, 0 + .byte 17, 16, 16, 1, 16, 17, 17, 0, 0, 16, 1, 0, 0, 0, 0, 0 + .byte 0, 17, 1, 0, 16, 1, 17, 0, 16, 1, 0, 0, 17, 17, 0, 0 + .byte 16, 1, 0, 0, 17, 17, 0, 1, 17, 16, 17, 0, 0, 0, 0, 0 + .byte 16, 1, 16, 1, 0, 17, 17, 0, 0, 16, 1, 0, 16, 17, 17, 1 + .byte 0, 16, 1, 0, 16, 17, 17, 1, 0, 16, 1, 0, 0, 0, 0, 0 + .byte 17, 17, 1, 0, 17, 0, 17, 0, 17, 17, 1, 0, 17, 0, 16, 0 + .byte 17, 0, 17, 0, 17, 16, 17, 1, 17, 0, 17, 0, 0, 0, 16, 1 + .byte 0, 0, 17, 1, 0, 16, 1, 17, 0, 16, 1, 0, 0, 17, 17, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 17, 16, 1, 0, 16, 17, 0, 0 + .byte 0, 0, 17, 1, 0, 16, 0, 0, 16, 17, 1, 0, 0, 0, 17, 0 + .byte 16, 17, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 + .byte 0, 0, 17, 1, 0, 16, 0, 0, 0, 17, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 0, 17, 1, 0, 16, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 0, 17, 1, 0, 16, 0, 0, 17, 0, 17, 0, 17, 0, 17, 0 + .byte 17, 0, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 + .byte 16, 1, 16, 1, 1, 16, 1, 0, 17, 16, 17, 0, 16, 1, 16, 1 + .byte 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 0, 0, 0, 0 + .byte 16, 1, 16, 1, 1, 16, 1, 0, 17, 1, 16, 1, 17, 17, 16, 1 + .byte 17, 16, 17, 1, 17, 0, 17, 1, 17, 0, 16, 1, 0, 0, 0, 0 + .byte 0, 17, 1, 0, 0, 0, 17, 0, 0, 17, 17, 0, 0, 17, 16, 0 + .byte 0, 0, 0, 0, 16, 17, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 17, 1, 0, 16, 1, 17, 0, 16, 1, 17, 0, 0, 17, 1, 0 + .byte 0, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 17, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 16, 1, 0, 0 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 0 + .byte 17, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 0 + .byte 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 17, 0, 0, 0, 17, 0, 1, 0, 17, 16, 0, 0, 17, 17, 17, 1 + .byte 16, 0, 16, 1, 1, 0, 17, 0, 0, 16, 17, 1, 0, 0, 0, 0 + .byte 17, 0, 0, 0, 17, 0, 1, 0, 17, 16, 0, 0, 17, 1, 17, 0 + .byte 16, 16, 17, 0, 1, 17, 17, 1, 0, 0, 17, 0, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 0, 0, 0, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 17, 17, 0, 0, 17, 17, 0, 0, 16, 1, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 17, 16, 1, 16, 1, 17, 0, 17, 16, 1, 0 + .byte 16, 1, 17, 0, 0, 17, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 17, 16, 1, 0, 16, 1, 17, 0, 0, 17, 16, 1 + .byte 16, 1, 17, 0, 17, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0 + .byte 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0 + .byte 16, 16, 16, 16, 1, 1, 1, 1, 16, 16, 16, 16, 1, 1, 1, 1 + .byte 16, 16, 16, 16, 1, 1, 1, 1, 16, 16, 16, 16, 1, 1, 1, 1 + .byte 17, 16, 1, 17, 16, 17, 16, 17, 17, 16, 1, 17, 17, 1, 17, 1 + .byte 17, 16, 1, 17, 16, 17, 16, 17, 17, 16, 1, 17, 17, 1, 17, 1 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 17, 17, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 17, 17, 1, 0, 0, 16, 1, 0 + .byte 17, 17, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 17, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 17, 17, 17, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 1, 0, 0, 16, 1, 0 + .byte 17, 17, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 17, 16, 1, 0, 17, 16, 1, 17, 17, 16, 1, 0, 0, 16, 1 + .byte 17, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 1, 0, 0, 16, 1 + .byte 17, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 0, 17, 16, 1, 0, 17, 16, 1, 17, 17, 16, 1, 0, 0, 16, 1 + .byte 17, 17, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 17, 17, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 17, 17, 1, 0, 0, 16, 1, 0 + .byte 17, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 17, 17, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 17, 17, 17, 17, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 17, 17, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 17, 17, 17, 17, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 17, 17, 0, 16, 1, 0 + .byte 0, 16, 17, 17, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 0, 17, 16, 17, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 17, 0, 17, 0, 0 + .byte 0, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 0, 17, 0, 0 + .byte 0, 17, 16, 17, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 0, 17, 16, 1, 0, 17, 16, 1, 17, 17, 16, 17, 0, 0, 0, 0 + .byte 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, 0, 0, 0, 0 + .byte 17, 17, 16, 17, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 17, 0, 17, 0, 0 + .byte 0, 17, 16, 17, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, 0, 0, 0, 0 + .byte 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 17, 16, 1, 0, 17, 16, 1, 17, 17, 16, 17, 0, 0, 0, 0 + .byte 17, 17, 16, 17, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 17, 17, 17, 17, 0, 0, 0, 0 + .byte 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, 0, 0, 0, 0 + .byte 17, 17, 17, 17, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 17, 17, 17, 17, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 0, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 17, 17, 0, 16, 1, 0 + .byte 0, 16, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 16, 1, 0 + .byte 0, 16, 17, 17, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 17, 17, 17, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 17, 17, 17, 17, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 17, 17, 17, 17, 0, 16, 1, 0 + .byte 17, 17, 17, 17, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 17, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 16, 17, 17, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17 + .byte 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17 + .byte 17, 17, 0, 0, 17, 17, 0, 0, 17, 17, 0, 0, 17, 17, 0, 0 + .byte 17, 17, 0, 0, 17, 17, 0, 0, 17, 17, 0, 0, 17, 17, 0, 0 + .byte 0, 0, 17, 17, 0, 0, 17, 17, 0, 0, 17, 17, 0, 0, 17, 17 + .byte 0, 0, 17, 17, 0, 0, 17, 17, 0, 0, 17, 17, 0, 0, 17, 17 + .byte 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 16, 0, 17, 0, 17, 0 + .byte 17, 0, 1, 0, 17, 16, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 + .byte 16, 17, 1, 0, 17, 0, 17, 0, 17, 16, 1, 0, 17, 0, 17, 0 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 17, 16, 17, 0, 16, 0, 0, 0 + .byte 17, 17, 17, 1, 16, 1, 0, 1, 16, 1, 0, 0, 16, 1, 0, 0 + .byte 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 1, 16, 17, 17, 1, 17, 1, 17, 0 + .byte 16, 1, 17, 0, 16, 1, 17, 0, 16, 0, 1, 0, 0, 0, 0, 0 + .byte 17, 17, 17, 1, 16, 1, 0, 1, 0, 17, 0, 0, 0, 16, 1, 0 + .byte 0, 17, 0, 0, 16, 1, 0, 1, 17, 17, 17, 1, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 1, 17, 16, 0, 0 + .byte 17, 0, 1, 0, 17, 0, 1, 0, 16, 17, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 17, 0, 17, 0, 17, 0 + .byte 17, 0, 17, 0, 17, 0, 17, 0, 17, 17, 1, 0, 1, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 1, 17, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0 + .byte 0, 17, 1, 0, 0, 16, 0, 0, 16, 17, 17, 0, 17, 16, 16, 1 + .byte 17, 16, 16, 1, 16, 17, 17, 0, 0, 16, 0, 0, 0, 17, 1, 0 + .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1, 17, 17, 17, 1 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1 + .byte 16, 1, 17, 0, 0, 1, 1, 0, 17, 1, 17, 1, 0, 0, 0, 0 + .byte 0, 17, 17, 0, 0, 1, 0, 1, 0, 16, 1, 0, 16, 17, 17, 0 + .byte 17, 0, 17, 0, 17, 0, 17, 0, 16, 17, 1, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 1, 16, 1, 1, 16, 1, 16 + .byte 1, 16, 1, 16, 16, 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 16, 1, 16, 17, 17, 0, 1, 16, 17, 1 + .byte 17, 17, 0, 1, 16, 17, 17, 0, 17, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 0, 0 + .byte 17, 17, 1, 0, 17, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1 + .byte 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 17, 17, 17, 1, 0, 0, 0, 0, 17, 17, 17, 1 + .byte 0, 0, 0, 0, 17, 17, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 16, 17, 17, 1, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 0, 0, 0, 16, 17, 17, 1, 0, 0, 0, 0 + .byte 0, 17, 0, 0, 0, 16, 1, 0, 0, 0, 17, 0, 0, 16, 1, 0 + .byte 0, 17, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 0, 17, 0, 0, 16, 1, 0, 0, 0, 17, 0, 0 + .byte 0, 16, 1, 0, 0, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0 + .byte 0, 0, 17, 1, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 16, 17, 0, 0 + .byte 0, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 0, 16, 17, 17, 1 + .byte 0, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 16, 17, 16, 1, 17, 16, 17, 0, 0, 0, 0, 0 + .byte 16, 17, 16, 1, 17, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 17, 1, 0, 16, 1, 17, 0, 0, 17, 1, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 1, 0 + .byte 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 17, 17, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0 + .byte 17, 1, 17, 0, 16, 1, 17, 0, 0, 17, 17, 0, 0, 0, 0, 0 + .byte 17, 16, 1, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1, 17, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 17, 17, 0, 0, 0, 17, 0, 0, 17, 0, 0, 0, 17, 17, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 0, 0, 17, 17, 0 + .byte 0, 17, 17, 0, 0, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + + .global default_font_bin_end +default_font_bin_end: + diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/default_font.s b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/default_font.s deleted file mode 100644 index 743677700e..0000000000 --- a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/default_font.s +++ /dev/null @@ -1,523 +0,0 @@ -/* Generated by BIN2S - please don't edit directly */ - .section .rodata - .balign 4 - .global default_font_bin_size -default_font_bin_size: .int 8192 - .global default_font_bin -default_font_bin: - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 16, 17, 17, 1, 1, 0, 0, 16, 1, 1, 16, 16, 1, 0, 0, 16 - .byte 1, 17, 17, 16, 1, 16, 1, 16, 1, 0, 0, 16, 16, 17, 17, 1 - .byte 16, 17, 17, 1, 17, 17, 17, 17, 17, 16, 1, 17, 17, 17, 17, 17 - .byte 17, 0, 0, 17, 17, 1, 16, 17, 17, 17, 17, 17, 16, 17, 17, 1 - .byte 16, 1, 17, 0, 17, 17, 17, 1, 17, 17, 17, 1, 17, 17, 17, 1 - .byte 16, 17, 17, 0, 0, 17, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0 - .byte 0, 16, 0, 0, 0, 17, 1, 0, 16, 17, 17, 0, 17, 17, 17, 1 - .byte 16, 17, 17, 0, 0, 17, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0 - .byte 0, 17, 17, 0, 0, 17, 17, 0, 0, 16, 1, 0, 17, 17, 17, 17 - .byte 17, 1, 16, 17, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 16, 0, 0, 0, 17, 1, 0, 16, 17, 17, 0, 17, 17, 17, 1 - .byte 17, 1, 17, 1, 0, 16, 0, 0, 0, 17, 1, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 1, 0, 0, 17, 17, 0 - .byte 0, 17, 17, 0, 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 17, 17, 17, 17, 17, 17, 17, 17, 17, 1, 16, 17, 17, 0, 0, 17 - .byte 17, 0, 0, 17, 17, 1, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17 - .byte 0, 0, 0, 0, 0, 17, 17, 0, 16, 1, 16, 1, 16, 0, 0, 1 - .byte 16, 0, 0, 1, 16, 1, 16, 1, 0, 17, 17, 0, 0, 0, 0, 0 - .byte 17, 17, 17, 17, 17, 0, 0, 17, 1, 16, 1, 16, 1, 17, 17, 16 - .byte 1, 17, 17, 16, 1, 16, 1, 16, 17, 0, 0, 17, 17, 17, 17, 17 - .byte 0, 0, 17, 17, 0, 0, 16, 17, 0, 0, 17, 17, 16, 17, 17, 16 - .byte 17, 0, 17, 0, 17, 0, 17, 0, 17, 0, 17, 0, 16, 17, 1, 0 - .byte 0, 17, 17, 0, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1 - .byte 0, 17, 17, 0, 0, 16, 1, 0, 16, 17, 17, 1, 0, 16, 1, 0 - .byte 0, 0, 1, 0, 0, 0, 17, 0, 0, 0, 1, 1, 0, 0, 1, 1 - .byte 0, 0, 1, 0, 16, 17, 1, 0, 17, 17, 0, 0, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 0, 16, 16, 0, 0, 16, 1, 1, 0, 16, 16, 1 - .byte 16, 17, 0, 1, 17, 1, 0, 1, 0, 0, 17, 1, 0, 16, 17, 0 - .byte 0, 16, 0, 0, 16, 16, 16, 0, 0, 17, 1, 0, 17, 1, 17, 1 - .byte 0, 17, 1, 0, 16, 16, 16, 0, 0, 16, 0, 0, 0, 0, 0, 0 - .byte 1, 0, 0, 0, 17, 1, 0, 0, 17, 17, 1, 0, 17, 17, 17, 1 - .byte 17, 17, 1, 0, 17, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 1, 0, 0, 17, 1, 0, 17, 17, 1, 17, 17, 17, 1 - .byte 0, 17, 17, 1, 0, 0, 17, 1, 0, 0, 0, 1, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 0, 17, 17, 0, 16, 16, 1, 1, 0, 16, 1, 0 - .byte 16, 16, 1, 1, 0, 17, 17, 0, 0, 16, 1, 0, 0, 0, 0, 0 - .byte 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1 - .byte 16, 1, 16, 1, 0, 0, 0, 0, 16, 1, 16, 1, 0, 0, 0, 0 - .byte 16, 17, 17, 17, 17, 16, 1, 17, 17, 16, 1, 17, 17, 16, 1, 17 - .byte 16, 17, 1, 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 0, 0, 0 - .byte 0, 16, 17, 0, 0, 1, 0, 1, 0, 17, 1, 0, 16, 0, 16, 0 - .byte 16, 0, 16, 0, 0, 17, 1, 0, 1, 0, 1, 0, 16, 17, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 16, 17, 17, 1, 16, 17, 17, 1, 16, 17, 17, 1, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 0, 17, 17, 0, 16, 16, 1, 1, 0, 16, 1, 0 - .byte 16, 16, 1, 1, 0, 17, 17, 0, 0, 16, 1, 0, 16, 17, 17, 1 - .byte 0, 16, 1, 0, 0, 17, 17, 0, 16, 16, 1, 1, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 16, 16, 1, 1, 0, 17, 17, 0, 0, 16, 1, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 16, 1, 0, 0, 0, 17, 0, 17, 17, 17, 1 - .byte 0, 0, 17, 0, 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 17, 0, 0, 16, 1, 0, 0, 17, 17, 17, 1 - .byte 16, 1, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0 - .byte 17, 0, 0, 0, 17, 17, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 1, 16, 0, 16, 0, 0, 1, 17, 17, 17, 17 - .byte 16, 0, 0, 1, 0, 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 16, 0, 0, 0, 17, 1, 0, 16, 17, 17, 0 - .byte 17, 17, 17, 1, 17, 17, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 17, 17, 17, 1, 17, 17, 17, 1, 16, 17, 17, 0 - .byte 0, 17, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 0, 17, 17, 0, 0, 17, 17, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 0 - .byte 16, 1, 17, 0, 0, 1, 16, 0, 0, 1, 16, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 16, 1, 17, 0, 16, 1, 17, 0, 17, 17, 17, 1, 16, 1, 17, 0 - .byte 17, 17, 17, 1, 16, 1, 17, 0, 16, 1, 17, 0, 0, 0, 0, 0 - .byte 0, 16, 0, 0, 16, 17, 17, 0, 17, 16, 0, 0, 16, 17, 17, 0 - .byte 0, 16, 16, 1, 17, 17, 17, 0, 0, 16, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 16, 1, 16, 1, 1, 1, 17, 0, 17, 16, 1, 0 - .byte 0, 17, 16, 1, 16, 1, 1, 1, 17, 0, 17, 0, 0, 0, 0, 0 - .byte 0, 17, 1, 0, 16, 0, 17, 0, 0, 17, 1, 0, 16, 17, 1, 0 - .byte 17, 0, 17, 1, 17, 0, 17, 0, 16, 17, 1, 1, 0, 0, 0, 0 - .byte 0, 17, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 0, 17, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0 - .byte 16, 1, 0, 0, 0, 17, 0, 0, 0, 16, 1, 0, 0, 0, 0, 0 - .byte 16, 1, 0, 0, 0, 17, 0, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 17, 0, 0, 16, 1, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 16, 1, 16, 1, 0, 17, 17, 0, 17, 17, 17, 17 - .byte 0, 17, 17, 0, 16, 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 17, 17, 17, 0 - .byte 0, 17, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 17, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 1, 0, 0, 16, 1, 0, 0, 17, 0, 0, 16, 1, 0 - .byte 0, 17, 0, 0, 16, 1, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 17, 0, 17, 1, 17, 16, 17, 1, 17, 17, 16, 1 - .byte 17, 1, 16, 1, 17, 1, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 0, 17, 1, 0, 16, 17, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 16, 17, 17, 1, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 17, 0, 16, 1, 0, 0, 16, 1, 0, 16, 17, 0 - .byte 16, 17, 0, 0, 17, 0, 16, 1, 17, 17, 17, 1, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 17, 0, 16, 1, 0, 0, 16, 1, 0, 17, 17, 0 - .byte 0, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 16, 17, 0, 0, 17, 17, 0, 16, 1, 17, 0, 17, 0, 17, 0 - .byte 17, 17, 17, 1, 0, 0, 17, 0, 0, 16, 17, 1, 0, 0, 0, 0 - .byte 17, 17, 17, 1, 17, 0, 0, 0, 17, 17, 17, 0, 0, 0, 16, 1 - .byte 0, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 0, 0, 17, 17, 17, 0 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 17, 17, 17, 1, 17, 0, 16, 1, 0, 0, 17, 0, 0, 16, 1, 0 - .byte 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 1 - .byte 0, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 17, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0 - .byte 0, 0, 17, 0, 0, 16, 1, 0, 0, 17, 0, 0, 16, 1, 0, 0 - .byte 0, 17, 0, 0, 0, 16, 1, 0, 0, 0, 17, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 1, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 16, 17, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 16, 1, 0, 0, 0, 17, 0, 0, 0, 16, 1, 0, 0, 0, 17, 0 - .byte 0, 16, 1, 0, 0, 17, 0, 0, 16, 1, 0, 0, 0, 0, 0, 0 - .byte 16, 17, 1, 0, 17, 0, 17, 0, 0, 0, 17, 0, 0, 16, 1, 0 - .byte 0, 17, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 1, 0, 0, 1, 1, 16, 17, 1, 1, 1, 16, 1 - .byte 1, 16, 17, 1, 1, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1, 17, 17, 17, 1 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1, 0, 0, 0, 0 - .byte 17, 17, 17, 0, 16, 1, 16, 1, 16, 1, 16, 1, 16, 17, 17, 0 - .byte 16, 1, 16, 1, 16, 1, 16, 1, 17, 17, 17, 0, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 0, 0, 17, 0, 0, 0 - .byte 17, 0, 0, 0, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 17, 17, 17, 0, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1 - .byte 16, 1, 16, 1, 16, 1, 16, 1, 17, 17, 17, 0, 0, 0, 0, 0 - .byte 17, 17, 17, 1, 16, 1, 0, 1, 16, 1, 1, 0, 16, 17, 1, 0 - .byte 16, 1, 1, 0, 16, 1, 0, 1, 17, 17, 17, 1, 0, 0, 0, 0 - .byte 17, 17, 17, 1, 16, 1, 0, 1, 16, 1, 1, 0, 16, 17, 1, 0 - .byte 16, 1, 1, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 0, 0 - .byte 17, 0, 17, 1, 17, 0, 16, 1, 16, 17, 17, 1, 0, 0, 0, 0 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1, 17, 17, 17, 1 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1, 0, 0, 0, 0 - .byte 0, 17, 17, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 16, 17, 1, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0 - .byte 17, 0, 17, 0, 17, 0, 17, 0, 16, 17, 1, 0, 0, 0, 0, 0 - .byte 17, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 0, 16, 17, 1, 0 - .byte 16, 1, 17, 0, 16, 1, 16, 1, 17, 1, 16, 1, 0, 0, 0, 0 - .byte 17, 17, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0 - .byte 16, 1, 0, 1, 16, 1, 16, 1, 17, 17, 17, 1, 0, 0, 0, 0 - .byte 1, 0, 0, 1, 17, 0, 16, 1, 17, 1, 17, 1, 17, 17, 17, 1 - .byte 17, 16, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1, 0, 0, 0, 0 - .byte 17, 0, 16, 1, 17, 1, 16, 1, 17, 17, 16, 1, 17, 16, 17, 1 - .byte 17, 0, 17, 1, 17, 0, 16, 1, 17, 0, 16, 1, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 17, 17, 17, 0, 16, 1, 16, 1, 16, 1, 16, 1, 16, 17, 17, 0 - .byte 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1 - .byte 17, 16, 16, 1, 17, 16, 17, 1, 16, 17, 17, 0, 0, 0, 16, 1 - .byte 17, 17, 17, 0, 16, 1, 16, 1, 16, 1, 16, 1, 16, 17, 17, 0 - .byte 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 16, 1, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 0, 0, 16, 17, 17, 0 - .byte 0, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 16, 17, 17, 1, 16, 16, 1, 1, 16, 16, 1, 1, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1 - .byte 16, 1, 17, 0, 0, 17, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 17, 16, 16, 1, 17, 17, 17, 1 - .byte 17, 1, 17, 1, 17, 0, 16, 1, 1, 0, 0, 1, 0, 0, 0, 0 - .byte 17, 0, 16, 1, 16, 1, 17, 0, 0, 17, 1, 0, 0, 17, 1, 0 - .byte 0, 17, 1, 0, 16, 1, 17, 0, 17, 0, 16, 1, 0, 0, 0, 0 - .byte 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 0, 17, 17, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 - .byte 17, 17, 17, 1, 17, 0, 16, 1, 1, 0, 17, 0, 0, 16, 1, 0 - .byte 0, 17, 0, 1, 16, 1, 16, 1, 17, 17, 17, 1, 0, 0, 0, 0 - .byte 16, 17, 1, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0 - .byte 16, 1, 0, 0, 16, 1, 0, 0, 16, 17, 1, 0, 0, 0, 0, 0 - .byte 17, 0, 0, 0, 16, 1, 0, 0, 0, 17, 0, 0, 0, 16, 1, 0 - .byte 0, 0, 17, 0, 0, 0, 16, 1, 0, 0, 0, 1, 0, 0, 0, 0 - .byte 16, 17, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 16, 17, 1, 0, 0, 0, 0, 0 - .byte 0, 16, 0, 0, 0, 17, 1, 0, 16, 1, 17, 0, 17, 0, 16, 1 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17 - .byte 0, 17, 0, 0, 0, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 1, 0, 0, 0, 17, 0 - .byte 16, 17, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 - .byte 17, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 17, 17, 0 - .byte 16, 1, 16, 1, 16, 1, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 - .byte 17, 0, 0, 0, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 16, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 16, 17, 17, 0 - .byte 17, 0, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 - .byte 17, 17, 17, 1, 17, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 16, 17, 0, 0, 17, 16, 1, 0, 17, 0, 0, 16, 17, 1, 0 - .byte 0, 17, 0, 0, 0, 17, 0, 0, 16, 17, 1, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 16, 1, 17, 0, 17, 0 - .byte 17, 0, 17, 0, 16, 17, 17, 0, 0, 0, 17, 0, 16, 17, 1, 0 - .byte 17, 1, 0, 0, 16, 1, 0, 0, 16, 1, 17, 0, 16, 17, 16, 1 - .byte 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 16, 1, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 0, 0, 0, 0, 0, 17, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 16, 17, 0 - .byte 0, 0, 17, 0, 0, 0, 17, 0, 17, 0, 17, 0, 16, 17, 1, 0 - .byte 17, 1, 0, 0, 16, 1, 0, 0, 16, 1, 16, 1, 16, 1, 17, 0 - .byte 16, 17, 1, 0, 16, 1, 17, 0, 17, 1, 16, 1, 0, 0, 0, 0 - .byte 0, 17, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 17, 0, 17, 17, 17, 1 - .byte 17, 16, 16, 1, 17, 16, 16, 1, 17, 16, 16, 1, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 16, 17, 0, 16, 1, 16, 1 - .byte 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 16, 17, 0, 16, 1, 16, 1 - .byte 16, 1, 16, 1, 16, 17, 17, 0, 16, 1, 0, 0, 17, 17, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 17, 0 - .byte 17, 0, 17, 0, 16, 17, 17, 0, 0, 0, 17, 0, 0, 16, 17, 1 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 16, 17, 1, 16, 17, 16, 1 - .byte 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 0, 0 - .byte 16, 17, 17, 0, 0, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 16, 0, 0, 0, 17, 0, 0, 17, 17, 17, 0, 0, 17, 0, 0 - .byte 0, 17, 0, 0, 0, 17, 16, 0, 0, 16, 1, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 17, 0, 17, 0, 17, 0 - .byte 17, 0, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 16, 1, 17, 0, 16, 1 - .byte 16, 1, 17, 0, 0, 17, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 16, 1, 17, 16, 16, 1 - .byte 17, 16, 16, 1, 17, 17, 17, 1, 16, 1, 17, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 16, 1, 16, 1, 17, 0 - .byte 0, 17, 1, 0, 16, 1, 17, 0, 17, 0, 16, 1, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 17, 0, 17, 0, 17, 0 - .byte 17, 0, 17, 0, 16, 17, 17, 0, 0, 0, 17, 0, 17, 17, 1, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 0, 1, 16, 1, 0 - .byte 0, 17, 0, 0, 16, 1, 16, 0, 17, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 0, 17, 1, 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 0, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 0, 17, 1, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 0, 0, 0 - .byte 17, 1, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 16, 1, 0 - .byte 0, 17, 0, 0, 0, 17, 0, 0, 17, 1, 0, 0, 0, 0, 0, 0 - .byte 16, 17, 16, 1, 17, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 16, 0, 0, 0, 17, 1, 0, 16, 1, 17, 0 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 17, 17, 17, 1, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 0, 0, 17, 0, 0, 0 - .byte 17, 0, 16, 1, 16, 17, 17, 0, 0, 16, 1, 0, 16, 17, 0, 0 - .byte 17, 0, 17, 0, 0, 0, 0, 0, 17, 0, 17, 0, 17, 0, 17, 0 - .byte 17, 0, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 - .byte 0, 0, 17, 1, 0, 16, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 - .byte 17, 17, 17, 1, 17, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 1, 0, 0, 1, 0, 17, 1, 0, 0, 0, 17, 0 - .byte 16, 17, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 - .byte 17, 0, 17, 0, 0, 0, 0, 0, 16, 17, 1, 0, 0, 0, 17, 0 - .byte 16, 17, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 - .byte 17, 1, 0, 0, 0, 16, 0, 0, 16, 17, 1, 0, 0, 0, 17, 0 - .byte 16, 17, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 - .byte 0, 17, 0, 0, 0, 17, 0, 0, 16, 17, 1, 0, 0, 0, 17, 0 - .byte 16, 17, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 0, 0 - .byte 17, 0, 0, 0, 16, 17, 17, 0, 0, 16, 1, 0, 16, 17, 0, 0 - .byte 16, 17, 17, 0, 1, 0, 0, 1, 16, 17, 17, 0, 17, 0, 16, 1 - .byte 17, 17, 17, 1, 17, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 17, 0, 16, 1, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 - .byte 17, 17, 17, 1, 17, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 17, 1, 0, 0, 0, 16, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 - .byte 17, 17, 17, 1, 17, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 16, 1, 16, 1, 0, 0, 0, 0, 0, 17, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 1, 0, 0, 1, 0, 17, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 - .byte 17, 1, 0, 0, 0, 16, 0, 0, 0, 17, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 - .byte 17, 0, 16, 1, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 - .byte 17, 17, 17, 1, 17, 0, 16, 1, 17, 0, 16, 1, 0, 0, 0, 0 - .byte 0, 17, 1, 0, 0, 17, 1, 0, 16, 17, 17, 0, 17, 0, 16, 1 - .byte 17, 17, 17, 1, 17, 0, 16, 1, 17, 0, 16, 1, 0, 0, 0, 0 - .byte 0, 0, 17, 1, 0, 16, 0, 0, 17, 17, 17, 1, 16, 1, 0, 0 - .byte 16, 17, 1, 0, 16, 1, 0, 0, 17, 17, 17, 1, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 0, 16, 0, 1 - .byte 16, 17, 17, 1, 17, 16, 0, 0, 16, 17, 17, 1, 0, 0, 0, 0 - .byte 16, 17, 17, 1, 17, 0, 1, 0, 17, 0, 1, 0, 17, 17, 17, 1 - .byte 17, 0, 1, 0, 17, 0, 1, 0, 17, 0, 17, 1, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 1, 0, 0, 1, 16, 17, 17, 0, 17, 0, 16, 1 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 17, 0, 16, 1, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 17, 1, 0, 0, 0, 16, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 1, 0, 0, 1, 17, 0, 17, 0, 17, 0, 17, 0 - .byte 17, 0, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 - .byte 17, 1, 0, 0, 0, 16, 0, 0, 17, 0, 17, 0, 17, 0, 17, 0 - .byte 17, 0, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 - .byte 17, 0, 17, 0, 0, 0, 0, 0, 17, 0, 17, 0, 17, 0, 17, 0 - .byte 17, 0, 17, 0, 16, 17, 17, 0, 0, 0, 17, 0, 17, 17, 1, 0 - .byte 17, 0, 16, 1, 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 17, 0, 16, 1, 0, 0, 0, 0, 17, 0, 16, 1, 17, 0, 16, 1 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 16, 17, 17, 0, 17, 16, 16, 1, 17, 16, 0, 0 - .byte 17, 16, 16, 1, 16, 17, 17, 0, 0, 16, 1, 0, 0, 0, 0, 0 - .byte 0, 17, 1, 0, 16, 1, 17, 0, 16, 1, 0, 0, 17, 17, 0, 0 - .byte 16, 1, 0, 0, 17, 17, 0, 1, 17, 16, 17, 0, 0, 0, 0, 0 - .byte 16, 1, 16, 1, 0, 17, 17, 0, 0, 16, 1, 0, 16, 17, 17, 1 - .byte 0, 16, 1, 0, 16, 17, 17, 1, 0, 16, 1, 0, 0, 0, 0, 0 - .byte 17, 17, 1, 0, 17, 0, 17, 0, 17, 17, 1, 0, 17, 0, 16, 0 - .byte 17, 0, 17, 0, 17, 16, 17, 1, 17, 0, 17, 0, 0, 0, 16, 1 - .byte 0, 0, 17, 1, 0, 16, 1, 17, 0, 16, 1, 0, 0, 17, 17, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 17, 16, 1, 0, 16, 17, 0, 0 - .byte 0, 0, 17, 1, 0, 16, 0, 0, 16, 17, 1, 0, 0, 0, 17, 0 - .byte 16, 17, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 - .byte 0, 0, 17, 1, 0, 16, 0, 0, 0, 17, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 0, 17, 1, 0, 16, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 0, 17, 1, 0, 16, 0, 0, 17, 0, 17, 0, 17, 0, 17, 0 - .byte 17, 0, 17, 0, 17, 0, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 - .byte 16, 1, 16, 1, 1, 16, 1, 0, 17, 16, 17, 0, 16, 1, 16, 1 - .byte 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 0, 0, 0, 0 - .byte 16, 1, 16, 1, 1, 16, 1, 0, 17, 1, 16, 1, 17, 17, 16, 1 - .byte 17, 16, 17, 1, 17, 0, 17, 1, 17, 0, 16, 1, 0, 0, 0, 0 - .byte 0, 17, 1, 0, 0, 0, 17, 0, 0, 17, 17, 0, 0, 17, 16, 0 - .byte 0, 0, 0, 0, 16, 17, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 17, 1, 0, 16, 1, 17, 0, 16, 1, 17, 0, 0, 17, 1, 0 - .byte 0, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 17, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 16, 1, 0, 0 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 0 - .byte 17, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 0 - .byte 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 17, 0, 0, 0, 17, 0, 1, 0, 17, 16, 0, 0, 17, 17, 17, 1 - .byte 16, 0, 16, 1, 1, 0, 17, 0, 0, 16, 17, 1, 0, 0, 0, 0 - .byte 17, 0, 0, 0, 17, 0, 1, 0, 17, 16, 0, 0, 17, 1, 17, 0 - .byte 16, 16, 17, 0, 1, 17, 17, 1, 0, 0, 17, 0, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 0, 0, 0, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 17, 17, 0, 0, 17, 17, 0, 0, 16, 1, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 17, 16, 1, 16, 1, 17, 0, 17, 16, 1, 0 - .byte 16, 1, 17, 0, 0, 17, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 17, 16, 1, 0, 16, 1, 17, 0, 0, 17, 16, 1 - .byte 16, 1, 17, 0, 17, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0 - .byte 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0 - .byte 16, 16, 16, 16, 1, 1, 1, 1, 16, 16, 16, 16, 1, 1, 1, 1 - .byte 16, 16, 16, 16, 1, 1, 1, 1, 16, 16, 16, 16, 1, 1, 1, 1 - .byte 17, 16, 1, 17, 16, 17, 16, 17, 17, 16, 1, 17, 17, 1, 17, 1 - .byte 17, 16, 1, 17, 16, 17, 16, 17, 17, 16, 1, 17, 17, 1, 17, 1 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 17, 17, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 17, 17, 1, 0, 0, 16, 1, 0 - .byte 17, 17, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 17, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 17, 17, 17, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 1, 0, 0, 16, 1, 0 - .byte 17, 17, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 17, 16, 1, 0, 17, 16, 1, 17, 17, 16, 1, 0, 0, 16, 1 - .byte 17, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 1, 0, 0, 16, 1 - .byte 17, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 0, 17, 16, 1, 0, 17, 16, 1, 17, 17, 16, 1, 0, 0, 16, 1 - .byte 17, 17, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 17, 17, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 17, 17, 1, 0, 0, 16, 1, 0 - .byte 17, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 17, 17, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 17, 17, 17, 17, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 17, 17, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 17, 17, 17, 17, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 17, 17, 0, 16, 1, 0 - .byte 0, 16, 17, 17, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 0, 17, 16, 17, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 17, 0, 17, 0, 0 - .byte 0, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 0, 17, 0, 0 - .byte 0, 17, 16, 17, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 0, 17, 16, 1, 0, 17, 16, 1, 17, 17, 16, 17, 0, 0, 0, 0 - .byte 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, 0, 0, 0, 0 - .byte 17, 17, 16, 17, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 17, 0, 17, 0, 0 - .byte 0, 17, 16, 17, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, 0, 0, 0, 0 - .byte 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 17, 16, 1, 0, 17, 16, 1, 17, 17, 16, 17, 0, 0, 0, 0 - .byte 17, 17, 16, 17, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 17, 17, 17, 17, 0, 0, 0, 0 - .byte 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, 0, 0, 0, 0 - .byte 17, 17, 17, 17, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 17, 17, 17, 17, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 0, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 17, 17, 0, 16, 1, 0 - .byte 0, 16, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 16, 1, 0 - .byte 0, 16, 17, 17, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 17, 17, 17, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 17, 17, 17, 17, 0, 17, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 17, 17, 17, 17, 0, 16, 1, 0 - .byte 17, 17, 17, 17, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 17, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 16, 17, 17, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17 - .byte 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17 - .byte 17, 17, 0, 0, 17, 17, 0, 0, 17, 17, 0, 0, 17, 17, 0, 0 - .byte 17, 17, 0, 0, 17, 17, 0, 0, 17, 17, 0, 0, 17, 17, 0, 0 - .byte 0, 0, 17, 17, 0, 0, 17, 17, 0, 0, 17, 17, 0, 0, 17, 17 - .byte 0, 0, 17, 17, 0, 0, 17, 17, 0, 0, 17, 17, 0, 0, 17, 17 - .byte 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 16, 0, 17, 0, 17, 0 - .byte 17, 0, 1, 0, 17, 16, 17, 0, 16, 17, 16, 1, 0, 0, 0, 0 - .byte 16, 17, 1, 0, 17, 0, 17, 0, 17, 16, 1, 0, 17, 0, 17, 0 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 17, 16, 17, 0, 16, 0, 0, 0 - .byte 17, 17, 17, 1, 16, 1, 0, 1, 16, 1, 0, 0, 16, 1, 0, 0 - .byte 16, 1, 0, 0, 16, 1, 0, 0, 17, 17, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 1, 16, 17, 17, 1, 17, 1, 17, 0 - .byte 16, 1, 17, 0, 16, 1, 17, 0, 16, 0, 1, 0, 0, 0, 0, 0 - .byte 17, 17, 17, 1, 16, 1, 0, 1, 0, 17, 0, 0, 0, 16, 1, 0 - .byte 0, 17, 0, 0, 16, 1, 0, 1, 17, 17, 17, 1, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 1, 17, 16, 0, 0 - .byte 17, 0, 1, 0, 17, 0, 1, 0, 16, 17, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 17, 0, 17, 0, 17, 0 - .byte 17, 0, 17, 0, 17, 0, 17, 0, 17, 17, 1, 0, 1, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 1, 17, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0 - .byte 0, 17, 1, 0, 0, 16, 0, 0, 16, 17, 17, 0, 17, 16, 16, 1 - .byte 17, 16, 16, 1, 16, 17, 17, 0, 0, 16, 0, 0, 0, 17, 1, 0 - .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1, 17, 17, 17, 1 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1 - .byte 16, 1, 17, 0, 0, 1, 1, 0, 17, 1, 17, 1, 0, 0, 0, 0 - .byte 0, 17, 17, 0, 0, 1, 0, 1, 0, 16, 1, 0, 16, 17, 17, 0 - .byte 17, 0, 17, 0, 17, 0, 17, 0, 16, 17, 1, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 1, 16, 1, 1, 16, 1, 16 - .byte 1, 16, 1, 16, 16, 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 16, 1, 16, 17, 17, 0, 1, 16, 17, 1 - .byte 17, 17, 0, 1, 16, 17, 17, 0, 17, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 0, 0 - .byte 17, 17, 1, 0, 17, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 16, 17, 17, 0, 17, 0, 16, 1, 17, 0, 16, 1 - .byte 17, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 17, 17, 17, 1, 0, 0, 0, 0, 17, 17, 17, 1 - .byte 0, 0, 0, 0, 17, 17, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 16, 17, 17, 1, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 0, 0, 0, 16, 17, 17, 1, 0, 0, 0, 0 - .byte 0, 17, 0, 0, 0, 16, 1, 0, 0, 0, 17, 0, 0, 16, 1, 0 - .byte 0, 17, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 0, 17, 0, 0, 16, 1, 0, 0, 0, 17, 0, 0 - .byte 0, 16, 1, 0, 0, 0, 0, 0, 16, 17, 17, 0, 0, 0, 0, 0 - .byte 0, 0, 17, 1, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 17, 16, 1, 0, 17, 16, 1, 0, 16, 17, 0, 0 - .byte 0, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 0, 16, 17, 17, 1 - .byte 0, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 16, 17, 16, 1, 17, 16, 17, 0, 0, 0, 0, 0 - .byte 16, 17, 16, 1, 17, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 17, 1, 0, 16, 1, 17, 0, 0, 17, 1, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 1, 0 - .byte 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 17, 17, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0 - .byte 17, 1, 17, 0, 16, 1, 17, 0, 0, 17, 17, 0, 0, 0, 0, 0 - .byte 17, 16, 1, 0, 16, 1, 17, 0, 16, 1, 17, 0, 16, 1, 17, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 17, 17, 0, 0, 0, 17, 0, 0, 17, 0, 0, 0, 17, 17, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 0, 0, 17, 17, 0 - .byte 0, 17, 17, 0, 0, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - - .global default_font_bin_end -default_font_bin_end: - diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/exceptionHandler.s b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/exceptionHandler.s deleted file mode 100644 index 7397dcfcac..0000000000 --- a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/exceptionHandler.s +++ /dev/null @@ -1,123 +0,0 @@ -/*--------------------------------------------------------------------------------- - $Id$ - - Copyright (C) 2005 - Dave Murphy (WinterMute) - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any - damages arising from the use of this software. - - Permission is granted to anyone to use this software for any - purpose, including commercial applications, and to alter it and - redistribute it freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you - must not claim that you wrote the original software. If you use - this software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and - must not be misrepresented as being the original software. - 3. This notice may not be removed or altered from any source - distribution. - - $Log$ - Revision 1.3 2006/08/03 09:35:36 wntrmute - fix storing pc - - Revision 1.2 2006/07/06 02:14:33 wntrmute - read r15 in enterException - add return to bios - - Revision 1.1 2006/06/18 21:16:26 wntrmute - added arm9 exception handler API - - ----------------------------------------------------------------------------------*/ - .text - - .arm - -@--------------------------------------------------------------------------------- - .global getCPSR -@--------------------------------------------------------------------------------- -getCPSR: -@--------------------------------------------------------------------------------- - mrs r0,cpsr - bx r14 - -@--------------------------------------------------------------------------------- - .global enterException -@--------------------------------------------------------------------------------- -enterException: -@--------------------------------------------------------------------------------- - // store context - ldr r12,=exceptionRegisters - stmia r12,{r0-r11} - str r13,[r12,#oldStack - exceptionRegisters] - // assign a stack - ldr r13,=exceptionStack - ldr r13,[r13] - - // renable MPU - mrc p15,0,r0,c1,c0,0 - orr r0,r0,#1 - mcr p15,0,r0,c1,c0,0 - - // bios exception stack - ldr r0, =0x027FFD90 - - // grab r15 from bios exception stack - ldr r2,[r0,#8] - str r2,[r12,#reg15 - exceptionRegisters] - - // grab stored r12 and SPSR from bios exception stack - ldmia r0,{r2,r12} - - - // grab banked registers from correct processor mode - mrs r3,cpsr - bic r4,r3,#0x1F - and r2,r2,#0x1F - orr r4,r4,r2 - msr cpsr,r4 - ldr r0,=reg12 - stmia r0,{r12-r14} - msr cpsr,r3 - - // Get C function & call it - ldr r12,=exceptionC - ldr r12,[r12,#0] - blxne r12 - - // restore registers - ldr r12,=exceptionRegisters - ldmia r12,{r0-r11} - ldr r13,[r12,#oldStack - exceptionRegisters] - - // return through bios - mov pc,lr - -@--------------------------------------------------------------------------------- - .global exceptionC -@--------------------------------------------------------------------------------- -exceptionC: -@--------------------------------------------------------------------------------- - .word 0x00000000 -@--------------------------------------------------------------------------------- - .global exceptionStack -@--------------------------------------------------------------------------------- -exceptionStack: -@--------------------------------------------------------------------------------- - .word 0x00000000 -@--------------------------------------------------------------------------------- - .global exceptionRegisters -@--------------------------------------------------------------------------------- -exceptionRegisters: -@--------------------------------------------------------------------------------- - .space 12 * 4 -reg12: .word 0 -reg13: .word 0 -reg14: .word 0 -reg15: .word 0 -oldStack: .word 0 diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/icache.S b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/icache.S new file mode 100644 index 0000000000..811486082d --- /dev/null +++ b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/icache.S @@ -0,0 +1,57 @@ +/*--------------------------------------------------------------------------------- + $Id$ + + Copyright (C) 2005 + Michael Noland (joat) + Jason Rogers (dovoto) + Dave Murphy (WinterMute) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + 3. This notice may not be removed or altered from any source + distribution. + +---------------------------------------------------------------------------------*/ +#define ICACHE_SIZE 0x2000 +#define DCACHE_SIZE 0x1000 +#define CACHE_LINE_SIZE 32 +//--------------------------------------------------------------------------------- + .arm +//--------------------------------------------------------------------------------- + .global IC_InvalidateAll +//--------------------------------------------------------------------------------- +IC_InvalidateAll: +/*--------------------------------------------------------------------------------- + Clean and invalidate entire data cache +---------------------------------------------------------------------------------*/ + mov r0, #0 + mcr p15, 0, r0, c7, c5, 0 + bx lr + +//--------------------------------------------------------------------------------- + .global IC_InvalidateRange +//--------------------------------------------------------------------------------- +IC_InvalidateRange: +/*--------------------------------------------------------------------------------- + Invalidate a range +---------------------------------------------------------------------------------*/ + add r1, r1, r0 + bic r0, r0, #CACHE_LINE_SIZE - 1 +.invalidate: + mcr p15, 0, r0, c7, c5, 1 + add r0, r0, #CACHE_LINE_SIZE + cmp r0, r1 + blt .invalidate + bx lr diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/icache.s b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/icache.s deleted file mode 100644 index 811486082d..0000000000 --- a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/icache.s +++ /dev/null @@ -1,57 +0,0 @@ -/*--------------------------------------------------------------------------------- - $Id$ - - Copyright (C) 2005 - Michael Noland (joat) - Jason Rogers (dovoto) - Dave Murphy (WinterMute) - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any - damages arising from the use of this software. - - Permission is granted to anyone to use this software for any - purpose, including commercial applications, and to alter it and - redistribute it freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you - must not claim that you wrote the original software. If you use - this software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and - must not be misrepresented as being the original software. - 3. This notice may not be removed or altered from any source - distribution. - ----------------------------------------------------------------------------------*/ -#define ICACHE_SIZE 0x2000 -#define DCACHE_SIZE 0x1000 -#define CACHE_LINE_SIZE 32 -//--------------------------------------------------------------------------------- - .arm -//--------------------------------------------------------------------------------- - .global IC_InvalidateAll -//--------------------------------------------------------------------------------- -IC_InvalidateAll: -/*--------------------------------------------------------------------------------- - Clean and invalidate entire data cache ----------------------------------------------------------------------------------*/ - mov r0, #0 - mcr p15, 0, r0, c7, c5, 0 - bx lr - -//--------------------------------------------------------------------------------- - .global IC_InvalidateRange -//--------------------------------------------------------------------------------- -IC_InvalidateRange: -/*--------------------------------------------------------------------------------- - Invalidate a range ----------------------------------------------------------------------------------*/ - add r1, r1, r0 - bic r0, r0, #CACHE_LINE_SIZE - 1 -.invalidate: - mcr p15, 0, r0, c7, c5, 1 - add r0, r0, #CACHE_LINE_SIZE - cmp r0, r1 - blt .invalidate - bx lr diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/common/biosCalls.S b/c/src/lib/libbsp/arm/nds/libnds/source/common/biosCalls.S new file mode 100644 index 0000000000..5f23c83713 --- /dev/null +++ b/c/src/lib/libbsp/arm/nds/libnds/source/common/biosCalls.S @@ -0,0 +1,490 @@ +/*--------------------------------------------------------------------------------- + $Id$ + + Copyright (C) 2005 + Michael Noland (joat) + Jason Rogers (dovoto) + Dave Murphy (WinterMute) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + 3. This notice may not be removed or altered from any source + distribution. + + $Log$ + Revision 1.1 2008/04/16 18:37:32 joel + 2008-04-16 Matthieu Bucchianeri + + * ChangeLog, Makefile.am, README, bsp_specs, configure.ac, + mk_libnds.sh, patch.libnds, preinstall.am, block/block.c, + clock/clock.c, console/console.c, coproc/coproc.S, coproc/coproc.c, + coproc/coproc.ld, dswifi/dswifi_license.txt, dswifi/makefile, + dswifi/arm7/makefile, dswifi/arm7/source/wifi_arm7.c, + dswifi/arm7/source/wifi_arm7.h, dswifi/arm9/makefile, + dswifi/arm9/source/sgIP.c, dswifi/arm9/source/sgIP.h, + dswifi/arm9/source/sgIP_ARP.c, dswifi/arm9/source/sgIP_ARP.h, + dswifi/arm9/source/sgIP_Config.h, dswifi/arm9/source/sgIP_DHCP.c, + dswifi/arm9/source/sgIP_DHCP.h, dswifi/arm9/source/sgIP_DNS.c, + dswifi/arm9/source/sgIP_DNS.h, dswifi/arm9/source/sgIP_Hub.c, + dswifi/arm9/source/sgIP_Hub.h, dswifi/arm9/source/sgIP_ICMP.c, + dswifi/arm9/source/sgIP_ICMP.h, dswifi/arm9/source/sgIP_IP.c, + dswifi/arm9/source/sgIP_IP.h, dswifi/arm9/source/sgIP_TCP.c, + dswifi/arm9/source/sgIP_TCP.h, dswifi/arm9/source/sgIP_UDP.c, + dswifi/arm9/source/sgIP_UDP.h, dswifi/arm9/source/sgIP_memblock.c, + dswifi/arm9/source/sgIP_memblock.h, + dswifi/arm9/source/sgIP_sockets.c, dswifi/arm9/source/sgIP_sockets.h, + dswifi/arm9/source/wifi_arm9.c, dswifi/arm9/source/wifi_arm9.h, + dswifi/common/source/dsregs.h, dswifi/common/source/spinlock.h, + dswifi/common/source/spinlock.s, dswifi/common/source/wifi_shared.h, + dswifi/include/dswifi7.h, dswifi/include/dswifi9.h, + dswifi/include/dswifi_version.h, dswifi/include/netdb.h, + dswifi/include/sgIP_errno.h, dswifi/include/netinet/in.h, fb/fb.c, + fb/fb.h, include/bsp.h, include/my_ipc.h, include/tm27.h, + include/types.h, include/sys/iosupport.h, irq/irq.c, irq/irq.h, + libfat/gba/include/fat.h, libfat/include/fat.h, + libfat/nds/include/fat.h, libfat/source/bit_ops.h, + libfat/source/cache.c, libfat/source/cache.h, libfat/source/common.h, + libfat/source/directory.c, libfat/source/directory.h, + libfat/source/fatdir.c, libfat/source/fatdir.h, + libfat/source/fatfile.c, libfat/source/fatfile.h, + libfat/source/file_allocation_table.c, + libfat/source/file_allocation_table.h, libfat/source/filetime.c, + libfat/source/filetime.h, libfat/source/libfat.c, + libfat/source/mem_allocate.h, libfat/source/partition.c, + libfat/source/partition.h, libfat/source/disc_io/disc.c, + libfat/source/disc_io/disc.h, libfat/source/disc_io/disc_io.h, + libfat/source/disc_io/io_cf_common.c, + libfat/source/disc_io/io_cf_common.h, + libfat/source/disc_io/io_dldi.h, libfat/source/disc_io/io_dldi.s, + libfat/source/disc_io/io_efa2.c, libfat/source/disc_io/io_efa2.h, + libfat/source/disc_io/io_fcsr.c, libfat/source/disc_io/io_fcsr.h, + libfat/source/disc_io/io_m3_common.c, + libfat/source/disc_io/io_m3_common.h, + libfat/source/disc_io/io_m3cf.c, libfat/source/disc_io/io_m3cf.h, + libfat/source/disc_io/io_m3sd.c, libfat/source/disc_io/io_m3sd.h, + libfat/source/disc_io/io_mpcf.c, libfat/source/disc_io/io_mpcf.h, + libfat/source/disc_io/io_njsd.c, libfat/source/disc_io/io_njsd.h, + libfat/source/disc_io/io_nmmc.c, libfat/source/disc_io/io_nmmc.h, + libfat/source/disc_io/io_sc_common.c, + libfat/source/disc_io/io_sc_common.h, + libfat/source/disc_io/io_sccf.c, libfat/source/disc_io/io_sccf.h, + libfat/source/disc_io/io_scsd.c, libfat/source/disc_io/io_scsd.h, + libfat/source/disc_io/io_scsd_s.s, + libfat/source/disc_io/io_sd_common.c, + libfat/source/disc_io/io_sd_common.h, libnds/Makefile.arm7, + libnds/Makefile.arm9, libnds/libnds_license.txt, + libnds/basicARM7/source/defaultARM7.c, + libnds/include/default_font_bin.h, libnds/include/gbfs.h, + libnds/include/nds.h, libnds/include/nds/bios.h, + libnds/include/nds/card.h, libnds/include/nds/dma.h, + libnds/include/nds/interrupts.h, libnds/include/nds/ipc.h, + libnds/include/nds/jtypes.h, libnds/include/nds/memory.h, + libnds/include/nds/registers_alt.h, libnds/include/nds/reload.h, + libnds/include/nds/system.h, libnds/include/nds/timers.h, + libnds/include/nds/arm7/audio.h, libnds/include/nds/arm7/clock.h, + libnds/include/nds/arm7/serial.h, libnds/include/nds/arm7/touch.h, + libnds/include/nds/arm9/background.h, + libnds/include/nds/arm9/boxtest.h, libnds/include/nds/arm9/cache.h, + libnds/include/nds/arm9/console.h, + libnds/include/nds/arm9/exceptions.h, + libnds/include/nds/arm9/image.h, libnds/include/nds/arm9/input.h, + libnds/include/nds/arm9/math.h, libnds/include/nds/arm9/ndsmotion.h, + libnds/include/nds/arm9/pcx.h, libnds/include/nds/arm9/postest.h, + libnds/include/nds/arm9/rumble.h, libnds/include/nds/arm9/sound.h, + libnds/include/nds/arm9/sprite.h, libnds/include/nds/arm9/trig_lut.h, + libnds/include/nds/arm9/video.h, libnds/include/nds/arm9/videoGL.h, + libnds/source/arm7/audio.c, libnds/source/arm7/clock.c, + libnds/source/arm7/microphone.c, libnds/source/arm7/spi.c, + libnds/source/arm7/touch.c, libnds/source/arm7/userSettings.c, + libnds/source/arm9/COS.bin, libnds/source/arm9/COS.s, + libnds/source/arm9/SIN.bin, libnds/source/arm9/SIN.s, + libnds/source/arm9/TAN.bin, libnds/source/arm9/TAN.s, + libnds/source/arm9/boxtest.c, libnds/source/arm9/console.c, + libnds/source/arm9/dcache.s, libnds/source/arm9/default_font.bin, + libnds/source/arm9/default_font.s, + libnds/source/arm9/exceptionHandler.S, + libnds/source/arm9/exceptionHandler.s, + libnds/source/arm9/exceptions.c, libnds/source/arm9/gurumeditation.c, + libnds/source/arm9/icache.s, libnds/source/arm9/image.c, + libnds/source/arm9/initSystem.c, libnds/source/arm9/keys.c, + libnds/source/arm9/ndsmotion.c, libnds/source/arm9/pcx.c, + libnds/source/arm9/rumble.c, libnds/source/arm9/sound.c, + libnds/source/arm9/system.c, libnds/source/arm9/touch.c, + libnds/source/arm9/video.c, libnds/source/arm9/videoGL.c, + libnds/source/common/biosCalls.s, libnds/source/common/card.c, + libnds/source/common/gbfs.c, + libnds/source/common/interruptDispatcher.s, + libnds/source/common/interrupts.c, rtc/rtc.c, sound/sound.c, + sound/sound.h, start/start.S, startup/linkcmds, startup/start.c, + timer/timer.c, tools/Makefile.am, tools/bin2s, tools/bin2s.c, + tools/configure.ac, tools/runtest, + tools/ndstool/include/arm7_sha1_homebrew.h, + tools/ndstool/include/arm7_sha1_nintendo.h, + tools/ndstool/include/banner.h, tools/ndstool/include/bigint.h, + tools/ndstool/include/crc.h, tools/ndstool/include/default_icon.h, + tools/ndstool/include/encryption.h, tools/ndstool/include/header.h, + tools/ndstool/include/hook.h, tools/ndstool/include/little.h, + tools/ndstool/include/loadme.h, tools/ndstool/include/logo.h, + tools/ndstool/include/ndscreate.h, + tools/ndstool/include/ndsextract.h, tools/ndstool/include/ndstool.h, + tools/ndstool/include/ndstree.h, tools/ndstool/include/overlay.h, + tools/ndstool/include/passme.h, tools/ndstool/include/passme_sram.h, + tools/ndstool/include/passme_vhd1.h, + tools/ndstool/include/passme_vhd2.h, tools/ndstool/include/raster.h, + tools/ndstool/include/sha1.h, tools/ndstool/include/types.h, + tools/ndstool/source/arm7_sha1_homebrew.c, + tools/ndstool/source/arm7_sha1_nintendo.c, + tools/ndstool/source/banner.cpp, tools/ndstool/source/bigint.cpp, + tools/ndstool/source/compile_date.c, tools/ndstool/source/crc.cpp, + tools/ndstool/source/default_icon.c, + tools/ndstool/source/encryption.cpp, tools/ndstool/source/header.cpp, + tools/ndstool/source/hook.cpp, tools/ndstool/source/loadme.c, + tools/ndstool/source/logo.cpp, tools/ndstool/source/ndscodes.cpp, + tools/ndstool/source/ndscreate.cpp, + tools/ndstool/source/ndsextract.cpp, + tools/ndstool/source/ndstool.cpp, tools/ndstool/source/ndstree.cpp, + tools/ndstool/source/passme.cpp, tools/ndstool/source/passme_sram.c, + tools/ndstool/source/raster.cpp, tools/ndstool/source/sha1.cpp, + touchscreen/README.reco, touchscreen/parser.c, touchscreen/reco.c, + touchscreen/reco.h, touchscreen/touchscreen.c, + touchscreen/touchscreen.h, wifi/compat.c, wifi/compat.h, wifi/wifi.c: + New files. + + Revision 1.5 2006/03/15 12:37:14 wntrmute + reformatted for legibility + grouped arm7 and arm9 specific code + + Revision 1.4 2006/03/03 07:20:14 joatski + Fixed a couple of little bugs (e.g. swiSetHaltCR using r0 instead of r2 on ARM7) + Commented out ARM7 swis in ARM9 mode, and vis versa + + Revision 1.3 2006/01/17 00:13:36 dovoto + Fixed swi 08 so lable and global matched "swiChangeSoundBias" + + Revision 1.2 2005/09/03 13:47:13 wntrmute + added logging to header + reformatted for legibility + + +---------------------------------------------------------------------------------*/ + + .text + .align 4 + + .thumb + +@--------------------------------------------------------------------------------- + .global swiSoftReset + .thumb_func +@--------------------------------------------------------------------------------- +swiSoftReset: +@--------------------------------------------------------------------------------- + swi 0x00 + bx lr + + +@--------------------------------------------------------------------------------- + .global swiDelay + .thumb_func +@--------------------------------------------------------------------------------- +swiDelay: +@--------------------------------------------------------------------------------- + swi 0x03 + bx lr + +@--------------------------------------------------------------------------------- + .global swiIntrWait + .thumb_func +@--------------------------------------------------------------------------------- +swiIntrWait: +@--------------------------------------------------------------------------------- + swi 0x04 + bx lr + + +@--------------------------------------------------------------------------------- + .global swiWaitForVBlank + .thumb_func +@--------------------------------------------------------------------------------- +swiWaitForVBlank: +@--------------------------------------------------------------------------------- + swi 0x05 + bx lr + +@--------------------------------------------------------------------------------- + .global swiSleep + .thumb_func +@--------------------------------------------------------------------------------- +swiSleep: +@--------------------------------------------------------------------------------- + swi 0x07 + bx lr + +@--------------------------------------------------------------------------------- + .global swiChangeSoundBias + .thumb_func +@--------------------------------------------------------------------------------- +swiChangeSoundBias: +@--------------------------------------------------------------------------------- + swi 0x08 + bx lr + +@--------------------------------------------------------------------------------- + .global swiDivide + .thumb_func +@--------------------------------------------------------------------------------- +swiDivide: +@--------------------------------------------------------------------------------- + swi 0x09 + bx lr + +@--------------------------------------------------------------------------------- + .global swiRemainder + .thumb_func +@--------------------------------------------------------------------------------- +swiRemainder: +@--------------------------------------------------------------------------------- + swi 0x09 + mov r0, r1 + bx lr + +@--------------------------------------------------------------------------------- + .global swiDivMod + .thumb_func +@--------------------------------------------------------------------------------- +swiDivMod: +@--------------------------------------------------------------------------------- + push {r2, r3} + swi 0x09 + pop {r2, r3} + str r0, [r2] + str r1, [r3] + bx lr + +@--------------------------------------------------------------------------------- + .global swiCopy + .thumb_func +@--------------------------------------------------------------------------------- +swiCopy: +@--------------------------------------------------------------------------------- + swi 0x0B + bx lr + +@--------------------------------------------------------------------------------- + .global swiFastCopy + .thumb_func +@--------------------------------------------------------------------------------- +swiFastCopy: +@--------------------------------------------------------------------------------- + swi 0x0C + bx lr + +@--------------------------------------------------------------------------------- + .global swiSqrt + .thumb_func +@--------------------------------------------------------------------------------- +swiSqrt: +@--------------------------------------------------------------------------------- + swi 0x0D + bx lr + +@--------------------------------------------------------------------------------- + .global swiCRC16 + .thumb_func +@--------------------------------------------------------------------------------- +swiCRC16: +@--------------------------------------------------------------------------------- + swi 0x0E + bx lr + +@--------------------------------------------------------------------------------- + .global swiIsDebugger + .thumb_func +@--------------------------------------------------------------------------------- +swiIsDebugger: +@--------------------------------------------------------------------------------- + swi 0x0F + bx lr + +@--------------------------------------------------------------------------------- + .global swiUnpackBits + .thumb_func +@--------------------------------------------------------------------------------- +swiUnpackBits: +@--------------------------------------------------------------------------------- + swi 0x10 + bx lr + +@--------------------------------------------------------------------------------- + .global swiDecompressLZSSWram + .thumb_func +@--------------------------------------------------------------------------------- +swiDecompressLZSSWram: +@--------------------------------------------------------------------------------- + swi 0x11 + bx lr + +@--------------------------------------------------------------------------------- + .global swiDecompressLZSSVram + .thumb_func +@--------------------------------------------------------------------------------- +swiDecompressLZSSVram: +@--------------------------------------------------------------------------------- + swi 0x12 + bx lr + +@--------------------------------------------------------------------------------- + .global swiDecompressHuffman + .thumb_func +@--------------------------------------------------------------------------------- +swiDecompressHuffman: +@--------------------------------------------------------------------------------- + swi 0x13 + bx lr + +@--------------------------------------------------------------------------------- + .global swiDecompressRLEWram + .thumb_func +@--------------------------------------------------------------------------------- +swiDecompressRLEWram: +@--------------------------------------------------------------------------------- + swi 0x14 + bx lr + +@--------------------------------------------------------------------------------- + .global swiDecompressRLEVram + .thumb_func +@--------------------------------------------------------------------------------- +swiDecompressRLEVram: +@--------------------------------------------------------------------------------- + swi 0x15 + bx lr + +@--------------------------------------------------------------------------------- +@ ARM7 only bios calls +@--------------------------------------------------------------------------------- +#ifdef ARM7 + +@--------------------------------------------------------------------------------- + .global swiHalt + .thumb_func +@--------------------------------------------------------------------------------- +swiHalt: +@--------------------------------------------------------------------------------- + swi 0x06 + bx lr + +@--------------------------------------------------------------------------------- + .global swiGetSineTable + .thumb_func +@--------------------------------------------------------------------------------- +swiGetSineTable: +@--------------------------------------------------------------------------------- + swi 0x1A + bx lr + +@--------------------------------------------------------------------------------- + .global swiGetPitchTable + .thumb_func +@--------------------------------------------------------------------------------- +swiGetPitchTable: +@--------------------------------------------------------------------------------- + swi 0x1B + bx lr + +@--------------------------------------------------------------------------------- + .global swiGetVolumeTable + .thumb_func +@--------------------------------------------------------------------------------- +swiGetVolumeTable: +@--------------------------------------------------------------------------------- + swi 0x1C + bx lr + + +@ ARM7 function, but no real point in exposing it, at least not +@ without adding a way to get the 3 arguments back into C +@ .global swiGetFptrs +@ .thumb_func +@swiGetFptrs: +@ swi 0x1D +@ bx lr + + +@--------------------------------------------------------------------------------- + .global swiSwitchToGBAMode + .thumb_func +@--------------------------------------------------------------------------------- +swiSwitchToGBAMode: +@--------------------------------------------------------------------------------- + mov r0, #0x40 + swi 0x1F +@ does not return, of course + +@--------------------------------------------------------------------------------- + .global swiSetHaltCR + .thumb_func +@--------------------------------------------------------------------------------- +swiSetHaltCR: +@--------------------------------------------------------------------------------- + mov r2, r0 + swi 0x1F + bx lr + +#endif // ARM7 + +@--------------------------------------------------------------------------------- +@ ARM9 only bios calls +@--------------------------------------------------------------------------------- +#ifdef ARM9 + +@--------------------------------------------------------------------------------- + .global swiWaitForIRQ + .thumb_func +@--------------------------------------------------------------------------------- +swiWaitForIRQ: +@--------------------------------------------------------------------------------- + swi 0x06 + bx lr + +@--------------------------------------------------------------------------------- + .global swiDecodeDelta8 + .thumb_func +@--------------------------------------------------------------------------------- +swiDecodeDelta8: +@--------------------------------------------------------------------------------- + swi 0x16 + bx lr + +@--------------------------------------------------------------------------------- + .global swiDecodeDelta16 + .thumb_func +@--------------------------------------------------------------------------------- +swiDecodeDelta16: +@--------------------------------------------------------------------------------- + swi 0x18 + bx lr + +@--------------------------------------------------------------------------------- + .global swiSetHaltCR + .thumb_func +@--------------------------------------------------------------------------------- +swiSetHaltCR: +@--------------------------------------------------------------------------------- + swi 0x1F + bx lr + +#endif // ARM9 + diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/common/biosCalls.s b/c/src/lib/libbsp/arm/nds/libnds/source/common/biosCalls.s deleted file mode 100644 index a59debef6c..0000000000 --- a/c/src/lib/libbsp/arm/nds/libnds/source/common/biosCalls.s +++ /dev/null @@ -1,352 +0,0 @@ -/*--------------------------------------------------------------------------------- - $Id$ - - Copyright (C) 2005 - Michael Noland (joat) - Jason Rogers (dovoto) - Dave Murphy (WinterMute) - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any - damages arising from the use of this software. - - Permission is granted to anyone to use this software for any - purpose, including commercial applications, and to alter it and - redistribute it freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you - must not claim that you wrote the original software. If you use - this software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and - must not be misrepresented as being the original software. - 3. This notice may not be removed or altered from any source - distribution. - - $Log$ - Revision 1.5 2006/03/15 12:37:14 wntrmute - reformatted for legibility - grouped arm7 and arm9 specific code - - Revision 1.4 2006/03/03 07:20:14 joatski - Fixed a couple of little bugs (e.g. swiSetHaltCR using r0 instead of r2 on ARM7) - Commented out ARM7 swis in ARM9 mode, and vis versa - - Revision 1.3 2006/01/17 00:13:36 dovoto - Fixed swi 08 so lable and global matched "swiChangeSoundBias" - - Revision 1.2 2005/09/03 13:47:13 wntrmute - added logging to header - reformatted for legibility - - ----------------------------------------------------------------------------------*/ - - .text - .align 4 - - .thumb - -@--------------------------------------------------------------------------------- - .global swiSoftReset - .thumb_func -@--------------------------------------------------------------------------------- -swiSoftReset: -@--------------------------------------------------------------------------------- - swi 0x00 - bx lr - - -@--------------------------------------------------------------------------------- - .global swiDelay - .thumb_func -@--------------------------------------------------------------------------------- -swiDelay: -@--------------------------------------------------------------------------------- - swi 0x03 - bx lr - -@--------------------------------------------------------------------------------- - .global swiIntrWait - .thumb_func -@--------------------------------------------------------------------------------- -swiIntrWait: -@--------------------------------------------------------------------------------- - swi 0x04 - bx lr - - -@--------------------------------------------------------------------------------- - .global swiWaitForVBlank - .thumb_func -@--------------------------------------------------------------------------------- -swiWaitForVBlank: -@--------------------------------------------------------------------------------- - swi 0x05 - bx lr - -@--------------------------------------------------------------------------------- - .global swiSleep - .thumb_func -@--------------------------------------------------------------------------------- -swiSleep: -@--------------------------------------------------------------------------------- - swi 0x07 - bx lr - -@--------------------------------------------------------------------------------- - .global swiChangeSoundBias - .thumb_func -@--------------------------------------------------------------------------------- -swiChangeSoundBias: -@--------------------------------------------------------------------------------- - swi 0x08 - bx lr - -@--------------------------------------------------------------------------------- - .global swiDivide - .thumb_func -@--------------------------------------------------------------------------------- -swiDivide: -@--------------------------------------------------------------------------------- - swi 0x09 - bx lr - -@--------------------------------------------------------------------------------- - .global swiRemainder - .thumb_func -@--------------------------------------------------------------------------------- -swiRemainder: -@--------------------------------------------------------------------------------- - swi 0x09 - mov r0, r1 - bx lr - -@--------------------------------------------------------------------------------- - .global swiDivMod - .thumb_func -@--------------------------------------------------------------------------------- -swiDivMod: -@--------------------------------------------------------------------------------- - push {r2, r3} - swi 0x09 - pop {r2, r3} - str r0, [r2] - str r1, [r3] - bx lr - -@--------------------------------------------------------------------------------- - .global swiCopy - .thumb_func -@--------------------------------------------------------------------------------- -swiCopy: -@--------------------------------------------------------------------------------- - swi 0x0B - bx lr - -@--------------------------------------------------------------------------------- - .global swiFastCopy - .thumb_func -@--------------------------------------------------------------------------------- -swiFastCopy: -@--------------------------------------------------------------------------------- - swi 0x0C - bx lr - -@--------------------------------------------------------------------------------- - .global swiSqrt - .thumb_func -@--------------------------------------------------------------------------------- -swiSqrt: -@--------------------------------------------------------------------------------- - swi 0x0D - bx lr - -@--------------------------------------------------------------------------------- - .global swiCRC16 - .thumb_func -@--------------------------------------------------------------------------------- -swiCRC16: -@--------------------------------------------------------------------------------- - swi 0x0E - bx lr - -@--------------------------------------------------------------------------------- - .global swiIsDebugger - .thumb_func -@--------------------------------------------------------------------------------- -swiIsDebugger: -@--------------------------------------------------------------------------------- - swi 0x0F - bx lr - -@--------------------------------------------------------------------------------- - .global swiUnpackBits - .thumb_func -@--------------------------------------------------------------------------------- -swiUnpackBits: -@--------------------------------------------------------------------------------- - swi 0x10 - bx lr - -@--------------------------------------------------------------------------------- - .global swiDecompressLZSSWram - .thumb_func -@--------------------------------------------------------------------------------- -swiDecompressLZSSWram: -@--------------------------------------------------------------------------------- - swi 0x11 - bx lr - -@--------------------------------------------------------------------------------- - .global swiDecompressLZSSVram - .thumb_func -@--------------------------------------------------------------------------------- -swiDecompressLZSSVram: -@--------------------------------------------------------------------------------- - swi 0x12 - bx lr - -@--------------------------------------------------------------------------------- - .global swiDecompressHuffman - .thumb_func -@--------------------------------------------------------------------------------- -swiDecompressHuffman: -@--------------------------------------------------------------------------------- - swi 0x13 - bx lr - -@--------------------------------------------------------------------------------- - .global swiDecompressRLEWram - .thumb_func -@--------------------------------------------------------------------------------- -swiDecompressRLEWram: -@--------------------------------------------------------------------------------- - swi 0x14 - bx lr - -@--------------------------------------------------------------------------------- - .global swiDecompressRLEVram - .thumb_func -@--------------------------------------------------------------------------------- -swiDecompressRLEVram: -@--------------------------------------------------------------------------------- - swi 0x15 - bx lr - -@--------------------------------------------------------------------------------- -@ ARM7 only bios calls -@--------------------------------------------------------------------------------- -#ifdef ARM7 - -@--------------------------------------------------------------------------------- - .global swiHalt - .thumb_func -@--------------------------------------------------------------------------------- -swiHalt: -@--------------------------------------------------------------------------------- - swi 0x06 - bx lr - -@--------------------------------------------------------------------------------- - .global swiGetSineTable - .thumb_func -@--------------------------------------------------------------------------------- -swiGetSineTable: -@--------------------------------------------------------------------------------- - swi 0x1A - bx lr - -@--------------------------------------------------------------------------------- - .global swiGetPitchTable - .thumb_func -@--------------------------------------------------------------------------------- -swiGetPitchTable: -@--------------------------------------------------------------------------------- - swi 0x1B - bx lr - -@--------------------------------------------------------------------------------- - .global swiGetVolumeTable - .thumb_func -@--------------------------------------------------------------------------------- -swiGetVolumeTable: -@--------------------------------------------------------------------------------- - swi 0x1C - bx lr - - -@ ARM7 function, but no real point in exposing it, at least not -@ without adding a way to get the 3 arguments back into C -@ .global swiGetFptrs -@ .thumb_func -@swiGetFptrs: -@ swi 0x1D -@ bx lr - - -@--------------------------------------------------------------------------------- - .global swiSwitchToGBAMode - .thumb_func -@--------------------------------------------------------------------------------- -swiSwitchToGBAMode: -@--------------------------------------------------------------------------------- - mov r0, #0x40 - swi 0x1F -@ does not return, of course - -@--------------------------------------------------------------------------------- - .global swiSetHaltCR - .thumb_func -@--------------------------------------------------------------------------------- -swiSetHaltCR: -@--------------------------------------------------------------------------------- - mov r2, r0 - swi 0x1F - bx lr - -#endif // ARM7 - -@--------------------------------------------------------------------------------- -@ ARM9 only bios calls -@--------------------------------------------------------------------------------- -#ifdef ARM9 - -@--------------------------------------------------------------------------------- - .global swiWaitForIRQ - .thumb_func -@--------------------------------------------------------------------------------- -swiWaitForIRQ: -@--------------------------------------------------------------------------------- - swi 0x06 - bx lr - -@--------------------------------------------------------------------------------- - .global swiDecodeDelta8 - .thumb_func -@--------------------------------------------------------------------------------- -swiDecodeDelta8: -@--------------------------------------------------------------------------------- - swi 0x16 - bx lr - -@--------------------------------------------------------------------------------- - .global swiDecodeDelta16 - .thumb_func -@--------------------------------------------------------------------------------- -swiDecodeDelta16: -@--------------------------------------------------------------------------------- - swi 0x18 - bx lr - -@--------------------------------------------------------------------------------- - .global swiSetHaltCR - .thumb_func -@--------------------------------------------------------------------------------- -swiSetHaltCR: -@--------------------------------------------------------------------------------- - swi 0x1F - bx lr - -#endif // ARM9 - diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.S b/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.S new file mode 100644 index 0000000000..4ef656f132 --- /dev/null +++ b/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.S @@ -0,0 +1,290 @@ +/*--------------------------------------------------------------------------------- + $Id$ + + Copyright (C) 2005 + Dave Murphy (WinterMute) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + 3. This notice may not be removed or altered from any source + distribution. + + $Log$ + Revision 1.1 2008/04/16 18:37:33 joel + 2008-04-16 Matthieu Bucchianeri + + * ChangeLog, Makefile.am, README, bsp_specs, configure.ac, + mk_libnds.sh, patch.libnds, preinstall.am, block/block.c, + clock/clock.c, console/console.c, coproc/coproc.S, coproc/coproc.c, + coproc/coproc.ld, dswifi/dswifi_license.txt, dswifi/makefile, + dswifi/arm7/makefile, dswifi/arm7/source/wifi_arm7.c, + dswifi/arm7/source/wifi_arm7.h, dswifi/arm9/makefile, + dswifi/arm9/source/sgIP.c, dswifi/arm9/source/sgIP.h, + dswifi/arm9/source/sgIP_ARP.c, dswifi/arm9/source/sgIP_ARP.h, + dswifi/arm9/source/sgIP_Config.h, dswifi/arm9/source/sgIP_DHCP.c, + dswifi/arm9/source/sgIP_DHCP.h, dswifi/arm9/source/sgIP_DNS.c, + dswifi/arm9/source/sgIP_DNS.h, dswifi/arm9/source/sgIP_Hub.c, + dswifi/arm9/source/sgIP_Hub.h, dswifi/arm9/source/sgIP_ICMP.c, + dswifi/arm9/source/sgIP_ICMP.h, dswifi/arm9/source/sgIP_IP.c, + dswifi/arm9/source/sgIP_IP.h, dswifi/arm9/source/sgIP_TCP.c, + dswifi/arm9/source/sgIP_TCP.h, dswifi/arm9/source/sgIP_UDP.c, + dswifi/arm9/source/sgIP_UDP.h, dswifi/arm9/source/sgIP_memblock.c, + dswifi/arm9/source/sgIP_memblock.h, + dswifi/arm9/source/sgIP_sockets.c, dswifi/arm9/source/sgIP_sockets.h, + dswifi/arm9/source/wifi_arm9.c, dswifi/arm9/source/wifi_arm9.h, + dswifi/common/source/dsregs.h, dswifi/common/source/spinlock.h, + dswifi/common/source/spinlock.s, dswifi/common/source/wifi_shared.h, + dswifi/include/dswifi7.h, dswifi/include/dswifi9.h, + dswifi/include/dswifi_version.h, dswifi/include/netdb.h, + dswifi/include/sgIP_errno.h, dswifi/include/netinet/in.h, fb/fb.c, + fb/fb.h, include/bsp.h, include/my_ipc.h, include/tm27.h, + include/types.h, include/sys/iosupport.h, irq/irq.c, irq/irq.h, + libfat/gba/include/fat.h, libfat/include/fat.h, + libfat/nds/include/fat.h, libfat/source/bit_ops.h, + libfat/source/cache.c, libfat/source/cache.h, libfat/source/common.h, + libfat/source/directory.c, libfat/source/directory.h, + libfat/source/fatdir.c, libfat/source/fatdir.h, + libfat/source/fatfile.c, libfat/source/fatfile.h, + libfat/source/file_allocation_table.c, + libfat/source/file_allocation_table.h, libfat/source/filetime.c, + libfat/source/filetime.h, libfat/source/libfat.c, + libfat/source/mem_allocate.h, libfat/source/partition.c, + libfat/source/partition.h, libfat/source/disc_io/disc.c, + libfat/source/disc_io/disc.h, libfat/source/disc_io/disc_io.h, + libfat/source/disc_io/io_cf_common.c, + libfat/source/disc_io/io_cf_common.h, + libfat/source/disc_io/io_dldi.h, libfat/source/disc_io/io_dldi.s, + libfat/source/disc_io/io_efa2.c, libfat/source/disc_io/io_efa2.h, + libfat/source/disc_io/io_fcsr.c, libfat/source/disc_io/io_fcsr.h, + libfat/source/disc_io/io_m3_common.c, + libfat/source/disc_io/io_m3_common.h, + libfat/source/disc_io/io_m3cf.c, libfat/source/disc_io/io_m3cf.h, + libfat/source/disc_io/io_m3sd.c, libfat/source/disc_io/io_m3sd.h, + libfat/source/disc_io/io_mpcf.c, libfat/source/disc_io/io_mpcf.h, + libfat/source/disc_io/io_njsd.c, libfat/source/disc_io/io_njsd.h, + libfat/source/disc_io/io_nmmc.c, libfat/source/disc_io/io_nmmc.h, + libfat/source/disc_io/io_sc_common.c, + libfat/source/disc_io/io_sc_common.h, + libfat/source/disc_io/io_sccf.c, libfat/source/disc_io/io_sccf.h, + libfat/source/disc_io/io_scsd.c, libfat/source/disc_io/io_scsd.h, + libfat/source/disc_io/io_scsd_s.s, + libfat/source/disc_io/io_sd_common.c, + libfat/source/disc_io/io_sd_common.h, libnds/Makefile.arm7, + libnds/Makefile.arm9, libnds/libnds_license.txt, + libnds/basicARM7/source/defaultARM7.c, + libnds/include/default_font_bin.h, libnds/include/gbfs.h, + libnds/include/nds.h, libnds/include/nds/bios.h, + libnds/include/nds/card.h, libnds/include/nds/dma.h, + libnds/include/nds/interrupts.h, libnds/include/nds/ipc.h, + libnds/include/nds/jtypes.h, libnds/include/nds/memory.h, + libnds/include/nds/registers_alt.h, libnds/include/nds/reload.h, + libnds/include/nds/system.h, libnds/include/nds/timers.h, + libnds/include/nds/arm7/audio.h, libnds/include/nds/arm7/clock.h, + libnds/include/nds/arm7/serial.h, libnds/include/nds/arm7/touch.h, + libnds/include/nds/arm9/background.h, + libnds/include/nds/arm9/boxtest.h, libnds/include/nds/arm9/cache.h, + libnds/include/nds/arm9/console.h, + libnds/include/nds/arm9/exceptions.h, + libnds/include/nds/arm9/image.h, libnds/include/nds/arm9/input.h, + libnds/include/nds/arm9/math.h, libnds/include/nds/arm9/ndsmotion.h, + libnds/include/nds/arm9/pcx.h, libnds/include/nds/arm9/postest.h, + libnds/include/nds/arm9/rumble.h, libnds/include/nds/arm9/sound.h, + libnds/include/nds/arm9/sprite.h, libnds/include/nds/arm9/trig_lut.h, + libnds/include/nds/arm9/video.h, libnds/include/nds/arm9/videoGL.h, + libnds/source/arm7/audio.c, libnds/source/arm7/clock.c, + libnds/source/arm7/microphone.c, libnds/source/arm7/spi.c, + libnds/source/arm7/touch.c, libnds/source/arm7/userSettings.c, + libnds/source/arm9/COS.bin, libnds/source/arm9/COS.s, + libnds/source/arm9/SIN.bin, libnds/source/arm9/SIN.s, + libnds/source/arm9/TAN.bin, libnds/source/arm9/TAN.s, + libnds/source/arm9/boxtest.c, libnds/source/arm9/console.c, + libnds/source/arm9/dcache.s, libnds/source/arm9/default_font.bin, + libnds/source/arm9/default_font.s, + libnds/source/arm9/exceptionHandler.S, + libnds/source/arm9/exceptionHandler.s, + libnds/source/arm9/exceptions.c, libnds/source/arm9/gurumeditation.c, + libnds/source/arm9/icache.s, libnds/source/arm9/image.c, + libnds/source/arm9/initSystem.c, libnds/source/arm9/keys.c, + libnds/source/arm9/ndsmotion.c, libnds/source/arm9/pcx.c, + libnds/source/arm9/rumble.c, libnds/source/arm9/sound.c, + libnds/source/arm9/system.c, libnds/source/arm9/touch.c, + libnds/source/arm9/video.c, libnds/source/arm9/videoGL.c, + libnds/source/common/biosCalls.s, libnds/source/common/card.c, + libnds/source/common/gbfs.c, + libnds/source/common/interruptDispatcher.s, + libnds/source/common/interrupts.c, rtc/rtc.c, sound/sound.c, + sound/sound.h, start/start.S, startup/linkcmds, startup/start.c, + timer/timer.c, tools/Makefile.am, tools/bin2s, tools/bin2s.c, + tools/configure.ac, tools/runtest, + tools/ndstool/include/arm7_sha1_homebrew.h, + tools/ndstool/include/arm7_sha1_nintendo.h, + tools/ndstool/include/banner.h, tools/ndstool/include/bigint.h, + tools/ndstool/include/crc.h, tools/ndstool/include/default_icon.h, + tools/ndstool/include/encryption.h, tools/ndstool/include/header.h, + tools/ndstool/include/hook.h, tools/ndstool/include/little.h, + tools/ndstool/include/loadme.h, tools/ndstool/include/logo.h, + tools/ndstool/include/ndscreate.h, + tools/ndstool/include/ndsextract.h, tools/ndstool/include/ndstool.h, + tools/ndstool/include/ndstree.h, tools/ndstool/include/overlay.h, + tools/ndstool/include/passme.h, tools/ndstool/include/passme_sram.h, + tools/ndstool/include/passme_vhd1.h, + tools/ndstool/include/passme_vhd2.h, tools/ndstool/include/raster.h, + tools/ndstool/include/sha1.h, tools/ndstool/include/types.h, + tools/ndstool/source/arm7_sha1_homebrew.c, + tools/ndstool/source/arm7_sha1_nintendo.c, + tools/ndstool/source/banner.cpp, tools/ndstool/source/bigint.cpp, + tools/ndstool/source/compile_date.c, tools/ndstool/source/crc.cpp, + tools/ndstool/source/default_icon.c, + tools/ndstool/source/encryption.cpp, tools/ndstool/source/header.cpp, + tools/ndstool/source/hook.cpp, tools/ndstool/source/loadme.c, + tools/ndstool/source/logo.cpp, tools/ndstool/source/ndscodes.cpp, + tools/ndstool/source/ndscreate.cpp, + tools/ndstool/source/ndsextract.cpp, + tools/ndstool/source/ndstool.cpp, tools/ndstool/source/ndstree.cpp, + tools/ndstool/source/passme.cpp, tools/ndstool/source/passme_sram.c, + tools/ndstool/source/raster.cpp, tools/ndstool/source/sha1.cpp, + touchscreen/README.reco, touchscreen/parser.c, touchscreen/reco.c, + touchscreen/reco.h, touchscreen/touchscreen.c, + touchscreen/touchscreen.h, wifi/compat.c, wifi/compat.h, wifi/wifi.c: + New files. + + Revision 1.10 2007/08/11 06:00:23 wntrmute + make nesting really work + + Revision 1.9 2007/01/10 15:48:27 wntrmute + remove unused code + + Revision 1.8 2006/12/16 09:10:02 wntrmute + acknowledge interrupt before calling handler + + Revision 1.7 2006/04/26 05:11:31 wntrmute + rebase dtcm, take __irq_flags and __irq_vector from linker script + move arm7 irq vector & irq flags to actual locations + + Revision 1.6 2006/04/23 18:19:15 wntrmute + reworked interrupt code to allow dtcm moving + + Revision 1.5 2005/12/12 13:01:55 wntrmute + disable interrupts on return from user handler + + Revision 1.4 2005/10/21 22:43:42 wntrmute + restore REG_IME on exit from null handler + + Revision 1.3 2005/09/27 18:21:53 wntrmute + safer nested interrupt support + + Revision 1.2 2005/09/04 16:37:01 wntrmute + check for NULL handler + + Revision 1.1 2005/09/03 17:09:35 wntrmute + added interworking aware interrupt dispatcher + + +---------------------------------------------------------------------------------*/ + +#ifdef ARM7 + .text +#endif + +#ifdef ARM9 + .section .itcm,"ax",%progbits +#endif + + .extern irqTable + .code 32 + + .global IntrMain +@--------------------------------------------------------------------------------- +IntrMain: +@--------------------------------------------------------------------------------- + mov r3, #0x4000000 @ REG_BASE + + ldr r1, [r3, #0x208] @ r1 = IME + str r3, [r3, #0x208] @ disable IME + mrs r0, spsr + stmfd sp!, {r0-r1,r3,lr} @ {spsr, IME, REG_BASE, lr_irq} + + ldr r1, [r3,#0x210] @ REG_IE + ldr r2, [r3,#0x214] @ REG_IF + and r1,r1,r2 + + ldr r0,=__irq_flags @ defined by linker script + + ldr r2,[r0] + orr r2,r2,r1 + str r2,[r0] + + ldr r2,=irqTable +@--------------------------------------------------------------------------------- +findIRQ: +@--------------------------------------------------------------------------------- + ldr r0, [r2, #4] + cmp r0,#0 + beq no_handler + ands r0, r0, r1 + bne jump_intr + add r2, r2, #8 + b findIRQ + +@--------------------------------------------------------------------------------- +no_handler: +@--------------------------------------------------------------------------------- + str r1, [r3, #0x0214] @ IF Clear + ldmfd sp!, {r0-r1,r3,lr} @ {spsr, IME, REG_BASE, lr_irq} + str r1, [r3, #0x208] @ restore REG_IME + mov pc,lr + +@--------------------------------------------------------------------------------- +jump_intr: +@--------------------------------------------------------------------------------- + ldr r1, [r2] @ user IRQ handler address + cmp r1, #0 + bne got_handler + mov r1, r0 + b no_handler +@--------------------------------------------------------------------------------- +got_handler: +@--------------------------------------------------------------------------------- + + mrs r2, cpsr + bic r2, r2, #0xdf @ \__ + orr r2, r2, #0x1f @ / --> Enable IRQ & FIQ. Set CPU mode to System. + msr cpsr,r2 + + str r0, [r3, #0x0214] @ IF Clear + + push {lr} + adr lr, IntrRet + bx r1 + +@--------------------------------------------------------------------------------- +IntrRet: +@--------------------------------------------------------------------------------- + mov r3, #0x4000000 @ REG_BASE + str r3, [r3, #0x208] @ disable IME + pop {lr} + + mrs r3, cpsr + bic r3, r3, #0xdf @ \__ + orr r3, r3, #0x92 @ / --> Disable IRQ. Enable FIQ. Set CPU mode to IRQ. + msr cpsr, r3 + + ldmfd sp!, {r0-r1,r3,lr} @ {spsr, IME, REG_BASE, lr_irq} + msr spsr, r0 @ restore spsr + str r1, [r3, #0x208] @ restore REG_IME + mov pc,lr + + .pool + .end diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.s b/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.s deleted file mode 100644 index 70b726e6e6..0000000000 --- a/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.s +++ /dev/null @@ -1,152 +0,0 @@ -/*--------------------------------------------------------------------------------- - $Id$ - - Copyright (C) 2005 - Dave Murphy (WinterMute) - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any - damages arising from the use of this software. - - Permission is granted to anyone to use this software for any - purpose, including commercial applications, and to alter it and - redistribute it freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you - must not claim that you wrote the original software. If you use - this software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and - must not be misrepresented as being the original software. - 3. This notice may not be removed or altered from any source - distribution. - - $Log$ - Revision 1.10 2007/08/11 06:00:23 wntrmute - make nesting really work - - Revision 1.9 2007/01/10 15:48:27 wntrmute - remove unused code - - Revision 1.8 2006/12/16 09:10:02 wntrmute - acknowledge interrupt before calling handler - - Revision 1.7 2006/04/26 05:11:31 wntrmute - rebase dtcm, take __irq_flags and __irq_vector from linker script - move arm7 irq vector & irq flags to actual locations - - Revision 1.6 2006/04/23 18:19:15 wntrmute - reworked interrupt code to allow dtcm moving - - Revision 1.5 2005/12/12 13:01:55 wntrmute - disable interrupts on return from user handler - - Revision 1.4 2005/10/21 22:43:42 wntrmute - restore REG_IME on exit from null handler - - Revision 1.3 2005/09/27 18:21:53 wntrmute - safer nested interrupt support - - Revision 1.2 2005/09/04 16:37:01 wntrmute - check for NULL handler - - Revision 1.1 2005/09/03 17:09:35 wntrmute - added interworking aware interrupt dispatcher - - ----------------------------------------------------------------------------------*/ - -#ifdef ARM7 - .text -#endif - -#ifdef ARM9 - .section .itcm,"ax",%progbits -#endif - - .extern irqTable - .code 32 - - .global IntrMain -@--------------------------------------------------------------------------------- -IntrMain: -@--------------------------------------------------------------------------------- - mov r3, #0x4000000 @ REG_BASE - - ldr r1, [r3, #0x208] @ r1 = IME - str r3, [r3, #0x208] @ disable IME - mrs r0, spsr - stmfd sp!, {r0-r1,r3,lr} @ {spsr, IME, REG_BASE, lr_irq} - - ldr r1, [r3,#0x210] @ REG_IE - ldr r2, [r3,#0x214] @ REG_IF - and r1,r1,r2 - - ldr r0,=__irq_flags @ defined by linker script - - ldr r2,[r0] - orr r2,r2,r1 - str r2,[r0] - - ldr r2,=irqTable -@--------------------------------------------------------------------------------- -findIRQ: -@--------------------------------------------------------------------------------- - ldr r0, [r2, #4] - cmp r0,#0 - beq no_handler - ands r0, r0, r1 - bne jump_intr - add r2, r2, #8 - b findIRQ - -@--------------------------------------------------------------------------------- -no_handler: -@--------------------------------------------------------------------------------- - str r1, [r3, #0x0214] @ IF Clear - ldmfd sp!, {r0-r1,r3,lr} @ {spsr, IME, REG_BASE, lr_irq} - str r1, [r3, #0x208] @ restore REG_IME - mov pc,lr - -@--------------------------------------------------------------------------------- -jump_intr: -@--------------------------------------------------------------------------------- - ldr r1, [r2] @ user IRQ handler address - cmp r1, #0 - bne got_handler - mov r1, r0 - b no_handler -@--------------------------------------------------------------------------------- -got_handler: -@--------------------------------------------------------------------------------- - - mrs r2, cpsr - bic r2, r2, #0xdf @ \__ - orr r2, r2, #0x1f @ / --> Enable IRQ & FIQ. Set CPU mode to System. - msr cpsr,r2 - - str r0, [r3, #0x0214] @ IF Clear - - push {lr} - adr lr, IntrRet - bx r1 - -@--------------------------------------------------------------------------------- -IntrRet: -@--------------------------------------------------------------------------------- - mov r3, #0x4000000 @ REG_BASE - str r3, [r3, #0x208] @ disable IME - pop {lr} - - mrs r3, cpsr - bic r3, r3, #0xdf @ \__ - orr r3, r3, #0x92 @ / --> Disable IRQ. Enable FIQ. Set CPU mode to IRQ. - msr cpsr, r3 - - ldmfd sp!, {r0-r1,r3,lr} @ {spsr, IME, REG_BASE, lr_irq} - msr spsr, r0 @ restore spsr - str r1, [r3, #0x208] @ restore REG_IME - mov pc,lr - - .pool - .end -- cgit v1.2.3