First pass demo for 78K0R.

pull/4/head
Richard Barry 16 years ago
parent d4376e4bcc
commit eef9900e23

@ -0,0 +1,131 @@
/*
FreeRTOS.org V5.1.1 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
***************************************************************************
* *
* SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
* and even write all or part of your application on your behalf. *
* See http://www.OpenRTOS.com for details of the services we provide to *
* expedite your project. *
* *
***************************************************************************
***************************************************************************
Please ensure to read the configuration and relevant port sections of the
online documentation.
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
/* only include in C files */
#ifdef __IAR_SYSTEMS_ICC__
#pragma language=extended
#pragma system_include
#include <io78f1166_a0.h>
#include <io78f1166_a0_ext.h>
#include <intrinsics.h>
#endif /* __IAR_SYSTEMS_ICC__ */
/*
* 78K0R/Kx3 Clock Source Configuration
* 1 = use internal High Speed Clock Source (typically 8Mhz on the 78K0R/Kx3)
* 0 = use external Clock Source
*/
#define configCLOCK_SOURCE 0
/*
* 78K0R/Kx3 Memory Model
* 1 = use far memory mode
* 0 = use near memory mode
*
* This setting must match the setting in the IAR project options.
*/
#define configMEMORY_MODE 1
/*
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*/
#define configUSE_PREEMPTION 1
/* only use following section for C files */
#ifdef __IAR_SYSTEMS_ICC__
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 4 )
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 75 )
#define configTOTAL_HEAP_SIZE ( (size_t ) ( 6000 ) )
#define configMAX_TASK_NAME_LEN ( 10 )
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 1
#define configIDLE_SHOULD_YIELD 1
#define configCHECK_FOR_STACK_OVERFLOW 0
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */
#define INCLUDE_vTaskPrioritySet 0
#define INCLUDE_uxTaskPriorityGet 0
#define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 0
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#ifdef configCLOCK_SOURCE == 0
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 20000000 ) /* using the external clock source */
#else
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 8000000 ) /* using the internal high speed clock */
#endif /* configCLOCK_SOURCE */
#endif /* __IAR_SYSTEMS_ICC__ */
#endif /* FREERTOS_CONFIG_H */

@ -0,0 +1,353 @@
/*
FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
***************************************************************************
* *
* SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
* and even write all or part of your application on your behalf. *
* See http://www.OpenRTOS.com for details of the services we provide to *
* expedite your project. *
* *
***************************************************************************
***************************************************************************
Please ensure to read the configuration and relevant port sections of the
online documentation.
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
/*
Changes from V1.2.3
+ The created tasks now include calls to tskYIELD(), allowing them to be used
with the cooperative scheduler.
*/
/**
* From the functionality point of view this module has the same behavior like
* the integer.c standard demo task but the used stack size is optimized so that
* not so much memory space is used which is not needed.
*
* This does the same as flop. c, but uses variables of type long instead of
* type double.
*
* As with flop. c, the tasks created in this file are a good test of the
* scheduler context switch mechanism. The processor has to access 32bit
* variables in two or four chunks (depending on the processor). The low
* priority of these tasks means there is a high probability that a context
* switch will occur mid calculation. See the flop. c documentation for
* more information.
*
* \page IntegerC integer.c
* \ingroup DemoFiles
* <HR>
*/
/*
Changes from V1.2.1
+ The constants used in the calculations are larger to ensure the
optimiser does not truncate them to 16 bits.
*/
#include <stdlib.h>
/* Scheduler include files. */
#include "FreeRTOS.h"
#include "task.h"
#include "print.h"
/* Demo program include files. */
#include "integer.h"
#define intgSTACK_SIZE ( ( unsigned portSHORT ) 96 )
#define intgNUMBER_OF_TASKS ( 8 )
/* Four tasks, each of which performs a different calculation on four byte
variables. Each of the four is created twice. */
static void vCompeteingIntMathTask1( void *pvParameters );
static void vCompeteingIntMathTask2( void *pvParameters );
static void vCompeteingIntMathTask3( void *pvParameters );
static void vCompeteingIntMathTask4( void *pvParameters );
/* These variables are used to check that all the tasks are still running. If a
task gets a calculation wrong it will stop incrementing its check variable. */
static volatile unsigned portSHORT usTaskCheck[ intgNUMBER_OF_TASKS ] = { ( unsigned portSHORT ) 0 };
/*-----------------------------------------------------------*/
void vStartIntegerMathTasks( unsigned portBASE_TYPE uxPriority )
{
xTaskCreate( vCompeteingIntMathTask1, "IntMath1", intgSTACK_SIZE, ( void * ) &( usTaskCheck[ 0 ] ), uxPriority, NULL );
xTaskCreate( vCompeteingIntMathTask2, "IntMath2", intgSTACK_SIZE, ( void * ) &( usTaskCheck[ 1 ] ), uxPriority, NULL );
xTaskCreate( vCompeteingIntMathTask3, "IntMath3", intgSTACK_SIZE, ( void * ) &( usTaskCheck[ 2 ] ), uxPriority, NULL );
xTaskCreate( vCompeteingIntMathTask4, "IntMath4", intgSTACK_SIZE, ( void * ) &( usTaskCheck[ 3 ] ), uxPriority, NULL );
xTaskCreate( vCompeteingIntMathTask1, "IntMath5", intgSTACK_SIZE, ( void * ) &( usTaskCheck[ 4 ] ), uxPriority, NULL );
xTaskCreate( vCompeteingIntMathTask2, "IntMath6", intgSTACK_SIZE, ( void * ) &( usTaskCheck[ 5 ] ), uxPriority, NULL );
xTaskCreate( vCompeteingIntMathTask3, "IntMath7", intgSTACK_SIZE, ( void * ) &( usTaskCheck[ 6 ] ), uxPriority, NULL );
xTaskCreate( vCompeteingIntMathTask4, "IntMath8", intgSTACK_SIZE, ( void * ) &( usTaskCheck[ 7 ] ), uxPriority, NULL );
}
/*-----------------------------------------------------------*/
static void vCompeteingIntMathTask1( void *pvParameters )
{
portLONG l1, l2, l3, l4;
portSHORT sError = pdFALSE;
volatile unsigned portSHORT *pusTaskCheckVariable;
const portLONG lAnswer = ( ( portLONG ) 74565L + ( portLONG ) 1234567L ) * ( portLONG ) -918L;
const portCHAR * const pcTaskStartMsg = "Integer math task 1 started.\r\n";
const portCHAR * const pcTaskFailMsg = "Integer math task 1 failed.\r\n";
/* Queue a message for printing to say the task has started. */
vPrintDisplayMessage( &pcTaskStartMsg );
/* The variable this task increments to show it is still running is passed in
as the parameter. */
pusTaskCheckVariable = ( unsigned portSHORT * ) pvParameters;
/* Keep performing a calculation and checking the result against a constant. */
for(;;)
{
l1 = ( portLONG ) 74565L;
l2 = ( portLONG ) 1234567L;
l3 = ( portLONG ) -918L;
l4 = ( l1 + l2 ) * l3;
taskYIELD();
/* If the calculation does not match the expected constant, stop the
increment of the check variable. */
if( l4 != lAnswer )
{
vPrintDisplayMessage( &pcTaskFailMsg );
sError = pdTRUE;
}
if( sError == pdFALSE )
{
/* If the calculation has always been correct, increment the check
variable so we know this task is still running okay. */
( *pusTaskCheckVariable )++;
}
}
}
/*-----------------------------------------------------------*/
static void vCompeteingIntMathTask2( void *pvParameters )
{
portLONG l1, l2, l3, l4;
portSHORT sError = pdFALSE;
volatile unsigned portSHORT *pusTaskCheckVariable;
const portLONG lAnswer = ( ( portLONG ) -389000L / ( portLONG ) 329999L ) * ( portLONG ) -89L;
const portCHAR * const pcTaskStartMsg = "Integer math task 2 started.\r\n";
const portCHAR * const pcTaskFailMsg = "Integer math task 2 failed.\r\n";
/* Queue a message for printing to say the task has started. */
vPrintDisplayMessage( &pcTaskStartMsg );
/* The variable this task increments to show it is still running is passed in
as the parameter. */
pusTaskCheckVariable = ( unsigned portSHORT * ) pvParameters;
/* Keep performing a calculation and checking the result against a constant. */
for( ;; )
{
l1 = -389000L;
l2 = 329999L;
l3 = -89L;
l4 = ( l1 / l2 ) * l3;
taskYIELD();
/* If the calculation does not match the expected constant, stop the
increment of the check variable. */
if( l4 != lAnswer )
{
vPrintDisplayMessage( &pcTaskFailMsg );
sError = pdTRUE;
}
if( sError == pdFALSE )
{
/* If the calculation has always been correct, increment the check
variable so we know this task is still running okay. */
( *pusTaskCheckVariable )++;
}
}
}
/*-----------------------------------------------------------*/
static void vCompeteingIntMathTask3( void *pvParameters )
{
portLONG *plArray, lTotal1, lTotal2;
portSHORT sError = pdFALSE;
volatile unsigned portSHORT *pusTaskCheckVariable;
const unsigned portSHORT usArraySize = ( unsigned portSHORT ) 125;
unsigned portSHORT usPosition;
const portCHAR * const pcTaskStartMsg = "Integer math task 3 started.\r\n";
const portCHAR * const pcTaskFailMsg = "Integer math task 3 failed.\r\n";
/* Queue a message for printing to say the task has started. */
vPrintDisplayMessage( &pcTaskStartMsg );
/* The variable this task increments to show it is still running is passed in
as the parameter. */
pusTaskCheckVariable = ( unsigned portSHORT * ) pvParameters;
/* Create the array we are going to use for our check calculation. */
plArray = ( portLONG * ) pvPortMalloc( ( size_t ) 125 * sizeof( portLONG ) );
/* Keep filling the array, keeping a running total of the values placed in the
array. Then run through the array adding up all the values. If the two totals
do not match, stop the check variable from incrementing. */
for( ;; )
{
lTotal1 = ( portLONG ) 0;
lTotal2 = ( portLONG ) 0;
for( usPosition = 0; usPosition < usArraySize; usPosition++ )
{
plArray[ usPosition ] = ( portLONG ) usPosition + ( portLONG ) 5;
lTotal1 += ( portLONG ) usPosition + ( portLONG ) 5;
}
taskYIELD();
for( usPosition = 0; usPosition < usArraySize; usPosition++ )
{
lTotal2 += plArray[ usPosition ];
}
if( lTotal1 != lTotal2 )
{
vPrintDisplayMessage( &pcTaskFailMsg );
sError = pdTRUE;
}
taskYIELD();
if( sError == pdFALSE )
{
/* If the calculation has always been correct, increment the check
variable so we know this task is still running okay. */
( *pusTaskCheckVariable )++;
}
}
}
/*-----------------------------------------------------------*/
static void vCompeteingIntMathTask4( void *pvParameters )
{
portLONG *plArray, lTotal1, lTotal2;
portSHORT sError = pdFALSE;
volatile unsigned portSHORT *pusTaskCheckVariable;
const unsigned portSHORT usArraySize = 125;
unsigned portSHORT usPosition;
const portCHAR * const pcTaskStartMsg = "Integer math task 4 started.\r\n";
const portCHAR * const pcTaskFailMsg = "Integer math task 4 failed.\r\n";
/* Queue a message for printing to say the task has started. */
vPrintDisplayMessage( &pcTaskStartMsg );
/* The variable this task increments to show it is still running is passed in
as the parameter. */
pusTaskCheckVariable = ( unsigned portSHORT * ) pvParameters;
/* Create the array we are going to use for our check calculation. */
plArray = ( portLONG * ) pvPortMalloc( ( size_t ) 125 * sizeof( portLONG ) );
/* Keep filling the array, keeping a running total of the values placed in the
array. Then run through the array adding up all the values. If the two totals
do not match, stop the check variable from incrementing. */
for( ;; )
{
lTotal1 = ( portLONG ) 0;
lTotal2 = ( portLONG ) 0;
for( usPosition = 0; usPosition < usArraySize; usPosition++ )
{
plArray[ usPosition ] = ( portLONG ) usPosition * ( portLONG ) 12;
lTotal1 += ( portLONG ) usPosition * ( portLONG ) 12;
}
taskYIELD();
for( usPosition = 0; usPosition < usArraySize; usPosition++ )
{
lTotal2 += plArray[ usPosition ];
}
if( lTotal1 != lTotal2 )
{
vPrintDisplayMessage( &pcTaskFailMsg );
sError = pdTRUE;
}
taskYIELD();
if( sError == pdFALSE )
{
/* If the calculation has always been correct, increment the check
variable so we know this task is still running okay. */
( *pusTaskCheckVariable )++;
}
}
}
/*-----------------------------------------------------------*/
/* This is called to check that all the created tasks are still running. */
portBASE_TYPE xAreIntegerMathsTaskStillRunning( void )
{
/* Keep a history of the check variables so we know if they have been incremented
since the last call. */
static unsigned portSHORT usLastTaskCheck[ intgNUMBER_OF_TASKS ] = { ( unsigned portSHORT ) 0 };
portBASE_TYPE xReturn = pdTRUE, xTask;
/* Check the maths tasks are still running by ensuring their check variables
are still incrementing. */
for( xTask = 0; xTask < intgNUMBER_OF_TASKS; xTask++ )
{
if( usTaskCheck[ xTask ] == usLastTaskCheck[ xTask ] )
{
/* The check has not incremented so an error exists. */
xReturn = pdFALSE;
}
usLastTaskCheck[ xTask ] = usTaskCheck[ xTask ];
}
return xReturn;
}

@ -0,0 +1,58 @@
/*
FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
***************************************************************************
* *
* SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
* and even write all or part of your application on your behalf. *
* See http://www.OpenRTOS.com for details of the services we provide to *
* expedite your project. *
* *
***************************************************************************
***************************************************************************
Please ensure to read the configuration and relevant port sections of the
online documentation.
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
#ifndef INTEGER_TASKS_H
#define INTEGER_TASKS_H
void vStartIntegerMathTasks( unsigned portBASE_TYPE uxPriority );
portBASE_TYPE xAreIntegerMathsTaskStillRunning( void );
#endif

@ -0,0 +1,234 @@
/*
FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
***************************************************************************
* *
* SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
* and even write all or part of your application on your behalf. *
* See http://www.OpenRTOS.com for details of the services we provide to *
* expedite your project. *
* *
***************************************************************************
***************************************************************************
Please ensure to read the configuration and relevant port sections of the
online documentation.
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
/**
* This is a simple LED toggle test for the 78K0R/Kx3 Target Board (QB-78K0RKG3-TB).
*
* Creates two task that control one LED each.
*
* The first task toggles a LED with a frequency of 1Hz by using the vTaskDelay
* function. So the task is yielded for 1 seconed after each LED switch.
*
* The second LED can be toggled by a switch within the second task.
* When the switch is pushed it is detected by an interrupt. When the interrupt
* occurs a flag is set in the ISR and sent to the second task by using a queue.
* Therefore the xQueueSendFromISR() function is called from within the ISR to
* write the flag value to the queue. The task uses the xQueueReceive() function
* to read the flag value from the queue.
* If the flag value changed from the last task activation the LED is toggled.
*
* Also a check function is implemented to check if the task still run properly
*/
/* Scheduler include files. */
#include "FreeRTOS.h"
#include "task.h"
/* Demo program include files. */
#include "LED.h"
#include "queue.h"
#include "print.h"
#define LEDToggleSTACK_SIZE (( unsigned portSHORT ) configMINIMAL_STACK_SIZE)
#define LED_NUMBER_OF_TASKS 2
/* LED toggle wait time and check definitions */
#define LED1_Wait_Time 1000
#define LED2_Wait_Time 100
/* Task function prototypes */
static void vLEDToggleTask1( void *pvParameters);
static void vLEDToggleTask2( void *pvParameters);
/* Port Initialization for LED's and Switch */
static void prvLEDInit(void);
/* Switch press counter */
static unsigned portSHORT usClick = 0;
/* Queue used for LED02 toggle*/
static xQueueHandle xLEDQueue;
/*xQUEUE *xLEDQueue;*/
static volatile unsigned portSHORT usTask1Check = 0, usTask2Check = 0, usLEDQueue = 0;
void vStartLEDToggleTasks( unsigned portBASE_TYPE uxPriority )
{
const unsigned portBASE_TYPE uxQueueSize = 4;
prvLEDInit();
/* Create the queue used by the Switch ISR and the second task. */
xLEDQueue = xQueueCreate( uxQueueSize, ( unsigned portBASE_TYPE ) sizeof( unsigned portSHORT ) );
/* create 2 LED toggle Tasks */
xTaskCreate(vLEDToggleTask1, "LEDTog1", LEDToggleSTACK_SIZE, ( void * ) &(usTask1Check), uxPriority, NULL );
xTaskCreate(vLEDToggleTask2, "LEDTog2", LEDToggleSTACK_SIZE, ( void * ) &xLEDQueue, uxPriority, NULL );
}
/*-----------------------------------------------------------*/
static void vLEDToggleTask1( void *pvParameters)
{
static portCHAR pcLED1old;
portSHORT sError = pdFALSE;
volatile unsigned portSHORT *pusTaskCheckVariable;
const portCHAR * const pcTaskFailMsg = "ERROR: LED toggle failed.\r\n";
pusTaskCheckVariable = ( unsigned portSHORT * ) pvParameters;
for(;;)
{
pcLED1old = LED01;
vTaskDelay( LED1_Wait_Time );
/* toggle the LED01 */
LED01 = ~LED01;
if(pcLED1old == LED01)
{
/* an error has occured */
vPrintDisplayMessage( &pcTaskFailMsg );
sError = pdTRUE;
}
if(sError != pdTRUE)
{
/* If a LED toggle has been made, increment the check
variable so we know this task is still running okay. */
( *pusTaskCheckVariable )++;
}
}
}
/*-----------------------------------------------------------*/
static void vLEDToggleTask2( void *pvParameters)
{
unsigned portSHORT usData, usDataOld = 0;
xQueueHandle *pxQueue;
pxQueue = ( xQueueHandle * ) pvParameters;
for(;;)
{
if( xQueueReceive( *pxQueue, &usData, ( portTickType ) 0 ) == pdPASS )
{
if (usData != usDataOld)
{
LED02 = ~LED02;
}
usDataOld = usData;
}
vTaskDelay( LED2_Wait_Time );
/* increment check variable whenever the task gets active */
usTask2Check++;
}
}
portBASE_TYPE xAreLEDToggleTaskStillRunning( void )
{
/*
* Keep a history of the check variables so we know if they have been incremented
* since the last call.
*/
static unsigned portSHORT usLastTask1Check = 0;
static unsigned portSHORT usLastTask2Check = 0;
portBASE_TYPE xReturn = pdTRUE;
/* Check the LED toggle tasks are still running by ensuring their check variables
* are still incrementing.
*/
if(( usTask1Check == usLastTask1Check )||(usLastTask2Check == usTask2Check))
{
/* The check has not incremented so an error exists. */
xReturn = pdFALSE;
}
usLastTask1Check = usTask1Check;
usLastTask2Check = usTask2Check;
return xReturn;
}
/*-----------------------------------------------------------*/
static void prvLEDInit(void)
{
/* LED Port Initialization */
/* set Port Register */
P7 = 0x80;
/* set Port Mode Register */
PM7 = 0x3F;
/* Switch Pin Initialization */
/* enable pull-up resistor */
PU12_bit.no0 = 1;
/* INTP0 disable */
PMK0 = 1;
/* INTP0 IF clear */
PIF0 = 0;
EGN0_bit.no0 = 1;
/* INTP0 priority low */
PPR10 = 0;
PPR00 = 1;
/* enable ext. INTP0 interrupt */
PMK0 = 0;
}
/*-----------------------------------------------------------*/
/* Switch ISR */
#pragma vector=INTP0_vect
__interrupt void P0_isr (void)
{
/* Increment Switch pressed counter */
usClick++;
/* Use usClick to signalize a detected Interrupt for the vLEDToggleTask2
* to toggle the LED02.
*/
xQueueSendFromISR( xLEDQueue, &usClick, pdFALSE );
}
/*-----------------------------------------------------------*/

@ -0,0 +1,61 @@
/*
FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
***************************************************************************
* *
* SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
* and even write all or part of your application on your behalf. *
* See http://www.OpenRTOS.com for details of the services we provide to *
* expedite your project. *
* *
***************************************************************************
***************************************************************************
Please ensure to read the configuration and relevant port sections of the
online documentation.
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
#ifndef LEDTOGGLE_TASKS_H
#define LEDTOGGLE_TASKS_H
void vStartLEDToggleTasks( unsigned portBASE_TYPE uxPriority );
portBASE_TYPE xAreLEDToggleTaskStillRunning( void );
/* LED Pin Configuration */
static void prvLEDinit( void );
#define LED01 P7_bit.no6
#define LED02 P7_bit.no7
#endif

@ -0,0 +1,150 @@
; FreeRTOS.org V5.1.1 - Copyright (C) 2003-2008 Richard Barry.
;
; This file is part of the FreeRTOS.org distribution.
;
; FreeRTOS.org is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
; FreeRTOS.org is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with FreeRTOS.org; if not, write to the Free Software
; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
;
; A special exception to the GPL can be applied should you wish to distribute
; a combined work that includes FreeRTOS.org, without being obliged to provide
; the source code for any proprietary components. See the licensing section
; of http://www.FreeRTOS.org for full details of how and when the exception
; can be applied.
;
; ***************************************************************************
; See http://www.FreeRTOS.org for documentation, latest information, license
; and contact details. Please ensure to read the configuration and relevant
; port sections of the online documentation.
; ***************************************************************************
;
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
#if __CORE__ != __78K0R__
#error "This file is only for 78K0R Devices"
#endif
; Functions implemented in this file
;------------------------------------------------------------------------------
PUBLIC vRegTest1
PUBLIC vRegTest2
; Functions used by this file
;------------------------------------------------------------------------------
EXTERN vRegTestError
;------------------------------------------------------------------------------
; Fill all the registers with known values, then check that the registers
; contain the expected value. An incorrect value being indicative of an
; error in the context switch mechanism.
;
; Input: NONE
;
; Call: CALL vRegTest1
;
; Output: NONE
;
;------------------------------------------------------------------------------
RSEG CODE:CODE
vRegTest1:
MOVW AX, #0x1122
MOVW BC, #0x3344
MOVW DE, #0x5566
MOVW HL, #0x7788
MOV CS, #0x01
MOV ES, #0x02
loop1:
BRK
CMPW AX, #0x1122
BZ +5
BR vRegTestError
MOVW AX, BC
CMPW AX, #0x3344
BZ +5
BR vRegTestError
MOVW AX, DE
CMPW AX, #0x5566
BZ +5
BR vRegTestError
MOVW AX, HL
CMPW AX, #0x7788
BZ +5
BR vRegTestError
MOV A, CS
CMP A, #0x01
BZ +5
BR vRegTestError
MOV A, ES
CMP A, #0x02
BZ +5
BR vRegTestError
MOVW AX, #0x1122
BR loop1
;------------------------------------------------------------------------------
; Fill all the registers with known values, then check that the registers
; contain the expected value. An incorrect value being indicative of an
; error in the context switch mechanism.
;
; Input: NONE
;
; Call: CALL vRegTest1
;
; Output: NONE
;
;------------------------------------------------------------------------------
RSEG CODE:CODE
vRegTest2:
MOVW AX, #0x99aa
MOVW BC, #0xbbcc
MOVW DE, #0xddee
MOVW HL, #0xff12
MOV CS, #0x03
MOV ES, #0x04
loop2:
CMPW AX, #0x99aa
BZ +5
BR vRegTestError
MOVW AX, BC
CMPW AX, #0xbbcc
BZ +5
BR vRegTestError
MOVW AX, DE
CMPW AX, #0xddee
BZ +5
BR vRegTestError
MOVW AX, HL
CMPW AX, #0xff12
BZ +5
BR vRegTestError
MOV A, CS
CMP A, #0x03
BZ +5
BR vRegTestError
MOV A, ES
CMP A, #0x04
BZ +5
BR vRegTestError
MOVW AX, #0x99aa
BR loop2
END

@ -0,0 +1,294 @@
/*
FreeRTOS.org V5.1.1 - Copyright (C) 2003-2009 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
***************************************************************************
* *
* SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
* and even write all or part of your application on your behalf. *
* See http://www.OpenRTOS.com for details of the services we provide to *
* expedite your project. *
* *
***************************************************************************
***************************************************************************
Please ensure to read the configuration and relevant port sections of the
online documentation.
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
/* Standard includes. */
#include <stdlib.h>
#include <string.h>
/* Scheduler include files. */
#include "FreeRTOS.h"
#include "task.h"
/* Demo file headers. */
#include "int78K0R.h"
#include "PollQ.h"
#include "LED.h"
#include "print.h"
#include "semtest.h"
/*
* Priority definitions for most of the tasks in the demo application. Some
* tasks just use the idle priority.
*/
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainSEMTEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainLED_TOGGLE_PRIORITY ( tskIDLE_PRIORITY + 1 )
/* The period between executions of the check task. */
#define mainNO_ERROR_TOGGLE_PERIOD ( ( portTickType ) 3000 / portTICK_RATE_MS )
#define mainERROR_TOGGLE_PERIOD ( ( portTickType ) 500 / portTICK_RATE_MS )
/*
* 78K0R/Kx3 Option Byte Definition
* watchdog disabled, LVI enabled, OCD interface enabled
*/
__root __far const unsigned portCHAR OptionByte[OPT_BYTES_SIZE] @ 0x00C0 =
{
WATCHDOG_DISABLED, LVI_ENABLED, RESERVED_FF, OCD_ENABLED
};
/* Security Byte Definition */
__root __far const unsigned portCHAR SecuIDCode[SECU_ID_SIZE] @ 0x00C4 =
{
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
/* The task function for the "Check" task. */
static void vErrorChecks( void *pvParameters );
/* 78K0R/Kx3 low level init Initialization of the System Clock */
int __low_level_init(void);
extern void vRegTest1( void *pvParameters );
extern void vRegTest2( void *pvParameters );
static short sRegTestStatus = pdPASS;
portSHORT main( void )
{
/* Create the standard demo tasks. */
vStartIntegerMathTasks( tskIDLE_PRIORITY );
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
vStartSemaphoreTasks(mainSEMTEST_PRIORITY);
/* Create the tasks defined within this file. */
xTaskCreate( vErrorChecks, "Check", configMINIMAL_STACK_SIZE, (void*)0x12345678, mainCHECK_TASK_PRIORITY, NULL );
xTaskCreate( vRegTest1, "Reg1", configMINIMAL_STACK_SIZE, NULL, 0, NULL );
xTaskCreate( vRegTest2, "Reg2", configMINIMAL_STACK_SIZE, NULL, 0, NULL );
vPrintInitialise();
/* In this port, to use preemptive scheduler define configUSE_PREEMPTION
* as 1 in FreeRTOSconfig.h. To use the cooperative scheduler define
* configUSE_PREEMPTION as 0.
*/
vTaskStartScheduler();
return 0;
}
/*-----------------------------------------------------------*/
static void vErrorChecks( void *pvParameters )
{
portTickType xToggleRate = mainNO_ERROR_TOGGLE_PERIOD, xLastWakeTime;
/* The pointer will only actually be either 3 or 2 bytes, depending on the
memory model. */
if( pvParameters != ( void * ) 0x12345678 )
{
xToggleRate = mainERROR_TOGGLE_PERIOD;
}
xLastWakeTime = xTaskGetTickCount();
/* Cycle for ever, delaying then checking all the other tasks are still
operating without error. */
for( ;; )
{
vTaskDelayUntil( &xLastWakeTime, xToggleRate );
if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
{
xToggleRate = mainERROR_TOGGLE_PERIOD;
}
if( xArePollingQueuesStillRunning() != pdTRUE)
{
xToggleRate = mainERROR_TOGGLE_PERIOD;
}
if( xAreSemaphoreTasksStillRunning() != pdTRUE)
{
xToggleRate = mainERROR_TOGGLE_PERIOD;
}
if( sRegTestStatus != pdPASS )
{
xToggleRate = mainERROR_TOGGLE_PERIOD;
}
/* Toggle the LED. */
LED01 = !LED01;
}
}
/*-----------------------------------------------------------*/
int __low_level_init(void)
{
unsigned portCHAR resetflag = RESF;
portDISABLE_INTERRUPTS();
/*
* Clock Configuration:
* In this port, to use the internal high speed clock source of the microcontroller
* define the configCLOCK_SOURCE as 1 in FreeRTOSConfig.h. To use an external
* clock define configCLOCK_SOURCE as 0.
*/
#if configCLOCK_SOURCE == 1
{
/*
* Set XT1 and XT2 in Input Port Mode
* Set X1 and X2 in Input Port Mode
* High speed oszillation frequency 2MHz <= fMX <= 10MHz
*/
CMC = 0x00;
/* X1 external oszillation stopped */
MSTOP = 1;
/* enable internal high speed oszillation */
HIOSTOP = 0;
MCM0 = 0;
/* stop internal subsystem clock */
XTSTOP = 1;
/* Set clock speed */
CSS = 0;
CKC &= (unsigned portCHAR)~0x07;
CKC |= 0x00;
}
#else
{
/*
* XT1 and XT2 pin in input port mode
* X1 and X2 pin in crystal resonator mode
* High speed oszillation frequency 10MHz < fMX <= 20MHz
*/
CMC = 0x41;
/* Set oscillation stabilization time */
OSTS = 0x07;
/* Set speed mode: fMX > 10MHz for Flash memory high speed operation */
OSMC = 0x01;
/*
* Start up X1 oscillator operation
* Internal high-speed oscillator operating
*/
MSTOP = 0;
/* Check oscillation stabilization time status */
while(OSTC < 0x07)
{
/* wait until X1 clock stabilization time */
portNOP();
}
/* Switch CPU clock to X1 oscillator */
MCM0 = 1;
while(MCS != 1)
{
/* wait until CPU and peripherals operate with fX1 clock */
portNOP();
}
/* Stop the internal high-speed oscillator operation */
HIOSTOP = 1;
/* Stop the XT1 oscillator operation */
XTSTOP = 1;
/*
* operating frequency f = fx
* Change clock generator setting, if necessary
*/
CKC &= 0xF8;
/* From here onwards the X1 oscillator is supplied to the CPU */
}
#endif
/* LED Port Initialization - set Port Register */
P7 = 0x80;
/* Set Port Mode Register */
PM7 = 0x3F;
/* Switch Pin Initialization - enable pull-up resistor */
PU12_bit.no0 = 1;
/* INTP0 disable */
PMK0 = 1;
/* INTP0 IF clear */
PIF0 = 0;
EGN0_bit.no0 = 1;
/* INTP0 priority low */
PPR10 = 0;
PPR00 = 1;
/* enable ext. INTP0 interrupt */
PMK0 = 0;
return pdTRUE;
}
/*-----------------------------------------------------------*/
void vRegTestError( void )
{
sRegTestStatus = pdFAIL;
for( ;; );
}

@ -0,0 +1,830 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<project>
<fileVersion>2</fileVersion>
<fileChecksum>3820058658</fileChecksum>
<configuration>
<name>Debug</name>
<outputs>
<file>$TOOLKIT_DIR$\lib\clib\cl78kff3.r26</file>
<file>$PROJ_DIR$\Debug\Obj\port.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\integer.r26</file>
<file>$PROJ_DIR$\Debug\Obj\print.r26</file>
<file>$TOOLKIT_DIR$\inc\io78f1166_a0.h</file>
<file>$TOOLKIT_DIR$\inc\clib\stdlib.h</file>
<file>$PROJ_DIR$\Debug\List\PollQ.lst</file>
<file>$PROJ_DIR$\Debug\Exe\rtosdemo.d26</file>
<file>$PROJ_DIR$\..\..\Source\include\portable.h</file>
<file>$PROJ_DIR$\..\Common\Full\semtest.c</file>
<file>$PROJ_DIR$\..\Common\Full\PollQ.c</file>
<file>$PROJ_DIR$\Debug\Obj\main.pbi</file>
<file>$PROJ_DIR$\Debug\List\semtest.lst</file>
<file>$TOOLKIT_DIR$\inc\clib\stddef.h</file>
<file>$PROJ_DIR$\Debug\Obj\queue.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\list.pbi</file>
<file>$TOOLKIT_DIR$\inc\clib\string.h</file>
<file>$PROJ_DIR$\Debug\Obj\tasks.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\queue.r26</file>
<file>$PROJ_DIR$\..\..\Source\include\croutine.h</file>
<file>$PROJ_DIR$\..\..\Source\include\StackMacros.h</file>
<file>$PROJ_DIR$\Int78K0R\int78K0R.c</file>
<file>$PROJ_DIR$\Debug\List\heap_1.lst</file>
<file>$TOOLKIT_DIR$\inc\clib\sysmac.h</file>
<file>$TOOLKIT_DIR$\inc\clib\stdio.h</file>
<file>$PROJ_DIR$\Debug\Obj\heap_1.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\tasks.r26</file>
<file>$PROJ_DIR$\Debug\Obj\RegTest.r26</file>
<file>$PROJ_DIR$\Debug\Obj\int78K0R.r26</file>
<file>$PROJ_DIR$\Debug\List\main.lst</file>
<file>$TOOLKIT_DIR$\config\lnk78f1166_a0.xcl</file>
<file>$PROJ_DIR$\Debug\List\int78K0R.lst</file>
<file>$TOOLKIT_DIR$\inc\intrinsics.h</file>
<file>$PROJ_DIR$\Debug\List\integer.lst</file>
<file>$PROJ_DIR$\..\Common\include\PollQ.h</file>
<file>$PROJ_DIR$\..\..\Source\include\semphr.h</file>
<file>$PROJ_DIR$\Debug\List\rtosdemo.map</file>
<file>$PROJ_DIR$\..\..\Source\include\task.h</file>
<file>$TOOLKIT_DIR$\inc\clib\stdarg.h</file>
<file>$PROJ_DIR$\..\..\Source\portable\IAR\78K0R_Kx3\port.c</file>
<file>$PROJ_DIR$\Debug\Obj\portmacro.r26</file>
<file>$PROJ_DIR$\..\..\Source\portable\IAR\78K0R\portmacro.h</file>
<file>$PROJ_DIR$\Debug\Obj\integer.pbi</file>
<file>$PROJ_DIR$\..\..\Source\include\list.h</file>
<file>$PROJ_DIR$\..\..\Source\include\FreeRTOS.h</file>
<file>$PROJ_DIR$\..\Common\include\print.h</file>
<file>$PROJ_DIR$\Debug\List\list.lst</file>
<file>$PROJ_DIR$\Debug\Obj\LED.r26</file>
<file>$PROJ_DIR$\FreeRTOSConfig.h</file>
<file>$PROJ_DIR$\Debug\List\tasks.lst</file>
<file>$PROJ_DIR$\..\..\Source\portable\IAR\78K0R_Kx3\portmacro.s26</file>
<file>$PROJ_DIR$\Int78K0R\int78K0R.h</file>
<file>$PROJ_DIR$\..\..\Source\include\projdefs.h</file>
<file>$PROJ_DIR$\LEDtoggle\LED.h</file>
<file>$PROJ_DIR$\Debug\List\print.lst</file>
<file>$PROJ_DIR$\Debug\Obj\port.r26</file>
<file>$PROJ_DIR$\Debug\List\LED.lst</file>
<file>$PROJ_DIR$\Debug\Obj\main.r26</file>
<file>$PROJ_DIR$\Debug\Obj\print.pbi</file>
<file>$PROJ_DIR$\..\Common\include\integer.h</file>
<file>$PROJ_DIR$\Debug\Obj\semtest.r26</file>
<file>$PROJ_DIR$\Debug\Obj\portasm.r26</file>
<file>$PROJ_DIR$\Debug\Obj\list.r26</file>
<file>$PROJ_DIR$\Debug\Obj\PollQ.r26</file>
<file>$TOOLKIT_DIR$\inc\io78f1166_a0_ext.h</file>
<file>$PROJ_DIR$\Debug\Obj\PollQ.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\semtest.pbi</file>
<file>$PROJ_DIR$\Debug\List\port.lst</file>
<file>$PROJ_DIR$\LEDtoggle\LED.c</file>
<file>$PROJ_DIR$\..\Common\include\semtest.h</file>
<file>$PROJ_DIR$\Debug\List\portasm.lst</file>
<file>$PROJ_DIR$\..\..\Source\portable\IAR\78K0R\portmacro.s26</file>
<file>$PROJ_DIR$\Debug\Obj\rtosdemo.pbd</file>
<file>$PROJ_DIR$\Debug\Obj\int78K0R.pbi</file>
<file>$PROJ_DIR$\Debug\List\RegTest.lst</file>
<file>$PROJ_DIR$\Debug\Obj\LED.pbi</file>
<file>$PROJ_DIR$\Debug\List\queue.lst</file>
<file>$PROJ_DIR$\Debug\Obj\heap_1.r26</file>
<file>$PROJ_DIR$\..\Common\Full\print.c</file>
<file>$PROJ_DIR$\RegTest.s26</file>
<file>$PROJ_DIR$\..\..\Source\list.c</file>
<file>$PROJ_DIR$\..\..\Source\portable\MemMang\heap_1.c</file>
<file>$PROJ_DIR$\..\..\Source\portable\IAR\78K0R\port.c</file>
<file>$PROJ_DIR$\main.c</file>
<file>$PROJ_DIR$\..\..\Source\portable\IAR\78K0R\portasm.s26</file>
<file>$PROJ_DIR$\..\..\Source\queue.c</file>
<file>$PROJ_DIR$\..\..\Source\tasks.c</file>
<file>$PROJ_DIR$\..\Common\Minimal\integer.c</file>
<file>$PROJ_DIR$\..\..\Source\include\queue.h</file>
</outputs>
<file>
<name>$PROJ_DIR$\Debug\Exe\rtosdemo.d26</name>
<outputs>
<tool>
<name>XLINK</name>
<file> 36</file>
</tool>
</outputs>
<inputs>
<tool>
<name>XLINK</name>
<file> 30 63 27 77 2 62 57 55 61 3 18 60 26 0</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Full\semtest.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 12 60</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 66</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 5 23 44 13 52 48 4 64 32 8 41 37 43 35 88 69 45</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 5 23 44 13 52 48 4 64 32 8 41 37 43 35 88 69 45</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Full\PollQ.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 6 63</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 65</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 5 23 44 13 52 48 4 64 32 8 41 37 43 88 45 34</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 5 23 44 13 52 48 4 64 32 8 41 37 43 88 45 34</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\Int78K0R\int78K0R.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 31 28</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 73</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 5 23 44 13 52 48 4 64 32 8 41 37 43 45 59</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 5 23 44 13 52 48 4 64 32 8 41 37 43 45 59</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\portable\IAR\78K0R_Kx3\port.c</name>
<outputs>
<tool>
<name>BICOMP</name>
<file> 1</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\portable\IAR\78K0R_Kx3\portmacro.s26</name>
<outputs>
<tool>
<name>A78000</name>
<file> 40</file>
</tool>
</outputs>
</file>
<file>
<name>[ROOT_NODE]</name>
<outputs>
<tool>
<name>XLINK</name>
<file> 7 36</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\LEDtoggle\LED.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 56 47</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 75</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 44 13 23 52 48 4 64 32 8 41 37 43 53 88 45</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 44 13 23 52 48 4 64 32 8 41 37 43 53 88 45</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\portable\IAR\78K0R\portmacro.s26</name>
<outputs>
<tool>
<name>A78000</name>
<file> 40</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\Debug\Obj\rtosdemo.pbd</name>
<inputs>
<tool>
<name>BILINK</name>
<file> 65 25 42 15 11 1 58 14 66 17</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Full\print.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 54 3</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 58</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 5 23 44 13 52 48 4 64 32 8 41 88 45</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 5 23 44 13 52 48 4 64 32 8 41 88 45</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\RegTest.s26</name>
<outputs>
<tool>
<name>A78000</name>
<file> 27 74</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\list.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 46 62</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 15</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 5 23 44 13 52 48 4 64 32 8 41 43</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 5 23 44 13 52 48 4 64 32 8 41 43</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\portable\MemMang\heap_1.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 22 77</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 25</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 5 23 44 13 52 48 4 64 32 8 41 37 43</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 5 23 44 13 52 48 4 64 32 8 41 37 43</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\portable\IAR\78K0R\port.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 67 55</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 1</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 5 23 44 13 52 48 4 64 32 8 41 37 43</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 5 23 44 13 52 48 4 64 32 8 41 37 43</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\main.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 29 57</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 11</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 5 23 16 44 13 52 48 4 64 32 8 41 37 43 51 34 53 45 69</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 5 23 16 44 13 52 48 4 64 32 8 41 37 43 51 34 53 45 69</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\portable\IAR\78K0R\portasm.s26</name>
<outputs>
<tool>
<name>A78000</name>
<file> 61 70</file>
</tool>
</outputs>
<inputs>
<tool>
<name>A78000</name>
<file> 48</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\queue.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 76 18</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 14</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 5 23 16 44 13 52 48 4 64 32 8 41 37 43 19</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 5 23 16 44 13 52 48 4 64 32 8 41 37 43 19</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\tasks.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 49 26</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 17</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 24 38 23 5 16 44 13 52 48 4 64 32 8 41 37 43 20</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 24 38 23 5 16 44 13 52 48 4 64 32 8 41 37 43 20</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\integer.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 33 2</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 42</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 5 23 44 13 52 48 4 64 32 8 41 37 43 59</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 5 23 44 13 52 48 4 64 32 8 41 37 43 59</file>
</tool>
</inputs>
</file>
</configuration>
<configuration>
<name>Release</name>
<outputs>
<file>$TOOLKIT_DIR$\lib\clib\cl78kff3.r26</file>
<file>$TOOLKIT_DIR$\inc\io78f1166_a0.h</file>
<file>$TOOLKIT_DIR$\inc\clib\stdlib.h</file>
<file>$PROJ_DIR$\..\..\Source\portable\IAR\78K0R_Kx3\portmacro.h</file>
<file>$PROJ_DIR$\Release\Obj\port.r26</file>
<file>$PROJ_DIR$\Release\Obj\int78K0R.pbi</file>
<file>$PROJ_DIR$\Release\Obj\queue.r26</file>
<file>$PROJ_DIR$\Release\Exe\rtosdemo.a26</file>
<file>$PROJ_DIR$\Release\Obj\PollQ.r26</file>
<file>$PROJ_DIR$\..\..\Source\include\portable.h</file>
<file>$PROJ_DIR$\..\Common\Full\semtest.c</file>
<file>$PROJ_DIR$\..\Common\Full\PollQ.c</file>
<file>$TOOLKIT_DIR$\inc\clib\stddef.h</file>
<file>$TOOLKIT_DIR$\inc\clib\string.h</file>
<file>$PROJ_DIR$\..\..\Source\include\croutine.h</file>
<file>$PROJ_DIR$\Int78K0R\int78K0R.c</file>
<file>$TOOLKIT_DIR$\inc\clib\sysmac.h</file>
<file>$TOOLKIT_DIR$\inc\clib\stdio.h</file>
<file>$TOOLKIT_DIR$\config\lnk78f1166_a0.xcl</file>
<file>$TOOLKIT_DIR$\inc\intrinsics.h</file>
<file>$PROJ_DIR$\..\Common\include\PollQ.h</file>
<file>$PROJ_DIR$\..\..\Source\include\semphr.h</file>
<file>$PROJ_DIR$\..\..\Source\include\task.h</file>
<file>$TOOLKIT_DIR$\inc\clib\stdarg.h</file>
<file>$PROJ_DIR$\..\..\Source\portable\IAR\78K0R_Kx3\port.c</file>
<file>$PROJ_DIR$\..\..\Source\include\list.h</file>
<file>$PROJ_DIR$\..\..\Source\include\FreeRTOS.h</file>
<file>$PROJ_DIR$\..\Common\include\print.h</file>
<file>$PROJ_DIR$\FreeRTOSConfig.h</file>
<file>$PROJ_DIR$\Release\Obj\tasks.pbi</file>
<file>$PROJ_DIR$\Release\Obj\LED.pbi</file>
<file>$PROJ_DIR$\..\..\Source\portable\IAR\78K0R_Kx3\portmacro.s26</file>
<file>$PROJ_DIR$\Int78K0R\int78K0R.h</file>
<file>$PROJ_DIR$\..\..\Source\include\projdefs.h</file>
<file>$PROJ_DIR$\Release\Obj\semtest.pbi</file>
<file>$PROJ_DIR$\Release\Obj\main.r26</file>
<file>$PROJ_DIR$\Release\Obj\list.pbi</file>
<file>$PROJ_DIR$\Release\Obj\int78K0R.r26</file>
<file>$PROJ_DIR$\Release\Obj\tasks.r26</file>
<file>$PROJ_DIR$\Release\Obj\portmacro.r26</file>
<file>$PROJ_DIR$\LEDtoggle\LED.h</file>
<file>$PROJ_DIR$\Release\Obj\queue.pbi</file>
<file>$PROJ_DIR$\Release\Obj\LED.r26</file>
<file>$PROJ_DIR$\Release\Obj\port.pbi</file>
<file>$PROJ_DIR$\Release\Obj\heap_1.pbi</file>
<file>$PROJ_DIR$\..\Common\include\integer.h</file>
<file>$PROJ_DIR$\Release\Obj\print.r26</file>
<file>$PROJ_DIR$\Release\Obj\list.r26</file>
<file>$PROJ_DIR$\Release\Obj\print.pbi</file>
<file>$PROJ_DIR$\Release\Obj\rtosdemo.pbd</file>
<file>$TOOLKIT_DIR$\inc\io78f1166_a0_ext.h</file>
<file>$PROJ_DIR$\LEDtoggle\LED.c</file>
<file>$PROJ_DIR$\..\Common\include\semtest.h</file>
<file>$PROJ_DIR$\..\Common\Full\print.c</file>
<file>$PROJ_DIR$\..\..\Source\list.c</file>
<file>$PROJ_DIR$\..\..\Source\portable\MemMang\heap_1.c</file>
<file>$PROJ_DIR$\main.c</file>
<file>$PROJ_DIR$\Release\Obj\PollQ.pbi</file>
<file>$PROJ_DIR$\Release\Obj\heap_1.r26</file>
<file>$PROJ_DIR$\Release\Obj\main.pbi</file>
<file>$PROJ_DIR$\Release\Obj\semtest.r26</file>
<file>$PROJ_DIR$\..\..\Source\queue.c</file>
<file>$PROJ_DIR$\..\..\Source\tasks.c</file>
<file>$PROJ_DIR$\..\..\Source\include\queue.h</file>
</outputs>
<file>
<name>$PROJ_DIR$\Release\Exe\rtosdemo.a26</name>
<inputs>
<tool>
<name>XLINK</name>
<file> 18 42 8 58 37 47 35 4 39 46 6 60 38 0</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Full\semtest.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 60</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 34</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 2 16 26 12 33 28 1 50 19 9 3 22 25 21 63 52 27</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 2 16 26 12 33 28 1 50 19 9 3 22 25 21 63 52 27</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Full\PollQ.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 8</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 57</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 2 16 26 12 33 28 1 50 19 9 3 22 25 63 27 20</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 2 16 26 12 33 28 1 50 19 9 3 22 25 63 27 20</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\Int78K0R\int78K0R.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 37</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 5</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 2 16 26 12 33 28 1 50 19 9 3 22 25 27 45</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 2 16 26 12 33 28 1 50 19 9 3 22 25 27 45</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\portable\IAR\78K0R_Kx3\port.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 4</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 43</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 2 16 26 12 33 28 1 50 19 9 3 22 25</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 2 16 26 12 33 28 1 50 19 9 3 22 25</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\portable\IAR\78K0R_Kx3\portmacro.s26</name>
<outputs>
<tool>
<name>A78000</name>
<file> 39</file>
</tool>
</outputs>
<inputs>
<tool>
<name>A78000</name>
<file> 28</file>
</tool>
</inputs>
</file>
<file>
<name>[ROOT_NODE]</name>
<outputs>
<tool>
<name>XLINK</name>
<file> 7</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\Release\Obj\rtosdemo.pbd</name>
<inputs>
<tool>
<name>BILINK</name>
<file> 30 57 44 5 36 59 43 48 41 34 29</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\LEDtoggle\LED.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 42</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 30</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 26 12 16 33 28 1 50 19 9 3 22 25 40 63 27</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 26 12 16 33 28 1 50 19 9 3 22 25 40 63 27</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Full\print.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 46</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 48</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 2 16 26 12 33 28 1 50 19 9 3 63 27</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 2 16 26 12 33 28 1 50 19 9 3 63 27</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\list.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 47</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 36</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 2 16 26 12 33 28 1 50 19 9 3 25</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 2 16 26 12 33 28 1 50 19 9 3 25</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\portable\MemMang\heap_1.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 58</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 44</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 2 16 26 12 33 28 1 50 19 9 3 22 25</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 2 16 26 12 33 28 1 50 19 9 3 22 25</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\main.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 35</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 59</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 2 16 13 26 12 33 28 1 50 19 9 3 22 25 32 20 40 27 52</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 2 16 13 26 12 33 28 1 50 19 9 3 22 25 32 20 40 27 52</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\queue.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 6</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 41</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 2 16 13 26 12 33 28 1 50 19 9 3 22 25 14</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 2 16 13 26 12 33 28 1 50 19 9 3 22 25 14</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\tasks.c</name>
<outputs>
<tool>
<name>ICC78000</name>
<file> 38</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 29</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICC78000</name>
<file> 17 23 16 2 13 26 12 33 28 1 50 19 9 3 22 25</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 17 23 16 2 13 26 12 33 28 1 50 19 9 3 22 25</file>
</tool>
</inputs>
</file>
<forcedrebuild>
<name>[MULTI_TOOL]</name>
<tool>XLINK</tool>
</forcedrebuild>
</configuration>
</project>

@ -0,0 +1,479 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<project>
<fileVersion>2</fileVersion>
<configuration>
<name>Debug</name>
<toolchain>
<name>78000</name>
</toolchain>
<debug>1</debug>
<settings>
<name>C-SPY</name>
<archiveVersion>5</archiveVersion>
<data>
<version>2</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CMandatory</name>
<state>1</state>
</option>
<option>
<name>CInput</name>
<state>1</state>
</option>
<option>
<name>DebuggerProcessorVariant</name>
<state>0</state>
</option>
<option>
<name>DebuggerCodeModel</name>
<state>0</state>
</option>
<option>
<name>CRunToEnable</name>
<state>1</state>
</option>
<option>
<name>CRunToName</name>
<state>main</state>
</option>
<option>
<name>CMacOverride</name>
<state>0</state>
</option>
<option>
<name>CMacFile</name>
<state></state>
</option>
<option>
<name>DynDriver</name>
<state>MIC78K</state>
</option>
<option>
<name>DDFOverride</name>
<state>0</state>
</option>
<option>
<name>DDFFile</name>
<state>$TOOLKIT_DIR$\CONFIG\DDF\io78f1166_a0.ddf</state>
</option>
<option>
<name>DebuggerNearConstLocation</name>
<state>0</state>
</option>
<option>
<name>DDDFileSlave</name>
<state>1</state>
</option>
<option>
<name>CSpyExtraOptionsCheck</name>
<state>0</state>
</option>
<option>
<name>CSpyExtraOptions</name>
<state></state>
</option>
</data>
</settings>
<settings>
<name>EMU78K</name>
<archiveVersion>5</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CEmuMandatory</name>
<state>0</state>
</option>
<option>
<name>EMUSuppressLoad</name>
<state>0</state>
</option>
<option>
<name>EmuLogFile</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>EmuDoLogfile</name>
<state>0</state>
</option>
<option>
<name>EMUVerifyLoad</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>IEC78K</name>
<archiveVersion>5</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CEmuMandatory</name>
<state>0</state>
</option>
<option>
<name>EMUSuppressLoad</name>
<state>0</state>
</option>
<option>
<name>EMUVerifyLoad</name>
<state>0</state>
</option>
<option>
<name>EmuLogFile</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>EmuDoLogfile</name>
<state>0</state>
</option>
<option>
<name>EMUSupExchAdapter</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>MIC78K</name>
<archiveVersion>5</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CEmuMandatory</name>
<state>0</state>
</option>
<option>
<name>EMUSuppressLoad</name>
<state>0</state>
</option>
<option>
<name>EMUVerifyLoad</name>
<state>0</state>
</option>
<option>
<name>EmuLogFile</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>EmuDoLogfile</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>SIM78K</name>
<archiveVersion>5</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CSimMandatory</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>TKS78K</name>
<archiveVersion>5</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CEmuMandatory</name>
<state>0</state>
</option>
<option>
<name>EMUSuppressLoad</name>
<state>0</state>
</option>
<option>
<name>EMUVerifyLoad</name>
<state>0</state>
</option>
<option>
<name>EmuLogFile</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>EmuDoLogfile</name>
<state>0</state>
</option>
<option>
<name>EmuComPort</name>
<version>0</version>
<state>2</state>
</option>
</data>
</settings>
<debuggerPlugins>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\CodeCoverage\codecoverage.ENU.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Orti\orti.ENU.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Profiling\profiling.ENU.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Stack\stack.ENU.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
</debuggerPlugins>
</configuration>
<configuration>
<name>Release</name>
<toolchain>
<name>78000</name>
</toolchain>
<debug>0</debug>
<settings>
<name>C-SPY</name>
<archiveVersion>5</archiveVersion>
<data>
<version>2</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CMandatory</name>
<state>1</state>
</option>
<option>
<name>CInput</name>
<state>1</state>
</option>
<option>
<name>DebuggerProcessorVariant</name>
<state>0</state>
</option>
<option>
<name>DebuggerCodeModel</name>
<state>0</state>
</option>
<option>
<name>CRunToEnable</name>
<state>1</state>
</option>
<option>
<name>CRunToName</name>
<state>main</state>
</option>
<option>
<name>CMacOverride</name>
<state>0</state>
</option>
<option>
<name>CMacFile</name>
<state></state>
</option>
<option>
<name>DynDriver</name>
<state>MIC78K</state>
</option>
<option>
<name>DDFOverride</name>
<state>0</state>
</option>
<option>
<name>DDFFile</name>
<state>$TOOLKIT_DIR$\CONFIG\DDF\io78f1166_a0.ddf</state>
</option>
<option>
<name>DebuggerNearConstLocation</name>
<state>0</state>
</option>
<option>
<name>DDDFileSlave</name>
<state>1</state>
</option>
<option>
<name>CSpyExtraOptionsCheck</name>
<state>0</state>
</option>
<option>
<name>CSpyExtraOptions</name>
<state></state>
</option>
</data>
</settings>
<settings>
<name>EMU78K</name>
<archiveVersion>5</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CEmuMandatory</name>
<state>0</state>
</option>
<option>
<name>EMUSuppressLoad</name>
<state>0</state>
</option>
<option>
<name>EmuLogFile</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>EmuDoLogfile</name>
<state>0</state>
</option>
<option>
<name>EMUVerifyLoad</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>IEC78K</name>
<archiveVersion>5</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CEmuMandatory</name>
<state>0</state>
</option>
<option>
<name>EMUSuppressLoad</name>
<state>0</state>
</option>
<option>
<name>EMUVerifyLoad</name>
<state>0</state>
</option>
<option>
<name>EmuLogFile</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>EmuDoLogfile</name>
<state>0</state>
</option>
<option>
<name>EMUSupExchAdapter</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>MIC78K</name>
<archiveVersion>5</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CEmuMandatory</name>
<state>0</state>
</option>
<option>
<name>EMUSuppressLoad</name>
<state>0</state>
</option>
<option>
<name>EMUVerifyLoad</name>
<state>0</state>
</option>
<option>
<name>EmuLogFile</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>EmuDoLogfile</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>SIM78K</name>
<archiveVersion>5</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CSimMandatory</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>TKS78K</name>
<archiveVersion>5</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CEmuMandatory</name>
<state>0</state>
</option>
<option>
<name>EMUSuppressLoad</name>
<state>0</state>
</option>
<option>
<name>EMUVerifyLoad</name>
<state>0</state>
</option>
<option>
<name>EmuLogFile</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>EmuDoLogfile</name>
<state>0</state>
</option>
<option>
<name>EmuComPort</name>
<version>0</version>
<state>2</state>
</option>
</data>
</settings>
<debuggerPlugins>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\CodeCoverage\codecoverage.ENU.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Orti\orti.ENU.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Profiling\profiling.ENU.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Stack\stack.ENU.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
</debuggerPlugins>
</configuration>
</project>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<workspace>
<project>
<path>$WS_DIR$\rtosdemo.ewp</path>
</project>
<batchBuild/>
</workspace>

@ -0,0 +1,33 @@
@REM This bat file has been generated by the IAR Embeddded Workbench
@REM C-SPY interactive debugger,as an aid to preparing a command
@REM line for running the cspybat command line utility with the
@REM appropriate settings.
@REM
@REM After making some adjustments to this file, you can launch cspybat
@REM by typing the name of this file followed by the name of the debug
@REM file (usually an ubrof file). Note that this file is generated
@REM every time a new debug session is initialized, so you may want to
@REM move or rename the file before making changes.
@REM
@REM Note: some command line arguments cannot be properly generated
@REM by this process. Specifically, the plugin which is responsible
@REM for the Terminal I/O window (and other C runtime functionality)
@REM comes in a special version for cspybat, and the name of that
@REM plugin dll is not known when generating this file. It resides in
@REM the $TOOLKIT_DIR$\bin folder and is usually called XXXbat.dll or
@REM XXXlibsupportbat.dll, where XXX is the name of the corresponding
@REM tool chain. Replace the '<libsupport_plugin>' parameter
@REM below with the appropriate file name. Other plugins loaded by
@REM C-SPY are usually not needed by, or will not work in, cspybat
@REM but they are listed at the end of this file for reference.
"C:\Devtools\IAR Systems\Embedded Workbench 5.0\common\bin\cspybat" "C:\Devtools\IAR Systems\Embedded Workbench 5.0\78k\bin\78k0rproc.dll" "C:\Devtools\IAR Systems\Embedded Workbench 5.0\78k\bin\78k0rminitks.dll" %1 --plugin "C:\Devtools\IAR Systems\Embedded Workbench 5.0\78k\bin\<libsupport_plugin>" --backend -B "--core" "78k0r" "--near_const_location" "rom1" "--near_const_start" "0xF1000" "--near_const_size" "47.75" "-p" "C:\Devtools\IAR Systems\Embedded Workbench 5.0\78k\CONFIG\DDF\io78f1166_a0.ddf" "-d" "minicube"
@REM Loaded plugins:
@REM 78kLibSupport.dll
@REM C:\Devtools\IAR Systems\Embedded Workbench 5.0\common\plugins\CodeCoverage\CodeCoverage.dll
@REM C:\Devtools\IAR Systems\Embedded Workbench 5.0\common\plugins\Profiling\Profiling.dll
@REM C:\Devtools\IAR Systems\Embedded Workbench 5.0\common\plugins\stack\stack.dll
@REM C:\Devtools\IAR Systems\Embedded Workbench 5.0\common\plugins\SymList\SymList.dll

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<Project>
<Desktop>
<Static>
<Debug-Log/>
<Build>
<ColumnWidth0>20</ColumnWidth0>
<ColumnWidth1>1216</ColumnWidth1>
<ColumnWidth2>324</ColumnWidth2>
<ColumnWidth3>81</ColumnWidth3>
</Build>
<Workspace>
<ColumnWidths>
<Column0>181</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
</Workspace>
<Disassembly>
<PreferedWindows>
<Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows>
<MixedMode>1</MixedMode><CodeCovShow>0</CodeCovShow></Disassembly>
<Register/><Watch><Format><struct_types/><watch_formats/></Format><Column0>100</Column0><Column1>100</Column1><Column2>100</Column2><Column3>100</Column3></Watch></Static>
<Windows>
<Wnd2>
<Tabs>
<Tab>
<Identity>TabID-15892-1978</Identity>
<TabName>Debug Log</TabName>
<Factory>Debug-Log</Factory>
<Session/>
</Tab>
<Tab>
<Identity>TabID-15370-1988</Identity>
<TabName>Build</TabName>
<Factory>Build</Factory>
<Session/>
</Tab>
<Tab><Identity>TabID-15381-14004</Identity><TabName>Breakpoints</TabName><Factory>Breakpoints</Factory></Tab></Tabs>
<SelectedTab>0</SelectedTab></Wnd2><Wnd6>
<Tabs>
<Tab>
<Identity>TabID-26641-1982</Identity>
<TabName>Workspace</TabName>
<Factory>Workspace</Factory>
<Session>
<NodeDict><ExpandedNode>rtosdemo</ExpandedNode><ExpandedNode>rtosdemo/Demo Source</ExpandedNode><ExpandedNode>rtosdemo/Kernel Source</ExpandedNode></NodeDict></Session>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd6><Wnd7><Tabs><Tab><Identity>TabID-10381-31310</Identity><TabName>Register</TabName><Factory>Register</Factory><Session><REG1>0</REG1><REG2>0</REG2><Group>0</Group><States>0</States></Session></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd7><Wnd8><Tabs><Tab><Identity>TabID-22710-15119</Identity><TabName>Disassembly</TabName><Factory>Disassembly</Factory><Session/></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd8><Wnd9><Tabs><Tab><Identity>TabID-16207-15446</Identity><TabName>Watch</TabName><Factory>Watch</Factory><Session><Expressions><Expression><Expression>usCriticalNesting</Expression></Expression></Expressions><TabId>0</TabId><Column0>100</Column0><Column1>100</Column1><Column2>100</Column2><Column3>100</Column3></Session></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd9></Windows>
<Editor>
<Pane><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\WorkingCopy3\Source\portable\IAR\78K0R\port.c</Filename><XPos>0</XPos><YPos>48</YPos><SelStart>689</SelStart><SelEnd>689</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\NEC_78K0R_IAR\main.c</Filename><XPos>0</XPos><YPos>85</YPos><SelStart>3884</SelStart><SelEnd>3884</SelEnd></Tab><ActiveTab>1</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\NEC_78K0R_IAR\RegTest.s26</Filename><XPos>0</XPos><YPos>57</YPos><SelStart>2622</SelStart><SelEnd>2622</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\WorkingCopy3\Source\portable\IAR\78K0R\portasm.s26</Filename><XPos>0</XPos><YPos>122</YPos><SelStart>6048</SelStart><SelEnd>6048</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\WorkingCopy3\Source\portable\IAR\78K0R\portmacro.h</Filename><XPos>0</XPos><YPos>106</YPos><SelStart>4913</SelStart><SelEnd>4913</SelEnd></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Positions>
<Top><Row0><Sizes><Toolbar-00aa9c38><key>iaridepm.enu1</key></Toolbar-00aa9c38><Toolbar-04375918><key>debuggergui.enu1</key></Toolbar-04375918></Sizes></Row0></Top><Left><Row0><Sizes><Wnd6><Rect><Top>-2</Top><Left>-2</Left><Bottom>740</Bottom><Right>255</Right><x>-2</x><y>-2</y><xscreen>240</xscreen><yscreen>200</yscreen><sizeHorzCX>142857</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>152976</sizeVertCX><sizeVertCY>755601</sizeVertCY></Rect></Wnd6></Sizes></Row0></Left><Right><Row0><Sizes><Wnd7><Rect><Top>-2</Top><Left>-2</Left><Bottom>553</Bottom><Right>536</Right><x>-2</x><y>-2</y><xscreen>240</xscreen><yscreen>200</yscreen><sizeHorzCX>142857</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>320238</sizeVertCX><sizeVertCY>565173</sizeVertCY></Rect></Wnd7><Wnd9><Rect><Top>0</Top><Left>0</Left><Bottom>0</Bottom><Right>543518313</Right><x>-2</x><y>551</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>320238</sizeVertCX><sizeVertCY>192464</sizeVertCY></Rect></Wnd9></Sizes></Row0><Row1><Sizes><Wnd8><Rect><Top>-2</Top><Left>534</Left><Bottom>740</Bottom><Right>939</Right><x>534</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>241071</sizeVertCX><sizeVertCY>755601</sizeVertCY></Rect></Wnd8></Sizes></Row1></Right><Bottom><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>198</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>200</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>142857</sizeVertCX><sizeVertCY>203666</sizeVertCY></Rect></Wnd2></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
</Desktop>
</Project>

@ -0,0 +1,85 @@
[CodeCoverage]
Enabled=_ 0
[MINICUBE2]
Map0=0,0,262143,262144
Map1=1,1036032,1048319,12288
MapEntries=2
HWsettings=4,0,1,2,4,0,2,0
HWsettingsCube=2,4294967295,2,4294967295,0,1,0,0
HWsettingsRsuid=FFFFFFFFFFFFFFFFFFFF
EventEntries=0
SeqName0=
SeqData0=0,0
SeqEnable10=0,0,0,0,0,0,0,0,0,0
SeqEnable20=0,0,0,0,0,0,0,0,0,0
SeqEnable30=0,0,0,0,0,0,0,0,0,0
SeqEnable40=0,0,0,0,0,0,0,0,0,0
SeqDisable0=0,0,0,0,0,0,0,0,0,0
SeqData20=0,0,0,0,0,0
SeqName1=
SeqData1=0,0
SeqEnable11=0,0,0,0,0,0,0,0,0,0
SeqEnable21=0,0,0,0,0,0,0,0,0,0
SeqEnable31=0,0,0,0,0,0,0,0,0,0
SeqEnable41=0,0,0,0,0,0,0,0,0,0
SeqDisable1=0,0,0,0,0,0,0,0,0,0
SeqData21=0,0,0,0,0,0
SeqName2=
SeqData2=0,0
SeqEnable12=0,0,0,0,0,0,0,0,0,0
SeqEnable22=0,0,0,0,0,0,0,0,0,0
SeqEnable32=0,0,0,0,0,0,0,0,0,0
SeqEnable42=0,0,0,0,0,0,0,0,0,0
SeqDisable2=0,0,0,0,0,0,0,0,0,0
SeqData22=0,0,0,0,0,0
SeqName3=
SeqData3=0,0
SeqEnable13=0,0,0,0,0,0,0,0,0,0
SeqEnable23=0,0,0,0,0,0,0,0,0,0
SeqEnable33=0,0,0,0,0,0,0,0,0,0
SeqEnable43=0,0,0,0,0,0,0,0,0,0
SeqDisable3=0,0,0,0,0,0,0,0,0,0
SeqData23=0,0,0,0,0,0
SeqName4=
SeqData4=0,0
SeqEnable14=0,0,0,0,0,0,0,0,0,0
SeqEnable24=0,0,0,0,0,0,0,0,0,0
SeqEnable34=0,0,0,0,0,0,0,0,0,0
SeqEnable44=0,0,0,0,0,0,0,0,0,0
SeqDisable4=0,0,0,0,0,0,0,0,0,0
SeqData24=0,0,0,0,0,0
TraceSettings=64,0,0,0,0,0,8192
TimerSettings=0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
CoverSettings=1048192,1048207,0
Version=1,78k0rtrace.txt
LastDevFile=DF1166A0.78K
EmulType=320
EventLimits=0, 1, 1, 2
LastSetupFailed=0
[DisAssemblyWindow]
NumStates=_ 1
State 1=_ 1
[Profiling]
Enabled=0
[StackPlugin]
Enabled=1
OverflowWarningsEnabled=1
WarningThreshold=90
SpWarningsEnabled=1
WarnHow=0
UseTrigger=1
TriggerName=main
LimitSize=0
ByteLimit=50
[Breakpoints]
Count=0
[Log file]
LoggingEnabled=_ 0
LogFile=_ ""
Category=_ 0
[TermIOLog]
LoggingEnabled=_ 0
LogFile=_ ""
[TraceHelper]
Enabled=0
ShowSource=1

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<Workspace>
<ConfigDictionary>
<CurrentConfigs><Project>rtosdemo/Debug</Project></CurrentConfigs></ConfigDictionary>
<Desktop>
<Static>
<Workspace>
<ColumnWidths>
<Column0>277</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
</Workspace>
<Build>
<ColumnWidth0>20</ColumnWidth0><ColumnWidth1>916</ColumnWidth1><ColumnWidth2>244</ColumnWidth2><ColumnWidth3>61</ColumnWidth3></Build>
<Debug-Log/><TerminalIO/></Static>
<Windows>
<Wnd0>
<Tabs>
<Tab>
<Identity>TabID-28554-14697</Identity>
<TabName>Workspace</TabName>
<Factory>Workspace</Factory>
<Session>
<NodeDict><ExpandedNode>rtosdemo</ExpandedNode><ExpandedNode>rtosdemo/Demo Source</ExpandedNode><ExpandedNode>rtosdemo/Kernel Source</ExpandedNode><ExpandedNode>rtosdemo/Kernel Source/port.c</ExpandedNode></NodeDict></Session>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd0><Wnd1>
<Tabs>
<Tab>
<Identity>TabID-24371-14776</Identity>
<TabName>Build</TabName>
<Factory>Build</Factory>
<Session/>
</Tab>
<Tab><Identity>TabID-2405-1208</Identity><TabName>Debug Log</TabName><Factory>Debug-Log</Factory><Session/></Tab></Tabs>
<SelectedTab>0</SelectedTab></Wnd1></Windows>
<Editor>
<Pane><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\WorkingCopy3\Source\portable\IAR\78K0R\port.c</Filename><XPos>0</XPos><YPos>48</YPos><SelStart>689</SelStart><SelEnd>689</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\NEC_78K0R_IAR\main.c</Filename><XPos>0</XPos><YPos>85</YPos><SelStart>3884</SelStart><SelEnd>3884</SelEnd></Tab><ActiveTab>1</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\NEC_78K0R_IAR\RegTest.s26</Filename><XPos>0</XPos><YPos>57</YPos><SelStart>2622</SelStart><SelEnd>2622</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\WorkingCopy3\Source\portable\IAR\78K0R\portasm.s26</Filename><XPos>0</XPos><YPos>122</YPos><SelStart>6048</SelStart><SelEnd>6048</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\WorkingCopy3\Source\portable\IAR\78K0R\portmacro.h</Filename><XPos>0</XPos><YPos>106</YPos><SelStart>4913</SelStart><SelEnd>4913</SelEnd></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Positions>
<Top><Row0><Sizes><Toolbar-00aa9c38><key>iaridepm.enu1</key></Toolbar-00aa9c38></Sizes></Row0></Top><Left><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>735</Bottom><Right>351</Right><x>-2</x><y>-2</y><xscreen>219</xscreen><yscreen>205</yscreen><sizeHorzCX>130357</sizeHorzCX><sizeHorzCY>208758</sizeHorzCY><sizeVertCX>210119</sizeVertCX><sizeVertCY>750509</sizeVertCY></Rect></Wnd0></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>203</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>205</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>208758</sizeHorzCY><sizeVertCX>130357</sizeVertCX><sizeVertCY>208758</sizeVertCY></Rect></Wnd1></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
</Desktop>
</Workspace>
Loading…
Cancel
Save