<br />
<b>Notice</b>:  Trying to access array offset on value of type bool in <b>/mnt/cpcwiki-httpdocs/includes/libs/IPSet.php</b> on line <b>243</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type bool in <b>/mnt/cpcwiki-httpdocs/includes/libs/IPSet.php</b> on line <b>246</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type bool in <b>/mnt/cpcwiki-httpdocs/includes/libs/IPSet.php</b> on line <b>243</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type bool in <b>/mnt/cpcwiki-httpdocs/includes/libs/IPSet.php</b> on line <b>246</b><br />
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://oldwiki.cpcwiki.eu/index.php?action=history&amp;feed=atom&amp;title=BIOS_Function_Summary</id>
		<title>BIOS Function Summary - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://oldwiki.cpcwiki.eu/index.php?action=history&amp;feed=atom&amp;title=BIOS_Function_Summary"/>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=BIOS_Function_Summary&amp;action=history"/>
		<updated>2026-08-28T19:52:24Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.25.1</generator>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=BIOS_Function_Summary&amp;diff=65516&amp;oldid=prev</id>
		<title>MacDeath at 16:40, 19 December 2010</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=BIOS_Function_Summary&amp;diff=65516&amp;oldid=prev"/>
				<updated>2010-12-19T16:40:03Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 16:40, 19 December 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;L1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:BIOS]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Kernel RST Vectors ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Kernel RST Vectors ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; 0000 RESET (RST0/RESET)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; 0000 RESET (RST0/RESET)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>MacDeath</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=BIOS_Function_Summary&amp;diff=41515&amp;oldid=prev</id>
		<title>Nocash: /* Kernel RAM Functions */</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=BIOS_Function_Summary&amp;diff=41515&amp;oldid=prev"/>
				<updated>2010-02-11T02:55:31Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Kernel RAM Functions&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 02:55, 11 February 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;L32&quot; &gt;Line 32:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 32:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; B91E KL_RAM_LDDR&amp;#160; &amp;#160; &amp;#160; &amp;#160; ;in: HL=src_end, DE=dest_end, BC=len&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; B91E KL_RAM_LDDR&amp;#160; &amp;#160; &amp;#160; &amp;#160; ;in: HL=src_end, DE=dest_end, BC=len&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; B921 KL_POLL_SYNCHRONOUS&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; B921 KL_POLL_SYNCHRONOUS&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;664 and up only&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; '''&lt;/ins&gt;664 and up only&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;:'''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; B92A KL_SCAN_NEEDED_664&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; B92A KL_SCAN_NEEDED_664&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Nocash</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=BIOS_Function_Summary&amp;diff=39616&amp;oldid=prev</id>
		<title>Nocash: /* Additional 664/6128 Functions */</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=BIOS_Function_Summary&amp;diff=39616&amp;oldid=prev"/>
				<updated>2010-01-25T02:14:28Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Additional 664/6128 Functions&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 02:14, 25 January 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;L300&quot; &gt;Line 300:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 300:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Additional 664/6128 Functions ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Additional 664/6128 Functions ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;664 and up only...&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; '''&lt;/ins&gt;664 and up only...&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; BD3A KM_SET_LOCKS_664 ;in: H=caps lock (caps), L=shift lock (ctrl caps)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; BD3A KM_SET_LOCKS_664 ;in: H=caps lock (caps), L=shift lock (ctrl caps)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; BD3D KM_FLUSH_664&amp;#160; &amp;#160;  ;calls KM_READ_CHAR until cy=0&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; BD3D KM_FLUSH_664&amp;#160; &amp;#160;  ;calls KM_READ_CHAR until cy=0&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;L312&quot; &gt;Line 312:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 312:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; BD55 SCR_SET_POSITION_664&amp;#160; ;in: A=BASE,HL=OFFSET, out: A AND C0h, HL AND 7FEh&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; BD55 SCR_SET_POSITION_664&amp;#160; ;in: A=BASE,HL=OFFSET, out: A AND C0h, HL AND 7FEh&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; BD58 MC_PRINT_TRANSLATION_664&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; BD58 MC_PRINT_TRANSLATION_664&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;6128 and up only...&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; '''&lt;/ins&gt;6128 and up only...&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; BD5B KL_RAM_SELECT_6128&amp;#160; --6128 only--&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; BD5B KL_RAM_SELECT_6128&amp;#160; --6128 only--&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Nocash</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=BIOS_Function_Summary&amp;diff=39615&amp;oldid=prev</id>
		<title>Nocash: /* Indirections (List of JUMPs into BIOS area -- LO ROM must be enabled!) */</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=BIOS_Function_Summary&amp;diff=39615&amp;oldid=prev"/>
				<updated>2010-01-25T02:14:03Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Indirections (List of JUMPs into BIOS area -- LO ROM must be enabled!)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 02:14, 25 January 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;L329&quot; &gt;Line 329:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 329:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; BDEE HOOK_KM_TEST_BREAK&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; BDEE HOOK_KM_TEST_BREAK&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; BDF1 HOOK_MC_PRINT_CHAR&amp;#160; &amp;#160;  ;in: A=char, out: CY=1=okay, CY=0=busy/timeout&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; BDF1 HOOK_MC_PRINT_CHAR&amp;#160; &amp;#160;  ;in: A=char, out: CY=1=okay, CY=0=busy/timeout&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;664 and up only:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; '''&lt;/ins&gt;664 and up only:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; BDF4 HOOK_KM_SCAN_KEYS_664&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; BDF4 HOOK_KM_SCAN_KEYS_664&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Nocash</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=BIOS_Function_Summary&amp;diff=39552&amp;oldid=prev</id>
		<title>Nocash: Created page with '== Kernel RST Vectors ==   0000 RESET (RST0/RESET)   0008 KL_LO_JUMP (RST1)   000B KL_LO_CALL_HL   000E KL_JP_BC                 ;in: BC=addr   0010 KL_SIDE_CALL_SP (RST2)   0013…'</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=BIOS_Function_Summary&amp;diff=39552&amp;oldid=prev"/>
				<updated>2010-01-24T21:44:47Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;#039;== Kernel RST Vectors ==   0000 RESET (RST0/RESET)   0008 KL_LO_JUMP (RST1)   000B KL_LO_CALL_HL   000E KL_JP_BC                 ;in: BC=addr   0010 KL_SIDE_CALL_SP (RST2)   0013…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Kernel RST Vectors ==&lt;br /&gt;
  0000 RESET (RST0/RESET)&lt;br /&gt;
  0008 KL_LO_JUMP (RST1)&lt;br /&gt;
  000B KL_LO_CALL_HL&lt;br /&gt;
  000E KL_JP_BC                 ;in: BC=addr&lt;br /&gt;
  0010 KL_SIDE_CALL_SP (RST2)&lt;br /&gt;
  0013 KL_SIDE_CALL_HL&lt;br /&gt;
  0016 KL_JP_DE                 ;in: DE=addr&lt;br /&gt;
  0018 KL_FAR_CALL_SP (RST3)&lt;br /&gt;
  001B KL_FAR_CALL_C_HL&lt;br /&gt;
  001E KL_JP_HL                 ;in: HL=addr&lt;br /&gt;
  0020 KL_RAM_LD_A_HL (RST4)    ;in: HL=src, out: A=[HL]&lt;br /&gt;
  0023 KL_FAR_CALL_HL&lt;br /&gt;
  0028 KL_FIRM_JUMP (RST5)&lt;br /&gt;
  002B DATA (OLD C' WHEN RST 30h OCCURRED WITH LO_ROM ENABLED)&lt;br /&gt;
  0030 FREE_FOR_USER (RST6)&lt;br /&gt;
  0038 INTERRUPT (RST7/IRQ)&lt;br /&gt;
  003B EXT_INTERRUPT_VECTOR&lt;br /&gt;
  0066 GARBAGE (THERE'S NO NMI HANDLER IN ROM)&lt;br /&gt;
&lt;br /&gt;
== Kernel RAM Functions ==&lt;br /&gt;
  B900 KL_U_ROM_ENABLE    ;out: A=old C'&lt;br /&gt;
  B903 KL_U_ROM_DISABLE   ;out: A=old C'&lt;br /&gt;
  B906 KL_L_ROM_ENABLE    ;out: A=old C'&lt;br /&gt;
  B909 KL_L_ROM_DISABLE   ;out: A=old C'&lt;br /&gt;
  B90C KL_ROM_RESTORE     ;in: A=new C' (Bit2,3)&lt;br /&gt;
  B90F KL_ROM_SELECT      ;in: C=upper ROM bank (select, and enable that bank)&lt;br /&gt;
  B912 KL_CURR_SELECTION  ;out: A=upper ROM bank&lt;br /&gt;
  B915 KL_PROBE_ROM       ;in: C=upper ROM bank, out: A=[C000h], HL=[C001h]&lt;br /&gt;
  B918 KL_ROM_DESELECT    ;in: B=new C', C=upper ROM bank, out: B=A, C=old bank&lt;br /&gt;
  B91B KL_RAM_LDIR        ;in: HL=src, DE=dest, BC=len&lt;br /&gt;
  B91E KL_RAM_LDDR        ;in: HL=src_end, DE=dest_end, BC=len&lt;br /&gt;
  B921 KL_POLL_SYNCHRONOUS&lt;br /&gt;
664 and up only&lt;br /&gt;
  B92A KL_SCAN_NEEDED_664&lt;br /&gt;
&lt;br /&gt;
== Keyboard Manager ==&lt;br /&gt;
  BB00 KM_INITIALIZE&lt;br /&gt;
  BB03 KM_RESET&lt;br /&gt;
  BB06 KM_WAIT_CHAR     out: A=char (waits until valid char)&lt;br /&gt;
  BB09 KM_READ_CHAR     out: A=char, cy=1=valid char&lt;br /&gt;
  BB0C KM_CHAR_RETURN   in: A=char (writeback max one char to keybuf)&lt;br /&gt;
  BB0F KM_SET_EXPAND    in: B=code, HL=ptr to new string, C=length&lt;br /&gt;
  BB12 KM_GET_EXPAND    in: A=code (0-1F,80-9F), L=index, out:A=char, cy,zf&lt;br /&gt;
  BB15 KM_EXP_BUF_RESET in: de=begin, hl=length of buffer, out: cy: 1=okay&lt;br /&gt;
  BB18 KM_WAIT_KEY      out: A=char (waits until key pressed)&lt;br /&gt;
  BB1B KM_READ_KEY      out: cy:0=none, cy:1=key pressed, A=char&lt;br /&gt;
  BB1E KM_TEST_KEY      in: A=keyno, out: nz=pressed, C=ctrl/shift flags&lt;br /&gt;
  BB21 KM_GET_LOCKS     out: H=caps lock (caps), L=shift lock (ctrl+caps)&lt;br /&gt;
  BB24 KM_GET_JOYSTICK  out: H=joystick 0, L=joystick 1&lt;br /&gt;
  BB27 KM_SET_TRANSLATE in: A=keyno, B=char (normal)&lt;br /&gt;
  BB2A KM_GET_TRANSLATE in: A=keyno, out: A=char (normal)&lt;br /&gt;
  BB2D KM_SET_SHIFT     in: A=keyno, B=char (with shift)&lt;br /&gt;
  BB30 KM_GET_SHIFT     in: A=keyno, out: A=char (with shift)&lt;br /&gt;
  BB33 KM_SET_CTRL      in: A=keyno, B=char (with control)&lt;br /&gt;
  BB36 KM_GET_CTRL      in: A=keyno, out: A=char (with control)&lt;br /&gt;
  BB39 KM_SET_REPEAT    in: A=keyno, B=repeat flag (FFh=on)&lt;br /&gt;
  BB3C KM_GET_REPEAT    in: A=keyno, out: nz=repeat&lt;br /&gt;
  BB3F KM_SET_DELAY     in: H=1st delay, L=repeat delay&lt;br /&gt;
  BB42 KM_GET_DELAY     out: H=1st delay, L=repeat delay&lt;br /&gt;
  BB45 KM_ARM_BREAK     in: de=procedure, c=ROM config&lt;br /&gt;
  BB48 KM_DISARM_BREAK  in: none&lt;br /&gt;
  BB4B KM_BREAK_EVENT&lt;br /&gt;
&lt;br /&gt;
== Text Output Functions ==&lt;br /&gt;
  BB4E TXT_INITIALIZE&lt;br /&gt;
  BB51 TXT_RESET&lt;br /&gt;
  BB54 TXT_VDU_DISABLE&lt;br /&gt;
  BB57 TXT_VDU_ENABLE&lt;br /&gt;
  BB5A TXT_OUTPUT        in: A=char ;display 20h..FFh, or handle 00h..1Fh&lt;br /&gt;
  BB5D TXT_WR_CHAR       in: A=char ;display 00h..FFh&lt;br /&gt;
  BB60 TXT_RD_CHAR       out: A=char, Z=space, cy=1=okay&lt;br /&gt;
  BB63 TXT_SET_GRAPHIC   in: A=0=normal text position, A&amp;gt;0=graphics position&lt;br /&gt;
  BB66 TXT_SET_WINDOW    in: H=x1, L=y1, D=x2, E=y2 (x=0..79, y=0..24)&lt;br /&gt;
  BB69 TXT_GET_WINDOW    out: H=x1, L=y1, D=x2, E=y2, cy=0=hardware scrolling&lt;br /&gt;
  BB6C TXT_CLEAR_WINDOW  fill window by PAPER color&lt;br /&gt;
  BB6F TXT_SET_COLUMN    in: A=x&lt;br /&gt;
  BB72 TXT_SET_ROW       in: A=y&lt;br /&gt;
  BB75 TXT_SET_CURSOR    in: H=x, L=y&lt;br /&gt;
  BB78 TXT_GET_CURSOR    out: H=x, L=y&lt;br /&gt;
  BB7B TXT_CUR_ENABLE&lt;br /&gt;
  BB7E TXT_CUR_DISABLE&lt;br /&gt;
  BB81 TXT_CUR_ON&lt;br /&gt;
  BB84 TXT_CUR_OFF&lt;br /&gt;
  BB87 TXT_VALIDATE      io: H=x, L=y, out: cy: 1=position ok, 0=scroll&lt;br /&gt;
  BB8A TXT_PLACE_CURSOR&lt;br /&gt;
  BB8D TXT_REMOVE_CURSOR&lt;br /&gt;
  BB90 TXT_SET_PEN       in: A=foreground color 0..15&lt;br /&gt;
  BB93 TXT_GET_PEN       out: A=foreground color 0..15&lt;br /&gt;
  BB96 TXT_SET_PAPER     in: A=background color 0..15&lt;br /&gt;
  BB99 TXT_GET_PAPER     out: A=background color 0..15&lt;br /&gt;
  BB9C TXT_INVERSE       exchange foreground and background colors&lt;br /&gt;
  BB9F TXT_SET_BACK      in: A=0=normal, A=1=transparent/OR&lt;br /&gt;
  BBA2 TXT_GET_BACK      out: Z=normal, NZ=transparent/OR&lt;br /&gt;
  BBA5 TXT_GET_MATRIX    in: A=char, out: HL=char bitmap ptr, cy:0=ROM,1=RAM&lt;br /&gt;
  BBA8 TXT_SET_MATRIX    in: A=char, HL=ptr to 8x8 char bitmap&lt;br /&gt;
  BBAB TXT_SET_M_TABLE   in: D=00h=RAM, E=1st char, HL=RAM chars, out: cy,A,HL&lt;br /&gt;
  BBAE TXT_GET_M_TABLE   out: cy=1=RAM, A=1st char, HL=RAM chars&lt;br /&gt;
  BBB1 TXT_GET_CONTROLS  out: HL=ptr to table of control characters&lt;br /&gt;
  BBB4 TXT_STR_SELECT    in: A=new window number, out: A=old (# 0..7)&lt;br /&gt;
  BBB7 TXT_SWAP_STREAMS  in: B,C=window numbers to be exchanged&lt;br /&gt;
&lt;br /&gt;
== Graphics Functions ==&lt;br /&gt;
  BBBA GRA_INITIALIZE&lt;br /&gt;
  BBBD GRA_RESET_HOOKS   ;out: [BDDC+00h..0Ah]=Default jump opcodes/addresses&lt;br /&gt;
  BBC0 GRA_MOVE_ABSOLUTE ;in: de=x, hl=y  ;\set current coordinate&lt;br /&gt;
  BBC3 GRA_MOVE_RELATIVE ;in: de=x, hl=y  ;/&lt;br /&gt;
  BBC6 GRA_ASK_CURSOR    ;out: de=x, hl=y ;-get current coordinate&lt;br /&gt;
  BBC9 GRA_SET_ORIGIN    ;in: de=x, hl=y (also does MOVE 0,0)&lt;br /&gt;
  BBCC GRA_GET_ORIGIN    ;out: de=x, hl=y&lt;br /&gt;
  BBCF GRA_SET_WIN_WIDTH ;in: de=x1/left, hl=x2/right&lt;br /&gt;
  BBD2 GRA_SET_WIN_HEIGHT;in: de=y1/top, hl=y2/bottom&lt;br /&gt;
  BBD5 GRA_GET_WIN_WIDTH ;out: de=x1/left, hl=x2/right&lt;br /&gt;
  BBD8 GRA_GET_WIN_HEIGHT;out: de=y1/top, hl=y2/bottom&lt;br /&gt;
  BBDB GRA_CLEAR_WINDOW  ;fill window by PAPER (also does MOVE 0,0)&lt;br /&gt;
  BBDE GRA_SET_PEN       ;in: A=color (0..15) for PLOT/LINE/WR_CHAR&lt;br /&gt;
  BBE1 GRA_GET_PEN       ;out: A=color (0..15)&lt;br /&gt;
  BBE4 GRA_SET_PAPER     ;in: A=color (0..15) for CLEAR_WINDOW/WR_CHAR&lt;br /&gt;
  BBE7 GRA_GET_PAPER     ;out: A=color (0..15&lt;br /&gt;
  BBEA GRA_PLOT_ABSOLUTE ;in: de=x, hl=y  ;\draw pixel at specified coordinate&lt;br /&gt;
  BBED GRA_PLOT_RELATIVE ;in: de=x, hl=y  ;/&lt;br /&gt;
  BBF0 GRA_TEST_ABSOLUTE ;in: de=x, hl=y, out: A=color (0..15) of pixel&lt;br /&gt;
  BBF3 GRA_TEST_RELATIVE ;in: de=x, hl=y, out: A=color (0..15) of pixel&lt;br /&gt;
  BBF6 GRA_LINE_ABSOLUTE ;in: de=x, hl=y  ;\draw line from current coordinate&lt;br /&gt;
  BBF9 GRA_LINE_RELATIVE ;in: de=x, hl=y  ;/to specified target coordinate&lt;br /&gt;
  BBFC GRA_WR_CHAR       ;in: A=char      ;-draw char at current coordinate&lt;br /&gt;
&lt;br /&gt;
== Screen Functions ==&lt;br /&gt;
  BBFF SCR_INITIALIZE&lt;br /&gt;
  BC02 SCR_RESET&lt;br /&gt;
  BC05 SCR_SET_OFFSET    ;in: HL.bit10..0 = vram offset 0..7FFh&lt;br /&gt;
  BC08 SCR_SET_BASE      ;in: A.bit7-6 = vram block 0..3&lt;br /&gt;
  BC0B SCR_GET_LOCATION  ;out: A.bit7-6=block, HL.bit10..0=offset&lt;br /&gt;
  BC0E SCR_SET_MODE      ;in: A=mode (0=160x200x16, 1=320x200x4, 2=640x200x2)&lt;br /&gt;
  BC11 SCR_GET_MODE      ;out: A=mode (cy=mode0, z=mode1, ie. cmp mode,1)&lt;br /&gt;
  BC14 SCR_MODE_CLEAR    ;clear vram, set offset=0000h, update inks&lt;br /&gt;
  BC17 SCR_CHAR_LIMITS   ;out: B=max_x(19,39,79), C=max_y(24)&lt;br /&gt;
  BC1A SCR_CHAR_POSITION ;in: H=x, L=y, out: HL=vram addr, B=bytes/char&lt;br /&gt;
  BC1D SCR_DOT_POSITION  ;in: DE=x, HL=y, out: HL=vram addr, C=mask, DE, B&lt;br /&gt;
  BC20 SCR_NEXT_BYTE     ;out: HL=HL+1 (wrapped within 800h-byte block)&lt;br /&gt;
  BC23 SCR_PREV_BYTE     ;out: HL=HL-1 (wrapped within 800h-byte block)&lt;br /&gt;
  BC26 SCR_NEXT_LINE     ;out: HL=HL+800h, or HL=HL+50h-3800h (or so)&lt;br /&gt;
  BC29 SCR_PREV_LINE     ;out: HL=HL-800h, or HL=HL-50h+3800h (or so)&lt;br /&gt;
  BC2C SCR_INK_ENCODE    ;in: A=color, out: A=color_mask&lt;br /&gt;
  BC2F SCR_INK_DECODE    ;in: A=color_mask, out: A=color&lt;br /&gt;
  BC32 SCR_SET_INK       ;in: A=index, B=color1, C=color2&lt;br /&gt;
  BC35 SCR_GET_INK       ;in: A=index, out: B=color1, C=color2&lt;br /&gt;
  BC38 SCR_SET_BORDER    ;in: B=color1, C=color2&lt;br /&gt;
  BC3B SCR_GET_BORDER    ;out: B=color1, C=color2&lt;br /&gt;
  BC3E SCR_SET_FLASHING  ;in: H=count1, L=count2&lt;br /&gt;
  BC41 SCR_GET_FLASHING  ;out: H=count1, L=count2&lt;br /&gt;
  BC44 SCR_FILL_BOX      ;in: A=fillbyte, H=x1, L=y1, D=x2, E=y2&lt;br /&gt;
  BC47 SCR_FLOOD_BOX     ;in: A=fillbyte, HL=vram addr, D=xsiz, E=ysiz&lt;br /&gt;
  BC4A SCR_CHAR_INVERT   ;in: H=x, L=y, B=paper, C=pen&lt;br /&gt;
  BC4D SCR_HARDWARE_ROLL ;in: A=paper, B=dir(0=down, FFh=up)&lt;br /&gt;
  BC50 SCR_SOFTWARE_ROLL ;in: A=paper, B=dir(&amp;quot;&amp;quot;), H=x1, L=y1, D=x2, E=y2&lt;br /&gt;
  BC53 SCR_UNPACK        ;in: HL=src, DE=dest (mono 8x8 char to colored 8x8)&lt;br /&gt;
  BC56 SCR_REPACK        ;in: H=x, L=y, A=pen, DE=dest (colored 8x8 to mono)&lt;br /&gt;
  BC59 SCR_ACCESS        ;in: A=drawmode (0=Normal, 1=XOR, 2=AND, 3=OR)&lt;br /&gt;
  BC5C SCR_PIXELS        ;in: HL=vram addr, C=xmask, B=color&lt;br /&gt;
  BC5F SCR_HORIZONTAL    ;in: A=pen, DE=x1, BC=x2, HL=y&lt;br /&gt;
  BC62 SCR_VERTICAL      ;in: A=pen, HL=y1, BC=y2, DE=x&lt;br /&gt;
&lt;br /&gt;
== Cassette (or Diskette) Functions ==&lt;br /&gt;
  BC65 CAS_INITIALIZE&lt;br /&gt;
  BC68 CAS_SET_SPEED     ;in: HL=upper16bit, A=lower8bit&lt;br /&gt;
  BC6B CAS_NOISY         ;in: A=output cassette messages (0=yes, &amp;gt;0=no)&lt;br /&gt;
  BC6E CAS_START_MOTOR   ;out: A.bit4 old motor status (0=off, 1=on), cy=0, z=1&lt;br /&gt;
  BC71 CAS_STOP_MOTOR    ;out: A.bit4 old motor status (0=off, 1=on), cy=0, z=1&lt;br /&gt;
  BC74 CAS_RESTORE_MOTOR ;in: A.bit4 new motor status (0=off, 1=on), cy=0, z=1&lt;br /&gt;
  BC77 CAS_IN_OPEN       ;in: HL=fname, B=fnamelen, DE=workbuf,&lt;br /&gt;
                         ;out: HL=header, DE=dest, BC=siz, A=type, cy=err, zf&lt;br /&gt;
  BC7A CAS_IN_CLOSE      ;out: DE=workbuf, cy=0=failed (no open file)&lt;br /&gt;
  BC7D CAS_IN_ABANDON    ;out: DE=workbuf, cy=1, z=0, A=all_closed (FFh=yes)&lt;br /&gt;
  BC80 CAS_IN_CHAR       ;out: A=char, cy=0=error, zf=errtype&lt;br /&gt;
  BC83 CAS_IN_DIRECT     ;in: HL=dest, out: HL=entrypoint, cy=0=err, zf=errtype&lt;br /&gt;
  BC86 CAS_RETURN        ;in: A=char (undo CAS_IN_CHAR, char back to buffer)&lt;br /&gt;
  BC89 CAS_TEST_EOF      ;out: CY=0=eof (end of file)&lt;br /&gt;
  BC8C CAS_OUT_OPEN      ;in: HL=fname, B=fnamelen, DE=workbuf, out: HL,cy,zf&lt;br /&gt;
  BC8F CAS_OUT_CLOSE     ;out: DE=workbuf, cy=0=failed (zf=errtype)&lt;br /&gt;
  BC92 CAS_OUT_ABANDON   ;out: DE=workbuf, cy=1, z=0, A=all_closed (FFh=yes)&lt;br /&gt;
  BC95 CAS_OUT_CHAR      ;in: A=char, out: cy=0=error, zf=errtype&lt;br /&gt;
  BC98 CAS_OUT_DIRECT    ;in: HL=src, DE=len, BC=entrypoint, A=type, out: cy/zf&lt;br /&gt;
  BC9B CAS_CATALOG       ;in: DE=workbuf, out: DE=workbuf, cy=0=error&lt;br /&gt;
  BC9E CAS_WRITE         ;in: HL=src, DE=len, A=ID(2Ch=header, 16h=data), out?&lt;br /&gt;
  BCA1 CAS_READ          ;in: HL=dest, DE=len, A=ID(2Ch=header, 16h=data), out?&lt;br /&gt;
  BCA4 CAS_CHECK         ;in: HL=src, DE=len, A=ID(2Ch=header, 16h=data), out?&lt;br /&gt;
&lt;br /&gt;
== Sound Functions ==&lt;br /&gt;
  BCA7 SOUND_RESET&lt;br /&gt;
  BCAA SOUND_QUEUE     ;in: HL=dat ;ch,env,ent,freq(lo,hi,noise),vol,len(lo,hi)&lt;br /&gt;
  BCAD SOUND_CHECK     ;in: A=channel mask, out: A=channel status&lt;br /&gt;
  BCB0 SOUND_ARM_EVENT&lt;br /&gt;
  BCB3 SOUND_RELEASE   ;in: A=channel mask&lt;br /&gt;
  BCB6 SOUND_PAUSE&lt;br /&gt;
  BCB9 SOUND_UNPAUSE&lt;br /&gt;
  BCBC SOUND_SET_ENV   ;in: A=number (1..15), HL=data (must be &amp;gt;3FFFh)&lt;br /&gt;
  BCBF SOUND_SET_ENT   ;in: A=number (1..15), HL=data (must be &amp;gt;3FFFh)&lt;br /&gt;
  BCC2 SOUND_GET_ENV   ;in: A=number (1..15), out: HL=data&lt;br /&gt;
  BCC5 SOUND_GET_ENT   ;in: A=number (1..15), out: HL=data&lt;br /&gt;
&lt;br /&gt;
== Kernel ROM Functions ==&lt;br /&gt;
  BCC8 KL_CHOKE_OFF&lt;br /&gt;
  BCCB KL_ROM_WALK&lt;br /&gt;
  BCCE KL_INIT_BACK&lt;br /&gt;
  BCD1 KL_LOG_EXT&lt;br /&gt;
  BCD4 KL_FIND_COMMAND&lt;br /&gt;
&lt;br /&gt;
== Kernel Timer/Event Functions ==&lt;br /&gt;
  BCD7 KL_NEW_FRAME_FLY&lt;br /&gt;
  BCDA KL_ADD_FRAME_FLY&lt;br /&gt;
  BCDD KL_DELETE_FRAME_FLY&lt;br /&gt;
  BCE0 KL_NEW_FAST_TICKER&lt;br /&gt;
  BCE3 KL_ADD_FAST_TICKER&lt;br /&gt;
  BCE6 KL_DELETE_FAST_TICKER&lt;br /&gt;
  BCE9 KL_ADD_TICKER&lt;br /&gt;
  BCEC KL_DELETE_TICKER&lt;br /&gt;
  BCEF KL_INIT_EVENT&lt;br /&gt;
  BCF2 KL_EVENT&lt;br /&gt;
  BCF5 KL_SYNC_RESET&lt;br /&gt;
  BCF8 KL_DEL_SYNCHRONOUS&lt;br /&gt;
  BCFB KL_NEXT_SYNC&lt;br /&gt;
  BCFE KL_DO_SYNC&lt;br /&gt;
  BD01 KL_DONE_SYNC&lt;br /&gt;
  BD04 KL_EVENT_DISABLE&lt;br /&gt;
  BD07 KL_EVENT_ENABLE&lt;br /&gt;
  BD0A KL_DISARM_EVENT&lt;br /&gt;
  BD0D KL_TIME_PLEASE     ;out: hl=low, de=high (64bit, incremented at 300Hz)&lt;br /&gt;
  BD10 KL_TIME_SET        ;in:  hl=low, de=high (64bit, incremented at 300Hz)&lt;br /&gt;
&lt;br /&gt;
== Machine Pack ==&lt;br /&gt;
  BD13 MC_BOOT_PROGRAM    ;in: HL=loader_callback, out: starts program&lt;br /&gt;
  BD16 MC_START_PROGRAM   ;in: HL=entrypoint (0000h=BASIC), C=ROMcfg&lt;br /&gt;
  BD19 MC_WAIT_FLYBACK    ;wait until/unless PIO.Port B bit0=1 (vsync)&lt;br /&gt;
  BD1C MC_SET_MODE        ;in: A=video mode (0..2) (for C' and gate array)&lt;br /&gt;
  BD1F MC_SCREEN_OFFSET   ;in: A=base, HL=offset   (for CRTC)&lt;br /&gt;
  BD22 MC_CLEAR_INKS      ;in: DE=ptr to border and 1 ink&lt;br /&gt;
  BD25 MC_SET_INKS        ;in: DE=ptr to border and 16 inks&lt;br /&gt;
  BD28 MC_RESET_PRINTER   ;out: [BDF1]=default jp opcode&lt;br /&gt;
  BD2B MC_PRINT_CHAR      ;in: A=char, out: CY=1=okay, CY=0=busy/timeout&lt;br /&gt;
  BD2E MC_BUSY_PRINTER    ;out: CY=1=busy, CY=0=ready&lt;br /&gt;
  BD31 MC_SEND_PRINTER    ;in: A=char, out: CY=1&lt;br /&gt;
  BD34 MC_SOUND_REGISTER  ;in: A=PSG index, C=PSG data&lt;br /&gt;
  BD37 JUMP_RESTORE       ;out: [BB00..BDCC]=defaults&lt;br /&gt;
&lt;br /&gt;
== Edit and Floating Point Functions (Addresses changed in each version) ==&lt;br /&gt;
  464  664  6128&lt;br /&gt;
  BD3A BD5B BD5E EDIT  ;io: HL=input buffer, out: CY=0=ESC (also Z=1=ESC)&lt;br /&gt;
  BD3D BD5E BD61 FLO_COPY [HL]=[DE], A=exponent&lt;br /&gt;
  BD40 BD61 BD64 FLO_int to real  ;DE=dest, HL=unsigned16bit, A.7=sign&lt;br /&gt;
  BD43 BD64 BD67 FLO_ 4-byte to real&lt;br /&gt;
  BD46 BD67 BD6A FLO_ real to int&lt;br /&gt;
  BD49 BD6A BD6D FLO_ round&lt;br /&gt;
  BD4C BD6D BD70 FLO_ FIX&lt;br /&gt;
  BD4F BD70 BD73 FLO_ INT&lt;br /&gt;
  BD52 BD73 BD76 FLO_ prepare for decimal&lt;br /&gt;
  BD55 BD76 BD79 FLO_ mul 10^A&lt;br /&gt;
  BD58 BD79 BD7C FLO_ ADD [HL]=[HL]+[DE]&lt;br /&gt;
  BD5B N/A  N/A  FLO_SUB1  [HL]=[HL]-[DE]&lt;br /&gt;
  BD5E BD7F BD82 FLO_SUB2  [HL]=[DE]-[HL] (swapped operands)&lt;br /&gt;
  BD61 BD82 BD85 FLO_MUL   [HL]=[HL]*[DE]&lt;br /&gt;
  BD64 BD85 BD88 FLO_DIV   [HL]=[HL]/[DE]&lt;br /&gt;
  BD67 N/A  N/A  FLO_SHIFT [HL]=[HL]*2^A&lt;br /&gt;
  BD6A BD8B BD8E FLO_COMPARE [HL]-[DE]&lt;br /&gt;
  BD6D BD8E BD91 FLO_NEG&lt;br /&gt;
  BD70 BD91 BD94 FLO_SGN&lt;br /&gt;
  BD73 BD94 BD97 FLO_DEG/RAD  ;in: A=00h=RAD, FFh=DEG&lt;br /&gt;
  BD76 BD97 BD9A FLO_PI    [HL]=PI&lt;br /&gt;
  BD79 BD9A BD9D FLO_SQRT  [HL]=[HL]^0.5&lt;br /&gt;
  BD7C BD9D BDA0 FLO_POT   [HL]=[HL]^[DE]&lt;br /&gt;
  BD7F BDA0 BDA3 FLO_LOG   [HL]=LOG([HL])&lt;br /&gt;
  BD82 BDA3 BDA6 FLO_LOG10 [HL]=LOG10([HL])&lt;br /&gt;
  BD85 BDA6 BDA9 FLO_EXP   [HL]=EXP([HL])&lt;br /&gt;
  BD88 BDA9 BDAC FLO_SIN   [HL]=SIN([HL])&lt;br /&gt;
  BD8B BDAC BDAF FLO_COS   [HL]=COS([HL])&lt;br /&gt;
  BD8E BDAF BDB2 FLO_TAN   [HL]=TAN([HL])&lt;br /&gt;
  BD91 BDB2 BDB5 FLO_ATN   [HL]=ATN([HL])&lt;br /&gt;
  BD94 BDB5 BDB8 FLO_5-byte to REAL&lt;br /&gt;
  BD97 BDB8 BDBB FLO_RND_INIT        ;seed=89656C07h&lt;br /&gt;
  BD9A BDBB BDBE FLO_RND_SEED        ;seed=89656C07h xor [HL]&lt;br /&gt;
  BD9D BD7C BD7F FLO_RND              ;\on 664/6128 these are &amp;quot;inserted&amp;quot;&lt;br /&gt;
  BDA0 BD88 BD8B FLO_RND last value   ;/in the above &amp;quot;N/A&amp;quot; locations&lt;br /&gt;
&lt;br /&gt;
== Integer Functions - 464 only (moved/replaced by other stuff on 664 and up) ==&lt;br /&gt;
  464  664  6128&lt;br /&gt;
  BDA3 N/A  N/A  INT_ABS  HL=ABS(HL), B.7=SIGN(HL), C=2=Mantisse, E=0=Int&lt;br /&gt;
  BDA6 N/A  N/A  INT_POS  HL=HL, B.7=0=Positive, C=2=Mantisse, E=0=Int&lt;br /&gt;
  BDA9 N/A  N/A  INT_UNDO in: HL=unsigned, B.7=sign, out: HL=signed, cy,zf&lt;br /&gt;
  BDAC N/A  N/A  INT_ADD  HL=HL+DE, Z=1=zero, CY=1=signed_overflow&lt;br /&gt;
  BDAF N/A  N/A  INT_SUB1 HL=HL-DE, Z=1=zero, CY=0=signed_overflow&lt;br /&gt;
  BDB2 N/A  N/A  INT_SUB2 HL=DE-HL, Z=1=zero, CY=0=signed_overflow&lt;br /&gt;
  BDB5 N/A  N/A  INT_MUL  HL=HL*DE&lt;br /&gt;
  BDB8 N/A  N/A  INT_DIV  HL=HL/DE&lt;br /&gt;
  BDBB N/A  N/A  INT_MOD  HL=HL MOD DE&lt;br /&gt;
  BDBE N/A  N/A  INT_UMUL HL=HL*DE, CY=1=unsigned_overflow&lt;br /&gt;
  BDC1 N/A  N/A  INT_UDIV HL=HL/DE, DE=HL MOD DE, Z=1=error (div0)&lt;br /&gt;
  BDC4 N/A  N/A  INT_CMP  A=SGN(HL-DE) ;00h=zero, 01h=pos, FFh=neg&lt;br /&gt;
  BDC7 N/A  N/A  INT_NEG  HL=-HL       ;cy=0=overflow (HL=+8000h)&lt;br /&gt;
  BDCA N/A  N/A  INT_SGN  A=SGN(HL)    ;00h=zero, 01h=pos, FFh=neg&lt;br /&gt;
&lt;br /&gt;
== Additional 664/6128 Functions ==&lt;br /&gt;
664 and up only...&lt;br /&gt;
  BD3A KM_SET_LOCKS_664 ;in: H=caps lock (caps), L=shift lock (ctrl caps)&lt;br /&gt;
  BD3D KM_FLUSH_664     ;calls KM_READ_CHAR until cy=0&lt;br /&gt;
  BD40 TXT_ASK_STATE_664&lt;br /&gt;
  BD43 GRA_DEFAULT_664       ;SCR_WRITE=?, BACK=00h,FIRST=FFh,MASK=FFh&lt;br /&gt;
  BD46 GRA_SET_BACK_664      ;A=background mode (FFh=transparent)&lt;br /&gt;
  BD49 GRA_SET_FIRST_664     ;in: A=flag (00h,FFh;1st pix of LINE)&lt;br /&gt;
  BD4C GRA_SET_LINE_MASK_664 ;in: A=mask&lt;br /&gt;
  BD4F GRA_FROM_USER_664     ;in: de=x, hl=y, out: de,hl=real x,y&lt;br /&gt;
  BD52 GRA_FILL_664          ;in: A=color,hl=buf,de=bufsize, out:cy=0=err&lt;br /&gt;
  BD55 SCR_SET_POSITION_664  ;in: A=BASE,HL=OFFSET, out: A AND C0h, HL AND 7FEh&lt;br /&gt;
  BD58 MC_PRINT_TRANSLATION_664&lt;br /&gt;
6128 and up only...&lt;br /&gt;
  BD5B KL_RAM_SELECT_6128  --6128 only--&lt;br /&gt;
&lt;br /&gt;
== Indirections (List of JUMPs into BIOS area -- LO ROM must be enabled!) ==&lt;br /&gt;
  BDCD HOOK_TXT_DRAW_CURSOR&lt;br /&gt;
  BDD0 HOOK_TXT_UNDRAW_CURSOR&lt;br /&gt;
  BDD3 HOOK_TXT_WRITE_CHAR    ;in: H=x, L=y, A=char&lt;br /&gt;
  BDD6 HOOK_TXT_UNWRITE       ;in: H=x, L=y, out: A=char, Z=space, cy=1=okay&lt;br /&gt;
  BDD9 HOOK_TXT_OUT_ACTION    ;in: A=char&lt;br /&gt;
  BDDC HOOK_GRA_PLOT          ;in: de=x, hl=y&lt;br /&gt;
  BDDF HOOK_GRA_TEST          ;in: de=x, hl=y, out: A=color&lt;br /&gt;
  BDE2 HOOK_GRA_LINE          ;in: de=x, hl=y&lt;br /&gt;
  BDE5 HOOK_SCR_READ          ;in: HL=vram addr, C=xmask, out: A=color&lt;br /&gt;
  BDE8 HOOK_SCR_WRITE         ;in: HL=vram addr, C=xmask, B=color&lt;br /&gt;
  BDEB HOOK_SCR_MODE_CLEAR    ;clear vram, etc. (same as BC14)&lt;br /&gt;
  BDEE HOOK_KM_TEST_BREAK&lt;br /&gt;
  BDF1 HOOK_MC_PRINT_CHAR     ;in: A=char, out: CY=1=okay, CY=0=busy/timeout&lt;br /&gt;
664 and up only:&lt;br /&gt;
  BDF4 HOOK_KM_SCAN_KEYS_664&lt;br /&gt;
&lt;br /&gt;
== RSX Functions (Resident System Extensions) ==&lt;br /&gt;
  C000 (ROM Header)&lt;br /&gt;
  C004 Pointer to RSX Function Names ;Names end with bit7=1, list ends with 00h&lt;br /&gt;
  C006 List of 16bit RSX Function Addresses&lt;br /&gt;
Note: RSX function 3-byte FAR addresses can be retrieved via KL_FIND_COMMAND.&lt;br /&gt;
&lt;br /&gt;
== BASIC RSX Functions ==&lt;br /&gt;
  ;RSX Name: &amp;quot;BASIC&amp;quot;+80h ;io: DE=LORAM, HL=HIRAM&lt;br /&gt;
&lt;br /&gt;
== AMSDOS RSX Functions ==&lt;br /&gt;
  CPM           ;in: A=00h (no params) ;start boot sector&lt;br /&gt;
  DISC          ;in: A=00h (no params)&lt;br /&gt;
  DISC.IN       ;in: A=00h (no params) ;not supported by CPC+&lt;br /&gt;
  DISC.OUT      ;in: A=00h (no params) ;not supported by CPC+&lt;br /&gt;
  TAPE          ;in: A=00h (no params) ;not supported by VDOS&lt;br /&gt;
  TAPE.IN       ;in: A=00h (no params) ;not supported by VDOS and CPC+&lt;br /&gt;
  TAPE.OUT      ;in: A=00h (no params) ;not supported by VDOS and CPC+&lt;br /&gt;
  A             ;in: A=00h (no params) ;set default drive = A&lt;br /&gt;
  B             ;in: A=00h (no params) ;set default drive = B&lt;br /&gt;
  DRIVE         ;in: A=01h, [IX+0]=ptr to &amp;quot;A&amp;quot;,&amp;quot;a&amp;quot;,&amp;quot;B&amp;quot;,&amp;quot;b&amp;quot;     ;\not supported&lt;br /&gt;
  USER          ;in: A=01h, [IX+0]=user number (0000h..000Fh) ;/by VDOS&lt;br /&gt;
  DIR           ;in: A=00h, or A=01h, [IX+0]=ptr to &amp;quot;filename&amp;quot;&lt;br /&gt;
  ERA           ;in: A=01h, [IX+0]=ptr to &amp;quot;filename&amp;quot;&lt;br /&gt;
  REN           ;in: A=02h, [IX+0]=ptr to &amp;quot;oldname&amp;quot;,[IX+2]=to &amp;quot;newname&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== AMSDOS Hidden RSX Functions ==&lt;br /&gt;
  [C006h]  INIT             ;in/out: DE=LORAM, HL=HIRAM, CY=?&lt;br /&gt;
  chr(81h) MESSAGE_ON_OFF   ;in: A=flag(00h=on, &amp;gt;=01h=off) (R,I,C) ;out:A=old&lt;br /&gt;
  chr(82h) SET_DRIVE_SPEED  ;in: HL=ptr to 9 bytes&lt;br /&gt;
  chr(83h) SET_DISK_TYPE    ;in: A=type (0xh=IBM, 4xh=CPM, Cxh=DATA)&lt;br /&gt;
  chr(84h) READ_SECTOR      ;in: E=drv, D=trk, C=sec, HL=dest&lt;br /&gt;
  chr(85h) WRITE_SECTOR     ;in: E=drv, D=trk, C=sec, HL=src&lt;br /&gt;
  chr(86h) FORMAT_TRACK     ;in: E=drv, D=trk, C=sec1, HL=ptr to 9x4 byte&lt;br /&gt;
  chr(87h) SEEK_TRACK       ;in: E=drv, D=trk, out: cy=1=okay&lt;br /&gt;
  chr(88h) TEST_DRIVE       ;in: A=drv, out: cy=1=okay&lt;br /&gt;
  chr(89h) SET_RETRY_COUNT  ;in: A=retry count (default=10) (01h..(1)00h)&lt;/div&gt;</summary>
		<author><name>Nocash</name></author>	</entry>

	</feed>