mirror of
https://github.com/MoleskiCoder/EightBit.git
synced 2025-02-22 05:29:01 +00:00
Start adding support for the Motorola serial device, the MC6850 ACIA (most incomplete!)
This commit is contained in:
parent
30ac7dc268
commit
e2f69b1dc8
BIN
MC6850/documentation/MC6850.pdf
Normal file
BIN
MC6850/documentation/MC6850.pdf
Normal file
Binary file not shown.
95
MC6850/inc/MC6850.h
Normal file
95
MC6850/inc/MC6850.h
Normal file
@ -0,0 +1,95 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#include <Processor.h>
|
||||
|
||||
namespace EightBit {
|
||||
class mc6850 {
|
||||
public:
|
||||
// +--------+----------------------------------------------------------------------------------+
|
||||
// | | Buffer address |
|
||||
// | +------------------+------------------+--------------------+-----------------------+
|
||||
// | | _ | _ | _ | _ |
|
||||
// | Data | RS * R/W | RS * R/W | RS * R/W | RS * R/W |
|
||||
// | Bus | (high)(low) | (high)(high) | (low)(low) | (low)(low) |
|
||||
// | Line | Transmit | Receive | | |
|
||||
// | Number | Data | Data | Control | Control |
|
||||
// | | Register | Register | register | register |
|
||||
// | +------------------+------------------+--------------------+-----------------------+
|
||||
// | | (Write only) + (Read only) + (Write only) | (Read only) |
|
||||
// +--------+------------------+------------------+--------------------+-----------------------+
|
||||
// | 0 | Data bit 0* | Data bit 0 | Counter divide | Receive data register |
|
||||
// | | | | select 1 (CR0) | full (RDRF) |
|
||||
// +--------+------------------+------------------+--------------------+-----------------------+
|
||||
// | 1 | Data bit 1 | Data bit 1 | Counter divide | Transmit data register|
|
||||
// | | | | select 2 (CR1) | empty (TDRE) |
|
||||
// +--------+------------------+------------------+--------------------+-----------------------+
|
||||
// | 2 | Data bit 2 | Data bit 2 | Word select 1 | Data carrier detect |
|
||||
// | | | | (CR2) | (DCD active) |
|
||||
// +--------+------------------+------------------+--------------------+-----------------------+
|
||||
// | 3 | Data bit 3 | Data bit 3 | Word select 1 | Clear to send |
|
||||
// | | | | (CR3) | (CTS active) |
|
||||
// +--------+------------------+------------------+--------------------+-----------------------+
|
||||
// | 4 | Data bit 4 | Data bit 4 | Word select 1 | Framing error |
|
||||
// | | | | (CR4) | (FE) |
|
||||
// +--------+------------------+------------------+--------------------+-----------------------+
|
||||
// | 5 | Data bit 5 | Data bit 5 | Transmit control 1 | Receiver overrun |
|
||||
// | | | | (CR5) | (OVRN) |
|
||||
// +--------+------------------+------------------+--------------------+-----------------------+
|
||||
// | 6 | Data bit 6 | Data bit 6 | Transmit control 2 | Parity error (PE) |
|
||||
// | | | | (CR6) | ||
|
||||
// +--------+------------------+------------------+--------------------+-----------------------+
|
||||
// | 7 | Data bit 7*** | Data bit 7** | Receive interrupt | Interrupt request |
|
||||
// | | | | enable (CR7) | (IRQ active) |
|
||||
// +--------+------------------+------------------+--------------------+-----------------------+
|
||||
// * Leading bit = LSB = Bit 0
|
||||
// ** Data bit will be zero in 7-bit plus parity modes
|
||||
// *** Data bit is "don't case" in 7-bit plus parity modes
|
||||
|
||||
Processor::PinLevel& RXDATA() { return m_RXDATA; } // Receive data, (I) Active high
|
||||
Processor::PinLevel& TXDATA() { return m_TXDATA; } // Transmit data, (O) Active high
|
||||
|
||||
Processor::PinLevel& RTS() { return m_RTS; } // Request to send, (O) Active low
|
||||
Processor::PinLevel& CTS() { return m_CTS; } // Clear to send, (I) Active low
|
||||
Processor::PinLevel& DCD() { return m_DCD; } // Data carrier detect, (I) Active low
|
||||
|
||||
Processor::PinLevel& RXCLK() { return m_RXCLK; } // Transmit clock, (I) Active high
|
||||
Processor::PinLevel& TXCLK() { return m_TXCLK; } // Receive clock, (I) Active high
|
||||
|
||||
uint8_t& DATA() { return m_data; } // Data, (I/O)
|
||||
|
||||
Processor::PinLevel& CS0() { return m_CS0; } // Chip select, bit 0, (I) Active high
|
||||
Processor::PinLevel& CS1() { return m_CS1; } // Chip select, bit 1, (I) Active high
|
||||
Processor::PinLevel& CS2() { return m_CS2; } // Chip select, bit 2, (I) Active low
|
||||
|
||||
Processor::PinLevel& RS() { return m_RS; } // Register select, (I) Active high
|
||||
Processor::PinLevel& RW() { return m_RW; } // Read/Write, (I) Read high, write low
|
||||
|
||||
Processor::PinLevel& E() { return m_E; } // ACIA Enable, (I) Active high
|
||||
Processor::PinLevel& IRQ() { return m_IRQ; } // Interrupt request, (O) Active low
|
||||
|
||||
private:
|
||||
Processor::PinLevel m_RXDATA;
|
||||
Processor::PinLevel m_TXDATA;
|
||||
|
||||
Processor::PinLevel m_RTS;
|
||||
Processor::PinLevel m_CTS;
|
||||
Processor::PinLevel m_DCD;
|
||||
|
||||
Processor::PinLevel m_RXCLK;
|
||||
Processor::PinLevel m_TXCLK;
|
||||
|
||||
uint8_t m_data;
|
||||
|
||||
Processor::PinLevel m_CS0;
|
||||
Processor::PinLevel m_CS1;
|
||||
Processor::PinLevel m_CS2;
|
||||
|
||||
Processor::PinLevel m_RS;
|
||||
Processor::PinLevel m_RW;
|
||||
|
||||
Processor::PinLevel m_E;
|
||||
Processor::PinLevel m_IRQ;
|
||||
};
|
||||
}
|
BIN
MC6850/src/MC6850.cpp
Normal file
BIN
MC6850/src/MC6850.cpp
Normal file
Binary file not shown.
173
MC6850/src/MC6850.vcxproj
Normal file
173
MC6850/src/MC6850.vcxproj
Normal file
@ -0,0 +1,173 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>15.0</VCProjectVersion>
|
||||
<ProjectGuid>{A4ADA650-55C3-4C00-8DAD-E4E4AFF86EFF}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>MC6850</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>..\inc;..\..\inc;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IncludePath>..\inc;..\..\inc;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IncludePath>..\inc;..\..\inc;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>..\inc;..\..\inc;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\inc\MC6850.h" />
|
||||
<ClInclude Include="pch.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="MC6850.cpp" />
|
||||
<ClCompile Include="pch.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
29
MC6850/src/MC6850.vcxproj.filters
Normal file
29
MC6850/src/MC6850.vcxproj.filters
Normal file
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="pch.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\inc\MC6850.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="pch.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="MC6850.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
BIN
MC6850/src/pch.cpp
Normal file
BIN
MC6850/src/pch.cpp
Normal file
Binary file not shown.
BIN
MC6850/src/pch.h
Normal file
BIN
MC6850/src/pch.h
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user