Commit a0a3bb6a by trkall

Lab 4

parent f6436be7
...@@ -88,7 +88,7 @@ int OS_AddThreads(void(*thread0)(void), ...@@ -88,7 +88,7 @@ int OS_AddThreads(void(*thread0)(void),
void(*thread3)(void), void(*thread3)(void),
void(*thread4)(void), void(*thread4)(void),
void(*thread5)(void)){ void(*thread5)(void)){
// **similar to Lab 2. initialize as not blocked, not sleeping**** // **similar to Lab 2. initialize as not blocked, not sleeping****
// initialize TCB circular list // initialize TCB circular list
tcbs[0].next = &tcbs[1]; tcbs[0].next = &tcbs[1];
tcbs[1].next = &tcbs[2]; tcbs[1].next = &tcbs[2];
...@@ -119,8 +119,8 @@ int OS_AddThreads(void(*thread0)(void), ...@@ -119,8 +119,8 @@ int OS_AddThreads(void(*thread0)(void),
SetInitialStack(5); SetInitialStack(5);
Stacks[5][STACKSIZE-2] = (int32_t)(thread5); Stacks[5][STACKSIZE-2] = (int32_t)(thread5);
return 1; // successful return 1; // successful
} }
//******** OS_AddPeriodicEventThread *************** //******** OS_AddPeriodicEventThread ***************
......
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ProjectGui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_guix.xsd">
<SchemaVersion>-6.1</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<PrjGuiSettings>
<LastAddFilePath></LastAddFilePath>
</PrjGuiSettings>
<ViewPool/>
<SECTreeCtrl>
<View>
<WinId>38003</WinId>
<ViewName>Registers</ViewName>
<TableColWidths>115 45</TableColWidths>
</View>
<View>
<WinId>346</WinId>
<ViewName>Code Coverage</ViewName>
<TableColWidths>665 160</TableColWidths>
</View>
<View>
<WinId>204</WinId>
<ViewName>Performance Analyzer</ViewName>
<TableColWidths>825</TableColWidths>
</View>
</SECTreeCtrl>
<TreeListPane>
<View>
<WinId>35141</WinId>
<ViewName>Event Statistics</ViewName>
<UserString></UserString>
<TableColWidths>200 50 700</TableColWidths>
</View>
<View>
<WinId>1506</WinId>
<ViewName>Symbols</ViewName>
<UserString></UserString>
<TableColWidths>56 56 56</TableColWidths>
</View>
<View>
<WinId>1936</WinId>
<ViewName>Watch 1</ViewName>
<UserString></UserString>
<TableColWidths>200 133 133</TableColWidths>
</View>
<View>
<WinId>1937</WinId>
<ViewName>Watch 2</ViewName>
<UserString></UserString>
<TableColWidths>200 133 133</TableColWidths>
</View>
<View>
<WinId>1935</WinId>
<ViewName>Call Stack + Locals</ViewName>
<UserString></UserString>
<TableColWidths>200 133 133</TableColWidths>
</View>
<View>
<WinId>2506</WinId>
<ViewName>Trace Data</ViewName>
<UserString></UserString>
<TableColWidths>75 135 130 95 70 230 200 150</TableColWidths>
</View>
<View>
<WinId>466</WinId>
<ViewName>Source Browser</ViewName>
<UserString>500</UserString>
<TableColWidths>300</TableColWidths>
</View>
</TreeListPane>
<CompViewPool/>
<WindowSettings>
<LogicAnalizer>
<ShowLACursor>0</ShowLACursor>
<ShowSignalInfo>0</ShowSignalInfo>
<ShowCycles>0</ShowCycles>
<LeftSideBarSize>50</LeftSideBarSize>
<TimeBaseIndex>16</TimeBaseIndex>
</LogicAnalizer>
</WindowSettings>
<WinLayoutEx>
<sActiveDebugView></sActiveDebugView>
<WindowPosition>
<length>44</length>
<flags>0</flags>
<showCmd>1</showCmd>
<MinPosition>
<xPos>-32000</xPos>
<yPos>-32000</yPos>
</MinPosition>
<MaxPosition>
<xPos>-1</xPos>
<yPos>-1</yPos>
</MaxPosition>
<NormalPosition>
<Top>37</Top>
<Left>379</Left>
<Right>1404</Right>
<Bottom>563</Bottom>
</NormalPosition>
</WindowPosition>
<MDIClientArea>
<RegID>0</RegID>
<MDITabState>
<Len>253</Len>
<Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000100000000000000010000003B433A5C55736572735C547265665C6265735F6C6162735F323032305C4C6162776172655C4C6162345F4669746E6573735F34433132335C6F732E6300000000046F732E6300000000C5D4F200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000008B0300006D0000004E05000055020000</Data>
</MDITabState>
</MDIClientArea>
<ViewEx>
<ViewType>0</ViewType>
<ViewName>Build</ViewName>
<Window>
<RegID>-1</RegID>
<PaneID>-1</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>AE0000004F000000F1030000B3000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>1005</RegID>
<PaneID>1005</PaneID>
<IsVisible>1</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000066000000300000001E020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>109</RegID>
<PaneID>109</PaneID>
<IsVisible>1</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000066000000300000001E020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000001C010000F0010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>1465</RegID>
<PaneID>1465</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0000000074010000F1030000D5010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>1466</RegID>
<PaneID>1466</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000077010000EE030000AB010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>1467</RegID>
<PaneID>1467</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000077010000EE030000AB010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>1468</RegID>
<PaneID>1468</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000077010000EE030000AB010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>1506</RegID>
<PaneID>1506</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>16384</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000C3000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>1913</RegID>
<PaneID>1913</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>B100000066000000EE0300009A000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>1935</RegID>
<PaneID>1935</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000077010000EE030000BC010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>1936</RegID>
<PaneID>1936</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000077010000EE030000AB010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>1937</RegID>
<PaneID>1937</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000077010000EE030000AB010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>1939</RegID>
<PaneID>1939</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000077010000EE030000AB010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>1940</RegID>
<PaneID>1940</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000077010000EE030000AB010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>1941</RegID>
<PaneID>1941</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000077010000EE030000AB010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>1942</RegID>
<PaneID>1942</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000077010000EE030000AB010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>195</RegID>
<PaneID>195</PaneID>
<IsVisible>1</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000066000000300000001E020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000001C010000F0010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>196</RegID>
<PaneID>196</PaneID>
<IsVisible>1</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000066000000300000001E020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000001C010000F0010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>197</RegID>
<PaneID>197</PaneID>
<IsVisible>1</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>000000004F020000FA0100009F020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>198</RegID>
<PaneID>198</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0000000060010000F1030000D5010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>199</RegID>
<PaneID>199</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000052020000EE03000086020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>203</RegID>
<PaneID>203</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>8192</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>AE00000063000000F1030000B3000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>204</RegID>
<PaneID>204</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>B100000066000000EE0300009A000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>221</RegID>
<PaneID>221</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>00000000000000000000000000000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>0A0000000A0000006E0000006E000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>2506</RegID>
<PaneID>2506</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4703000063000000F10300006D010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>2507</RegID>
<PaneID>2507</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0000000074010000F1030000C4010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>343</RegID>
<PaneID>343</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>B100000066000000EE0300009A000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>346</RegID>
<PaneID>346</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>B100000066000000EE0300009A000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35141</RegID>
<PaneID>35141</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>AE00000063000000F1030000B3000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35824</RegID>
<PaneID>35824</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>B100000066000000EE0300009A000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35885</RegID>
<PaneID>35885</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35886</RegID>
<PaneID>35886</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35887</RegID>
<PaneID>35887</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35888</RegID>
<PaneID>35888</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35889</RegID>
<PaneID>35889</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35890</RegID>
<PaneID>35890</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35891</RegID>
<PaneID>35891</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35892</RegID>
<PaneID>35892</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35893</RegID>
<PaneID>35893</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35894</RegID>
<PaneID>35894</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35895</RegID>
<PaneID>35895</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35896</RegID>
<PaneID>35896</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35897</RegID>
<PaneID>35897</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35898</RegID>
<PaneID>35898</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35899</RegID>
<PaneID>35899</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35900</RegID>
<PaneID>35900</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35901</RegID>
<PaneID>35901</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35902</RegID>
<PaneID>35902</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35903</RegID>
<PaneID>35903</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35904</RegID>
<PaneID>35904</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>35905</RegID>
<PaneID>35905</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>38003</RegID>
<PaneID>38003</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000066000000A7000000BC010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000001C010000F0010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>38007</RegID>
<PaneID>38007</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>000000004F020000F10300009F020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>436</RegID>
<PaneID>436</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000052020000EE03000086020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000001C010000F0010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>437</RegID>
<PaneID>437</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000077010000EE030000AB010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>440</RegID>
<PaneID>440</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000077010000EE030000AB010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>463</RegID>
<PaneID>463</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000052020000EE03000086020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000001C010000F0010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>466</RegID>
<PaneID>466</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000052020000EE03000086020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000001C010000F0010000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>470</RegID>
<PaneID>470</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>B100000066000000EE0300009A000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>53000000690000004B020000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50000</RegID>
<PaneID>50000</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50001</RegID>
<PaneID>50001</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50002</RegID>
<PaneID>50002</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50003</RegID>
<PaneID>50003</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50004</RegID>
<PaneID>50004</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50005</RegID>
<PaneID>50005</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50006</RegID>
<PaneID>50006</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50007</RegID>
<PaneID>50007</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50008</RegID>
<PaneID>50008</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50009</RegID>
<PaneID>50009</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50010</RegID>
<PaneID>50010</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50011</RegID>
<PaneID>50011</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50012</RegID>
<PaneID>50012</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50013</RegID>
<PaneID>50013</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50014</RegID>
<PaneID>50014</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50015</RegID>
<PaneID>50015</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50016</RegID>
<PaneID>50016</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50017</RegID>
<PaneID>50017</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50018</RegID>
<PaneID>50018</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>50019</RegID>
<PaneID>50019</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>4A03000066000000EE030000EC000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>59392</RegID>
<PaneID>59392</PaneID>
<IsVisible>1</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>8192</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0000000000000000FA0100001C000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>0A0000000A0000006E0000006E000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>59393</RegID>
<PaneID>0</PaneID>
<IsVisible>1</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>000000009F020000FA010000B2020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>0A0000000A0000006E0000006E000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>59399</RegID>
<PaneID>59399</PaneID>
<IsVisible>1</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>8192</RecentFrameAlignment>
<RecentRowIndex>1</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>000000001C000000E701000038000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>0A0000000A0000006E0000006E000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>59400</RegID>
<PaneID>59400</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>8192</RecentFrameAlignment>
<RecentRowIndex>2</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>00000000380000006F02000054000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>0A0000000A0000006E0000006E000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>824</RegID>
<PaneID>824</PaneID>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth>
<PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>0300000077010000EE030000AB010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>5300000069000000FD000000F6000000</Data>
</RectRecentFloat>
</Window>
<DockMan>
<Len>3312</Len>
<Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFAE000000B3000000F1030000B7000000000000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E65002000000000000053000000690000004B020000CA000000AE0000004F000000F1030000B30000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF430300004F000000470300006D010000000000000200001004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000005300000069000000FD000000F6000000470300004F000000F10300006D01000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF330000004F00000037000000370200000100000002000010040000000100000058FFFFFFE8010000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000005300000069000000FD000000F6000000000000004F00000033000000370200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF000000005C010000F10300006001000000000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000005300000069000000FD000000F60000000000000060010000F1030000D501000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFF901000060010000FD010000D501000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000037020000FA0100003B020000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000053000000690000004B020000CA000000000000003B020000FA0100009F0200000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
</DockMan>
<ToolBar>
<RegID>59392</RegID>
<Name>File</Name>
<Buttons>
<Len>2548</Len>
<Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000034F757496000000000000000100034F757400000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000000000000010000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65FF7F0000</Data>
</Buttons>
<OriginalItems>
<Len>1423</Len>
<Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
</OriginalItems>
<OrigResetItems>
<Len>1423</Len>
<Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000</Data>
</OrigResetItems>
</ToolBar>
<ToolBar>
<RegID>59399</RegID>
<Name>Build</Name>
<Buttons>
<Len>972</Len>
<Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000004002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000065461726765749600000000000000010006546172676574000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64FF7F0000</Data>
</Buttons>
<OriginalItems>
<Len>583</Len>
<Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
</OriginalItems>
<OrigResetItems>
<Len>583</Len>
<Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000</Data>
</OrigResetItems>
</ToolBar>
<ToolBar>
<RegID>59400</RegID>
<Name>Debug</Name>
<Buttons>
<Len>2373</Len>
<Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000000000000100000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000000000000100000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000000000000100000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000000000000100000001000000000000000000000001000000000000000000054465627567FF7F0000</Data>
</Buttons>
<OriginalItems>
<Len>898</Len>
<Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
</OriginalItems>
<OrigResetItems>
<Len>898</Len>
<Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000</Data>
</OrigResetItems>
</ToolBar>
<ControlBarsSummary>
<Bars>0</Bars>
<ScreenCX>1366</ScreenCX>
<ScreenCY>768</ScreenCY>
</ControlBarsSummary>
</ViewEx>
</WinLayoutEx>
<MDIGroups>
<Orientation>1</Orientation>
<ActiveMDIGroup>0</ActiveMDIGroup>
<MDIGroup>
<Size>100</Size>
<ActiveTab>0</ActiveTab>
<Doc>
<Name>.\os.c</Name>
<ColumnNumber>28</ColumnNumber>
<TopLine>1</TopLine>
<CurrentLine>12</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
</MDIGroup>
</MDIGroups>
</ProjectGui>
...@@ -100,7 +100,10 @@ ...@@ -100,7 +100,10 @@
<tRSysVw>1</tRSysVw> <tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb> <sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime> <sLrtime>0</sLrtime>
<nTsel>3</nTsel> <bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
<nTsel>-1</nTsel>
<sDll></sDll> <sDll></sDll>
<sDllPa></sDllPa> <sDllPa></sDllPa>
<sDlgDll></sDlgDll> <sDlgDll></sDlgDll>
...@@ -202,6 +205,17 @@ ...@@ -202,6 +205,17 @@
</DebugFlag> </DebugFlag>
<LintExecutable></LintExecutable> <LintExecutable></LintExecutable>
<LintConfigFile></LintConfigFile> <LintConfigFile></LintConfigFile>
<bLintAuto>0</bLintAuto>
<bAutoGenD>0</bAutoGenD>
<LntExFlags>0</LntExFlags>
<pMisraName></pMisraName>
<pszMrule></pszMrule>
<pSingCmds></pSingCmds>
<pMultCmds></pMultCmds>
<pMisraNamep></pMisraNamep>
<pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp>
</TargetOption> </TargetOption>
</Target> </Target>
...@@ -216,7 +230,6 @@ ...@@ -216,7 +230,6 @@
<FileNumber>1</FileNumber> <FileNumber>1</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>.\Lab4.c</PathWithFileName> <PathWithFileName>.\Lab4.c</PathWithFileName>
...@@ -229,7 +242,6 @@ ...@@ -229,7 +242,6 @@
<FileNumber>2</FileNumber> <FileNumber>2</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>..\inc\BSP.c</PathWithFileName> <PathWithFileName>..\inc\BSP.c</PathWithFileName>
...@@ -242,7 +254,6 @@ ...@@ -242,7 +254,6 @@
<FileNumber>3</FileNumber> <FileNumber>3</FileNumber>
<FileType>2</FileType> <FileType>2</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>.\osasm.s</PathWithFileName> <PathWithFileName>.\osasm.s</PathWithFileName>
...@@ -255,7 +266,6 @@ ...@@ -255,7 +266,6 @@
<FileNumber>4</FileNumber> <FileNumber>4</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>1</tvExp> <tvExp>1</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>.\os.c</PathWithFileName> <PathWithFileName>.\os.c</PathWithFileName>
...@@ -268,7 +278,6 @@ ...@@ -268,7 +278,6 @@
<FileNumber>5</FileNumber> <FileNumber>5</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>..\inc\Profile.c</PathWithFileName> <PathWithFileName>..\inc\Profile.c</PathWithFileName>
...@@ -289,7 +298,6 @@ ...@@ -289,7 +298,6 @@
<FileNumber>6</FileNumber> <FileNumber>6</FileNumber>
<FileType>3</FileType> <FileType>3</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>.\texas.o</PathWithFileName> <PathWithFileName>.\texas.o</PathWithFileName>
......
...@@ -10,11 +10,12 @@ ...@@ -10,11 +10,12 @@
<TargetName>Target</TargetName> <TargetName>Target</TargetName>
<ToolsetNumber>0x4</ToolsetNumber> <ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName> <ToolsetName>ARM-ADS</ToolsetName>
<uAC6>0</uAC6>
<TargetOption> <TargetOption>
<TargetCommonOption> <TargetCommonOption>
<Device>TM4C123GH6PM</Device> <Device>TM4C123GH6PM</Device>
<Vendor>Texas Instruments</Vendor> <Vendor>Texas Instruments</Vendor>
<PackID>Keil.TM4C_DFP.1.0.0</PackID> <PackID>Keil.TM4C_DFP.1.1.0</PackID>
<PackURL>http://www.keil.com/pack/</PackURL> <PackURL>http://www.keil.com/pack/</PackURL>
<Cpu>IROM(0x00000000,0x040000) IRAM(0x20000000,0x008000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu> <Cpu>IROM(0x00000000,0x040000) IRAM(0x20000000,0x008000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu>
<FlashUtilSpec></FlashUtilSpec> <FlashUtilSpec></FlashUtilSpec>
...@@ -84,6 +85,8 @@ ...@@ -84,6 +85,8 @@
<UserProg2Name></UserProg2Name> <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode> <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode> <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopA1X>0</nStopA1X>
<nStopA2X>0</nStopA2X>
</AfterMake> </AfterMake>
<SelectedForBatchBuild>0</SelectedForBatchBuild> <SelectedForBatchBuild>0</SelectedForBatchBuild>
<SVCSIdString></SVCSIdString> <SVCSIdString></SVCSIdString>
...@@ -122,47 +125,6 @@ ...@@ -122,47 +125,6 @@
<HexOffset>0</HexOffset> <HexOffset>0</HexOffset>
<Oh166RecLen>16</Oh166RecLen> <Oh166RecLen>16</Oh166RecLen>
</OPTHX> </OPTHX>
<Simulator>
<UseSimulator>0</UseSimulator>
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
<RunToMain>1</RunToMain>
<RestoreBreakpoints>1</RestoreBreakpoints>
<RestoreWatchpoints>1</RestoreWatchpoints>
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
<RestoreFunctions>1</RestoreFunctions>
<RestoreToolbox>1</RestoreToolbox>
<LimitSpeedToRealTime>0</LimitSpeedToRealTime>
<RestoreSysVw>1</RestoreSysVw>
</Simulator>
<Target>
<UseTarget>1</UseTarget>
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
<RunToMain>1</RunToMain>
<RestoreBreakpoints>1</RestoreBreakpoints>
<RestoreWatchpoints>1</RestoreWatchpoints>
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
<RestoreFunctions>0</RestoreFunctions>
<RestoreToolbox>1</RestoreToolbox>
<RestoreTracepoints>1</RestoreTracepoints>
<RestoreSysVw>1</RestoreSysVw>
</Target>
<RunDebugAfterBuild>0</RunDebugAfterBuild>
<TargetSelection>3</TargetSelection>
<SimDlls>
<CpuDll></CpuDll>
<CpuDllArguments></CpuDllArguments>
<PeripheralDll></PeripheralDll>
<PeripheralDllArguments></PeripheralDllArguments>
<InitializationFile></InitializationFile>
</SimDlls>
<TargetDlls>
<CpuDll></CpuDll>
<CpuDllArguments></CpuDllArguments>
<PeripheralDll></PeripheralDll>
<PeripheralDllArguments></PeripheralDllArguments>
<InitializationFile></InitializationFile>
<Driver>BIN\lmidk-agdi.dll</Driver>
</TargetDlls>
</DebugOption> </DebugOption>
<Utilities> <Utilities>
<Flash1> <Flash1>
...@@ -170,7 +132,7 @@ ...@@ -170,7 +132,7 @@
<UseExternalTool>0</UseExternalTool> <UseExternalTool>0</UseExternalTool>
<RunIndependent>0</RunIndependent> <RunIndependent>0</RunIndependent>
<UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging> <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
<Capability>1</Capability> <Capability>0</Capability>
<DriverSelection>4096</DriverSelection> <DriverSelection>4096</DriverSelection>
</Flash1> </Flash1>
<bUseTDR>1</bUseTDR> <bUseTDR>1</bUseTDR>
...@@ -221,12 +183,14 @@ ...@@ -221,12 +183,14 @@
<hadXRAM>0</hadXRAM> <hadXRAM>0</hadXRAM>
<uocXRam>0</uocXRam> <uocXRam>0</uocXRam>
<RvdsVP>1</RvdsVP> <RvdsVP>1</RvdsVP>
<RvdsMve>0</RvdsMve>
<hadIRAM2>0</hadIRAM2> <hadIRAM2>0</hadIRAM2>
<hadIROM2>0</hadIROM2> <hadIROM2>0</hadIROM2>
<StupSel>8</StupSel> <StupSel>8</StupSel>
<useUlib>0</useUlib> <useUlib>0</useUlib>
<EndSel>0</EndSel> <EndSel>0</EndSel>
<uLtcg>0</uLtcg> <uLtcg>0</uLtcg>
<nSecure>0</nSecure>
<RoSelD>3</RoSelD> <RoSelD>3</RoSelD>
<RwSelD>3</RwSelD> <RwSelD>3</RwSelD>
<CodeSel>0</CodeSel> <CodeSel>0</CodeSel>
...@@ -360,7 +324,15 @@ ...@@ -360,7 +324,15 @@
<uThumb>0</uThumb> <uThumb>0</uThumb>
<uSurpInc>0</uSurpInc> <uSurpInc>0</uSurpInc>
<uC99>1</uC99> <uC99>1</uC99>
<uGnu>0</uGnu>
<useXO>0</useXO> <useXO>0</useXO>
<v6Lang>1</v6Lang>
<v6LangP>1</v6LangP>
<vShortEn>1</vShortEn>
<vShortWch>1</vShortWch>
<v6Lto>0</v6Lto>
<v6WtE>0</v6WtE>
<v6Rtti>0</v6Rtti>
<VariousControls> <VariousControls>
<MiscControls></MiscControls> <MiscControls></MiscControls>
<Define></Define> <Define></Define>
...@@ -378,6 +350,7 @@ ...@@ -378,6 +350,7 @@
<NoWarn>0</NoWarn> <NoWarn>0</NoWarn>
<uSurpInc>0</uSurpInc> <uSurpInc>0</uSurpInc>
<useXO>0</useXO> <useXO>0</useXO>
<uClangAs>0</uClangAs>
<VariousControls> <VariousControls>
<MiscControls></MiscControls> <MiscControls></MiscControls>
<Define></Define> <Define></Define>
......
/* /*
* Auto generated Run-Time-Environment Component Configuration File * Auto generated Run-Time-Environment Configuration File
* *** Do not modify ! *** * *** Do not modify ! ***
* *
* Project: 'Lab4' * Project: 'Lab4'
...@@ -11,4 +11,11 @@ ...@@ -11,4 +11,11 @@
#define RTE_COMPONENTS_H #define RTE_COMPONENTS_H
/*
* Define the Device Header File:
*/
#define CMSIS_device_header "TM4C123.h"
#endif /* RTE_COMPONENTS_H */ #endif /* RTE_COMPONENTS_H */
...@@ -13,20 +13,32 @@ ...@@ -13,20 +13,32 @@
// function definitions in osasm.s // function definitions in osasm.s
void StartOS(void); void StartOS(void);
void static runperiodicevents(void);
#define FIFOSIZE 10 // can be any size
#define NUMTHREADS 8 // maximum number of threads #define NUMTHREADS 8 // maximum number of threads
#define NUMPERIODIC 2 // maximum number of periodic threads #define NUMPERIODIC 2 // maximum number of periodic threads
#define STACKSIZE 100 // number of 32-bit words in stack per thread #define STACKSIZE 100 // number of 32-bit words in stack per thread
struct tcb{ struct tcb{
int32_t *sp; // pointer to stack (valid for threads not running int32_t *sp; // pointer to stack (valid for threads not running
struct tcb *next; // linked-list pointer struct tcb *next; // linked-list pointer
int32_t *blocked; // from lab 3
int32_t sleeping; // lab 3
uint8_t priority; // 0 is the highest priority, 254 is the lowest
//*FILL THIS IN**** //*FILL THIS IN****
}; };
struct ptcb{//for periodic events
uint32_t period;// rate
uint64_t counter;
void (*thread)();//thread pointer
};
typedef struct tcb tcbType; typedef struct tcb tcbType;
tcbType tcbs[NUMTHREADS]; tcbType tcbs[NUMTHREADS];
tcbType *RunPt; tcbType *RunPt;
int32_t Stacks[NUMTHREADS][STACKSIZE]; int32_t Stacks[NUMTHREADS][STACKSIZE];
void static runperiodicevents(void);
// ******** OS_Init ************ // ******** OS_Init ************
// Initialize operating system, disable interrupts // Initialize operating system, disable interrupts
...@@ -39,13 +51,33 @@ void OS_Init(void){ ...@@ -39,13 +51,33 @@ void OS_Init(void){
BSP_Clock_InitFastest();// set processor clock to fastest speed BSP_Clock_InitFastest();// set processor clock to fastest speed
// perform any initializations needed, // perform any initializations needed,
// set up periodic timer to run runperiodicevents to implement sleeping // set up periodic timer to run runperiodicevents to implement sleeping
BSP_PeriodicTask_Init(&runperiodicevents, 1000 , 1);
} }
void SetInitialStack(int i){ void SetInitialStack(int i){
// ****IMPLEMENT THIS**** // ****IMPLEMENT THIS****
// **Same as Lab 2 and Lab 3**** // **Same as Lab 2 and Lab 3****
if (i >= NUMTHREADS)// if i is bigger than the amount of threads
return;
tcbs[i].sp = &Stacks[i][STACKSIZE-16]; // Thread stack pointer
Stacks[i][STACKSIZE-1] = 0x01000000; // Enable thumb bit in PSR
// Stack[i][STACKSIZE-2] is for PC
Stacks[i][STACKSIZE-3] = 0x14141414; // R14 (LR)
Stacks[i][STACKSIZE-4] = 0x12121212; // R12
Stacks[i][STACKSIZE-5] = 0x03030303; // R3
Stacks[i][STACKSIZE-6] = 0x02020202; // R2
Stacks[i][STACKSIZE-7] = 0x01010101; // R1
Stacks[i][STACKSIZE-8] = 0x00000000; // R0
Stacks[i][STACKSIZE-9] = 0x11111111; // R11
Stacks[i][STACKSIZE-10] = 0x10101010; // R10
Stacks[i][STACKSIZE-11] = 0x09090909; // R9
Stacks[i][STACKSIZE-12] = 0x08080808; // R8
Stacks[i][STACKSIZE-13] = 0x07070707; // R7
Stacks[i][STACKSIZE-14] = 0x06060606; // R6
Stacks[i][STACKSIZE-15] = 0x05050505; // R5
Stacks[i][STACKSIZE-16] = 0x04040404; // R4
} }
//******** OS_AddThreads *************** //******** OS_AddThreads ***************
...@@ -63,16 +95,70 @@ int OS_AddThreads(void(*thread0)(void), uint32_t p0, ...@@ -63,16 +95,70 @@ int OS_AddThreads(void(*thread0)(void), uint32_t p0,
void(*thread6)(void), uint32_t p6, void(*thread6)(void), uint32_t p6,
void(*thread7)(void), uint32_t p7){ void(*thread7)(void), uint32_t p7){
// **similar to Lab 3. initialize priority field**** // **similar to Lab 3. initialize priority field****
int32_t sc;
sc = StartCritical();
tcbs[0].priority = p0;// set priority
tcbs[1].priority = p1;
tcbs[2].priority = p2;
tcbs[3].priority = p3;
tcbs[4].priority = p4;
tcbs[5].priority = p5;
tcbs[6].priority = p6;
tcbs[7].priority = p7;
tcbs[0].next = &tcbs[1];// list
tcbs[1].next = &tcbs[2];
tcbs[2].next = &tcbs[3];
tcbs[3].next = &tcbs[4];
tcbs[4].next = &tcbs[5];
tcbs[5].next = &tcbs[6];
tcbs[6].next = &tcbs[7];
tcbs[7].next = &tcbs[0];
// initialize RunPt, thread 0 will run first
RunPt = &tcbs[0];
// initialize stacks, including initial PC
SetInitialStack(0);
Stacks[0][STACKSIZE-2] = (int32_t)(thread0); // PC
SetInitialStack(1);
Stacks[1][STACKSIZE-2] = (int32_t)(thread1);
SetInitialStack(2);
Stacks[2][STACKSIZE-2] = (int32_t)(thread2);
SetInitialStack(3);
Stacks[3][STACKSIZE-2] = (int32_t)(thread3);
SetInitialStack(4);
Stacks[4][STACKSIZE-2] = (int32_t)(thread4);
SetInitialStack(5);
Stacks[5][STACKSIZE-2] = (int32_t)(thread5);
SetInitialStack(6);
Stacks[6][STACKSIZE-2] = (int32_t)(thread6);
SetInitialStack(7);
Stacks[7][STACKSIZE-2] = (int32_t)(thread7);
EndCritical(sc);
return 1; // successful return 1; // successful
} }
void static runperiodicevents(void){ void static runperiodicevents(void){
// ****IMPLEMENT THIS**** // ****IMPLEMENT THIS****
// **DECREMENT SLEEP COUNTERS // **DECREMENT SLEEP COUNTERS
// In Lab 4, handle periodic events in RealTimeEvents // In Lab 4, handle periodic events in RealTimeEvents
int i;
for(i=0;i<NUMTHREADS;i++){
if(tcbs[i].sleeping){
tcbs[i].sleeping--;
}
}
} }
//******** OS_Launch *************** //******** OS_Launch ***************
...@@ -94,7 +180,18 @@ void Scheduler(void){ // every time slice ...@@ -94,7 +180,18 @@ void Scheduler(void){ // every time slice
// look at all threads in TCB list choose // look at all threads in TCB list choose
// highest priority thread not blocked and not sleeping // highest priority thread not blocked and not sleeping
// If there are multiple highest priority (not blocked, not sleeping) run these round robin // If there are multiple highest priority (not blocked, not sleeping) run these round robin
uint32_t max = 255;
tcbType *pt;
tcbType *maxPt;
pt = RunPt; // get highest thread not blocked or sleeping
do{
pt = pt->next; // skips at least one
if((pt->priority < max)&&((pt->blocked)==0)&&((pt->sleeping)==0)){
max = pt->priority;
maxPt = pt;
}
} while(RunPt != pt); // iterate over all threads
RunPt = maxPt;
} }
//******** OS_Suspend *************** //******** OS_Suspend ***************
...@@ -117,7 +214,8 @@ void OS_Sleep(uint32_t sleepTime){ ...@@ -117,7 +214,8 @@ void OS_Sleep(uint32_t sleepTime){
// ****IMPLEMENT THIS**** // ****IMPLEMENT THIS****
// set sleep parameter in TCB, same as Lab 3 // set sleep parameter in TCB, same as Lab 3
// suspend, stops running // suspend, stops running
RunPt->sleeping = sleepTime;
OS_Suspend();
} }
// ******** OS_InitSemaphore ************ // ******** OS_InitSemaphore ************
...@@ -128,7 +226,9 @@ void OS_Sleep(uint32_t sleepTime){ ...@@ -128,7 +226,9 @@ void OS_Sleep(uint32_t sleepTime){
void OS_InitSemaphore(int32_t *semaPt, int32_t value){ void OS_InitSemaphore(int32_t *semaPt, int32_t value){
// ****IMPLEMENT THIS**** // ****IMPLEMENT THIS****
// Same as Lab 3 // Same as Lab 3
DisableInterrupts();
(*semaPt) = value;
EnableInterrupts();
} }
// ******** OS_Wait ************ // ******** OS_Wait ************
...@@ -140,7 +240,14 @@ void OS_InitSemaphore(int32_t *semaPt, int32_t value){ ...@@ -140,7 +240,14 @@ void OS_InitSemaphore(int32_t *semaPt, int32_t value){
void OS_Wait(int32_t *semaPt){ void OS_Wait(int32_t *semaPt){
// ****IMPLEMENT THIS**** // ****IMPLEMENT THIS****
// Same as Lab 3 // Same as Lab 3
DisableInterrupts();
(*semaPt) = (*semaPt) - 1;
if((*semaPt) < 0){
RunPt->blocked = semaPt;
EnableInterrupts();
OS_Suspend(); // run the thread switcher
}
EnableInterrupts();
} }
// ******** OS_Signal ************ // ******** OS_Signal ************
...@@ -152,7 +259,17 @@ void OS_Wait(int32_t *semaPt){ ...@@ -152,7 +259,17 @@ void OS_Wait(int32_t *semaPt){
void OS_Signal(int32_t *semaPt){ void OS_Signal(int32_t *semaPt){
// ****IMPLEMENT THIS**** // ****IMPLEMENT THIS****
// Same as Lab 3 // Same as Lab 3
tcbType *pt;
DisableInterrupts();
(*semaPt) = (*semaPt) + 1;
if((*semaPt) <= 0){
pt = RunPt->next; // search for a thread that is blocked on this semaphore
while(pt->blocked != semaPt){
pt = pt->next;
}
pt->blocked = 0; // wakeup this thread
}
EnableInterrupts();
} }
#define FSIZE 10 // can be any size #define FSIZE 10 // can be any size
...@@ -174,7 +291,9 @@ uint32_t LostData; // number of lost pieces of data ...@@ -174,7 +291,9 @@ uint32_t LostData; // number of lost pieces of data
void OS_FIFO_Init(void){ void OS_FIFO_Init(void){
// ****IMPLEMENT THIS**** // ****IMPLEMENT THIS****
// Same as Lab 3 // Same as Lab 3
PutI = GetI = 0; // Empty
OS_InitSemaphore(&CurrentSize, 0);
LostData = 0;
} }
// ******** OS_FIFO_Put ************ // ******** OS_FIFO_Put ************
...@@ -187,8 +306,15 @@ void OS_FIFO_Init(void){ ...@@ -187,8 +306,15 @@ void OS_FIFO_Init(void){
int OS_FIFO_Put(uint32_t data){ int OS_FIFO_Put(uint32_t data){
// ****IMPLEMENT THIS**** // ****IMPLEMENT THIS****
// Same as Lab 3 // Same as Lab 3
if(CurrentSize == FIFOSIZE){
return 0; // success LostData++;
return -1; // full
} else{
Fifo[PutI] = data; // Put
PutI = (PutI+1)%FIFOSIZE;
OS_Signal(&CurrentSize);
return 0; // success
}
} }
// ******** OS_FIFO_Get ************ // ******** OS_FIFO_Get ************
...@@ -198,17 +324,22 @@ int OS_FIFO_Put(uint32_t data){ ...@@ -198,17 +324,22 @@ int OS_FIFO_Put(uint32_t data){
// this function may interrupt itself. // this function may interrupt itself.
// Inputs: none // Inputs: none
// Outputs: data retrieved // Outputs: data retrieved
uint32_t OS_FIFO_Get(void){uint32_t data; uint32_t OS_FIFO_Get(void){
uint32_t data;
// ****IMPLEMENT THIS**** // ****IMPLEMENT THIS****
// Same as Lab 3 // Same as Lab 3
return data; OS_Wait(&CurrentSize); // block if empty
data = Fifo[GetI]; // get
GetI = (GetI+1)%FIFOSIZE; // place to get next
return data;
} }
// *****periodic events**************** // *****periodic events****************
int32_t *PeriodicSemaphore0; int32_t *PeriodicSemaphore0;
uint32_t Period0; // time between signals uint32_t Period0; // time between signals
int32_t *PeriodicSemaphore1; int32_t *PeriodicSemaphore1;
uint32_t Period1; // time between signals uint32_t Period1; // time between signals
void RealTimeEvents(void){int flag=0; void RealTimeEvents(void){
int flag=0;
static int32_t realCount = -10; // let all the threads execute once static int32_t realCount = -10; // let all the threads execute once
// Note to students: we had to let the system run for a time so all user threads ran at least one // Note to students: we had to let the system run for a time so all user threads ran at least one
// before signalling the periodic tasks // before signalling the periodic tasks
...@@ -260,22 +391,23 @@ int32_t *edgeSemaphore; ...@@ -260,22 +391,23 @@ int32_t *edgeSemaphore;
void OS_EdgeTrigger_Init(int32_t *semaPt, uint8_t priority){ void OS_EdgeTrigger_Init(int32_t *semaPt, uint8_t priority){
edgeSemaphore = semaPt; edgeSemaphore = semaPt;
//***IMPLEMENT THIS*** //***IMPLEMENT THIS***
// 1) activate clock for Port D
// allow time for clock to stabilize SYSCTL_RCGCGPIO_R |= 0x08;// 1) activate clock for Port D
// 2) no need to unlock PD6 while((SYSCTL_PRGPIO_R&0x08) == 0){}; // allow time for clock to stabilize
// 3) disable analog on PD6 // 2) no need to unlock PD6
// 4) configure PD6 as GPIO GPIO_PORTD_AMSEL_R &= ~0x40;// 3) disable analog on PD6
// 5) make PD6 input GPIO_PORTD_PCTL_R &= ~0x0F000000;// 4) configure PD6 as GPIO
// 6) disable alt funct on PD6 GPIO_PORTD_DIR_R &= ~0x40; // 5) make PD6 input
// disable pull-up on PD6 GPIO_PORTD_AFSEL_R &= ~0x40;// 6) disable alt funct on PD6
// 7) enable digital I/O on PD6 GPIO_PORTD_PUR_R &= ~0x40; // disable pull-up on PD6
// (d) PD6 is edge-sensitive GPIO_PORTD_DEN_R |= 0x40;// 7) enable digital I/O on PD6
// PD6 is not both edges GPIO_PORTD_IS_R &= ~0x40; // (d) PD6 is edge-sensitive
// PD6 is falling edge event GPIO_PORTD_IBE_R &= ~0x40;// PD6 is not both edges
// (e) clear PD6 flag GPIO_PORTD_IEV_R &= ~0x40;// PD6 is falling edge event
// (f) arm interrupt on PD6 GPIO_PORTD_ICR_R = 0x40;// (e) clear PD6 flag
// priority on Port D edge trigger is NVIC_PRI0_R 31 – 29 GPIO_PORTD_IM_R |= 0x40;// (f) arm interrupt on PD6
// enable is bit 3 in NVIC_EN0_R NVIC_PRI0_R = (NVIC_PRI0_R&0x1FFFFFFF)|((uint32_t)(priority) << 29);// priority on Port D edge trigger is NVIC_PRI0_R 31 – 29
NVIC_EN0_R = 0x00000008;// enable is bit 3 in NVIC_EN0_R
} }
// ******** OS_EdgeTrigger_Restart ************ // ******** OS_EdgeTrigger_Restart ************
...@@ -285,14 +417,15 @@ void OS_EdgeTrigger_Init(int32_t *semaPt, uint8_t priority){ ...@@ -285,14 +417,15 @@ void OS_EdgeTrigger_Init(int32_t *semaPt, uint8_t priority){
// Outputs: none // Outputs: none
void OS_EdgeTrigger_Restart(void){ void OS_EdgeTrigger_Restart(void){
//***IMPLEMENT THIS*** //***IMPLEMENT THIS***
// rearm interrupt 3 in NVIC GPIO_PORTD_IM_R |= 0x40; // rearm interrupt 3 in NVIC
// clear flag6 GPIO_PORTD_ICR_R = 0x40; // clear flag6
} }
void GPIOPortD_Handler(void){ void GPIOPortD_Handler(void){
//***IMPLEMENT THIS*** //***IMPLEMENT THIS***
// step 1 acknowledge by clearing flag GPIO_PORTD_ICR_R = 0x40; // step 1 acknowledge by clearing flag
// step 2 signal semaphore (no need to run scheduler) OS_Signal(edgeSemaphore); // step 2 signal semaphore (no need to run scheduler)
// step 3 disarm interrupt to prevent bouncing to create multiple signals GPIO_PORTD_IM_R &= ~0x40;// step 3 disarm interrupt to prevent bouncing to create multiple signals
OS_Suspend();
} }
...@@ -20,12 +20,32 @@ ...@@ -20,12 +20,32 @@
SysTick_Handler ; 1) Saves R0-R3,R12,LR,PC,PSR SysTick_Handler ; 1) Saves R0-R3,R12,LR,PC,PSR
CPSID I ; 2) Prevent interrupt during switch CPSID I ; 2) Prevent interrupt during switch
;YOU IMPLEMENT THIS (same as Lab 3) PUSH {R4-R11} ; 3) Save remaining regs r4-11
LDR R0, =RunPt ; 4) R0=pointer to RunPt, old thread
LDR R1, [R0] ; R1 = RunPt
STR SP, [R1] ; 5) Save SP into TCB
PUSH {R0,LR}
BL Scheduler
POP {R0,LR}
LDR R1, [R0] ; 6) R1 = RunPt, new thread
LDR SP, [R1] ; 7) new thread SP; SP = RunPt->sp;
POP {R4-R11} ; 8) restore regs r4-11
CPSIE I ; 9) tasks run with interrupts enabled CPSIE I ; 9) tasks run with interrupts enabled
BX LR ; 10) restore R0-R3,R12,LR,PC,PSR BX LR ; 10) restore R0-R3,R12,LR,PC,PSR
StartOS StartOS
;YOU IMPLEMENT THIS (same as Lab 3) LDR R0, =RunPt ; Load addr of RunPt into R0
LDR R1, [R0] ; Load value of RunPt into R1
LDR SP, [R1] ; Load thread's SP from TCB into CPU SP
POP {R4-R11} ; Pop R4 - R11 from new SP (SP now points to R0 location)
POP {R0-R3} ; Pop R0 - R3 from SP (SP now points to R12 location)
POP {R12} ; Pop R12 (SP now points to LR (R14))
ADD SP, SP, #4 ; Skip LR by incrementing SP (SP now points to PC)
; - LR is invalid since this is the initial run
POP {LR} ; Pop PC (R15) into LR (SP now points to PSR)
; - PC should have already been initialized to start of tasks function
; - Popping directly into LR means that task will run when we BX LR
ADD SP, SP, #4 ; Skip PSR by incr. SP (SP now points to bottom of tasks stack)
CPSIE I ; Enable interrupts at processor level CPSIE I ; Enable interrupts at processor level
BX LR ; start first thread BX LR ; start first thread
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment