Files
ComSquare/classComSquare_1_1CPU_1_1DMA.html
AnonymusRaccoon d33b0ab52d Deploying the doc
2021-07-13 21:32:24 +00:00

915 lines
57 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ComSquare: ComSquare::CPU::DMA Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">ComSquare
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceComSquare.html">ComSquare</a></li><li class="navelem"><a class="el" href="namespaceComSquare_1_1CPU.html">CPU</a></li><li class="navelem"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html">DMA</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classComSquare_1_1CPU_1_1DMA-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">ComSquare::CPU::DMA Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Class handling all DMA/HDMA transfers (Direct <a class="el" href="namespaceComSquare_1_1Memory.html">Memory</a> Access or H-Blank Direct <a class="el" href="namespaceComSquare_1_1Memory.html">Memory</a> Access)
<a href="classComSquare_1_1CPU_1_1DMA.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="DMA_8hpp_source.html">DMA.hpp</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for ComSquare::CPU::DMA:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classComSquare_1_1CPU_1_1DMA__coll__graph.svg" width="182" height="683"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a09db4b625719ea8c624bc77a6ffcba39"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a09db4b625719ea8c624bc77a6ffcba39">DMAMode</a> { <br />
&#160;&#160;<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a09db4b625719ea8c624bc77a6ffcba39a86a0bca9633a504c13a142e8732d0654">OneToOne</a> = 0b000,
<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a09db4b625719ea8c624bc77a6ffcba39a4436f697495cdfb191337a6d4419a555">TwoToTwo</a> = 0b001,
<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a09db4b625719ea8c624bc77a6ffcba39aadedb5cc6298170f2ac0714399db9a66">TwoToOne</a> = 0b010,
<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a09db4b625719ea8c624bc77a6ffcba39ae8326b4f06978a369f0f2f7174aa447e">FourToTwo</a> = 0b011,
<br />
&#160;&#160;<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a09db4b625719ea8c624bc77a6ffcba39a7d518b3bb843763d2587653192708e6d">FourToFour</a> = 0b100,
<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a09db4b625719ea8c624bc77a6ffcba39a8b5fc9672d91f39e13f35269e5191db0">TwoToTwoBis</a> = 0b101,
<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a09db4b625719ea8c624bc77a6ffcba39a5f0f9487ca32fb33306fb0a60622b775">TwoToOneBis</a> = 0b110,
<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a09db4b625719ea8c624bc77a6ffcba39ae110f671ea0a774b3d0219cb199e65eb">FourToTwoBis</a> = 0b111
<br />
}</td></tr>
<tr class="memdesc:a09db4b625719ea8c624bc77a6ffcba39"><td class="mdescLeft">&#160;</td><td class="mdescRight">The first three bytes of the <a class="el" href="classComSquare_1_1CPU_1_1DMA.html" title="Class handling all DMA/HDMA transfers (Direct Memory Access or H-Blank Direct Memory Access)">DMA</a>'s control register. Used to tell how many bytes/registers there is. <a href="classComSquare_1_1CPU_1_1DMA.html#a09db4b625719ea8c624bc77a6ffcba39">More...</a><br /></td></tr>
<tr class="separator:a09db4b625719ea8c624bc77a6ffcba39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34f471a48a9062c44e0260b3686ba06c"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a34f471a48a9062c44e0260b3686ba06c">Direction</a> { <a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a34f471a48a9062c44e0260b3686ba06cac68d0326695de61779072fe85f0bbed1">AtoB</a>,
<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a34f471a48a9062c44e0260b3686ba06ca90d173a67b57daa0e8cc0e395f691182">BtoA</a>
}</td></tr>
<tr class="separator:a34f471a48a9062c44e0260b3686ba06c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a41a3d98b718c3098b7a0858b50d6fd6e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classComSquare_1_1Memory_1_1IMemoryBus.html">Memory::IMemoryBus</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a41a3d98b718c3098b7a0858b50d6fd6e">getBus</a> ()</td></tr>
<tr class="memdesc:a41a3d98b718c3098b7a0858b50d6fd6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the memory bus used by this <a class="el" href="classComSquare_1_1CPU_1_1CPU.html" title="The main CPU.">CPU</a>. <a href="classComSquare_1_1CPU_1_1DMA.html#a41a3d98b718c3098b7a0858b50d6fd6e">More...</a><br /></td></tr>
<tr class="separator:a41a3d98b718c3098b7a0858b50d6fd6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f583dff51b42ad8e50bb54fcd14a451"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a3f583dff51b42ad8e50bb54fcd14a451">setBus</a> (<a class="el" href="classComSquare_1_1Memory_1_1IMemoryBus.html">Memory::IMemoryBus</a> &amp;bus)</td></tr>
<tr class="memdesc:a3f583dff51b42ad8e50bb54fcd14a451"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the memory bus used by this <a class="el" href="classComSquare_1_1CPU_1_1CPU.html" title="The main CPU.">CPU</a>. <a href="classComSquare_1_1CPU_1_1DMA.html#a3f583dff51b42ad8e50bb54fcd14a451">More...</a><br /></td></tr>
<tr class="separator:a3f583dff51b42ad8e50bb54fcd14a451"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac15ec6b4981e6097e268a9b65be29a4f"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#ac15ec6b4981e6097e268a9b65be29a4f">read</a> (uint8_t addr) const</td></tr>
<tr class="memdesc:ac15ec6b4981e6097e268a9b65be29a4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bus helper to read from this channel. <a href="classComSquare_1_1CPU_1_1DMA.html#ac15ec6b4981e6097e268a9b65be29a4f">More...</a><br /></td></tr>
<tr class="separator:ac15ec6b4981e6097e268a9b65be29a4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83cc22ce83580854ca78088362a2de9d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a83cc22ce83580854ca78088362a2de9d">write</a> (uint8_t addr, uint8_t data)</td></tr>
<tr class="memdesc:a83cc22ce83580854ca78088362a2de9d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bus helper to write to this channel. <a href="classComSquare_1_1CPU_1_1DMA.html#a83cc22ce83580854ca78088362a2de9d">More...</a><br /></td></tr>
<tr class="separator:a83cc22ce83580854ca78088362a2de9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33579bc6e0052d0be73a17a32eb8262e"><td class="memItemLeft" align="right" valign="top">unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a33579bc6e0052d0be73a17a32eb8262e">run</a> (unsigned cycles)</td></tr>
<tr class="memdesc:a33579bc6e0052d0be73a17a32eb8262e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Run the <a class="el" href="classComSquare_1_1CPU_1_1DMA.html" title="Class handling all DMA/HDMA transfers (Direct Memory Access or H-Blank Direct Memory Access)">DMA</a> for x cycles. <a href="classComSquare_1_1CPU_1_1DMA.html#a33579bc6e0052d0be73a17a32eb8262e">More...</a><br /></td></tr>
<tr class="separator:a33579bc6e0052d0be73a17a32eb8262e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a9151c3b6318eea50d556ca5eff985a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a8a9151c3b6318eea50d556ca5eff985a">DMA</a> (<a class="el" href="classComSquare_1_1Memory_1_1IMemoryBus.html">Memory::IMemoryBus</a> &amp;bus)</td></tr>
<tr class="memdesc:a8a9151c3b6318eea50d556ca5eff985a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="classComSquare_1_1CPU_1_1DMA.html" title="Class handling all DMA/HDMA transfers (Direct Memory Access or H-Blank Direct Memory Access)">DMA</a> channel with a given bus. <a href="classComSquare_1_1CPU_1_1DMA.html#a8a9151c3b6318eea50d556ca5eff985a">More...</a><br /></td></tr>
<tr class="separator:a8a9151c3b6318eea50d556ca5eff985a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6cfdffcb9b2011e3b3205262817e27be"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a6cfdffcb9b2011e3b3205262817e27be">DMA</a> (const <a class="el" href="classComSquare_1_1CPU_1_1DMA.html">DMA</a> &amp;)=default</td></tr>
<tr class="memdesc:a6cfdffcb9b2011e3b3205262817e27be"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="classComSquare_1_1CPU_1_1DMA.html" title="Class handling all DMA/HDMA transfers (Direct Memory Access or H-Blank Direct Memory Access)">DMA</a> is copy constructable. <a href="classComSquare_1_1CPU_1_1DMA.html#a6cfdffcb9b2011e3b3205262817e27be">More...</a><br /></td></tr>
<tr class="separator:a6cfdffcb9b2011e3b3205262817e27be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca7d4c5b094154f83f1a62e98b5d6a34"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html">DMA</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#aca7d4c5b094154f83f1a62e98b5d6a34">operator=</a> (const <a class="el" href="classComSquare_1_1CPU_1_1DMA.html">DMA</a> &amp;)=delete</td></tr>
<tr class="memdesc:aca7d4c5b094154f83f1a62e98b5d6a34"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="classComSquare_1_1CPU_1_1DMA.html" title="Class handling all DMA/HDMA transfers (Direct Memory Access or H-Blank Direct Memory Access)">DMA</a> is not assignable. <a href="classComSquare_1_1CPU_1_1DMA.html#aca7d4c5b094154f83f1a62e98b5d6a34">More...</a><br /></td></tr>
<tr class="separator:aca7d4c5b094154f83f1a62e98b5d6a34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65aa5e884fa822949d5b7c34b7cec98e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a65aa5e884fa822949d5b7c34b7cec98e">~DMA</a> ()=default</td></tr>
<tr class="memdesc:a65aa5e884fa822949d5b7c34b7cec98e"><td class="mdescLeft">&#160;</td><td class="mdescRight">A default destructor. <a href="classComSquare_1_1CPU_1_1DMA.html#a65aa5e884fa822949d5b7c34b7cec98e">More...</a><br /></td></tr>
<tr class="separator:a65aa5e884fa822949d5b7c34b7cec98e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a92fbb57324fbdf99e9d97a304c4f2083"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a92fbb57324fbdf99e9d97a304c4f2083">enabled</a></td></tr>
<tr class="memdesc:a92fbb57324fbdf99e9d97a304c4f2083"><td class="mdescLeft">&#160;</td><td class="mdescRight">Is this channel set to run? <a href="classComSquare_1_1CPU_1_1DMA.html#a92fbb57324fbdf99e9d97a304c4f2083">More...</a><br /></td></tr>
<tr class="separator:a92fbb57324fbdf99e9d97a304c4f2083"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c922413f610803ff3775367023b78b4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a09db4b625719ea8c624bc77a6ffcba39">DMAMode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a3c922413f610803ff3775367023b78b4">mode</a>: 3</td></tr>
<tr class="memdesc:a3c922413f610803ff3775367023b78b4"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html" title="Class handling all DMA/HDMA transfers (Direct Memory Access or H-Blank Direct Memory Access)">DMA</a>'s mode: how many bytes/registers there is, how many writes... <a href="classComSquare_1_1CPU_1_1DMA.html#a3c922413f610803ff3775367023b78b4">More...</a><br /></td></tr>
<tr class="separator:a3c922413f610803ff3775367023b78b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f6e8413e03d475a303a9685e9107bdb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a3f6e8413e03d475a303a9685e9107bdb">fixed</a>: 1</td></tr>
<tr class="memdesc:a3f6e8413e03d475a303a9685e9107bdb"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this flag is set, no increment/decrement will be done. <a href="classComSquare_1_1CPU_1_1DMA.html#a3f6e8413e03d475a303a9685e9107bdb">More...</a><br /></td></tr>
<tr class="separator:a3f6e8413e03d475a303a9685e9107bdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:addb890a9a0331e2c00e291a93346801e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#addb890a9a0331e2c00e291a93346801e">increment</a>: 1</td></tr>
<tr class="memdesc:addb890a9a0331e2c00e291a93346801e"><td class="mdescLeft">&#160;</td><td class="mdescRight">if this flag is 0: increment. Else: decrement. (The A address) <a href="classComSquare_1_1CPU_1_1DMA.html#addb890a9a0331e2c00e291a93346801e">More...</a><br /></td></tr>
<tr class="separator:addb890a9a0331e2c00e291a93346801e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3fdcb50a9a2fa0e8c6b572cd7799f2ad"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a3fdcb50a9a2fa0e8c6b572cd7799f2ad">_</a>: 2</td></tr>
<tr class="memdesc:a3fdcb50a9a2fa0e8c6b572cd7799f2ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Two unused bites. <a href="classComSquare_1_1CPU_1_1DMA.html#a3fdcb50a9a2fa0e8c6b572cd7799f2ad">More...</a><br /></td></tr>
<tr class="separator:a3fdcb50a9a2fa0e8c6b572cd7799f2ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b3074ccfd02bf29ede00d79ef78792e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a34f471a48a9062c44e0260b3686ba06c">Direction</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a0b3074ccfd02bf29ede00d79ef78792e">direction</a>: 1</td></tr>
<tr class="memdesc:a0b3074ccfd02bf29ede00d79ef78792e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The direction of the transfer. <a href="classComSquare_1_1CPU_1_1DMA.html#a0b3074ccfd02bf29ede00d79ef78792e">More...</a><br /></td></tr>
<tr class="separator:a0b3074ccfd02bf29ede00d79ef78792e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ea72efaa83b0bb7862f6cc5fd08c69c"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a1ea72efaa83b0bb7862f6cc5fd08c69c">raw</a></td></tr>
<tr class="separator:a1ea72efaa83b0bb7862f6cc5fd08c69c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc28baf74b33a1ab53c3773c84ed9c57"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#abc28baf74b33a1ab53c3773c84ed9c57">bytes</a> [3]</td></tr>
<tr class="separator:abc28baf74b33a1ab53c3773c84ed9c57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26eb7d20d948f133c086de1ca849de68"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a26eb7d20d948f133c086de1ca849de68">page</a></td></tr>
<tr class="separator:a26eb7d20d948f133c086de1ca849de68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84708ba0a5589a8ca73ed6284d570c04"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a84708ba0a5589a8ca73ed6284d570c04">bank</a></td></tr>
<tr class="separator:a84708ba0a5589a8ca73ed6284d570c04"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d6db87d17373060c5247858adc8d60d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a9d6db87d17373060c5247858adc8d60d">raw</a>: 24</td></tr>
<tr class="separator:a9d6db87d17373060c5247858adc8d60d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af747887faadea7055e7d074612614bc9"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#af747887faadea7055e7d074612614bc9">raw</a></td></tr>
<tr class="separator:af747887faadea7055e7d074612614bc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:af77e48f1a5875defee964724e556a7b4"><td class="memItemLeft" align="right" valign="top">unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#af77e48f1a5875defee964724e556a7b4">_writeOneByte</a> (<a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a> aAddress, <a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a> bAddress)</td></tr>
<tr class="memdesc:af77e48f1a5875defee964724e556a7b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write one byte using the A address, the port and the _direction. Handle special cases where no write occurs. <a href="classComSquare_1_1CPU_1_1DMA.html#af77e48f1a5875defee964724e556a7b4">More...</a><br /></td></tr>
<tr class="separator:af77e48f1a5875defee964724e556a7b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36b2d5c22ea29a65637e250b95558227"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a36b2d5c22ea29a65637e250b95558227">_getModeOffset</a> (int index) const</td></tr>
<tr class="memdesc:a36b2d5c22ea29a65637e250b95558227"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get an offset corresponding to the current DMAMode and the index of the currently transferred byte. <a href="classComSquare_1_1CPU_1_1DMA.html#a36b2d5c22ea29a65637e250b95558227">More...</a><br /></td></tr>
<tr class="separator:a36b2d5c22ea29a65637e250b95558227"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a8cfd7983eca6c568f75fb243196a39d5"><td class="memItemLeft" >union {</td></tr>
<tr class="memitem:a44f265f4bc92f862f9affe8551456b0c"><td class="memItemLeft" >&#160;&#160;&#160;struct {</td></tr>
<tr class="memitem:ad41b762840b557fd3ec17809331cddba"><td class="memItemLeft" >&#160;&#160;&#160;&#160;&#160;&#160;<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a09db4b625719ea8c624bc77a6ffcba39">DMAMode</a>&#160;&#160;&#160;<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a3c922413f610803ff3775367023b78b4">mode</a>: 3</td></tr>
<tr class="memdesc:ad41b762840b557fd3ec17809331cddba"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html" title="Class handling all DMA/HDMA transfers (Direct Memory Access or H-Blank Direct Memory Access)">DMA</a>'s mode: how many bytes/registers there is, how many writes... <a href="structComSquare_1_1CPU_1_1DMA_1_1_0d38_1_1_0d41.html#ad41b762840b557fd3ec17809331cddba">More...</a><br /></td></tr>
<tr class="separator:ad41b762840b557fd3ec17809331cddba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb1a8fc173c7480d82414711de7f83ca"><td class="memItemLeft" >&#160;&#160;&#160;&#160;&#160;&#160;bool&#160;&#160;&#160;<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a3f6e8413e03d475a303a9685e9107bdb">fixed</a>: 1</td></tr>
<tr class="memdesc:afb1a8fc173c7480d82414711de7f83ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this flag is set, no increment/decrement will be done. <a href="structComSquare_1_1CPU_1_1DMA_1_1_0d38_1_1_0d41.html#afb1a8fc173c7480d82414711de7f83ca">More...</a><br /></td></tr>
<tr class="separator:afb1a8fc173c7480d82414711de7f83ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a318362328644536f81dd041004639a77"><td class="memItemLeft" >&#160;&#160;&#160;&#160;&#160;&#160;bool&#160;&#160;&#160;<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#addb890a9a0331e2c00e291a93346801e">increment</a>: 1</td></tr>
<tr class="memdesc:a318362328644536f81dd041004639a77"><td class="mdescLeft">&#160;</td><td class="mdescRight">if this flag is 0: increment. Else: decrement. (The A address) <a href="structComSquare_1_1CPU_1_1DMA_1_1_0d38_1_1_0d41.html#a318362328644536f81dd041004639a77">More...</a><br /></td></tr>
<tr class="separator:a318362328644536f81dd041004639a77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10bf60b577f5391c93213e03d3597021"><td class="memItemLeft" >&#160;&#160;&#160;&#160;&#160;&#160;bool&#160;&#160;&#160;<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a3fdcb50a9a2fa0e8c6b572cd7799f2ad">_</a>: 2</td></tr>
<tr class="memdesc:a10bf60b577f5391c93213e03d3597021"><td class="mdescLeft">&#160;</td><td class="mdescRight">Two unused bites. <a href="structComSquare_1_1CPU_1_1DMA_1_1_0d38_1_1_0d41.html#a10bf60b577f5391c93213e03d3597021">More...</a><br /></td></tr>
<tr class="separator:a10bf60b577f5391c93213e03d3597021"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abfd07876ea9efebb806452f021df5379"><td class="memItemLeft" >&#160;&#160;&#160;&#160;&#160;&#160;<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a34f471a48a9062c44e0260b3686ba06c">Direction</a>&#160;&#160;&#160;<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a0b3074ccfd02bf29ede00d79ef78792e">direction</a>: 1</td></tr>
<tr class="memdesc:abfd07876ea9efebb806452f021df5379"><td class="mdescLeft">&#160;</td><td class="mdescRight">The direction of the transfer. <a href="structComSquare_1_1CPU_1_1DMA_1_1_0d38_1_1_0d41.html#abfd07876ea9efebb806452f021df5379">More...</a><br /></td></tr>
<tr class="separator:abfd07876ea9efebb806452f021df5379"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44f265f4bc92f862f9affe8551456b0c"><td class="memItemLeft" valign="top">&#160;&#160;&#160;}&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
<tr class="separator:a44f265f4bc92f862f9affe8551456b0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75199d8a24e6f25aca0580065ee4851a"><td class="memItemLeft" >&#160;&#160;&#160;uint8_t&#160;&#160;&#160;<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a1ea72efaa83b0bb7862f6cc5fd08c69c">raw</a></td></tr>
<tr class="separator:a75199d8a24e6f25aca0580065ee4851a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cfd7983eca6c568f75fb243196a39d5"><td class="memItemLeft" valign="top">}&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a8cfd7983eca6c568f75fb243196a39d5">_controlRegister</a></td></tr>
<tr class="memdesc:a8cfd7983eca6c568f75fb243196a39d5"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html" title="Class handling all DMA/HDMA transfers (Direct Memory Access or H-Blank Direct Memory Access)">DMA</a> Control register (various information about the transfer) <a href="classComSquare_1_1CPU_1_1DMA.html#a8cfd7983eca6c568f75fb243196a39d5">More...</a><br /></td></tr>
<tr class="separator:a8cfd7983eca6c568f75fb243196a39d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec13e71fb0f68dcaa7b34b1cba600995"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#aec13e71fb0f68dcaa7b34b1cba600995">_port</a> {}</td></tr>
<tr class="memdesc:aec13e71fb0f68dcaa7b34b1cba600995"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this is 'xx', the register accessed will be $21xx. <a href="classComSquare_1_1CPU_1_1DMA.html#aec13e71fb0f68dcaa7b34b1cba600995">More...</a><br /></td></tr>
<tr class="separator:aec13e71fb0f68dcaa7b34b1cba600995"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07adc4917067ddecea619a77fb2910f0"><td class="memItemLeft" >union {</td></tr>
<tr class="memitem:a0b38efdac5cf122c84bb70e2289ea29c"><td class="memItemLeft" >&#160;&#160;&#160;uint8_t&#160;&#160;&#160;<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#abc28baf74b33a1ab53c3773c84ed9c57">bytes</a> [3]</td></tr>
<tr class="separator:a0b38efdac5cf122c84bb70e2289ea29c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a22badcd425b6d0a35f5aef3fd89f5d"><td class="memItemLeft" >&#160;&#160;&#160;struct {</td></tr>
<tr class="memitem:a954897493aa749c79d2e4162e50ab2cc"><td class="memItemLeft" >&#160;&#160;&#160;&#160;&#160;&#160;uint16_t&#160;&#160;&#160;<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a26eb7d20d948f133c086de1ca849de68">page</a></td></tr>
<tr class="separator:a954897493aa749c79d2e4162e50ab2cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd4ac4bfaf478cbc895cc762fe381893"><td class="memItemLeft" >&#160;&#160;&#160;&#160;&#160;&#160;uint8_t&#160;&#160;&#160;<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a84708ba0a5589a8ca73ed6284d570c04">bank</a></td></tr>
<tr class="separator:abd4ac4bfaf478cbc895cc762fe381893"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a22badcd425b6d0a35f5aef3fd89f5d"><td class="memItemLeft" valign="top">&#160;&#160;&#160;}&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
<tr class="separator:a2a22badcd425b6d0a35f5aef3fd89f5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33b865ec3a83472085da0aafeadf2758"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a>&#160;&#160;&#160;<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a9d6db87d17373060c5247858adc8d60d">raw</a>: 24</td></tr>
<tr class="separator:a33b865ec3a83472085da0aafeadf2758"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07adc4917067ddecea619a77fb2910f0"><td class="memItemLeft" valign="top">}&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a07adc4917067ddecea619a77fb2910f0">_aAddress</a></td></tr>
<tr class="memdesc:a07adc4917067ddecea619a77fb2910f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">The absolute long address of the data from the A bus. <a href="classComSquare_1_1CPU_1_1DMA.html#a07adc4917067ddecea619a77fb2910f0">More...</a><br /></td></tr>
<tr class="separator:a07adc4917067ddecea619a77fb2910f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a590b393a8dd0cb07b436af0b65f9fb30"><td class="memItemLeft" >union {</td></tr>
<tr class="memitem:a9bb63e17124117f2332238e933b6a19e"><td class="memItemLeft" >&#160;&#160;&#160;uint8_t&#160;&#160;&#160;<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#abc28baf74b33a1ab53c3773c84ed9c57">bytes</a> [2]</td></tr>
<tr class="separator:a9bb63e17124117f2332238e933b6a19e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a09cf4776b73d66dc3f4f4d9ee64dce"><td class="memItemLeft" >&#160;&#160;&#160;uint16_t&#160;&#160;&#160;<a class="el" href="classComSquare_1_1CPU_1_1DMA.html#af747887faadea7055e7d074612614bc9">raw</a></td></tr>
<tr class="separator:a4a09cf4776b73d66dc3f4f4d9ee64dce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a590b393a8dd0cb07b436af0b65f9fb30"><td class="memItemLeft" valign="top">}&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a590b393a8dd0cb07b436af0b65f9fb30">_count</a></td></tr>
<tr class="memdesc:a590b393a8dd0cb07b436af0b65f9fb30"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of bytes to be transferred. <a href="classComSquare_1_1CPU_1_1DMA.html#a590b393a8dd0cb07b436af0b65f9fb30">More...</a><br /></td></tr>
<tr class="separator:a590b393a8dd0cb07b436af0b65f9fb30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57b5deee11bcf984d7e2821cfb22b2f8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classComSquare_1_1Memory_1_1IMemoryBus.html">Memory::IMemoryBus</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a57b5deee11bcf984d7e2821cfb22b2f8">_bus</a></td></tr>
<tr class="memdesc:a57b5deee11bcf984d7e2821cfb22b2f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">The memory bus to use for read/write. <a href="classComSquare_1_1CPU_1_1DMA.html#a57b5deee11bcf984d7e2821cfb22b2f8">More...</a><br /></td></tr>
<tr class="separator:a57b5deee11bcf984d7e2821cfb22b2f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Class handling all DMA/HDMA transfers (Direct <a class="el" href="namespaceComSquare_1_1Memory.html">Memory</a> Access or H-Blank Direct <a class="el" href="namespaceComSquare_1_1Memory.html">Memory</a> Access) </p>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="a34f471a48a9062c44e0260b3686ba06c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a34f471a48a9062c44e0260b3686ba06c">&#9670;&nbsp;</a></span>Direction</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a34f471a48a9062c44e0260b3686ba06c">ComSquare::CPU::DMA::Direction</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a34f471a48a9062c44e0260b3686ba06cac68d0326695de61779072fe85f0bbed1"></a>AtoB&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a34f471a48a9062c44e0260b3686ba06ca90d173a67b57daa0e8cc0e395f691182"></a>BtoA&#160;</td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<a id="a09db4b625719ea8c624bc77a6ffcba39"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a09db4b625719ea8c624bc77a6ffcba39">&#9670;&nbsp;</a></span>DMAMode</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a09db4b625719ea8c624bc77a6ffcba39">ComSquare::CPU::DMA::DMAMode</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>The first three bytes of the <a class="el" href="classComSquare_1_1CPU_1_1DMA.html" title="Class handling all DMA/HDMA transfers (Direct Memory Access or H-Blank Direct Memory Access)">DMA</a>'s control register. Used to tell how many bytes/registers there is. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a09db4b625719ea8c624bc77a6ffcba39a86a0bca9633a504c13a142e8732d0654"></a>OneToOne&#160;</td><td class="fielddoc"><p>1 byte is transferred to 1 register (write once) </p>
</td></tr>
<tr><td class="fieldname"><a id="a09db4b625719ea8c624bc77a6ffcba39a4436f697495cdfb191337a6d4419a555"></a>TwoToTwo&#160;</td><td class="fielddoc"><p>2 byte is transferred to 2 register (write once) </p>
</td></tr>
<tr><td class="fieldname"><a id="a09db4b625719ea8c624bc77a6ffcba39aadedb5cc6298170f2ac0714399db9a66"></a>TwoToOne&#160;</td><td class="fielddoc"><p>2 byte is transferred to 1 register (write twice) </p>
</td></tr>
<tr><td class="fieldname"><a id="a09db4b625719ea8c624bc77a6ffcba39ae8326b4f06978a369f0f2f7174aa447e"></a>FourToTwo&#160;</td><td class="fielddoc"><p>4 byte is transferred to 2 register (write twice) </p>
</td></tr>
<tr><td class="fieldname"><a id="a09db4b625719ea8c624bc77a6ffcba39a7d518b3bb843763d2587653192708e6d"></a>FourToFour&#160;</td><td class="fielddoc"><p>4 byte is transferred to 4 register (write once) </p>
</td></tr>
<tr><td class="fieldname"><a id="a09db4b625719ea8c624bc77a6ffcba39a8b5fc9672d91f39e13f35269e5191db0"></a>TwoToTwoBis&#160;</td><td class="fielddoc"><p>Exactly the same as TwoToTwo (not implemented on the <a class="el" href="classComSquare_1_1SNES.html" title="Container of all the components of the SNES.">SNES</a> so this fallbacks) </p>
</td></tr>
<tr><td class="fieldname"><a id="a09db4b625719ea8c624bc77a6ffcba39a5f0f9487ca32fb33306fb0a60622b775"></a>TwoToOneBis&#160;</td><td class="fielddoc"><p>Exactly the same as TwoToOne (not implemented on the <a class="el" href="classComSquare_1_1SNES.html" title="Container of all the components of the SNES.">SNES</a> so this fallbacks) </p>
</td></tr>
<tr><td class="fieldname"><a id="a09db4b625719ea8c624bc77a6ffcba39ae110f671ea0a774b3d0219cb199e65eb"></a>FourToTwoBis&#160;</td><td class="fielddoc"><p>Exactly the same as FourToTwo (not implemented on the <a class="el" href="classComSquare_1_1SNES.html" title="Container of all the components of the SNES.">SNES</a> so this fallbacks) </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a8a9151c3b6318eea50d556ca5eff985a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a9151c3b6318eea50d556ca5eff985a">&#9670;&nbsp;</a></span>DMA() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ComSquare::CPU::DMA::DMA </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classComSquare_1_1Memory_1_1IMemoryBus.html">Memory::IMemoryBus</a> &amp;&#160;</td>
<td class="paramname"><em>bus</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a <a class="el" href="classComSquare_1_1CPU_1_1DMA.html" title="Class handling all DMA/HDMA transfers (Direct Memory Access or H-Blank Direct Memory Access)">DMA</a> channel with a given bus. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bus</td><td>The memory bus to use. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a6cfdffcb9b2011e3b3205262817e27be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6cfdffcb9b2011e3b3205262817e27be">&#9670;&nbsp;</a></span>DMA() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ComSquare::CPU::DMA::DMA </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classComSquare_1_1CPU_1_1DMA.html">DMA</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>A <a class="el" href="classComSquare_1_1CPU_1_1DMA.html" title="Class handling all DMA/HDMA transfers (Direct Memory Access or H-Blank Direct Memory Access)">DMA</a> is copy constructable. </p>
</div>
</div>
<a id="a65aa5e884fa822949d5b7c34b7cec98e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a65aa5e884fa822949d5b7c34b7cec98e">&#9670;&nbsp;</a></span>~DMA()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ComSquare::CPU::DMA::~DMA </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>A default destructor. </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a36b2d5c22ea29a65637e250b95558227"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a36b2d5c22ea29a65637e250b95558227">&#9670;&nbsp;</a></span>_getModeOffset()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int ComSquare::CPU::DMA::_getModeOffset </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>index</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get an offset corresponding to the current DMAMode and the index of the currently transferred byte. </p>
</div>
</div>
<a id="af77e48f1a5875defee964724e556a7b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af77e48f1a5875defee964724e556a7b4">&#9670;&nbsp;</a></span>_writeOneByte()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned ComSquare::CPU::DMA::_writeOneByte </td>
<td>(</td>
<td class="paramtype"><a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a>&#160;</td>
<td class="paramname"><em>aAddress</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a>&#160;</td>
<td class="paramname"><em>bAddress</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Write one byte using the A address, the port and the _direction. Handle special cases where no write occurs. </p>
<dl class="section return"><dt>Returns</dt><dd>The number of cycles used. </dd></dl>
</div>
</div>
<a id="a41a3d98b718c3098b7a0858b50d6fd6e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a41a3d98b718c3098b7a0858b50d6fd6e">&#9670;&nbsp;</a></span>getBus()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classComSquare_1_1Memory_1_1IMemoryBus.html">Memory::IMemoryBus</a>&amp; ComSquare::CPU::DMA::getBus </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the memory bus used by this <a class="el" href="classComSquare_1_1CPU_1_1CPU.html" title="The main CPU.">CPU</a>. </p>
</div>
</div>
<a id="aca7d4c5b094154f83f1a62e98b5d6a34"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca7d4c5b094154f83f1a62e98b5d6a34">&#9670;&nbsp;</a></span>operator=()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html">DMA</a>&amp; ComSquare::CPU::DMA::operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classComSquare_1_1CPU_1_1DMA.html">DMA</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>A <a class="el" href="classComSquare_1_1CPU_1_1DMA.html" title="Class handling all DMA/HDMA transfers (Direct Memory Access or H-Blank Direct Memory Access)">DMA</a> is not assignable. </p>
</div>
</div>
<a id="ac15ec6b4981e6097e268a9b65be29a4f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac15ec6b4981e6097e268a9b65be29a4f">&#9670;&nbsp;</a></span>read()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t ComSquare::CPU::DMA::read </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>addr</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Bus helper to read from this channel. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">addr</td><td>The address to read from </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The value at the given address. </dd></dl>
</div>
</div>
<a id="a33579bc6e0052d0be73a17a32eb8262e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a33579bc6e0052d0be73a17a32eb8262e">&#9670;&nbsp;</a></span>run()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned ComSquare::CPU::DMA::run </td>
<td>(</td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>cycles</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Run the <a class="el" href="classComSquare_1_1CPU_1_1DMA.html" title="Class handling all DMA/HDMA transfers (Direct Memory Access or H-Blank Direct Memory Access)">DMA</a> for x cycles. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cycles</td><td>The maximum number of cycles this <a class="el" href="classComSquare_1_1CPU_1_1DMA.html" title="Class handling all DMA/HDMA transfers (Direct Memory Access or H-Blank Direct Memory Access)">DMA</a> should run. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the number of cycles taken </dd></dl>
</div>
</div>
<a id="a3f583dff51b42ad8e50bb54fcd14a451"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f583dff51b42ad8e50bb54fcd14a451">&#9670;&nbsp;</a></span>setBus()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ComSquare::CPU::DMA::setBus </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classComSquare_1_1Memory_1_1IMemoryBus.html">Memory::IMemoryBus</a> &amp;&#160;</td>
<td class="paramname"><em>bus</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the memory bus used by this <a class="el" href="classComSquare_1_1CPU_1_1CPU.html" title="The main CPU.">CPU</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bus</td><td>The bus to use. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a83cc22ce83580854ca78088362a2de9d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83cc22ce83580854ca78088362a2de9d">&#9670;&nbsp;</a></span>write()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ComSquare::CPU::DMA::write </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Bus helper to write to this channel. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">addr</td><td>The address to write to </td></tr>
<tr><td class="paramname">data</td><td>The data to write. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a3fdcb50a9a2fa0e8c6b572cd7799f2ad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3fdcb50a9a2fa0e8c6b572cd7799f2ad">&#9670;&nbsp;</a></span>_</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ComSquare::CPU::DMA::_</td>
</tr>
</table>
</div><div class="memdoc">
<p>Two unused bites. </p>
</div>
</div>
<a id="a07adc4917067ddecea619a77fb2910f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a07adc4917067ddecea619a77fb2910f0">&#9670;&nbsp;</a></span>_aAddress</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">union { ... } ComSquare::CPU::DMA::_aAddress</td>
</tr>
</table>
</div><div class="memdoc">
<p>The absolute long address of the data from the A bus. </p>
</div>
</div>
<a id="a57b5deee11bcf984d7e2821cfb22b2f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a57b5deee11bcf984d7e2821cfb22b2f8">&#9670;&nbsp;</a></span>_bus</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classComSquare_1_1Memory_1_1IMemoryBus.html">Memory::IMemoryBus</a>&amp; ComSquare::CPU::DMA::_bus</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The memory bus to use for read/write. </p>
</div>
</div>
<a id="a8cfd7983eca6c568f75fb243196a39d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8cfd7983eca6c568f75fb243196a39d5">&#9670;&nbsp;</a></span>_controlRegister</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">union { ... } ComSquare::CPU::DMA::_controlRegister</td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="classComSquare_1_1CPU_1_1DMA.html" title="Class handling all DMA/HDMA transfers (Direct Memory Access or H-Blank Direct Memory Access)">DMA</a> Control register (various information about the transfer) </p>
</div>
</div>
<a id="a590b393a8dd0cb07b436af0b65f9fb30"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a590b393a8dd0cb07b436af0b65f9fb30">&#9670;&nbsp;</a></span>_count</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">union { ... } ComSquare::CPU::DMA::_count</td>
</tr>
</table>
</div><div class="memdoc">
<p>The number of bytes to be transferred. </p>
</div>
</div>
<a id="aec13e71fb0f68dcaa7b34b1cba600995"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec13e71fb0f68dcaa7b34b1cba600995">&#9670;&nbsp;</a></span>_port</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint8_t ComSquare::CPU::DMA::_port {}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>If this is 'xx', the register accessed will be $21xx. </p>
</div>
</div>
<a id="a84708ba0a5589a8ca73ed6284d570c04"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a84708ba0a5589a8ca73ed6284d570c04">&#9670;&nbsp;</a></span>bank</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t ComSquare::CPU::DMA::bank</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abc28baf74b33a1ab53c3773c84ed9c57"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc28baf74b33a1ab53c3773c84ed9c57">&#9670;&nbsp;</a></span>bytes</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t ComSquare::CPU::DMA::bytes[2]</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0b3074ccfd02bf29ede00d79ef78792e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0b3074ccfd02bf29ede00d79ef78792e">&#9670;&nbsp;</a></span>direction</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a34f471a48a9062c44e0260b3686ba06c">Direction</a> ComSquare::CPU::DMA::direction</td>
</tr>
</table>
</div><div class="memdoc">
<p>The direction of the transfer. </p>
</div>
</div>
<a id="a92fbb57324fbdf99e9d97a304c4f2083"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a92fbb57324fbdf99e9d97a304c4f2083">&#9670;&nbsp;</a></span>enabled</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ComSquare::CPU::DMA::enabled</td>
</tr>
</table>
</div><div class="memdoc">
<p>Is this channel set to run? </p>
</div>
</div>
<a id="a3f6e8413e03d475a303a9685e9107bdb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f6e8413e03d475a303a9685e9107bdb">&#9670;&nbsp;</a></span>fixed</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ComSquare::CPU::DMA::fixed</td>
</tr>
</table>
</div><div class="memdoc">
<p>If this flag is set, no increment/decrement will be done. </p>
</div>
</div>
<a id="addb890a9a0331e2c00e291a93346801e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#addb890a9a0331e2c00e291a93346801e">&#9670;&nbsp;</a></span>increment</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ComSquare::CPU::DMA::increment</td>
</tr>
</table>
</div><div class="memdoc">
<p>if this flag is 0: increment. Else: decrement. (The A address) </p>
</div>
</div>
<a id="a3c922413f610803ff3775367023b78b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c922413f610803ff3775367023b78b4">&#9670;&nbsp;</a></span>mode</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classComSquare_1_1CPU_1_1DMA.html#a09db4b625719ea8c624bc77a6ffcba39">DMAMode</a> ComSquare::CPU::DMA::mode</td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="classComSquare_1_1CPU_1_1DMA.html" title="Class handling all DMA/HDMA transfers (Direct Memory Access or H-Blank Direct Memory Access)">DMA</a>'s mode: how many bytes/registers there is, how many writes... </p>
</div>
</div>
<a id="a26eb7d20d948f133c086de1ca849de68"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a26eb7d20d948f133c086de1ca849de68">&#9670;&nbsp;</a></span>page</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t ComSquare::CPU::DMA::page</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1ea72efaa83b0bb7862f6cc5fd08c69c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1ea72efaa83b0bb7862f6cc5fd08c69c">&#9670;&nbsp;</a></span>raw <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t ComSquare::CPU::DMA::raw</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9d6db87d17373060c5247858adc8d60d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9d6db87d17373060c5247858adc8d60d">&#9670;&nbsp;</a></span>raw <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a> ComSquare::CPU::DMA::raw</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af747887faadea7055e7d074612614bc9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af747887faadea7055e7d074612614bc9">&#9670;&nbsp;</a></span>raw <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t ComSquare::CPU::DMA::raw</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>sources/CPU/DMA/<a class="el" href="DMA_8hpp_source.html">DMA.hpp</a></li>
<li>sources/CPU/DMA/<a class="el" href="DMA_8cpp.html">DMA.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>