<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wikiti.brandonw.net/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wikiti.brandonw.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=130.215.239.90</id>
		<title>WikiTI - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wikiti.brandonw.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=130.215.239.90"/>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Special:Contributions/130.215.239.90"/>
		<updated>2026-04-05T19:40:51Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.5</generator>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:83Plus:Ports:By_Address:Protected</id>
		<title>Category:83Plus:Ports:By Address:Protected</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:83Plus:Ports:By_Address:Protected"/>
				<updated>2006-01-28T19:35:25Z</updated>
		
		<summary type="html">&lt;p&gt;130.215.239.90: /* Protected Ports */ alternatives to nop&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By_Address|Protected Ports]]&lt;br /&gt;
== Protected Ports ==&lt;br /&gt;
Some of the I/O ports on the 83+ have been &amp;quot;protected&amp;quot; to prevent them from being written accidentally (in addition to preventing user programs from writing to them.)&lt;br /&gt;
&lt;br /&gt;
The following restrictions are believed to apply to all protected ports:&lt;br /&gt;
&lt;br /&gt;
* These ports can only be written to from privileged ROM pages. The privileged ROM pages are two utility code pages and one or two boot code pages. On the normal 83+ the pages are 1Ch, 1Dh, and 1Fh. On the normal 84+ the pages are 3Ch, 3Dh, and 3Fh. On the 83+ SE the pages are 7Ch, 7Dh, and 7Fh. On the 84+ SE the pages are 6Fh, 7Ch, 7Dh, and 7Fh.  (Pages 3C-3E/6C-6E on the 84+, and page 1E/3E/7E, may also qualify, but no code is currently placed on those pages.)&lt;br /&gt;
&lt;br /&gt;
* A specific sequence of instructions must be executed (all of them from a privileged page, with no interruptions) before the port will finally &amp;quot;listen.&amp;quot; The sequence is:&lt;br /&gt;
 nop&lt;br /&gt;
 nop&lt;br /&gt;
 im 1&lt;br /&gt;
 di&lt;br /&gt;
 out (...),a&lt;br /&gt;
: A 'di' often precedes this sequence so that it cannot be broken by an interrupt, and a 'di' often follows it, after which the output value is re-checked, to prevent user programs from sneakily inserting their own output values.&lt;br /&gt;
: Because the hardware only checks what bytes are read, and whether they are read from a privileged page, but not whether they are actually executed, certain variants on this sequence are also permissible; for example:&lt;br /&gt;
 ld hl,0&lt;br /&gt;
 im 1&lt;br /&gt;
 di&lt;br /&gt;
 out (...),a&lt;br /&gt;
&lt;br /&gt;
 ld hl,(word_0000) ; where word_0000 is the address of two zero&lt;br /&gt;
                   ; bytes stored on a privileged page&lt;br /&gt;
 im 1&lt;br /&gt;
 di&lt;br /&gt;
 out (...),a&lt;br /&gt;
&lt;br /&gt;
 ld ix,byte_ed ; where byte_ed is the address of an ED byte&lt;br /&gt;
 ld hl,byte_f3 ; and byte_f3 is the address of an F3 byte&lt;br /&gt;
               ; both stored on a privileged page&lt;br /&gt;
 rlc b,(ix+0)&lt;br /&gt;
 ld d,(hl)&lt;br /&gt;
 out (...),a&lt;br /&gt;
: The last works because the opcode for RLC B,(IX+0) is DD CB 00 00, the byte read from (ix) is ED, then the opcode for LD D,(HL) is 56, and the byte read from (hl) is F3.  This could be useful since it allows protected ports to be written without destroying the interrupt mode.&lt;br /&gt;
&lt;br /&gt;
The canonical protected port is, of course, the Flash write-enable port, [[83Plus:Ports:14|port 14]].  Some of the other protected ports also appear to function only when Flash is write-enabled.&lt;/div&gt;</summary>
		<author><name>130.215.239.90</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Basic:While</id>
		<title>83Plus:Basic:While</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Basic:While"/>
				<updated>2005-12-10T00:49:20Z</updated>
		
		<summary type="html">&lt;p&gt;130.215.239.90: unicoded&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Basic:Conditionals|While]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Token Size:''' 1 byte&lt;br /&gt;
&lt;br /&gt;
'''Syntax:'''&lt;br /&gt;
:While ''condition''&lt;br /&gt;
:''command''&lt;br /&gt;
:End&lt;br /&gt;
&lt;br /&gt;
The while command is used to execute a command or series of commands when a variable shares a given relationship with another variable or a value. A ''While'' command will continue to execute everything before the next ''End'' until the given condition is no longer met.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
Use of a Goto statement within an While statement will cause an increase in memory allocation, leading to program slowdowns and eventually a MEMORY error. For example, the following code will eventually cause an error:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
Lbl 0&lt;br /&gt;
While X=1&lt;br /&gt;
X+1â†’X&lt;br /&gt;
Disp X&lt;br /&gt;
Goto 0&lt;br /&gt;
End&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you must use a Goto within an While statement, it is possible to trick the 83+ into thinking the block ended by jumping to an otherwise unused label that uses an End statement followed by a jump to the proper label. For example, the above program could be rewritten like so:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;0â†’X&lt;br /&gt;
Lbl 0&lt;br /&gt;
While X=1&lt;br /&gt;
X+1â†’X&lt;br /&gt;
Disp X&lt;br /&gt;
Goto 2&lt;br /&gt;
End&lt;br /&gt;
Return&lt;br /&gt;
&lt;br /&gt;
Lbl 2&lt;br /&gt;
End&lt;br /&gt;
Goto 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would avoid the problem by causing the 83+ to terminate the While conditional prior to jumping.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
While Gâ‰ 105&lt;br /&gt;
getKeyâ†’G&lt;br /&gt;
End&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Or, if you desire the use of other operators, such as And, Or, or Xor:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
While X=5 and Yâ‰ 3&lt;br /&gt;
Input &amp;quot;&amp;quot;,A&lt;br /&gt;
A+Xâ†’Y&lt;br /&gt;
End&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>130.215.239.90</name></author>	</entry>

	</feed>