Files
ComSquare/docs/classComSquare_1_1Memory_1_1IRectangleMemory.html
T
2020-01-31 16:52:04 +01:00

568 lines
32 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::Memory::IRectangleMemory 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_1Memory.html">Memory</a></li><li class="navelem"><a class="el" href="classComSquare_1_1Memory_1_1IRectangleMemory.html">IRectangleMemory</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classComSquare_1_1Memory_1_1IRectangleMemory-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">ComSquare::Memory::IRectangleMemory Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
</div><!--header-->
<div class="contents">
<p>Superset of the <a class="el" href="classComSquare_1_1Memory_1_1IMemory.html" title="Common interface implemented by all components mapping memory.">IMemory</a> to map non continuous rectangle to the memory. (A rectangle that spam across more than one bank but that does not start at 0000 or end at FFFF).
<a href="classComSquare_1_1Memory_1_1IRectangleMemory.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="IRectangleMemory_8hpp_source.html">IRectangleMemory.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ComSquare::Memory::IRectangleMemory:</div>
<div class="dyncontent">
<div class="center"><img src="classComSquare_1_1Memory_1_1IRectangleMemory__inherit__graph.png" border="0" usemap="#ComSquare_1_1Memory_1_1IRectangleMemory_inherit__map" alt="Inheritance graph"/></div>
<map name="ComSquare_1_1Memory_1_1IRectangleMemory_inherit__map" id="ComSquare_1_1Memory_1_1IRectangleMemory_inherit__map">
<area shape="rect" title="Superset of the IMemory to map non continuous rectangle to the memory. (A rectangle that spam across ..." alt="" coords="6,219,173,443"/>
<area shape="rect" href="classComSquare_1_1Cartridge_1_1Cartridge.html" title="Contains the rom&#39;s memory/instructions." alt="" coords="5,491,173,715"/>
<area shape="rect" href="classComSquare_1_1Memory_1_1IMemory.html" title="Common interface implemented by all components mapping memory." alt="" coords="6,5,173,171"/>
</map>
</div>
<div class="dynheader">
Collaboration diagram for ComSquare::Memory::IRectangleMemory:</div>
<div class="dyncontent">
<div class="center"><img src="classComSquare_1_1Memory_1_1IRectangleMemory__coll__graph.png" border="0" usemap="#ComSquare_1_1Memory_1_1IRectangleMemory_coll__map" alt="Collaboration graph"/></div>
<map name="ComSquare_1_1Memory_1_1IRectangleMemory_coll__map" id="ComSquare_1_1Memory_1_1IRectangleMemory_coll__map">
<area shape="rect" title="Superset of the IMemory to map non continuous rectangle to the memory. (A rectangle that spam across ..." alt="" coords="5,219,172,443"/>
<area shape="rect" href="classComSquare_1_1Memory_1_1IMemory.html" title="Common interface implemented by all components mapping memory." alt="" coords="5,5,172,171"/>
</map>
</div>
<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:a478251bc0c7272712b6f6f25aa17b71a"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1Memory_1_1IRectangleMemory.html#a478251bc0c7272712b6f6f25aa17b71a">read</a> (<a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a> addr) override</td></tr>
<tr class="memdesc:a478251bc0c7272712b6f6f25aa17b71a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read data from the component using the same method as the basic <a class="el" href="classComSquare_1_1Memory_1_1IMemory.html" title="Common interface implemented by all components mapping memory.">IMemory</a>. <a href="classComSquare_1_1Memory_1_1IRectangleMemory.html#a478251bc0c7272712b6f6f25aa17b71a">More...</a><br /></td></tr>
<tr class="separator:a478251bc0c7272712b6f6f25aa17b71a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54b0ace13a17556f6072399ffed9b817"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1Memory_1_1IRectangleMemory.html#a54b0ace13a17556f6072399ffed9b817">write</a> (<a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a> addr, uint8_t data) override</td></tr>
<tr class="memdesc:a54b0ace13a17556f6072399ffed9b817"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write data to this component using the same method as the basic <a class="el" href="classComSquare_1_1Memory_1_1IMemory.html" title="Common interface implemented by all components mapping memory.">IMemory</a>. <a href="classComSquare_1_1Memory_1_1IRectangleMemory.html#a54b0ace13a17556f6072399ffed9b817">More...</a><br /></td></tr>
<tr class="separator:a54b0ace13a17556f6072399ffed9b817"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a239baa265b31e222d4e5b0a9d2d5e0"><td class="memItemLeft" align="right" valign="top">virtual uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1Memory_1_1IRectangleMemory.html#a2a239baa265b31e222d4e5b0a9d2d5e0">read_internal</a> (<a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a> addr)=0</td></tr>
<tr class="memdesc:a2a239baa265b31e222d4e5b0a9d2d5e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal component read. Implement this as you would implement a basic <a class="el" href="classComSquare_1_1Memory_1_1IMemory.html" title="Common interface implemented by all components mapping memory.">IMemory</a>'s read. <a href="classComSquare_1_1Memory_1_1IRectangleMemory.html#a2a239baa265b31e222d4e5b0a9d2d5e0">More...</a><br /></td></tr>
<tr class="separator:a2a239baa265b31e222d4e5b0a9d2d5e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac37e86292b5e7b0bd099757c2e6263cc"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1Memory_1_1IRectangleMemory.html#ac37e86292b5e7b0bd099757c2e6263cc">write_internal</a> (<a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a> addr, uint8_t data)=0</td></tr>
<tr class="memdesc:ac37e86292b5e7b0bd099757c2e6263cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal component write. Implement this as you would implement a basic <a class="el" href="classComSquare_1_1Memory_1_1IMemory.html" title="Common interface implemented by all components mapping memory.">IMemory</a>'s write. <a href="classComSquare_1_1Memory_1_1IRectangleMemory.html#ac37e86292b5e7b0bd099757c2e6263cc">More...</a><br /></td></tr>
<tr class="separator:ac37e86292b5e7b0bd099757c2e6263cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab165286db6b6c7cea0e635ca49a07824"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1Memory_1_1IRectangleMemory.html#ab165286db6b6c7cea0e635ca49a07824">hasMemoryAt</a> (<a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a> addr) override</td></tr>
<tr class="memdesc:ab165286db6b6c7cea0e635ca49a07824"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if this component has mapped the address. <a href="classComSquare_1_1Memory_1_1IRectangleMemory.html#ab165286db6b6c7cea0e635ca49a07824">More...</a><br /></td></tr>
<tr class="separator:ab165286db6b6c7cea0e635ca49a07824"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b55c812fb38ed7c67d19f32748b5286"><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_1Memory_1_1IRectangleMemory.html#a6b55c812fb38ed7c67d19f32748b5286">getStart</a> () override</td></tr>
<tr class="memdesc:a6b55c812fb38ed7c67d19f32748b5286"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the first address mapped to this component. <a href="classComSquare_1_1Memory_1_1IRectangleMemory.html#a6b55c812fb38ed7c67d19f32748b5286">More...</a><br /></td></tr>
<tr class="separator:a6b55c812fb38ed7c67d19f32748b5286"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90bb7d98b2e8c2da70cc29c36ac70adc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1Memory_1_1IRectangleMemory.html#a90bb7d98b2e8c2da70cc29c36ac70adc">setMemoryRegion</a> (uint8_t startBank, uint8_t endBank, uint16_t startPage, uint16_t endPage)</td></tr>
<tr class="memdesc:a90bb7d98b2e8c2da70cc29c36ac70adc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Change starting and ending points of this mapped memory. <a href="classComSquare_1_1Memory_1_1IRectangleMemory.html#a90bb7d98b2e8c2da70cc29c36ac70adc">More...</a><br /></td></tr>
<tr class="separator:a90bb7d98b2e8c2da70cc29c36ac70adc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classComSquare_1_1Memory_1_1IMemory"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classComSquare_1_1Memory_1_1IMemory')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classComSquare_1_1Memory_1_1IMemory.html">ComSquare::Memory::IMemory</a></td></tr>
<tr class="memitem:a67377d426fefea4b20df85302110e884 inherit pub_methods_classComSquare_1_1Memory_1_1IMemory"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1Memory_1_1IMemory.html#a67377d426fefea4b20df85302110e884">setMemoryRegion</a> (<a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a> start, <a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a> end)</td></tr>
<tr class="memdesc:a67377d426fefea4b20df85302110e884 inherit pub_methods_classComSquare_1_1Memory_1_1IMemory"><td class="mdescLeft">&#160;</td><td class="mdescRight">Change starting and ending points of this mapped memory. <a href="classComSquare_1_1Memory_1_1IMemory.html#a67377d426fefea4b20df85302110e884">More...</a><br /></td></tr>
<tr class="separator:a67377d426fefea4b20df85302110e884 inherit pub_methods_classComSquare_1_1Memory_1_1IMemory"><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:a94658df7460fd7f9f59f22955d93bf6b"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1Memory_1_1IRectangleMemory.html#a94658df7460fd7f9f59f22955d93bf6b">_startBank</a> = 0</td></tr>
<tr class="memdesc:a94658df7460fd7f9f59f22955d93bf6b"><td class="mdescLeft">&#160;</td><td class="mdescRight">The first bank to map to. <a href="classComSquare_1_1Memory_1_1IRectangleMemory.html#a94658df7460fd7f9f59f22955d93bf6b">More...</a><br /></td></tr>
<tr class="separator:a94658df7460fd7f9f59f22955d93bf6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc2002b644d61a7dc4d40c92e0b93a3d"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1Memory_1_1IRectangleMemory.html#acc2002b644d61a7dc4d40c92e0b93a3d">_endBank</a> = 0</td></tr>
<tr class="memdesc:acc2002b644d61a7dc4d40c92e0b93a3d"><td class="mdescLeft">&#160;</td><td class="mdescRight">The last bank to map to. <a href="classComSquare_1_1Memory_1_1IRectangleMemory.html#acc2002b644d61a7dc4d40c92e0b93a3d">More...</a><br /></td></tr>
<tr class="separator:acc2002b644d61a7dc4d40c92e0b93a3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9178184277528ac54064ca6caacab474"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1Memory_1_1IRectangleMemory.html#a9178184277528ac54064ca6caacab474">_startPage</a> = 0</td></tr>
<tr class="memdesc:a9178184277528ac54064ca6caacab474"><td class="mdescLeft">&#160;</td><td class="mdescRight">The first address of each bank to map. <a href="classComSquare_1_1Memory_1_1IRectangleMemory.html#a9178184277528ac54064ca6caacab474">More...</a><br /></td></tr>
<tr class="separator:a9178184277528ac54064ca6caacab474"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aece911d747bb326279bc7e661e06a9a3"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1Memory_1_1IRectangleMemory.html#aece911d747bb326279bc7e661e06a9a3">_endPage</a> = 0</td></tr>
<tr class="memdesc:aece911d747bb326279bc7e661e06a9a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The last address of each bank to map. <a href="classComSquare_1_1Memory_1_1IRectangleMemory.html#aece911d747bb326279bc7e661e06a9a3">More...</a><br /></td></tr>
<tr class="separator:aece911d747bb326279bc7e661e06a9a3"><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>Superset of the <a class="el" href="classComSquare_1_1Memory_1_1IMemory.html" title="Common interface implemented by all components mapping memory.">IMemory</a> to map non continuous rectangle to the memory. (A rectangle that spam across more than one bank but that does not start at 0000 or end at FFFF). </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a6b55c812fb38ed7c67d19f32748b5286"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6b55c812fb38ed7c67d19f32748b5286">&#9670;&nbsp;</a></span>getStart()</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="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a> ComSquare::Memory::IRectangleMemory::getStart </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the first address mapped to this component. </p>
<dl class="section return"><dt>Returns</dt><dd>the _start value. </dd></dl>
<p>Reimplemented from <a class="el" href="classComSquare_1_1Memory_1_1IMemory.html#ab8910c303177d212bfca0a563b04c7a8">ComSquare::Memory::IMemory</a>.</p>
</div>
</div>
<a id="ab165286db6b6c7cea0e635ca49a07824"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab165286db6b6c7cea0e635ca49a07824">&#9670;&nbsp;</a></span>hasMemoryAt()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool ComSquare::Memory::IRectangleMemory::hasMemoryAt </td>
<td>(</td>
<td class="paramtype"><a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a>&#160;</td>
<td class="paramname"><em>addr</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return true if this component has mapped the address. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">addr</td><td>The address to check. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if this address is mapped to the component. False otherwise. </dd></dl>
<p>Reimplemented from <a class="el" href="classComSquare_1_1Memory_1_1IMemory.html#a3a7ac0be32c2c42e6421b55719f93f25">ComSquare::Memory::IMemory</a>.</p>
</div>
</div>
<a id="a478251bc0c7272712b6f6f25aa17b71a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a478251bc0c7272712b6f6f25aa17b71a">&#9670;&nbsp;</a></span>read()</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::Memory::IRectangleMemory::read </td>
<td>(</td>
<td class="paramtype"><a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a>&#160;</td>
<td class="paramname"><em>addr</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Read data from the component using the same method as the basic <a class="el" href="classComSquare_1_1Memory_1_1IMemory.html" title="Common interface implemented by all components mapping memory.">IMemory</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">addr</td><td>The local address to read from. 0x0 should refer to the first byte of this component on the fist bank. This method is responsible of mapping to the component's read. </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classComSquare_1_1InvalidAddress.html" title="Exception thrown when trying to read/write to an invalid address.">InvalidAddress</a></td><td>if the address is not mapped to the component. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Return the data at the address given as parameter. </dd></dl>
<p>Implements <a class="el" href="classComSquare_1_1Memory_1_1IMemory.html#a8459ed12c4172ee29ecdc84330f99ff7">ComSquare::Memory::IMemory</a>.</p>
</div>
</div>
<a id="a2a239baa265b31e222d4e5b0a9d2d5e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2a239baa265b31e222d4e5b0a9d2d5e0">&#9670;&nbsp;</a></span>read_internal()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual uint8_t ComSquare::Memory::IRectangleMemory::read_internal </td>
<td>(</td>
<td class="paramtype"><a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a>&#160;</td>
<td class="paramname"><em>addr</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Internal component read. Implement this as you would implement a basic <a class="el" href="classComSquare_1_1Memory_1_1IMemory.html" title="Common interface implemented by all components mapping memory.">IMemory</a>'s read. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">addr</td><td>The local address to read from. 0x0 refer to the first byte of your data and the address is in the component's space. That means that you can consider this address as continuous </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">This</td><td>function should thrown an <a class="el" href="classComSquare_1_1InvalidAddress.html" title="Exception thrown when trying to read/write to an invalid address.">InvalidAddress</a> for address that are not mapped to the component. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Return the data at the address given as parameter. </dd></dl>
<p>Implemented in <a class="el" href="classComSquare_1_1Cartridge_1_1Cartridge.html#a940771d62cb665381e89d8c841fdad72">ComSquare::Cartridge::Cartridge</a>.</p>
</div>
</div>
<a id="a90bb7d98b2e8c2da70cc29c36ac70adc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a90bb7d98b2e8c2da70cc29c36ac70adc">&#9670;&nbsp;</a></span>setMemoryRegion()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ComSquare::Memory::IRectangleMemory::setMemoryRegion </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>startBank</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>endBank</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>startPage</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>endPage</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Change starting and ending points of this mapped memory. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">startBank</td><td>The first bank mapped to this component. </td></tr>
<tr><td class="paramname">endBank</td><td>The last bank mapped to this component. </td></tr>
<tr><td class="paramname">startPage</td><td>The first page mapped to this component (every mapped banks will have this page mapped) </td></tr>
<tr><td class="paramname">endPage</td><td>The end page mapped to this component (every mapped banks will have this pages lower than this mapped) </td></tr>
</table>
</dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>The start/end address should be a rectangle. To mirror memory, use the <a class="el" href="classComSquare_1_1Memory_1_1MemoryShadow.html">MemoryShadow</a> class and not this one. </dd></dl>
</div>
</div>
<a id="a54b0ace13a17556f6072399ffed9b817"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a54b0ace13a17556f6072399ffed9b817">&#9670;&nbsp;</a></span>write()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ComSquare::Memory::IRectangleMemory::write </td>
<td>(</td>
<td class="paramtype"><a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a>&#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>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Write data to this component using the same method as the basic <a class="el" href="classComSquare_1_1Memory_1_1IMemory.html" title="Common interface implemented by all components mapping memory.">IMemory</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">addr</td><td>The local address to write data 0x0 should refer to the first byte of this component on the fist bank. This method is responsible of mapping to the component's write. </td></tr>
<tr><td class="paramname">data</td><td>The new data to write. </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classComSquare_1_1InvalidAddress.html" title="Exception thrown when trying to read/write to an invalid address.">InvalidAddress</a></td><td>if the address is not mapped to the component. </td></tr>
</table>
</dd>
</dl>
<p>Implements <a class="el" href="classComSquare_1_1Memory_1_1IMemory.html#a449bc89798a0b86028bb0413106514d9">ComSquare::Memory::IMemory</a>.</p>
</div>
</div>
<a id="ac37e86292b5e7b0bd099757c2e6263cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac37e86292b5e7b0bd099757c2e6263cc">&#9670;&nbsp;</a></span>write_internal()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void ComSquare::Memory::IRectangleMemory::write_internal </td>
<td>(</td>
<td class="paramtype"><a class="el" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a>&#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>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Internal component write. Implement this as you would implement a basic <a class="el" href="classComSquare_1_1Memory_1_1IMemory.html" title="Common interface implemented by all components mapping memory.">IMemory</a>'s write. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">addr</td><td>The local address to write to. 0x0 refer to the first byte of your data and the address is in the component's space. That means that you can consider this address as continuous </td></tr>
<tr><td class="paramname">data</td><td>The new data to write. </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">This</td><td>function should thrown an <a class="el" href="classComSquare_1_1InvalidAddress.html" title="Exception thrown when trying to read/write to an invalid address.">InvalidAddress</a> for address that are not mapped to the component. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classComSquare_1_1Cartridge_1_1Cartridge.html#a02d9c1db34d043234aef35a7357356fd">ComSquare::Cartridge::Cartridge</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="acc2002b644d61a7dc4d40c92e0b93a3d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc2002b644d61a7dc4d40c92e0b93a3d">&#9670;&nbsp;</a></span>_endBank</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::Memory::IRectangleMemory::_endBank = 0</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 last bank to map to. </p>
</div>
</div>
<a id="aece911d747bb326279bc7e661e06a9a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aece911d747bb326279bc7e661e06a9a3">&#9670;&nbsp;</a></span>_endPage</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint16_t ComSquare::Memory::IRectangleMemory::_endPage = 0</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 last address of each bank to map. </p>
</div>
</div>
<a id="a94658df7460fd7f9f59f22955d93bf6b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a94658df7460fd7f9f59f22955d93bf6b">&#9670;&nbsp;</a></span>_startBank</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::Memory::IRectangleMemory::_startBank = 0</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 first bank to map to. </p>
</div>
</div>
<a id="a9178184277528ac54064ca6caacab474"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9178184277528ac54064ca6caacab474">&#9670;&nbsp;</a></span>_startPage</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint16_t ComSquare::Memory::IRectangleMemory::_startPage = 0</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 first address of each bank to map. </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>sources/Memory/<a class="el" href="IRectangleMemory_8hpp_source.html">IRectangleMemory.hpp</a></li>
<li>sources/Memory/<a class="el" href="IRectangleMemory_8cpp.html">IRectangleMemory.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>