]> git.karo-electronics.de Git - oswald.git/commitdiff
Power saving changes, add new fonts, bitmaps and screens
authorNils Faerber <nils.faerber@kernelconcepts.de>
Sun, 19 May 2013 00:07:04 +0000 (02:07 +0200)
committerNils Faerber <nils.faerber@kernelconcepts.de>
Sun, 19 May 2013 00:07:04 +0000 (02:07 +0200)
59 files changed:
metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.c [new file with mode: 0644]
metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.h [new file with mode: 0644]
metawatch/F5xx_F6xx_Core_Lib/HAL_MACROS.h [new file with mode: 0644]
metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.c [new file with mode: 0644]
metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.h [new file with mode: 0644]
metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.c [new file with mode: 0644]
metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.d [new file with mode: 0644]
metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.h [new file with mode: 0644]
metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.c [new file with mode: 0644]
metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.h [new file with mode: 0644]
metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.c [new file with mode: 0644]
metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.d [new file with mode: 0644]
metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.h [new file with mode: 0644]
metawatch/Makefile
metawatch/bt_hci.c
metawatch/hal_devboard_v2_defs.h
metawatch/hal_digital_v2_defs.h
metawatch/mw_acc.c
metawatch/mw_adc.c
metawatch/mw_adc.h
metawatch/mw_bt.c
metawatch/mw_bt.h
metawatch/mw_main.c
metawatch/mw_main.h
metawatch/mw_uart.c
metawatch/oswald_hal.c
ui/bitmaps/Bluetooth_icon.xbm
ui/bitmaps/Exit_icon.xbm [new file with mode: 0644]
ui/bitmaps/Message_icon.xbm [new file with mode: 0644]
ui/bitmaps/acc_icon.xbm [new file with mode: 0644]
ui/bitmaps/alarm_icon.xbm
ui/bitmaps/checked_icon.xbm [new file with mode: 0644]
ui/bitmaps/enterbutton_icon.xbm [new file with mode: 0644]
ui/bitmaps/exit_icon.xbm [new file with mode: 0644]
ui/bitmaps/info_icon.xbm [new file with mode: 0644]
ui/bitmaps/leftbutton_icon.xbm [new file with mode: 0644]
ui/bitmaps/main_menu_icon.xbm [new file with mode: 0644]
ui/bitmaps/message_icon.xbm [new file with mode: 0644]
ui/bitmaps/rightbutton_icon.xbm [new file with mode: 0644]
ui/bitmaps/stopwatch_icon.xbm
ui/bitmaps/unchecked_icon.xbm [new file with mode: 0644]
ui/fonts/DroidSans.h [new file with mode: 0644]
ui/fonts/DroidSans8x11.bdf [new file with mode: 0644]
ui/fonts/DroidSans8x11.h [new file with mode: 0644]
ui/fonts/DroidSansBold8x12.bdf [new file with mode: 0644]
ui/fonts/DroidSansBold8x12.h [new file with mode: 0644]
ui/fonts/DroidSansBold9x11.bdf [new file with mode: 0644]
ui/fonts/DroidSansBold9x11.h [new file with mode: 0644]
ui/oswald-ui.c
ui/oswald.h
ui/oswald_fonts.c
ui/oswald_fonts.h
ui/oswald_graphics.c
ui/oswald_graphics.h
ui/oswald_hal.h
ui/oswald_main.c
ui/oswald_screens.c
ui/oswald_screens.h
ui/oswald_watch_faces.c

diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.c b/metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.c
new file mode 100644 (file)
index 0000000..0b35b5c
--- /dev/null
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ *
+ * HAL_FLASH.c
+ * Flash Library for flash memory controller of MSP430F5xx/6xx family
+ * 
+ *
+ * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ 
+ * 
+ * 
+ *  Redistribution and use in source and binary forms, with or without 
+ *  modification, are permitted provided that the following conditions 
+ *  are met:
+ *
+ *    Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ *    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.
+ *
+ *    Neither the name of Texas Instruments Incorporated nor the names of
+ *    its contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ *  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 
+ *  OWNER 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.
+ * 
+ * Created: Version 1.0 11/24/2009
+ * Updated: Version 2.0 01/18/2011
+ *  
+ ******************************************************************************/
+#include "msp430.h"
+#include "HAL_FLASH.h"
+
+void Flash_SegmentErase(unsigned int *Flash_ptr)
+{
+  FCTL3 = FWKEY;                            // Clear Lock bit
+  FCTL1 = FWKEY + ERASE;                    // Set Erase bit
+  *Flash_ptr = 0;                           // Dummy write to erase Flash seg
+  while (FCTL3 & BUSY);                     // test busy
+  FCTL1 = FWKEY;                            // Clear WRT bit
+  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
+}
+
+unsigned char Flash_EraseCheck(unsigned int *Flash_ptr, unsigned int len)
+{
+  unsigned int i;
+  
+  for (i = 0; i < len; i++) {               // was erasing successfull?
+    if (*(Flash_ptr + i) != 0xFF) {
+      return FLASH_STATUS_ERROR;
+    }
+  }
+
+  return FLASH_STATUS_OK;
+}
+
+void FlashWrite_8(unsigned char *Data_ptr, unsigned char *Flash_ptr, unsigned int count)
+{
+  FCTL3 = FWKEY;                            // Clear Lock bit
+  FCTL1 = FWKEY+WRT;                        // Enable byte/word write mode
+  
+  while (count > 0) {
+    while (FCTL3 & BUSY);                   // test busy
+    *Flash_ptr++ = *Data_ptr++;             // Write to Flash
+    count--;
+  }
+
+  FCTL1 = FWKEY;                            // Clear write bit
+  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
+}
+
+void FlashWrite_16(unsigned int *Data_ptr, unsigned int *Flash_ptr, unsigned int count)
+{
+  FCTL3 = FWKEY;                            // Clear Lock bit
+  FCTL1 = FWKEY+WRT;                        // Enable byte/word write mode
+  
+  while (count > 0) {
+    while (FCTL3 & BUSY);                   // test busy
+    *Flash_ptr++ = *Data_ptr++;             // Write to Flash
+    count--;
+  }
+
+  FCTL1 = FWKEY;                            // Clear Erase bit
+  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
+}
+
+void FlashWrite_32(unsigned long *Data_ptr, unsigned long *Flash_ptr, unsigned int count)
+{
+  FCTL3 = FWKEY;                            // Clear Lock bit
+  FCTL1 = FWKEY + BLKWRT;                   // Enable long-word write
+  
+  while (count > 0) {
+    while (FCTL3 & BUSY);                   // test busy
+    *Flash_ptr++ = *Data_ptr++;             // Write to Flash
+    count--;
+  }
+
+  FCTL1 = FWKEY;                            // Clear Erase bit
+  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
+}
+
+void FlashMemoryFill_32(unsigned long value, unsigned long *Flash_ptr, unsigned int count)
+{
+  FCTL3 = FWKEY;                            // Clear Lock bit
+  FCTL1 = FWKEY + BLKWRT;                   // Enable long-word write
+
+  while (count > 0) {
+    while (FCTL3 & BUSY);                   // test busy
+    *Flash_ptr++ = value;                   // Write to Flash
+    count--;
+  }
+
+  FCTL1 = FWKEY;                            // Clear Erase bit
+  FCTL3 = FWKEY + LOCK;                      // Set LOCK bit
+}
diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.h
new file mode 100644 (file)
index 0000000..9317e5b
--- /dev/null
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ *
+ * HAL_FLASH.h
+ * Flash Library for flash memory controller of MSP430F5xx/6xx family
+ * 
+ *
+ * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ 
+ * 
+ * 
+ *  Redistribution and use in source and binary forms, with or without 
+ *  modification, are permitted provided that the following conditions 
+ *  are met:
+ *
+ *    Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ *    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.
+ *
+ *    Neither the name of Texas Instruments Incorporated nor the names of
+ *    its contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ *  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 
+ *  OWNER 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.
+ * 
+ * Created: Version 1.0 11/24/2009
+ * Updated: Version 2.0 01/18/2011
+ *  
+ ******************************************************************************/
+
+#ifndef HAL_FLASH_H
+#define HAL_FLASH_H
+
+//******************************************************************************
+// Defines
+//******************************************************************************
+
+#define FLASH_STATUS_OK     0
+#define FLASH_STATUS_ERROR  1
+
+/*******************************************************************************
+ * \brief   Erase a single segment of the flash memory
+ *
+ * \param *Flash_ptr    Pointer into the flash segment to erase
+ ******************************************************************************/
+extern void Flash_SegmentErase(unsigned int *Flash_ptr);
+
+/*******************************************************************************
+ * \brief   Erase Check of the flash memory
+ *
+ * \param *Flash_ptr    Pointer into the flash segment to erase
+ * \param len           give the len in word
+ ******************************************************************************/
+extern unsigned char Flash_EraseCheck(unsigned int *Flash_ptr, unsigned int len);
+
+/*******************************************************************************
+ * \brief   Write data into the flash memory (Byte format)
+ *
+ * \param *Data_ptr     Pointer to the Data to write
+ * \param *Flash_ptr    Pointer into the flash to write data to
+ * \param count         number of data to write
+ ******************************************************************************/
+extern void FlashWrite_8(unsigned char *Data_ptr, unsigned char *Flash_ptr, unsigned int count);
+
+/*******************************************************************************
+ * \brief   Write data into the flash memory (Word format)
+ *
+ * \param *Data_ptr     Pointer to the Data to write
+ * \param *Flash_ptr    Pointer into the flash to write data to
+ * \param count         number of data to write
+ ******************************************************************************/
+extern void FlashWrite_16(unsigned int *Data_ptr, unsigned int *Flash_ptr, unsigned int count);
+
+/*******************************************************************************
+ * \brief   Write data into the flash memory (Long format)
+ *
+ * \param *Data_ptr     Pointer to the Data to write
+ * \param *Flash_ptr    Pointer into the flash to write data to
+ * \param count         number of data to write
+ ******************************************************************************/
+extern void FlashWrite_32(unsigned long *Data_ptr, unsigned long *Flash_ptr, unsigned int count);
+
+/*******************************************************************************
+ * \brief   Fill data into the flash memory (Long format)
+ *
+ * \param value         Pointer to the Data to write
+ * \param *Flash_ptr    pointer into the flash to write data to
+ * \param count         number of data to write (= byte * 4)
+ ******************************************************************************/
+extern void FlashMemoryFill_32(unsigned long value, unsigned long *Flash_ptr, unsigned int count);
+
+#endif /* HAL_FLASH_H */
diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_MACROS.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_MACROS.h
new file mode 100644 (file)
index 0000000..398074f
--- /dev/null
@@ -0,0 +1,51 @@
+/* ****************************************************************************
+ *
+ * HAL_MACROS.h
+ * Flash Library for flash memory controller of MSP430F5xx/6xx family
+ * 
+ *
+ * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ 
+ * 
+ * 
+ *  Redistribution and use in source and binary forms, with or without 
+ *  modification, are permitted provided that the following conditions 
+ *  are met:
+ *
+ *    Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ *    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.
+ *
+ *    Neither the name of Texas Instruments Incorporated nor the names of
+ *    its contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ *  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 
+ *  OWNER 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.
+ * 
+ * Created: Version 1.0 11/24/2009
+ * Updated: Version 2.0 12/15/2010
+ *  
+******************************************************************************/
+
+#ifndef HAL_MACROS_H
+#define HAL_MACROS_H
+
+/*
+ *  This macro is for use by other macros to form a fully valid C statement.
+ */
+#define st(x)      do { x } while (__LINE__ == -1)
+
+#endif /* HAL_MACROS_H */
diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.c b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.c
new file mode 100644 (file)
index 0000000..e11c448
--- /dev/null
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ *
+ * HAL_PMAP.c
+ * Port Mapper Library for PMAP controller of MSP430F5xx/6xx family
+ * 
+ *
+ * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ 
+ * 
+ * 
+ *  Redistribution and use in source and binary forms, with or without 
+ *  modification, are permitted provided that the following conditions 
+ *  are met:
+ *
+ *    Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ *    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.
+ *
+ *    Neither the name of Texas Instruments Incorporated nor the names of
+ *    its contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ *  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 
+ *  OWNER 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.
+ * 
+ * Created: Version 1.0 11/24/2009
+ * Updated: Version 2.0 12/15/2010
+ *  
+ ******************************************************************************/
+
+#include "msp430.h"
+#include "HAL_PMAP.h" 
+#include "portmacro.h"
+
+// Check and define PMAP function only if the device has port mapping capability
+// Note: This macro is defined in the device-specific header file if this
+// feature is available on a given MSP430.
+#ifdef __MSP430_HAS_PORT_MAPPING__ 
+
+void configure_ports(const unsigned char *port_mapping, unsigned char *PxMAPy, 
+                    unsigned char num_of_ports, unsigned char port_map_reconfig)
+{
+  uint16_t i;
+  
+  portENTER_CRITICAL();
+  
+  // Get write-access to port mapping registers:
+  PMAPPWD = PMAPPW;
+  
+  if (port_map_reconfig) {
+    // Allow reconfiguration during runtime:
+    PMAPCTL = PMAPRECFG;
+  }
+  
+  // Configure Port Mapping: 
+  for (i = 0; i < num_of_ports * 8; i++) {
+    PxMAPy[i] = port_mapping[i];
+  }
+  
+  // Disable write-access to port mapping registers:
+  PMAPPWD = 0;
+  
+  portEXIT_CRITICAL();
+}
+
+#endif  /* __MSP430_HAS_PORT_MAPPING__ */
diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.h
new file mode 100644 (file)
index 0000000..9fb7b77
--- /dev/null
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ *
+ * HAL_PMAP.h
+ * Port Mapper Library for PMAP controller of MSP430F5xx/6xx family
+ * 
+ *
+ * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ 
+ * 
+ * 
+ *  Redistribution and use in source and binary forms, with or without 
+ *  modification, are permitted provided that the following conditions 
+ *  are met:
+ *
+ *    Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ *    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.
+ *
+ *    Neither the name of Texas Instruments Incorporated nor the names of
+ *    its contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ *  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 
+ *  OWNER 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.
+ * 
+ * Created: Version 1.0 11/24/2009
+ * Updated: Version 2.0 12/15/2010
+ *  
+ ******************************************************************************/
+
+#ifndef HAL_PMAP_H
+#define HAL_PMAP_H
+
+/*******************************************************************************
+ * \brief   Configures the MSP430 Port Mapper
+ *
+ * \param *port_mapping     Pointer to init Data
+ * \param PxMAPy            Pointer start of first Port Mapper to initialize
+ * \param num_of_ports      Number of Ports to initialize
+ * \param port_map_reconfig Flag to enable/disable reconfiguration
+ *
+ ******************************************************************************/
+extern void configure_ports(const unsigned char *port_mapping, unsigned char *PxMAPy, 
+                            unsigned char num_of_ports, unsigned char port_map_reconfig);
+
+#endif /* HAL_PMAP_H */
diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.c b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.c
new file mode 100644 (file)
index 0000000..bf5e1e0
--- /dev/null
@@ -0,0 +1,274 @@
+/*******************************************************************************
+ *
+ * HAL_PMM.c
+ * Power Management Module Library for MSP430F5xx/6xx family
+ * 
+ *
+ * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
+ * 
+ * 
+ *  Redistribution and use in source and binary forms, with or without 
+ *  modification, are permitted provided that the following conditions 
+ *  are met:
+ *
+ *    Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ *    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.
+ *
+ *    Neither the name of Texas Instruments Incorporated nor the names of
+ *    its contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ *  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 
+ *  OWNER 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.
+ * 
+ * Created: Version 1.0 11/24/2009
+ * Updated: Version 2.0 12/15/2010
+ *          Modified SetVcoreUp() and SetVcoreDown() functions
+ *  
+ ******************************************************************************/
+
+#include "msp430.h"
+#include "HAL_PMM.h"
+
+#define _HAL_PMM_DISABLE_SVML_
+#define _HAL_PMM_DISABLE_SVSL_
+#define _HAL_PMM_DISABLE_FULL_PERFORMANCE_
+
+#ifdef _HAL_PMM_DISABLE_SVML_
+#define _HAL_PMM_SVMLE  SVMLE
+#else
+#define _HAL_PMM_SVMLE  0
+#endif
+
+#ifdef _HAL_PMM_DISABLE_SVSL_
+#define _HAL_PMM_SVSLE  SVSLE
+#else
+#define _HAL_PMM_SVSLE  0
+#endif
+
+#ifdef _HAL_PMM_DISABLE_FULL_PERFORMANCE_
+#define _HAL_PMM_SVSFP  SVSLFP
+#define _HAL_PMM_SVMFP  SVMLFP
+#else
+#define _HAL_PMM_SVSFP  0
+#define _HAL_PMM_SVMFP  0
+#endif
+
+/*******************************************************************************
+ * \brief   Increase Vcore by one level
+ *
+ * \param level     Level to which Vcore needs to be increased
+ * \return status   Success/failure
+ ******************************************************************************/
+static unsigned int SetVCoreUp(unsigned char level)
+{
+  unsigned int PMMRIE_backup, SVSMHCTL_backup, SVSMLCTL_backup;
+   
+  // The code flow for increasing the Vcore has been altered to work around
+  // the erratum FLASH37. 
+  // Please refer to the Errata sheet to know if a specific device is affected
+  // DO NOT ALTER THIS FUNCTION
+
+  // Open PMM registers for write access   
+  PMMCTL0_H = 0xA5;
+  
+  // Disable dedicated Interrupts
+  // Backup all registers
+  PMMRIE_backup = PMMRIE;
+  PMMRIE &= ~(SVMHVLRPE | SVSHPE | SVMLVLRPE | SVSLPE | SVMHVLRIE |
+        SVMHIE | SVSMHDLYIE | SVMLVLRIE | SVMLIE | SVSMLDLYIE );
+  SVSMHCTL_backup = SVSMHCTL;
+  SVSMLCTL_backup = SVSMLCTL;
+
+  // Clear flags
+  PMMIFG = 0;
+
+  // Set SVM highside to new level and check if a VCore increase is possible
+  SVSMHCTL = SVMHE | SVSHE | (SVSMHRRL0 * level);    
+
+  // Wait until SVM highside is settled
+  while ((PMMIFG & SVSMHDLYIFG) == 0); 
+
+  // Clear flag
+  PMMIFG &= ~SVSMHDLYIFG;
+  
+  // Check if a VCore increase is possible
+  if ((PMMIFG & SVMHIFG) == SVMHIFG) {      // -> Vcc is too low for a Vcore increase
+       // recover the previous settings
+       PMMIFG &= ~SVSMHDLYIFG;
+       SVSMHCTL = SVSMHCTL_backup;
+
+       // Wait until SVM highside is settled
+       while ((PMMIFG & SVSMHDLYIFG) == 0);
+
+       // Clear all Flags
+       PMMIFG &= ~(SVMHVLRIFG | SVMHIFG | SVSMHDLYIFG | SVMLVLRIFG | SVMLIFG | SVSMLDLYIFG);
+
+       PMMRIE = PMMRIE_backup;                 // Restore PMM interrupt enable register
+       PMMCTL0_H = 0x00;                       // Lock PMM registers for write access
+       return PMM_STATUS_ERROR;                // return: voltage not set
+  }
+  
+  // Set also SVS highside to new level            
+  // Vcc is high enough for a Vcore increase
+  SVSMHCTL |= (SVSHRVL0 * level);
+
+  // Wait until SVM highside is settled
+  while ((PMMIFG & SVSMHDLYIFG) == 0);    
+
+  // Clear flag
+  PMMIFG &= ~SVSMHDLYIFG;
+  
+  // Set VCore to new level
+  PMMCTL0_L = PMMCOREV0 * level;
+
+  // Set SVM, SVS low side to new level
+  SVSMLCTL = SVMLE | (SVSMLRRL0 * level) | SVSLE | (SVSLRVL0 * level);
+
+  // Wait until SVM, SVS low side is settled
+  while ((PMMIFG & SVSMLDLYIFG) == 0);
+
+  // Clear flag
+  PMMIFG &= ~SVSMLDLYIFG;
+  // SVS, SVM core and high side are now set to protect for the new core level
+  
+  // Restore Low side settings
+  // Clear all other bits _except_ level settings
+  SVSMLCTL &= (SVSLRVL0+SVSLRVL1+SVSMLRRL0+SVSMLRRL1+SVSMLRRL2);
+
+  // Clear level settings in the backup register,keep all other bits
+  SVSMLCTL_backup &= ~(SVSLRVL0+SVSLRVL1+SVSMLRRL0+SVSMLRRL1+SVSMLRRL2);
+  
+  // Restore low-side SVS monitor settings
+  SVSMLCTL |= SVSMLCTL_backup;
+  
+  // Restore High side settings
+  // Clear all other bits except level settings
+  SVSMHCTL &= (SVSHRVL0+SVSHRVL1+SVSMHRRL0+SVSMHRRL1+SVSMHRRL2);
+
+  // Clear level settings in the backup register,keep all other bits
+  SVSMHCTL_backup &= ~(SVSHRVL0+SVSHRVL1+SVSMHRRL0+SVSMHRRL1+SVSMHRRL2);
+
+  // Restore backup 
+  SVSMHCTL |= SVSMHCTL_backup;
+  
+  // Wait until high side, low side settled
+  while (((PMMIFG & SVSMLDLYIFG) == 0) && ((PMMIFG & SVSMHDLYIFG) == 0));
+
+  // Clear all Flags
+  PMMIFG &= ~(SVMHVLRIFG | SVMHIFG | SVSMHDLYIFG | SVMLVLRIFG | SVMLIFG | SVSMLDLYIFG);
+
+  PMMRIE = PMMRIE_backup;                   // Restore PMM interrupt enable register
+  PMMCTL0_H = 0x00;                         // Lock PMM registers for write access
+
+  return PMM_STATUS_OK;  
+}
+
+/*******************************************************************************
+ * \brief  Decrease Vcore by one level
+ *
+ * \param  level    Level to which Vcore needs to be decreased
+ * \return status   Success/failure
+ ******************************************************************************/
+static unsigned int SetVCoreDown(unsigned char level)
+{
+  unsigned int PMMRIE_backup, SVSMHCTL_backup, SVSMLCTL_backup;
+  
+  // The code flow for decreasing the Vcore has been altered to work around
+  // the erratum FLASH37. 
+  // Please refer to the Errata sheet to know if a specific device is affected
+  // DO NOT ALTER THIS FUNCTION
+  
+  // Open PMM registers for write access
+  PMMCTL0_H = 0xA5;
+
+  // Disable dedicated Interrupts 
+  // Backup all registers
+  PMMRIE_backup = PMMRIE;
+  PMMRIE &= ~(SVMHVLRPE | SVSHPE | SVMLVLRPE | SVSLPE | SVMHVLRIE |
+        SVMHIE | SVSMHDLYIE | SVMLVLRIE | SVMLIE | SVSMLDLYIE );
+  SVSMHCTL_backup = SVSMHCTL;
+  SVSMLCTL_backup = SVSMLCTL;
+
+  // Clear flags
+  PMMIFG &= ~(SVMHIFG | SVSMHDLYIFG | SVMLIFG | SVSMLDLYIFG);
+  
+  // Set SVM, SVS high & low side to new settings in normal mode
+  SVSMHCTL = SVMHE | (SVSMHRRL0 * level) | SVSHE | (SVSHRVL0 * level);
+  SVSMLCTL = SVMLE | (SVSMLRRL0 * level) | SVSLE | (SVSLRVL0 * level);
+  
+  // Wait until SVM high side and SVM low side is settled
+  while ((PMMIFG & SVSMHDLYIFG) == 0 || (PMMIFG & SVSMLDLYIFG) == 0);
+  
+  // Clear flags
+  PMMIFG &= ~(SVSMHDLYIFG + SVSMLDLYIFG);
+  // SVS, SVM core and high side are now set to protect for the new core level
+  
+  // Set VCore to new level
+  PMMCTL0_L = PMMCOREV0 * level;
+  
+  // Restore Low side settings
+  // Clear all other bits _except_ level settings
+  SVSMLCTL &= (SVSLRVL0+SVSLRVL1+SVSMLRRL0+SVSMLRRL1+SVSMLRRL2);
+  
+  // Clear level settings in the backup register,keep all other bits
+  SVSMLCTL_backup &= ~(SVSLRVL0+SVSLRVL1+SVSMLRRL0+SVSMLRRL1+SVSMLRRL2);
+  
+  // Restore low-side SVS monitor settings
+  SVSMLCTL |= SVSMLCTL_backup;
+  
+  // Restore High side settings
+  // Clear all other bits except level settings
+  SVSMHCTL &= (SVSHRVL0+SVSHRVL1+SVSMHRRL0+SVSMHRRL1+SVSMHRRL2);
+  
+  // Clear level settings in the backup register, keep all other bits
+  SVSMHCTL_backup &= ~(SVSHRVL0+SVSHRVL1+SVSMHRRL0+SVSMHRRL1+SVSMHRRL2);
+  
+  // Restore backup 
+  SVSMHCTL |= SVSMHCTL_backup;
+  
+  // Wait until high side, low side settled
+  while (((PMMIFG & SVSMLDLYIFG) == 0) && ((PMMIFG & SVSMHDLYIFG) == 0));      
+  
+  // Clear all Flags
+  PMMIFG &= ~(SVMHVLRIFG | SVMHIFG | SVSMHDLYIFG | SVMLVLRIFG | SVMLIFG | SVSMLDLYIFG);
+  
+  PMMRIE = PMMRIE_backup;                   // Restore PMM interrupt enable register
+  PMMCTL0_H = 0x00;                         // Lock PMM registers for write access
+  return PMM_STATUS_OK;                                // Return: OK
+}
+
+unsigned int SetVCore(unsigned char level)
+{
+  unsigned int actlevel;
+  unsigned int status;
+  
+  status = 0;
+  level &= PMMCOREV_3;                       // Set Mask for Max. level
+  actlevel = (PMMCTL0 & PMMCOREV_3);         // Get actual VCore
+                                             // step by step increase or decrease
+  while (((level != actlevel) && (status == 0)) || (level < actlevel)) {
+    if (level > actlevel) {
+      status = SetVCoreUp(++actlevel);
+    }
+    else {
+      status = SetVCoreDown(--actlevel);
+    }
+  }
+  
+  return status;
+}
diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.d b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.d
new file mode 100644 (file)
index 0000000..ebe26fa
--- /dev/null
@@ -0,0 +1,7 @@
+HAL_PMM.o: F5xx_F6xx_Core_Lib/HAL_PMM.c \
+ /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/msp430.h \
+ /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/msp430f5438a.h \
+ /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/iomacros.h \
+ /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/in430.h \
+ /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/intrinsics.h \
+ F5xx_F6xx_Core_Lib/HAL_PMM.h F5xx_F6xx_Core_Lib/HAL_MACROS.h
diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.h
new file mode 100644 (file)
index 0000000..c56020a
--- /dev/null
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ *
+ * HAL_PMM.h
+ * Power Management Module Library for MSP430F5xx/6xx family
+ *
+ *
+ * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *
+ *    Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ *    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.
+ *
+ *    Neither the name of Texas Instruments Incorporated nor the names of
+ *    its contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ *  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
+ *  OWNER 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.
+ *
+ * Created: Version 1.0 11/24/2009
+ * Updated: Version 2.0 12/15/2010
+ *
+ ******************************************************************************/
+
+#ifndef HAL_PMM_H
+#define HAL_PMM_H
+
+#include "HAL_MACROS.h"
+
+/*******************************************************************************
+ * Macros
+ ******************************************************************************/
+#define ENABLE_SVSL()        st(PMMCTL0_H = 0xA5; SVSMLCTL |= SVSLE; PMMCTL0_H = 0x00;)
+#define DISABLE_SVSL()       st(PMMCTL0_H = 0xA5; SVSMLCTL &= ~SVSLE; PMMCTL0_H = 0x00;)
+#define ENABLE_SVML()        st(PMMCTL0_H = 0xA5; SVSMLCTL |= SVMLE; PMMCTL0_H = 0x00;)
+#define DISABLE_SVML()       st(PMMCTL0_H = 0xA5; SVSMLCTL &= ~SVMLE; PMMCTL0_H = 0x00;)
+#define ENABLE_SVSH()        st(PMMCTL0_H = 0xA5; SVSMHCTL |= SVSHE; PMMCTL0_H = 0x00;)
+#define DISABLE_SVSH()       st(PMMCTL0_H = 0xA5; SVSMHCTL &= ~SVSHE; PMMCTL0_H = 0x00;)
+#define ENABLE_SVMH()        st(PMMCTL0_H = 0xA5; SVSMHCTL |= SVMHE; PMMCTL0_H = 0x00;)
+#define DISABLE_SVMH()       st(PMMCTL0_H = 0xA5; SVSMHCTL &= ~SVMHE; PMMCTL0_H = 0x00;)
+#define ENABLE_SVSL_SVML()   st(PMMCTL0_H = 0xA5; SVSMLCTL |= (SVSLE + SVMLE); PMMCTL0_H = 0x00;)
+#define DISABLE_SVSL_SVML()  st(PMMCTL0_H = 0xA5; SVSMLCTL &= ~(SVSLE + SVMLE); PMMCTL0_H = 0x00;)
+#define ENABLE_SVSH_SVMH()   st(PMMCTL0_H = 0xA5; SVSMHCTL |= (SVSHE + SVMHE); PMMCTL0_H = 0x00;)
+#define DISABLE_SVSH_SVMH()  st(PMMCTL0_H = 0xA5; SVSMHCTL &= ~(SVSHE + SVMHE); PMMCTL0_H = 0x00;)
+
+#define ENABLE_SVSL_RESET()       st(PMMCTL0_H = 0xA5; PMMRIE |= SVSLPE; PMMCTL0_H = 0x00;)
+#define DISABLE_SVSL_RESET()      st(PMMCTL0_H = 0xA5; PMMRIE &= ~SVSLPE; PMMCTL0_H = 0x00;)
+#define ENABLE_SVML_INTERRUPT()   st(PMMCTL0_H = 0xA5; PMMRIE |= SVMLIE; PMMCTL0_H = 0x00;)
+#define DISABLE_SVML_INTERRUPT()  st(PMMCTL0_H = 0xA5; PMMRIE &= ~SVMLIE; PMMCTL0_H = 0x00;)
+#define ENABLE_SVSH_RESET()       st(PMMCTL0_H = 0xA5; PMMRIE |= SVSHPE; PMMCTL0_H = 0x00;)
+#define DISABLE_SVSH_RESET()      st(PMMCTL0_H = 0xA5; PMMRIE &= ~SVSHPE; PMMCTL0_H = 0x00;)
+#define ENABLE_SVMH_INTERRUPT()   st(PMMCTL0_H = 0xA5; PMMRIE |= SVMHIE; PMMCTL0_H = 0x00;)
+#define DISABLE_SVMH_INTERRUPT()  st(PMMCTL0_H = 0xA5; PMMRIE &= ~SVMHIE; PMMCTL0_H = 0x00;)
+#define CLEAR_PMM_IFGS()          st(PMMCTL0_H = 0xA5; PMMIFG = 0; PMMCTL0_H = 0x00;)
+
+// These settings use SVSH/LACE = 0
+#define SVSL_ENABLED_IN_LPM_FAST_WAKE()  st(PMMCTL0_H = 0xA5; SVSMLCTL |= (SVSLFP+SVSLMD); SVSMLCTL &= ~SVSMLACE; PMMCTL0_H = 0x00;)
+#define SVSL_ENABLED_IN_LPM_SLOW_WAKE()  st(PMMCTL0_H = 0xA5; SVSMLCTL |= SVSLMD; SVSMLCTL &= ~(SVSLFP+SVSMLACE); PMMCTL0_H = 0x00;)
+
+#define SVSL_DISABLED_IN_LPM_FAST_WAKE() st(PMMCTL0_H = 0xA5; SVSMLCTL |= SVSLFP; SVSMLCTL &= ~(SVSLMD+SVSMLACE); PMMCTL0_H = 0x00;)
+#define SVSL_DISABLED_IN_LPM_SLOW_WAKE() st(PMMCTL0_H = 0xA5; SVSMLCTL &= ~(SVSLFP+SVSMLACE+SVSLMD); PMMCTL0_H = 0x00;)
+
+#define SVSH_ENABLED_IN_LPM_NORM_PERF()  st(PMMCTL0_H = 0xA5; SVSMHCTL |= SVSHMD; SVSMHCTL &= ~(SVSMHACE+SVSHFP); PMMCTL0_H = 0x00;)
+#define SVSH_ENABLED_IN_LPM_FULL_PERF()  st(PMMCTL0_H = 0xA5; SVSMHCTL |= (SVSHMD+SVSHFP); SVSMHCTL &= ~SVSMHACE; PMMCTL0_H = 0x00;)
+
+#define SVSH_DISABLED_IN_LPM_NORM_PERF() st(PMMCTL0_H = 0xA5; SVSMHCTL &= ~(SVSMHACE+SVSHFP+SVSHMD);PMMCTL0_H = 0x00;)
+#define SVSH_DISABLED_IN_LPM_FULL_PERF() st(PMMCTL0_H = 0xA5; SVSMHCTL |= SVSHFP; SVSMHCTL &= ~(SVSMHACE+SVSHMD); PMMCTL0_H = 0x00;)
+
+// These setting use SVSH/LACE = 1
+#define SVSL_OPTIMIZED_IN_LPM_FAST_WAKE() st(PMMCTL0_H = 0xA5; SVSMLCTL |= (SVSLFP+SVSLMD+SVSMLACE); PMMCTL0_H = 0x00;)
+#define SVSH_OPTIMIZED_IN_LPM_FULL_PERF() st(PMMCTL0_H = 0xA5; SVSMHCTL |= (SVSHMD+SVSHFP+SVSMHACE); PMMCTL0_H = 0x00;)
+
+/*******************************************************************************
+ * Defines
+ ******************************************************************************/
+#define PMM_STATUS_OK     0
+#define PMM_STATUS_ERROR  1
+
+/*******************************************************************************
+ * \brief   Set Vcore to expected level
+ *
+ * \param level     Level to which Vcore needs to be increased/decreased
+ * \return status   Success/failure
+ ******************************************************************************/
+extern unsigned int SetVCore(unsigned char level);
+
+#endif /* HAL_PMM_H */
diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.c b/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.c
new file mode 100644 (file)
index 0000000..4001672
--- /dev/null
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ *
+ * HAL_TLV.c
+ * Provides Functions to Read the TLV Data Section of the MSP430 Devices
+ * 
+ *
+ * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ 
+ * 
+ * 
+ *  Redistribution and use in source and binary forms, with or without 
+ *  modification, are permitted provided that the following conditions 
+ *  are met:
+ *
+ *    Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ *    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.
+ *
+ *    Neither the name of Texas Instruments Incorporated nor the names of
+ *    its contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ *  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 
+ *  OWNER 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.
+ * 
+ * Updated: Version 2.0 01/17/2011
+ *  
+ ******************************************************************************/
+
+#include "msp430.h"
+#include "HAL_TLV.h" 
+
+void Get_TLV_Info(unsigned char tag, unsigned char instance, unsigned char *length, unsigned int **data_address)
+{
+  char *TLV_address = (char *)TLV_START;         // TLV Structure Start Address
+
+  while((TLV_address < (char *)TLV_END)
+        && ((*TLV_address != tag) || instance)   // check for tag and instance
+        && (*TLV_address != TLV_TAGEND))         // do range check first
+  {
+    if (*TLV_address == tag) instance--;         // repeat till requested instance is reached
+    TLV_address += *(TLV_address + 1) + 2;       // add (Current TAG address + LENGTH) + 2
+  }
+  
+  if (*TLV_address == tag)                       // Check if Tag match happened..
+  {
+    *length = *(TLV_address + 1);                  // Return length = Address + 1
+    *data_address = (unsigned int *)(TLV_address + 2); // Return address of first data/value info = Address + 2
+  }
+  else                                           // If there was no tag match and the end of TLV structure was reached..
+  {
+    *length = 0;                                 // Return 0 for TAG not found
+    *data_address = 0;                           // Return 0 for TAG not found
+  }
+}
+
+unsigned int Get_Device_Type(void)
+{
+  unsigned int *pDeviceType = (unsigned int *)DEVICE_ID_0;
+  return pDeviceType[0];                         // Return Value from TLV Table
+}
+
+unsigned int Get_TLV_Memory(unsigned char instance)
+{
+    unsigned char *pPDTAG;
+    unsigned char bPDTAG_bytes;
+    unsigned int count;
+
+    instance *= 2;                               // set tag for word access comparison
+    
+    // TLV access Function Call
+    Get_TLV_Info(TLV_PDTAG, 0, &bPDTAG_bytes, (unsigned int **)&pPDTAG); // Get Peripheral data pointer
+    
+    for (count = 0;count <= instance; count += 2)
+    {
+      if (pPDTAG[count] == 0) return 0;          // Return 0 if end reached
+      if (count == instance) return (pPDTAG[count] | pPDTAG[count+1]<<8);
+    }
+    
+    return 0;                                    // Return 0: not found
+}
+
+unsigned int Get_TLV_Peripheral(unsigned char tag, unsigned char instance)
+{
+    unsigned char *pPDTAG;
+    unsigned char bPDTAG_bytes;
+    unsigned int count = 0;
+    unsigned int pcount = 0;
+
+    Get_TLV_Info(TLV_PDTAG, 0, &bPDTAG_bytes, (unsigned int **)&pPDTAG); // Get Peripheral data pointer
+
+    // read memory configuration from TLV to get offset for Peripherals
+    while (Get_TLV_Memory(count)) {
+      count++;
+    }
+
+    pcount = pPDTAG[count * 2 + 1];              // get number of Peripheral entries
+    count++;                                     // inc count to first Periperal
+    pPDTAG += count*2;                           // adjust point to first address of Peripheral
+    count = 0;                                   // set counter back to 0
+    pcount *= 2;                                 // align pcount for work comparision
+
+    // TLV access Function Call
+    for (count = 0; count <= pcount; count += 2) {
+      if (pPDTAG[count+1] == tag) {              // test if required Peripheral is found
+        if (instance > 0) {                       // test if required instance is found
+          instance--;
+        }
+        else {
+          return (pPDTAG[count] | pPDTAG[count + 1] << 8); // Return found data
+        }
+      }
+    }
+    
+    return 0;                                    // Return 0: not found
+}
+
+unsigned char Get_TLV_Interrupt(unsigned char tag)
+{
+    unsigned char *pPDTAG;
+    unsigned char bPDTAG_bytes;
+    unsigned int count = 0;
+    unsigned int pcount = 0;
+
+    Get_TLV_Info(TLV_PDTAG, 0, &bPDTAG_bytes, (unsigned int **)&pPDTAG); // Get Peripheral data pointer
+    
+    // read memory configuration from TLV to get offset for Peripherals
+    while (Get_TLV_Memory(count))
+    {
+      count++;
+    }
+
+    pcount = pPDTAG[count * 2 + 1];
+    count++;                                     // inc count to first Periperal
+    pPDTAG += (pcount + count) * 2;              // adjust point to first address of Peripheral
+    count = 0;                                   // set counter back to 0
+
+    // TLV access Function Call
+    for (count = 0; count <= tag; count += 2)
+    {
+      if (pPDTAG[count] == 0) return 0;          // Return 0: not found/end of table
+      if (count == tag) return (pPDTAG[count]);  // Return found data
+    }
+    
+    return 0;                                    // Return 0: not found
+}
diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.h
new file mode 100644 (file)
index 0000000..9b616c3
--- /dev/null
@@ -0,0 +1,226 @@
+/*******************************************************************************
+ *
+ * HAL_TLV.c
+ * Provides Functions to Read the TLV Data Section of the MSP430 Devices
+ * 
+ *
+ * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ 
+ * 
+ * 
+ *  Redistribution and use in source and binary forms, with or without 
+ *  modification, are permitted provided that the following conditions 
+ *  are met:
+ *
+ *    Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ *    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.
+ *
+ *    Neither the name of Texas Instruments Incorporated nor the names of
+ *    its contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ *  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 
+ *  OWNER 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.
+ * 
+ * Updated: Version 2.0 01/17/2011
+ *  
+ ******************************************************************************/
+
+#ifndef HAL_TLV_H
+#define HAL_TLV_H
+
+/*******************************************************************************
+ * Device Descriptors - Fixed Memory Locations
+ ******************************************************************************/
+#define DEVICE_ID_0            (0x1A04)
+#define DEVICE_ID_1            (0x1A05)
+
+/*******************************************************************************
+ * Data Types
+ ******************************************************************************/
+struct s_TLV_Die_Record {
+  unsigned char die_record[10];
+};
+
+struct s_TLV_ADC_Cal_Data {
+  unsigned int adc_gain_factor;
+  unsigned int adc_offset;
+  unsigned int adc_ref15_30_temp;
+  unsigned int adc_ref15_85_temp;
+  unsigned int adc_ref20_30_temp;
+  unsigned int adc_ref20_85_temp;
+  unsigned int adc_ref25_30_temp;
+  unsigned int adc_ref25_85_temp;
+};
+
+struct s_TLV_Timer_D_Cal_Data {
+  unsigned int TDH0CTL1_64;
+  unsigned int TDH0CTL1_128;
+  unsigned int TDH0CTL1_200;
+  unsigned int TDH0CTL1_256;
+};
+
+struct s_TLV_REF_Cal_Data {
+  unsigned int ref_ref15;
+  unsigned int ref_ref20;
+  unsigned int adc_ref25;
+};
+
+/*******************************************************************************
+ * Tag Defines
+ ******************************************************************************/
+#define TLV_LDTAG             (0x01)      /*  Legacy descriptor (1xx, 2xx,
+                                              4xx families) */
+#define TLV_PDTAG             (0x02)      /*  Peripheral discovery descriptor */
+#define TLV_Reserved3         (0x03)      /*  Future usage */
+#define TLV_Reserved4         (0x04)      /*  Future usage */
+#define TLV_BLANK             (0x05)      /*  Blank descriptor */
+#define TLV_Reserved6         (0x06)      /*  Future usage */
+#define TLV_Reserved7         (0x07)      /*  Serial Number */
+#define TLV_DIERECORD         (0x08)      /*  Die Record  */
+#define TLV_ADCCAL            (0x11)      /*  ADC12 calibration */
+#define TLV_ADC12CAL          (0x11)      /*  ADC12 calibration */
+#define TLV_ADC10CAL          (0x13)      /*  ADC10 calibration */
+#define TLV_REFCAL            (0x12)      /*  REF calibration */
+#define TLV_TIMER_D_CAL       (0x15)      /*  Timer_Dx calibration */
+#define TLV_TAGEXT            (0xFE)      /*  Tag extender */
+#define TLV_TAGEND            (0xFF)      /*  Tag End of Table */
+
+/*******************************************************************************
+ * Peripheral Defines
+ ******************************************************************************/
+#define TLV_PID_NO_MODULE     (0x00)      /*  No Module */
+#define TLV_PID_PORTMAPPING   (0x10)      /*  Port Mapping */
+#define TLV_PID_MSP430CPUXV2  (0x23)      /*  MSP430CPUXV2 */
+#define TLV_PID_JTAG          (0x09)      /*  JTAG */
+#define TLV_PID_SBW           (0x0F)      /*  SBW */
+#define TLV_PID_EEM_XS        (0x02)      /*  EEM X-Small */
+#define TLV_PID_EEM_S         (0x03)      /*  EEM Small */
+#define TLV_PID_EEM_M         (0x04)      /*  EEM Medium */
+#define TLV_PID_EEM_L         (0x05)      /*  EEM Large */
+#define TLV_PID_PMM           (0x30)      /*  PMM */
+#define TLV_PID_PMM_FR        (0x32)      /*  PMM FRAM */
+#define TLV_PID_FCTL          (0x39)      /*  Flash */
+#define TLV_PID_CRC16         (0x3C)      /*  CRC16 */
+#define TLV_PID_CRC16_RB      (0x3D)      /*  CRC16 Reverse */
+#define TLV_PID_WDT_A         (0x40)      /*  WDT_A */
+#define TLV_PID_SFR           (0x41)      /*  SFR */
+#define TLV_PID_SYS           (0x42)      /*  SYS */
+#define TLV_PID_RAMCTL        (0x44)      /*  RAMCTL */
+#define TLV_PID_DMA_1         (0x46)      /*  DMA 1 */
+#define TLV_PID_DMA_3         (0x47)      /*  DMA 3 */
+#define TLV_PID_UCS           (0x48)      /*  UCS */
+#define TLV_PID_DMA_6         (0x4A)      /*  DMA 6 */
+#define TLV_PID_DMA_2         (0x4B)      /*  DMA 2 */
+#define TLV_PID_PORT1_2       (0x51)      /*  Port 1 + 2 / A */
+#define TLV_PID_PORT3_4       (0x52)      /*  Port 3 + 4 / B */
+#define TLV_PID_PORT5_6       (0x53)      /*  Port 5 + 6 / C */
+#define TLV_PID_PORT7_8       (0x54)      /*  Port 7 + 8 / D */
+#define TLV_PID_PORT9_10      (0x55)      /*  Port 9 + 10 / E */
+#define TLV_PID_PORT11_12     (0x56)      /*  Port 11 + 12 / F */
+#define TLV_PID_PORTU         (0x5E)      /*  Port U */
+#define TLV_PID_PORTJ         (0x5F)      /*  Port J */
+#define TLV_PID_TA2           (0x60)      /*  Timer A2 */
+#define TLV_PID_TA3           (0x61)      /*  Timer A1 */
+#define TLV_PID_TA5           (0x62)      /*  Timer A5 */
+#define TLV_PID_TA7           (0x63)      /*  Timer A7 */
+#define TLV_PID_TB3           (0x65)      /*  Timer B3 */
+#define TLV_PID_TB5           (0x66)      /*  Timer B5 */
+#define TLV_PID_TB7           (0x67)      /*  Timer B7 */
+#define TLV_PID_RTC           (0x68)      /*  RTC */
+#define TLV_PID_BT_RTC        (0x69)      /*  BT + RTC */
+#define TLV_PID_BBS           (0x6A)      /*  Battery Backup Switch */
+#define TLV_PID_RTC_B         (0x6B)      /*  RTC_B */
+#define TLV_PID_TD2           (0x6C)      /*  Timer D2 */
+#define TLV_PID_TD3           (0x6D)      /*  Timer D1 */
+#define TLV_PID_TD5           (0x6E)      /*  Timer D5 */
+#define TLV_PID_TD7           (0x6F)      /*  Timer D7 */
+#define TLV_PID_TEC           (0x70)      /*  Imer Event Control */
+#define TLV_PID_RTC_C         (0x71)      /*  RTC_C */
+#define TLV_PID_AES           (0x80)      /*  AES */
+#define TLV_PID_MPY16         (0x84)      /*  MPY16 */
+#define TLV_PID_MPY32         (0x85)      /*  MPY32 */
+#define TLV_PID_MPU           (0x86)      /*  MPU */
+#define TLV_PID_USCI_AB       (0x90)      /*  USCI_AB */
+#define TLV_PID_USCI_A        (0x91)      /*  USCI_A */
+#define TLV_PID_USCI_B        (0x92)      /*  USCI_B */
+#define TLV_PID_EUSCI_A       (0x94)      /*  eUSCI_A */
+#define TLV_PID_EUSCI_B       (0x95)      /*  eUSCI_B */
+#define TLV_PID_REF           (0xA0)      /*  Shared Reference */
+#define TLV_PID_COMP_B        (0xA8)      /*  COMP_B */
+#define TLV_PID_COMP_D        (0xA9)      /*  COMP_D */
+#define TLV_PID_USB           (0x98)      /*  USB */
+#define TLV_PID_LCD_B         (0xB1)      /*  LCD_B */
+#define TLV_PID_LCD_C         (0xB2)      /*  LCD_C */
+#define TLV_PID_DAC12_A       (0xC0)      /*  DAC12_A */
+#define TLV_PID_SD16_B_1      (0xC8)      /*  SD16_B 1 Channel */
+#define TLV_PID_SD16_B_2      (0xC9)      /*  SD16_B 2 Channel */
+#define TLV_PID_SD16_B_3      (0xCA)      /*  SD16_B 3 Channel */
+#define TLV_PID_SD16_B_4      (0xCB)      /*  SD16_B 4 Channel */
+#define TLV_PID_SD16_B_5      (0xCC)      /*  SD16_B 5 Channel */
+#define TLV_PID_SD16_B_6      (0xCD)      /*  SD16_B 6 Channel */
+#define TLV_PID_SD16_B_7      (0xCE)      /*  SD16_B 7 Channel */
+#define TLV_PID_SD16_B_8      (0xCF)      /*  SD16_B 8 Channel */
+#define TLV_PID_ADC12_A       (0xD1)      /*  ADC12_A */
+#define TLV_PID_ADC10_A       (0xD3)      /*  ADC10_A */
+#define TLV_PID_ADC10_B       (0xD4)      /*  ADC10_B */
+#define TLV_PID_SD16_A        (0xD8)      /*  SD16_A */
+#define TLV_PID_TI_BSL        (0xFC)      /*  BSL */
+
+/*******************************************************************************
+ * \brief   Get Information out of the TLV Table
+ *
+ * \param tag               Tag of the TLV entry
+ * \param instance          Instance of the Tag of the TLV entry
+ * \param *length           return: Length of the information if found
+ * \param **data_address    return: start pointer of Data
+ ******************************************************************************/
+void Get_TLV_Info(unsigned char tag, unsigned char instance, unsigned char *length,
+    unsigned int **data_address);
+
+/*******************************************************************************
+ * \brief   Get Device Type out of the TLV Table
+ *
+ * \return  Device dependent value
+ ******************************************************************************/
+unsigned int Get_Device_Type(void);
+
+/*******************************************************************************
+ * \brief   Get Memory Info out of the TLV Table
+ *
+ * \param instance  Index of the Instance [0..]
+ * \return          Memory Data found
+ ******************************************************************************/
+unsigned int Get_TLV_Memory(unsigned char instance);
+
+/*******************************************************************************
+ * \brief Get Peripheral Info out of the TLV Table
+ *
+ * \param tag       Tag of the TLV entry
+ * \param instance  Index of the Instance [0..]
+ * \return          Peripheral Data found
+ ******************************************************************************/
+unsigned int Get_TLV_Peripheral(unsigned char tag, unsigned char instance);
+
+/*******************************************************************************
+ * \brief   Get Interrupt Info out of the TLV Table
+ *
+ * \param tag   Tag of the TLV entry
+ * \return      Interrupt Data found
+ ******************************************************************************/
+unsigned char Get_TLV_Interrupt(unsigned char tag);
+
+#endif /* HAL_TLV_H */
diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.c b/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.c
new file mode 100644 (file)
index 0000000..ae015f6
--- /dev/null
@@ -0,0 +1,340 @@
+/*******************************************************************************
+ *
+ * HAL_UCS.c
+ * Provides Functions to Initialize the UCS/FLL and clock sources
+ * 
+ *
+ * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ 
+ * 
+ * 
+ *  Redistribution and use in source and binary forms, with or without 
+ *  modification, are permitted provided that the following conditions 
+ *  are met:
+ *
+ *    Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ *    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.
+ *
+ *    Neither the name of Texas Instruments Incorporated nor the names of
+ *    its contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ *  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 
+ *  OWNER 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.
+ * 
+ * Created: Version 1.0 11/24/2009
+ * Updated: Version 2.0 12/15/2010
+ *          Added Functions: XT2_Stop() and XT1_Stop()
+ *          Modified all functions to preserve drive settings
+ *  
+ ******************************************************************************/
+
+#include "msp430.h"
+#include "HAL_UCS.h"
+// #include "hal_calibration.h"
+
+/*******************************************************************************
+ * Check and define required Defines
+ ******************************************************************************/
+#ifndef XT1LFOFFG               // Defines if not available in header file
+#define XT1LFOFFG   0
+#endif
+
+#ifndef XT1HFOFFG               // Defines if not available in header file
+#define XT1HFOFFG   0
+#endif
+
+#ifndef XT2OFFG                 // Defines if not available in header file
+#define XT2OFFG     0
+#endif
+
+#ifndef XTS                     // Defines if not available in header file
+#define XTS         0
+#endif
+
+#ifndef XT2DRIVE_3              // Defines if not available in header file
+#define XT2DRIVE_3  0
+#endif
+
+
+/*******************************************************************************
+ * \brief   Initializes FLL of the UCS
+ *
+ * \param fsystem  Required system frequency (MCLK) in kHz
+ * \param ratio    Ratio between fsystem and FLLREFCLK
+ ******************************************************************************/
+static void Init_FLL(unsigned int fsystem, unsigned int ratio);
+
+
+#if 0
+void LFXT_Start(unsigned int xtdrive)
+{
+  // If the drive setting is not already set to maximum
+  // Set it to max for LFXT startup
+  if ((UCSCTL6 & XT1DRIVE_3)!= XT1DRIVE_3) { 
+    UCSCTL6_L |= XT1DRIVE1_L + XT1DRIVE0_L; // Highest drive setting for XT1startup
+  }
+
+  while (SFRIFG1 & OFIFG) {   // Check OFIFG fault flag
+    UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags fault flags
+    SFRIFG1 &= ~OFIFG;        // Clear OFIFG fault flag
+  }
+  
+  UCSCTL6 = (UCSCTL6 & ~(XT1DRIVE_3)) | (xtdrive); // set requested Drive mode
+}
+#endif
+
+unsigned int LFXT_Start_Timeout(unsigned int xtdrive, unsigned int timeout)
+{
+  // add in capacitor setting
+  //SetOscillatorCapacitorValues();
+  
+  // If the drive setting is not already set to maximum
+  // Set it to max for LFXT startup
+  if ((UCSCTL6 & XT1DRIVE_3)!= XT1DRIVE_3) { 
+   UCSCTL6_L |= XT1DRIVE1_L+XT1DRIVE0_L; // Highest drive setting for XT1startup
+  }
+
+  while ((SFRIFG1 & OFIFG) && timeout--){   // Check OFIFG fault flag
+    UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags fault flags
+    SFRIFG1 &= ~OFIFG;        // Clear OFIFG fault flag
+  }
+  
+  UCSCTL6 = (UCSCTL6 & ~(XT1DRIVE_3)) |(xtdrive); // set Drive mode
+  
+  // add in capacitor setting
+  //SetOscillatorCapacitorValues();
+  
+  if (timeout)
+    return (UCS_STATUS_OK);
+  else
+    return (UCS_STATUS_ERROR);
+}
+
+#if 0
+void XT1_Start(unsigned int xtdrive)
+{
+  // Check if drive value is the expected one
+  if ((UCSCTL6 & XT1DRIVE_3) != xtdrive) {
+    UCSCTL6 &= ~XT1DRIVE_3;                 // Clear XT1drive field
+    UCSCTL6 |= xtdrive;                     // Set requested value
+  }
+  
+  UCSCTL6 &= ~XT1OFF;                       // Enable XT1
+  UCSCTL6 |= XTS;                           // Enable HF mode
+
+  while (SFRIFG1 & OFIFG) {   // Check OFIFG fault flag
+    UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags
+    SFRIFG1 &= ~OFIFG;        // Clear OFIFG fault flag
+  }
+}
+
+unsigned int XT1_Start_Timeout(unsigned int xtdrive, unsigned int timeout)
+{
+  // Check if drive value is the expected one
+  if ((UCSCTL6 & XT1DRIVE_3) != xtdrive) {
+    UCSCTL6 &= ~XT1DRIVE_3;                 // Clear XT1drive field
+    UCSCTL6 |= xtdrive;                     // Set requested value
+  }
+  
+  UCSCTL6 &= ~XT1OFF;                       // Enable XT1
+  UCSCTL6 |= XTS;                           // Enable HF mode
+
+  while ((SFRIFG1 & OFIFG) && timeout--) {  // Check OFIFG fault flag
+    UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags
+    SFRIFG1 &= ~OFIFG;                      // Clear OFIFG fault flag
+  }
+  
+  if (timeout) {
+    return UCS_STATUS_OK;
+  }
+  else {
+    return UCS_STATUS_ERROR;
+  }
+}
+
+void XT1_Bypass(void)
+{
+  UCSCTL6 |= XT1BYPASS;
+
+  while (SFRIFG1 & OFIFG) {   // Check OFIFG fault flag
+    UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags
+    SFRIFG1 &= ~OFIFG;        // Clear OFIFG fault flag
+  }
+}
+#endif
+
+void XT1_Stop(void)
+{
+  UCSCTL6 |= XT1OFF;                         // Switch off XT1 oscillator
+}
+
+#if 0
+void XT2_Start(unsigned int xtdrive)
+{
+  // Check if drive value is the expected one
+  if ((UCSCTL6 & XT2DRIVE_3) != xtdrive) {
+    UCSCTL6 &= ~XT2DRIVE_3;                 // Clear XT2drive field
+    UCSCTL6 |= xtdrive;                     // Set requested value
+  }
+  
+  UCSCTL6 &= ~XT2OFF; 
+  
+  while (SFRIFG1 & OFIFG) {                 // Check OFIFG fault flag
+    UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags
+    SFRIFG1 &= ~OFIFG;                      // Clear OFIFG fault flag
+  }
+}
+
+unsigned int XT2_Start_Timeout(unsigned int xtdrive, unsigned int timeout)
+{
+  // Check if drive value is the expected one
+  if ((UCSCTL6 & XT2DRIVE_3) != xtdrive)  {
+    UCSCTL6 &= ~XT2DRIVE_3;                 // Clear XT2drive field
+    UCSCTL6 |= xtdrive;                     // Set requested value
+  }
+  
+  UCSCTL6 &= ~XT2OFF; 
+
+  while ((SFRIFG1 & OFIFG) && timeout--) {  // Check OFIFG fault flag
+    UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags
+    SFRIFG1 &= ~OFIFG;        // Clear OFIFG fault flag
+  }
+  
+  if (timeout) {
+    return UCS_STATUS_OK;
+  }
+  else {
+    return UCS_STATUS_ERROR;
+  }
+}
+
+void XT2_Bypass(void)
+{
+#ifdef XT2BYPASS              // On devices without XT2 this function will be empty
+  UCSCTL6 |= XT2BYPASS;
+
+  while (SFRIFG1 & OFIFG) {   // Check OFIFG fault flag
+    UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags
+    SFRIFG1 &= ~OFIFG;        // Clear OFIFG fault flag
+  }
+#endif
+}
+
+void XT2_Stop(void)
+{
+  UCSCTL6 |= XT2OFF;                         // Switch off XT2 oscillator
+}
+#endif
+
+void Init_FLL_Settle(unsigned int fsystem, unsigned int ratio)
+{
+  volatile unsigned int x;
+
+  // x = ratio * 32;
+  x = ratio << 5;
+  Init_FLL(fsystem, ratio);
+  
+  /* from changes in Init_FLL we know that fll is now enabled */
+  while (x--) {
+   __delay_cycles(30); 
+  }
+}
+
+static void Init_FLL(unsigned int fsystem, unsigned int ratio)
+{
+  unsigned int d, dco_div_bits;
+  unsigned int mode;
+  
+#if 0
+  unsigned int srRegisterState;
+#endif
+  
+  mode = 0;
+
+  /* we only run this at startup and we want the fll enabled on exit */
+#if 0
+  // Save actual state of FLL loop control, then disable it. This is needed to
+  // prevent the FLL from acting as we are making fundamental modifications to
+  // the clock setup.
+  srRegisterState = __get_SR_register() & SCG0;
+#endif
+  
+  d = ratio;
+  dco_div_bits = FLLD__2;        // Have at least a divider of 2
+  
+  if (fsystem > 16000) {
+    d >>= 1 ;
+    mode = 1;
+  }
+  else {
+    fsystem <<= 1;               // fsystem = fsystem * 2
+  }
+
+  while (d > 512) {
+    dco_div_bits = dco_div_bits + FLLD0;  // Set next higher div level
+    d >>= 1;
+  }
+
+  // Disable FLL
+  __bis_SR_register(SCG0);  
+  
+  UCSCTL0 = 0x0000;              // Set DCO to lowest Tap
+
+  UCSCTL2 &= ~(0x03FF);          // Reset FN bits
+  UCSCTL2 = dco_div_bits | (d - 1);
+
+  if (fsystem <= 630)            //           fsystem < 0.63MHz
+       UCSCTL1 = DCORSEL_0;
+  else if (fsystem <  1250)      // 0.63MHz < fsystem < 1.25MHz
+       UCSCTL1 = DCORSEL_1;
+  else if (fsystem <  2500)      // 1.25MHz < fsystem <  2.5MHz
+       UCSCTL1 = DCORSEL_2;
+  else if (fsystem <  5000)      // 2.5MHz  < fsystem <    5MHz
+       UCSCTL1 = DCORSEL_3;
+  else if (fsystem <  10000)     // 5MHz    < fsystem <   10MHz
+       UCSCTL1 = DCORSEL_4;
+  else if (fsystem <  20000)     // 10MHz   < fsystem <   20MHz
+       UCSCTL1 = DCORSEL_5;
+  else if (fsystem <  40000)     // 20MHz   < fsystem <   40MHz
+       UCSCTL1 = DCORSEL_6;
+  else
+       UCSCTL1 = DCORSEL_7;
+
+  // Re-enable FLL
+  __bic_SR_register(SCG0);
+  
+  while (SFRIFG1 & OFIFG) {                               // Check OFIFG fault flag
+    UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG);     // Clear OSC flaut Flags
+    SFRIFG1 &= ~OFIFG;                                    // Clear OFIFG fault flag
+  }
+
+  /* Init fll is only run at startup - We want the fll enabled when
+   * this function is complete (so don't save a restore setting)
+   */
+#if 0
+  // Restore previous SCG0
+  __bis_SR_register(srRegisterState);                    
+#endif
+  
+  if (mode == 1) {                                               // fsystem > 16000
+    SELECT_MCLK_SMCLK(SELM__DCOCLK + SELS__DCOCLK);       // Select DCOCLK
+  }
+  else {
+    SELECT_MCLK_SMCLK(SELM__DCOCLKDIV + SELS__DCOCLKDIV); // Select DCODIVCLK
+  }
+  
+}
diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.d b/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.d
new file mode 100644 (file)
index 0000000..cd525bd
--- /dev/null
@@ -0,0 +1,7 @@
+HAL_UCS.o: F5xx_F6xx_Core_Lib/HAL_UCS.c \
+ /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/msp430.h \
+ /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/msp430f5438a.h \
+ /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/iomacros.h \
+ /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/in430.h \
+ /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/intrinsics.h \
+ F5xx_F6xx_Core_Lib/HAL_UCS.h F5xx_F6xx_Core_Lib/HAL_MACROS.h
diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.h
new file mode 100644 (file)
index 0000000..1c5b418
--- /dev/null
@@ -0,0 +1,163 @@
+/*******************************************************************************
+ *
+ * HAL_UCS.h
+ * Provides Functions to Initialize the UCS/FLL and clock sources
+ * 
+ *
+ * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ 
+ * 
+ * 
+ *  Redistribution and use in source and binary forms, with or without 
+ *  modification, are permitted provided that the following conditions 
+ *  are met:
+ *
+ *    Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ *    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.
+ *
+ *    Neither the name of Texas Instruments Incorporated nor the names of
+ *    its contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ *  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 
+ *  OWNER 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.
+ * 
+ * Created: Version 1.0 11/24/2009
+ * Updated: Version 2.0 12/15/2010
+ *          Added Functions: XT2_Stop() and XT1_Stop()
+ *  
+ ******************************************************************************/
+
+#ifndef HAL_UCS_H
+#define HAL_UCS_H
+
+#include "HAL_MACROS.h"
+
+/*******************************************************************************
+ * Macros
+ ******************************************************************************/
+
+/* Select source for FLLREF  e.g. SELECT_FLLREF(SELREF__XT1CLK) */
+#define SELECT_FLLREF(source) st(UCSCTL3 = (UCSCTL3 & ~(SELREF_7)) | (source);) 
+/* Select source for ACLK    e.g. SELECT_ACLK(SELA__XT1CLK) */
+#define SELECT_ACLK(source)   st(UCSCTL4 = (UCSCTL4 & ~(SELA_7))   | (source);) 
+/* Select source for MCLK    e.g. SELECT_MCLK(SELM__XT2CLK) */
+#define SELECT_MCLK(source)   st(UCSCTL4 = (UCSCTL4 & ~(SELM_7))   | (source);) 
+/* Select source for SMCLK   e.g. SELECT_SMCLK(SELS__XT2CLK) */
+#define SELECT_SMCLK(source)  st(UCSCTL4 = (UCSCTL4 & ~(SELS_7))   | (source);) 
+/* Select source for MCLK and SMCLK e.g. SELECT_MCLK_SMCLK(SELM__DCOCLK + SELS__DCOCLK) */
+#define SELECT_MCLK_SMCLK(sources) st(UCSCTL4 = (UCSCTL4 & ~(SELM_7 + SELS_7)) | (sources);)
+
+/* set ACLK/x */
+#define ACLK_DIV(x)         st(UCSCTL5 = (UCSCTL5 & ~(DIVA_7)) | (DIVA__##x);)     
+/* set MCLK/x */
+#define MCLK_DIV(x)         st(UCSCTL5 = (UCSCTL5 & ~(DIVM_7)) | (DIVM__##x);)     
+/* set SMCLK/x */
+#define SMCLK_DIV(x)        st(UCSCTL5 = (UCSCTL5 & ~(DIVS_7)) | (DIVS__##x);)     
+/* Select divider for FLLREF  e.g. SELECT_FLLREFDIV(2) */
+#define SELECT_FLLREFDIV(x) st(UCSCTL3 = (UCSCTL3 & ~(FLLREFDIV_7))|(FLLREFDIV__##x);) 
+
+/*******************************************************************************
+ * Defines
+ ******************************************************************************/
+#define UCS_STATUS_OK     0
+#define UCS_STATUS_ERROR  1
+
+#if 0
+/*******************************************************************************
+ * \brief   Startup routine for 32kHz Crystal on LFXT1
+ *
+ * \param xtdrive   Bits defining the LFXT drive mode after startup
+ ******************************************************************************/
+extern void LFXT_Start(unsigned int xtdrive);
+#endif
+
+/*******************************************************************************
+ * \brief   Startup routine for 32kHz Crystal on LFXT1 with timeout counter
+ *
+ * \param xtdrive   Bits defining the LFXT drive mode after startup
+ * \param timeout   Value for the timeout counter
+ ******************************************************************************/
+extern unsigned int LFXT_Start_Timeout(unsigned int xtdrive, unsigned int timeout);
+
+#if 0
+/*******************************************************************************
+ * \brief   Startup routine for XT1
+ *
+ * \param xtdrive   Bits defining the XT drive mode
+ ******************************************************************************/
+extern void XT1_Start(unsigned int xtdrive);
+
+/*******************************************************************************
+ * \brief   Startup routine for XT1 with timeout counter
+ *
+ * \param xtdrive   Bits defining the XT drive mode
+ * \param timeout   Value for the timeout counter
+ ******************************************************************************/
+extern unsigned int XT1_Start_Timeout(unsigned int xtdrive, unsigned int timeout);
+
+/*******************************************************************************
+ * \brief   Use XT1 in Bypasss mode
+ ******************************************************************************/
+extern void XT1_Bypass(void);
+
+#endif
+
+/*******************************************************************************
+ * \brief   Stop XT1 oscillator
+ ******************************************************************************/
+extern void XT1_Stop(void);
+
+#if 0
+/*******************************************************************************
+ * \brief   Startup routine for XT2
+ *
+ * \param xtdrive   Bits defining the XT drive mode
+ ******************************************************************************/
+extern void XT2_Start(unsigned int xtdrive);
+
+/*******************************************************************************
+ * \brief   Startup routine for XT2 with timeout counter
+ *
+ * \param xtdrive   Bits defining the XT drive mode
+ * \param timeout   Value for the timeout counter
+ ******************************************************************************/
+extern unsigned int XT2_Start_Timeout(unsigned int xtdrive, unsigned int timeout);
+
+/*******************************************************************************
+ * \brief   Use XT2 in Bypasss mode for MCLK
+ ******************************************************************************/
+extern void XT2_Bypass(void);
+
+/*******************************************************************************
+ * \brief   Stop XT2 oscillator
+ ******************************************************************************/
+extern void XT2_Stop(void);
+
+#endif
+
+/*******************************************************************************
+ * \brief   Initializes FLL of the UCS and wait till settled before allowing
+ *          code execution to resume. The use of this function is preferred
+ *          over the use of Init_FLL().
+ *
+ * \param fsystem  Required system frequency (MCLK) in kHz
+ * \param ratio    Ratio between fsystem and FLLREFCLK
+ ******************************************************************************/
+extern void Init_FLL_Settle(unsigned int fsystem, unsigned int ratio);
+
+
+#endif /* HAL_UCS_H */
index 583ccb13520091de31996481b21f244f6623f845..aadbb11a129c75dec043db0d9769bea383d98703 100644 (file)
@@ -22,8 +22,8 @@ MEMMODEL   = -mmemory-model=huge -fdata-sections -ffunction-sections # -mdata-re
 #APPCONFIG = -DDIGITAL -DMW_DEVBOARD_V2 -DCC256x_TRANSP
 APPCONFIG = -DDIGITAL -DMW_DIGITAL_V2
 
-BTCC256x_SCRIPT = bluetooth_init_cc2560_2.44.c
-#BTCC256x_SCRIPT = bluetooth_init_cc2564_2.8.c
+#BTCC256x_SCRIPT = bluetooth_init_cc2560_2.44.c
+BTCC256x_SCRIPT = bluetooth_init_cc2564_2.8.c
 
 # List all the source files here
 # eg if you have a source file foo.c then list it here
@@ -37,7 +37,9 @@ OSWALD_SRC = ../ui/oswald_main.c ../ui/oswald_screens.c \
 SOURCES = mw_main.c mw_uart.c mw_lcd.c mw_adc.c mw_bt.c \
        mw_acc.c $(BTCC256x_SCRIPT) \
        bt_hci.c bt_l2cap.c \
-       oswald_hal.c $(OSWALD_SRC)
+       oswald_hal.c $(OSWALD_SRC) \
+       F5xx_F6xx_Core_Lib/HAL_PMM.c \
+       F5xx_F6xx_Core_Lib/HAL_UCS.c
 #      $(BT_SMALLTOOTH_SRC)
 #      $(BT_STACK_SRC) \
 
index 838aafc20aeda695b183f038bfb3d36920e1c960..7bf74449eb8f9d8fe1f85d846241abf2f9e71ac1 100644 (file)
@@ -327,10 +327,14 @@ unsigned char bt_feed_packet_data(unsigned char pdata)
                                        state = HCI_PACKET_START;
                                        // disable BT UART?
                                        // mabye UCA1CTL1 = UCSWRST ?
+
                                        pdata = EHCILL_GO_TO_SLEEP_ACK;
                                        mw_bt_uart_tx(&pdata, 0x01);
-                                       BT_IO_POUT |= BT_IO_RTS; // pull RTS -> stop data
 
+                                       // pull RTS -> stop data
+                                       BT_IO_POUT |= BT_IO_RTS;
+
+                                       // enable IRQ on CTS
                                        P1IFG &= ~BT_IO_CTS;
                                        P1IE |= BT_IO_CTS;
 
@@ -421,7 +425,7 @@ void bt_hci_cmd(const uint8_t OGF, const uint8_t OCF, const uint8_t data_len, co
        if (state == EHCILL_SLEEPING) {
                uint8_t ehcill_p = EHCILL_WAKE_UP_IND;
 
-               debug_uart_tx("HCILL wakeup\n");
+               debug_uart_tx("wakeup HCILL\n");
                state = HCI_PACKET_START;
                mw_bt_uart_tx(&ehcill_p, 1);
                __delay_cycles(300000);
@@ -484,11 +488,12 @@ void bt_hci_init(void)
 
 void bt_hci_ehcill_wake(void)
 {
-       uint8_t ehcill_p = EHCILL_WAKE_UP_ACK;
+       const uint8_t ehcill_p = EHCILL_WAKE_UP_ACK;
 
        debug_uart_tx("HCILL wakeup\n");
 
        P1IE &= ~BT_IO_CTS;
+       P1IFG &= ~BT_IO_CTS;
        state = HCI_PACKET_START;
 
        BT_IO_POUT &= ~BT_IO_RTS; // drop RTS -> start data
index fe94d990adb6fffdd5ab89ef0ffca48e09d32077..ef57cf21efe1d997b352cef7495f594bc18016d3 100644 (file)
 // disable charging, sleep the part
 #define BATTERY_CHARGE_DISABLE()  { BAT_CHARGE_OUT |= BAT_CHARGE_ENABLE_PIN; }
 
+//RESET PIN NMI or RESET
+#define SET_RESET_PIN_NMI() {SFRRPCR &= ~SYSRSTRE; SFRRPCR |= SYSNMI;}
+#define SET_RESET_PIN_RST() {SFRRPCR |= SYSRSTRE; SFRRPCR &= ~SYSNMI;}
+#define RESET_PIN (SFRRPCR & SYSNMI) // return 1 for NMI
 
 //
 // Ambient Light Sensor
index 6b220ee9bf4d90dfd31534111d4786ff9278c910..854996c9fcf04ab7e1ee14130bee90f440c6d23c 100644 (file)
 // disable charging, sleep the part
 #define BATTERY_CHARGE_DISABLE()  { BAT_CHARGE_OUT |= BAT_CHARGE_ENABLE_PIN; }
 
+//RESET PIN NMI or RESET
+#define SET_RESET_PIN_NMI() {SFRRPCR &= ~SYSRSTRE; SFRRPCR |= SYSNMI;}
+#define SET_RESET_PIN_RST() {SFRRPCR |= SYSRSTRE; SFRRPCR &= ~SYSNMI;}
+#define RESET_PIN (SFRRPCR & SYSNMI) // return 1 for NMI
 
 //
 // Ambient Light Sensor
index 0717a9246950dbf0a713ce23f6aec19134a4c3ef..1080c3e5e53d671e833a1574e61f6793c2d23944 100644 (file)
@@ -49,6 +49,7 @@ __interrupt void ACCERLEROMETER_I2C_ISR(void)
                        nop();
                        break; 
                case ACCELEROMETER_STPIFG: 
+                       nop();
                        break;
                case ACCELEROMETER_RXIFG:
                        if (LengthCount > 0) {
@@ -106,6 +107,8 @@ void mw_acc_disable_i2c(void)
 
 void mw_acc_i2c_write(uint8_t RegisterAddress, uint8_t *pData, uint8_t Length)
 {
+       int tmo;
+
        if (Length == 0 || pData == 0)
                return;  
   
@@ -134,8 +137,15 @@ void mw_acc_i2c_write(uint8_t RegisterAddress, uint8_t *pData, uint8_t Length)
        ACCELEROMETER_IE |= UCTXIE;
        ACCELEROMETER_TXBUF = RegisterAddress;
 
-       while (AccelerometerBusy)
-               nop();
+       tmo = 0;
+       while (AccelerometerBusy) {
+               while (tmo++ < 1000)
+                       __delay_cycles(16000);
+               if (tmo >= 1000) {
+                       debug_uart_tx("ACC I2C tx tmo\n");
+                       return;
+               }
+       }
 
        while (ACCELEROMETER_CTL1 & UCTXSTP)
                nop();
@@ -180,17 +190,21 @@ void mw_acc_i2c_read_single(const uint8_t RegisterAddress, const uint8_t *pData)
         * received. If this is interrupted an extra byte may be read.
         * however, it will be discarded during the next read
         */
-       if ( LengthCount == 1 ) {
+       if (LengthCount == 1) {
                /* errata usci30: prevent interruption of sending stop 
                 * so that only one byte is read
                 * this requires 62 us @ 320 kHz, 51 @ 400 kHz
                 */
+               __disable_interrupt();
+
                ACCELEROMETER_CTL1 |= UCTXSTT;
   
                while(ACCELEROMETER_CTL1 & UCTXSTT)
                        nop();
 
                ACCELEROMETER_CTL1 |= UCTXSTP;
+
+               __enable_interrupt();
        } else {
                ACCELEROMETER_CTL1 |= UCTXSTT;
        }
@@ -225,7 +239,9 @@ void mw_acc_init(void)
        char tstr[16];
 #endif
 
+       // it takes at least 20ms to power up
        ENABLE_ACCELEROMETER_POWER();
+       __delay_cycles(320000);
 
        mw_acc_init_i2c();
 
@@ -350,7 +366,7 @@ void mw_acc_disable(void)
 
                ACCELEROMETER_INT_DISABLE();
                mw_acc_disable_i2c();
-               DISABLE_ACCELEROMETER_POWER();
+               /// DISABLE_ACCELEROMETER_POWER();
                AccelState = ACCEL_STATE_DISABLED;
        }
 }
index 52c9e04ae401cdff5fa0810d1767212456f4f8f0..d5db450a80b0250a20699ba93889ebde5e281a3c 100644 (file)
@@ -82,7 +82,7 @@ uint8_t mw_get_battery_percentage_from_val(unsigned int BattVal)
        return (unsigned char)BattVal;
 }
 
-unsigned int mw_get_amblight_adc_val(void)
+uint16_t mw_get_amblight_adc_val(void)
 { 
        LIGHT_SENSE_ENABLE();
 
index 78a45cd07c2772906e26317e7f142af7d779a824..8ab0511d66916a83dc3bffc7185b2f38198cb517 100644 (file)
@@ -4,7 +4,7 @@
 void mw_init_adc(void);
 unsigned int mw_get_battery_adc_val(void);
 uint8_t mw_get_battery_percentage_from_val(unsigned int BatVal);
-unsigned int mw_get_amblight_adc_val(void);
+uint16_t mw_get_amblight_adc_val(void);
 
 #endif
 
index 8138b1ef4414e7d77d13707a22b751c0e7098259..d5c7d26bbd29821fa7ebff3adc7b6b3de8077699 100644 (file)
@@ -19,16 +19,30 @@ static unsigned char bt_rx_buf_wpos = 0;
 static unsigned char bt_rx_buf_rpos = 0;
 static uint8_t mw_bt_enabled = 0;
 
+int mw_bt_get_rxbuf_len(void)
+{
+       if (bt_rx_buf_rpos > bt_rx_buf_wpos)
+               return (BT_RX_MAX_SIZE - bt_rx_buf_rpos) + bt_rx_buf_wpos;
+       else
+               return bt_rx_buf_wpos - bt_rx_buf_rpos;
+}
+
 const unsigned char *mw_bt_get_rx_buf(unsigned char **rpos, unsigned char *len)
 {
        *rpos = &bt_rx_buf_rpos;
+
        if (bt_rx_buf_rpos > bt_rx_buf_wpos)
                *len = (BT_RX_MAX_SIZE - bt_rx_buf_rpos) + bt_rx_buf_wpos;
        else
                *len = bt_rx_buf_wpos - bt_rx_buf_rpos;
 
-       if (*len > (BT_RX_MAX_SIZE-(BT_RX_MAX_SIZE/10)))
+       // if we reach high water mark raise RTS to stop more data
+       if (*len > (BT_RX_MAX_SIZE-(BT_RX_MAX_SIZE/10))) {
+               debug_uart_tx("BT UART RTS\n");
                BT_IO_POUT |= BT_IO_RTS; // low == ready, high == !ready
+       } else {
+               BT_IO_POUT &= ~BT_IO_RTS; // low == ready, high == !ready
+       }
 
        return (unsigned char *)bt_rx_buf;
 }
@@ -38,15 +52,25 @@ __interrupt void UCA1_ISR (void)
 {
        switch (UCA1IV) {
                case 2: // RXIFG
+                       /* clear IRQ flag */
+                       //UCA1IFG  &= ~UCRXIFG;
                        /* wake up to handle the received char */
-                       LPM3_EXIT;
+                       if (UCA1STAT & UCRXERR) {
+                               debug_uart_tx("BT UART RXERR: ");
+                               if (UCA1STAT & UCOE)
+                                       debug_uart_tx("overrun\n");
+                               if (UCA1STAT & UCPE)
+                                       debug_uart_tx("parity err\n");
+                               if (UCA1STAT & UCFE)
+                                       debug_uart_tx("frm-err\n");
+                       }
                        bt_rx_buf[bt_rx_buf_wpos++] = UCA1RXBUF;
-                       /* clear IRQ flag */
-                       UCA1IFG  &= ~UCRXIFG;
                        bt_rx_buf_wpos %= BT_RX_MAX_SIZE;
+                       LPM3_EXIT;
                        _event_src |= BT_UART_RCV_EVENT;
                        break;
                case 4: // TXIFG
+                       debug_uart_tx("BT UART TX IRQ - huh?\n");
                        break;
                default:
                        break;
@@ -56,7 +80,9 @@ __interrupt void UCA1_ISR (void)
 void mw_init_bt_uart(const bt_uart_baud_t baud)
 {
        UCA1CTL1 = UCSWRST;
+
        UCA1CTL1 |= UCSSEL__SMCLK;
+
        switch (baud) {
                case BT_UART_BD115200:
                default:
@@ -65,13 +91,14 @@ void mw_init_bt_uart(const bt_uart_baud_t baud)
                break;
        };
        UCA1STAT = 0;
-       UCA1CTL0 = UCMODE_0;    // UART mode
-       UCA1CTL0 &= ~UC7BIT;    // 8bit char
+       // UCA1CTL0 = UCMODE_0; // UART mode
+       // UCA1CTL0 &= ~UC7BIT; // 8bit char
+       //UCA1CTL0 |= UCRXEIE;
 
        UCA1CTL1 &= ~UCSWRST;
        /* clear interrup flags */
-       UCA1IFG = 0;
        UCA1IE = UCRXIE;
+       UCA1IFG = 0;
 }
 
 #if 0 // Does never finish, presumably trigger does not trigger, unknown :(
@@ -102,7 +129,12 @@ void mw_bt_uart_tx(const void *buf, const unsigned int len)
        pos = 0;
        // debug_uart_tx("BT tx: ");
        while (pos < len) {
-               while ((BT_IO_PIN & BT_IO_CTS)) // wait for CTS to go low
+               // wait for CTS to go low
+               while ((BT_IO_PIN & BT_IO_CTS))
+                       nop();
+
+               // do not start a transfer if UART is busy, e.g. rx-ing
+               while (UCA1STAT & UCBUSY)
                        nop();
 
                UCA1TXBUF = *(unsigned char *) (buf+pos);
@@ -115,7 +147,6 @@ void mw_bt_uart_tx(const void *buf, const unsigned int len)
        }
        while (UCA1STAT & UCBUSY)
                nop();
-       // debug_uart_tx("\n");
 }
 #endif
 
@@ -163,6 +194,9 @@ void mw_enable_bt(void)
 
        mw_init_bt_uart(BT_UART_BD115200);
 
+       bt_rx_buf_wpos = 0;
+       bt_rx_buf_rpos = 0;
+
        /* release BT reset pin */
        BT_ENABLE();
 
@@ -181,10 +215,13 @@ void mw_enable_bt(void)
                load_cc256x_init_script();
                debug_uart_tx("init uploaded\n");
        }
+
        P1IE &= ~BT_IO_CTS;
        P1IES &= ~BT_IO_CTS;
+
        bt_hci_init();
        init_l2cap();
+
        mw_bt_enabled = 1;
 }
 
index f7e5312704df26acf278d75890f7980f91910c18..1569ae46ead0269af4116ab3b1eb40a936320eb8 100644 (file)
@@ -59,6 +59,7 @@ void mw_init_bt_uart(const bt_uart_baud_t baud);
 void mw_bt_uart_tx(const void *buf, const unsigned int len);
 // extern char BT_UART_RX_CHAR;
 
+int mw_bt_get_rxbuf_len(void);
 const unsigned char *mw_bt_get_rx_buf(unsigned char **rpos, unsigned char *len);
 unsigned char bt_feed_packet_data(unsigned char pdata);
 uint8_t mw_bt_is_enabled(void);
index fa1f98e41bba605d2059e0918b06d23fa9f0a0db..4ba6c542845b7dd1f177e62a2f09579f458d4aa5 100644 (file)
@@ -3,6 +3,9 @@
 #include <stdio.h>
 #include <string.h>
 
+#include "F5xx_F6xx_Core_Lib/HAL_PMM.h"
+#include "F5xx_F6xx_Core_Lib/HAL_UCS.h"
+
 #include "mw_main.h"
 
 #include "mw_uart.h"
 #include "oswald_main.h"
 #include "oswald_hal.h"
 
-#include "bluetooth_init_cc256x.h"
 
 uint16_t _event_src = 0;
 
+#define HARDWARE_REVISION_ADDRESS (0x1a07)
+
+unsigned char GetMsp430HardwareRevision(void)
+{
+       unsigned char *pDeviceType = (unsigned char *)(unsigned char *)HARDWARE_REVISION_ADDRESS;
+  
+       return pDeviceType[0]+'1';                         
+}
+
+uint8_t DetermineErrata(void)
+{
+       unsigned char Revision = GetMsp430HardwareRevision();
+  
+       switch (Revision) {
+               case 'F':
+               case 'H':
+                       return 0;
+                       break;
+               default:
+                       return 1;
+                       break;
+       }
+}
 
 static void set16mhz(void)
 {
@@ -46,6 +71,8 @@ static void setup_clocks(void)
 {
        unsigned long i;
 
+       SetVCore(PMMCOREV_2);
+
        /* use external oscillator */
        P7SEL |= BIT0 + BIT1;
        if ((UCSCTL6 & XT1DRIVE_3) != XT1DRIVE_3) {
@@ -62,6 +89,34 @@ static void setup_clocks(void)
 
        UCSCTL8 |= SMCLKREQEN;
 
+       // setup for quick wake up from interrupt and
+       // minimal power consumption in sleep mode
+       DISABLE_SVSL();                         // SVS Low side is turned off
+       DISABLE_SVSL_RESET();
+  
+       DISABLE_SVML();                         // Monitor low side is turned off
+       DISABLE_SVML_INTERRUPT();
+  
+       DISABLE_SVMH();                         // Monitor high side is turned off
+       DISABLE_SVMH_INTERRUPT();
+  
+       ENABLE_SVSH();                          // SVS High side is turned on
+       ENABLE_SVSH_RESET();                    // Enable POR on SVS Event
+
+       SVSH_ENABLED_IN_LPM_FULL_PERF();        // SVS high side Full perf mode,
+                                               // stays on in LPM3,enhanced protect
+
+       // Wait until high side, low side settled
+       while ((PMMIFG & SVSMLDLYIFG) == 0 && (PMMIFG & SVSMHDLYIFG) == 0)
+               nop();
+       CLEAR_PMM_IFGS();
+
+       // Errata PMM17
+       if (DetermineErrata()) {
+               *(unsigned int*)(0x0110) = 0x9602;
+               *(unsigned int*)(0x0112) |= 0x0800;
+       }
+
        /* enable oscillator fault NMI IRQ */
 //     SFRIE1 = OFIE;
 }
@@ -112,7 +167,8 @@ static void setup_pins(void)
        DISABLE_LCD_LED();              // frontlight
        CONFIG_DEBUG_PINS();
        CONFIG_ACCELEROMETER_PINS();
-       DISABLE_ACCELEROMETER_POWER(); // starts from config 5 and later
+       //DISABLE_ACCELEROMETER_POWER(); // starts from config 5 and later
+       ENABLE_ACCELEROMETER_POWER(); // starts from config 5 and later
 
        HARDWARE_CFG_SENSE_INIT();
 
@@ -183,16 +239,22 @@ __interrupt void RTC_ISR (void)
 {
        switch (RTCIV) {
                case RTCIV_NONE:
+                       debug_uart_tx("RTC none IRQ\n");
                        break;
                case RTCIV_RTCRDYIFG:
                case RTCIV_RTCTEVIFG:
                case RTCIV_RTCAIFG:
                case RTCIV_RT0PSIFG:
+                       debug_uart_tx("RTC misc IRQ\n");
                        break;
                case RTCIV_RT1PSIFG:
                        RTCPS1CTL &= ~RT1PSIFG;
                        _event_src |= RTC_1HZ_EVENT;
                        LPM3_EXIT;
+                       nop();
+#if defined MW_DEVBOARD_V2
+                       LED7_TOGGLE();
+#endif
                        break;
                default:
                        break;
@@ -245,7 +307,6 @@ static void dbg_out_rtc(void)
        char clk_str[16];
        snprintf(clk_str, 16, "%02d:%02d.%02d %d\n", RTCHOUR, RTCMIN, RTCSEC, RTCDOW);
        debug_uart_tx(clk_str);
-       // bt_l2cap_send_channel(0x40, clk_str, strlen(clk_str));
 }
 #endif
 
@@ -392,13 +453,6 @@ static void handle_uart_rx_event(void)
                        nop();
                } else if (c == '-') {
                        nop();
-               } else if (c == 't') {
-                       int i;
-                       debug_uart_tx("cc256x ini content:\n");
-                       for (i=0; i<16; i++) {
-                               snprintf(tstr, 16, "0x%04x 0x%02x\n", i, cc256x_init_script[i]);
-                               debug_uart_tx(tstr);
-                       }
                } else if (c == 'H') {
                        uint8_t dclass[3];
                        dclass[0] = BT_MW_DEVICE_CLASS & 0xff;
@@ -441,16 +495,16 @@ static void handle_uart_rx_event(void)
 void start_timer(int cycles)
 {
        TA0EX0 = TAIDEX_0;
-       TA0CTL = TASSEL_1 | TACLR | MC__STOP;              // SMCLK, clear TAR
-       TA0CCTL0 = CCIE;                         // CCR0 interrupt enabled
+       TA0CTL = TASSEL_1 | TACLR | MC__STOP;   // SMCLK, clear TAR
+       TA0CCTL0 = CCIE;                        // CCR0 interrupt enabled
        TA0CCR0 = cycles;
-       TA0CTL |= MC_1;                         // Start Timer_A in continuous mode
+       TA0CTL |= MC_1;                         // Start Timer_A in continuous mode
 }
 
 void stop_timer(void)
 {
-       TA0CCTL0 &= ~CCIE;                         // CCR0 interrupt enabled
-       TA0CTL = MC__STOP;                         // Start Timer_A in continuous mode
+       TA0CCTL0 &= ~CCIE;                      // CCR0 interrupt enabled
+       TA0CTL = MC__STOP;                      // Start Timer_A in continuous mode
 }
  
 // Timer A0 interrupt service routine
@@ -483,11 +537,13 @@ uint8_t handle_event(void)
                        oswald_one_second_tick();
 #if defined MW_DEVBOARD_V2
                        dbg_out_rtc();
-                       LED7_TOGGLE();
 #endif
                } else if (_event_src & BT_UART_RCV_EVENT) {
                        _event_src &= ~BT_UART_RCV_EVENT;
                        handle_bt_uart_rx_event();
+               } else if (_event_src & BT_UART_WAKEUP_EVENT) {
+                       _event_src &= ~BT_UART_WAKEUP_EVENT;
+                       bt_hci_ehcill_wake();
                } else if (_event_src & DBG_UART_RCV_EVENT) {
                        _event_src &= ~DBG_UART_RCV_EVENT;
 #if defined MW_DEVBOARD_V2
@@ -518,29 +574,28 @@ uint8_t handle_event(void)
 #pragma vector=BUTTON_PORT_VECTOR
 __interrupt void BUTTON_ISR (void)
 {
+       LPM3_EXIT;
        BUTTON_PORT_IFG &= ~ALL_BUTTONS;
        // BUTTON_PORT_IE  &= ~INT_EDGE_SEL_BUTTONS;
        _event_src |= BUTTON_EVENT;
        //_button_state = (BUTTON_PORT_IN & ALL_BUTTONS);
-       LPM3_EXIT;
 }
 
 #pragma vector=PORT1_VECTOR
 __interrupt void PORT1_GPIO_ISR (void)
 {
        if (P1IFG & BT_IO_CTS) {
+               LPM3_EXIT;
+               P1IE &= ~BT_IO_CTS;
                P1IFG &= ~BT_IO_CTS;
-
                debug_uart_tx("BT CTS irq\n");
-               bt_hci_ehcill_wake();
-
+               _event_src |= BT_UART_WAKEUP_EVENT;
+               // bt_hci_ehcill_wake();
+       } else if (P1IFG & ACCELEROMETER_INT_PIN) {
                LPM3_EXIT;
-       };
-       if (P1IFG & ACCELEROMETER_INT_PIN) {
                P1IFG &= ~ACCELEROMETER_INT_PIN;
                // debug_uart_tx("ACC irq\n");
                _event_src |= ACCEL_EVENT;
-               LPM3_EXIT;
        }
 }
 
@@ -556,15 +611,13 @@ __interrupt void UNEXP_ISR (void)
 
 int main(void)
 {
-       int idle = 0;
-
        setup_wdt();
        setup_pins();
        setup_clocks();
        setup_rtc();
 
        /* enable interrupts, we will need them! */
-       __eint();
+       __enable_interrupt();
 
 #if defined MW_DEVBOARD_V2
        init_debug_uart();
@@ -578,32 +631,25 @@ int main(void)
        mw_init_adc();
        mw_init_vibrate_pwm();
 
-#if 0
-       RTCYEAR = (unsigned int) 2013;
-       RTCMON = (unsigned int) 1;
-       RTCDAY = (unsigned int) 1;
-       RTCDOW = (unsigned int) 2;
-       RTCHOUR = (unsigned int) 01;
-       RTCMIN = (unsigned int) 0;
-       RTCSEC = (unsigned int) 0;
-#endif
-
        oswald_set_time(RTCHOUR, RTCMIN, RTCSEC, TRUE);
        oswald_set_date(RTCDAY, RTCMON, RTCYEAR, TRUE);
        oswald_init();
 
        while (1) {
                /* handle pending events */
-               if (handle_event())
-                       idle++;
-               else
-                       idle = 0;
+               handle_event();
 
                /* enter LPM3 sleep mode waiting for interrupt */
-               if (idle > 100) {
-                       idle = 0;
-                       // debug_uart_tx("z");
-                       LPM3;
+               /* errata PMM11 + PMM12 - divide MCLK before going to sleep */
+               if (DetermineErrata()) {
+                       MCLK_DIV(2);
+                       nop();
+               }
+               LPM3;
+               nop();
+               if (DetermineErrata()) {
+                       __delay_cycles(100);
+                       MCLK_DIV(1);
                }
        };
 
index 039d40202a2aa46b52010f2ef1719fbaedebccb3..f3e5db9da1c10659ea490da16798a5550bc6c78f 100644 (file)
@@ -21,7 +21,8 @@
 #define TIMER_100MS_EVENT      1 << 5
 #define POWER_SRC_EVENT                1 << 6
 #define BT_UART_RCV_EVENT      1 << 7
-#define ACCEL_EVENT            1 << 8
+#define BT_UART_WAKEUP_EVENT   1 << 8
+#define ACCEL_EVENT            1 << 9
 
 extern unsigned int _event_src;
 
index 16a1a29a8d26c764e5eade40c72eb96ba2720cf4..79b650e7f73ca46373c476c541f4a3f1b2011850 100644 (file)
@@ -16,12 +16,20 @@ void debug_uart_tx_char(char c);
 #pragma vector=USCI_A3_VECTOR
 __interrupt void UCA_ISR (void)
 {
-       /* clear IRQ flag */
-       UCA3IFG  &= ~UCRXIFG;
-       UART_RX_CHAR = UCA3RXBUF;
-       _event_src |= DBG_UART_RCV_EVENT;
-       /* wake up to handle the received char */
-       LPM3_EXIT;
+       switch (UCA3IV) {
+               case 2: // RXIFG
+                       /* clear IRQ flag */
+                       UCA3IFG  &= ~UCRXIFG;
+                       UART_RX_CHAR = UCA3RXBUF;
+                       _event_src |= DBG_UART_RCV_EVENT;
+                       /* wake up to handle the received char */
+                       LPM3_EXIT;
+                       break;
+               case 4: // TXIFG
+                       break;
+               default:
+                       break;
+       }
 }
 
 void init_debug_uart(void)
@@ -36,7 +44,7 @@ void init_debug_uart(void)
        /* 16,000,000 115200 138  7     0 */
 
        UCA3BR0 = 138;
-       UCA3MCTL = UCBRS_7 + UCBRF_0;
+       UCA3MCTL = UCBRS_7 | UCBRF_0;
 
        /* set P10.4 & P10.5 to UCA function */
        P10SEL |= BIT4;
@@ -55,6 +63,8 @@ void init_debug_uart(void)
 
 void debug_uart_tx_char(const char c)
 {
+       while (UCA3STAT & UCBUSY)
+               nop();
        UCA3TXBUF = c;
        while ((UCA3IFG & UCTXIFG) == 0 )
                nop();
index 528f1a6d230b5a1e655dc33ab494c09fed92d498..16b1cd1e4a58c659720f29454972a5215e3ab7a0 100644 (file)
@@ -97,6 +97,7 @@ void hal_get_rtc(clock_state *rtc)
        rtc->day = RTCDAY;
        rtc->month = RTCMON;
        rtc->year = RTCYEAR;
+       rtc->wday = RTCDOW;
 }
 
 void hal_set_rtc(clock_state *rtc, boolean set_sec)
@@ -263,4 +264,8 @@ void hal_accelerometer_disable(void)
        mw_acc_disable();
 }
 
+uint16_t hal_amblight_get_val(void)
+{
+       return mw_get_amblight_adc_val();
+}
 
index 82ee5d1de791939f4b9cfdf0175c57e5a83aa7c1..ba0e1b89c7d5aab49a49095235019be5b242078f 100644 (file)
@@ -1,10 +1,10 @@
 #define Bluetooth_icon_width 24
 #define Bluetooth_icon_height 24
 static unsigned char Bluetooth_icon_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x6c, 0x00,
-  0x10, 0xcc, 0x00, 0x30, 0x8c, 0x01, 0x60, 0x0c, 0x03, 0xc0, 0x0c, 0x06,
-  0x80, 0x0d, 0x03, 0x00, 0x8f, 0x01, 0x00, 0xce, 0x00, 0x00, 0x7c, 0x00,
-  0x00, 0x3c, 0x00, 0x00, 0x6e, 0x00, 0x00, 0xcf, 0x00, 0x80, 0x8d, 0x01,
-  0xc0, 0x0c, 0x03, 0x60, 0x0c, 0x06, 0x30, 0x0c, 0x03, 0x10, 0x8c, 0x01,
-  0x00, 0xcc, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x1c, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x38, 0x00,
+  0x00, 0x78, 0x00, 0x00, 0xd8, 0x00, 0x80, 0x98, 0x01, 0x80, 0x19, 0x03,
+  0x00, 0x9b, 0x01, 0x00, 0xde, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x38, 0x00,
+  0x00, 0x3c, 0x00, 0x00, 0x7e, 0x00, 0x00, 0xdb, 0x00, 0x80, 0x99, 0x01,
+  0x80, 0x18, 0x03, 0x00, 0x98, 0x01, 0x00, 0xd8, 0x00, 0x00, 0x78, 0x00,
+  0x00, 0x38, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   };
diff --git a/ui/bitmaps/Exit_icon.xbm b/ui/bitmaps/Exit_icon.xbm
new file mode 100644 (file)
index 0000000..02d1abb
--- /dev/null
@@ -0,0 +1,10 @@
+#define Exit_icon_width 24
+#define Exit_icon_height 24
+static unsigned char Exit_icon_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0xf0, 0xff, 0x03,
+  0x30, 0x0c, 0x03, 0x30, 0x0c, 0x03, 0x30, 0x0c, 0x03, 0x30, 0x0c, 0x01,
+  0x30, 0x0c, 0x02, 0x30, 0x0c, 0x03, 0x30, 0x8c, 0x03, 0x30, 0xcc, 0x1f,
+  0x30, 0xcc, 0x1f, 0x30, 0x8c, 0x03, 0x30, 0x0c, 0x03, 0x30, 0x06, 0x02,
+  0x30, 0x03, 0x01, 0xb0, 0x01, 0x03, 0xf0, 0x00, 0x03, 0x70, 0x00, 0x03,
+  0xf0, 0xff, 0x03, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  };
diff --git a/ui/bitmaps/Message_icon.xbm b/ui/bitmaps/Message_icon.xbm
new file mode 100644 (file)
index 0000000..3eb7bd5
--- /dev/null
@@ -0,0 +1,10 @@
+#define Message_icon_width 24
+#define Message_icon_height 24
+static unsigned char Message_icon_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x3f,
+  0xfc, 0xff, 0x3f, 0x3c, 0x00, 0x3c, 0x6c, 0x00, 0x36, 0xcc, 0x00, 0x33,
+  0x8c, 0x81, 0x31, 0x0c, 0xc3, 0x30, 0x0c, 0x66, 0x30, 0x0c, 0x3c, 0x30,
+  0x0c, 0x18, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30,
+  0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0xfc, 0xff, 0x3f, 0xfc, 0xff, 0x3f,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  };
diff --git a/ui/bitmaps/acc_icon.xbm b/ui/bitmaps/acc_icon.xbm
new file mode 100644 (file)
index 0000000..b8c4bb8
--- /dev/null
@@ -0,0 +1,10 @@
+#define acc_icon_width 24
+#define acc_icon_height 24
+static unsigned char acc_icon_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00,
+  0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x70, 0x00, 0x00,
+  0xa8, 0xe0, 0x00, 0x20, 0x40, 0x00, 0x20, 0xe0, 0x00, 0x20, 0x0e, 0x00,
+  0x20, 0x0c, 0x00, 0x20, 0x0a, 0x00, 0x20, 0x01, 0x00, 0xa0, 0x40, 0x00,
+  0x60, 0x80, 0x14, 0xf8, 0xff, 0x09, 0x30, 0x80, 0x14, 0x28, 0x40, 0x00,
+  0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  };
index 2ba8cc35a6b9d2eac66dc4b31830d739f0cb7e79..24fbdabca96116c442c8a442ec6dd689b2225ca7 100644 (file)
@@ -1,10 +1,10 @@
 #define alarm_icon_width 24
 #define alarm_icon_height 24
 static unsigned char alarm_icon_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x38,
-  0x1e, 0xff, 0x78, 0xce, 0xff, 0x73, 0xe6, 0x00, 0x67, 0x70, 0x18, 0x0e,
-  0x38, 0x18, 0x1c, 0x18, 0x18, 0x18, 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30,
-  0x0c, 0x18, 0x30, 0x0c, 0xf8, 0x31, 0x0c, 0xf8, 0x31, 0x0c, 0x00, 0x30,
-  0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x18, 0x00, 0x18, 0x38, 0x00, 0x1c,
-  0x70, 0x00, 0x0e, 0xe0, 0x00, 0x07, 0xc0, 0xff, 0x03, 0x00, 0xff, 0x00,
+  0x00, 0x00, 0x00, 0x1c, 0x00, 0x38, 0x1e, 0xff, 0x78, 0xce, 0xff, 0x73,
+  0xe6, 0x00, 0x67, 0x70, 0x18, 0x0e, 0x38, 0x18, 0x1c, 0x18, 0x18, 0x18,
+  0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, 0x0c, 0xf8, 0x31,
+  0x0c, 0xf8, 0x31, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30,
+  0x18, 0x00, 0x18, 0x38, 0x00, 0x1c, 0x70, 0x00, 0x0e, 0xe0, 0x00, 0x07,
+  0xc0, 0xff, 0x03, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   };
diff --git a/ui/bitmaps/checked_icon.xbm b/ui/bitmaps/checked_icon.xbm
new file mode 100644 (file)
index 0000000..ddb4610
--- /dev/null
@@ -0,0 +1,4 @@
+#define checked_icon_width 7
+#define checked_icon_height 7
+static unsigned char checked_icon_bits[] = {
+  0x7f, 0x41, 0x5d, 0x5d, 0x5d, 0x41, 0x7f, };
diff --git a/ui/bitmaps/enterbutton_icon.xbm b/ui/bitmaps/enterbutton_icon.xbm
new file mode 100644 (file)
index 0000000..a78da70
--- /dev/null
@@ -0,0 +1,7 @@
+#define enterbutton_icon_width 15
+#define enterbutton_icon_height 20
+static unsigned char enterbutton_icon_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x64, 0x00, 0x66, 0x00, 0x67, 0x80, 0x7f, 0x80, 0x7f, 0x00, 0x07,
+  0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, };
diff --git a/ui/bitmaps/exit_icon.xbm b/ui/bitmaps/exit_icon.xbm
new file mode 100644 (file)
index 0000000..18e6c46
--- /dev/null
@@ -0,0 +1,10 @@
+#define exit_icon_width 24
+#define exit_icon_height 24
+static unsigned char exit_icon_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0xf0, 0xff, 0x03,
+  0x30, 0x0c, 0x03, 0x30, 0x0c, 0x03, 0x30, 0x0c, 0x03, 0x30, 0x0c, 0x01,
+  0x30, 0x0c, 0x02, 0x30, 0x0c, 0x03, 0x30, 0x8c, 0x03, 0x30, 0xcc, 0x1f,
+  0x30, 0xcc, 0x1f, 0x30, 0x8c, 0x03, 0x30, 0x0c, 0x03, 0x30, 0x06, 0x02,
+  0x30, 0x03, 0x01, 0xb0, 0x01, 0x03, 0xf0, 0x00, 0x03, 0x70, 0x00, 0x03,
+  0xf0, 0xff, 0x03, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  };
diff --git a/ui/bitmaps/info_icon.xbm b/ui/bitmaps/info_icon.xbm
new file mode 100644 (file)
index 0000000..9b2c1c2
--- /dev/null
@@ -0,0 +1,10 @@
+#define info_icon_width 24
+#define info_icon_height 24
+static unsigned char info_icon_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xc0, 0xff, 0x03,
+  0xe0, 0x00, 0x07, 0x70, 0x1c, 0x0e, 0x38, 0x1c, 0x1c, 0x18, 0x1c, 0x18,
+  0x0c, 0x00, 0x30, 0x0c, 0x1c, 0x30, 0x0c, 0x1c, 0x30, 0x0c, 0x1c, 0x30,
+  0x0c, 0x1c, 0x30, 0x0c, 0x1c, 0x30, 0x0c, 0x1c, 0x30, 0x0c, 0x1c, 0x30,
+  0x18, 0x1c, 0x18, 0x38, 0x1c, 0x1c, 0x70, 0x00, 0x0e, 0xe0, 0x00, 0x07,
+  0xc0, 0xff, 0x03, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  };
diff --git a/ui/bitmaps/leftbutton_icon.xbm b/ui/bitmaps/leftbutton_icon.xbm
new file mode 100644 (file)
index 0000000..5853d90
--- /dev/null
@@ -0,0 +1,7 @@
+#define leftbutton_icon_width 15
+#define leftbutton_icon_height 20
+static unsigned char leftbutton_icon_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x04, 0x00, 0x06, 0x00, 0x07, 0x80, 0x7f, 0x80, 0x7f, 0x00, 0x07,
+  0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, };
diff --git a/ui/bitmaps/main_menu_icon.xbm b/ui/bitmaps/main_menu_icon.xbm
new file mode 100644 (file)
index 0000000..f106a24
--- /dev/null
@@ -0,0 +1,10 @@
+#define main_menu_icon_width 24
+#define main_menu_icon_height 24
+static unsigned char main_menu_icon_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f, 0xfc, 0xff, 0x3f,
+  0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30,
+  0xcc, 0xdd, 0x31, 0xcc, 0xdd, 0x31, 0xcc, 0xdd, 0x31, 0x0c, 0x00, 0x30,
+  0xcc, 0xdd, 0x31, 0xcc, 0xdd, 0x31, 0xcc, 0xdd, 0x31, 0x0c, 0x00, 0x30,
+  0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0xfc, 0xff, 0x3f,
+  0xf8, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  };
diff --git a/ui/bitmaps/message_icon.xbm b/ui/bitmaps/message_icon.xbm
new file mode 100644 (file)
index 0000000..5bff5fb
--- /dev/null
@@ -0,0 +1,10 @@
+#define message_icon_width 24
+#define message_icon_height 24
+static unsigned char message_icon_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0xfe, 0xff, 0x7f, 0x0e, 0x00, 0x70,
+  0x1e, 0x00, 0x78, 0x36, 0x00, 0x6c, 0x66, 0x00, 0x66, 0xc6, 0x00, 0x63,
+  0x86, 0x81, 0x61, 0x06, 0xc3, 0x60, 0x06, 0x66, 0x60, 0x06, 0x3c, 0x60,
+  0x06, 0x18, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60,
+  0xfe, 0xff, 0x7f, 0xfe, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  };
diff --git a/ui/bitmaps/rightbutton_icon.xbm b/ui/bitmaps/rightbutton_icon.xbm
new file mode 100644 (file)
index 0000000..48f9ac5
--- /dev/null
@@ -0,0 +1,7 @@
+#define rightbutton_icon_width 15
+#define rightbutton_icon_height 20
+static unsigned char rightbutton_icon_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x08, 0x00, 0x18, 0x00, 0x38, 0x80, 0x7f, 0x80, 0x7f, 0x00, 0x38,
+  0x00, 0x18, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, };
index 9282fb2033d3f3af41a1f75fe261b8352f51f67d..e3aa9cfb481a2964f8f2eea33393773436c1e937 100644 (file)
@@ -1,10 +1,10 @@
 #define stopwatch_icon_width 24
 #define stopwatch_icon_height 24
 static unsigned char stopwatch_icon_bits[] = {
-  0x00, 0x18, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x18,
-  0x00, 0xff, 0x3c, 0xc0, 0xff, 0x3f, 0xe0, 0x00, 0x1f, 0x70, 0x18, 0x0e,
-  0x38, 0x18, 0x1c, 0x18, 0x18, 0x18, 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30,
-  0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, 0x0c, 0x00, 0x30,
-  0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x18, 0x00, 0x18, 0x38, 0x00, 0x1c,
-  0x70, 0x00, 0x0e, 0xe0, 0x00, 0x07, 0xc0, 0xff, 0x03, 0x00, 0xff, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xff, 0x0c,
+  0xc0, 0xff, 0x1f, 0xe0, 0x00, 0x1f, 0x70, 0x18, 0x0e, 0x38, 0x18, 0x1c,
+  0x18, 0x18, 0x18, 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30,
+  0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30,
+  0x0c, 0x00, 0x30, 0x18, 0x00, 0x18, 0x38, 0x00, 0x1c, 0x70, 0x00, 0x0e,
+  0xe0, 0x00, 0x07, 0xc0, 0xff, 0x03, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00,
   };
diff --git a/ui/bitmaps/unchecked_icon.xbm b/ui/bitmaps/unchecked_icon.xbm
new file mode 100644 (file)
index 0000000..f750c04
--- /dev/null
@@ -0,0 +1,4 @@
+#define unchecked_icon_width 7
+#define unchecked_icon_height 7
+static unsigned char unchecked_icon_bits[] = {
+  0x7f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x7f, };
diff --git a/ui/fonts/DroidSans.h b/ui/fonts/DroidSans.h
new file mode 100644 (file)
index 0000000..9f4601f
--- /dev/null
@@ -0,0 +1,261 @@
+/* -FreeType-Droid Sans-Medium-R-Normal--8-60-96-96-P-44-ISO10646-1 */
+#define FONT_WIDTH_Droid SansMedium_13x14      13
+#define FONT_HEIGHT_Droid SansMedium_13x14     14
+const uint8_t FONT_DATA_Droid SansMedium_13x14[256][29] = {
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xc0,0x00,0xf0,0x01,0xf0,0x01,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x70,0x00,0x30,0x00,0x30,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x20,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x01,0xb0,0x00,0xb0,0x03,0x70,0x03,0x40,0x03,0x20,0x03,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0x60,0x00,0x50,0x02,0x90,0x01,0xf0,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x20,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x08,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x70,0x00,0x20,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0xe0,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x30,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x60,0x00,0x60,0x00,0x50,0x00,0xf0,0x00,0x40,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x40,0x00,0x40,0x00,0x30,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x10,0x00,0x70,0x00,0x50,0x00,0x50,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x50,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x50,0x00,0x50,0x00,0x70,0x00,0x40,0x00,0x30,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x30,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x20,0x00,0x60,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x10,0x02,0xd0,0x02,0xd0,0x02,0xd0,0x03,0x10,0x00,0xe0,0x01,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0xf0,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x10,0x00,0x10,0x00,0x90,0x01,0x10,0x01,0xe0,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0xf0,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x08,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x50,0x00,0x30,0x00,0x50,0x00,0x50,0x00,0x90,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x04,0x30,0x06,0x30,0x06,0x50,0x05,0x50,0x05,0x90,0x04,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x30,0x01,0x50,0x01,0x50,0x01,0x90,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x80,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x50,0x00,0x90,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x30,0x00,0x40,0x00,0x40,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0xa0,0x00,0xa0,0x00,0xa0,0x00,0x40,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x04,0x50,0x05,0x50,0x05,0x50,0x05,0x20,0x03,0x20,0x02,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x50,0x00,0x90,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x60,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x18,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x10,0x00,0x10,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0xe0,0x00,0x90,0x00,0x90,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x10,0x00,0x30,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x50,0x00,0x70,0x00,0xe0,0x00,0x90,0x00,0xf0,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0xf0,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x18,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x50,0x00,0x30,0x00,0x30,0x00,0x50,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x10,0x00,0x10,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x90,0x00,0x90,0x00,0xe0,0x00,0x80,0x00,0x80,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x30,0x00,0x40,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x30,0x00,0x10,0x00,0x10,0x00,0x30,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x01,0x50,0x01,0xb0,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x20,0x00,0x20,0x00,0x50,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x20,0x00,0x10,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x20,0x00,0x20,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x10,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x60,0x00,0x20,0x00,0x20,0x00,0x60,0x00,0x40,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x20,0x00,0x20,0x00,0x70,0x00,0x20,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x50,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x00,0x50,0x00,0x30,0x00,0x70,0x00,0x70,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x30,0x00,0x50,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0xd0,0x02,0x50,0x02,0xd0,0x02,0x10,0x02,0xe0,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x50,0x00,0x50,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0xd0,0x03,0xd0,0x02,0xd0,0x02,0x10,0x02,0xe0,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x50,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0xe0,0x00,0x40,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x20,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x40,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x10,0x00,0x10,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0xb0,0x00,0xb0,0x00,0xb0,0x00,0xc0,0x00,0xc0,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x50,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0xa0,0x00,0xa0,0x00,0x50,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0x00,0xa0,0x00,0x60,0x03,0xe0,0x02,0x20,0x03,0x20,0x02,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0x00,0xa0,0x00,0xe0,0x03,0x60,0x02,0x20,0x01,0xa0,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x01,0x40,0x01,0xc0,0x03,0xf0,0x02,0x40,0x03,0x40,0x02,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x10,0x00,0x10,0x00,0x70,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x80,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xc0,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,0xc0,0x00,0xa0,0x03,0xa0,0x00,0xf0,0x00,0x90,0x03,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0xe0,0x00,0x80,0x00,0x80,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x50,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x50,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x90,0x00,0xb8,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x80,0x00,0x00,0x00,0x10,0x01,0x30,0x01,0x50,0x01,0x50,0x01,0x90,0x01,0x10,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x80,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x40,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x90,0x01,0x50,0x01,0x50,0x01,0x30,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x88,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x70,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0x50,0x00,0x50,0x00,0x90,0x00,0xd0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x50,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x40,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x03,0x80,0x03,0xf0,0x00,0x70,0x03,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x10,0x00,0x10,0x00,0x60,0x00,0x40,0x00,0x40,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x50,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x60,0x00,0xe0,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x80,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x80,0x00,0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xd0,0x00,0xb0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0x00,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x20,0x00,0x10,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x10,0x00,0x10,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x20,0x00,0x10,0x00,},
+};
diff --git a/ui/fonts/DroidSans8x11.bdf b/ui/fonts/DroidSans8x11.bdf
new file mode 100644 (file)
index 0000000..d0deeb3
--- /dev/null
@@ -0,0 +1,2927 @@
+STARTFONT 2.1
+COMMENT Font converted from OTF to BDF.
+FONT -FreeType-Droid Sans-Medium-R-Normal--8-60-96-96-P-44-ISO10646-1
+SIZE 6 96 96
+FONTBOUNDINGBOX 8 10 -1 -2
+STARTPROPERTIES 19
+POINT_SIZE 60
+PIXEL_SIZE 8
+RESOLUTION_X 96
+RESOLUTION_Y 96
+FONT_ASCENT 7
+FONT_DESCENT 1
+AVERAGE_WIDTH 44
+SPACING "P"
+FOUNDRY "FreeType"
+FAMILY_NAME "Droid Sans"
+CHARSET_REGISTRY "ISO10646"
+CHARSET_ENCODING "1"
+WEIGHT_NAME "Medium"
+SLANT "R"
+SETWIDTH_NAME "Normal"
+COPYRIGHT "Digitized data copyright © 2007, Google Corporation."
+_TTF_PSNAME "DroidSans"
+_OTF_FONTFILE "DroidSans.ttf"
+_GBDFED_INFO "Edited with gbdfed 1.6."
+ENDPROPERTIES
+CHARS 256
+STARTCHAR char0
+ENCODING 0
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char1
+ENCODING 1
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char2
+ENCODING 2
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char3
+ENCODING 3
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char4
+ENCODING 4
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char5
+ENCODING 5
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char6
+ENCODING 6
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char7
+ENCODING 7
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char8
+ENCODING 8
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char9
+ENCODING 9
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char10
+ENCODING 10
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char11
+ENCODING 11
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char12
+ENCODING 12
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char13
+ENCODING 13
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char14
+ENCODING 14
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char15
+ENCODING 15
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char16
+ENCODING 16
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char17
+ENCODING 17
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char18
+ENCODING 18
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char19
+ENCODING 19
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char20
+ENCODING 20
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char21
+ENCODING 21
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char22
+ENCODING 22
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char23
+ENCODING 23
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char24
+ENCODING 24
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char25
+ENCODING 25
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char26
+ENCODING 26
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char27
+ENCODING 27
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char28
+ENCODING 28
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char29
+ENCODING 29
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char30
+ENCODING 30
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char31
+ENCODING 31
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char32
+ENCODING 32
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char33
+ENCODING 33
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 1 6 0 0
+BITMAP
+80
+80
+80
+80
+00
+80
+ENDCHAR
+STARTCHAR char34
+ENCODING 34
+SWIDTH 33 0
+DWIDTH 3 0
+BBX 2 2 1 4
+BITMAP
+C0
+C0
+ENDCHAR
+STARTCHAR char35
+ENCODING 35
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 5 6 0 0
+BITMAP
+30
+30
+F8
+F8
+60
+60
+ENDCHAR
+STARTCHAR char36
+ENCODING 36
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 8 0 -1
+BITMAP
+40
+E0
+C0
+C0
+60
+60
+E0
+40
+ENDCHAR
+STARTCHAR char37
+ENCODING 37
+SWIDTH 78 0
+DWIDTH 7 0
+BBX 6 6 0 0
+BITMAP
+C8
+D0
+DC
+EC
+2C
+4C
+ENDCHAR
+STARTCHAR char38
+ENCODING 38
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 6 6 0 0
+BITMAP
+F0
+90
+60
+A4
+98
+F8
+ENDCHAR
+STARTCHAR char39
+ENCODING 39
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 1 2 1 4
+BITMAP
+80
+80
+ENDCHAR
+STARTCHAR char40
+ENCODING 40
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 2 7 0 -1
+BITMAP
+40
+80
+80
+80
+80
+80
+40
+ENDCHAR
+STARTCHAR char41
+ENCODING 41
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 2 7 -1 -1
+BITMAP
+80
+40
+40
+40
+40
+40
+80
+ENDCHAR
+STARTCHAR char42
+ENCODING 42
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 4 0 2
+BITMAP
+40
+E0
+40
+A0
+ENDCHAR
+STARTCHAR char43
+ENCODING 43
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 4 1 1
+BITMAP
+40
+40
+E0
+40
+ENDCHAR
+STARTCHAR char44
+ENCODING 44
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 1 2 0 -1
+BITMAP
+80
+80
+ENDCHAR
+STARTCHAR char45
+ENCODING 45
+SWIDTH 33 0
+DWIDTH 3 0
+BBX 2 1 0 1
+BITMAP
+C0
+ENDCHAR
+STARTCHAR char46
+ENCODING 46
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 1 1 0 0
+BITMAP
+80
+ENDCHAR
+STARTCHAR char47
+ENCODING 47
+SWIDTH 33 0
+DWIDTH 3 0
+BBX 3 6 0 0
+BITMAP
+20
+20
+40
+40
+80
+80
+ENDCHAR
+STARTCHAR char48
+ENCODING 48
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+40
+A0
+A0
+A0
+A0
+40
+ENDCHAR
+STARTCHAR char49
+ENCODING 49
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 2 6 0 0
+BITMAP
+40
+C0
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR char50
+ENCODING 50
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+E0
+20
+20
+40
+40
+E0
+ENDCHAR
+STARTCHAR char51
+ENCODING 51
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+E0
+20
+40
+20
+20
+E0
+ENDCHAR
+STARTCHAR char52
+ENCODING 52
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+20
+60
+60
+A0
+F0
+20
+ENDCHAR
+STARTCHAR char53
+ENCODING 53
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+E0
+80
+E0
+20
+20
+C0
+ENDCHAR
+STARTCHAR char54
+ENCODING 54
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+60
+80
+E0
+A0
+A0
+60
+ENDCHAR
+STARTCHAR char55
+ENCODING 55
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+E0
+20
+20
+40
+40
+40
+ENDCHAR
+STARTCHAR char56
+ENCODING 56
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+E0
+A0
+A0
+40
+A0
+E0
+ENDCHAR
+STARTCHAR char57
+ENCODING 57
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+C0
+A0
+A0
+E0
+20
+C0
+ENDCHAR
+STARTCHAR char58
+ENCODING 58
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 1 4 0 0
+BITMAP
+80
+00
+00
+80
+ENDCHAR
+STARTCHAR char59
+ENCODING 59
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 1 5 0 -1
+BITMAP
+80
+00
+00
+80
+80
+ENDCHAR
+STARTCHAR char60
+ENCODING 60
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 4 0 1
+BITMAP
+20
+40
+C0
+20
+ENDCHAR
+STARTCHAR char61
+ENCODING 61
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 3 0 1
+BITMAP
+E0
+00
+E0
+ENDCHAR
+STARTCHAR char62
+ENCODING 62
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 4 0 1
+BITMAP
+80
+40
+60
+80
+ENDCHAR
+STARTCHAR char63
+ENCODING 63
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+E0
+20
+20
+40
+00
+40
+ENDCHAR
+STARTCHAR char64
+ENCODING 64
+SWIDTH 78 0
+DWIDTH 7 0
+BBX 6 7 0 -1
+BITMAP
+78
+84
+B4
+B4
+BC
+80
+78
+ENDCHAR
+STARTCHAR char65
+ENCODING 65
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+20
+50
+50
+70
+88
+88
+ENDCHAR
+STARTCHAR char66
+ENCODING 66
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 0
+BITMAP
+F0
+90
+F0
+90
+90
+F0
+ENDCHAR
+STARTCHAR char67
+ENCODING 67
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 0
+BITMAP
+70
+80
+80
+80
+80
+70
+ENDCHAR
+STARTCHAR char68
+ENCODING 68
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 0
+BITMAP
+E0
+90
+90
+90
+90
+E0
+ENDCHAR
+STARTCHAR char69
+ENCODING 69
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+E0
+80
+E0
+80
+80
+E0
+ENDCHAR
+STARTCHAR char70
+ENCODING 70
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+E0
+80
+E0
+80
+80
+80
+ENDCHAR
+STARTCHAR char71
+ENCODING 71
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+78
+80
+80
+98
+88
+78
+ENDCHAR
+STARTCHAR char72
+ENCODING 72
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+88
+88
+F8
+88
+88
+88
+ENDCHAR
+STARTCHAR char73
+ENCODING 73
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 1 6 1 0
+BITMAP
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR char74
+ENCODING 74
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 2 8 -1 -2
+BITMAP
+40
+40
+40
+40
+40
+40
+40
+80
+ENDCHAR
+STARTCHAR char75
+ENCODING 75
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 0
+BITMAP
+90
+A0
+C0
+A0
+A0
+90
+ENDCHAR
+STARTCHAR char76
+ENCODING 76
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+80
+80
+80
+80
+80
+F0
+ENDCHAR
+STARTCHAR char77
+ENCODING 77
+SWIDTH 1000 0
+DWIDTH 8 0
+BBX 7 6 0 0
+BITMAP
+82
+C6
+C6
+AA
+AA
+92
+ENDCHAR
+STARTCHAR char78
+ENCODING 78
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+88
+C8
+A8
+A8
+98
+88
+ENDCHAR
+STARTCHAR char79
+ENCODING 79
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+70
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR char80
+ENCODING 80
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 0
+BITMAP
+F0
+90
+90
+E0
+80
+80
+ENDCHAR
+STARTCHAR char81
+ENCODING 81
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 7 0 -1
+BITMAP
+70
+88
+88
+88
+88
+70
+10
+ENDCHAR
+STARTCHAR char82
+ENCODING 82
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 0
+BITMAP
+F0
+90
+90
+E0
+A0
+90
+ENDCHAR
+STARTCHAR char83
+ENCODING 83
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+E0
+80
+C0
+20
+20
+E0
+ENDCHAR
+STARTCHAR char84
+ENCODING 84
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+E0
+40
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR char85
+ENCODING 85
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR char86
+ENCODING 86
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+88
+88
+50
+50
+50
+20
+ENDCHAR
+STARTCHAR char87
+ENCODING 87
+SWIDTH 1000 0
+DWIDTH 8 0
+BBX 7 6 0 0
+BITMAP
+92
+AA
+AA
+AA
+4C
+44
+ENDCHAR
+STARTCHAR char88
+ENCODING 88
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 0
+BITMAP
+90
+60
+60
+60
+A0
+90
+ENDCHAR
+STARTCHAR char89
+ENCODING 89
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 5 6 -1 0
+BITMAP
+88
+50
+50
+20
+20
+20
+ENDCHAR
+STARTCHAR char90
+ENCODING 90
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 0
+BITMAP
+F0
+20
+20
+40
+40
+F0
+ENDCHAR
+STARTCHAR char91
+ENCODING 91
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 2 7 1 -1
+BITMAP
+C0
+80
+80
+80
+80
+80
+C0
+ENDCHAR
+STARTCHAR char92
+ENCODING 92
+SWIDTH 33 0
+DWIDTH 3 0
+BBX 3 6 0 0
+BITMAP
+80
+80
+40
+40
+20
+20
+ENDCHAR
+STARTCHAR char93
+ENCODING 93
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 2 7 -1 -1
+BITMAP
+C0
+40
+40
+40
+40
+40
+C0
+ENDCHAR
+STARTCHAR char94
+ENCODING 94
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 4 4 0 2
+BITMAP
+20
+60
+90
+90
+ENDCHAR
+STARTCHAR char95
+ENCODING 95
+SWIDTH 33 0
+DWIDTH 3 0
+BBX 3 1 0 -2
+BITMAP
+E0
+ENDCHAR
+STARTCHAR char96
+ENCODING 96
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 2 2 2 5
+BITMAP
+80
+40
+ENDCHAR
+STARTCHAR char97
+ENCODING 97
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 4 0 0
+BITMAP
+E0
+20
+E0
+E0
+ENDCHAR
+STARTCHAR char98
+ENCODING 98
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 0
+BITMAP
+80
+80
+E0
+90
+90
+E0
+ENDCHAR
+STARTCHAR char99
+ENCODING 99
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 4 0 0
+BITMAP
+60
+80
+80
+60
+ENDCHAR
+STARTCHAR char100
+ENCODING 100
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 0
+BITMAP
+10
+10
+70
+90
+90
+70
+ENDCHAR
+STARTCHAR char101
+ENCODING 101
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 4 0 0
+BITMAP
+E0
+E0
+80
+E0
+ENDCHAR
+STARTCHAR char102
+ENCODING 102
+SWIDTH 33 0
+DWIDTH 3 0
+BBX 2 6 0 0
+BITMAP
+C0
+80
+C0
+80
+80
+80
+ENDCHAR
+STARTCHAR char103
+ENCODING 103
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 4 6 0 -2
+BITMAP
+F0
+A0
+E0
+70
+90
+F0
+ENDCHAR
+STARTCHAR char104
+ENCODING 104
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 0
+BITMAP
+80
+80
+F0
+90
+90
+90
+ENDCHAR
+STARTCHAR char105
+ENCODING 105
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 1 6 0 0
+BITMAP
+80
+00
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR char106
+ENCODING 106
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 2 8 -1 -2
+BITMAP
+40
+00
+40
+40
+40
+40
+40
+C0
+ENDCHAR
+STARTCHAR char107
+ENCODING 107
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+80
+80
+A0
+C0
+C0
+A0
+ENDCHAR
+STARTCHAR char108
+ENCODING 108
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 1 6 0 0
+BITMAP
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR char109
+ENCODING 109
+SWIDTH 89 0
+DWIDTH 8 0
+BBX 7 4 0 0
+BITMAP
+EE
+92
+92
+92
+ENDCHAR
+STARTCHAR char110
+ENCODING 110
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 4 0 0
+BITMAP
+F0
+90
+90
+90
+ENDCHAR
+STARTCHAR char111
+ENCODING 111
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 4 0 0
+BITMAP
+60
+90
+90
+60
+ENDCHAR
+STARTCHAR char112
+ENCODING 112
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 -2
+BITMAP
+E0
+90
+90
+E0
+80
+80
+ENDCHAR
+STARTCHAR char113
+ENCODING 113
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 -2
+BITMAP
+70
+90
+90
+70
+10
+10
+ENDCHAR
+STARTCHAR char114
+ENCODING 114
+SWIDTH 33 0
+DWIDTH 3 0
+BBX 2 4 0 0
+BITMAP
+C0
+80
+80
+80
+ENDCHAR
+STARTCHAR char115
+ENCODING 115
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 4 0 0
+BITMAP
+E0
+C0
+20
+E0
+ENDCHAR
+STARTCHAR char116
+ENCODING 116
+SWIDTH 33 0
+DWIDTH 3 0
+BBX 2 5 0 0
+BITMAP
+80
+C0
+80
+80
+C0
+ENDCHAR
+STARTCHAR char117
+ENCODING 117
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 4 0 0
+BITMAP
+90
+90
+90
+F0
+ENDCHAR
+STARTCHAR char118
+ENCODING 118
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 4 0 0
+BITMAP
+A0
+A0
+A0
+40
+ENDCHAR
+STARTCHAR char119
+ENCODING 119
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 4 0 0
+BITMAP
+A8
+A8
+D0
+50
+ENDCHAR
+STARTCHAR char120
+ENCODING 120
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 4 0 0
+BITMAP
+A0
+40
+40
+A0
+ENDCHAR
+STARTCHAR char121
+ENCODING 121
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 -2
+BITMAP
+A0
+A0
+A0
+40
+40
+80
+ENDCHAR
+STARTCHAR char122
+ENCODING 122
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 4 0 0
+BITMAP
+E0
+40
+40
+E0
+ENDCHAR
+STARTCHAR char123
+ENCODING 123
+SWIDTH 33 0
+DWIDTH 3 0
+BBX 2 7 0 -1
+BITMAP
+40
+40
+40
+80
+40
+40
+40
+ENDCHAR
+STARTCHAR char124
+ENCODING 124
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 1 8 1 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR char125
+ENCODING 125
+SWIDTH 33 0
+DWIDTH 3 0
+BBX 2 7 1 -1
+BITMAP
+80
+80
+80
+40
+80
+80
+80
+ENDCHAR
+STARTCHAR char126
+ENCODING 126
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 2 0 1
+BITMAP
+80
+60
+ENDCHAR
+STARTCHAR char127
+ENCODING 127
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char128
+ENCODING 128
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char129
+ENCODING 129
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char130
+ENCODING 130
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char131
+ENCODING 131
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char132
+ENCODING 132
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char133
+ENCODING 133
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char134
+ENCODING 134
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char135
+ENCODING 135
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char136
+ENCODING 136
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char137
+ENCODING 137
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char138
+ENCODING 138
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char139
+ENCODING 139
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char140
+ENCODING 140
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char141
+ENCODING 141
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char142
+ENCODING 142
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char143
+ENCODING 143
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char144
+ENCODING 144
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char145
+ENCODING 145
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char146
+ENCODING 146
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char147
+ENCODING 147
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char148
+ENCODING 148
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char149
+ENCODING 149
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char150
+ENCODING 150
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char151
+ENCODING 151
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char152
+ENCODING 152
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char153
+ENCODING 153
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char154
+ENCODING 154
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char155
+ENCODING 155
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char156
+ENCODING 156
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char157
+ENCODING 157
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char158
+ENCODING 158
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char159
+ENCODING 159
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char160
+ENCODING 160
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char161
+ENCODING 161
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 1 6 0 -2
+BITMAP
+80
+00
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR char162
+ENCODING 162
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 2 6 1 0
+BITMAP
+40
+C0
+80
+80
+C0
+40
+ENDCHAR
+STARTCHAR char163
+ENCODING 163
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+60
+40
+40
+E0
+40
+E0
+ENDCHAR
+STARTCHAR char164
+ENCODING 164
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 3 0 1
+BITMAP
+E0
+A0
+E0
+ENDCHAR
+STARTCHAR char165
+ENCODING 165
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 5 6 -1 0
+BITMAP
+88
+50
+60
+70
+70
+20
+ENDCHAR
+STARTCHAR char166
+ENCODING 166
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 1 8 1 -2
+BITMAP
+80
+80
+80
+00
+00
+80
+80
+80
+ENDCHAR
+STARTCHAR char167
+ENCODING 167
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+E0
+C0
+A0
+E0
+20
+E0
+ENDCHAR
+STARTCHAR char168
+ENCODING 168
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 3 1 1 5
+BITMAP
+A0
+ENDCHAR
+STARTCHAR char169
+ENCODING 169
+SWIDTH 78 0
+DWIDTH 7 0
+BBX 6 6 0 0
+BITMAP
+78
+B4
+A4
+B4
+84
+78
+ENDCHAR
+STARTCHAR char170
+ENCODING 170
+SWIDTH 33 0
+DWIDTH 3 0
+BBX 3 3 0 3
+BITMAP
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR char171
+ENCODING 171
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 4 4 0 0
+BITMAP
+50
+A0
+A0
+50
+ENDCHAR
+STARTCHAR char172
+ENCODING 172
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 2 0 1
+BITMAP
+E0
+20
+ENDCHAR
+STARTCHAR char173
+ENCODING 173
+SWIDTH 33 0
+DWIDTH 3 0
+BBX 2 1 0 1
+BITMAP
+C0
+ENDCHAR
+STARTCHAR char174
+ENCODING 174
+SWIDTH 78 0
+DWIDTH 7 0
+BBX 6 6 0 0
+BITMAP
+78
+BC
+B4
+B4
+84
+78
+ENDCHAR
+STARTCHAR char175
+ENCODING 175
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 4 1 0 6
+BITMAP
+F0
+ENDCHAR
+STARTCHAR char176
+ENCODING 176
+SWIDTH 33 0
+DWIDTH 3 0
+BBX 3 3 0 3
+BITMAP
+E0
+A0
+E0
+ENDCHAR
+STARTCHAR char177
+ENCODING 177
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 5 1 0
+BITMAP
+40
+40
+E0
+40
+E0
+ENDCHAR
+STARTCHAR char178
+ENCODING 178
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 4 0 2
+BITMAP
+E0
+20
+40
+C0
+ENDCHAR
+STARTCHAR char179
+ENCODING 179
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 4 0 2
+BITMAP
+E0
+20
+20
+E0
+ENDCHAR
+STARTCHAR char180
+ENCODING 180
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 2 2 2 5
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR char181
+ENCODING 181
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 -2
+BITMAP
+90
+90
+90
+F0
+80
+80
+ENDCHAR
+STARTCHAR char182
+ENCODING 182
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 -1
+BITMAP
+F0
+D0
+D0
+D0
+30
+30
+ENDCHAR
+STARTCHAR char183
+ENCODING 183
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 1 1 0 2
+BITMAP
+80
+ENDCHAR
+STARTCHAR char184
+ENCODING 184
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 1 2 1 -2
+BITMAP
+80
+80
+ENDCHAR
+STARTCHAR char185
+ENCODING 185
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 2 4 0 2
+BITMAP
+C0
+40
+40
+40
+ENDCHAR
+STARTCHAR char186
+ENCODING 186
+SWIDTH 33 0
+DWIDTH 3 0
+BBX 3 3 0 3
+BITMAP
+E0
+A0
+E0
+ENDCHAR
+STARTCHAR char187
+ENCODING 187
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 4 4 0 0
+BITMAP
+A0
+50
+50
+A0
+ENDCHAR
+STARTCHAR char188
+ENCODING 188
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 6 6 0 0
+BITMAP
+D0
+50
+6C
+74
+4C
+44
+ENDCHAR
+STARTCHAR char189
+ENCODING 189
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 6 6 0 0
+BITMAP
+D0
+50
+7C
+64
+48
+58
+ENDCHAR
+STARTCHAR char190
+ENCODING 190
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 6 6 0 0
+BITMAP
+E8
+28
+3C
+F4
+2C
+24
+ENDCHAR
+STARTCHAR char191
+ENCODING 191
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 -2
+BITMAP
+40
+00
+40
+80
+80
+E0
+ENDCHAR
+STARTCHAR char192
+ENCODING 192
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+00
+20
+50
+50
+70
+88
+88
+ENDCHAR
+STARTCHAR char193
+ENCODING 193
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+00
+20
+50
+50
+70
+88
+88
+ENDCHAR
+STARTCHAR char194
+ENCODING 194
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+00
+20
+50
+50
+70
+88
+88
+ENDCHAR
+STARTCHAR char195
+ENCODING 195
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+60
+10
+00
+20
+50
+50
+70
+88
+88
+ENDCHAR
+STARTCHAR char196
+ENCODING 196
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+00
+20
+50
+50
+70
+88
+88
+ENDCHAR
+STARTCHAR char197
+ENCODING 197
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+30
+30
+50
+50
+70
+88
+88
+ENDCHAR
+STARTCHAR char198
+ENCODING 198
+SWIDTH 78 0
+DWIDTH 7 0
+BBX 6 6 0 0
+BITMAP
+3C
+30
+5C
+50
+F0
+9C
+ENDCHAR
+STARTCHAR char199
+ENCODING 199
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 8 0 -2
+BITMAP
+70
+80
+80
+80
+80
+70
+10
+10
+ENDCHAR
+STARTCHAR char200
+ENCODING 200
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 9 0 0
+BITMAP
+40
+20
+00
+E0
+80
+E0
+80
+80
+E0
+ENDCHAR
+STARTCHAR char201
+ENCODING 201
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 9 0 0
+BITMAP
+20
+40
+00
+E0
+80
+E0
+80
+80
+E0
+ENDCHAR
+STARTCHAR char202
+ENCODING 202
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 9 0 0
+BITMAP
+40
+A0
+00
+E0
+80
+E0
+80
+80
+E0
+ENDCHAR
+STARTCHAR char203
+ENCODING 203
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 8 0 0
+BITMAP
+A0
+00
+E0
+80
+E0
+80
+80
+E0
+ENDCHAR
+STARTCHAR char204
+ENCODING 204
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 2 9 0 0
+BITMAP
+80
+40
+00
+40
+40
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR char205
+ENCODING 205
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 2 9 1 0
+BITMAP
+40
+80
+00
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR char206
+ENCODING 206
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 9 0 0
+BITMAP
+40
+A0
+00
+40
+40
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR char207
+ENCODING 207
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 8 0 0
+BITMAP
+A0
+00
+40
+40
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR char208
+ENCODING 208
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 5 6 -1 0
+BITMAP
+70
+48
+E8
+48
+48
+70
+ENDCHAR
+STARTCHAR char209
+ENCODING 209
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+60
+10
+00
+88
+C8
+A8
+A8
+98
+88
+ENDCHAR
+STARTCHAR char210
+ENCODING 210
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+00
+70
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR char211
+ENCODING 211
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+00
+70
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR char212
+ENCODING 212
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+00
+70
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR char213
+ENCODING 213
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+60
+10
+00
+70
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR char214
+ENCODING 214
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+00
+70
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR char215
+ENCODING 215
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 3 1 1
+BITMAP
+A0
+40
+A0
+ENDCHAR
+STARTCHAR char216
+ENCODING 216
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+70
+98
+A8
+A8
+C8
+70
+ENDCHAR
+STARTCHAR char217
+ENCODING 217
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+00
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR char218
+ENCODING 218
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+00
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR char219
+ENCODING 219
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+00
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR char220
+ENCODING 220
+SWIDTH 67 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+00
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR char221
+ENCODING 221
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 5 9 -1 0
+BITMAP
+10
+20
+00
+88
+50
+50
+20
+20
+20
+ENDCHAR
+STARTCHAR char222
+ENCODING 222
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 0
+BITMAP
+80
+E0
+90
+90
+E0
+80
+ENDCHAR
+STARTCHAR char223
+ENCODING 223
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 0
+BITMAP
+F0
+90
+A0
+A0
+90
+B0
+ENDCHAR
+STARTCHAR char224
+ENCODING 224
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 7 0 0
+BITMAP
+40
+20
+00
+E0
+20
+E0
+E0
+ENDCHAR
+STARTCHAR char225
+ENCODING 225
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 7 0 0
+BITMAP
+20
+40
+00
+E0
+20
+E0
+E0
+ENDCHAR
+STARTCHAR char226
+ENCODING 226
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 7 0 0
+BITMAP
+40
+A0
+00
+E0
+20
+E0
+E0
+ENDCHAR
+STARTCHAR char227
+ENCODING 227
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 7 0 0
+BITMAP
+C0
+20
+00
+E0
+20
+E0
+E0
+ENDCHAR
+STARTCHAR char228
+ENCODING 228
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+A0
+00
+E0
+20
+E0
+E0
+ENDCHAR
+STARTCHAR char229
+ENCODING 229
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 7 0 0
+BITMAP
+60
+60
+00
+E0
+20
+E0
+E0
+ENDCHAR
+STARTCHAR char230
+ENCODING 230
+SWIDTH 78 0
+DWIDTH 7 0
+BBX 6 4 0 0
+BITMAP
+EC
+1C
+F0
+EC
+ENDCHAR
+STARTCHAR char231
+ENCODING 231
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 -2
+BITMAP
+60
+80
+80
+60
+20
+20
+ENDCHAR
+STARTCHAR char232
+ENCODING 232
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 7 0 0
+BITMAP
+40
+20
+00
+E0
+E0
+80
+E0
+ENDCHAR
+STARTCHAR char233
+ENCODING 233
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 7 0 0
+BITMAP
+20
+40
+00
+E0
+E0
+80
+E0
+ENDCHAR
+STARTCHAR char234
+ENCODING 234
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 7 0 0
+BITMAP
+40
+A0
+00
+E0
+E0
+80
+E0
+ENDCHAR
+STARTCHAR char235
+ENCODING 235
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+A0
+00
+E0
+E0
+80
+E0
+ENDCHAR
+STARTCHAR char236
+ENCODING 236
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 2 7 -1 0
+BITMAP
+80
+40
+00
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR char237
+ENCODING 237
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 2 7 0 0
+BITMAP
+40
+80
+00
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR char238
+ENCODING 238
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 3 7 -1 0
+BITMAP
+40
+A0
+00
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR char239
+ENCODING 239
+SWIDTH 22 0
+DWIDTH 2 0
+BBX 3 6 -1 0
+BITMAP
+A0
+00
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR char240
+ENCODING 240
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 0
+BITMAP
+50
+60
+70
+90
+90
+60
+ENDCHAR
+STARTCHAR char241
+ENCODING 241
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 7 0 0
+BITMAP
+60
+10
+00
+F0
+90
+90
+90
+ENDCHAR
+STARTCHAR char242
+ENCODING 242
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 7 0 0
+BITMAP
+40
+20
+00
+60
+90
+90
+60
+ENDCHAR
+STARTCHAR char243
+ENCODING 243
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 7 0 0
+BITMAP
+10
+20
+00
+60
+90
+90
+60
+ENDCHAR
+STARTCHAR char244
+ENCODING 244
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 7 0 0
+BITMAP
+20
+50
+00
+60
+90
+90
+60
+ENDCHAR
+STARTCHAR char245
+ENCODING 245
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 7 0 0
+BITMAP
+60
+10
+00
+60
+90
+90
+60
+ENDCHAR
+STARTCHAR char246
+ENCODING 246
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 0
+BITMAP
+50
+00
+60
+90
+90
+60
+ENDCHAR
+STARTCHAR char247
+ENCODING 247
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 5 1 0
+BITMAP
+40
+00
+E0
+00
+40
+ENDCHAR
+STARTCHAR char248
+ENCODING 248
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 4 0 0
+BITMAP
+60
+B0
+D0
+60
+ENDCHAR
+STARTCHAR char249
+ENCODING 249
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 7 0 0
+BITMAP
+40
+20
+00
+90
+90
+90
+F0
+ENDCHAR
+STARTCHAR char250
+ENCODING 250
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 7 0 0
+BITMAP
+10
+20
+00
+90
+90
+90
+F0
+ENDCHAR
+STARTCHAR char251
+ENCODING 251
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 7 0 0
+BITMAP
+20
+50
+00
+90
+90
+90
+F0
+ENDCHAR
+STARTCHAR char252
+ENCODING 252
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 6 0 0
+BITMAP
+50
+00
+90
+90
+90
+F0
+ENDCHAR
+STARTCHAR char253
+ENCODING 253
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 9 0 -2
+BITMAP
+20
+40
+00
+A0
+A0
+A0
+40
+40
+80
+ENDCHAR
+STARTCHAR char254
+ENCODING 254
+SWIDTH 56 0
+DWIDTH 5 0
+BBX 4 8 0 -2
+BITMAP
+80
+80
+E0
+90
+90
+E0
+80
+80
+ENDCHAR
+STARTCHAR char255
+ENCODING 255
+SWIDTH 44 0
+DWIDTH 4 0
+BBX 3 8 0 -2
+BITMAP
+A0
+00
+A0
+A0
+A0
+40
+40
+80
+ENDCHAR
+ENDFONT
diff --git a/ui/fonts/DroidSans8x11.h b/ui/fonts/DroidSans8x11.h
new file mode 100644 (file)
index 0000000..7edc451
--- /dev/null
@@ -0,0 +1,261 @@
+/* -FreeType-Droid Sans-Medium-R-Normal--8-60-96-96-P-44-ISO10646-1 */
+#define FONT_WIDTH_Droid_SansMedium_8x11       8
+#define FONT_HEIGHT_Droid_SansMedium_8x11      11
+const uint8_t FONT_DATA_Droid_SansMedium_8x11[256][12] = {
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x00,0x02,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x0c,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x18,0x18,0x3e,0x3e,0x0c,0x0c,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x04,0x0e,0x06,0x06,0x0c,0x0c,0x0e,0x04,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x26,0x16,0x76,0x6e,0x68,0x64,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x1e,0x12,0x0c,0x4a,0x32,0x3e,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x04,0x02,0x02,0x02,0x02,0x02,0x04,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x04,0x0e,0x04,0x0a,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x08,0x08,0x1c,0x08,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x08,0x08,0x04,0x04,0x02,0x02,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x04,0x0a,0x0a,0x0a,0x0a,0x04,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x04,0x06,0x04,0x04,0x04,0x04,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x08,0x04,0x04,0x0e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x04,0x08,0x08,0x0e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x08,0x0c,0x0c,0x0a,0x1e,0x08,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x0e,0x02,0x0e,0x08,0x08,0x06,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x0c,0x02,0x0e,0x0a,0x0a,0x0c,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x08,0x04,0x04,0x04,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x0e,0x0a,0x0a,0x04,0x0a,0x0e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x06,0x0a,0x0a,0x0e,0x08,0x06,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x02,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x02,0x02,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x08,0x04,0x06,0x08,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x02,0x04,0x0c,0x02,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x08,0x04,0x00,0x04,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x3c,0x42,0x5a,0x5a,0x7a,0x02,0x3c,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x08,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x1e,0x12,0x1e,0x12,0x12,0x1e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x1c,0x02,0x02,0x02,0x02,0x1c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x0e,0x12,0x12,0x12,0x12,0x0e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x0e,0x02,0x0e,0x02,0x02,0x0e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x0e,0x02,0x0e,0x02,0x02,0x02,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x3c,0x02,0x02,0x32,0x22,0x3c,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x22,0x22,0x3e,0x22,0x22,0x22,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,},
+{/*w*/5,0x00,0x00,0x00,0x12,0x0a,0x06,0x0a,0x0a,0x12,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x1e,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0x82,0xc6,0xc6,0xaa,0xaa,0x92,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x22,0x26,0x2a,0x2a,0x32,0x22,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x1e,0x12,0x12,0x0e,0x02,0x02,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x10,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x1e,0x12,0x12,0x0e,0x0a,0x12,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x0e,0x02,0x06,0x08,0x08,0x0e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x0e,0x04,0x04,0x04,0x04,0x04,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x22,0x22,0x14,0x14,0x14,0x08,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0x92,0xaa,0xaa,0xaa,0x64,0x44,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x12,0x0c,0x0c,0x0c,0x0a,0x12,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x11,0x0a,0x0a,0x04,0x04,0x04,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x1e,0x08,0x08,0x04,0x04,0x1e,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x0c,0x04,0x04,0x04,0x04,0x04,0x0c,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x02,0x02,0x04,0x04,0x08,0x08,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x08,0x0c,0x12,0x12,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,},
+{/*w*/5,0x00,0x00,0x08,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x02,0x02,0x0e,0x12,0x12,0x0e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0c,0x02,0x02,0x0c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x10,0x10,0x1c,0x12,0x12,0x1c,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x0e,0x02,0x0e,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x06,0x02,0x06,0x02,0x02,0x02,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x1e,0x0a,0x0e,0x1c,0x12,0x1e,},
+{/*w*/5,0x00,0x00,0x00,0x02,0x02,0x1e,0x12,0x12,0x12,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x02,0x00,0x02,0x02,0x02,0x02,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x03,},
+{/*w*/4,0x00,0x00,0x00,0x02,0x02,0x0a,0x06,0x06,0x0a,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0x00,0x00,0xee,0x92,0x92,0x92,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1e,0x12,0x12,0x12,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x0e,0x12,0x12,0x0e,0x02,0x02,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1c,0x12,0x12,0x1c,0x10,0x10,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x06,0x02,0x02,0x02,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x06,0x08,0x0e,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x02,0x06,0x02,0x02,0x06,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x12,0x12,0x12,0x1e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0a,0x0a,0x0a,0x04,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x2a,0x2a,0x16,0x14,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0a,0x04,0x04,0x0a,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0a,0x0a,0x0a,0x04,0x04,0x02,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x04,0x04,0x0e,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x04,0x04,0x04,0x02,0x04,0x04,0x04,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,},
+{/*w*/3,0x00,0x00,0x00,0x04,0x04,0x04,0x08,0x04,0x04,0x04,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x0c,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x02,0x02,0x02,},
+{/*w*/4,0x00,0x00,0x00,0x08,0x0c,0x04,0x04,0x0c,0x08,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x0c,0x04,0x04,0x0e,0x04,0x0e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x0a,0x0e,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x11,0x0a,0x06,0x0e,0x0e,0x04,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x04,0x04,0x04,},
+{/*w*/4,0x00,0x00,0x00,0x0e,0x06,0x0a,0x0e,0x08,0x0e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x3c,0x5a,0x4a,0x5a,0x42,0x3c,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x0e,0x0e,0x0e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x14,0x0a,0x0a,0x14,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x08,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x3c,0x7a,0x5a,0x5a,0x42,0x3c,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x0e,0x0a,0x0e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x08,0x08,0x1c,0x08,0x1c,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x04,0x06,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x08,0x0e,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x12,0x12,0x12,0x1e,0x02,0x02,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x1e,0x16,0x16,0x16,0x18,0x18,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,},
+{/*w*/4,0x00,0x00,0x00,0x06,0x04,0x04,0x04,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x0e,0x0a,0x0e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0a,0x14,0x14,0x0a,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x16,0x14,0x6c,0x5c,0x64,0x44,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x16,0x14,0x7c,0x4c,0x24,0x34,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x2e,0x28,0x78,0x5e,0x68,0x48,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x02,0x02,0x0e,},
+{/*w*/6,0x04,0x08,0x00,0x08,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,},
+{/*w*/6,0x10,0x08,0x00,0x08,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,},
+{/*w*/6,0x08,0x14,0x00,0x08,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,},
+{/*w*/6,0x0c,0x10,0x00,0x08,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,},
+{/*w*/6,0x00,0x14,0x00,0x08,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x18,0x18,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x78,0x18,0x74,0x14,0x1e,0x72,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x1c,0x02,0x02,0x02,0x02,0x1c,0x10,0x10,},
+{/*w*/4,0x04,0x08,0x00,0x0e,0x02,0x0e,0x02,0x02,0x0e,0x00,0x00,},
+{/*w*/4,0x08,0x04,0x00,0x0e,0x02,0x0e,0x02,0x02,0x0e,0x00,0x00,},
+{/*w*/4,0x04,0x0a,0x00,0x0e,0x02,0x0e,0x02,0x02,0x0e,0x00,0x00,},
+{/*w*/4,0x00,0x0a,0x00,0x0e,0x02,0x0e,0x02,0x02,0x0e,0x00,0x00,},
+{/*w*/4,0x02,0x04,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,},
+{/*w*/4,0x08,0x04,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,},
+{/*w*/4,0x04,0x0a,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,},
+{/*w*/4,0x00,0x0a,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x0e,0x12,0x17,0x12,0x12,0x0e,0x00,0x00,},
+{/*w*/6,0x0c,0x10,0x00,0x22,0x26,0x2a,0x2a,0x32,0x22,0x00,0x00,},
+{/*w*/6,0x04,0x08,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,},
+{/*w*/6,0x10,0x08,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,},
+{/*w*/6,0x08,0x14,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,},
+{/*w*/6,0x0c,0x10,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,},
+{/*w*/6,0x00,0x14,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x14,0x08,0x14,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x1c,0x32,0x2a,0x2a,0x26,0x1c,0x00,0x00,},
+{/*w*/6,0x04,0x08,0x00,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,},
+{/*w*/6,0x10,0x08,0x00,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,},
+{/*w*/6,0x08,0x14,0x00,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,},
+{/*w*/6,0x00,0x14,0x00,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,},
+{/*w*/4,0x08,0x04,0x00,0x11,0x0a,0x0a,0x04,0x04,0x04,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x02,0x0e,0x12,0x12,0x0e,0x02,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x1e,0x12,0x0a,0x0a,0x12,0x1a,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x04,0x08,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x08,0x04,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x04,0x0a,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x06,0x08,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x0a,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x0c,0x0c,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x6e,0x70,0x1e,0x6e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0c,0x02,0x02,0x0c,0x08,0x08,},
+{/*w*/4,0x00,0x00,0x04,0x08,0x00,0x0e,0x0e,0x02,0x0e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x08,0x04,0x00,0x0e,0x0e,0x02,0x0e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x04,0x0a,0x00,0x0e,0x0e,0x02,0x0e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x0a,0x00,0x0e,0x0e,0x02,0x0e,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x01,0x02,0x00,0x02,0x02,0x02,0x02,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x04,0x02,0x00,0x02,0x02,0x02,0x02,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x02,0x05,0x00,0x02,0x02,0x02,0x02,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x05,0x00,0x02,0x02,0x02,0x02,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x14,0x0c,0x1c,0x12,0x12,0x0c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x0c,0x10,0x00,0x1e,0x12,0x12,0x12,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x04,0x08,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x10,0x08,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x08,0x14,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x0c,0x10,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x14,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x08,0x00,0x1c,0x00,0x08,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x0c,0x1a,0x16,0x0c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x04,0x08,0x00,0x12,0x12,0x12,0x1e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x10,0x08,0x00,0x12,0x12,0x12,0x1e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x08,0x14,0x00,0x12,0x12,0x12,0x1e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x14,0x00,0x12,0x12,0x12,0x1e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x08,0x04,0x00,0x0a,0x0a,0x0a,0x04,0x04,0x02,},
+{/*w*/5,0x00,0x00,0x00,0x02,0x02,0x0e,0x12,0x12,0x0e,0x02,0x02,},
+{/*w*/4,0x00,0x00,0x00,0x0a,0x00,0x0a,0x0a,0x0a,0x04,0x04,0x02,},
+};
diff --git a/ui/fonts/DroidSansBold8x12.bdf b/ui/fonts/DroidSansBold8x12.bdf
new file mode 100644 (file)
index 0000000..d32ecdf
--- /dev/null
@@ -0,0 +1,3090 @@
+STARTFONT 2.1
+COMMENT Font converted from OTF to BDF.
+FONT -FreeType-Droid_Sans-Bold-R-Normal--9-70-96-96-P-49-ISO10646-1
+SIZE 7 96 96
+FONTBOUNDINGBOX 8 12 -1 -2
+STARTPROPERTIES 19
+POINT_SIZE 70
+PIXEL_SIZE 9
+RESOLUTION_X 96
+RESOLUTION_Y 96
+FONT_ASCENT 8
+FONT_DESCENT 2
+AVERAGE_WIDTH 49
+SPACING "P"
+FOUNDRY "FreeType"
+FAMILY_NAME "Droid_Sans"
+CHARSET_REGISTRY "ISO10646"
+CHARSET_ENCODING "1"
+WEIGHT_NAME "Bold"
+SLANT "R"
+SETWIDTH_NAME "Normal"
+COPYRIGHT "Digitized data copyright © 2007, Google Corporation."
+_TTF_PSNAME "DroidSans"
+_OTF_FONTFILE "DroidSans.ttf"
+_GBDFED_INFO "Edited with gbdfed 1.6."
+ENDPROPERTIES
+CHARS 256
+STARTCHAR char0
+ENCODING 0
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 1
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 2
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 3
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 4
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 5
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 6
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 7
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 8
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 9
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 10
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 11
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 12
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 13
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 14
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 15
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 16
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 17
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 18
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 19
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 20
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 21
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 22
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 23
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 24
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 25
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 26
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 27
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 28
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 29
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 30
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 31
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char32
+ENCODING 32
+SWIDTH 214 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char33
+ENCODING 33
+SWIDTH 214 0
+DWIDTH 2 0
+BBX 2 7 0 0
+BITMAP
+C0
+C0
+C0
+C0
+C0
+00
+C0
+ENDCHAR
+STARTCHAR char34
+ENCODING 34
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 2 0 5
+BITMAP
+F0
+F0
+ENDCHAR
+STARTCHAR char35
+ENCODING 35
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 7 7 0 0
+BITMAP
+3C
+3C
+FE
+6C
+FE
+78
+78
+ENDCHAR
+STARTCHAR char36
+ENCODING 36
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 9 0 -1
+BITMAP
+30
+78
+F0
+F0
+70
+78
+78
+F0
+60
+ENDCHAR
+STARTCHAR char37
+ENCODING 37
+SWIDTH 857 0
+DWIDTH 8 0
+BBX 8 7 0 0
+BITMAP
+F6
+FC
+FC
+FF
+3F
+3F
+6F
+ENDCHAR
+STARTCHAR char38
+ENCODING 38
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 7 7 0 0
+BITMAP
+F8
+D8
+F0
+60
+F6
+DC
+7C
+ENDCHAR
+STARTCHAR char39
+ENCODING 39
+SWIDTH 214 0
+DWIDTH 2 0
+BBX 2 2 0 5
+BITMAP
+C0
+C0
+ENDCHAR
+STARTCHAR char40
+ENCODING 40
+SWIDTH 321 0
+DWIDTH 3 0
+BBX 3 8 0 -1
+BITMAP
+60
+C0
+C0
+C0
+C0
+C0
+C0
+60
+ENDCHAR
+STARTCHAR char41
+ENCODING 41
+SWIDTH 321 0
+DWIDTH 3 0
+BBX 3 8 0 -1
+BITMAP
+C0
+60
+60
+60
+60
+60
+60
+C0
+ENDCHAR
+STARTCHAR char42
+ENCODING 42
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 4 0 3
+BITMAP
+30
+FC
+30
+78
+ENDCHAR
+STARTCHAR char43
+ENCODING 43
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 4 0 2
+BITMAP
+30
+30
+F8
+30
+ENDCHAR
+STARTCHAR char44
+ENCODING 44
+SWIDTH 214 0
+DWIDTH 2 0
+BBX 2 2 0 -1
+BITMAP
+C0
+C0
+ENDCHAR
+STARTCHAR char45
+ENCODING 45
+SWIDTH 321 0
+DWIDTH 3 0
+BBX 3 1 0 2
+BITMAP
+E0
+ENDCHAR
+STARTCHAR char46
+ENCODING 46
+SWIDTH 214 0
+DWIDTH 2 0
+BBX 2 1 0 0
+BITMAP
+C0
+ENDCHAR
+STARTCHAR char47
+ENCODING 47
+SWIDTH 321 0
+DWIDTH 3 0
+BBX 4 7 0 0
+BITMAP
+30
+30
+60
+60
+60
+C0
+C0
+ENDCHAR
+STARTCHAR char48
+ENCODING 48
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+70
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR char49
+ENCODING 49
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 4 7 0 0
+BITMAP
+70
+F0
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR char50
+ENCODING 50
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+F0
+18
+18
+30
+30
+60
+F8
+ENDCHAR
+STARTCHAR char51
+ENCODING 51
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+F8
+18
+18
+70
+18
+18
+F0
+ENDCHAR
+STARTCHAR char52
+ENCODING 52
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 6 7 0 0
+BITMAP
+18
+38
+78
+D8
+FC
+18
+18
+ENDCHAR
+STARTCHAR char53
+ENCODING 53
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+F8
+C0
+C0
+F0
+18
+18
+F0
+ENDCHAR
+STARTCHAR char54
+ENCODING 54
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+78
+C0
+C0
+F8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR char55
+ENCODING 55
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+F8
+18
+30
+30
+30
+60
+60
+ENDCHAR
+STARTCHAR char56
+ENCODING 56
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+F8
+D8
+D8
+70
+D8
+D8
+70
+ENDCHAR
+STARTCHAR char57
+ENCODING 57
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+70
+D8
+D8
+F8
+18
+18
+F0
+ENDCHAR
+STARTCHAR char58
+ENCODING 58
+SWIDTH 214 0
+DWIDTH 2 0
+BBX 2 5 0 0
+BITMAP
+C0
+00
+00
+00
+C0
+ENDCHAR
+STARTCHAR char59
+ENCODING 59
+SWIDTH 214 0
+DWIDTH 2 0
+BBX 2 6 0 -1
+BITMAP
+C0
+00
+00
+00
+C0
+C0
+ENDCHAR
+STARTCHAR char60
+ENCODING 60
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 5 0 1
+BITMAP
+18
+70
+C0
+70
+18
+ENDCHAR
+STARTCHAR char61
+ENCODING 61
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 3 0 2
+BITMAP
+F8
+00
+F8
+ENDCHAR
+STARTCHAR char62
+ENCODING 62
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 5 0 1
+BITMAP
+C0
+70
+18
+70
+C0
+ENDCHAR
+STARTCHAR char63
+ENCODING 63
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 7 0 0
+BITMAP
+F0
+30
+30
+60
+60
+00
+60
+ENDCHAR
+STARTCHAR char64
+ENCODING 64
+SWIDTH 857 0
+DWIDTH 8 0
+BBX 8 8 0 -1
+BITMAP
+3E
+63
+DF
+FF
+FF
+FE
+C0
+7C
+ENDCHAR
+STARTCHAR char65
+ENCODING 65
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+30
+78
+78
+78
+78
+CC
+CC
+ENDCHAR
+STARTCHAR char66
+ENCODING 66
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+F8
+D8
+D8
+F0
+D8
+D8
+F0
+ENDCHAR
+STARTCHAR char67
+ENCODING 67
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+78
+C0
+C0
+C0
+C0
+C0
+78
+ENDCHAR
+STARTCHAR char68
+ENCODING 68
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+F8
+CC
+CC
+CC
+CC
+DC
+F8
+ENDCHAR
+STARTCHAR char69
+ENCODING 69
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+F8
+C0
+C0
+F8
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR char70
+ENCODING 70
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+F8
+C0
+C0
+F8
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char71
+ENCODING 71
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+7C
+C0
+C0
+DC
+CC
+CC
+7C
+ENDCHAR
+STARTCHAR char72
+ENCODING 72
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+CC
+CC
+CC
+FC
+CC
+CC
+CC
+ENDCHAR
+STARTCHAR char73
+ENCODING 73
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 3 7 0 0
+BITMAP
+E0
+60
+60
+60
+60
+60
+E0
+ENDCHAR
+STARTCHAR char74
+ENCODING 74
+SWIDTH 321 0
+DWIDTH 3 0
+BBX 4 9 -1 -2
+BITMAP
+30
+30
+30
+30
+30
+30
+30
+30
+E0
+ENDCHAR
+STARTCHAR char75
+ENCODING 75
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 6 7 0 0
+BITMAP
+CC
+D8
+F0
+F0
+F0
+D8
+CC
+ENDCHAR
+STARTCHAR char76
+ENCODING 76
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 5 7 0 0
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR char77
+ENCODING 77
+SWIDTH 857 0
+DWIDTH 8 0
+BBX 8 7 0 0
+BITMAP
+E3
+E7
+E7
+FF
+FF
+FF
+DB
+ENDCHAR
+STARTCHAR char78
+ENCODING 78
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+CC
+EC
+EC
+FC
+DC
+DC
+CC
+ENDCHAR
+STARTCHAR char79
+ENCODING 79
+SWIDTH 750 0
+DWIDTH 7 0
+BBX 7 7 0 0
+BITMAP
+7C
+C6
+C6
+C6
+C6
+C6
+7C
+ENDCHAR
+STARTCHAR char80
+ENCODING 80
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+F8
+D8
+D8
+F0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char81
+ENCODING 81
+SWIDTH 750 0
+DWIDTH 7 0
+BBX 7 9 0 -2
+BITMAP
+7C
+C6
+C6
+C6
+C6
+C6
+7C
+0C
+0C
+ENDCHAR
+STARTCHAR char82
+ENCODING 82
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+F8
+D8
+D8
+F0
+F0
+D8
+D8
+ENDCHAR
+STARTCHAR char83
+ENCODING 83
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+78
+C0
+C0
+70
+18
+18
+F0
+ENDCHAR
+STARTCHAR char84
+ENCODING 84
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 6 7 -1 0
+BITMAP
+FC
+30
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR char85
+ENCODING 85
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+CC
+CC
+CC
+CC
+CC
+CC
+78
+ENDCHAR
+STARTCHAR char86
+ENCODING 86
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+CC
+CC
+CC
+78
+78
+78
+30
+ENDCHAR
+STARTCHAR char87
+ENCODING 87
+SWIDTH 857 0
+DWIDTH 8 0
+BBX 8 7 0 0
+BITMAP
+DB
+FB
+FF
+FF
+FF
+66
+66
+ENDCHAR
+STARTCHAR char88
+ENCODING 88
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+CC
+78
+78
+30
+78
+78
+CC
+ENDCHAR
+STARTCHAR char89
+ENCODING 89
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+CC
+D8
+78
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR char90
+ENCODING 90
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+F8
+18
+30
+60
+60
+C0
+F8
+ENDCHAR
+STARTCHAR char91
+ENCODING 91
+SWIDTH 321 0
+DWIDTH 3 0
+BBX 3 8 0 -1
+BITMAP
+E0
+C0
+C0
+C0
+C0
+C0
+C0
+E0
+ENDCHAR
+STARTCHAR char92
+ENCODING 92
+SWIDTH 321 0
+DWIDTH 3 0
+BBX 4 7 0 0
+BITMAP
+C0
+C0
+60
+60
+60
+30
+30
+ENDCHAR
+STARTCHAR char93
+ENCODING 93
+SWIDTH 321 0
+DWIDTH 3 0
+BBX 3 8 0 -1
+BITMAP
+E0
+60
+60
+60
+60
+60
+60
+E0
+ENDCHAR
+STARTCHAR char94
+ENCODING 94
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 6 4 0 3
+BITMAP
+30
+78
+78
+CC
+ENDCHAR
+STARTCHAR char95
+ENCODING 95
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 5 1 0 -2
+BITMAP
+F8
+ENDCHAR
+STARTCHAR char96
+ENCODING 96
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 3 2 2 6
+BITMAP
+C0
+60
+ENDCHAR
+STARTCHAR char97
+ENCODING 97
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 5 0 0
+BITMAP
+F8
+18
+F8
+D8
+F8
+ENDCHAR
+STARTCHAR char98
+ENCODING 98
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+C0
+C0
+F0
+D8
+D8
+D8
+F0
+ENDCHAR
+STARTCHAR char99
+ENCODING 99
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 5 0 0
+BITMAP
+70
+C0
+C0
+C0
+70
+ENDCHAR
+STARTCHAR char100
+ENCODING 100
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+18
+18
+78
+D8
+D8
+D8
+78
+ENDCHAR
+STARTCHAR char101
+ENCODING 101
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 5 0 0
+BITMAP
+70
+D8
+F8
+C0
+78
+ENDCHAR
+STARTCHAR char102
+ENCODING 102
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 7 0 0
+BITMAP
+70
+60
+F0
+60
+60
+60
+60
+ENDCHAR
+STARTCHAR char103
+ENCODING 103
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 -2
+BITMAP
+F8
+F0
+F0
+60
+78
+D8
+F8
+ENDCHAR
+STARTCHAR char104
+ENCODING 104
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+C0
+C0
+F8
+D8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR char105
+ENCODING 105
+SWIDTH 214 0
+DWIDTH 2 0
+BBX 2 7 0 0
+BITMAP
+C0
+00
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char106
+ENCODING 106
+SWIDTH 214 0
+DWIDTH 2 0
+BBX 3 9 -1 -2
+BITMAP
+60
+00
+60
+60
+60
+60
+60
+60
+E0
+ENDCHAR
+STARTCHAR char107
+ENCODING 107
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+C0
+C0
+D8
+F0
+E0
+F0
+D8
+ENDCHAR
+STARTCHAR char108
+ENCODING 108
+SWIDTH 214 0
+DWIDTH 2 0
+BBX 2 7 0 0
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char109
+ENCODING 109
+SWIDTH 857 0
+DWIDTH 8 0
+BBX 8 5 0 0
+BITMAP
+FF
+DB
+DB
+DB
+DB
+ENDCHAR
+STARTCHAR char110
+ENCODING 110
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 5 0 0
+BITMAP
+F8
+D8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR char111
+ENCODING 111
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 5 0 0
+BITMAP
+70
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR char112
+ENCODING 112
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 -2
+BITMAP
+F0
+D8
+D8
+D8
+F0
+C0
+C0
+ENDCHAR
+STARTCHAR char113
+ENCODING 113
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 -2
+BITMAP
+78
+D8
+D8
+D8
+78
+18
+18
+ENDCHAR
+STARTCHAR char114
+ENCODING 114
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 5 0 0
+BITMAP
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char115
+ENCODING 115
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 5 0 0
+BITMAP
+F0
+C0
+60
+30
+F0
+ENDCHAR
+STARTCHAR char116
+ENCODING 116
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+60
+F0
+60
+60
+60
+70
+ENDCHAR
+STARTCHAR char117
+ENCODING 117
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 5 0 0
+BITMAP
+D8
+D8
+D8
+D8
+F8
+ENDCHAR
+STARTCHAR char118
+ENCODING 118
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 5 0 0
+BITMAP
+D8
+D8
+70
+70
+70
+ENDCHAR
+STARTCHAR char119
+ENCODING 119
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+FC
+FC
+FC
+F8
+78
+ENDCHAR
+STARTCHAR char120
+ENCODING 120
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 5 0 0
+BITMAP
+D8
+70
+60
+70
+D8
+ENDCHAR
+STARTCHAR char121
+ENCODING 121
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 -2
+BITMAP
+D8
+D8
+70
+70
+70
+60
+E0
+ENDCHAR
+STARTCHAR char122
+ENCODING 122
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 5 0 0
+BITMAP
+F0
+30
+60
+C0
+F0
+ENDCHAR
+STARTCHAR char123
+ENCODING 123
+SWIDTH 321 0
+DWIDTH 3 0
+BBX 4 8 0 -1
+BITMAP
+70
+60
+60
+C0
+60
+60
+60
+70
+ENDCHAR
+STARTCHAR char124
+ENCODING 124
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 2 9 2 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char125
+ENCODING 125
+SWIDTH 321 0
+DWIDTH 3 0
+BBX 4 8 0 -1
+BITMAP
+E0
+60
+60
+60
+30
+60
+60
+E0
+ENDCHAR
+STARTCHAR char126
+ENCODING 126
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 2 0 3
+BITMAP
+E0
+38
+ENDCHAR
+STARTCHAR char0
+ENCODING 127
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 128
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 129
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 130
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 131
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 132
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 133
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 134
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 135
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 136
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 137
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 138
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 139
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 140
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 141
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 142
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 143
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 144
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 145
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 146
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 147
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 148
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 149
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 150
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 151
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 152
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 153
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 154
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 155
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 156
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 157
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 158
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char0
+ENCODING 159
+SWIDTH 0 0
+DWIDTH 0 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char160
+ENCODING 160
+SWIDTH 214 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char161
+ENCODING 161
+SWIDTH 214 0
+DWIDTH 2 0
+BBX 2 7 0 -2
+BITMAP
+C0
+00
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char162
+ENCODING 162
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+30
+78
+C0
+C0
+C0
+78
+30
+ENDCHAR
+STARTCHAR char163
+ENCODING 163
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+78
+60
+60
+F0
+60
+60
+F8
+ENDCHAR
+STARTCHAR char164
+ENCODING 164
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 4 0 1
+BITMAP
+F8
+D8
+D8
+F8
+ENDCHAR
+STARTCHAR char165
+ENCODING 165
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 6 7 0 0
+BITMAP
+CC
+78
+78
+78
+30
+78
+30
+ENDCHAR
+STARTCHAR char166
+ENCODING 166
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 2 9 2 -2
+BITMAP
+C0
+C0
+C0
+00
+00
+00
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char167
+ENCODING 167
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 7 0 0
+BITMAP
+F0
+C0
+F0
+F0
+70
+30
+F0
+ENDCHAR
+STARTCHAR char168
+ENCODING 168
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 4 1 1 6
+BITMAP
+F0
+ENDCHAR
+STARTCHAR char169
+ENCODING 169
+SWIDTH 750 0
+DWIDTH 7 0
+BBX 7 7 0 0
+BITMAP
+7C
+C6
+FE
+F6
+FE
+C6
+7C
+ENDCHAR
+STARTCHAR char170
+ENCODING 170
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 3 0 4
+BITMAP
+F0
+F0
+F0
+ENDCHAR
+STARTCHAR char171
+ENCODING 171
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 3 0 1
+BITMAP
+78
+F0
+78
+ENDCHAR
+STARTCHAR char172
+ENCODING 172
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 2 0 2
+BITMAP
+F8
+18
+ENDCHAR
+STARTCHAR char173
+ENCODING 173
+SWIDTH 321 0
+DWIDTH 3 0
+BBX 3 1 0 2
+BITMAP
+E0
+ENDCHAR
+STARTCHAR char174
+ENCODING 174
+SWIDTH 750 0
+DWIDTH 7 0
+BBX 7 7 0 0
+BITMAP
+7C
+C6
+FE
+FE
+FE
+C6
+7C
+ENDCHAR
+STARTCHAR char175
+ENCODING 175
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 6 1 0 6
+BITMAP
+FC
+ENDCHAR
+STARTCHAR char176
+ENCODING 176
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 3 0 4
+BITMAP
+F0
+F0
+F0
+ENDCHAR
+STARTCHAR char177
+ENCODING 177
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 6 0 0
+BITMAP
+30
+30
+F8
+30
+00
+F8
+ENDCHAR
+STARTCHAR char178
+ENCODING 178
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 4 0 3
+BITMAP
+F0
+30
+60
+F0
+ENDCHAR
+STARTCHAR char179
+ENCODING 179
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 4 0 3
+BITMAP
+F0
+30
+30
+F0
+ENDCHAR
+STARTCHAR char180
+ENCODING 180
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 3 2 2 6
+BITMAP
+60
+C0
+ENDCHAR
+STARTCHAR char181
+ENCODING 181
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 -2
+BITMAP
+D8
+D8
+D8
+D8
+F8
+C0
+C0
+ENDCHAR
+STARTCHAR char182
+ENCODING 182
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 8 0 -1
+BITMAP
+7C
+FC
+FC
+FC
+3C
+3C
+3C
+3C
+ENDCHAR
+STARTCHAR char183
+ENCODING 183
+SWIDTH 214 0
+DWIDTH 2 0
+BBX 2 1 0 3
+BITMAP
+C0
+ENDCHAR
+STARTCHAR char184
+ENCODING 184
+SWIDTH 214 0
+DWIDTH 2 0
+BBX 2 3 1 -2
+BITMAP
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char185
+ENCODING 185
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 3 4 0 3
+BITMAP
+E0
+60
+60
+60
+ENDCHAR
+STARTCHAR char186
+ENCODING 186
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 3 0 4
+BITMAP
+F0
+F0
+F0
+ENDCHAR
+STARTCHAR char187
+ENCODING 187
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 3 0 1
+BITMAP
+F0
+78
+F0
+ENDCHAR
+STARTCHAR char188
+ENCODING 188
+SWIDTH 750 0
+DWIDTH 7 0
+BBX 7 7 0 0
+BITMAP
+EC
+78
+78
+7E
+7E
+7E
+C6
+ENDCHAR
+STARTCHAR char189
+ENCODING 189
+SWIDTH 750 0
+DWIDTH 7 0
+BBX 7 7 0 0
+BITMAP
+EC
+78
+78
+7E
+66
+6C
+DE
+ENDCHAR
+STARTCHAR char190
+ENCODING 190
+SWIDTH 857 0
+DWIDTH 8 0
+BBX 8 7 0 0
+BITMAP
+F6
+3C
+3C
+FF
+3F
+3F
+63
+ENDCHAR
+STARTCHAR char191
+ENCODING 191
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 7 0 -2
+BITMAP
+60
+00
+60
+60
+C0
+C0
+F0
+ENDCHAR
+STARTCHAR char192
+ENCODING 192
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 10 0 0
+BITMAP
+60
+30
+00
+30
+78
+78
+78
+78
+CC
+CC
+ENDCHAR
+STARTCHAR char193
+ENCODING 193
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 10 0 0
+BITMAP
+18
+30
+00
+30
+78
+78
+78
+78
+CC
+CC
+ENDCHAR
+STARTCHAR char194
+ENCODING 194
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 10 0 0
+BITMAP
+30
+78
+00
+30
+78
+78
+78
+78
+CC
+CC
+ENDCHAR
+STARTCHAR char195
+ENCODING 195
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 10 0 0
+BITMAP
+7C
+7C
+00
+30
+78
+78
+78
+78
+CC
+CC
+ENDCHAR
+STARTCHAR char196
+ENCODING 196
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 9 0 0
+BITMAP
+78
+00
+30
+78
+78
+78
+78
+CC
+CC
+ENDCHAR
+STARTCHAR char197
+ENCODING 197
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 9 0 0
+BITMAP
+78
+78
+78
+78
+78
+78
+78
+CC
+CC
+ENDCHAR
+STARTCHAR char198
+ENCODING 198
+SWIDTH 857 0
+DWIDTH 8 0
+BBX 8 7 0 0
+BITMAP
+3F
+38
+78
+7F
+78
+D8
+DF
+ENDCHAR
+STARTCHAR char199
+ENCODING 199
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 9 0 -2
+BITMAP
+78
+C0
+C0
+C0
+C0
+C0
+78
+18
+18
+ENDCHAR
+STARTCHAR char200
+ENCODING 200
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 10 0 0
+BITMAP
+60
+30
+00
+F8
+C0
+C0
+F8
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR char201
+ENCODING 201
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 10 0 0
+BITMAP
+18
+30
+00
+F8
+C0
+C0
+F8
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR char202
+ENCODING 202
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 10 0 0
+BITMAP
+30
+78
+00
+F8
+C0
+C0
+F8
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR char203
+ENCODING 203
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 9 0 0
+BITMAP
+78
+00
+F8
+C0
+C0
+F8
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR char204
+ENCODING 204
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 3 10 0 0
+BITMAP
+C0
+60
+00
+E0
+60
+60
+60
+60
+60
+E0
+ENDCHAR
+STARTCHAR char205
+ENCODING 205
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 10 0 0
+BITMAP
+30
+60
+00
+E0
+60
+60
+60
+60
+60
+E0
+ENDCHAR
+STARTCHAR char206
+ENCODING 206
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 10 0 0
+BITMAP
+60
+F0
+00
+E0
+60
+60
+60
+60
+60
+E0
+ENDCHAR
+STARTCHAR char207
+ENCODING 207
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 9 0 0
+BITMAP
+F0
+00
+E0
+60
+60
+60
+60
+60
+E0
+ENDCHAR
+STARTCHAR char208
+ENCODING 208
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 7 7 -1 0
+BITMAP
+7C
+66
+66
+F6
+66
+6E
+7C
+ENDCHAR
+STARTCHAR char209
+ENCODING 209
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 10 0 0
+BITMAP
+7C
+7C
+00
+CC
+EC
+EC
+FC
+DC
+DC
+CC
+ENDCHAR
+STARTCHAR char210
+ENCODING 210
+SWIDTH 750 0
+DWIDTH 7 0
+BBX 7 10 0 0
+BITMAP
+30
+18
+00
+7C
+C6
+C6
+C6
+C6
+C6
+7C
+ENDCHAR
+STARTCHAR char211
+ENCODING 211
+SWIDTH 750 0
+DWIDTH 7 0
+BBX 7 10 0 0
+BITMAP
+0C
+18
+00
+7C
+C6
+C6
+C6
+C6
+C6
+7C
+ENDCHAR
+STARTCHAR char212
+ENCODING 212
+SWIDTH 750 0
+DWIDTH 7 0
+BBX 7 10 0 0
+BITMAP
+18
+3C
+00
+7C
+C6
+C6
+C6
+C6
+C6
+7C
+ENDCHAR
+STARTCHAR char213
+ENCODING 213
+SWIDTH 750 0
+DWIDTH 7 0
+BBX 7 10 0 0
+BITMAP
+7C
+7C
+00
+7C
+C6
+C6
+C6
+C6
+C6
+7C
+ENDCHAR
+STARTCHAR char214
+ENCODING 214
+SWIDTH 750 0
+DWIDTH 7 0
+BBX 7 9 0 0
+BITMAP
+3C
+00
+7C
+C6
+C6
+C6
+C6
+C6
+7C
+ENDCHAR
+STARTCHAR char215
+ENCODING 215
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 4 3 1 2
+BITMAP
+F0
+60
+F0
+ENDCHAR
+STARTCHAR char216
+ENCODING 216
+SWIDTH 750 0
+DWIDTH 7 0
+BBX 7 7 0 0
+BITMAP
+7C
+CE
+DE
+DE
+F6
+E6
+7C
+ENDCHAR
+STARTCHAR char217
+ENCODING 217
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 10 0 0
+BITMAP
+60
+30
+00
+CC
+CC
+CC
+CC
+CC
+CC
+78
+ENDCHAR
+STARTCHAR char218
+ENCODING 218
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 10 0 0
+BITMAP
+18
+30
+00
+CC
+CC
+CC
+CC
+CC
+CC
+78
+ENDCHAR
+STARTCHAR char219
+ENCODING 219
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 10 0 0
+BITMAP
+30
+78
+00
+CC
+CC
+CC
+CC
+CC
+CC
+78
+ENDCHAR
+STARTCHAR char220
+ENCODING 220
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 9 0 0
+BITMAP
+78
+00
+CC
+CC
+CC
+CC
+CC
+CC
+78
+ENDCHAR
+STARTCHAR char221
+ENCODING 221
+SWIDTH 642 0
+DWIDTH 6 0
+BBX 6 10 0 0
+BITMAP
+18
+30
+00
+CC
+D8
+78
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR char222
+ENCODING 222
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+C0
+F0
+D8
+D8
+F0
+C0
+C0
+ENDCHAR
+STARTCHAR char223
+ENCODING 223
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+F8
+D8
+F0
+F0
+D8
+D8
+F8
+ENDCHAR
+STARTCHAR char224
+ENCODING 224
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 8 0 0
+BITMAP
+60
+30
+00
+F8
+18
+F8
+D8
+F8
+ENDCHAR
+STARTCHAR char225
+ENCODING 225
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 8 0 0
+BITMAP
+18
+30
+00
+F8
+18
+F8
+D8
+F8
+ENDCHAR
+STARTCHAR char226
+ENCODING 226
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 8 0 0
+BITMAP
+30
+78
+00
+F8
+18
+F8
+D8
+F8
+ENDCHAR
+STARTCHAR char227
+ENCODING 227
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 8 0 0
+BITMAP
+F8
+F8
+00
+F8
+18
+F8
+D8
+F8
+ENDCHAR
+STARTCHAR char228
+ENCODING 228
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+78
+00
+F8
+18
+F8
+D8
+F8
+ENDCHAR
+STARTCHAR char229
+ENCODING 229
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 9 0 0
+BITMAP
+78
+78
+78
+00
+F8
+18
+F8
+D8
+F8
+ENDCHAR
+STARTCHAR char230
+ENCODING 230
+SWIDTH 857 0
+DWIDTH 8 0
+BBX 8 5 0 0
+BITMAP
+FE
+1B
+FF
+D8
+FF
+ENDCHAR
+STARTCHAR char231
+ENCODING 231
+SWIDTH 428 0
+DWIDTH 4 0
+BBX 4 7 0 -2
+BITMAP
+70
+C0
+C0
+C0
+70
+30
+30
+ENDCHAR
+STARTCHAR char232
+ENCODING 232
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 8 0 0
+BITMAP
+60
+30
+00
+70
+D8
+F8
+C0
+78
+ENDCHAR
+STARTCHAR char233
+ENCODING 233
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 8 0 0
+BITMAP
+18
+30
+00
+70
+D8
+F8
+C0
+78
+ENDCHAR
+STARTCHAR char234
+ENCODING 234
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 8 0 0
+BITMAP
+30
+78
+00
+70
+D8
+F8
+C0
+78
+ENDCHAR
+STARTCHAR char235
+ENCODING 235
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+78
+00
+70
+D8
+F8
+C0
+78
+ENDCHAR
+STARTCHAR char236
+ENCODING 236
+SWIDTH 214 0
+DWIDTH 2 0
+BBX 3 8 -1 0
+BITMAP
+C0
+60
+00
+60
+60
+60
+60
+60
+ENDCHAR
+STARTCHAR char237
+ENCODING 237
+SWIDTH 214 0
+DWIDTH 2 0
+BBX 3 8 0 0
+BITMAP
+60
+C0
+00
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char238
+ENCODING 238
+SWIDTH 214 0
+DWIDTH 2 0
+BBX 4 8 -1 0
+BITMAP
+60
+F0
+00
+60
+60
+60
+60
+60
+ENDCHAR
+STARTCHAR char239
+ENCODING 239
+SWIDTH 214 0
+DWIDTH 2 0
+BBX 4 7 -1 0
+BITMAP
+F0
+00
+60
+60
+60
+60
+60
+ENDCHAR
+STARTCHAR char240
+ENCODING 240
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+78
+70
+18
+78
+D8
+D8
+70
+ENDCHAR
+STARTCHAR char241
+ENCODING 241
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 8 0 0
+BITMAP
+F8
+F8
+00
+F8
+D8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR char242
+ENCODING 242
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 8 0 0
+BITMAP
+60
+30
+00
+70
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR char243
+ENCODING 243
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 8 0 0
+BITMAP
+18
+30
+00
+70
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR char244
+ENCODING 244
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 8 0 0
+BITMAP
+30
+78
+00
+70
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR char245
+ENCODING 245
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 8 0 0
+BITMAP
+F8
+F8
+00
+70
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR char246
+ENCODING 246
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+78
+00
+70
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR char247
+ENCODING 247
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 6 5 0 1
+BITMAP
+30
+00
+FC
+00
+30
+ENDCHAR
+STARTCHAR char248
+ENCODING 248
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 5 0 0
+BITMAP
+78
+F8
+F8
+F8
+F0
+ENDCHAR
+STARTCHAR char249
+ENCODING 249
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 8 0 0
+BITMAP
+60
+30
+00
+D8
+D8
+D8
+D8
+F8
+ENDCHAR
+STARTCHAR char250
+ENCODING 250
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 8 0 0
+BITMAP
+18
+30
+00
+D8
+D8
+D8
+D8
+F8
+ENDCHAR
+STARTCHAR char251
+ENCODING 251
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 8 0 0
+BITMAP
+30
+78
+00
+D8
+D8
+D8
+D8
+F8
+ENDCHAR
+STARTCHAR char252
+ENCODING 252
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+78
+00
+D8
+D8
+D8
+D8
+F8
+ENDCHAR
+STARTCHAR char253
+ENCODING 253
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 10 0 -2
+BITMAP
+18
+30
+00
+D8
+D8
+70
+70
+70
+60
+E0
+ENDCHAR
+STARTCHAR char254
+ENCODING 254
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 9 0 -2
+BITMAP
+C0
+C0
+F0
+D8
+D8
+D8
+F0
+C0
+C0
+ENDCHAR
+STARTCHAR char255
+ENCODING 255
+SWIDTH 535 0
+DWIDTH 5 0
+BBX 5 9 0 -2
+BITMAP
+78
+00
+D8
+D8
+70
+70
+70
+60
+E0
+ENDCHAR
+ENDFONT
diff --git a/ui/fonts/DroidSansBold8x12.h b/ui/fonts/DroidSansBold8x12.h
new file mode 100644 (file)
index 0000000..1586362
--- /dev/null
@@ -0,0 +1,261 @@
+/* -FreeType-Droid_Sans-Bold-R-Normal--9-70-96-96-P-49-ISO10646-1 */
+#define FONT_WIDTH_Droid_SansBold_8x12 8
+#define FONT_HEIGHT_Droid_SansBold_8x12        12
+const uint8_t FONT_DATA_Droid_SansBold_8x12[256][13] = {
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x06,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x1e,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x78,0x78,0xfe,0x6c,0xfe,0x3c,0x3c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x18,0x3c,0x1e,0x1e,0x1c,0x3c,0x3c,0x1e,0x0c,0x00,},
+{/*w*/8,0x00,0x00,0x00,0xde,0x7e,0x7e,0xfe,0xf9,0xf9,0xed,0x01,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x3e,0x36,0x1e,0x0c,0xde,0x76,0x7c,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x0c,0x06,0x06,0x06,0x06,0x06,0x06,0x0c,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x06,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x06,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x18,0x7e,0x18,0x3c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x18,0x18,0x3e,0x18,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x18,0x18,0x0c,0x0c,0x0c,0x06,0x06,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x1c,0x36,0x36,0x36,0x36,0x36,0x1c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x1c,0x1e,0x18,0x18,0x18,0x18,0x18,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x1e,0x30,0x30,0x18,0x18,0x0c,0x3e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3e,0x30,0x30,0x1c,0x30,0x30,0x1e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x30,0x38,0x3c,0x36,0x7e,0x30,0x30,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3e,0x06,0x06,0x1e,0x30,0x30,0x1e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3c,0x06,0x06,0x3e,0x36,0x36,0x1c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3e,0x30,0x18,0x18,0x18,0x0c,0x0c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3e,0x36,0x36,0x1c,0x36,0x36,0x1c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x1c,0x36,0x36,0x3e,0x30,0x30,0x1e,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x06,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x30,0x1c,0x06,0x1c,0x30,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x3e,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x06,0x1c,0x30,0x1c,0x06,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x1e,0x18,0x18,0x0c,0x0c,0x00,0x0c,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0xf8,0x8c,0xf7,0xff,0xff,0xff,0x06,0x7c,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x18,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3e,0x36,0x36,0x1e,0x36,0x36,0x1e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3c,0x06,0x06,0x06,0x06,0x06,0x3c,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x3e,0x66,0x66,0x66,0x66,0x76,0x3e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3e,0x06,0x06,0x3e,0x06,0x06,0x3e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3e,0x06,0x06,0x3e,0x06,0x06,0x06,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x7c,0x06,0x06,0x76,0x66,0x66,0x7c,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x66,0x66,0x66,0x7e,0x66,0x66,0x66,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0e,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x07,},
+{/*w*/5,0x00,0x00,0x00,0x66,0x36,0x1e,0x1e,0x1e,0x36,0x66,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x3e,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0x8e,0xcf,0xcf,0xff,0xff,0xff,0xb7,0x01,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x66,0x6e,0x6e,0x7e,0x76,0x76,0x66,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3e,0x36,0x36,0x1e,0x06,0x06,0x06,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x60,0x60,},
+{/*w*/5,0x00,0x00,0x00,0x3e,0x36,0x36,0x1e,0x1e,0x36,0x36,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3c,0x06,0x06,0x1c,0x30,0x30,0x1e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x3f,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x66,0x66,0x66,0x3c,0x3c,0x3c,0x18,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0xb6,0xbf,0xff,0xff,0xff,0xcd,0xcc,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x66,0x3c,0x3c,0x18,0x3c,0x3c,0x66,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x66,0x36,0x3c,0x18,0x18,0x18,0x18,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3e,0x30,0x18,0x0c,0x0c,0x06,0x3e,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x0e,0x06,0x06,0x06,0x06,0x06,0x06,0x0e,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x06,0x06,0x0c,0x0c,0x0c,0x18,0x18,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0e,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x18,0x3c,0x3c,0x66,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,},
+{/*w*/5,0x00,0x00,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x06,0x06,0x1e,0x36,0x36,0x36,0x1e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x1c,0x06,0x06,0x06,0x1c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x30,0x30,0x3c,0x36,0x36,0x36,0x3c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1c,0x36,0x3e,0x06,0x3c,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x1c,0x0c,0x1e,0x0c,0x0c,0x0c,0x0c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3e,0x1e,0x1e,0x0c,0x3c,0x36,0x3e,},
+{/*w*/5,0x00,0x00,0x00,0x06,0x06,0x3e,0x36,0x36,0x36,0x36,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x07,},
+{/*w*/5,0x00,0x00,0x00,0x06,0x06,0x36,0x1e,0x0e,0x1e,0x36,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0x00,0x00,0xfe,0xb7,0xb7,0xb7,0xb7,0x01,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3e,0x36,0x36,0x36,0x36,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1c,0x36,0x36,0x36,0x1c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1e,0x36,0x36,0x36,0x1e,0x06,0x06,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3c,0x36,0x36,0x36,0x3c,0x30,0x30,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x1e,0x06,0x06,0x06,0x06,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x1e,0x06,0x0c,0x18,0x1e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x0c,0x1e,0x0c,0x0c,0x0c,0x1c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x36,0x36,0x3e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x1c,0x1c,0x1c,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x7e,0x7e,0x7e,0x3e,0x3c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x36,0x1c,0x0c,0x1c,0x36,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x1c,0x1c,0x1c,0x0c,0x0e,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x1e,0x18,0x0c,0x06,0x1e,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x1c,0x0c,0x0c,0x06,0x0c,0x0c,0x0c,0x1c,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,},
+{/*w*/3,0x00,0x00,0x00,0x0e,0x0c,0x0c,0x0c,0x18,0x0c,0x0c,0x0e,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x0e,0x38,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x06,},
+{/*w*/5,0x00,0x00,0x00,0x18,0x3c,0x06,0x06,0x06,0x3c,0x18,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3c,0x0c,0x0c,0x1e,0x0c,0x0c,0x3e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3e,0x36,0x36,0x3e,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x66,0x3c,0x3c,0x3c,0x18,0x3c,0x18,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x18,},
+{/*w*/4,0x00,0x00,0x00,0x1e,0x06,0x1e,0x1e,0x1c,0x18,0x1e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x7c,0xc6,0xfe,0xde,0xfe,0xc6,0x7c,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x1e,0x1e,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x1e,0x3c,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x30,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x7c,0xc6,0xfe,0xfe,0xfe,0xc6,0x7c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x1e,0x1e,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x18,0x18,0x3e,0x18,0x00,0x3e,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x1e,0x18,0x0c,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x1e,0x18,0x18,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x36,0x36,0x3e,0x06,0x06,},
+{/*w*/6,0x00,0x00,0x00,0x7c,0x7e,0x7e,0x7e,0x78,0x78,0x78,0x78,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x0c,0x0c,},
+{/*w*/4,0x00,0x00,0x00,0x0e,0x0c,0x0c,0x0c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x1e,0x1e,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x3c,0x1e,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x6e,0x3c,0x3c,0xfc,0xfc,0xfc,0xc6,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x6e,0x3c,0x3c,0xfc,0xcc,0x6c,0xf6,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0xde,0x78,0x78,0xfe,0xf9,0xf9,0x8d,0x01,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x0c,0x06,0x06,0x1e,},
+{/*w*/6,0x0c,0x18,0x00,0x18,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,},
+{/*w*/6,0x30,0x18,0x00,0x18,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,},
+{/*w*/6,0x18,0x3c,0x00,0x18,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,},
+{/*w*/6,0x7c,0x7c,0x00,0x18,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,},
+{/*w*/6,0x00,0x3c,0x00,0x18,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,},
+{/*w*/6,0x00,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0xf8,0x39,0x3c,0xfc,0x3d,0x36,0xf6,0x01,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3c,0x06,0x06,0x06,0x06,0x06,0x3c,0x30,0x30,},
+{/*w*/5,0x0c,0x18,0x00,0x3e,0x06,0x06,0x3e,0x06,0x06,0x3e,0x00,0x00,},
+{/*w*/5,0x30,0x18,0x00,0x3e,0x06,0x06,0x3e,0x06,0x06,0x3e,0x00,0x00,},
+{/*w*/5,0x18,0x3c,0x00,0x3e,0x06,0x06,0x3e,0x06,0x06,0x3e,0x00,0x00,},
+{/*w*/5,0x00,0x3c,0x00,0x3e,0x06,0x06,0x3e,0x06,0x06,0x3e,0x00,0x00,},
+{/*w*/4,0x06,0x0c,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0e,0x00,0x00,},
+{/*w*/4,0x18,0x0c,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0e,0x00,0x00,},
+{/*w*/4,0x0c,0x1e,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0e,0x00,0x00,},
+{/*w*/4,0x00,0x1e,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0e,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x3e,0x66,0x66,0x6f,0x66,0x76,0x3e,0x00,0x00,},
+{/*w*/6,0x7c,0x7c,0x00,0x66,0x6e,0x6e,0x7e,0x76,0x76,0x66,0x00,0x00,},
+{/*w*/7,0x18,0x30,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,},
+{/*w*/7,0x60,0x30,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,},
+{/*w*/7,0x30,0x78,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,},
+{/*w*/7,0x7c,0x7c,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,},
+{/*w*/7,0x00,0x78,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3c,0x18,0x3c,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x7c,0xe6,0xf6,0xf6,0xde,0xce,0x7c,0x00,0x00,},
+{/*w*/6,0x0c,0x18,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,},
+{/*w*/6,0x30,0x18,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,},
+{/*w*/6,0x18,0x3c,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,},
+{/*w*/6,0x00,0x3c,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,},
+{/*w*/6,0x30,0x18,0x00,0x66,0x36,0x3c,0x18,0x18,0x18,0x18,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x06,0x1e,0x36,0x36,0x1e,0x06,0x06,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3e,0x36,0x1e,0x1e,0x36,0x36,0x3e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x0c,0x18,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x30,0x18,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x18,0x3c,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x3e,0x3e,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3c,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,},
+{/*w*/5,0x00,0x3c,0x3c,0x3c,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0x00,0x00,0xfe,0xb0,0xff,0x37,0xfe,0x01,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x1c,0x06,0x06,0x06,0x1c,0x18,0x18,},
+{/*w*/5,0x00,0x00,0x0c,0x18,0x00,0x1c,0x36,0x3e,0x06,0x3c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x30,0x18,0x00,0x1c,0x36,0x3e,0x06,0x3c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x18,0x3c,0x00,0x1c,0x36,0x3e,0x06,0x3c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3c,0x00,0x1c,0x36,0x3e,0x06,0x3c,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x03,0x06,0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x0c,0x06,0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x06,0x0f,0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x0f,0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3c,0x1c,0x30,0x3c,0x36,0x36,0x1c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x3e,0x3e,0x00,0x3e,0x36,0x36,0x36,0x36,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x0c,0x18,0x00,0x1c,0x36,0x36,0x36,0x1c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x30,0x18,0x00,0x1c,0x36,0x36,0x36,0x1c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x18,0x3c,0x00,0x1c,0x36,0x36,0x36,0x1c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x3e,0x3e,0x00,0x1c,0x36,0x36,0x36,0x1c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3c,0x00,0x1c,0x36,0x36,0x36,0x1c,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x18,0x00,0x7e,0x00,0x18,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3c,0x3e,0x3e,0x3e,0x1e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x0c,0x18,0x00,0x36,0x36,0x36,0x36,0x3e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x30,0x18,0x00,0x36,0x36,0x36,0x36,0x3e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x18,0x3c,0x00,0x36,0x36,0x36,0x36,0x3e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x3c,0x00,0x36,0x36,0x36,0x36,0x3e,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x30,0x18,0x00,0x36,0x36,0x1c,0x1c,0x1c,0x0c,0x0e,},
+{/*w*/5,0x00,0x00,0x00,0x06,0x06,0x1e,0x36,0x36,0x36,0x1e,0x06,0x06,},
+{/*w*/5,0x00,0x00,0x00,0x3c,0x00,0x36,0x36,0x1c,0x1c,0x1c,0x0c,0x0e,},
+};
diff --git a/ui/fonts/DroidSansBold9x11.bdf b/ui/fonts/DroidSansBold9x11.bdf
new file mode 100644 (file)
index 0000000..e3675b0
--- /dev/null
@@ -0,0 +1,2927 @@
+STARTFONT 2.1
+COMMENT Font converted from OTF to BDF.
+FONT -FreeType-Droid Sans-Bold-R-Normal--8-60-96-96-P-44-ISO10646-1
+SIZE 6 96 96
+FONTBOUNDINGBOX 8 11 -1 -2
+STARTPROPERTIES 19
+POINT_SIZE 60
+PIXEL_SIZE 8
+RESOLUTION_X 96
+RESOLUTION_Y 96
+FONT_ASCENT 7
+FONT_DESCENT 1
+AVERAGE_WIDTH 44
+SPACING "P"
+FOUNDRY "FreeType"
+FAMILY_NAME "Droid Sans"
+CHARSET_REGISTRY "ISO10646"
+CHARSET_ENCODING "1"
+WEIGHT_NAME "Bold"
+SLANT "R"
+SETWIDTH_NAME "Normal"
+COPYRIGHT "Digitized data copyright © 2007, Google Corporation."
+_TTF_PSNAME "DroidSans"
+_OTF_FONTFILE "DroidSans.ttf"
+_GBDFED_INFO "Edited with gbdfed 1.6."
+ENDPROPERTIES
+CHARS 256
+STARTCHAR char0
+ENCODING 0
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char1
+ENCODING 1
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char2
+ENCODING 2
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char3
+ENCODING 3
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char4
+ENCODING 4
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char5
+ENCODING 5
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char6
+ENCODING 6
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char7
+ENCODING 7
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char8
+ENCODING 8
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char9
+ENCODING 9
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char10
+ENCODING 10
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char11
+ENCODING 11
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char12
+ENCODING 12
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char13
+ENCODING 13
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char14
+ENCODING 14
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char15
+ENCODING 15
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char16
+ENCODING 16
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char17
+ENCODING 17
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char18
+ENCODING 18
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char19
+ENCODING 19
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char20
+ENCODING 20
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char21
+ENCODING 21
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char22
+ENCODING 22
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char23
+ENCODING 23
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char24
+ENCODING 24
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char25
+ENCODING 25
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char26
+ENCODING 26
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char27
+ENCODING 27
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char28
+ENCODING 28
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char29
+ENCODING 29
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char30
+ENCODING 30
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char31
+ENCODING 31
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char32
+ENCODING 32
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char33
+ENCODING 33
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 2 6 0 0
+BITMAP
+C0
+C0
+C0
+C0
+00
+C0
+ENDCHAR
+STARTCHAR char34
+ENCODING 34
+SWIDTH 375 0
+DWIDTH 3 0
+BBX 3 2 1 4
+BITMAP
+E0
+E0
+ENDCHAR
+STARTCHAR char35
+ENCODING 35
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 6 6 0 0
+BITMAP
+38
+38
+FC
+FC
+70
+70
+ENDCHAR
+STARTCHAR char36
+ENCODING 36
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 8 0 -1
+BITMAP
+60
+F0
+E0
+E0
+70
+70
+F0
+60
+ENDCHAR
+STARTCHAR char37
+ENCODING 37
+SWIDTH 875 0
+DWIDTH 7 0
+BBX 7 6 0 0
+BITMAP
+EC
+F8
+FE
+FE
+3E
+6E
+ENDCHAR
+STARTCHAR char38
+ENCODING 38
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 7 6 0 0
+BITMAP
+F8
+D8
+70
+F6
+DC
+FC
+ENDCHAR
+STARTCHAR char39
+ENCODING 39
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 2 2 1 4
+BITMAP
+C0
+C0
+ENDCHAR
+STARTCHAR char40
+ENCODING 40
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 3 7 0 -1
+BITMAP
+60
+C0
+C0
+C0
+C0
+C0
+60
+ENDCHAR
+STARTCHAR char41
+ENCODING 41
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 3 7 -1 -1
+BITMAP
+C0
+60
+60
+60
+60
+60
+C0
+ENDCHAR
+STARTCHAR char42
+ENCODING 42
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 4 0 2
+BITMAP
+60
+F0
+60
+F0
+ENDCHAR
+STARTCHAR char43
+ENCODING 43
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 4 1 1
+BITMAP
+60
+60
+F0
+60
+ENDCHAR
+STARTCHAR char44
+ENCODING 44
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 2 2 0 -1
+BITMAP
+C0
+C0
+ENDCHAR
+STARTCHAR char45
+ENCODING 45
+SWIDTH 375 0
+DWIDTH 3 0
+BBX 3 1 0 1
+BITMAP
+E0
+ENDCHAR
+STARTCHAR char46
+ENCODING 46
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 2 1 0 0
+BITMAP
+C0
+ENDCHAR
+STARTCHAR char47
+ENCODING 47
+SWIDTH 375 0
+DWIDTH 3 0
+BBX 4 6 0 0
+BITMAP
+30
+30
+60
+60
+C0
+C0
+ENDCHAR
+STARTCHAR char48
+ENCODING 48
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+60
+F0
+F0
+F0
+F0
+60
+ENDCHAR
+STARTCHAR char49
+ENCODING 49
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 3 6 0 0
+BITMAP
+60
+E0
+60
+60
+60
+60
+ENDCHAR
+STARTCHAR char50
+ENCODING 50
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+F0
+30
+30
+60
+60
+F0
+ENDCHAR
+STARTCHAR char51
+ENCODING 51
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+F0
+30
+60
+30
+30
+F0
+ENDCHAR
+STARTCHAR char52
+ENCODING 52
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 5 6 0 0
+BITMAP
+30
+70
+70
+F0
+F8
+30
+ENDCHAR
+STARTCHAR char53
+ENCODING 53
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+F0
+C0
+F0
+30
+30
+E0
+ENDCHAR
+STARTCHAR char54
+ENCODING 54
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+70
+C0
+F0
+F0
+F0
+70
+ENDCHAR
+STARTCHAR char55
+ENCODING 55
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+F0
+30
+30
+60
+60
+60
+ENDCHAR
+STARTCHAR char56
+ENCODING 56
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+F0
+F0
+F0
+60
+F0
+F0
+ENDCHAR
+STARTCHAR char57
+ENCODING 57
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+E0
+F0
+F0
+F0
+30
+E0
+ENDCHAR
+STARTCHAR char58
+ENCODING 58
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 2 4 0 0
+BITMAP
+C0
+00
+00
+C0
+ENDCHAR
+STARTCHAR char59
+ENCODING 59
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 2 5 0 -1
+BITMAP
+C0
+00
+00
+C0
+C0
+ENDCHAR
+STARTCHAR char60
+ENCODING 60
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 4 0 1
+BITMAP
+30
+60
+E0
+30
+ENDCHAR
+STARTCHAR char61
+ENCODING 61
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 3 0 1
+BITMAP
+F0
+00
+F0
+ENDCHAR
+STARTCHAR char62
+ENCODING 62
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 4 0 1
+BITMAP
+C0
+60
+70
+C0
+ENDCHAR
+STARTCHAR char63
+ENCODING 63
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+F0
+30
+30
+60
+00
+60
+ENDCHAR
+STARTCHAR char64
+ENCODING 64
+SWIDTH 875 0
+DWIDTH 7 0
+BBX 7 7 0 -1
+BITMAP
+7C
+C6
+FE
+FE
+FE
+C0
+7C
+ENDCHAR
+STARTCHAR char65
+ENCODING 65
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 6 0 0
+BITMAP
+30
+78
+78
+78
+CC
+CC
+ENDCHAR
+STARTCHAR char66
+ENCODING 66
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 0
+BITMAP
+F8
+D8
+F8
+D8
+D8
+F8
+ENDCHAR
+STARTCHAR char67
+ENCODING 67
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 0
+BITMAP
+78
+C0
+C0
+C0
+C0
+78
+ENDCHAR
+STARTCHAR char68
+ENCODING 68
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 0
+BITMAP
+F0
+D8
+D8
+D8
+D8
+F0
+ENDCHAR
+STARTCHAR char69
+ENCODING 69
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+F0
+C0
+F0
+C0
+C0
+F0
+ENDCHAR
+STARTCHAR char70
+ENCODING 70
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+F0
+C0
+F0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char71
+ENCODING 71
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 6 0 0
+BITMAP
+7C
+C0
+C0
+DC
+CC
+7C
+ENDCHAR
+STARTCHAR char72
+ENCODING 72
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 6 0 0
+BITMAP
+CC
+CC
+FC
+CC
+CC
+CC
+ENDCHAR
+STARTCHAR char73
+ENCODING 73
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 2 6 1 0
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char74
+ENCODING 74
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 3 8 -1 -2
+BITMAP
+60
+60
+60
+60
+60
+60
+60
+C0
+ENDCHAR
+STARTCHAR char75
+ENCODING 75
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 0
+BITMAP
+D8
+F0
+E0
+F0
+F0
+D8
+ENDCHAR
+STARTCHAR char76
+ENCODING 76
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 5 6 0 0
+BITMAP
+C0
+C0
+C0
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR char77
+ENCODING 77
+SWIDTH 1000 0
+DWIDTH 8 0
+BBX 8 6 0 0
+BITMAP
+C3
+E7
+E7
+FF
+FF
+DB
+ENDCHAR
+STARTCHAR char78
+ENCODING 78
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 6 0 0
+BITMAP
+CC
+EC
+FC
+FC
+DC
+CC
+ENDCHAR
+STARTCHAR char79
+ENCODING 79
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 6 0 0
+BITMAP
+78
+CC
+CC
+CC
+CC
+78
+ENDCHAR
+STARTCHAR char80
+ENCODING 80
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 0
+BITMAP
+F8
+D8
+D8
+F0
+C0
+C0
+ENDCHAR
+STARTCHAR char81
+ENCODING 81
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 7 0 -1
+BITMAP
+78
+CC
+CC
+CC
+CC
+78
+18
+ENDCHAR
+STARTCHAR char82
+ENCODING 82
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 0
+BITMAP
+F8
+D8
+D8
+F0
+F0
+D8
+ENDCHAR
+STARTCHAR char83
+ENCODING 83
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+F0
+C0
+E0
+30
+30
+F0
+ENDCHAR
+STARTCHAR char84
+ENCODING 84
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+F0
+60
+60
+60
+60
+60
+ENDCHAR
+STARTCHAR char85
+ENCODING 85
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 6 0 0
+BITMAP
+CC
+CC
+CC
+CC
+CC
+78
+ENDCHAR
+STARTCHAR char86
+ENCODING 86
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 6 0 0
+BITMAP
+CC
+CC
+78
+78
+78
+30
+ENDCHAR
+STARTCHAR char87
+ENCODING 87
+SWIDTH 1000 0
+DWIDTH 8 0
+BBX 8 6 0 0
+BITMAP
+DB
+FF
+FF
+FF
+6E
+66
+ENDCHAR
+STARTCHAR char88
+ENCODING 88
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 0
+BITMAP
+D8
+70
+70
+70
+F0
+D8
+ENDCHAR
+STARTCHAR char89
+ENCODING 89
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 6 6 -1 0
+BITMAP
+CC
+78
+78
+30
+30
+30
+ENDCHAR
+STARTCHAR char90
+ENCODING 90
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 0
+BITMAP
+F8
+30
+30
+60
+60
+F8
+ENDCHAR
+STARTCHAR char91
+ENCODING 91
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 3 7 1 -1
+BITMAP
+E0
+C0
+C0
+C0
+C0
+C0
+E0
+ENDCHAR
+STARTCHAR char92
+ENCODING 92
+SWIDTH 375 0
+DWIDTH 3 0
+BBX 4 6 0 0
+BITMAP
+C0
+C0
+60
+60
+30
+30
+ENDCHAR
+STARTCHAR char93
+ENCODING 93
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 3 7 -1 -1
+BITMAP
+E0
+60
+60
+60
+60
+60
+E0
+ENDCHAR
+STARTCHAR char94
+ENCODING 94
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 5 4 0 2
+BITMAP
+30
+70
+D8
+D8
+ENDCHAR
+STARTCHAR char95
+ENCODING 95
+SWIDTH 375 0
+DWIDTH 3 0
+BBX 4 1 0 -2
+BITMAP
+F0
+ENDCHAR
+STARTCHAR char96
+ENCODING 96
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 3 2 2 5
+BITMAP
+C0
+60
+ENDCHAR
+STARTCHAR char97
+ENCODING 97
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 4 0 0
+BITMAP
+F0
+30
+F0
+F0
+ENDCHAR
+STARTCHAR char98
+ENCODING 98
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 0
+BITMAP
+C0
+C0
+F0
+D8
+D8
+F0
+ENDCHAR
+STARTCHAR char99
+ENCODING 99
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 4 0 0
+BITMAP
+70
+C0
+C0
+70
+ENDCHAR
+STARTCHAR char100
+ENCODING 100
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 0
+BITMAP
+18
+18
+78
+D8
+D8
+78
+ENDCHAR
+STARTCHAR char101
+ENCODING 101
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 4 0 0
+BITMAP
+F0
+F0
+C0
+F0
+ENDCHAR
+STARTCHAR char102
+ENCODING 102
+SWIDTH 375 0
+DWIDTH 3 0
+BBX 3 6 0 0
+BITMAP
+E0
+C0
+E0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char103
+ENCODING 103
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 5 6 0 -2
+BITMAP
+F8
+F0
+F0
+78
+D8
+F8
+ENDCHAR
+STARTCHAR char104
+ENCODING 104
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 0
+BITMAP
+C0
+C0
+F8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR char105
+ENCODING 105
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 2 6 0 0
+BITMAP
+C0
+00
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char106
+ENCODING 106
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 3 8 -1 -2
+BITMAP
+60
+00
+60
+60
+60
+60
+60
+E0
+ENDCHAR
+STARTCHAR char107
+ENCODING 107
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+C0
+C0
+F0
+E0
+E0
+F0
+ENDCHAR
+STARTCHAR char108
+ENCODING 108
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 2 6 0 0
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char109
+ENCODING 109
+SWIDTH 1000 0
+DWIDTH 8 0
+BBX 8 4 0 0
+BITMAP
+FF
+DB
+DB
+DB
+ENDCHAR
+STARTCHAR char110
+ENCODING 110
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 4 0 0
+BITMAP
+F8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR char111
+ENCODING 111
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 4 0 0
+BITMAP
+70
+D8
+D8
+70
+ENDCHAR
+STARTCHAR char112
+ENCODING 112
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 -2
+BITMAP
+F0
+D8
+D8
+F0
+C0
+C0
+ENDCHAR
+STARTCHAR char113
+ENCODING 113
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 -2
+BITMAP
+78
+D8
+D8
+78
+18
+18
+ENDCHAR
+STARTCHAR char114
+ENCODING 114
+SWIDTH 375 0
+DWIDTH 3 0
+BBX 3 4 0 0
+BITMAP
+E0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char115
+ENCODING 115
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 4 0 0
+BITMAP
+F0
+E0
+30
+F0
+ENDCHAR
+STARTCHAR char116
+ENCODING 116
+SWIDTH 375 0
+DWIDTH 3 0
+BBX 3 5 0 0
+BITMAP
+C0
+E0
+C0
+C0
+E0
+ENDCHAR
+STARTCHAR char117
+ENCODING 117
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 4 0 0
+BITMAP
+D8
+D8
+D8
+F8
+ENDCHAR
+STARTCHAR char118
+ENCODING 118
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 4 0 0
+BITMAP
+F0
+F0
+F0
+60
+ENDCHAR
+STARTCHAR char119
+ENCODING 119
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 4 0 0
+BITMAP
+FC
+FC
+F8
+78
+ENDCHAR
+STARTCHAR char120
+ENCODING 120
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 4 0 0
+BITMAP
+F0
+60
+60
+F0
+ENDCHAR
+STARTCHAR char121
+ENCODING 121
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 -2
+BITMAP
+F0
+F0
+F0
+60
+60
+C0
+ENDCHAR
+STARTCHAR char122
+ENCODING 122
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 4 0 0
+BITMAP
+F0
+60
+60
+F0
+ENDCHAR
+STARTCHAR char123
+ENCODING 123
+SWIDTH 375 0
+DWIDTH 3 0
+BBX 3 7 0 -1
+BITMAP
+60
+60
+60
+C0
+60
+60
+60
+ENDCHAR
+STARTCHAR char124
+ENCODING 124
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 2 8 1 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char125
+ENCODING 125
+SWIDTH 375 0
+DWIDTH 3 0
+BBX 3 7 1 -1
+BITMAP
+C0
+C0
+C0
+60
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char126
+ENCODING 126
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 2 0 1
+BITMAP
+C0
+70
+ENDCHAR
+STARTCHAR char127
+ENCODING 127
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char128
+ENCODING 128
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char129
+ENCODING 129
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char130
+ENCODING 130
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char131
+ENCODING 131
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char132
+ENCODING 132
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char133
+ENCODING 133
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char134
+ENCODING 134
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char135
+ENCODING 135
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char136
+ENCODING 136
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char137
+ENCODING 137
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char138
+ENCODING 138
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char139
+ENCODING 139
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char140
+ENCODING 140
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char141
+ENCODING 141
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char142
+ENCODING 142
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char143
+ENCODING 143
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char144
+ENCODING 144
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char145
+ENCODING 145
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char146
+ENCODING 146
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char147
+ENCODING 147
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char148
+ENCODING 148
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char149
+ENCODING 149
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char150
+ENCODING 150
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char151
+ENCODING 151
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char152
+ENCODING 152
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char153
+ENCODING 153
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char154
+ENCODING 154
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char155
+ENCODING 155
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char156
+ENCODING 156
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char157
+ENCODING 157
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char158
+ENCODING 158
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char159
+ENCODING 159
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char160
+ENCODING 160
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR char161
+ENCODING 161
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 2 6 0 -2
+BITMAP
+C0
+00
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char162
+ENCODING 162
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 3 6 1 0
+BITMAP
+60
+E0
+C0
+C0
+E0
+60
+ENDCHAR
+STARTCHAR char163
+ENCODING 163
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+70
+60
+60
+F0
+60
+F0
+ENDCHAR
+STARTCHAR char164
+ENCODING 164
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 3 0 1
+BITMAP
+F0
+F0
+F0
+ENDCHAR
+STARTCHAR char165
+ENCODING 165
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 6 6 -1 0
+BITMAP
+CC
+78
+70
+78
+78
+30
+ENDCHAR
+STARTCHAR char166
+ENCODING 166
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 2 8 1 -2
+BITMAP
+C0
+C0
+C0
+00
+00
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char167
+ENCODING 167
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+F0
+E0
+F0
+F0
+30
+F0
+ENDCHAR
+STARTCHAR char168
+ENCODING 168
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 4 1 1 5
+BITMAP
+F0
+ENDCHAR
+STARTCHAR char169
+ENCODING 169
+SWIDTH 875 0
+DWIDTH 7 0
+BBX 7 6 0 0
+BITMAP
+7C
+FE
+F6
+FE
+C6
+7C
+ENDCHAR
+STARTCHAR char170
+ENCODING 170
+SWIDTH 375 0
+DWIDTH 3 0
+BBX 4 3 0 3
+BITMAP
+F0
+F0
+F0
+ENDCHAR
+STARTCHAR char171
+ENCODING 171
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 5 4 0 0
+BITMAP
+78
+F0
+F0
+78
+ENDCHAR
+STARTCHAR char172
+ENCODING 172
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 2 0 1
+BITMAP
+F0
+30
+ENDCHAR
+STARTCHAR char173
+ENCODING 173
+SWIDTH 375 0
+DWIDTH 3 0
+BBX 3 1 0 1
+BITMAP
+E0
+ENDCHAR
+STARTCHAR char174
+ENCODING 174
+SWIDTH 875 0
+DWIDTH 7 0
+BBX 7 6 0 0
+BITMAP
+7C
+FE
+FE
+FE
+C6
+7C
+ENDCHAR
+STARTCHAR char175
+ENCODING 175
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 5 1 0 6
+BITMAP
+F8
+ENDCHAR
+STARTCHAR char176
+ENCODING 176
+SWIDTH 375 0
+DWIDTH 3 0
+BBX 4 3 0 3
+BITMAP
+F0
+F0
+F0
+ENDCHAR
+STARTCHAR char177
+ENCODING 177
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 5 1 0
+BITMAP
+60
+60
+F0
+60
+F0
+ENDCHAR
+STARTCHAR char178
+ENCODING 178
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 4 0 2
+BITMAP
+F0
+30
+60
+E0
+ENDCHAR
+STARTCHAR char179
+ENCODING 179
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 4 0 2
+BITMAP
+F0
+30
+30
+F0
+ENDCHAR
+STARTCHAR char180
+ENCODING 180
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 3 2 2 5
+BITMAP
+60
+C0
+ENDCHAR
+STARTCHAR char181
+ENCODING 181
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 -2
+BITMAP
+D8
+D8
+D8
+F8
+C0
+C0
+ENDCHAR
+STARTCHAR char182
+ENCODING 182
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 -1
+BITMAP
+F8
+F8
+F8
+F8
+38
+38
+ENDCHAR
+STARTCHAR char183
+ENCODING 183
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 2 1 0 2
+BITMAP
+C0
+ENDCHAR
+STARTCHAR char184
+ENCODING 184
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 2 2 1 -2
+BITMAP
+C0
+C0
+ENDCHAR
+STARTCHAR char185
+ENCODING 185
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 3 4 0 2
+BITMAP
+E0
+60
+60
+60
+ENDCHAR
+STARTCHAR char186
+ENCODING 186
+SWIDTH 375 0
+DWIDTH 3 0
+BBX 4 3 0 3
+BITMAP
+F0
+F0
+F0
+ENDCHAR
+STARTCHAR char187
+ENCODING 187
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 5 4 0 0
+BITMAP
+F0
+78
+78
+F0
+ENDCHAR
+STARTCHAR char188
+ENCODING 188
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 7 6 0 0
+BITMAP
+F8
+78
+7E
+7E
+6E
+66
+ENDCHAR
+STARTCHAR char189
+ENCODING 189
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 7 6 0 0
+BITMAP
+F8
+78
+7E
+76
+6C
+7C
+ENDCHAR
+STARTCHAR char190
+ENCODING 190
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 7 6 0 0
+BITMAP
+FC
+3C
+3E
+FE
+3E
+36
+ENDCHAR
+STARTCHAR char191
+ENCODING 191
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 -2
+BITMAP
+60
+00
+60
+C0
+C0
+F0
+ENDCHAR
+STARTCHAR char192
+ENCODING 192
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 9 0 0
+BITMAP
+60
+30
+00
+30
+78
+78
+78
+CC
+CC
+ENDCHAR
+STARTCHAR char193
+ENCODING 193
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 9 0 0
+BITMAP
+18
+30
+00
+30
+78
+78
+78
+CC
+CC
+ENDCHAR
+STARTCHAR char194
+ENCODING 194
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 9 0 0
+BITMAP
+30
+78
+00
+30
+78
+78
+78
+CC
+CC
+ENDCHAR
+STARTCHAR char195
+ENCODING 195
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 9 0 0
+BITMAP
+70
+18
+00
+30
+78
+78
+78
+CC
+CC
+ENDCHAR
+STARTCHAR char196
+ENCODING 196
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 8 0 0
+BITMAP
+78
+00
+30
+78
+78
+78
+CC
+CC
+ENDCHAR
+STARTCHAR char197
+ENCODING 197
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+38
+38
+78
+78
+78
+CC
+CC
+ENDCHAR
+STARTCHAR char198
+ENCODING 198
+SWIDTH 875 0
+DWIDTH 7 0
+BBX 7 6 0 0
+BITMAP
+3E
+38
+7E
+78
+F8
+DE
+ENDCHAR
+STARTCHAR char199
+ENCODING 199
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 8 0 -2
+BITMAP
+78
+C0
+C0
+C0
+C0
+78
+18
+18
+ENDCHAR
+STARTCHAR char200
+ENCODING 200
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 9 0 0
+BITMAP
+60
+30
+00
+F0
+C0
+F0
+C0
+C0
+F0
+ENDCHAR
+STARTCHAR char201
+ENCODING 201
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 9 0 0
+BITMAP
+30
+60
+00
+F0
+C0
+F0
+C0
+C0
+F0
+ENDCHAR
+STARTCHAR char202
+ENCODING 202
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 9 0 0
+BITMAP
+60
+F0
+00
+F0
+C0
+F0
+C0
+C0
+F0
+ENDCHAR
+STARTCHAR char203
+ENCODING 203
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 8 0 0
+BITMAP
+F0
+00
+F0
+C0
+F0
+C0
+C0
+F0
+ENDCHAR
+STARTCHAR char204
+ENCODING 204
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 3 9 0 0
+BITMAP
+C0
+60
+00
+60
+60
+60
+60
+60
+60
+ENDCHAR
+STARTCHAR char205
+ENCODING 205
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 3 9 1 0
+BITMAP
+60
+C0
+00
+C0
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char206
+ENCODING 206
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 9 0 0
+BITMAP
+60
+F0
+00
+60
+60
+60
+60
+60
+60
+ENDCHAR
+STARTCHAR char207
+ENCODING 207
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 8 0 0
+BITMAP
+F0
+00
+60
+60
+60
+60
+60
+60
+ENDCHAR
+STARTCHAR char208
+ENCODING 208
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 6 6 -1 0
+BITMAP
+78
+6C
+FC
+6C
+6C
+78
+ENDCHAR
+STARTCHAR char209
+ENCODING 209
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 9 0 0
+BITMAP
+70
+18
+00
+CC
+EC
+FC
+FC
+DC
+CC
+ENDCHAR
+STARTCHAR char210
+ENCODING 210
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 9 0 0
+BITMAP
+60
+30
+00
+78
+CC
+CC
+CC
+CC
+78
+ENDCHAR
+STARTCHAR char211
+ENCODING 211
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 9 0 0
+BITMAP
+18
+30
+00
+78
+CC
+CC
+CC
+CC
+78
+ENDCHAR
+STARTCHAR char212
+ENCODING 212
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 9 0 0
+BITMAP
+30
+78
+00
+78
+CC
+CC
+CC
+CC
+78
+ENDCHAR
+STARTCHAR char213
+ENCODING 213
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 9 0 0
+BITMAP
+70
+18
+00
+78
+CC
+CC
+CC
+CC
+78
+ENDCHAR
+STARTCHAR char214
+ENCODING 214
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 8 0 0
+BITMAP
+78
+00
+78
+CC
+CC
+CC
+CC
+78
+ENDCHAR
+STARTCHAR char215
+ENCODING 215
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 3 1 1
+BITMAP
+F0
+60
+F0
+ENDCHAR
+STARTCHAR char216
+ENCODING 216
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 6 0 0
+BITMAP
+78
+DC
+FC
+FC
+EC
+78
+ENDCHAR
+STARTCHAR char217
+ENCODING 217
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 9 0 0
+BITMAP
+60
+30
+00
+CC
+CC
+CC
+CC
+CC
+78
+ENDCHAR
+STARTCHAR char218
+ENCODING 218
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 9 0 0
+BITMAP
+18
+30
+00
+CC
+CC
+CC
+CC
+CC
+78
+ENDCHAR
+STARTCHAR char219
+ENCODING 219
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 9 0 0
+BITMAP
+30
+78
+00
+CC
+CC
+CC
+CC
+CC
+78
+ENDCHAR
+STARTCHAR char220
+ENCODING 220
+SWIDTH 750 0
+DWIDTH 6 0
+BBX 6 8 0 0
+BITMAP
+78
+00
+CC
+CC
+CC
+CC
+CC
+78
+ENDCHAR
+STARTCHAR char221
+ENCODING 221
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 6 9 -1 0
+BITMAP
+18
+30
+00
+CC
+78
+78
+30
+30
+30
+ENDCHAR
+STARTCHAR char222
+ENCODING 222
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 0
+BITMAP
+C0
+F0
+D8
+D8
+F0
+C0
+ENDCHAR
+STARTCHAR char223
+ENCODING 223
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 0
+BITMAP
+F8
+D8
+F0
+F0
+D8
+F8
+ENDCHAR
+STARTCHAR char224
+ENCODING 224
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 7 0 0
+BITMAP
+60
+30
+00
+F0
+30
+F0
+F0
+ENDCHAR
+STARTCHAR char225
+ENCODING 225
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 7 0 0
+BITMAP
+30
+60
+00
+F0
+30
+F0
+F0
+ENDCHAR
+STARTCHAR char226
+ENCODING 226
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 7 0 0
+BITMAP
+60
+F0
+00
+F0
+30
+F0
+F0
+ENDCHAR
+STARTCHAR char227
+ENCODING 227
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 7 0 0
+BITMAP
+E0
+30
+00
+F0
+30
+F0
+F0
+ENDCHAR
+STARTCHAR char228
+ENCODING 228
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+F0
+00
+F0
+30
+F0
+F0
+ENDCHAR
+STARTCHAR char229
+ENCODING 229
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 7 0 0
+BITMAP
+70
+70
+00
+F0
+30
+F0
+F0
+ENDCHAR
+STARTCHAR char230
+ENCODING 230
+SWIDTH 875 0
+DWIDTH 7 0
+BBX 7 4 0 0
+BITMAP
+FE
+1E
+F8
+FE
+ENDCHAR
+STARTCHAR char231
+ENCODING 231
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 -2
+BITMAP
+70
+C0
+C0
+70
+30
+30
+ENDCHAR
+STARTCHAR char232
+ENCODING 232
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 7 0 0
+BITMAP
+60
+30
+00
+F0
+F0
+C0
+F0
+ENDCHAR
+STARTCHAR char233
+ENCODING 233
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 7 0 0
+BITMAP
+30
+60
+00
+F0
+F0
+C0
+F0
+ENDCHAR
+STARTCHAR char234
+ENCODING 234
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 7 0 0
+BITMAP
+60
+F0
+00
+F0
+F0
+C0
+F0
+ENDCHAR
+STARTCHAR char235
+ENCODING 235
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 6 0 0
+BITMAP
+F0
+00
+F0
+F0
+C0
+F0
+ENDCHAR
+STARTCHAR char236
+ENCODING 236
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 3 7 -1 0
+BITMAP
+C0
+60
+00
+60
+60
+60
+60
+ENDCHAR
+STARTCHAR char237
+ENCODING 237
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 3 7 0 0
+BITMAP
+60
+C0
+00
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR char238
+ENCODING 238
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 4 7 -1 0
+BITMAP
+60
+F0
+00
+60
+60
+60
+60
+ENDCHAR
+STARTCHAR char239
+ENCODING 239
+SWIDTH 250 0
+DWIDTH 2 0
+BBX 4 6 -1 0
+BITMAP
+F0
+00
+60
+60
+60
+60
+ENDCHAR
+STARTCHAR char240
+ENCODING 240
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 0
+BITMAP
+78
+70
+78
+D8
+D8
+70
+ENDCHAR
+STARTCHAR char241
+ENCODING 241
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+70
+18
+00
+F8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR char242
+ENCODING 242
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+60
+30
+00
+70
+D8
+D8
+70
+ENDCHAR
+STARTCHAR char243
+ENCODING 243
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+18
+30
+00
+70
+D8
+D8
+70
+ENDCHAR
+STARTCHAR char244
+ENCODING 244
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+30
+78
+00
+70
+D8
+D8
+70
+ENDCHAR
+STARTCHAR char245
+ENCODING 245
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+70
+18
+00
+70
+D8
+D8
+70
+ENDCHAR
+STARTCHAR char246
+ENCODING 246
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 0
+BITMAP
+78
+00
+70
+D8
+D8
+70
+ENDCHAR
+STARTCHAR char247
+ENCODING 247
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 5 1 0
+BITMAP
+60
+00
+F0
+00
+60
+ENDCHAR
+STARTCHAR char248
+ENCODING 248
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 4 0 0
+BITMAP
+70
+F8
+F8
+70
+ENDCHAR
+STARTCHAR char249
+ENCODING 249
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+60
+30
+00
+D8
+D8
+D8
+F8
+ENDCHAR
+STARTCHAR char250
+ENCODING 250
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+18
+30
+00
+D8
+D8
+D8
+F8
+ENDCHAR
+STARTCHAR char251
+ENCODING 251
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 7 0 0
+BITMAP
+30
+78
+00
+D8
+D8
+D8
+F8
+ENDCHAR
+STARTCHAR char252
+ENCODING 252
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 6 0 0
+BITMAP
+78
+00
+D8
+D8
+D8
+F8
+ENDCHAR
+STARTCHAR char253
+ENCODING 253
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 9 0 -2
+BITMAP
+30
+60
+00
+F0
+F0
+F0
+60
+60
+C0
+ENDCHAR
+STARTCHAR char254
+ENCODING 254
+SWIDTH 625 0
+DWIDTH 5 0
+BBX 5 8 0 -2
+BITMAP
+C0
+C0
+F0
+D8
+D8
+F0
+C0
+C0
+ENDCHAR
+STARTCHAR char255
+ENCODING 255
+SWIDTH 500 0
+DWIDTH 4 0
+BBX 4 8 0 -2
+BITMAP
+F0
+00
+F0
+F0
+F0
+60
+60
+C0
+ENDCHAR
+ENDFONT
diff --git a/ui/fonts/DroidSansBold9x11.h b/ui/fonts/DroidSansBold9x11.h
new file mode 100644 (file)
index 0000000..056eb22
--- /dev/null
@@ -0,0 +1,261 @@
+/* -FreeType-Droid Sans-Bold-R-Normal--8-60-96-96-P-44-ISO10646-1 */
+#define FONT_WIDTH_Droid SansBold_9x11 9
+#define FONT_HEIGHT_Droid SansBold_9x11        11
+const uint8_t FONT_DATA_Droid SansBold_9x11[256][23] = {
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x7e,0x00,0x7e,0x00,0x1c,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x0e,0x00,0x0e,0x00,0x1c,0x00,0x1c,0x00,0x1e,0x00,0x0c,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x00,0x3e,0x00,0xfe,0x00,0xfe,0x00,0xf8,0x00,0xec,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x1c,0x00,0xde,0x00,0x76,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x03,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x3c,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x0c,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0e,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x18,0x00,0x0c,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x0c,0x00,0x18,0x00,0x18,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x1c,0x00,0x1e,0x00,0x3e,0x00,0x18,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x18,0x00,0x18,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x06,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x18,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x18,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x0e,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x0c,0x00,0x1c,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x18,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0xc6,0x00,0xfe,0x00,0xfe,0x00,0xfe,0x00,0x06,0x00,0x7c,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x3e,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x06,0x00,0x06,0x00,0x76,0x00,0x66,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x7e,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x03,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x1e,0x00,0x0e,0x00,0x1e,0x00,0x1e,0x00,0x36,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x00,0x86,0x01,0xce,0x01,0xce,0x01,0xfe,0x01,0xfe,0x01,0xb6,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x6e,0x00,0x7e,0x00,0x7e,0x00,0x76,0x00,0x66,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x30,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x1e,0x00,0x36,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x0e,0x00,0x18,0x00,0x18,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x18,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x00,0xb6,0x01,0xfe,0x01,0xfe,0x01,0xfe,0x01,0xec,0x00,0xcc,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x1c,0x00,0x1c,0x00,0x1c,0x00,0x1e,0x00,0x36,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x18,0x00,0x18,0x00,0x0c,0x00,0x0c,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x1c,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x0c,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x18,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x06,0x00,0x06,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x3c,0x00,0x36,0x00,0x36,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x06,0x00,0x0e,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x1e,0x00,0x1e,0x00,0x3c,0x00,0x36,0x00,0x3e,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x3e,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x0e,0x00,0x0e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x01,0xb6,0x01,0xb6,0x01,0xb6,0x01,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x36,0x00,0x36,0x00,0x3c,0x00,0x30,0x00,0x30,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x0e,0x00,0x18,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x0e,0x00,0x06,0x00,0x06,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x7e,0x00,0x3e,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x06,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x06,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x18,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0c,0x00,0x0c,0x00,0x1c,0x00,0x18,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x0c,0x00,0x0c,0x00,0x1e,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x1e,0x00,0x0e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x0e,0x00,0x1e,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0xfe,0x00,0xde,0x00,0xfe,0x00,0xc6,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x1e,0x00,0x1e,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0xfe,0x00,0xfe,0x00,0xfe,0x00,0xc6,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x3c,0x00,0x18,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x0c,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x18,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x30,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x06,0x00,0x06,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x3e,0x00,0x3e,0x00,0x3e,0x00,0x38,0x00,0x38,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x3c,0x00,0x3c,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x3c,0x00,0xfc,0x00,0xfc,0x00,0xec,0x00,0xcc,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x3c,0x00,0xfc,0x00,0xdc,0x00,0x6c,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x78,0x00,0xf8,0x00,0xfe,0x00,0xf8,0x00,0xd8,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,},
+{/*w*/6,0x0c,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x30,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x18,0x00,0x3c,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x1c,0x00,0x30,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x3c,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x38,0x00,0xfc,0x00,0x3c,0x00,0x3e,0x00,0xf6,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x3c,0x00,0x30,0x00,0x30,0x00,},
+{/*w*/4,0x0c,0x00,0x18,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x18,0x00,0x0c,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x0c,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x06,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x18,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x0c,0x00,0x1e,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x1e,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x36,0x00,0x3f,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x1c,0x00,0x30,0x00,0x00,0x00,0x66,0x00,0x6e,0x00,0x7e,0x00,0x7e,0x00,0x76,0x00,0x66,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x0c,0x00,0x18,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x30,0x00,0x18,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x18,0x00,0x3c,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x1c,0x00,0x30,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x3c,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x18,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x76,0x00,0x7e,0x00,0x7e,0x00,0x6e,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x0c,0x00,0x18,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x30,0x00,0x18,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x18,0x00,0x3c,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/6,0x00,0x00,0x3c,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x18,0x00,0x0c,0x00,0x00,0x00,0x33,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x1e,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x06,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x1e,0x00,0x1e,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x0e,0x00,0x18,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x1c,0x00,0x1c,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0xf0,0x00,0x3e,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x06,0x00,0x06,0x00,0x1c,0x00,0x18,0x00,0x18,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x03,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x0c,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x06,0x00,0x0f,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x1c,0x00,0x3c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x1c,0x00,0x30,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x30,0x00,0x18,0x00,0x00,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x00,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x1c,0x00,0x30,0x00,0x00,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x3e,0x00,0x3e,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x30,0x00,0x18,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x06,0x00,},
+{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,},
+{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x06,0x00,},
+};
index 5cb5437508220080144a635f78c348f17b27b350..9d7e57581786022feba8e2401a99cf6268c71208 100644 (file)
@@ -491,6 +491,11 @@ boolean hal_vibration_get_state(void)
        return VibrationState;
 }
 
+uint16_t hal_amblight_get_val(void)
+{
+        return 42;
+} 
+
 
 int main(int argc , char ** argv)
 {
index 8d16b2e3b01b8f9f6f7c6d67264dd73c564f6324..dd61eed982df7c264859e9f459bf68b9f37af42f 100644 (file)
@@ -53,12 +53,15 @@ typedef struct {
 
 typedef enum {
        IDLE_SCREEN = 0,
+       MAIN_MENU_SCREEN,
        ALARM_SETUP_SCREEN,
        STOP_WATCH_SCREEN,
        BLUETOOTH_SCREEN,
        ACCEL_DISPLAY_SCREEN,
+       MESSAGES_SCREEN,
        INFO_SCREEN,
        LAST_SCREEN,            // a marker for the last (not valid) screen)
+       MESSAGE_SCREEN,
        MENU_TEST_SCREEN,
        APPLICATION_SCREEN,
        DATETIME_SETTING_SCREEN,
index 12a2a6bae9d0f3adabf730373382e7c08ee36236..7f8419c6cc001082b8ef85c2d627840c9c3a6afb 100644 (file)
@@ -28,7 +28,7 @@ __attribute__((__far__))
 #if defined(__GNUC__) && (__MSP430X__ > 0)
 __attribute__((__far__))
 #endif
-#include "fonts/DroidSans-Bold11x14.h"
+#include "fonts/DroidSansBold8x12.h"
 
 const oswald_font oswald_fonts[LAST_FONT] = {
        {
@@ -58,8 +58,8 @@ const oswald_font oswald_fonts[LAST_FONT] = {
                (uint8_t *)FONT_DATA_Droid_SansMedium_8x12
        }, {
                FONT_TYPE_PROPORTIONAL,
-               FONT_WIDTH_Droid_SansBold_11x14,
-               FONT_HEIGHT_Droid_SansBold_11x14,
-               (uint8_t *)FONT_DATA_Droid_SansBold_11x14
+               FONT_WIDTH_Droid_SansBold_8x12,
+               FONT_HEIGHT_Droid_SansBold_8x12,
+               (uint8_t *)FONT_DATA_Droid_SansBold_8x12
        },
 };
index 0ca914da581d54041ff1b7b9f4af0e5b1140f931..0a15a5ed0ac163e6f29a30162fcef57b191e88ba 100644 (file)
@@ -14,7 +14,7 @@ typedef enum {
        FONT_5x7,
        FONT_6x9,
        FONT_DROID8x12,
-       FONT_DROID11x14b,
+       FONT_DROID8x12b,
        LAST_FONT
 } oswald_font_face;
 
index e64476d61ed50f26a8c1cc4e886a3b7c0f040591..651d8e8b38a9e787d36826102abb7104fbf6edf0 100644 (file)
@@ -6,12 +6,19 @@
 #include "oswald_graphics.h"
 
 
-void oswald_draw_pixel(const unsigned int xstart, const unsigned int ystart)
+#if 0
+void oswald_draw_pixel(const unsigned int xstart, const unsigned int ystart, uint8_t color)
 {
        hal_lcd_set_pixel(xstart, ystart, TRUE);
 }
+#endif
 
-void oswald_draw_bitmap_opts(const unsigned int xstart, const unsigned int ystart, const unsigned int xoff, const unsigned int yoff, const unsigned int width, const unsigned int height, const unsigned int bmp_width, const unsigned int bmp_height, const void *bmp)
+void oswald_draw_bitmap_opts(const unsigned int xstart, const unsigned int ystart,
+               const unsigned int xoff, const unsigned int yoff,
+               const unsigned int width, const unsigned int height,
+               const boolean invert,
+               const unsigned int bmp_width, const unsigned int bmp_height,
+               const void *bmp)
 {
        unsigned int x, y;
        uint8_t *cb;
@@ -28,55 +35,19 @@ void oswald_draw_bitmap_opts(const unsigned int xstart, const unsigned int ystar
                        cb = (uint8_t *)(bmp + (y * ((bmp_width / 8) + ((bmp_width % 8) ? 1 : 0))) + (x / 8));
                        // g_printerr("dat %02x %02x %02x\n", (uint8_t)cb[0], (uint8_t)cb[1], (uint8_t)cb[2]);
                        if (*cb & (1 << (x % 8))) {
-                               hal_lcd_set_pixel((xstart + x) - xoff, (ystart + y) - yoff, TRUE);
+                               if (!invert)
+                                       hal_lcd_set_pixel((xstart + x) - xoff, (ystart + y) - yoff, TRUE);
                                // g_printerr("X");
-                       } /*else {
-                               g_printerr(".");
-                       }*/
+                       } else {
+                               if (invert)
+                                       hal_lcd_set_pixel((xstart + x) - xoff, (ystart + y) - yoff, TRUE);
+                               // g_printerr(".");
+                       }
                }
                //g_printerr("\n");
        }
 }
 
-#if 0
-/*inline*/ void oswald_draw_bitmap(const unsigned int xstart, const unsigned int ystart, const unsigned int width, const unsigned int height, const void *bmp)
-{
-       unsigned int x, y;
-       uint8_t *cb;
-
-       // we only draw set pixel, unset pixel remain as they are
-       for (y=0; y<height; y++) {
-               for (x=0; x<width; x++) {
-                       cb = (uint8_t *)(bmp + (y * ((width / 8) + ((width % 8) ? 1 : 0))) + (x / 8));
-                       if (*cb & (1 << (x % 8)))
-                               hal_lcd_set_pixel((xstart + x), (ystart + y), TRUE);
-               }
-       }
-}
-#else
-void oswald_draw_bitmap(const unsigned int xstart, const unsigned int ystart, const unsigned int width, const unsigned int height, const void *bmp)
-{
-       // seems we are triggering a MSPGCC compiler bug here...
-       // if we do not do this trick then bmp becomes 0x00 when passed a livel higher!
-       volatile unsigned int num;
-
-       num = (unsigned int) bmp;
-
-       oswald_draw_bitmap_opts(xstart, ystart, 0, 0, width, height, width, height, bmp);
-}
-
-void oswald_draw_bitmap_size(const unsigned int xstart, const unsigned int ystart, const unsigned int width, const unsigned int height, const unsigned int bmp_width, const unsigned int bmp_height, const void *bmp)
-{
-       // seems we are triggering a MSPGCC compiler bug here...
-       // if we do not do this trick then bmp becomes 0x00 when passed a livel higher!
-       volatile unsigned int num;
-
-       num = (unsigned int) bmp;
-
-       oswald_draw_bitmap_opts(xstart, ystart, 0, 0, width, height, bmp_width, bmp_height, bmp);
-}
-#endif
-
 void oswald_draw_line(const uint8_t xstart, const uint8_t ystart, const uint8_t xend, const uint8_t yend)
 {
        int x, y, t, dx, dy, incx, incy, pdx, pdy, ddx, ddy, es, el, err;
@@ -119,7 +90,6 @@ void oswald_draw_line(const uint8_t xstart, const uint8_t ystart, const uint8_t
                }
                hal_lcd_set_pixel(x, y, TRUE);
        }
-       // hal_lcd_update_display();
 }
 
 void oswald_draw_line_ww(const uint8_t xstart, const uint8_t ystart, const uint8_t xend, const uint8_t yend, const uint8_t thickness)
@@ -182,45 +152,21 @@ void oswald_draw_line_ww(const uint8_t xstart, const uint8_t ystart, const uint8
                        hal_lcd_set_pixel(x, y+i, TRUE);
                }
        }
-       // hal_lcd_update_display();
 }
 
-uint8_t oswald_write_character(const uint8_t x, const uint8_t y, const oswald_font_face face, const uint8_t Character)
+uint8_t oswald_write_character(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, const uint8_t Character)
 {
-#if 0
-       u8t CharacterHeight = GetCharacterHeight();
-       u8t CharacterWidth = GetCharacterWidth(Character);
-       u16t bitmap[MAX_FONT_ROWS];
-       register lx, ly;
-
-       GetCharacterBitmap(Character, bitmap);
-
-       // printf("cw=%d ch=%d\n", CharacterWidth, CharacterHeight);
-       for (ly=0; ly<CharacterHeight; ly++) {
-               for (lx=0; lx<CharacterWidth; lx++) {
-                       if (bitmap[ly] & (1<<lx)) {
-                               hal_lcd_set_pixel(lx+x, ly+y, TRUE);
-                               // printf(".");
-                       } /*else {
-                               hal_lcd_set_pixel(lx+x, ly+y, FALSE);
-                               // printf(" ");
-                       }*/
-               }
-               // printf("\n");
-       }
-
-       return CharacterWidth + GetFontSpacing();
-#else
        uint8_t *cdata = oswald_fonts[face].data;
        uint8_t cwidth;
        int csize;
 
-       if (Character == 32) // space / blank
-               return oswald_fonts[face].width / 2;
+//     if (Character == 32) { // space, blank no need to draw one ;)
+//             return oswald_fonts[face].width / 2;
+//     }
 
        csize = ((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0)) * oswald_fonts[face].height;
        if (oswald_fonts[face].font_type == FONT_TYPE_PROPORTIONAL)
-               csize += 1;
+               csize += 1; // at least 1px spacing
 
        //csize += (oswald_fonts[face].height / 8) + ((oswald_fonts[face].height % 8) ? 1 : 0);
 
@@ -235,20 +181,22 @@ uint8_t oswald_write_character(const uint8_t x, const uint8_t y, const oswald_fo
        // oswald_draw_bitmap(x, y, oswald_fonts[face].height, oswald_fonts[face].height, cdata);
        if (oswald_fonts[face].font_type == FONT_TYPE_MONOSPACE) {
                cwidth = oswald_fonts[face].width;
-               oswald_draw_bitmap(x, y, ((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0))*8, oswald_fonts[face].height, (uint8_t *)cdata);
-       }
-       if (oswald_fonts[face].font_type == FONT_TYPE_PROPORTIONAL) {
+               //oswald_draw_bitmap(x, y, ((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0)) * 8, oswald_fonts[face].height, (uint8_t *)cdata);
+               oswald_draw_bitmap_opts(x,y,0,0,((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0)) * 8,oswald_fonts[face].height,invert,((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0)) * 8,oswald_fonts[face].height,(uint8_t *)cdata);
+       } else if (oswald_fonts[face].font_type == FONT_TYPE_PROPORTIONAL) {
                cwidth = cdata[0];
                cdata++;
-               oswald_draw_bitmap_size(x, y, cwidth+1, oswald_fonts[face].height, ((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0))*8, oswald_fonts[face].height, (uint8_t *)cdata);
+               // oswald_draw_bitmap_size(x, y, (cwidth+1), oswald_fonts[face].height, ((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0))*8, oswald_fonts[face].height, (uint8_t *)cdata);
+               oswald_draw_bitmap_opts(x,y,0,0,(cwidth+1),oswald_fonts[face].height,invert,((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0))*8,oswald_fonts[face].height,(uint8_t *)cdata);
+       } else {
+               cwidth = 0;
        }
        // oswald_draw_bitmap_offset(x, y, (oswald_fonts[face].width % 8) > 0 ? (8-(oswald_fonts[face].width % 8)) : 0, 0, ((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0))*8, oswald_fonts[face].height, cdata);
 
        return cwidth;
-#endif
 }
 
-void oswald_write_string(const uint8_t x, const uint8_t y, const oswald_font_face face, char *str)
+void oswald_write_string(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, char *str)
 {
        uint8_t lx, i, strl;
 
@@ -258,12 +206,29 @@ void oswald_write_string(const uint8_t x, const uint8_t y, const oswald_font_fac
 
        lx = x;
        for (i=0; i<strl; i++) {
-               lx += oswald_write_character(lx, y, face, str[i]);
+               lx += oswald_write_character(lx, y, face, invert, str[i]);
        }
 }
 
+uint8_t oswald_write_string_length(const uint8_t x, const uint8_t y, const uint8_t len, const oswald_font_face face, const boolean invert, char *str)
+{
+       uint8_t lx, i, strl;
+
+       strl = oswald_strlen(str);
+       if (strl == 0)
+               return;
 
-void oswald_write_number(const uint8_t x, const uint8_t y, const oswald_font_face face, const int16_t number)
+       lx = x;
+       for (i=0; i<strl; i++) {
+               lx += oswald_write_character(lx, y, face, invert, str[i]);
+               if (lx > len)
+                       break;
+       }
+
+       return (i+1);
+}
+
+void oswald_write_number(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, const int16_t number)
 {
        uint8_t lx, i, strl;
        char str[8];
@@ -275,8 +240,7 @@ void oswald_write_number(const uint8_t x, const uint8_t y, const oswald_font_fac
 
        lx = x;
        for (i=0; i<strl; i++) {
-               lx += oswald_write_character(lx, y, face, str[i]);
+               lx += oswald_write_character(lx, y, face, invert, str[i]);
        }
 }
 
-
index cea57cb5adc666a3b6c5c1bcdb2849eca938b0e3..d23ebcb7c6fcb23b9f19b963e8a5610dd4cef5de 100644 (file)
@@ -6,21 +6,43 @@
 #include "oswald_fonts.h"
 
 #include "oswald_graphics.h"
-// #include "Fonts.h"
 
 
-void oswald_draw_pixel(const unsigned int xstart, const unsigned int ystart);
+#define COLOR_WHITE    0
+//#define COLOR_BLACK  1
+#define COLOR_XOR      2
+#define COLOR_INV      3
 
-void oswald_draw_bitmap(const unsigned int xstart, const unsigned int ystart, const unsigned int width, const unsigned int height, const void *bmp);
+
+#define oswald_draw_pixel(xstart, ystart, color) \
+       hal_lcd_set_pixel(xstart, ystart, color)
+
+void oswald_draw_bitmap_opts(const unsigned int xstart, const unsigned int ystart,
+               const unsigned int xoff, const unsigned int yoff,
+               const unsigned int width, const unsigned int height,
+               const boolean invert,
+               const unsigned int bmp_width, const unsigned int bmp_height,
+               const void *bmp);
+
+#define oswald_draw_bitmpa_invert_opt(x,y,w,h,d,i) \
+       oswald_draw_bitmap_opts(x,y,0,0,w,h,i,w,h,d)
+
+#define oswald_draw_bitmap(x,y,w,h,d) \
+       oswald_draw_bitmap_opts(x,y,0,0,w,h,FALSE,w,h,d)
+
+#define oswald_draw_bitmap_size(x, y, w, h, bw, bh, d) \
+       oswald_draw_bitmap_opts(x,y,0,0,w,h,FALSE,bw,bh,d)
 
 void oswald_draw_line(const uint8_t xstart, const uint8_t ystart, const uint8_t xend, const uint8_t yend);
 
 void oswald_draw_line_ww(const uint8_t xstart, const uint8_t ystart, const uint8_t xend, const uint8_t yend, const uint8_t thickness);
 
-uint8_t oswald_write_character(const uint8_t x, const uint8_t y, const oswald_font_face face, const uint8_t Character);
+uint8_t oswald_write_character(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, const uint8_t Character);
+
+void oswald_write_string(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, char *str);
 
-void oswald_write_string(const uint8_t x, const uint8_t y, const oswald_font_face face, char *str);
+uint8_t oswald_write_string_length(const uint8_t x, const uint8_t y, const uint8_t len, const oswald_font_face face, const boolean invert, char *str);
 
-void oswald_write_number(const uint8_t x, const uint8_t y, const oswald_font_face face, const int16_t number);
+void oswald_write_number(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, const int16_t number);
 
 #endif
index bc7a715f4f8f007aa5a15598de0cf24cae72d500..d8d28cf38ffbfc196f97ce4883256b3371bb5d89 100644 (file)
@@ -40,5 +40,6 @@ void hal_bluetooth_send_data(const void *mdat, uint16_t mlen);
 void hal_accelerometer_enable(void);
 void hal_accelerometer_disable(void);
 
-#endif
+uint16_t hal_amblight_get_val(void);
 
+#endif
index f26603b9e4a085c9947d659cfef4a5f2d21be5e8..2f8583ad104b34c24d12f944afb26f4cb9beb926 100644 (file)
@@ -116,11 +116,15 @@ void oswald_handle_button_press(watch_button button)
                                        break;
                        }
                        OswaldState.screen->event_func(EVENT_SCREEN_DESTROY, NULL);
+#if 0
                        // next screen
                        OswaldState.screen_id++;
                        if (OswaldState.screen_id >= LAST_SCREEN) {
                                OswaldState.screen_id = IDLE_SCREEN;
                        };
+#else
+                       OswaldState.screen_id = IDLE_SCREEN;
+#endif
                        OswaldState.screen = &OswaldScreens[OswaldState.screen_id];
                        OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL);
                        break;
@@ -170,6 +174,9 @@ void oswald_handle_comm_input(uint16_t mlen, const void *mdat)
                        snprintf(rtime, 16, "#RTC%02d%02d%02d\n", OswaldClk.hour, OswaldClk.minute, OswaldClk.second);
                        hal_bluetooth_send_data(rtime, strlen(rtime));
                } else if (strncmp(icmd, "$SRT", 4) == 0) { // set current RTC
+                       char rtime[16];
+                       snprintf(rtime, 16, "#USP\n");
+                       hal_bluetooth_send_data(rtime, strlen(rtime));
                } else if (strncmp(icmd, "$MSG", 4) == 0) { // message on main screen
                        char *msg = (icmd+4);
                        mlen -= 4;
@@ -181,6 +188,10 @@ void oswald_handle_comm_input(uint16_t mlen, const void *mdat)
                        char rtime[16];
                        snprintf(rtime, 16, "#BAT%d,%d\n", OswaldPowerState.charge_state, OswaldPowerState.percent);
                        hal_bluetooth_send_data(rtime, strlen(rtime));
+               } else if (strncmp(icmd, "$GAL", 4) == 0) { // get ambient light value
+                       char rtime[16];
+                       snprintf(rtime, 16, "#GAL%d\n", hal_amblight_get_val());
+                       hal_bluetooth_send_data(rtime, strlen(rtime));
                }
        }
 }
@@ -190,30 +201,39 @@ void oswald_init(void)
        OswaldScreens[IDLE_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ONE_SEC_TIMER;
        OswaldScreens[IDLE_SCREEN].event_func = idle_handle_events;
 
-       OswaldScreens[ACCEL_DISPLAY_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ACCEL_UPDATE;
-       OswaldScreens[ACCEL_DISPLAY_SCREEN].event_func = accel_handle_events;
-
-       OswaldScreens[DATETIME_SETTING_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER;
-       OswaldScreens[DATETIME_SETTING_SCREEN].event_func = datetime_setup_events;
+       OswaldScreens[MAIN_MENU_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ONE_SEC_TIMER;
+       OswaldScreens[MAIN_MENU_SCREEN].event_func = main_menu_handle_events;
 
        OswaldScreens[ALARM_SETUP_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER;
        OswaldScreens[ALARM_SETUP_SCREEN].event_func = alarm_setup_events;
 
-       OswaldScreens[MENU_TEST_SCREEN].event_mask = EVENT_USER_BUTTONS;
-       OswaldScreens[MENU_TEST_SCREEN].event_func = test_menu_handle_events;
-
        OswaldScreens[STOP_WATCH_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_CS_TIMER;
        OswaldScreens[STOP_WATCH_SCREEN].event_func = stop_watch_handle_events;
 
        OswaldScreens[BLUETOOTH_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER;
        OswaldScreens[BLUETOOTH_SCREEN].event_func = bluetooth_screen_events;
 
-       OswaldScreens[ALARM_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER;
-       OswaldScreens[ALARM_SCREEN].event_func = alarm_handle_events;
+       OswaldScreens[ACCEL_DISPLAY_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ACCEL_UPDATE;
+       OswaldScreens[ACCEL_DISPLAY_SCREEN].event_func = accel_handle_events;
+
+       OswaldScreens[MESSAGES_SCREEN].event_mask = EVENT_USER_BUTTONS;
+       OswaldScreens[MESSAGES_SCREEN].event_func = messages_screen_handle_events;
+
+       OswaldScreens[MESSAGE_SCREEN].event_mask = EVENT_USER_BUTTONS;
+       OswaldScreens[MESSAGE_SCREEN].event_func = message_screen_handle_events;
 
        OswaldScreens[INFO_SCREEN].event_mask = 0x00; // this one does not consume any events
        OswaldScreens[INFO_SCREEN].event_func = info_screen_handle_events;
 
+       OswaldScreens[DATETIME_SETTING_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER;
+       OswaldScreens[DATETIME_SETTING_SCREEN].event_func = datetime_setup_events;
+
+       OswaldScreens[MENU_TEST_SCREEN].event_mask = EVENT_USER_BUTTONS;
+       OswaldScreens[MENU_TEST_SCREEN].event_func = test_menu_handle_events;
+
+       OswaldScreens[ALARM_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER;
+       OswaldScreens[ALARM_SCREEN].event_func = alarm_handle_events;
+
        OswaldState.screen_id = IDLE_SCREEN;
        OswaldState.screen = &OswaldScreens[OswaldState.screen_id];
 
@@ -224,6 +244,5 @@ void oswald_init(void)
        OswaldAlarm.minute = 0;
        OswaldAlarm.wday = 0x00;
 
-       // strcpy(MainMessage, "So koennte dann eine Nachricht aussehen. Samt Text mit Unterlaengen. Und dies ist dann die letzte Zeile und mehr Text als paßt.");
 }
 
index 5a29d39f3eeb0b96e7c0a26f38fcdc151a6839c5..ab7140847b2bc4e6d9aac37779b284045e4eefa6 100644 (file)
 #if defined(__GNUC__) && (__MSP430X__ > 0)
 __attribute__((__far__))
 #endif
-#include "bitmaps/timesetup_icon.xbm"
+#include "bitmaps/startstopbutton_icon.xbm"
 
 #if defined(__GNUC__) && (__MSP430X__ > 0)
 __attribute__((__far__))
 #endif
-#include "bitmaps/stopwatch_icon.xbm"
+#include "bitmaps/lapsebutton_icon.xbm"
 
 #if defined(__GNUC__) && (__MSP430X__ > 0)
 __attribute__((__far__))
 #endif
-#include "bitmaps/alarm_icon.xbm"
+#include "bitmaps/upbutton_icon.xbm"
 
 #if defined(__GNUC__) && (__MSP430X__ > 0)
 __attribute__((__far__))
 #endif
-#include "bitmaps/startstopbutton_icon.xbm"
+#include "bitmaps/downbutton_icon.xbm"
 
 #if defined(__GNUC__) && (__MSP430X__ > 0)
 __attribute__((__far__))
 #endif
-#include "bitmaps/lapsebutton_icon.xbm"
+#include "bitmaps/leftbutton_icon.xbm"
 
 #if defined(__GNUC__) && (__MSP430X__ > 0)
 __attribute__((__far__))
 #endif
-#include "bitmaps/upbutton_icon.xbm"
+#include "bitmaps/rightbutton_icon.xbm"
 
 #if defined(__GNUC__) && (__MSP430X__ > 0)
 __attribute__((__far__))
 #endif
-#include "bitmaps/downbutton_icon.xbm"
+#include "bitmaps/enterbutton_icon.xbm"
+
+#if defined(__GNUC__) && (__MSP430X__ > 0)
+__attribute__((__far__))
+#endif
+#include "bitmaps/checked_icon.xbm"
+
+#if defined(__GNUC__) && (__MSP430X__ > 0)
+__attribute__((__far__))
+#endif
+#include "bitmaps/unchecked_icon.xbm"
+
+#if defined(__GNUC__) && (__MSP430X__ > 0)
+__attribute__((__far__))
+#endif
+#include "bitmaps/main_menu_icon.xbm"
+
+#if defined(__GNUC__) && (__MSP430X__ > 0)
+__attribute__((__far__))
+#endif
+#include "bitmaps/timesetup_icon.xbm"
+
+#if defined(__GNUC__) && (__MSP430X__ > 0)
+__attribute__((__far__))
+#endif
+#include "bitmaps/stopwatch_icon.xbm"
+
+#if defined(__GNUC__) && (__MSP430X__ > 0)
+__attribute__((__far__))
+#endif
+#include "bitmaps/alarm_icon.xbm"
 
 #if defined(__GNUC__) && (__MSP430X__ > 0)
 __attribute__((__far__))
@@ -58,6 +88,15 @@ __attribute__((__far__))
 #endif
 #include "bitmaps/acc_icon.xbm"
 
+#if defined(__GNUC__) && (__MSP430X__ > 0)
+__attribute__((__far__))
+#endif
+#include "bitmaps/Message_icon.xbm"
+
+#if defined(__GNUC__) && (__MSP430X__ > 0)
+__attribute__((__far__))
+#endif
+#include "bitmaps/Exit_icon.xbm"
 
 
 /*
@@ -93,7 +132,10 @@ event_ret_t idle_handle_user_buttons(watch_button button)
                        };
                        break;
                case BUTTON_C:
-                       return EVENT_RET_UNHANDLED;
+                       OswaldState.screen_id = MAIN_MENU_SCREEN;
+                       OswaldState.screen = &OswaldScreens[OswaldState.screen_id];
+                       OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL);
+                       return EVENT_RET_HANDLED;
                        break;
                case BUTTON_F:
                        OswaldState.screen_id = DATETIME_SETTING_SCREEN;
@@ -131,6 +173,141 @@ event_ret_t idle_handle_events(uint16_t event, void *data)
 }
 
 
+/*
+ * Main Menu Screen
+ */
+typedef struct {
+       int8_t pos;
+       uint8_t tmo;
+} main_menu_data_t;
+static main_menu_data_t main_menu_screen = {
+       ALARM_SETUP_SCREEN,
+       0,
+};
+
+#define MAIN_MENU_GRID_PIXEL   84
+#define MAIN_MENU_GRID_X       3
+// GRID_Y is +1 since there is one empty row for title icon
+#define MAIN_MENU_GRID_Y       3
+#define MAIN_MENU_GRID_SPACING 0
+#define MAIN_MENU_OFFSET_X     3
+#define MAIN_MENU_OFFSET_Y     10
+
+void draw_main_menu_screen(main_menu_data_t *sdata)
+{
+       uint8_t pf = sdata->pos - 2;
+
+       hal_lcd_clear_display();
+
+//     oswald_draw_bitmap(36, 0, main_menu_icon_width, main_menu_icon_height, main_menu_icon_bits);
+
+       oswald_draw_bitmap(81, 6, rightbutton_icon_width, rightbutton_icon_height, rightbutton_icon_bits);
+       oswald_draw_bitmap(81, 38, leftbutton_icon_width, leftbutton_icon_height, leftbutton_icon_bits);
+       oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits);
+
+       oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((0+1) * MAIN_MENU_GRID_SPACING) + (0 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)),
+               MAIN_MENU_OFFSET_Y+(0 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)),
+               alarm_icon_width, alarm_icon_height, alarm_icon_bits, (sdata->pos == ALARM_SETUP_SCREEN));
+       oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((1+1) * MAIN_MENU_GRID_SPACING) + (1 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)),
+               MAIN_MENU_OFFSET_Y+(0 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)),
+               stopwatch_icon_width, stopwatch_icon_height, stopwatch_icon_bits, (sdata->pos == STOP_WATCH_SCREEN));
+       oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((2+1) * MAIN_MENU_GRID_SPACING) + (2 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)),
+               MAIN_MENU_OFFSET_Y+(0 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)),
+               Bluetooth_icon_width, Bluetooth_icon_height, Bluetooth_icon_bits, (sdata->pos == BLUETOOTH_SCREEN));
+       oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((0+1) * MAIN_MENU_GRID_SPACING) + (0 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)),
+               MAIN_MENU_OFFSET_Y+(1 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)),
+               acc_icon_width, acc_icon_height, acc_icon_bits, (sdata->pos == ACCEL_DISPLAY_SCREEN));
+       oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((1+1) * MAIN_MENU_GRID_SPACING) + (1 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)),
+               MAIN_MENU_OFFSET_Y+(1 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)),
+               Message_icon_width, Message_icon_height, Message_icon_bits, (sdata->pos == MESSAGES_SCREEN));
+       oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((2+1) * MAIN_MENU_GRID_SPACING) + (2 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)),
+               MAIN_MENU_OFFSET_Y+(1 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)),
+               info_icon_width, info_icon_height, info_icon_bits, (sdata->pos == INFO_SCREEN));
+       oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((0+1) * MAIN_MENU_GRID_SPACING) + (0 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)),
+               MAIN_MENU_OFFSET_Y+(2 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)),
+               Exit_icon_width, Exit_icon_height, Exit_icon_bits, (sdata->pos == LAST_SCREEN));
+
+       // round the corners of the inverted icon a little
+       hal_lcd_set_pixel(MAIN_MENU_OFFSET_X+((pf%MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)) % (MAIN_MENU_GRID_X*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)),
+               MAIN_MENU_OFFSET_Y+((pf/MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)) % (MAIN_MENU_GRID_Y*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), FALSE);
+       hal_lcd_set_pixel(MAIN_MENU_OFFSET_X+23+((pf%MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)) % (MAIN_MENU_GRID_X*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)),
+               MAIN_MENU_OFFSET_Y+((pf/MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)) % (MAIN_MENU_GRID_Y*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), FALSE);
+       hal_lcd_set_pixel(MAIN_MENU_OFFSET_X+((pf%MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)) % (MAIN_MENU_GRID_X*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)),
+               MAIN_MENU_OFFSET_Y+23+((pf/MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)) % (MAIN_MENU_GRID_Y*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), FALSE);
+       hal_lcd_set_pixel(MAIN_MENU_OFFSET_X+23+((pf%MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)) % (MAIN_MENU_GRID_X*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)),
+               MAIN_MENU_OFFSET_Y+23+((pf/MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)) % (MAIN_MENU_GRID_Y*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), FALSE);
+
+       hal_lcd_update_display();
+}
+
+event_ret_t handle_main_menu_buttons(watch_button button, main_menu_data_t *sdata)
+{
+       switch (button) {
+               case BUTTON_A:
+                       sdata->pos++;
+                       if (sdata->pos > LAST_SCREEN)
+                               sdata->pos = 2;
+                       draw_main_menu_screen(&main_menu_screen);
+                       return EVENT_RET_HANDLED;
+                       break;
+               case BUTTON_B:
+                       sdata->pos--;
+                       if (sdata->pos < 2)
+                               sdata->pos = LAST_SCREEN;
+                       draw_main_menu_screen(&main_menu_screen);
+                       return EVENT_RET_HANDLED;
+                       break;
+               case BUTTON_C:
+                       if (sdata->pos < LAST_SCREEN) {
+                               OswaldState.screen_id = sdata->pos;
+                               OswaldState.screen = &OswaldScreens[OswaldState.screen_id];
+                               OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL);
+                       } else {
+                               OswaldState.screen_id = IDLE_SCREEN;
+                               OswaldState.screen = &OswaldScreens[OswaldState.screen_id];
+                               OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL);
+                       }
+                       return EVENT_RET_HANDLED;
+                       break;
+               default:
+                       break;
+       }
+
+       return EVENT_RET_UNHANDLED;
+}
+
+/* after MAIN_MENU_TIMEOUT seconds return to IDLE_SCREEN */
+#define MAIN_MENU_TIMEOUT      10
+
+event_ret_t main_menu_handle_events(uint16_t event, void *data)
+{
+       switch (event) {
+               case EVENT_SCREEN_VISIBLE:
+                       main_menu_screen.tmo = 0;
+                       main_menu_screen.pos = 2;
+                       draw_main_menu_screen(&main_menu_screen);
+                       return EVENT_RET_HANDLED;
+                       break;
+               case EVENT_USER_BUTTONS:
+                       dbg_out("button event %d\n", *(int *)data);
+                       main_menu_screen.tmo = 0;
+                       return handle_main_menu_buttons(*(watch_button *)data, &main_menu_screen);
+                       break;
+               case EVENT_ONE_SEC_TIMER:
+                       main_menu_screen.tmo++;
+                       if (main_menu_screen.tmo > MAIN_MENU_TIMEOUT) {
+                               OswaldState.screen_id = IDLE_SCREEN;
+                               OswaldState.screen = &OswaldScreens[OswaldState.screen_id];
+                               OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL);
+                       }
+                       return EVENT_RET_HANDLED;
+               default:
+                       break;
+       };
+       return EVENT_RET_UNHANDLED;
+}
+
+
 /*
  * Accelerometer and sensor display screen
  */
@@ -149,15 +326,17 @@ void draw_accel_screen(accel_data_t *accel_data)
 
        oswald_draw_bitmap(36, 0, acc_icon_width, acc_icon_height, acc_icon_bits);
 
-       oswald_write_string(1, 40, FONT_6x9, "X:");
-       oswald_write_number(15, 40, FONT_6x9, accel_data->x);
-       oswald_write_string(1, 52, FONT_6x9, "Y:");
-       oswald_write_number(15, 52, FONT_6x9, accel_data->y);
-       oswald_write_string(1, 64, FONT_6x9, "Z:");
-       oswald_write_number(15, 64, FONT_6x9, accel_data->z);
+       oswald_draw_bitmap(81, 79, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits);
+
+       oswald_write_string(1, 40, FONT_6x9, FALSE, "X:");
+       oswald_write_number(15, 40, FONT_6x9, FALSE, accel_data->x);
+       oswald_write_string(1, 52, FONT_6x9, FALSE, "Y:");
+       oswald_write_number(15, 52, FONT_6x9, FALSE, accel_data->y);
+       oswald_write_string(1, 64, FONT_6x9, FALSE, "Z:");
+       oswald_write_number(15, 64, FONT_6x9, FALSE, accel_data->z);
 
-       oswald_write_string(1, 85, FONT_6x9, "Light:");
-       oswald_write_number(50, 85, FONT_6x9, 0);
+       oswald_write_string(1, 85, FONT_6x9, FALSE, "Light:");
+       oswald_write_number(50, 85, FONT_6x9, FALSE, 0);
 
        oswald_draw_line(40, 30, 92, 30);
        oswald_draw_line(92, 30, 92, 82);
@@ -166,11 +345,11 @@ void draw_accel_screen(accel_data_t *accel_data)
 
        x = 41+25+((accel_data->x * 50) / (254));
        y = 31+25-((accel_data->y * 50) / (254));
-       oswald_draw_pixel(x, y);
-       oswald_draw_pixel(x+1, y);
-       oswald_draw_pixel(x-1, y);
-       oswald_draw_pixel(x, y+1);
-       oswald_draw_pixel(x, y-1);
+       oswald_draw_pixel(x, y, TRUE);
+       oswald_draw_pixel(x+1, y, TRUE);
+       oswald_draw_pixel(x-1, y, TRUE);
+       oswald_draw_pixel(x, y+1, TRUE);
+       oswald_draw_pixel(x, y-1, TRUE);
 
        hal_lcd_update_display();
 }
@@ -229,53 +408,54 @@ void draw_datetime_setup_screen(datetime_setup_data_t *sdata)
 
        oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits);
        oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits);
+       oswald_draw_bitmap(81, 70, rightbutton_icon_width, rightbutton_icon_height, rightbutton_icon_bits);
 
        if ((sdata->pos == 0 && sdata->on) || sdata->pos != 0) {
-               oswald_write_character(2, 30, FONT_LCD13x21, (OswaldClk.hour / 10));
-               oswald_write_character(15, 30, FONT_LCD13x21, (OswaldClk.hour % 10));
+               oswald_write_character(2, 30, FONT_LCD13x21, FALSE, (OswaldClk.hour / 10));
+               oswald_write_character(15, 30, FONT_LCD13x21, FALSE, (OswaldClk.hour % 10));
        }
-       oswald_write_character(25, 30, FONT_LCD13x21, 10);
+       oswald_write_character(25, 30, FONT_LCD13x21, FALSE, 10);
 
        if ((sdata->pos == 1 && sdata->on) || sdata->pos != 1) {
-               oswald_write_character(34, 30, FONT_LCD13x21, (OswaldClk.minute / 10));
-               oswald_write_character(47, 30, FONT_LCD13x21, (OswaldClk.minute % 10));
+               oswald_write_character(34, 30, FONT_LCD13x21, FALSE, (OswaldClk.minute / 10));
+               oswald_write_character(47, 30, FONT_LCD13x21, FALSE, (OswaldClk.minute % 10));
        }
 
        if ((sdata->pos == 2 && sdata->on) || sdata->pos != 2) {
-               oswald_write_character(61, 38, FONT_LCD8x13, (OswaldClk.second / 10));
-               oswald_write_character(69, 38, FONT_LCD8x13, (OswaldClk.second % 10));
+               oswald_write_character(61, 38, FONT_LCD8x13, FALSE, (OswaldClk.second / 10));
+               oswald_write_character(69, 38, FONT_LCD8x13, FALSE, (OswaldClk.second % 10));
        }
 
 
        if ((sdata->pos == 3 && sdata->on) || sdata->pos != 3) {
-               oswald_write_number(2, 55, FONT_DROID8x12, OswaldClk.day);
+               oswald_write_number(2, 55, FONT_DROID8x12, FALSE, OswaldClk.day);
        }
-       oswald_write_character(15, 55, FONT_DROID8x12, '.');
+       oswald_write_character(15, 55, FONT_DROID8x12, FALSE, '.');
        if ((sdata->pos == 4 && sdata->on) || sdata->pos != 4) {
-               oswald_write_number(21, 55, FONT_DROID8x12, OswaldClk.month);
+               oswald_write_number(21, 55, FONT_DROID8x12, FALSE, OswaldClk.month);
        }
-       oswald_write_character(36, 55, FONT_DROID8x12, '.');
+       oswald_write_character(36, 55, FONT_DROID8x12, FALSE, '.');
        if ((sdata->pos == 5 && sdata->on) || sdata->pos != 5) {
-               oswald_write_number(43, 55, FONT_DROID8x12, OswaldClk.year);
+               oswald_write_number(43, 55, FONT_DROID8x12, FALSE, OswaldClk.year);
        }
 
        if ((sdata->pos == 6 && sdata->on) || sdata->pos != 6) {
                if (OswaldClk.clk24hr) {
-                       oswald_write_character(2, 76, FONT_6x9, 'x');
+                       oswald_draw_bitmap(2, 76, checked_icon_width, checked_icon_height, checked_icon_bits);
                } else {
-                       oswald_write_character(2, 76, FONT_6x9, '_');
+                       oswald_draw_bitmap(2, 76, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits);
                }
        }
-       oswald_write_string(15, 73, FONT_DROID8x12, "24hr");
+       oswald_write_string(15, 73, FONT_DROID8x12, FALSE, "24hr");
 
        if ((sdata->pos == 7 && sdata->on) || sdata->pos != 7) {
                if (OswaldClk.day_first) {
-                       oswald_write_character(2, 86, FONT_6x9, 'x');
+                       oswald_draw_bitmap(2, 86, checked_icon_width, checked_icon_height, checked_icon_bits);
                } else {
-                       oswald_write_character(2, 86, FONT_6x9, '_');
+                       oswald_draw_bitmap(2, 86, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits);
                }
        }
-       oswald_write_string(15, 83, FONT_DROID8x12, "dd.mm.  mm/dd");
+       oswald_write_string(15, 83, FONT_DROID8x12, FALSE, "dd.mm.  mm/dd");
 
        hal_lcd_update_display();
 }
@@ -427,42 +607,82 @@ void draw_alarm_setup_screen(alarm_setup_data_t *sdata)
 
        oswald_draw_bitmap(36, 0, alarm_icon_width, alarm_icon_height, alarm_icon_bits);
 
-       oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits);
-       oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits);
+       if (sdata->set_mode) {
+               oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits);
+               oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits);
+               oswald_draw_bitmap(81, 70, rightbutton_icon_width, rightbutton_icon_height, rightbutton_icon_bits);
+       } else {
+               oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits);
+       }
 
        if ((sdata->pos == 0 && sdata->on) || sdata->pos != 0) {
-               oswald_write_character(18, 30, FONT_LCD13x21, (OswaldAlarm.hour / 10));
-               oswald_write_character(32, 30, FONT_LCD13x21, (OswaldAlarm.hour % 10));
+               oswald_write_character(18, 30, FONT_LCD13x21, FALSE, (OswaldAlarm.hour / 10));
+               oswald_write_character(32, 30, FONT_LCD13x21, FALSE, (OswaldAlarm.hour % 10));
        }
-       oswald_write_character(42, 30, FONT_LCD13x21, 10);
+       oswald_write_character(42, 30, FONT_LCD13x21, FALSE, 10);
 
        if ((sdata->pos == 1 && sdata->on) || sdata->pos != 1) {
-               oswald_write_character(53, 30, FONT_LCD13x21, (OswaldAlarm.minute / 10));
-               oswald_write_character(67, 30, FONT_LCD13x21, (OswaldAlarm.minute % 10));
+               oswald_write_character(53, 30, FONT_LCD13x21, FALSE, (OswaldAlarm.minute / 10));
+               oswald_write_character(67, 30, FONT_LCD13x21, FALSE, (OswaldAlarm.minute % 10));
        }
 
-       oswald_write_character(3, 55, FONT_6x9, 'S');
-       oswald_write_character(15, 55, FONT_6x9, 'M');
-       oswald_write_character(27, 55, FONT_6x9, 'T');
-       oswald_write_character(39, 55, FONT_6x9, 'W');
-       oswald_write_character(51, 55, FONT_6x9, 'T');
-       oswald_write_character(63, 55, FONT_6x9, 'F');
-       oswald_write_character(75, 55, FONT_6x9, 'S');
-
-       if ((sdata->pos == 2 && sdata->on) || sdata->pos != 2)
-               oswald_write_character(3, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_SUNDAY) ? 'x' : '_');
-       if ((sdata->pos == 3 && sdata->on) || sdata->pos != 3)
-               oswald_write_character(15, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_MONDAY) ? 'x' : '_');
-       if ((sdata->pos == 4 && sdata->on) || sdata->pos != 4)
-               oswald_write_character(27, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_TUESDAY) ? 'x' : '_');
-       if ((sdata->pos == 5 && sdata->on) || sdata->pos != 5)
-               oswald_write_character(39, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_WEDNESDAY) ? 'x' : '_');
-       if ((sdata->pos == 6 && sdata->on) || sdata->pos != 6)
-               oswald_write_character(51, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_THURSDAY) ? 'x' : '_');
-       if ((sdata->pos == 7 && sdata->on) || sdata->pos != 7)
-               oswald_write_character(63, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_FRIDAY) ? 'x' : '_');
-       if ((sdata->pos == 8 && sdata->on) || sdata->pos != 8)
-               oswald_write_character(75, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_SATURDAY) ? 'x' : '_');
+       oswald_write_character(3, 55, FONT_6x9, FALSE, 'S');
+       oswald_write_character(15, 55, FONT_6x9, FALSE, 'M');
+       oswald_write_character(27, 55, FONT_6x9, FALSE, 'T');
+       oswald_write_character(39, 55, FONT_6x9, FALSE, 'W');
+       oswald_write_character(51, 55, FONT_6x9, FALSE, 'T');
+       oswald_write_character(63, 55, FONT_6x9, FALSE, 'F');
+       oswald_write_character(75, 55, FONT_6x9, FALSE, 'S');
+
+       if ((sdata->pos == 2 && sdata->on) || sdata->pos != 2) {
+               // oswald_write_character(3, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_SUNDAY) ? 'x' : '_');
+               if ((OswaldAlarm.wday & WDAY_SUNDAY))
+                       oswald_draw_bitmap(3, 66, checked_icon_width, checked_icon_height, checked_icon_bits);
+               else
+                       oswald_draw_bitmap(3, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits);
+       }
+       if ((sdata->pos == 3 && sdata->on) || sdata->pos != 3) {
+               // oswald_write_character(15, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_MONDAY) ? 'x' : '_');
+               if ((OswaldAlarm.wday & WDAY_MONDAY))
+                       oswald_draw_bitmap(15, 66, checked_icon_width, checked_icon_height, checked_icon_bits);
+               else
+                       oswald_draw_bitmap(15, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits);
+       }
+       if ((sdata->pos == 4 && sdata->on) || sdata->pos != 4) {
+               // oswald_write_character(27, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_TUESDAY) ? 'x' : '_');
+               if ((OswaldAlarm.wday & WDAY_TUESDAY))
+                       oswald_draw_bitmap(27, 66, checked_icon_width, checked_icon_height, checked_icon_bits);
+               else
+                       oswald_draw_bitmap(27, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits);
+       }
+       if ((sdata->pos == 5 && sdata->on) || sdata->pos != 5) {
+               // oswald_write_character(39, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_WEDNESDAY) ? 'x' : '_');
+               if ((OswaldAlarm.wday & WDAY_WEDNESDAY))
+                       oswald_draw_bitmap(39, 66, checked_icon_width, checked_icon_height, checked_icon_bits);
+               else
+                       oswald_draw_bitmap(39, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits);
+       }
+       if ((sdata->pos == 6 && sdata->on) || sdata->pos != 6) {
+               // oswald_write_character(51, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_THURSDAY) ? 'x' : '_');
+               if ((OswaldAlarm.wday & WDAY_THURSDAY))
+                       oswald_draw_bitmap(51, 66, checked_icon_width, checked_icon_height, checked_icon_bits);
+               else
+                       oswald_draw_bitmap(51, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits);
+       }
+       if ((sdata->pos == 7 && sdata->on) || sdata->pos != 7) {
+               // oswald_write_character(63, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_FRIDAY) ? 'x' : '_');
+               if ((OswaldAlarm.wday & WDAY_FRIDAY))
+                       oswald_draw_bitmap(63, 66, checked_icon_width, checked_icon_height, checked_icon_bits);
+               else
+                       oswald_draw_bitmap(63, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits);
+       }
+       if ((sdata->pos == 8 && sdata->on) || sdata->pos != 8) {
+               // oswald_write_character(75, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_SATURDAY) ? 'x' : '_');
+               if ((OswaldAlarm.wday & WDAY_SATURDAY))
+                       oswald_draw_bitmap(75, 66, checked_icon_width, checked_icon_height, checked_icon_bits);
+               else
+                       oswald_draw_bitmap(75, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits);
+       }
 
        hal_lcd_update_display();
 }
@@ -611,15 +831,15 @@ void draw_menu_test_screen(void)
 
        WriteLcdString(50, 20+(9*test_menu.menu_pos), "*");
 #endif
-       oswald_write_string(2, 2, FONT_DROID11x14b, "Menu");
+       oswald_write_string(2, 2, FONT_DROID8x12, FALSE, "Menu");
 
-       oswald_write_string(2, 20, FONT_DROID8x12, "Item 1");
-       oswald_write_string(2, 29, FONT_DROID8x12, "Item 2");
-       oswald_write_string(2, 38, FONT_DROID8x12, "Item 3");
-       oswald_write_string(2, 47, FONT_DROID8x12, "Item 4");
-       oswald_write_string(2, 56, FONT_DROID8x12, "Item 5");
+       oswald_write_string(2, 20, FONT_DROID8x12, FALSE, "Item 1");
+       oswald_write_string(2, 29, FONT_DROID8x12, FALSE, "Item 2");
+       oswald_write_string(2, 38, FONT_DROID8x12, FALSE, "Item 3");
+       oswald_write_string(2, 47, FONT_DROID8x12, FALSE, "Item 4");
+       oswald_write_string(2, 56, FONT_DROID8x12, FALSE, "Item 5");
 
-       oswald_write_character(50, 18+(9*test_menu.menu_pos), FONT_6x9, 0x11);
+       oswald_write_character(50, 18+(9*test_menu.menu_pos), FONT_6x9, FALSE, 0x11);
 
        hal_lcd_update_display();
 }
@@ -678,29 +898,6 @@ typedef struct {
 } stopwatch_data_t;
 static stopwatch_data_t stopwatch_screen = { 0, 0, 0, 0, 0, 0, 0, 0, FALSE };
 
-#if 0
-static void update_stop_watch_screen(stopwatch_data_t *sdata)
-{
-       //char tstr[16];
-#if 0
-       SetFont(MetaWatchMonospaced10);
-
-       snprintf(tstr, 16, "%02d:%02d:%02d.%1d", sdata->hr, sdata->min, sdata->sec, sdata->csec / 10);
-       WriteLcdString(5, 40, tstr);
-       snprintf(tstr, 16, "%02d:%02d:%02d.%02d", sdata->lapse_hr, sdata->lapse_min, sdata->lapse_sec, sdata->lapse_csec);
-       WriteLcdString(5, 60, tstr);
-#endif
-#if 0
-       snprintf(tstr, 16, "%02d:%02d:%02d.%1d", sdata->hr, sdata->min, sdata->sec, sdata->csec / 10);
-       oswald_write_string(5, 40, FONT_6x9, tstr);
-
-       snprintf(tstr, 16, "%02d:%02d:%02d.%02d", sdata->lapse_hr, sdata->lapse_min, sdata->lapse_sec, sdata->lapse_csec);
-       oswald_write_string(5, 60, FONT_6x9, tstr);
-#endif
-
-       hal_lcd_update_display();
-}
-#endif
 
 static void draw_stop_watch_screen(stopwatch_data_t *sdata)
 {
@@ -710,31 +907,29 @@ static void draw_stop_watch_screen(stopwatch_data_t *sdata)
        hal_lcd_clear_display();
 
        oswald_draw_bitmap(36, 0, stopwatch_icon_width, stopwatch_icon_height, stopwatch_icon_bits);
+
        oswald_draw_bitmap(81, 6, startstopbutton_icon_width, startstopbutton_icon_height, startstopbutton_icon_bits);
        oswald_draw_bitmap(81, 38, lapsebutton_icon_width, lapsebutton_icon_height, lapsebutton_icon_bits);
+       oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits);
 
-#if 0
-       update_stop_watch_screen(sdata);
-#else
-       gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD13x21, (sdata->hr % 10));
-       gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (sdata->min / 10));
-       gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD13x21, (sdata->min % 10));
-       gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (sdata->sec / 10));
-       gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD13x21, (sdata->sec % 10));
-       gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->csec / 10));
+       gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (sdata->hr % 10));
+       gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (sdata->min / 10));
+       gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (sdata->min % 10));
+       gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (sdata->sec / 10));
+       gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (sdata->sec % 10));
+       gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->csec / 10));
 
        gRow = 6;
-       gColumn = 62;
-       gRow += 13 + oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_hr % 10));
-       gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_min / 10));
-       gRow += 13 + oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_min % 10));
-       gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_sec / 10));
-       gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_sec % 10));
-       gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_csec / 10));
-       gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_csec % 10));
+       gColumn = 61;
+       gRow += 13 + oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_hr % 10));
+       gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_min / 10));
+       gRow += 13 + oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_min % 10));
+       gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_sec / 10));
+       gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_sec % 10));
+       gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_csec / 10));
+       gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_csec % 10));
 
        hal_lcd_update_display();
-#endif
 }
 
 event_ret_t handle_stop_watch_buttons(watch_button button)
@@ -780,12 +975,10 @@ event_ret_t stop_watch_handle_events(uint16_t event, void *data)
        switch (event) {
                case EVENT_USER_BUTTONS:
                        dbg_out("button event %d\n", *(int *)data);
-                       return handle_stop_watch_buttons(*(watch_button *)data);
-                       //update_stop_watch_screen(&stopwatch_screen);
                        draw_stop_watch_screen(&stopwatch_screen);
+                       return handle_stop_watch_buttons(*(watch_button *)data);
                        break;
                case EVENT_SCREEN_VISIBLE:
-                       hal_lcd_clear_display();
                        draw_stop_watch_screen(&stopwatch_screen);
                        return EVENT_RET_HANDLED;
                        break;
@@ -833,6 +1026,8 @@ void draw_alarm_screen(void)
 
        oswald_draw_bitmap(36, 20, alarm_icon_width, alarm_icon_height, alarm_icon_bits);
 
+       oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits);
+
        hal_lcd_update_display();
 }
 
@@ -894,36 +1089,48 @@ void draw_bluetooth_screen(bluetooth_data_t *sdata)
 
        oswald_draw_bitmap(36, 0, Bluetooth_icon_width, Bluetooth_icon_height, Bluetooth_icon_bits);
 
-       oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits);
-       oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits);
+       if (sdata->set_mode) {
+               oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits);
+               oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits);
+               oswald_draw_bitmap(81, 70, rightbutton_icon_width, rightbutton_icon_height, rightbutton_icon_bits);
+       } else {
+               oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits);
+       }
 
-       oswald_write_string(1, 30, FONT_DROID8x12, "Enable:");
+       oswald_write_string(1, 30, FONT_DROID8x12, FALSE, "Enable:");
        if ((sdata->pos == 0 && sdata->on) || sdata->pos != 0) {
-               oswald_write_character(53, 30, FONT_DROID8x12, bluetooth_screen.bt_en ? 'x' : '_');
+               if (bluetooth_screen.bt_en)
+                       oswald_draw_bitmap(53, 33, checked_icon_width, checked_icon_height, checked_icon_bits);
+               else
+                       oswald_draw_bitmap(53, 33, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits);
        }
-       oswald_write_string(1, 40, FONT_DROID8x12, "State:");
+       oswald_write_string(1, 40, FONT_DROID8x12, FALSE, "State:");
        switch (hal_bluetooth_get_state()) {
                case BLUETOOTH_OFF:
-                       oswald_write_string(53, 40, FONT_DROID8x12, "off");
+                       oswald_write_string(53, 40, FONT_DROID8x12, FALSE, "off");
                        break;
                case BLUETOOTH_ON:
-                       oswald_write_string(53, 40, FONT_DROID8x12, "on");
+                       oswald_write_string(53, 40, FONT_DROID8x12, FALSE, "on");
                        break;
                case BLUETOOTH_CONNECTED:
-                       oswald_write_string(53, 40, FONT_DROID8x12, "conn.");
+                       oswald_write_string(53, 40, FONT_DROID8x12, FALSE, "conn.");
                        break;
                default:
                        break;
        };
-       oswald_write_string(1, 50, FONT_DROID8x12, "Visible:");
+       oswald_write_string(1, 50, FONT_DROID8x12, FALSE, "Visible:");
        if ((sdata->pos == 1 && sdata->on) || sdata->pos != 1) {
-               oswald_write_character(53, 50, FONT_DROID8x12, hal_bluetooth_get_visible() ? 'x' : '_');
+               // oswald_write_character(53, 50, FONT_DROID8x12, hal_bluetooth_get_visible() ? 'x' : '_');
+               if (hal_bluetooth_get_visible())
+                       oswald_draw_bitmap(53, 53, checked_icon_width, checked_icon_height, checked_icon_bits);
+               else
+                       oswald_draw_bitmap(53, 53, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits);
        }
 
        if (hal_bluetooth_get_state() >= BLUETOOTH_ON) {
                bd_addr = hal_bluetooth_get_local_bdaddr();
                snprintf(bstr, 20, "%02x:%02x:%02x:%02x:%02x:%02x", bd_addr[5], bd_addr[4], bd_addr[3], bd_addr[2], bd_addr[1], bd_addr[0]);
-               oswald_write_string(2, 85, FONT_5x7, bstr);
+               oswald_write_string(2, 85, FONT_5x7, FALSE, bstr);
        } else {
        }
 
@@ -949,20 +1156,6 @@ void bluetooth_handle_updown(uint8_t pos, int8_t incr)
                                hal_bluetooth_set_visible(FALSE);
                        }
                        break;
-               case 2:
-                       break;
-               case 3:
-                       break;
-               case 4:
-                       break;
-               case 5:
-                       break;
-               case 6:
-                       break;
-               case 7:
-                       break;
-               case 8:
-                       break;
                default:
                        break;
        };
@@ -1042,20 +1235,22 @@ event_ret_t bluetooth_screen_events(uint16_t event, void *data)
 /*
  * Info Screen
  */
-void draw_info_screen(accel_data_t *accel_data)
+void draw_info_screen(void)
 {
        hal_lcd_clear_display();
 
        oswald_draw_bitmap(36, 0, info_icon_width, info_icon_height, info_icon_bits);
 
-       oswald_write_string(2, 29, FONT_DROID8x12, "Oswald");
-       oswald_write_string(35, 29, FONT_DROID8x12, OSWALD_VERSION);
-       oswald_write_string(2, 41, FONT_DROID8x12, "HAL");
-       oswald_write_string(35, 41, FONT_DROID8x12, (char *)hal_get_version_string());
-       oswald_write_string(2, 53, FONT_DROID8x12, "Build");
-       oswald_write_string(35, 53, FONT_DROID8x12, (char *)hal_get_buildno_string());
-       oswald_write_string(2, 65, FONT_DROID8x12, "Radio");
-       oswald_write_string(35, 65, FONT_DROID8x12, (char *)hal_get_radio_version_string());
+       oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits);
+
+       oswald_write_string(2, 29, FONT_DROID8x12, FALSE, "Oswald");
+       oswald_write_string(35, 29, FONT_DROID8x12, FALSE, OSWALD_VERSION);
+       oswald_write_string(2, 41, FONT_DROID8x12, FALSE, "HAL");
+       oswald_write_string(35, 41, FONT_DROID8x12, FALSE, (char *)hal_get_version_string());
+       oswald_write_string(2, 53, FONT_DROID8x12, FALSE, "Build");
+       oswald_write_string(35, 53, FONT_DROID8x12, FALSE, (char *)hal_get_buildno_string());
+       oswald_write_string(2, 65, FONT_DROID8x12, FALSE, "Radio");
+       oswald_write_string(35, 65, FONT_DROID8x12, FALSE, (char *)hal_get_radio_version_string());
 
        hal_lcd_update_display();
 }
@@ -1064,7 +1259,7 @@ event_ret_t info_screen_handle_events(uint16_t event, void *data)
 {
        switch (event) {
                case EVENT_SCREEN_VISIBLE:
-                       draw_info_screen(&accel_screen.accdata);
+                       draw_info_screen();
                        return EVENT_RET_HANDLED;
                        break;
                case EVENT_USER_BUTTONS:
@@ -1077,3 +1272,248 @@ event_ret_t info_screen_handle_events(uint16_t event, void *data)
        return EVENT_RET_UNHANDLED;
 }
 
+
+/*
+ * Messages Screens
+ */
+typedef struct {
+       int8_t pos;     // marker position
+       int8_t offset;  // offset in msg list
+} messages_data_t;
+static messages_data_t messages_screen = {
+       0,
+       0,
+};
+
+typedef struct {
+       uint8_t day;
+       uint8_t month;
+       uint8_t year;   // without century, add +1900
+       uint8_t hour;
+       uint8_t minute;
+} msg_timedate_t;
+
+#define MSG_TYPE_READ          0
+#define MSG_TYPE_NEW           1
+#define MSG_TYPE_END           127
+
+typedef struct {
+       uint8_t type;
+       msg_timedate_t td;
+       char *msg;
+} message_t;
+
+uint8_t Msgs = 15;
+message_t Msg[] = {
+       { MSG_TYPE_READ, {9,5,113,0,38}, "Testmessage with more text than fits into the menu." },
+       { MSG_TYPE_NEW, {9,5,113,0,39}, "Sitting in the train waiting to arrive." },
+       { MSG_TYPE_READ, {9,5,113,0,40}, "People in the train are annoying!" },
+       { MSG_TYPE_READ, {9,5,113,0,40}, "Auch auf Deutsch geht das hier und Text können lang sein." },
+       { MSG_TYPE_NEW, {8,5,113,0,40}, "Und hier noch eine neue Nachricht, die nun wirklich lang ist, laenger als die anderen." },
+       { MSG_TYPE_READ, {9,5,113,0,38}, "Testmessage with more text than fits into the menu." },
+       { MSG_TYPE_NEW, {9,5,113,0,39}, "Sitting in the train waiting to arrive." },
+       { MSG_TYPE_READ, {9,5,113,0,40}, "People in the train are annoying!" },
+       { MSG_TYPE_READ, {9,5,113,0,40}, "Auch auf Deutsch geht das hier und Text können lang sein." },
+       { MSG_TYPE_NEW, {8,5,113,0,40}, "Und hier noch eine neue Nachricht, die nun wirklich lang ist, laenger als die anderen." },
+       { MSG_TYPE_READ, {9,5,113,0,38}, "Testmessage with more text than fits into the menu." },
+       { MSG_TYPE_NEW, {9,5,113,0,39}, "Sitting in the train waiting to arrive." },
+       { MSG_TYPE_READ, {9,5,113,0,40}, "People in the train are annoying!" },
+       { MSG_TYPE_READ, {9,5,113,0,40}, "Auch auf Deutsch geht das hier und Text können lang sein." },
+       { MSG_TYPE_NEW, {8,5,113,0,40}, "Und hier noch eine neue Nachricht, die nun wirklich lang ist, laenger als die anderen." },
+       { MSG_TYPE_END, {0,0,0,0,0}, "Exit" },
+};
+
+void draw_message_screen(messages_data_t *sdata)
+{
+       char dstr[32];
+       uint8_t strpos, msglen;
+       uint8_t line;
+
+       hal_lcd_clear_display();
+
+#if 0
+       oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits);
+       oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits);
+#endif
+       oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits);
+
+       Msg[sdata->offset + sdata->pos].type = MSG_TYPE_READ;
+       snprintf(dstr, 19, "#%02d/%02d", sdata->pos + sdata->offset + 1, Msgs);
+       oswald_write_string(30, 0, FONT_5x7, FALSE, dstr);
+       oswald_draw_line(0,7,95,7);
+
+
+       // here goes the text
+       msglen = strlen(Msg[sdata->pos+sdata->offset].msg);
+       strpos=0;
+       line=0;
+       while ((strpos < msglen) && (line < 6)) {
+               strpos += oswald_write_string_length(4, 9+(line*12), 84, FONT_DROID8x12, FALSE, &Msg[sdata->pos+sdata->offset].msg[strpos]);
+               line++;
+       }
+
+
+       oswald_draw_line(0,87,95,87);
+
+       if (Msg[sdata->offset + sdata->pos].type != MSG_TYPE_END) {
+               snprintf(dstr, 19, "%c %02d.%02d.%04d,%02d:%02d", (Msg[sdata->pos+sdata->offset].type == MSG_TYPE_NEW) ? '*':' ', Msg[sdata->pos+sdata->offset].td.day, Msg[sdata->pos+sdata->offset].td.month, Msg[sdata->pos+sdata->offset].td.year+1900, Msg[sdata->pos+sdata->offset].td.hour, Msg[sdata->pos+sdata->offset].td.minute);
+               oswald_write_string(2, 89, FONT_5x7, FALSE, dstr);
+       }
+
+       hal_lcd_update_display();
+}
+
+event_ret_t handle_message_screen_buttons(watch_button button, messages_data_t *sdata)
+{
+       switch (button) {
+               case BUTTON_A:
+                       break;
+               case BUTTON_B:
+                       return EVENT_RET_HANDLED;
+                       break;
+               case BUTTON_C:
+                       // OswaldState.screen->event_func(EVENT_SCREEN_DESTROY, NULL);
+                       OswaldState.screen_id = MESSAGES_SCREEN;
+                       OswaldState.screen = &OswaldScreens[OswaldState.screen_id];
+                       OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL);
+                       return EVENT_RET_HANDLED;
+                       break;
+               default:
+                       break;
+       }
+
+       return EVENT_RET_UNHANDLED;
+}
+
+event_ret_t message_screen_handle_events(uint16_t event, void *data)
+{
+       switch (event) {
+               case EVENT_SCREEN_VISIBLE:
+                       draw_message_screen(&messages_screen);
+                       return EVENT_RET_HANDLED;
+                       break;
+               case EVENT_USER_BUTTONS:
+                       dbg_out("button event %d\n", *(int *)data);
+                       return handle_message_screen_buttons(*(watch_button *)data, &messages_screen);
+                       break;
+               default:
+                       break;
+       };
+       return EVENT_RET_UNHANDLED;
+}
+
+void draw_messages_screen(messages_data_t *sdata)
+{
+       char dstr[32];
+       int i;
+
+       hal_lcd_clear_display();
+
+       // oswald_draw_bitmap(36, 0, Message_icon_width, Message_icon_height, Message_icon_bits);
+
+       oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits);
+       oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits);
+       oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits);
+
+       if (Msg[sdata->offset + sdata->pos].type != MSG_TYPE_END) {
+               snprintf(dstr, 19, "#%02d/%02d", sdata->pos + sdata->offset + 1, Msgs);
+               oswald_write_string(30, 0, FONT_5x7, FALSE, dstr);
+       }
+       oswald_draw_line(0,7,95,7);
+
+       for (i=0; i<6; i++) {
+               if (Msg[i+sdata->offset].type != MSG_TYPE_END) {
+                       //oswald_write_string_length(4, 9+(i*12), 84, FONT_DROID8x12, (Msg[i+sdata->offset].type == MSG_TYPE_NEW), Msg[i+sdata->offset].msg);
+                       if (Msg[i+sdata->offset].type == MSG_TYPE_NEW)
+                               oswald_write_string_length(4, 9+(i*12), 84, FONT_DROID8x12b, (i+sdata->offset) == (sdata->offset + sdata->pos), Msg[i+sdata->offset].msg);
+                       else
+                               oswald_write_string_length(4, 9+(i*12), 84, FONT_DROID8x12, (i+sdata->offset) == (sdata->offset + sdata->pos), Msg[i+sdata->offset].msg);
+               } else {
+                       oswald_draw_bitmap(0, 66, leftbutton_icon_width, leftbutton_icon_height, leftbutton_icon_bits);
+               }
+       }
+
+       // marker selected msg
+       oswald_draw_line(1,9,1,81);
+       oswald_draw_line_ww(1,10+(sdata->pos*12),1,20+(sdata->pos*12),2);
+
+       oswald_draw_line(0,87,95,87);
+
+       if (Msg[sdata->offset + sdata->pos].type != MSG_TYPE_END) {
+               snprintf(dstr, 19, "%c %02d.%02d.%04d,%02d:%02d", (Msg[sdata->pos+sdata->offset].type == MSG_TYPE_NEW) ? '*':' ', Msg[sdata->pos+sdata->offset].td.day, Msg[sdata->pos+sdata->offset].td.month, Msg[sdata->pos+sdata->offset].td.year+1900, Msg[sdata->pos+sdata->offset].td.hour, Msg[sdata->pos+sdata->offset].td.minute);
+               oswald_write_string(2, 89, FONT_5x7, FALSE, dstr);
+       }
+
+       hal_lcd_update_display();
+}
+
+event_ret_t handle_messages_screen_buttons(watch_button button, messages_data_t *sdata)
+{
+       switch (button) {
+               case BUTTON_A:
+                       sdata->pos--;
+                       if (sdata->pos < 0) {
+                               if (sdata->offset > 0) {
+                                       sdata->pos = 0;
+                                       sdata->offset--;
+                                       if (sdata->offset < 0)
+                                               sdata->offset = 0;
+                               } else {
+                                       sdata->pos = 5;
+                                       sdata->offset = (Msgs - 5);
+                                       if (sdata->offset < 0)
+                                               sdata->offset = 0;
+                               }
+                       }
+                       draw_messages_screen(&messages_screen);
+                       return EVENT_RET_HANDLED;
+                       break;
+               case BUTTON_B:
+                       sdata->pos++;
+                       if (sdata->pos > 5) {
+                               sdata->pos = 5;
+                               sdata->offset++;
+                               if ((sdata->offset + 5) > Msgs) {
+                                       sdata->offset = 0;
+                                       sdata->pos = 0;
+                               }
+                       }
+                       draw_messages_screen(&messages_screen);
+                       return EVENT_RET_HANDLED;
+                       break;
+               case BUTTON_C:
+                       if (Msg[sdata->offset + sdata->pos].type == MSG_TYPE_END)
+                               return EVENT_RET_UNHANDLED;
+                       else
+                               // OswaldState.screen->event_func(EVENT_SCREEN_DESTROY, NULL);
+                               OswaldState.screen_id = MESSAGE_SCREEN;
+                               OswaldState.screen = &OswaldScreens[OswaldState.screen_id];
+                               OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL);
+                               return EVENT_RET_HANDLED;
+                       break;
+               default:
+                       break;
+       }
+
+       return EVENT_RET_UNHANDLED;
+}
+
+event_ret_t messages_screen_handle_events(uint16_t event, void *data)
+{
+       switch (event) {
+               case EVENT_SCREEN_VISIBLE:
+//                     messages_screen.pos = 0;
+//                     messages_screen.offset = 0;
+                       draw_messages_screen(&messages_screen);
+                       return EVENT_RET_HANDLED;
+                       break;
+               case EVENT_USER_BUTTONS:
+                       dbg_out("button event %d\n", *(int *)data);
+                       return handle_messages_screen_buttons(*(watch_button *)data, &messages_screen);
+                       break;
+               default:
+                       break;
+       };
+       return EVENT_RET_UNHANDLED;
+}
+
index 47a71e36ac38da15f3b365f3bd6770abbb3b72f4..213b1d554e4823784ea8250a21c840a0eb87debd 100644 (file)
@@ -2,6 +2,8 @@
 #define _OSWALD_SCREENS_H
 
 
+event_ret_t main_menu_handle_events(uint16_t event, void *data);
+
 event_ret_t idle_handle_events(uint16_t event, void *data);
 
 event_ret_t accel_handle_events(uint16_t event, void *data);
@@ -20,4 +22,7 @@ event_ret_t bluetooth_screen_events(uint16_t event, void *data);
 
 event_ret_t info_screen_handle_events(uint16_t event, void *data);
 
+event_ret_t messages_screen_handle_events(uint16_t event, void *data);
+event_ret_t message_screen_handle_events(uint16_t event, void *data);
+
 #endif
index bfbf641ca5b849765865acb9660b7229cb5cd025..284323ac30787e91f9244a9950ab67af083e0212 100644 (file)
@@ -160,12 +160,7 @@ void DrawLcdAnaClock(boolean show_seconds)
        hal_lcd_clear_display();
 
        snprintf(tstr, 16, "%2d", OswaldClk.day);
-#if 0
-       SetFont(MetaWatch16);
-       WriteLcdString(70, 40, tstr);
-#else
-       oswald_write_string(70, 43, FONT_6x9, tstr);
-#endif
+       oswald_write_string(70, 43, FONT_6x9, FALSE, tstr);
 
        // Marker
        // plot(R*cos(360° * i/N), R*sin(360° * i/N))
@@ -215,64 +210,6 @@ void DrawLcdDigitalClock(boolean show_seconds)
        char tstr[16];
        int i;
 
-#if 0
-       SetFont(MetaWatchTime);
-
-       hal_lcd_clear_display();
-       //gRow += WriteLcdCharacter(ui, gRow, gColumn, TIME_CHARACTER_SPACE_INDEX);
-       if (OswaldClk.clk24hr) {
-               gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.hour / 10));
-               gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.hour % 10));
-       } else {
-               unsigned char val = OswaldClk.hour;
-               if (val > 12)
-                       val -= 12;
-               gRow += WriteLcdCharacter(gRow, gColumn, (val / 10));
-               gRow += WriteLcdCharacter(gRow, gColumn, (val % 10));
-       }
-       gRow += WriteLcdCharacter(gRow, gColumn, TIME_CHARACTER_COLON_INDEX);
-       gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.minute / 10));
-       gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.minute % 10));
-
-       gRow += 3;
-       if (show_seconds) {
-               SetFont(MetaWatch16);
-               snprintf(tstr, 16, "%02d", OswaldClk.second);
-               WriteLcdString(gRow, 9, tstr);
-       };
-
-       SetFont(MetaWatch7);
-
-       if (!OswaldClk.clk24hr) {
-               if (OswaldClk.hour > 12) {
-                       WriteLcdString(gRow, 3, "PM");
-               } else {
-                       WriteLcdString(gRow, 3, "AM");
-               }
-       }
-
-       SetFont(MetaWatch16);
-
-       if (OswaldClk.day_first)
-               snprintf(tstr, 16, "%d.%d.%d", OswaldClk.day, OswaldClk.month, OswaldClk.year);
-       else
-               snprintf(tstr, 16, "%d/%d %d", OswaldClk.month, OswaldClk.day, OswaldClk.year);
-       WriteLcdString(3, 25, tstr);
-
-       draw_status_icons();
-
-       gRow = 0;
-       gColumn = 45;
-       SetFont(MetaWatch5);
-       for (i=0; i<strlen(MainMessage); i++) {
-               gRow += WriteLcdCharacter(gRow, gColumn, MainMessage[i]);
-               if (gRow > 90) {
-                       gRow = 0;
-                       gColumn += 7;
-               }
-               if (gColumn > 95)
-                       i = 255;
-       }
 #if 0
        snprintf(tstr, 16, "%d%% (%dmV)", OswaldPowerState.percent, OswaldPowerState.level);
        WriteLcdString(2, 48, tstr);
@@ -298,42 +235,45 @@ void DrawLcdDigitalClock(boolean show_seconds)
                };
        };
 #endif
-#else
        hal_lcd_clear_display();
 
        if (OswaldClk.clk24hr) {
-               gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (OswaldClk.hour / 10));
-               gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (OswaldClk.hour % 10));
+               gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (OswaldClk.hour / 10));
+               gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (OswaldClk.hour % 10));
        } else {
                unsigned char val = OswaldClk.hour;
-               if (val > 12)
+               if (val > 12) {
                        val -= 12;
-               gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (val / 10));
-               gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (val % 10));
+                       oswald_write_string(59, 0, FONT_6x9, FALSE, "PM");
+               } else {
+                       oswald_write_string(59, 0, FONT_6x9, FALSE, "AM");
+               }
+               gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (val / 10));
+               gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (val % 10));
        }
        if (OswaldClk.second % 2)
-               oswald_write_character(gRow-4, gColumn, FONT_LCD13x21, 10);
+               oswald_write_character(gRow-4, gColumn, FONT_LCD13x21, FALSE, 10);
        gRow += 5;
-       gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (OswaldClk.minute / 10));
-       gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (OswaldClk.minute % 10));
-#endif
+       gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (OswaldClk.minute / 10));
+       gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (OswaldClk.minute % 10));
+
        if (show_seconds) {
-               oswald_write_character(59, 9, FONT_LCD8x13, (OswaldClk.second / 10));
-               oswald_write_character(67, 9, FONT_LCD8x13, (OswaldClk.second % 10));
+               oswald_write_character(59, 9, FONT_LCD8x13, FALSE, (OswaldClk.second / 10));
+               oswald_write_character(67, 9, FONT_LCD8x13, FALSE, (OswaldClk.second % 10));
        }
 
        if (OswaldClk.day_first)
                snprintf(tstr, 16, "%s %d.%d.%d", daynames[OswaldClk.wday], OswaldClk.day, OswaldClk.month, OswaldClk.year);
        else
                snprintf(tstr, 16, "%s %d/%d %d", daynames[OswaldClk.wday], OswaldClk.month, OswaldClk.day, OswaldClk.year);
-       oswald_write_string(0, 25, FONT_6x9, tstr);
+       oswald_write_string(0, 25, FONT_DROID8x12, FALSE, tstr);
 
        gRow = 0;
        gColumn = 45;
        for (i=0; i<strlen(MainMessage); i++) {
                if (gRow == 0 && MainMessage[i] == ' ')
                        continue;
-               gRow += oswald_write_character(gRow, gColumn, FONT_DROID8x12, MainMessage[i]);
+               gRow += oswald_write_character(gRow, gColumn, FONT_DROID8x12, FALSE, MainMessage[i]);
                if (gRow > 90) {
                        gRow = 0;
                        gColumn += 9;