From b3e43b27d966eca6e394e9ff7ed2c8a583187812 Mon Sep 17 00:00:00 2001 From: nakasima Date: Fri, 30 Mar 2007 02:18:37 +0000 Subject: [PATCH] git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@1 4ee2a332-4b2b-5046-8439-1ba90f034370 --- Makefile | 31 + build/Makefile | 32 + build/buildtools/commondefs | 194 + build/buildtools/modulerules | 31 + build/libraries/Makefile | 38 + build/libraries/init/ARM7/Makefile | 59 + build/libraries/init/ARM7/crt0.c | 274 ++ build/libraries/init/ARM9/Makefile | 43 + build/libraries/init/ARM9/crt0.c | 631 +++ build/libraries/init/Makefile | 34 + build/libraries/mi/ARM7/Makefile | 75 + build/libraries/mi/ARM9/Makefile | 66 + build/libraries/mi/Makefile | 34 + build/libraries/os/ARM7/Makefile | 85 + build/libraries/os/ARM7/os_terminate_twl_sp.c | 87 + build/libraries/os/ARM9/Makefile | 99 + build/libraries/os/Makefile | 34 + build/libraries/os/common/os_entropy_twl.c | 59 + build/libraries/os/common/os_init_twl.c | 300 ++ build/libraries/os/common/os_printf_twl.c | 1211 ++++++ build/libraries/os/common/os_spinLock_twl.c | 932 +++++ build/libraries/os/common/os_system_twl.c | 379 ++ build/libraries/vlink/ARM7/Makefile | 63 + build/libraries/vlink/ARM9/Makefile | 61 + build/libraries/vlink/Makefile | 34 + build/libraries/vlink/common/osemu.c | 1022 +++++ build/libraries/vlink/common/osemu2.c | 511 +++ build/tests/Makefile | 31 + build/tests/os/Makefile | 31 + build/tests/os/_ARM7-alarm-2/Makefile | 45 + build/tests/os/_ARM7-alarm-2/src/main.c | 241 ++ build/tests/os/alarm-1/Makefile | 42 + build/tests/os/alarm-1/src/main.c | 165 + include/nitro/dtcm_begin.h | 39 + include/nitro/dtcm_end.h | 34 + include/nitro/itcm_begin.h | 39 + include/nitro/itcm_end.h | 34 + include/nitro/os/common/system.h | 377 ++ include/twl.h | 25 + include/twl/specfiles/ARM7-TEG.lcf.template | 606 +++ include/twl/specfiles/ARM7-TEG.lsf | 60 + include/twl/specfiles/ARM7-TS.lcf.template | 578 +++ include/twl/specfiles/ARM7-TS.lsf | 76 + include/twl/specfiles/ARM9-TEG.lcf.template | 692 ++++ include/twl/specfiles/ARM9-TEG.lsf | 76 + include/twl/specfiles/ARM9-TS.lcf.template | 706 ++++ include/twl/specfiles/ARM9-TS.lsf | 77 + include/twl/vlink.h | 86 + include/twl_sp.h | 22 + readme.txt | 5 + tools/axd/ARM7.ses | 304 ++ tools/axd/ARM9.ses | 253 ++ tools/axd/readme.txt | 9 + tools/partner_mlt/core0/JETCTR.CFG | 136 + tools/partner_mlt/core0/JETCTR.JPX | 3370 ++++++++++++++++ tools/partner_mlt/core1/JETCTR.CFG | 142 + tools/partner_mlt/core1/JETCTR.JPX | 3397 +++++++++++++++++ 57 files changed, 18117 insertions(+) create mode 100644 Makefile create mode 100644 build/Makefile create mode 100644 build/buildtools/commondefs create mode 100644 build/buildtools/modulerules create mode 100644 build/libraries/Makefile create mode 100644 build/libraries/init/ARM7/Makefile create mode 100644 build/libraries/init/ARM7/crt0.c create mode 100644 build/libraries/init/ARM9/Makefile create mode 100644 build/libraries/init/ARM9/crt0.c create mode 100644 build/libraries/init/Makefile create mode 100644 build/libraries/mi/ARM7/Makefile create mode 100644 build/libraries/mi/ARM9/Makefile create mode 100644 build/libraries/mi/Makefile create mode 100644 build/libraries/os/ARM7/Makefile create mode 100644 build/libraries/os/ARM7/os_terminate_twl_sp.c create mode 100644 build/libraries/os/ARM9/Makefile create mode 100644 build/libraries/os/Makefile create mode 100644 build/libraries/os/common/os_entropy_twl.c create mode 100644 build/libraries/os/common/os_init_twl.c create mode 100644 build/libraries/os/common/os_printf_twl.c create mode 100644 build/libraries/os/common/os_spinLock_twl.c create mode 100644 build/libraries/os/common/os_system_twl.c create mode 100644 build/libraries/vlink/ARM7/Makefile create mode 100644 build/libraries/vlink/ARM9/Makefile create mode 100644 build/libraries/vlink/Makefile create mode 100644 build/libraries/vlink/common/osemu.c create mode 100644 build/libraries/vlink/common/osemu2.c create mode 100644 build/tests/Makefile create mode 100644 build/tests/os/Makefile create mode 100644 build/tests/os/_ARM7-alarm-2/Makefile create mode 100644 build/tests/os/_ARM7-alarm-2/src/main.c create mode 100644 build/tests/os/alarm-1/Makefile create mode 100644 build/tests/os/alarm-1/src/main.c create mode 100644 include/nitro/dtcm_begin.h create mode 100644 include/nitro/dtcm_end.h create mode 100644 include/nitro/itcm_begin.h create mode 100644 include/nitro/itcm_end.h create mode 100644 include/nitro/os/common/system.h create mode 100644 include/twl.h create mode 100644 include/twl/specfiles/ARM7-TEG.lcf.template create mode 100644 include/twl/specfiles/ARM7-TEG.lsf create mode 100644 include/twl/specfiles/ARM7-TS.lcf.template create mode 100644 include/twl/specfiles/ARM7-TS.lsf create mode 100644 include/twl/specfiles/ARM9-TEG.lcf.template create mode 100644 include/twl/specfiles/ARM9-TEG.lsf create mode 100644 include/twl/specfiles/ARM9-TS.lcf.template create mode 100644 include/twl/specfiles/ARM9-TS.lsf create mode 100644 include/twl/vlink.h create mode 100644 include/twl_sp.h create mode 100644 readme.txt create mode 100644 tools/axd/ARM7.ses create mode 100644 tools/axd/ARM9.ses create mode 100644 tools/axd/readme.txt create mode 100644 tools/partner_mlt/core0/JETCTR.CFG create mode 100644 tools/partner_mlt/core0/JETCTR.JPX create mode 100644 tools/partner_mlt/core1/JETCTR.CFG create mode 100644 tools/partner_mlt/core1/JETCTR.JPX diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4cd331b --- /dev/null +++ b/Makefile @@ -0,0 +1,31 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - build +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + + +#---------------------------------------------------------------------------- + +SUBDIRS = \ + build \ + +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/Makefile b/build/Makefile new file mode 100644 index 0000000..ad2b47d --- /dev/null +++ b/build/Makefile @@ -0,0 +1,32 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - build +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + + +#---------------------------------------------------------------------------- + +SUBDIRS = \ + libraries \ + tests \ + +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/buildtools/commondefs b/build/buildtools/commondefs new file mode 100644 index 0000000..f4a0130 --- /dev/null +++ b/build/buildtools/commondefs @@ -0,0 +1,194 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - commondefs - common definitions for build system +# File: commondefs +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- +ifndef TWLSDK_COMMONDEFS_ +TWLSDK_COMMONDEFS_ = TRUE + +NITRO_NO_STD_PCHDR = TRUE # プリコンパイルヘッダ抑止 + +EMPTY ?= +SPACE ?= $(EMPTY) $(EMPTY) + +# +# SDK Major Version +# + +TWLSDK_VERSION_MAJOR ?= 0 + +# +# CodeGen Target +# +# TWL_PLATFORM = [TEG/TS] +# TWL_MEMSIZE = [4M/8M] +# TWL_CODEGEN = [ARM/THUMB] +# TWL_PROC = [ARM9/ARM7] +# + +TWL_PLATFORM ?= TS +TWL_MEMSIZE ?= 8M +TWL_CODEGEN ?= ARM +TWL_PROC ?= ARM9 + +NITRO_PLATFORM = $(TWL_PLATFORM) +NITRO_MEMSIZE = $(TWL_MEMSIZE) +NITRO_CODEGEN = $(TWL_CODEGEN) +NITRO_PROC = $(TWL_PROC) + +ifndef TWL_CODEGEN_PROC +TWL_CODEGEN_PROC := $(TWL_PROC) +endif + +ifeq ($(TWL_CODEGEN),ALL) +TWL_CODEGEN_ALL ?= TRUE +override TWL_CODEGEN = ARM +endif + +ifeq ($(TWL_CODEGEN),ARM) +TWL_CODEGEN_ARCH = +else # ($(TWL_CODEGEN),THUMB) +TWL_CODEGEN_ARCH = .thumb +endif + +# +# Debugger Type +# +# one of [ISD/KMC/ARM] +# + +TWL_DEBUGGER ?= KMC + + +#---------------------------------------------------------------------------- +# TWL-SDK path settings +# + +TWL_ROOT := $(subst $(SPACE),\ ,$(subst \,/,$(TWLSDK_ROOT))) +TWL_BUILDTOOLSDIR := $(TWL_ROOT)/build/buildtools +TWL_BUILDSETUPDIR := $(TWL_ROOT)/build/buildsetup +TWL_INCDIR := $(TWL_ROOT)/include +TWL_TOOLSDIR := $(TWL_ROOT)/tools +TWL_COMPONENTSDIR := $(TWL_ROOT)/components +TWL_ADDINS ?= $(TWL_ROOT)/add-ins + +TWL_NITROSDK_ROOT ?=$(shell cygpath -w $(NITROSDK_ROOT)) + +TWL_BUILDARCH ?= $(TWL_CODEGEN_PROC)-$(TWL_PLATFORM)$(TWL_CODEGEN_ARCH) +TWL_BUILDARCH_ARM9 := ARM9-$(TWL_PLATFORM)$(TWL_CODEGEN_ARCH) +TWL_BUILDARCH_ARM7 := ARM7-$(TWL_PLATFORM)$(TWL_CODEGEN_ARCH) + +TWL_BUILDTYPE ?= $(TWL_BUILDARCH)/$(TWL_BUILD_DIR) +TWL_BUILDTYPE_ARM9 := $(TWL_BUILDARCH_ARM9)/$(TWL_BUILD_DIR) +TWL_BUILDTYPE_ARM7 := $(TWL_BUILDARCH_ARM7)/$(TWL_BUILD_DIR) + +TWL_LIBARCH := $(TWL_CODEGEN_PROC)-$(TWL_PLATFORM) +TWL_LIBTYPE := $(TWL_LIBARCH)/$(TWL_BUILD_DIR) +TWL_LIBDIR := $(TWL_ROOT)/lib/$(TWL_LIBTYPE) +TWL_LIBSYSCALLDIR := $(TWL_ROOT)/lib/$(TWL_LIBARCH)/etc +TWL_LIBSUFFIX := .twl$(TWL_CODEGEN_ARCH) + + +TWL_SPECDIR := $(TWL_INCDIR)/twl/specfiles +DEFAULT_TWL_LCFILE := $(TWL_SPECDIR)/$(TWL_LIBARCH).lcf +DEFAULT_TWL_LCFILE_TEMPLATE := $(TWL_SPECDIR)/$(TWL_LIBARCH)$(LCF_SUFFIX_).lcf.template +DEFAULT_TWL_LCFILE_SPEC := $(TWL_SPECDIR)/$(TWL_LIBARCH).lsf +DEFAULT_TWL_ROM_SPEC := $(TWL_SPECDIR)/ROM-$(TWL_PLATFORM).rsf + + +### Compiler & Linker settings + +LCFILE_TEMPLATE ?= $(DEFAULT_TWL_LCFILE_TEMPLATE) +LCFILE_SPEC ?= $(DEFAULT_TWL_LCFILE_SPEC) + + +### SDK Library settings + +CRT0_O ?= crt0.o + +ifeq ($(TWL_CODEGEN_PROC),ARM9) + +TWL_LIBS ?= \ + libos$(TWL_LIBSUFFIX).a \ + libmi$(TWL_LIBSUFFIX).a \ + libvlink$(TWL_LIBSUFFIX).a \ + +ifdef TWL_PROFILE_TYPE +TWL_LIBS += libos.$(TWL_PROFILE_TYPE)$(TWL_LIBSUFFIX).a +endif + +else # ($(TWL_CODEGEN_PROC),ARM7) + +TWL_LIBS ?= \ + libos_sp$(TWL_LIBSUFFIX).a \ + libmi_sp$(TWL_LIBSUFFIX).a \ + libvlink_sp$(TWL_LIBSUFFIX).a \ + +ifdef TWL_PROFILE_TYPE +TWL_LIBS += libos_sp.$(TWL_PROFILE_TYPE)$(TWL_LIBSUFFIX).a +endif + +endif + +#---------------------------------------------------------------------------- +### NITRO-commondefs +# +include $(NITROSDK_ROOT)/build/buildtools/commondefs + +#---------------------------------------------------------------------------- + +### Global Library resettings + +GINCLUDES := $(TWL_INCDIR) $(GINCLUDES) +GLIBRARY_DIRS := $(TWL_LIBDIR) $(GLIBRARY_DIRS) +GLIBRARIES := $(TWL_LIBS) \ + $(filter-out libos$(NITRO_LIBSUFFIX).a libos_sp$(NITRO_LIBSUFFIX).a \ + libmi$(NITRO_LIBSUFFIX).a libmi_sp$(NITRO_LIBSUFFIX).a \ + ,$(GLIBRARIES)) + + +#---------------------------------------------------------------------------- +# TWLSDK_INSTALL_ROOT +# + +ifdef TWLSDK_INSTALL_ROOT +TWLSDK_INSTALL_ROOT_ := $(TWLSDK_INSTALL_ROOT) +else +TWLSDK_INSTALL_ROOT_ := $(TWLSDK_ROOT) +endif + +TWL_INSTALL_ROOT := $(subst $(SPACE),\ ,$(subst \,/,$(TWLSDK_INSTALL_ROOT_))) +TWL_INSTALL_INCDIR := $(TWL_INSTALL_ROOT)/include +TWL_INSTALL_TOOLSDIR := $(TWL_INSTALL_ROOT)/tools +TWL_INSTALL_LIBDIR := $(TWL_INSTALL_ROOT)/lib/$(TWL_LIBTYPE) +TWL_INSTALL_COMPONENTSDIR := $(TWL_INSTALL_ROOT)/components +TWL_INSTALL_ADDINS := $(TWL_INSTALL_ROOT)/add-ins + + +#---------------------------------------------------------------------------- +# Compiler flags +# +MACRO_FLAGS += -DSDK_DEBUGGER_$(TWL_DEBUGGER) + + +#---------------------------------------------------------------------------- +### Work-around +# +# TEGではバイトアクセス不可のため +CCFLAGS_PROC += $(CW_AVOID_STRB) + + +#---------------------------------------------------------------------------- +endif # TWLSDK_COMMONDEFS_ +#----- End of commondefs ----- diff --git a/build/buildtools/modulerules b/build/buildtools/modulerules new file mode 100644 index 0000000..96978e3 --- /dev/null +++ b/build/buildtools/modulerules @@ -0,0 +1,31 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - modulerules - common rules for build system +# File: modulerules +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- +ifndef TWLSDK_MODULERULES_ + +#---------------------------------------------------------------------------- +### NITRO-modulerules +# +include $(NITROSDK_ROOT)/build/buildtools/modulerules + +# .axf +$(BINDIR)/$(TARGET_BIN_BASENAME).axf: $(OBJS) $(LCFILE) $(MAKEFILE) $(LDEPENDS_NEF) $(EDEPENDS_NEF) $(ALIBRARIES) $(LDRES_FILE) $(CW_LIBCXX) + $(LD) $(LDFLAGS) $(LIBRARY_DIRS) @$(LDRES_FILE) $(LCFILE) -o $@ + +#---------------------------------------------------------------------------- +TWLSDK_MODULERULES_ = TRUE +endif # TWLSDK_MODULERULES_ +#----- End of modulerules ----- diff --git a/build/libraries/Makefile b/build/libraries/Makefile new file mode 100644 index 0000000..72834fe --- /dev/null +++ b/build/libraries/Makefile @@ -0,0 +1,38 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - libraries +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + + +#---------------------------------------------------------------------------- + +SUBDIRS = \ + init \ + os \ + mi \ + vlink \ + + +#---------------------------------------------------------------------------- +export NITRO_BLXCHECKED = yes + +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/libraries/init/ARM7/Makefile b/build/libraries/init/ARM7/Makefile new file mode 100644 index 0000000..6ec4de8 --- /dev/null +++ b/build/libraries/init/ARM7/Makefile @@ -0,0 +1,59 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - libraries_sp - init +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +SUBDIRS = + + +#---------------------------------------------------------------------------- + +# build ARM & THUMB libraries +TWL_CODEGEN_ALL ?= True + +# Codegen for sub processer +TWL_PROC = ARM7 + +SRCS = crt0.c + +TARGET_OBJ = crt0.o + + +#---------------------------------------------------------------------------- + +# DEBUG版ビルドの場合、RELEASE版でビルドして +# DEBUG版のライブラリを装います。 + +ifdef NITRO_DEBUG +NITRO_BUILD_TYPE = RELEASE +endif + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + +INSTALL_TARGETS = $(TARGETS) +INSTALL_DIR = $(TWL_INSTALL_LIBDIR) + +MACRO_FLAGS += -DSDK_NOINIT + + +#---------------------------------------------------------------------------- + +do-build: $(TARGETS) + + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/libraries/init/ARM7/crt0.c b/build/libraries/init/ARM7/crt0.c new file mode 100644 index 0000000..14edbb7 --- /dev/null +++ b/build/libraries/init/ARM7/crt0.c @@ -0,0 +1,274 @@ +/*---------------------------------------------------------------------------* + Project: TwlSDK - library - init + File: crt0.c + + Copyright 2007 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: $ + $NoKeywords: $ + *---------------------------------------------------------------------------*/ +#include +#include + +extern void NitroSpMain(void); +extern void OS_IrqHandler(void); +extern void *const _start_ModuleParams[]; +static void do_autoload(void); +static void detect_main_memory_size(void); +void _start(void); +void _start_AutoloadDoneCallback(void *argv[]); + +extern void __call_static_initializers(void); +extern void _fp_init(void); + +// from LCF +extern void SDK_IRQ_STACKSIZE(void); +extern void SDK_STATIC_BSS_START(void); // static bss start address +extern void SDK_STATIC_BSS_END(void); // static bss start address +extern void SDK_AUTOLOAD_START(void); // autoload data will start from here +extern void SDK_AUTOLOAD_LIST(void); // start pointer to autoload information +extern void SDK_AUTOLOAD_LIST_END(void); // end pointer to autoload information + +// volatile parameters in IPL's work memory +#define IPL_PARAM_CARD_ROM_HEADER 0x023FE940 +#define IPL_PARAM_DOWNLOAD_PARAMETER 0x023FE904 + +//---- IRQ+SVC stack size in boot (this area is not cleared) +#define INITi_Initial_Stack 0x100 + +/*---------------------------------------------------------------------------* + Name: _start + + Description: Start up + + Arguments: None + + Returns: None. + *---------------------------------------------------------------------------*/ +SDK_WEAK_SYMBOL asm void _start( void ) +{ + //---- set IME = 0 + // ( use that LSB of HW_REG_BASE equal to 0 ) + mov r12, #HW_REG_BASE + str r12, [r12, #REG_IME_OFFSET] + + //---- clear memory + // private-WRAM (except program area) + ldr r1, =SDK_STATIC_BSS_END // r1= max(__bss_end__, #HW_PRV_WRAM) + mov r0, #HW_PRV_WRAM + cmp r0, r1 + movpl r1, r0 + ldr r2, =HW_PRV_WRAM_END - INITi_Initial_Stack + // r2= WRAM_END - r1 - svc+irq stack in boot + mov r0, #0 // r0= clear value +@1: + cmp r1, r2 + stmltia r1!, {r0} + blt @1 + + //---- initialize stack pointer + // SVC mode + mov r0, #HW_PSR_SVC_MODE + msr cpsr_c, r0 + ldr sp, =HW_PRV_WRAM_SVC_STACK_END + + // IRQ mode + mov r0, #HW_PSR_IRQ_MODE + msr cpsr_c, r0 + ldr r0, =HW_PRV_WRAM_IRQ_STACK_END + mov sp, r0 + + // System mode + ldr r1, =SDK_IRQ_STACKSIZE + sub r1, r0, r1 + mov r0, #HW_PSR_SYS_MODE + msr cpsr_csfx, r0 + sub sp, r1, #4 // 4byte for stack check code + + // move parameters from IPL's work memory to shared area + ldr r0, =IPL_PARAM_CARD_ROM_HEADER + ldr r1, =HW_CARD_ROM_HEADER + add r2, r1, #HW_CARD_ROM_HEADER_SIZE +@1_1: + ldr r3, [r0], #4 + str r3, [r1], #4 + cmp r1, r2 + bmi @1_1 + ldr r0, =IPL_PARAM_DOWNLOAD_PARAMETER + add r2, r1, #HW_DOWNLOAD_PARAMETER_SIZE +@1_2: + ldr r3, [r0], #4 + str r3, [r1], #4 + cmp r1, r2 + bmi @1_2 + + //---- load autoload block and initialize bss +// bl do_autoload + + //---- fill static static bss with 0 + ldr r0, =_start_ModuleParams + ldr r1, [r0, #12] // BSS segment start + ldr r2, [r0, #16] // BSS segment end + mov r0, #0 +@2: cmp r1, r2 + strcc r0, [r1], #4 + bcc @2 + + //---- detect main memory size + bl detect_main_memory_size + + //---- set interrupt vector + ldr r1, =HW_INTR_VECTOR_BUF + ldr r0, =OS_IrqHandler + str r0, [r1, #0] + +#ifndef SDK_NOINIT + //---- for C++ + bl _fp_init + bl NitroSpStartUp + bl __call_static_initializers +#endif + + //---- start (to 16bit code) + ldr r1, =NitroSpMain + ldr lr, =HW_RESET_VECTOR + + bx r1 +} + +/*---------------------------------------------------------------------------* + Name: do_autoload + + Description: put autoload data block according to autoload information, + and clear static bss by filling with 0. + + Arguments: None. + + Returns: None. + *---------------------------------------------------------------------------*/ +void *const _start_ModuleParams[] = { + (void *)SDK_AUTOLOAD_LIST, + (void *)SDK_AUTOLOAD_LIST_END, + (void *)SDK_AUTOLOAD_START, + (void *)SDK_STATIC_BSS_START, + (void *)SDK_STATIC_BSS_END, +}; + +static asm void do_autoload( void ) +{ +#define ptable r0 +#define infop r1 +#define infop_end r2 +#define src r3 +#define dest r4 +#define dest_size r5 +#define dest_end r6 +#define tmp r7 + + ldr ptable, =_start_ModuleParams + ldr infop, [ptable, #0] // r1 = start pointer to autoload_info + ldr infop_end, [ptable, #4] // r2 = end pointer to autoload_info + ldr src, [ptable, #8] // r3 = autoload block + + //---- put each blocks according to autoload information +@2: + cmp infop, infop_end // reach to end? + beq @skipout + + ldr dest, [infop], #4 // dest + ldr dest_size, [infop], #4 // size + add dest_end, dest, dest_size // dest_end +@1: + cmp dest, dest_end + ldrmi tmp, [src], #4 // [dest++] <- [src++] + strmi tmp, [dest], #4 + bmi @1 + + //---- fill bss with 0 + ldr dest_size, [infop], #4 // size + add dest_end, dest, dest_size // bss end + mov tmp, #0 +@4: + cmp dest, dest_end + strcc tmp, [dest], #4 + bcc @4 + beq @2 + +@skipout: + // r0 = autoload_params + b _start_AutoloadDoneCallback // Jump into the callback +} + +/*---------------------------------------------------------------------------* + Name: _start_AutoloadDoneCallback + + Description: hook for end of autoload (This is dummy target for DEBUGGER) + + Arguments: argv: pointer for autoload parameters + argv[0] = SDK_AUTOLOAD_LIST + argv[1] = SDK_AUTOLOAD_LIST_END + argv[2] = SDK_AUTOLOAD_START + argv[3] = SDK_STATIC_BSS_START + argv[4] = SDK_STATIC_BSS_END + + Returns: None. + *---------------------------------------------------------------------------*/ +SDK_WEAK_SYMBOL asm void _start_AutoloadDoneCallback( void* argv[] ) +{ + bx lr +} + +/*---------------------------------------------------------------------------* + Name: detect_main_memory_size + + Description: detect main memory size. + result is written into (u32*)HW_MMEMCHECKER_SUB. + value is [OS_CONSOLE_SIZE_4MB|OS_CONSOLE_SIZE_8MB] + + Arguments: None. + + Returns: None. + *---------------------------------------------------------------------------*/ +#define OSi_IMAGE_DIFFERENCE 0x400000 + +static asm void detect_main_memory_size( void ) +{ + mov r0, #OS_CONSOLE_SIZE_4MB + mov r1, #0 + + ldr r2, =HW_MMEMCHECKER_SUB + sub r3, r2, #OSi_IMAGE_DIFFERENCE +@1: + strh r1, [r2] + ldrh r12, [r3] + cmp r1, r12 + + movne r0, #OS_CONSOLE_SIZE_8MB + bne @2 + + add r1, r1, #1 + cmp r1, #2 // check 2 loop + bne @1 +@2: + strh r0, [r2] + bx lr +} + +/*---------------------------------------------------------------------------* + Name: NitroSpStartUp + + Description: hook for user start up + + Arguments: None + + Returns: None. + *---------------------------------------------------------------------------*/ +SDK_WEAK_SYMBOL void NitroSpStartUp(void) +{ +} diff --git a/build/libraries/init/ARM9/Makefile b/build/libraries/init/ARM9/Makefile new file mode 100644 index 0000000..286ddce --- /dev/null +++ b/build/libraries/init/ARM9/Makefile @@ -0,0 +1,43 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - libraries - init +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +SUBDIRS = + + +#---------------------------------------------------------------------------- + +# build ARM & THUMB libraries +TWL_CODEGEN_ALL ?= True + +SRCS = crt0.c +TARGET_OBJ = crt0.o + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + +INSTALL_TARGETS = $(TARGETS) +INSTALL_DIR = $(TWL_INSTALL_LIBDIR) + + +#---------------------------------------------------------------------------- + +do-build: $(TARGETS) + + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/libraries/init/ARM9/crt0.c b/build/libraries/init/ARM9/crt0.c new file mode 100644 index 0000000..6a056a6 --- /dev/null +++ b/build/libraries/init/ARM9/crt0.c @@ -0,0 +1,631 @@ +/*---------------------------------------------------------------------------* + Project: TwlSDK - library - init + File: crt0.c + + Copyright 2007 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: $ + $NoKeywords: $ + *---------------------------------------------------------------------------*/ +#include +#include + +extern void NitroMain(void); +extern void OS_IrqHandler(void); +static void do_autoload(void); +static void init_cp15(void); +void _start(void); +static void INITi_CpuClear32(register u32 data, register void *destp, register u32 size); +extern void *const _start_ModuleParams[]; +void _start_AutoloadDoneCallback(void *argv[]); + +extern void __call_static_initializers(void); +extern void _fp_init(void); + +// from LCF +extern void SDK_IRQ_STACKSIZE(void); +extern void SDK_AUTOLOAD_START(void); // autoload data will start from here +extern void SDK_AUTOLOAD_LIST(void); // start pointer to autoload information +extern void SDK_AUTOLOAD_LIST_END(void); // end pointer to autoload information +extern void SDK_STATIC_BSS_START(void); // static bss start address +extern void SDK_STATIC_BSS_END(void); // static bss end address + +#include +#define SDK_VERSION_ID ((u32)SDK_VERSION_MAJOR<<24|\ + (u32)SDK_VERSION_MINOR<<16|\ + (u32)SDK_VERSION_RELSTEP) + +#define SDK_NITROCODE_LE 0x2106c0de +#define SDK_NITROCODE_BE 0xdec00621 + + +/*---------------------------------------------------------------------------* + Name: _start + + Description: Start up + + Arguments: None + + Returns: None. + *---------------------------------------------------------------------------*/ +#define INITi_HW_DTCM SDK_AUTOLOAD_DTCM_START + +SDK_WEAK_SYMBOL asm void _start( void ) +{ + //---- set IME = 0 + // ( use that LSB of HW_REG_BASE equal to 0 ) + mov r12, #HW_REG_BASE + str r12, [r12, #REG_IME_OFFSET] + + //---- initialize cp15 + bl init_cp15 + + //---- initialize stack pointer + // SVC mode + mov r0, #HW_PSR_SVC_MODE + msr cpsr_c, r0 + ldr r0, =INITi_HW_DTCM + add r0, r0, #0x3fc0 + mov sp, r0 + + // IRQ mode + mov r0, #HW_PSR_IRQ_MODE + msr cpsr_c, r0 + ldr r0, =INITi_HW_DTCM + add r0, r0, #0x3fc0 + sub r0, r0, #HW_SVC_STACK_SIZE + sub sp, r0, #4 // 4byte for stack check code + tst sp, #4 + subeq sp, sp, #4 // for 8byte-alignment + + // System mode + ldr r1, =SDK_IRQ_STACKSIZE + sub r1, r0, r1 + mov r0, #HW_PSR_SYS_MODE + msr cpsr_csfx, r0 + sub sp, r1, #4 // 4byte for stack check code + + //---- clear memory + // DTCM (16KB) + mov r0, #0 + ldr r1, =INITi_HW_DTCM + mov r2, #HW_DTCM_SIZE + bl INITi_CpuClear32 + + // BG/OBJ palette (1KB) + mov r0, #0 + ldr r1, =HW_PLTT + mov r2, #HW_PLTT_SIZE + bl INITi_CpuClear32 + + // OAM (1KB) + mov r0, #0x0200 + ldr r1, =HW_OAM + mov r2, #HW_OAM_SIZE + bl INITi_CpuClear32 + + //---- load autoload block and initialize bss + ldr r1, =_start_ModuleParams + ldr r0, [r1, #20] // r0 = bottom of compressed data + bl MIi_UncompressBackward +// bl do_autoload + + //---- fill static static bss with 0 + ldr r0, =_start_ModuleParams + ldr r1, [r0, #12] // BSS segment start + ldr r2, [r0, #16] // BSS segment end + mov r3, r1 // for next step(flush bss) + mov r0, #0 +@1: cmp r1, r2 + strcc r0, [r1], #4 + bcc @1 + + //---- flush static bss region + // (r0 == #0, r3 == _start_ModuleParams::BSS_segment_start) + bic r1, r3, #HW_CACHE_LINE_SIZE - 1 +@cacheflush: + mcr p15, 0, r0, c7, c10, 4 // wait writebuffer empty + mcr p15, 0, r1, c7, c5, 1 // ICache + mcr p15, 0, r1, c7, c14, 1 // DCache + add r1, r1, #HW_CACHE_LINE_SIZE + cmp r1, r2 + blt @cacheflush + + // print buffer (used for ARM7's printing) + ldr r1, =HW_COMPONENT_PARAM + str r0, [r1, #0] + + //---- set interrupt vector + ldr r1, =INITi_HW_DTCM + add r1, r1, #0x3fc0 + add r1, r1, #HW_DTCM_SYSRV_OFS_INTR_VECTOR + ldr r0, =OS_IrqHandler + str r0, [r1, #0] + +#ifndef SDK_NOINIT + //---- for C++ + bl _fp_init + bl NitroStartUp + bl __call_static_initializers +#endif + //---- start (to 16bit code) + ldr r1, =NitroMain + ldr lr, =HW_RESET_VECTOR + + tst sp, #4 + subne sp, sp, #4 // for 8byte-alignment + bx r1 +} + + +/*---------------------------------------------------------------------------* + Name: INITi_CpuClear32 + + Description: fill memory with specified data. + 32bit version + + Arguments: data : fill data + destp : destination address + size : size (byte) + + Returns: None + *---------------------------------------------------------------------------*/ +static asm void INITi_CpuClear32( register u32 data, register void *destp, register u32 size ) +{ + add r12, r1, r2 // r12: destEndp = destp + size +@20: + cmp r1, r12 // while (destp < destEndp) + stmltia r1!, {r0} // *((vu32 *)(destp++)) = data + blt @20 + bx lr +} + + +/*---------------------------------------------------------------------------* + Name: _start_ModuleParams + + Description: autoload/compress/arguments data block + + Arguments: None. + + Returns: None. + *---------------------------------------------------------------------------*/ +void *const _start_ModuleParams[] = { + (void *)SDK_AUTOLOAD_LIST, + (void *)SDK_AUTOLOAD_LIST_END, + (void *)SDK_AUTOLOAD_START, + (void *)SDK_STATIC_BSS_START, + (void *)SDK_STATIC_BSS_END, + (void *)0, // CompressedStaticEnd + (void *)0, //SDK_VERSION_ID, // SDK version info + (void *)SDK_NITROCODE_BE, // Checker 1 + (void *)SDK_NITROCODE_LE, // Checker 2 +}; + +/*---------------------------------------------------------------------------* + Name: MIi_UncompressBackward + + Description: Uncompress special archive for module compression + + Arguments: bottom = Bottom adrs of packed archive + 1 + bottom[-8..-6] = offset for top of compressed data + inp_top = bottom - bottom[-8..-6] + bottom[-5] = offset for bottom of compressed data + inp = bottom - bottom[-5] + bottom[-4..-1] = offset for bottom of original data + outp = bottom + bottom[-4..-1] + + typedef struct + { + u32 bufferTop:24; + u32 compressBottom:8; + u32 originalBottom; + } CompFooter; + + Returns: None. + *---------------------------------------------------------------------------*/ +asm void MIi_UncompressBackward( register void* bottom ) +{ +#define data r0 +#define inp_top r1 +#define outp r2 +#define inp r3 +#define outp_save r4 +#define flag r5 +#define count8 r6 +#define index r7 +#define len r12 + cmp bottom, #0 + beq @exit + stmfd sp!, {r4-r7} + ldmdb bottom, {r1-r2} + add outp, bottom, outp + sub inp, bottom, inp_top, LSR #24 + bic inp_top, inp_top, #0xff000000 + sub inp_top, bottom, inp_top + mov outp_save, outp +@loop: + cmp inp, inp_top // exit if inp==inp_top + ble @end_loop + ldrb flag, [inp, #-1]! // r4 = compress_flag = *--inp + mov count8, #8 +@loop8: + subs count8, count8, #1 + blt @loop + tst flag, #0x80 + bne @blockcopy +@bytecopy: + ldrb data, [inp, #-1]! +#ifdef SDK_TEG + sub outp, outp, #1 + swpb data, data, [outp] +#else + strb data, [outp, #-1]! // Copy 1 byte +#endif + b @joinhere +@blockcopy: + ldrb len, [inp, #-1]! + ldrb index, [inp, #-1]! + orr index, index, len, LSL #8 + bic index, index, #0xf000 + add index, index, #0x0002 + add len, len, #0x0020 +@patterncopy: + ldrb data, [outp, index] +#ifdef SDK_TEG + sub outp, outp, #1 + swpb data, data, [outp] +#else + strb data, [outp, #-1]! +#endif + subs len, len, #0x0010 + bge @patterncopy + +@joinhere: + cmp inp, inp_top + mov flag, flag, LSL #1 + bgt @loop8 +@end_loop: + + // DC_FlushRange & IC_InvalidateRange + mov r0, #0 + bic inp, inp_top, #HW_CACHE_LINE_SIZE - 1 +@cacheflush: + mcr p15, 0, r0, c7, c10, 4 // wait writebuffer empty + mcr p15, 0, inp, c7, c5, 1 // ICache + mcr p15, 0, inp, c7, c14, 1 // DCache + add inp, inp, #HW_CACHE_LINE_SIZE + cmp inp, outp_save + blt @cacheflush + + ldmfd sp!, {r4-r7} +@exit bx lr +} + + +/*---------------------------------------------------------------------------* + Name: do_autoload + + Description: put autoload data block according to autoload information, + and clear static bss by filling with 0. + + Arguments: None. + + Returns: None. + *---------------------------------------------------------------------------*/ +static asm void do_autoload( void ) +{ +#define ptable r0 +#define infop r1 +#define infop_end r2 +#define src r3 +#define dest r4 +#define dest_begin r5 +#define dest_end r6 +#define tmp r7 + + ldr ptable, =_start_ModuleParams + ldr infop, [ptable, #0] // r1 = start pointer to autoload_info + ldr infop_end, [ptable, #4] // r2 = end pointer to autoload_info + ldr src, [ptable, #8] // r3 = autoload block + +@2: + cmp infop, infop_end // reach to end? + beq @skipout + + ldr dest_begin,[infop], #4 // dest_begin + ldr tmp, [infop], #4 // size + add dest_end, dest_begin, tmp // dest_end + mov dest, dest_begin // dest working pointer +@1: + cmp dest, dest_end + ldrmi tmp, [src], #4 // [dest++] <- [src++] + strmi tmp, [dest], #4 + bmi @1 + + //---- fill bss with 0 + ldr tmp, [infop], #4 // size + add dest_end, dest, tmp // bss end + mov tmp, #0 +@3: + cmp dest, dest_end + strcc tmp, [dest], #4 + bcc @3 + + //---- cache work (DC_FlushRange & IC_InvalidateRange) + bic dest, dest_begin, #HW_CACHE_LINE_SIZE - 1 +@cacheflush: + mcr p15, 0, tmp, c7, c10, 4 /* wait writebuffer empty */ + mcr p15, 0, dest, c7, c5, 1 // ICache + mcr p15, 0, dest, c7, c14, 1 // DCache + add dest, dest, #HW_CACHE_LINE_SIZE + cmp dest, dest_end + blt @cacheflush + + b @2 + +@skipout: + // r0 = _start_ModuleParams + b _start_AutoloadDoneCallback // Jump into the callback +} + +/*---------------------------------------------------------------------------* + Name: _start_AutoloadDoneCallback + + Description: hook for end of autoload (This is dummy target for DEBUGGER) + + Arguments: argv: pointer for autoload parameters + argv[0] = SDK_AUTOLOAD_LIST + argv[1] = SDK_AUTOLOAD_LIST_END + argv[2] = SDK_AUTOLOAD_START + argv[3] = SDK_STATIC_BSS_START + argv[4] = SDK_STATIC_BSS_END + + Returns: None. + *---------------------------------------------------------------------------*/ +SDK_WEAK_SYMBOL asm void _start_AutoloadDoneCallback( void* argv[] ) +{ + bx lr +} + +//----------------------------------------------------------------------- +// システム制御コプロセッサ 初期化 +//----------------------------------------------------------------------- +static asm void init_cp15(void) +{ + // プロテクションユニット/キャッシュ/TCM ディセーブル + + mrc p15, 0, r0, c1, c0, 0 + ldr r1, =HW_C1_ICACHE_ENABLE | HW_C1_DCACHE_ENABLE \ + | HW_C1_ITCM_ENABLE | HW_C1_DTCM_ENABLE \ + | HW_C1_ITCM_LOAD_MODE | HW_C1_DTCM_LOAD_MODE \ + | HW_C1_LD_INTERWORK_DISABLE \ + | HW_C1_PROTECT_UNIT_ENABLE + bic r0, r0, r1 + mcr p15, 0, r0, c1, c0, 0 + + // キャッシュ無効化 + mov r0, #0 + mcr p15, 0, r0, c7, c5, 0 // 命令キャッシュ + mcr p15, 0, r0, c7, c6, 0 // データキャッシュ + + // ライトバッファ エンプティ待ち + mcr p15, 0, r0, c7, c10, 4 + +/* +; Region G: BACK_GROUND: Base = 0x0, Size = 4GB, I:NC NB / D:NC NB, I:NA / D:NA +; Region 0: IO_VRAM: Base = 0x04000000, Size = 64MB, I:NC NB / D:NC NB, I:RW / D:RW +; Region 1Rel: MAIN_MEM: Base = 0x02000000, Size = 8MB*, I:Cach Buf / D:Cach Buf, I:RW / D:RW +; Region 1Dbg: MAIN_MEM: Base = 0x02000000, Size = 8MB, I:Cach Buf / D:Cach Buf, I:RW / D:RW +; (* Size will be arranged in OS_InitArena(). ) +; Region 2Rel: SOUND_DATA: Base = 0x02380000, Size = 512KB, I:NC NB / D:NC NB, I:NA / D:NA +; Region 2D4M: SOUND_DATA: Base = 0x02300000, Size = 1MB, I:NC NB / D:NC NB, I:NA / D:NA +; Region 2D8M: SOUND_DATA: Base = 0x02600000, Size = 2MB, I:NC NB / D:NC NB, I:NA / D:NA +; Region 3: CARTRIDGE: Base = 0x08000000, Size = 128MB, I:NC NB / D:NC NB, I:NA / D:RW +; Region 4: DTCM: Base = SOUND_DATA, Size = 16KB, I:NC NB / D:NC NB, I:NA / D:RW +; Region 5: ITCM: Base = 0x01000000, Size = 16MB, I:NC NB / D:NC NB, I:RW / D:RW + +; Region 6: BIOS: Base = 0xffff0000, Size = 32KB, I:Cach NB / D:Cach NB, I:RO / D:RO +; Region 7: SHARE_WORK: Base = 0x027ff000, Size = 4KB, I:NC NB / D:NC NB, I:NA / D:RW +;(Region 7: DBG_RESERVE: Base = 0x02700000, Size = 1MB, I:NC NB / D:NC NB, I:RW / D:RW) +*/ +#define SET_PROTECTION_A( id, adr, siz ) ldr r0, =(adr|HW_C6_PR_##siz|HW_C6_PR_ENABLE) +#define SET_PROTECTION_B( id, adr, siz ) mcr p15, 0, r0, c6, id, 0 +#define REGION_BIT(a,b,c,d,e,f,g,h) (((a)<<0)|((b)<<1)|((c)<<2)|((d)<<3)|((e)<<4)|((f)<<5)|((g)<<6)|((h)<<7)) +#define REGION_ACC(a,b,c,d,e,f,g,h) (((a)<<0)|((b)<<4)|((c)<<8)|((d)<<12)|((e)<<16)|((f)<<20)|((g)<<24)|((h)<<28)) +#define NA 0 +#define RW 1 +#define RO 5 + + + // + // メモリリージョン初期化 + // + //---- I/O レジスタ & VRAM 等 + SET_PROTECTION_A( c0, HW_IOREG, 64MB ) + SET_PROTECTION_B( c0, HW_IOREG, 64MB ) + + //---- メインメモリ + SET_PROTECTION_A( c1, HW_MAIN_MEM_MAIN, 8MB ) + SET_PROTECTION_B( c1, HW_MAIN_MEM_MAIN, 8MB ) + + //---- サウンドデータ領域 +#if HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x1000 + SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 4KB ) + SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 4KB ) +#elif HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x2000 + SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 8KB ) + SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 8KB ) +#elif HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x4000 + SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 16KB ) + SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 16KB ) +#elif HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x8000 + SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 32KB ) + SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 32KB ) +#elif HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x10000 + SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 64KB ) + SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 64KB ) +#elif HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x20000 + SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 128KB ) + SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 128KB ) +#elif HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x40000 + SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 256KB ) + SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 256KB ) +#elif HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x80000 + SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 512KB ) + SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 512KB ) +#elif HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x100000 + SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 1MB ) + SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 1MB ) +#elif HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x200000 + SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 2MB ) + SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 2MB ) +#else +#pragma message(ERROR: Size unmatch HW_MAIN_MEM_SUB_SIZE) +#endif + + //---- カートリッジ又は他の用途 + // CPU 内部ワーク RAM 等 + SET_PROTECTION_A( c3, HW_CTRDG_ROM, 128MB ) + SET_PROTECTION_B( c3, HW_CTRDG_ROM, 128MB ) + + //---- データ TCM + // + CPU 内部ワーク RAM の場合あり +//#if (HW_DTCM & 0x3FFF) != 0 +//#pragma message(ERROR: HW_DTCM need to be aligned 16KB!) +//#endif + +// SET_PROTECTION_A( c4, HW_DTCM, 16KB ) + ldr r0, =SDK_AUTOLOAD_DTCM_START + orr r0, r0, #HW_C6_PR_16KB + orr r0, r0, #HW_C6_PR_ENABLE + SET_PROTECTION_B( c4, HW_DTCM, 16KB ) + + //---- 命令 TCM + // データ TCM より優先が高い、メインメモリ領域までのイメージ + SET_PROTECTION_A( c5, HW_ITCM_IMAGE, 16MB ) + SET_PROTECTION_B( c5, HW_ITCM_IMAGE, 16MB ) + + //---- BIOS + SET_PROTECTION_A( c6, HW_BIOS, 32KB ) + SET_PROTECTION_B( c6, HW_BIOS, 32KB ) + + //---- SHARED CPU 間通信ワーク領域 + SET_PROTECTION_A( c7, HW_MAIN_MEM_SHARED, 4KB ) + SET_PROTECTION_B( c7, HW_MAIN_MEM_SHARED, 4KB ) + +#if HW_MAIN_MEM_SHARED_SIZE != 0x1000 +#pragma message(ERROR: Size unmatch HW_MAIN_MEM_SHARED_SIZE) +#endif + + // + // 命令TCM 設定 + // + mov r0, #HW_C9_TCMR_32MB + mcr p15, 0, r0, c9, c1, 1 + + // + // データTCM 設定 + // + ldr r0, =INITi_HW_DTCM + orr r0, r0, #HW_C9_TCMR_16KB + mcr p15, 0, r0, c9, c1, 0 + + // + // 命令キャッシュ イネーブル (リージョン設定) + // 1: MAIN_MEM + // 6: BIOS + // + mov r0, #REGION_BIT(0,1,0,0,0,0,1,0) + mcr p15, 0, r0, c2, c0, 1 + + // + // データキャッシュ イネーブル (リージョン設定) + // 1: MAIN_MEM + // 6: BIOS + // + mov r0, #REGION_BIT(0,1,0,0,0,0,1,0) + mcr p15, 0, r0, c2, c0, 0 + + // + // ライトバッファ イネーブル(リージョン設定) + // 1: MAIN_MEM + // + mov r0, #REGION_BIT(0,1,0,0,0,0,0,0) + mcr p15, 0, r0, c3, c0, 0 + + // + // 命令アクセス許可 (リージョン設定) + // IO_VRAM : RW + // MAIN_MEM_MAIN : RW + // MAIN_MEM_SUB : NA + // CTRDG : NA + // DTCM : NA + // ITCM : RW + // BIOS : RO + // SHARED : NA + // + ldr r0, =REGION_ACC(RW,RW,NA,NA,NA,RW,RO,NA) + mcr p15, 0, r0, c5, c0, 3 + + // + // データアクセス許可(リージョン設定) + // IO_VRAM : RW + // MAIN_MEM_MAIN : RW + // MAIN_MEM_SUB : NA + // CTRDG : RW + // DTCM : RW + // ITCM : RW + // BIOS : RO + // SHARED : RW + // + ldr r0, =REGION_ACC(RW,RW,NA,RW,RW,RW,RO,RW) + mcr p15, 0, r0, c5, c0, 2 + + // + // システム制御コプロセッサ マスター設定 + // + mrc p15, 0, r0, c1, c0, 0 + ldr r1,=HW_C1_ICACHE_ENABLE | HW_C1_DCACHE_ENABLE | HW_C1_CACHE_ROUND_ROBIN \ + | HW_C1_ITCM_ENABLE | HW_C1_DTCM_ENABLE \ + | HW_C1_SB1_BITSET | HW_C1_EXCEPT_VEC_UPPER \ + | HW_C1_PROTECT_UNIT_ENABLE + orr r0, r0, r1 + mcr p15, 0, r0, c1, c0, 0 + + bx lr +} + + +/*---------------------------------------------------------------------------* + Name: NitroStartUp + + Description: hook for user start up + + Arguments: None + + Returns: None. + *---------------------------------------------------------------------------*/ +SDK_WEAK_SYMBOL void NitroStartUp(void) +{ +} + +/*---------------------------------------------------------------------------* + Name: OSi_ReferSymbol + + Description: used by SDK_REFER_SYMBOL macro to avoid dead-strip. + + Arguments: symbol unused + + Returns: None. + *---------------------------------------------------------------------------*/ +void OSi_ReferSymbol(void *symbol) +{ +#pragma unused(symbol) +} diff --git a/build/libraries/init/Makefile b/build/libraries/init/Makefile new file mode 100644 index 0000000..c9177d0 --- /dev/null +++ b/build/libraries/init/Makefile @@ -0,0 +1,34 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - libraries - init +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + + +#---------------------------------------------------------------------------- + +SUBDIRS = ARM9 + +#ifdef TWL_WITH_ARM7 +SUBDIRS += ARM7 +#endif + +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/libraries/mi/ARM7/Makefile b/build/libraries/mi/ARM7/Makefile new file mode 100644 index 0000000..66a1834 --- /dev/null +++ b/build/libraries/mi/ARM7/Makefile @@ -0,0 +1,75 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - libraries - mi/ARM7 +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +SUBDIRS = + + +#---------------------------------------------------------------------------- + +# build ARM & THUMB libraries +TWL_CODEGEN_ALL ?= True + +# Codegen for sub processer +TWL_PROC = ARM7 + +SRCDIR = ../common . +SRCDIR += $(TWL_NITROSDK_ROOT)/build/libraries/mi/common/src \ + $(TWL_NITROSDK_ROOT)/build/libraries/mi/ARM7/src \ + +INCDIR = ../common +INCDIR += $(TWL_NITROSDK_ROOT)/build/libraries/mi/common/include \ + +SRCS = mi_dma.c \ + mi_dma_hblank.c \ + mi_dma_vblank.c \ + mi_dma_mainmem.c \ + mi_dma_gxcommand.c \ + mi_memory.c \ + mi_swap.c \ + mi_uncompress.c \ + mi_byteAccess.c \ + mi_stream.c \ + mi_card.c \ + mi_dma_card.c \ + mi_exMemory.c + +TARGET_LIB = libmi_sp$(TWL_LIBSUFFIX).a + + +#---------------------------------------------------------------------------- + +# DEBUG版ビルドの場合、RELEASE版でビルドして +# DEBUG版のライブラリを装います。 + +ifdef NITRO_DEBUG +NITRO_BUILD_TYPE = RELEASE +endif + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + +INSTALL_TARGETS = $(TARGETS) +INSTALL_DIR = $(TWL_INSTALL_LIBDIR) + + +#---------------------------------------------------------------------------- + +do-build: $(TARGETS) + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/libraries/mi/ARM9/Makefile b/build/libraries/mi/ARM9/Makefile new file mode 100644 index 0000000..7fa323c --- /dev/null +++ b/build/libraries/mi/ARM9/Makefile @@ -0,0 +1,66 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - libraries - mi/ARM9 +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +SUBDIRS = + +#---------------------------------------------------------------------------- + +# build ARM & THUMB libraries +TWL_CODEGEN_ALL ?= True + +SRCDIR = ../common . +SRCDIR += $(TWL_NITROSDK_ROOT)/build/libraries/mi/common/src \ + $(TWL_NITROSDK_ROOT)/build/libraries/mi/ARM9/src \ + +INCDIR = ../common +INCDIR += $(TWL_NITROSDK_ROOT)/build/libraries/mi/common/include \ + +SRCS = mi_wram.c \ + mi_dma.c \ + mi_dma_hblank.c \ + mi_dma_vblank.c \ + mi_dma_mainmem.c \ + mi_dma_gxcommand.c \ + mi_memory.c \ + mi_swap.c \ + mi_uncompress.c \ + mi_byteAccess.c \ + mi_stream.c \ + mi_card.c \ + mi_dma_card.c \ + mi_uncomp_stream.c \ + mi_compress.c \ + mi_exMemory.c \ + mi_init.c + +TARGET_LIB = libmi$(TWL_LIBSUFFIX).a + + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + +INSTALL_TARGETS = $(TARGETS) +INSTALL_DIR = $(TWL_INSTALL_LIBDIR) + + +#---------------------------------------------------------------------------- + +do-build: $(TARGETS) + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/libraries/mi/Makefile b/build/libraries/mi/Makefile new file mode 100644 index 0000000..12626d2 --- /dev/null +++ b/build/libraries/mi/Makefile @@ -0,0 +1,34 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - libraries - mi +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + + +#---------------------------------------------------------------------------- + +SUBDIRS = ARM9 + +#ifdef TWL_WITH_ARM7 +SUBDIRS += ARM7 +#endif + +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/libraries/os/ARM7/Makefile b/build/libraries/os/ARM7/Makefile new file mode 100644 index 0000000..b1170f3 --- /dev/null +++ b/build/libraries/os/ARM7/Makefile @@ -0,0 +1,85 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - libraries_sp - os +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +SUBDIRS = +#SUBMAKES = Makefile.CALLTRACE \ +# Makefile.FUNCTIONCOST + +#---------------------------------------------------------------------------- + +# build ARM & THUMB libraries +TWL_CODEGEN_ALL ?= TRUE + +# Codegen for sub processer +TWL_PROC = ARM7 + +SRCDIR = ../common . +SRCDIR += $(TWL_NITROSDK_ROOT)/build/libraries/os/common/src \ + $(TWL_NITROSDK_ROOT)/build/libraries/os/ARM7/src \ + +SRCS = \ + os_init_twl.c \ + os_spinLock_twl.c \ + os_printf_twl.c \ + os_system_twl.c \ + os_entropy_twl.c \ + os_terminate_twl_sp.c \ + os_irqHandler.c \ + os_irqTable.c \ + os_interrupt.c \ + os_thread.c \ + os_context.c \ + os_emulator.c \ + os_message.c \ + os_mutex.c \ + os_arena.c \ + os_alloc.c \ + os_exception.c \ + os_timer.c \ + os_tick.c \ + os_alarm.c \ + os_valarm.c \ + os_profile.c \ + os_reset.c \ + os_ownerInfo.c \ + +TARGET_LIB = libos_sp$(TWL_LIBSUFFIX).a + + +#---------------------------------------------------------------------------- + +# DEBUG版ビルドの場合、RELEASE版でビルドして +# DEBUG版のライブラリを装います。 + +ifdef NITRO_DEBUG +NITRO_BUILD_TYPE = RELEASE +endif + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + +INSTALL_TARGETS = $(TARGETS) +INSTALL_DIR = $(TWL_INSTALL_LIBDIR) + + +#---------------------------------------------------------------------------- + +do-build: $(TARGETS) + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/libraries/os/ARM7/os_terminate_twl_sp.c b/build/libraries/os/ARM7/os_terminate_twl_sp.c new file mode 100644 index 0000000..8b63e13 --- /dev/null +++ b/build/libraries/os/ARM7/os_terminate_twl_sp.c @@ -0,0 +1,87 @@ +/*---------------------------------------------------------------------------* + Project: NitroSDK - OS + File: os_terminate_sp.c + + Copyright 2006 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: os_terminate_sp.c,v $ + Revision 1.2 2006/01/18 02:11:30 kitase_hirotake + do-indent + + Revision 1.1 2006/01/10 05:58:35 okubata_ryoma + os_terminate_sp.cの追加 + + $NoKeywords: $ + *---------------------------------------------------------------------------*/ +#include +#include + +//============================================================================ +// TERMINATE and HALT +//============================================================================ +/*---------------------------------------------------------------------------* + Name: OS_Terminate + + Description: Halt CPU and loop + + Arguments: None + + Returns: -- (Never return) + *---------------------------------------------------------------------------*/ +SDK_WEAK_SYMBOL void OS_Terminate(void) +{ + //VIB_STOP + CTRDG_VibPulseEdgeUpdate(NULL); + + while (1) + { + (void)OS_DisableInterrupts(); + OS_Halt(); + } +} + +/*---------------------------------------------------------------------------* + Name: OS_Exit + + Description: Display exit string and Terminate. + This is useful for 'loadrun' tool command. + + Arguments: status : exit status + + Returns: -- (Never return) + *---------------------------------------------------------------------------*/ +SDK_WEAK_SYMBOL void OS_Exit(int status) +{ +#ifdef SDK_FINALROM +#pragma unused( status ) +#endif + (void)OS_DisableInterrupts(); + OS_Printf("\n" OS_EXIT_STRING, status); + OS_Terminate(); +} + +/*---------------------------------------------------------------------------* + Name: OS_Halt + + Description: Halt CPU + + Arguments: None + + Returns: None + *---------------------------------------------------------------------------*/ +#ifdef SDK_DEBUGGER_ARM +#include +SDK_WEAK_SYMBOL asm void OS_Halt( void ) +{ + mov r0, #0 + mcr p15, 0, r0, c7, c0, 4 + bx lr +} +#include +#endif diff --git a/build/libraries/os/ARM9/Makefile b/build/libraries/os/ARM9/Makefile new file mode 100644 index 0000000..628d071 --- /dev/null +++ b/build/libraries/os/ARM9/Makefile @@ -0,0 +1,99 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: NitroSDK - libraries - os +# File: Makefile +# +# Copyright 2003-2005 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: Makefile,v $ +# Revision 1.3 2005/05/25 11:42:54 terui +# Makefile.CORE を include するように修正 +# +# Revision 1.2 2004/09/13 05:37:28 yasu +# merged with NitroSDK_2_00pr6_branch +# +# Revision 1.1.2.1 2004/09/13 04:39:29 yasu +# build libos for TS_VERSION=0,100 and 200 +# +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +SUBDIRS = +SUBMAKES = + + +#---------------------------------------------------------------------------- + +# build ARM & THUMB libraries +TWL_CODEGEN_ALL ?= True + +SRCDIR = ../common . +SRCDIR += $(TWL_NITROSDK_ROOT)/build/libraries/os/common/src \ + $(TWL_NITROSDK_ROOT)/build/libraries/os/ARM9/src \ + +SRCS = \ + os_init_twl.c \ + os_spinLock_twl.c \ + os_printf_twl.c \ + os_system_twl.c \ + os_entropy_twl.c \ + os_irqHandler.c \ + os_irqTable.c \ + os_interrupt.c \ + os_thread.c \ + os_context.c \ + os_emulator.c \ + os_message.c \ + os_mutex.c \ + os_cache.c \ + os_arena.c \ + os_alloc.c \ + os_tcm.c \ + os_protectionUnit.c \ + os_protectionRegion.c \ + os_exception.c \ + os_timer.c \ + os_tick.c \ + os_alarm.c \ + os_valarm.c \ + os_profile.c \ + os_reset.c \ + os_ownerInfo.c \ + os_vramExclusive.c \ + os_china.c \ + os_argument.c \ + os_terminate_proc.c \ + + +TARGET_LIB = libos$(TWL_LIBSUFFIX).a + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + +INSTALL_TARGETS = $(TARGETS) +INSTALL_DIR = $(TWL_INSTALL_LIBDIR) + +ifdef NITRO_CALLTRACE +CCFLAGS += -DOS_PROFILE_AVAILABLE -DOS_PROFILE_CALL_TRACE +endif + +ifdef NITRO_FUNCTIONCOST +CCFLAGS += -DOS_PROFILE_AVAILABLE -DOS_PROFILE_FUNCTION_COST +endif + +ifdef NITRO_TCM_APPLY +CCFLAGS += -DSDK_TCM_APPLY +endif + +#---------------------------------------------------------------------------- + +do-build: $(TARGETS) + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + +#===== End of Makefile ===== diff --git a/build/libraries/os/Makefile b/build/libraries/os/Makefile new file mode 100644 index 0000000..e82ee25 --- /dev/null +++ b/build/libraries/os/Makefile @@ -0,0 +1,34 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - libraries - os +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + + +#---------------------------------------------------------------------------- + +SUBDIRS = ARM9 + +#ifdef TWL_WITH_ARM7 +SUBDIRS += ARM7 +#endif + +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/libraries/os/common/os_entropy_twl.c b/build/libraries/os/common/os_entropy_twl.c new file mode 100644 index 0000000..d3d504c --- /dev/null +++ b/build/libraries/os/common/os_entropy_twl.c @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------* + Project: NitroSDK - OS + File: os_entropy.c + + Copyright 2003-2006 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: os_entropy.c,v $ + Revision 1.3 2006/01/18 02:11:30 kitase_hirotake + do-indent + + Revision 1.2 2005/07/27 12:15:36 seiki_masashi + MAC アドレスも追加 + + Revision 1.1 2005/07/27 07:36:41 seiki_masashi + 新規追加 + + $NoKeywords: $ + *---------------------------------------------------------------------------*/ +#include +#include + +//---------------------------------------------------------------------- + +extern vu64 OSi_TickCounter; + +/*---------------------------------------------------------------------------* + Name: OS_GetLowEntropyData + + Description: システム状態によって変化する低エントロピーのデータ列を取得する + + Arguments: buffer - データ列を受け取る配列へのポインタ + + Returns: None. + *---------------------------------------------------------------------------*/ +void OS_GetLowEntropyData(u32 buffer[OS_LOW_ENTROPY_DATA_SIZE / sizeof(u32)]) +{ + // System Work Memory 上の RTC のワーク領域 + const OSSystemWork *work = OS_GetSystemWork(); + const u8 *macAddress = + (u8 *)((u32)(work->nvramUserInfo) + ((sizeof(NVRAMConfig) + 3) & ~0x00000003)); + + buffer[0] = (u32)((GX_GetVCount() << 16) | OS_GetTickLo()); + buffer[1] = (u32)(*(u16 *)(macAddress + 4) << 16) ^ (u32)(OSi_TickCounter); + buffer[2] = (u32)(OSi_TickCounter >> 32) ^ *(u32 *)macAddress ^ work->vblankCount; +#ifdef reg_G3X_GXSTAT + buffer[2] ^= reg_G3X_GXSTAT; +#endif + buffer[3] = *(u32 *)(&work->real_time_clock[0]); + buffer[4] = *(u32 *)(&work->real_time_clock[4]); + buffer[5] = (((u32)work->mic_sampling_data) << 16) ^ work->mic_last_address; + buffer[6] = (u32)((*(u16 *)(&work->touch_panel[0]) << 16) | *(u16 *)(&work->touch_panel[2])); + buffer[7] = (u32)((work->wm_rssi_pool << 16) | (reg_PAD_KEYINPUT | *(vu16 *)HW_BUTTON_XY_BUF)); +} diff --git a/build/libraries/os/common/os_init_twl.c b/build/libraries/os/common/os_init_twl.c new file mode 100644 index 0000000..cc93bcd --- /dev/null +++ b/build/libraries/os/common/os_init_twl.c @@ -0,0 +1,300 @@ +/*---------------------------------------------------------------------------* + Project: NitroSDK - OS + File: os_init.c + + Copyright 2003-2006 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: os_init.c,v $ + Revision 1.50 2006/01/18 02:11:30 kitase_hirotake + do-indent + + Revision 1.49 2005/11/22 09:11:28 yosizaki + support SDK_ENABLE_ARM7_PRINT. + + Revision 1.48 2005/07/19 06:06:11 yada + add irq stack check + + Revision 1.47 2005/04/26 06:54:22 terui + Fix comment + + Revision 1.46 2005/04/18 12:26:59 terui + OSi_CheckOwnerInfo関数を削除 + + Revision 1.45 2005/04/12 10:49:15 terui + 中国語対応の為に改造 + + Revision 1.44 2005/02/28 05:26:28 yosizaki + do-indent. + + Revision 1.43 2005/02/10 07:46:57 yada + let call MI_Init() + + Revision 1.42 2005/02/09 09:17:48 terui + ARM9における初期化時にVRAMの排他制御を初期化する機能を追加。 + + Revision 1.41 2004/10/12 08:01:04 yada + delete OS_InitPrintServer() + + Revision 1.40 2004/10/08 07:49:13 yada + consider for the situation of not calling OS_InitPrintServer() + + Revision 1.39 2004/09/29 06:06:42 yada + OS_InitReset() is not called if SDK_SMALL_BUILD defined + + Revision 1.38 2004/09/29 06:02:34 yada + CARD_Init() is not called if SDK_SMALL_BUILD defined + + Revision 1.37 2004/09/28 00:03:36 yada + add CARD_Init() in OS_Init() on ARM9 + + Revision 1.36 2004/09/15 06:15:20 yada + in SDK_TEG release, PM_Init() not called. + + Revision 1.35 2004/09/15 01:01:08 yada + in case SDK_TEG, CTRDG_Init() not called + + Revision 1.34 2004/09/13 10:48:24 yada + add CTRDG_Init() + + Revision 1.33 2004/09/02 06:18:22 yada + only change comment + + Revision 1.32 2004/09/01 04:20:03 yada + add OS_InitReset() + + Revision 1.31 2004/08/26 12:17:23 yada + always call PM_Init() + + Revision 1.30 2004/08/16 04:22:04 yada + in ensata, not call PM_Init() + + Revision 1.29 2004/08/09 02:12:10 yada + add PM_Init in case of ARM9 + + Revision 1.28 2004/07/27 06:39:55 yada + add checker for system shared validity + + Revision 1.27 2004/07/10 04:07:46 yasu + Add short comment + + Revision 1.26 2004/07/08 02:30:35 yada + add calling OS_InitArenaEx() + + Revision 1.25 2004/05/24 04:50:08 yada + fix profile pragma + + Revision 1.24 2004/05/20 02:56:46 yada + add profile off + + Revision 1.23 2004/05/20 02:51:26 yada + add OS_InitThread() + + Revision 1.22 2004/03/18 12:59:15 yada + ARM7ではException初期化を呼ばないようにした(暫定) + + Revision 1.21 2004/03/09 07:26:18 yada + PXI_Init() 呼び出し位置を OS_InitLock() の上に移動 + + Revision 1.20 2004/03/08 01:55:49 yasu + add PXI_Init() + + Revision 1.19 2004/03/01 11:57:31 yada + 英語の関数comment作成 + + Revision 1.18 2004/02/25 11:31:18 yada + systemClock→Tick に伴う変更 + + Revision 1.17 2004/02/24 11:50:34 yada + OS_Init() の A7側から PAD_InitXYButton() 削除 + + Revision 1.16 2004/02/24 04:50:59 yada + A9側に OS_InitValarm をいれた。 + + Revision 1.15 2004/02/20 12:24:21 yada + A7のOS_Init() コメントアウトはずし + + Revision 1.14 2004/02/20 08:29:18 yasu + Temporary fix + + Revision 1.13 2004/02/19 08:42:11 yada + A7側アリーナの初期化追加 + + Revision 1.12 2004/02/18 08:56:56 yada + A7 からは OS_InitArea() を呼ばないようにした + + Revision 1.11 2004/02/18 01:20:04 yada + ARM7にsystemClock,Alarm,XYButtonのinitを入れた + + Revision 1.10 2004/02/13 02:29:59 yada + ARM9とAMR7 の場合わけ考慮 + + Revision 1.9 2004/02/05 10:51:53 yada + OS_InitException() を呼ぶようにした + + Revision 1.8 2004/02/05 07:09:02 yasu + change SDK prefix iris -> nitro + + Revision 1.7 2004/01/30 11:45:06 yada + 一旦OS_InitException() を外す + + Revision 1.6 2004/01/30 08:06:14 yada + OS_Init() で例外表示システム初期化を呼ぶようにした。 + + Revision 1.5 2004/01/18 02:25:37 yada + インデント等の整形 + + Revision 1.4 2004/01/07 01:43:51 yada + OS_InitArena() を呼ぶように変更 + + Revision 1.3 2003/12/26 05:52:45 yada + 型ルール統一による変更 + + Revision 1.2 2003/12/24 07:54:20 yada + wram 初期化を行うようにした + + Revision 1.1 2003/12/22 01:35:52 yada + OS_Init() 設置につき init.h 作成 + + + $NoKeywords: $ + *---------------------------------------------------------------------------*/ +#include +#include +#include +#include + +#ifndef SDK_TEG +#include +#endif + +/*---------------------------------------------------------------------------* + Name: OS_Init + + Description: initialize sdk os + + Arguments: None + + Returns: None + *---------------------------------------------------------------------------*/ +#pragma profile off +void OS_Init(void) +{ +#ifdef SDK_ARM9 + //---- system shared area check + SDK_ASSERT((u32)&(OS_GetSystemWork()->command_area) == HW_CMD_AREA); + + //---------------------------------------------------------------- + // for ARM9 + +#ifdef SDK_ENABLE_ARM7_PRINT + // Init PrintServer for ARM7 (if specified) + OS_InitPrintServer(); +#endif + + //---- Init Arena (arenas except SUBPRIV-WRAM) + OS_InitArena(); + + //---- Init interProcessor I/F + // Sync with ARM7 to enable OS_GetConsoleType() + // PXI_Init() must be called before OS_InitArenaEx() + PXI_Init(); + + //---- Init Spinlock + OS_InitLock(); + + //---- Init Arena (extended main) + OS_InitArenaEx(); + + //---- Init IRQ Table + OS_InitIrqTable(); + + //---- Init IRQ Stack checker + OS_SetIrqStackChecker(); + + //---- Init Exception System + OS_InitException(); + + //---- Init MI (Wram bank and DMA0 arranged) + MI_Init(); + + //---- Init VCountAlarm + OS_InitVAlarm(); + + //---- Init VRAM exclusive System + OSi_InitVramExclusive(); + + //---- Init Thread System +#ifndef SDK_NO_THREAD + OS_InitThread(); +#endif + //---- Init Reset System +#ifndef SDK_SMALL_BUILD + OS_InitReset(); +#endif + + //---- Init Cartridge +#ifndef SDK_TEG +// CTRDG_Init(); +#endif + + //---- Init Card +#ifndef SDK_SMALL_BUILD +// CARD_Init(); +#endif + + //---- Init Power Manager +#ifndef SDK_TEG +// PM_Init(); +#endif + +#else // SDK_ARM9 + //---------------------------------------------------------------- + // for ARM7 + + //---- Init Arena (SUBPRIV-WRAM arena) + OS_InitArena(); + + //---- Init interProcessor I/F + PXI_Init(); + + //---- Init Spinlock + OS_InitLock(); + + //---- Init IRQ Table + OS_InitIrqTable(); + +#define SDK_EXCEPTION_BUG +#ifndef SDK_EXCEPTION_BUG + //---- Init Exception System + OS_InitException(); +#endif + + //---- Init Tick + OS_InitTick(); + + //---- Init Alarm System + OS_InitAlarm(); + + //---- Init Thread System + OS_InitThread(); + + //---- Init Reset System +#ifndef SDK_SMALL_BUILD + OS_InitReset(); +#endif + + //---- Init Cartridge +#ifndef SDK_TEG +// CTRDG_Init(); +#endif + +#endif // SDK_ARM9 +} + +#pragma profile reset diff --git a/build/libraries/os/common/os_printf_twl.c b/build/libraries/os/common/os_printf_twl.c new file mode 100644 index 0000000..797a09f --- /dev/null +++ b/build/libraries/os/common/os_printf_twl.c @@ -0,0 +1,1211 @@ +/*---------------------------------------------------------------------------* + Project: NitroSDK - libraries - OS + File: os_printf.c + + Copyright 2003-2006 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: os_printf.c,v $ + Revision 1.48 2006/01/18 02:11:30 kitase_hirotake + do-indent + + Revision 1.47 2005/10/12 08:32:38 yada + OS_PutString() is deadstripped in case of SDK_FINALROM + + Revision 1.46 2005/06/23 12:08:37 yasu + SDK_LITTLE_ENDIAN を使用しないように修正 + + Revision 1.45 2005/06/07 09:49:34 yasu + UnitTest 対策のため OSi_Panic の OS_Terminate 呼び出しを変更可能にする + + Revision 1.44 2005/03/04 11:09:27 yasu + __declspec(weak) を SDK_WEAK_SYMBOL に置き換え + + Revision 1.43 2005/02/28 05:26:29 yosizaki + do-indent. + + Revision 1.42 2005/02/28 04:26:25 yosizaki + SDK_NO_MESSAGE に関する小さな修正. + + Revision 1.41 2005/02/18 06:22:52 yasu + Signed/Unsigned 変換警告抑制 + + Revision 1.40 2005/02/04 11:02:15 yasu + 著作年の修正 + + Revision 1.39 2005/01/31 03:16:15 seiki_masashi + 除算の除去のため、常に速度優先で最適化を行うように指定 + + Revision 1.38 2005/01/28 12:58:25 seiki_masashi + OS_VSNPrintf で除算をできるだけ使わないように変更 + + Revision 1.37 2004/11/24 11:07:37 yada + Let a few functions be weak symbol. + + Revision 1.36 2004/11/24 08:50:22 yada + Let a few functions be weak symbol. + + Revision 1.35 2004/11/12 10:45:30 yada + just fix comment + + Revision 1.34 2004/10/08 07:49:13 yada + consider for the situation of not calling OS_InitPrintServer() + + Revision 1.33 2004/10/04 10:06:30 yasu + support SDK_NO_MESSAGE + + Revision 1.32 2004/09/11 06:00:34 yasu + Add OS_TPrintf + + Revision 1.31 2004/06/08 01:22:47 yada + add stub OS_Printf() for FINALROM + + Revision 1.30 2004/06/08 00:31:31 yada + invalidate debug functions(OS_Printf, etc.) when FINALROM + + Revision 1.29 2004/05/06 02:54:39 yada + stop by OS_Terminate() in OSi_Panic(), not by OS_Halt() + + Revision 1.28 2004/04/08 02:47:05 takano_makoto + Change to use OS_VSNPrintf() in ARM7. + + Revision 1.27 2004/03/26 06:52:15 yosizaki + add OS_SPrintf, OS_VSPrintf, OS_SNPrintf, and OS_VSNPrintf. + + Revision 1.26 2004/03/05 09:41:48 yasu + add SDK_NO_VSNPRINTF to disable vsnprintf + + Revision 1.25 2004/03/04 12:41:05 yasu + change function typedef name + + Revision 1.24 2004/02/28 12:07:55 yasu + fix buffer handling + + Revision 1.23 2004/02/28 09:47:10 yasu + fix comment + + Revision 1.22 2004/02/18 01:09:26 yasu + force to turn byte access warning off + + Revision 1.21 2004/02/16 11:43:42 yasu + fix OS_PrintServer + + Revision 1.20 2004/02/14 09:40:59 yasu + workaround for unused warning message + + Revision 1.19 2004/02/14 09:26:08 yasu + move printserver into os_printf + + Revision 1.18 2004/02/14 07:07:24 yasu + support printserver component + + Revision 1.17 2004/02/13 08:58:52 yasu + nitro_sp.h -> nitro.h + + Revision 1.16 2004/02/13 01:50:10 yada + ARM9とAMR7 でインクルードファイル場合わけ + + Revision 1.15 2004/02/05 08:38:44 yada + only modify comment + + Revision 1.14 2004/02/05 07:09:02 yasu + change SDK prefix iris -> nitro + + Revision 1.13 2004/01/26 09:05:05 yasu + Link stub of ISDPrintf if no IS_IRIS_DIR + + Revision 1.12 2003/12/29 04:27:24 yasu + workaround for OS_Warning, OS_Panic + + Revision 1.11 2003/12/25 07:31:26 yada + 型ルール統一による変更 + + Revision 1.10 2003/12/17 08:21:56 yasu + ARM7 との共用コード化 + + Revision 1.9 2003/12/16 10:46:16 yasu + ARM9/7 共用コード化 + + Revision 1.8 2003/12/12 05:03:48 yasu + vsprintf の strb 対応版がリリースされるまでのワークアラウンド追加 + + Revision 1.7 2003/12/10 12:20:50 yasu + IS ライブラリに関する小修正 + + Revision 1.6 2003/12/10 10:57:08 yasu + ISDPrint の組み込み + TEG ボードへの出力可能になる + + Revision 1.5 2003/12/02 07:28:59 yasu + warning の回避 + + Revision 1.4 2003/12/02 06:51:51 yasu + 空行変更 + + Revision 1.3 2003/12/02 03:44:50 yasu + IS-IRIS-EMULATOR 用ライブラリ向けの修正2 + + Revision 1.2 2003/12/02 02:38:49 yasu + ISDebugger での printout の組み込みの初段階 + + Revision 1.1 2003/11/29 01:25:46 yada + ファイル名称変更 + + Revision 1.8 2003/11/25 11:17:37 yasu + エミュレータの自動判別追加 + + Revision 1.7 2003/11/25 00:03:44 yasu + OS_PutChar/OS_PutString/OS_VPrintf の公開 + + Revision 1.6 2003/11/21 12:20:31 yada + reg_EMU_CONSOLE_OUT を reg_OS_EMU_CONSOLE_OUT にした。 + + Revision 1.5 2003/11/14 08:07:46 yasu + string buffer をスタックから取るのを止めて static にする + + Revision 1.4 2003/11/14 07:46:00 yasu + 微修正 + + Revision 1.3 2003/11/14 06:14:03 yasu + OS_Warning() OS_Panic() の追加 + + Revision 1.2 2003/11/13 11:59:01 yasu + 初版作成 + + Revision 1.1 2003/11/13 11:24:08 yasu + 初版作成 エミュレータ側の実装が終わっていないため動作しないと思われる + + $NoKeywords: $ + *---------------------------------------------------------------------------*/ +#include +#include + +#ifdef SDK_LINK_ISD +# pragma warn_extracomma off +# include // has extracomma in enum +# pragma warn_extracomma reset +#else +void ISDPrint(const char *); +#endif + +#ifndef SDK_FINALROM +static char common_buffer[256]; // thread unsafe, but less use of stack +#endif + +#if !defined(SDK_FINALROM) && defined(SDK_NO_MESSAGE) +#undef OSi_Warning +#undef OSi_TWarning +#undef OSi_Panic +#undef OSi_TPanic +void OSi_Warning(const char *file, int line, const char *fmt, ...); +void OSi_TWarning(const char *file, int line, const char *fmt, ...); +void OSi_Panic(const char *file, int line, const char *fmt, ...); +void OSi_TPanic(const char *file, int line, const char *fmt, ...); +#endif /* SDK_NO_MESSAGE */ + + +/*---------------------------------------------------------------------------* + Name: OS_PutChar + + Description: put a letter for debug console + + Arguments: c : char code , shuild be 0x01-0xff + + Returns: None. + *---------------------------------------------------------------------------*/ +#ifndef SDK_FINALROM +SDK_WEAK_SYMBOL void OS_PutChar(char c) +{ + char str[2]; + + str[0] = c; + str[1] = '\0'; + + // Because of no putchar-type function on ISDebugger library, + // use 'putstring' for a single letter outputting + OS_PutString(str); +} +#endif + +/*---------------------------------------------------------------------------* + Name: OS_PutString + + Description: put a string to debug console. + console port are automatically switched depends on emu/hw + + Arguments: str : string + + Returns: None. + *---------------------------------------------------------------------------*/ +static void OS_PutStringInit(const char *str); + +#ifndef SDK_FINALROM +static void OS_PutStringAris(const char *str); +static void OS_PutStringISD(const char *str); +static void OS_PutStringKMC(const char *str); + void OS_PutStringARM(const char *str); +#ifdef SDK_ARM7 +static void OS_PutStringPrnSrv(const char *str); +#endif +#endif + +#ifndef SDK_FINALROM +void (*OS_PutString) (const char *str) = OS_PutStringInit; +#endif + + +/*---------------------------------------------------------------------------* + Name: OS_PutStringInit + Description: OS_PutString initializer + *---------------------------------------------------------------------------*/ +static void OS_PutStringInit(const char *str) +{ +#ifndef SDK_FINALROM + OSIntrMode intr = OS_DisableInterrupts(); + +#ifdef SDK_ARM9 + if (OS_IsRunOnEmulator()) + { + OS_PutString = OS_PutStringAris; + } + else +#endif + { +#ifdef SDK_ARM7 + OS_PutString = OS_PutStringPrnSrv; +#else + OS_PutString = OS_PutStringKMC; +#endif + OS_PutString = OS_PutStringKMC; +#ifdef SDK_DEBUGGER_ARM + OS_PutString = OS_PutStringARM; +#endif + } + + OS_PutString(str); + + (void)OS_RestoreInterrupts(intr); + +#else + (void)str; // avoiding to unused warning +#endif +} + + +/*---------------------------------------------------------------------------* + Name: OS_PutStringAris + Description: OS_PutString for software simulator called ARIS + *---------------------------------------------------------------------------*/ +#ifndef SDK_FINALROM +#ifdef SDK_CW_WARNOFF_SAFESTRB +#include +#endif +static void OS_PutStringAris(const char *str) +{ + char c; + + while ('\0' != (c = *str)) + { + reg_OS_EMU_CONSOLE_OUT = (u8)c; // Console out + str++; + } +} + +#ifdef SDK_CW_WARNOFF_SAFESTRB +#include +#endif +#endif + + +/*---------------------------------------------------------------------------* + Name: OS_PutStringISD + Description: OS_PutString for hardware emulator called IS Debugger + *---------------------------------------------------------------------------*/ +#ifndef SDK_FINALROM +static void OS_PutStringISD(const char *str) +{ + // ISDPrint の初期化処理 + OS_InitLock(); + + OS_PutString = ISDPrint; + OS_PutString(str); +} +#endif + + +/*---------------------------------------------------------------------------* + Name: OS_PutStringKMC + Description: OS_PutString for hardware emulator called KMC Debugger + *---------------------------------------------------------------------------*/ +#ifndef SDK_FINALROM +static void OS_PutStringKMC(const char *str) +{ + vlink_dos_putstring_console((char *)str, STD_GetStringLength(str)); +} +#endif + + +/*---------------------------------------------------------------------------* + Name: OS_PutStringARM + Description: OS_PutString for hardware emulator called ARM Debugger + *---------------------------------------------------------------------------*/ +#ifndef SDK_FINALROM +#include +asm void OS_PutStringARM(const char *str) +{ + mov r1, r0 + mov r0, #0x04 + swi 0x123456 + bx lr +} +#include +#endif + + +/*---------------------------------------------------------------------------* + Name: OS_VPrintf/OS_TVPrintf + + Description: print formatted strings (vprintf ver.) + + Arguments: fmt : format string + vlist : parameters + + Returns: None. + *---------------------------------------------------------------------------*/ +// If you want to use "vsnprintf()" in ARM7, define SDK_USE_VSNPRINTF. +// "vsnprintf()" is able to print float format but the code size become hugely bigger. +// #define SDK_USE_VSNPRINTF + +#ifndef SDK_FINALROM +#if defined(SDK_ARM9) || defined(SDK_USE_VSNPRINTF) +SDK_WEAK_SYMBOL void OS_VPrintf(const char *fmt, va_list vlist) +{ + (void)vsnprintf(common_buffer, sizeof(common_buffer), fmt, vlist); + OS_PutString(common_buffer); +} +#else +SDK_WEAK_SYMBOL void OS_VPrintf(const char *fmt, va_list vlist) +{ + OS_TVPrintf(fmt, vlist); +} +#endif +SDK_WEAK_SYMBOL void OS_TVPrintf(const char *fmt, va_list vlist) +{ + (void)OS_VSNPrintf(common_buffer, sizeof(common_buffer), fmt, vlist); + OS_PutString(common_buffer); +} +#endif + +/*---------------------------------------------------------------------------* + Name: OS_Printf/OS_TPrintf + + Description: print formatted strings. + + Arguments: fmt : format string + ... and parameters + + Returns: None. + *---------------------------------------------------------------------------*/ +#ifndef SDK_FINALROM +SDK_WEAK_SYMBOL void OS_Printf(const char *fmt, ...) +{ + va_list vlist; + + va_start(vlist, fmt); + OS_VPrintf(fmt, vlist); + va_end(vlist); +} + +SDK_WEAK_SYMBOL void OS_TPrintf(const char *fmt, ...) +{ + va_list vlist; + + va_start(vlist, fmt); + OS_TVPrintf(fmt, vlist); + va_end(vlist); +} +#endif + +/*---------------------------------------------------------------------------* + Name: OSi_Warning / OSi_TWarning + + Description: print warning message. + + Arguments: file : filename of warning location + line : line number of warning location + fmt : format string + ... and parameters + + Returns: None. + *---------------------------------------------------------------------------*/ +#ifndef SDK_FINALROM +SDK_WEAK_SYMBOL void OSi_Warning(const char *file, int line, const char *fmt, ...) +{ + va_list vlist; + + va_start(vlist, fmt); + OS_Printf("%s:%d Warning:", file, line); + OS_VPrintf(fmt, vlist); + OS_Printf("\n"); + va_end(vlist); +} + + +SDK_WEAK_SYMBOL void OSi_TWarning(const char *file, int line, const char *fmt, ...) +{ + va_list vlist; + + va_start(vlist, fmt); + OS_TPrintf("%s:%d Warning:", file, line); + OS_TVPrintf(fmt, vlist); + OS_TPrintf("\n"); + va_end(vlist); +} +#endif + +/*---------------------------------------------------------------------------* + Name: OSi_Panic/OSi_TPanic + + Description: print panic message and halt cpu. + + Arguments: file : filename of panic location + line : line number of panic location + fmt : format string + ... and parameters + + Returns: None. + *---------------------------------------------------------------------------*/ +#ifndef SDK_FINALROM +void (*OSi_FuncTerminate) (void) = OS_Terminate; + +SDK_WEAK_SYMBOL void OSi_Panic(const char *file, int line, const char *fmt, ...) +{ + va_list vlist; + + va_start(vlist, fmt); + (void)OS_DisableInterrupts(); + OS_Printf("%s:%d Panic:", file, line); + OS_VPrintf(fmt, vlist); + OS_Printf("\n"); + OSi_FuncTerminate(); // Never Returns +} + +SDK_WEAK_SYMBOL void OSi_TPanic(const char *file, int line, const char *fmt, ...) +{ + va_list vlist; + + va_start(vlist, fmt); + (void)OS_DisableInterrupts(); + OS_TPrintf("%s:%d Panic:", file, line); + OS_TVPrintf(fmt, vlist); + OS_TPrintf("\n"); + OSi_FuncTerminate(); // Never Returns +} +#endif + +/*---------------------------------------------------------------------------* + Name: OS_InitPrintServer + + Description: initialize print server + - this code should be called before OS_InitLock() + - OS_InitLock() are also called from OS_Init() + + Arguments: None + + Returns: None + *---------------------------------------------------------------------------*/ +#ifdef SDK_ARM9 +#ifndef SDK_FINALROM +void OS_InitPrintServer(void) +{ + OSPrintServerBuffer *p; + + // first, allocate buffer and register it. + OS_InitArena(); + p = OS_AllocFromSharedArenaHi(sizeof(OSPrintServerBuffer), 4); + p->in = p->out = 0UL; + PXI_SetComponentParam((u32)p); +} +#endif //SDK_FINALROM +#endif //SDK_ARM9 + + +/*---------------------------------------------------------------------------* + Name: OS_PrintServer + + Description: print a string comes from ARM7 via shared memory + + Arguments: str string + + Returns: None. + *---------------------------------------------------------------------------*/ +#ifdef SDK_ARM9 +#ifndef SDK_FINALROM +#include // to access 'common_buffer' via cache +void OS_PrintServer(void) +{ + OSPrintServerBuffer *p; + register OSPrintWChar word; + + u32 in, out; + int i; + + p = (OSPrintServerBuffer *)PXI_GetComponentParam(); + + //---- If print buffer isn't set up, do nothing. + if (!p) + { + return; + } + + out = p->out; + in = p->in; + + while (in != out) + { + i = 0; + + while (in != out && i < sizeof(common_buffer) - 3) + { + word.s = p->buffer[out].s; + if (word.c[0]) + { + common_buffer[i++] = word.c[0]; // store via cache + + if (word.c[1]) + { + common_buffer[i++] = word.c[1]; // store via cache + } + } + out++; + if (out >= OS_PRINTSRV_WCHARSIZE) + out = 0; + } + common_buffer[i] = '\0'; // store via cache + OS_PutString(common_buffer); + } + + // tell finished + p->out = out; +} + +#include +#endif //SDK_FINALROM +#endif //SDK_ARM9 + + +/*---------------------------------------------------------------------------* + Name: OS_PutStringPrnSrv + + Description: sends string to ARM9 via shared memory + + Arguments: str string to be sent + + Returns: None + *---------------------------------------------------------------------------*/ +#ifdef SDK_ARM7 +static void OS_PutStringPrnSrv(const char *str) +{ +#ifndef SDK_FINALROM + OSPrintServerBuffer *p; + register OSPrintWChar word; + + u32 in, in_tmp, out; + u32 isOdd; + + p = (OSPrintServerBuffer *)PXI_GetComponentParam(); + in = p->in; + out = p->out; + isOdd = ((u32)str) & 1; + + while (1) + { + in_tmp = in + 1; + if (in_tmp >= OS_PRINTSRV_WCHARSIZE) + in_tmp = 0; + if (out == in_tmp) + break; // Buffer full, then exit + + if (isOdd) + { + p->buffer[in].s = word.s = (u16)((*(u16 *)(str - 1)) & 0xff00); + str++; + isOdd = 0UL; + if (!word.c[1]) + break; + in = in_tmp; + } + else + { + p->buffer[in].s = word.s = *(u16 *)str; + str += 2; + if (!word.c[0]) + break; + in = in_tmp; + if (!word.c[1]) + break; + } + } + p->in = in; +#else //SDK_FINALROM + (void)str; +#endif //SDK_FINALROM +} +#endif //SDK_ARM7 + + +#if defined(SDK_CW_WARNOFF_SAFESTRB) +#include +#endif + +/* inner function for sized-buffer output */ +typedef struct dst_string_tag +{ + size_t len; + char *cur; + char *base; +} +dst_string; + +static void string_put_char(dst_string * p, char c) +{ + if (p->len > 0) + *p->cur = c, --p->len; + ++p->cur; +} + +static void string_fill_char(dst_string * p, char c, int n) +{ + if (n > 0) + { + size_t i, k = p->len; + if (k > (size_t) n) + k = (size_t) n; + for (i = 0; i < k; ++i) + p->cur[i] = c; + p->len -= k; + p->cur += n; + } +} + +static void string_put_string(dst_string * p, const char *s, int n) +{ + if (n > 0) + { + size_t i, k = p->len; + if (k > (size_t) n) + k = (size_t) n; + for (i = 0; i < k; ++i) + p->cur[i] = s[i]; + p->len -= k; + p->cur += n; + } +} + +/*---------------------------------------------------------------------------* + Name: OS_SPrintf + + Description: equal to 'OS_VSPrintf' except argument style. + + Arguments: dst : destination buffer. + fmt : format string. + + Returns: length of the generated string. + *---------------------------------------------------------------------------*/ +SDK_WEAK_SYMBOL int OS_SPrintf(char *dst, const char *fmt, ...) +{ + int ret; + va_list va; + va_start(va, fmt); + ret = OS_VSPrintf(dst, fmt, va); + va_end(va); + return ret; +} + +/*---------------------------------------------------------------------------* + Name: OS_VSPrintf + + Description: equal to 'OS_VSNPrintf' except buffer size argument. + + Arguments: dst : destination buffer. + fmt : format string. + vlist : parameters. + + Returns: length of the generated string. + *---------------------------------------------------------------------------*/ +SDK_WEAK_SYMBOL int OS_VSPrintf(char *dst, const char *fmt, va_list vlist) +{ + return OS_VSNPrintf(dst, 0x7FFFFFFF, fmt, vlist); +} + +/*---------------------------------------------------------------------------* + Name: OS_SNPrintf + + Description: equal to 'OS_VSNPrintf' except argument style. + + Arguments: dst : destination buffer. + len : destination buffer size. + fmt : format string. + + Returns: length of the generated string. (except '\0') + if(result < len), + put NUL in dst[result]. + else if(len > 0), + put NUL in dst[len - 1]. + else, + do nothing. + *---------------------------------------------------------------------------*/ +SDK_WEAK_SYMBOL int OS_SNPrintf(char *dst, size_t len, const char *fmt, ...) +{ + int ret; + va_list va; + va_start(va, fmt); + ret = OS_VSNPrintf(dst, len, fmt, va); + va_end(va); + return ret; +} + +/*---------------------------------------------------------------------------* + Name: OS_VSNPrintf + + Description: small-size vsnprintf which is similar to 'vsnprintf' + without following supports. + * CodeWarrior Extensions (#s) + * MSL AltiVec Extensions (v, vh, vl, hv, lv, @) + * indexed argments (%m$, *m$) + * floating-point + * wchar_t + + Note: '+' and '#' do not work, MSL's sprintf(). + to keep same result, they are no implement. + { // exsample + char buf[5]; + sprintf(buf, "%-i\n", 45); // "45" (OK) + sprintf(buf, "%0i\n", 45); // "45" (OK) + sprintf(buf, "% i\n", 45); // " 45" (OK) + sprintf(buf, "%+i\n", 45); // "%+i" ("+45" expected) + sprintf(buf, "%#x\n", 45); // "%#x" ("0x2d" expected) + // but, this works correctly! + sprintf(buf, "% +i\n", 45); // "+45" (OK) + } + + Arguments: dst : destination buffer. + len : destination buffer size. + fmt : format string. + vlist : parameters. + + Returns: length of the generated string. (except '\0') + if(result < len), + put NUL in dst[result]. + else if(len > 0), + put NUL in dst[len - 1]. + else, + do nothing. + *---------------------------------------------------------------------------*/ +SDK_WEAK_SYMBOL int OS_VSNPrintf(char *dst, size_t len, const char *fmt, va_list vlist) +{ + char buf[24]; + int n_buf; + char prefix[2]; + int n_prefix; + + const char *s = fmt; + + dst_string str; + str.len = len, str.cur = str.base = dst; + + while (*s) + { + if ((unsigned int)(((unsigned char)*s ^ 0x20) - 0xA1) < 0x3C) + { + /* Shift JIS character */ + string_put_char(&str, *s++); + if (*s) + string_put_char(&str, *s++); + } + else if (*s != '%') + { + /* normal ASCII character */ + string_put_char(&str, *s++); + } + else + { + /* output with format */ + enum + { + flag_blank = 000001, /* ' ' */ + flag_plus = 000002, /* '+' */ + flag_sharp = 000004, /* '#' */ + flag_minus = 000010, /* '-' */ + flag_zero = 000020, /* '0' */ + flag_l1 = 000040, /* "l" */ + flag_h1 = 000100, /* "h" */ + flag_l2 = 000200, /* "ll" */ + flag_h2 = 000400, /* "hh" */ + flag_unsigned = 010000, /* 'o', 'u', ... */ + flag_end + }; + int flag = 0, width = 0, precision = -1, radix = 10; + char hex_char = 'a' - 10; + const char *p_start = s; + /* flags */ + for (;;) + { + switch (*++s) + { + case '+': + if (s[-1] != ' ') + break; + flag |= flag_plus; + continue; + case ' ': + flag |= flag_blank; + continue; + case '-': + flag |= flag_minus; + continue; + case '0': + flag |= flag_zero; + continue; + } + break; + } + /* width */ + if (*s == '*') + { + ++s, width = va_arg(vlist, int); + if (width < 0) + width = -width, flag |= flag_minus; + } + else + { + while ((*s >= '0') && (*s <= '9')) + width = (width * 10) + *s++ - '0'; + } + /* precision */ + if (*s == '.') + { + ++s, precision = 0; + if (*s == '*') + { + ++s, precision = va_arg(vlist, int); + if (precision < 0) + precision = -1; + } + else + { + while ((*s >= '0') && (*s <= '9')) + precision = (precision * 10) + *s++ - '0'; + } + } + /* option */ + switch (*s) + { + case 'h': + if (*++s != 'h') + flag |= flag_h1; + else + ++s, flag |= flag_h2; + break; + case 'l': + if (*++s != 'l') + flag |= flag_l1; + else + ++s, flag |= flag_l2; + break; + } + + /* type */ + switch (*s) + { + case 'd': /* signed decimal */ + case 'i': /* signed decimal */ + goto put_integer; + case 'o': /* unsigned octal */ + radix = 8; + flag |= flag_unsigned; + goto put_integer; + case 'u': /* unsigned decimal */ + flag |= flag_unsigned; + goto put_integer; + case 'X': /* unsigned hexadecimal */ + hex_char = 'A' - 10; + goto put_hexadecimal; + case 'x': /* unsigned hexadecimal */ + goto put_hexadecimal; + case 'p': /* pointer */ + /* equal to code warrior */ + flag |= flag_sharp; + precision = 8; + goto put_hexadecimal; + + case 'c': /* character */ + if (precision >= 0) + goto put_invalid; + { + int c = va_arg(vlist, int); + width -= 1; + if (flag & flag_minus) + { + string_put_char(&str, (char)c); + string_fill_char(&str, ' ', width); + } + else + { + char pad = (char)((flag & flag_zero) ? '0' : ' '); + string_fill_char(&str, pad, width); + string_put_char(&str, (char)c); + } + ++s; + } + break; + + case 's': /* string */ + { + int n_buf = 0; + const char *p_buf = va_arg(vlist, const char *); + if (precision < 0) + { + while (p_buf[n_buf]) + ++n_buf; + } + else + { + while ((n_buf < precision) && p_buf[n_buf]) + ++n_buf; + } + width -= n_buf; + if (flag & flag_minus) + { + string_put_string(&str, p_buf, n_buf); + string_fill_char(&str, ' ', width); + } + else + { + char pad = (char)((flag & flag_zero) ? '0' : ' '); + string_fill_char(&str, pad, width); + string_put_string(&str, p_buf, n_buf); + } + ++s; + } + break; + + case 'n': /* store the number of output */ + { + int pos = str.cur - str.base; + if (flag & flag_h2) + ; + else if (flag & flag_h1) + *va_arg(vlist, signed short *) = (signed short)pos; + else if (flag & flag_l2) + *va_arg(vlist, u64 *) = (u64)pos; + else + *va_arg(vlist, signed int *) = (signed int)pos; + } + ++s; + break; + + case '%': /* output '%' */ + if (p_start + 1 != s) + goto put_invalid; + string_put_char(&str, *s++); + break; + + default: /* invalid type */ + goto put_invalid; + + put_invalid: + string_put_string(&str, p_start, s - p_start); + break; + + put_hexadecimal: + radix = 16; + flag |= flag_unsigned; + put_integer: + { + u64 val = 0; + n_prefix = 0; + + if (flag & flag_minus) + flag &= ~flag_zero; + if (precision < 0) + precision = 1; + else + flag &= ~flag_zero; + + if (flag & flag_unsigned) + { + if (flag & flag_h2) + val = va_arg(vlist, unsigned char); + else if (flag & flag_h1) + val = va_arg(vlist, unsigned short); + else if (flag & flag_l2) + val = va_arg(vlist, u64); + else + val = va_arg(vlist, unsigned long); + flag &= ~(flag_plus | flag_blank); + if (flag & flag_sharp) + { + if (radix == 16) + { + if (val != 0) + { + prefix[0] = (char)(hex_char + (10 + 'x' - 'a')); + prefix[1] = '0'; + n_prefix = 2; + } + } + else if (radix == 8) + { + prefix[0] = '0'; + n_prefix = 1; + } + } + } + else + { + if (flag & flag_h2) + val = va_arg(vlist, char); + else if (flag & flag_h1) + val = va_arg(vlist, short); + else if (flag & flag_l2) + val = va_arg(vlist, u64); + else + val = va_arg(vlist, long); + if ((val >> 32) & 0x80000000) + { + val = ~val + 1; + prefix[0] = '-'; + n_prefix = 1; + } + else + { + if (val || precision) + { + if (flag & flag_plus) + { + prefix[0] = '+'; + n_prefix = 1; + } + else if (flag & flag_blank) + { + prefix[0] = ' '; + n_prefix = 1; + } + } + } + } + n_buf = 0; + switch (radix) + { + case 8: + while (val != 0) + { + int d = (int)(val & 0x07); + val >>= 3; + buf[n_buf++] = (char)(d + '0'); + } + break; + case 10: + if ((val >> 32) == 0) + { +#if defined(SDK_CW) || defined(__MWERKS__) +#pragma optimize_for_size off +#endif + u32 v = (u32)val; + while (v != 0) + { + // u32 と定数の除算であれば、コンパイラが自動的に + // マジックナンバーを使用した積算に変換する + u32 r = v / 10; + int d = (int)(v - (r * 10)); + v = r; + buf[n_buf++] = (char)(d + '0'); + } + } + else + { + while (val != 0) + { + u64 r = val / 10; + int d = (int)(val - (r * 10)); + val = r; + buf[n_buf++] = (char)(d + '0'); + } + } + break; + case 16: + while (val != 0) + { + int d = (int)(val & 0x0f); + val >>= 4; + buf[n_buf++] = (char)((d < 10) ? (d + '0') : (d + hex_char)); + } + break; + } + if ((n_prefix > 0) && (prefix[0] == '0')) + { + n_prefix = 0; + buf[n_buf++] = '0'; + } + } + goto put_to_stream; + + put_to_stream: + { + int n_pad = precision - n_buf; + if (flag & flag_zero) + { + if (n_pad < width - n_buf - n_prefix) + n_pad = width - n_buf - n_prefix; + } + if (n_pad > 0) + width -= n_pad; + width -= n_prefix + n_buf; + if (!(flag & flag_minus)) + string_fill_char(&str, ' ', width); + while (n_prefix > 0) + string_put_char(&str, prefix[--n_prefix]); + string_fill_char(&str, '0', n_pad); + while (n_buf > 0) + string_put_char(&str, buf[--n_buf]); + if (flag & flag_minus) + string_fill_char(&str, ' ', width); + ++s; + } + break; + } + } + } + + if (str.len > 0) + *str.cur = '\0'; + else if (len > 0) + str.base[len - 1] = '\0'; + return str.cur - str.base; +} + +#if defined(SDK_CW_WARNOFF_SAFESTRB) +#include +#endif + + + +//================================================================================ +// DUMMY PRINT (stub for FINALROM) +//================================================================================ +#ifdef SDK_FINALROM +#ifdef OS_Printf +#undef OS_Printf +#endif +void OS_Printf(const char *fmt, ...); +void OS_Printf(const char *fmt, ...) +{ +#pragma unused( fmt ) +} +#endif diff --git a/build/libraries/os/common/os_spinLock_twl.c b/build/libraries/os/common/os_spinLock_twl.c new file mode 100644 index 0000000..4fda6aa --- /dev/null +++ b/build/libraries/os/common/os_spinLock_twl.c @@ -0,0 +1,932 @@ +/*---------------------------------------------------------------------------* + Project: NitroSDK - OS - + File: os_spinLock.c + + Copyright 2003-2006 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: os_spinLock.c,v $ + Revision 1.40 2006/01/18 02:11:30 kitase_hirotake + do-indent + + Revision 1.39 2005/11/21 05:42:31 yasu + OSi_WaitByLoop を inline 化 + + Revision 1.38 2005/11/17 10:11:36 yasu + OS_SpinWait を SVC_WaitByLoop で行なうように修正 + + Revision 1.37 2005/03/04 10:06:01 yasu + 過剰な volatile を削除 + + Revision 1.36 2005/03/01 01:57:00 yosizaki + copyright の年を修正. + + Revision 1.35 2005/02/28 05:26:29 yosizaki + do-indent. + + Revision 1.34 2004/07/23 04:27:47 yada + OS_UnLock* restored for compatibility + + Revision 1.33 2004/07/23 00:57:17 yada + rename OS_UnLock* -> OS_Unlock* + + Revision 1.32 2004/07/22 08:21:17 yada + change some lockID's type u32->u16 + + Revision 1.31 2004/07/08 07:56:14 yosizaki + change around OS_LockCard in (TEG && ARM9) + + Revision 1.30 2004/07/06 04:45:28 yosizaki + add assertion (TEG && ARM9) + + Revision 1.29 2004/06/21 11:03:25 yada + fix comment. incorrect about return value. + + Revision 1.28 2004/05/20 06:37:03 yasu + fix in Wait + + Revision 1.27 2004/04/30 07:37:44 yada + HW_LOCKIDFLAG_MAIN/SUB -> HW_LOCK_ID_FLAG_MAIN/SUB + + Revision 1.26 2004/04/30 00:18:00 yada + put HW_LOCKID_FLAG_MAIN/SUB + + Revision 1.25 2004/04/20 06:56:11 yada + OS_TryLockCartridge() が、無条件に _ISDbgLib_AllocateEmualtor() を + 呼んでいたのを修正。 + + Revision 1.24 2004/03/30 06:09:29 yada + ldconst や lda を ldr = を使用する記述にした。 + + Revision 1.23 2004/03/26 10:37:23 yada + OS_GetLockID(), OS_ReleaseLockID() 追加 + + Revision 1.22 2004/03/25 09:44:24 yada + カードのunlock, tryLock 関数の定数修正。ウェイトでARM7はSVC呼ぶように。 + + Revision 1.21 2004/03/25 09:22:39 yada + 内部ロック関数等で引数のFIQフラグの順序を変え効率をよくした。 + Cardのロック・アンロック修正 + + Revision 1.20 2004/03/25 07:25:05 yada + OS_LockCard() 等カードのロックについて追加 + + Revision 1.19 2004/03/25 02:38:30 yada + MI_SetMainMemoryPriority(), MI_SetCardProcessor(),MI_SetCartridgeProcessor() + を、MI_〜からMIi_〜 に変更し内部関数にするようにした。 + + Revision 1.18 2004/03/04 09:47:50 yada + カートリッジのロックに限りIRQ/FIQ禁止にした。 + + Revision 1.17 2004/02/13 08:58:52 yasu + nitro_sp.h -> nitro.h + + Revision 1.16 2004/02/13 01:33:58 yada + ARM9とAMR7 でインクルードファイル場合わけ + + Revision 1.15 2004/02/10 02:04:23 yada + subp 用にinclude修正 + + Revision 1.14 2004/02/10 01:25:06 yada + UTL_* を MI_ に取り込んだことによる修正 + + Revision 1.13 2004/02/05 07:09:02 yasu + change SDK prefix iris -> nitro + + Revision 1.12 2004/02/05 02:00:37 yada + UTL_SwapWord を os_utility.c に移行 + + Revision 1.11 2004/01/18 02:25:37 yada + インデント等の整形 + + Revision 1.10 2004/01/14 01:44:01 yada + lockやunlockの途中実行関数を設定出来るようにしたことへの対応 + + Revision 1.9 2003/12/25 07:31:26 yada + 型ルール統一による変更 + + Revision 1.8 2003/12/22 13:40:59 yasu + memorymap.h の明示的読み込み + + Revision 1.7 2003/12/22 01:37:27 yada + WRAM, VRAM-c,d の設定をコメントアウト + + Revision 1.6 2003/12/18 07:17:09 yada + red-sdk 仕様から変更 + + Revision 1.5 2003/12/17 08:21:56 yasu + ARM7 との共用コード化 + + Revision 1.4 2003/12/12 05:04:22 yasu + _ISDbgLib_* 関数の追加 + + Revision 1.3 2003/12/10 10:56:18 yasu + ISDPrint で必要な SpinLock 関数のみの移植 + OS_LockWord() -> OS_LockByWord() + volatile LockWord -> OS_LockWord などの変更 + + Revision 1.2 2003/12/08 12:20:43 yada + 12/3 REDSDK への変更対応 + + Revision 1.1 2003/11/29 01:25:46 yada + ファイル名称変更 + + Revision 1.2 2003/11/28 01:56:22 yada + REDSDKの03-11-27反映 + 但し殆どをコメントアウト + + Revision 1.1 2003/11/06 09:30:39 yada + 暫定版 + + $NoKeywords: $ + *---------------------------------------------------------------------------*/ +#include + +void _ISDbgLib_Initialize(void); +void _ISDbgLib_AllocateEmualtor(void); +void _ISDbgLib_FreeEmulator(void); + +s32 OS_LockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)); +s32 OS_UnlockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)); +s32 OS_TryLockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*crtlFuncp) (void)); + +static s32 OSi_DoLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), + BOOL disableFiq); +static s32 OSi_DoUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), + BOOL disableFIQ); +static s32 OSi_DoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), + BOOL disableFIQ); + +static void OSi_AllocateCartridgeBus(void); +static void OSi_FreeCartridgeBus(void); + +static void OSi_AllocateCardBus(void); +static void OSi_FreeCardBus(void); + +static void OSi_WaitByLoop(void); + + +#ifdef SDK_ARM9 +#define OSi_ASSERT_ID( id ) SDK_ASSERTMSG( id >= OS_MAINP_LOCK_ID_START && id <= OS_MAINP_SYSTEM_LOCK_ID, \ + "lock ID %d is out of bounds", id ) +#else +#define OSi_ASSERT_ID( id ) SDK_ASSERTMSG( id >= OS_SUBP_LOCK_ID_START && id <= OS_SUBP_SYSTEM_LOCK_ID, \ + "lock ID %d is out of bounds", id ) +#endif + + +#define OSi_LOCKID_INITIAL_FLAG_0 0xffffffff +#define OSi_LOCKID_INITIAL_FLAG_1 0xffff0000 + + +#ifdef SDK_ARM9 +#define OSi_ANYP_LOCK_ID_FLAG HW_LOCK_ID_FLAG_MAIN +#define OSi_ANYP_LOCK_ID_START OS_MAINP_LOCK_ID_START +#else +#define OSi_ANYP_LOCK_ID_FLAG HW_LOCK_ID_FLAG_SUB +#define OSi_ANYP_LOCK_ID_START OS_SUBP_LOCK_ID_START +#endif + +//====================================================================== +// DUMMY LOOP +//====================================================================== +/*---------------------------------------------------------------------------* + Name: OSi_WaitByLoop + + Description: wait by for() loop + + Arguments: None. + + Returns: None. + *---------------------------------------------------------------------------*/ +static inline void OSi_WaitByLoop(void) +{ +#ifdef SDK_DEBUGGER_ARM + OS_SpinWait(0x1000); +#else + SVC_WaitByLoop(0x1000 / 4); +#endif +} + +//====================================================================== +// INITIALIZE +//====================================================================== +/*---------------------------------------------------------------------------* + Name: OS_InitLock + + Description: initialize system lock variable + and privilege to access shared resources + + * cartridge exclusive control area is not cleared + because debugger uses. + + Arguments: None. + + Returns: None. + *---------------------------------------------------------------------------*/ +void OS_InitLock(void) +{ + static BOOL isInitialized = FALSE; + OSLockWord *lockp; + + if (isInitialized) + return; // do it only once + isInitialized = TRUE; + + lockp = (OSLockWord *)HW_INIT_LOCK_BUF; + +#ifdef SDK_ARM9 + { + // + // Code for MAIN PROCESSOR + // + + lockp->lockFlag = 0; + (void)OS_LockByWord(OS_MAINP_SYSTEM_LOCK_ID - 1, lockp, NULL); + + // サブプロセッサによる共有リソース未使用チェック + while (lockp->extension != 0) + { + OSi_WaitByLoop(); + } + + // ロックIDカウンタ用フラグ 初期化 + ((u32 *)OSi_ANYP_LOCK_ID_FLAG)[0] = OSi_LOCKID_INITIAL_FLAG_0; + ((u32 *)OSi_ANYP_LOCK_ID_FLAG)[1] = OSi_LOCKID_INITIAL_FLAG_1; + + // ロックバッファ クリア(カートリッジ領域以外) + MI_CpuClear32((void *)HW_SHARED_LOCK_BUF, HW_CTRDG_LOCK_BUF - HW_SHARED_LOCK_BUF); + + // NITRO カードアクセス権 → サブプロセッサ + MIi_SetCardProcessor(MI_PROCESSOR_ARM7); + + // カートリッジアクセス権 → サブプロセッサ + MIi_SetCartridgeProcessor(MI_PROCESSOR_ARM7); + +#ifndef SDK_FINALROM + _ISDbgLib_Initialize(); +#endif + + (void)OS_UnlockByWord(OS_MAINP_SYSTEM_LOCK_ID - 1, lockp, NULL); + (void)OS_LockByWord(OS_MAINP_SYSTEM_LOCK_ID, lockp, NULL); + } + +#else // SDK_ARM7 + { + // + // Code for SUB PROCESSOR + // + + lockp->extension = 0; + while (lockp->ownerID != OS_MAINP_SYSTEM_LOCK_ID) + { + OSi_WaitByLoop(); + } + +#ifndef SDK_FINALROM + _ISDbgLib_Initialize(); +#endif + + // ロックIDカウンタ用フラグ 初期化 + ((u32 *)OSi_ANYP_LOCK_ID_FLAG)[0] = OSi_LOCKID_INITIAL_FLAG_0; + ((u32 *)OSi_ANYP_LOCK_ID_FLAG)[1] = OSi_LOCKID_INITIAL_FLAG_1; + + // メインプロセッサとの初期化終了の同期 + lockp->extension = OS_SUBP_SYSTEM_LOCK_ID; + } +#endif +} + + +//====================================================================== +// LOCK +//====================================================================== +/*---------------------------------------------------------------------------* + Name: OSi_DoLockByWord + + Description: do spinlock. keep to try till success + + Arguments: lockID lock ID + lockp pointer to lock variable + ctrlFuncp function + disableFiq whether do disable fiq + + Returns: OS_LOCK_SUCCESS success to lock + *---------------------------------------------------------------------------*/ +static s32 OSi_DoLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), + BOOL disableFiq) +{ + s32 lastLockFlag; + + while ((lastLockFlag = + OSi_DoTryLockByWord(lockID, lockp, ctrlFuncp, disableFiq)) > OS_LOCK_SUCCESS) + { + OSi_WaitByLoop(); + } + + return lastLockFlag; +} + +/*---------------------------------------------------------------------------* + Name: OS_LockByWord + + Description: do spinlock. keep to try till success. + + Arguments: lockID lock ID + lockp pointer to lock variable + ctrlFuncp function + + Returns: OS_LOCK_SUCCESS success to lock + *---------------------------------------------------------------------------*/ +s32 OS_LockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)) +{ + return OSi_DoLockByWord(lockID, lockp, ctrlFuncp, FALSE); +} + +/*---------------------------------------------------------------------------* + Name: OS_LockByWord_IrqAndFiq + + Description: do spinlock. keep to try till success. + disable irq and fiq + + Arguments: lockID lock ID + lockp pointer to lock variable + ctrlFuncp function + + Returns: OS_LOCK_SUCCESS success to lock + *---------------------------------------------------------------------------*/ +s32 OS_LockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)) +{ + return OSi_DoLockByWord(lockID, lockp, ctrlFuncp, TRUE); +} + + +//====================================================================== +// UNLOCK +//====================================================================== +/*---------------------------------------------------------------------------* + Name: OSi_DoUnlockByWord + + Description: do unlock lock. + + Arguments: lockID lock ID + lockp pointer to unlock variable + ctrlFuncp function + disableFiq whether do disable fiq + + Returns: OS_UNLOCK_SUCCESS success + OS_UNLOCK_ERROR error of unlocking lock + *---------------------------------------------------------------------------*/ +static s32 OSi_DoUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), + BOOL disableFIQ) +{ + OSIntrMode lastInterrupts; + + OSi_ASSERT_ID(lockID); + + if (lockID != lockp->ownerID) + { + return OS_UNLOCK_ERROR; + } + + //---- Disable irq/fiq or irq + lastInterrupts = (disableFIQ) ? OS_DisableInterrupts_IrqAndFiq() : OS_DisableInterrupts(); + + lockp->ownerID = 0; + if (ctrlFuncp) + { + ctrlFuncp(); + } + lockp->lockFlag = 0; + + //---- Restore irq/fiq or irq + if (disableFIQ) + { + (void)OS_RestoreInterrupts_IrqAndFiq(lastInterrupts); + } + else + { + (void)OS_RestoreInterrupts(lastInterrupts); + } + + return OS_UNLOCK_SUCCESS; +} + +/*---------------------------------------------------------------------------* + Name: OS_UnlockByWord + + Description: do unlock lock. + disable irq and fiq + + Arguments: lockID lock ID + lockp pointer to unlock variable + ctrlFuncp function + + Returns: OS_UNLOCK_SUCCESS success + OS_UNLOCK_ERROR error of unlocking lock + *---------------------------------------------------------------------------*/ +s32 OS_UnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)) +{ + return OSi_DoUnlockByWord(lockID, lockp, ctrlFuncp, FALSE); +} + +//---- for compatibility to old name ('UnLock' <-> 'Unlock') +s32 OS_UnLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)) +{ + return OSi_DoUnlockByWord(lockID, lockp, ctrlFuncp, FALSE); +} + +/*---------------------------------------------------------------------------* + Name: OS_UnlockByWord_IrqAndFiq + + Description: do unlock lock. + + Arguments: lockID lock ID + lockp pointer to unlock variable + ctrlFuncp function + + Returns: OS_UNLOCK_SUCCESS success + OS_UNLOCK_ERROR error of unlocking lock + *---------------------------------------------------------------------------*/ +s32 OS_UnlockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)) +{ + return OSi_DoUnlockByWord(lockID, lockp, ctrlFuncp, TRUE); +} + + +//====================================================================== +// TRY LOCK +//====================================================================== +/*---------------------------------------------------------------------------* + Name: OSi_DoTryLockByWord + + Description: try to lock spinlock only once. + + Arguments: lockID lock ID + lockp pointer to trying to lock variable + ctrlFuncp function + disableFiq whether do disable fiq + + Returns: >0 value previous locked id + OS_LOCK_SUCCESS success to lock + *---------------------------------------------------------------------------*/ +static s32 OSi_DoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), + BOOL disableFIQ) +{ + s32 lastLockFlag; + OSIntrMode lastInterrupts; + + OSi_ASSERT_ID(lockID); + + //---- Disable irq/fiq or irq + lastInterrupts = (disableFIQ) ? OS_DisableInterrupts_IrqAndFiq() : OS_DisableInterrupts(); + + lastLockFlag = (s32)MI_SwapWord(lockID, &lockp->lockFlag); + + if (lastLockFlag == OS_LOCK_SUCCESS) + { + if (ctrlFuncp) + { + ctrlFuncp(); + } + lockp->ownerID = lockID; + } + + //---- Restore irq/fiq or irq + if (disableFIQ) + { + (void)OS_RestoreInterrupts_IrqAndFiq(lastInterrupts); + } + else + { + (void)OS_RestoreInterrupts(lastInterrupts); + } + + return lastLockFlag; +} + +/*---------------------------------------------------------------------------* + Name: OS_TryLockByWord + + Description: try to lock spinlock only once. + + Arguments: lockID lock ID + lockp pointer to trying to lock variable + ctrlFuncp function + + Returns: >0 value previous locked id + OS_LOCK_SUCCESS success to lock + *---------------------------------------------------------------------------*/ +s32 OS_TryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)) +{ + return OSi_DoTryLockByWord(lockID, lockp, ctrlFuncp, FALSE); +} + +/*---------------------------------------------------------------------------* + Name: OS_TryLockByWord_IrqAndFiq + + Description: try to lock spinlock only once. + + Arguments: lockID lock ID + lockp pointer to trying to lock variable + ctrlFuncp function + + Returns: >0 value previous locked id + OS_LOCK_SUCCESS success to lock + *---------------------------------------------------------------------------*/ +s32 OS_TryLockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)) +{ + return OSi_DoTryLockByWord(lockID, lockp, ctrlFuncp, TRUE); +} + + +//====================================================================== +// CARTRIDGE +//====================================================================== +/*---------------------------------------------------------------------------* + Name: OS_LockCartridge + + Description: lock cartridge + + Arguments: lockID lock ID + + Returns: OS_LOCK_SUCCESS success to lock + *---------------------------------------------------------------------------*/ +s32 OS_LockCartridge(u16 lockID) +{ + s32 lastLockFlag; + + OSi_ASSERT_ID(lockID); + + lastLockFlag = + OSi_DoLockByWord(lockID, (OSLockWord *)HW_CTRDG_LOCK_BUF, OSi_AllocateCartridgeBus, TRUE); + +#ifndef SDK_FINALROM + _ISDbgLib_AllocateEmualtor(); +#endif + + return lastLockFlag; +} + +/*---------------------------------------------------------------------------* + Name: OS_UnlockCartridge + + Description: unlock cartridge + + Arguments: lockID lock ID + + Returns: OS_UNLOCK_SUCCESS success + OS_UNLOCK_ERROR error of unlocking lock + *---------------------------------------------------------------------------*/ +s32 OS_UnlockCartridge(u16 lockID) +{ + s32 lastLockFlag; + + OSi_ASSERT_ID(lockID); + +#ifndef SDK_FINALROM + _ISDbgLib_FreeEmulator(); +#endif + + lastLockFlag = + OSi_DoUnlockByWord(lockID, (OSLockWord *)HW_CTRDG_LOCK_BUF, OSi_FreeCartridgeBus, TRUE); + + return lastLockFlag; +} + +//---- for compatibility to old name ('UnLock' <-> 'Unlock') +asm s32 OS_UnLockCartridge( u16 lockID ) +{ + ldr r1, =OS_UnlockCartridge + bx r1 +} + +/*---------------------------------------------------------------------------* + Name: OS_TryLockCartridge + + Description: try to lock cartridge + + Arguments: lockID lock ID + + Returns: >0 value previous locked id + OS_LOCK_SUCCESS success to lock + *---------------------------------------------------------------------------*/ +s32 OS_TryLockCartridge(u16 lockID) +{ + s32 lastLockFlag; + + lastLockFlag = + OSi_DoTryLockByWord(lockID, (OSLockWord *)HW_CTRDG_LOCK_BUF, OSi_AllocateCartridgeBus, + TRUE); + +#ifndef SDK_FINALROM + if (lastLockFlag == OS_LOCK_SUCCESS) + { + _ISDbgLib_AllocateEmualtor(); + } +#endif + + return lastLockFlag; +} + +//---------------- +static void OSi_AllocateCartridgeBus(void) +{ +#ifdef SDK_ARM9 + MIi_SetCartridgeProcessor(MI_PROCESSOR_ARM9); // Cartridge for MAIN +#endif +} + +//---------------- +static void OSi_FreeCartridgeBus(void) +{ +#ifdef SDK_ARM9 + MIi_SetCartridgeProcessor(MI_PROCESSOR_ARM7); // Cartridge for SUB +#endif +} + +//====================================================================== +// CARD +//====================================================================== + +/* + * 20040708:yosizaki + * TEG では ARM9 がロックした後 ARM7 へ転送要求する必要がある. + * このときロックが共有だと ARM9 のロック中で ARM 7 がロックできない. + * ので, 単に個々のロック ID によってプロセッサ内での排他制御を行う. + */ +#if defined(SDK_TEG) + +static u32 osi_card_lock = OS_LOCK_ID_ERROR; + +static s32 OSi_LockCardID(u16 lockID, BOOL blocking) +{ + s32 ret = OS_LOCK_ID_ERROR; + for (;;) + { + OSIntrMode bak_psr = OS_DisableInterrupts(); + ret = osi_card_lock; + if (ret == OS_LOCK_ID_ERROR) + { + osi_card_lock = lockID; + ret = OS_LOCK_SUCCESS; + } + (void)OS_RestoreInterrupts(bak_psr); + if ((ret != OS_LOCK_SUCCESS) && blocking) + { + OSi_WaitByLoop(); + continue; + } + break; + } + return ret; +} + +static s32 OSi_UnlockCardID(u16 lockID) +{ + if (osi_card_lock != lockID) + return OS_UNLOCK_ERROR; + osi_card_lock = OS_LOCK_ID_ERROR; + return OS_UNLOCK_SUCCESS; +} + +#endif + + +/*---------------------------------------------------------------------------* + Name: OS_LockCard + + Description: lock card + + Arguments: lockID lock ID + + Returns: OS_LOCK_SUCCESS success to lock + *---------------------------------------------------------------------------*/ +s32 OS_LockCard(u16 lockID) +{ + OSi_ASSERT_ID(lockID); + +#if defined(SDK_TEG) + return OSi_LockCardID(lockID, TRUE); +#else + return OS_LockByWord(lockID, (OSLockWord *)HW_CARD_LOCK_BUF, OSi_AllocateCardBus); +#endif +} + +/*---------------------------------------------------------------------------* + Name: OS_UnlockCard + + Description: unlock card + + Arguments: lockID lock ID + + Returns: OS_UNLOCK_SUCCESS success + OS_UNLOCK_ERROR error of unlocking lock + *---------------------------------------------------------------------------*/ +s32 OS_UnlockCard(u16 lockID) +{ + OSi_ASSERT_ID(lockID); + +#if defined(SDK_TEG) + return OSi_UnlockCardID(lockID); +#else + return OS_UnlockByWord(lockID, (OSLockWord *)HW_CARD_LOCK_BUF, OSi_FreeCardBus); +#endif +} + +//---- for compatibility to old name ('UnLock' <-> 'Unlock') +asm s32 OS_UnLockCard( u16 lockID ) +{ + ldr r1, =OS_UnlockCard + bx r1 +} + +/*---------------------------------------------------------------------------* + Name: OS_TryLockCard + + Description: try to lock card + + Arguments: lockID lock ID + + Returns: >0 value previous locked id + OS_LOCK_SUCCESS success to lock + *---------------------------------------------------------------------------*/ +s32 OS_TryLockCard(u16 lockID) +{ +#if defined(SDK_TEG) + return OSi_LockCardID(lockID, FALSE); +#else + return OS_TryLockByWord(lockID, (OSLockWord *)HW_CARD_LOCK_BUF, OSi_AllocateCardBus); +#endif +} + +//---------------- +static void OSi_AllocateCardBus(void) +{ +#ifdef SDK_ARM9 + MIi_SetCardProcessor(MI_PROCESSOR_ARM9); // Card for MAIN +#endif +} + +//---------------- +static void OSi_FreeCardBus(void) +{ +#ifdef SDK_ARM9 + MIi_SetCardProcessor(MI_PROCESSOR_ARM7); // Card for SUB +#endif +} + + +//====================================================================== +// READ OWNER +//====================================================================== +/*---------------------------------------------------------------------------* + Name: OS_ReadOwnerOfLockWord + + Description: read owner id of lock + + ・モジュールID が非0 の場合はその時点でどちらのプロセッサ側が + 所有権を持っているのかを確認できます。 + ・共有リソースの場合は「メインプロセッサ側が所有権を持っている状態」 + のみを割り込みを禁止することによって維持することができます。 + その他の状態はサブプロセッサが変化させてしまう可能性があります。 + ・所有モジュールID が 0 であってもロック変数が解除されているとは限りません。 + + Arguments: lockp pointer to lock + + Returns: owner id + *---------------------------------------------------------------------------*/ +u16 OS_ReadOwnerOfLockWord(OSLockWord *lockp) +{ + return lockp->ownerID; +} + +//====================================================================== +// LOCK ID +//====================================================================== +/*---------------------------------------------------------------------------* + Name: OS_GetLockID + + Description: get lock ID + + Arguments: None. + + Returns: OS_LOCK_ID_ERROR, if fail to get ID + + if ARM9 + 0x40〜0x6f lockID + else if ARM7 + 0x80〜0xaf lockID + endif + + *Notice: ID is allocated only 48 pattern at a highest. + + IDは48種類までしか割り当てることができません。 + モジュール内にて複数のロック変数を制御する場合は + できるだけ1つのIDを使用するようにして下さい。 + *---------------------------------------------------------------------------*/ +#include +asm s32 OS_GetLockID( void ) +{ + //---- フラグの前32ビットに立っているフラグ(空きID)があるか + ldr r3, =OSi_ANYP_LOCK_ID_FLAG + ldr r1, [r3, #0] + +#ifdef SDK_ARM9 + clz r2, r1 +#else + mov r2, #0 + mov r0, #0x80000000 +_lp1: + tst r1, r0 + bne _ex1 + add r2, r2, #1 + cmp r2, #32 + beq _ex1 + + mov r0, r0, lsr #1 + b _lp1 + _ex1: +#endif + cmp r2, #32 + + //---- 空きIDがあるとき + movne r0, #OSi_ANYP_LOCK_ID_START + bne _1 + + //---- 後ろ323ビットに立っているフラグ(空きID)があるか + add r3, r3, #4 + ldr r1, [r3, #0] +#ifdef SDK_ARM9 + clz r2, r1 +#else + mov r2, #0 + mov r0, #0x80000000 +_lp2: + tst r1, r0 + bne _ex2 + add r2, r2, #1 + cmp r2, #32 + beq _ex2 + + mov r0, r0, lsr #1 + b _lp2 + _ex2: +#endif + cmp r2, #32 + + //---- 空きIDがない + ldr r0, =OS_LOCK_ID_ERROR + bxeq lr + + //---- 空きIDがあるとき + mov r0, #OSi_ANYP_LOCK_ID_START+32 + +_1: + add r0, r0, r2 + mov r1, #0x80000000 + mov r1, r1, lsr r2 + + ldr r2, [r3, #0] + bic r2, r2, r1 + str r2, [r3, #0] + + bx lr +} + +/*---------------------------------------------------------------------------* + Name: OS_ReleaseLockID + + Description: release lock ID + + Arguments: id to tend to release + + Returns: None. + *---------------------------------------------------------------------------*/ +asm void OS_ReleaseLockID( register u16 lockID ) +{ +#pragma unused( lockID ) + + ldr r3, =OSi_ANYP_LOCK_ID_FLAG + + cmp r0, #OSi_ANYP_LOCK_ID_START+32 + addpl r3, r3, #4 + + subpl r0, r0, #OSi_ANYP_LOCK_ID_START+32 + submi r0, r0, #OSi_ANYP_LOCK_ID_START + + mov r1, #0x80000000 + mov r1, r1, lsr r0 + + ldr r2, [r3, #0] + orr r2, r2, r1 + str r2, [r3, #0] + + bx lr +} +#include diff --git a/build/libraries/os/common/os_system_twl.c b/build/libraries/os/common/os_system_twl.c new file mode 100644 index 0000000..5eeaec5 --- /dev/null +++ b/build/libraries/os/common/os_system_twl.c @@ -0,0 +1,379 @@ +/*---------------------------------------------------------------------------* + Project: NitroSDK - OS + File: os_system.c + + Copyright 2003-2006 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: os_system.c,v $ + Revision 1.33 2006/01/18 02:11:30 kitase_hirotake + do-indent + + Revision 1.32 2006/01/10 06:07:34 okubata_ryoma + OS_Terminate関連の関数を別ファイルへ移動 + + Revision 1.31 2005/12/08 07:06:09 okubata_ryoma + small fix + + Revision 1.30 2005/11/28 04:26:56 seiki_masashi + small fix + + Revision 1.29 2005/11/25 08:30:20 terui + OS_WaitVBlankIntr内でSVC_WaitByLoopを呼ぶように改定 + + Revision 1.28 2005/11/22 09:11:28 yosizaki + support SDK_ENABLE_ARM7_PRINT. + + Revision 1.27 2005/10/07 08:21:16 yada + add OS_WaitVBlankIntr() + + Revision 1.26 2005/09/09 04:36:22 yada + print "\n" before exit string + + Revision 1.25 2005/09/01 00:31:19 yada + avoid warning at FINALROM build in OS_Exit() + + Revision 1.24 2005/08/31 12:02:32 yada + add OS_Exit() + + Revision 1.23 2005/03/04 11:09:27 yasu + __declspec(weak) を SDK_WEAK_SYMBOL に置き換え + + Revision 1.22 2005/02/28 05:26:29 yosizaki + do-indent. + + Revision 1.21 2005/02/18 08:51:35 yasu + 著作年度変更 + + Revision 1.20 2005/02/18 06:22:20 yasu + Signed/Unsigned 変換警告抑制 + + Revision 1.19 2004/11/24 10:55:51 yada + Let OS_Terminate() and OS_Halt() be weak symbols. + + Revision 1.18 2004/11/24 04:33:51 yada + just fix typo + + Revision 1.17 2004/09/02 06:22:17 yada + only change comment + + Revision 1.16 2004/05/24 04:48:29 yada + OS_WaitIntr() -> OS_WaitInterrupt() + + Revision 1.15 2004/05/20 06:36:24 yasu + ARM7: Use SVC_WaitByLoop in OS_SpinWait + + Revision 1.14 2004/05/10 11:22:19 yada + add OS_WaitIntr() + + Revision 1.13 2004/04/06 11:22:42 yada + add "bx lr" in OS_Halt() for ARM9 + + Revision 1.12 2004/04/06 01:37:45 yada + OS_Terminate() 追加 + + Revision 1.11 2004/03/29 02:56:32 yada + OS_Halt() は SVC_Halt() を呼ぶように変更 + + Revision 1.10 2004/03/26 02:53:46 yasu + apply systemcall 2 for OS_Halt at ARM7 + + Revision 1.9 2004/03/04 09:47:04 yada + OSDisableInterrupt() を IRQ 禁止にした。 + IRQ/FIQ 禁止には別関数を用意した。 + + Revision 1.8 2004/02/27 01:55:00 yasu + add OS_SpinWait, move OS_Halt into os_system.c + + Revision 1.7 2004/02/13 08:45:30 yasu + uncomment all if ARM7 + + Revision 1.6 2004/02/10 12:12:43 yada + OS_GetDTCMAddress, OS_GetITCMAddress を os_tcm.cに移行 + + Revision 1.5 2004/02/10 11:21:47 yada + (none) + + Revision 1.4 2004/02/10 11:19:56 yada + Interrupt 関係のinline をやめる + + Revision 1.3 2004/02/10 02:29:27 yada + ARM9にしか有効でないコードのifdef + + Revision 1.2 2004/02/10 01:25:30 yasu + include code32.h + + Revision 1.1 2004/02/09 11:36:55 yada + OS_GetDTCMAddress, OS_GetITCMAddress 作成 + + + $NoKeywords: $ + *---------------------------------------------------------------------------*/ +#include +#include + +//============================================================================ +// CONTROL INTERRUPT +//============================================================================ +/*---------------------------------------------------------------------------* + Name: OS_EnableInterrupts + + Description: Set CPSR to enable irq interrupts + + Arguments: None. + + Returns: last state of HW_PSR_IRQ_DISABLE + *---------------------------------------------------------------------------*/ +asm OSIntrMode OS_EnableInterrupts( void ) +{ + mrs r0, cpsr + bic r1, r0, #HW_PSR_IRQ_DISABLE + msr cpsr_c, r1 + and r0, r0, #HW_PSR_IRQ_DISABLE + + bx lr +} + + +/*---------------------------------------------------------------------------* + Name: OS_DisableInterrupts + + Description: Set CPSR to disable irq interrupts + + Arguments: None. + + Returns: last state of HW_PSR_IRQ_DISABLE + *---------------------------------------------------------------------------*/ +asm OSIntrMode OS_DisableInterrupts( void ) +{ + mrs r0, cpsr + orr r1, r0, #HW_PSR_IRQ_DISABLE + msr cpsr_c, r1 + and r0, r0, #HW_PSR_IRQ_DISABLE + + bx lr +} + + +/*---------------------------------------------------------------------------* + Name: OS_RestoreInterrupts + + Description: Restore CPSR irq interrupt + + Arguments: state of irq interrupt bit + + Returns: last state of HW_PSR_IRQ_DISABLE + *---------------------------------------------------------------------------*/ +asm OSIntrMode OS_RestoreInterrupts( register OSIntrMode state ) +{ + mrs r1, cpsr + bic r2, r1, #HW_PSR_IRQ_DISABLE + orr r2, r2, r0 + msr cpsr_c, r2 + and r0, r1, #HW_PSR_IRQ_DISABLE + + bx lr +} + + +/*---------------------------------------------------------------------------* + Name: OS_EnableInterrupts_IrqAndFiq + + Description: Set CPSR to enable irq and fiq interrupts + + Arguments: None. + + Returns: last state of HW_PSR_IRQ_DISABLE & HW_PSR_FIQ_DISABLE + *---------------------------------------------------------------------------*/ +asm OSIntrMode OS_EnableInterrupts_IrqAndFiq( void ) +{ + mrs r0, cpsr + bic r1, r0, #HW_PSR_IRQ_FIQ_DISABLE + msr cpsr_c, r1 + and r0, r0, #HW_PSR_IRQ_FIQ_DISABLE + + bx lr +} + + +/*---------------------------------------------------------------------------* + Name: OS_DisableInterrupts_IrqAndFiq + + Description: Set CPSR to disable irq and fiq interrupts + + Arguments: None. + + Returns: last state of HW_PSR_IRQ_DISABLE & HW_PSR_FIQ_DISABLE + *---------------------------------------------------------------------------*/ +asm OSIntrMode OS_DisableInterrupts_IrqAndFiq( void ) +{ + mrs r0, cpsr + orr r1, r0, #HW_PSR_IRQ_FIQ_DISABLE + msr cpsr_c, r1 + and r0, r0, #HW_PSR_IRQ_FIQ_DISABLE + + bx lr +} + + +/*---------------------------------------------------------------------------* + Name: OS_RestoreInterrupts_IrqAndFiq + + Description: Restore CPSR irq and fiq interrupt + + Arguments: state of irq and fiq interrupt bit + + Returns: last state of HW_PSR_IRQ_DISABLE & HW_PSR_FIQ_DISABLE + *---------------------------------------------------------------------------*/ +asm OSIntrMode OS_RestoreInterrupts_IrqAndFiq( register OSIntrMode state ) +{ + mrs r1, cpsr + bic r2, r1, #HW_PSR_IRQ_FIQ_DISABLE + orr r2, r2, r0 + msr cpsr_c, r2 + and r0, r1, #HW_PSR_IRQ_FIQ_DISABLE + + bx lr +} + + +/*---------------------------------------------------------------------------* + Name: OS_GetCpsrIrq + + Description: Get current state of CPSR irq interrupt + + Arguments: None + + Returns: last state of HW_PSR_IRQ_DISABLE + *---------------------------------------------------------------------------*/ +asm OSIntrMode_Irq OS_GetCpsrIrq( void ) +{ + mrs r0, cpsr + and r0, r0, #HW_PSR_IRQ_DISABLE + + bx lr +} + + +//============================================================================ +// PROCESSER MODE +//============================================================================ +/*---------------------------------------------------------------------------* + Name: OS_GetProcMode + + Description: Get processor mode from CPSR + + Arguments: None. + + Returns: CPU processor mode (field 0x10-0x1f) + *---------------------------------------------------------------------------*/ +asm OSProcMode OS_GetProcMode( void ) +{ + mrs r0, cpsr + and r0, r0, #HW_PSR_CPU_MODE_MASK + + bx lr +} + +#include + + +//============================================================================ +// WAIT +//============================================================================ +/*---------------------------------------------------------------------------* + Name: OS_SpinWait + + Description: Spin and Wait for specified CPU cycles at least + + Arguments: cycles waiting CPU cycle + + Returns: None + *---------------------------------------------------------------------------*/ +#if defined(SDK_ARM9) || defined(SDK_DEBUGGER_ARM) +#include +asm void OS_SpinWait( u32 cycle ) +{ +_1: subs r0, r0, #4 // 3 cycle + bcs _1 // 1 cycle + bx lr +} +#include +#else +void OS_SpinWait(u32 cycle) +{ + SVC_WaitByLoop((s32)cycle / 4); +} +#endif + + +/*---------------------------------------------------------------------------* + Name: OS_WaitInterrupt + + Description: wait specifiled interrupt. + the difference between OS_WaitIrq and OS_WaitInterrupt is: + in waiting interrupt + OS_WaitIrq does switch thread, + OS_WaitInterrupt doesn't switch thread. + OS_WaitIrq wait by using OS_SleepThread() with threadQueue, + OS_WaitInterrupt wait by using OS_Halt(). + if SDK_NO_THREAD defined, 2 functions become same. + + Arguments: clear TRUE if want to clear interrupt flag before wait. + FALSE if not. + irqFlags bit of interrupts to wait for + + Returns: None + *---------------------------------------------------------------------------*/ +void OS_WaitInterrupt(BOOL clear, OSIrqMask irqFlags) +{ + OSIntrMode cpsrIrq = OS_DisableInterrupts(); + BOOL ime = OS_EnableIrq(); + + if (clear) + { + (void)OS_ClearIrqCheckFlag(irqFlags); + } + + while (!(OS_GetIrqCheckFlag() & irqFlags)) + { + OS_Halt(); + (void)OS_EnableInterrupts(); + (void)OS_DisableInterrupts(); + } + + (void)OS_ClearIrqCheckFlag(irqFlags); + (void)OS_RestoreIrq(ime); + (void)OS_RestoreInterrupts(cpsrIrq); +} + +/*---------------------------------------------------------------------------* + Name: OS_WaitVBlankIntr + + Description: wait till vblank interrupt occurred. + the difference between SVC_WaitVBlankIntr and OS_WaitVBlankIntr is: + OS_WaitVBlankIntr does switch thread, + SVC_WaitVBlankIntr doesn't switch thread. + + Arguments: None + + Returns: None + *---------------------------------------------------------------------------*/ +void OS_WaitVBlankIntr(void) +{ +#ifdef SDK_DEBUGGER_ARM + OS_SpinWait(4); +#else + SVC_WaitByLoop(1); +#endif +#if defined(SDK_ENABLE_ARM7_PRINT) && defined(SDK_ARM9) + // PrintServer for ARM7 (if specified) + OS_PrintServer(); +#endif + OS_WaitIrq(TRUE, OS_IE_V_BLANK); +} diff --git a/build/libraries/vlink/ARM7/Makefile b/build/libraries/vlink/ARM7/Makefile new file mode 100644 index 0000000..a4f99c9 --- /dev/null +++ b/build/libraries/vlink/ARM7/Makefile @@ -0,0 +1,63 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - libraries_sp - os +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +SUBDIRS = +#SUBMAKES = Makefile.CALLTRACE \ +# Makefile.FUNCTIONCOST + +#---------------------------------------------------------------------------- + +# build ARM & THUMB libraries +TWL_CODEGEN_ALL ?= TRUE + +# Codegen for sub processer +TWL_PROC = ARM7 + +SRCDIR = ../common . +SRCDIR += $(TWL_NITROSDK_ROOT)/build/libraries/os/common/src \ + $(TWL_NITROSDK_ROOT)/build/libraries/os/ARM7/src \ + +SRCS = \ + osemu.c \ + osemu2.c \ + +TARGET_LIB = libvlink_sp$(TWL_LIBSUFFIX).a + + +#---------------------------------------------------------------------------- + +# DEBUG版ビルドの場合、RELEASE版でビルドして +# DEBUG版のライブラリを装います。 + +ifdef NITRO_DEBUG +NITRO_BUILD_TYPE = RELEASE +endif + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + +INSTALL_TARGETS = $(TARGETS) +INSTALL_DIR = $(TWL_INSTALL_LIBDIR) + + +#---------------------------------------------------------------------------- + +do-build: $(TARGETS) + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/libraries/vlink/ARM9/Makefile b/build/libraries/vlink/ARM9/Makefile new file mode 100644 index 0000000..c9b8bae --- /dev/null +++ b/build/libraries/vlink/ARM9/Makefile @@ -0,0 +1,61 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - libraries - os +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +SUBDIRS = +SUBMAKES = + + +#---------------------------------------------------------------------------- + +# build ARM & THUMB libraries +TWL_CODEGEN_ALL ?= True + +SRCDIR = ../common . +SRCDIR += $(TWL_NITROSDK_ROOT)/build/libraries/os/common/src \ + $(TWL_NITROSDK_ROOT)/build/libraries/os/ARM9/src \ + +SRCS = \ + osemu.c \ + osemu2.c \ + + +TARGET_LIB = libvlink$(TWL_LIBSUFFIX).a + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + +INSTALL_TARGETS = $(TARGETS) +INSTALL_DIR = $(TWL_INSTALL_LIBDIR) + +ifdef NITRO_CALLTRACE +CCFLAGS += -DOS_PROFILE_AVAILABLE -DOS_PROFILE_CALL_TRACE +endif + +ifdef NITRO_FUNCTIONCOST +CCFLAGS += -DOS_PROFILE_AVAILABLE -DOS_PROFILE_FUNCTION_COST +endif + +ifdef NITRO_TCM_APPLY +CCFLAGS += -DSDK_TCM_APPLY +endif + +#---------------------------------------------------------------------------- + +do-build: $(TARGETS) + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + +#===== End of Makefile ===== diff --git a/build/libraries/vlink/Makefile b/build/libraries/vlink/Makefile new file mode 100644 index 0000000..3317724 --- /dev/null +++ b/build/libraries/vlink/Makefile @@ -0,0 +1,34 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - libraries - vlink +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + + +#---------------------------------------------------------------------------- + +SUBDIRS = ARM9 + +#ifdef TWL_WITH_ARM7 +SUBDIRS += ARM7 +#endif + +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/libraries/vlink/common/osemu.c b/build/libraries/vlink/common/osemu.c new file mode 100644 index 0000000..d4a9939 --- /dev/null +++ b/build/libraries/vlink/common/osemu.c @@ -0,0 +1,1022 @@ +/* + OSEMU.C + + Copyright (c) 1995-2002 by Kyoto Micro Computer Co.,LTD. + All Rights Reserved. + +*/ + +//#include +#include +#include + +void (*i_vlink_start_fnc)(void); +void (*i_vlink_end_fnc)(void); + +#define VLINK_START if(i_vlink_start_fnc!=0) i_vlink_start_fnc(); +#define VLINK_END if(i_vlink_end_fnc!=0) i_vlink_end_fnc(); + +#define __asm__ asm + +#define PORTSIZE unsigned char + +int vlink_dos_errno; + +#define UBYTE unsigned char +#define UWORD unsigned short +#define ULONG unsigned + +#define MONADR __et2_vlink_monadr +#define MONADR_H __et2_vlink_monadr_h +#define SHIFT_L __et2_vlink_shift_l +#define SHIFT_R __et2_vlink_shift_r +#define CMDWRS __et2_vlink_cmdwrs +#define CMDRD __et2_vlink_cmdrd +#define STAT __et2_vlink_stat + +ULONG MONADR=0; +ULONG SHIFT_L=0; +ULONG SHIFT_R=0; +ULONG MONADR_H=0; + +volatile PORTSIZE *CMDWRS=0; +volatile PORTSIZE *CMDRD=0; +volatile PORTSIZE *STAT=0; + + +#define OSEMU 0x83 +#define EMU_OPEN 0x0 +#define EMU_CREAT 0x1 +#define EMU_READ 0x2 +#define EMU_WRITE 0x3 +#define EMU_CLOSE 0x4 +#define EMU_LSEEK 0x5 +#define EMU_FILE_MODE 0x6 + +#define EMU_FIND_FIRST 0x8 +#define EMU_FIND_NEXT 0x9 +#define EMU_FIND_CLOSE 0xa +#define EMU_GET_IOCTL 0xb +#define EMU_GET_FILE_TM 0xc +#define EMU_GET_TIME 0xd +#define EMU_SET_FILE_TM 0xe +#define EMU_MKDIR 0xf +#define EMU_RMDIR 0x10 +#define EMU_REMOVE 0x11 +#define EMU_RENAME 0x12 +#define EMU_GETCWD 0x13 +#define EMU_CHDIR 0x14 +#define EMU_GETCDRV 0x15 + + +#define EMU_DUP 0x18 +#define EMU_DUP2 0x19 +#define EMU_VERSION 0x1a +#define EMU_EXIT 0x1b + +#define EMU_SLEEP 0x1d +#define EMU_ARG_ENV 0x1e +/* +char *_dos_arg; +char *_dos_env; +*/ + +static struct ffblk *ffblkp; + +static int putCMD_init(UBYTE c); +static int putCMD_not_use(UBYTE c); +static int not_use_vlink(void); + +int (*putCMD)(UBYTE) =putCMD_init; +void (*putPT)(UBYTE) =(void (*)(UBYTE))not_use_vlink; +UBYTE (*getPT)(void) =(UBYTE (*)(void))not_use_vlink; +UBYTE (*getPT_sync)(void) =(UBYTE (*)(void))not_use_vlink; +void (*putPT_sync)(UBYTE) =(void (*)(UBYTE))not_use_vlink; +void (*putPT_L)(ULONG) =(void (*)(ULONG))not_use_vlink; +ULONG (*getPT_L)(void) =(ULONG (*)(void))not_use_vlink; +void (*getPT_BLK)(UBYTE*,ULONG) =(void (*)(UBYTE*,ULONG))not_use_vlink; +void (*putPT_BLK)(UBYTE*,ULONG) =(void (*)(UBYTE*,ULONG))not_use_vlink; +UBYTE (*getSTAT)(void) =(UBYTE (*)(void))not_use_vlink; + +void (*putPT_flash)(void) =(void (*)(void))not_use_vlink; + + +static unsigned vlink_sync_stat; +static unsigned vlink_not_use_osemu; + +#include + +static asm int i_vlink_jtag_com_stat(void) /* bit0==1 受信でデータあり / bit1==0 送信可能 */ +{ + mrc p14,0,r0,c0,c0, 0 + bx lr +} + +static asm void i_vlink_jtag_com_put(ULONG r0) +{ + mcr p14,0,r0,c1,c0, 0 + bx lr +} + +static asm ULONG i_vlink_jtag_com_get(void) +{ + mrc p14,0,r0,c1,c0, 0 + bx lr +} + +static asm int i_vlink_jtag_com_stat11(void) /* bit30==1 受信でデータあり / bit29==0 送信可能 */ +{ + mrc p14,0,r0,c0,c1, 0 + bx lr +} + +static asm void i_vlink_jtag_com_put11(ULONG r0) +{ + mcr p14,0,r0,c0,c5, 0 + bx lr +} + +static asm ULONG i_vlink_jtag_com_get11(void) +{ + mrc p14,0,r0,c0,c5, 0 + bx lr +} + +static asm int i_vlink_jtag_cpuid(void) +{ +#ifdef SDK_ARM9 + mrc p15,0,r0,c0,c0, 0 /* bit[19..16] =7 ARMv6(ARM11) */ +#else // SDK_ARM7 + mov r0, #0x00050000 +#endif + bx lr +} + +static UBYTE VLC_getSTAT(void) +{ + return (i_vlink_jtag_com_stat() & 1); +} + +static void VLC_putPT(UBYTE c) +{ + while((i_vlink_jtag_com_stat() & 2)!=0){ + ; + } + i_vlink_jtag_com_put((ULONG)c); +} + +static int VLC_putCMD(UBYTE data) +{ + VLC_putPT(data); + return 0; +} + +static void VLC_putPT_L(ULONG c) +{ + while((i_vlink_jtag_com_stat() & 2)!=0){ + ; + } + i_vlink_jtag_com_put(c); +} + + +static UBYTE VLC_getPT(void) +{ + UBYTE c; + while((i_vlink_jtag_com_stat() & 1)==0){ + ; + } + c=(i_vlink_jtag_com_get()>>24); + return c; +} + +static ULONG VLC_getPT_L(void) +{ + ULONG c; + while((i_vlink_jtag_com_stat() & 1)==0){ + ; + } + c=i_vlink_jtag_com_get(); + return c; +} + +static UBYTE VLC_getSTAT11(void) +{ + return (i_vlink_jtag_com_stat11() & 0x40000000); +} + +static void VLC_putPT11(UBYTE c) +{ + while((i_vlink_jtag_com_stat11() & 0x20000000)!=0){ + ; + } + i_vlink_jtag_com_put11((ULONG)c); +} + +static int VLC_putCMD11(UBYTE data) +{ + VLC_putPT11(data); + return 0; +} + +static void VLC_putPT_L11(ULONG c) +{ + while((i_vlink_jtag_com_stat11() & 0x20000000)!=0){ + ; + } + i_vlink_jtag_com_put11(c); +} + + +static UBYTE VLC_getPT11(void) +{ + UBYTE c; + while((i_vlink_jtag_com_stat11() & 0x40000000)==0){ + ; + } + c=i_vlink_jtag_com_get11(); + return c; +} + +static ULONG VLC_getPT_L11(void) +{ + ULONG c; + while((i_vlink_jtag_com_stat11() & 0x40000000)==0){ + ; + } + c=i_vlink_jtag_com_get11(); + return c; +} + +#define VLC_BLK vlc_blk +#define EXT_CODE 0x12345678 +#define EOF_CODE 0x87654321 + +static void set_longp(void *p, ULONG dt) +{ + switch((ULONG)p&3) { + case 0: + *((ULONG *)p)= dt; + break; + case 2: + *((UWORD *)p)= dt; + dt >>= 16; + *((UWORD *)p+1)= dt; + break; + default: + *(UBYTE *)p=dt; + *((UBYTE *)p+1)=dt>>8; + *((UBYTE *)p+2)=dt>>16; + *((UBYTE *)p+3)=dt>>24; + } +} + +static void VLC_getPT_BLK(UBYTE *bufp,ULONG ct) +{ + ULONG data; + while(ct>=4){ + set_longp(bufp,getPT_L()); + bufp += 4; + ct -= 4; + } + if(ct!=0){ + data=getPT_L(); + do{ + *(bufp++)=(UBYTE)data; + data >>= 8; + }while(--ct) ; + } +} + + +static ULONG get_longp(void *p) +{ + ULONG dt; + + switch((ULONG)p&3) { + case 0: + dt= *((ULONG *)p) ; + break; + case 2: + dt=*((UWORD *)p+1); + dt<<=16; + dt|=*(UWORD *)(p); + break; + default: + dt=*((UBYTE *)p+3); + dt<<=8; + dt|=*((UBYTE *)p+2); + dt<<=8; + dt|=*((UBYTE *)p+1); + dt<<=8; + dt|=*(UBYTE *)p; + } + return dt; +} + +static void VLC_putPT_BLK(UBYTE *bufp,ULONG ct) +{ + ULONG data = 0; + + while(ct>=4){ + data = get_longp(bufp); + putPT_L(data); + bufp += 4; + ct -= 4; + } + if(ct!=0){ + do{ + data <<= 8; + --ct; + data |= *(bufp+ct); + }while(ct) ; + putPT_L(data); + } +} + + + + + +#if KMC_BUF /* { */ +static char *kmc_wp,*kmc_rp; +static char kmc_buffer[WDB_KMC_MTU]; +#endif /* } */ + +void i_vlink_et2_vlink_tbl(void) +{ + __et2_vlink_monadr=0; + __et2_vlink_monadr_h=0; + __et2_vlink_shift_l=0; + __et2_vlink_shift_r=0; + __et2_vlink_cmdwrs=0; + __et2_vlink_cmdrd=0; + __et2_vlink_stat=0; +} + +static void vlinkPutPTstring(char *p) +{ + char c; + + do{ + c=*(p++); + putPT(c); + } while (c!='\0') ; +} + + +#define putOSEMU(c) if(putCMD(c)) {VLINK_END;return -12345678;} + +int vlink_dos_put_console(char c) +{ + VLINK_START + putOSEMU(0); + getPT_sync(); + putPT_BLK((UBYTE*)&c,1); + putPT_flash(); + VLINK_END + return 0; +} + +int vlink_dos_putstring_console(char *str,int size) +{ + int len; + int ct; + int start; + + VLINK_START + start=1; + if(size==0){ + char *p; + p=str; + while(*p) ++p; + size=p-str; + } + len=size; + while(len){ + if(len>0x80){ + ct=0x80; + } + else{ + ct=len; + } + if(start){ + putOSEMU(ct-1); + start=0; + } + else{ + putPT(ct-1); + } + getPT_sync(); + putPT_BLK((UBYTE *)str,ct); + len -= ct; + str += ct; + } + putPT_flash(); + VLINK_END + return size; +} + + +int vlink_dos_stat_console(void) +{ + char c; + + VLINK_START + putOSEMU(0x80); + c=getPT(); + VLINK_END + if(c=='\x1b'){ + int i; + for(i=0;i<1000000;++i) ; + c=0; + } + return c; +} + +int vlink_dos_get_console(void) +{ + char c; + + VLINK_START + while((c=vlink_dos_stat_console())=='\0') ; + VLINK_END + return c; +} + + +int vlink_dos_open(char *fname,int mode) +{ + int fd; + + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_OPEN); + vlinkPutPTstring(fname); + putPT(mode); + fd=getPT(); + if(fd==0xff){ + vlink_dos_errno=getPT(); + fd=-1; + } + VLINK_END + return fd; +} + +int vlink_dos_creat(char *fname,int mode) +{ + int fd; + + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_CREAT); + vlinkPutPTstring(fname); + putPT(mode); + fd=getPT(); + if(fd==0xff){ + vlink_dos_errno=getPT(); + fd=-1; + } + VLINK_END + return fd; +} + +int vlink_dos_read(int fd,char *buf,int size) +{ + int rval; + + if(fd==0){ /* CON IN ? */ + if(size<0) return 0; + VLINK_START + *buf = vlink_dos_get_console(); + vlink_dos_write(1,buf,1); + if(*buf=='\r'){ +// *buf = 0; /* END */ + vlink_dos_write(1,"\n",1); + } + VLINK_END + return 1; + } + if(size<0) return -1; + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_READ); + putPT(fd); + putPT_L(size); + getPT_BLK((UBYTE *)buf,size); + putPT_sync(0); + rval=getPT_L(); + if(rval==-1){ + vlink_dos_errno=getPT(); + } + VLINK_END + return rval; +} + +int vlink_dos_write(int fd,char *buf,int size) +{ + int rval; + + if(size<0) return -1; + if(fd==1 || fd==2){ /* CON OUT ? */ + return vlink_dos_putstring_console(buf,size); + } + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_WRITE); + putPT(fd); + putPT_L(size); + putPT_BLK((UBYTE *)buf,size); + rval=getPT_L(); + if(rval==-1){ + vlink_dos_errno=getPT(); + } + VLINK_END + return rval; +} + +int vlink_dos_close(int fd) +{ + int rval; + + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_CLOSE); + putPT(fd); + rval=0; + if(getPT()!=0){ + vlink_dos_errno=getPT(); + rval=-1; + } + VLINK_END + return rval; +} + +int vlink_dos_lseek(int fd,int ofs,int pos) +{ + int ret_pos; + + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_LSEEK); + putPT(fd); + putPT_L(ofs); + putPT(pos); + if((ret_pos=getPT_L())==-1){ + vlink_dos_errno=getPT(); + } + VLINK_END + return ret_pos; +} + +int vlink_dos_file_mode(char *fname,int mode,int action) +{ + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_FILE_MODE); + vlinkPutPTstring(fname); + putPT_L(mode); + putPT(action); + if((mode=getPT_L())==-1){ + vlink_dos_errno=getPT(); + } + VLINK_END + return mode; +} + +int vlink_dos_set_dta(struct ffblk *fbp) +{ + ffblkp=fbp; + return 0; +} + + +int vlink_dos_find_first(char *fname,unsigned attrib) +{ + int rval; + + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_FIND_FIRST); + vlinkPutPTstring(fname); + rval=0; + if(getPT()!=0){ + rval=-1; + goto ret; + } + getPT_BLK((UBYTE *)ffblkp,sizeof(struct ffblk)); +ret: + VLINK_END + return rval; +} + +int vlink_dos_find_next(void) +{ + int rval; + + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_FIND_NEXT); + rval=0; + if(getPT()!=0){ + rval=-1; + goto ret; + } + getPT_BLK((UBYTE *)ffblkp,sizeof(struct ffblk)); +ret: + VLINK_END + return rval; +} + +int vlink_dos_find_close(void) +{ + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_FIND_CLOSE); + putPT_flash(); + VLINK_END + return 0; +} + +int vlink_dos_get_ioctl(int fd) +{ + int rval; + + if(fd==1){ /* CON OUT ? */ + return 0x80; + } + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_GET_IOCTL); + putPT(fd); + if((rval=getPT())==0xff){ + vlink_dos_errno=getPT(); + rval=-1; + } + VLINK_END + return rval; +} + +int vlink_dos_get_file_time(int fd,unsigned short *timep) +{ + int rval; + + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_GET_FILE_TM); + putPT(fd); + rval=0; + if(getPT()==0xff){ + vlink_dos_errno=getPT(); + rval=-1; + } + else{ + *timep=(unsigned short)getPT_L(); + *(timep+1)=(unsigned short)getPT_L(); + } + VLINK_END + return rval; +} + +int vlink_dos_get_time(Vlink_dos_time *dtp) +{ + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_GET_TIME); + getPT_BLK((UBYTE *)dtp,sizeof(Vlink_dos_time)); + VLINK_END + return 0; +} + + +int vlink_dos_set_file_time(int fd,unsigned short *timep) +{ + int rval; + + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_SET_FILE_TM); + putPT(fd); + putPT_L(*timep); + putPT_L(*(timep+1)); + rval=0; + if(getPT()==0xff){ + vlink_dos_errno=getPT(); + rval=-1; + } + VLINK_END + return rval; +} + +int vlink_dos_mkdir(char *path) +{ + int rval; + + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_MKDIR); + vlinkPutPTstring(path); + rval=0; + if(getPT()==0xff){ + vlink_dos_errno=getPT(); + rval=-1; + } + VLINK_END + return rval; +} + +int vlink_dos_rmdir(char *path) +{ + int rval; + + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_RMDIR); + vlinkPutPTstring(path); + rval=0; + if(getPT()==0xff){ + vlink_dos_errno=getPT(); + rval=-1; + } + VLINK_END + return rval; +} + +int vlink_dos_remove(char *fname) +{ + int rval; + + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_REMOVE); + vlinkPutPTstring(fname); + rval=0; + if(getPT()==0xff){ + vlink_dos_errno=getPT(); + rval=-1; + } + VLINK_END + return rval; +} + +int vlink_dos_rename(char *old,char *new) +{ + int rval; + + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_RENAME); + vlinkPutPTstring(old); + vlinkPutPTstring(new); + rval=0; + if(getPT()==0xff){ + vlink_dos_errno=getPT(); + rval=-1; + } + VLINK_END + return rval; +} + + +int vlink_dos_getcwd(char *path,int drvno) +{ + int rval; + + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_GETCWD); + putPT(drvno); + rval=0; + if(getPT()==0xff){ + vlink_dos_errno=getPT(); + rval=-1; + } + else{ + do{ + *path=getPT(); + }while(*(path++)!='\0') ; + } + VLINK_END + return rval; +} + +int vlink_dos_chdir(char *path) +{ + int rval; + + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_CHDIR); + vlinkPutPTstring(path); + rval=0; + if(getPT()==0xff){ + vlink_dos_errno=getPT(); + rval=-1; + } + VLINK_END + return rval; +} + +int vlink_dos_getcdrv(void) +{ + int rval; + + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_GETCDRV); + rval=getPT(); + VLINK_END + return rval; +} + +int vlink_dos_dup(int fd) +{ + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_DUP); + putPT(fd); + if((fd=getPT())==0xff){ + vlink_dos_errno=getPT(); + fd=-1; + } + VLINK_END + return fd; +} + +int vlink_dos_dup2(int oldfd,int newfd) +{ + int rval; + + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_DUP2); + putPT(oldfd); + putPT(newfd); + rval=0; + if(getPT()==0xff){ + vlink_dos_errno=getPT(); + rval=-1; + } + VLINK_END + return rval; +} + +int vlink_dos_version(void) +{ + int rval; + + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_VERSION); + rval=getPT_L(); + VLINK_END + return rval; +} + +int vlink_dos_exit(int retcode) +{ + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_EXIT); + putPT_L(retcode); + putPT_flash(); + VLINK_END + for(;;) ; +} + +int vlink_dos_sleep(int ms) +{ + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_SLEEP); + putPT_L(ms); + getPT(); + VLINK_END + return 0; +} +/* +int vlink_dos_arg_env(void) +{ + int arg_size; + int env_size; + char *malloc(); + + VLINK_START + putOSEMU(OSEMU); + putPT(EMU_ARG_ENV); + arg_size=getPT_L(); + env_size=getPT_L(); + vlink_dos_arg=malloc(arg_size+1); + vlink_dos_env=malloc(env_size+1); + getPT_BLK((UBYTE *)_dos_arg,arg_size); + putPT_sync(0); + getPT_BLK((UBYTE *)_dos_env,env_size); + *(_dos_arg+arg_size)='\0'; + *(_dos_env+env_size)='\0'; + VLINK_END + return 0; +} +*/ + + +#define READ_VIO 0 +#define WRITE_VIO 1 + +int vlinkRead_VIO_pt(void *dramAddr, int nbytes) +{ + int size; + + if(nbytes<=0) return nbytes; + VLINK_START + if(vlink_sync_stat==1){ + size=getPT_L(); + if(size>nbytes){ + nbytes=0; + goto ret; + } + nbytes=size; + } + else{ + putPT(0x82); + putPT(READ_VIO); + putPT_L(nbytes); + } + getPT_BLK((UBYTE *)dramAddr,nbytes); +ret: + VLINK_END + return nbytes; +} + +int vlinkWrite_VIO_pt(void *dramAddr,int nbytes) +{ + if(nbytes<=0) return nbytes; + VLINK_START + if(vlink_sync_stat!=1){ + putPT(0x82); + putPT(WRITE_VIO); + } + putPT_L(nbytes); + if(vlink_sync_stat==2){ + getPT(); + } + + putPT_BLK((UBYTE *)dramAddr,nbytes); + putPT_flash(); + VLINK_END + return nbytes; +} + +int i_vlink_init_osemu(void) +{ + int rval; + //ULONG *vtbl; + //char *malloc(); + +// vlinkInit(); // add by yutaka + + VLINK_START + rval=0; + + if((i_vlink_jtag_cpuid() & 0x000f0000)>=0x00070000){ /* ARM11 */ + putCMD=vlink_not_use_osemu ? putCMD_not_use:VLC_putCMD11; + putPT=VLC_putPT11; + getPT=VLC_getPT11; + putPT_L=VLC_putPT_L11; + getPT_L=VLC_getPT_L11; + getSTAT=VLC_getSTAT11; + } + else { + putCMD=vlink_not_use_osemu ? putCMD_not_use:VLC_putCMD; + putPT=VLC_putPT; + getPT=VLC_getPT; + putPT_L=VLC_putPT_L; + getPT_L=VLC_getPT_L; + getSTAT=VLC_getSTAT; + } + getPT_BLK=VLC_getPT_BLK; + putPT_BLK=VLC_putPT_BLK; + if(getSTAT()){ + getPT(); + } + //arm_loop_max=1000; + rval=2; + + VLINK_END + return rval; +} + +static int putCMD_init(UBYTE c) +{ + i_vlink_init_osemu(); + return putCMD(c); +} + +static int putCMD_not_use(UBYTE c) +{ + return 1; +} + +static int not_use_vlink(void) +{ + return 0; +} diff --git a/build/libraries/vlink/common/osemu2.c b/build/libraries/vlink/common/osemu2.c new file mode 100644 index 0000000..05dce70 --- /dev/null +++ b/build/libraries/vlink/common/osemu2.c @@ -0,0 +1,511 @@ +//#include +#include +#include + +/****************************************/ +// vsnprintf from NitroSDK + +typedef struct dst_string_tag +{ + size_t len; + char *cur; + char *base; +} dst_string; + +static void string_put_char(dst_string * p, char c) +{ + if (p->len > 0) + *p->cur = c, --p->len; + ++p->cur; +} + +static void string_fill_char(dst_string * p, char c, int n) +{ + if (n > 0) + { + size_t i, k = p->len; + if (k > (size_t) n) + k = (size_t) n; + for (i = 0; i < k; ++i) + p->cur[i] = c; + p->len -= k; + p->cur += n; + } +} + +static void string_put_string(dst_string * p, const char *s, int n) +{ + if (n > 0) + { + size_t i, k = p->len; + if (k > (size_t) n) + k = (size_t) n; + for (i = 0; i < k; ++i) + p->cur[i] = s[i]; + p->len -= k; + p->cur += n; + } +} + + + + + +static int my_vsnprintf(char *dst, size_t len, const char *fmt, va_list vlist) +{ + char buf[24]; + int n_buf; + char prefix[2]; + int n_prefix; + + const char *s = fmt; + + dst_string str; + str.len = len, str.cur = str.base = dst; + + while (*s) + { + if ((unsigned int)(((unsigned char)*s ^ 0x20) - 0xA1) < 0x3C) + { + /* Shift JIS character */ + string_put_char(&str, *s++); + if (*s) + string_put_char(&str, *s++); + } + else if (*s != '%') + { + /* normal ASCII character */ + string_put_char(&str, *s++); + } + else + { + /* output with format */ + enum + { + flag_blank = 000001, /* ' ' */ + flag_plus = 000002, /* '+' */ + flag_sharp = 000004, /* '#' */ + flag_minus = 000010, /* '-' */ + flag_zero = 000020, /* '0' */ + flag_l1 = 000040, /* "l" */ + flag_h1 = 000100, /* "h" */ + flag_l2 = 000200, /* "ll" */ + flag_h2 = 000400, /* "hh" */ + flag_unsigned = 010000, /* 'o', 'u', ... */ + flag_end + }; + int flag = 0, width = 0, precision = -1, radix = 10; + char hex_char = 'a' - 10; + const char *p_start = s; + /* flags */ + for (;;) + { + switch (*++s) + { + case '+': + if (s[-1] != ' ') + break; + flag |= flag_plus; + continue; + case ' ': + flag |= flag_blank; + continue; + case '-': + flag |= flag_minus; + continue; + case '0': + flag |= flag_zero; + continue; + } + break; + } + /* width */ + if (*s == '*') + { + ++s, width = va_arg(vlist, int); + if (width < 0) + width = -width, flag |= flag_minus; + } + else + { + while ((*s >= '0') && (*s <= '9')) + width = (width * 10) + *s++ - '0'; + } + /* precision */ + if (*s == '.') + { + ++s, precision = 0; + if (*s == '*') + { + ++s, precision = va_arg(vlist, int); + if (precision < 0) + precision = -1; + } + else + { + while ((*s >= '0') && (*s <= '9')) + precision = (precision * 10) + *s++ - '0'; + } + } + /* option */ + switch (*s) + { + case 'h': + if (*++s != 'h') + flag |= flag_h1; + else + ++s, flag |= flag_h2; + break; + case 'l': + if (*++s != 'l') + flag |= flag_l1; + else + ++s, flag |= flag_l2; + break; + } + + /* type */ + switch (*s) + { + case 'd': /* signed decimal */ + case 'i': /* signed decimal */ + goto put_integer; + case 'o': /* unsigned octal */ + radix = 8; + flag |= flag_unsigned; + goto put_integer; + case 'u': /* unsigned decimal */ + flag |= flag_unsigned; + goto put_integer; + case 'X': /* unsigned hexadecimal */ + hex_char = 'A' - 10; + goto put_hexadecimal; + case 'x': /* unsigned hexadecimal */ + goto put_hexadecimal; + case 'p': /* pointer */ + /* equal to code warrior */ + flag |= flag_sharp; + precision = 8; + goto put_hexadecimal; + + case 'c': /* character */ + if (precision >= 0) + goto put_invalid; + { + int c = va_arg(vlist, int); + width -= 1; + if (flag & flag_minus) + { + string_put_char(&str, (char)c); + string_fill_char(&str, ' ', width); + } + else + { + char pad = (char)((flag & flag_zero) ? '0' : ' '); + string_fill_char(&str, pad, width); + string_put_char(&str, (char)c); + } + ++s; + } + break; + + case 's': /* string */ + { + int n_buf = 0; + const char *p_buf = va_arg(vlist, const char *); + if (precision < 0) + { + while (p_buf[n_buf]) + ++n_buf; + } + else + { + while ((n_buf < precision) && p_buf[n_buf]) + ++n_buf; + } + width -= n_buf; + if (flag & flag_minus) + { + string_put_string(&str, p_buf, n_buf); + string_fill_char(&str, ' ', width); + } + else + { + char pad = (char)((flag & flag_zero) ? '0' : ' '); + string_fill_char(&str, pad, width); + string_put_string(&str, p_buf, n_buf); + } + ++s; + } + break; + + case 'n': /* store the number of output */ + { + int pos = str.cur - str.base; + if (flag & flag_h2) + ; + else if (flag & flag_h1) + *va_arg(vlist, signed short *) = (signed short)pos; + else if (flag & flag_l2) + *va_arg(vlist, u64 *) = (u64)pos; + else + *va_arg(vlist, signed int *) = (signed int)pos; + } + ++s; + break; + + case '%': /* output '%' */ + if (p_start + 1 != s) + goto put_invalid; + string_put_char(&str, *s++); + break; + + default: /* invalid type */ + goto put_invalid; + + put_invalid: + string_put_string(&str, p_start, s - p_start); + break; + + put_hexadecimal: + radix = 16; + flag |= flag_unsigned; + put_integer: + { + u64 val = 0; + n_prefix = 0; + + if (flag & flag_minus) + flag &= ~flag_zero; + if (precision < 0) + precision = 1; + else + flag &= ~flag_zero; + + if (flag & flag_unsigned) + { + if (flag & flag_h2) + val = (unsigned char)va_arg(vlist, int); + else if (flag & flag_h1) + val = (unsigned short)va_arg(vlist, int); + else if (flag & flag_l2) + val = va_arg(vlist, u64); + else + val = va_arg(vlist, unsigned long); + flag &= ~(flag_plus | flag_blank); + if (flag & flag_sharp) + { + if (radix == 16) + { + if (val != 0) + { + prefix[0] = (char)(hex_char + (10 + 'x' - 'a')); + prefix[1] = '0'; + n_prefix = 2; + } + } + else if (radix == 8) + { + prefix[0] = '0'; + n_prefix = 1; + } + } + } + else + { + if (flag & flag_h2) + val = (char)va_arg(vlist, int); + else if (flag & flag_h1) + val = (short)va_arg(vlist, int); + else if (flag & flag_l2) + val = va_arg(vlist, u64); + else + val = va_arg(vlist, long); + if ((val >> 32) & 0x80000000) + { + val = ~val + 1; + prefix[0] = '-'; + n_prefix = 1; + } + else + { + if (val || precision) + { + if (flag & flag_plus) + { + prefix[0] = '+'; + n_prefix = 1; + } + else if (flag & flag_blank) + { + prefix[0] = ' '; + n_prefix = 1; + } + } + } + } + n_buf = 0; + switch (radix) + { + case 8: + while (val != 0) + { + int d = (int)(val & 0x07); + val >>= 3; + buf[n_buf++] = (char)(d + '0'); + } + break; + case 10: + if ((val >> 32) == 0) + { + u32 v = (u32)val; + while (v != 0) + { + // u32 と定数の除算であれば、コンパイラが自動的に + // マジックナンバーを使用した積算に変換する + u32 r = v / 10; + int d = (int)(v - (r * 10)); + v = r; + buf[n_buf++] = (char)(d + '0'); + } + } + else + { + while (val != 0) + { + u64 r = val / 10; + int d = (int)(val - (r * 10)); + val = r; + buf[n_buf++] = (char)(d + '0'); + } + } + break; + case 16: + while (val != 0) + { + int d = (int)(val & 0x0f); + val >>= 4; + buf[n_buf++] = (char)((d < 10) ? (d + '0') : (d + hex_char)); + } + break; + } + if ((n_prefix > 0) && (prefix[0] == '0')) + { + n_prefix = 0; + buf[n_buf++] = '0'; + } + } + goto put_to_stream; + + put_to_stream: + { + int n_pad = precision - n_buf; + if (flag & flag_zero) + { + if (n_pad < width - n_buf - n_prefix) + n_pad = width - n_buf - n_prefix; + } + if (n_pad > 0) + width -= n_pad; + width -= n_prefix + n_buf; + if (!(flag & flag_minus)) + string_fill_char(&str, ' ', width); + while (n_prefix > 0) + string_put_char(&str, prefix[--n_prefix]); + string_fill_char(&str, '0', n_pad); + while (n_buf > 0) + string_put_char(&str, buf[--n_buf]); + if (flag & flag_minus) + string_fill_char(&str, ' ', width); + ++s; + } + break; + } + } + } + + if (str.len > 0) + *str.cur = '\0'; + else if (len > 0) + str.base[len - 1] = '\0'; + return str.cur - str.base; +} + +#if 0 // miya +static int my_snprintf(char *dst, size_t size, const char *fmt, ...) +{ + int ret; + va_list va; + va_start(va, fmt); + ret = my_vsnprintf( dst, size, fmt, va ); + va_end(va); + return ret; +} + +static int my_sprintf(char *dst, const char *fmt, ...) +{ + int ret; + va_list va; + va_start(va, fmt); + ret = my_vsprintf(dst, fmt, va); + va_end(va); + return ret; +} + +static int my_vsprintf(char *dst, const char *fmt, va_list vlist) +{ + return my_vsnprintf(dst, 0x7FFFFFFF, fmt, vlist); +} + +#endif + + +#define PRINTF_LINE_BUF_SIZE 256 + +size_t my_strlen(char *s1) +{ + int i = 0; + while( *s1 != '\0' ) { + i++; + s1++; + } + return i; +} + + +void vlink_dos_printf(const char *text, ...) +{ + va_list vlist; + char temp[PRINTF_LINE_BUF_SIZE]; + s32 len; + + va_start(vlist, text); + (void)my_vsnprintf(temp, PRINTF_LINE_BUF_SIZE-1, text, vlist); + + va_end(vlist); + + len = my_strlen(temp); + if( len ) { + (void)vlink_dos_putstring_console(temp,len); + } +} + + +void vlink_dos_fprintf(int fd, const char *text, ...) +{ + va_list vlist; + char temp[PRINTF_LINE_BUF_SIZE]; + s32 len; + + va_start(vlist, text); + (void)my_vsnprintf(temp, PRINTF_LINE_BUF_SIZE-1, text, vlist); + va_end(vlist); + + len = my_strlen(temp); + if( len ) { + (void)vlink_dos_write(fd,temp,len); + } +} + + + diff --git a/build/tests/Makefile b/build/tests/Makefile new file mode 100644 index 0000000..af4d03a --- /dev/null +++ b/build/tests/Makefile @@ -0,0 +1,31 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlDK - tests +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + + +#---------------------------------------------------------------------------- + +SUBDIRS = os + + +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/tests/os/Makefile b/build/tests/os/Makefile new file mode 100644 index 0000000..2398bab --- /dev/null +++ b/build/tests/os/Makefile @@ -0,0 +1,31 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - tests +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + + +#---------------------------------------------------------------------------- + +SUBDIRS = alarm-1 _ARM7-alarm-2 + + +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/tests/os/_ARM7-alarm-2/Makefile b/build/tests/os/_ARM7-alarm-2/Makefile new file mode 100644 index 0000000..8553ac8 --- /dev/null +++ b/build/tests/os/_ARM7-alarm-2/Makefile @@ -0,0 +1,45 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - OS - demos - _ARM7-alarm-2 +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +SUBDIRS = + + +#---------------------------------------------------------------------------- + +#TWL_CODEGEN = THUMB +TWL_CODEGEN = ARM +TWL_PROC = ARM7 + +TARGET_BIN = main.axf + +SRCS = main.c + +#SRCDIR = # using default +#LCFILE = # using default + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + + +#---------------------------------------------------------------------------- + +do-build: $(TARGETS) + + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/tests/os/_ARM7-alarm-2/src/main.c b/build/tests/os/_ARM7-alarm-2/src/main.c new file mode 100644 index 0000000..31e4439 --- /dev/null +++ b/build/tests/os/_ARM7-alarm-2/src/main.c @@ -0,0 +1,241 @@ +/*---------------------------------------------------------------------------* + Project: NitroSDK - OS - demos - _ARM7_alarm-2 + File: main.c + + Copyright 2003-2006 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: main.c,v $ + Revision 1.8 2006/01/18 02:11:29 kitase_hirotake + do-indent + + Revision 1.7 2005/11/21 10:56:43 kitase_hirotake + SVC_WaitVBlankIntr を OS_WaitVBlankIntr に変更 + + Revision 1.6 2005/02/28 05:26:20 yosizaki + do-indent. + + Revision 1.5 2004/04/15 06:51:12 yada + only arrange comment + + Revision 1.4 2004/03/08 08:31:58 yada + fix top comment + + Revision 1.3 2004/02/24 00:16:26 yada + (none) + + Revision 1.2 2004/02/23 01:00:32 yada + (none) + + Revision 1.1 2004/02/20 05:16:15 yada + firstRelease + + Revision 1.5 2004/02/10 05:47:46 yasu + delete macro CODE32 + + Revision 1.4 2004/02/09 11:54:29 yasu + include code32.h + + Revision 1.3 2004/02/05 07:09:03 yasu + change SDK prefix iris -> nitro + + Revision 1.2 2004/02/04 07:37:45 yada + OS_GetSystemClock(), OS_SetSystemClock()を + OS_GetTime(),OS_SetTime() へ名称変更した関連で修正 + + Revision 1.1 2004/02/03 12:03:20 yada + firstRelease + + Revision 1.1 2004/02/03 11:25:17 yada + firstRelease + + $NoKeywords: $ + *---------------------------------------------------------------------------*/ +#include + +void alarmCallback(void *arg); +void alarmDisp(u32 arg); + +void alarmCallback2(void *arg); +void alarmDisp2(u32 arg); + +void VBlankIntr(void); + + +static OSAlarm alarm; +static OSAlarm alarm2; + +static BOOL called = FALSE; +static BOOL alarm2_sw = FALSE; + +static int pushCounter = 0; + +static u16 keyData; + + +#define ALARM_COUNT 0x20000 +#define ALARM_COUNT_P1 0x10000 +#define ALARM_COUNT_P2 0x400 + +#define TEST_DATA 0x12345678 +#define TEST_DATA2 0x9abcdef0 + +int count; + +//================================================================================ +/*---------------------------------------------------------------------------* + Name: NitroMain + + Description: main + + Arguments: None + + Returns: None + *---------------------------------------------------------------------------*/ +void NitroMain() +{ +#ifdef SDK_DEBUGGER_ARM + OS_Printf("ARM7 before OS_Init.\n"); +#endif + + OS_Init(); + + // この2つは ARM7では os_init() でやる + // ---- システムクロック初期化 + //OS_InitSystemClock(); + // ---- アラームシステム初期化 + //OS_InitAlarm(); + + + //---- Vブランク設定 + (void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); + (void)OS_EnableIrqMask(OS_IE_V_BLANK); + (void)OS_EnableIrq(); + (void)GX_VBlankIntr(TRUE); + + OS_Printf("ARM7 starts.\n"); + + while (1) + { + OS_WaitVBlankIntr(); + + keyData = PAD_Read(); + + //---- PUSH A to start alarm + if (keyData & PAD_BUTTON_A && !called) + { + pushCounter++; + called = TRUE; + + //---- setting alarm + OS_CreateAlarm(&alarm); + OS_SetAlarm(&alarm, ALARM_COUNT, &alarmCallback, (void *)TEST_DATA); + + OS_Printf("set alarm\n"); + } + + + //---- PUSH UP to start periodic alarm + if (1 /*keyData & PAD_KEY_UP */ && !alarm2_sw) + { + alarm2_sw = TRUE; + + //---- setting periodic alarm + OS_CreateAlarm(&alarm2); +// OS_SetPeriodicAlarm(&alarm2, OS_GetTime() + ALARM_COUNT_P1, ALARM_COUNT_P2, +// &alarmCallback2, (void *)TEST_DATA2); + + OS_Printf("set periodic alarm\n"); + } + + //---- PUSH DOWN to stop periodic alarm + if (keyData & PAD_KEY_DOWN && alarm2_sw) + { + alarm2_sw = FALSE; + + OS_CancelAlarm(&alarm2); + } + } +} + +//---------------------------------------------------------------- +// Alarm callback +// IRQ スタックが貧弱なので、スタックを変えて作業を行っています。 +// エミュレータではここで OS_Printf() しても大丈夫ですが、 +// IS-DEBUGGER ではスタック溢れします。 +// +// +#include +asm void alarmCallback( void* arg ) +{ + ldconst r12, #0x3800400 + stmfd r12!, {sp, lr} + mov sp, r12 + + bl alarmDisp + + ldmfd sp!, {r12, lr} + mov sp, r12 + bx lr +} +#include + + +void alarmDisp(u32 arg) +{ + OS_Printf(">>> called alarmCallback. arg=%x PUSH=%x\n", arg, pushCounter); + //OS_Printf( ">>> sp=%x\n", OSi_GetCurrentStackPointer() ); + called = FALSE; +} + + +//---------------------------------------------------------------- +// Alarm callback for periodic alarm +// IRQ スタックが貧弱なので、スタックを変えて作業を行っています。 +// エミュレータではここで OS_Printf() しても大丈夫ですが、 +// IS-DEBUGGER ではスタック溢れします。 +// +// +#include +asm void alarmCallback2( void* arg ) +{ + ldconst r12, #0x3800400 + stmfd r12!, {sp, lr} + mov sp, r12 + + bl alarmDisp2 + + ldmfd sp!, {r12, lr} + mov sp, r12 + bx lr +} +#include + + +void alarmDisp2(u32 arg) +{ + static int cnt = 0; + if (cnt++ > 10) + { + OS_Panic("END\n"); + } + +// OS_Printf(">>> called alarmCallback2. arg=%x SYSCLOCK=%x\n", arg, OS_GetTime()); +// OS_Printf( ">>> sp=%x\n", OSi_GetCurrentStackPointer() ); +} + + +//---------------------------------------------------------------- +// VBlank interrupt handler +void VBlankIntr(void) +{ + //---- 割り込みチェックフラグ + OS_SetIrqCheckFlag(OS_IE_V_BLANK); +} + +/*====== End of main.c ======*/ diff --git a/build/tests/os/alarm-1/Makefile b/build/tests/os/alarm-1/Makefile new file mode 100644 index 0000000..2dacd54 --- /dev/null +++ b/build/tests/os/alarm-1/Makefile @@ -0,0 +1,42 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - OS - demos - alarm-1 +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + + +SUBDIRS = + + +#---------------------------------------------------------------------------- + +TARGET_BIN = alerm.axf + +SRCS = main.c + +#SRCDIR = # using default +#LCFILE = # using default + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + + +#---------------------------------------------------------------------------- + +do-build: $(TARGETS) + + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/tests/os/alarm-1/src/main.c b/build/tests/os/alarm-1/src/main.c new file mode 100644 index 0000000..b3b5124 --- /dev/null +++ b/build/tests/os/alarm-1/src/main.c @@ -0,0 +1,165 @@ +/*---------------------------------------------------------------------------* + Project: NitroSDK - OS - demos - alarm-1 + File: main.c + + Copyright 2003-2006 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: main.c,v $ + Revision 1.14 2006/01/18 02:11:29 kitase_hirotake + do-indent + + Revision 1.13 2005/11/21 10:53:49 kitase_hirotake + SVC_WaitVBlankIntr を OS_WaitVBlankIntr に変更 + + Revision 1.12 2005/02/28 05:26:19 yosizaki + do-indent. + + Revision 1.11 2004/09/30 05:08:02 yada + add OS_InitAlarm(). to remove it was mistake + + Revision 1.10 2004/09/28 12:21:26 yada + not call OS_InitAlarm() or OS_InitVAlarm() because OS_Init() called + + Revision 1.9 2004/06/08 00:16:05 yada + add '#pragma unused()' for FINALROM + + Revision 1.8 2004/04/15 06:51:12 yada + only arrange comment + + Revision 1.7 2004/03/08 08:31:58 yada + fix top comment + + Revision 1.6 2004/03/04 11:16:30 yada + only fix comment + + Revision 1.5 2004/02/25 11:35:21 yada + systemClock→Tick に伴う変更 + + Revision 1.4 2004/02/10 05:47:46 yasu + delete macro CODE32 + + Revision 1.3 2004/02/09 11:18:07 yasu + include code32.h + + Revision 1.2 2004/02/05 07:09:03 yasu + change SDK prefix iris -> nitro + + Revision 1.1 2004/02/03 11:25:17 yada + firstRelease + + + $NoKeywords: $ + *---------------------------------------------------------------------------*/ +#include +#include + +void VBlankIntr(void); +void alarmCallback(void *arg); + +static OSAlarm alarm; + +static BOOL called = FALSE; + +static int pushCounter = 0; + +static u16 keyData; + + +#define ALARM_COUNT (OS_MilliSecondsToTicks(200)) +#define TEST_DATA 0x12345678 + + +//================================================================================ +/*---------------------------------------------------------------------------* + Name: NitroMain + + Description: main + + Arguments: None + + Returns: None + *---------------------------------------------------------------------------*/ +void NitroMain() +{ + OS_InitPrintServer(); + + OS_Init(); + GX_Init(); + + // ---- initialize tick system + OS_InitTick(); + // ---- initialize alarm system + OS_InitAlarm(); + + //---- setup VBlank + (void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); + (void)OS_EnableIrqMask(OS_IE_V_BLANK); + (void)OS_EnableIrq(); + (void)GX_VBlankIntr(TRUE); + + OS_TPrintf("Push [A] to start alarm.\n"); + + while (1) + { + OS_PrintServer(); + + OS_WaitVBlankIntr(); + keyData = PAD_Read(); + + if (keyData & PAD_BUTTON_A && !called) + { + pushCounter++; + called = TRUE; + + //---- setting alarm + OS_CreateAlarm(&alarm); + OS_SetAlarm(&alarm, ALARM_COUNT, &alarmCallback, (void *)TEST_DATA); + + OS_TPrintf("set alarm\n"); + } + } +} + + +/*---------------------------------------------------------------------------* + Name: alarmCallback + + Description: callback for alarm interrupt + + Arguments: arg : user setting argument + + Returns: None + *---------------------------------------------------------------------------*/ +void alarmCallback(void *arg) +{ +#ifdef SDK_FINALROM +#pragma unused( arg ) +#endif + OS_Printf(">>> called alarmCallback. arg=%x\n", arg); + OS_Printf(">>> PUSH=%d\n", pushCounter); + OS_Printf(">>> sp=%x\n", OSi_GetCurrentStackPointer()); + called = FALSE; +} + +/*---------------------------------------------------------------------------* + Name: VBlankIntr + + Description: VBlank interrupt handler + + Arguments: None + + Returns: None + *---------------------------------------------------------------------------*/ +void VBlankIntr(void) +{ + //---- check interrupt flag + OS_SetIrqCheckFlag(OS_IE_V_BLANK); +} + +/*====== End of main.c ======*/ diff --git a/include/nitro/dtcm_begin.h b/include/nitro/dtcm_begin.h new file mode 100644 index 0000000..2b2d672 --- /dev/null +++ b/include/nitro/dtcm_begin.h @@ -0,0 +1,39 @@ +/*---------------------------------------------------------------------------* + Project: NitroSDK - include + File: dtcm_begin.h + + Copyright 2003-2006 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: dtcm_begin.h,v $ + Revision 1.4 2006/01/18 02:11:19 kitase_hirotake + do-indent + + Revision 1.3 2005/07/11 05:00:42 yada + add include nitro/section.h + + Revision 1.2 2005/02/28 05:26:02 yosizaki + do-indent. + + Revision 1.1 2004/07/10 06:11:24 yasu + Support to select a section 'ITCM/DTCM/WRAM' + + $NoKeywords: $ + *---------------------------------------------------------------------------*/ +// +// include this instead of using C99 pragma extensions for compatibility +// +#include + +#if defined(SDK_CW) || defined(__MWERKS__) +//#pragma section DTCM begin +#elif defined(SDK_ADS) +TO BE DEFINED +#elif defined(SDK_GCC) +TO BE DEFINED +#endif diff --git a/include/nitro/dtcm_end.h b/include/nitro/dtcm_end.h new file mode 100644 index 0000000..6486932 --- /dev/null +++ b/include/nitro/dtcm_end.h @@ -0,0 +1,34 @@ +/*---------------------------------------------------------------------------* + Project: NitroSDK - include + File: dtcm_end.h + + Copyright 2003-2006 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: dtcm_end.h,v $ + Revision 1.3 2006/01/18 02:11:19 kitase_hirotake + do-indent + + Revision 1.2 2005/02/28 05:26:02 yosizaki + do-indent. + + Revision 1.1 2004/07/10 06:11:24 yasu + Support to select a section 'ITCM/DTCM/WRAM' + + $NoKeywords: $ + *---------------------------------------------------------------------------*/ +// +// include this instead of using C99 pragma extensions for compatibility +// +#if defined(SDK_CW) || defined(__MWERKS__) +//#pragma section DTCM end +#elif defined(SDK_ADS) +TO BE DEFINED +#elif defined(SDK_GCC) +TO BE DEFINED +#endif diff --git a/include/nitro/itcm_begin.h b/include/nitro/itcm_begin.h new file mode 100644 index 0000000..be6828b --- /dev/null +++ b/include/nitro/itcm_begin.h @@ -0,0 +1,39 @@ +/*---------------------------------------------------------------------------* + Project: NitroSDK - include + File: itcm_begin.h + + Copyright 2003-2006 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: itcm_begin.h,v $ + Revision 1.4 2006/01/18 02:11:19 kitase_hirotake + do-indent + + Revision 1.3 2005/07/11 05:00:42 yada + add include nitro/section.h + + Revision 1.2 2005/02/28 05:26:02 yosizaki + do-indent. + + Revision 1.1 2004/07/10 06:11:24 yasu + Support to select a section 'ITCM/DTCM/WRAM' + + $NoKeywords: $ + *---------------------------------------------------------------------------*/ +// +// include this instead of using C99 pragma extensions for compatibility +// +#include + +#if defined(SDK_CW) || defined(__MWERKS__) +//#pragma section ITCM begin +#elif defined(SDK_ADS) +TO BE DEFINED +#elif defined(SDK_GCC) +TO BE DEFINED +#endif diff --git a/include/nitro/itcm_end.h b/include/nitro/itcm_end.h new file mode 100644 index 0000000..1ae1cb4 --- /dev/null +++ b/include/nitro/itcm_end.h @@ -0,0 +1,34 @@ +/*---------------------------------------------------------------------------* + Project: NitroSDK - include + File: itcm_end.h + + Copyright 2003-2006 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: itcm_end.h,v $ + Revision 1.3 2006/01/18 02:11:19 kitase_hirotake + do-indent + + Revision 1.2 2005/02/28 05:26:02 yosizaki + do-indent. + + Revision 1.1 2004/07/10 06:11:24 yasu + Support to select a section 'ITCM/DTCM/WRAM' + + $NoKeywords: $ + *---------------------------------------------------------------------------*/ +// +// include this instead of using C99 pragma extensions for compatibility +// +#if defined(SDK_CW) || defined(__MWERKS__) +//#pragma section ITCM end +#elif defined(SDK_ADS) +TO BE DEFINED +#elif defined(SDK_GCC) +TO BE DEFINED +#endif diff --git a/include/nitro/os/common/system.h b/include/nitro/os/common/system.h new file mode 100644 index 0000000..a7797d5 --- /dev/null +++ b/include/nitro/os/common/system.h @@ -0,0 +1,377 @@ +/*---------------------------------------------------------------------------* + Project: NitroSDK - OS - include + File: system.h + + Copyright 2003-2006 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: system.h,v $ + Revision 1.30 2006/01/18 02:12:28 kitase_hirotake + do-indent + + Revision 1.29 2005/10/07 08:22:03 yada + add OS_WaitVBlankIntr() + + Revision 1.28 2005/08/31 12:03:27 yada + add OS_Exit() + + Revision 1.27 2005/02/28 05:26:01 yosizaki + do-indent. + + Revision 1.26 2004/11/24 04:36:10 yada + just fix typo + + Revision 1.25 2004/09/02 06:27:05 yada + only change comment + + Revision 1.24 2004/05/24 04:48:29 yada + OS_WaitIntr() -> OS_WaitInterrupt() + + Revision 1.23 2004/05/10 11:21:49 yada + add OS_WaitIntr() + + Revision 1.22 2004/04/07 02:03:17 yada + fix header comment + + Revision 1.21 2004/04/06 01:38:13 yada + OS_Halt() の挙動変更 + + Revision 1.20 2004/03/04 09:48:20 yada + OSDisableInterrupt() を IRQ 禁止にした。 + IRQ/FIQ 禁止には別関数を用意した。 + + Revision 1.19 2004/02/27 01:55:00 yasu + add OS_SpinWait, move OS_Halt into os_system.c + + Revision 1.18 2004/02/13 08:45:00 yasu + clean up comments + + Revision 1.17 2004/02/13 02:16:43 yada + EnableInterrupts, GetProcMode for ARM7 (temporary) + + Revision 1.16 2004/02/13 01:51:33 yada + DisableInterrupts, RestoreInterrupts for ARM7 (temporary) + + Revision 1.15 2004/02/12 10:56:04 yasu + new location of include files ARM9/ARM7 + + Revision 1.14 2004/02/10 12:11:23 yada + OS_GetDTCMAddress, OS_GetITCMAddress を tcm.hに移行 + + Revision 1.13 2004/02/10 11:35:06 yada + only arrange tab & space + + Revision 1.12 2004/02/10 11:19:21 yada + Interrupt 関係のinline をやめる + + Revision 1.11 2004/02/09 11:38:18 yada + OS_GetDTCMAddress, OS_GetITCMAddress 作成 + + Revision 1.10 2004/02/09 11:17:22 yasu + include code32.h + + Revision 1.9 2004/02/05 07:09:03 yasu + change SDK prefix iris -> nitro + + Revision 1.8 2004/01/18 04:47:31 yada + インデント等の整形 + + Revision 1.7 2004/01/17 02:28:38 nishida_kenji + convert 'inline' to 'static inline' in header files + + Revision 1.6 2004/01/14 08:41:19 yada + OSIntrMode_Irq に伴う変更 + + Revision 1.5 2004/01/14 01:41:35 yada + CPSRのinterrupt 操作を IRQのみから IRQとFIQ に変更 + + Revision 1.4 2003/12/25 07:30:07 yada + 型ルール統一による変更 + + Revision 1.3 2003/12/22 13:41:45 yasu + include ガードの修正 + + Revision 1.2 2003/12/12 05:06:39 yada + プロセッサモードの定義変更に伴う修正 + + Revision 1.1 2003/12/12 01:25:31 yada + os/cpsr.h → os/system.h と名称変更 + + Revision 1.7 2003/12/08 12:08:02 yada + SDK_ASMが定義されているときは define以外含まれないようにした + + Revision 1.6 2003/12/08 01:25:05 yasu + context に SP_svc を追加する + + Revision 1.5 2003/12/01 09:51:56 yasu + warning 対策のため DEBUG 時のみ変数の初期化を行なう + + Revision 1.4 2003/12/01 04:15:53 yasu + OS_RestoreInterrupts の実装誤り修正 + + Revision 1.3 2003/11/30 10:24:09 yasu + 前回の修正で入れてしまったバグの修正 + + Revision 1.2 2003/11/30 10:13:40 yasu + asm 表現法の変更 + + Revision 1.1 2003/11/30 04:17:43 yasu + 新規作成 CPU CPSR 設定関係の関数 + + $NoKeywords: $ + *---------------------------------------------------------------------------*/ +#ifndef NITRO_OS_SYSTEM_H_ +#define NITRO_OS_SYSTEM_H_ + +#ifndef SDK_ASM +#include +#include +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +//---------------------------------------------------------------------------- +#ifndef SDK_ASM +#define OS_EXIT_STRING_1 "*** Exit nitro program (status=" +#define OS_EXIT_STRING_2 "%d).\n" +#define OS_EXIT_STRING OS_EXIT_STRING_1 OS_EXIT_STRING_2 + +typedef enum +{ + OS_PROCMODE_USER = HW_PSR_USER_MODE, + OS_PROCMODE_FIQ = HW_PSR_FIQ_MODE, + OS_PROCMODE_IRQ = HW_PSR_IRQ_MODE, + OS_PROCMODE_SVC = HW_PSR_SVC_MODE, + OS_PROCMODE_ABORT = HW_PSR_ABORT_MODE, + OS_PROCMODE_UNDEF = HW_PSR_UNDEF_MODE, + OS_PROCMODE_SYS = HW_PSR_SYS_MODE +} +OSProcMode; + + +typedef enum +{ + OS_INTRMODE_IRQ_DISABLE = HW_PSR_IRQ_DISABLE, + OS_INTRMODE_IRQ_ENABLE = 0 +} +OSIntrMode_Irq; + +typedef enum +{ + OS_INTRMODE_FIQ_DISABLE = HW_PSR_FIQ_DISABLE, + OS_INTRMODE_FIQ_ENABLE = 0 +} +OSIntrMode_Fiq; + +typedef u32 OSIntrMode; + +//============================================================================ +// CONTROL INTERRUPT +//============================================================================ +/*---------------------------------------------------------------------------* + Name: OS_EnableInterrupts + + Description: Set CPSR to enable irq interrupts + + Arguments: None. + + Returns: last state of HW_PSR_IRQ_DISABLE + *---------------------------------------------------------------------------*/ +extern OSIntrMode OS_EnableInterrupts(void); + +/*---------------------------------------------------------------------------* + Name: OS_DisableInterrupts + + Description: Set CPSR to disable irq interrupts + + Arguments: None. + + Returns: last state of HW_PSR_IRQ_DISABLE + *---------------------------------------------------------------------------*/ +extern OSIntrMode OS_DisableInterrupts(void); + +/*---------------------------------------------------------------------------* + Name: OS_RestoreInterrupts + + Description: Restore CPSR irq interrupt + + Arguments: state of irq interrupt bit + + Returns: last state of HW_PSR_IRQ_DISABLE + *---------------------------------------------------------------------------*/ +extern OSIntrMode OS_RestoreInterrupts(OSIntrMode state); + +/*---------------------------------------------------------------------------* + Name: OS_EnableInterrupts_IrqAndFiq + + Description: Set CPSR to enable irq and fiq interrupts + + Arguments: None. + + Returns: last state of HW_PSR_IRQ_DISABLE & HW_PSR_FIQ_DISABLE + *---------------------------------------------------------------------------*/ +extern OSIntrMode OS_EnableInterrupts_IrqAndFiq(void); + +/*---------------------------------------------------------------------------* + Name: OS_DisableInterrupts_IrqAndFiq + + Description: Set CPSR to disable irq and fiq interrupts + + Arguments: None. + + Returns: last state of HW_PSR_IRQ_DISABLE & HW_PSR_FIQ_DISABLE + *---------------------------------------------------------------------------*/ +extern OSIntrMode OS_DisableInterrupts_IrqAndFiq(void); + +/*---------------------------------------------------------------------------* + Name: OS_RestoreInterrupts_IrqAndFiq + + Description: Restore CPSR irq and fiq interrupt + + Arguments: state of irq and fiq interrupt bit + + Returns: last state of HW_PSR_IRQ_DISABLE & HW_PSR_FIQ_DISABLE + *---------------------------------------------------------------------------*/ +extern OSIntrMode OS_RestoreInterrupts_IrqAndFiq(OSIntrMode state); + +/*---------------------------------------------------------------------------* + Name: OS_GetCpsrIrq + + Description: Get current state of CPSR irq interrupt + + Arguments: None + + Returns: last state of HW_PSR_IRQ_DISABLE + *---------------------------------------------------------------------------*/ +extern OSIntrMode_Irq OS_GetCpsrIrq(void); + +//============================================================================ +// PROCESSER MODE +//============================================================================ +/*---------------------------------------------------------------------------* + Name: OS_GetProcMode + + Description: Get processor mode from CPSR + + Arguments: None. + + Returns: CPU processor mode (field 0x10-0x1f) + *---------------------------------------------------------------------------*/ +extern OSProcMode OS_GetProcMode(void); + + +//============================================================================ +// TERMINATE and HALT +//============================================================================ +/*---------------------------------------------------------------------------* + Name: OS_Terminate + + Description: Halt CPU and loop + + Arguments: None + + Returns: None + *---------------------------------------------------------------------------*/ +extern void OS_Terminate(void); + + +/*---------------------------------------------------------------------------* + Name: OS_Halt + + Description: Halt CPU + + Arguments: None + + Returns: None + *---------------------------------------------------------------------------*/ +#if defined(SDK_ARM9) || defined(SDK_DEBUGGER_ARM) +extern void OS_Halt(void); +#else +static inline void OS_Halt(void) +{ + SVC_Halt(); +} +#endif + +/*---------------------------------------------------------------------------* + Name: OS_Exit + + Description: Display exit string and Terminate. + This is useful for 'loadrun' tool command. + + Arguments: status : exit status + + Returns: -- (Never return) + *---------------------------------------------------------------------------*/ +extern void OS_Exit(int status); + +//============================================================================ +// WAIT +//============================================================================ +/*---------------------------------------------------------------------------* + Name: OS_SpinWait + + Description: Spin and Wait for specified CPU cycles at least + + Arguments: cycles waiting CPU cycle + + Returns: None + *---------------------------------------------------------------------------*/ +extern void OS_SpinWait(u32 cycle); + +/*---------------------------------------------------------------------------* + Name: OS_WaitInterrupt + + Description: wait specified interrupt + the difference between OS_WaitIrq and OS_WaitInterrupt, + in waiting interrupt + OS_WaitIrq does switch thread, + OS_WaitInterrupt doesn't switch thread. + OS_WaitIrq wait by using OS_SleepThread() with threadQueue, + OS_WaitInterrupt wait by using OS_Halt(). + if SDK_NO_THREAD defined, 2 functions become same. + + Arguments: clear TRUE if want to clear interrupt flag before wait. + FALSE if not. + irqFlags bit of interrupts to wait for + + Returns: None + *---------------------------------------------------------------------------*/ +#ifndef OSi_OSIRQMASK_DEFINED +typedef u32 OSIrqMask; +#define OSi_OSIRQMASK_DEFINED +#endif +extern void OS_WaitInterrupt(BOOL clear, OSIrqMask irqFlags); + +/*---------------------------------------------------------------------------* + Name: OS_WaitVBlankIntr + + Description: wait till vblank interrupt occurred. + the difference between SVC_WaitVBlankIntr and OS_WaitVBlankIntr is: + OS_WaitVBlankIntr does switch thread, + SVC_WaitVBlankIntr doesn't switch thread. + + Arguments: None + + Returns: None + *---------------------------------------------------------------------------*/ +extern void OS_WaitVBlankIntr(void); + + +#endif /* SDK_ASM */ + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +/*NITRO_OS_SYSTEM_H_*/ +#endif diff --git a/include/twl.h b/include/twl.h new file mode 100644 index 0000000..25171bd --- /dev/null +++ b/include/twl.h @@ -0,0 +1,25 @@ +/*---------------------------------------------------------------------------* + Project: TwlSDK + File: twl.h + + Copyright 2007 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: $ + $NoKeywords: $ + *---------------------------------------------------------------------------*/ +#ifndef TWL_H_ +#define TWL_H_ + +#include + +//#include +#include + +/* TWL_H_ */ +#endif diff --git a/include/twl/specfiles/ARM7-TEG.lcf.template b/include/twl/specfiles/ARM7-TEG.lcf.template new file mode 100644 index 0000000..19fbd95 --- /dev/null +++ b/include/twl/specfiles/ARM7-TEG.lcf.template @@ -0,0 +1,606 @@ +#--------------------------------------------------------------------------- +# Project: NitroSDK - tools - makelcf +# File: ARM7-TEG.lcf.template +# +# Copyright 2003-2006 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: ARM7-TEG.lcf.template,v $ +# Revision 1.31 2006/05/10 03:19:47 yasu +# CodeWarrior 2.x のオーバーレイ拡張への対応 +# +# Revision 1.30 2006/03/30 00:43:20 yasu +# 著作年度の変更 +# +# Revision 1.29 2006/03/29 13:19:14 yasu +# NUMBER_OVERLAYS -> NUMBER.OVERLAYS への修正 +# +# Revision 1.28 2005/09/02 04:14:22 yasu +# SDK2.2 でも使用可能のように古いシンボルを再定義した +# +# Revision 1.27 2005/08/31 09:34:57 yasu +# section_BSS というようなセクション名を使ったときに正常に動作しない場合があるのを修正 +# +# Revision 1.26 2005/06/20 12:29:20 yasu +# Surffix -> Suffix 修正 +# +# Revision 1.25 2005/06/17 03:16:11 yasu +# fix copyright header +# +# Revision 1.24 2005/06/14 09:03:42 yada +# fix around minus value of SDK_STACKSIZE +# +# Revision 1.23 2004/09/08 01:27:18 yasu +# Add * (.wram) on static segment +# +# Revision 1.22 2004/08/18 02:00:34 yasu +# Fix address of SDK_AUTOLOAD.MAIN.START +# +# Revision 1.21 2004/08/18 01:50:40 yasu +# Support SDK_SUBPRIV_ARENA_LO +# +# Revision 1.20 2004/08/02 10:38:53 yasu +# Add autoload-done callback address in overlaydefs +# +# Revision 1.19 2004/07/26 00:08:27 yasu +# Fix label of exception table +# +# Revision 1.18 2004/07/24 05:42:25 yasu +# Set default values for SDK_AUTOGEN_xTCM_START +# +# Revision 1.17 2004/07/23 11:32:14 yasu +# Define labels for __exception_table_start__ and _end__ +# +# Revision 1.16 2004/07/10 04:10:26 yasu +# Support command 'Library' +# +# Revision 1.15 2004/07/08 04:04:59 yasu +# fix small typo +# +# Revision 1.14 2004/07/02 08:13:02 yasu +# Support OBJECT( ) +# +# Revision 1.13 2004/07/01 12:54:38 yasu +# support ITCM/DTCM/WRAM autoload +# +# Revision 1.12 2004/07/01 10:41:46 yasu +# support autoload +# +# Revision 1.11 2004/07/01 09:41:50 yasu +# support autoload +# +# Revision 1.10 2004/06/14 11:28:15 yasu +# support section filter "FOREACH.STATIC.OBJECTS=.sectionName" +# +# Revision 1.9 2004/05/27 04:06:42 yasu +# fix SDK_WRAM_ARENA_LO +# +# Revision 1.8 2004/04/26 11:41:38 yasu +# add KEEP_SECTION { .ctor } +# +# Revision 1.7 2004/04/19 06:39:41 yasu +# fix workram checker +# +# Revision 1.6 2004/04/19 04:27:30 yasu +# support WRAM overflow check +# +# Revision 1.5 2004/04/06 01:53:34 yasu +# move rodata section into text section +# +# Revision 1.4 2004/04/06 01:39:24 miya +# modify overlay module size +# +# Revision 1.3 2004/03/29 11:40:48 yasu +# delete ROM SIZE parameter on overlay table +# +# Revision 1.2 2004/03/26 09:32:48 yasu +# delete useless ALIGN +# +# Revision 1.1 2004/03/26 06:04:32 yasu +# move spec files +# +# Revision 1.3 2004/03/23 00:15:35 yasu +# add WRITEW 0 for the termination of __OVERLAY_static_init__ +# +# Revision 1.2 2004/03/22 02:15:49 yasu +# set _start as entry address in rom header +# +# Revision 1.1 2004/03/16 10:06:07 yasu +# copy ARM9s template file +# +# $NoKeywords: $ +#--------------------------------------------------------------------------- +MEMORY +{ + (RWX) : ORIGIN = , LENGTH = 0x0 # > + + (RWX) : ORIGIN = , LENGTH = 0x0 # >> + + binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 # >> + + (RW) : ORIGIN = AFTER(), LENGTH = 0x0 # > + (RW) : ORIGIN = AFTER(), LENGTH = 0x0 # > + + (RWXO): ORIGIN = , LENGTH = 0x0 # > + + arena.MAIN (RW) : ORIGIN = AFTER(,), LENGTH = 0x0 + check.WORKRAM (RWX) : ORIGIN = , LENGTH = 0x10000 # > workram.check +} + +KEEP_SECTION +{ + .ctor +} + +SECTIONS +{ + ############################ STATIC ################################# + .: + { + ALIGNALL(4); . = ALIGN(4); # Fit to cache line + + + SEARCH_SYMBOL ; + + + # + # TEXT BLOCK: READ ONLY + # + SDK_STATIC_START =.; + SDK_STATIC_TEXT_START =.; + #:::::::::: text/rodata + OBJECT(_start,*) + crt0.o (.text) + + + + + + + . = ALIGN(4); + * (.exception) + . = ALIGN(4); + SDK_STATIC_ETABLE_START =.; + EXCEPTION + SDK_STATIC_ETABLE_END =.; + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + SDK_STATIC_SINIT_START =.; + #:::::::::: ctor + + + + + + + WRITEW 0; + #:::::::::: ctor + SDK_STATIC_SINIT_END =.; + + #:::::::::: text/rodata + . = ALIGN(4); + SDK_STATIC_TEXT_END =.; + + # + # DATA BLOCK: READ WRITE + # + SDK_STATIC_DATA_START =.; + #:::::::::: data + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: data + . = ALIGN(4); + SDK_STATIC_DATA_END =.; + SDK_STATIC_END =.; + + SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START; + SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START; + SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; + __sinit__ = SDK_STATIC_SINIT_START; # for static initializer + __exception_table_start__ = SDK_STATIC_ETABLE_START; # for exception table + __exception_table_end__ = SDK_STATIC_ETABLE_END; # for exception table + } > + + ..bss: + { + ALIGNALL(4); . = ALIGN(4); + + + SEARCH_SYMBOL ; + + + # + # BSS BLOCK + # + SDK_STATIC_BSS_START =.; + #:::::::::: bss + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: bss + . = ALIGN(4); + SDK_STATIC_BSS_END = .; + SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; + + } >> + + + ############################ AUTOLOADS ############################## + SDK_AUTOLOAD.MAIN.START = 0x02380000; + SDK_AUTOLOAD.MAIN.END = SDK_AUTOLOAD.MAIN.START; + SDK_AUTOLOAD.MAIN.BSS_END = SDK_AUTOLOAD.MAIN.START; + SDK_AUTOLOAD.MAIN.SIZE = 0; + SDK_AUTOLOAD.MAIN.BSS_SIZE = 0; + SDK_AUTOLOAD.WRAM.START = 0x037f8000; + SDK_AUTOLOAD.WRAM.END = SDK_AUTOLOAD.WRAM.START; + SDK_AUTOLOAD.WRAM.BSS_END = SDK_AUTOLOAD.WRAM.START; + SDK_AUTOLOAD.WRAM.SIZE = 0; + SDK_AUTOLOAD.WRAM.BSS_SIZE = 0; + SDK_AUTOLOAD_START = SDK_STATIC_END; + SDK_AUTOLOAD_SIZE = 0; + SDK_AUTOLOAD_NUMBER = ; + + + .: + { + ALIGNALL(4); . = ALIGN(4); + + + SEARCH_SYMBOL ; + + + # + # TEXT BLOCK: READ ONLY + # + SDK_AUTOLOAD__ID =; + SDK_AUTOLOAD..ID =; + SDK_AUTOLOAD..START =.; + SDK_AUTOLOAD..TEXT_START =.; + #:::::::::: text/rodata + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: text/rodata + SDK_AUTOLOAD..TEXT_END =.; + + # + # DATA BLOCK: READ WRITE BLOCK + # + SDK_AUTOLOAD..DATA_START =.; + #:::::::::: data + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: data + SDK_AUTOLOAD..DATA_END =.; + SDK_AUTOLOAD..END =.; + + SDK_AUTOLOAD..TEXT_SIZE = SDK_AUTOLOAD..TEXT_END - SDK_AUTOLOAD..TEXT_START; + SDK_AUTOLOAD..DATA_SIZE = SDK_AUTOLOAD..DATA_END - SDK_AUTOLOAD..DATA_START; + SDK_AUTOLOAD..SIZE = SDK_AUTOLOAD..END - SDK_AUTOLOAD..START; + SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD..SIZE; + + } > + + ..bss: + { + ALIGNALL(4); . = ALIGN(4); + + + SEARCH_SYMBOL ; + + + # + # BSS BLOCK + # + SDK_AUTOLOAD..BSS_START = .; + #:::::::::: bss + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: bss + . = ALIGN(4); + SDK_AUTOLOAD..BSS_END = .; + + SDK_AUTOLOAD..BSS_SIZE = SDK_AUTOLOAD..BSS_END - SDK_AUTOLOAD..BSS_START; + + } >> + + + + SDK_AUTOLOAD_MAIN_START = SDK_AUTOLOAD.MAIN.START; + SDK_AUTOLOAD_MAIN_END = SDK_AUTOLOAD.MAIN.END; + SDK_AUTOLOAD_MAIN_BSS_END = SDK_AUTOLOAD.MAIN.BSS_END; + SDK_AUTOLOAD_MAIN_SIZE = SDK_AUTOLOAD.MAIN.SIZE; + SDK_AUTOLOAD_MAIN_BSS_SIZE = SDK_AUTOLOAD.MAIN.BSS_SIZE; + SDK_AUTOLOAD_WRAM_START = SDK_AUTOLOAD.WRAM.START; + SDK_AUTOLOAD_WRAM_END = SDK_AUTOLOAD.WRAM.END; + SDK_AUTOLOAD_WRAM_BSS_END = SDK_AUTOLOAD.WRAM.BSS_END; + SDK_AUTOLOAD_WRAM_SIZE = SDK_AUTOLOAD.WRAM.SIZE; + SDK_AUTOLOAD_WRAM_BSS_SIZE = SDK_AUTOLOAD.WRAM.BSS_SIZE; + + ############################ AUTOLOAD_INFO ########################## + .binary.AUTOLOAD_INFO: + { + + WRITEW ADDR(.); + WRITEW SDK_AUTOLOAD..SIZE; + WRITEW SDK_AUTOLOAD..BSS_SIZE; + + } > binary.AUTOLOAD_INFO + + SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE; + SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); + SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); + + ############################ OVERLAYS ############################### + SDK_OVERLAY_NUMBER = ; + + + .: + { + ALIGNALL(4); . = ALIGN(4); + + + SEARCH_SYMBOL ; + + + # + # TEXT BLOCK: READ ONLY + # + SDK_OVERLAY__ID =; ### SEGMENT OVERLAY ID + SDK_OVERLAY..ID =; + SDK_OVERLAY..START =.; + SDK_OVERLAY..TEXT_START =.; + #:::::::::: text/rodata + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + SDK_OVERLAY..SINIT_START =.; + #:::::::::: ctor + + + + + + + WRITEW 0; + #:::::::::: ctor + SDK_OVERLAY..SINIT_END =.; + + #:::::::::: text/rodata + . = ALIGN(4); + SDK_OVERLAY..TEXT_END =.; + + # + # DATA BLOCK: READ WRITE + # + SDK_OVERLAY..DATA_START =.; + #:::::::::: data + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: data + . = ALIGN(4); + SDK_OVERLAY..DATA_END =.; + SDK_OVERLAY..END =.; + + SDK_OVERLAY..TEXT_SIZE = SDK_OVERLAY..TEXT_END - SDK_OVERLAY..TEXT_START; + SDK_OVERLAY..DATA_SIZE = SDK_OVERLAY..DATA_END - SDK_OVERLAY..DATA_START; + SDK_OVERLAY..SIZE = SDK_OVERLAY..END - SDK_OVERLAY..START; + + } > + + ..bss: + { + ALIGNALL(4); . = ALIGN(4); + + + SEARCH_SYMBOL ; + + + # + # BSS BLOCK + # + SDK_OVERLAY..BSS_START = .; + #:::::::::: bss + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: bss + . = ALIGN(4); + SDK_OVERLAY..BSS_END = .; + + SDK_OVERLAY..BSS_SIZE = SDK_OVERLAY..BSS_END - SDK_OVERLAY..BSS_START; + + } >> + + + + + ############################ ARENA ################################## + .arena.MAIN: + { + . = ALIGN(4); + SDK_SECTION_ARENA_START =.; + } > arena.MAIN + + + ############################ OVERLAYDEFS ############################ + .: + { + ### module information + WRITEW ADDR(.); # load address + WRITEW _start; # entry address + WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; # size of module + WRITEW _start_AutoloadDoneCallback; # callback autoload done + + ### overlay filename + + WRITES (""); # Overlay + + + } > + + + ############################ OVERLAYTABLE ########################### + .: + { + + # Overlay + WRITEW ; # overlay ID + WRITEW ADDR(.); # load address + WRITEW SDK_OVERLAY..SIZE; # size of module + WRITEW SDK_OVERLAY..BSS_SIZE; # size of bss + WRITEW SDK_OVERLAY..SINIT_START; # start address of static init + WRITEW SDK_OVERLAY..SINIT_END; # end address of static init + WRITEW ; # ROM file ID + WRITEW 0; # Reserved + + + + } > + + + ############################ OTHERS ################################# + SDK_SUBPRIV_ARENA_LO = SDK_AUTOLOAD.MAIN.BSS_END; + SDK_WRAM_ARENA_LO = SDK_SECTION_ARENA_START; + SDK_IRQ_STACKSIZE = ; # allocated in WRAM + SDK_SYS_STACKSIZE = ; # allocated in WRAM + + # work ram size checker + SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; + .check.WORKRAM: + { + . = . + SDK_SECTION_ARENA_START - + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; + } > check.WORKRAM +} diff --git a/include/twl/specfiles/ARM7-TEG.lsf b/include/twl/specfiles/ARM7-TEG.lsf new file mode 100644 index 0000000..af402c0 --- /dev/null +++ b/include/twl/specfiles/ARM7-TEG.lsf @@ -0,0 +1,60 @@ +#---------------------------------------------------------------------------- +# Project: NitroSDK - include +# File: ARM7-TEG.lsf +# +# Copyright 2003,2004 Nintendo. All rights reserved. +# +# These coded insructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: ARM7-TEG.lsf,v $ +# Revision 1.10 2004/07/10 12:17:51 yasu +# delete GROUP(ROOT) +# +# Revision 1.9 2004/07/10 04:11:17 yasu +# Add GROUP(xxx) as object group +# +# Revision 1.8 2004/07/02 08:33:49 yasu +# Add .wram +# +# Revision 1.7 2004/07/02 01:12:11 yasu +# clean up comments +# +# Revision 1.6 2004/07/01 10:41:46 yasu +# support autoload +# +# Revision 1.5 2004/06/28 10:46:45 yasu +# avoid to use '*' as wildcard +# +# Revision 1.4 2004/04/19 04:27:30 yasu +# support WRAM overflow check +# +# Revision 1.3 2004/04/14 10:25:09 yasu +# delete LIBRARIES group +# +# Revision 1.2 2004/03/26 13:16:17 yasu +# use variables +# +# Revision 1.1 2004/03/26 06:04:32 yasu +# move spec files +# +# Revision 1.2 2004/03/18 12:43:38 yasu +# set top address for static segment +# +# $NoKeywords: $ +#---------------------------------------------------------------------------- +# +# Nitro LCF SPEC FILE +# + +Static $(TARGET_NAME) +{ + Address 0x037f8000 + Object $(OBJS_STATIC) + Library $(LLIBS) $(GLIBS) $(CW_LIBS) + Object * (.wram) + StackSize 1024 512 +} diff --git a/include/twl/specfiles/ARM7-TS.lcf.template b/include/twl/specfiles/ARM7-TS.lcf.template new file mode 100644 index 0000000..b5f35f1 --- /dev/null +++ b/include/twl/specfiles/ARM7-TS.lcf.template @@ -0,0 +1,578 @@ +#--------------------------------------------------------------------------- +# Project: NitroSDK - tools - makelcf +# File: ARM7-TS.lcf.template +# +# Copyright 2003-2006 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: ARM7-TS.lcf.template,v $ +# Revision 1.24 2006/05/10 03:19:47 yasu +# CodeWarrior 2.x のオーバーレイ拡張への対応 +# +# Revision 1.23 2006/04/07 04:45:14 kitase_hirotake +# .wram.bss の追加 +# +# Revision 1.22 2006/03/30 00:43:20 yasu +# 著作年度の変更 +# +# Revision 1.21 2006/03/29 13:19:14 yasu +# NUMBER_OVERLAYS -> NUMBER.OVERLAYS への修正 +# +# Revision 1.20 2005/09/02 04:14:22 yasu +# SDK2.2 でも使用可能のように古いシンボルを再定義した +# +# Revision 1.19 2005/08/31 09:34:57 yasu +# section_BSS というようなセクション名を使ったときに正常に動作しない場合があるのを修正 +# +# Revision 1.18 2005/06/20 12:29:20 yasu +# Surffix -> Suffix 修正 +# +# Revision 1.17 2005/06/14 09:03:42 yada +# fix around minus value of SDK_STACKSIZE +# +# Revision 1.16 2005/04/14 00:04:17 terui +# Update copyright. +# +# Revision 1.15 2005/04/13 12:52:50 terui +# Change SDK_AUTOLOAD.MAIN.START 0x027c0000 -> 0x027e0000 +# +# Revision 1.14 2004/09/08 01:27:18 yasu +# Add * (.wram) on static segment +# +# Revision 1.13 2004/08/18 01:50:40 yasu +# Support SDK_SUBPRIV_ARENA_LO +# +# Revision 1.12 2004/08/02 10:38:53 yasu +# Add autoload-done callback address in overlaydefs +# +# Revision 1.11 2004/07/26 00:08:27 yasu +# Fix label of exception table +# +# Revision 1.10 2004/07/24 05:42:25 yasu +# Set default values for SDK_AUTOGEN_xTCM_START +# +# Revision 1.9 2004/07/23 11:32:14 yasu +# Define labels for __exception_table_start__ and _end__ +# +# Revision 1.8 2004/07/12 12:24:12 yasu +# Fix checking WRAM +# +# Revision 1.7 2004/07/10 04:10:26 yasu +# Support command 'Library' +# +# Revision 1.6 2004/07/02 08:13:02 yasu +# Support OBJECT( ) +# +# Revision 1.5 2004/07/01 12:54:38 yasu +# support ITCM/DTCM/WRAM autoload +# +# Revision 1.4 2004/07/01 10:41:46 yasu +# support autoload +# +# Revision 1.3 2004/05/28 02:11:15 yasu +# set WRAM arena region correctly +# +# Revision 1.2 2004/04/26 12:17:49 yasu +# add KEEP_SECTIONS +# +# Revision 1.1 2004/04/06 01:59:54 yasu +# newly added +# +# $NoKeywords: $ +#--------------------------------------------------------------------------- +MEMORY +{ + (RWX) : ORIGIN = , LENGTH = 0x0 # > + + (RWX) : ORIGIN = , LENGTH = 0x0 # >> + + binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 # >> + + (RW) : ORIGIN = AFTER(), LENGTH = 0x0 > + (RW) : ORIGIN = AFTER(), LENGTH = 0x0 > + + (RWXO): ORIGIN = , LENGTH = 0x0 > + + arena.MAIN (RW) : ORIGIN = AFTER(,), LENGTH = 0x0 + check.WORKRAM (RWX) : ORIGIN = 0x037f8000, LENGTH = 0x18000 > workram.check +} + +SECTIONS +{ + ############################ STATIC ################################# + .: + { + ALIGNALL(4); . = ALIGN(4); # Fit to cache line + + + SEARCH_SYMBOL ; + + + # + # TEXT BLOCK: READ ONLY + # + SDK_STATIC_START =.; + SDK_STATIC_TEXT_START =.; + #:::::::::: text/rodata + OBJECT(_start,*) + crt0.o (.text) + + + + + + + . = ALIGN(4); + * (.exception) + . = ALIGN(4); + SDK_STATIC_ETABLE_START =.; + EXCEPTION + SDK_STATIC_ETABLE_END =.; + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + SDK_STATIC_SINIT_START =.; + #:::::::::: ctor + + + + + + + WRITEW 0; + #:::::::::: ctor + SDK_STATIC_SINIT_END =.; + + #:::::::::: text/rodata + . = ALIGN(4); + SDK_STATIC_TEXT_END =.; + + # + # DATA BLOCK: READ WRITE + # + SDK_STATIC_DATA_START =.; + #:::::::::: data + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: data + . = ALIGN(4); + SDK_STATIC_DATA_END =.; + SDK_STATIC_END =.; + + SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START; + SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START; + SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; + __sinit__ = SDK_STATIC_SINIT_START; # for static initializer + __exception_table_start__ = SDK_STATIC_ETABLE_START; # for exception table + __exception_table_end__ = SDK_STATIC_ETABLE_END; # for exception table + } > + + ..bss: + { + ALIGNALL(4); . = ALIGN(4); + + + SEARCH_SYMBOL ; + + + # + # BSS BLOCK + # + SDK_STATIC_BSS_START =.; + #:::::::::: bss + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: bss + . = ALIGN(4); + SDK_STATIC_BSS_END = .; + SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; + + } >> + + + ############################ AUTOLOADS ############################## + SDK_AUTOLOAD.MAIN.START = 0x027e0000; + SDK_AUTOLOAD.MAIN.END = SDK_AUTOLOAD.MAIN.START; + SDK_AUTOLOAD.MAIN.BSS_END = SDK_AUTOLOAD.MAIN.START; + SDK_AUTOLOAD.MAIN.SIZE = 0; + SDK_AUTOLOAD.MAIN.BSS_SIZE = 0; + SDK_AUTOLOAD.WRAM.START = 0x037f8000; + SDK_AUTOLOAD.WRAM.END = SDK_AUTOLOAD.WRAM.START; + SDK_AUTOLOAD.WRAM.BSS_END = SDK_AUTOLOAD.WRAM.START; + SDK_AUTOLOAD.WRAM.SIZE = 0; + SDK_AUTOLOAD.WRAM.BSS_SIZE = 0; + SDK_AUTOLOAD_START = SDK_STATIC_END; + SDK_AUTOLOAD_SIZE = 0; + SDK_AUTOLOAD_NUMBER = ; + + + .: + { + ALIGNALL(4); . = ALIGN(4); + + + SEARCH_SYMBOL ; + + + # + # TEXT BLOCK: READ ONLY + # + SDK_AUTOLOAD__ID =; + SDK_AUTOLOAD..ID =; + SDK_AUTOLOAD..START =.; + SDK_AUTOLOAD..TEXT_START =.; + #:::::::::: text/rodata + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: text/rodata + SDK_AUTOLOAD..TEXT_END =.; + + # + # DATA BLOCK: READ WRITE BLOCK + # + SDK_AUTOLOAD..DATA_START =.; + #:::::::::: data + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: data + SDK_AUTOLOAD..DATA_END =.; + SDK_AUTOLOAD..END =.; + + SDK_AUTOLOAD..TEXT_SIZE = SDK_AUTOLOAD..TEXT_END - SDK_AUTOLOAD..TEXT_START; + SDK_AUTOLOAD..DATA_SIZE = SDK_AUTOLOAD..DATA_END - SDK_AUTOLOAD..DATA_START; + SDK_AUTOLOAD..SIZE = SDK_AUTOLOAD..END - SDK_AUTOLOAD..START; + SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD..SIZE; + + } > + + ..bss: + { + ALIGNALL(4); . = ALIGN(4); + + + SEARCH_SYMBOL ; + + + # + # BSS BLOCK + # + SDK_AUTOLOAD..BSS_START = .; + #:::::::::: bss + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: bss + . = ALIGN(4); + SDK_AUTOLOAD..BSS_END = .; + + SDK_AUTOLOAD..BSS_SIZE = SDK_AUTOLOAD..BSS_END - SDK_AUTOLOAD..BSS_START; + + } >> + + + + SDK_AUTOLOAD_MAIN_START = SDK_AUTOLOAD.MAIN.START; + SDK_AUTOLOAD_MAIN_END = SDK_AUTOLOAD.MAIN.END; + SDK_AUTOLOAD_MAIN_BSS_END = SDK_AUTOLOAD.MAIN.BSS_END; + SDK_AUTOLOAD_MAIN_SIZE = SDK_AUTOLOAD.MAIN.SIZE; + SDK_AUTOLOAD_MAIN_BSS_SIZE = SDK_AUTOLOAD.MAIN.BSS_SIZE; + SDK_AUTOLOAD_WRAM_START = SDK_AUTOLOAD.WRAM.START; + SDK_AUTOLOAD_WRAM_END = SDK_AUTOLOAD.WRAM.END; + SDK_AUTOLOAD_WRAM_BSS_END = SDK_AUTOLOAD.WRAM.BSS_END; + SDK_AUTOLOAD_WRAM_SIZE = SDK_AUTOLOAD.WRAM.SIZE; + SDK_AUTOLOAD_WRAM_BSS_SIZE = SDK_AUTOLOAD.WRAM.BSS_SIZE; + + ############################ AUTOLOAD_INFO ########################## + .binary.AUTOLOAD_INFO: + { + + WRITEW ADDR(.); + WRITEW SDK_AUTOLOAD..SIZE; + WRITEW SDK_AUTOLOAD..BSS_SIZE; + + } > binary.AUTOLOAD_INFO + + SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE; + SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); + SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); + + ############################ OVERLAYS ############################### + SDK_OVERLAY_NUMBER = ; + + + .: + { + ALIGNALL(4); . = ALIGN(4); + + + SEARCH_SYMBOL ; + + + # + # TEXT BLOCK: READ ONLY + # + SDK_OVERLAY__ID =; ### SEGMENT OVERLAY ID + SDK_OVERLAY..ID =; + SDK_OVERLAY..START =.; + SDK_OVERLAY..TEXT_START =.; + #:::::::::: text/rodata + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + SDK_OVERLAY..SINIT_START =.; + #:::::::::: ctor + + + + + + + WRITEW 0; + #:::::::::: ctor + SDK_OVERLAY..SINIT_END =.; + + #:::::::::: text/rodata + . = ALIGN(4); + SDK_OVERLAY..TEXT_END =.; + + # + # DATA BLOCK: READ WRITE + # + SDK_OVERLAY..DATA_START =.; + #:::::::::: data + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: data + . = ALIGN(4); + SDK_OVERLAY..DATA_END =.; + SDK_OVERLAY..END =.; + + SDK_OVERLAY..TEXT_SIZE = SDK_OVERLAY..TEXT_END - SDK_OVERLAY..TEXT_START; + SDK_OVERLAY..DATA_SIZE = SDK_OVERLAY..DATA_END - SDK_OVERLAY..DATA_START; + SDK_OVERLAY..SIZE = SDK_OVERLAY..END - SDK_OVERLAY..START; + + } > + + ..bss: + { + ALIGNALL(4); . = ALIGN(4); + + + SEARCH_SYMBOL ; + + + # + # BSS BLOCK + # + SDK_OVERLAY..BSS_START = .; + #:::::::::: bss + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: bss + . = ALIGN(4); + SDK_OVERLAY..BSS_END = .; + + SDK_OVERLAY..BSS_SIZE = SDK_OVERLAY..BSS_END - SDK_OVERLAY..BSS_START; + + } >> + + + + + ############################ ARENA ################################## + .arena.MAIN: + { + . = ALIGN(4); + SDK_SECTION_ARENA_START =.; + } > arena.MAIN + + + ############################ OVERLAYDEFS ############################ + .: + { + ### module information + WRITEW ADDR(.); # load address + WRITEW _start; # entry address + WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; # size of module + WRITEW _start_AutoloadDoneCallback; # callback autoload done + + ### overlay filename + + WRITES (""); # Overlay + + + } > + + + ############################ OVERLAYTABLE ########################### + .: + { + + # Overlay + WRITEW ; # overlay ID + WRITEW ADDR(.); # load address + WRITEW SDK_OVERLAY..SIZE; # size of module + WRITEW SDK_OVERLAY..BSS_SIZE; # size of bss + WRITEW SDK_OVERLAY..SINIT_START; # start address of static init + WRITEW SDK_OVERLAY..SINIT_END; # end address of static init + WRITEW ; # ROM file ID + WRITEW 0; # Reserved + + + + } > + + + ############################ OTHERS ################################# + SDK_WRAM_ARENA_LO = SDK_AUTOLOAD.WRAM.BSS_END; + SDK_SUBPRIV_ARENA_LO = SDK_AUTOLOAD.MAIN.BSS_END; + SDK_IRQ_STACKSIZE = ; # allocated in WRAM + SDK_SYS_STACKSIZE = ; # allocated in WRAM + + # work ram size checker => check AUTOLOAD_WRAM + SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; + .check.WORKRAM: + { + . = . + SDK_AUTOLOAD.WRAM.BSS_END - 0x037f8000 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; + } > check.WORKRAM +} diff --git a/include/twl/specfiles/ARM7-TS.lsf b/include/twl/specfiles/ARM7-TS.lsf new file mode 100644 index 0000000..3a66205 --- /dev/null +++ b/include/twl/specfiles/ARM7-TS.lsf @@ -0,0 +1,76 @@ +#---------------------------------------------------------------------------- +# Project: NitroSDK - include +# File: ARM7-TS.lsf +# +# Copyright 2003-2005 Nintendo. All rights reserved. +# +# These coded insructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: ARM7-TS.lsf,v $ +# Revision 1.12 2005/04/14 00:04:17 terui +# Update copyright. +# +# Revision 1.11 2005/04/13 12:49:24 terui +# Change Autoload MAIN Address 0x027c0000 -> 0x027e0000 +# +# Revision 1.10 2004/08/18 01:51:02 yasu +# Rename autoload section name +# +# Revision 1.9 2004/07/26 02:21:48 yasu +# Add comment for autoload on 0x027c0000 +# +# Revision 1.8 2004/07/12 12:23:14 yasu +# Delete GROUP(ROOT) +# +# Revision 1.7 2004/07/10 04:11:17 yasu +# Add GROUP(xxx) as object group +# +# Revision 1.6 2004/07/02 01:12:11 yasu +# clean up comments +# +# Revision 1.5 2004/07/01 12:54:38 yasu +# support ITCM/DTCM/WRAM autoload +# +# Revision 1.4 2004/07/01 10:41:46 yasu +# support autoload +# +# Revision 1.3 2004/06/28 10:46:45 yasu +# avoid to use '*' as wildcard +# +# Revision 1.2 2004/04/14 10:25:09 yasu +# delete LIBRARIES group +# +# Revision 1.1 2004/04/06 01:59:54 yasu +# newly added +# +# $NoKeywords: $ +#---------------------------------------------------------------------------- +# +# Nitro LCF SPEC FILE +# + +Static $(TARGET_NAME) +{ + Address 0x02380000 + Library crt0.o + StackSize 1024 512 +} + +#Objects on MAIN RAM # nothing for elf2bin +#Autoload MAIN +#{ +# Address 0x027e0000 +# Library +#} + +Autoload WRAM +{ + Address 0x037f8000 + Object $(OBJS_STATIC) + Library $(LLIBS) $(GLIBS) $(CW_LIBS) + Object * (.wram) +} diff --git a/include/twl/specfiles/ARM9-TEG.lcf.template b/include/twl/specfiles/ARM9-TEG.lcf.template new file mode 100644 index 0000000..e9b3992 --- /dev/null +++ b/include/twl/specfiles/ARM9-TEG.lcf.template @@ -0,0 +1,692 @@ +#--------------------------------------------------------------------------- +# Project: NitroSDK - tools - makelcf +# File: ARM9-TEG.lcf.template +# +# Copyright 2003-2006 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: ARM9-TEG.lcf.template,v $ +# Revision 1.31 2006/05/10 03:19:47 yasu +# CodeWarrior 2.x のオーバーレイ拡張への対応 +# +# Revision 1.30 2006/03/30 00:31:29 yasu +# NUMBER_OVERLAYS を NUMBER.OVERLAYS に修正 +# +# Revision 1.29 2006/03/29 13:19:14 yasu +# NUMBER_OVERLAYS -> NUMBER.OVERLAYS への修正 +# +# Revision 1.28 2005/09/02 04:14:22 yasu +# SDK2.2 でも使用可能のように古いシンボルを再定義した +# +# Revision 1.27 2005/08/31 09:34:57 yasu +# section_BSS というようなセクション名を使ったときに正常に動作しない場合があるのを修正 +# +# Revision 1.26 2005/08/26 11:22:16 yasu +# ITCM/DTCM への overlay の対応 +# +# Revision 1.25 2005/06/20 12:29:20 yasu +# Surffix -> Suffix 修正 +# +# Revision 1.24 2005/06/17 03:16:11 yasu +# fix copyright header +# +# Revision 1.23 2005/06/14 09:03:42 yada +# fix around minus value of SDK_STACKSIZE +# +# Revision 1.22 2004/10/03 02:00:56 yasu +# Output component file list for compstatic tool +# +# Revision 1.21 2004/09/09 11:49:20 yasu +# Support compstatic in default +# +# Revision 1.20 2004/09/09 03:15:36 yasu +# Support NITRO_COMPRESS on TEG +# +# Revision 1.19 2004/08/02 10:38:53 yasu +# Add autoload-done callback address in overlaydefs +# +# Revision 1.18 2004/07/26 00:08:27 yasu +# Fix label of exception table +# +# Revision 1.17 2004/07/24 05:42:25 yasu +# Set default values for SDK_AUTOGEN_xTCM_START +# +# Revision 1.16 2004/07/23 11:32:14 yasu +# Define labels for __exception_table_start__ and _end__ +# +# Revision 1.15 2004/07/12 12:21:08 yasu +# Check size of ITCM/DTCM +# +# Revision 1.14 2004/07/10 04:10:26 yasu +# Support command 'Library' +# +# Revision 1.13 2004/07/08 04:04:59 yasu +# fix small typo +# +# Revision 1.12 2004/07/02 08:13:02 yasu +# Support OBJECT( ) +# +# Revision 1.11 2004/07/01 12:54:38 yasu +# support ITCM/DTCM/WRAM autoload +# +# Revision 1.10 2004/07/01 09:41:50 yasu +# support autoload +# +# Revision 1.9 2004/06/14 11:28:15 yasu +# support section filter "FOREACH.STATIC.OBJECTS=.sectionName" +# +# Revision 1.8 2004/04/26 11:41:38 yasu +# add KEEP_SECTION { .ctor } +# +# Revision 1.7 2004/04/20 07:41:32 yasu +# Set STATICINIT instead of .ctor temporarily +# +# Revision 1.6 2004/04/14 07:13:20 yasu +# add ALIGN(32) for convenience to handle cache line +# +# Revision 1.5 2004/04/06 01:53:34 yasu +# move rodata section into text section +# +# Revision 1.4 2004/04/06 01:39:43 miya +# modify overlay module size +# +# Revision 1.3 2004/03/29 11:40:48 yasu +# delete ROM SIZE parameter on overlay table +# +# Revision 1.2 2004/03/26 09:32:48 yasu +# delete useless ALIGN +# +# Revision 1.1 2004/03/26 06:04:32 yasu +# move spec files +# +# Revision 1.9 2004/03/23 00:15:35 yasu +# add WRITEW 0 for the termination of __OVERLAY_static_init__ +# +# Revision 1.8 2004/03/22 02:15:49 yasu +# set _start as entry address in rom header +# +# Revision 1.7 2004/03/16 10:05:14 yasu +# add ALIGN(4) at end of section +# +# Revision 1.6 2004/02/14 03:34:00 yasu +# exchange .bss and .sbss +# +# Revision 1.5 2004/02/13 07:13:16 yasu +# support SDK_IRQ_STACKSIZE +# +# Revision 1.4 2004/02/05 12:21:14 yasu +# change SDK prefix iris -> nitro +# +# Revision 1.3 2004/01/16 01:34:01 yasu +# Clean up lcf to support ARENA functions +# +# Revision 1.2 2004/01/15 13:10:03 yasu +# clean unused variables +# +# Revision 1.1 2004/01/15 10:52:51 yasu +# lcf template for OVERLAY +# +# Revision 1.1 2004/01/14 01:59:02 yasu +# Change filename +# +# Revision 1.2 2004/01/07 13:11:08 yasu +# change command casing +# +# Revision 1.1 2004/01/05 02:32:59 yasu +# Initial version +# +# $NoKeywords: $ +#--------------------------------------------------------------------------- +MEMORY +{ + (RWX) : ORIGIN = , LENGTH = 0x0 # > + + (RWX) : ORIGIN = , LENGTH = 0x0 # >> + + binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 # >> + binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 # >> + + (RW) : ORIGIN = AFTER(), LENGTH = 0x0 # > + (RW) : ORIGIN = AFTER(), LENGTH = 0x0 # > + + (RWXO): ORIGIN = , LENGTH = 0x0 # > + + dummy.MAIN_EX (RW) : ORIGIN = 0x02400000, LENGTH = 0x0 + arena.MAIN (RW) : ORIGIN = AFTER(,), LENGTH = 0x0 + arena.MAIN_EX (RW) : ORIGIN = AFTER(dummy.MAIN_EX,), LENGTH = 0x0 + arena.ITCM (RW) : ORIGIN = AFTER(ITCM,), LENGTH = 0x0 + arena.DTCM (RW) : ORIGIN = AFTER(DTCM,), LENGTH = 0x0 + binary.MODULE_FILES (RW) : ORIGIN = 0x0, LENGTH = 0x0 # > component.files + check.ITCM (RWX) : ORIGIN = 0x0, LENGTH = 0x08000 # > itcm.check + check.DTCM (RW) : ORIGIN = 0x0, LENGTH = 0x04000 # > dtcm.check +} + +SECTIONS +{ + ############################ STATIC ################################# + .: + { + ALIGNALL(4); . = ALIGN(32); # Fit to cache line + + + SEARCH_SYMBOL ; + + + # + # TEXT BLOCK: READ ONLY + # + SDK_STATIC_START =.; + SDK_STATIC_TEXT_START =.; + #:::::::::: text/rodata + OBJECT(_start,*) + crt0.o (.text) + + + + + + + . = ALIGN(4); + * (.exception) + . = ALIGN(4); + SDK_STATIC_ETABLE_START =.; + EXCEPTION + SDK_STATIC_ETABLE_END =.; + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + SDK_STATIC_SINIT_START =.; + #:::::::::: ctor + + + + + + + WRITEW 0; + #:::::::::: ctor + SDK_STATIC_SINIT_END =.; + + #:::::::::: text/rodata + . = ALIGN(32); + SDK_STATIC_TEXT_END =.; + + # + # DATA BLOCK: READ WRITE + # + SDK_STATIC_DATA_START =.; + #:::::::::: data + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + SDK_OVERLAY_DIGEST =.; + # NO DIGEST + SDK_OVERLAY_DIGEST_END =.; + #:::::::::: data + . = ALIGN(32); + SDK_STATIC_DATA_END =.; + SDK_STATIC_END =.; + + SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START; + SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START; + SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; + __sinit__ = SDK_STATIC_SINIT_START; # for static initializer + __exception_table_start__ = SDK_STATIC_ETABLE_START; # for exception table + __exception_table_end__ = SDK_STATIC_ETABLE_END; # for exception table + } > + + ..bss: + { + ALIGNALL(4); . = ALIGN(32); + + + SEARCH_SYMBOL ; + + + # + # BSS BLOCK + # + SDK_STATIC_BSS_START =.; + #:::::::::: bss + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: bss + . = ALIGN(32); + SDK_STATIC_BSS_END = .; + SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; + + } >> + + + ############################ AUTOLOADS ############################## + SDK_AUTOLOAD.ITCM.START = 0x01ff8000; + SDK_AUTOLOAD.ITCM.END = SDK_AUTOLOAD.ITCM.START; + SDK_AUTOLOAD.ITCM.BSS_END = SDK_AUTOLOAD.ITCM.START; + SDK_AUTOLOAD.ITCM.SIZE = 0; + SDK_AUTOLOAD.ITCM.BSS_SIZE = 0; + SDK_AUTOLOAD.DTCM.START = 0x02380000; + SDK_AUTOLOAD.DTCM.END = SDK_AUTOLOAD.DTCM.START; + SDK_AUTOLOAD.DTCM.BSS_END = SDK_AUTOLOAD.DTCM.START; + SDK_AUTOLOAD.DTCM.SIZE = 0; + SDK_AUTOLOAD.DTCM.BSS_SIZE = 0; + SDK_AUTOLOAD_START = SDK_STATIC_END; + SDK_AUTOLOAD_SIZE = 0; + SDK_AUTOLOAD_NUMBER = ; + + + .: + { + ALIGNALL(4); . = ALIGN(32); + + + SEARCH_SYMBOL ; + + + # + # TEXT BLOCK: READ ONLY + # + SDK_AUTOLOAD__ID =; + SDK_AUTOLOAD..ID =; + SDK_AUTOLOAD..START =.; + SDK_AUTOLOAD..TEXT_START =.; + #:::::::::: text/rodata + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: text/rodata + SDK_AUTOLOAD..TEXT_END =.; + + # + # DATA BLOCK: READ WRITE BLOCK + # + SDK_AUTOLOAD..DATA_START =.; + #:::::::::: data + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: data + . = ALIGN(32); + SDK_AUTOLOAD..DATA_END =.; + SDK_AUTOLOAD..END =.; + + SDK_AUTOLOAD..TEXT_SIZE = SDK_AUTOLOAD..TEXT_END - SDK_AUTOLOAD..TEXT_START; + SDK_AUTOLOAD..DATA_SIZE = SDK_AUTOLOAD..DATA_END - SDK_AUTOLOAD..DATA_START; + SDK_AUTOLOAD..SIZE = SDK_AUTOLOAD..END - SDK_AUTOLOAD..START; + SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD..SIZE; + + } > + + ..bss: + { + ALIGNALL(4); . = ALIGN(32); + + + SEARCH_SYMBOL ; + + + # + # BSS BLOCK + # + SDK_AUTOLOAD..BSS_START = .; + #:::::::::: bss + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: bss + . = ALIGN(32); + SDK_AUTOLOAD..BSS_END = .; + + SDK_AUTOLOAD..BSS_SIZE = SDK_AUTOLOAD..BSS_END - SDK_AUTOLOAD..BSS_START; + + } >> + + + + SDK_AUTOLOAD_ITCM_START = SDK_AUTOLOAD.ITCM.START; + SDK_AUTOLOAD_ITCM_END = SDK_AUTOLOAD.ITCM.END; + SDK_AUTOLOAD_ITCM_BSS_END = SDK_AUTOLOAD.ITCM.BSS_END; + SDK_AUTOLOAD_ITCM_SIZE = SDK_AUTOLOAD.ITCM.SIZE; + SDK_AUTOLOAD_ITCM_BSS_SIZE = SDK_AUTOLOAD.ITCM.BSS_SIZE; + SDK_AUTOLOAD_DTCM_START = SDK_AUTOLOAD.DTCM.START; + SDK_AUTOLOAD_DTCM_END = SDK_AUTOLOAD.DTCM.END; + SDK_AUTOLOAD_DTCM_BSS_END = SDK_AUTOLOAD.DTCM.BSS_END; + SDK_AUTOLOAD_DTCM_SIZE = SDK_AUTOLOAD.DTCM.SIZE; + SDK_AUTOLOAD_DTCM_BSS_SIZE = SDK_AUTOLOAD.DTCM.BSS_SIZE; + + ############################ AUTOLOAD_INFO ########################## + .binary.AUTOLOAD_INFO: + { + + WRITEW ADDR(.); + WRITEW SDK_AUTOLOAD..SIZE; + WRITEW SDK_AUTOLOAD..BSS_SIZE; + + } > binary.AUTOLOAD_INFO + + SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE; + SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); + SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); + + ############################ STATIC_FOOTER ########################## + .binary.STATIC_FOOTER: + { + WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE + WRITEW _start_ModuleParams - ADDR(.); + WRITEW 0; # NO DIGEST + } > binary.STATIC_FOOTER + + ############################ OVERLAYS ############################### + SDK_OVERLAY_NUMBER = ; + + + .: + { + ALIGNALL(4); . = ALIGN(32); + + + SEARCH_SYMBOL ; + + + # + # TEXT BLOCK: READ ONLY + # + SDK_OVERLAY__ID =; ### SEGMENT OVERLAY ID + SDK_OVERLAY..ID =; + SDK_OVERLAY..START =.; + SDK_OVERLAY..TEXT_START =.; + #:::::::::: text/rodata + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + SDK_OVERLAY..SINIT_START =.; + #:::::::::: ctor + + + + + + + WRITEW 0; + #:::::::::: ctor + SDK_OVERLAY..SINIT_END =.; + + #:::::::::: text/rodata + . = ALIGN(32); + SDK_OVERLAY..TEXT_END =.; + + # + # DATA BLOCK: READ WRITE + # + SDK_OVERLAY..DATA_START =.; + #:::::::::: data + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: data + . = ALIGN(32); + SDK_OVERLAY..DATA_END =.; + SDK_OVERLAY..END =.; + + SDK_OVERLAY..TEXT_SIZE = SDK_OVERLAY..TEXT_END - SDK_OVERLAY..TEXT_START; + SDK_OVERLAY..DATA_SIZE = SDK_OVERLAY..DATA_END - SDK_OVERLAY..DATA_START; + SDK_OVERLAY..SIZE = SDK_OVERLAY..END - SDK_OVERLAY..START; + + } > + + ..bss: + { + ALIGNALL(4); . = ALIGN(32); + + + SEARCH_SYMBOL ; + + + # + # BSS BLOCK + # + SDK_OVERLAY..BSS_START = .; + #:::::::::: bss + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: bss + . = ALIGN(32); + SDK_OVERLAY..BSS_END = .; + + SDK_OVERLAY..BSS_SIZE = SDK_OVERLAY..BSS_END - SDK_OVERLAY..BSS_START; + + } >> + + + + + ############################ MAIN EX ################################## + .dummy.MAIN_EX: + { + . = ALIGN(32); + } > dummy.MAIN_EX + + + ############################ ARENA ################################## + .arena.MAIN: + { + . = ALIGN(32); + SDK_SECTION_ARENA_START =.; + } > arena.MAIN + + .arena.MAIN_EX: + { + . = ALIGN(32); + SDK_SECTION_ARENA_EX_START =.; + } > arena.MAIN_EX + + .arena.ITCM: + { + . = ALIGN(32); + SDK_SECTION_ARENA_ITCM_START =.; + } > arena.ITCM + + .arena.DTCM: + { + . = ALIGN(32); + SDK_SECTION_ARENA_DTCM_START =.; + } > arena.DTCM + + + ############################ OVERLAYDEFS ############################ + .: + { + ### module information + WRITEW ADDR(.); # load address + WRITEW _start; # entry address + WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; # size of module + WRITEW _start_AutoloadDoneCallback; # callback autoload done + + ### overlay filename + + WRITES (""); # Overlay + + + } > + + + ############################ OVERLAYTABLE ########################### + .: + { + + # Overlay + WRITEW ; # overlay ID + WRITEW ADDR(.); # load address + WRITEW SDK_OVERLAY..SIZE; # size of module + WRITEW SDK_OVERLAY..BSS_SIZE; # size of bss + WRITEW SDK_OVERLAY..SINIT_START; # start address of static init + WRITEW SDK_OVERLAY..SINIT_END; # end address of static init + WRITEW ; # ROM file ID + WRITEW 0; # Reserved + + + + } > + + + ############################ OTHERS ################################# + SDK_MAIN_ARENA_LO = SDK_SECTION_ARENA_START; + SDK_IRQ_STACKSIZE = ; # allocated in DTCM + SDK_SYS_STACKSIZE = ; # when 0 means all remains of DTCM + + # Module filelist + .binary.MODULE_FILES: + { + WRITES (""); + WRITES (""); + WRITES (""); + } > binary.MODULE_FILES + + # ITCM/DTCM size checker => check AUTOLOAD_ITCM/DTCM + .check.ITCM: + { + . = . + SDK_AUTOLOAD_ITCM_SIZE + SDK_AUTOLOAD_ITCM_BSS_SIZE; + + . = . + SDK_OVERLAY..SIZE + SDK_OVERLAY..BSS_SIZE; + + } > check.ITCM + + SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; + .check.DTCM: + { + . = . + SDK_AUTOLOAD_DTCM_SIZE + SDK_AUTOLOAD_DTCM_BSS_SIZE; + + . = . + SDK_OVERLAY..SIZE + SDK_OVERLAY..BSS_SIZE; + + . = . + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; + } > check.DTCM + +} diff --git a/include/twl/specfiles/ARM9-TEG.lsf b/include/twl/specfiles/ARM9-TEG.lsf new file mode 100644 index 0000000..fc5f46e --- /dev/null +++ b/include/twl/specfiles/ARM9-TEG.lsf @@ -0,0 +1,76 @@ +#---------------------------------------------------------------------------- +# Project: NitroSDK - include +# File: ARM9-TEG.lsf +# +# Copyright 2003,2004 Nintendo. All rights reserved. +# +# These coded insructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: ARM9-TEG.lsf,v $ +# Revision 1.9 2004/07/10 12:17:51 yasu +# delete GROUP(ROOT) +# +# Revision 1.8 2004/07/10 04:11:17 yasu +# Add GROUP(xxx) as object group +# +# Revision 1.7 2004/07/08 04:04:59 yasu +# fix small typo +# +# Revision 1.6 2004/07/01 12:54:38 yasu +# support ITCM/DTCM/WRAM autoload +# +# Revision 1.5 2004/07/01 09:41:50 yasu +# support autoload +# +# Revision 1.4 2004/06/28 10:53:23 yasu +# Avoid to use '*' as wildcard +# +# Revision 1.3 2004/04/14 10:25:09 yasu +# delete LIBRARIES group +# +# Revision 1.2 2004/03/26 13:16:17 yasu +# use variables +# +# Revision 1.1 2004/03/26 06:04:32 yasu +# move spec files +# +# Revision 1.1 2004/03/18 12:42:34 yasu +# default.lsf -> default.ARM[9/7]-TEG.lsf +# +# Revision 1.2 2004/03/18 03:11:26 yasu +# rename segment default -> main +# +# Revision 1.1 2004/03/18 02:51:51 yasu +# default lcf spec file +# +# $NoKeywords: $ +#---------------------------------------------------------------------------- +# +# Nitro LCF SPEC FILE +# + +Static $(TARGET_NAME) +{ + Address 0x02004000 + Object $(OBJS_STATIC) + Library $(LLIBS) $(GLIBS) $(CW_LIBS) +} + +Autoload ITCM +{ + Address 0x01ff8000 + Object * (.itcm) + Object $(OBJS_AUTOLOAD) (.text) +} + +Autoload DTCM +{ + Address 0x02380000 + Object * (.dtcm) + Object $(OBJS_AUTOLOAD) (.data) + Object $(OBJS_AUTOLOAD) (.bss) +} diff --git a/include/twl/specfiles/ARM9-TS.lcf.template b/include/twl/specfiles/ARM9-TS.lcf.template new file mode 100644 index 0000000..c8000ff --- /dev/null +++ b/include/twl/specfiles/ARM9-TS.lcf.template @@ -0,0 +1,706 @@ +#--------------------------------------------------------------------------- +# Project: NitroSDK - tools - makelcf +# File: ARM9-TS.lcf.template +# +# Copyright 2003-2006 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: ARM9-TS.lcf.template,v $ +# Revision 1.35 2006/05/10 03:19:47 yasu +# CodeWarrior 2.x のオーバーレイ拡張への対応 +# +# Revision 1.34 2006/04/06 09:02:36 kitase_hirotake +# .itcm.bss .dtcm.bss に対応 +# +# Revision 1.33 2006/03/30 23:59:22 yasu +# 著作年度の変更 +# +# Revision 1.32 2006/03/29 13:14:22 yasu +# CWVER 2.x でのオーバーレイのサポート +# +# Revision 1.31 2005/11/24 01:16:47 yada +# change start address of mainEX arena from 0x2400000 to 0x23e0000 +# +# Revision 1.30 2005/09/02 04:14:22 yasu +# SDK2.2 でも使用可能のように古いシンボルを再定義した +# +# Revision 1.29 2005/08/31 09:34:57 yasu +# section_BSS というようなセクション名を使ったときに正常に動作しない場合があるのを修正 +# +# Revision 1.28 2005/08/26 11:22:16 yasu +# ITCM/DTCM への overlay の対応 +# +# Revision 1.27 2005/06/20 12:29:20 yasu +# Surffix -> Suffix 修正 +# +# Revision 1.26 2005/06/14 09:03:42 yada +# fix around minus value of SDK_STACKSIZE +# +# Revision 1.25 2005/04/13 12:51:00 terui +# Change SDK_AUTOLOAD.DTCM.START 0x027c0000 -> 0x027e0000 +# +# Revision 1.24 2005/03/30 00:02:14 yosizaki +# fix copyright header. +# +# Revision 1.23 2005/03/25 12:54:59 yasu +# Include .version section +# +# Revision 1.22 2004/10/03 02:00:56 yasu +# Output component file list for compstatic tool +# +# Revision 1.21 2004/09/27 05:28:21 yasu +# Support .sinit +# +# Revision 1.20 2004/09/09 11:49:20 yasu +# Support compstatic in default +# +# Revision 1.19 2004/09/06 06:40:00 yasu +# Add labels for digest +# +# Revision 1.18 2004/08/20 06:19:59 yasu +# DTCM moves to 0x027c0000 at default +# +# Revision 1.17 2004/08/02 10:38:53 yasu +# Add autoload-done callback address in overlaydefs +# +# Revision 1.16 2004/07/26 02:22:32 yasu +# Change DTCM address to 0x023c0000 +# +# Revision 1.15 2004/07/26 00:08:27 yasu +# Fix label of exception table +# +# Revision 1.14 2004/07/24 05:42:25 yasu +# Set default values for SDK_AUTOGEN_xTCM_START +# +# Revision 1.13 2004/07/23 11:32:14 yasu +# Define labels for __exception_table_start__ and _end__ +# +# Revision 1.12 2004/07/12 12:21:08 yasu +# Check size of ITCM/DTCM +# +# Revision 1.11 2004/07/10 04:10:26 yasu +# Support command 'Library' +# +# Revision 1.10 2004/07/02 08:13:02 yasu +# Support OBJECT( ) +# +# Revision 1.9 2004/07/01 12:54:38 yasu +# support ITCM/DTCM/WRAM autoload +# +# Revision 1.8 2004/07/01 10:41:46 yasu +# support autoload +# +# Revision 1.7 2004/06/02 07:35:37 yasu +# Set libsyscall.a in FORCE_ACTIVE +# Put NitroMain at the top of ROM image +# +# Revision 1.6 2004/06/02 04:56:28 yasu +# Change to fit to new ROM map of TS +# +# Revision 1.5 2004/06/01 06:12:00 miya +# add padding at top of ROM image. +# +# Revision 1.4 2004/04/26 12:16:48 yasu +# add KEEP_SECTIONS +# +# Revision 1.3 2004/04/20 07:41:32 yasu +# Set STATICINIT instead of .ctor temporarily +# +# Revision 1.2 2004/04/14 07:16:42 yasu +# add ALIGN(32) for convenience to handle cache line +# +# Revision 1.1 2004/04/06 01:59:54 yasu +# newly added +# +# $NoKeywords: $ +#--------------------------------------------------------------------------- +MEMORY +{ + (RWX) : ORIGIN = , LENGTH = 0x0 # > + + (RWX) : ORIGIN = , LENGTH = 0x0 # >> + + binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 # >> + binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 # >> + + (RW) : ORIGIN = AFTER(), LENGTH = 0x0 > + (RW) : ORIGIN = AFTER(), LENGTH = 0x0 > + + (RWXO): ORIGIN = , LENGTH = 0x0 > + + dummy.MAIN_EX (RW) : ORIGIN = 0x023e0000, LENGTH = 0x0 + arena.MAIN (RW) : ORIGIN = AFTER(,), LENGTH = 0x0 + arena.MAIN_EX (RW) : ORIGIN = AFTER(dummy.MAIN_EX,), LENGTH = 0x0 + arena.ITCM (RW) : ORIGIN = AFTER(ITCM,), LENGTH = 0x0 + arena.DTCM (RW) : ORIGIN = AFTER(DTCM,), LENGTH = 0x0 + binary.MODULE_FILES (RW) : ORIGIN = 0x0, LENGTH = 0x0 > component.files + check.ITCM (RWX) : ORIGIN = 0x0, LENGTH = 0x08000 > itcm.check + check.DTCM (RW) : ORIGIN = 0x0, LENGTH = 0x04000 > dtcm.check +} + +FORCE_ACTIVE +{ + SVC_SoftReset +} + +KEEP_SECTION +{ + .sinit +} + +SECTIONS +{ + ############################ STATIC ################################# + .: + { + ALIGNALL(4); . = ALIGN(32); # Fit to cache line + + + SEARCH_SYMBOL ; + + + # + # TEXT BLOCK: READ ONLY + # + SDK_STATIC_START =.; + SDK_STATIC_TEXT_START =.; + #:::::::::: text/rodata + libsyscall.a (.text) + crt0.o (.text) + crt0.o (.rodata) + * (.version) + OBJECT(NitroMain,*) + + + + + + + . = ALIGN(4); + * (.exception) + . = ALIGN(4); + SDK_STATIC_ETABLE_START =.; + EXCEPTION + SDK_STATIC_ETABLE_END =.; + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + SDK_STATIC_SINIT_START =.; + #:::::::::: ctor + + + + + + + + + + + + + WRITEW 0; + #:::::::::: ctor + SDK_STATIC_SINIT_END =.; + + #:::::::::: text/rodata + . = ALIGN(32); + SDK_STATIC_TEXT_END =.; + + # + # DATA BLOCK: READ WRITE + # + SDK_STATIC_DATA_START =.; + #:::::::::: data + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + SDK_OVERLAY_DIGEST =.; + # NO DIGEST + SDK_OVERLAY_DIGEST_END =.; + #:::::::::: data + . = ALIGN(32); + SDK_STATIC_DATA_END =.; + SDK_STATIC_END =.; + + SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START; + SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START; + SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; + __sinit__ = SDK_STATIC_SINIT_START; # for static initializer + __exception_table_start__ = SDK_STATIC_ETABLE_START; # for exception table + __exception_table_end__ = SDK_STATIC_ETABLE_END; # for exception table + } > + + ..bss: + { + ALIGNALL(4); . = ALIGN(32); + + + SEARCH_SYMBOL ; + + + # + # BSS BLOCK + # + SDK_STATIC_BSS_START =.; + #:::::::::: bss + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: bss + . = ALIGN(32); + SDK_STATIC_BSS_END = .; + SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; + + } >> + + + ############################ AUTOLOADS ############################## + SDK_AUTOLOAD.ITCM.START = 0x01ff8000; + SDK_AUTOLOAD.ITCM.END = SDK_AUTOLOAD.ITCM.START; + SDK_AUTOLOAD.ITCM.BSS_END = SDK_AUTOLOAD.ITCM.START; + SDK_AUTOLOAD.ITCM.SIZE = 0; + SDK_AUTOLOAD.ITCM.BSS_SIZE = 0; + SDK_AUTOLOAD.DTCM.START = 0x027e0000; + SDK_AUTOLOAD.DTCM.END = SDK_AUTOLOAD.DTCM.START; + SDK_AUTOLOAD.DTCM.BSS_END = SDK_AUTOLOAD.DTCM.START; + SDK_AUTOLOAD.DTCM.SIZE = 0; + SDK_AUTOLOAD.DTCM.BSS_SIZE = 0; + SDK_AUTOLOAD_START = SDK_STATIC_END; + SDK_AUTOLOAD_SIZE = 0; + SDK_AUTOLOAD_NUMBER = ; + + + .: + { + ALIGNALL(4); . = ALIGN(32); + + + SEARCH_SYMBOL ; + + + # + # TEXT BLOCK: READ ONLY + # + SDK_AUTOLOAD__ID =; + SDK_AUTOLOAD..ID =; + SDK_AUTOLOAD..START =.; + SDK_AUTOLOAD..TEXT_START =.; + #:::::::::: text/rodata + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: text/rodata + SDK_AUTOLOAD..TEXT_END =.; + + # + # DATA BLOCK: READ WRITE BLOCK + # + SDK_AUTOLOAD..DATA_START =.; + #:::::::::: data + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: data + . = ALIGN(32); + SDK_AUTOLOAD..DATA_END =.; + SDK_AUTOLOAD..END =.; + + SDK_AUTOLOAD..TEXT_SIZE = SDK_AUTOLOAD..TEXT_END - SDK_AUTOLOAD..TEXT_START; + SDK_AUTOLOAD..DATA_SIZE = SDK_AUTOLOAD..DATA_END - SDK_AUTOLOAD..DATA_START; + SDK_AUTOLOAD..SIZE = SDK_AUTOLOAD..END - SDK_AUTOLOAD..START; + SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD..SIZE; + + } > + + ..bss: + { + ALIGNALL(4); . = ALIGN(32); + + + SEARCH_SYMBOL ; + + + # + # BSS BLOCK + # + SDK_AUTOLOAD..BSS_START = .; + #:::::::::: bss + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: bss + . = ALIGN(32); + SDK_AUTOLOAD..BSS_END = .; + + SDK_AUTOLOAD..BSS_SIZE = SDK_AUTOLOAD..BSS_END - SDK_AUTOLOAD..BSS_START; + + } >> + + + + SDK_AUTOLOAD_ITCM_START = SDK_AUTOLOAD.ITCM.START; + SDK_AUTOLOAD_ITCM_END = SDK_AUTOLOAD.ITCM.END; + SDK_AUTOLOAD_ITCM_BSS_END = SDK_AUTOLOAD.ITCM.BSS_END; + SDK_AUTOLOAD_ITCM_SIZE = SDK_AUTOLOAD.ITCM.SIZE; + SDK_AUTOLOAD_ITCM_BSS_SIZE = SDK_AUTOLOAD.ITCM.BSS_SIZE; + SDK_AUTOLOAD_DTCM_START = SDK_AUTOLOAD.DTCM.START; + SDK_AUTOLOAD_DTCM_END = SDK_AUTOLOAD.DTCM.END; + SDK_AUTOLOAD_DTCM_BSS_END = SDK_AUTOLOAD.DTCM.BSS_END; + SDK_AUTOLOAD_DTCM_SIZE = SDK_AUTOLOAD.DTCM.SIZE; + SDK_AUTOLOAD_DTCM_BSS_SIZE = SDK_AUTOLOAD.DTCM.BSS_SIZE; + + ############################ AUTOLOAD_INFO ########################## + .binary.AUTOLOAD_INFO: + { + + WRITEW ADDR(.); + WRITEW SDK_AUTOLOAD..SIZE; + WRITEW SDK_AUTOLOAD..BSS_SIZE; + + } > binary.AUTOLOAD_INFO + + SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE; + SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); + SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); + + ############################ STATIC_FOOTER ########################## + .binary.STATIC_FOOTER: + { + WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE + WRITEW _start_ModuleParams - ADDR(.); + WRITEW 0; # NO DIGEST + } > binary.STATIC_FOOTER + + ############################ OVERLAYS ############################### + SDK_OVERLAY_NUMBER = ; + + + .: + { + ALIGNALL(4); . = ALIGN(32); + + + SEARCH_SYMBOL ; + + + # + # TEXT BLOCK: READ ONLY + # + SDK_OVERLAY__ID =; ### SEGMENT OVERLAY ID + SDK_OVERLAY..ID =; + SDK_OVERLAY..START =.; + SDK_OVERLAY..TEXT_START =.; + #:::::::::: text/rodata + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + SDK_OVERLAY..SINIT_START =.; + #:::::::::: ctor + + + + + + + + + + + + + WRITEW 0; + #:::::::::: ctor + SDK_OVERLAY..SINIT_END =.; + + #:::::::::: text/rodata + . = ALIGN(32); + SDK_OVERLAY..TEXT_END =.; + + # + # DATA BLOCK: READ WRITE + # + SDK_OVERLAY..DATA_START =.; + #:::::::::: data + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: data + . = ALIGN(32); + SDK_OVERLAY..DATA_END =.; + SDK_OVERLAY..END =.; + + SDK_OVERLAY..TEXT_SIZE = SDK_OVERLAY..TEXT_END - SDK_OVERLAY..TEXT_START; + SDK_OVERLAY..DATA_SIZE = SDK_OVERLAY..DATA_END - SDK_OVERLAY..DATA_START; + SDK_OVERLAY..SIZE = SDK_OVERLAY..END - SDK_OVERLAY..START; + + } > + + ..bss: + { + ALIGNALL(4); . = ALIGN(32); + + + SEARCH_SYMBOL ; + + + # + # BSS BLOCK + # + SDK_OVERLAY..BSS_START = .; + #:::::::::: bss + + + + + + + . = ALIGN(4); + + + + + + + . = ALIGN(4); + #:::::::::: bss + . = ALIGN(32); + SDK_OVERLAY..BSS_END = .; + + SDK_OVERLAY..BSS_SIZE = SDK_OVERLAY..BSS_END - SDK_OVERLAY..BSS_START; + + } >> + + + + ############################ MAIN EX ################################## + # MAIN EX Area + .dummy.MAIN_EX: + { + . = ALIGN(32); + } > dummy.MAIN_EX + + ############################ ARENA ################################## + .arena.MAIN: + { + . = ALIGN(32); + SDK_SECTION_ARENA_START =.; + } > arena.MAIN + + .arena.MAIN_EX: + { + . = ALIGN(32); + SDK_SECTION_ARENA_EX_START =.; + } > arena.MAIN_EX + + .arena.ITCM: + { + . = ALIGN(32); + SDK_SECTION_ARENA_ITCM_START =.; + } > arena.ITCM + + .arena.DTCM: + { + . = ALIGN(32); + SDK_SECTION_ARENA_DTCM_START =.; + } > arena.DTCM + + ############################ OVERLAYDEFS ############################ + .: + { + ### module information + WRITEW ADDR(.); # load address + WRITEW _start; # entry address + WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; # size of module + WRITEW _start_AutoloadDoneCallback; # callback autoload done + + ### overlay filename + + WRITES (""); # Overlay + + + } > + + + ############################ OVERLAYTABLE ########################### + .: + { + + # Overlay + WRITEW ; # overlay ID + WRITEW ADDR(.); # load address + WRITEW SDK_OVERLAY..SIZE; # size of module + WRITEW SDK_OVERLAY..BSS_SIZE; # size of bss + WRITEW SDK_OVERLAY..SINIT_START; # start address of static init + WRITEW SDK_OVERLAY..SINIT_END; # end address of static init + WRITEW ; # ROM file ID + WRITEW 0; # Reserved + + + + } > + + + ############################ OTHERS ################################# + SDK_MAIN_ARENA_LO = SDK_SECTION_ARENA_START; + SDK_IRQ_STACKSIZE = ; # allocated in DTCM + SDK_SYS_STACKSIZE = ; # when 0 means all remains of DTCM + + # Module filelist + .binary.MODULE_FILES: + { + WRITES (""); + WRITES (""); + WRITES (""); + } > binary.MODULE_FILES + + # ITCM/DTCM size checker => check AUTOLOAD_ITCM/DTCM + .check.ITCM: + { + . = . + SDK_AUTOLOAD_ITCM_SIZE + SDK_AUTOLOAD_ITCM_BSS_SIZE; + + . = . + SDK_OVERLAY..SIZE + SDK_OVERLAY..BSS_SIZE; + + } > check.ITCM + + SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; + .check.DTCM: + { + . = . + SDK_AUTOLOAD_DTCM_SIZE + SDK_AUTOLOAD_DTCM_BSS_SIZE; + + . = . + SDK_OVERLAY..SIZE + SDK_OVERLAY..BSS_SIZE; + + . = . + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; + } > check.DTCM + +} diff --git a/include/twl/specfiles/ARM9-TS.lsf b/include/twl/specfiles/ARM9-TS.lsf new file mode 100644 index 0000000..531983c --- /dev/null +++ b/include/twl/specfiles/ARM9-TS.lsf @@ -0,0 +1,77 @@ +#---------------------------------------------------------------------------- +# Project: NitroSDK - include +# File: ARM9-TS.lsf +# +# Copyright 2003-2005 Nintendo. All rights reserved. +# +# These coded insructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Log: ARM9-TS.lsf,v $ +# Revision 1.12 2005/04/14 00:04:16 terui +# Update copyright. +# +# Revision 1.11 2005/04/13 12:49:59 terui +# Change Autoload DTCM Address 0x027c0000 -> 0x027e0000 +# +# Revision 1.10 2004/08/18 01:50:09 yasu +# DTCM moves to 0x027c0000 +# +# Revision 1.9 2004/07/26 02:22:32 yasu +# Change DTCM address to 0x023c0000 +# +# Revision 1.8 2004/07/10 12:17:51 yasu +# delete GROUP(ROOT) +# +# Revision 1.7 2004/07/10 04:11:17 yasu +# Add GROUP(xxx) as object group +# +# Revision 1.6 2004/07/01 12:54:38 yasu +# support ITCM/DTCM/WRAM autoload +# +# Revision 1.5 2004/07/01 10:41:46 yasu +# support autoload +# +# Revision 1.4 2004/06/28 10:46:45 yasu +# avoid to use '*' as wildcard +# +# Revision 1.3 2004/06/08 07:46:40 yasu +# move start address 0x02004000 -> 0x02000000 +# +# Revision 1.2 2004/04/14 10:25:09 yasu +# delete LIBRARIES group +# +# Revision 1.1 2004/04/06 01:59:54 yasu +# newly added +# +# $NoKeywords: $ +#---------------------------------------------------------------------------- +# +# Nitro LCF SPEC FILE +# + +Static $(TARGET_NAME) +{ + Address 0x02000000 + Object $(OBJS_STATIC) + Library $(LLIBS) $(GLIBS) $(CW_LIBS) +} + +Autoload ITCM +{ + Address 0x01ff8000 + Object * (.itcm) + Object $(OBJS_AUTOLOAD) (.text) +} + +Autoload DTCM +{ + Address 0x027e0000 + Object * (.dtcm) + Object $(OBJS_AUTOLOAD) (.data) + Object $(OBJS_AUTOLOAD) (.bss) +} + diff --git a/include/twl/vlink.h b/include/twl/vlink.h new file mode 100644 index 0000000..7ec9162 --- /dev/null +++ b/include/twl/vlink.h @@ -0,0 +1,86 @@ +#ifndef TWL_VLINK_H_ +#define TWL_VLINK_H_ + +#ifndef _IOREAD +#define _IOREAD 0x01 +#define _IOWRITE 0x02 +#define _IORW 0x04 +#define _IOEOF 0x08 +#define _IOFLUSH 0x10 +#define _IOERR 0x20 +#define _IOSTRING 0x40 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +void vlinkInit(void); + +struct ffblk { + char ff_reserved[23]; + char ff_attrib; + unsigned short ff_ftime; + unsigned short ff_fdate; + struct { + unsigned short low,high; + } ff_fsize; + char ff_name[255+1]; +}; + +typedef struct { +unsigned year; +unsigned mon; +unsigned day; +unsigned hour; +unsigned min; +unsigned sec; +unsigned msec; +} Vlink_dos_time; + +int vlink_dos_put_console(char c); +int vlink_dos_putstring_console(char *str,int size); +int vlink_dos_stat_console(void); +int vlink_dos_get_console(void); +int vlink_dos_open(char *fname,int mode); +int vlink_dos_creat(char *fname,int mode); +int vlink_dos_read(int fd,char *buf,int size); +int vlink_dos_write(int fd,char *buf,int size); +int vlink_dos_close(int fd); +int vlink_dos_lseek(int fd,int ofs,int pos); +int vlink_dos_file_mode(char *fname,int mode,int action); +int vlink_dos_set_dta(struct ffblk *fbp); +int vlink_dos_find_first(char *fname,unsigned attrib); +int vlink_dos_find_next(void); +int vlink_dos_find_close(void); +int vlink_dos_get_ioctl(int fd); +int vlink_dos_get_file_time(int fd,unsigned short *timep); +int vlink_dos_get_time(Vlink_dos_time *dtp); +int vlink_dos_set_file_time(int fd,unsigned short *timep); +int vlink_dos_mkdir(char *path); +int vlink_dos_rmdir(char *path); +int vlink_dos_remove(char *fname); +int vlink_dos_rename(char *old,char *new); +int vlink_dos_getcwd(char *path,int drvno); +int vlink_dos_chdir(char *path); +int vlink_dos_getcdrv(void); +int vlink_dos_dup(int fd); +int vlink_dos_dup2(int oldfd,int newfd); +int vlink_dos_version(void); +int vlink_dos_exit(int retcode); +int vlink_dos_sleep(int ms); + +int vlinkRead_VIO_pt(void *dramAddr, int nbytes); +int vlinkWrite_VIO_pt(void *dramAddr,int nbytes); + +int i_vlink_init_osemu(void); + +void vlink_dos_printf(const char *text, ...); +void vlink_dos_fprintf(int fd, const char *text, ...); + + +#ifdef __cplusplus +} +#endif + +#endif // TWL_VLINK_H_ diff --git a/include/twl_sp.h b/include/twl_sp.h new file mode 100644 index 0000000..666a97b --- /dev/null +++ b/include/twl_sp.h @@ -0,0 +1,22 @@ +/*---------------------------------------------------------------------------* + Project: TwlSDK - include + File: twl_sp.h + + Copyright 2007 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: $ + $NoKeywords: $ + *---------------------------------------------------------------------------*/ +#ifndef SDK_ARM7 +#define SDK_ARM7 +#endif +#ifdef SDK_ARM9 +#undef SDK_ARM9 +#endif +#include diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..52751c8 --- /dev/null +++ b/readme.txt @@ -0,0 +1,5 @@ +ビルドするには NitroSDK が必要です。 + +下記の環境変数を設定してください。 +例)TWLSDK_ROOT=c:/TwlSDK + diff --git a/tools/axd/ARM7.ses b/tools/axd/ARM7.ses new file mode 100644 index 0000000..1853f94 --- /dev/null +++ b/tools/axd/ARM7.ses @@ -0,0 +1,304 @@ +[CLI] +dwParse=1 +dwEcho=1 +dwUpdate=1 +dwHistorySize=16 +dwInstructionSize=1 +dwMemBytes=32 +dwMemSize=0 +dwStepSize=0 +Format=hex +FormatPar=-1 +dwLogFile=0 +dwRecordFile=0 +[Console] +dwLogStatus=0 +dwReadStatus=0 +[Control] +dwActiveTab=0 +[DebugEnvironment] +biDebugEnvironment=EECEFEDDABAAAAAABAAAAAAADEKDMFAFCHPGHGCHBGNGACGEJGMGFGDHMFBECFNEMFNEFHMGEHJGNCJEDEFEMFNEFHMGEHJGNCJEDEFEOCEGMGMGAANEFHMGEHJGNCJEDEFEAADCFJBAAAAANEFFMEEFJENCJEDEFEPFEECFJEGFFECFADPFOEBENEFENDBECFNEHDEFEENEJENAKANEFFMEEFJENCJEDEFEPFDEPEOEOEFEDEEFJEPEOEPFOEBENEFENDNAKANEFFMEEFJENCJEDEFEPFDFFECFGFFECFPFMEPEDEBEEFJEPEOENDMGPGDGBGMGIGPGDHEHNAKANEFFMEEFJENCJEDEFEPFEEMEMEPFDFFEEFEFJEOEHEDFNDADNAKAEFBECFHEFEEFPFEEJECFNDDEKDMFAFCHPGHGCHBGNGACGEJGMGFGDHMFBECFNEMFNEFHMGEHJGNCJEDEFENAKANEFFMEEFJENCJEDEFEPFIEBEOEEEMEFECFCEBEDFFEBEEEEECFNDGEGEADADADADADADNAKANEFFMEEFJENCJEDEFEPFDEMEFEBEOEDEPEEEFEBEEEEECFNDADADADADADADFDADNAKAEFCFBEDEFEEEMEMEPFEFCFBEDEFEDEPEOEEFCFPEMEMEJEDFEFJEEFFENEADNDNAKAEFCFBEDEFEEEMEMEPFEFCFBEDEFEDEPEOEEFCFPEMEOEBENEFENDNAKADEPEOEEFCFPEMEMEFECFPFCFEEJEGFFECFDFJEPEOENDBDFDBDNAKANEFFMEEFJENCJEDEFEPFIFDFIEPEEFAFMEFFHEHEJEOEHEFEOEBECEMEFEEENDEFCFFFFENAKACEJFEFFEDFFEIFNDMEJGEHEHMGFGNAKANEFFMEEFJENCJEDEFEPFEFBEAFADPFAFPEDFJEEFJEPEOENDBDNAKADCDCDC +[DebugInternals] +dwActiveTab=0 +[DebugInternals\InternalVariables] +dwRefresh=1 +[Docking] +biBarID_0=AMAAAAAABJAAAAAAAMAAAAAAIEAAAAAAAMAAAAAAACBAAAAAOPPPPPPPMEAAAAAAAAAAAAAAAAPBAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biBarID_4=AMAAAAAABJAAAAAAJLDAAAAABJAAAAAAMGAAAAAAAIAAAAAAOPPPPPPPJACAAAAAAAAAAAAAAAPIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biBarID_65539=LCCAAAAAKJBAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAABACAAAAAFOCAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biBarID_1114115=GHBAAAAAPNAAAAAAJMCAAAAABJAAAAAAMGAAAAAAAIAAAAAAPCBAAAAADPBAAAAACAAAAAAABAPCMKBABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biBarID_65538=LMAAAAAAIGBAAAAAAMAAAAAAIEAAAAAAAMAAAAAAICAAAAAANCFAAAAADJAAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biBarID_1=AMAAAAAABJAAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAAOPPPPPPPCHBAAAAAAAAAAAAAAAPIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biBarID_65540=IMBAAAAADIBAAAAAILDAAAAAIEAAAAAAAMAAAAAAEMAAAAAAHHEAAAAAPLCAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biBarID_7=HIBAAAAABJAAAAAAJLDAAAAABJAAAAAAMGAAAAAAAIAAAAAALHDAAAAAOLBAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biBarID_6=AMAAAAAABJAAAAAAAMAAAAAAIEAAAAAAAMAAAAAAICAAAAAAOPPPPPPPMBAAAAAAAAAAAAAAAAPBAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biBarID_65543=AMAAAAAABJAAAAAAJLDAAAAABJAAAAAAMGAAAAAAAIAAAAAAOPPPPPPPCHBAAAAAAAAAAAAAAAPIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +[Docking\OpenStates] +biBarID_0=BAAAAAAA +biBarID_4=BAAAAAAA +biBarID_6=BAAAAAAA +biBarID_7=BAAAAAAA +biBarID_65538=BAAAAAAA +biBarID_65539=BAAAAAAA +biBarID_65540=BAAAAAAA +biBarID_65543=BAAAAAAA +[Images\Image_0] +Filename=C:\twl\twlsdk_bak\build\tests\os\_ARM7-alarm-2\bin\ARM7-TS\Release\main.axf +Processor=ARM7TDMI_1 +dwProfileState=0 +[Interface\AutoRefresh] +dwEnabled=0 +dwInterval=100 +dwTerminateOnSuspend=0 +[Interface\Formatting] +dwDecIsUser=0 +DecFormat=%d +dwHexIsUser=0 +HexFormat=%0X +dwFloatIsUser=0 +FloatFormat=%.7g +dwDbleIsUser=0 +DbleFormat=%.10g +dwQ15IsUser=0 +Q15Format=%.6g +dwQ31IsUser=0 +Q31Format=%.12g +dwArrayThreshold=16 +[Interface\General] +dwTarget Connection=1 +dwReport All Warnings=0 +dwReport Exceptions=1 +[Interface\SessionFiles] +dwReselect Target=1 +dwReload Images=0 +dwRun Config Script=0 +Config Script Name=D:\Iris\geometry\geometry.ses +[Interface\Toolbars] +dwTBFile=1 +dwTBSearch=1 +dwTBExecute=1 +dwTBSystemView=1 +dwTBProcView=1 +dwTBHelp=1 +[Interface\Views] +biDefault Fixed Font=EPPPPPPPAAAAAAAAAAAAAAAAAAAAAAAAAJBAAAAAAAAAAAAADACABABBCIMGCICHACGJOLCJJKAAHHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biDefault General Font=EPPPPPPPAAAAAAAAAAAAAAAAAAAAAAAAAJBAAAAAAAAAAAAADACABABBCIMGCICHACGJOLCJJKAACHJGGGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +dwTab Size=4 +dwInterleave=0 +dwShow Line Numbers=1 +dwShow Margin=1 +dwShow Tooltips=1 +dwInitViewState=0 +[MainWnd] +biWndPlacement=MCAAAAAAAAAAAAAABAAAAAAAPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPMBCAAAAAMCAAAAAANNFAAAAAFADAAAAA +[Memory] +dwActiveTab=0 +dwApplyToAllTabs=0 +[Memory\Tab_0] +dwStartAddress=58687488 +Format=hex_noprefix_32 +dwFormatID=-1 +dwListBigEndian=0 +dwDisplayOffset=0 +dwPageSize=1024 +dwListSize=4 +dwTargetAccessSize=0 +dwAutoRefresh=1 +[Memory\Tab_1] +dwStartAddress=58720256 +Format=hex_noprefix_32 +dwFormatID=-1 +dwListBigEndian=0 +dwDisplayOffset=0 +dwPageSize=1024 +dwListSize=4 +dwTargetAccessSize=0 +dwAutoRefresh=1 +[Memory\Tab_2] +dwStartAddress=41811968 +Format=hex_noprefix_32 +dwFormatID=-1 +dwListBigEndian=0 +dwDisplayOffset=0 +dwPageSize=1024 +dwListSize=4 +dwTargetAccessSize=0 +dwAutoRefresh=1 +[Memory\Tab_3] +dwStartAddress=67108864 +Format=hex_noprefix_32 +dwFormatID=-1 +dwListBigEndian=0 +dwDisplayOffset=0 +dwPageSize=1024 +dwListSize=4 +dwTargetAccessSize=0 +dwAutoRefresh=1 +[Memory1] +dwActiveTab=1 +dwApplyToAllTabs=0 +[Memory1\Tab_0] +dwStartAddress=58687488 +Format=hex_noprefix_32 +dwFormatID=-1 +dwListBigEndian=0 +dwDisplayOffset=0 +dwPageSize=1024 +dwListSize=4 +dwTargetAccessSize=0 +dwAutoRefresh=1 +[Memory1\Tab_1] +dwStartAddress=58720256 +Format=hex_noprefix_32 +dwFormatID=-1 +dwListBigEndian=0 +dwDisplayOffset=0 +dwPageSize=1024 +dwListSize=4 +dwTargetAccessSize=0 +dwAutoRefresh=1 +[Memory1\Tab_2] +dwStartAddress=41811968 +Format=hex_noprefix_32 +dwFormatID=-1 +dwListBigEndian=0 +dwDisplayOffset=0 +dwPageSize=1024 +dwListSize=4 +dwTargetAccessSize=0 +dwAutoRefresh=1 +[Memory1\Tab_3] +dwStartAddress=67108864 +Format=hex_noprefix_32 +dwFormatID=-1 +dwListBigEndian=0 +dwDisplayOffset=0 +dwPageSize=1024 +dwListSize=4 +dwTargetAccessSize=0 +dwAutoRefresh=1 +[Output] +dwActiveTab=0 +[ProcessorRegisters\ARM7TDMI_1] +dwFormatID=-1 +dwRefresh=0 +[ProcessorRegisters\ARM7_1] +dwFormatID=-1 +dwRefresh=1 +[ProcessorRegisters\ARM9_0] +dwFormatID=-1 +dwRefresh=1 +[RecentFileList] +dwFileCount=4 +[RecentImageList] +File_1=C:\twl\twlsdk_bak\build\tests\os\_ARM7-alarm-2\bin\ARM7-TS\Release\main.axf +File_2=D:\IrisSubp\IrisSubpMon\IrisSubpMon_Data\ThumbRelease\IrisSubpMon.axf +File_3=D:\Iris\IrisMon\IrisMon_Data\ThumbRelease\IrisMon.axf +File_4=D:\Iris\IrisMon\IrisMon_Data\ThumbDebugRel\IrisMon.axf +dwFileCount=4 +[RecentSymbolsList] +dwFileCount=4 +[Target\ARM7TDMI_1] +dwMode=1 +dwCommsChannel=0 +dwArmSWI=1193046 +dwThumbSWI=171 +dwSHVector=8 +dwDCCSHVector=458752 +dwECVector=26 +dwTopOfMemory=524288 +dwTopOfMemoryExists=1 +[ToolBars\ToolBarID-Bar0] +dwBarID=59419 +dwBars=12 +dwBar#0=0 +dwBar#1=171 +dwBar#2=173 +dwBar#3=175 +dwBar#4=179 +dwBar#5=177 +dwBar#6=128 +dwBar#7=65543 +dwBar#8=65538 +dwBar#9=65539 +dwBar#10=65540 +dwBar#11=0 +[ToolBars\ToolBarID-Bar1] +dwBarID=59422 +dwBars=4 +dwBar#0=0 +dwBar#1=7 +dwBar#2=4 +dwBar#3=0 +[ToolBars\ToolBarID-Bar2] +dwBarID=59420 +dwBars=3 +dwBar#0=0 +dwBar#1=6 +dwBar#2=0 +[ToolBars\ToolBarID-Bar3] +dwBarID=59423 +dwHorz=1 +dwFloating=1 +dwXPos=895 +dwYPos=466 +dwBars=3 +dwBar#0=0 +dwBar#1=7 +dwBar#2=0 +[ToolBars\ToolBarID-Bar4] +dwBarID=59423 +dwHorz=1 +dwFloating=1 +dwXPos=1329 +dwYPos=167 +dwBars=3 +dwBar#0=0 +dwBar#1=2 +dwBar#2=0 +[ToolBars\ToolBarID-Bar5] +dwBarID=59423 +dwHorz=1 +dwFloating=1 +dwXPos=517 +dwYPos=761 +dwBars=3 +dwBar#0=0 +dwBar#1=3 +dwBar#2=0 +[ToolBars\ToolBarID-Bar6] +dwBarID=59423 +dwHorz=1 +dwFloating=1 +dwXPos=1147 +dwYPos=723 +dwBars=3 +dwBar#0=0 +dwBar#1=4 +dwBar#2=0 +[ToolBars\ToolBarID-Summary] +dwBars=7 +dwScreenCX=1600 +dwScreenCY=1200 +[Variables] +dwActiveTab=2 +[Variables\Tab_0] +dwFormatID=-1 +dwRefresh=1 +[Variables\Tab_1] +dwFormatID=-1 +dwRefresh=1 +[Variables\Tab_2] +dwFormatID=-1 +dwRefresh=1 +[Views] +dwLastView=0 +[Views\View_0] +UnitName=ARM7TDMI_1 +ImageName=C:\twl\twlsdk_bak\build\tests\os\_ARM7-alarm-2\bin\ARM7-TS\Release\main.axf +dwDisassembly=0 +FileName=C:\twl\twlsdk_bak\build\libraries\init\ARM7\crt0.c +dwMixedView=0 +dwShowMargin=1 +dwShowLineNumbers=1 +biWndPlacement=MCAAAAAAAAAAAAAABAAAAAAAPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPAAAAAAAAAAAAAAAADICAAAAAONAAAAAA diff --git a/tools/axd/ARM9.ses b/tools/axd/ARM9.ses new file mode 100644 index 0000000..71992c7 --- /dev/null +++ b/tools/axd/ARM9.ses @@ -0,0 +1,253 @@ +[CLI] +dwParse=1 +dwEcho=1 +dwUpdate=1 +dwHistorySize=16 +dwInstructionSize=1 +dwMemBytes=32 +dwMemSize=0 +dwStepSize=0 +Format=hex +FormatPar=-1 +dwLogFile=0 +dwRecordFile=0 +[Control] +dwActiveTab=0 +[DebugEnvironment] +biDebugEnvironment=EECEFEDDABAAAAAABAAAAAAADEKDMFAFCHPGHGCHBGNGACGEJGMGFGDHMFBECFNEMFNEFHMGEHJGNCJEDEFEMFNEFHMGEHJGNCJEDEFEOCEGMGMGAANEFHMGEHJGNCJEDEFEAADCGJBAAAAACEJFEFFEDFFEIFNDMEJGEHEHMGFGNAKANEFFMEEFJENCJEDEFEPFDEPEOEOEFEDEEFJEPEOEPFOEBENEFENDNAKANEFFMEEFJENCJEDEFEPFDFFECFGFFECFPFMEPEDEBEEFJEPEOENDMGPGDGBGMGIGPGDHEHNAKANEFFMEEFJENCJEDEFEPFEEMEMEPFDFFEEFEFJEOEHEDFNDADNAKAEFBECFHEFEEFPFEEJECFNDDEKDMFAFCHPGHGCHBGNGACGEJGMGFGDHMFBECFNEMFNEFHMGEHJGNCJEDEFENAKANEFFMEEFJENCJEDEFEPFIEBEOEEEMEFECFCEBEDFFEBEEEEECFNDGEGEADADADADADADNAKANEFFMEEFJENCJEDEFEPFDEMEFEBEOEDEPEEEFEBEEEEECFNDADADADADADADFDADNAKAEFCFBEDEFEEEMEMEPFEFCFBEDEFEDEPEOEEFCFPEMEMEJEDFEFJEEFFENEADNDNAKAEFCFBEDEFEEEMEMEPFEFCFBEDEFEDEPEOEEFCFPEMEOEBENEFENDNAKADEPEOEEFCFPEMEMEFECFPFCFEEJEGFFECFDFJEPEOENDBDFDBDNAKANEFFMEEFJENCJEDEFEPFIFDFIEPEEFAFMEFFHEHEJEOEHEFEOEBECEMEFEEENDEFCFFFFENAKANEFFMEEFJENCJEDEFEPFEECFJEGFFECFADPFOEBENEFENDBECFNEJDEDGDFENCDFNAKANEFFMEEFJENCJEDEFEPFEFBEAFADPFAFPEDFJEEFJEPEOENDADNAKADCDC +[DebugInternals] +dwActiveTab=0 +[DebugInternals\InternalVariables] +dwRefresh=1 +[Docking] +biBarID_0=AMAAAAAABJAAAAAAAMAAAAAAIEAAAAAAAMAAAAAAHLBAAAAAOPPPPPPPMEAAAAAAAAAAAAAAAAPBAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biBarID_4=AMAAAAAABJAAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAAOPPPPPPPJACAAAAAAAAAAAAAAAPIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biBarID_65539=LCCAAAAAKJBAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAAOHCAAAAAPFCAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biBarID_1114115=AMAAAAAABJAAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAAOPPPPPPPJACAAAAAAAAAAAAAAAPIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biBarID_65538=BEBAAAAAIGBAAAAAAMAAAAAAIEAAAAAAAMAAAAAAICAAAAAAJDAAAAAAGKBAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biBarID_1=AMAAAAAABJAAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAAOPPPPPPPCHBAAAAAAAAAAAAAAAPIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biBarID_65540=JCBAAAAAEKBAAAAAAMAAAAAAIEAAAAAAAMAAAAAAMGAAAAAALEDAAAAADHBAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biBarID_7=MFBAAAAAIKAAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAADFDAAAAAEGCAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biBarID_6=AMAAAAAABJAAAAAAAMAAAAAAIEAAAAAAAMAAAAAAICAAAAAAOPPPPPPPMBAAAAAAAAAAAAAAAAPBAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +[Docking\OpenStates] +biBarID_0=BAAAAAAA +biBarID_4=BAAAAAAA +biBarID_6=BAAAAAAA +biBarID_7=BAAAAAAA +biBarID_65538=BAAAAAAA +biBarID_65539=BAAAAAAA +biBarID_65540=BAAAAAAA +[Images\Image_0] +Filename=C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\alerm.axf +Processor=ARM946E_S_0 +dwProfileState=0 +[Interface\AutoRefresh] +dwEnabled=0 +dwInterval=100 +dwTerminateOnSuspend=0 +[Interface\Formatting] +dwDecIsUser=0 +DecFormat=%d +dwHexIsUser=0 +HexFormat=%0X +dwFloatIsUser=0 +FloatFormat=%.7g +dwDbleIsUser=0 +DbleFormat=%.10g +dwQ15IsUser=0 +Q15Format=%.6g +dwQ31IsUser=0 +Q31Format=%.12g +dwArrayThreshold=16 +[Interface\General] +dwTarget Connection=1 +dwReport All Warnings=0 +dwReport Exceptions=1 +[Interface\SessionFiles] +dwReselect Target=1 +dwReload Images=0 +dwRun Config Script=0 +Config Script Name=C:\Iris\geometry\geometry.ses +[Interface\Toolbars] +dwTBFile=1 +dwTBSearch=1 +dwTBExecute=1 +dwTBSystemView=1 +dwTBProcView=1 +dwTBHelp=1 +[Interface\Views] +biDefault Fixed Font=EPPPPPPPAAAAAAAAAAAAAAAAAAAAAAAAAJBAAAAAAAAAAAAADACABABBCIMGCICHACGJOLCJJKAAHHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biDefault General Font=EPPPPPPPAAAAAAAAAAAAAAAAAAAAAAAAAJBAAAAAAAAAAAAADACABABBCIMGCICHACGJOLCJJKAACHJGGGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +dwTab Size=4 +dwInterleave=0 +dwShow Line Numbers=1 +dwShow Margin=1 +dwShow Tooltips=1 +dwInitViewState=0 +[MainWnd] +biWndPlacement=MCAAAAAAAAAAAAAABAAAAAAAPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPEJAAAAAANKAAAAAAEFEAAAAAGIDAAAAA +[Memory] +dwActiveTab=1 +dwApplyToAllTabs=0 +[Memory\Tab_0] +dwStartAddress=33570560 +Format=hex_noprefix_32 +dwFormatID=-1 +dwListBigEndian=0 +dwDisplayOffset=0 +dwPageSize=1024 +dwListSize=4 +dwTargetAccessSize=0 +dwAutoRefresh=1 +[Memory\Tab_1] +dwStartAddress=41940992 +Format=hex_noprefix_32 +dwFormatID=-1 +dwListBigEndian=0 +dwDisplayOffset=0 +dwPageSize=1024 +dwListSize=4 +dwTargetAccessSize=0 +dwAutoRefresh=1 +[Memory\Tab_2] +dwStartAddress=41942016 +Format=hex_noprefix_32 +dwFormatID=-1 +dwListBigEndian=0 +dwDisplayOffset=0 +dwPageSize=1024 +dwListSize=4 +dwTargetAccessSize=0 +dwAutoRefresh=1 +[Memory\Tab_3] +dwStartAddress=67108864 +Format=hex_noprefix_32 +dwFormatID=-1 +dwListBigEndian=0 +dwDisplayOffset=0 +dwPageSize=1024 +dwListSize=4 +dwTargetAccessSize=0 +dwAutoRefresh=1 +[Output] +dwActiveTab=0 +[ProcessorRegisters\ARM946E_S_0] +dwFormatID=-1 +dwRefresh=0 +[ProcessorRegisters\ARM9_0] +dwFormatID=-1 +dwRefresh=1 +[RecentFileList] +dwFileCount=4 +[RecentImageList] +File_1=C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\alerm.axf +File_2=C:\Iris\IrisMon\IrisMon_Data\ThumbRelease\IrisMon.axf +File_3=C:\Iris\ipl2_test\ipl2_test_Data\ThumbDebugRel\ipl2_test.axf +File_4=C:\Iris\two_quads\two_quads_Data\ThumbDebugRel\two_quads.axf +dwFileCount=4 +[RecentSymbolsList] +File_1=C:\IrisSubp\IrisSubpMon\IrisSubpMon_Data\ThumbRelease\IrisSubpMon.axf +dwFileCount=4 +[Target\ARM946E_S_0] +dwMode=1 +dwCommsChannel=0 +dwArmSWI=1193046 +dwThumbSWI=171 +dwSHVector=-65528 +dwDCCSHVector=458752 +dwECVector=27 +dwTopOfMemory=524288 +dwTopOfMemoryExists=1 +[ToolBars\ToolBarID-Bar0] +dwBarID=59419 +dwBars=12 +dwBar#0=0 +dwBar#1=171 +dwBar#2=173 +dwBar#3=175 +dwBar#4=179 +dwBar#5=177 +dwBar#6=128 +dwBar#7=65543 +dwBar#8=65538 +dwBar#9=65539 +dwBar#10=65540 +dwBar#11=0 +[ToolBars\ToolBarID-Bar1] +dwBarID=59422 +dwBars=3 +dwBar#0=0 +dwBar#1=4 +dwBar#2=0 +[ToolBars\ToolBarID-Bar2] +dwBarID=59420 +dwBars=3 +dwBar#0=0 +dwBar#1=6 +dwBar#2=0 +[ToolBars\ToolBarID-Bar3] +dwBarID=59423 +dwHorz=1 +dwFloating=1 +dwXPos=855 +dwYPos=632 +dwBars=3 +dwBar#0=0 +dwBar#1=7 +dwBar#2=0 +[ToolBars\ToolBarID-Bar4] +dwBarID=59423 +dwHorz=1 +dwFloating=1 +dwXPos=61 +dwYPos=442 +dwBars=3 +dwBar#0=0 +dwBar#1=2 +dwBar#2=0 +[ToolBars\ToolBarID-Bar5] +dwBarID=59423 +dwHorz=1 +dwFloating=1 +dwXPos=642 +dwYPos=627 +dwBars=3 +dwBar#0=0 +dwBar#1=3 +dwBar#2=0 +[ToolBars\ToolBarID-Bar6] +dwBarID=59423 +dwHorz=1 +dwFloating=1 +dwXPos=847 +dwYPos=391 +dwBars=3 +dwBar#0=0 +dwBar#1=4 +dwBar#2=0 +[ToolBars\ToolBarID-Summary] +dwBars=7 +dwScreenCX=1600 +dwScreenCY=1200 +[Variables] +dwActiveTab=1 +[Variables\Tab_0] +dwFormatID=-1 +dwRefresh=1 +[Variables\Tab_1] +dwFormatID=-1 +dwRefresh=1 +[Variables\Tab_2] +dwFormatID=-1 +dwRefresh=1 +[Views] +dwLastView=0 +[Views\View_0] +UnitName=ARM946E_S_0 +ImageName=C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\alerm.axf +dwDisassembly=0 +FileName=C:\twl\twlsdk_bak\build\libraries\init\ARM9\crt0.c +dwMixedView=0 +dwShowMargin=1 +dwShowLineNumbers=1 +biWndPlacement=MCAAAAAAAAAAAAAABAAAAAAAPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPAAAAAAAAAAAAAAAAGFCAAAAAJEBAAAAA diff --git a/tools/axd/readme.txt b/tools/axd/readme.txt new file mode 100644 index 0000000..fa78d9c --- /dev/null +++ b/tools/axd/readme.txt @@ -0,0 +1,9 @@ +デスクトップへ AXD-Debugger のショートカットを作成し、 +「リンク先」に下記のように設定すると便利です。 + +ARM9側: + +%ARMBIN_AXD% -nologo -session %TWLSDK_ROOT%/tools/axd/ARM9.ses -debug %TWLSDK_ROOT%/(起動時にロードするaxfファイル) + +ARM7側は -session へ "ARM7.ses" を指定します。 +-debug の代わりに -exec を使用すると起動直後に実行されます。 diff --git a/tools/partner_mlt/core0/JETCTR.CFG b/tools/partner_mlt/core0/JETCTR.CFG new file mode 100644 index 0000000..fd233d0 --- /dev/null +++ b/tools/partner_mlt/core0/JETCTR.CFG @@ -0,0 +1,136 @@ +; ホストインタフェース +; ホストパソコンとPARTNER-CTRを接続するインタフェースの種類やアドレスを設定します。 +; インタフェースの種類はUSB接続かNetwork接続が選択できます。Model10/20はUSB接続のみ。 +; Ex. USB接続の場合(単体) +; PORT ADDRESS USB +; Ex. USB接続の場合(複数台のPARTNER-CTRが同一のPCに接続されている場合) +; PORT ADDRESS USB:本体シリアルナンバー +; 本体底面記載のシリアルナンバーを記述することで機器の選択ができます。 +; Ex. Network接続の場合 +; PORT ADDRESS NET:xxx.xxx.xxx.xxx +; NET: に続けて xxx部分にIPアドレスを記述します。 +; +;PORT ADDRESS USB +;PORT ADDRESS USB:F0100010 +;PORT ADDRESS NET:192.168.1.11 +PORT ADDRESS USB + + +; J_FRQ +; JTAGクロック周波数を設定します。通常はAUTOを設定してください。 +; 周波数のほかに、オプションでTDO信号のサンプルタイミングの指定もできます。 +; Ex. 自動設定の場合 +; J_FRQ AUTO +; Ex. アダプティブモードの場合 +; RTCK信号が配線されている必要があります。JTAGクロック周波数はターゲット +; の状態に応じて自動追従します。 +; J_FRQ ADPT ... 通常設定 +; J_FRQ ADPTX ... SleepなどでRTCKが停止する場合 +; Ex.マニュアル設定 +; J_FRQ 16 ... 16MHz +; J_FRQ 200K,2 ... 200KHz , TDOサンプルモード2(立ち上がりエッジ) +; J_FRQ 50,1 ... 50MHz , TDOサンプルモード1(遅延) +; J_FRQ 6.6,0 ... 6.6MHz , TDOサンプルモード0(立下りエッジ) +; CTRでは、通常 ADPTX を設定してください +;J_FRQ AUTO +;J_FRQ ADPT +;J_FRQ 16,1 +;J_FRQ 8 +;J_FRQ 1 +;J_FRQ 200K +;J_FRQ ADPTX +J_FRQ ADPTX + + +; J_VCC +; JTAG信号の電圧を指定します。1.8V/2.5V/3V/3.3V/5Vのいずれかを設定します。 +; ターゲットCPUのJTAG端子のI/O電源電圧を設定してください。 +; CTRのMG20(メインプロセッサ)では1.8Vを設定 +; CTRのIOP(IOプロセッサ)では3.3Vを設定 +; Ex. +; J_VCC 5 +; J_VCC 3.3 +; J_VCC 3.0 +; J_VCC 2.5 +; J_VCC 1.8 +;J_VCC 3.3 +;J_VCC 1.8 +J_VCC 3.3 + + +; CPU名の指定 +; CTR MG20は 11MPC,0 を設定 +; CTR IOPは 946T,1 を設定 +;CPU CORE 946T,1 +;CPU CORE 11MPC,0 +;CPU CORE 70T,0 +CPU CORE 946T,1 + + +; JTAG chain config +; JTAG カスケード接続情報の設定 +; J_CONFIG チップ数,チップ位置(TDO側=0),IR_lenビット数(TDO側),IR_lenビット数(TDI側) +; 単独で接続されている場合(通常)は、設定しません。 +; CTRでJTAGカスケード接続の場合は以下のように設定します +; ex. J_CONFIG 2,0,0,5 -- カスケード IOP +; ex. J_CONFIG 2,1,4,0 -- カスケード MG20 +;J_CONFIG 2,0,0,5 +;J_CONFIG 2,1,4,0 +;J_CONFIG 2,1,4,0 -- カスケード MG20 +;J_CONFIG 2,1,4,4 +;J_CONFIG 2,0,4,4 +;J_CONFIG 2,0,0,4 +J_CONFIG 2,1,4,0 + + +; CARD_ID +; CARD ROM のIDを設定します。カードのタイプやROM容量の設定です。 +; NTR TYPE1 64Mbit : 0x000007c2 +; NTR TYPE1 128Mbit : 0x00000fc2 +; NTR TYPE1 256Mbit : 0x00001fc2 +; NTR TYPE1 512Mbit : 0x00003fc2 +; NTR TYPE1 1Gbit : 0x00007fc2 +; NTR TYPE1 2Gbit : 0x0000ffc2 +; NTR TYPE1 4Gbit : 0x0000fec2 +; NTR TYPE2 64Mbit : 0x800007c2 +; NTR TYPE2 128Mbit : 0x80000fc2 +; NTR TYPE2 256Mbit : 0x80001fc2 +; NTR TYPE2 512Mbit : 0x80003fc2 +; NTR TYPE2 1Gbit : 0x80007fc2 +; NTR TYPE2 2Gbit : 0x8000ffc2 +; NTR TYPE2 4Gbit : 0x8000fec2 +;CTR_CARD_ID 0x0000ffc2 +;CTR_CARD_ID 0x0000fec2 +CTR_CARD_ID 0x0000ffc2 + + +; CTR RST BOOT mode +; デバッガ起動時と初期化時に、JTAGポートが使用可能になるまでの待ち時間設定 +; ex. CTR_RST_MODE WAIT ... ダイアログメッセージを出して wait +; ex. CTR_RST_MODE NO_SRST ... 初期化時にリセットを行わない +; ex. CTR_RST_MODE 1 ... 1秒の待ち時間設定 +; 通常は 1 を設定 +;CTR_RST_MODE WAIT +;CTR_RST_MODE NO_SRST +;CTR_RST_MODE 1 +;CTR_RST_MODE 0 +CTR_RST_MODE NO_SRST + + +; バーチャルリンク(VLINK)の指定です。 +; VLINK OFF .. バーチャルリンクを使用しません +; VLINK CPU .. JTAGでバーチャルリンクを使用します +;VLINK CPU +;VLINK OFF +VLINK CPU + + +; PARTNERのコマンドでアクセス可能なメモリ領域(最大20領域) +; MAP 開始アドレス,終了アドレス +; PARTNERのコマンドでアクセス可能な範囲を開始アドレスと終了アドレスで指定します。 +; +; EX. MAP 10000000,1000FFFF +; MAP FFF00000,FFFFFFFF +MAP 00000000,ffffffff + + diff --git a/tools/partner_mlt/core0/JETCTR.JPX b/tools/partner_mlt/core0/JETCTR.JPX new file mode 100644 index 0000000..0d2daf7 --- /dev/null +++ b/tools/partner_mlt/core0/JETCTR.JPX @@ -0,0 +1,3370 @@ + + + + + + + [0,193,316,257] + 0 + 4 + [16449488,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,257,316,322] + 0 + 5 + [15269864,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,330,329,397] + 0 + 13 + [15269864,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,396,329,463] + 0 + 11 + [15269864,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,462,329,529] + 0 + 5 + [15269864,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [406,0,632,322] + 0 + 10 + [13172735,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [386,0,498,353] + 0 + 16 + [13172735,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [329,353,441,529] + 0 + 7 + [13172735,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [441,0,553,176] + 0 + 6 + [13172735,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [359,151,438,366] + 0 + 1 + [12319487,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [395,0,474,322] + 0 + 6 + [16769506,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [474,0,632,108] + 0 + 7 + [15264511,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [474,108,632,214] + 0 + 8 + [14015483,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [452,189,604,282] + 0 + 3 + [16511980,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [474,214,632,322] + 0 + 9 + [15856872,2500134,16711680,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [156,429,644,470] + 0 + 0 + [16777215,0,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,214,406,322] + 0 + 12 + [15663102,2500134,16711680,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,406,214] + 0 + 11 + [16774376,2500134,16711680,0] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [717,81,1554,681] + 0 + 0 + [661,1498,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,632,322] + 0 + 0 + [-392634,53347438,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + + [0,193,316,257] + 0 + 4 + [16449488,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,257,316,322] + 0 + 5 + [15269864,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,330,329,397] + 0 + 13 + [15269864,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,396,329,463] + 0 + 11 + [15269864,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,462,329,529] + 0 + 5 + [15269864,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [406,0,632,322] + 0 + 10 + [13172735,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [386,0,498,353] + 0 + 16 + [13172735,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [329,353,441,529] + 0 + 7 + [13172735,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [441,0,553,176] + 0 + 6 + [13172735,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [359,151,438,366] + 0 + 1 + [12319487,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [395,0,474,322] + 0 + 6 + [16769506,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [474,0,632,108] + 0 + 7 + [15264511,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [474,108,632,214] + 0 + 8 + [14015483,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [452,189,604,282] + 0 + 3 + [16511980,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [474,214,632,322] + 0 + 9 + [15856872,2500134,16711680,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [156,429,644,470] + 0 + 0 + [16777215,0,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,214,406,322] + 0 + 12 + [15663102,2500134,16711680,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,406,214] + 0 + 11 + [16774376,2500134,16711680,0] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,800,600] + 0 + 0 + [98,700,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,632,322] + 0 + 0 + [-392634,53347438,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16449488,2500134,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16449488,2500134,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16449488,2500134,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + + + [0,193,316,257] + 0 + 4 + [33792,16777215,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,257,316,322] + 0 + 5 + [65280,0,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,330,329,397] + 0 + 13 + [65280,0,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,396,329,463] + 0 + 11 + [65280,0,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,462,329,529] + 0 + 5 + [65280,0,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [406,0,632,322] + 0 + 10 + [65535,16727552,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [386,0,498,353] + 0 + 16 + [65535,16727552,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [329,353,441,529] + 0 + 7 + [65535,16727552,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [441,0,553,176] + 0 + 6 + [65535,16727552,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [359,151,438,366] + 0 + 1 + [65535,0,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [395,0,474,322] + 0 + 6 + [12639316,0,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [474,0,632,108] + 0 + 7 + [16338,16777215,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [474,108,632,214] + 0 + 8 + [11564800,16777215,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [452,189,604,282] + 0 + 3 + [20224,16777215,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [474,214,632,322] + 0 + 9 + [20224,16777215,16776960,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [156,429,644,470] + 0 + 0 + [16777215,0,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,214,406,322] + 0 + 12 + [0,16777215,16776960,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,406,214] + 0 + 11 + [16711680,16777215,16776960,0] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,800,600] + 0 + 0 + [98,700,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,632,322] + 0 + 0 + [-392634,53347438,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + + + [0,0,759,178] + 0 + 10 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,454,40] + 0 + 1 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,43] + 0 + 13 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,43] + 0 + 11 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,43] + 0 + 5 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,178] + 0 + 9 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,43] + 0 + 16 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,43] + 0 + 7 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,43] + 0 + 6 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,238] + 0 + 4 + [16777215,16711680,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,178] + 0 + 2 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,43] + 0 + 3 + [16777215,16711680,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,77] + 0 + 7 + [16777215,16711680,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,43] + 0 + 6 + [16777215,16711680,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,40] + 0 + 8 + [16777215,16711680,16777088,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,482,24] + 0 + 0 + [16777215,16711680,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,561,178] + 0 + 11 + [16777215,16711680,16776960,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,561,178] + 0 + 12 + [16777215,16711680,16776960,0] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,800,600] + 0 + 0 + [725,1546,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,761,436] + 0 + 0 + [-392634,53347438,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + [0,0,0,0,0] + [0,0,0,0,0] + [0,0,0,0,0] + [0,0,0,0,0] + [0,0,0,0,0] + + [0,317,330,423] + 0 + 8 + [16449488,2500134,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16449488,2500134,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16449488,2500134,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + [0,0,0,0,0] + + + 5724 + [39,80,114,111,102,45,85,73,83,32] + [40,118,46,32,50,46,53,46,49,46] + [48,41,32,99,111,110,116,114,111,108] + [32,98,97,114,32,115,116,97,116,101] + [0,1,5,2,5,2,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,19,55,49,55,44,56] + [49,44,49,53,53,52,44,54,56,49] + [44,49,44,48,2,0,0,0,64,6] + [0,0,-80,4,0,0,19,0,1,-24] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,127,0,0,0,0,0,0] + [0,0,-54,15,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,-70,2,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,61,3,0,0] + [24,0,0,0,4,32,0,0,0,0] + [0,-128,0,0,0,0,0,0,-75,20] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,24,0] + [0,0,72,0,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,24,0] + [0,0,85,0,0,0,50,0,0,0] + [4,32,0,0,0,0,0,-128,0,0] + [0,0,0,0,-74,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [85,0,0,0,24,0,0,0,118,0] + [0,0,1,0,0,0,0,0,0,0] + [85,0,0,0,24,0,0,0,-40,0] + [0,0,50,0,0,0,4,32,0,0] + [0,0,0,-128,0,0,0,0,0,0] + [-73,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,-40,0,0,0] + [24,0,0,0,49,0,0,0,1,0] + [0,0,0,0,0,0,-40,0,0,0] + [24,0,0,0,22,1,0,0,50,0] + [0,0,4,32,0,0,0,0,0,-128] + [0,0,0,0,0,0,-70,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,22,1,0,0,24,0,0,0] + [49,0,0,0,1,0,0,0,0,0] + [0,0,22,1,0,0,24,0,0,0] + [84,1,0,0,50,0,0,0,4,32] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,-69,20,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,23,1] + [0,0,24,0,0,0,49,0,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,4,32,0,0,0,0] + [0,-128,0,0,0,0,0,0,-66,20] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,76,0] + [0,0,-107,0,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,76,0] + [0,0,-94,0,0,0,102,0,0,0] + [4,32,0,0,0,0,0,-128,0,0] + [0,0,0,0,-72,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [84,1,0,0,24,0,0,0,49,0] + [0,0,1,0,0,0,0,0,0,0] + [84,1,0,0,24,0,0,0,-110,1] + [0,0,50,0,0,0,4,32,0,0] + [0,0,0,-128,0,0,0,0,0,0] + [-71,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,-110,1,0,0] + [24,0,0,0,72,0,0,0,1,0] + [0,0,0,0,0,0,-110,1,0,0] + [24,0,0,0,-25,1,0,0,50,0] + [0,0,4,32,0,0,0,0,0,-128] + [0,0,0,0,0,0,-68,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,37,2,0,0,24,0,0,0] + [49,0,0,0,1,0,0,0,0,0] + [0,0,37,2,0,0,24,0,0,0] + [99,2,0,0,50,0,0,0,4,32] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,-65,20,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,-94,0] + [0,0,76,0,0,0,118,0,0,0] + [1,0,0,0,0,0,0,0,-94,0] + [0,0,76,0,0,0,37,1,0,0] + [102,0,0,0,4,32,0,0,0,0] + [0,-128,0,0,0,0,0,0,-64,20] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,-25,1,0,0,24,0] + [0,0,49,0,0,0,1,0,0,0] + [0,0,0,0,-25,1,0,0,24,0] + [0,0,37,2,0,0,50,0,0,0] + [4,32,0,0,0,0,0,-128,0,0] + [0,0,0,0,-63,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [37,1,0,0,76,0,0,0,49,0] + [0,0,1,0,0,0,0,0,0,0] + [37,1,0,0,76,0,0,0,99,1] + [0,0,102,0,0,0,4,32,0,0] + [0,0,0,-128,0,0,0,0,0,0] + [-76,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [50,0,0,0,0,1,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [50,0,0,0,13,1,0,0,76,0] + [0,0,4,32,0,0,0,0,0,-128] + [0,0,0,0,0,0,27,-24,0,0] + [1,0,0,0,0,0,0,0,1,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,127,0,0,0,0,0,0,19,0] + [0,0,0,0,-54,15,0,0,0,0] + [0,0,-75,20,0,0,-74,20,0,0] + [-73,20,0,0,-70,20,0,0,-72,20] + [0,0,-71,20,0,0,-64,20,0,0] + [-68,20,0,0,-69,20,0,0,0,0] + [0,0,-76,20,0,0,0,0,0,0] + [-66,20,0,0,-65,20,0,0,-63,20] + [0,0,0,0,0,0,30,-24,0,0] + [1,0,0,0,0,0,0,0,1,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,127,0,0,0,0,0,0,1,0] + [0,0,0,0,28,-24,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,127] + [0,0,0,0,0,0,1,0,0,0] + [0,0,29,-24,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,127,0,0] + [0,0,0,0,1,0,0,0,0,0] + [14,0,0,0,0,0,-54,15,0,0] + [0,0,0,-128,0,0,0,0,-64,2] + [0,0,24,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,23,0] + [0,0,0,0,2,0,0,0,0,0] + [0,0,-2,-1,-1,-1,24,3,0,0] + [21,0,0,0,24,3,0,0,0,0] + [0,0,1,0,0,0,0,0,-75,20] + [0,0,0,0,0,-128,0,0,0,0] + [85,0,0,0,26,0,0,0,-106,0] + [0,0,-56,0,0,0,-1,127,0,0] + [25,0,0,0,0,0,2,0,0,0] + [-2,-1,-1,-1,-2,-1,-1,-1,22,3] + [0,0,23,0,0,0,85,0,0,0] + [0,0,0,0,1,0,0,0,0,0] + [-74,20,0,0,0,0,0,-128,0,0] + [0,0,-125,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,25,0,0,0,0,0,3,0] + [0,0,1,0,0,0,24,0,0,0] + [86,0,0,0,50,0,0,0,85,0] + [0,0,0,0,0,0,1,0,0,0] + [0,0,-73,20,0,0,0,0,0,-128] + [0,0,0,0,62,0,0,0,26,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-1,127,0,0,25,0,0,0,0,0] + [4,0,0,0,86,0,0,0,24,0] + [0,0,-39,0,0,0,50,0,0,0] + [62,0,0,0,0,0,0,0,1,0] + [0,0,0,0,-70,20,0,0,0,0] + [0,-128,0,0,0,0,62,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,5,0,0,0,-39,0,0,0] + [24,0,0,0,23,1,0,0,50,0] + [0,0,62,0,0,0,0,0,0,0] + [1,0,0,0,0,0,-69,20,0,0] + [0,0,0,-128,0,0,0,0,62,0] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,1,0,0,0,-66,20,0,0] + [0,0,0,-128,0,0,0,0,-94,0] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,2,0,0,0,-2,-1] + [-1,-1,-2,-1,-1,-1,22,3,0,0] + [23,0,0,0,-94,0,0,0,0,0] + [0,0,1,0,0,0,0,0,-72,20] + [0,0,0,0,0,-128,0,0,0,0] + [62,0,0,0,26,0,0,0,-106,0] + [0,0,-56,0,0,0,-1,127,0,0] + [25,0,0,0,0,0,6,0,0,0] + [24,1,0,0,24,0,0,0,86,1] + [0,0,50,0,0,0,62,0,0,0] + [0,0,0,0,1,0,0,0,0,0] + [-71,20,0,0,0,0,0,-128,0,0] + [0,0,85,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,25,0,0,0,0,0,7,0] + [0,0,85,1,0,0,24,0,0,0] + [-109,1,0,0,50,0,0,0,62,0] + [0,0,0,0,0,0,1,0,0,0] + [0,0,-68,20,0,0,0,0,0,-128] + [0,0,0,0,62,0,0,0,26,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-1,127,0,0,25,0,0,0,0,0] + [9,0,0,0,-24,1,0,0,24,0] + [0,0,38,2,0,0,50,0,0,0] + [62,0,0,0,0,0,0,0,1,0] + [0,0,0,0,-65,20,0,0,0,0] + [0,-128,0,0,0,0,-125,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,3,0,0,0,1,0,0,0] + [76,0,0,0,-93,0,0,0,102,0] + [0,0,-125,0,0,0,0,0,0,0] + [1,0,0,0,0,0,-64,20,0,0] + [0,0,0,-128,0,0,0,0,62,0] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,8,0,0,0,-109,1] + [0,0,24,0,0,0,-24,1,0,0] + [50,0,0,0,62,0,0,0,0,0] + [0,0,1,0,0,0,0,0,-63,20] + [0,0,0,0,0,-128,0,0,0,0] + [62,0,0,0,26,0,0,0,-106,0] + [0,0,-56,0,0,0,-1,127,0,0] + [25,0,0,0,0,0,4,0,0,0] + [-93,0,0,0,76,0,0,0,38,1] + [0,0,102,0,0,0,62,0,0,0] + [0,0,0,0,1,0,0,0,0,0] + [-76,20,0,0,0,0,0,-128,0,0] + [0,0,13,1,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,25,0,0,0,0,0,2,0] + [0,0,-2,-1,-1,-1,-2,-1,-1,-1] + [22,3,0,0,23,0,0,0,13,1] + [0,0,0,0,0,0,1,0,0,0] + [5,0,0,0,30,-24,0,0,30,-24] + [0,0,1,0,0,0,-1,127,0,0] + [16,-113,64,0,19,0,0,0,0,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,0,0,-110,1,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,61,3,0,0,124,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-56,0,0,0,-56,0,0,0,4,0] + [0,0,-96,15,0,0,30,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,-113] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,24,3,0,0,120,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,61,3,0,0,124,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-95,15,0,0,30,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [61,3,0,0,124,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-94,15] + [0,0,30,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,61,3] + [0,0,124,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-93,15,0,0] + [30,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,3,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,61,3,0,0] + [124,0,0,0,-106,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,30,-24,0,0,30,-24] + [0,0,2,0,0,0,-1,127,0,0] + [16,-113,64,0,3,0,0,0,0,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,24,3,0,0,120,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-56,0,0,0,-56,0,0,0,4,0] + [0,0,-92,15,0,0,30,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,-113] + [64,0,-127,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,24,3,0,0,120,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,120,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-91,15,0,0,30,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-127,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [24,3,0,0,120,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-90,15] + [0,0,30,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-127,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,24,3] + [0,0,120,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-89,15,0,0] + [30,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-127,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,24,3,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,24,3,0,0] + [120,0,0,0,-106,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,28,-24,0,0,29,-24] + [0,0,3,0,0,0,-1,127,0,0] + [16,79,0,0,18,0,0,0,0,16] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,0,0,0,0,0,0] + [0,0,0,0,0,0,-106,0,0,0] + [12,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,-76,0,0,0,120,0] + [0,0,-100,0,0,0,72,1,0,0] + [0,0,0,0,0,0,0,0,2,0] + [0,0,29,-24,0,0,28,-24,0,0] + [0,0,0,0,-1,127,0,0,16,79] + [64,0,-109,0,0,0,0,16,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,0,0,0,0] + [-104,0,0,0,-92,0,0,0,-56,0] + [0,0,-56,0,0,0,4,0,0,0] + [-88,15,0,0,29,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,79,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-106,0,0,0,12,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-104,0] + [0,0,-92,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-87,15] + [0,0,29,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-104,0,0,0] + [-92,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-86,15,0,0] + [29,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [0,0,0,0,-104,0,0,0,-92,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-85,15,0,0,29,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,47,64,0,-111,3,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,0,0] + [0,0,-104,0,0,0,-92,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,28,-24,0,0,28,-24,0,0] + [0,0,0,0,-1,127,0,0,16,47] + [64,0,-109,0,0,0,0,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,0,0,0,0] + [-104,0,0,0,-92,0,0,0,-56,0] + [0,0,-56,0,0,0,6,0,0,0] + [-84,15,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,34,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-104,0] + [0,0,-92,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-83,15] + [0,0,28,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-104,0,0,0] + [-92,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-82,15,0,0] + [28,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,3,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [0,0,0,0,-104,0,0,0,-92,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-81,15,0,0,28,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,47,64,0,-111,1,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,0,0] + [0,0,-104,0,0,0,-92,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-80,15,0,0,28,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,0,0,0,0] + [-104,0,0,0,-92,0,0,0,-56,0] + 16449545 + [0,0,-56,0,0,0,0,0,0,0] + [-79,15,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-104,0] + [0,0,-92,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-77,15] + [0,0,30,-24,0,0,4,0,0,0] + [-1,127,0,0,-68,-113,64,0,17,0] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-126,2,0,0,120,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,-95,2] + [0,0,120,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,28,-24,0,0] + [28,-24,0,0,5,0,0,0,-1,127] + [0,0,16,31,64,0,19,0,0,0] + [0,16,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-106,0,0,0,-76,0,0,0,-48,0] + [0,0,-56,0,0,0,-56,0,0,0] + [2,0,0,0,-56,15,0,0,28,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,31,64,0,-111,3,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,-56,0,0,0,-106,0] + [0,0,-76,0,0,0,-48,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-55,15,0,0,28,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,-106,0,0,0] + [-76,0,0,0,-48,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,96,-74,30,6,0,0] + [0,0,0,0,0,0,0,1,0,0] + [-44,49,-23,1,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,-56,0,0,0,-106,0] + [0,0,-76,0,0,0,-48,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-55,15,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [32,-31,121,0,0,0,0,0,0,0] + [0,0,-64,1,0,0,52,50,-23,1] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,-106,0,0,0,-76,0] + [0,0,-48,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,0,0,0,0] + [0,0] + 0 + + + 5988 + [39,80,114,111,102,45,85,73,83,32] + [40,118,46,32,50,46,53,46,53,46] + [48,41,32,99,111,110,116,114,111,108] + [32,98,97,114,32,115,116,97,116,101] + [0,5,5,2,5,2,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,15,48,44,48,44,56] + [48,48,44,54,48,48,44,49,44,48] + [2,0,0,0,64,6,0,0,-80,4] + [0,0,19,0,1,-24,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,127] + [0,0,0,0,0,0,0,0,-54,15] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,36,2,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,24,3,0,0,24,0,0,0] + [4,32,0,0,0,0,0,-128,-112,4] + [0,0,0,0,-75,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,24,0,0,0,72,0] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,24,0,0,0,85,0] + [0,0,50,0,0,0,4,32,0,0] + [0,0,0,-128,-111,0,0,0,0,0] + [-74,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,85,0,0,0] + [24,0,0,0,118,0,0,0,1,0] + [0,0,0,0,0,0,85,0,0,0] + [24,0,0,0,-40,0,0,0,50,0] + [0,0,4,32,0,0,0,0,0,-128] + [-64,0,0,0,0,0,-73,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,-40,0,0,0,24,0,0,0] + [49,0,0,0,1,0,0,0,0,0] + [0,0,-40,0,0,0,24,0,0,0] + [22,1,0,0,50,0,0,0,4,32] + [0,0,0,0,0,-128,-128,1,0,0] + [0,0,-70,20,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,22,1] + [0,0,24,0,0,0,49,0,0,0] + [1,0,0,0,0,0,0,0,22,1] + [0,0,24,0,0,0,84,1,0,0] + [50,0,0,0,4,32,0,0,0,0] + [0,-128,-112,4,0,0,0,0,-69,20] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,23,1,0,0,24,0] + [0,0,49,0,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-96,97,-18,1,-44,98,-18,1] + [4,32,0,0,0,0,0,-128,-112,4] + [0,0,0,0,-66,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [13,1,0,0,50,0,0,0,-107,0] + [0,0,1,0,0,0,27,-24,0,0] + [13,1,0,0,50,0,0,0,-81,1] + [0,0,76,0,0,0,4,32,0,0] + [0,0,0,-128,-112,4,0,0,0,0] + [-72,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,84,1,0,0] + [24,0,0,0,49,0,0,0,1,0] + [0,0,0,0,0,0,84,1,0,0] + [24,0,0,0,-110,1,0,0,50,0] + [0,0,4,32,0,0,0,0,0,-128] + [-112,4,0,0,0,0,-71,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,-110,1,0,0,24,0,0,0] + [72,0,0,0,1,0,0,0,0,0] + [0,0,-110,1,0,0,24,0,0,0] + [-25,1,0,0,50,0,0,0,4,32] + [0,0,0,0,0,-128,-112,4,0,0] + [0,0,-68,20,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,37,2] + [0,0,24,0,0,0,49,0,0,0] + [1,0,0,0,0,0,0,0,37,2] + [0,0,24,0,0,0,99,2,0,0] + [50,0,0,0,4,32,0,0,0,0] + [0,-128,64,0,0,0,0,0,-65,20] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,-81,1,0,0,50,0] + [0,0,118,0,0,0,1,0,0,0] + [27,-24,0,0,-81,1,0,0,50,0] + [0,0,50,2,0,0,76,0,0,0] + [4,32,0,0,0,0,0,-128,-112,4] + [0,0,0,0,-64,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-25,1,0,0,24,0,0,0,49,0] + [0,0,1,0,0,0,0,0,0,0] + [-25,1,0,0,24,0,0,0,37,2] + [0,0,50,0,0,0,4,32,0,0] + [0,0,0,-128,-111,0,0,0,0,0] + [-63,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,50,2,0,0] + [50,0,0,0,49,0,0,0,1,0] + [0,0,0,0,0,0,50,2,0,0] + [50,0,0,0,112,2,0,0,76,0] + [0,0,4,32,0,0,0,0,0,-128] + [80,2,0,0,0,0,-76,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,50,0,0,0] + [0,1,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,50,0,0,0] + [13,1,0,0,76,0,0,0,4,32] + [0,0,0,0,0,-128,-112,4,0,0] + [0,0,27,-24,0,0,1,0,0,0] + [0,0,0,0,1,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,127,0,0] + [0,0,0,0,18,0,0,0,0,0] + [-54,15,0,0,0,0,0,0,-75,20] + [0,0,-74,20,0,0,-73,20,0,0] + [-70,20,0,0,-72,20,0,0,-71,20] + [0,0,-64,20,0,0,-68,20,0,0] + [-69,20,0,0,0,0,0,0,-76,20] + [0,0,-66,20,0,0,-65,20,0,0] + [-63,20,0,0,0,0,0,0,30,-24] + [0,0,1,0,0,0,0,0,0,0] + [1,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,127,0,0,0,0,0,0] + [1,0,0,0,0,0,28,-24,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,127,0,0,0,0,0,0,1,0] + [0,0,0,0,29,-24,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,127] + [0,0,0,0,0,0,1,0,0,0] + [0,0,14,0,0,0,2,0,0,0] + [-54,15,0,0,0,0,0,-128,-112,4] + [0,0,42,2,0,0,24,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,23,0,0,0,0,0,0,0] + [2,0,0,0,-2,-1,-1,-1,-2,-1] + [-1,-1,22,3,0,0,21,0,0,0] + [24,3,0,0,0,0,0,0,1,0] + [0,0,2,0,0,0,-75,20,0,0] + [0,0,0,-128,-111,0,0,0,85,0] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,0,0,2,0,0,0] + [-2,-1,-1,-1,-2,-1,-1,-1,22,3] + [0,0,23,0,0,0,85,0,0,0] + [0,0,0,0,1,0,0,0,2,0] + [0,0,-74,20,0,0,0,0,0,-128] + [-64,0,0,0,-125,0,0,0,26,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-1,127,0,0,25,0,0,0,0,0] + [0,0,3,0,0,0,1,0,0,0] + [24,0,0,0,86,0,0,0,50,0] + [0,0,85,0,0,0,0,0,0,0] + [1,0,0,0,2,0,0,0,-73,20] + [0,0,0,0,0,-128,-128,1,0,0] + [62,0,0,0,26,0,0,0,-106,0] + [0,0,-56,0,0,0,-1,127,0,0] + [25,0,0,0,0,0,0,0,4,0] + [0,0,86,0,0,0,24,0,0,0] + [-39,0,0,0,50,0,0,0,62,0] + [0,0,0,0,0,0,1,0,0,0] + [2,0,0,0,-70,20,0,0,0,0] + [0,-128,-112,4,0,0,62,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,0,0,5,0,0,0,-39,0] + [0,0,24,0,0,0,23,1,0,0] + [50,0,0,0,62,0,0,0,0,0] + [0,0,1,0,0,0,0,0,0,0] + [-69,20,0,0,0,0,0,-128,-112,4] + [0,0,62,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,1,0,0,0] + [2,0,0,0,-66,20,0,0,0,0] + [0,-128,-112,4,0,0,-94,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,0,0,3,0,0,0,15,1] + [0,0,50,0,0,0,-79,1,0,0] + [76,0,0,0,-94,0,0,0,0,0] + [0,0,0,0,0,0,2,0,0,0] + [-72,20,0,0,0,0,0,-128,-112,4] + [0,0,62,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,25,0,0,0,0,0,0,0] + [6,0,0,0,24,1,0,0,24,0] + [0,0,86,1,0,0,50,0,0,0] + [62,0,0,0,0,0,0,0,1,0] + [0,0,2,0,0,0,-71,20,0,0] + [0,0,0,-128,-112,4,0,0,85,0] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,0,0,7,0,0,0] + [85,1,0,0,24,0,0,0,-109,1] + [0,0,50,0,0,0,62,0,0,0] + [0,0,0,0,1,0,0,0,2,0] + [0,0,-68,20,0,0,0,0,0,-128] + [64,0,0,0,62,0,0,0,26,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-1,127,0,0,25,0,0,0,0,0] + [0,0,9,0,0,0,-24,1,0,0] + [24,0,0,0,38,2,0,0,50,0] + [0,0,62,0,0,0,0,0,0,0] + [1,0,0,0,2,0,0,0,-65,20] + [0,0,0,0,0,-128,-112,4,0,0] + [-125,0,0,0,26,0,0,0,-106,0] + [0,0,-56,0,0,0,-1,127,0,0] + [25,0,0,0,0,0,0,0,2,0] + [0,0,-81,1,0,0,50,0,0,0] + [50,2,0,0,76,0,0,0,-125,0] + [0,0,0,0,0,0,0,0,0,0] + [2,0,0,0,-64,20,0,0,0,0] + [0,-128,-111,0,0,0,62,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,0,0,8,0,0,0,-109,1] + [0,0,24,0,0,0,-24,1,0,0] + [50,0,0,0,62,0,0,0,0,0] + [0,0,1,0,0,0,2,0,0,0] + [-63,20,0,0,0,0,0,-128,80,2] + [0,0,62,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,25,0,0,0,0,0,0,0] + [1,0,0,0,50,2,0,0,50,0] + [0,0,112,2,0,0,76,0,0,0] + [62,0,0,0,0,0,0,0,0,0] + [0,0,2,0,0,0,-76,20,0,0] + [0,0,0,-128,-112,4,0,0,13,1] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,0,0,4,0,0,0] + [-2,-1,-1,-1,-2,-1,-1,-1,22,3] + [0,0,23,0,0,0,13,1,0,0] + [0,0,0,0,1,0,0,0,5,0] + [0,0,30,-24,0,0,30,-24,0,0] + [1,0,0,0,-1,127,0,0,16,-113] + [64,0,19,0,0,0,0,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,93,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,4,0,0,0] + [-96,15,0,0,30,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,-113,64,0] + [-111,3,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,24,3,0,0,-106,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [24,3,0,0,93,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-95,15,0,0] + [30,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,32,-31] + [121,0,0,-116,116,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,24,3,0,0] + [93,0,0,0,-106,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-94,15,0,0,30,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,32,-31,121,0,0,-116] + [116,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,93,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-93,15] + [0,0,30,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-112,-62,30,6,0,-116,116,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,24,3] + [0,0,93,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,30,-24,0,0,30,-24,0,0] + [2,0,0,0,-1,127,0,0,16,-113] + [64,0,19,0,0,0,0,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,90,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,4,0,0,0] + [-92,15,0,0,30,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,-113,64,0] + [-111,3,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [80,76,-18,1,0,0,0,0,0,0] + [0,0,24,3,0,0,-106,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [24,3,0,0,90,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-91,15,0,0] + [30,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,80,80,-18,1] + [0,0,0,0,0,0,0,0,0,0] + [0,0,112,84,-18,1,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,24,3,0,0] + [90,0,0,0,-106,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-90,15,0,0,30,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,-128,0,0,0,0,0,0,0] + [0,0,0,0,0,86,-18,1,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,90,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-89,15] + [0,0,30,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,-32,83] + [-18,1,0,0,0,0,0,0,0,0] + [-96,82,-18,1,-44,83,-18,1,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,24,3] + [0,0,90,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,28,-24,0,0,29,-24,0,0] + [3,0,0,0,-1,127,0,0,16,79] + [0,0,18,0,0,0,0,16,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,-106,0,0,0] + [-106,0,0,0,37,1,0,0,0,0] + [0,0,0,0,0,0,2,0,0,0] + [29,-24,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,16,79,64,0] + [-109,0,0,0,0,16,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-108,0,0,0,-56,0,0,0] + [-56,0,0,0,4,0,0,0,-88,15] + [0,0,29,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,79,64,0,-111,3] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,-80,116] + [31,6,0,0,0,0,0,0,0,0] + [-128,0,0,0,-84,84,-18,1,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-110,0,0,0] + [-108,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-87,15,0,0,29,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,47,64,0,-111,1,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,-128,119,31,6,0,0] + [0,0,0,0,0,0,64,1,0,0] + [-12,49,-23,1,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,0,0] + [0,0,-110,0,0,0,-108,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-86,15,0,0,29,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [32,-31,121,0,0,0,0,0,0,0] + [0,0,0,2,0,0,84,50,-23,1] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-108,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-85,15,0,0] + [29,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,-24,80] + [-18,1,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [0,0,0,0,-110,0,0,0,-108,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [28,-24,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,16,47,64,0] + [-109,0,0,0,0,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-111,0,0,0,-56,0,0,0] + [-56,0,0,0,6,0,0,0,-84,15] + [0,0,28,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,34,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,80,49] + [-18,1,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-110,0,0,0] + [-111,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-83,15,0,0,28,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,47,64,0,-111,3,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,80,49,-18,1,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,0,0] + [0,0,-110,0,0,0,-111,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-82,15,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [80,49,-18,1,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-111,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-81,15,0,0] + [28,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + 16711689 + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [0,0,0,0,-110,0,0,0,-111,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-80,15,0,0,28,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,65,0,0,0,0,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,0,0,0,0] + [-110,0,0,0,-111,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-79,15] + [0,0,28,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,32,-31] + [121,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-110,0,0,0] + [-111,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-77,15,0,0,30,-24,0,0,4,0] + [0,0,-1,127,0,0,-68,-113,64,0] + [17,0,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [-64,-70,30,6,0,0,0,0,0,0] + [0,0,24,3,0,0,-106,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-126,2,0,0,85,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,28,-24,0,0] + [28,-24,0,0,5,0,0,0,-1,127] + [0,0,16,31,64,0,19,0,0,0] + [0,16,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-106,0,0,0,-76,0,0,0,-48,0] + [0,0,-56,0,0,0,-56,0,0,0] + [2,0,0,0,-56,15,0,0,28,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,31,64,0,-111,3,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,96,-74,30,6,0,0] + [0,0,0,0,0,0,0,1,0,0] + [-44,49,-23,1,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,-56,0,0,0,-106,0] + [0,0,-76,0,0,0,-48,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-55,15,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [32,-31,121,0,0,0,0,0,0,0] + [0,0,-64,1,0,0,52,50,-23,1] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,-106,0,0,0,-76,0] + [0,0,-48,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,0,0,0,0] + [0,0] + + + 5988 + [39,80,114,111,102,45,85,73,83,32] + [40,118,46,32,50,46,53,46,53,46] + [48,41,32,99,111,110,116,114,111,108] + [32,98,97,114,32,115,116,97,116,101] + [0,5,5,2,5,2,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,15,48,44,48,44,56] + [48,48,44,54,48,48,44,49,44,48] + [2,0,0,0,64,6,0,0,-80,4] + [0,0,19,0,1,-24,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,127] + [0,0,0,0,0,0,0,0,-54,15] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,36,2,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,24,3,0,0,24,0,0,0] + [4,32,0,0,0,0,0,-128,-112,4] + [0,0,0,0,-75,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,24,0,0,0,72,0] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,24,0,0,0,85,0] + [0,0,50,0,0,0,4,32,0,0] + [0,0,0,-128,-111,0,0,0,0,0] + [-74,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,85,0,0,0] + [24,0,0,0,118,0,0,0,1,0] + [0,0,0,0,0,0,85,0,0,0] + [24,0,0,0,-40,0,0,0,50,0] + [0,0,4,32,0,0,0,0,0,-128] + [-64,0,0,0,0,0,-73,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,-40,0,0,0,24,0,0,0] + [49,0,0,0,1,0,0,0,0,0] + [0,0,-40,0,0,0,24,0,0,0] + [22,1,0,0,50,0,0,0,4,32] + [0,0,0,0,0,-128,-128,1,0,0] + [0,0,-70,20,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,22,1] + [0,0,24,0,0,0,49,0,0,0] + [1,0,0,0,0,0,0,0,22,1] + [0,0,24,0,0,0,84,1,0,0] + [50,0,0,0,4,32,0,0,0,0] + [0,-128,-112,4,0,0,0,0,-69,20] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,23,1,0,0,24,0] + [0,0,49,0,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-96,97,-18,1,-44,98,-18,1] + [4,32,0,0,0,0,0,-128,-112,4] + [0,0,0,0,-66,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [13,1,0,0,50,0,0,0,-107,0] + [0,0,1,0,0,0,27,-24,0,0] + [13,1,0,0,50,0,0,0,-81,1] + [0,0,76,0,0,0,4,32,0,0] + [0,0,0,-128,-112,4,0,0,0,0] + [-72,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,84,1,0,0] + [24,0,0,0,49,0,0,0,1,0] + [0,0,0,0,0,0,84,1,0,0] + [24,0,0,0,-110,1,0,0,50,0] + [0,0,4,32,0,0,0,0,0,-128] + [-112,4,0,0,0,0,-71,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,-110,1,0,0,24,0,0,0] + [72,0,0,0,1,0,0,0,0,0] + [0,0,-110,1,0,0,24,0,0,0] + [-25,1,0,0,50,0,0,0,4,32] + [0,0,0,0,0,-128,-112,4,0,0] + [0,0,-68,20,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,37,2] + [0,0,24,0,0,0,49,0,0,0] + [1,0,0,0,0,0,0,0,37,2] + [0,0,24,0,0,0,99,2,0,0] + [50,0,0,0,4,32,0,0,0,0] + [0,-128,64,0,0,0,0,0,-65,20] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,-81,1,0,0,50,0] + [0,0,118,0,0,0,1,0,0,0] + [27,-24,0,0,-81,1,0,0,50,0] + [0,0,50,2,0,0,76,0,0,0] + [4,32,0,0,0,0,0,-128,-112,4] + [0,0,0,0,-64,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-25,1,0,0,24,0,0,0,49,0] + [0,0,1,0,0,0,0,0,0,0] + [-25,1,0,0,24,0,0,0,37,2] + [0,0,50,0,0,0,4,32,0,0] + [0,0,0,-128,-111,0,0,0,0,0] + [-63,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,50,2,0,0] + [50,0,0,0,49,0,0,0,1,0] + [0,0,0,0,0,0,50,2,0,0] + [50,0,0,0,112,2,0,0,76,0] + [0,0,4,32,0,0,0,0,0,-128] + [80,2,0,0,0,0,-76,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,50,0,0,0] + [0,1,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,50,0,0,0] + [13,1,0,0,76,0,0,0,4,32] + [0,0,0,0,0,-128,-112,4,0,0] + [0,0,27,-24,0,0,1,0,0,0] + [0,0,0,0,1,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,127,0,0] + [0,0,0,0,18,0,0,0,0,0] + [-54,15,0,0,0,0,0,0,-75,20] + [0,0,-74,20,0,0,-73,20,0,0] + [-70,20,0,0,-72,20,0,0,-71,20] + [0,0,-64,20,0,0,-68,20,0,0] + [-69,20,0,0,0,0,0,0,-76,20] + [0,0,-66,20,0,0,-65,20,0,0] + [-63,20,0,0,0,0,0,0,30,-24] + [0,0,1,0,0,0,0,0,0,0] + [1,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,127,0,0,0,0,0,0] + [1,0,0,0,0,0,28,-24,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,127,0,0,0,0,0,0,1,0] + [0,0,0,0,29,-24,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,127] + [0,0,0,0,0,0,1,0,0,0] + [0,0,14,0,0,0,2,0,0,0] + [-54,15,0,0,0,0,0,-128,-112,4] + [0,0,42,2,0,0,24,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,23,0,0,0,0,0,0,0] + [2,0,0,0,-2,-1,-1,-1,-2,-1] + [-1,-1,22,3,0,0,21,0,0,0] + [24,3,0,0,0,0,0,0,1,0] + [0,0,2,0,0,0,-75,20,0,0] + [0,0,0,-128,-111,0,0,0,85,0] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,0,0,2,0,0,0] + [-2,-1,-1,-1,-2,-1,-1,-1,22,3] + [0,0,23,0,0,0,85,0,0,0] + [0,0,0,0,1,0,0,0,2,0] + [0,0,-74,20,0,0,0,0,0,-128] + [-64,0,0,0,-125,0,0,0,26,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-1,127,0,0,25,0,0,0,0,0] + [0,0,3,0,0,0,1,0,0,0] + [24,0,0,0,86,0,0,0,50,0] + [0,0,85,0,0,0,0,0,0,0] + [1,0,0,0,2,0,0,0,-73,20] + [0,0,0,0,0,-128,-128,1,0,0] + [62,0,0,0,26,0,0,0,-106,0] + [0,0,-56,0,0,0,-1,127,0,0] + [25,0,0,0,0,0,0,0,4,0] + [0,0,86,0,0,0,24,0,0,0] + [-39,0,0,0,50,0,0,0,62,0] + [0,0,0,0,0,0,1,0,0,0] + [2,0,0,0,-70,20,0,0,0,0] + [0,-128,-112,4,0,0,62,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,0,0,5,0,0,0,-39,0] + [0,0,24,0,0,0,23,1,0,0] + [50,0,0,0,62,0,0,0,0,0] + [0,0,1,0,0,0,0,0,0,0] + [-69,20,0,0,0,0,0,-128,-112,4] + [0,0,62,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,1,0,0,0] + [2,0,0,0,-66,20,0,0,0,0] + [0,-128,-112,4,0,0,-94,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,0,0,3,0,0,0,15,1] + [0,0,50,0,0,0,-79,1,0,0] + [76,0,0,0,-94,0,0,0,0,0] + [0,0,0,0,0,0,2,0,0,0] + [-72,20,0,0,0,0,0,-128,-112,4] + [0,0,62,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,25,0,0,0,0,0,0,0] + [6,0,0,0,24,1,0,0,24,0] + [0,0,86,1,0,0,50,0,0,0] + [62,0,0,0,0,0,0,0,1,0] + [0,0,2,0,0,0,-71,20,0,0] + [0,0,0,-128,-112,4,0,0,85,0] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,0,0,7,0,0,0] + [85,1,0,0,24,0,0,0,-109,1] + [0,0,50,0,0,0,62,0,0,0] + [0,0,0,0,1,0,0,0,2,0] + [0,0,-68,20,0,0,0,0,0,-128] + [64,0,0,0,62,0,0,0,26,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-1,127,0,0,25,0,0,0,0,0] + [0,0,9,0,0,0,-24,1,0,0] + [24,0,0,0,38,2,0,0,50,0] + [0,0,62,0,0,0,0,0,0,0] + [1,0,0,0,2,0,0,0,-65,20] + [0,0,0,0,0,-128,-112,4,0,0] + [-125,0,0,0,26,0,0,0,-106,0] + [0,0,-56,0,0,0,-1,127,0,0] + [25,0,0,0,0,0,0,0,2,0] + [0,0,-81,1,0,0,50,0,0,0] + [50,2,0,0,76,0,0,0,-125,0] + [0,0,0,0,0,0,0,0,0,0] + [2,0,0,0,-64,20,0,0,0,0] + [0,-128,-111,0,0,0,62,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,0,0,8,0,0,0,-109,1] + [0,0,24,0,0,0,-24,1,0,0] + [50,0,0,0,62,0,0,0,0,0] + [0,0,1,0,0,0,2,0,0,0] + [-63,20,0,0,0,0,0,-128,80,2] + [0,0,62,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,25,0,0,0,0,0,0,0] + [1,0,0,0,50,2,0,0,50,0] + [0,0,112,2,0,0,76,0,0,0] + [62,0,0,0,0,0,0,0,0,0] + [0,0,2,0,0,0,-76,20,0,0] + [0,0,0,-128,-112,4,0,0,13,1] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,0,0,4,0,0,0] + [-2,-1,-1,-1,-2,-1,-1,-1,22,3] + [0,0,23,0,0,0,13,1,0,0] + [0,0,0,0,1,0,0,0,5,0] + [0,0,30,-24,0,0,30,-24,0,0] + [1,0,0,0,-1,127,0,0,16,-113] + [64,0,19,0,0,0,0,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,93,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,4,0,0,0] + [-96,15,0,0,30,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,-113,64,0] + [-111,3,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,24,3,0,0,-106,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [24,3,0,0,93,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-95,15,0,0] + [30,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,32,-31] + [121,0,0,-116,116,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,24,3,0,0] + [93,0,0,0,-106,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-94,15,0,0,30,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,32,-31,121,0,0,-116] + [116,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,93,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-93,15] + [0,0,30,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-112,-62,30,6,0,-116,116,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,24,3] + [0,0,93,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,30,-24,0,0,30,-24,0,0] + [2,0,0,0,-1,127,0,0,16,-113] + [64,0,19,0,0,0,0,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,90,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,4,0,0,0] + [-92,15,0,0,30,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,-113,64,0] + [-111,3,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [80,76,-18,1,0,0,0,0,0,0] + [0,0,24,3,0,0,-106,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [24,3,0,0,90,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-91,15,0,0] + [30,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,80,80,-18,1] + [0,0,0,0,0,0,0,0,0,0] + [0,0,112,84,-18,1,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,24,3,0,0] + [90,0,0,0,-106,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-90,15,0,0,30,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,-128,0,0,0,0,0,0,0] + [0,0,0,0,0,86,-18,1,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,90,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-89,15] + [0,0,30,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,-32,83] + [-18,1,0,0,0,0,0,0,0,0] + [-96,82,-18,1,-44,83,-18,1,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,24,3] + [0,0,90,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,28,-24,0,0,29,-24,0,0] + [3,0,0,0,-1,127,0,0,16,79] + [0,0,18,0,0,0,0,16,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,-106,0,0,0] + [-106,0,0,0,37,1,0,0,0,0] + [0,0,0,0,0,0,2,0,0,0] + [29,-24,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,16,79,64,0] + [-109,0,0,0,0,16,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-108,0,0,0,-56,0,0,0] + [-56,0,0,0,4,0,0,0,-88,15] + [0,0,29,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,79,64,0,-111,3] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,-80,116] + [31,6,0,0,0,0,0,0,0,0] + [-128,0,0,0,-84,84,-18,1,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-110,0,0,0] + [-108,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-87,15,0,0,29,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,47,64,0,-111,1,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,-128,119,31,6,0,0] + [0,0,0,0,0,0,64,1,0,0] + [-12,49,-23,1,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,0,0] + [0,0,-110,0,0,0,-108,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-86,15,0,0,29,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [32,-31,121,0,0,0,0,0,0,0] + [0,0,0,2,0,0,84,50,-23,1] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-108,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-85,15,0,0] + [29,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,-24,80] + [-18,1,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [0,0,0,0,-110,0,0,0,-108,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [28,-24,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,16,47,64,0] + [-109,0,0,0,0,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-111,0,0,0,-56,0,0,0] + [-56,0,0,0,6,0,0,0,-84,15] + [0,0,28,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,34,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,80,49] + [-18,1,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-110,0,0,0] + [-111,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-83,15,0,0,28,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,47,64,0,-111,3,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,80,49,-18,1,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,0,0] + [0,0,-110,0,0,0,-111,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-82,15,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [80,49,-18,1,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-111,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-81,15,0,0] + [28,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + 16711689 + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [0,0,0,0,-110,0,0,0,-111,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-80,15,0,0,28,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,65,0,0,0,0,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,0,0,0,0] + [-110,0,0,0,-111,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-79,15] + [0,0,28,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,32,-31] + [121,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-110,0,0,0] + [-111,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-77,15,0,0,30,-24,0,0,4,0] + [0,0,-1,127,0,0,-68,-113,64,0] + [17,0,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [-64,-70,30,6,0,0,0,0,0,0] + [0,0,24,3,0,0,-106,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-126,2,0,0,85,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,28,-24,0,0] + [28,-24,0,0,5,0,0,0,-1,127] + [0,0,16,31,64,0,19,0,0,0] + [0,16,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-106,0,0,0,-76,0,0,0,-48,0] + [0,0,-56,0,0,0,-56,0,0,0] + [2,0,0,0,-56,15,0,0,28,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,31,64,0,-111,3,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,96,-74,30,6,0,0] + [0,0,0,0,0,0,0,1,0,0] + [-44,49,-23,1,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,-56,0,0,0,-106,0] + [0,0,-76,0,0,0,-48,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-55,15,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [32,-31,121,0,0,0,0,0,0,0] + [0,0,-64,1,0,0,52,50,-23,1] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,-106,0,0,0,-76,0] + [0,0,-48,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,0,0,0,0] + [0,0] + + + 5988 + [39,80,114,111,102,45,85,73,83,32] + [40,118,46,32,50,46,53,46,53,46] + [48,41,32,99,111,110,116,114,111,108] + [32,98,97,114,32,115,116,97,116,101] + [0,5,5,2,5,2,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,15,48,44,48,44,56] + [48,48,44,54,48,48,44,49,44,48] + [2,0,0,0,64,6,0,0,-80,4] + [0,0,19,0,1,-24,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,127] + [0,0,0,0,0,0,0,0,-54,15] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,36,2,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,24,3,0,0,24,0,0,0] + [4,32,0,0,0,0,0,-128,-112,4] + [0,0,0,0,-75,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,24,0,0,0,72,0] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,24,0,0,0,85,0] + [0,0,50,0,0,0,4,32,0,0] + [0,0,0,-128,-111,0,0,0,0,0] + [-74,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,85,0,0,0] + [24,0,0,0,118,0,0,0,1,0] + [0,0,0,0,0,0,85,0,0,0] + [24,0,0,0,-40,0,0,0,50,0] + [0,0,4,32,0,0,0,0,0,-128] + [-64,0,0,0,0,0,-73,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,-40,0,0,0,24,0,0,0] + [49,0,0,0,1,0,0,0,0,0] + [0,0,-40,0,0,0,24,0,0,0] + [22,1,0,0,50,0,0,0,4,32] + [0,0,0,0,0,-128,-128,1,0,0] + [0,0,-70,20,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,22,1] + [0,0,24,0,0,0,49,0,0,0] + [1,0,0,0,0,0,0,0,22,1] + [0,0,24,0,0,0,84,1,0,0] + [50,0,0,0,4,32,0,0,0,0] + [0,-128,-112,4,0,0,0,0,-69,20] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,23,1,0,0,24,0] + [0,0,49,0,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-96,97,-18,1,-44,98,-18,1] + [4,32,0,0,0,0,0,-128,-112,4] + [0,0,0,0,-66,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [13,1,0,0,50,0,0,0,-107,0] + [0,0,1,0,0,0,27,-24,0,0] + [13,1,0,0,50,0,0,0,-81,1] + [0,0,76,0,0,0,4,32,0,0] + [0,0,0,-128,-112,4,0,0,0,0] + [-72,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,84,1,0,0] + [24,0,0,0,49,0,0,0,1,0] + [0,0,0,0,0,0,84,1,0,0] + [24,0,0,0,-110,1,0,0,50,0] + [0,0,4,32,0,0,0,0,0,-128] + [-112,4,0,0,0,0,-71,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,-110,1,0,0,24,0,0,0] + [72,0,0,0,1,0,0,0,0,0] + [0,0,-110,1,0,0,24,0,0,0] + [-25,1,0,0,50,0,0,0,4,32] + [0,0,0,0,0,-128,-112,4,0,0] + [0,0,-68,20,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,37,2] + [0,0,24,0,0,0,49,0,0,0] + [1,0,0,0,0,0,0,0,37,2] + [0,0,24,0,0,0,99,2,0,0] + [50,0,0,0,4,32,0,0,0,0] + [0,-128,64,0,0,0,0,0,-65,20] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,-81,1,0,0,50,0] + [0,0,118,0,0,0,1,0,0,0] + [27,-24,0,0,-81,1,0,0,50,0] + [0,0,50,2,0,0,76,0,0,0] + [4,32,0,0,0,0,0,-128,-112,4] + [0,0,0,0,-64,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-25,1,0,0,24,0,0,0,49,0] + [0,0,1,0,0,0,0,0,0,0] + [-25,1,0,0,24,0,0,0,37,2] + [0,0,50,0,0,0,4,32,0,0] + [0,0,0,-128,-111,0,0,0,0,0] + [-63,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,50,2,0,0] + [50,0,0,0,49,0,0,0,1,0] + [0,0,0,0,0,0,50,2,0,0] + [50,0,0,0,112,2,0,0,76,0] + [0,0,4,32,0,0,0,0,0,-128] + [80,2,0,0,0,0,-76,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,50,0,0,0] + [0,1,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,50,0,0,0] + [13,1,0,0,76,0,0,0,4,32] + [0,0,0,0,0,-128,-112,4,0,0] + [0,0,27,-24,0,0,1,0,0,0] + [0,0,0,0,1,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,127,0,0] + [0,0,0,0,18,0,0,0,0,0] + [-54,15,0,0,0,0,0,0,-75,20] + [0,0,-74,20,0,0,-73,20,0,0] + [-70,20,0,0,-72,20,0,0,-71,20] + [0,0,-64,20,0,0,-68,20,0,0] + [-69,20,0,0,0,0,0,0,-76,20] + [0,0,-66,20,0,0,-65,20,0,0] + [-63,20,0,0,0,0,0,0,30,-24] + [0,0,1,0,0,0,0,0,0,0] + [1,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,127,0,0,0,0,0,0] + [1,0,0,0,0,0,28,-24,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,127,0,0,0,0,0,0,1,0] + [0,0,0,0,29,-24,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,127] + [0,0,0,0,0,0,1,0,0,0] + [0,0,14,0,0,0,2,0,0,0] + [-54,15,0,0,0,0,0,-128,-112,4] + [0,0,42,2,0,0,24,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,23,0,0,0,0,0,0,0] + [2,0,0,0,-2,-1,-1,-1,-2,-1] + [-1,-1,22,3,0,0,21,0,0,0] + [24,3,0,0,0,0,0,0,1,0] + [0,0,2,0,0,0,-75,20,0,0] + [0,0,0,-128,-111,0,0,0,85,0] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,0,0,2,0,0,0] + [-2,-1,-1,-1,-2,-1,-1,-1,22,3] + [0,0,23,0,0,0,85,0,0,0] + [0,0,0,0,1,0,0,0,2,0] + [0,0,-74,20,0,0,0,0,0,-128] + [-64,0,0,0,-125,0,0,0,26,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-1,127,0,0,25,0,0,0,0,0] + [0,0,3,0,0,0,1,0,0,0] + [24,0,0,0,86,0,0,0,50,0] + [0,0,85,0,0,0,0,0,0,0] + [1,0,0,0,2,0,0,0,-73,20] + [0,0,0,0,0,-128,-128,1,0,0] + [62,0,0,0,26,0,0,0,-106,0] + [0,0,-56,0,0,0,-1,127,0,0] + [25,0,0,0,0,0,0,0,4,0] + [0,0,86,0,0,0,24,0,0,0] + [-39,0,0,0,50,0,0,0,62,0] + [0,0,0,0,0,0,1,0,0,0] + [2,0,0,0,-70,20,0,0,0,0] + [0,-128,-112,4,0,0,62,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,0,0,5,0,0,0,-39,0] + [0,0,24,0,0,0,23,1,0,0] + [50,0,0,0,62,0,0,0,0,0] + [0,0,1,0,0,0,0,0,0,0] + [-69,20,0,0,0,0,0,-128,-112,4] + [0,0,62,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,1,0,0,0] + [2,0,0,0,-66,20,0,0,0,0] + [0,-128,-112,4,0,0,-94,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,0,0,3,0,0,0,15,1] + [0,0,50,0,0,0,-79,1,0,0] + [76,0,0,0,-94,0,0,0,0,0] + [0,0,0,0,0,0,2,0,0,0] + [-72,20,0,0,0,0,0,-128,-112,4] + [0,0,62,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,25,0,0,0,0,0,0,0] + [6,0,0,0,24,1,0,0,24,0] + [0,0,86,1,0,0,50,0,0,0] + [62,0,0,0,0,0,0,0,1,0] + [0,0,2,0,0,0,-71,20,0,0] + [0,0,0,-128,-112,4,0,0,85,0] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,0,0,7,0,0,0] + [85,1,0,0,24,0,0,0,-109,1] + [0,0,50,0,0,0,62,0,0,0] + [0,0,0,0,1,0,0,0,2,0] + [0,0,-68,20,0,0,0,0,0,-128] + [64,0,0,0,62,0,0,0,26,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-1,127,0,0,25,0,0,0,0,0] + [0,0,9,0,0,0,-24,1,0,0] + [24,0,0,0,38,2,0,0,50,0] + [0,0,62,0,0,0,0,0,0,0] + [1,0,0,0,2,0,0,0,-65,20] + [0,0,0,0,0,-128,-112,4,0,0] + [-125,0,0,0,26,0,0,0,-106,0] + [0,0,-56,0,0,0,-1,127,0,0] + [25,0,0,0,0,0,0,0,2,0] + [0,0,-81,1,0,0,50,0,0,0] + [50,2,0,0,76,0,0,0,-125,0] + [0,0,0,0,0,0,0,0,0,0] + [2,0,0,0,-64,20,0,0,0,0] + [0,-128,-111,0,0,0,62,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,0,0,8,0,0,0,-109,1] + [0,0,24,0,0,0,-24,1,0,0] + [50,0,0,0,62,0,0,0,0,0] + [0,0,1,0,0,0,2,0,0,0] + [-63,20,0,0,0,0,0,-128,80,2] + [0,0,62,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,25,0,0,0,0,0,0,0] + [1,0,0,0,50,2,0,0,50,0] + [0,0,112,2,0,0,76,0,0,0] + [62,0,0,0,0,0,0,0,0,0] + [0,0,2,0,0,0,-76,20,0,0] + [0,0,0,-128,-112,4,0,0,13,1] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,0,0,4,0,0,0] + [-2,-1,-1,-1,-2,-1,-1,-1,22,3] + [0,0,23,0,0,0,13,1,0,0] + [0,0,0,0,1,0,0,0,5,0] + [0,0,30,-24,0,0,30,-24,0,0] + [1,0,0,0,-1,127,0,0,16,-113] + [64,0,19,0,0,0,0,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,93,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,4,0,0,0] + [-96,15,0,0,30,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,-113,64,0] + [-111,3,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,24,3,0,0,-106,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [24,3,0,0,93,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-95,15,0,0] + [30,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,32,-31] + [121,0,0,-116,116,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,24,3,0,0] + [93,0,0,0,-106,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-94,15,0,0,30,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,32,-31,121,0,0,-116] + [116,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,93,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-93,15] + [0,0,30,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-112,-62,30,6,0,-116,116,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,24,3] + [0,0,93,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,30,-24,0,0,30,-24,0,0] + [2,0,0,0,-1,127,0,0,16,-113] + [64,0,19,0,0,0,0,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,90,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,4,0,0,0] + [-92,15,0,0,30,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,-113,64,0] + [-111,3,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [80,76,-18,1,0,0,0,0,0,0] + [0,0,24,3,0,0,-106,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [24,3,0,0,90,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-91,15,0,0] + [30,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,80,80,-18,1] + [0,0,0,0,0,0,0,0,0,0] + [0,0,112,84,-18,1,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,24,3,0,0] + [90,0,0,0,-106,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-90,15,0,0,30,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,-128,0,0,0,0,0,0,0] + [0,0,0,0,0,86,-18,1,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,90,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-89,15] + [0,0,30,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,-32,83] + [-18,1,0,0,0,0,0,0,0,0] + [-96,82,-18,1,-44,83,-18,1,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,24,3] + [0,0,90,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,28,-24,0,0,29,-24,0,0] + [3,0,0,0,-1,127,0,0,16,79] + [0,0,18,0,0,0,0,16,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,-106,0,0,0] + [-106,0,0,0,37,1,0,0,0,0] + [0,0,0,0,0,0,2,0,0,0] + [29,-24,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,16,79,64,0] + [-109,0,0,0,0,16,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-108,0,0,0,-56,0,0,0] + [-56,0,0,0,4,0,0,0,-88,15] + [0,0,29,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,79,64,0,-111,3] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,-80,116] + [31,6,0,0,0,0,0,0,0,0] + [-128,0,0,0,-84,84,-18,1,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-110,0,0,0] + [-108,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-87,15,0,0,29,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,47,64,0,-111,1,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,-128,119,31,6,0,0] + [0,0,0,0,0,0,64,1,0,0] + [-12,49,-23,1,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,0,0] + [0,0,-110,0,0,0,-108,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-86,15,0,0,29,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [32,-31,121,0,0,0,0,0,0,0] + [0,0,0,2,0,0,84,50,-23,1] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-108,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-85,15,0,0] + [29,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,-24,80] + [-18,1,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [0,0,0,0,-110,0,0,0,-108,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [28,-24,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,16,47,64,0] + [-109,0,0,0,0,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-111,0,0,0,-56,0,0,0] + [-56,0,0,0,6,0,0,0,-84,15] + [0,0,28,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,34,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,80,49] + [-18,1,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-110,0,0,0] + [-111,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-83,15,0,0,28,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,47,64,0,-111,3,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,80,49,-18,1,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,0,0] + [0,0,-110,0,0,0,-111,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-82,15,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [80,49,-18,1,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-111,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-81,15,0,0] + [28,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + 16711689 + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [0,0,0,0,-110,0,0,0,-111,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-80,15,0,0,28,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,65,0,0,0,0,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,0,0,0,0] + [-110,0,0,0,-111,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-79,15] + [0,0,28,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,32,-31] + [121,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-110,0,0,0] + [-111,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-77,15,0,0,30,-24,0,0,4,0] + [0,0,-1,127,0,0,-68,-113,64,0] + [17,0,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [-64,-70,30,6,0,0,0,0,0,0] + [0,0,24,3,0,0,-106,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-126,2,0,0,85,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,28,-24,0,0] + [28,-24,0,0,5,0,0,0,-1,127] + [0,0,16,31,64,0,19,0,0,0] + [0,16,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-106,0,0,0,-76,0,0,0,-48,0] + [0,0,-56,0,0,0,-56,0,0,0] + [2,0,0,0,-56,15,0,0,28,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,31,64,0,-111,3,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,96,-74,30,6,0,0] + [0,0,0,0,0,0,0,1,0,0] + [-44,49,-23,1,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,-56,0,0,0,-106,0] + [0,0,-76,0,0,0,-48,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-55,15,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [32,-31,121,0,0,0,0,0,0,0] + [0,0,-64,1,0,0,52,50,-23,1] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,-106,0,0,0,-76,0] + [0,0,-48,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,0,0,0,0] + [0,0] + + + 20 + + + C:\twl\twlsdk_bak\build\tests\os\_ARM7-alarm-2\bin\ARM7-TS\Release + + L "C:\nitro-sdk\my_demos\sdk_demos\sound_0_cross\ARM7\bin\ARM7-TS\Release\sub.nef" + L "C:\nitro-sdk\my_demos\sdk_demos\SoundDMA_041012\ARM7\bin\ARM7-TS\Release\sub.nef" + L "C:\ctr\fi4\demos\sample\ARM7\bin\ARM7-TS\Debug\sub.nef" + L "C:\nitro-sdk\my_demos\sdk_demos\arm7_simple\bin\ARM7-TS\Release\arm7_simple.elf" + L "C:\twl\twlsdk_bak\build\tests\os\_ARM7-alarm-2\bin\ARM7-TS\Release\main.elf" + L "C:\twl\twlsdk_bak\build\tests\os\_ARM7-alarm-2\bin\ARM9-TS\Release\main.axf" + L "C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\main.axf" + BP .OS_InitLock+59 + V [OSEMU.C] + V [OS_PRINTF_TWL.C] + ZV UNDEF=ENABLE + BP .SDK_STATIC_TEXT_START+7 + ZV IRQ=ENABLE + BP .SDK_STATIC_START+37 + BP .SDK_STATIC_START+45 + BP .SDK_STATIC_START+54 + L "C:\twl\twlsdk_bak\build\tests\os\_ARM7-alarm-2\bin\ARM7-TS\Release\main.axf" + V [CRT0.C] + + 3.9Beta + + 0 + + + + + 0 + 0 + 0 + C:\Program Files\Hidemaru\Hidemaru.exe + /J%line_no% %file_name% + 0 + 0 + + + C:\twl\twlsdk_bak\build\tests\os\_ARM7-alarm-2\bin\ARM7-TS\Release\main.axf + + + 5 + 0 + 0 + + + C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\main.axf + + + 5 + 0 + 0 + + + C:\twl\twlsdk_bak\build\tests\os\_ARM7-alarm-2\bin\ARM9-TS\Release\main.axf + + + 5 + 0 + 0 + + + C:\twl\twlsdk_bak\build\tests\os\_ARM7-alarm-2\bin\ARM7-TS\Release\main.elf + + + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 9 + [0,-128,0,0,0,80,37,105,0,16,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0] + [0,-128,0,0,0,0,0,0,0,16,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0] + [0,-128,0,0,0,0,0,0,0,16,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0] + [0,-128,0,0,0,80,37,105,0,16,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0] + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + <0> + + <1> + + <2> + + <3> + + + + + + + + + 0,0 + + + + + + + + OS_Init + OS_TPrintf + + OS_Init + + + + + + + 0x6000009F + + + + + + + + + + + + + + + + + + + + + + + + 0x037FA0A4 + + 0x037FA0A4 + + + 0 + 0 + 1 + 1 + 2 + 2 + 4 + 2 + 0 + 1 + 1 + 0 + + 3,3,3 + + 16 + -1 + + R1,037F8000,MEM,/NC + + + + ZV %select{RESET|UNDEF|SWI|P_ABORT|D_ABORT|IRQ|FIQ}(ベクタ名;Vector name)=%select{ENABLE|DISABLE}(状態;Status) + 5 + -1 + 0 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + + + + (ARM) + TWL_ARM9 + + diff --git a/tools/partner_mlt/core1/JETCTR.CFG b/tools/partner_mlt/core1/JETCTR.CFG new file mode 100644 index 0000000..453786f --- /dev/null +++ b/tools/partner_mlt/core1/JETCTR.CFG @@ -0,0 +1,142 @@ +; ホストインタフェース +; ホストパソコンとPARTNER-CTRを接続するインタフェースの種類やアドレスを設定します。 +; インタフェースの種類はUSB接続かNetwork接続が選択できます。Model10/20はUSB接続のみ。 +; Ex. USB接続の場合(単体) +; PORT ADDRESS USB +; Ex. USB接続の場合(複数台のPARTNER-CTRが同一のPCに接続されている場合) +; PORT ADDRESS USB:本体シリアルナンバー +; 本体底面記載のシリアルナンバーを記述することで機器の選択ができます。 +; Ex. Network接続の場合 +; PORT ADDRESS NET:xxx.xxx.xxx.xxx +; NET: に続けて xxx部分にIPアドレスを記述します。 +; +;PORT ADDRESS USB +;PORT ADDRESS USB:F0100010 +;PORT ADDRESS NET:192.168.1.11 +PORT ADDRESS USB + + +; J_FRQ +; JTAGクロック周波数を設定します。通常はAUTOを設定してください。 +; 周波数のほかに、オプションでTDO信号のサンプルタイミングの指定もできます。 +; Ex. 自動設定の場合 +; J_FRQ AUTO +; Ex. アダプティブモードの場合 +; RTCK信号が配線されている必要があります。JTAGクロック周波数はターゲット +; の状態に応じて自動追従します。 +; J_FRQ ADPT ... 通常設定 +; J_FRQ ADPTX ... SleepなどでRTCKが停止する場合 +; Ex.マニュアル設定 +; J_FRQ 16 ... 16MHz +; J_FRQ 200K,2 ... 200KHz , TDOサンプルモード2(立ち上がりエッジ) +; J_FRQ 50,1 ... 50MHz , TDOサンプルモード1(遅延) +; J_FRQ 6.6,0 ... 6.6MHz , TDOサンプルモード0(立下りエッジ) +; CTRでは、通常 ADPTX を設定してください +;J_FRQ AUTO +;J_FRQ ADPT +;J_FRQ 16,1 +;J_FRQ 8 +;J_FRQ 1 +;J_FRQ 200K +;J_FRQ ADPTX +J_FRQ ADPTX + + +; J_VCC +; JTAG信号の電圧を指定します。1.8V/2.5V/3V/3.3V/5Vのいずれかを設定します。 +; ターゲットCPUのJTAG端子のI/O電源電圧を設定してください。 +; CTRのMG20(メインプロセッサ)では1.8Vを設定 +; CTRのIOP(IOプロセッサ)では3.3Vを設定 +; Ex. +; J_VCC 5 +; J_VCC 3.3 +; J_VCC 3.0 +; J_VCC 2.5 +; J_VCC 1.8 +;J_VCC 3.3 +;J_VCC 1.8 +J_VCC 3.3 + + +; CPU名の指定 +; CTR MG20は 11MPC,0 を設定 +; CTR IOPは 946T,1 を設定 +;CPU CORE 946T,1 +;CPU CORE 11MPC,0 +;CPU CORE 70T,0 +CPU CORE 70T,0 + + +; JTAG chain config +; JTAG カスケード接続情報の設定 +; J_CONFIG チップ数,チップ位置(TDO側=0),IR_lenビット数(TDO側),IR_lenビット数(TDI側) +; 単独で接続されている場合(通常)は、設定しません。 +; CTRでJTAGカスケード接続の場合は以下のように設定します +; ex. J_CONFIG 2,0,0,5 -- カスケード IOP +; ex. J_CONFIG 2,1,4,0 -- カスケード MG20 +;J_CONFIG 2,0,0,5 +;J_CONFIG 2,1,4,0 +;J_CONFIG 2,0,4,4 +J_CONFIG 2,0,4,4 + + +; CARD_ID +; CARD ROM のIDを設定します。カードのタイプやROM容量の設定です。 +; NTR TYPE1 64Mbit : 0x000007c2 +; NTR TYPE1 128Mbit : 0x00000fc2 +; NTR TYPE1 256Mbit : 0x00001fc2 +; NTR TYPE1 512Mbit : 0x00003fc2 +; NTR TYPE1 1Gbit : 0x00007fc2 +; NTR TYPE1 2Gbit : 0x0000ffc2 +; NTR TYPE1 4Gbit : 0x0000fec2 +; NTR TYPE2 64Mbit : 0x800007c2 +; NTR TYPE2 128Mbit : 0x80000fc2 +; NTR TYPE2 256Mbit : 0x80001fc2 +; NTR TYPE2 512Mbit : 0x80003fc2 +; NTR TYPE2 1Gbit : 0x80007fc2 +; NTR TYPE2 2Gbit : 0x8000ffc2 +; NTR TYPE2 4Gbit : 0x8000fec2 +;CTR_CARD_ID 0x0000ffc2 +;CTR_CARD_ID 0x0000fec2 +CTR_CARD_ID 0x0000ffc2 + + +; CTR RST BOOT mode +; デバッガ起動時と初期化時に、JTAGポートが使用可能になるまでの待ち時間設定 +; ex. CTR_RST_MODE WAIT ... ダイアログメッセージを出して wait +; ex. CTR_RST_MODE NO_SRST ... 初期化時にリセットを行わない +; ex. CTR_RST_MODE 1 ... 1秒の待ち時間設定 +; 通常は 1 を設定 +;CTR_RST_MODE WAIT +;CTR_RST_MODE NO_SRST +;CTR_RST_MODE 1 +;CTR_RST_MODE 0 +CTR_RST_MODE NO_SRST + + +; バーチャルリンク(VLINK)の指定です。 +; VLINK OFF .. バーチャルリンクを使用しません +; VLINK CPU .. JTAGでバーチャルリンクを使用します +;VLINK CPU +;VLINK OFF +VLINK CPU + + +; JTAG chain config +; JTAG カスケード接続情報の設定 +; J_CONFIG チップ数,チップ位置(TDO側=0),IR_lenビット数(TDO側),IR_lenビット数(TDI側) +; 単独で接続されている場合(通常)は、設定しません。 +;J_CONFIG 3,1,6,8 +;J_CONFIG 2,1,4,0 +J_CONFIG 2,0,4,4 + + +; PARTNERのコマンドでアクセス可能なメモリ領域(最大20領域) +; MAP 開始アドレス,終了アドレス +; PARTNERのコマンドでアクセス可能な範囲を開始アドレスと終了アドレスで指定します。 +; +; EX. MAP 10000000,1000FFFF +; MAP FFF00000,FFFFFFFF +MAP 00000000,ffffffff + + diff --git a/tools/partner_mlt/core1/JETCTR.JPX b/tools/partner_mlt/core1/JETCTR.JPX new file mode 100644 index 0000000..55bb3c0 --- /dev/null +++ b/tools/partner_mlt/core1/JETCTR.JPX @@ -0,0 +1,3397 @@ + + + + + + + [0,193,316,257] + 0 + 4 + [16449488,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,257,316,322] + 0 + 5 + [15269864,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,330,329,397] + 0 + 13 + [15269864,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,396,329,463] + 0 + 11 + [15269864,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,462,329,529] + 0 + 5 + [15269864,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [406,0,632,322] + 0 + 10 + [13172735,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [386,0,498,353] + 0 + 16 + [13172735,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [329,353,441,529] + 0 + 7 + [13172735,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [441,0,553,176] + 0 + 6 + [13172735,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [359,151,438,366] + 0 + 1 + [12319487,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [395,0,474,322] + 0 + 6 + [16769506,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [474,0,632,108] + 0 + 7 + [15264511,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [474,108,632,214] + 0 + 8 + [14015483,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [452,189,604,282] + 0 + 3 + [16511980,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [474,214,632,322] + 0 + 9 + [15856872,2500134,16711680,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [156,429,644,470] + 0 + 0 + [16777215,0,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,214,406,322] + 0 + 12 + [15663102,2500134,16711680,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,406,214] + 0 + 11 + [15773920,2500134,16711680,0] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [450,85,1404,685] + 0 + 0 + [98,700,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,632,322] + 0 + 0 + [-392634,53347438,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + + [0,193,316,257] + 0 + 4 + [16449488,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,257,316,322] + 0 + 5 + [15269864,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,330,329,397] + 0 + 13 + [15269864,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,396,329,463] + 0 + 11 + [15269864,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,462,329,529] + 0 + 5 + [15269864,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [406,0,632,322] + 0 + 10 + [13172735,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [386,0,498,353] + 0 + 16 + [13172735,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [329,353,441,529] + 0 + 7 + [13172735,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [441,0,553,176] + 0 + 6 + [13172735,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [359,151,438,366] + 0 + 1 + [12319487,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [395,0,474,322] + 0 + 6 + [16769506,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [474,0,632,108] + 0 + 7 + [15264511,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [474,108,632,214] + 0 + 8 + [14015483,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [452,189,604,282] + 0 + 3 + [16511980,2500134,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [474,214,632,322] + 0 + 9 + [15856872,2500134,16711680,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [156,429,644,470] + 0 + 0 + [16777215,0,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,214,406,322] + 0 + 12 + [15663102,2500134,16711680,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,406,214] + 0 + 11 + [16774376,2500134,16711680,0] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,800,600] + 0 + 0 + [98,700,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,632,322] + 0 + 0 + [-392634,53347438,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16449488,2500134,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16449488,2500134,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16449488,2500134,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + + + [0,193,316,257] + 0 + 4 + [33792,16777215,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,257,316,322] + 0 + 5 + [65280,0,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,330,329,397] + 0 + 13 + [65280,0,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,396,329,463] + 0 + 11 + [65280,0,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,462,329,529] + 0 + 5 + [65280,0,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [406,0,632,322] + 0 + 10 + [65535,16727552,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [386,0,498,353] + 0 + 16 + [65535,16727552,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [329,353,441,529] + 0 + 7 + [65535,16727552,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [441,0,553,176] + 0 + 6 + [65535,16727552,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [359,151,438,366] + 0 + 1 + [65535,0,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [395,0,474,322] + 0 + 6 + [12639316,0,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [474,0,632,108] + 0 + 7 + [16338,16777215,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [474,108,632,214] + 0 + 8 + [11564800,16777215,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [452,189,604,282] + 0 + 3 + [20224,16777215,255,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [474,214,632,322] + 0 + 9 + [20224,16777215,16776960,16711856] + 2 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [156,429,644,470] + 0 + 0 + [16777215,0,255,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,214,406,322] + 0 + 12 + [0,16777215,16776960,16711856] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,406,214] + 0 + 11 + [16711680,16777215,16776960,0] + 1 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,800,600] + 0 + 0 + [98,700,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,632,322] + 0 + 0 + [-392634,53347438,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + + + [0,0,759,178] + 0 + 10 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,454,40] + 0 + 1 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,43] + 0 + 13 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,43] + 0 + 11 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,43] + 0 + 5 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,178] + 0 + 9 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,43] + 0 + 16 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,43] + 0 + 7 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,43] + 0 + 6 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,238] + 0 + 4 + [16777215,16711680,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,178] + 0 + 2 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,43] + 0 + 3 + [16777215,16711680,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,77] + 0 + 7 + [16777215,16711680,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,43] + 0 + 6 + [16777215,16711680,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,190,40] + 0 + 8 + [16777215,16711680,16777088,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,482,24] + 0 + 0 + [16777215,16711680,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,561,178] + 0 + 11 + [16777215,16711680,16776960,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,561,178] + 0 + 12 + [16777215,16711680,16776960,0] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,800,600] + 0 + 0 + [725,1546,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,0,761,436] + 0 + 0 + [-392634,53347438,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16777215,16711680,255,16744703] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + [0,0,0,0,0] + [0,0,0,0,0] + [0,0,0,0,0] + [0,0,0,0,0] + [0,0,0,0,0] + + [0,317,330,423] + 0 + 8 + [16449488,2500134,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16449488,2500134,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + + [0,317,330,423] + 0 + 8 + [16449488,2500134,255,16711856] + 0 + [-12,0,400,0,3,2,1,49,-128],MS ゴシック + + [0,0,0,0,0] + + + 5724 + [39,80,114,111,102,45,85,73,83,32] + [40,118,46,32,50,46,53,46,49,46] + [48,41,32,99,111,110,116,114,111,108] + [32,98,97,114,32,115,116,97,116,101] + [0,1,5,2,5,2,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,19,52,53,48,44,56] + [53,44,49,52,48,52,44,54,56,53] + [44,49,44,48,2,0,0,0,64,6] + [0,0,-80,4,0,0,19,0,1,-24] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,127,0,0,0,0,0,0] + [0,0,-54,15,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,-70,2,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,-78,3,0,0] + [24,0,0,0,4,32,0,0,0,0] + [0,-128,0,0,0,0,0,0,-75,20] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,24,0] + [0,0,72,0,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,24,0] + [0,0,85,0,0,0,50,0,0,0] + [4,32,0,0,0,0,0,-128,0,0] + [0,0,0,0,-74,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [85,0,0,0,24,0,0,0,118,0] + [0,0,1,0,0,0,0,0,0,0] + [85,0,0,0,24,0,0,0,-40,0] + [0,0,50,0,0,0,4,32,0,0] + [0,0,0,-128,0,0,0,0,0,0] + [-73,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,-40,0,0,0] + [24,0,0,0,49,0,0,0,1,0] + [0,0,0,0,0,0,-40,0,0,0] + [24,0,0,0,22,1,0,0,50,0] + [0,0,4,32,0,0,0,0,0,-128] + [0,0,0,0,0,0,-70,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,22,1,0,0,24,0,0,0] + [49,0,0,0,1,0,0,0,0,0] + [0,0,22,1,0,0,24,0,0,0] + [84,1,0,0,50,0,0,0,4,32] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,-69,20,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,23,1] + [0,0,24,0,0,0,49,0,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,4,32,0,0,0,0] + [0,-128,0,0,0,0,0,0,-66,20] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,76,0] + [0,0,-107,0,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,76,0] + [0,0,-94,0,0,0,102,0,0,0] + [4,32,0,0,0,0,0,-128,0,0] + [0,0,0,0,-72,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [84,1,0,0,24,0,0,0,49,0] + [0,0,1,0,0,0,0,0,0,0] + [84,1,0,0,24,0,0,0,-110,1] + [0,0,50,0,0,0,4,32,0,0] + [0,0,0,-128,0,0,0,0,0,0] + [-71,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,-110,1,0,0] + [24,0,0,0,72,0,0,0,1,0] + [0,0,0,0,0,0,-110,1,0,0] + [24,0,0,0,-25,1,0,0,50,0] + [0,0,4,32,0,0,0,0,0,-128] + [0,0,0,0,0,0,-68,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,37,2,0,0,24,0,0,0] + [49,0,0,0,1,0,0,0,0,0] + [0,0,37,2,0,0,24,0,0,0] + [99,2,0,0,50,0,0,0,4,32] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,-65,20,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,-94,0] + [0,0,76,0,0,0,118,0,0,0] + [1,0,0,0,0,0,0,0,-94,0] + [0,0,76,0,0,0,37,1,0,0] + [102,0,0,0,4,32,0,0,0,0] + [0,-128,0,0,0,0,0,0,-64,20] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,-25,1,0,0,24,0] + [0,0,49,0,0,0,1,0,0,0] + [0,0,0,0,-25,1,0,0,24,0] + [0,0,37,2,0,0,50,0,0,0] + [4,32,0,0,0,0,0,-128,0,0] + [0,0,0,0,-63,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [37,1,0,0,76,0,0,0,49,0] + [0,0,1,0,0,0,0,0,0,0] + [37,1,0,0,76,0,0,0,99,1] + [0,0,102,0,0,0,4,32,0,0] + [0,0,0,-128,0,0,0,0,0,0] + [-76,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [50,0,0,0,0,1,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [50,0,0,0,13,1,0,0,76,0] + [0,0,4,32,0,0,0,0,0,-128] + [0,0,0,0,0,0,27,-24,0,0] + [1,0,0,0,0,0,0,0,1,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,127,0,0,0,0,0,0,19,0] + [0,0,0,0,-54,15,0,0,0,0] + [0,0,-75,20,0,0,-74,20,0,0] + [-73,20,0,0,-70,20,0,0,-72,20] + [0,0,-71,20,0,0,-64,20,0,0] + [-68,20,0,0,-69,20,0,0,0,0] + [0,0,-76,20,0,0,0,0,0,0] + [-66,20,0,0,-65,20,0,0,-63,20] + [0,0,0,0,0,0,30,-24,0,0] + [1,0,0,0,0,0,0,0,1,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,127,0,0,0,0,0,0,1,0] + [0,0,0,0,28,-24,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,127] + [0,0,0,0,0,0,1,0,0,0] + [0,0,29,-24,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,127,0,0] + [0,0,0,0,1,0,0,0,0,0] + [14,0,0,0,0,0,-54,15,0,0] + [0,0,0,-128,0,0,0,0,-64,2] + [0,0,24,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,23,0] + [0,0,0,0,2,0,0,0,-2,-1] + [-1,-1,-2,-1,-1,-1,22,3,0,0] + [21,0,0,0,24,3,0,0,0,0] + [0,0,1,0,0,0,0,0,-75,20] + [0,0,0,0,0,-128,0,0,0,0] + [85,0,0,0,26,0,0,0,-106,0] + [0,0,-56,0,0,0,-1,127,0,0] + [25,0,0,0,0,0,2,0,0,0] + [-2,-1,-1,-1,-2,-1,-1,-1,22,3] + [0,0,23,0,0,0,85,0,0,0] + [0,0,0,0,1,0,0,0,0,0] + [-74,20,0,0,0,0,0,-128,0,0] + [0,0,-125,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,25,0,0,0,0,0,3,0] + [0,0,1,0,0,0,24,0,0,0] + [86,0,0,0,50,0,0,0,85,0] + [0,0,0,0,0,0,1,0,0,0] + [0,0,-73,20,0,0,0,0,0,-128] + [0,0,0,0,62,0,0,0,26,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-1,127,0,0,25,0,0,0,0,0] + [4,0,0,0,86,0,0,0,24,0] + [0,0,-39,0,0,0,50,0,0,0] + [62,0,0,0,0,0,0,0,1,0] + [0,0,0,0,-70,20,0,0,0,0] + [0,-128,0,0,0,0,62,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,5,0,0,0,-39,0,0,0] + [24,0,0,0,23,1,0,0,50,0] + [0,0,62,0,0,0,0,0,0,0] + [1,0,0,0,0,0,-69,20,0,0] + [0,0,0,-128,0,0,0,0,62,0] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,1,0,0,0,-66,20,0,0] + [0,0,0,-128,0,0,0,0,-94,0] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,2,0,0,0,-2,-1] + [-1,-1,-2,-1,-1,-1,22,3,0,0] + [23,0,0,0,-94,0,0,0,0,0] + [0,0,1,0,0,0,0,0,-72,20] + [0,0,0,0,0,-128,0,0,0,0] + [62,0,0,0,26,0,0,0,-106,0] + [0,0,-56,0,0,0,-1,127,0,0] + [25,0,0,0,0,0,6,0,0,0] + [24,1,0,0,24,0,0,0,86,1] + [0,0,50,0,0,0,62,0,0,0] + [0,0,0,0,1,0,0,0,0,0] + [-71,20,0,0,0,0,0,-128,0,0] + [0,0,85,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,25,0,0,0,0,0,7,0] + [0,0,85,1,0,0,24,0,0,0] + [-109,1,0,0,50,0,0,0,62,0] + [0,0,0,0,0,0,1,0,0,0] + [0,0,-68,20,0,0,0,0,0,-128] + [0,0,0,0,62,0,0,0,26,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-1,127,0,0,25,0,0,0,0,0] + [9,0,0,0,-24,1,0,0,24,0] + [0,0,38,2,0,0,50,0,0,0] + [62,0,0,0,0,0,0,0,1,0] + [0,0,0,0,-65,20,0,0,0,0] + [0,-128,0,0,0,0,-125,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,3,0,0,0,1,0,0,0] + [76,0,0,0,-93,0,0,0,102,0] + [0,0,-125,0,0,0,0,0,0,0] + [1,0,0,0,0,0,-64,20,0,0] + [0,0,0,-128,0,0,0,0,62,0] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,8,0,0,0,-109,1] + [0,0,24,0,0,0,-24,1,0,0] + [50,0,0,0,62,0,0,0,0,0] + [0,0,1,0,0,0,0,0,-63,20] + [0,0,0,0,0,-128,0,0,0,0] + [62,0,0,0,26,0,0,0,-106,0] + [0,0,-56,0,0,0,-1,127,0,0] + [25,0,0,0,0,0,4,0,0,0] + [-93,0,0,0,76,0,0,0,38,1] + [0,0,102,0,0,0,62,0,0,0] + [0,0,0,0,1,0,0,0,0,0] + [-76,20,0,0,0,0,0,-128,0,0] + [0,0,13,1,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,25,0,0,0,0,0,2,0] + [0,0,-2,-1,-1,-1,-2,-1,-1,-1] + [22,3,0,0,23,0,0,0,13,1] + [0,0,0,0,0,0,1,0,0,0] + [5,0,0,0,30,-24,0,0,31,-24] + [0,0,0,0,0,0,-1,127,0,0] + [17,47,64,0,51,0,0,0,0,32] + [0,0,-15,3,0,0,88,2,0,0] + [-15,3,0,0,88,2,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-15,3,0,0,88,2] + [0,0,-67,4,0,0,52,3,0,0] + [0,57,8,-106,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,-78,3,0,0,59,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-56,0,0,0,-56,0,0,0,4,0] + [0,0,-96,15,0,0,30,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,-113] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,24,3,0,0,120,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,-78,3,0,0,59,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-95,15,0,0,30,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-78,3,0,0,59,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-94,15] + [0,0,30,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,-78,3] + [0,0,59,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-93,15,0,0] + [30,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,3,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,-78,3,0,0] + [59,0,0,0,-106,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,30,-24,0,0,30,-24] + [0,0,1,0,0,0,-1,127,0,0] + [16,-113,64,0,19,0,0,0,0,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,-78,3,0,0,120,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-56,0,0,0,-56,0,0,0,4,0] + [0,0,-92,15,0,0,30,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,-113] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,24,3,0,0,120,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,-78,3,0,0,120,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-91,15,0,0,30,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-78,3,0,0,120,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-90,15] + [0,0,30,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,3] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,-78,3] + [0,0,120,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-89,15,0,0] + [30,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-127,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,-78,3,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,-78,3,0,0] + [120,0,0,0,-106,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,28,-24,0,0,29,-24] + [0,0,2,0,0,0,-1,127,0,0] + [16,79,0,0,18,0,0,0,0,16] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,0,0,0,0,0,0] + [0,0,0,0,0,0,-106,0,0,0] + [12,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,-76,0,0,0,120,0] + [0,0,-57,0,0,0,76,1,0,0] + [0,0,0,0,0,0,0,0,2,0] + [0,0,29,-24,0,0,28,-24,0,0] + [0,0,0,0,-1,127,0,0,16,79] + [64,0,-109,0,0,0,0,16,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,0,0,0,0] + [-61,0,0,0,-54,0,0,0,-56,0] + [0,0,-56,0,0,0,4,0,0,0] + [-88,15,0,0,29,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,79,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-106,0,0,0,12,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-61,0] + [0,0,-54,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-87,15] + [0,0,29,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-61,0,0,0] + [-54,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-86,15,0,0] + [29,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [0,0,0,0,-61,0,0,0,-54,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-85,15,0,0,29,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,47,64,0,-111,3,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,0,0] + [0,0,-61,0,0,0,-54,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,28,-24,0,0,28,-24,0,0] + [0,0,0,0,-1,127,0,0,16,47] + [64,0,-109,0,0,0,0,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,0,0,0,0] + [-61,0,0,0,-126,0,0,0,-56,0] + [0,0,-56,0,0,0,6,0,0,0] + [-84,15,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,34,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-61,0] + [0,0,-126,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-83,15] + [0,0,28,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-61,0,0,0] + [-126,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-82,15,0,0] + [28,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,3,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [0,0,0,0,-61,0,0,0,-126,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-81,15,0,0,28,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,47,64,0,-111,1,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,0,0] + [0,0,-61,0,0,0,-126,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-80,15,0,0,28,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,0,0,0,0] + [-61,0,0,0,-126,0,0,0,-56,0] + 16449545 + [0,0,-56,0,0,0,0,0,0,0] + [-79,15,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-61,0] + [0,0,-126,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-77,15] + [0,0,30,-24,0,0,3,0,0,0] + [-1,127,0,0,-68,-113,64,0,17,0] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-126,2,0,0,120,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,-21,2] + [0,0,120,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,28,-24,0,0] + [28,-24,0,0,4,0,0,0,-1,127] + [0,0,16,31,64,0,19,0,0,0] + [0,16,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-106,0,0,0,-76,0,0,0,-44,0] + [0,0,-56,0,0,0,-56,0,0,0] + [2,0,0,0,-56,15,0,0,28,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,31,64,0,-111,1,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,-56,0,0,0,-106,0] + [0,0,-76,0,0,0,-44,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-55,15,0,0,28,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,3,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,-106,0,0,0] + [-76,0,0,0,-44,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,96,-74,30,6,0,0] + [0,0,0,0,0,0,0,1,0,0] + [-44,49,-23,1,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,-56,0,0,0,-106,0] + [0,0,-76,0,0,0,-48,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-55,15,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [32,-31,121,0,0,0,0,0,0,0] + [0,0,-64,1,0,0,52,50,-23,1] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,-106,0,0,0,-76,0] + [0,0,-48,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,0,0,0,0] + [0,0] + 0 + + + 5988 + [39,80,114,111,102,45,85,73,83,32] + [40,118,46,32,50,46,53,46,53,46] + [48,41,32,99,111,110,116,114,111,108] + [32,98,97,114,32,115,116,97,116,101] + [0,5,5,2,5,2,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,15,48,44,48,44,56] + [48,48,44,54,48,48,44,49,44,48] + [2,0,0,0,64,6,0,0,-80,4] + [0,0,19,0,1,-24,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,127] + [0,0,0,0,0,0,0,0,-54,15] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,36,2,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,24,3,0,0,24,0,0,0] + [4,32,0,0,0,0,0,-128,-112,4] + [0,0,0,0,-75,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,24,0,0,0,72,0] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,24,0,0,0,85,0] + [0,0,50,0,0,0,4,32,0,0] + [0,0,0,-128,-111,0,0,0,0,0] + [-74,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,85,0,0,0] + [24,0,0,0,118,0,0,0,1,0] + [0,0,0,0,0,0,85,0,0,0] + [24,0,0,0,-40,0,0,0,50,0] + [0,0,4,32,0,0,0,0,0,-128] + [-64,0,0,0,0,0,-73,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,-40,0,0,0,24,0,0,0] + [49,0,0,0,1,0,0,0,0,0] + [0,0,-40,0,0,0,24,0,0,0] + [22,1,0,0,50,0,0,0,4,32] + [0,0,0,0,0,-128,-128,1,0,0] + [0,0,-70,20,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,22,1] + [0,0,24,0,0,0,49,0,0,0] + [1,0,0,0,0,0,0,0,22,1] + [0,0,24,0,0,0,84,1,0,0] + [50,0,0,0,4,32,0,0,0,0] + [0,-128,-112,4,0,0,0,0,-69,20] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,23,1,0,0,24,0] + [0,0,49,0,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-96,97,-18,1,-44,98,-18,1] + [4,32,0,0,0,0,0,-128,-112,4] + [0,0,0,0,-66,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [13,1,0,0,50,0,0,0,-107,0] + [0,0,1,0,0,0,27,-24,0,0] + [13,1,0,0,50,0,0,0,-81,1] + [0,0,76,0,0,0,4,32,0,0] + [0,0,0,-128,-112,4,0,0,0,0] + [-72,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,84,1,0,0] + [24,0,0,0,49,0,0,0,1,0] + [0,0,0,0,0,0,84,1,0,0] + [24,0,0,0,-110,1,0,0,50,0] + [0,0,4,32,0,0,0,0,0,-128] + [-112,4,0,0,0,0,-71,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,-110,1,0,0,24,0,0,0] + [72,0,0,0,1,0,0,0,0,0] + [0,0,-110,1,0,0,24,0,0,0] + [-25,1,0,0,50,0,0,0,4,32] + [0,0,0,0,0,-128,-112,4,0,0] + [0,0,-68,20,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,37,2] + [0,0,24,0,0,0,49,0,0,0] + [1,0,0,0,0,0,0,0,37,2] + [0,0,24,0,0,0,99,2,0,0] + [50,0,0,0,4,32,0,0,0,0] + [0,-128,64,0,0,0,0,0,-65,20] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,-81,1,0,0,50,0] + [0,0,118,0,0,0,1,0,0,0] + [27,-24,0,0,-81,1,0,0,50,0] + [0,0,50,2,0,0,76,0,0,0] + [4,32,0,0,0,0,0,-128,-112,4] + [0,0,0,0,-64,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-25,1,0,0,24,0,0,0,49,0] + [0,0,1,0,0,0,0,0,0,0] + [-25,1,0,0,24,0,0,0,37,2] + [0,0,50,0,0,0,4,32,0,0] + [0,0,0,-128,-111,0,0,0,0,0] + [-63,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,50,2,0,0] + [50,0,0,0,49,0,0,0,1,0] + [0,0,0,0,0,0,50,2,0,0] + [50,0,0,0,112,2,0,0,76,0] + [0,0,4,32,0,0,0,0,0,-128] + [80,2,0,0,0,0,-76,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,50,0,0,0] + [0,1,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,50,0,0,0] + [13,1,0,0,76,0,0,0,4,32] + [0,0,0,0,0,-128,-112,4,0,0] + [0,0,27,-24,0,0,1,0,0,0] + [0,0,0,0,1,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,127,0,0] + [0,0,0,0,18,0,0,0,0,0] + [-54,15,0,0,0,0,0,0,-75,20] + [0,0,-74,20,0,0,-73,20,0,0] + [-70,20,0,0,-72,20,0,0,-71,20] + [0,0,-64,20,0,0,-68,20,0,0] + [-69,20,0,0,0,0,0,0,-76,20] + [0,0,-66,20,0,0,-65,20,0,0] + [-63,20,0,0,0,0,0,0,30,-24] + [0,0,1,0,0,0,0,0,0,0] + [1,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,127,0,0,0,0,0,0] + [1,0,0,0,0,0,28,-24,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,127,0,0,0,0,0,0,1,0] + [0,0,0,0,29,-24,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,127] + [0,0,0,0,0,0,1,0,0,0] + [0,0,14,0,0,0,2,0,0,0] + [-54,15,0,0,0,0,0,-128,-112,4] + [0,0,42,2,0,0,24,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,23,0,0,0,0,0,0,0] + [2,0,0,0,-2,-1,-1,-1,-2,-1] + [-1,-1,22,3,0,0,21,0,0,0] + [24,3,0,0,0,0,0,0,1,0] + [0,0,2,0,0,0,-75,20,0,0] + [0,0,0,-128,-111,0,0,0,85,0] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,0,0,2,0,0,0] + [-2,-1,-1,-1,-2,-1,-1,-1,22,3] + [0,0,23,0,0,0,85,0,0,0] + [0,0,0,0,1,0,0,0,2,0] + [0,0,-74,20,0,0,0,0,0,-128] + [-64,0,0,0,-125,0,0,0,26,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-1,127,0,0,25,0,0,0,0,0] + [0,0,3,0,0,0,1,0,0,0] + [24,0,0,0,86,0,0,0,50,0] + [0,0,85,0,0,0,0,0,0,0] + [1,0,0,0,2,0,0,0,-73,20] + [0,0,0,0,0,-128,-128,1,0,0] + [62,0,0,0,26,0,0,0,-106,0] + [0,0,-56,0,0,0,-1,127,0,0] + [25,0,0,0,0,0,0,0,4,0] + [0,0,86,0,0,0,24,0,0,0] + [-39,0,0,0,50,0,0,0,62,0] + [0,0,0,0,0,0,1,0,0,0] + [2,0,0,0,-70,20,0,0,0,0] + [0,-128,-112,4,0,0,62,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,0,0,5,0,0,0,-39,0] + [0,0,24,0,0,0,23,1,0,0] + [50,0,0,0,62,0,0,0,0,0] + [0,0,1,0,0,0,0,0,0,0] + [-69,20,0,0,0,0,0,-128,-112,4] + [0,0,62,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,1,0,0,0] + [2,0,0,0,-66,20,0,0,0,0] + [0,-128,-112,4,0,0,-94,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,0,0,3,0,0,0,15,1] + [0,0,50,0,0,0,-79,1,0,0] + [76,0,0,0,-94,0,0,0,0,0] + [0,0,0,0,0,0,2,0,0,0] + [-72,20,0,0,0,0,0,-128,-112,4] + [0,0,62,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,25,0,0,0,0,0,0,0] + [6,0,0,0,24,1,0,0,24,0] + [0,0,86,1,0,0,50,0,0,0] + [62,0,0,0,0,0,0,0,1,0] + [0,0,2,0,0,0,-71,20,0,0] + [0,0,0,-128,-112,4,0,0,85,0] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,0,0,7,0,0,0] + [85,1,0,0,24,0,0,0,-109,1] + [0,0,50,0,0,0,62,0,0,0] + [0,0,0,0,1,0,0,0,2,0] + [0,0,-68,20,0,0,0,0,0,-128] + [64,0,0,0,62,0,0,0,26,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-1,127,0,0,25,0,0,0,0,0] + [0,0,9,0,0,0,-24,1,0,0] + [24,0,0,0,38,2,0,0,50,0] + [0,0,62,0,0,0,0,0,0,0] + [1,0,0,0,2,0,0,0,-65,20] + [0,0,0,0,0,-128,-112,4,0,0] + [-125,0,0,0,26,0,0,0,-106,0] + [0,0,-56,0,0,0,-1,127,0,0] + [25,0,0,0,0,0,0,0,2,0] + [0,0,-81,1,0,0,50,0,0,0] + [50,2,0,0,76,0,0,0,-125,0] + [0,0,0,0,0,0,0,0,0,0] + [2,0,0,0,-64,20,0,0,0,0] + [0,-128,-111,0,0,0,62,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,0,0,8,0,0,0,-109,1] + [0,0,24,0,0,0,-24,1,0,0] + [50,0,0,0,62,0,0,0,0,0] + [0,0,1,0,0,0,2,0,0,0] + [-63,20,0,0,0,0,0,-128,80,2] + [0,0,62,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,25,0,0,0,0,0,0,0] + [1,0,0,0,50,2,0,0,50,0] + [0,0,112,2,0,0,76,0,0,0] + [62,0,0,0,0,0,0,0,0,0] + [0,0,2,0,0,0,-76,20,0,0] + [0,0,0,-128,-112,4,0,0,13,1] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,0,0,4,0,0,0] + [-2,-1,-1,-1,-2,-1,-1,-1,22,3] + [0,0,23,0,0,0,13,1,0,0] + [0,0,0,0,1,0,0,0,5,0] + [0,0,30,-24,0,0,30,-24,0,0] + [1,0,0,0,-1,127,0,0,16,-113] + [64,0,19,0,0,0,0,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,93,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,4,0,0,0] + [-96,15,0,0,30,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,-113,64,0] + [-111,3,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,24,3,0,0,-106,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [24,3,0,0,93,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-95,15,0,0] + [30,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,32,-31] + [121,0,0,-116,116,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,24,3,0,0] + [93,0,0,0,-106,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-94,15,0,0,30,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,32,-31,121,0,0,-116] + [116,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,93,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-93,15] + [0,0,30,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-112,-62,30,6,0,-116,116,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,24,3] + [0,0,93,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,30,-24,0,0,30,-24,0,0] + [2,0,0,0,-1,127,0,0,16,-113] + [64,0,19,0,0,0,0,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,90,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,4,0,0,0] + [-92,15,0,0,30,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,-113,64,0] + [-111,3,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [80,76,-18,1,0,0,0,0,0,0] + [0,0,24,3,0,0,-106,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [24,3,0,0,90,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-91,15,0,0] + [30,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,80,80,-18,1] + [0,0,0,0,0,0,0,0,0,0] + [0,0,112,84,-18,1,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,24,3,0,0] + [90,0,0,0,-106,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-90,15,0,0,30,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,-128,0,0,0,0,0,0,0] + [0,0,0,0,0,86,-18,1,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,90,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-89,15] + [0,0,30,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,-32,83] + [-18,1,0,0,0,0,0,0,0,0] + [-96,82,-18,1,-44,83,-18,1,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,24,3] + [0,0,90,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,28,-24,0,0,29,-24,0,0] + [3,0,0,0,-1,127,0,0,16,79] + [0,0,18,0,0,0,0,16,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,-106,0,0,0] + [-106,0,0,0,37,1,0,0,0,0] + [0,0,0,0,0,0,2,0,0,0] + [29,-24,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,16,79,64,0] + [-109,0,0,0,0,16,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-108,0,0,0,-56,0,0,0] + [-56,0,0,0,4,0,0,0,-88,15] + [0,0,29,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,79,64,0,-111,3] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,-80,116] + [31,6,0,0,0,0,0,0,0,0] + [-128,0,0,0,-84,84,-18,1,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-110,0,0,0] + [-108,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-87,15,0,0,29,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,47,64,0,-111,1,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,-128,119,31,6,0,0] + [0,0,0,0,0,0,64,1,0,0] + [-12,49,-23,1,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,0,0] + [0,0,-110,0,0,0,-108,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-86,15,0,0,29,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [32,-31,121,0,0,0,0,0,0,0] + [0,0,0,2,0,0,84,50,-23,1] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-108,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-85,15,0,0] + [29,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,-24,80] + [-18,1,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [0,0,0,0,-110,0,0,0,-108,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [28,-24,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,16,47,64,0] + [-109,0,0,0,0,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-111,0,0,0,-56,0,0,0] + [-56,0,0,0,6,0,0,0,-84,15] + [0,0,28,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,34,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,80,49] + [-18,1,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-110,0,0,0] + [-111,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-83,15,0,0,28,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,47,64,0,-111,3,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,80,49,-18,1,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,0,0] + [0,0,-110,0,0,0,-111,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-82,15,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [80,49,-18,1,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-111,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-81,15,0,0] + [28,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + 16711689 + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [0,0,0,0,-110,0,0,0,-111,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-80,15,0,0,28,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,65,0,0,0,0,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,0,0,0,0] + [-110,0,0,0,-111,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-79,15] + [0,0,28,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,32,-31] + [121,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-110,0,0,0] + [-111,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-77,15,0,0,30,-24,0,0,4,0] + [0,0,-1,127,0,0,-68,-113,64,0] + [17,0,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [-64,-70,30,6,0,0,0,0,0,0] + [0,0,24,3,0,0,-106,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-126,2,0,0,85,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,28,-24,0,0] + [28,-24,0,0,5,0,0,0,-1,127] + [0,0,16,31,64,0,19,0,0,0] + [0,16,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-106,0,0,0,-76,0,0,0,-48,0] + [0,0,-56,0,0,0,-56,0,0,0] + [2,0,0,0,-56,15,0,0,28,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,31,64,0,-111,3,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,96,-74,30,6,0,0] + [0,0,0,0,0,0,0,1,0,0] + [-44,49,-23,1,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,-56,0,0,0,-106,0] + [0,0,-76,0,0,0,-48,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-55,15,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [32,-31,121,0,0,0,0,0,0,0] + [0,0,-64,1,0,0,52,50,-23,1] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,-106,0,0,0,-76,0] + [0,0,-48,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,0,0,0,0] + [0,0] + + + 5988 + [39,80,114,111,102,45,85,73,83,32] + [40,118,46,32,50,46,53,46,53,46] + [48,41,32,99,111,110,116,114,111,108] + [32,98,97,114,32,115,116,97,116,101] + [0,5,5,2,5,2,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,15,48,44,48,44,56] + [48,48,44,54,48,48,44,49,44,48] + [2,0,0,0,64,6,0,0,-80,4] + [0,0,19,0,1,-24,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,127] + [0,0,0,0,0,0,0,0,-54,15] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,36,2,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,24,3,0,0,24,0,0,0] + [4,32,0,0,0,0,0,-128,-112,4] + [0,0,0,0,-75,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,24,0,0,0,72,0] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,24,0,0,0,85,0] + [0,0,50,0,0,0,4,32,0,0] + [0,0,0,-128,-111,0,0,0,0,0] + [-74,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,85,0,0,0] + [24,0,0,0,118,0,0,0,1,0] + [0,0,0,0,0,0,85,0,0,0] + [24,0,0,0,-40,0,0,0,50,0] + [0,0,4,32,0,0,0,0,0,-128] + [-64,0,0,0,0,0,-73,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,-40,0,0,0,24,0,0,0] + [49,0,0,0,1,0,0,0,0,0] + [0,0,-40,0,0,0,24,0,0,0] + [22,1,0,0,50,0,0,0,4,32] + [0,0,0,0,0,-128,-128,1,0,0] + [0,0,-70,20,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,22,1] + [0,0,24,0,0,0,49,0,0,0] + [1,0,0,0,0,0,0,0,22,1] + [0,0,24,0,0,0,84,1,0,0] + [50,0,0,0,4,32,0,0,0,0] + [0,-128,-112,4,0,0,0,0,-69,20] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,23,1,0,0,24,0] + [0,0,49,0,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-96,97,-18,1,-44,98,-18,1] + [4,32,0,0,0,0,0,-128,-112,4] + [0,0,0,0,-66,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [13,1,0,0,50,0,0,0,-107,0] + [0,0,1,0,0,0,27,-24,0,0] + [13,1,0,0,50,0,0,0,-81,1] + [0,0,76,0,0,0,4,32,0,0] + [0,0,0,-128,-112,4,0,0,0,0] + [-72,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,84,1,0,0] + [24,0,0,0,49,0,0,0,1,0] + [0,0,0,0,0,0,84,1,0,0] + [24,0,0,0,-110,1,0,0,50,0] + [0,0,4,32,0,0,0,0,0,-128] + [-112,4,0,0,0,0,-71,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,-110,1,0,0,24,0,0,0] + [72,0,0,0,1,0,0,0,0,0] + [0,0,-110,1,0,0,24,0,0,0] + [-25,1,0,0,50,0,0,0,4,32] + [0,0,0,0,0,-128,-112,4,0,0] + [0,0,-68,20,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,37,2] + [0,0,24,0,0,0,49,0,0,0] + [1,0,0,0,0,0,0,0,37,2] + [0,0,24,0,0,0,99,2,0,0] + [50,0,0,0,4,32,0,0,0,0] + [0,-128,64,0,0,0,0,0,-65,20] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,-81,1,0,0,50,0] + [0,0,118,0,0,0,1,0,0,0] + [27,-24,0,0,-81,1,0,0,50,0] + [0,0,50,2,0,0,76,0,0,0] + [4,32,0,0,0,0,0,-128,-112,4] + [0,0,0,0,-64,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-25,1,0,0,24,0,0,0,49,0] + [0,0,1,0,0,0,0,0,0,0] + [-25,1,0,0,24,0,0,0,37,2] + [0,0,50,0,0,0,4,32,0,0] + [0,0,0,-128,-111,0,0,0,0,0] + [-63,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,50,2,0,0] + [50,0,0,0,49,0,0,0,1,0] + [0,0,0,0,0,0,50,2,0,0] + [50,0,0,0,112,2,0,0,76,0] + [0,0,4,32,0,0,0,0,0,-128] + [80,2,0,0,0,0,-76,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,50,0,0,0] + [0,1,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,50,0,0,0] + [13,1,0,0,76,0,0,0,4,32] + [0,0,0,0,0,-128,-112,4,0,0] + [0,0,27,-24,0,0,1,0,0,0] + [0,0,0,0,1,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,127,0,0] + [0,0,0,0,18,0,0,0,0,0] + [-54,15,0,0,0,0,0,0,-75,20] + [0,0,-74,20,0,0,-73,20,0,0] + [-70,20,0,0,-72,20,0,0,-71,20] + [0,0,-64,20,0,0,-68,20,0,0] + [-69,20,0,0,0,0,0,0,-76,20] + [0,0,-66,20,0,0,-65,20,0,0] + [-63,20,0,0,0,0,0,0,30,-24] + [0,0,1,0,0,0,0,0,0,0] + [1,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,127,0,0,0,0,0,0] + [1,0,0,0,0,0,28,-24,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,127,0,0,0,0,0,0,1,0] + [0,0,0,0,29,-24,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,127] + [0,0,0,0,0,0,1,0,0,0] + [0,0,14,0,0,0,2,0,0,0] + [-54,15,0,0,0,0,0,-128,-112,4] + [0,0,42,2,0,0,24,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,23,0,0,0,0,0,0,0] + [2,0,0,0,-2,-1,-1,-1,-2,-1] + [-1,-1,22,3,0,0,21,0,0,0] + [24,3,0,0,0,0,0,0,1,0] + [0,0,2,0,0,0,-75,20,0,0] + [0,0,0,-128,-111,0,0,0,85,0] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,0,0,2,0,0,0] + [-2,-1,-1,-1,-2,-1,-1,-1,22,3] + [0,0,23,0,0,0,85,0,0,0] + [0,0,0,0,1,0,0,0,2,0] + [0,0,-74,20,0,0,0,0,0,-128] + [-64,0,0,0,-125,0,0,0,26,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-1,127,0,0,25,0,0,0,0,0] + [0,0,3,0,0,0,1,0,0,0] + [24,0,0,0,86,0,0,0,50,0] + [0,0,85,0,0,0,0,0,0,0] + [1,0,0,0,2,0,0,0,-73,20] + [0,0,0,0,0,-128,-128,1,0,0] + [62,0,0,0,26,0,0,0,-106,0] + [0,0,-56,0,0,0,-1,127,0,0] + [25,0,0,0,0,0,0,0,4,0] + [0,0,86,0,0,0,24,0,0,0] + [-39,0,0,0,50,0,0,0,62,0] + [0,0,0,0,0,0,1,0,0,0] + [2,0,0,0,-70,20,0,0,0,0] + [0,-128,-112,4,0,0,62,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,0,0,5,0,0,0,-39,0] + [0,0,24,0,0,0,23,1,0,0] + [50,0,0,0,62,0,0,0,0,0] + [0,0,1,0,0,0,0,0,0,0] + [-69,20,0,0,0,0,0,-128,-112,4] + [0,0,62,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,1,0,0,0] + [2,0,0,0,-66,20,0,0,0,0] + [0,-128,-112,4,0,0,-94,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,0,0,3,0,0,0,15,1] + [0,0,50,0,0,0,-79,1,0,0] + [76,0,0,0,-94,0,0,0,0,0] + [0,0,0,0,0,0,2,0,0,0] + [-72,20,0,0,0,0,0,-128,-112,4] + [0,0,62,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,25,0,0,0,0,0,0,0] + [6,0,0,0,24,1,0,0,24,0] + [0,0,86,1,0,0,50,0,0,0] + [62,0,0,0,0,0,0,0,1,0] + [0,0,2,0,0,0,-71,20,0,0] + [0,0,0,-128,-112,4,0,0,85,0] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,0,0,7,0,0,0] + [85,1,0,0,24,0,0,0,-109,1] + [0,0,50,0,0,0,62,0,0,0] + [0,0,0,0,1,0,0,0,2,0] + [0,0,-68,20,0,0,0,0,0,-128] + [64,0,0,0,62,0,0,0,26,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-1,127,0,0,25,0,0,0,0,0] + [0,0,9,0,0,0,-24,1,0,0] + [24,0,0,0,38,2,0,0,50,0] + [0,0,62,0,0,0,0,0,0,0] + [1,0,0,0,2,0,0,0,-65,20] + [0,0,0,0,0,-128,-112,4,0,0] + [-125,0,0,0,26,0,0,0,-106,0] + [0,0,-56,0,0,0,-1,127,0,0] + [25,0,0,0,0,0,0,0,2,0] + [0,0,-81,1,0,0,50,0,0,0] + [50,2,0,0,76,0,0,0,-125,0] + [0,0,0,0,0,0,0,0,0,0] + [2,0,0,0,-64,20,0,0,0,0] + [0,-128,-111,0,0,0,62,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,0,0,8,0,0,0,-109,1] + [0,0,24,0,0,0,-24,1,0,0] + [50,0,0,0,62,0,0,0,0,0] + [0,0,1,0,0,0,2,0,0,0] + [-63,20,0,0,0,0,0,-128,80,2] + [0,0,62,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,25,0,0,0,0,0,0,0] + [1,0,0,0,50,2,0,0,50,0] + [0,0,112,2,0,0,76,0,0,0] + [62,0,0,0,0,0,0,0,0,0] + [0,0,2,0,0,0,-76,20,0,0] + [0,0,0,-128,-112,4,0,0,13,1] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,0,0,4,0,0,0] + [-2,-1,-1,-1,-2,-1,-1,-1,22,3] + [0,0,23,0,0,0,13,1,0,0] + [0,0,0,0,1,0,0,0,5,0] + [0,0,30,-24,0,0,30,-24,0,0] + [1,0,0,0,-1,127,0,0,16,-113] + [64,0,19,0,0,0,0,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,93,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,4,0,0,0] + [-96,15,0,0,30,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,-113,64,0] + [-111,3,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,24,3,0,0,-106,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [24,3,0,0,93,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-95,15,0,0] + [30,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,32,-31] + [121,0,0,-116,116,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,24,3,0,0] + [93,0,0,0,-106,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-94,15,0,0,30,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,32,-31,121,0,0,-116] + [116,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,93,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-93,15] + [0,0,30,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-112,-62,30,6,0,-116,116,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,24,3] + [0,0,93,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,30,-24,0,0,30,-24,0,0] + [2,0,0,0,-1,127,0,0,16,-113] + [64,0,19,0,0,0,0,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,90,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,4,0,0,0] + [-92,15,0,0,30,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,-113,64,0] + [-111,3,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [80,76,-18,1,0,0,0,0,0,0] + [0,0,24,3,0,0,-106,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [24,3,0,0,90,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-91,15,0,0] + [30,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,80,80,-18,1] + [0,0,0,0,0,0,0,0,0,0] + [0,0,112,84,-18,1,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,24,3,0,0] + [90,0,0,0,-106,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-90,15,0,0,30,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,-128,0,0,0,0,0,0,0] + [0,0,0,0,0,86,-18,1,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,90,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-89,15] + [0,0,30,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,-32,83] + [-18,1,0,0,0,0,0,0,0,0] + [-96,82,-18,1,-44,83,-18,1,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,24,3] + [0,0,90,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,28,-24,0,0,29,-24,0,0] + [3,0,0,0,-1,127,0,0,16,79] + [0,0,18,0,0,0,0,16,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,-106,0,0,0] + [-106,0,0,0,37,1,0,0,0,0] + [0,0,0,0,0,0,2,0,0,0] + [29,-24,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,16,79,64,0] + [-109,0,0,0,0,16,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-108,0,0,0,-56,0,0,0] + [-56,0,0,0,4,0,0,0,-88,15] + [0,0,29,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,79,64,0,-111,3] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,-80,116] + [31,6,0,0,0,0,0,0,0,0] + [-128,0,0,0,-84,84,-18,1,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-110,0,0,0] + [-108,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-87,15,0,0,29,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,47,64,0,-111,1,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,-128,119,31,6,0,0] + [0,0,0,0,0,0,64,1,0,0] + [-12,49,-23,1,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,0,0] + [0,0,-110,0,0,0,-108,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-86,15,0,0,29,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [32,-31,121,0,0,0,0,0,0,0] + [0,0,0,2,0,0,84,50,-23,1] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-108,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-85,15,0,0] + [29,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,-24,80] + [-18,1,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [0,0,0,0,-110,0,0,0,-108,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [28,-24,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,16,47,64,0] + [-109,0,0,0,0,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-111,0,0,0,-56,0,0,0] + [-56,0,0,0,6,0,0,0,-84,15] + [0,0,28,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,34,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,80,49] + [-18,1,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-110,0,0,0] + [-111,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-83,15,0,0,28,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,47,64,0,-111,3,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,80,49,-18,1,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,0,0] + [0,0,-110,0,0,0,-111,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-82,15,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [80,49,-18,1,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-111,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-81,15,0,0] + [28,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + 16711689 + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [0,0,0,0,-110,0,0,0,-111,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-80,15,0,0,28,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,65,0,0,0,0,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,0,0,0,0] + [-110,0,0,0,-111,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-79,15] + [0,0,28,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,32,-31] + [121,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-110,0,0,0] + [-111,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-77,15,0,0,30,-24,0,0,4,0] + [0,0,-1,127,0,0,-68,-113,64,0] + [17,0,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [-64,-70,30,6,0,0,0,0,0,0] + [0,0,24,3,0,0,-106,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-126,2,0,0,85,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,28,-24,0,0] + [28,-24,0,0,5,0,0,0,-1,127] + [0,0,16,31,64,0,19,0,0,0] + [0,16,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-106,0,0,0,-76,0,0,0,-48,0] + [0,0,-56,0,0,0,-56,0,0,0] + [2,0,0,0,-56,15,0,0,28,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,31,64,0,-111,3,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,96,-74,30,6,0,0] + [0,0,0,0,0,0,0,1,0,0] + [-44,49,-23,1,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,-56,0,0,0,-106,0] + [0,0,-76,0,0,0,-48,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-55,15,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [32,-31,121,0,0,0,0,0,0,0] + [0,0,-64,1,0,0,52,50,-23,1] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,-106,0,0,0,-76,0] + [0,0,-48,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,0,0,0,0] + [0,0] + + + 5988 + [39,80,114,111,102,45,85,73,83,32] + [40,118,46,32,50,46,53,46,53,46] + [48,41,32,99,111,110,116,114,111,108] + [32,98,97,114,32,115,116,97,116,101] + [0,5,5,2,5,2,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,15,48,44,48,44,56] + [48,48,44,54,48,48,44,49,44,48] + [2,0,0,0,64,6,0,0,-80,4] + [0,0,19,0,1,-24,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,127] + [0,0,0,0,0,0,0,0,-54,15] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,36,2,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,24,3,0,0,24,0,0,0] + [4,32,0,0,0,0,0,-128,-112,4] + [0,0,0,0,-75,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,24,0,0,0,72,0] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,24,0,0,0,85,0] + [0,0,50,0,0,0,4,32,0,0] + [0,0,0,-128,-111,0,0,0,0,0] + [-74,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,85,0,0,0] + [24,0,0,0,118,0,0,0,1,0] + [0,0,0,0,0,0,85,0,0,0] + [24,0,0,0,-40,0,0,0,50,0] + [0,0,4,32,0,0,0,0,0,-128] + [-64,0,0,0,0,0,-73,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,-40,0,0,0,24,0,0,0] + [49,0,0,0,1,0,0,0,0,0] + [0,0,-40,0,0,0,24,0,0,0] + [22,1,0,0,50,0,0,0,4,32] + [0,0,0,0,0,-128,-128,1,0,0] + [0,0,-70,20,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,22,1] + [0,0,24,0,0,0,49,0,0,0] + [1,0,0,0,0,0,0,0,22,1] + [0,0,24,0,0,0,84,1,0,0] + [50,0,0,0,4,32,0,0,0,0] + [0,-128,-112,4,0,0,0,0,-69,20] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,23,1,0,0,24,0] + [0,0,49,0,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-96,97,-18,1,-44,98,-18,1] + [4,32,0,0,0,0,0,-128,-112,4] + [0,0,0,0,-66,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [13,1,0,0,50,0,0,0,-107,0] + [0,0,1,0,0,0,27,-24,0,0] + [13,1,0,0,50,0,0,0,-81,1] + [0,0,76,0,0,0,4,32,0,0] + [0,0,0,-128,-112,4,0,0,0,0] + [-72,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,84,1,0,0] + [24,0,0,0,49,0,0,0,1,0] + [0,0,0,0,0,0,84,1,0,0] + [24,0,0,0,-110,1,0,0,50,0] + [0,0,4,32,0,0,0,0,0,-128] + [-112,4,0,0,0,0,-71,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,-110,1,0,0,24,0,0,0] + [72,0,0,0,1,0,0,0,0,0] + [0,0,-110,1,0,0,24,0,0,0] + [-25,1,0,0,50,0,0,0,4,32] + [0,0,0,0,0,-128,-112,4,0,0] + [0,0,-68,20,0,0,1,0,0,0] + [0,0,0,0,0,0,0,0,37,2] + [0,0,24,0,0,0,49,0,0,0] + [1,0,0,0,0,0,0,0,37,2] + [0,0,24,0,0,0,99,2,0,0] + [50,0,0,0,4,32,0,0,0,0] + [0,-128,64,0,0,0,0,0,-65,20] + [0,0,1,0,0,0,0,0,0,0] + [0,0,0,0,-81,1,0,0,50,0] + [0,0,118,0,0,0,1,0,0,0] + [27,-24,0,0,-81,1,0,0,50,0] + [0,0,50,2,0,0,76,0,0,0] + [4,32,0,0,0,0,0,-128,-112,4] + [0,0,0,0,-64,20,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-25,1,0,0,24,0,0,0,49,0] + [0,0,1,0,0,0,0,0,0,0] + [-25,1,0,0,24,0,0,0,37,2] + [0,0,50,0,0,0,4,32,0,0] + [0,0,0,-128,-111,0,0,0,0,0] + [-63,20,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,50,2,0,0] + [50,0,0,0,49,0,0,0,1,0] + [0,0,0,0,0,0,50,2,0,0] + [50,0,0,0,112,2,0,0,76,0] + [0,0,4,32,0,0,0,0,0,-128] + [80,2,0,0,0,0,-76,20,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,50,0,0,0] + [0,1,0,0,1,0,0,0,0,0] + [0,0,0,0,0,0,50,0,0,0] + [13,1,0,0,76,0,0,0,4,32] + [0,0,0,0,0,-128,-112,4,0,0] + [0,0,27,-24,0,0,1,0,0,0] + [0,0,0,0,1,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,127,0,0] + [0,0,0,0,18,0,0,0,0,0] + [-54,15,0,0,0,0,0,0,-75,20] + [0,0,-74,20,0,0,-73,20,0,0] + [-70,20,0,0,-72,20,0,0,-71,20] + [0,0,-64,20,0,0,-68,20,0,0] + [-69,20,0,0,0,0,0,0,-76,20] + [0,0,-66,20,0,0,-65,20,0,0] + [-63,20,0,0,0,0,0,0,30,-24] + [0,0,1,0,0,0,0,0,0,0] + [1,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,127,0,0,0,0,0,0] + [1,0,0,0,0,0,28,-24,0,0] + [1,0,0,0,0,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,127,0,0,0,0,0,0,1,0] + [0,0,0,0,29,-24,0,0,1,0] + [0,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,127] + [0,0,0,0,0,0,1,0,0,0] + [0,0,14,0,0,0,2,0,0,0] + [-54,15,0,0,0,0,0,-128,-112,4] + [0,0,42,2,0,0,24,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,23,0,0,0,0,0,0,0] + [2,0,0,0,-2,-1,-1,-1,-2,-1] + [-1,-1,22,3,0,0,21,0,0,0] + [24,3,0,0,0,0,0,0,1,0] + [0,0,2,0,0,0,-75,20,0,0] + [0,0,0,-128,-111,0,0,0,85,0] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,0,0,2,0,0,0] + [-2,-1,-1,-1,-2,-1,-1,-1,22,3] + [0,0,23,0,0,0,85,0,0,0] + [0,0,0,0,1,0,0,0,2,0] + [0,0,-74,20,0,0,0,0,0,-128] + [-64,0,0,0,-125,0,0,0,26,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-1,127,0,0,25,0,0,0,0,0] + [0,0,3,0,0,0,1,0,0,0] + [24,0,0,0,86,0,0,0,50,0] + [0,0,85,0,0,0,0,0,0,0] + [1,0,0,0,2,0,0,0,-73,20] + [0,0,0,0,0,-128,-128,1,0,0] + [62,0,0,0,26,0,0,0,-106,0] + [0,0,-56,0,0,0,-1,127,0,0] + [25,0,0,0,0,0,0,0,4,0] + [0,0,86,0,0,0,24,0,0,0] + [-39,0,0,0,50,0,0,0,62,0] + [0,0,0,0,0,0,1,0,0,0] + [2,0,0,0,-70,20,0,0,0,0] + [0,-128,-112,4,0,0,62,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,0,0,5,0,0,0,-39,0] + [0,0,24,0,0,0,23,1,0,0] + [50,0,0,0,62,0,0,0,0,0] + [0,0,1,0,0,0,0,0,0,0] + [-69,20,0,0,0,0,0,-128,-112,4] + [0,0,62,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,1,0,0,0] + [2,0,0,0,-66,20,0,0,0,0] + [0,-128,-112,4,0,0,-94,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,0,0,3,0,0,0,15,1] + [0,0,50,0,0,0,-79,1,0,0] + [76,0,0,0,-94,0,0,0,0,0] + [0,0,0,0,0,0,2,0,0,0] + [-72,20,0,0,0,0,0,-128,-112,4] + [0,0,62,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,25,0,0,0,0,0,0,0] + [6,0,0,0,24,1,0,0,24,0] + [0,0,86,1,0,0,50,0,0,0] + [62,0,0,0,0,0,0,0,1,0] + [0,0,2,0,0,0,-71,20,0,0] + [0,0,0,-128,-112,4,0,0,85,0] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,0,0,7,0,0,0] + [85,1,0,0,24,0,0,0,-109,1] + [0,0,50,0,0,0,62,0,0,0] + [0,0,0,0,1,0,0,0,2,0] + [0,0,-68,20,0,0,0,0,0,-128] + [64,0,0,0,62,0,0,0,26,0] + [0,0,-106,0,0,0,-56,0,0,0] + [-1,127,0,0,25,0,0,0,0,0] + [0,0,9,0,0,0,-24,1,0,0] + [24,0,0,0,38,2,0,0,50,0] + [0,0,62,0,0,0,0,0,0,0] + [1,0,0,0,2,0,0,0,-65,20] + [0,0,0,0,0,-128,-112,4,0,0] + [-125,0,0,0,26,0,0,0,-106,0] + [0,0,-56,0,0,0,-1,127,0,0] + [25,0,0,0,0,0,0,0,2,0] + [0,0,-81,1,0,0,50,0,0,0] + [50,2,0,0,76,0,0,0,-125,0] + [0,0,0,0,0,0,0,0,0,0] + [2,0,0,0,-64,20,0,0,0,0] + [0,-128,-111,0,0,0,62,0,0,0] + [26,0,0,0,-106,0,0,0,-56,0] + [0,0,-1,127,0,0,25,0,0,0] + [0,0,0,0,8,0,0,0,-109,1] + [0,0,24,0,0,0,-24,1,0,0] + [50,0,0,0,62,0,0,0,0,0] + [0,0,1,0,0,0,2,0,0,0] + [-63,20,0,0,0,0,0,-128,80,2] + [0,0,62,0,0,0,26,0,0,0] + [-106,0,0,0,-56,0,0,0,-1,127] + [0,0,25,0,0,0,0,0,0,0] + [1,0,0,0,50,2,0,0,50,0] + [0,0,112,2,0,0,76,0,0,0] + [62,0,0,0,0,0,0,0,0,0] + [0,0,2,0,0,0,-76,20,0,0] + [0,0,0,-128,-112,4,0,0,13,1] + [0,0,26,0,0,0,-106,0,0,0] + [-56,0,0,0,-1,127,0,0,25,0] + [0,0,0,0,0,0,4,0,0,0] + [-2,-1,-1,-1,-2,-1,-1,-1,22,3] + [0,0,23,0,0,0,13,1,0,0] + [0,0,0,0,1,0,0,0,5,0] + [0,0,30,-24,0,0,30,-24,0,0] + [1,0,0,0,-1,127,0,0,16,-113] + [64,0,19,0,0,0,0,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,93,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,4,0,0,0] + [-96,15,0,0,30,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,-113,64,0] + [-111,3,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,24,3,0,0,-106,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [24,3,0,0,93,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-95,15,0,0] + [30,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,32,-31] + [121,0,0,-116,116,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,24,3,0,0] + [93,0,0,0,-106,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-94,15,0,0,30,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,32,-31,121,0,0,-116] + [116,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,93,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-93,15] + [0,0,30,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-112,-62,30,6,0,-116,116,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,24,3] + [0,0,93,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,30,-24,0,0,30,-24,0,0] + [2,0,0,0,-1,127,0,0,16,-113] + [64,0,19,0,0,0,0,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,90,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,4,0,0,0] + [-92,15,0,0,30,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,-113,64,0] + [-111,3,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [80,76,-18,1,0,0,0,0,0,0] + [0,0,24,3,0,0,-106,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [24,3,0,0,90,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-91,15,0,0] + [30,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,80,80,-18,1] + [0,0,0,0,0,0,0,0,0,0] + [0,0,112,84,-18,1,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,24,3,0,0] + [90,0,0,0,-106,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-90,15,0,0,30,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,-128,0,0,0,0,0,0,0] + [0,0,0,0,0,86,-18,1,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,24,3,0,0,90,0,0,0] + [-106,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-89,15] + [0,0,30,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,-32,83] + [-18,1,0,0,0,0,0,0,0,0] + [-96,82,-18,1,-44,83,-18,1,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,24,3] + [0,0,90,0,0,0,-106,0,0,0] + [-56,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,28,-24,0,0,29,-24,0,0] + [3,0,0,0,-1,127,0,0,16,79] + [0,0,18,0,0,0,0,16,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,-56,0,0,0,-106,0,0,0] + [-106,0,0,0,37,1,0,0,0,0] + [0,0,0,0,0,0,2,0,0,0] + [29,-24,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,16,79,64,0] + [-109,0,0,0,0,16,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-108,0,0,0,-56,0,0,0] + [-56,0,0,0,4,0,0,0,-88,15] + [0,0,29,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,79,64,0,-111,3] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,-80,116] + [31,6,0,0,0,0,0,0,0,0] + [-128,0,0,0,-84,84,-18,1,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-110,0,0,0] + [-108,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-87,15,0,0,29,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,47,64,0,-111,1,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,-128,119,31,6,0,0] + [0,0,0,0,0,0,64,1,0,0] + [-12,49,-23,1,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,0,0] + [0,0,-110,0,0,0,-108,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-86,15,0,0,29,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [32,-31,121,0,0,0,0,0,0,0] + [0,0,0,2,0,0,84,50,-23,1] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-108,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-85,15,0,0] + [29,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,-24,80] + [-18,1,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [0,0,0,0,-110,0,0,0,-108,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [28,-24,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,16,47,64,0] + [-109,0,0,0,0,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-111,0,0,0,-56,0,0,0] + [-56,0,0,0,6,0,0,0,-84,15] + [0,0,28,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,34,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,80,49] + [-18,1,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-110,0,0,0] + [-111,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-83,15,0,0,28,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,47,64,0,-111,3,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,80,49,-18,1,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,0,0] + [0,0,-110,0,0,0,-111,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-82,15,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [80,49,-18,1,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,0,0,0,0,-110,0] + [0,0,-111,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-81,15,0,0] + [28,-24,0,0,0,0,0,0,-1,127] + [0,0,-68,47,64,0,-111,1,0,0] + [4,32,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + 16711689 + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [0,0,0,0,-110,0,0,0,-111,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,-80,15,0,0,28,-24,0,0] + [0,0,0,0,-1,127,0,0,-68,47] + [64,0,-111,1,0,0,4,32,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,-128,65,0,0,0,0,0,0,0] + [0,0,0,0,-1,-1,-1,-1,-1,-1] + [-1,-1,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,64,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,0,0,0,0] + [-110,0,0,0,-111,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,-79,15] + [0,0,28,-24,0,0,0,0,0,0] + [-1,127,0,0,-68,47,64,0,-111,1] + [0,0,4,32,0,0,0,0,0,0] + [0,0,0,0,0,0,0,-128,32,-31] + [121,0,0,0,0,0,0,0,0,0] + [-1,-1,-1,-1,-1,-1,-1,-1,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,64,0,0] + [0,0,0,0,0,0,0,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,0,0,0,0,-110,0,0,0] + [-111,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,0,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-77,15,0,0,30,-24,0,0,4,0] + [0,0,-1,127,0,0,-68,-113,64,0] + [17,0,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [-64,-70,30,6,0,0,0,0,0,0] + [0,0,24,3,0,0,-106,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-126,2,0,0,85,0,0,0,-106,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,28,-24,0,0] + [28,-24,0,0,5,0,0,0,-1,127] + [0,0,16,31,64,0,19,0,0,0] + [0,16,0,0,0,0,0,0,0,0] + [0,0,0,0,0,-128,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,0,-56,0,0,0,-56,0] + [0,0,0,0,0,64,0,0,0,0] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-106,0,0,0,-76,0,0,0,-48,0] + [0,0,-56,0,0,0,-56,0,0,0] + [2,0,0,0,-56,15,0,0,28,-24] + [0,0,0,0,0,0,-1,127,0,0] + [-68,31,64,0,-111,3,0,0,4,32] + [0,0,0,0,0,0,0,0,0,0] + [0,0,0,-128,96,-74,30,6,0,0] + [0,0,0,0,0,0,0,1,0,0] + [-44,49,-23,1,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [0,0,0,64,0,0,0,0,0,0] + [0,0,0,0,0,0,-56,0,0,0] + [-56,0,0,0,-56,0,0,0,-106,0] + [0,0,-76,0,0,0,-48,0,0,0] + [-56,0,0,0,-56,0,0,0,0,0] + [0,0,-1,-1,-1,-1,-1,-1,-1,-1] + [-55,15,0,0,28,-24,0,0,0,0] + [0,0,-1,127,0,0,-68,47,64,0] + [-111,1,0,0,4,32,0,0,0,0] + [0,0,0,0,0,0,0,0,0,-128] + [32,-31,121,0,0,0,0,0,0,0] + [0,0,-64,1,0,0,52,50,-23,1] + [0,0,0,0,0,0,0,0,-56,0] + [0,0,-56,0,0,0,0,0,0,64] + [0,0,0,0,0,0,0,0,0,0] + [0,0,-56,0,0,0,-56,0,0,0] + [-56,0,0,0,-106,0,0,0,-76,0] + [0,0,-48,0,0,0,-56,0,0,0] + [-56,0,0,0,0,0,0,0,-1,-1] + [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] + [-1,-1,-1,-1,0,0,0,0] + [0,0] + + + 20 + + + C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release + + L "C:\nitro-sdk\my_demos\sdk_demos\sound_0_cross\ARM9\bin\ARM9-TS\Release\main.nef" + L "C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\main.nef" + L "C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\main.elf" + INIT + BP .OS_VSNPrintf+375 + W? str.base + MW 0x20093F0 + MW 0x27E3AE0 + W? dst + V [OS_PRINTF_TWL.C] + BP OS_IrqHandler + MW 0x2000BD4 + MW 0x1FF8000 + L "C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\main.axf" + MW 0x2008F00 + V [CRT0.C] + ZV UNDEF=ENABLE + mmu + MWD + MW 0x4000000 + V [MAIN.C] + ZV D_ABORT=ENABLE + ZV P_ABORT=ENABLE + L "C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\alerm.axf" + + 3.9Beta + + 0 + + + + + 0 + 0 + 0 + C:\Program Files\Hidemaru\Hidemaru.exe + /J%line_no% %file_name% + 0 + 0 + + + C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\alerm.axf + + + 5 + 0 + 0 + + + C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\main.axf + + + 5 + 0 + 0 + + + C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\main.elf + + + 5 + 0 + 0 + + + C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\main.nef + + + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 6 + [4,0,0,0,0,-28,-92,105,0,4,0,0,0,4,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0] + [0,0,0,0,0,-28,-92,105,0,4,0,0,0,4,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0] + [0,0,0,0,0,-28,-92,105,0,4,0,0,0,4,0,0,0,2,0,0,0,8,0,0,0,0,0,0,0] + [0,-128,0,0,0,80,37,105,0,16,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0] + 2097341 + 2099440 + 4194336 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + <0> + + <1> + + <2> + + <3> + + + + + + + + + 0,0 + + + + + + + + OS_TPrintf + OS_Printf + NitroMain + OS_Init + MIi_DmaSetParams_wait_noInt + + OS_TPrintf + + + + + + + + 0x020027E0 + + 0x020027E0 + + + + 04000000 + 02008F00 + 0x01FF8000 + _start_ModuleParams + 0x02008f00 + 0x027E3AE0 + 0x020093F0 + + 04000000 + + + 02008F00 + + + + + + + + + + + + + + + + 0x020027E8 + 0x00000004 + 0x01FF81C0 + 0x020023E4 + 0x020010C4 + + 0x020027E8 + + + 0 + 0 + 1 + 1 + 2 + 2 + 4 + 2 + 0 + 1 + 1 + 0 + + 3,3,3 + + 16 + -1 + + E OS_TPrintf + + + + ZV %select{RESET|UNDEF|SWI|P_ABORT|D_ABORT|IRQ|FIQ}(ベクタ名;Vector name)=%select{ENABLE|DISABLE}(状態;Status) + 4 + -1 + 0 + -1 + -1 + -1 + -1 + -1 + -1 + -1 + + + + WATCH_BANK3 + 0x0,0xFFFF,0x26A,0x0,0x1D73AA0,0x0,0x0,(char *),dst + + + (ARM) + TWL_ARM7 + +