From 8c8465005185e4948721692eab2ecca52340e485 Mon Sep 17 00:00:00 2001 From: David Banks Date: Sun, 11 Jun 2017 17:28:58 +0100 Subject: [PATCH 01/67] Updated the release name to Diamondback-dev Change-Id: I7363f12919fbf60feb5ff409635c24b1b6109152 --- src/tube-defs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tube-defs.h b/src/tube-defs.h index a952715f..2af393d4 100644 --- a/src/tube-defs.h +++ b/src/tube-defs.h @@ -3,7 +3,7 @@ #ifndef TUBE_DEFS_H #define TUBE_DEFS_H -#define RELEASENAME "Cobra" +#define RELEASENAME "Diamondback-dev" #define NDEBUG From 890efaade7abc01fa511df31f378a57ddc7ee1e0 Mon Sep 17 00:00:00 2001 From: David Banks Date: Mon, 12 Jun 2017 15:55:31 +0100 Subject: [PATCH 02/67] Fix a GPU issue that delayed the tube cycle following a nTube glitch Change-Id: Iaeac575725b76556b75a3d3958d293c2f4a47b32 --- src/tubevc.c | 2 +- vidcore/tubevc.s | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tubevc.c b/src/tubevc.c index 3674dd3e..4b75f2c2 100644 --- a/src/tubevc.c +++ b/src/tubevc.c @@ -23,7 +23,7 @@ unsigned char tubevc_asm[] = { 0x11, 0x80, 0x06, 0xe9, 0x11, 0x80, 0x04, 0xe9, 0x11, 0x80, 0x02, 0xe9, 0x68, 0x2d, 0x88, 0xc1, 0x10, 0x47, 0xa7, 0xc1, 0xc4, 0x38, 0x88, 0xc1, 0x11, 0x47, 0xa7, 0xc1, 0xc8, 0x38, 0x88, 0xc1, 0x12, 0x47, 0xa7, 0xc1, - 0xd0, 0x38, 0x74, 0x08, 0x18, 0x6d, 0x7f, 0x91, 0x9b, 0xff, 0x28, 0x6d, + 0xd0, 0x38, 0x74, 0x08, 0x18, 0x6d, 0x7f, 0x91, 0x99, 0xff, 0x28, 0x6d, 0x22, 0x18, 0x6d, 0x09, 0x6e, 0x31, 0x6f, 0x32, 0x54, 0x4d, 0x64, 0x37, 0x68, 0x2d, 0x78, 0x6c, 0x7e, 0x18, 0x88, 0xc1, 0x10, 0x47, 0x07, 0x18, 0x07, 0x46, 0x67, 0x7c, 0xb7, 0x70, 0x37, 0x09, 0x80, 0x90, 0x3f, 0x00, diff --git a/vidcore/tubevc.s b/vidcore/tubevc.s index 71e86cf1..81b81da4 100644 --- a/vidcore/tubevc.s +++ b/vidcore/tubevc.s @@ -193,7 +193,7 @@ delay_done: orne r7, 16 ld r4, (r7) # Read word from tube register btst r8, nTUBE - bne Poll_tube_low + bne Poll_loop btst r8, RnW beq wr_cycle From a00d5cd1c27b02c749c2abe405d9401e336f943d Mon Sep 17 00:00:00 2001 From: David Banks Date: Mon, 12 Jun 2017 15:56:44 +0100 Subject: [PATCH 03/67] Fix a GPU issue that might result in lost read messages if there is a glitch in a0 Change-Id: Ia982ab59c3bdde0e509286d2fbbb354c1bf44477 --- src/tubevc.c | 42 +++++++++++++++++++++--------------------- vidcore/tubevc.s | 2 +- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/tubevc.c b/src/tubevc.c index 4b75f2c2..c5000d8a 100644 --- a/src/tubevc.c +++ b/src/tubevc.c @@ -7,7 +7,7 @@ unsigned char tubevc_asm[] = { 0x0d, 0xe8, 0x00, 0x00, 0x00, 0x09, 0x9e, 0x60, 0x0f, 0xe8, 0x40, 0x92, 0x00, 0x00, 0xad, 0x4d, 0xbe, 0x4d, 0xcf, 0x4d, 0x62, 0xe9, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x21, 0x40, 0x07, 0x40, 0x68, 0x2d, 0x48, 0x6c, - 0x00, 0x90, 0xaa, 0x00, 0x18, 0x6d, 0xfb, 0x18, 0x11, 0x80, 0x50, 0xe9, + 0x00, 0x90, 0xa9, 0x00, 0x18, 0x6d, 0xfb, 0x18, 0x11, 0x80, 0x50, 0xe9, 0x11, 0x80, 0x4e, 0xe9, 0x11, 0x80, 0x4c, 0xe9, 0x11, 0x80, 0x4a, 0xe9, 0x11, 0x80, 0x48, 0xe9, 0x11, 0x80, 0x46, 0xe9, 0x11, 0x80, 0x44, 0xe9, 0x11, 0x80, 0x42, 0xe9, 0x11, 0x80, 0x40, 0xe9, 0x11, 0x80, 0x3e, 0xe9, @@ -24,24 +24,24 @@ unsigned char tubevc_asm[] = { 0x68, 0x2d, 0x88, 0xc1, 0x10, 0x47, 0xa7, 0xc1, 0xc4, 0x38, 0x88, 0xc1, 0x11, 0x47, 0xa7, 0xc1, 0xc8, 0x38, 0x88, 0xc1, 0x12, 0x47, 0xa7, 0xc1, 0xd0, 0x38, 0x74, 0x08, 0x18, 0x6d, 0x7f, 0x91, 0x99, 0xff, 0x28, 0x6d, - 0x22, 0x18, 0x6d, 0x09, 0x6e, 0x31, 0x6f, 0x32, 0x54, 0x4d, 0x64, 0x37, - 0x68, 0x2d, 0x78, 0x6c, 0x7e, 0x18, 0x88, 0xc1, 0x10, 0x47, 0x07, 0x18, - 0x07, 0x46, 0x67, 0x7c, 0xb7, 0x70, 0x37, 0x09, 0x80, 0x90, 0x3f, 0x00, - 0x67, 0x2d, 0x77, 0x6c, 0xfe, 0x18, 0x6a, 0x09, 0x6b, 0x31, 0x6c, 0x32, - 0x69, 0x3a, 0x67, 0x2d, 0x77, 0x6c, 0x7e, 0x18, 0x17, 0x6d, 0x7f, 0x91, - 0x79, 0xff, 0x27, 0x6d, 0x7f, 0x91, 0x76, 0xff, 0x67, 0x2d, 0x77, 0x6c, - 0x7e, 0x18, 0x78, 0x40, 0x67, 0x2d, 0x77, 0x6c, 0xfd, 0x18, 0x47, 0xc3, - 0x48, 0x47, 0x44, 0xc3, 0x52, 0x47, 0xe7, 0xc0, 0x4f, 0x3f, 0xe4, 0xe8, - 0xf0, 0x00, 0x00, 0x00, 0x47, 0x4d, 0x88, 0xc1, 0x10, 0x47, 0x07, 0xc2, - 0xc8, 0x38, 0x88, 0xc1, 0x11, 0x47, 0x07, 0xc2, 0xc9, 0x38, 0x88, 0xc1, - 0x12, 0x47, 0x07, 0xc2, 0xca, 0x38, 0x37, 0x09, 0x80, 0x90, 0x0f, 0x00, - 0x7f, 0x9e, 0x54, 0xff, 0x07, 0xe8, 0x00, 0x10, 0x00, 0x00, 0x37, 0x09, - 0x80, 0x90, 0x07, 0x00, 0x67, 0x2d, 0x47, 0x6c, 0x7e, 0x18, 0x7f, 0x9e, - 0x49, 0xff, 0x53, 0xc1, 0x40, 0x9f, 0x05, 0x18, 0x53, 0xc1, 0x41, 0x9f, - 0x0e, 0x18, 0x5a, 0x00, 0x07, 0xe8, 0x00, 0x00, 0x01, 0x00, 0x94, 0xc1, - 0x40, 0xa7, 0x14, 0xc1, 0x14, 0xa7, 0x83, 0x18, 0x67, 0x3a, 0x5a, 0x00, - 0x67, 0x37, 0x5a, 0x00, 0x07, 0xe8, 0x00, 0x80, 0x00, 0x00, 0x94, 0xc1, - 0x40, 0xa7, 0x14, 0xc1, 0x14, 0xa7, 0x83, 0x18, 0x67, 0x3b, 0x5a, 0x00, - 0x67, 0x38, 0x5a, 0x00 + 0x21, 0x18, 0x6d, 0x09, 0x6e, 0x31, 0x6f, 0x32, 0x54, 0x4d, 0x64, 0x37, + 0x68, 0x2d, 0x78, 0x6c, 0x7e, 0x18, 0x27, 0x6c, 0x07, 0x18, 0x07, 0x46, + 0x67, 0x7c, 0xb7, 0x70, 0x37, 0x09, 0x80, 0x90, 0x3f, 0x00, 0x67, 0x2d, + 0x77, 0x6c, 0xfe, 0x18, 0x6a, 0x09, 0x6b, 0x31, 0x6c, 0x32, 0x69, 0x3a, + 0x67, 0x2d, 0x77, 0x6c, 0x7e, 0x18, 0x17, 0x6d, 0x7f, 0x91, 0x7a, 0xff, + 0x27, 0x6d, 0x7f, 0x91, 0x77, 0xff, 0x67, 0x2d, 0x77, 0x6c, 0x7e, 0x18, + 0x78, 0x40, 0x67, 0x2d, 0x77, 0x6c, 0xfd, 0x18, 0x47, 0xc3, 0x48, 0x47, + 0x44, 0xc3, 0x52, 0x47, 0xe7, 0xc0, 0x4f, 0x3f, 0xe4, 0xe8, 0xf0, 0x00, + 0x00, 0x00, 0x47, 0x4d, 0x88, 0xc1, 0x10, 0x47, 0x07, 0xc2, 0xc8, 0x38, + 0x88, 0xc1, 0x11, 0x47, 0x07, 0xc2, 0xc9, 0x38, 0x88, 0xc1, 0x12, 0x47, + 0x07, 0xc2, 0xca, 0x38, 0x37, 0x09, 0x80, 0x90, 0x0f, 0x00, 0x7f, 0x9e, + 0x55, 0xff, 0x07, 0xe8, 0x00, 0x10, 0x00, 0x00, 0x37, 0x09, 0x80, 0x90, + 0x07, 0x00, 0x67, 0x2d, 0x47, 0x6c, 0x7e, 0x18, 0x7f, 0x9e, 0x4a, 0xff, + 0x53, 0xc1, 0x40, 0x9f, 0x05, 0x18, 0x53, 0xc1, 0x41, 0x9f, 0x0e, 0x18, + 0x5a, 0x00, 0x07, 0xe8, 0x00, 0x00, 0x01, 0x00, 0x94, 0xc1, 0x40, 0xa7, + 0x14, 0xc1, 0x14, 0xa7, 0x83, 0x18, 0x67, 0x3a, 0x5a, 0x00, 0x67, 0x37, + 0x5a, 0x00, 0x07, 0xe8, 0x00, 0x80, 0x00, 0x00, 0x94, 0xc1, 0x40, 0xa7, + 0x14, 0xc1, 0x14, 0xa7, 0x83, 0x18, 0x67, 0x3b, 0x5a, 0x00, 0x67, 0x38, + 0x5a, 0x00 }; -unsigned int tubevc_asm_len = 520; +unsigned int tubevc_asm_len = 518; diff --git a/vidcore/tubevc.s b/vidcore/tubevc.s index 81b81da4..799ae031 100644 --- a/vidcore/tubevc.s +++ b/vidcore/tubevc.s @@ -213,7 +213,7 @@ rd_wait_for_clk_high1: btst r8, CLK beq rd_wait_for_clk_high1 # we now have half a cycle to do post mail - btst r8, r16 # no need to post mail if A0 = 0 + btst r7, 2 # no need to post mail if A0 = 0 beq rd_wait_for_clk_low sub r7, r0 # just get the address bits lsl r7, 6 # put address bits in correct place From 468501e057ffc247bb3ca09fb8594df7e838eb43 Mon Sep 17 00:00:00 2001 From: David Banks Date: Tue, 13 Jun 2017 10:29:39 +0100 Subject: [PATCH 04/67] Implemented elk_mode config prop, patches 6502 code in Z80 and 80x86 Client ROMs Change-Id: I045884a6ee9c69e46cd50ea44c6ae0d18e549d78 --- src/CMakeLists.txt | 2 ++ src/copro-80186.c | 5 +++++ src/copro-z80.c | 6 +++++- src/scripts/cmdline.txt | 3 ++- src/utils.c | 38 ++++++++++++++++++++++++++++++++++++++ src/utils.h | 8 ++++++++ 6 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 src/utils.c create mode 100644 src/utils.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f361ee5a..72da96f8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -87,6 +87,8 @@ file( GLOB core_files tubevc.h logging.c logging.h + utils.c + utils.h ) # 6502 Co Processor using 65tube Implementation diff --git a/src/copro-80186.c b/src/copro-80186.c index bd48fe3f..29fb2c47 100644 --- a/src/copro-80186.c +++ b/src/copro-80186.c @@ -6,10 +6,15 @@ #include "cpu80186/cpu80186.h" #include "cpu80186/mem80186.h" #include "startup.h" +#include "utils.h" + +extern uint8_t Client86_v1_01[]; static void copro_80186_poweron_reset() { // Wipe memory Cleari80186Ram(); + // Patch the OSWORD &FA code to change FEE5 to FCE5 (8 changes expected) + check_elk_mode_and_patch(Client86_v1_01, 0xE69, 0x1FB, 8); } static void copro_80186_reset() { diff --git a/src/copro-z80.c b/src/copro-z80.c index 555228df..93d8b9ea 100644 --- a/src/copro-z80.c +++ b/src/copro-z80.c @@ -11,6 +11,7 @@ #include "yaze/mem_mmu.h" #include "yaze/simz80.h" #include "tube-client.h" +#include "utils.h" #ifdef INCLUDE_DEBUGGER #include "cpu_debug.h" @@ -20,7 +21,7 @@ static int overlay_rom = 0; static unsigned char *copro_z80_ram; -static const unsigned char copro_z80_rom[0x1000] = { +static unsigned char copro_z80_rom[0x1000] = { 0xf3, 0x11, 0x00, 0xf0, 0x21, 0x00, 0x00, 0x01, 0x00, 0x10, 0xed, 0xb0, 0xc3, 0x80, 0xf2, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x41, 0x63, 0x6f, 0x72, 0x6e, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x72, 0x73, 0x20, 0x4c, 0x74, 0x64, 0x2e, 0x20, 0x31, 0x39, @@ -357,6 +358,9 @@ void copro_z80_emulator() // Remember the current copro so we can exit if it changes int last_copro = copro; + // Patch the OSWORD &FF code to change FEE5 to FCE5 (2 changes expected) + check_elk_mode_and_patch(copro_z80_rom, 0xD30, 0xAA, 2); + copro_z80_ram = copro_mem_reset(0x10000); copro_z80_reset(); diff --git a/src/scripts/cmdline.txt b/src/scripts/cmdline.txt index 6e61f3ba..591f74a5 100644 --- a/src/scripts/cmdline.txt +++ b/src/scripts/cmdline.txt @@ -1,3 +1,4 @@ -copro=0 copro1speed=3 tube_delay=0 +copro=0 copro1speed=3 tube_delay=0 elk_mode=0 + diff --git a/src/utils.c b/src/utils.c new file mode 100644 index 00000000..d39e06b1 --- /dev/null +++ b/src/utils.c @@ -0,0 +1,38 @@ +#include +#include +#include "tube-defs.h" +#include "info.h" + +/* + * If the elk_mode property is non-zero then patch + * STA &FEE5 => STA &FCE5 (&8D) + * LDA &FEE5 => LDA &FCE5 (&AD) + */ + +void check_elk_mode_and_patch(unsigned char *rom, int start, int len, int expected) { + char *elk_mode_prop = get_cmdline_prop("elk_mode"); + int elk_mode = 0; // default + if (elk_mode_prop) { + elk_mode = atoi(elk_mode_prop); + } + if (elk_mode) { + int actual = 0; + for (int i = start; i < start + len - 2; i++) { + if ((rom[i] == 0x8D) && (rom[i + 1] == 0xE5) && (rom[i + 2] == 0xFE)) { + LOG_DEBUG("Patching STA &FEE5 to STA &FCE5 at %04x\r\n", i); + rom[i + 2] = 0xFC; + actual ++; + } + if ((rom[i] == 0xAD) && (rom[i + 1] == 0xE5) && (rom[i + 2] == 0xFE)) { + LOG_DEBUG("Patching LDA &FEE5 to STA &FCE5 at %04x\r\n", i); + rom[i + 2] = 0xFC; + actual ++; + } + } + if (actual == expected) { + LOG_INFO("Elk client ROM patching successful\r\n"); + } else { + LOG_WARN("Elk client ROM patching failed (expected = %d, actual = %d)\r\n", expected, actual); + } + } +} diff --git a/src/utils.h b/src/utils.h new file mode 100644 index 00000000..03943343 --- /dev/null +++ b/src/utils.h @@ -0,0 +1,8 @@ +// utils.h + +#ifndef UTILS_H +#define UTILS_H + +void check_elk_mode_and_patch(unsigned char *rom, int start, int len, int expected); + +#endif From 628f8ee7289a46e8fca8250f1415c492bd86de8e Mon Sep 17 00:00:00 2001 From: David Banks Date: Tue, 13 Jun 2017 10:30:07 +0100 Subject: [PATCH 05/67] Deleted obsolete build scripts Change-Id: Iec0cbfacf9b170cce9b92a4e4de1e5d2b3bbd2c4 --- src/scripts/configure_rpibplus.bat | 1 - src/scripts/configure_rpibplus.sh | 3 - src/scripts/configure_rpizero.bat | 1 - src/scripts/configure_rpizero.sh | 3 - src/toolchain-arm-none-eabi-rpibplus.cmake | 70 ---------------------- src/toolchain-arm-none-eabi-rpizero.cmake | 70 ---------------------- 6 files changed, 148 deletions(-) delete mode 100755 src/scripts/configure_rpibplus.bat delete mode 100755 src/scripts/configure_rpibplus.sh delete mode 100755 src/scripts/configure_rpizero.bat delete mode 100755 src/scripts/configure_rpizero.sh delete mode 100644 src/toolchain-arm-none-eabi-rpibplus.cmake delete mode 100644 src/toolchain-arm-none-eabi-rpizero.cmake diff --git a/src/scripts/configure_rpibplus.bat b/src/scripts/configure_rpibplus.bat deleted file mode 100755 index d34eb5b5..00000000 --- a/src/scripts/configure_rpibplus.bat +++ /dev/null @@ -1 +0,0 @@ -cmake -G "CodeBlocks - MinGW Makefiles" %* -DCMAKE_TOOLCHAIN_FILE=../toolchain-arm-none-eabi-rpibplus.cmake ../ diff --git a/src/scripts/configure_rpibplus.sh b/src/scripts/configure_rpibplus.sh deleted file mode 100755 index 6e14639c..00000000 --- a/src/scripts/configure_rpibplus.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -cmake -G "CodeBlocks - Unix Makefiles" "$*" -DCMAKE_TOOLCHAIN_FILE=../toolchain-arm-none-eabi-rpibplus.cmake ../ diff --git a/src/scripts/configure_rpizero.bat b/src/scripts/configure_rpizero.bat deleted file mode 100755 index 83fe1191..00000000 --- a/src/scripts/configure_rpizero.bat +++ /dev/null @@ -1 +0,0 @@ -cmake -G "CodeBlocks - MinGW Makefiles" %* -DCMAKE_TOOLCHAIN_FILE=../toolchain-arm-none-eabi-rpizero.cmake ../ diff --git a/src/scripts/configure_rpizero.sh b/src/scripts/configure_rpizero.sh deleted file mode 100755 index 4dfd75ce..00000000 --- a/src/scripts/configure_rpizero.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -cmake -G "CodeBlocks - Unix Makefiles" "$*" -DCMAKE_TOOLCHAIN_FILE=../toolchain-arm-none-eabi-rpizero.cmake ../ diff --git a/src/toolchain-arm-none-eabi-rpibplus.cmake b/src/toolchain-arm-none-eabi-rpibplus.cmake deleted file mode 100644 index 0370758f..00000000 --- a/src/toolchain-arm-none-eabi-rpibplus.cmake +++ /dev/null @@ -1,70 +0,0 @@ - -# Part of the Raspberry-Pi Bare Metal Tutorials -# Copyright (c) 2013-2015, Brian Sidebotham -# All rights reserved. - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: - -# 1. Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. - -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -# A CMake toolchain file so we can cross-compile for the Rapsberry-Pi bare-metal - -include(CMakeForceCompiler) - -# usage -# cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain-arm-none-eabi.cmake ../ - -# The Generic system name is used for embedded targets (targets without OS) in -# CMake -set( CMAKE_SYSTEM_NAME Generic ) -set( CMAKE_SYSTEM_PROCESSOR BCM2835 ) - -# Set a toolchain path. You only need to set this if the toolchain isn't in -# your system path. Don't forget a trailing path separator! -set( TC_PATH "" ) - -# The toolchain prefix for all toolchain executables -set( CROSS_COMPILE arm-none-eabi- ) - -# specify the cross compiler. We force the compiler so that CMake doesn't -# attempt to build a simple test program as this will fail without us using -# the -nostartfiles option on the command line -CMAKE_FORCE_C_COMPILER( ${TC_PATH}${CROSS_COMPILE}gcc GNU ) - -# We must set the OBJCOPY setting into cache so that it's available to the -# whole project. Otherwise, this does not get set into the CACHE and therefore -# the build doesn't know what the OBJCOPY filepath is -set( CMAKE_OBJCOPY ${TC_PATH}${CROSS_COMPILE}objcopy - CACHE FILEPATH "The toolchain objcopy command " FORCE ) - -# Set the CMAKE C flags (which should also be used by the assembler! -set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=vfp" ) -set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfloat-abi=hard" ) -set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv6zk" ) -set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mtune=arm1176jzf-s" ) - -set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "" ) -set( CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "" ) - -# Just add the BPLUS definition for conditional compiling -add_definitions( -DRPIBPLUS=1 ) - -set( KERNEL_NAME "./kernelrpibplus.img" ) diff --git a/src/toolchain-arm-none-eabi-rpizero.cmake b/src/toolchain-arm-none-eabi-rpizero.cmake deleted file mode 100644 index c7261702..00000000 --- a/src/toolchain-arm-none-eabi-rpizero.cmake +++ /dev/null @@ -1,70 +0,0 @@ - -# Part of the Raspberry-Pi Bare Metal Tutorials -# Copyright (c) 2013-2015, Brian Sidebotham -# All rights reserved. - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: - -# 1. Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. - -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -# A CMake toolchain file so we can cross-compile for the Rapsberry-Pi bare-metal - -include(CMakeForceCompiler) - -# usage -# cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain-arm-none-eabi.cmake ../ - -# The Generic system name is used for embedded targets (targets without OS) in -# CMake -set( CMAKE_SYSTEM_NAME Generic ) -set( CMAKE_SYSTEM_PROCESSOR BCM2835 ) - -# Set a toolchain path. You only need to set this if the toolchain isn't in -# your system path. Don't forget a trailing path separator! -set( TC_PATH "" ) - -# The toolchain prefix for all toolchain executables -set( CROSS_COMPILE arm-none-eabi- ) - -# specify the cross compiler. We force the compiler so that CMake doesn't -# attempt to build a simple test program as this will fail without us using -# the -nostartfiles option on the command line -CMAKE_FORCE_C_COMPILER( ${TC_PATH}${CROSS_COMPILE}gcc GNU ) - -# We must set the OBJCOPY setting into cache so that it's available to the -# whole project. Otherwise, this does not get set into the CACHE and therefore -# the build doesn't know what the OBJCOPY filepath is -set( CMAKE_OBJCOPY ${TC_PATH}${CROSS_COMPILE}objcopy - CACHE FILEPATH "The toolchain objcopy command " FORCE ) - -# Set the CMAKE C flags (which should also be used by the assembler! -set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=vfp" ) -set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfloat-abi=hard" ) -set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv6zk" ) -set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mtune=arm1176jzf-s" ) - -set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "" ) -set( CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "" ) - -# Add the raspberry-pi zero definition so conditional compilation works -add_definitions( -DRPIZERO=1 ) - -set( KERNEL_NAME "./kernelrpizero.img" ) From 4b4c00035f51aec39c495543ab19a76718bcc274 Mon Sep 17 00:00:00 2001 From: David Banks Date: Tue, 13 Jun 2017 10:41:22 +0100 Subject: [PATCH 06/67] Updated the release name to Diamondback-rc0 Change-Id: Ia26df218e871fd0d927bab48385238d8ba79b580 --- src/tube-defs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tube-defs.h b/src/tube-defs.h index 2af393d4..28e0f982 100644 --- a/src/tube-defs.h +++ b/src/tube-defs.h @@ -3,7 +3,7 @@ #ifndef TUBE_DEFS_H #define TUBE_DEFS_H -#define RELEASENAME "Diamondback-dev" +#define RELEASENAME "Diamondback-rc0" #define NDEBUG From ec620315a2928ee8b7e9d03c3ea1f111e76352b2 Mon Sep 17 00:00:00 2001 From: David Banks Date: Tue, 20 Jun 2017 13:34:42 +0100 Subject: [PATCH 07/67] Fixed an issue with Mini UART initialization than sometimes meant receiving didn't work Change-Id: I81e4ec7852d41032eb54ea5c2c42dc4c456c3a37 --- src/armc-start.S | 11 ++++++++ src/rpi-aux.c | 65 +++++++++++++++++++++++++++++++++++------------- src/startup.h | 2 ++ 3 files changed, 61 insertions(+), 17 deletions(-) diff --git a/src/armc-start.S b/src/armc-start.S index d6903a68..448d4dc6 100644 --- a/src/armc-start.S +++ b/src/armc-start.S @@ -69,6 +69,7 @@ .global _clean_invalidate_dcache_mva .global _invalidate_dtlb .global _invalidate_dtlb_mva +.global _data_memory_barrier #ifdef HAS_MULTICORE .global _get_core @@ -384,6 +385,16 @@ _invalidate_dtlb_mva: mcr p15, 0, r0, c8, c6, 1 mov pc, lr +.section ".text._data_memory_barrier" +_data_memory_barrier: +#if defined(RPI2) || defined(RPI3) + dmb +#else + mov r0, #0 + mcr p15, 0, r0, c7, c10, 5 +#endif + mov pc, lr + #ifdef USE_MULTICORE _init_core: diff --git a/src/rpi-aux.c b/src/rpi-aux.c index c05932e9..0b083895 100644 --- a/src/rpi-aux.c +++ b/src/rpi-aux.c @@ -39,6 +39,8 @@ static volatile int tx_tail; static void __attribute__((interrupt("IRQ"))) RPI_AuxMiniUartIRQHandler() { + _data_memory_barrier(); + while (1) { int iir = auxillary->MU_IIR; @@ -71,6 +73,8 @@ static void __attribute__((interrupt("IRQ"))) RPI_AuxMiniUartIRQHandler() { } } } + + _data_memory_barrier(); } #endif @@ -78,12 +82,43 @@ void RPI_AuxMiniUartInit(int baud, int bits) { volatile int i; + // Data memory barrier need to be places between accesses to different peripherals + // + // See page 7 of the BCM2853 manual + + _data_memory_barrier(); + int sys_freq = get_clock_rate(CORE_CLK_ID); if (!sys_freq) { sys_freq = FALLBACK_SYS_FREQ; } + _data_memory_barrier(); + + /* Setup GPIO 14 and 15 as alternative function 5 which is + UART 1 TXD/RXD. These need to be set before enabling the UART */ + RPI_SetGpioPinFunction(RPI_GPIO14, FS_ALT5); + RPI_SetGpioPinFunction(RPI_GPIO15, FS_ALT5); + + _data_memory_barrier(); + + // Enable weak pullups + RPI_GpioBase->GPPUD = 2; + // Note: the delay values are important, with 150 the receiver did not work! + for (i = 0; i < 1000; i++) + { + } + RPI_GpioBase->GPPUDCLK0 = (1 << 14) | (1 << 15); + // Note: the delay values are important, with 150 the receiver did not work! + for (i = 0; i < 1000; i++) + { + } + RPI_GpioBase->GPPUD = 2; + RPI_GpioBase->GPPUDCLK0 = 0; + + _data_memory_barrier(); + /* As this is a mini uart the configuration is complete! Now just enable the uart. Note from the documentation in section 2.1.1 of the ARM peripherals manual: @@ -92,6 +127,8 @@ void RPI_AuxMiniUartInit(int baud, int bits) peripheral. You can not even read or write the registers */ auxillary->ENABLES = AUX_ENA_MINIUART; + _data_memory_barrier(); + /* Disable flow control,enable transmitter and receiver! */ auxillary->MU_CNTL = 0; @@ -114,30 +151,19 @@ void RPI_AuxMiniUartInit(int baud, int bits) tx_buffer = malloc(TX_BUFFER_SIZE); tx_head = tx_tail = 0; *((uint32_t *) IRQ_VECTOR) = (uint32_t) RPI_AuxMiniUartIRQHandler; + _data_memory_barrier(); RPI_GetIrqController()->Enable_IRQs_1 = (1 << 29); + _data_memory_barrier(); auxillary->MU_IER |= AUX_MUIER_RX_INT; #endif - /* Setup GPIO 14 and 15 as alternative function 5 which is - UART 1 TXD/RXD. These need to be set before enabling the UART */ - RPI_SetGpioPinFunction(RPI_GPIO14, FS_ALT5); - RPI_SetGpioPinFunction(RPI_GPIO15, FS_ALT5); - - // Enable weak pullups - RPI_GpioBase->GPPUD = 2; - // Note: the delay values are important, with 150 the receiver did not work! - for (i = 0; i < 1000; i++) - { - } - RPI_GpioBase->GPPUDCLK0 = (1 << 14) | (1 << 15); - // Note: the delay values are important, with 150 the receiver did not work! - for (i = 0; i < 1000; i++) - { - } - RPI_GpioBase->GPPUDCLK0 = 0; + _data_memory_barrier(); /* Disable flow control,enable transmitter and receiver! */ auxillary->MU_CNTL = AUX_MUCNTL_TX_ENABLE | AUX_MUCNTL_RX_ENABLE; + + _data_memory_barrier(); + } void RPI_AuxMiniUartWrite(char c) @@ -161,8 +187,13 @@ void RPI_AuxMiniUartWrite(char c) tx_buffer[tmp_head] = c; tx_head = tmp_head; + _data_memory_barrier(); + /* Enable TxEmpty interrupt */ auxillary->MU_IER |= AUX_MUIER_TX_INT; + + _data_memory_barrier(); + #else /* Wait until the UART has an empty space in the FIFO */ while ((auxillary->MU_LSR & AUX_MULSR_TX_EMPTY) == 0) diff --git a/src/startup.h b/src/startup.h index c60dfec2..2f553ee6 100644 --- a/src/startup.h +++ b/src/startup.h @@ -37,6 +37,8 @@ extern void _invalidate_dtlb(); extern void _invalidate_dtlb_mva(void *address); +extern void _data_memory_barrier(); + extern unsigned int _get_core(); extern void _init_core(); From 8a6cdc5c6a6cd0aea433bc8d7be5a8eca1bdc62c Mon Sep 17 00:00:00 2001 From: David Banks Date: Fri, 23 Jun 2017 10:55:46 +0100 Subject: [PATCH 08/67] 6809 Co Pro: Updated Client Rom to 1.01a Change-Id: Ie457dfde267220ad9dbd5f72ce01f8173f085ee9 --- src/tuberom_6809.c | 283 +++++++++++++++++++++++---------------------- 1 file changed, 143 insertions(+), 140 deletions(-) diff --git a/src/tuberom_6809.c b/src/tuberom_6809.c index 8813c2be..ccb849bb 100644 --- a/src/tuberom_6809.c +++ b/src/tuberom_6809.c @@ -1,140 +1,142 @@ -// http://mdfs.net/Software/Tube/6809/Client09.bin -// MD5sum = fe29364ad30ba272f895bca568d2316b -unsigned char tuberom_6809_jgh_1_0[0x800] = { - 0xf8, 0x2c, 0xf8, 0x71, 0xff, 0xe0, 0xf8, 0xe0, 0xf8, 0xf4, 0xff, 0xee, - 0xf8, 0xe9, 0xff, 0xe7, 0xf8, 0xe6, 0xf8, 0xdf, 0x20, 0x5b, 0x0d, 0x36, +// http://mdfs.net/Software/Tube/6809/Client09v101-20170622.bin +// http://mdfs.net/Software/Tube/6809/Client09v101-20170622.src +// Version = 1.01a +// MD5sum = fe2e12d3f23c738d3a504138da2667fa +unsigned char tuberom_6809_jgh_1_0[] = { + 0xf8, 0x2c, 0xf8, 0x71, 0xff, 0xe0, 0xf8, 0xea, 0xf8, 0xfe, 0xff, 0xee, + 0xf8, 0xf3, 0xff, 0xe7, 0xf8, 0xf0, 0xf8, 0xe9, 0x20, 0x5b, 0x0d, 0x36, 0x38, 0x30, 0x39, 0x20, 0x54, 0x55, 0x42, 0x45, 0x20, 0x36, 0x34, 0x4b, - 0x20, 0x31, 0x2e, 0x30, 0x30, 0x20, 0x0d, 0x00, 0x1a, 0x50, 0x10, 0xce, + 0x20, 0x31, 0x2e, 0x30, 0x31, 0x61, 0x0d, 0x00, 0x1a, 0x50, 0x10, 0xce, 0xf8, 0x00, 0x1f, 0x41, 0xec, 0x84, 0xed, 0x81, 0x8c, 0xfe, 0xc0, 0x26, 0x03, 0x8e, 0xfe, 0xf0, 0x8c, 0xff, 0x8c, 0x26, 0x03, 0x8e, 0xff, 0x94, 0x8c, 0x00, 0x00, 0x26, 0xe7, 0xb6, 0xfe, 0xe0, 0x1a, 0x50, 0x10, 0xce, - 0xff, 0x28, 0x8d, 0x68, 0xbe, 0xff, 0x90, 0xbf, 0xff, 0x8e, 0x1c, 0x00, - 0x8e, 0xf8, 0x16, 0xbd, 0xf9, 0x33, 0xbd, 0xff, 0xe7, 0x4f, 0xbd, 0xff, - 0xee, 0x4f, 0xbd, 0xfa, 0x30, 0x10, 0xce, 0xff, 0x28, 0x8d, 0x49, 0x10, + 0xff, 0x28, 0x8d, 0x69, 0xbe, 0xff, 0x90, 0xbf, 0xff, 0x8e, 0x1c, 0x00, + 0x8e, 0xf8, 0x16, 0xbd, 0xf9, 0x3d, 0xbd, 0xff, 0xe7, 0x4f, 0xbd, 0xff, + 0xee, 0x4f, 0xbd, 0xfa, 0x3a, 0x10, 0xce, 0xff, 0x28, 0x8d, 0x4a, 0x10, 0xfe, 0xff, 0x8a, 0x8e, 0xff, 0xb9, 0xbf, 0xff, 0x90, 0x1c, 0x00, 0x8e, - 0xf8, 0x96, 0xbd, 0xf9, 0x33, 0xbd, 0xff, 0xf1, 0x25, 0x14, 0x8e, 0xff, + 0xf8, 0x96, 0xbd, 0xf9, 0x3d, 0xbd, 0xff, 0xf1, 0x25, 0x14, 0x8e, 0xff, 0x28, 0xbd, 0xff, 0xf7, 0x20, 0xed, 0x36, 0x38, 0x30, 0x39, 0x3e, 0x2a, 0x00, 0xff, 0x28, 0x57, 0x20, 0xff, 0x86, 0x7e, 0xbd, 0xff, 0xf4, 0x3f, 0x11, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, 0x00, 0x10, 0xfe, 0xff, 0x8a, - 0xbd, 0xff, 0xe7, 0xa6, 0x80, 0x8d, 0x78, 0xbd, 0xff, 0xe7, 0x20, 0xc3, - 0xcc, 0x00, 0x00, 0xfd, 0xff, 0x88, 0xcc, 0xf8, 0x00, 0xfd, 0xff, 0x8a, - 0xcc, 0xf8, 0xb0, 0xfd, 0xff, 0xfa, 0xcc, 0xfe, 0x22, 0xfd, 0xfe, 0xfa, - 0x8e, 0xff, 0xfa, 0x10, 0x8e, 0xff, 0x80, 0x39, 0xbd, 0xff, 0xe0, 0x7e, - 0xff, 0xee, 0xbd, 0xff, 0xe7, 0xa6, 0x80, 0x81, 0x04, 0x27, 0xf0, 0xbd, - 0xff, 0xee, 0x20, 0xf5, 0x34, 0x32, 0x86, 0x80, 0x8e, 0xff, 0xff, 0x1f, - 0x12, 0xbd, 0xff, 0xf4, 0x8c, 0x00, 0x00, 0x35, 0xb2, 0x34, 0x06, 0x1f, - 0x10, 0x8d, 0x06, 0x1f, 0x98, 0x8d, 0x02, 0x35, 0x86, 0x34, 0x02, 0x44, - 0x44, 0x44, 0x44, 0x8d, 0x06, 0xa6, 0xe4, 0x8d, 0x02, 0x35, 0x82, 0x84, - 0x0f, 0x81, 0x0a, 0x25, 0x02, 0x8b, 0x07, 0x8b, 0x30, 0x7e, 0xff, 0xee, - 0x35, 0x10, 0x8d, 0x03, 0x34, 0x10, 0x39, 0xa6, 0x80, 0x27, 0xfb, 0xbd, - 0xff, 0xe3, 0x20, 0xf7, 0x10, 0x8e, 0x00, 0x00, 0xa6, 0x80, 0x81, 0x30, - 0x25, 0x2b, 0x81, 0x3a, 0x25, 0x0a, 0x84, 0xdf, 0x80, 0x07, 0x25, 0x21, - 0x81, 0x40, 0x24, 0x1d, 0x84, 0x0f, 0x1e, 0x02, 0x58, 0x49, 0x58, 0x49, - 0x58, 0x49, 0x58, 0x49, 0x1e, 0x12, 0x1e, 0x01, 0x1e, 0x89, 0x3a, 0x1e, - 0x12, 0x20, 0xd5, 0xa6, 0x80, 0x81, 0x20, 0x27, 0xfa, 0x30, 0x1f, 0x81, - 0x21, 0x39, 0x34, 0x7c, 0x11, 0x8c, 0xf8, 0x00, 0x24, 0x08, 0x10, 0xff, - 0xf9, 0x8a, 0x10, 0xce, 0xff, 0x28, 0x8d, 0x0f, 0x10, 0xce, 0x00, 0x00, - 0x35, 0xfc, 0x48, 0x45, 0x4c, 0x50, 0x80, 0x47, 0x4f, 0x81, 0x00, 0x8d, - 0xd2, 0xa6, 0x80, 0x81, 0x2a, 0x27, 0xf8, 0x30, 0x1f, 0x34, 0x10, 0xa6, - 0x80, 0x81, 0x21, 0x24, 0xfa, 0x30, 0x1f, 0x8d, 0xbe, 0xbf, 0xff, 0x86, - 0x10, 0x8e, 0xf9, 0x8e, 0xae, 0xe4, 0xa6, 0x84, 0x81, 0x41, 0x25, 0x68, - 0xa6, 0x80, 0x84, 0xdf, 0xa1, 0xa0, 0x27, 0xf8, 0xa6, 0xa2, 0x2b, 0x16, - 0xa6, 0x1f, 0x81, 0x2e, 0x27, 0x0a, 0xa6, 0xa0, 0x2a, 0xfc, 0xa6, 0xa4, - 0x26, 0xde, 0x20, 0x4c, 0xa6, 0xa0, 0x2a, 0xfc, 0x20, 0x06, 0xe6, 0x82, - 0xc1, 0x21, 0x24, 0x40, 0x81, 0x80, 0x27, 0x2d, 0x8d, 0x81, 0x10, 0xbe, - 0xff, 0x90, 0x81, 0x0d, 0x27, 0x18, 0x81, 0x3b, 0x27, 0x12, 0xbd, 0xff, - 0xa1, 0x24, 0x29, 0xbd, 0xf9, 0x6b, 0x81, 0x3b, 0x27, 0x06, 0x81, 0x0d, - 0x26, 0x1e, 0x30, 0x1f, 0x30, 0x01, 0xbf, 0xff, 0x86, 0x35, 0x10, 0x1f, - 0x21, 0x1a, 0x01, 0x20, 0x23, 0xbd, 0xf9, 0x6b, 0x25, 0x04, 0x81, 0x2e, - 0x26, 0x06, 0x8e, 0xf8, 0x16, 0xbd, 0xf9, 0x33, 0x35, 0x10, 0x86, 0x02, - 0xbd, 0xfc, 0xde, 0xbd, 0xfc, 0xa2, 0x1a, 0x01, 0xbd, 0xfa, 0xb4, 0x2a, - 0x51, 0xbe, 0xff, 0x8e, 0x34, 0x01, 0x1f, 0x12, 0xe6, 0x07, 0x3a, 0xce, - 0xfa, 0x93, 0xc6, 0x04, 0xa6, 0x80, 0xa1, 0xc2, 0x26, 0x3d, 0x5a, 0x26, - 0xf7, 0xa6, 0x26, 0x48, 0x2a, 0x41, 0x84, 0x1e, 0x81, 0x06, 0x26, 0x3b, - 0x30, 0x1c, 0xbf, 0xff, 0x82, 0xfe, 0xff, 0x90, 0xbe, 0xff, 0x8a, 0x35, - 0x02, 0x34, 0x50, 0x10, 0x8c, 0x80, 0x00, 0x25, 0x04, 0x10, 0xbf, 0xff, - 0x8a, 0x10, 0xbf, 0xff, 0x90, 0x46, 0xbe, 0xff, 0x86, 0x86, 0x01, 0xad, + 0xbd, 0xff, 0xe7, 0xa6, 0x80, 0xbd, 0xf9, 0x3d, 0xbd, 0xff, 0xe7, 0x20, + 0xc2, 0xcc, 0x00, 0x00, 0xfd, 0xff, 0x88, 0xcc, 0xf8, 0x00, 0xfd, 0xff, + 0x8a, 0xcc, 0xf8, 0xb0, 0xfd, 0xff, 0xfa, 0x4d, 0x2b, 0x06, 0xfc, 0xff, + 0x92, 0xfd, 0xff, 0x90, 0xcc, 0xfe, 0x30, 0xfd, 0xfe, 0xfa, 0x8e, 0xff, + 0xfa, 0x10, 0x8e, 0xff, 0x80, 0x39, 0xbd, 0xff, 0xe0, 0x7e, 0xff, 0xee, + 0xbd, 0xff, 0xe7, 0xa6, 0x80, 0x81, 0x04, 0x27, 0xf0, 0xbd, 0xff, 0xee, + 0x20, 0xf5, 0x34, 0x32, 0x86, 0x80, 0x8e, 0xff, 0xff, 0x1f, 0x12, 0xbd, + 0xff, 0xf4, 0x8c, 0x00, 0x00, 0x35, 0xb2, 0x34, 0x06, 0x1f, 0x10, 0x8d, + 0x06, 0x1f, 0x98, 0x8d, 0x02, 0x35, 0x86, 0x34, 0x02, 0x44, 0x44, 0x44, + 0x44, 0x8d, 0x06, 0xa6, 0xe4, 0x8d, 0x02, 0x35, 0x82, 0x84, 0x0f, 0x81, + 0x0a, 0x25, 0x02, 0x8b, 0x07, 0x8b, 0x30, 0x7e, 0xff, 0xee, 0x35, 0x10, + 0x8d, 0x03, 0x34, 0x10, 0x39, 0xa6, 0x80, 0x27, 0xfb, 0xbd, 0xff, 0xe3, + 0x20, 0xf7, 0x10, 0x8e, 0x00, 0x00, 0xa6, 0x80, 0x81, 0x30, 0x25, 0x2b, + 0x81, 0x3a, 0x25, 0x0a, 0x84, 0xdf, 0x80, 0x07, 0x25, 0x21, 0x81, 0x40, + 0x24, 0x1d, 0x84, 0x0f, 0x1e, 0x02, 0x58, 0x49, 0x58, 0x49, 0x58, 0x49, + 0x58, 0x49, 0x1e, 0x12, 0x1e, 0x01, 0x1e, 0x89, 0x3a, 0x1e, 0x12, 0x20, + 0xd5, 0xa6, 0x80, 0x81, 0x20, 0x27, 0xfa, 0x30, 0x1f, 0x81, 0x21, 0x39, + 0x34, 0x7c, 0x33, 0x78, 0x11, 0x8c, 0xf8, 0x00, 0x24, 0x04, 0x10, 0xce, + 0xff, 0x28, 0x34, 0x40, 0x8d, 0x0f, 0x35, 0x40, 0x32, 0x48, 0x35, 0xfc, + 0x48, 0x45, 0x4c, 0x50, 0x80, 0x47, 0x4f, 0x81, 0x00, 0x8d, 0xd2, 0xa6, + 0x80, 0x81, 0x2a, 0x27, 0xf8, 0x30, 0x1f, 0x34, 0x10, 0xa6, 0x80, 0x81, + 0x21, 0x24, 0xfa, 0x30, 0x1f, 0x8d, 0xbe, 0xbf, 0xff, 0x86, 0x10, 0x8e, + 0xf9, 0x98, 0xae, 0xe4, 0xa6, 0x84, 0x81, 0x41, 0x25, 0x68, 0xa6, 0x80, + 0x84, 0xdf, 0xa1, 0xa0, 0x27, 0xf8, 0xa6, 0xa2, 0x2b, 0x16, 0xa6, 0x1f, + 0x81, 0x2e, 0x27, 0x0a, 0xa6, 0xa0, 0x2a, 0xfc, 0xa6, 0xa4, 0x26, 0xde, + 0x20, 0x4c, 0xa6, 0xa0, 0x2a, 0xfc, 0x20, 0x06, 0xe6, 0x82, 0xc1, 0x21, + 0x24, 0x40, 0x81, 0x80, 0x27, 0x2d, 0x8d, 0x81, 0x10, 0xbe, 0xff, 0x90, + 0x81, 0x0d, 0x27, 0x18, 0x81, 0x3b, 0x27, 0x12, 0xbd, 0xff, 0xa1, 0x24, + 0x29, 0xbd, 0xf9, 0x75, 0x81, 0x3b, 0x27, 0x06, 0x81, 0x0d, 0x26, 0x1e, + 0x30, 0x1f, 0x30, 0x01, 0xbf, 0xff, 0x86, 0x35, 0x10, 0x1f, 0x21, 0x1a, + 0x01, 0x20, 0x23, 0xbd, 0xf9, 0x75, 0x25, 0x04, 0x81, 0x2e, 0x26, 0x06, + 0x8e, 0xf8, 0x16, 0xbd, 0xf9, 0x3d, 0x35, 0x10, 0x86, 0x02, 0xbd, 0xfc, + 0xec, 0xbd, 0xfc, 0xb0, 0x1a, 0x01, 0xbd, 0xfa, 0xc2, 0x2a, 0x53, 0xbe, + 0xff, 0x8e, 0x34, 0x01, 0x1f, 0x12, 0xe6, 0x07, 0x3a, 0xce, 0xfa, 0xa1, + 0xc6, 0x04, 0xa6, 0x80, 0xa1, 0xc2, 0x26, 0x3f, 0x5a, 0x26, 0xf7, 0xa6, + 0x26, 0x48, 0x2a, 0x45, 0x84, 0x1e, 0x81, 0x06, 0x26, 0x3f, 0x30, 0x1c, + 0xbf, 0xff, 0x82, 0xfe, 0xff, 0x90, 0xbe, 0xff, 0x8a, 0x35, 0x02, 0x34, + 0x50, 0x10, 0x8c, 0x80, 0x00, 0x25, 0x04, 0x10, 0xbf, 0xff, 0x8a, 0x10, + 0xbf, 0xff, 0x92, 0xbe, 0xff, 0x86, 0xee, 0x66, 0x46, 0x86, 0x01, 0xad, 0xa4, 0x35, 0x60, 0x10, 0xbf, 0xff, 0x8a, 0xff, 0xff, 0x90, 0x39, 0xbe, - 0xff, 0x86, 0x4f, 0x35, 0x01, 0x6e, 0xa4, 0x29, 0x43, 0x28, 0x00, 0x35, - 0x01, 0x10, 0x24, 0x05, 0x20, 0xbd, 0xf8, 0xcc, 0x3f, 0xf9, 0x4e, 0x6f, - 0x74, 0x20, 0x36, 0x38, 0x30, 0x39, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x00, - 0x4f, 0xbd, 0xfc, 0xde, 0x8d, 0x02, 0x8b, 0x80, 0xb6, 0xfe, 0xe2, 0x2a, - 0xfb, 0xb6, 0xfe, 0xe3, 0x39, 0x34, 0x06, 0x4d, 0x2b, 0x23, 0x86, 0x04, - 0xbd, 0xfc, 0xde, 0x1f, 0x10, 0xbd, 0xfc, 0xdc, 0x35, 0x06, 0x34, 0x06, - 0xbd, 0xfc, 0xde, 0x8d, 0xdf, 0x1f, 0x89, 0x4f, 0x1f, 0x01, 0x35, 0x86, - 0x8e, 0xf8, 0x16, 0xbf, 0xff, 0x86, 0x7e, 0xfa, 0x2e, 0x81, 0x82, 0x27, - 0x39, 0x81, 0x83, 0x27, 0x37, 0x81, 0x84, 0x27, 0x33, 0x86, 0x06, 0xbd, - 0xfc, 0xde, 0x1f, 0x10, 0xbd, 0xfc, 0xdc, 0xbd, 0xfc, 0xda, 0x35, 0x06, - 0xbd, 0xfc, 0xde, 0x81, 0x9d, 0x27, 0xb5, 0x81, 0x8e, 0x27, 0xd1, 0x34, - 0x06, 0x8d, 0xa5, 0x8b, 0x80, 0x34, 0x01, 0x8d, 0x9f, 0x1f, 0x89, 0x4f, - 0x1f, 0x02, 0x8d, 0x98, 0x1e, 0x89, 0x1f, 0x01, 0x35, 0x87, 0x86, 0x85, - 0x48, 0x8e, 0xff, 0x82, 0xec, 0x86, 0x1f, 0x01, 0x1f, 0x89, 0x4f, 0x1f, - 0x02, 0x35, 0x86, 0x4d, 0x27, 0x5c, 0x34, 0x26, 0x34, 0x10, 0x1f, 0x89, - 0x86, 0x08, 0xbd, 0xfc, 0xde, 0xbd, 0xfc, 0xdc, 0x5d, 0x2a, 0x04, 0xa6, - 0x84, 0x20, 0x0c, 0x86, 0x10, 0xc1, 0x15, 0x24, 0x06, 0x8e, 0xfb, 0xc1, - 0x3a, 0xa6, 0x84, 0x35, 0x10, 0xbd, 0xfc, 0xde, 0x1f, 0x02, 0x1e, 0x89, - 0x4f, 0x1e, 0x02, 0x4a, 0x2b, 0x03, 0xbd, 0xfc, 0xab, 0x34, 0x10, 0x5d, - 0x2a, 0x04, 0xa6, 0x01, 0x20, 0x0c, 0x86, 0x10, 0xc1, 0x15, 0x24, 0x06, - 0x8e, 0xfb, 0xd5, 0x3a, 0xa6, 0x84, 0x35, 0x10, 0xbd, 0xfc, 0xde, 0x1f, - 0x02, 0x1e, 0x89, 0x4f, 0x1e, 0x02, 0x4a, 0x2b, 0x03, 0xbd, 0xfc, 0xbb, - 0x35, 0xa6, 0x86, 0x0a, 0xbd, 0xfc, 0xde, 0x30, 0x02, 0x10, 0x8e, 0x00, - 0x03, 0xbd, 0xfc, 0xab, 0x30, 0x1e, 0x86, 0x07, 0xbd, 0xfc, 0xde, 0x4f, - 0xbd, 0xfc, 0xde, 0xbd, 0xfa, 0xb4, 0x8b, 0x80, 0x25, 0x0f, 0xae, 0x84, - 0xbd, 0xfa, 0xb4, 0xa7, 0x80, 0x31, 0x21, 0x81, 0x0d, 0x26, 0xf5, 0x31, - 0x3f, 0x39, 0x00, 0x05, 0x00, 0x05, 0x04, 0x05, 0x08, 0x0e, 0x04, 0x01, - 0x01, 0x05, 0x00, 0x10, 0x20, 0x10, 0x0d, 0x00, 0x04, 0x80, 0x05, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x09, 0x05, 0x00, 0x08, 0x19, - 0x00, 0x01, 0x0d, 0x80, 0x04, 0x80, 0x34, 0x26, 0x86, 0x0c, 0xbd, 0xfc, - 0xde, 0xbd, 0xfc, 0xda, 0x10, 0x8e, 0x00, 0x04, 0xbd, 0xfc, 0xab, 0x35, - 0x06, 0xbd, 0xfc, 0xde, 0xbd, 0xfa, 0xb4, 0x34, 0x02, 0x10, 0x8e, 0x00, - 0x04, 0xbd, 0xfc, 0xbb, 0x35, 0xa2, 0x34, 0x04, 0x86, 0x0e, 0xbd, 0xfc, - 0xde, 0xbd, 0xfc, 0xda, 0x35, 0x04, 0x7e, 0xfa, 0xb0, 0x34, 0x06, 0x86, - 0x10, 0xbd, 0xfc, 0xde, 0xbd, 0xfc, 0xda, 0x35, 0x06, 0x34, 0x06, 0xbd, - 0xfc, 0xde, 0xbd, 0xfa, 0xb4, 0x35, 0x86, 0x34, 0x06, 0x86, 0x12, 0xbd, - 0xfc, 0xde, 0x35, 0x06, 0xbd, 0xfc, 0xde, 0x4d, 0x27, 0x06, 0xbd, 0xfc, - 0xa2, 0x7e, 0xfa, 0xb4, 0x34, 0x04, 0xbd, 0xfc, 0xda, 0xbd, 0xfa, 0xb4, - 0x4f, 0x35, 0x84, 0x34, 0x32, 0x86, 0x14, 0xbd, 0xfc, 0xde, 0x30, 0x02, - 0x10, 0x8e, 0x00, 0x10, 0xbd, 0xfc, 0xab, 0x30, 0x1e, 0xae, 0x84, 0xbd, - 0xfc, 0xa2, 0x35, 0x02, 0xbd, 0xfc, 0xde, 0xbd, 0xfa, 0xb4, 0x35, 0x10, - 0x34, 0x02, 0x30, 0x02, 0x10, 0x8e, 0x00, 0x10, 0xbd, 0xfc, 0xbb, 0x30, - 0x1e, 0x35, 0xa2, 0x34, 0x22, 0x86, 0x16, 0xbd, 0xfc, 0xde, 0x10, 0x8e, - 0x00, 0x0d, 0xbd, 0xfc, 0xab, 0x35, 0x02, 0xbd, 0xfc, 0xde, 0x10, 0x8e, - 0x00, 0x0d, 0xbd, 0xfc, 0xbb, 0x35, 0x20, 0x7e, 0xfa, 0xb0, 0xa6, 0x80, - 0x8d, 0x38, 0x81, 0x0d, 0x26, 0xf8, 0x39, 0x34, 0x04, 0x1f, 0x20, 0x3a, - 0x35, 0x04, 0xa6, 0x82, 0x8d, 0x28, 0x31, 0x3f, 0x26, 0xf8, 0x39, 0x34, - 0x04, 0x1f, 0x20, 0x3a, 0x35, 0x04, 0xbd, 0xfa, 0xb4, 0xa7, 0x82, 0x31, - 0x3f, 0x26, 0xf7, 0x39, 0x34, 0x02, 0xb6, 0xfe, 0xe0, 0x48, 0x2a, 0xfa, - 0x35, 0x02, 0xb7, 0xfe, 0xe1, 0x39, 0x1f, 0x20, 0x1f, 0x98, 0x34, 0x02, - 0xb6, 0xfe, 0xe2, 0x48, 0x2a, 0xfa, 0x35, 0x02, 0xb7, 0xfe, 0xe3, 0x39, - 0x34, 0x02, 0xb6, 0xfe, 0xe6, 0x2b, 0x51, 0xb6, 0xfe, 0xe0, 0x2b, 0x06, - 0x35, 0x02, 0x6e, 0x9f, 0xff, 0xb1, 0xb6, 0xfe, 0xe1, 0x2b, 0x1b, 0x35, - 0x02, 0x34, 0x76, 0x8d, 0x1c, 0x1f, 0x89, 0x4f, 0x1f, 0x02, 0x8d, 0x15, - 0x1f, 0x89, 0x4f, 0x1f, 0x01, 0x8d, 0x0e, 0xad, 0x9f, 0xff, 0xfc, 0x35, - 0x76, 0x3b, 0x48, 0xb7, 0xff, 0x80, 0x35, 0x02, 0x3b, 0xb6, 0xfe, 0xe6, - 0x2b, 0x02, 0x8d, 0x12, 0xb6, 0xfe, 0xe0, 0x2a, 0xf4, 0xb6, 0xfe, 0xe1, - 0x39, 0xb6, 0xfe, 0xe6, 0x2a, 0xfb, 0xb6, 0xfe, 0xe7, 0x39, 0x1c, 0x7f, - 0x34, 0x01, 0x34, 0x02, 0x35, 0x02, 0x34, 0x16, 0xb6, 0xfe, 0xe7, 0x2a, - 0x22, 0x10, 0xce, 0xff, 0x80, 0x8e, 0xff, 0x00, 0xbd, 0xfa, 0xb4, 0x86, - 0x3f, 0xa7, 0x80, 0xbd, 0xfa, 0xb4, 0xa7, 0x80, 0xbd, 0xfa, 0xb4, 0xa7, - 0x80, 0x26, 0xf9, 0x8e, 0xff, 0x01, 0x34, 0x10, 0x7e, 0xff, 0xbc, 0x34, - 0x02, 0x8d, 0xc2, 0x35, 0x02, 0x81, 0x05, 0x26, 0x06, 0x7f, 0xff, 0x94, - 0x35, 0x16, 0x3b, 0x34, 0x02, 0x8d, 0xb2, 0xb7, 0xff, 0x8c, 0x8d, 0xad, - 0xb7, 0xff, 0x8d, 0x8d, 0xa8, 0xb7, 0xff, 0x8e, 0x8d, 0xa3, 0xb7, 0xff, - 0x8f, 0x8d, 0x9e, 0x86, 0xff, 0xb7, 0xff, 0x94, 0x1c, 0xbf, 0xbe, 0xff, - 0x8e, 0xa6, 0xe0, 0x27, 0x6c, 0x81, 0x02, 0x25, 0x5b, 0x27, 0x49, 0x81, - 0x04, 0x25, 0x35, 0x27, 0x6e, 0x5f, 0x81, 0x07, 0x25, 0x11, 0x26, 0x67, - 0xb6, 0xfe, 0xe4, 0x2a, 0xfb, 0xb6, 0xfe, 0xe5, 0xa7, 0x85, 0x5c, 0x26, - 0xf3, 0x20, 0x17, 0xb6, 0xfe, 0xe4, 0x48, 0x2a, 0xfa, 0xa6, 0x85, 0xb7, - 0xfe, 0xe5, 0x5c, 0x26, 0xf2, 0xb6, 0xfe, 0xe4, 0x48, 0x2a, 0xfa, 0xb7, - 0xfe, 0xe5, 0x30, 0x89, 0x01, 0x00, 0x20, 0x38, 0x13, 0xb6, 0xfe, 0xe5, - 0xf6, 0xfe, 0xe5, 0xed, 0x81, 0xb6, 0xff, 0x94, 0x26, 0xf2, 0x20, 0x28, - 0x13, 0xec, 0x81, 0xb7, 0xfe, 0xe5, 0xf7, 0xfe, 0xe5, 0xb6, 0xff, 0x94, - 0x26, 0xf2, 0x20, 0x18, 0x13, 0xb6, 0xfe, 0xe5, 0xa7, 0x80, 0xb6, 0xff, - 0x94, 0x26, 0xf5, 0x20, 0x0b, 0x13, 0xa6, 0x80, 0xb7, 0xfe, 0xe5, 0xb6, - 0xff, 0x94, 0x26, 0xf5, 0xbf, 0xff, 0x8e, 0x35, 0x16, 0x3b, 0x32, 0x6a, - 0x35, 0x10, 0xbf, 0xff, 0x82, 0x1c, 0x00, 0x6e, 0x9f, 0xff, 0xfa, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x86, 0xee, 0x63, 0x4f, 0x35, 0x01, 0x6e, 0xa4, 0x29, 0x43, 0x28, + 0x00, 0x35, 0x01, 0x10, 0x24, 0x05, 0x12, 0xbd, 0xf8, 0xcd, 0x3f, 0xf9, + 0x4e, 0x6f, 0x74, 0x20, 0x36, 0x38, 0x30, 0x39, 0x20, 0x63, 0x6f, 0x64, + 0x65, 0x00, 0x4f, 0xbd, 0xfc, 0xec, 0x8d, 0x02, 0x8b, 0x80, 0xb6, 0xfe, + 0xe2, 0x2a, 0xfb, 0xb6, 0xfe, 0xe3, 0x39, 0x34, 0x06, 0x4d, 0x2b, 0x23, + 0x86, 0x04, 0xbd, 0xfc, 0xec, 0x1f, 0x10, 0xbd, 0xfc, 0xea, 0x35, 0x06, + 0x34, 0x06, 0xbd, 0xfc, 0xec, 0x8d, 0xdf, 0x1f, 0x89, 0x4f, 0x1f, 0x01, + 0x35, 0x86, 0x8e, 0xf8, 0x16, 0xbf, 0xff, 0x86, 0x7e, 0xfa, 0x38, 0x81, + 0x82, 0x27, 0x39, 0x81, 0x83, 0x27, 0x37, 0x81, 0x84, 0x27, 0x33, 0x86, + 0x06, 0xbd, 0xfc, 0xec, 0x1f, 0x10, 0xbd, 0xfc, 0xea, 0xbd, 0xfc, 0xe8, + 0x35, 0x06, 0xbd, 0xfc, 0xec, 0x81, 0x9d, 0x27, 0xb5, 0x81, 0x8e, 0x27, + 0xd1, 0x34, 0x06, 0x8d, 0xa5, 0x8b, 0x80, 0x34, 0x01, 0x8d, 0x9f, 0x1f, + 0x89, 0x4f, 0x1f, 0x02, 0x8d, 0x98, 0x1e, 0x89, 0x1f, 0x01, 0x35, 0x87, + 0x86, 0x85, 0x48, 0x8e, 0xff, 0x82, 0xec, 0x86, 0x1f, 0x01, 0x1f, 0x89, + 0x4f, 0x1f, 0x02, 0x35, 0x86, 0x4d, 0x27, 0x5c, 0x34, 0x26, 0x34, 0x10, + 0x1f, 0x89, 0x86, 0x08, 0xbd, 0xfc, 0xec, 0xbd, 0xfc, 0xea, 0x5d, 0x2a, + 0x04, 0xa6, 0x84, 0x20, 0x0c, 0x86, 0x10, 0xc1, 0x15, 0x24, 0x06, 0x8e, + 0xfb, 0xcf, 0x3a, 0xa6, 0x84, 0x35, 0x10, 0xbd, 0xfc, 0xec, 0x1f, 0x02, + 0x1e, 0x89, 0x4f, 0x1e, 0x02, 0x4a, 0x2b, 0x03, 0xbd, 0xfc, 0xb9, 0x34, + 0x10, 0x5d, 0x2a, 0x04, 0xa6, 0x01, 0x20, 0x0c, 0x86, 0x10, 0xc1, 0x15, + 0x24, 0x06, 0x8e, 0xfb, 0xe3, 0x3a, 0xa6, 0x84, 0x35, 0x10, 0xbd, 0xfc, + 0xec, 0x1f, 0x02, 0x1e, 0x89, 0x4f, 0x1e, 0x02, 0x4a, 0x2b, 0x03, 0xbd, + 0xfc, 0xc9, 0x35, 0xa6, 0x86, 0x0a, 0xbd, 0xfc, 0xec, 0x30, 0x02, 0x10, + 0x8e, 0x00, 0x03, 0xbd, 0xfc, 0xb9, 0x30, 0x1e, 0x86, 0x07, 0xbd, 0xfc, + 0xec, 0x4f, 0xbd, 0xfc, 0xec, 0xbd, 0xfa, 0xc2, 0x8b, 0x80, 0x25, 0x0f, + 0xae, 0x84, 0xbd, 0xfa, 0xc2, 0xa7, 0x80, 0x31, 0x21, 0x81, 0x0d, 0x26, + 0xf5, 0x31, 0x3f, 0x39, 0x00, 0x05, 0x00, 0x05, 0x04, 0x05, 0x08, 0x0e, + 0x04, 0x01, 0x01, 0x05, 0x00, 0x10, 0x20, 0x10, 0x0d, 0x00, 0x04, 0x80, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x09, 0x05, 0x00, + 0x08, 0x19, 0x00, 0x01, 0x0d, 0x80, 0x04, 0x80, 0x34, 0x26, 0x86, 0x0c, + 0xbd, 0xfc, 0xec, 0xbd, 0xfc, 0xe8, 0x10, 0x8e, 0x00, 0x04, 0xbd, 0xfc, + 0xb9, 0x35, 0x06, 0xbd, 0xfc, 0xec, 0xbd, 0xfa, 0xc2, 0x34, 0x02, 0x10, + 0x8e, 0x00, 0x04, 0xbd, 0xfc, 0xc9, 0x35, 0xa2, 0x34, 0x04, 0x86, 0x0e, + 0xbd, 0xfc, 0xec, 0xbd, 0xfc, 0xe8, 0x35, 0x04, 0x7e, 0xfa, 0xbe, 0x34, + 0x06, 0x86, 0x10, 0xbd, 0xfc, 0xec, 0xbd, 0xfc, 0xe8, 0x35, 0x06, 0x34, + 0x06, 0xbd, 0xfc, 0xec, 0xbd, 0xfa, 0xc2, 0x35, 0x86, 0x34, 0x06, 0x86, + 0x12, 0xbd, 0xfc, 0xec, 0x35, 0x06, 0xbd, 0xfc, 0xec, 0x4d, 0x27, 0x06, + 0xbd, 0xfc, 0xb0, 0x7e, 0xfa, 0xc2, 0x34, 0x04, 0xbd, 0xfc, 0xe8, 0xbd, + 0xfa, 0xc2, 0x4f, 0x35, 0x84, 0x34, 0x32, 0x86, 0x14, 0xbd, 0xfc, 0xec, + 0x30, 0x02, 0x10, 0x8e, 0x00, 0x10, 0xbd, 0xfc, 0xb9, 0x30, 0x1e, 0xae, + 0x84, 0xbd, 0xfc, 0xb0, 0x35, 0x02, 0xbd, 0xfc, 0xec, 0xbd, 0xfa, 0xc2, + 0x35, 0x10, 0x34, 0x02, 0x30, 0x02, 0x10, 0x8e, 0x00, 0x10, 0xbd, 0xfc, + 0xc9, 0x30, 0x1e, 0x35, 0xa2, 0x34, 0x22, 0x86, 0x16, 0xbd, 0xfc, 0xec, + 0x10, 0x8e, 0x00, 0x0d, 0xbd, 0xfc, 0xb9, 0x35, 0x02, 0xbd, 0xfc, 0xec, + 0x10, 0x8e, 0x00, 0x0d, 0xbd, 0xfc, 0xc9, 0x35, 0x20, 0x7e, 0xfa, 0xbe, + 0xa6, 0x80, 0x8d, 0x38, 0x81, 0x0d, 0x26, 0xf8, 0x39, 0x34, 0x04, 0x1f, + 0x20, 0x3a, 0x35, 0x04, 0xa6, 0x82, 0x8d, 0x28, 0x31, 0x3f, 0x26, 0xf8, + 0x39, 0x34, 0x04, 0x1f, 0x20, 0x3a, 0x35, 0x04, 0xbd, 0xfa, 0xc2, 0xa7, + 0x82, 0x31, 0x3f, 0x26, 0xf7, 0x39, 0x34, 0x02, 0xb6, 0xfe, 0xe0, 0x48, + 0x2a, 0xfa, 0x35, 0x02, 0xb7, 0xfe, 0xe1, 0x39, 0x1f, 0x20, 0x1f, 0x98, + 0x34, 0x02, 0xb6, 0xfe, 0xe2, 0x48, 0x2a, 0xfa, 0x35, 0x02, 0xb7, 0xfe, + 0xe3, 0x39, 0x34, 0x02, 0xb6, 0xfe, 0xe6, 0x2b, 0x51, 0xb6, 0xfe, 0xe0, + 0x2b, 0x06, 0x35, 0x02, 0x6e, 0x9f, 0xff, 0xb1, 0xb6, 0xfe, 0xe1, 0x2b, + 0x1b, 0x35, 0x02, 0x34, 0x76, 0x8d, 0x1c, 0x1f, 0x89, 0x4f, 0x1f, 0x02, + 0x8d, 0x15, 0x1f, 0x89, 0x4f, 0x1f, 0x01, 0x8d, 0x0e, 0xad, 0x9f, 0xff, + 0xfc, 0x35, 0x76, 0x3b, 0x48, 0xb7, 0xff, 0x80, 0x35, 0x02, 0x3b, 0xb6, + 0xfe, 0xe6, 0x2a, 0x02, 0x8d, 0x12, 0xb6, 0xfe, 0xe0, 0x2a, 0xf4, 0xb6, + 0xfe, 0xe1, 0x39, 0xb6, 0xfe, 0xe6, 0x2a, 0xfb, 0xb6, 0xfe, 0xe7, 0x39, + 0x1c, 0x7f, 0x34, 0x01, 0x34, 0x02, 0x35, 0x02, 0x34, 0x16, 0xb6, 0xfe, + 0xe7, 0x2a, 0x22, 0x10, 0xce, 0xff, 0x80, 0x8e, 0xff, 0x00, 0xbd, 0xfa, + 0xc2, 0x86, 0x3f, 0xa7, 0x80, 0xbd, 0xfa, 0xc2, 0xa7, 0x80, 0xbd, 0xfa, + 0xc2, 0xa7, 0x80, 0x26, 0xf9, 0x8e, 0xff, 0x01, 0x34, 0x10, 0x7e, 0xff, + 0xbc, 0x34, 0x02, 0x8d, 0xc2, 0x35, 0x02, 0x81, 0x05, 0x26, 0x06, 0x7f, + 0xff, 0x94, 0x35, 0x16, 0x3b, 0x34, 0x02, 0x8d, 0xb2, 0xb7, 0xff, 0x8c, + 0x8d, 0xad, 0xb7, 0xff, 0x8d, 0x8d, 0xa8, 0xb7, 0xff, 0x8e, 0x8d, 0xa3, + 0xb7, 0xff, 0x8f, 0x8d, 0x9e, 0x86, 0xff, 0xb7, 0xff, 0x94, 0x1c, 0xbf, + 0xbe, 0xff, 0x8e, 0xa6, 0xe0, 0x27, 0x6c, 0x81, 0x02, 0x25, 0x5b, 0x27, + 0x49, 0x81, 0x04, 0x25, 0x35, 0x27, 0x6e, 0x5f, 0x81, 0x07, 0x25, 0x11, + 0x26, 0x67, 0xb6, 0xfe, 0xe4, 0x2a, 0xfb, 0xb6, 0xfe, 0xe5, 0xa7, 0x85, + 0x5c, 0x26, 0xf3, 0x20, 0x17, 0xb6, 0xfe, 0xe4, 0x48, 0x2a, 0xfa, 0xa6, + 0x85, 0xb7, 0xfe, 0xe5, 0x5c, 0x26, 0xf2, 0xb6, 0xfe, 0xe4, 0x48, 0x2a, + 0xfa, 0xb7, 0xfe, 0xe5, 0x30, 0x89, 0x01, 0x00, 0x20, 0x38, 0x13, 0xb6, + 0xfe, 0xe5, 0xf6, 0xfe, 0xe5, 0xed, 0x81, 0xb6, 0xff, 0x94, 0x26, 0xf2, + 0x20, 0x28, 0x13, 0xec, 0x81, 0xb7, 0xfe, 0xe5, 0xf7, 0xfe, 0xe5, 0xb6, + 0xff, 0x94, 0x26, 0xf2, 0x20, 0x18, 0x13, 0xb6, 0xfe, 0xe5, 0xa7, 0x80, + 0xb6, 0xff, 0x94, 0x26, 0xf5, 0x20, 0x0b, 0x13, 0xa6, 0x80, 0xb7, 0xfe, + 0xe5, 0xb6, 0xff, 0x94, 0x26, 0xf5, 0xbf, 0xff, 0x8e, 0x35, 0x16, 0x3b, + 0x32, 0x6a, 0x35, 0x10, 0xbf, 0xff, 0x82, 0x1c, 0x00, 0x6e, 0x9f, 0xff, + 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, @@ -149,8 +151,8 @@ unsigned char tuberom_6809_jgh_1_0[0x800] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xfe, 0x21, 0xfe, 0x21, 0xfe, 0x21, 0xfc, 0xec, 0xfe, 0x21, 0xfe, 0x22, - 0xfe, 0x21, 0xf8, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0x2f, 0xfe, 0x2f, 0xfe, 0x2f, 0xfc, 0xfa, 0xfe, 0x2f, 0xfe, 0x30, + 0xfe, 0x2f, 0xf8, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -162,14 +164,15 @@ unsigned char tuberom_6809_jgh_1_0[0x800] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x16, 0xf8, 0xb0, 0xf8, 0x16, 0x00, 0x00, 0xf8, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xb9, 0xff, 0x00, 0x00, 0x7e, 0xfa, 0x86, - 0x7e, 0xf8, 0x2c, 0x7e, 0xfa, 0x86, 0x7e, 0xfa, 0x86, 0x7e, 0xf9, 0x3c, - 0x7e, 0xfa, 0x86, 0x7e, 0xf8, 0x71, 0x7e, 0xf9, 0x11, 0x7e, 0xf9, 0x05, - 0x7e, 0xfe, 0x21, 0x7e, 0xf9, 0x2c, 0x7e, 0xfa, 0x86, 0x7e, 0xf8, 0x71, - 0x7e, 0xfe, 0x24, 0x7e, 0xf8, 0xd2, 0x7e, 0xfa, 0x86, 0x7e, 0xf9, 0x33, - 0x7e, 0xfa, 0x86, 0x7e, 0xfa, 0x86, 0x7e, 0xfc, 0x33, 0x7e, 0xfc, 0x83, - 0x7e, 0xfc, 0x1d, 0x7e, 0xfc, 0x0e, 0x7e, 0xfb, 0xea, 0x7e, 0xfc, 0x53, - 0x7e, 0xfa, 0xac, 0x81, 0x0d, 0x26, 0x07, 0x86, 0x0a, 0xbd, 0xff, 0xee, - 0x86, 0x0d, 0x7e, 0xfc, 0xcc, 0x7e, 0xfb, 0x33, 0x7e, 0xfa, 0xbd, 0x7e, - 0xf9, 0x76, 0xf8, 0xb0, 0xfa, 0x86, 0xf8, 0x2c + 0x00, 0x00, 0x00, 0x00, 0xff, 0xb9, 0xff, 0xb9, 0x00, 0x7e, 0xfa, 0x92, + 0x7e, 0xf8, 0x2c, 0x7e, 0xfa, 0x92, 0x7e, 0xfa, 0x92, 0x7e, 0xf9, 0x46, + 0x7e, 0xfa, 0x92, 0x7e, 0xf8, 0x71, 0x7e, 0xf9, 0x1b, 0x7e, 0xf9, 0x0f, + 0x7e, 0xfe, 0x2f, 0x7e, 0xf9, 0x36, 0x7e, 0xfa, 0x92, 0x7e, 0xf8, 0x71, + 0x7e, 0xfe, 0x32, 0x7e, 0xf8, 0xd3, 0x7e, 0xfa, 0x92, 0x7e, 0xf9, 0x3d, + 0x7e, 0xfa, 0x92, 0x7e, 0xfa, 0x92, 0x7e, 0xfc, 0x41, 0x7e, 0xfc, 0x91, + 0x7e, 0xfc, 0x2b, 0x7e, 0xfc, 0x1c, 0x7e, 0xfb, 0xf8, 0x7e, 0xfc, 0x61, + 0x7e, 0xfa, 0xba, 0x81, 0x0d, 0x26, 0x07, 0x86, 0x0a, 0xbd, 0xff, 0xee, + 0x86, 0x0d, 0x7e, 0xfc, 0xda, 0x7e, 0xfb, 0x41, 0x7e, 0xfa, 0xcb, 0x7e, + 0xf9, 0x80, 0xf8, 0xb0, 0xfa, 0x92, 0xf8, 0x2c }; +unsigned int _home_dmb_atom_CoPro6502_client_6809_101b_Client09v101_20170622_bin_len = 2048; From c3fcf79f1a6fff768493e1ff5ce49de677f3225e Mon Sep 17 00:00:00 2001 From: David Banks Date: Fri, 23 Jun 2017 10:57:00 +0100 Subject: [PATCH 09/67] Updated the release name to Diamondback-rc1 Change-Id: If7678e2c517c62b6b5e01216e5dca47134ce3207 --- src/tube-defs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tube-defs.h b/src/tube-defs.h index 28e0f982..af494d81 100644 --- a/src/tube-defs.h +++ b/src/tube-defs.h @@ -3,7 +3,7 @@ #ifndef TUBE_DEFS_H #define TUBE_DEFS_H -#define RELEASENAME "Diamondback-rc0" +#define RELEASENAME "Diamondback-rc1" #define NDEBUG From 6ec07ab1c7d4b407b6e08c9fd3342f9748bec784 Mon Sep 17 00:00:00 2001 From: David Banks Date: Wed, 19 Jul 2017 15:24:24 +0100 Subject: [PATCH 10/67] 6809: Updated client rom to 1.02c for testing Change-Id: I300f3f046ca4119dea55cd9099c00d0b0acd6417 --- src/tuberom_6809.c | 269 ++++++++++++++++++++++----------------------- 1 file changed, 134 insertions(+), 135 deletions(-) diff --git a/src/tuberom_6809.c b/src/tuberom_6809.c index ccb849bb..213f131c 100644 --- a/src/tuberom_6809.c +++ b/src/tuberom_6809.c @@ -1,142 +1,142 @@ -// http://mdfs.net/Software/Tube/6809/Client09v101-20170622.bin -// http://mdfs.net/Software/Tube/6809/Client09v101-20170622.src -// Version = 1.01a -// MD5sum = fe2e12d3f23c738d3a504138da2667fa +// http://mdfs.net/Software/Tube/6809/Client09v102-20170717.bin +// http://mdfs.net/Software/Tube/6809/Client09v102-20170717.src +// Version = 1.02c +// MD5sum = e2752fa5d0c2787e0784beb48646c41b unsigned char tuberom_6809_jgh_1_0[] = { 0xf8, 0x2c, 0xf8, 0x71, 0xff, 0xe0, 0xf8, 0xea, 0xf8, 0xfe, 0xff, 0xee, 0xf8, 0xf3, 0xff, 0xe7, 0xf8, 0xf0, 0xf8, 0xe9, 0x20, 0x5b, 0x0d, 0x36, 0x38, 0x30, 0x39, 0x20, 0x54, 0x55, 0x42, 0x45, 0x20, 0x36, 0x34, 0x4b, - 0x20, 0x31, 0x2e, 0x30, 0x31, 0x61, 0x0d, 0x00, 0x1a, 0x50, 0x10, 0xce, + 0x20, 0x31, 0x2e, 0x30, 0x32, 0x63, 0x0d, 0x00, 0x1a, 0x50, 0x10, 0xce, 0xf8, 0x00, 0x1f, 0x41, 0xec, 0x84, 0xed, 0x81, 0x8c, 0xfe, 0xc0, 0x26, 0x03, 0x8e, 0xfe, 0xf0, 0x8c, 0xff, 0x8c, 0x26, 0x03, 0x8e, 0xff, 0x94, 0x8c, 0x00, 0x00, 0x26, 0xe7, 0xb6, 0xfe, 0xe0, 0x1a, 0x50, 0x10, 0xce, - 0xff, 0x28, 0x8d, 0x69, 0xbe, 0xff, 0x90, 0xbf, 0xff, 0x8e, 0x1c, 0x00, - 0x8e, 0xf8, 0x16, 0xbd, 0xf9, 0x3d, 0xbd, 0xff, 0xe7, 0x4f, 0xbd, 0xff, - 0xee, 0x4f, 0xbd, 0xfa, 0x3a, 0x10, 0xce, 0xff, 0x28, 0x8d, 0x4a, 0x10, + 0xff, 0x80, 0x8d, 0x69, 0xbe, 0xff, 0x90, 0xbf, 0xff, 0x8e, 0x1c, 0x00, + 0x8e, 0xf8, 0x16, 0xbd, 0xf9, 0x35, 0xbd, 0xff, 0xe7, 0x4f, 0xbd, 0xff, + 0xee, 0x4f, 0xbd, 0xfa, 0x43, 0x10, 0xce, 0xff, 0x80, 0x8d, 0x4a, 0x10, 0xfe, 0xff, 0x8a, 0x8e, 0xff, 0xb9, 0xbf, 0xff, 0x90, 0x1c, 0x00, 0x8e, - 0xf8, 0x96, 0xbd, 0xf9, 0x3d, 0xbd, 0xff, 0xf1, 0x25, 0x14, 0x8e, 0xff, - 0x28, 0xbd, 0xff, 0xf7, 0x20, 0xed, 0x36, 0x38, 0x30, 0x39, 0x3e, 0x2a, - 0x00, 0xff, 0x28, 0x57, 0x20, 0xff, 0x86, 0x7e, 0xbd, 0xff, 0xf4, 0x3f, + 0xf8, 0x96, 0xbd, 0xf9, 0x35, 0xbd, 0xff, 0xf1, 0x25, 0x14, 0x8e, 0xff, + 0x00, 0xbd, 0xff, 0xf7, 0x20, 0xed, 0x36, 0x38, 0x30, 0x39, 0x3e, 0x2a, + 0x00, 0xff, 0x00, 0x6f, 0x20, 0xff, 0x86, 0x7e, 0xbd, 0xff, 0xf4, 0x3f, 0x11, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, 0x00, 0x10, 0xfe, 0xff, 0x8a, - 0xbd, 0xff, 0xe7, 0xa6, 0x80, 0xbd, 0xf9, 0x3d, 0xbd, 0xff, 0xe7, 0x20, + 0xbd, 0xff, 0xe7, 0xa6, 0x80, 0xbd, 0xf9, 0x35, 0xbd, 0xff, 0xe7, 0x20, 0xc2, 0xcc, 0x00, 0x00, 0xfd, 0xff, 0x88, 0xcc, 0xf8, 0x00, 0xfd, 0xff, 0x8a, 0xcc, 0xf8, 0xb0, 0xfd, 0xff, 0xfa, 0x4d, 0x2b, 0x06, 0xfc, 0xff, - 0x92, 0xfd, 0xff, 0x90, 0xcc, 0xfe, 0x30, 0xfd, 0xfe, 0xfa, 0x8e, 0xff, + 0x92, 0xfd, 0xff, 0x90, 0xcc, 0xfe, 0x2e, 0xfd, 0xfe, 0xfa, 0x8e, 0xff, 0xfa, 0x10, 0x8e, 0xff, 0x80, 0x39, 0xbd, 0xff, 0xe0, 0x7e, 0xff, 0xee, 0xbd, 0xff, 0xe7, 0xa6, 0x80, 0x81, 0x04, 0x27, 0xf0, 0xbd, 0xff, 0xee, 0x20, 0xf5, 0x34, 0x32, 0x86, 0x80, 0x8e, 0xff, 0xff, 0x1f, 0x12, 0xbd, - 0xff, 0xf4, 0x8c, 0x00, 0x00, 0x35, 0xb2, 0x34, 0x06, 0x1f, 0x10, 0x8d, - 0x06, 0x1f, 0x98, 0x8d, 0x02, 0x35, 0x86, 0x34, 0x02, 0x44, 0x44, 0x44, - 0x44, 0x8d, 0x06, 0xa6, 0xe4, 0x8d, 0x02, 0x35, 0x82, 0x84, 0x0f, 0x81, - 0x0a, 0x25, 0x02, 0x8b, 0x07, 0x8b, 0x30, 0x7e, 0xff, 0xee, 0x35, 0x10, - 0x8d, 0x03, 0x34, 0x10, 0x39, 0xa6, 0x80, 0x27, 0xfb, 0xbd, 0xff, 0xe3, - 0x20, 0xf7, 0x10, 0x8e, 0x00, 0x00, 0xa6, 0x80, 0x81, 0x30, 0x25, 0x2b, - 0x81, 0x3a, 0x25, 0x0a, 0x84, 0xdf, 0x80, 0x07, 0x25, 0x21, 0x81, 0x40, - 0x24, 0x1d, 0x84, 0x0f, 0x1e, 0x02, 0x58, 0x49, 0x58, 0x49, 0x58, 0x49, - 0x58, 0x49, 0x1e, 0x12, 0x1e, 0x01, 0x1e, 0x89, 0x3a, 0x1e, 0x12, 0x20, - 0xd5, 0xa6, 0x80, 0x81, 0x20, 0x27, 0xfa, 0x30, 0x1f, 0x81, 0x21, 0x39, + 0xff, 0xf4, 0x8c, 0x00, 0x00, 0x35, 0xb2, 0x1f, 0x10, 0x8d, 0x04, 0x1f, + 0x10, 0x1f, 0x98, 0x34, 0x02, 0x44, 0x44, 0x44, 0x44, 0x8d, 0x02, 0x35, + 0x02, 0x84, 0x0f, 0x81, 0x0a, 0x25, 0x02, 0x8b, 0x07, 0x8b, 0x30, 0x7e, + 0xff, 0xee, 0x35, 0x10, 0x8d, 0x03, 0x34, 0x10, 0x39, 0xa6, 0x80, 0x27, + 0xfb, 0xbd, 0xff, 0xe3, 0x20, 0xf7, 0x10, 0x8e, 0x00, 0x00, 0xa6, 0x80, + 0x81, 0x30, 0x25, 0x33, 0x81, 0x3a, 0x25, 0x0a, 0x84, 0xdf, 0x80, 0x07, + 0x25, 0x29, 0x81, 0x40, 0x24, 0x25, 0x84, 0x0f, 0x1e, 0x02, 0x58, 0x49, + 0x58, 0x49, 0x58, 0x49, 0x58, 0x49, 0x1e, 0x12, 0x1e, 0x01, 0x1e, 0x89, + 0x3a, 0x1e, 0x12, 0x20, 0xd5, 0xa6, 0x80, 0x81, 0x21, 0x24, 0xfa, 0x30, + 0x1f, 0xa6, 0x80, 0x81, 0x20, 0x27, 0xfa, 0x30, 0x1f, 0x81, 0x21, 0x39, 0x34, 0x7c, 0x33, 0x78, 0x11, 0x8c, 0xf8, 0x00, 0x24, 0x04, 0x10, 0xce, - 0xff, 0x28, 0x34, 0x40, 0x8d, 0x0f, 0x35, 0x40, 0x32, 0x48, 0x35, 0xfc, - 0x48, 0x45, 0x4c, 0x50, 0x80, 0x47, 0x4f, 0x81, 0x00, 0x8d, 0xd2, 0xa6, - 0x80, 0x81, 0x2a, 0x27, 0xf8, 0x30, 0x1f, 0x34, 0x10, 0xa6, 0x80, 0x81, - 0x21, 0x24, 0xfa, 0x30, 0x1f, 0x8d, 0xbe, 0xbf, 0xff, 0x86, 0x10, 0x8e, - 0xf9, 0x98, 0xae, 0xe4, 0xa6, 0x84, 0x81, 0x41, 0x25, 0x68, 0xa6, 0x80, - 0x84, 0xdf, 0xa1, 0xa0, 0x27, 0xf8, 0xa6, 0xa2, 0x2b, 0x16, 0xa6, 0x1f, - 0x81, 0x2e, 0x27, 0x0a, 0xa6, 0xa0, 0x2a, 0xfc, 0xa6, 0xa4, 0x26, 0xde, - 0x20, 0x4c, 0xa6, 0xa0, 0x2a, 0xfc, 0x20, 0x06, 0xe6, 0x82, 0xc1, 0x21, - 0x24, 0x40, 0x81, 0x80, 0x27, 0x2d, 0x8d, 0x81, 0x10, 0xbe, 0xff, 0x90, + 0xff, 0x80, 0x34, 0x40, 0x8d, 0x13, 0x35, 0x40, 0x32, 0x48, 0x35, 0xfc, + 0x48, 0x45, 0x4c, 0x50, 0x80, 0x47, 0x4f, 0x81, 0x52, 0x55, 0x4e, 0x82, + 0x00, 0x8d, 0xce, 0xa6, 0x80, 0x81, 0x2a, 0x27, 0xf8, 0x30, 0x1f, 0x34, + 0x10, 0x8d, 0xba, 0xbf, 0xff, 0x86, 0x10, 0x8e, 0xf9, 0x98, 0xae, 0xe4, + 0xa6, 0x84, 0x81, 0x41, 0x25, 0x75, 0xa6, 0x80, 0x84, 0xdf, 0xa1, 0xa0, + 0x27, 0xf8, 0xa6, 0xa2, 0x2b, 0x16, 0xa6, 0x1f, 0x81, 0x2e, 0x27, 0x0a, + 0xa6, 0xa0, 0x2a, 0xfc, 0xa6, 0xa4, 0x26, 0xde, 0x20, 0x59, 0xa6, 0xa0, + 0x2a, 0xfc, 0x20, 0x06, 0xe6, 0x82, 0xc1, 0x21, 0x24, 0x4d, 0x81, 0x80, + 0x27, 0x31, 0x81, 0x82, 0x27, 0x3c, 0x8d, 0x81, 0x10, 0xbe, 0xff, 0x90, 0x81, 0x0d, 0x27, 0x18, 0x81, 0x3b, 0x27, 0x12, 0xbd, 0xff, 0xa1, 0x24, - 0x29, 0xbd, 0xf9, 0x75, 0x81, 0x3b, 0x27, 0x06, 0x81, 0x0d, 0x26, 0x1e, + 0x32, 0xbd, 0xf9, 0x75, 0x81, 0x3b, 0x27, 0x06, 0x81, 0x0d, 0x26, 0x27, 0x30, 0x1f, 0x30, 0x01, 0xbf, 0xff, 0x86, 0x35, 0x10, 0x1f, 0x21, 0x1a, - 0x01, 0x20, 0x23, 0xbd, 0xf9, 0x75, 0x25, 0x04, 0x81, 0x2e, 0x26, 0x06, - 0x8e, 0xf8, 0x16, 0xbd, 0xf9, 0x3d, 0x35, 0x10, 0x86, 0x02, 0xbd, 0xfc, - 0xec, 0xbd, 0xfc, 0xb0, 0x1a, 0x01, 0xbd, 0xfa, 0xc2, 0x2a, 0x53, 0xbe, - 0xff, 0x8e, 0x34, 0x01, 0x1f, 0x12, 0xe6, 0x07, 0x3a, 0xce, 0xfa, 0xa1, - 0xc6, 0x04, 0xa6, 0x80, 0xa1, 0xc2, 0x26, 0x3f, 0x5a, 0x26, 0xf7, 0xa6, - 0x26, 0x48, 0x2a, 0x45, 0x84, 0x1e, 0x81, 0x06, 0x26, 0x3f, 0x30, 0x1c, - 0xbf, 0xff, 0x82, 0xfe, 0xff, 0x90, 0xbe, 0xff, 0x8a, 0x35, 0x02, 0x34, - 0x50, 0x10, 0x8c, 0x80, 0x00, 0x25, 0x04, 0x10, 0xbf, 0xff, 0x8a, 0x10, - 0xbf, 0xff, 0x92, 0xbe, 0xff, 0x86, 0xee, 0x66, 0x46, 0x86, 0x01, 0xad, - 0xa4, 0x35, 0x60, 0x10, 0xbf, 0xff, 0x8a, 0xff, 0xff, 0x90, 0x39, 0xbe, - 0xff, 0x86, 0xee, 0x63, 0x4f, 0x35, 0x01, 0x6e, 0xa4, 0x29, 0x43, 0x28, - 0x00, 0x35, 0x01, 0x10, 0x24, 0x05, 0x12, 0xbd, 0xf8, 0xcd, 0x3f, 0xf9, - 0x4e, 0x6f, 0x74, 0x20, 0x36, 0x38, 0x30, 0x39, 0x20, 0x63, 0x6f, 0x64, - 0x65, 0x00, 0x4f, 0xbd, 0xfc, 0xec, 0x8d, 0x02, 0x8b, 0x80, 0xb6, 0xfe, - 0xe2, 0x2a, 0xfb, 0xb6, 0xfe, 0xe3, 0x39, 0x34, 0x06, 0x4d, 0x2b, 0x23, - 0x86, 0x04, 0xbd, 0xfc, 0xec, 0x1f, 0x10, 0xbd, 0xfc, 0xea, 0x35, 0x06, - 0x34, 0x06, 0xbd, 0xfc, 0xec, 0x8d, 0xdf, 0x1f, 0x89, 0x4f, 0x1f, 0x01, - 0x35, 0x86, 0x8e, 0xf8, 0x16, 0xbf, 0xff, 0x86, 0x7e, 0xfa, 0x38, 0x81, - 0x82, 0x27, 0x39, 0x81, 0x83, 0x27, 0x37, 0x81, 0x84, 0x27, 0x33, 0x86, - 0x06, 0xbd, 0xfc, 0xec, 0x1f, 0x10, 0xbd, 0xfc, 0xea, 0xbd, 0xfc, 0xe8, - 0x35, 0x06, 0xbd, 0xfc, 0xec, 0x81, 0x9d, 0x27, 0xb5, 0x81, 0x8e, 0x27, - 0xd1, 0x34, 0x06, 0x8d, 0xa5, 0x8b, 0x80, 0x34, 0x01, 0x8d, 0x9f, 0x1f, - 0x89, 0x4f, 0x1f, 0x02, 0x8d, 0x98, 0x1e, 0x89, 0x1f, 0x01, 0x35, 0x87, - 0x86, 0x85, 0x48, 0x8e, 0xff, 0x82, 0xec, 0x86, 0x1f, 0x01, 0x1f, 0x89, - 0x4f, 0x1f, 0x02, 0x35, 0x86, 0x4d, 0x27, 0x5c, 0x34, 0x26, 0x34, 0x10, - 0x1f, 0x89, 0x86, 0x08, 0xbd, 0xfc, 0xec, 0xbd, 0xfc, 0xea, 0x5d, 0x2a, - 0x04, 0xa6, 0x84, 0x20, 0x0c, 0x86, 0x10, 0xc1, 0x15, 0x24, 0x06, 0x8e, - 0xfb, 0xcf, 0x3a, 0xa6, 0x84, 0x35, 0x10, 0xbd, 0xfc, 0xec, 0x1f, 0x02, - 0x1e, 0x89, 0x4f, 0x1e, 0x02, 0x4a, 0x2b, 0x03, 0xbd, 0xfc, 0xb9, 0x34, - 0x10, 0x5d, 0x2a, 0x04, 0xa6, 0x01, 0x20, 0x0c, 0x86, 0x10, 0xc1, 0x15, - 0x24, 0x06, 0x8e, 0xfb, 0xe3, 0x3a, 0xa6, 0x84, 0x35, 0x10, 0xbd, 0xfc, - 0xec, 0x1f, 0x02, 0x1e, 0x89, 0x4f, 0x1e, 0x02, 0x4a, 0x2b, 0x03, 0xbd, - 0xfc, 0xc9, 0x35, 0xa6, 0x86, 0x0a, 0xbd, 0xfc, 0xec, 0x30, 0x02, 0x10, - 0x8e, 0x00, 0x03, 0xbd, 0xfc, 0xb9, 0x30, 0x1e, 0x86, 0x07, 0xbd, 0xfc, - 0xec, 0x4f, 0xbd, 0xfc, 0xec, 0xbd, 0xfa, 0xc2, 0x8b, 0x80, 0x25, 0x0f, - 0xae, 0x84, 0xbd, 0xfa, 0xc2, 0xa7, 0x80, 0x31, 0x21, 0x81, 0x0d, 0x26, - 0xf5, 0x31, 0x3f, 0x39, 0x00, 0x05, 0x00, 0x05, 0x04, 0x05, 0x08, 0x0e, - 0x04, 0x01, 0x01, 0x05, 0x00, 0x10, 0x20, 0x10, 0x0d, 0x00, 0x04, 0x80, - 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x09, 0x05, 0x00, - 0x08, 0x19, 0x00, 0x01, 0x0d, 0x80, 0x04, 0x80, 0x34, 0x26, 0x86, 0x0c, - 0xbd, 0xfc, 0xec, 0xbd, 0xfc, 0xe8, 0x10, 0x8e, 0x00, 0x04, 0xbd, 0xfc, - 0xb9, 0x35, 0x06, 0xbd, 0xfc, 0xec, 0xbd, 0xfa, 0xc2, 0x34, 0x02, 0x10, - 0x8e, 0x00, 0x04, 0xbd, 0xfc, 0xc9, 0x35, 0xa2, 0x34, 0x04, 0x86, 0x0e, - 0xbd, 0xfc, 0xec, 0xbd, 0xfc, 0xe8, 0x35, 0x04, 0x7e, 0xfa, 0xbe, 0x34, - 0x06, 0x86, 0x10, 0xbd, 0xfc, 0xec, 0xbd, 0xfc, 0xe8, 0x35, 0x06, 0x34, - 0x06, 0xbd, 0xfc, 0xec, 0xbd, 0xfa, 0xc2, 0x35, 0x86, 0x34, 0x06, 0x86, - 0x12, 0xbd, 0xfc, 0xec, 0x35, 0x06, 0xbd, 0xfc, 0xec, 0x4d, 0x27, 0x06, - 0xbd, 0xfc, 0xb0, 0x7e, 0xfa, 0xc2, 0x34, 0x04, 0xbd, 0xfc, 0xe8, 0xbd, - 0xfa, 0xc2, 0x4f, 0x35, 0x84, 0x34, 0x32, 0x86, 0x14, 0xbd, 0xfc, 0xec, - 0x30, 0x02, 0x10, 0x8e, 0x00, 0x10, 0xbd, 0xfc, 0xb9, 0x30, 0x1e, 0xae, - 0x84, 0xbd, 0xfc, 0xb0, 0x35, 0x02, 0xbd, 0xfc, 0xec, 0xbd, 0xfa, 0xc2, - 0x35, 0x10, 0x34, 0x02, 0x30, 0x02, 0x10, 0x8e, 0x00, 0x10, 0xbd, 0xfc, - 0xc9, 0x30, 0x1e, 0x35, 0xa2, 0x34, 0x22, 0x86, 0x16, 0xbd, 0xfc, 0xec, - 0x10, 0x8e, 0x00, 0x0d, 0xbd, 0xfc, 0xb9, 0x35, 0x02, 0xbd, 0xfc, 0xec, - 0x10, 0x8e, 0x00, 0x0d, 0xbd, 0xfc, 0xc9, 0x35, 0x20, 0x7e, 0xfa, 0xbe, - 0xa6, 0x80, 0x8d, 0x38, 0x81, 0x0d, 0x26, 0xf8, 0x39, 0x34, 0x04, 0x1f, - 0x20, 0x3a, 0x35, 0x04, 0xa6, 0x82, 0x8d, 0x28, 0x31, 0x3f, 0x26, 0xf8, - 0x39, 0x34, 0x04, 0x1f, 0x20, 0x3a, 0x35, 0x04, 0xbd, 0xfa, 0xc2, 0xa7, - 0x82, 0x31, 0x3f, 0x26, 0xf7, 0x39, 0x34, 0x02, 0xb6, 0xfe, 0xe0, 0x48, - 0x2a, 0xfa, 0x35, 0x02, 0xb7, 0xfe, 0xe1, 0x39, 0x1f, 0x20, 0x1f, 0x98, - 0x34, 0x02, 0xb6, 0xfe, 0xe2, 0x48, 0x2a, 0xfa, 0x35, 0x02, 0xb7, 0xfe, - 0xe3, 0x39, 0x34, 0x02, 0xb6, 0xfe, 0xe6, 0x2b, 0x51, 0xb6, 0xfe, 0xe0, - 0x2b, 0x06, 0x35, 0x02, 0x6e, 0x9f, 0xff, 0xb1, 0xb6, 0xfe, 0xe1, 0x2b, - 0x1b, 0x35, 0x02, 0x34, 0x76, 0x8d, 0x1c, 0x1f, 0x89, 0x4f, 0x1f, 0x02, - 0x8d, 0x15, 0x1f, 0x89, 0x4f, 0x1f, 0x01, 0x8d, 0x0e, 0xad, 0x9f, 0xff, - 0xfc, 0x35, 0x76, 0x3b, 0x48, 0xb7, 0xff, 0x80, 0x35, 0x02, 0x3b, 0xb6, - 0xfe, 0xe6, 0x2a, 0x02, 0x8d, 0x12, 0xb6, 0xfe, 0xe0, 0x2a, 0xf4, 0xb6, - 0xfe, 0xe1, 0x39, 0xb6, 0xfe, 0xe6, 0x2a, 0xfb, 0xb6, 0xfe, 0xe7, 0x39, - 0x1c, 0x7f, 0x34, 0x01, 0x34, 0x02, 0x35, 0x02, 0x34, 0x16, 0xb6, 0xfe, - 0xe7, 0x2a, 0x22, 0x10, 0xce, 0xff, 0x80, 0x8e, 0xff, 0x00, 0xbd, 0xfa, - 0xc2, 0x86, 0x3f, 0xa7, 0x80, 0xbd, 0xfa, 0xc2, 0xa7, 0x80, 0xbd, 0xfa, - 0xc2, 0xa7, 0x80, 0x26, 0xf9, 0x8e, 0xff, 0x01, 0x34, 0x10, 0x7e, 0xff, - 0xbc, 0x34, 0x02, 0x8d, 0xc2, 0x35, 0x02, 0x81, 0x05, 0x26, 0x06, 0x7f, - 0xff, 0x94, 0x35, 0x16, 0x3b, 0x34, 0x02, 0x8d, 0xb2, 0xb7, 0xff, 0x8c, - 0x8d, 0xad, 0xb7, 0xff, 0x8d, 0x8d, 0xa8, 0xb7, 0xff, 0x8e, 0x8d, 0xa3, - 0xb7, 0xff, 0x8f, 0x8d, 0x9e, 0x86, 0xff, 0xb7, 0xff, 0x94, 0x1c, 0xbf, - 0xbe, 0xff, 0x8e, 0xa6, 0xe0, 0x27, 0x6c, 0x81, 0x02, 0x25, 0x5b, 0x27, - 0x49, 0x81, 0x04, 0x25, 0x35, 0x27, 0x6e, 0x5f, 0x81, 0x07, 0x25, 0x11, - 0x26, 0x67, 0xb6, 0xfe, 0xe4, 0x2a, 0xfb, 0xb6, 0xfe, 0xe5, 0xa7, 0x85, - 0x5c, 0x26, 0xf3, 0x20, 0x17, 0xb6, 0xfe, 0xe4, 0x48, 0x2a, 0xfa, 0xa6, - 0x85, 0xb7, 0xfe, 0xe5, 0x5c, 0x26, 0xf2, 0xb6, 0xfe, 0xe4, 0x48, 0x2a, - 0xfa, 0xb7, 0xfe, 0xe5, 0x30, 0x89, 0x01, 0x00, 0x20, 0x38, 0x13, 0xb6, - 0xfe, 0xe5, 0xf6, 0xfe, 0xe5, 0xed, 0x81, 0xb6, 0xff, 0x94, 0x26, 0xf2, - 0x20, 0x28, 0x13, 0xec, 0x81, 0xb7, 0xfe, 0xe5, 0xf7, 0xfe, 0xe5, 0xb6, - 0xff, 0x94, 0x26, 0xf2, 0x20, 0x18, 0x13, 0xb6, 0xfe, 0xe5, 0xa7, 0x80, - 0xb6, 0xff, 0x94, 0x26, 0xf5, 0x20, 0x0b, 0x13, 0xa6, 0x80, 0xb7, 0xfe, - 0xe5, 0xb6, 0xff, 0x94, 0x26, 0xf5, 0xbf, 0xff, 0x8e, 0x35, 0x16, 0x3b, - 0x32, 0x6a, 0x35, 0x10, 0xbf, 0xff, 0x82, 0x1c, 0x00, 0x6e, 0x9f, 0xff, - 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x20, 0x2c, 0xbd, 0xf9, 0x75, 0x25, 0x04, 0x81, 0x2e, 0x26, 0x0f, + 0x8e, 0xf8, 0x16, 0xbd, 0xf9, 0x35, 0xbd, 0xf9, 0x75, 0xbd, 0xf9, 0x6d, + 0xbf, 0xff, 0x86, 0x35, 0x10, 0x86, 0x02, 0xbd, 0xfc, 0xf5, 0xbd, 0xfc, + 0xb9, 0x1a, 0x01, 0xbd, 0xfa, 0xcb, 0x2a, 0x53, 0xbe, 0xff, 0x8e, 0x34, + 0x01, 0x1f, 0x12, 0xe6, 0x07, 0x3a, 0xce, 0xfa, 0xaa, 0xc6, 0x04, 0xa6, + 0x80, 0xa1, 0xc2, 0x26, 0x3f, 0x5a, 0x26, 0xf7, 0xa6, 0x26, 0x48, 0x2a, + 0x45, 0x84, 0x1e, 0x81, 0x06, 0x26, 0x3f, 0x30, 0x1c, 0xbf, 0xff, 0x82, + 0xfe, 0xff, 0x90, 0xbe, 0xff, 0x8a, 0x35, 0x02, 0x34, 0x50, 0x10, 0x8c, + 0x80, 0x00, 0x25, 0x04, 0x10, 0xbf, 0xff, 0x8a, 0x10, 0xbf, 0xff, 0x92, + 0xbe, 0xff, 0x86, 0xee, 0x66, 0x46, 0x86, 0x01, 0xad, 0xa4, 0x35, 0x60, + 0x10, 0xbf, 0xff, 0x8a, 0xff, 0xff, 0x90, 0x39, 0xbe, 0xff, 0x86, 0xee, + 0x63, 0x4f, 0x35, 0x01, 0x6e, 0xa4, 0x29, 0x43, 0x28, 0x00, 0x35, 0x01, + 0x10, 0x24, 0x05, 0x09, 0xbd, 0xf8, 0xcd, 0x3f, 0xf9, 0x4e, 0x6f, 0x74, + 0x20, 0x36, 0x38, 0x30, 0x39, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x00, 0x4f, + 0xbd, 0xfc, 0xf5, 0x8d, 0x02, 0x8b, 0x80, 0xb6, 0xfe, 0xe2, 0x2a, 0xfb, + 0xb6, 0xfe, 0xe3, 0x39, 0x34, 0x06, 0x4d, 0x2b, 0x23, 0x86, 0x04, 0xbd, + 0xfc, 0xf5, 0x1f, 0x10, 0xbd, 0xfc, 0xf3, 0x35, 0x06, 0x34, 0x06, 0xbd, + 0xfc, 0xf5, 0x8d, 0xdf, 0x1f, 0x89, 0x4f, 0x1f, 0x01, 0x35, 0x86, 0x8e, + 0xf8, 0x16, 0xbf, 0xff, 0x86, 0x7e, 0xfa, 0x41, 0x81, 0x82, 0x27, 0x39, + 0x81, 0x83, 0x27, 0x37, 0x81, 0x84, 0x27, 0x33, 0x86, 0x06, 0xbd, 0xfc, + 0xf5, 0x1f, 0x10, 0xbd, 0xfc, 0xf3, 0xbd, 0xfc, 0xf1, 0x35, 0x06, 0xbd, + 0xfc, 0xf5, 0x81, 0x9d, 0x27, 0xb5, 0x81, 0x8e, 0x27, 0xd1, 0x34, 0x06, + 0x8d, 0xa5, 0x8b, 0x80, 0x34, 0x01, 0x8d, 0x9f, 0x1f, 0x89, 0x4f, 0x1f, + 0x02, 0x8d, 0x98, 0x1e, 0x89, 0x1f, 0x01, 0x35, 0x87, 0x86, 0x85, 0x48, + 0x8e, 0xff, 0x82, 0xec, 0x86, 0x1f, 0x01, 0x1f, 0x89, 0x4f, 0x1f, 0x02, + 0x35, 0x86, 0x4d, 0x27, 0x5c, 0x34, 0x26, 0x34, 0x10, 0x1f, 0x89, 0x86, + 0x08, 0xbd, 0xfc, 0xf5, 0xbd, 0xfc, 0xf3, 0x5d, 0x2a, 0x04, 0xa6, 0x84, + 0x20, 0x0c, 0x86, 0x10, 0xc1, 0x15, 0x24, 0x06, 0x8e, 0xfb, 0xd8, 0x3a, + 0xa6, 0x84, 0x35, 0x10, 0xbd, 0xfc, 0xf5, 0x1f, 0x02, 0x1e, 0x89, 0x4f, + 0x1e, 0x02, 0x4a, 0x2b, 0x03, 0xbd, 0xfc, 0xc2, 0x34, 0x10, 0x5d, 0x2a, + 0x04, 0xa6, 0x01, 0x20, 0x0c, 0x86, 0x10, 0xc1, 0x15, 0x24, 0x06, 0x8e, + 0xfb, 0xec, 0x3a, 0xa6, 0x84, 0x35, 0x10, 0xbd, 0xfc, 0xf5, 0x1f, 0x02, + 0x1e, 0x89, 0x4f, 0x1e, 0x02, 0x4a, 0x2b, 0x03, 0xbd, 0xfc, 0xd2, 0x35, + 0xa6, 0x86, 0x0a, 0xbd, 0xfc, 0xf5, 0x30, 0x02, 0x10, 0x8e, 0x00, 0x03, + 0xbd, 0xfc, 0xc2, 0x30, 0x1e, 0x86, 0x07, 0xbd, 0xfc, 0xf5, 0x4f, 0xbd, + 0xfc, 0xf5, 0xbd, 0xfa, 0xcb, 0x8b, 0x80, 0x25, 0x0f, 0xae, 0x84, 0xbd, + 0xfa, 0xcb, 0xa7, 0x80, 0x31, 0x21, 0x81, 0x0d, 0x26, 0xf5, 0x31, 0x3f, + 0x39, 0x00, 0x05, 0x00, 0x05, 0x04, 0x05, 0x08, 0x0e, 0x04, 0x01, 0x01, + 0x05, 0x00, 0x10, 0x20, 0x10, 0x0d, 0x00, 0x04, 0x80, 0x05, 0x00, 0x05, + 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x09, 0x05, 0x00, 0x08, 0x19, 0x00, + 0x01, 0x0d, 0x80, 0x04, 0x80, 0x34, 0x26, 0x86, 0x0c, 0xbd, 0xfc, 0xf5, + 0xbd, 0xfc, 0xf1, 0x10, 0x8e, 0x00, 0x04, 0xbd, 0xfc, 0xc2, 0x35, 0x06, + 0xbd, 0xfc, 0xf5, 0xbd, 0xfa, 0xcb, 0x34, 0x02, 0x10, 0x8e, 0x00, 0x04, + 0xbd, 0xfc, 0xd2, 0x35, 0xa2, 0x34, 0x04, 0x86, 0x0e, 0xbd, 0xfc, 0xf5, + 0xbd, 0xfc, 0xf1, 0x35, 0x04, 0x7e, 0xfa, 0xc7, 0x34, 0x06, 0x86, 0x10, + 0xbd, 0xfc, 0xf5, 0xbd, 0xfc, 0xf1, 0x35, 0x06, 0x34, 0x06, 0xbd, 0xfc, + 0xf5, 0xbd, 0xfa, 0xcb, 0x35, 0x86, 0x34, 0x06, 0x86, 0x12, 0xbd, 0xfc, + 0xf5, 0x35, 0x06, 0xbd, 0xfc, 0xf5, 0x4d, 0x27, 0x06, 0xbd, 0xfc, 0xb9, + 0x7e, 0xfa, 0xcb, 0x34, 0x04, 0xbd, 0xfc, 0xf1, 0xbd, 0xfa, 0xcb, 0x4f, + 0x35, 0x84, 0x34, 0x32, 0x86, 0x14, 0xbd, 0xfc, 0xf5, 0x30, 0x02, 0x10, + 0x8e, 0x00, 0x10, 0xbd, 0xfc, 0xc2, 0x30, 0x1e, 0xae, 0x84, 0xbd, 0xfc, + 0xb9, 0x35, 0x02, 0xbd, 0xfc, 0xf5, 0xbd, 0xfa, 0xcb, 0x35, 0x10, 0x34, + 0x02, 0x30, 0x02, 0x10, 0x8e, 0x00, 0x10, 0xbd, 0xfc, 0xd2, 0x30, 0x1e, + 0x35, 0xa2, 0x34, 0x22, 0x86, 0x16, 0xbd, 0xfc, 0xf5, 0x10, 0x8e, 0x00, + 0x0d, 0xbd, 0xfc, 0xc2, 0x35, 0x02, 0xbd, 0xfc, 0xf5, 0x10, 0x8e, 0x00, + 0x0d, 0xbd, 0xfc, 0xd2, 0x35, 0x20, 0x7e, 0xfa, 0xc7, 0xa6, 0x80, 0x8d, + 0x38, 0x81, 0x0d, 0x26, 0xf8, 0x39, 0x34, 0x04, 0x1f, 0x20, 0x3a, 0x35, + 0x04, 0xa6, 0x82, 0x8d, 0x28, 0x31, 0x3f, 0x26, 0xf8, 0x39, 0x34, 0x04, + 0x1f, 0x20, 0x3a, 0x35, 0x04, 0xbd, 0xfa, 0xcb, 0xa7, 0x82, 0x31, 0x3f, + 0x26, 0xf7, 0x39, 0x34, 0x02, 0xb6, 0xfe, 0xe0, 0x48, 0x2a, 0xfa, 0x35, + 0x02, 0xb7, 0xfe, 0xe1, 0x39, 0x1f, 0x20, 0x1f, 0x98, 0x34, 0x02, 0xb6, + 0xfe, 0xe2, 0x48, 0x2a, 0xfa, 0x35, 0x02, 0xb7, 0xfe, 0xe3, 0x39, 0x34, + 0x02, 0xb6, 0xfe, 0xe6, 0x2b, 0x51, 0xb6, 0xfe, 0xe0, 0x2b, 0x06, 0x35, + 0x02, 0x6e, 0x9f, 0xff, 0xb1, 0xb6, 0xfe, 0xe1, 0x2b, 0x1b, 0x35, 0x02, + 0x34, 0x76, 0x8d, 0x1c, 0x1f, 0x89, 0x4f, 0x1f, 0x02, 0x8d, 0x15, 0x1f, + 0x89, 0x4f, 0x1f, 0x01, 0x8d, 0x0e, 0xad, 0x9f, 0xff, 0xfc, 0x35, 0x76, + 0x3b, 0x48, 0xb7, 0xff, 0x80, 0x35, 0x02, 0x3b, 0xb6, 0xfe, 0xe6, 0x2a, + 0x02, 0x8d, 0x12, 0xb6, 0xfe, 0xe0, 0x2a, 0xf4, 0xb6, 0xfe, 0xe1, 0x39, + 0xb6, 0xfe, 0xe6, 0x2a, 0xfb, 0xb6, 0xfe, 0xe7, 0x39, 0x1c, 0x7f, 0x34, + 0x01, 0x34, 0x02, 0x35, 0x02, 0x34, 0x16, 0xb6, 0xfe, 0xe7, 0x2a, 0x22, + 0x10, 0xce, 0xff, 0x80, 0x8e, 0xff, 0x00, 0xbd, 0xfa, 0xcb, 0x86, 0x3f, + 0xa7, 0x80, 0xbd, 0xfa, 0xcb, 0xa7, 0x80, 0xbd, 0xfa, 0xcb, 0xa7, 0x80, + 0x26, 0xf9, 0x8e, 0xff, 0x01, 0x34, 0x10, 0x7e, 0xff, 0xbc, 0x34, 0x02, + 0x8d, 0xc2, 0x35, 0x02, 0x81, 0x05, 0x26, 0x06, 0x7f, 0xff, 0x94, 0x35, + 0x16, 0x3b, 0x34, 0x02, 0x8d, 0xb2, 0x8d, 0xb0, 0x8d, 0xae, 0x1e, 0x89, + 0x8d, 0xaa, 0x1e, 0x89, 0x1f, 0x01, 0x8d, 0xa4, 0x86, 0xff, 0xb7, 0xff, + 0x94, 0x1c, 0xbf, 0xa6, 0xe0, 0x27, 0x66, 0x81, 0x02, 0x25, 0x55, 0x27, + 0x43, 0x81, 0x04, 0x25, 0x2f, 0x27, 0x69, 0x5f, 0x81, 0x07, 0x25, 0x11, + 0x26, 0x65, 0xb6, 0xfe, 0xe4, 0x2a, 0xfb, 0xb6, 0xfe, 0xe5, 0xa7, 0x85, + 0x5c, 0x26, 0xf3, 0x20, 0x56, 0xb6, 0xfe, 0xe4, 0x2a, 0xfb, 0xa6, 0x85, + 0xb7, 0xfe, 0xe5, 0x5c, 0x26, 0xf3, 0xb6, 0xfe, 0xe4, 0x2a, 0xfb, 0xb7, + 0xfe, 0xe5, 0x20, 0x3f, 0x13, 0xb6, 0xff, 0x94, 0x27, 0x39, 0xb6, 0xfe, + 0xe5, 0xf6, 0xfe, 0xe5, 0xed, 0x81, 0x20, 0xf0, 0x13, 0xb6, 0xff, 0x94, + 0x27, 0x29, 0xec, 0x81, 0xb7, 0xfe, 0xe5, 0xf7, 0xfe, 0xe5, 0x20, 0xf0, + 0x13, 0xb6, 0xff, 0x94, 0x27, 0x19, 0xb6, 0xfe, 0xe5, 0xa7, 0x80, 0x20, + 0xf3, 0x13, 0xb6, 0xff, 0x94, 0x27, 0x0c, 0xa6, 0x80, 0xb7, 0xfe, 0xe5, + 0x20, 0xf3, 0x20, 0x03, 0xbf, 0xff, 0x8e, 0x35, 0x16, 0x3b, 0x32, 0x6a, + 0x35, 0x10, 0xbf, 0xff, 0x82, 0x1c, 0x00, 0x6e, 0x9f, 0xff, 0xfa, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, @@ -151,8 +151,8 @@ unsigned char tuberom_6809_jgh_1_0[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xfe, 0x2f, 0xfe, 0x2f, 0xfe, 0x2f, 0xfc, 0xfa, 0xfe, 0x2f, 0xfe, 0x30, - 0xfe, 0x2f, 0xf8, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0x2d, 0xfe, 0x2d, 0xfe, 0x2d, 0xfd, 0x03, 0xfe, 0x2d, 0xfe, 0x2e, + 0xfe, 0x2d, 0xf8, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -164,15 +164,14 @@ unsigned char tuberom_6809_jgh_1_0[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x16, 0xf8, 0xb0, 0xf8, 0x16, 0x00, 0x00, 0xf8, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xb9, 0xff, 0xb9, 0x00, 0x7e, 0xfa, 0x92, - 0x7e, 0xf8, 0x2c, 0x7e, 0xfa, 0x92, 0x7e, 0xfa, 0x92, 0x7e, 0xf9, 0x46, - 0x7e, 0xfa, 0x92, 0x7e, 0xf8, 0x71, 0x7e, 0xf9, 0x1b, 0x7e, 0xf9, 0x0f, - 0x7e, 0xfe, 0x2f, 0x7e, 0xf9, 0x36, 0x7e, 0xfa, 0x92, 0x7e, 0xf8, 0x71, - 0x7e, 0xfe, 0x32, 0x7e, 0xf8, 0xd3, 0x7e, 0xfa, 0x92, 0x7e, 0xf9, 0x3d, - 0x7e, 0xfa, 0x92, 0x7e, 0xfa, 0x92, 0x7e, 0xfc, 0x41, 0x7e, 0xfc, 0x91, - 0x7e, 0xfc, 0x2b, 0x7e, 0xfc, 0x1c, 0x7e, 0xfb, 0xf8, 0x7e, 0xfc, 0x61, - 0x7e, 0xfa, 0xba, 0x81, 0x0d, 0x26, 0x07, 0x86, 0x0a, 0xbd, 0xff, 0xee, - 0x86, 0x0d, 0x7e, 0xfc, 0xda, 0x7e, 0xfb, 0x41, 0x7e, 0xfa, 0xcb, 0x7e, - 0xf9, 0x80, 0xf8, 0xb0, 0xfa, 0x92, 0xf8, 0x2c + 0x00, 0x00, 0x00, 0x00, 0xff, 0xb9, 0xff, 0xb9, 0x00, 0x7e, 0xfa, 0x9b, + 0x7e, 0xf8, 0x2c, 0x7e, 0xfa, 0x9b, 0x7e, 0xfa, 0x9b, 0x7e, 0xf9, 0x3e, + 0x7e, 0xfa, 0x9b, 0x7e, 0xf8, 0x71, 0x7e, 0xf9, 0x17, 0x7e, 0xf9, 0x0f, + 0x7e, 0xfe, 0x2d, 0x7e, 0xf9, 0x2e, 0x7e, 0xfa, 0x9b, 0x7e, 0xf8, 0x71, + 0x7e, 0xfe, 0x30, 0x7e, 0xf8, 0xd3, 0x7e, 0xfa, 0x9b, 0x7e, 0xf9, 0x35, + 0x7e, 0xfa, 0x9b, 0x7e, 0xfa, 0x9b, 0x7e, 0xfc, 0x4a, 0x7e, 0xfc, 0x9a, + 0x7e, 0xfc, 0x34, 0x7e, 0xfc, 0x25, 0x7e, 0xfc, 0x01, 0x7e, 0xfc, 0x6a, + 0x7e, 0xfa, 0xc3, 0x81, 0x0d, 0x26, 0x07, 0x86, 0x0a, 0xbd, 0xff, 0xee, + 0x86, 0x0d, 0x7e, 0xfc, 0xe3, 0x7e, 0xfb, 0x4a, 0x7e, 0xfa, 0xd4, 0x7e, + 0xf9, 0x80, 0xf8, 0xb0, 0xfa, 0x9b, 0xf8, 0x2c }; -unsigned int _home_dmb_atom_CoPro6502_client_6809_101b_Client09v101_20170622_bin_len = 2048; From 80ae9ae3b11044874d3c93c057ca949d23097445 Mon Sep 17 00:00:00 2001 From: David Banks Date: Tue, 1 Aug 2017 12:04:45 +0100 Subject: [PATCH 11/67] 6809: Updated client rom to 1.02d for testing Change-Id: Ic12dc5d621b054001fb2627acb1eebdc80ffce0c --- src/tuberom_6809.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/tuberom_6809.c b/src/tuberom_6809.c index 213f131c..b13e8764 100644 --- a/src/tuberom_6809.c +++ b/src/tuberom_6809.c @@ -1,16 +1,16 @@ -// http://mdfs.net/Software/Tube/6809/Client09v102-20170717.bin -// http://mdfs.net/Software/Tube/6809/Client09v102-20170717.src -// Version = 1.02c -// MD5sum = e2752fa5d0c2787e0784beb48646c41b +// http://mdfs.net/Software/Tube/6809/Client09v102-20170725.bin +// http://mdfs.net/Software/Tube/6809/Client09v102-20170725.src +// Version = 1.02d +// MD5sum =78d0799889011cf3ce711a99f73687ca unsigned char tuberom_6809_jgh_1_0[] = { 0xf8, 0x2c, 0xf8, 0x71, 0xff, 0xe0, 0xf8, 0xea, 0xf8, 0xfe, 0xff, 0xee, 0xf8, 0xf3, 0xff, 0xe7, 0xf8, 0xf0, 0xf8, 0xe9, 0x20, 0x5b, 0x0d, 0x36, 0x38, 0x30, 0x39, 0x20, 0x54, 0x55, 0x42, 0x45, 0x20, 0x36, 0x34, 0x4b, - 0x20, 0x31, 0x2e, 0x30, 0x32, 0x63, 0x0d, 0x00, 0x1a, 0x50, 0x10, 0xce, + 0x20, 0x31, 0x2e, 0x30, 0x32, 0x64, 0x0d, 0x00, 0x1a, 0x50, 0x10, 0xce, 0xf8, 0x00, 0x1f, 0x41, 0xec, 0x84, 0xed, 0x81, 0x8c, 0xfe, 0xc0, 0x26, 0x03, 0x8e, 0xfe, 0xf0, 0x8c, 0xff, 0x8c, 0x26, 0x03, 0x8e, 0xff, 0x94, 0x8c, 0x00, 0x00, 0x26, 0xe7, 0xb6, 0xfe, 0xe0, 0x1a, 0x50, 0x10, 0xce, - 0xff, 0x80, 0x8d, 0x69, 0xbe, 0xff, 0x90, 0xbf, 0xff, 0x8e, 0x1c, 0x00, + 0xff, 0x80, 0x8d, 0x69, 0xbe, 0xff, 0x90, 0xbf, 0xff, 0x8c, 0x1c, 0x00, 0x8e, 0xf8, 0x16, 0xbd, 0xf9, 0x35, 0xbd, 0xff, 0xe7, 0x4f, 0xbd, 0xff, 0xee, 0x4f, 0xbd, 0xfa, 0x43, 0x10, 0xce, 0xff, 0x80, 0x8d, 0x4a, 0x10, 0xfe, 0xff, 0x8a, 0x8e, 0xff, 0xb9, 0xbf, 0xff, 0x90, 0x1c, 0x00, 0x8e, @@ -21,7 +21,7 @@ unsigned char tuberom_6809_jgh_1_0[] = { 0xbd, 0xff, 0xe7, 0xa6, 0x80, 0xbd, 0xf9, 0x35, 0xbd, 0xff, 0xe7, 0x20, 0xc2, 0xcc, 0x00, 0x00, 0xfd, 0xff, 0x88, 0xcc, 0xf8, 0x00, 0xfd, 0xff, 0x8a, 0xcc, 0xf8, 0xb0, 0xfd, 0xff, 0xfa, 0x4d, 0x2b, 0x06, 0xfc, 0xff, - 0x92, 0xfd, 0xff, 0x90, 0xcc, 0xfe, 0x2e, 0xfd, 0xfe, 0xfa, 0x8e, 0xff, + 0x8e, 0xfd, 0xff, 0x90, 0xcc, 0xfe, 0x2e, 0xfd, 0xfe, 0xfa, 0x8e, 0xff, 0xfa, 0x10, 0x8e, 0xff, 0x80, 0x39, 0xbd, 0xff, 0xe0, 0x7e, 0xff, 0xee, 0xbd, 0xff, 0xe7, 0xa6, 0x80, 0x81, 0x04, 0x27, 0xf0, 0xbd, 0xff, 0xee, 0x20, 0xf5, 0x34, 0x32, 0x86, 0x80, 0x8e, 0xff, 0xff, 0x1f, 0x12, 0xbd, @@ -51,12 +51,12 @@ unsigned char tuberom_6809_jgh_1_0[] = { 0x01, 0x20, 0x2c, 0xbd, 0xf9, 0x75, 0x25, 0x04, 0x81, 0x2e, 0x26, 0x0f, 0x8e, 0xf8, 0x16, 0xbd, 0xf9, 0x35, 0xbd, 0xf9, 0x75, 0xbd, 0xf9, 0x6d, 0xbf, 0xff, 0x86, 0x35, 0x10, 0x86, 0x02, 0xbd, 0xfc, 0xf5, 0xbd, 0xfc, - 0xb9, 0x1a, 0x01, 0xbd, 0xfa, 0xcb, 0x2a, 0x53, 0xbe, 0xff, 0x8e, 0x34, + 0xb9, 0x1a, 0x01, 0xbd, 0xfa, 0xcb, 0x2a, 0x53, 0xbe, 0xff, 0x8c, 0x34, 0x01, 0x1f, 0x12, 0xe6, 0x07, 0x3a, 0xce, 0xfa, 0xaa, 0xc6, 0x04, 0xa6, 0x80, 0xa1, 0xc2, 0x26, 0x3f, 0x5a, 0x26, 0xf7, 0xa6, 0x26, 0x48, 0x2a, 0x45, 0x84, 0x1e, 0x81, 0x06, 0x26, 0x3f, 0x30, 0x1c, 0xbf, 0xff, 0x82, 0xfe, 0xff, 0x90, 0xbe, 0xff, 0x8a, 0x35, 0x02, 0x34, 0x50, 0x10, 0x8c, - 0x80, 0x00, 0x25, 0x04, 0x10, 0xbf, 0xff, 0x8a, 0x10, 0xbf, 0xff, 0x92, + 0x80, 0x00, 0x25, 0x04, 0x10, 0xbf, 0xff, 0x8a, 0x10, 0xbf, 0xff, 0x8e, 0xbe, 0xff, 0x86, 0xee, 0x66, 0x46, 0x86, 0x01, 0xad, 0xa4, 0x35, 0x60, 0x10, 0xbf, 0xff, 0x8a, 0xff, 0xff, 0x90, 0x39, 0xbe, 0xff, 0x86, 0xee, 0x63, 0x4f, 0x35, 0x01, 0x6e, 0xa4, 0x29, 0x43, 0x28, 0x00, 0x35, 0x01, @@ -71,7 +71,7 @@ unsigned char tuberom_6809_jgh_1_0[] = { 0xf5, 0x1f, 0x10, 0xbd, 0xfc, 0xf3, 0xbd, 0xfc, 0xf1, 0x35, 0x06, 0xbd, 0xfc, 0xf5, 0x81, 0x9d, 0x27, 0xb5, 0x81, 0x8e, 0x27, 0xd1, 0x34, 0x06, 0x8d, 0xa5, 0x8b, 0x80, 0x34, 0x01, 0x8d, 0x9f, 0x1f, 0x89, 0x4f, 0x1f, - 0x02, 0x8d, 0x98, 0x1e, 0x89, 0x1f, 0x01, 0x35, 0x87, 0x86, 0x85, 0x48, + 0x02, 0x8d, 0x98, 0x1e, 0x89, 0x1f, 0x01, 0x35, 0x87, 0x86, 0x88, 0x48, 0x8e, 0xff, 0x82, 0xec, 0x86, 0x1f, 0x01, 0x1f, 0x89, 0x4f, 0x1f, 0x02, 0x35, 0x86, 0x4d, 0x27, 0x5c, 0x34, 0x26, 0x34, 0x10, 0x1f, 0x89, 0x86, 0x08, 0xbd, 0xfc, 0xf5, 0xbd, 0xfc, 0xf3, 0x5d, 0x2a, 0x04, 0xa6, 0x84, @@ -123,18 +123,18 @@ unsigned char tuberom_6809_jgh_1_0[] = { 0x26, 0xf9, 0x8e, 0xff, 0x01, 0x34, 0x10, 0x7e, 0xff, 0xbc, 0x34, 0x02, 0x8d, 0xc2, 0x35, 0x02, 0x81, 0x05, 0x26, 0x06, 0x7f, 0xff, 0x94, 0x35, 0x16, 0x3b, 0x34, 0x02, 0x8d, 0xb2, 0x8d, 0xb0, 0x8d, 0xae, 0x1e, 0x89, - 0x8d, 0xaa, 0x1e, 0x89, 0x1f, 0x01, 0x8d, 0xa4, 0x86, 0xff, 0xb7, 0xff, - 0x94, 0x1c, 0xbf, 0xa6, 0xe0, 0x27, 0x66, 0x81, 0x02, 0x25, 0x55, 0x27, + 0x8d, 0xaa, 0x1e, 0x89, 0x1f, 0x01, 0x86, 0xff, 0xb7, 0xff, 0x94, 0x1c, + 0xbf, 0x8d, 0x9d, 0xa6, 0xe0, 0x27, 0x66, 0x81, 0x02, 0x25, 0x55, 0x27, 0x43, 0x81, 0x04, 0x25, 0x2f, 0x27, 0x69, 0x5f, 0x81, 0x07, 0x25, 0x11, - 0x26, 0x65, 0xb6, 0xfe, 0xe4, 0x2a, 0xfb, 0xb6, 0xfe, 0xe5, 0xa7, 0x85, - 0x5c, 0x26, 0xf3, 0x20, 0x56, 0xb6, 0xfe, 0xe4, 0x2a, 0xfb, 0xa6, 0x85, - 0xb7, 0xfe, 0xe5, 0x5c, 0x26, 0xf3, 0xb6, 0xfe, 0xe4, 0x2a, 0xfb, 0xb7, + 0x26, 0x65, 0xb6, 0xfe, 0xe4, 0x2a, 0xfb, 0xb6, 0xfe, 0xe5, 0xa7, 0x80, + 0x5a, 0x26, 0xf3, 0x20, 0x56, 0xb6, 0xfe, 0xe4, 0x2a, 0xfb, 0xa6, 0x80, + 0xb7, 0xfe, 0xe5, 0x5a, 0x26, 0xf3, 0xb6, 0xfe, 0xe4, 0x2a, 0xfb, 0xb7, 0xfe, 0xe5, 0x20, 0x3f, 0x13, 0xb6, 0xff, 0x94, 0x27, 0x39, 0xb6, 0xfe, 0xe5, 0xf6, 0xfe, 0xe5, 0xed, 0x81, 0x20, 0xf0, 0x13, 0xb6, 0xff, 0x94, 0x27, 0x29, 0xec, 0x81, 0xb7, 0xfe, 0xe5, 0xf7, 0xfe, 0xe5, 0x20, 0xf0, 0x13, 0xb6, 0xff, 0x94, 0x27, 0x19, 0xb6, 0xfe, 0xe5, 0xa7, 0x80, 0x20, 0xf3, 0x13, 0xb6, 0xff, 0x94, 0x27, 0x0c, 0xa6, 0x80, 0xb7, 0xfe, 0xe5, - 0x20, 0xf3, 0x20, 0x03, 0xbf, 0xff, 0x8e, 0x35, 0x16, 0x3b, 0x32, 0x6a, + 0x20, 0xf3, 0x20, 0x03, 0xbf, 0xff, 0x8c, 0x35, 0x16, 0x3b, 0x32, 0x6a, 0x35, 0x10, 0xbf, 0xff, 0x82, 0x1c, 0x00, 0x6e, 0x9f, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, @@ -164,7 +164,7 @@ unsigned char tuberom_6809_jgh_1_0[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x16, 0xf8, 0xb0, 0xf8, 0x16, 0x00, 0x00, 0xf8, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xb9, 0xff, 0xb9, 0x00, 0x7e, 0xfa, 0x9b, + 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xb9, 0x00, 0x00, 0x00, 0x7e, 0xfa, 0x9b, 0x7e, 0xf8, 0x2c, 0x7e, 0xfa, 0x9b, 0x7e, 0xfa, 0x9b, 0x7e, 0xf9, 0x3e, 0x7e, 0xfa, 0x9b, 0x7e, 0xf8, 0x71, 0x7e, 0xf9, 0x17, 0x7e, 0xf9, 0x0f, 0x7e, 0xfe, 0x2d, 0x7e, 0xf9, 0x2e, 0x7e, 0xfa, 0x9b, 0x7e, 0xf8, 0x71, From 5958efc587c33fe74530d5da7e9b3484457ef58c Mon Sep 17 00:00:00 2001 From: David Banks Date: Tue, 1 Aug 2017 13:41:08 +0100 Subject: [PATCH 12/67] 6809: Updated client rom to 1.02e for testing Change-Id: I576545be57cccdc5fca6f99b57311b26823a9b43 --- src/tuberom_6809.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/tuberom_6809.c b/src/tuberom_6809.c index b13e8764..f4cff684 100644 --- a/src/tuberom_6809.c +++ b/src/tuberom_6809.c @@ -1,12 +1,12 @@ -// http://mdfs.net/Software/Tube/6809/Client09v102-20170725.bin -// http://mdfs.net/Software/Tube/6809/Client09v102-20170725.src -// Version = 1.02d -// MD5sum =78d0799889011cf3ce711a99f73687ca +// http://mdfs.net/Software/Tube/6809/Client09v102-20170730.bin +// http://mdfs.net/Software/Tube/6809/Client09v102-20170730.src +// Version = 1.02e +// MD5sum = b756b221f467524e35ea8ef844657f8d unsigned char tuberom_6809_jgh_1_0[] = { 0xf8, 0x2c, 0xf8, 0x71, 0xff, 0xe0, 0xf8, 0xea, 0xf8, 0xfe, 0xff, 0xee, 0xf8, 0xf3, 0xff, 0xe7, 0xf8, 0xf0, 0xf8, 0xe9, 0x20, 0x5b, 0x0d, 0x36, 0x38, 0x30, 0x39, 0x20, 0x54, 0x55, 0x42, 0x45, 0x20, 0x36, 0x34, 0x4b, - 0x20, 0x31, 0x2e, 0x30, 0x32, 0x64, 0x0d, 0x00, 0x1a, 0x50, 0x10, 0xce, + 0x20, 0x31, 0x2e, 0x30, 0x32, 0x65, 0x0d, 0x00, 0x1a, 0x50, 0x10, 0xce, 0xf8, 0x00, 0x1f, 0x41, 0xec, 0x84, 0xed, 0x81, 0x8c, 0xfe, 0xc0, 0x26, 0x03, 0x8e, 0xfe, 0xf0, 0x8c, 0xff, 0x8c, 0x26, 0x03, 0x8e, 0xff, 0x94, 0x8c, 0x00, 0x00, 0x26, 0xe7, 0xb6, 0xfe, 0xe0, 0x1a, 0x50, 0x10, 0xce, @@ -21,7 +21,7 @@ unsigned char tuberom_6809_jgh_1_0[] = { 0xbd, 0xff, 0xe7, 0xa6, 0x80, 0xbd, 0xf9, 0x35, 0xbd, 0xff, 0xe7, 0x20, 0xc2, 0xcc, 0x00, 0x00, 0xfd, 0xff, 0x88, 0xcc, 0xf8, 0x00, 0xfd, 0xff, 0x8a, 0xcc, 0xf8, 0xb0, 0xfd, 0xff, 0xfa, 0x4d, 0x2b, 0x06, 0xfc, 0xff, - 0x8e, 0xfd, 0xff, 0x90, 0xcc, 0xfe, 0x2e, 0xfd, 0xfe, 0xfa, 0x8e, 0xff, + 0x8e, 0xfd, 0xff, 0x90, 0xcc, 0xfe, 0x2c, 0xfd, 0xfe, 0xfa, 0x8e, 0xff, 0xfa, 0x10, 0x8e, 0xff, 0x80, 0x39, 0xbd, 0xff, 0xe0, 0x7e, 0xff, 0xee, 0xbd, 0xff, 0xe7, 0xa6, 0x80, 0x81, 0x04, 0x27, 0xf0, 0xbd, 0xff, 0xee, 0x20, 0xf5, 0x34, 0x32, 0x86, 0x80, 0x8e, 0xff, 0xff, 0x1f, 0x12, 0xbd, @@ -123,19 +123,19 @@ unsigned char tuberom_6809_jgh_1_0[] = { 0x26, 0xf9, 0x8e, 0xff, 0x01, 0x34, 0x10, 0x7e, 0xff, 0xbc, 0x34, 0x02, 0x8d, 0xc2, 0x35, 0x02, 0x81, 0x05, 0x26, 0x06, 0x7f, 0xff, 0x94, 0x35, 0x16, 0x3b, 0x34, 0x02, 0x8d, 0xb2, 0x8d, 0xb0, 0x8d, 0xae, 0x1e, 0x89, - 0x8d, 0xaa, 0x1e, 0x89, 0x1f, 0x01, 0x86, 0xff, 0xb7, 0xff, 0x94, 0x1c, - 0xbf, 0x8d, 0x9d, 0xa6, 0xe0, 0x27, 0x66, 0x81, 0x02, 0x25, 0x55, 0x27, - 0x43, 0x81, 0x04, 0x25, 0x2f, 0x27, 0x69, 0x5f, 0x81, 0x07, 0x25, 0x11, - 0x26, 0x65, 0xb6, 0xfe, 0xe4, 0x2a, 0xfb, 0xb6, 0xfe, 0xe5, 0xa7, 0x80, - 0x5a, 0x26, 0xf3, 0x20, 0x56, 0xb6, 0xfe, 0xe4, 0x2a, 0xfb, 0xa6, 0x80, + 0x8d, 0xaa, 0x1e, 0x89, 0x1f, 0x01, 0x86, 0xff, 0xb7, 0xff, 0x94, 0x8d, + 0x9f, 0x1c, 0xbf, 0xa6, 0xe0, 0x27, 0x66, 0x81, 0x02, 0x25, 0x55, 0x27, + 0x43, 0x81, 0x04, 0x25, 0x2f, 0x27, 0x67, 0x5f, 0x81, 0x07, 0x25, 0x11, + 0x26, 0x63, 0xb6, 0xfe, 0xe4, 0x2a, 0xfb, 0xb6, 0xfe, 0xe5, 0xa7, 0x80, + 0x5a, 0x26, 0xf3, 0x20, 0x54, 0xb6, 0xfe, 0xe4, 0x2a, 0xfb, 0xa6, 0x80, 0xb7, 0xfe, 0xe5, 0x5a, 0x26, 0xf3, 0xb6, 0xfe, 0xe4, 0x2a, 0xfb, 0xb7, - 0xfe, 0xe5, 0x20, 0x3f, 0x13, 0xb6, 0xff, 0x94, 0x27, 0x39, 0xb6, 0xfe, + 0xfe, 0xe5, 0x20, 0x3d, 0x13, 0xb6, 0xff, 0x94, 0x27, 0x37, 0xb6, 0xfe, 0xe5, 0xf6, 0xfe, 0xe5, 0xed, 0x81, 0x20, 0xf0, 0x13, 0xb6, 0xff, 0x94, - 0x27, 0x29, 0xec, 0x81, 0xb7, 0xfe, 0xe5, 0xf7, 0xfe, 0xe5, 0x20, 0xf0, - 0x13, 0xb6, 0xff, 0x94, 0x27, 0x19, 0xb6, 0xfe, 0xe5, 0xa7, 0x80, 0x20, - 0xf3, 0x13, 0xb6, 0xff, 0x94, 0x27, 0x0c, 0xa6, 0x80, 0xb7, 0xfe, 0xe5, - 0x20, 0xf3, 0x20, 0x03, 0xbf, 0xff, 0x8c, 0x35, 0x16, 0x3b, 0x32, 0x6a, - 0x35, 0x10, 0xbf, 0xff, 0x82, 0x1c, 0x00, 0x6e, 0x9f, 0xff, 0xfa, 0xff, + 0x27, 0x27, 0xec, 0x81, 0xb7, 0xfe, 0xe5, 0xf7, 0xfe, 0xe5, 0x20, 0xf0, + 0x13, 0xb6, 0xff, 0x94, 0x27, 0x17, 0xb6, 0xfe, 0xe5, 0xa7, 0x80, 0x20, + 0xf3, 0x13, 0xb6, 0xff, 0x94, 0x27, 0x0a, 0xa6, 0x80, 0xb7, 0xfe, 0xe5, + 0x20, 0xf3, 0xbf, 0xff, 0x8c, 0x35, 0x16, 0x3b, 0x32, 0x6a, 0x35, 0x10, + 0xbf, 0xff, 0x82, 0x1c, 0x00, 0x6e, 0x9f, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, @@ -151,8 +151,8 @@ unsigned char tuberom_6809_jgh_1_0[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xfe, 0x2d, 0xfe, 0x2d, 0xfe, 0x2d, 0xfd, 0x03, 0xfe, 0x2d, 0xfe, 0x2e, - 0xfe, 0x2d, 0xf8, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0x2b, 0xfe, 0x2b, 0xfe, 0x2b, 0xfd, 0x03, 0xfe, 0x2b, 0xfe, 0x2c, + 0xfe, 0x2b, 0xf8, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -167,8 +167,8 @@ unsigned char tuberom_6809_jgh_1_0[] = { 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xb9, 0x00, 0x00, 0x00, 0x7e, 0xfa, 0x9b, 0x7e, 0xf8, 0x2c, 0x7e, 0xfa, 0x9b, 0x7e, 0xfa, 0x9b, 0x7e, 0xf9, 0x3e, 0x7e, 0xfa, 0x9b, 0x7e, 0xf8, 0x71, 0x7e, 0xf9, 0x17, 0x7e, 0xf9, 0x0f, - 0x7e, 0xfe, 0x2d, 0x7e, 0xf9, 0x2e, 0x7e, 0xfa, 0x9b, 0x7e, 0xf8, 0x71, - 0x7e, 0xfe, 0x30, 0x7e, 0xf8, 0xd3, 0x7e, 0xfa, 0x9b, 0x7e, 0xf9, 0x35, + 0x7e, 0xfe, 0x2b, 0x7e, 0xf9, 0x2e, 0x7e, 0xfa, 0x9b, 0x7e, 0xf8, 0x71, + 0x7e, 0xfe, 0x2e, 0x7e, 0xf8, 0xd3, 0x7e, 0xfa, 0x9b, 0x7e, 0xf9, 0x35, 0x7e, 0xfa, 0x9b, 0x7e, 0xfa, 0x9b, 0x7e, 0xfc, 0x4a, 0x7e, 0xfc, 0x9a, 0x7e, 0xfc, 0x34, 0x7e, 0xfc, 0x25, 0x7e, 0xfc, 0x01, 0x7e, 0xfc, 0x6a, 0x7e, 0xfa, 0xc3, 0x81, 0x0d, 0x26, 0x07, 0x86, 0x0a, 0xbd, 0xff, 0xee, From c8c47435c1c197113bfc23e5774a835c22756cde Mon Sep 17 00:00:00 2001 From: David Banks Date: Tue, 13 Jun 2017 17:08:04 +0100 Subject: [PATCH 13/67] OPC5LS Co Pro: Work in progress (*HELP working!) Change-Id: I4379126ab4a2c7c0112f7cfb6b68413af472265e --- src/CMakeLists.txt | 12 + src/copro-opc5ls.c | 91 ++ src/copro-opc5ls.h | 9 + src/opc5ls/build.sh | 13 + src/opc5ls/opc5ls.c | 193 ++++ src/opc5ls/opc5ls.h | 83 ++ src/opc5ls/opc5lsasm.py | 66 ++ src/opc5ls/tuberom.c | 2051 +++++++++++++++++++++++++++++++++++++++ src/opc5ls/tuberom.h | 8 + src/opc5ls/tuberom.s | 445 +++++++++ src/tube-client.c | 5 +- 11 files changed, 2974 insertions(+), 2 deletions(-) create mode 100644 src/copro-opc5ls.c create mode 100644 src/copro-opc5ls.h create mode 100755 src/opc5ls/build.sh create mode 100644 src/opc5ls/opc5ls.c create mode 100644 src/opc5ls/opc5ls.h create mode 100644 src/opc5ls/opc5lsasm.py create mode 100644 src/opc5ls/tuberom.c create mode 100644 src/opc5ls/tuberom.h create mode 100644 src/opc5ls/tuberom.s diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 72da96f8..0659dcda 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -180,6 +180,16 @@ file( GLOB shared_6809_files tuberom_6809.c ) +# OPC5LS +file( GLOB copro_opc5ls_files + copro-opc5ls.h + copro-opc5ls.c + opc5ls/opc5ls.h + opc5ls/opc5ls.c + opc5ls/tuberom.h + opc5ls/tuberom.c +) + # Null co processor file( GLOB copro_null_files copro-null.c @@ -287,6 +297,7 @@ else() ${copro_6809sc_files} ${copro_6809nc_files} ${shared_6809_files} + ${copro_opc5ls_files} ${copro_null_files} ${copro_arm_files} ${debugger_files} @@ -307,6 +318,7 @@ else() ${copro_6809sc_files} ${copro_6809nc_files} ${shared_6809_files} + ${copro_opc5ls_files} ${copro_null_files} ${copro_arm_files} ) diff --git a/src/copro-opc5ls.c b/src/copro-opc5ls.c new file mode 100644 index 00000000..f2a5a713 --- /dev/null +++ b/src/copro-opc5ls.c @@ -0,0 +1,91 @@ +/* + * OPC5LS Co Pro Emulation + * + * (c) 2017 David Banks + */ +#include +#include +#include +#include "tube-defs.h" +#include "tube-client.h" +#include "tube-ula.h" +#include "opc5ls/opc5ls.h" +#include "opc5ls/tuberom.h" + +static uint16_t *memory; + +void copro_opc5ls_write(uint16_t addr, uint16_t data) { + if ((addr & 0xFFF8) == 0xFEF8) { + tube_parasite_write(addr & 7, data); + printf("write: %d = %x\r\n", addr & 7, data); + } else { + memory[addr] = data; + } +} + +uint16_t copro_opc5ls_read(uint16_t addr) { + uint16_t data; + if ((addr & 0xFFF8) == 0xFEF8) { + data = tube_parasite_read(addr & 7); + printf("read: %d = %x\r\n", addr & 7, data); + } else { + data = memory[addr]; + } + return data; +} + +static void copro_opc5ls_poweron_reset() { + // Initialize memory pointer to zero (the start of the 2MB of memory shared with the 6502) + memory = (uint16_t *) copro_mem_reset(0x20000); + + // Initialize the CPU + opc5ls_init(memory, 0xf800, 0xff00); + + // Copy over client ROM + memcpy((void *) (memory + 0xF800), (void *)tuberom_opc5ls, sizeof(tuberom_opc5ls)); +} + +static void copro_opc5ls_reset() { + // Log ARM performance counters + tube_log_performance_counters(); + + // Reset the processor + opc5ls_reset(); + + // Wait for rst become inactive before continuing to execute + tube_wait_for_rst_release(); + + // Reset ARM performance counters + tube_reset_performance_counters(); +} + +void copro_opc5ls_emulator() +{ + unsigned int tube_irq_copy; + + // Remember the current copro so we can exit if it changes + int last_copro = copro; + + copro_opc5ls_poweron_reset(); + copro_opc5ls_reset(); + + while (1) { + opc5ls_execute(); + printf("tube_irq = %d\r\n", tube_irq); + tube_irq_copy = tube_irq & ( RESET_BIT + NMI_BIT + IRQ_BIT); + if (tube_irq_copy) { + // Reset the processor on active edge of rst + if ( tube_irq_copy & RESET_BIT ) { + // Exit if the copro has changed + if (copro != last_copro) { + break; + } + copro_opc5ls_reset(); + } + // IRQ is level sensitive so check between every instruction + if ( tube_irq_copy & IRQ_BIT ) { + opc5ls_irq(); + } + } + } +} diff --git a/src/copro-opc5ls.h b/src/copro-opc5ls.h new file mode 100644 index 00000000..4fa27ad6 --- /dev/null +++ b/src/copro-opc5ls.h @@ -0,0 +1,9 @@ +// copro-opc5ls.h +#ifndef COPRO_OPC5LS_H +#define COPRO_OPC5LS_H + +extern void copro_opc5ls_write(uint16_t addr, uint16_t data); +extern uint16_t copro_opc5ls_read(uint16_t addr); +extern void copro_opc5ls_emulator(); + +#endif diff --git a/src/opc5ls/build.sh b/src/opc5ls/build.sh new file mode 100755 index 00000000..c635dca1 --- /dev/null +++ b/src/opc5ls/build.sh @@ -0,0 +1,13 @@ +#!/bin/bash +python opc5lsasm.py tuberom.s tuberom.hex + +cat > tuberom.c <> tuberom.c +cat >> tuberom.c < +#include "opc5ls.h" +#include "../tube.h" +#include "../copro-opc5ls.h" + +// Encapsulate the persistent CPU state +opc5ls_state s; + +// Point the memory read/write back to the Co Pro to include tube access +#define OPC5LS_READ copro_opc5ls_read +#define OPC5LS_WRITE copro_opc5ls_write + +void opc5ls_execute() { + + do { + printf("%04x ", s.reg[PC]); + + // Fetch the instruction + register uint16_t instr = *(s.memory + s.reg[PC]++); + + printf("%04x ", instr); + + // Fetch the optional operant + register int operand = ((instr >> LEN) & 1) ? *(s.memory + s.reg[PC]++) : 0; + + printf("%04x\r\n", operand); + + // Evaluate the predicate + register int pred = (instr >> PRED) & 7; + switch (pred) { + case 0: + pred = 1; break; + case 1: + pred = 0; break; + case 2: + pred = s.psr & Z_MASK; break; + case 3: + pred = !(s.psr & Z_MASK); break; + case 4: + pred = s.psr & C_MASK; break; + case 5: + pred = !(s.psr & C_MASK); break; + case 6: + pred = s.psr & S_MASK; break; + case 7: + pred = !(s.psr & S_MASK); break; + } + + // Conditionally execute the instruction + if (pred) { + + // Force register 0 to be zero (it's overwritten by cmp) + s.reg[0] = 0; + + // Decode the instruction + int dst = (instr >> DST) & 15; + int src = (instr >> SRC) & 15; + int opcode = (instr >> OPCODE) & 15; + int ea_ed = (s.reg[src] + operand) & 0xffff; + + // Setup carry going into the "ALU" + uint32_t res = 0; + int cin = s.psr & C_MASK ? 1 : 0; + int cout = cin; + + // When to preserve the flags + int preserve_flag = 0; + + // Execute the instruction + switch(opcode) { + case op_mov: + s.reg[dst] = ea_ed; + break; + case op_and: + s.reg[dst] &= ea_ed; + break; + case op_or: + s.reg[dst] |= ea_ed; + break; + case op_xor: + s.reg[dst] ^= ea_ed; + break; + case op_add: + res = s.reg[dst] + ea_ed; + s.reg[dst] = res & 0xffff; + cout = (res >> 16) & 1; + break; + case op_adc: + res = s.reg[dst] + ea_ed + cin; + s.reg[dst] = res & 0xffff; + cout = (res >> 16) & 1; + break; + case op_sto: + preserve_flag = 1; + OPC5LS_WRITE(ea_ed, s.reg[dst]); + break; + case op_ld: + s.reg[dst] = OPC5LS_READ(ea_ed); + break; + case op_ror: + cout = ea_ed & 1; + s.reg[dst] = (cin << 15) | (ea_ed >> 1); + break; + case op_not: + s.reg[dst] = ~ea_ed; + break; + case op_sub: + res = s.reg[dst] + ((~ea_ed) & 0xffff) + 1; + s.reg[dst] = res & 0xffff; + cout = (res >> 16) & 1; + break; + case op_sbc: + res = s.reg[dst] + ((~ea_ed) & 0xffff) + cin; + s.reg[dst] = res & 0xffff; + cout = (res >> 16) & 1; + break; + case op_cmp: + res = s.reg[dst] + ((~ea_ed) & 0xffff) + 1; + dst = 0; // retarget cmp/cmpc to r0 + s.reg[dst] = res & 0xffff; + cout = (res >> 16) & 1; + break; + case op_cmpc: + res = s.reg[dst] + ((~ea_ed) & 0xffff) + cin; + dst = 0; // retarget cmp/cmpc to r0 + s.reg[dst] = res & 0xffff; + cout = (res >> 16) & 1; + break; + case op_bswp: + s.reg[dst] = (((ea_ed & 0xFF00) >> 8) | ((ea_ed & 0x00FF) << 8)); + break; + case op_psr_rti: + if (dst == 0 && src == 0) { + // RTI + s.reg[PC] = s.pc_int; + s.psr = s.psr_int; + s.isrv = 0; + preserve_flag = 1; + } + if (dst == 0) { + // putpsr + s.psr = ea_ed & PSR_MASK; + preserve_flag = 1; + } + if (src == 0) { + // getpsr + s.reg[dst] = s.psr & PSR_MASK; + } + break; + } + + // Update flags + if ((!preserve_flag) && (dst != PC)) { + s.psr &= ~(S_MASK | C_MASK | Z_MASK); + if (s.reg[dst] & 0x8000) { + s.psr |= S_MASK; + } + if (s.reg[dst] == 0) { + s.psr |= Z_MASK; + } + if (cout) { + s.psr |= C_MASK; + } + } + } + } while (tubeContinueRunning()); +} + +void opc5ls_reset() { + for (int i = 0; i < 16; i++) { + s.reg[i] = 0; + } + s.reg[PC] = s.pc_rst; + s.psr = 0; + s.pc_int = 0; + s.psr_int = 0; + s.isrv = 0; +} + +void opc5ls_irq() { + if ((s.psr & EI_MASK) && (s.isrv == 0)) { + s.pc_int = s.reg[PC]; + s.psr_int = s.psr & ~SWI_MASK; // Always clear the swi flag in the saved copy + s.reg[PC] = s.pc_irq; + s.isrv = 1; + } +} + +void opc5ls_init(uint16_t *memory, uint16_t pc_rst, uint16_t pc_irq) { + s.memory = memory; + s.pc_rst = pc_rst; + s.pc_irq = pc_irq; +} diff --git a/src/opc5ls/opc5ls.h b/src/opc5ls/opc5ls.h new file mode 100644 index 00000000..780c1781 --- /dev/null +++ b/src/opc5ls/opc5ls.h @@ -0,0 +1,83 @@ +// opc5ls.h + +#ifndef OPC5LS_H +#define OPC5LS_H + +#include + +void opc5ls_init(uint16_t *memory, uint16_t pc_rst, uint16_t pc_irq); +void opc5ls_execute(); +void opc5ls_reset(); +void opc5ls_irq(); + + +// Instruction +#define PRED 13 +#define LEN 12 +#define OPCODE 8 +#define SRC 4 +#define DST 0 + + +// PSR flag bits +#define Z_FLAG 0 +#define C_FLAG 1 +#define S_FLAG 2 +#define EI_FLAG 3 +#define SWI_FLAG 4 + +#define Z_MASK (1 << Z_FLAG) +#define C_MASK (1 << C_FLAG) +#define S_MASK (1 << S_FLAG) +#define EI_MASK (1 << EI_FLAG) +#define SWI_MASK (1 << SWI_FLAG) + +#define PSR_MASK 0x1F + +// PC is register 15 +#define PC 15 + +typedef struct { + // Register file + uint16_t reg[16]; + + // Processor status flags + uint16_t psr; + + // Interrupt state + int16_t isrv; + uint16_t pc_int; + uint16_t psr_int; + + // Main memory + uint16_t *memory; + + // Value of PC on reset + uint16_t pc_rst; + + // Value of PC on irq + uint16_t pc_irq; + +} opc5ls_state; + +enum { + op_mov, + op_and, + op_or, + op_xor, + op_add, + op_adc, + op_sto, + op_ld, + op_ror, + op_not, + op_sub, + op_sbc, + op_cmp, + op_cmpc, + op_bswp, + op_psr_rti +}; + + +#endif diff --git a/src/opc5ls/opc5lsasm.py b/src/opc5ls/opc5lsasm.py new file mode 100644 index 00000000..8b62d93f --- /dev/null +++ b/src/opc5ls/opc5lsasm.py @@ -0,0 +1,66 @@ +import sys, re +op = "mov,and,or,xor,add,adc,sto,ld,ror,not,sub,sbc,cmp,cmpc,bswp,psr,halt".split(',')+[""]*15+["rti"] #halt and rti aliassed to mov (modulo 16) +symtab = dict( [ ("r%d"%d,d) for d in range(0,16)] + [("pc",15), ("psr",0)]) +predicates = {"1":0x0000,"0":0x2000,"z":0x4000,"nz":0x6000,"c":0x8000,"nc":0xA000,"mi":0xC000,"pl":0xE000,"":0x0000} +def expand_macro(line, macro): # recursively expand macros, passing on instances not (yet) defined + (text,mobj)=([line],re.match("^(?P