Compare commits
	
		
			No commits in common. "master" and "terminal-AVR-impl" have entirely different histories.
		
	
	
		
			master
			...
			terminal-A
		
	
		
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -1,6 +1,4 @@
 | 
			
		||||
.idea
 | 
			
		||||
.vs
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
cmake-buid-debug
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,22 +0,0 @@
 | 
			
		||||
 | 
			
		||||
Microsoft Visual Studio Solution File, Format Version 12.00
 | 
			
		||||
# Atmel Studio Solution File, Format Version 11.00
 | 
			
		||||
VisualStudioVersion = 14.0.23107.0
 | 
			
		||||
MinimumVisualStudioVersion = 10.0.40219.1
 | 
			
		||||
Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "GccApplication3", "GccApplication3.cproj", "{94BBCABE-3E5B-448F-A40B-2B08DEF16444}"
 | 
			
		||||
EndProject
 | 
			
		||||
Global
 | 
			
		||||
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
			
		||||
		Debug|AVR = Debug|AVR
 | 
			
		||||
		Release|AVR = Release|AVR
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 | 
			
		||||
		{94BBCABE-3E5B-448F-A40B-2B08DEF16444}.Debug|AVR.ActiveCfg = Debug|AVR
 | 
			
		||||
		{94BBCABE-3E5B-448F-A40B-2B08DEF16444}.Debug|AVR.Build.0 = Debug|AVR
 | 
			
		||||
		{94BBCABE-3E5B-448F-A40B-2B08DEF16444}.Release|AVR.ActiveCfg = Release|AVR
 | 
			
		||||
		{94BBCABE-3E5B-448F-A40B-2B08DEF16444}.Release|AVR.Build.0 = Release|AVR
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(SolutionProperties) = preSolution
 | 
			
		||||
		HideSolutionNode = FALSE
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
EndGlobal
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@ -1,86 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<Store xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="AtmelPackComponentManagement">
 | 
			
		||||
	<ProjectComponents>
 | 
			
		||||
		<ProjectComponent z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">
 | 
			
		||||
			<CApiVersion></CApiVersion>
 | 
			
		||||
			<CBundle></CBundle>
 | 
			
		||||
			<CClass>Device</CClass>
 | 
			
		||||
			<CGroup>Startup</CGroup>
 | 
			
		||||
			<CSub></CSub>
 | 
			
		||||
			<CVariant></CVariant>
 | 
			
		||||
			<CVendor>Atmel</CVendor>
 | 
			
		||||
			<CVersion>1.7.0</CVersion>
 | 
			
		||||
			<DefaultRepoPath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs</DefaultRepoPath>
 | 
			
		||||
			<DependentComponents xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
 | 
			
		||||
			<Description></Description>
 | 
			
		||||
			<Files xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
 | 
			
		||||
				<d4p1:anyType i:type="FileInfo">
 | 
			
		||||
					<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.7.374\include\</AbsolutePath>
 | 
			
		||||
					<Attribute></Attribute>
 | 
			
		||||
					<Category>include</Category>
 | 
			
		||||
					<Condition>C</Condition>
 | 
			
		||||
					<FileContentHash i:nil="true" />
 | 
			
		||||
					<FileVersion></FileVersion>
 | 
			
		||||
					<Name>include/</Name>
 | 
			
		||||
					<SelectString></SelectString>
 | 
			
		||||
					<SourcePath></SourcePath>
 | 
			
		||||
				</d4p1:anyType>
 | 
			
		||||
				<d4p1:anyType i:type="FileInfo">
 | 
			
		||||
					<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.7.374\include\avr\iom328p.h</AbsolutePath>
 | 
			
		||||
					<Attribute></Attribute>
 | 
			
		||||
					<Category>header</Category>
 | 
			
		||||
					<Condition>C</Condition>
 | 
			
		||||
					<FileContentHash>4leX2H78R90/kvebBjYSOw==</FileContentHash>
 | 
			
		||||
					<FileVersion></FileVersion>
 | 
			
		||||
					<Name>include/avr/iom328p.h</Name>
 | 
			
		||||
					<SelectString></SelectString>
 | 
			
		||||
					<SourcePath></SourcePath>
 | 
			
		||||
				</d4p1:anyType>
 | 
			
		||||
				<d4p1:anyType i:type="FileInfo">
 | 
			
		||||
					<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.7.374\templates\main.c</AbsolutePath>
 | 
			
		||||
					<Attribute>template</Attribute>
 | 
			
		||||
					<Category>source</Category>
 | 
			
		||||
					<Condition>C Exe</Condition>
 | 
			
		||||
					<FileContentHash>KjvOcFWd++tbnsEMfVPd/w==</FileContentHash>
 | 
			
		||||
					<FileVersion></FileVersion>
 | 
			
		||||
					<Name>templates/main.c</Name>
 | 
			
		||||
					<SelectString>Main file (.c)</SelectString>
 | 
			
		||||
					<SourcePath></SourcePath>
 | 
			
		||||
				</d4p1:anyType>
 | 
			
		||||
				<d4p1:anyType i:type="FileInfo">
 | 
			
		||||
					<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.7.374\templates\main.cpp</AbsolutePath>
 | 
			
		||||
					<Attribute>template</Attribute>
 | 
			
		||||
					<Category>source</Category>
 | 
			
		||||
					<Condition>C Exe</Condition>
 | 
			
		||||
					<FileContentHash>mkKaE95TOoATsuBGv6jmxg==</FileContentHash>
 | 
			
		||||
					<FileVersion></FileVersion>
 | 
			
		||||
					<Name>templates/main.cpp</Name>
 | 
			
		||||
					<SelectString>Main file (.cpp)</SelectString>
 | 
			
		||||
					<SourcePath></SourcePath>
 | 
			
		||||
				</d4p1:anyType>
 | 
			
		||||
				<d4p1:anyType i:type="FileInfo">
 | 
			
		||||
					<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.7.374\gcc\dev\atmega328p</AbsolutePath>
 | 
			
		||||
					<Attribute></Attribute>
 | 
			
		||||
					<Category>libraryPrefix</Category>
 | 
			
		||||
					<Condition>GCC</Condition>
 | 
			
		||||
					<FileContentHash i:nil="true" />
 | 
			
		||||
					<FileVersion></FileVersion>
 | 
			
		||||
					<Name>gcc/dev/atmega328p</Name>
 | 
			
		||||
					<SelectString></SelectString>
 | 
			
		||||
					<SourcePath></SourcePath>
 | 
			
		||||
				</d4p1:anyType>
 | 
			
		||||
			</Files>
 | 
			
		||||
			<PackName>ATmega_DFP</PackName>
 | 
			
		||||
			<PackPath>C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.7.374/Atmel.ATmega_DFP.pdsc</PackPath>
 | 
			
		||||
			<PackVersion>1.7.374</PackVersion>
 | 
			
		||||
			<PresentInProject>true</PresentInProject>
 | 
			
		||||
			<ReferenceConditionId>ATmega328P</ReferenceConditionId>
 | 
			
		||||
			<RteComponents xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
 | 
			
		||||
				<d4p1:string></d4p1:string>
 | 
			
		||||
			</RteComponents>
 | 
			
		||||
			<Status>Resolved</Status>
 | 
			
		||||
			<VersionMode>Fixed</VersionMode>
 | 
			
		||||
			<IsComponentInAtProject>true</IsComponentInAtProject>
 | 
			
		||||
		</ProjectComponent>
 | 
			
		||||
	</ProjectComponents>
 | 
			
		||||
</Store>
 | 
			
		||||
@ -2,7 +2,7 @@
 | 
			
		||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <SchemaVersion>2.0</SchemaVersion>
 | 
			
		||||
    <ProjectVersion>7.0</ProjectVersion>
 | 
			
		||||
    <ProjectVersion>6.2</ProjectVersion>
 | 
			
		||||
    <ToolchainName>com.Atmel.AVRGCC8.C</ToolchainName>
 | 
			
		||||
    <ProjectGuid>{94bbcabe-3e5b-448f-a40b-2b08def16444}</ProjectGuid>
 | 
			
		||||
    <avrdevice>ATmega328P</avrdevice>
 | 
			
		||||
@ -20,118 +20,85 @@
 | 
			
		||||
    <OverrideVtor>false</OverrideVtor>
 | 
			
		||||
    <CacheFlash>true</CacheFlash>
 | 
			
		||||
    <ProgFlashFromRam>true</ProgFlashFromRam>
 | 
			
		||||
    <RamSnippetAddress>0x20000000</RamSnippetAddress>
 | 
			
		||||
    <RamSnippetAddress />
 | 
			
		||||
    <UncachedRange />
 | 
			
		||||
    <preserveEEPROM>true</preserveEEPROM>
 | 
			
		||||
    <OverrideVtorValue>exception_table</OverrideVtorValue>
 | 
			
		||||
    <OverrideVtorValue />
 | 
			
		||||
    <BootSegment>2</BootSegment>
 | 
			
		||||
    <eraseonlaunchrule>1</eraseonlaunchrule>
 | 
			
		||||
    <AsfFrameworkConfig>
 | 
			
		||||
      <framework-data>
 | 
			
		||||
  <options />
 | 
			
		||||
  <configurations />
 | 
			
		||||
  <files />
 | 
			
		||||
  <documentation help="" />
 | 
			
		||||
  <offline-documentation help="" />
 | 
			
		||||
  <dependencies>
 | 
			
		||||
    <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.44.1" />
 | 
			
		||||
  </dependencies>
 | 
			
		||||
</framework-data>
 | 
			
		||||
      <framework-data xmlns="">
 | 
			
		||||
        <options />
 | 
			
		||||
        <configurations />
 | 
			
		||||
        <files />
 | 
			
		||||
        <documentation help="" />
 | 
			
		||||
        <offline-documentation help="" />
 | 
			
		||||
        <dependencies>
 | 
			
		||||
          <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.21.0" />
 | 
			
		||||
        </dependencies>
 | 
			
		||||
      </framework-data>
 | 
			
		||||
    </AsfFrameworkConfig>
 | 
			
		||||
    <ResetRule>0</ResetRule>
 | 
			
		||||
    <EraseKey />
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
 | 
			
		||||
    <ToolchainSettings>
 | 
			
		||||
      <AvrGcc>
 | 
			
		||||
  <avrgcc.common.Device>-mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.7.374\gcc\dev\atmega328p"</avrgcc.common.Device>
 | 
			
		||||
  <avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
 | 
			
		||||
  <avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
 | 
			
		||||
  <avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
 | 
			
		||||
  <avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
 | 
			
		||||
  <avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
 | 
			
		||||
  <avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
 | 
			
		||||
  <avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
 | 
			
		||||
  <avrgcc.compiler.symbols.DefSymbols>
 | 
			
		||||
    <ListValues>
 | 
			
		||||
      <Value>NDEBUG</Value>
 | 
			
		||||
    </ListValues>
 | 
			
		||||
  </avrgcc.compiler.symbols.DefSymbols>
 | 
			
		||||
  <avrgcc.compiler.directories.IncludePaths>
 | 
			
		||||
    <ListValues>
 | 
			
		||||
      <Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.7.374\include\</Value>
 | 
			
		||||
    </ListValues>
 | 
			
		||||
  </avrgcc.compiler.directories.IncludePaths>
 | 
			
		||||
  <avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level>
 | 
			
		||||
  <avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
 | 
			
		||||
  <avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
 | 
			
		||||
  <avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
 | 
			
		||||
  <avrgcc.linker.libraries.Libraries>
 | 
			
		||||
    <ListValues>
 | 
			
		||||
      <Value>libm</Value>
 | 
			
		||||
    </ListValues>
 | 
			
		||||
  </avrgcc.linker.libraries.Libraries>
 | 
			
		||||
  <avrgcc.assembler.general.IncludePaths>
 | 
			
		||||
    <ListValues>
 | 
			
		||||
      <Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.7.374\include\</Value>
 | 
			
		||||
    </ListValues>
 | 
			
		||||
  </avrgcc.assembler.general.IncludePaths>
 | 
			
		||||
</AvrGcc>
 | 
			
		||||
        <avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
 | 
			
		||||
        <avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
 | 
			
		||||
        <avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
 | 
			
		||||
        <avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
 | 
			
		||||
        <avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
 | 
			
		||||
        <avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
 | 
			
		||||
        <avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
 | 
			
		||||
        <avrgcc.compiler.symbols.DefSymbols>
 | 
			
		||||
          <ListValues>
 | 
			
		||||
            <Value>NDEBUG</Value>
 | 
			
		||||
          </ListValues>
 | 
			
		||||
        </avrgcc.compiler.symbols.DefSymbols>
 | 
			
		||||
        <avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level>
 | 
			
		||||
        <avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
 | 
			
		||||
        <avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
 | 
			
		||||
        <avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
 | 
			
		||||
        <avrgcc.linker.libraries.Libraries>
 | 
			
		||||
          <ListValues>
 | 
			
		||||
            <Value>libm</Value>
 | 
			
		||||
          </ListValues>
 | 
			
		||||
        </avrgcc.linker.libraries.Libraries>
 | 
			
		||||
      </AvrGcc>
 | 
			
		||||
    </ToolchainSettings>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
 | 
			
		||||
    <ToolchainSettings>
 | 
			
		||||
      <AvrGcc>
 | 
			
		||||
  <avrgcc.common.Device>-mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.7.374\gcc\dev\atmega328p"</avrgcc.common.Device>
 | 
			
		||||
  <avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
 | 
			
		||||
  <avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
 | 
			
		||||
  <avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
 | 
			
		||||
  <avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
 | 
			
		||||
  <avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
 | 
			
		||||
  <avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
 | 
			
		||||
  <avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
 | 
			
		||||
  <avrgcc.compiler.symbols.DefSymbols>
 | 
			
		||||
    <ListValues>
 | 
			
		||||
      <Value>DEBUG</Value>
 | 
			
		||||
    </ListValues>
 | 
			
		||||
  </avrgcc.compiler.symbols.DefSymbols>
 | 
			
		||||
  <avrgcc.compiler.directories.IncludePaths>
 | 
			
		||||
    <ListValues>
 | 
			
		||||
      <Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.7.374\include\</Value>
 | 
			
		||||
    </ListValues>
 | 
			
		||||
  </avrgcc.compiler.directories.IncludePaths>
 | 
			
		||||
  <avrgcc.compiler.optimization.level>Optimize (-O1)</avrgcc.compiler.optimization.level>
 | 
			
		||||
  <avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
 | 
			
		||||
  <avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
 | 
			
		||||
  <avrgcc.compiler.optimization.DebugLevel>Default (-g2)</avrgcc.compiler.optimization.DebugLevel>
 | 
			
		||||
  <avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
 | 
			
		||||
  <avrgcc.linker.libraries.Libraries>
 | 
			
		||||
    <ListValues>
 | 
			
		||||
      <Value>libm</Value>
 | 
			
		||||
    </ListValues>
 | 
			
		||||
  </avrgcc.linker.libraries.Libraries>
 | 
			
		||||
  <avrgcc.assembler.general.IncludePaths>
 | 
			
		||||
    <ListValues>
 | 
			
		||||
      <Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.7.374\include\</Value>
 | 
			
		||||
    </ListValues>
 | 
			
		||||
  </avrgcc.assembler.general.IncludePaths>
 | 
			
		||||
  <avrgcc.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcc.assembler.debugging.DebugLevel>
 | 
			
		||||
</AvrGcc>
 | 
			
		||||
        <avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
 | 
			
		||||
        <avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
 | 
			
		||||
        <avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
 | 
			
		||||
        <avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
 | 
			
		||||
        <avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
 | 
			
		||||
        <avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
 | 
			
		||||
        <avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
 | 
			
		||||
        <avrgcc.compiler.symbols.DefSymbols>
 | 
			
		||||
          <ListValues>
 | 
			
		||||
            <Value>DEBUG</Value>
 | 
			
		||||
          </ListValues>
 | 
			
		||||
        </avrgcc.compiler.symbols.DefSymbols>
 | 
			
		||||
        <avrgcc.compiler.optimization.level>Optimize (-O1)</avrgcc.compiler.optimization.level>
 | 
			
		||||
        <avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
 | 
			
		||||
        <avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
 | 
			
		||||
        <avrgcc.compiler.optimization.DebugLevel>Default (-g2)</avrgcc.compiler.optimization.DebugLevel>
 | 
			
		||||
        <avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
 | 
			
		||||
        <avrgcc.linker.libraries.Libraries>
 | 
			
		||||
          <ListValues>
 | 
			
		||||
            <Value>libm</Value>
 | 
			
		||||
          </ListValues>
 | 
			
		||||
        </avrgcc.linker.libraries.Libraries>
 | 
			
		||||
        <avrgcc.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcc.assembler.debugging.DebugLevel>
 | 
			
		||||
      </AvrGcc>
 | 
			
		||||
    </ToolchainSettings>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Compile Include="calculator.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="calculator.h">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="func.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="func.h">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="keyboard.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
@ -141,12 +108,6 @@
 | 
			
		||||
    <Compile Include="main.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="spi_master.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="spi_master.h">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="timer.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
 | 
			
		||||
@ -1,20 +0,0 @@
 | 
			
		||||
 | 
			
		||||
Microsoft Visual Studio Solution File, Format Version 11.00
 | 
			
		||||
# Atmel Studio Solution File, Format Version 11.00
 | 
			
		||||
Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "GccApplication3", "GccApplication3_6_2(1).cproj", "{94BBCABE-3E5B-448F-A40B-2B08DEF16444}"
 | 
			
		||||
EndProject
 | 
			
		||||
Global
 | 
			
		||||
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
			
		||||
		Debug|AVR = Debug|AVR
 | 
			
		||||
		Release|AVR = Release|AVR
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 | 
			
		||||
		{94BBCABE-3E5B-448F-A40B-2B08DEF16444}.Debug|AVR.ActiveCfg = Debug|AVR
 | 
			
		||||
		{94BBCABE-3E5B-448F-A40B-2B08DEF16444}.Debug|AVR.Build.0 = Debug|AVR
 | 
			
		||||
		{94BBCABE-3E5B-448F-A40B-2B08DEF16444}.Release|AVR.ActiveCfg = Release|AVR
 | 
			
		||||
		{94BBCABE-3E5B-448F-A40B-2B08DEF16444}.Release|AVR.Build.0 = Release|AVR
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(SolutionProperties) = preSolution
 | 
			
		||||
		HideSolutionNode = FALSE
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
EndGlobal
 | 
			
		||||
@ -1,140 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <SchemaVersion>2.0</SchemaVersion>
 | 
			
		||||
    <ProjectVersion>6.2</ProjectVersion>
 | 
			
		||||
    <ToolchainName>com.Atmel.AVRGCC8.C</ToolchainName>
 | 
			
		||||
    <ProjectGuid>{94bbcabe-3e5b-448f-a40b-2b08def16444}</ProjectGuid>
 | 
			
		||||
    <avrdevice>ATmega328P</avrdevice>
 | 
			
		||||
    <avrdeviceseries>none</avrdeviceseries>
 | 
			
		||||
    <OutputType>Executable</OutputType>
 | 
			
		||||
    <Language>C</Language>
 | 
			
		||||
    <OutputFileName>$(MSBuildProjectName)</OutputFileName>
 | 
			
		||||
    <OutputFileExtension>.elf</OutputFileExtension>
 | 
			
		||||
    <OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
 | 
			
		||||
    <AssemblyName>GccApplication3</AssemblyName>
 | 
			
		||||
    <Name>GccApplication3</Name>
 | 
			
		||||
    <RootNamespace>GccApplication3</RootNamespace>
 | 
			
		||||
    <ToolchainFlavour>Native</ToolchainFlavour>
 | 
			
		||||
    <KeepTimersRunning>true</KeepTimersRunning>
 | 
			
		||||
    <OverrideVtor>false</OverrideVtor>
 | 
			
		||||
    <CacheFlash>true</CacheFlash>
 | 
			
		||||
    <ProgFlashFromRam>true</ProgFlashFromRam>
 | 
			
		||||
    <RamSnippetAddress />
 | 
			
		||||
    <UncachedRange />
 | 
			
		||||
    <preserveEEPROM>true</preserveEEPROM>
 | 
			
		||||
    <OverrideVtorValue />
 | 
			
		||||
    <BootSegment>2</BootSegment>
 | 
			
		||||
    <eraseonlaunchrule>1</eraseonlaunchrule>
 | 
			
		||||
    <AsfFrameworkConfig>
 | 
			
		||||
      <framework-data xmlns="">
 | 
			
		||||
        <options />
 | 
			
		||||
        <configurations />
 | 
			
		||||
        <files />
 | 
			
		||||
        <documentation help="" />
 | 
			
		||||
        <offline-documentation help="" />
 | 
			
		||||
        <dependencies>
 | 
			
		||||
          <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.21.0" />
 | 
			
		||||
        </dependencies>
 | 
			
		||||
      </framework-data>
 | 
			
		||||
    </AsfFrameworkConfig>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
 | 
			
		||||
    <ToolchainSettings>
 | 
			
		||||
      <AvrGcc>
 | 
			
		||||
        <avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
 | 
			
		||||
        <avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
 | 
			
		||||
        <avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
 | 
			
		||||
        <avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
 | 
			
		||||
        <avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
 | 
			
		||||
        <avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
 | 
			
		||||
        <avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
 | 
			
		||||
        <avrgcc.compiler.symbols.DefSymbols>
 | 
			
		||||
          <ListValues>
 | 
			
		||||
            <Value>NDEBUG</Value>
 | 
			
		||||
          </ListValues>
 | 
			
		||||
        </avrgcc.compiler.symbols.DefSymbols>
 | 
			
		||||
        <avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level>
 | 
			
		||||
        <avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
 | 
			
		||||
        <avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
 | 
			
		||||
        <avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
 | 
			
		||||
        <avrgcc.linker.libraries.Libraries>
 | 
			
		||||
          <ListValues>
 | 
			
		||||
            <Value>libm</Value>
 | 
			
		||||
          </ListValues>
 | 
			
		||||
        </avrgcc.linker.libraries.Libraries>
 | 
			
		||||
      </AvrGcc>
 | 
			
		||||
    </ToolchainSettings>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
 | 
			
		||||
    <ToolchainSettings>
 | 
			
		||||
      <AvrGcc>
 | 
			
		||||
        <avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
 | 
			
		||||
        <avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
 | 
			
		||||
        <avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
 | 
			
		||||
        <avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
 | 
			
		||||
        <avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
 | 
			
		||||
        <avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
 | 
			
		||||
        <avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
 | 
			
		||||
        <avrgcc.compiler.symbols.DefSymbols>
 | 
			
		||||
          <ListValues>
 | 
			
		||||
            <Value>DEBUG</Value>
 | 
			
		||||
          </ListValues>
 | 
			
		||||
        </avrgcc.compiler.symbols.DefSymbols>
 | 
			
		||||
        <avrgcc.compiler.optimization.level>Optimize (-O1)</avrgcc.compiler.optimization.level>
 | 
			
		||||
        <avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
 | 
			
		||||
        <avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
 | 
			
		||||
        <avrgcc.compiler.optimization.DebugLevel>Default (-g2)</avrgcc.compiler.optimization.DebugLevel>
 | 
			
		||||
        <avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
 | 
			
		||||
        <avrgcc.linker.libraries.Libraries>
 | 
			
		||||
          <ListValues>
 | 
			
		||||
            <Value>libm</Value>
 | 
			
		||||
          </ListValues>
 | 
			
		||||
        </avrgcc.linker.libraries.Libraries>
 | 
			
		||||
        <avrgcc.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcc.assembler.debugging.DebugLevel>
 | 
			
		||||
      </AvrGcc>
 | 
			
		||||
    </ToolchainSettings>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Compile Include="calculator.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="calculator.h">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="func.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="func.h">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="keyboard.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="keyboard.h">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="main.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="spi_master.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="spi_master.h">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="timer.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="timer.h">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="uart.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="uart.h">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
 | 
			
		||||
</Project>
 | 
			
		||||
@ -1,20 +0,0 @@
 | 
			
		||||
 | 
			
		||||
Microsoft Visual Studio Solution File, Format Version 11.00
 | 
			
		||||
# Atmel Studio Solution File, Format Version 11.00
 | 
			
		||||
Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "GccApplication3", "GccApplication3_6_2.cproj", "{94BBCABE-3E5B-448F-A40B-2B08DEF16444}"
 | 
			
		||||
EndProject
 | 
			
		||||
Global
 | 
			
		||||
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
			
		||||
		Debug|AVR = Debug|AVR
 | 
			
		||||
		Release|AVR = Release|AVR
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 | 
			
		||||
		{94BBCABE-3E5B-448F-A40B-2B08DEF16444}.Debug|AVR.ActiveCfg = Debug|AVR
 | 
			
		||||
		{94BBCABE-3E5B-448F-A40B-2B08DEF16444}.Debug|AVR.Build.0 = Debug|AVR
 | 
			
		||||
		{94BBCABE-3E5B-448F-A40B-2B08DEF16444}.Release|AVR.ActiveCfg = Release|AVR
 | 
			
		||||
		{94BBCABE-3E5B-448F-A40B-2B08DEF16444}.Release|AVR.Build.0 = Release|AVR
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(SolutionProperties) = preSolution
 | 
			
		||||
		HideSolutionNode = FALSE
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
EndGlobal
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@ -1,86 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<Store xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="AtmelPackComponentManagement">
 | 
			
		||||
	<ProjectComponents>
 | 
			
		||||
		<ProjectComponent z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">
 | 
			
		||||
			<CApiVersion></CApiVersion>
 | 
			
		||||
			<CBundle></CBundle>
 | 
			
		||||
			<CClass>Device</CClass>
 | 
			
		||||
			<CGroup>Startup</CGroup>
 | 
			
		||||
			<CSub></CSub>
 | 
			
		||||
			<CVariant></CVariant>
 | 
			
		||||
			<CVendor>Atmel</CVendor>
 | 
			
		||||
			<CVersion>1.2.0</CVersion>
 | 
			
		||||
			<DefaultRepoPath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs</DefaultRepoPath>
 | 
			
		||||
			<DependentComponents xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
 | 
			
		||||
			<Description></Description>
 | 
			
		||||
			<Files xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
 | 
			
		||||
				<d4p1:anyType i:type="FileInfo">
 | 
			
		||||
					<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include</AbsolutePath>
 | 
			
		||||
					<Attribute></Attribute>
 | 
			
		||||
					<Category>include</Category>
 | 
			
		||||
					<Condition>C</Condition>
 | 
			
		||||
					<FileContentHash i:nil="true" />
 | 
			
		||||
					<FileVersion></FileVersion>
 | 
			
		||||
					<Name>include</Name>
 | 
			
		||||
					<SelectString></SelectString>
 | 
			
		||||
					<SourcePath></SourcePath>
 | 
			
		||||
				</d4p1:anyType>
 | 
			
		||||
				<d4p1:anyType i:type="FileInfo">
 | 
			
		||||
					<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include\avr\iom328p.h</AbsolutePath>
 | 
			
		||||
					<Attribute></Attribute>
 | 
			
		||||
					<Category>header</Category>
 | 
			
		||||
					<Condition>C</Condition>
 | 
			
		||||
					<FileContentHash>UMk4QUzkkuShabuoYtNl/Q==</FileContentHash>
 | 
			
		||||
					<FileVersion></FileVersion>
 | 
			
		||||
					<Name>include/avr/iom328p.h</Name>
 | 
			
		||||
					<SelectString></SelectString>
 | 
			
		||||
					<SourcePath></SourcePath>
 | 
			
		||||
				</d4p1:anyType>
 | 
			
		||||
				<d4p1:anyType i:type="FileInfo">
 | 
			
		||||
					<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\templates\main.c</AbsolutePath>
 | 
			
		||||
					<Attribute>template</Attribute>
 | 
			
		||||
					<Category>source</Category>
 | 
			
		||||
					<Condition>C Exe</Condition>
 | 
			
		||||
					<FileContentHash>GD1k8YYhulqRs6FD1B2Hog==</FileContentHash>
 | 
			
		||||
					<FileVersion></FileVersion>
 | 
			
		||||
					<Name>templates/main.c</Name>
 | 
			
		||||
					<SelectString>Main file (.c)</SelectString>
 | 
			
		||||
					<SourcePath></SourcePath>
 | 
			
		||||
				</d4p1:anyType>
 | 
			
		||||
				<d4p1:anyType i:type="FileInfo">
 | 
			
		||||
					<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\templates\main.cpp</AbsolutePath>
 | 
			
		||||
					<Attribute>template</Attribute>
 | 
			
		||||
					<Category>source</Category>
 | 
			
		||||
					<Condition>C Exe</Condition>
 | 
			
		||||
					<FileContentHash>YXFphlh0CtZJU+ebktABgQ==</FileContentHash>
 | 
			
		||||
					<FileVersion></FileVersion>
 | 
			
		||||
					<Name>templates/main.cpp</Name>
 | 
			
		||||
					<SelectString>Main file (.cpp)</SelectString>
 | 
			
		||||
					<SourcePath></SourcePath>
 | 
			
		||||
				</d4p1:anyType>
 | 
			
		||||
				<d4p1:anyType i:type="FileInfo">
 | 
			
		||||
					<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p</AbsolutePath>
 | 
			
		||||
					<Attribute></Attribute>
 | 
			
		||||
					<Category>libraryPrefix</Category>
 | 
			
		||||
					<Condition>GCC</Condition>
 | 
			
		||||
					<FileContentHash i:nil="true" />
 | 
			
		||||
					<FileVersion></FileVersion>
 | 
			
		||||
					<Name>gcc/dev/atmega328p</Name>
 | 
			
		||||
					<SelectString></SelectString>
 | 
			
		||||
					<SourcePath></SourcePath>
 | 
			
		||||
				</d4p1:anyType>
 | 
			
		||||
			</Files>
 | 
			
		||||
			<PackName>ATmega_DFP</PackName>
 | 
			
		||||
			<PackPath>C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/Atmel.ATmega_DFP.pdsc</PackPath>
 | 
			
		||||
			<PackVersion>1.2.209</PackVersion>
 | 
			
		||||
			<PresentInProject>true</PresentInProject>
 | 
			
		||||
			<ReferenceConditionId>ATmega328P</ReferenceConditionId>
 | 
			
		||||
			<RteComponents xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
 | 
			
		||||
				<d4p1:string></d4p1:string>
 | 
			
		||||
			</RteComponents>
 | 
			
		||||
			<Status>Resolved</Status>
 | 
			
		||||
			<VersionMode>Fixed</VersionMode>
 | 
			
		||||
			<IsComponentInAtProject>true</IsComponentInAtProject>
 | 
			
		||||
		</ProjectComponent>
 | 
			
		||||
	</ProjectComponents>
 | 
			
		||||
</Store>
 | 
			
		||||
@ -1,164 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <SchemaVersion>2.0</SchemaVersion>
 | 
			
		||||
    <ProjectVersion>7.0</ProjectVersion>
 | 
			
		||||
    <ToolchainName>com.Atmel.AVRGCC8.C</ToolchainName>
 | 
			
		||||
    <ProjectGuid>{94bbcabe-3e5b-448f-a40b-2b08def16444}</ProjectGuid>
 | 
			
		||||
    <avrdevice>ATmega328P</avrdevice>
 | 
			
		||||
    <avrdeviceseries>none</avrdeviceseries>
 | 
			
		||||
    <OutputType>Executable</OutputType>
 | 
			
		||||
    <Language>C</Language>
 | 
			
		||||
    <OutputFileName>$(MSBuildProjectName)</OutputFileName>
 | 
			
		||||
    <OutputFileExtension>.elf</OutputFileExtension>
 | 
			
		||||
    <OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
 | 
			
		||||
    <AssemblyName>GccApplication3</AssemblyName>
 | 
			
		||||
    <Name>GccApplication3</Name>
 | 
			
		||||
    <RootNamespace>GccApplication3</RootNamespace>
 | 
			
		||||
    <ToolchainFlavour>Native</ToolchainFlavour>
 | 
			
		||||
    <KeepTimersRunning>true</KeepTimersRunning>
 | 
			
		||||
    <OverrideVtor>false</OverrideVtor>
 | 
			
		||||
    <CacheFlash>true</CacheFlash>
 | 
			
		||||
    <ProgFlashFromRam>true</ProgFlashFromRam>
 | 
			
		||||
    <RamSnippetAddress />
 | 
			
		||||
    <UncachedRange />
 | 
			
		||||
    <preserveEEPROM>true</preserveEEPROM>
 | 
			
		||||
    <OverrideVtorValue />
 | 
			
		||||
    <BootSegment>2</BootSegment>
 | 
			
		||||
    <eraseonlaunchrule>1</eraseonlaunchrule>
 | 
			
		||||
    <AsfFrameworkConfig>
 | 
			
		||||
      <framework-data>
 | 
			
		||||
  <options />
 | 
			
		||||
  <configurations />
 | 
			
		||||
  <files />
 | 
			
		||||
  <documentation help="" />
 | 
			
		||||
  <offline-documentation help="" />
 | 
			
		||||
  <dependencies>
 | 
			
		||||
    <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.34.1" />
 | 
			
		||||
  </dependencies>
 | 
			
		||||
</framework-data>
 | 
			
		||||
    </AsfFrameworkConfig>
 | 
			
		||||
    <ResetRule>0</ResetRule>
 | 
			
		||||
    <EraseKey />
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
 | 
			
		||||
    <ToolchainSettings>
 | 
			
		||||
      <AvrGcc>
 | 
			
		||||
  <avrgcc.common.Device>-mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p"</avrgcc.common.Device>
 | 
			
		||||
  <avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
 | 
			
		||||
  <avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
 | 
			
		||||
  <avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
 | 
			
		||||
  <avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
 | 
			
		||||
  <avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
 | 
			
		||||
  <avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
 | 
			
		||||
  <avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
 | 
			
		||||
  <avrgcc.compiler.symbols.DefSymbols>
 | 
			
		||||
    <ListValues>
 | 
			
		||||
      <Value>NDEBUG</Value>
 | 
			
		||||
    </ListValues>
 | 
			
		||||
  </avrgcc.compiler.symbols.DefSymbols>
 | 
			
		||||
  <avrgcc.compiler.directories.IncludePaths>
 | 
			
		||||
    <ListValues>
 | 
			
		||||
      <Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include</Value>
 | 
			
		||||
    </ListValues>
 | 
			
		||||
  </avrgcc.compiler.directories.IncludePaths>
 | 
			
		||||
  <avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level>
 | 
			
		||||
  <avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
 | 
			
		||||
  <avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
 | 
			
		||||
  <avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
 | 
			
		||||
  <avrgcc.linker.libraries.Libraries>
 | 
			
		||||
    <ListValues>
 | 
			
		||||
      <Value>libm</Value>
 | 
			
		||||
    </ListValues>
 | 
			
		||||
  </avrgcc.linker.libraries.Libraries>
 | 
			
		||||
  <avrgcc.assembler.general.IncludePaths>
 | 
			
		||||
    <ListValues>
 | 
			
		||||
      <Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include</Value>
 | 
			
		||||
    </ListValues>
 | 
			
		||||
  </avrgcc.assembler.general.IncludePaths>
 | 
			
		||||
</AvrGcc>
 | 
			
		||||
    </ToolchainSettings>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
 | 
			
		||||
    <ToolchainSettings>
 | 
			
		||||
      <AvrGcc>
 | 
			
		||||
  <avrgcc.common.Device>-mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p"</avrgcc.common.Device>
 | 
			
		||||
  <avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
 | 
			
		||||
  <avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
 | 
			
		||||
  <avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
 | 
			
		||||
  <avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
 | 
			
		||||
  <avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
 | 
			
		||||
  <avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
 | 
			
		||||
  <avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
 | 
			
		||||
  <avrgcc.compiler.symbols.DefSymbols>
 | 
			
		||||
    <ListValues>
 | 
			
		||||
      <Value>DEBUG</Value>
 | 
			
		||||
    </ListValues>
 | 
			
		||||
  </avrgcc.compiler.symbols.DefSymbols>
 | 
			
		||||
  <avrgcc.compiler.directories.IncludePaths>
 | 
			
		||||
    <ListValues>
 | 
			
		||||
      <Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include</Value>
 | 
			
		||||
    </ListValues>
 | 
			
		||||
  </avrgcc.compiler.directories.IncludePaths>
 | 
			
		||||
  <avrgcc.compiler.optimization.level>Optimize (-O1)</avrgcc.compiler.optimization.level>
 | 
			
		||||
  <avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
 | 
			
		||||
  <avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
 | 
			
		||||
  <avrgcc.compiler.optimization.DebugLevel>Default (-g2)</avrgcc.compiler.optimization.DebugLevel>
 | 
			
		||||
  <avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
 | 
			
		||||
  <avrgcc.linker.libraries.Libraries>
 | 
			
		||||
    <ListValues>
 | 
			
		||||
      <Value>libm</Value>
 | 
			
		||||
    </ListValues>
 | 
			
		||||
  </avrgcc.linker.libraries.Libraries>
 | 
			
		||||
  <avrgcc.assembler.general.IncludePaths>
 | 
			
		||||
    <ListValues>
 | 
			
		||||
      <Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include</Value>
 | 
			
		||||
    </ListValues>
 | 
			
		||||
  </avrgcc.assembler.general.IncludePaths>
 | 
			
		||||
  <avrgcc.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcc.assembler.debugging.DebugLevel>
 | 
			
		||||
</AvrGcc>
 | 
			
		||||
    </ToolchainSettings>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Compile Include="calculator.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="calculator.h">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="func.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="func.h">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="keyboard.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="keyboard.h">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="main.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="spi_master.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="spi_master.h">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="timer.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="timer.h">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="uart.c">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="uart.h">
 | 
			
		||||
      <SubType>compile</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
 | 
			
		||||
</Project>
 | 
			
		||||
							
								
								
									
										44
									
								
								func.c
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								func.c
									
									
									
									
									
								
							@ -29,7 +29,7 @@ int count_digits(long number) {
 | 
			
		||||
	return count;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void split_digits(long number, long* digits, int size) {
 | 
			
		||||
void split_digits(long number, int* digits, int size) {
 | 
			
		||||
	int digit;
 | 
			
		||||
	int index = 0;
 | 
			
		||||
 | 
			
		||||
@ -50,47 +50,23 @@ void split_digits(long number, long* digits, int size) {
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static char map(char c) {
 | 
			
		||||
	//if (c >= 0 && c <= 9)
 | 
			
		||||
	//return c - 0x27;
 | 
			
		||||
	//else
 | 
			
		||||
	//return 0x01;
 | 
			
		||||
	switch (c) {
 | 
			
		||||
		case 0x30:
 | 
			
		||||
		return 0x09;
 | 
			
		||||
		case 0x31:
 | 
			
		||||
		return 0x0a;
 | 
			
		||||
		case 0x32:
 | 
			
		||||
		return 0x0b;
 | 
			
		||||
		case 0x33:
 | 
			
		||||
		return 0x0c;
 | 
			
		||||
		case 0x34:
 | 
			
		||||
		return 0x0d;
 | 
			
		||||
		case 0x35:
 | 
			
		||||
		return 0x0e;
 | 
			
		||||
		case 0x36:
 | 
			
		||||
		return 0x0f;
 | 
			
		||||
		case 0x37:
 | 
			
		||||
		return 0x10;
 | 
			
		||||
		case 0x38:
 | 
			
		||||
		return 0x11;
 | 
			
		||||
		case 0x39:
 | 
			
		||||
		return 0x12;
 | 
			
		||||
		case 0x2d:
 | 
			
		||||
		return 0x06;
 | 
			
		||||
	}
 | 
			
		||||
static char map(int digit) {
 | 
			
		||||
	if (digit >= 0 && digit <= 9)
 | 
			
		||||
	return digit + 0x09;
 | 
			
		||||
	else
 | 
			
		||||
	return 0x01;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void map_digits(char* arr, char *digits, int size) {
 | 
			
		||||
void map_digits(char* arr, int *digits, int size) {
 | 
			
		||||
	int idx = 0;
 | 
			
		||||
	for (int i = 0; i < size; i++) {
 | 
			
		||||
	for (int i = size - 1; i >= 0; i--) {
 | 
			
		||||
		arr[idx] = map(digits[i]);
 | 
			
		||||
		idx++;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void prepare_data(char *arr, long number, int size) {
 | 
			
		||||
	long digits[12];
 | 
			
		||||
void prepare_data(char *arr, int number, int size) {
 | 
			
		||||
	int digits[size];
 | 
			
		||||
	split_digits(number, digits, size);
 | 
			
		||||
	map_digits(arr, digits, size);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										6
									
								
								func.h
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								func.h
									
									
									
									
									
								
							@ -7,7 +7,7 @@
 | 
			
		||||
 | 
			
		||||
void delay();
 | 
			
		||||
 | 
			
		||||
void split_digits(long number, long* digits, int size);
 | 
			
		||||
void split_digits(long number, int* digits, int size);
 | 
			
		||||
int count_digits(long number);
 | 
			
		||||
void map_digits(char* arr, char *digits, int size);
 | 
			
		||||
void prepare_data(char *arr, long number, int size);
 | 
			
		||||
void map_digits(char* arr, int *digits, int size);
 | 
			
		||||
void prepare_data(char *arr, int number, int size);
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										11
									
								
								keyboard.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								keyboard.c
									
									
									
									
									
								
							@ -37,10 +37,11 @@ void get_logical_keys(struct key *undc_keys) {
 | 
			
		||||
				undc_keys[i].logical = undc_keys[i].physical;
 | 
			
		||||
				set_key_event(&undc_keys[i]);
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			undc_keys[i].time = timestamp;
 | 
			
		||||
			} else { 
 | 
			
		||||
				undc_keys[i].time = timestamp;
 | 
			
		||||
				
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void fill_buttons_names(struct key *buttons) {
 | 
			
		||||
@ -55,8 +56,8 @@ void fill_buttons_names(struct key *buttons) {
 | 
			
		||||
static void set_key_event(struct key *button) {
 | 
			
		||||
	if (button->logical == true) {
 | 
			
		||||
		button->on_down = true;
 | 
			
		||||
		} else {
 | 
			
		||||
		button->on_up = true;
 | 
			
		||||
	} else {
 | 
			
		||||
		button->on_up = true;	
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										62
									
								
								spi_master.c
									
									
									
									
									
								
							
							
						
						
									
										62
									
								
								spi_master.c
									
									
									
									
									
								
							@ -4,15 +4,14 @@
 | 
			
		||||
#include <util/delay.h>
 | 
			
		||||
#include "spi_master.h"
 | 
			
		||||
#include "func.h"
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
#define MAX_DIGITS 12
 | 
			
		||||
#define MAX_DIGITS 11
 | 
			
		||||
#define F_CPU 16000000UL
 | 
			
		||||
#define DELAY_MS 2000
 | 
			
		||||
#define DELAY_MS 3000
 | 
			
		||||
 | 
			
		||||
void output_on_display(struct calculator *calc)
 | 
			
		||||
{
 | 
			
		||||
	char buffer[32];
 | 
			
		||||
	char buffer[8];
 | 
			
		||||
	switch (calc->state)
 | 
			
		||||
	{
 | 
			
		||||
		case NUMBER_FIRST:
 | 
			
		||||
@ -23,7 +22,12 @@ void output_on_display(struct calculator *calc)
 | 
			
		||||
			b_size = display_set_page(0x01, buffer);
 | 
			
		||||
			SPI_MasterTransmit(buffer, b_size);
 | 
			
		||||
			
 | 
			
		||||
			transmit_num(calc->num1, buffer);	
 | 
			
		||||
			int size = count_digits(calc->num1);
 | 
			
		||||
			char mapped_digits[size];
 | 
			
		||||
			prepare_data(mapped_digits, calc->num1, size);
 | 
			
		||||
			b_size = display_add_simbol(mapped_digits, size, buffer);
 | 
			
		||||
			SPI_MasterTransmit(buffer, b_size);
 | 
			
		||||
			
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
		case NUMBER_SECOND:
 | 
			
		||||
@ -34,10 +38,14 @@ void output_on_display(struct calculator *calc)
 | 
			
		||||
			b_size = display_set_page(0x01, buffer);
 | 
			
		||||
			SPI_MasterTransmit(buffer, b_size);
 | 
			
		||||
			
 | 
			
		||||
			transmit_num(calc->num1, buffer);
 | 
			
		||||
			int size = count_digits(calc->num1);
 | 
			
		||||
			char mapped_digits[size];
 | 
			
		||||
			prepare_data(mapped_digits, calc->num1, size);
 | 
			
		||||
			b_size = display_add_simbol(mapped_digits, size, buffer);
 | 
			
		||||
			SPI_MasterTransmit(buffer, b_size);
 | 
			
		||||
			
 | 
			
		||||
			char symbol[] = {0x01};
 | 
			
		||||
			// Îïåðàöèÿ
 | 
			
		||||
			// îïåðàöèÿ
 | 
			
		||||
			switch (calc->operation)
 | 
			
		||||
			{
 | 
			
		||||
				case NO_OP:
 | 
			
		||||
@ -61,8 +69,12 @@ void output_on_display(struct calculator *calc)
 | 
			
		||||
			
 | 
			
		||||
			b_size = display_set_page(0x02, buffer);
 | 
			
		||||
			SPI_MasterTransmit(buffer, b_size);
 | 
			
		||||
				
 | 
			
		||||
			transmit_num(calc->num2, buffer);
 | 
			
		||||
			
 | 
			
		||||
			size = count_digits(calc->num2);
 | 
			
		||||
			char mapped_digits1[size];
 | 
			
		||||
			prepare_data(mapped_digits1, calc->num2, size);
 | 
			
		||||
			b_size = display_add_simbol(mapped_digits1, size, buffer);
 | 
			
		||||
			SPI_MasterTransmit(buffer, b_size);
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
		case RESULT:
 | 
			
		||||
@ -73,10 +85,14 @@ void output_on_display(struct calculator *calc)
 | 
			
		||||
			b_size = display_set_page(0x01, buffer);
 | 
			
		||||
			SPI_MasterTransmit(buffer, b_size);
 | 
			
		||||
			
 | 
			
		||||
			transmit_num(calc->num1, buffer);
 | 
			
		||||
			int size = count_digits(calc->num1);
 | 
			
		||||
			char mapped_digits[size];
 | 
			
		||||
			prepare_data(mapped_digits, calc->num1, size);
 | 
			
		||||
			b_size = display_add_simbol(mapped_digits, size, buffer);
 | 
			
		||||
			SPI_MasterTransmit(buffer, b_size);
 | 
			
		||||
			
 | 
			
		||||
			char symbol[] = {0x01};
 | 
			
		||||
			// Îïåðàöèÿ
 | 
			
		||||
			// îïåðàöèÿ
 | 
			
		||||
			switch (calc->operation)
 | 
			
		||||
			{
 | 
			
		||||
				case NO_OP:
 | 
			
		||||
@ -101,7 +117,14 @@ void output_on_display(struct calculator *calc)
 | 
			
		||||
			b_size = display_set_page(0x02, buffer);
 | 
			
		||||
			SPI_MasterTransmit(buffer, b_size);
 | 
			
		||||
			
 | 
			
		||||
			transmit_num(calc->num2, buffer);
 | 
			
		||||
			size = count_digits(calc->num2);
 | 
			
		||||
			char mapped_digits1[size];
 | 
			
		||||
			prepare_data(mapped_digits1, calc->num2, size);
 | 
			
		||||
			b_size = display_add_simbol(mapped_digits1, size, buffer);
 | 
			
		||||
			SPI_MasterTransmit(buffer, b_size);
 | 
			
		||||
 | 
			
		||||
			// ëèíèÿ
 | 
			
		||||
			
 | 
			
		||||
			
 | 
			
		||||
			// ðåçóëüòàò
 | 
			
		||||
			b_size = display_set_page(0x03, buffer);
 | 
			
		||||
@ -111,7 +134,11 @@ void output_on_display(struct calculator *calc)
 | 
			
		||||
			b_size = display_add_simbol(symbol, 1, buffer);
 | 
			
		||||
			SPI_MasterTransmit(buffer, b_size);
 | 
			
		||||
			
 | 
			
		||||
			transmit_num(calc->result, buffer);
 | 
			
		||||
			size = count_digits(calc->result);
 | 
			
		||||
			char mapped_digits2[size];
 | 
			
		||||
			prepare_data(mapped_digits2, calc->result, size);
 | 
			
		||||
			b_size = display_add_simbol(mapped_digits2, size, buffer);
 | 
			
		||||
			SPI_MasterTransmit(buffer, b_size);
 | 
			
		||||
			
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
@ -120,15 +147,6 @@ void output_on_display(struct calculator *calc)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void transmit_num(long number, char *buffer) {
 | 
			
		||||
	char number_buffer[MAX_DIGITS];
 | 
			
		||||
	char mapped_digits[MAX_DIGITS];
 | 
			
		||||
	ltoa(number, number_buffer, 10);
 | 
			
		||||
	map_digits(mapped_digits, number_buffer, strlen(number_buffer));
 | 
			
		||||
	size_t b_size = display_add_simbol(mapped_digits, strlen(number_buffer), buffer);
 | 
			
		||||
	SPI_MasterTransmit(buffer, b_size);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SPI_MasterInit(void)
 | 
			
		||||
{
 | 
			
		||||
	/* Íàñòðîéêà MOSI è SCK êàê âûõîä,
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,9 @@
 | 
			
		||||
void output_on_display(struct calculator *calc);
 | 
			
		||||
void SPI_MasterInit(void);
 | 
			
		||||
void SPI_MasterTransmit(char *buffer, size_t length);
 | 
			
		||||
void transmit_num(long number, char *buffer);
 | 
			
		||||
void transmit_first_num(struct calculator *calc, char *buffer);
 | 
			
		||||
void transmit_second_num(struct calculator *calc, char *buffer);
 | 
			
		||||
void transmit_result(struct calculator *calc, char *buffer, char *symblo);
 | 
			
		||||
size_t display_all_clear(char color, char *buffer);
 | 
			
		||||
size_t display_add_simbol(char *str, size_t str_len, char *buffer);
 | 
			
		||||
size_t display_draw_line(char x1, char y1, char x2, char y2, char color, char *buffer);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user