<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://www.computercraft.info/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Immibis</id>
		<title>ComputerCraft Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://www.computercraft.info/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Immibis"/>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/Special:Contributions/Immibis"/>
		<updated>2026-07-11T07:39:56Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Term_(API)&amp;diff=6079</id>
		<title>Term (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Term_(API)&amp;diff=6079"/>
				<updated>2013-12-29T19:24:07Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: fix getCursorPos return type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Terminal API provides functions for writing text to the terminal and monitors, and drawing ASCII graphics.&lt;br /&gt;
&lt;br /&gt;
Methods in ''italics'' are available only to [[Advanced Computer|Advanced Computers]] and [[Advanced Monitor|Advanced Monitors]].&lt;br /&gt;
Methods in '''bold''' are available only to [[Monitor|Monitors]].&lt;br /&gt;
&lt;br /&gt;
{{API table|Term|image=Grid disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.write]]({{type|string}} text)|{{type|nil}}&lt;br /&gt;
|Writes ''text'' to the screen.|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.clear]]()|{{type|nil}}&lt;br /&gt;
|Clears the entire screen}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.clearLine]]()|{{type|nil}}&lt;br /&gt;
|Clears the line the cursor is on|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.getCursorPos]]()|{{type|number}} x, {{type|number}} y&lt;br /&gt;
|Returns two arguments containing the x and the y position of the cursor.}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.setCursorPos]]({{type|number}} x, {{type|number}} y)|{{type|nil}}&lt;br /&gt;
|Sets the cursor's position.|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.setCursorBlink]]({{type|boolean}} bool)|{{type|nil}}&lt;br /&gt;
|Disables the blinking or turns it on.}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.isColor]]()|{{type|boolean}}&lt;br /&gt;
|Returns if the computer supports color. (Used to determine whether or not an [[Advanced Computer]] is being used)|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.getSize]]()|{{type|number}} x, {{type|number}} y&lt;br /&gt;
|Returns two arguments containing the x and the y values stating the size of the screen. (Good for if you're making something to be compatible with both [[Turtle]]s and [[Computer]]s.)}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.scroll]]({{type|number}} n)|{{type|nil}}&lt;br /&gt;
|Scrolls the terminal ''n'' lines.|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.redirect]](target)|{{type|nil}}&lt;br /&gt;
|Redirects terminal output to a monitor or other redirect target. (Use [[peripheral.wrap]] to acquire a monitor &amp;quot;object&amp;quot;.)}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.restore]]()|{{type|nil}}&lt;br /&gt;
|Restores terminal output to the previous target.|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|''[[term.setTextColor]]({{type|number}} [[Colors (API)|color]])''|{{type|nil}}&lt;br /&gt;
|Sets the text color of the terminal. Available only to [[Advanced Computer|Advanced Computers]] and [[Advanced Monitor]]s.}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|''[[term.setBackgroundColor]]({{type|number}} [[Colors (API)#Colors|color]])''|{{type|nil}}&lt;br /&gt;
|Sets the background color of the terminal. Available only to [[Advanced Computer|Advanced Computers]] and [[Advanced Monitor]]s.|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|'''[[monitor.setTextScale]]({{type|number}} scale)'''|{{type|nil}}&lt;br /&gt;
|Sets the text scale on a [[Monitor]].}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Parallel_(API)&amp;diff=6004</id>
		<title>Parallel (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Parallel_(API)&amp;diff=6004"/>
				<updated>2013-09-14T21:50:03Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: use API table template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Parallel is an API which allows you to multitask.&lt;br /&gt;
&lt;br /&gt;
{{API table|Parallel|image=Grid disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[parallel.waitForAny]](function1, function2, ...)|{{type|nil}}&lt;br /&gt;
|Runs all the functions at the same time, and stops when any of them returns.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[parallel.waitForAll]](function1, function2, ...)|{{type|nil}}&lt;br /&gt;
|Runs all the functions at the same time, and stops when all of them have returned.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Paintutils_(API)&amp;diff=6003</id>
		<title>Paintutils (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Paintutils_(API)&amp;diff=6003"/>
				<updated>2013-09-14T21:48:49Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: use API table template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Paintutils is a default API for advanced computers which can draw pixels and lines, and load and draw image files.&lt;br /&gt;
&lt;br /&gt;
{{API table|Paintutils|image=Grid disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[paintutils.loadImage]]({{type|string}} path)|{{type|table}} image&lt;br /&gt;
|Returns an image object from &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[paintutils.drawImage]]({{type|table}} image, {{type|number}} x, {{type|number}} y)|{{type|nil}}&lt;br /&gt;
|Draws an image at (&amp;lt;var&amp;gt;x&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;y&amp;lt;/var&amp;gt;) where &amp;lt;var&amp;gt;image&amp;lt;/var&amp;gt; is an image object.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[paintutils.drawPixel]]({{type|number}} x, {{type|number}} y, {{type|number}} colour)|{{type|nil}}&lt;br /&gt;
|Draws a pixel at (&amp;lt;var&amp;gt;x&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;y&amp;lt;/var&amp;gt;) in the specified &amp;lt;var&amp;gt;colour&amp;lt;/var&amp;gt;.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[paintutils.drawLine]]({{type|number}} startX, {{type|number}} startY, {{type|number}} endX, {{type|number}} endY, {{type|number}} color)|{{type|nil}}&lt;br /&gt;
|Draws a line from (&amp;lt;var&amp;gt;startX&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;startY&amp;lt;/var&amp;gt;) to (&amp;lt;var&amp;gt;endX&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;endY&amp;lt;/var&amp;gt;) in the specified &amp;lt;var&amp;gt;colour&amp;lt;/var&amp;gt;.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=OS_(API)&amp;diff=6002</id>
		<title>OS (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=OS_(API)&amp;diff=6002"/>
				<updated>2013-09-14T21:45:36Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: fixed caps&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Operating System API allows for interfacing with the Lua based Operating System itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{API table|Os|image=Grid disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.version]]()|{{type|string}} version&lt;br /&gt;
|Returns the version of the OS the computer is running, which (for CraftOS) also contains the version of ComputerCraft.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.getComputerID]]()|{{type|number}} id&lt;br /&gt;
|Returns the unique ID of this computer. [[os.computerID]]() also behaves exactly the same as [[os.getComputerID]]().&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.getComputerLabel]]()|{{type|string}} label&lt;br /&gt;
|Returns the label of this computer. [[os.computerLabel]]() also behaves exactly the same as [[os.getComputerLabel]](). &amp;lt;!-- what does it return if there's no label? --&amp;gt;&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.setComputerLabel]]({{type|string}} label)|{{type|nil}}&lt;br /&gt;
|Set the label of this computer.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.run]]({{type|table}} environment, {{type|string}} program path [, {{type|string}} arguments])|{{type|nil}}&lt;br /&gt;
|An advanced way of starting programs. A started program will have a given &amp;lt;var&amp;gt;environment&amp;lt;/var&amp;gt; table which determines what functions it has available, as well as any variables it will be able to access by default. You may prefer to use the [[Shell (API)]] unless you need to do something special.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[#APIs|os.loadAPI]]({{type|string}} name)|{{type|nil}}&lt;br /&gt;
|Loads a Lua script as an API in its own namespace (see example). It will be available to '''all''' programs that run on the terminal.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[#APIs|os.unloadAPI]]({{type|string}} name)|{{type|nil}}&lt;br /&gt;
|Unloads a previously loaded API.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[Os.pullEvent|os.pullEvent]]({{type|string}}/{{type|nil}} target-event)|any&lt;br /&gt;
|Blocks until the computer receives an event, or if &amp;lt;var&amp;gt;target-event&amp;lt;/var&amp;gt; is specified, will block until an instance of &amp;lt;var&amp;gt;target-event&amp;lt;/var&amp;gt; occurs. [[Os.pullEvent|os.pullEvent]](target-event) returns the event and any parameters the event may have. If a &amp;lt;var&amp;gt;target-event&amp;lt;/var&amp;gt; is specified, the computer will not break for any other events (except termination).&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[#pullEvent|os.pullEventRaw]]()|any&lt;br /&gt;
|Advanced version of pullEvent(). [[#pullEvent|os.pullEventRaw]]() will block until an event occurs, and then returns the event (any any parameters the event may have). Unlike [[Os.pullEvent|os.pullEvent]](target-event), this function will not raise an error if a 'terminate' event is received.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.queueEvent]]({{type|string}} event, param1, param2, ...)|{{type|nil}}&lt;br /&gt;
|Adds an event to the event queue with the name &amp;lt;var&amp;gt;event&amp;lt;/var&amp;gt; and the given parameters&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.clock]]()|{{type|number}} time&lt;br /&gt;
|Returns the amount of time since the computer was started.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.startTimer]]({{Type|number}} timeout)|{{type|number}} timerID&lt;br /&gt;
|Queues an event to be triggered after a number of seconds (&amp;lt;var&amp;gt;timeout&amp;lt;/var&amp;gt;). The ID of the timer is returned from this function to differentiate multiple timers. Timers are one-shot; once they have fired an event you will need to start another one if you need a recurring timer.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.time]]()|{{type|number}} time&lt;br /&gt;
|Returns the current in-game time.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.sleep]]({{Type|number}} time)|{{type|nil}}&lt;br /&gt;
|Makes the system wait a number of seconds before continuing in the program. [[os.sleep]](time) may also be used as simply &amp;quot;sleep(time)&amp;quot;.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.day]]()|{{type|number}} day&lt;br /&gt;
|Return the current in-game day (the number of days since the world was created).&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.setAlarm]]({{type|number}} time)|{{type|number}} alarmID&lt;br /&gt;
|Queues an event to be triggered at the specified in-game &amp;lt;var&amp;gt;time&amp;lt;/var&amp;gt;.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.shutdown]]()|{{type|nil}}&lt;br /&gt;
|Turns off the computer.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.reboot]]()|{{type|nil}}&lt;br /&gt;
|Reboots the computer.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;br /&gt;
&lt;br /&gt;
== APIs ==&lt;br /&gt;
&lt;br /&gt;
APIs are Lua files which are loaded into the OS itself, and expose functions which other programs may use. The stock [[:Category:APIs|APIs]] that ship with ComputerCraft are loaded in this way, and may be replaced by a computer’s user or programs.&lt;br /&gt;
&lt;br /&gt;
The following is an example of a valid implementation of an API, and its usage after being registered:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  -- &amp;quot;apiTest&amp;quot; file&lt;br /&gt;
  function foo(bar)&lt;br /&gt;
    print(bar)&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  -- &amp;quot;program&amp;quot; file&lt;br /&gt;
  os.loadAPI(&amp;quot;apiTest&amp;quot;)&lt;br /&gt;
  apiTest.foo(&amp;quot;this is a test&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;div id=&amp;quot;pullEvent&amp;quot;&amp;gt;os.pullEvent()&amp;lt;/div&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
os.pullEvent() causes the current program to pause, retrieving the next event from the computer's queue of events. If there is no event to read, then the program will stall until such an event becomes available. Note that if a program has not attempted to pull an event in the past ten seconds, it will be forcefully terminated to prevent CPU waste in SMP environments.&lt;br /&gt;
&lt;br /&gt;
os.pullEvent() returns the name of the event that was read, as well as up to five parameters:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
local event, p1, p2, p3, p4, p5 = os.pullEvent()&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
os.pullEvent() is usually run inside a 'while true do' loop.&lt;br /&gt;
&lt;br /&gt;
An advanced version of this method &amp;lt;code&amp;gt;os.pullEventRaw&amp;lt;/code&amp;gt; bypasses the normal handling of events from the OS. You may use this to act on the &amp;quot;Terminate&amp;quot; event (triggered when holding Ctrl-T) for custom termination logic.&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=OS_(API)&amp;diff=6001</id>
		<title>OS (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=OS_(API)&amp;diff=6001"/>
				<updated>2013-09-14T21:45:08Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: use API table template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Operating System API allows for interfacing with the Lua based Operating System itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{API table|Os|image=Grid disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.version]]()|{{type|string}} version&lt;br /&gt;
|Returns the version of the OS the computer is running, which (for CraftOS) also contains the version of ComputerCraft.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.getComputerId]]()|{{type|number}} id&lt;br /&gt;
|Returns the unique ID of this computer. [[os.computerID]]() also behaves exactly the same as [[os.getComputerID]]().&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.getComputerLabel]]()|{{type|string}} label&lt;br /&gt;
|Returns the label of this computer. [[os.computerLabel]]() also behaves exactly the same as [[os.getComputerLabel]](). &amp;lt;!-- what does it return if there's no label? --&amp;gt;&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.setComputerLabel]]({{type|string}} label)|{{type|nil}}&lt;br /&gt;
|Set the label of this computer.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.run]]({{type|table}} environment, {{type|string}} program path [, {{type|string}} arguments])|{{type|nil}}&lt;br /&gt;
|An advanced way of starting programs. A started program will have a given &amp;lt;var&amp;gt;environment&amp;lt;/var&amp;gt; table which determines what functions it has available, as well as any variables it will be able to access by default. You may prefer to use the [[Shell (API)]] unless you need to do something special.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[#APIs|os.loadAPI]]({{type|string}} name)|{{type|nil}}&lt;br /&gt;
|Loads a Lua script as an API in its own namespace (see example). It will be available to '''all''' programs that run on the terminal.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[#APIs|os.unloadAPI]]({{type|string}} name)|{{type|nil}}&lt;br /&gt;
|Unloads a previously loaded API.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[Os.pullEvent|os.pullEvent]]({{type|string}}/{{type|nil}} target-event)|any&lt;br /&gt;
|Blocks until the computer receives an event, or if &amp;lt;var&amp;gt;target-event&amp;lt;/var&amp;gt; is specified, will block until an instance of &amp;lt;var&amp;gt;target-event&amp;lt;/var&amp;gt; occurs. [[Os.pullEvent|os.pullEvent]](target-event) returns the event and any parameters the event may have. If a &amp;lt;var&amp;gt;target-event&amp;lt;/var&amp;gt; is specified, the computer will not break for any other events (except termination).&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[#pullEvent|os.pullEventRaw]]()|any&lt;br /&gt;
|Advanced version of pullEvent(). [[#pullEvent|os.pullEventRaw]]() will block until an event occurs, and then returns the event (any any parameters the event may have). Unlike [[Os.pullEvent|os.pullEvent]](target-event), this function will not raise an error if a 'terminate' event is received.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.queueEvent]]({{type|string}} event, param1, param2, ...)|{{type|nil}}&lt;br /&gt;
|Adds an event to the event queue with the name &amp;lt;var&amp;gt;event&amp;lt;/var&amp;gt; and the given parameters&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.clock]]()|{{type|number}} time&lt;br /&gt;
|Returns the amount of time since the computer was started.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.startTimer]]({{Type|number}} timeout)|{{type|number}} timerID&lt;br /&gt;
|Queues an event to be triggered after a number of seconds (&amp;lt;var&amp;gt;timeout&amp;lt;/var&amp;gt;). The ID of the timer is returned from this function to differentiate multiple timers. Timers are one-shot; once they have fired an event you will need to start another one if you need a recurring timer.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.time]]()|{{type|number}} time&lt;br /&gt;
|Returns the current in-game time.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.sleep]]({{Type|number}} time)|{{type|nil}}&lt;br /&gt;
|Makes the system wait a number of seconds before continuing in the program. [[os.sleep]](time) may also be used as simply &amp;quot;sleep(time)&amp;quot;.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.day]]()|{{type|number}} day&lt;br /&gt;
|Return the current in-game day (the number of days since the world was created).&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.setAlarm]]({{type|number}} time)|{{type|number}} alarmID&lt;br /&gt;
|Queues an event to be triggered at the specified in-game &amp;lt;var&amp;gt;time&amp;lt;/var&amp;gt;.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.shutdown]]()|{{type|nil}}&lt;br /&gt;
|Turns off the computer.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[os.reboot]]()|{{type|nil}}&lt;br /&gt;
|Reboots the computer.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;br /&gt;
&lt;br /&gt;
== APIs ==&lt;br /&gt;
&lt;br /&gt;
APIs are Lua files which are loaded into the OS itself, and expose functions which other programs may use. The stock [[:Category:APIs|APIs]] that ship with ComputerCraft are loaded in this way, and may be replaced by a computer’s user or programs.&lt;br /&gt;
&lt;br /&gt;
The following is an example of a valid implementation of an API, and its usage after being registered:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  -- &amp;quot;apiTest&amp;quot; file&lt;br /&gt;
  function foo(bar)&lt;br /&gt;
    print(bar)&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  -- &amp;quot;program&amp;quot; file&lt;br /&gt;
  os.loadAPI(&amp;quot;apiTest&amp;quot;)&lt;br /&gt;
  apiTest.foo(&amp;quot;this is a test&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;div id=&amp;quot;pullEvent&amp;quot;&amp;gt;os.pullEvent()&amp;lt;/div&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
os.pullEvent() causes the current program to pause, retrieving the next event from the computer's queue of events. If there is no event to read, then the program will stall until such an event becomes available. Note that if a program has not attempted to pull an event in the past ten seconds, it will be forcefully terminated to prevent CPU waste in SMP environments.&lt;br /&gt;
&lt;br /&gt;
os.pullEvent() returns the name of the event that was read, as well as up to five parameters:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
local event, p1, p2, p3, p4, p5 = os.pullEvent()&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
os.pullEvent() is usually run inside a 'while true do' loop.&lt;br /&gt;
&lt;br /&gt;
An advanced version of this method &amp;lt;code&amp;gt;os.pullEventRaw&amp;lt;/code&amp;gt; bypasses the normal handling of events from the OS. You may use this to act on the &amp;quot;Terminate&amp;quot; event (triggered when holding Ctrl-T) for custom termination logic.&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Keys_(API)&amp;diff=6000</id>
		<title>Keys (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Keys_(API)&amp;diff=6000"/>
				<updated>2013-09-14T21:34:53Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: use API table template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Keys API provides a table of numerical codes corresponding to keyboard keys, suitable for decoding [[Key (event)|key events]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{API table|Keys|image=Grid disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[keys.getName]]({{Type|number}} code)|{{type|string}} keyName&lt;br /&gt;
|Translates a numerical key code to a human-readable name.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Although this API contains only one method, it also contains a vast number of constants, one per key, containing the numerical key codes for those keys. As of ComputerCraft 1.52, the following constants are defined:&lt;br /&gt;
* a&lt;br /&gt;
* b&lt;br /&gt;
* c&lt;br /&gt;
* d&lt;br /&gt;
* e&lt;br /&gt;
* f&lt;br /&gt;
* g&lt;br /&gt;
* h&lt;br /&gt;
* i&lt;br /&gt;
* j&lt;br /&gt;
* k&lt;br /&gt;
* l&lt;br /&gt;
* m&lt;br /&gt;
* n&lt;br /&gt;
* o&lt;br /&gt;
* p&lt;br /&gt;
* q&lt;br /&gt;
* r&lt;br /&gt;
* s&lt;br /&gt;
* t&lt;br /&gt;
* u&lt;br /&gt;
* v&lt;br /&gt;
* w&lt;br /&gt;
* x&lt;br /&gt;
* y&lt;br /&gt;
* z&lt;br /&gt;
* one&lt;br /&gt;
* two&lt;br /&gt;
* three&lt;br /&gt;
* four&lt;br /&gt;
* five&lt;br /&gt;
* six&lt;br /&gt;
* seven&lt;br /&gt;
* eight&lt;br /&gt;
* nine&lt;br /&gt;
* zero&lt;br /&gt;
* minus&lt;br /&gt;
* equals&lt;br /&gt;
* backspace&lt;br /&gt;
* tab&lt;br /&gt;
* leftBracket&lt;br /&gt;
* rightBracket&lt;br /&gt;
* enter&lt;br /&gt;
* leftCtrl&lt;br /&gt;
* semiColon&lt;br /&gt;
* apostrophe&lt;br /&gt;
* grave&lt;br /&gt;
* leftShift&lt;br /&gt;
* backslash&lt;br /&gt;
* comma&lt;br /&gt;
* period&lt;br /&gt;
* slash&lt;br /&gt;
* rightShift&lt;br /&gt;
* multiply&lt;br /&gt;
* leftAlt&lt;br /&gt;
* space&lt;br /&gt;
* capsLock&lt;br /&gt;
* f1&lt;br /&gt;
* f2&lt;br /&gt;
* f3&lt;br /&gt;
* f4&lt;br /&gt;
* f5&lt;br /&gt;
* f6&lt;br /&gt;
* f7&lt;br /&gt;
* f8&lt;br /&gt;
* f9&lt;br /&gt;
* f10&lt;br /&gt;
* numLock&lt;br /&gt;
* scollLock&lt;br /&gt;
* numPad7&lt;br /&gt;
* numPad8&lt;br /&gt;
* numPad9&lt;br /&gt;
* numPadSubtract&lt;br /&gt;
* numPad4&lt;br /&gt;
* numPad5&lt;br /&gt;
* numPad6&lt;br /&gt;
* numPadAdd&lt;br /&gt;
* numPad1&lt;br /&gt;
* numPad2&lt;br /&gt;
* numPad3&lt;br /&gt;
* numPad0&lt;br /&gt;
* numPadDecimal&lt;br /&gt;
* f11&lt;br /&gt;
* f12&lt;br /&gt;
* f13&lt;br /&gt;
* f14&lt;br /&gt;
* f15&lt;br /&gt;
* kana&lt;br /&gt;
* convert&lt;br /&gt;
* noconvert&lt;br /&gt;
* yen&lt;br /&gt;
* numPadEquals&lt;br /&gt;
* cimcumflex&lt;br /&gt;
* at&lt;br /&gt;
* colon&lt;br /&gt;
* underscore&lt;br /&gt;
* kanji&lt;br /&gt;
* stop&lt;br /&gt;
* ax&lt;br /&gt;
* numPadEnter&lt;br /&gt;
* rightCtrl&lt;br /&gt;
* numPadComma&lt;br /&gt;
* numPadDivide&lt;br /&gt;
* rightAlt&lt;br /&gt;
* pause&lt;br /&gt;
* home&lt;br /&gt;
* up&lt;br /&gt;
* pageUp&lt;br /&gt;
* left&lt;br /&gt;
* right&lt;br /&gt;
* end&lt;br /&gt;
* down&lt;br /&gt;
* pageDown&lt;br /&gt;
* insert&lt;br /&gt;
* delete&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Help_(API)&amp;diff=5999</id>
		<title>Help (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Help_(API)&amp;diff=5999"/>
				<updated>2013-09-14T21:33:45Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: use API table template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Help API allows you to mess around with the help files.&lt;br /&gt;
&lt;br /&gt;
{{API table|Help|image=Grid disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[help.path]]()|{{Type|string}} path&lt;br /&gt;
|Returns the list of locations the API will look in for help files.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[help.setPath]]({{type|string}} path)|{{Type|nil}}&lt;br /&gt;
|Sets the list of locations the API will look in for help files.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[help.lookup]]({{Type|string}} topic)|{{Type|string}}/{{type|nil}} path&lt;br /&gt;
|Returns the path to the file containing the help page for &amp;lt;var&amp;gt;topic&amp;lt;/var&amp;gt;, or {{type|nil}} if the topic cannot be found.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[help.topics]]()|{{Type|table}} topics&lt;br /&gt;
|Returns a list of all available help topics.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Modem_(API)&amp;diff=5996</id>
		<title>Modem (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Modem_(API)&amp;diff=5996"/>
				<updated>2013-09-10T03:58:45Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:''This page is for the modem API. For the blocks, see [[Modem]].''&lt;br /&gt;
&lt;br /&gt;
As of ComputerCraft 1.5, channels have been added - channels are essentially networks which can be opened, closed and listened on by any computer within range, without need of independant computer IDs. To interact with channels, one must wrap or interact directly with the peripheral as opposed to the previous interaction with the Rednet API.&lt;br /&gt;
&lt;br /&gt;
'''There is not an actual API called &amp;quot;modem&amp;quot;. This is the API for wrapped modem peripherals.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%; border: solid 1px black; margin: 2px; border-spacing: 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;font-weight: bold; font-size: large; padding-bottom: .3em; border-bottom: solid #C9C9C9 1px; background: #D3FFC2; line-height:28px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Grid_disk.png|24px]]&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
Modem (API)&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 350px; background: #E0E0E0; padding: .4em; font-weight:bold;&amp;quot;&amp;gt;Method Name&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;background: #E0E0E0; padding: .4em; font-weight:bold;&amp;quot;&amp;gt;Description&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;[[modem.isOpen]]({{type|int}} channel)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;Checks to see if ''channel'' is open&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;[[modem.open]]({{type|int}} channel)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;Opens ''channel'' to allow for listening. The channel specified must be larger than 0 and less than 65535&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;[[modem.close]]({{type|int}} channel)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;Closes an open channel to disallow listening&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;[[modem.closeAll]]()&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;Closes all open channels&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;[[modem.transmit]]({{type|int}} channel, {{type|int}} replyChannel, {{type|string}} message)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;Transmits a message on the specified channel&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;[[modem.isWireless]]()&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;Returns true if the modem is wireless; false if it is wired&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;1&amp;quot; | Event Name&lt;br /&gt;
! colspan=&amp;quot;1&amp;quot; | Description&lt;br /&gt;
! colspan=&amp;quot;1&amp;quot; | Parameters&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | modem_message&lt;br /&gt;
|Fired when a modem message is received.&lt;br /&gt;
|{{type|string}} modemSide, {{type|int}} senderChannel, {{type|int}} replyChannel, {{type|string}} message, {{type|number}} distance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Sending Messages==&lt;br /&gt;
Sending messages is simple and does not require that you open any channels. Simply use the transmit function like so:&lt;br /&gt;
 local modem = peripheral.wrap(&amp;quot;right&amp;quot;) --Wraps the modem on the right side.&lt;br /&gt;
 modem.transmit(3, 1, &amp;quot;Hello world!&amp;quot;)  &lt;br /&gt;
 peripheral.call(&amp;quot;right&amp;quot;, &amp;quot;transmit&amp;quot;, 3, 1, &amp;quot;This will also work!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
What did that do? First I wrapped the peripheral in order to interact with it. Second, I used modem.transmit(channel, replyChannel, message) in order to send my message. In case you were wondering, the reply channel is captured by the listening computer and suggests which channel they should reply on.&lt;br /&gt;
&lt;br /&gt;
==Receiving Messages==&lt;br /&gt;
Receiving messages requires that you be familiar with events. As of this moment, there is no API which cuts out events from the process. Here is an example of how to receive messages:&lt;br /&gt;
 local modem = peripheral.wrap(&amp;quot;left&amp;quot;)&lt;br /&gt;
 modem.open(3)--Open channel 3 so that we can listen on it&lt;br /&gt;
 local event, modemSide, senderChannel, &lt;br /&gt;
   replyChannel, message, senderDistance = os.pullEvent(&amp;quot;modem_message&amp;quot;)&lt;br /&gt;
 print(&amp;quot;I just received a message from: &amp;quot;..senderChannel)&lt;br /&gt;
 print(&amp;quot;I should apparently reply on: &amp;quot;..replyChannel)&lt;br /&gt;
 print(&amp;quot;The modem receiving this is located on the &amp;quot;..modemSide..&amp;quot; side&amp;quot;)&lt;br /&gt;
 print(&amp;quot;The message was: &amp;quot;..message)&lt;br /&gt;
 print(&amp;quot;The sender is: &amp;quot;..senderDistance..&amp;quot; blocks away from me.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
So what did I do? Quite simply, I called os.pullEvent() with the string argument &amp;quot;modem_message&amp;quot;, which blocks all other events from being returned. When the &amp;quot;modem_message&amp;quot; event is captured, it returns the arguments: event, modemSide, senderChannel, replyChannel, message, senderDistance. I captured these and then printed them out.&lt;br /&gt;
&lt;br /&gt;
== Modem Limitations ==&lt;br /&gt;
* You can only open 128 channels at any given time.&lt;br /&gt;
* The maximum channel you can open is 65535.&lt;br /&gt;
* You can listen on more than one channel at a time. For example, if the modem has channel 3 and channel 5 open, and somebody sends a message on channel 5, the modem will receive it. If a message is sent on channel 3, the modem will also receive the message.&lt;br /&gt;
* Sending messages does not require you to open any channels prior to sending it.&lt;br /&gt;
* If you aren't receiving a message when you think you should, check to make sure that you have opened the channel first.&lt;br /&gt;
* Modems and channels are not secure - if you are sending a message using the Modem API, messages are still available to any computer listening on the sent channel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Peripheral APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Fs_(API)&amp;diff=5959</id>
		<title>Fs (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Fs_(API)&amp;diff=5959"/>
				<updated>2013-08-25T03:39:02Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: use template for API table.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The FS API allows you to mess around with the filesystem.&lt;br /&gt;
&lt;br /&gt;
{{API table|FS|image=Grid_disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[fs.list]]({{Type|string}} path)|{{type|table}} files|Returns a list of all the files (including subdirectories but not their contents) contained in a directory, as a numerically indexed table.|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[fs.exists]]({{Type|string}} path)|{{Type|boolean}} exists|Checks if a path refers to an existing file or directory.|}}&lt;br /&gt;
{{API table/row|[[fs.isDir]]({{Type|string}} path)|{{Type|boolean}} isdir|Checks if a path refers to an existing directory.|odd}}&lt;br /&gt;
{{API table/row|[[fs.isReadOnly]]({{Type|string}} path)|{{Type|boolean}} readonly|Checks if a path is read-only (i.e. cannot be modified).|}}&lt;br /&gt;
{{API table/row|[[fs.getName]]({{type|string}} path)|{{type|string}} name|Gets the final component of a pathname.|odd}}&lt;br /&gt;
{{API table/row|[[fs.getDrive]]({{type|string}} path)|{{type|string}}/{{type|nil}} drive|Gets the storage medium holding a path, or [[nil]] if the path does not exist.|}}&lt;br /&gt;
{{API table/row|[[fs.getSize]]({{Type|string}} path)|{{type|number}} size|Gets the size of a file in bytes.|odd}}&lt;br /&gt;
{{API table/row|[[fs.getFreeSpace]]({{Type|string}} path)|{{type|number}} space|Gets the remaining space on the drive containing the given directory.|}}&lt;br /&gt;
{{API table/row|[[fs.makeDir]]({{Type|string}} path)|{{type|nil}}|Makes a directory.|odd}}&lt;br /&gt;
{{API table/row|[[fs.move]]({{Type|string}} fromPath, {{Type|string}} toPath)|{{type|nil}}|Moves a file or directory to a new location.|}}&lt;br /&gt;
{{API table/row|[[fs.copy]]({{Type|string}} fromPath, {{Type|string}} toPath)|{{type|nil}}|Copies a file or directory to a new location.|odd}}&lt;br /&gt;
{{API table/row|[[fs.delete]]({{Type|string}} path)|{{type|nil}}|Deletes a file or directory.|}}&lt;br /&gt;
{{API table/row|[[fs.combine]]({{Type|string}} basePath, {{Type|string}} localPath)|{{type|string}} path|Combines two path components, returning a path consisting of the local path nested inside the base path.|odd}}&lt;br /&gt;
{{API table/row|[[fs.open]]({{Type|string}} path, {{Type|string}} mode)|{{type|table}} handle|Opens a file so it can be read or written.|}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;br /&gt;
&lt;br /&gt;
==Path Names==&lt;br /&gt;
All of these functions except for [[fs.combine]] refer solely to &amp;lt;em&amp;gt;absolute paths&amp;lt;/em&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
This means that the current working directory, as set by the &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; command or the [[shell.setDir]] function, is ignored. Each path name consists of a list of nonempty path components separated by forward slashes, and those path components are taken one by one with the first being contained in the root directory of the computer.&lt;br /&gt;
&lt;br /&gt;
If you need to deal with paths provided by the user that may be absolute or may be relative to the current working directory, use [[shell.resolve]].&lt;br /&gt;
&lt;br /&gt;
Unlike most real-world operating systems, ComputerCraft's absolute path name system does not need to be started with a forward slash ( / ), making the directory &amp;quot;a/b/c&amp;quot; the same as &amp;quot;/a/b/c&amp;quot;. Leaving the slashes is just a matter of preference to the coder.&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Disk_(API)&amp;diff=5958</id>
		<title>Disk (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Disk_(API)&amp;diff=5958"/>
				<updated>2013-08-25T03:31:14Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: use template for API table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''If you were looking for the item, please see [[Floppy Disk]].''&lt;br /&gt;
&lt;br /&gt;
The Disk API allows you to interact with disk drives. These functions can operate on locally attached or remote disk drives. To use a locally attached drive, specify “side” as one of the six sides (e.g. “left”); to use a remote disk drive, specify its name as printed when enabling its modem (e.g. “drive_0”).&lt;br /&gt;
&lt;br /&gt;
{{API table|Disk|image=Grid_disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[disk.isPresent]]({{type|string}} side)|{{type|boolean}} present|Checks whether any item is in a disk drive.|odd}}&lt;br /&gt;
{{API table/row|[[disk.hasData]]({{type|string}} side)|{{type|boolean}} hasdata|Checks whether a [[Floppy Disk]] is in a disk drive.|}}&lt;br /&gt;
{{API table/row|[[disk.getMountPath]]({{type|string}} side)|{{type|string}}/{{type|nil}} path|Gets the directory name where the contents of the floppy disk can be accessed.|odd}}&lt;br /&gt;
{{API table/row|[[disk.setLabel]]({{type|string}} side, {{type|string}} label)|{{type|nil}}|Sets the floppy disk's label.|}}&lt;br /&gt;
{{API table/row|[[disk.getLabel]]({{type|string}} side)|{{type|string}}/{{type|nil}} label|Gets the floppy disk's label.|odd}}&lt;br /&gt;
{{API table/row|[[disk.getID]]({{type|string}} side)|{{type|number}}/{{type|nil}} id|Gets the floppy disk's unique ID number.|}}&lt;br /&gt;
{{API table/row|[[disk.hasAudio]]({{type|string}} side)|{{type|boolean}} hasaudio|Checks whether a [http://www.minecraftwiki.net/wiki/Music_Discs music disk] is in the drive.|odd}}&lt;br /&gt;
{{API table/row|[[disk.getAudioTitle]]({{type|string}} side)|{{type|string}}/{{type|nil}} title|Gets the title of the music disc in the drive.|}}&lt;br /&gt;
{{API table/row|[[disk.playAudio]]({{type|string}} side)|{{type|nil}}|Starts playing the music disc in the drive.|odd}}&lt;br /&gt;
{{API table/row|[[disk.stopAudio]]({{type|string}} side)|{{type|nil}}|Stops playing the music disc in the drive.|}}&lt;br /&gt;
{{API table/row|[[disk.eject]]({{type|string}} side)|{{type|nil}}|Ejects any item currently in the drive, spilling it into the world as a loose item.|odd}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Coroutine_(API)&amp;diff=5957</id>
		<title>Coroutine (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Coroutine_(API)&amp;diff=5957"/>
				<updated>2013-08-25T03:22:08Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: use template for API table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| '''Bug'''&lt;br /&gt;
'''From ComputerCraft 1.3''' this API suffers from the problem of potentially spawning Java threads that live forever therefore, use of coroutines should be minimized. This is '''fixed in ComputerCraft 1.32+''', though.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''This is for the Coroutine API. For the Coroutine Object, visit [[Coroutine (type)]].''&lt;br /&gt;
&lt;br /&gt;
Coroutine is a default Lua 5.1 API defined [http://www.lua.org/manual/5.1/manual.html#5.2 here]. Please list any non-working functions on this page.&lt;br /&gt;
&lt;br /&gt;
{{API table|Coroutine|image=Grid_disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[coroutine.create]]({{type|function}} f)|{{type|coroutine}} coro|Creates a new coroutine.|odd}}&lt;br /&gt;
{{API table/row|[[coroutine.resume]]({{type|coroutine}} coro, ...)|any|Starts or resumes a coroutine.|}}&lt;br /&gt;
{{API table/row|[[coroutine.running]]()|{{type|coroutine}}|Returns the currently executing coroutine.|odd}}&lt;br /&gt;
{{API table/row|[[coroutine.status]]({{type|coroutine}} coro)|{{type|string}} status|Returns the status of a coroutine.|}}&lt;br /&gt;
{{API table/row|[[coroutine.wrap]]({{type|function}} f)|{{type|function}} wrapper|Creates a new coroutine and wraps it in a function.|odd}}&lt;br /&gt;
{{API table/row|[[coroutine.yield]](...)|any|Pauses the currently executing coroutine and passes control to its caller.|}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Coroutine States and Ancestry ==&lt;br /&gt;
Every coroutine is in one of four states:&lt;br /&gt;
* A ''suspended'' coroutine is one that has not yet been started or that has yielded. A suspended coroutine can become running if it is passed to [[coroutine.resume]].&lt;br /&gt;
* A ''running'' coroutine is one that is currently executing code. Only one coroutine can be running at a time on a particular computer. A running coroutine can become suspended if it [[coroutine.yield]], normal if it calls [[coroutine.resume]] on another coroutine, or dead by if it returns from its body function.&lt;br /&gt;
* A ''normal'' coroutine is one that, while running, resumed another coroutine (the ''child coroutine''). A normal coroutine can become running if its child calls [[coroutine.yield]] or returns from its function body.&lt;br /&gt;
* A ''dead'' coroutine is one that, while running, returned from its function body. A dead coroutine can never change state.&lt;br /&gt;
&lt;br /&gt;
While suspended and dead coroutines simply sit loose with no connections to other coroutines, normal and running coroutines have an ancestry relationship between them. Exactly one coroutine is running at any given time, and the running coroutine has no children. Every running or normal coroutine except the top-level BIOS coroutine has a parent, and this relationship forms a chain with one end (the furthest ancestor) being the top-level BIOS coroutine and the other end (the furthest descendant) being the running coroutine. Remember that only the running coroutine can actually execute code, so any functions invoked must be invoked by that coroutine. Then, calling [[coroutine.resume]] makes the chain longer by taking a previously suspended coroutine, hanging it underneath the current coroutine as a new child, and making the current coroutine normal and the new child running. Meanwhile, calling [[coroutine.yield]] makes the chain shorter by turning the currently executing coroutine into a suspended coroutine, detaching it from the chain, and letting its former parent become running.&lt;br /&gt;
&lt;br /&gt;
It is important not to confuse this coroutine chain with the function call stack. Each individual coroutine contains a complete function call stack of its own, rooted at the coroutine’s body function, whether the coroutine is running, normal, or suspended; the chain described in the previous paragraph refers to how entire coroutines are connected together.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
As the coroutine API is very tightly coupled and many of its function must be used to get any interesting results, examples are shown here instead of on the individual function pages.&lt;br /&gt;
&lt;br /&gt;
=== Using the Basic Coroutine Functions ===&lt;br /&gt;
This example demonstrates using the basic coroutine functions to pass control and data between coroutines. This example prints the numbers 1 through 17 in order, showing how control flow moves through the main program coroutine and the two created coroutines, while using assertions to show how data flows through the program:&lt;br /&gt;
&lt;br /&gt;
 -- These variables will hold the coroutine objects.&lt;br /&gt;
 local c1 = nil&lt;br /&gt;
 local c2 = nil&lt;br /&gt;
 &lt;br /&gt;
 -- This function will be the body of the first coroutine.&lt;br /&gt;
 local function f1(x)&lt;br /&gt;
   -- The main code, below, starts c1 first, passing 1.&lt;br /&gt;
   -- Thus c1 should be running, c2 should be suspended (not started yet), and x should receive the value from main, 1.&lt;br /&gt;
   -- STEP 2: Check these assumptions.&lt;br /&gt;
   print(2)&lt;br /&gt;
   assert(coroutine.status(c1) == &amp;quot;running&amp;quot;)&lt;br /&gt;
   assert(coroutine.status(c2) == &amp;quot;suspended&amp;quot;)&lt;br /&gt;
   assert(x == 1)&lt;br /&gt;
   -- STEP 3: Run c2 until it yields, start it off with the value 2.&lt;br /&gt;
   print(3)&lt;br /&gt;
   success, value = coroutine.resume(c2, 2)&lt;br /&gt;
   assert(success)&lt;br /&gt;
   -- In step 6, c2 yields and passes back the value 3.&lt;br /&gt;
   -- Then c2, having yielded, should be suspended, and c1 should be running again.&lt;br /&gt;
   -- STEP 7: Check all that.&lt;br /&gt;
   print(7)&lt;br /&gt;
   assert(coroutine.status(c1) == &amp;quot;running&amp;quot;)&lt;br /&gt;
   assert(coroutine.status(c2) == &amp;quot;suspended&amp;quot;)&lt;br /&gt;
   assert(value == 3)&lt;br /&gt;
   -- STEP 8: Run c2 again, passing it the value 4.&lt;br /&gt;
   -- Since c2 has already run before, this time the 4 will come out of the yield() instead of appear as a function parameter.&lt;br /&gt;
   print(8)&lt;br /&gt;
   success, value = coroutine.resume(c2, 4)&lt;br /&gt;
   -- In step 10, c2 yields and passes back the value 5.&lt;br /&gt;
   -- Then c2, having yielded, should be suspended, and c1 should be running again.&lt;br /&gt;
   -- STEP 11: Check all that.&lt;br /&gt;
   print(11)&lt;br /&gt;
   assert(coroutine.status(c1) == &amp;quot;running&amp;quot;)&lt;br /&gt;
   assert(coroutine.status(c2) == &amp;quot;suspended&amp;quot;)&lt;br /&gt;
   assert(value == 5)&lt;br /&gt;
   -- STEP 12: Yield, turning c1 back into a suspended coroutine and continuing execution of the main program, passing back value 6.&lt;br /&gt;
   print(12)&lt;br /&gt;
   value = coroutine.yield(6)&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 -- This function will be the body of the second coroutine.&lt;br /&gt;
 local function f2(x)&lt;br /&gt;
   -- The first time c2 is run, it is run from f1, which passes 2.&lt;br /&gt;
   -- Thus c1 should be normal (as we are nested inside it), c2 should be running, and x should receive the value from f1, 2.&lt;br /&gt;
   -- STEP 4: Check these assumptions.&lt;br /&gt;
   print(4)&lt;br /&gt;
   assert(coroutine.status(c1) == &amp;quot;normal&amp;quot;)&lt;br /&gt;
   assert(coroutine.status(c2) == &amp;quot;running&amp;quot;)&lt;br /&gt;
   assert(x == 2)&lt;br /&gt;
   -- Because c1 is not suspended, we should not be able to resume it.&lt;br /&gt;
   -- STEP 5: Check this is correct.&lt;br /&gt;
   print(5)&lt;br /&gt;
   success, value = coroutine.resume(c1)&lt;br /&gt;
   assert(not success)&lt;br /&gt;
   assert(value == &amp;quot;cannot resume normal coroutine&amp;quot;)&lt;br /&gt;
   -- STEP 6: Yield, turning c2 back into a suspended coroutine and continuing execution of c1, passing back value 3.&lt;br /&gt;
   print(6)&lt;br /&gt;
   value = coroutine.yield(3)&lt;br /&gt;
   -- In step 8, c1 resumed c2 again and passed the value 4.&lt;br /&gt;
   -- c2 should now be running again, and c1 normal again.&lt;br /&gt;
   -- STEP 9: Check all that.&lt;br /&gt;
   print(9)&lt;br /&gt;
   assert(coroutine.status(c1) == &amp;quot;normal&amp;quot;)&lt;br /&gt;
   assert(coroutine.status(c2) == &amp;quot;running&amp;quot;)&lt;br /&gt;
   assert(value == 4)&lt;br /&gt;
   -- STEP 10: Yield, turning c2 back into a suspended coroutine and continuing execution of c1, passing back value 5.&lt;br /&gt;
   print(10)&lt;br /&gt;
   value = coroutine.yield(5)&lt;br /&gt;
   -- In step 14, the main program resumed c2 directly and passed the value 7, bypassing c1.&lt;br /&gt;
   -- So c2 should be running and c1 should be suspended.&lt;br /&gt;
   -- STEP 15: Check all that.&lt;br /&gt;
   print(15)&lt;br /&gt;
   assert(coroutine.status(c1) == &amp;quot;suspended&amp;quot;)&lt;br /&gt;
   assert(coroutine.status(c2) == &amp;quot;running&amp;quot;)&lt;br /&gt;
   assert(value == 7)&lt;br /&gt;
   -- STEP 16: Now die, returning value 8 to the main program.&lt;br /&gt;
   print(16)&lt;br /&gt;
   return 8&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 -- Construct the two coroutines.&lt;br /&gt;
 c1 = coroutine.create(f1)&lt;br /&gt;
 c2 = coroutine.create(f2)&lt;br /&gt;
 &lt;br /&gt;
 -- Newly constructed coroutines are always suspended.&lt;br /&gt;
 assert(coroutine.status(c1) == &amp;quot;suspended&amp;quot;)&lt;br /&gt;
 assert(coroutine.status(c2) == &amp;quot;suspended&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 -- STEP 1: Run c1 until it yields, starting it off with the value 1.&lt;br /&gt;
 print(1)&lt;br /&gt;
 success, value = coroutine.resume(c1, 1)&lt;br /&gt;
 assert(success)&lt;br /&gt;
 &lt;br /&gt;
 -- In step 12, c1 should have yielded and returned the value 6.&lt;br /&gt;
 -- So now c1 and c2 should both be suspended.&lt;br /&gt;
 -- STEP 13: Check all that.&lt;br /&gt;
 print(13)&lt;br /&gt;
 assert(coroutine.status(c1) == &amp;quot;suspended&amp;quot;)&lt;br /&gt;
 assert(coroutine.status(c2) == &amp;quot;suspended&amp;quot;)&lt;br /&gt;
 assert(value == 6)&lt;br /&gt;
 &lt;br /&gt;
 -- STEP 14: Run c2 directly, NOT nested inside c1 this time, passing it the value 7.&lt;br /&gt;
 print(14)&lt;br /&gt;
 success, value = coroutine.resume(c2, 7)&lt;br /&gt;
 assert(success)&lt;br /&gt;
 &lt;br /&gt;
 -- c2 should have exited normally, returning the value 8.&lt;br /&gt;
 -- Therefore c1 should still be suspended, but c2 should be dead.&lt;br /&gt;
 -- STEP 17: Check all that.&lt;br /&gt;
 print(17)&lt;br /&gt;
 assert(coroutine.status(c1) == &amp;quot;suspended&amp;quot;)&lt;br /&gt;
 assert(coroutine.status(c2) == &amp;quot;dead&amp;quot;)&lt;br /&gt;
 assert(value == 8)&lt;br /&gt;
&lt;br /&gt;
=== Using Coroutine Wrapper Functions ===&lt;br /&gt;
This second example is virtually identical, but shows using [[coroutine.wrap]] and wrapper functions instead of the basic coroutine functions (checks of [[coroutine.status]] have been removed as the raw coroutine objects are not available):&lt;br /&gt;
&lt;br /&gt;
 -- These variables will hold the coroutine wrapper functions.&lt;br /&gt;
 local cw1 = nil&lt;br /&gt;
 local cw2 = nil&lt;br /&gt;
 &lt;br /&gt;
 -- This function will be the body of the first coroutine.&lt;br /&gt;
 local function f1(x)&lt;br /&gt;
   -- The main code, below, starts c1 first, passing 1.&lt;br /&gt;
   -- Thus c1 should be running, c2 should be suspended (not started yet), and x should receive the value from main, 1.&lt;br /&gt;
   -- STEP 2: Check these assumptions.&lt;br /&gt;
   print(2)&lt;br /&gt;
   assert(x == 1)&lt;br /&gt;
   -- STEP 3: Run c2 until it yields, start it off with the value 2.&lt;br /&gt;
   print(3)&lt;br /&gt;
   value = cw2(2)&lt;br /&gt;
   -- In step 6, c2 yields and passes back the value 3.&lt;br /&gt;
   -- Then c2, having yielded, should be suspended, and c1 should be running again.&lt;br /&gt;
   -- STEP 7: Check all that.&lt;br /&gt;
   print(7)&lt;br /&gt;
   assert(value == 3)&lt;br /&gt;
   -- STEP 8: Run c2 again, passing it the value 4.&lt;br /&gt;
   -- Since c2 has already run before, this time the 4 will come out of the yield() instead of appear as a function parameter.&lt;br /&gt;
   print(8)&lt;br /&gt;
   value = cw2(4)&lt;br /&gt;
   -- In step 10, c2 yields and passes back the value 5.&lt;br /&gt;
   -- Then c2, having yielded, should be suspended, and c1 should be running again.&lt;br /&gt;
   -- STEP 11: Check all that.&lt;br /&gt;
   print(11)&lt;br /&gt;
   assert(value == 5)&lt;br /&gt;
   -- STEP 12: Yield, turning c1 back into a suspended coroutine and continuing execution of the main program, passing back value 6.&lt;br /&gt;
   print(12)&lt;br /&gt;
   value = coroutine.yield(6)&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 -- This function will be the body of the second coroutine.&lt;br /&gt;
 local function f2(x)&lt;br /&gt;
   -- The first time c2 is run, it is run from f1, which passes 2.&lt;br /&gt;
   -- Thus c1 should be normal (as we are nested inside it), c2 should be running, and x should receive the value from f1, 2.&lt;br /&gt;
   -- STEP 4: Check these assumptions.&lt;br /&gt;
   print(4)&lt;br /&gt;
   assert(x == 2)&lt;br /&gt;
   -- Because c1 is not suspended, we should not be able to resume it.&lt;br /&gt;
   -- STEP 5: Check this is correct (we must use pcall because an error will be raised).&lt;br /&gt;
   print(5)&lt;br /&gt;
   success, value = pcall(cw1)&lt;br /&gt;
   assert(not success)&lt;br /&gt;
   -- STEP 6: Yield, turning c2 back into a suspended coroutine and continuing execution of c1, passing back value 3.&lt;br /&gt;
   print(6)&lt;br /&gt;
   value = coroutine.yield(3)&lt;br /&gt;
   -- In step 8, c1 resumed c2 again and passed the value 4.&lt;br /&gt;
   -- c2 should now be running again, and c1 normal again.&lt;br /&gt;
   -- STEP 9: Check all that.&lt;br /&gt;
   print(9)&lt;br /&gt;
   assert(value == 4)&lt;br /&gt;
   -- STEP 10: Yield, turning c2 back into a suspended coroutine and continuing execution of c1, passing back value 5.&lt;br /&gt;
   print(10)&lt;br /&gt;
   value = coroutine.yield(5)&lt;br /&gt;
   -- In step 14, the main program resumed c2 directly and passed the value 7, bypassing c1.&lt;br /&gt;
   -- So c2 should be running and c1 should be suspended.&lt;br /&gt;
   -- STEP 15: Check all that.&lt;br /&gt;
   print(15)&lt;br /&gt;
   assert(value == 7)&lt;br /&gt;
   -- STEP 16: Now die, returning value 8 to the main program.&lt;br /&gt;
   print(16)&lt;br /&gt;
   return 8&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 -- Construct the two coroutine wrappers.&lt;br /&gt;
 cw1 = coroutine.wrap(f1)&lt;br /&gt;
 cw2 = coroutine.wrap(f2)&lt;br /&gt;
 &lt;br /&gt;
 -- STEP 1: Run cw1 until it yields, starting it off with the value 1.&lt;br /&gt;
 print(1)&lt;br /&gt;
 value = cw1(1)&lt;br /&gt;
 &lt;br /&gt;
 -- In step 12, c1 should have yielded and returned the value 6.&lt;br /&gt;
 -- So now c1 and c2 should both be suspended.&lt;br /&gt;
 -- STEP 13: Check all that.&lt;br /&gt;
 print(13)&lt;br /&gt;
 assert(value == 6)&lt;br /&gt;
 &lt;br /&gt;
 -- STEP 14: Run c2 directly, NOT nested inside c1 this time, passing it the value 7.&lt;br /&gt;
 print(14)&lt;br /&gt;
 value = cw2(7)&lt;br /&gt;
 &lt;br /&gt;
 -- c2 should have exited normally, returning the value 8.&lt;br /&gt;
 -- Therefore c1 should still be suspended, but c2 should be dead.&lt;br /&gt;
 -- STEP 17: Check all that.&lt;br /&gt;
 print(17)&lt;br /&gt;
 assert(value == 8)&lt;br /&gt;
&lt;br /&gt;
== Interaction with Other APIs ==&lt;br /&gt;
The [[OS (API)#pullEvent|os.pullEventRaw]] (and therefore [[os.pullEvent]]) functions are built on top of coroutines: &amp;lt;code&amp;gt;os.pullEventRaw&amp;lt;/code&amp;gt; actually just calls [[coroutine.yield]], passing the event type filter up to the parent coroutine. The parent coroutine is expected to wait until an event of the required type arrives, then use [[coroutine.resume]] to pass the event to the suspended coroutine (where it will be returned from &amp;lt;code&amp;gt;os.pullEventRaw&amp;lt;/code&amp;gt;). If you use the [[Parallel (API)|parallel API]], this is exactly what [[parallel.waitForAny]] and [[parallel.waitForAll]] do: they pull events from the system event queue (or even from a higher invocation of &amp;lt;code&amp;gt;parallel.waitForAny&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;parallel.waitForAll&amp;lt;/code&amp;gt;!) and deliver them to all nested coroutines. Therefore, the easiest way to use coroutines is the parallel API, if it works for your situation. However, in the event that you are not able to use the parallel API (e.g. if you need to add and remove coroutines from the executing set dynamically), you can build your own dispatcher that delivers events in the same way as the parallel API—looking at the source code to the parallel API may be useful here.&lt;br /&gt;
&lt;br /&gt;
If you choose to use coroutines in a different way, then &amp;lt;code&amp;gt;os.pullEventRaw&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;os.pullEvent&amp;lt;/code&amp;gt; will not work. This in turn will break any other API function which is written on top of &amp;lt;code&amp;gt;os.pullEvent&amp;lt;/code&amp;gt;. As a guideline, nearly any API function that can possibly take time to complete will fall into this category; some examples are:&lt;br /&gt;
* [[rednet.receive]] blocks until either a [[Rednet message (event)|rednet_message event]] or (if a timeout was requested) a matching [[Timer (event)|timer event]] occurs.&lt;br /&gt;
* [[Gps (API)|gps.locate]] blocks until either a number of [[Modem message (event)|modem_message events]] or (if a timeout was requested) a matching [[Timer (event)|timer event]] occurs.&lt;br /&gt;
* [[http.get]] blocks until an [[Http success (event)|HTTP success event]] or [[Http failure (event)|HTTP failure event]] occurs.&lt;br /&gt;
* [[IO (API)|io.read]] and the built-in [[read]] functions block waiting for, presumably, either [[Char (event)|char events]] or [[Key (event)|key events]].&lt;br /&gt;
* [[os.sleep]] blocks until a matching [[Timer (event)|timer event]] occurs.&lt;br /&gt;
* [[textutils.slowPrint]] calls [[os.sleep]].&lt;br /&gt;
* [[textutils.pagedPrint]] blocks until a [[Key (event)|key event]] occurs for each page.&lt;br /&gt;
* Most of the functions in the [[Turtle (API)|turtle API]] (with the exception of [[turtle.getItemCount]], [[turtle.getItemSpace]], and [[turtle.getFuelLevel]]) block waiting for a [[Turtle response (event)|turtle response event]].&lt;br /&gt;
&lt;br /&gt;
Most of these can be worked around by using non-blocking equivalents that return immediately and then queue an event on completion (such as using [[http.request]]) or that deliver an event unconditionally (such as [[Char_(event)|char]] for keyboard input), then handling events in a way that is suitable for the application. However, if possible, it will often be easier to implement event dispatching instead, remembering that [[os.queueEvent]] can be used for inter-coroutine communication within an application. Another alternative, if you must use a custom protocol between your coroutines and dispatcher, might be to replace &amp;lt;code&amp;gt;os.pullEventRaw&amp;lt;/code&amp;gt; with a new function that uses a mechanism appropriate to the application.&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Colors_(API)&amp;diff=5956</id>
		<title>Colors (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Colors_(API)&amp;diff=5956"/>
				<updated>2013-08-25T03:16:57Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: use template for API table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Colors API allows you to manipulate sets of colors. This is useful in conjunction with Bundled Cables from the RedPower mod, RedNet Cables from the MineFactory Reloaded mod, and colors on [[Advanced Computer|Advanced Computers]] and [[Advanced Monitor|Advanced Monitors]].&lt;br /&gt;
&lt;br /&gt;
For the non-American English version just replace 'colors' with 'colours' and it will use the other API, colours—which is exactly the same, except in non-American English (e.g. gray is spelt grey and lightGray is spelt lightGrey).&lt;br /&gt;
&lt;br /&gt;
{{API table|Colors|image=Grid_disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[colors.combine]]({{Type|number}} color1, {{Type|number}} color2, ...)|{{type|number}} value|&lt;br /&gt;
Combines a one or more colors (or sets of colors) into a larger set.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[colors.subtract]]({{Type|number}} colors, {{Type|number}} color1, {{Type|number}} color2, ...)|{{type|number}} value|&lt;br /&gt;
Removes one or more colors (or sets of colors) from an initial set.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[colors.test]]({{type|number}} colors, {{type|number}} color)|{{type|boolean}} contained|&lt;br /&gt;
Tests whether ''color'' is contained within '''colors'''.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Since the colors are just integers, the standard addition (+) and subtraction (-) operators may be used on colors instead of colors.combine and colors.subtract. &lt;br /&gt;
&lt;br /&gt;
Furthermore, the [[Bit (API)]] may be used on sets of colors. For example, &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bCableLeft  = rs.getBundledInput(&amp;quot;left&amp;quot;)&lt;br /&gt;
bCableRight = rs.getBundledInput(&amp;quot;right&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
-- Get a number representing colors on in both right and left bundled cables&lt;br /&gt;
commonColors    = bit.band(bCableLeft, bCableRight)&lt;br /&gt;
&lt;br /&gt;
-- Get all the colors active on either right or left&lt;br /&gt;
totalColors     = bit.bor(bCableLeft, bCableRight)&lt;br /&gt;
&lt;br /&gt;
-- Get the colors which are active on right, or left, but not both at the same time&lt;br /&gt;
exclusiveColors = bit.bxor(bCableLeft, bCableRight)&lt;br /&gt;
&lt;br /&gt;
-- Get the colors that are not active on the left&lt;br /&gt;
offColorsA      = bit.bnot(bCableLeft)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Colors==&lt;br /&gt;
Color constants include, in ascending bit order:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;200px&amp;quot;&lt;br /&gt;
! Color&lt;br /&gt;
! Decimal&lt;br /&gt;
! Hexadecimal&lt;br /&gt;
! Binary&lt;br /&gt;
|-&lt;br /&gt;
| colors.white&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0x1&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0000000000000001&lt;br /&gt;
|-&lt;br /&gt;
| colors.orange&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0x2&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0000000000000010&lt;br /&gt;
|-&lt;br /&gt;
| colors.magenta&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 4&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0x4&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0000000000000100&lt;br /&gt;
|-&lt;br /&gt;
| colors.lightBlue&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 8&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0x8&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0000000000001000&lt;br /&gt;
|-&lt;br /&gt;
| colors.yellow&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 16&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0x10&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0000000000010000&lt;br /&gt;
|-&lt;br /&gt;
| colors.lime&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 32&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0x20&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0000000000100000&lt;br /&gt;
|-&lt;br /&gt;
| colors.pink&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 64&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0x40&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0000000001000000&lt;br /&gt;
|-&lt;br /&gt;
| colors.gray&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 128&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0x80&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0000000010000000&lt;br /&gt;
|-&lt;br /&gt;
| colors.lightGray&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 256&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0x100&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0000000100000000&lt;br /&gt;
|-&lt;br /&gt;
| colors.cyan&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 512&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0x200&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0000001000000000&lt;br /&gt;
|-&lt;br /&gt;
| colors.purple&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 1024&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0x400&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0000010000000000&lt;br /&gt;
|-&lt;br /&gt;
| colors.blue&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 2048&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0x800&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0000100000000000&lt;br /&gt;
|-&lt;br /&gt;
| colors.brown&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 4096&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0x1000&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0001000000000000&lt;br /&gt;
|-&lt;br /&gt;
| colors.green&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 8192&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0x2000&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0010000000000000&lt;br /&gt;
|-&lt;br /&gt;
| colors.red&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 16384&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0x4000&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0100000000000000&lt;br /&gt;
|-&lt;br /&gt;
| colors.black&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 32768&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 0x8000&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 1000000000000000&lt;br /&gt;
|}&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Bit_(API)&amp;diff=5955</id>
		<title>Bit (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Bit_(API)&amp;diff=5955"/>
				<updated>2013-08-25T03:08:51Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: update deprecated API table too&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Bit API is for manipulating numbers using bitwise binary operations.&lt;br /&gt;
&lt;br /&gt;
All of these functions treat the numbers as 32-bit integers, and will raise an error if an input number is greater than 4,294,967,295.&lt;br /&gt;
&lt;br /&gt;
{{API table|Bit|image=Grid disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[bit.blshift]]({{type|number}} n, {{type|number}} bits)|{{type|number}} value&lt;br /&gt;
|Shifts a number left by a specified number of bits.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[bit.brshift]]({{type|number}} n, {{type|number}} bits)|{{type|number}} value&lt;br /&gt;
|Shifts a number right arithmetically by a specified number of bits.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[bit.blogic_rshift]]({{type|number}} n, {{type|number}} bits)|{{type|number}} value&lt;br /&gt;
|Shifts a number right logically by a specified number of bits.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[bit.bxor]]({{type|number}} m, {{type|number}} n)|{{type|number}} value&lt;br /&gt;
|Computes the bitwise exclusive OR of two numbers.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[bit.bor]]({{type|number}} m, {{type|number}} n)|{{type|number}} value&lt;br /&gt;
|Computes the bitwise inclusive OR of two numbers.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[bit.band]]({{type|number}} m, {{type|number}} n)|{{type|number}} value&lt;br /&gt;
|Computes the bitwise AND of two numbers.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[bit.band]]({{type|number}} n)|{{type|number}} value&lt;br /&gt;
|Computes the bitwise NOT of a numbers.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Deprecated Functions =&lt;br /&gt;
{{Deprecated&lt;br /&gt;
|plural=yes&lt;br /&gt;
|type=These functions&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{API table|Bit|image=Grid disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[bit.tobits]]({{type|number}} n)|{{type|table}} bit_tbl&lt;br /&gt;
|Converts a number to an array (numerically-indexed table) containing the corresponding binary bit values.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[bit.tonumb]]({{type|table}} bit_tbl)|{{type|number}} value&lt;br /&gt;
|Converts an array (numerically-indexed table) of 0 and 1 values representing a number in binary into that number.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Bit_(API)&amp;diff=5954</id>
		<title>Bit (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Bit_(API)&amp;diff=5954"/>
				<updated>2013-08-25T03:07:20Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Bit API is for manipulating numbers using bitwise binary operations.&lt;br /&gt;
&lt;br /&gt;
All of these functions treat the numbers as 32-bit integers, and will raise an error if an input number is greater than 4,294,967,295.&lt;br /&gt;
&lt;br /&gt;
{{API table|Bit|image=Grid disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[bit.blshift]]({{type|number}} n, {{type|number}} bits)|{{type|number}} value&lt;br /&gt;
|Shifts a number left by a specified number of bits.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[bit.brshift]]({{type|number}} n, {{type|number}} bits)|{{type|number}} value&lt;br /&gt;
|Shifts a number right arithmetically by a specified number of bits.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[bit.blogic_rshift]]({{type|number}} n, {{type|number}} bits)|{{type|number}} value&lt;br /&gt;
|Shifts a number right logically by a specified number of bits.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[bit.bxor]]({{type|number}} m, {{type|number}} n)|{{type|number}} value&lt;br /&gt;
|Computes the bitwise exclusive OR of two numbers.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[bit.bor]]({{type|number}} m, {{type|number}} n)|{{type|number}} value&lt;br /&gt;
|Computes the bitwise inclusive OR of two numbers.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[bit.band]]({{type|number}} m, {{type|number}} n)|{{type|number}} value&lt;br /&gt;
|Computes the bitwise AND of two numbers.&lt;br /&gt;
|}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row&lt;br /&gt;
|[[bit.band]]({{type|number}} n)|{{type|number}} value&lt;br /&gt;
|Computes the bitwise NOT of a numbers.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Deprecated Functions =&lt;br /&gt;
{{Deprecated&lt;br /&gt;
|plural=yes&lt;br /&gt;
|type=These functions&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%; border: solid 1px black; margin: 2px; border-spacing: 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;3&amp;quot; style=&amp;quot;font-weight: bold; font-size: large; padding-bottom: .3em; border-bottom: solid #C9C9C9 1px; background: #D3FFC2; line-height:28px;&amp;quot;&amp;gt;[[File:Grid_disk.png|24px]]&amp;amp;nbsp;&amp;amp;nbsp;Bit (API)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 100px; background: #E0E0E0; padding: .4em; font-weight:bold;&amp;quot;&amp;gt;Return&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 350px; background: #E0E0E0; padding: .4em; font-weight:bold;&amp;quot;&amp;gt;Method name&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;background: #E0E0E0; padding: .4em; font-weight:bold;&amp;quot;&amp;gt;Description&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;{{Type|table}} bit_tbl&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;[[bit.tobits]]({{Type|number}} n)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;Converts a number to an array (numerically-indexed table) containing the corresponding binary bit values.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;{{Type|number}} value&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;[[bit.tonumb]]({{Type|table}} bit_tbl)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;Converts an array (numerically-indexed table) of 0 and 1 values representing a number in binary into that number.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Template:API_table&amp;diff=5953</id>
		<title>Template:API table</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Template:API_table&amp;diff=5953"/>
				<updated>2013-08-25T03:01:03Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%; border: solid 1px black; margin: 2px; border-spacing: 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;3&amp;quot; style=&amp;quot;font-weight: bold; font-size: large; padding-bottom: .3em; border-bottom: solid #C9C9C9 1px; background: #D3FFC2; line-height:28px; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
[[File:{{{image}}}|24px]]&amp;amp;nbsp;&amp;amp;nbsp;{{{1}}} (API)&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 350px; background: #E0E0E0; padding: .4em; font-weight:bold;&amp;quot;&amp;gt;Function&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 150px; background: #E0E0E0; padding: .4em; font-weight:bold;&amp;quot;&amp;gt;Return values&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;background: #E0E0E0; padding: .4em; font-weight:bold;&amp;quot;&amp;gt;Description&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
{{{2}}}&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Template:API table/doc}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Template:API_table/doc&amp;diff=5952</id>
		<title>Template:API table/doc</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Template:API_table/doc&amp;diff=5952"/>
				<updated>2013-08-25T03:00:56Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: Created page with &amp;quot;== Example API table ==  This code:  &amp;lt;pre&amp;gt; &amp;lt;nowiki&amp;gt; {{API table|Term|image=Grid disk.png|2=  {{API table/row|term.write({{type|string}} text)|{{type|nil}}|Writes ''text'' ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Example API table ==&lt;br /&gt;
&lt;br /&gt;
This code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{API table|Term|image=Grid disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.write]]({{type|string}} text)|{{type|nil}}|Writes ''text'' to the screen.|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.clear]]()|{{type|nil}}|Clears the entire screen}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
produces this table:&lt;br /&gt;
&lt;br /&gt;
{{API table|Term|image=Grid disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.write]]({{type|string}} text)|{{type|nil}}|Writes ''text'' to the screen.|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.clear]]()|{{type|nil}}|Clears the entire screen}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Peripheral_(API)&amp;diff=5951</id>
		<title>Peripheral (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Peripheral_(API)&amp;diff=5951"/>
				<updated>2013-08-25T02:55:31Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: You don't need to do this!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__ &lt;br /&gt;
The Peripheral API is for interacting with [[peripheral]]s connected to the computer, such as the [[Disk Drive]], the [[Advanced Monitor]] and [[Monitor]]. (More peripherals can be found under [[:Category:Peripherals|here]]).&lt;br /&gt;
&lt;br /&gt;
Each peripheral block has a name, or ''side''. Although peripherals can now be attached to a computer using networking cables, the word ''side'' is a holdover from when peripherals needed to be directly next to the computer.&lt;br /&gt;
&lt;br /&gt;
If the peripheral is next to the computer, its side is either &amp;quot;front&amp;quot;, &amp;quot;back&amp;quot;, &amp;quot;left&amp;quot;, &amp;quot;right&amp;quot;, &amp;quot;top&amp;quot; or &amp;quot;bottom&amp;quot;. If the peripheral is attached by a cable, its side will follow the format &amp;quot;''type''_''id''&amp;quot;, for example &amp;quot;printer_0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Peripheral functions are called '''methods''', a term borrowed from Java.&lt;br /&gt;
&lt;br /&gt;
{{API table|Peripheral|image=Grid disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[peripheral.isPresent]]({{type|string}} side)|{{type|boolean}}|&lt;br /&gt;
Returns '''true''' if a peripheral is connected on ''side''.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[peripheral.getType]]({{type|string}} side)|{{type|string}}/{{type|nil}}|&lt;br /&gt;
Returns the type of peripheral connected on ''side'', as a string.&lt;br /&gt;
If no peripheral is connected, returns nil.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[peripheral.getMethods]]({{type|string}} side)|{{type|table}}/{{type|nil}}|&lt;br /&gt;
Returns a list of the names of all the methods of the peripheral connected on ''side''.&lt;br /&gt;
If no peripheral is connected, returns nil.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[peripheral.call]]({{type|string}} side, {{type|string}} method, ...)|any|&lt;br /&gt;
Calls a method on a peripheral. The arguments (apart from ''side'' and ''method'') and the return values depend on the method being called.&lt;br /&gt;
If no peripheral is connected, returns nil.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[peripheral.wrap]]({{type|string}} side)|{{type|table}}/{{type|nil}}|&lt;br /&gt;
Returns a table of functions, allowing you to call peripheral methods as if they were normal Lua functions.&lt;br /&gt;
If no peripheral is connected, returns nil.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Connecting peripherals using networking cables==&lt;br /&gt;
Using Networking Cables, you can attach and use peripherals without having them directly touching the computer. To connect a peripheral in this way, place a Wired Modem on any side of your computer, as you would a [[Wireless Modem]]. Place a Wired Modem on each peripheral you wish to connect, and then connect all of them with Networking Cables. Then right click each of the wired modems.&lt;br /&gt;
&lt;br /&gt;
You should receive a message in your chat bar for each peripheral informing you of a successful connection, and the peripheral side.&lt;br /&gt;
&lt;br /&gt;
==Monitor==&lt;br /&gt;
[[Monitor#Peripheral_Functions|Monitor Peripheral functions]] have been moved to the [[Monitor]] page.&lt;br /&gt;
In addition, the [[Advanced_Monitor#Peripheral_Functions|Advanced Monitor Peripheral functions]] have been moved to the [[Advanced Monitor]] page.&lt;br /&gt;
&lt;br /&gt;
==Printer==&lt;br /&gt;
[[Printer#Peripheral_Functions|Printer Peripheral functions]] have been moved to the [[Printer]] page.&lt;br /&gt;
&lt;br /&gt;
==Computers==&lt;br /&gt;
[[Computer#Peripheral_Functions|Computer Peripheral functions]] have been moved to the [[Computer]] page.&lt;br /&gt;
In addition, the [[Advanced_Computer#Peripheral_Functions|Advanced Computer Peripheral functions]] have been moved to the [[Advanced Computer]] page.&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Peripheral_(API)&amp;diff=5950</id>
		<title>Peripheral (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Peripheral_(API)&amp;diff=5950"/>
				<updated>2013-08-25T02:51:25Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: Forgot capitalization&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__ &lt;br /&gt;
The Peripheral API is for interacting with [[peripheral]]s connected to the computer, such as the [[Disk Drive]], the [[Advanced Monitor]] and [[Monitor]]. (More peripherals can be found under [[:Category:Peripherals|here]]).&lt;br /&gt;
&lt;br /&gt;
Each peripheral block has a name, or ''side''. Although peripherals can now be attached to a computer using networking cables, the word ''side'' is a holdover from when peripherals needed to be directly next to the computer.&lt;br /&gt;
&lt;br /&gt;
If the peripheral is next to the computer, its side is either &amp;quot;front&amp;quot;, &amp;quot;back&amp;quot;, &amp;quot;left&amp;quot;, &amp;quot;right&amp;quot;, &amp;quot;top&amp;quot; or &amp;quot;bottom&amp;quot;. If the peripheral is attached by a cable, its side will follow the format &amp;quot;''type''_''id''&amp;quot;, for example &amp;quot;printer_0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Peripheral functions are called '''methods''', a term borrowed from Java.&lt;br /&gt;
&lt;br /&gt;
{{API table|Peripheral|image=Grid disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[peripheral.isPresent]]({{type|string}} side)|{{type|boolean}}|&lt;br /&gt;
Returns '''true''' if a peripheral is connected on ''side''.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[peripheral.getType]]({{type|string}} side)|{{type|string}}/{{type|nil}}|&lt;br /&gt;
Returns the type of peripheral connected on ''side'', as a string.&lt;br /&gt;
If no peripheral is connected, returns nil.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[peripheral.getMethods]]({{type|string}} side)|{{type|table}}/{{type|nil}}|&lt;br /&gt;
Returns a list of the names of all the methods of the peripheral connected on ''side''.&lt;br /&gt;
If no peripheral is connected, returns nil.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[peripheral.call]]({{type|string}} side, {{type|string}} method, ...)|any|&lt;br /&gt;
Calls a method on a peripheral. The arguments (apart from ''side'' and ''method'') and the return values depend on the method being called.&lt;br /&gt;
If no peripheral is connected, returns nil.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[peripheral.wrap]]({{type|string}} side)|{{type|table}}/{{type|nil}}|&lt;br /&gt;
Returns a table of functions, allowing you to call peripheral methods as if they were normal Lua functions.&lt;br /&gt;
If no peripheral is connected, returns nil.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Remote Peripherals using Networking Cables==&lt;br /&gt;
Using Networking Cables, you can attach and use peripherals without having them directly touching the computer. To connect a peripheral in this way, place a Wired Modem on any side of your computer, as you would a [[Wireless Modem]], as well as all the peripherals you wish to connect, connecting all of them with Networking Cables. Then right click each of the wired modems. You should receive messages in your chat bar informing you of a successful connection. Don't forget to connect the [[Computer|computer]] too!&lt;br /&gt;
&lt;br /&gt;
Finally, you need to wrap the wired modem on your [[Computer|computer]] using the methods above. As well as those outlined on the [[Modem_(API)| Modem API]] page, the following additional functions will then become available to you, where ''p'' is the variable the modem is wrapped to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%; border: solid 1px black; margin: 2px; border-spacing: 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 350px; background: #E0E0E0; padding: .4em; font-weight:bold;&amp;quot;&amp;gt;Method Name&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;background: #E0E0E0; padding: .4em; font-weight:bold;&amp;quot;&amp;gt;Description&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;p.getNamesRemote()&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;Returns the names of all connected peripherals. Peripheral names are the type of peripheral followed by an underscore and a unique number, e.g. ''&amp;quot;disk_0&amp;quot;''.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;p.isPresentRemote(peripheral name)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;Returns '''true''' if the specified peripheral is connected; '''false''' otherwise. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;p.getTypeRemote(peripheral name)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;Returns the type of the specified peripheral.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;p.getMethodsRemote(peripheral name)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;Returns a table of all the methods for the specified peripheral. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;p.callRemote(peripheral name, peripheral method)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;Calls the specified method for the specified peripheral.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Monitor==&lt;br /&gt;
[[Monitor#Peripheral_Functions|Monitor Peripheral functions]] have been moved to the [[Monitor]] page.&lt;br /&gt;
In addition, the [[Advanced_Monitor#Peripheral_Functions|Advanced Monitor Peripheral functions]] have been moved to the [[Advanced Monitor]] page.&lt;br /&gt;
&lt;br /&gt;
==Printer==&lt;br /&gt;
[[Printer#Peripheral_Functions|Printer Peripheral functions]] have been moved to the [[Printer]] page.&lt;br /&gt;
&lt;br /&gt;
==Computers==&lt;br /&gt;
[[Computer#Peripheral_Functions|Computer Peripheral functions]] have been moved to the [[Computer]] page.&lt;br /&gt;
In addition, the [[Advanced_Computer#Peripheral_Functions|Advanced Computer Peripheral functions]] have been moved to the [[Advanced Computer]] page.&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Peripheral_(API)&amp;diff=5949</id>
		<title>Peripheral (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Peripheral_(API)&amp;diff=5949"/>
				<updated>2013-08-25T02:51:08Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: Rewrote API function table, using Template:API_table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__ &lt;br /&gt;
The Peripheral API is for interacting with [[peripheral]]s connected to the computer, such as the [[Disk Drive]], the [[Advanced Monitor]] and [[Monitor]]. (More peripherals can be found under [[:Category:Peripherals|here]]).&lt;br /&gt;
&lt;br /&gt;
Each peripheral block has a name, or ''side''. Although peripherals can now be attached to a computer using networking cables, the word ''side'' is a holdover from when peripherals needed to be directly next to the computer.&lt;br /&gt;
&lt;br /&gt;
If the peripheral is next to the computer, its side is either &amp;quot;front&amp;quot;, &amp;quot;back&amp;quot;, &amp;quot;left&amp;quot;, &amp;quot;right&amp;quot;, &amp;quot;top&amp;quot; or &amp;quot;bottom&amp;quot;. If the peripheral is attached by a cable, its side will follow the format &amp;quot;''type''_''id''&amp;quot;, for example &amp;quot;printer_0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Peripheral functions are called '''methods''', a term borrowed from Java.&lt;br /&gt;
&lt;br /&gt;
{{API table|peripheral|image=Grid disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[peripheral.isPresent]]({{type|string}} side)|{{type|boolean}}|&lt;br /&gt;
Returns '''true''' if a peripheral is connected on ''side''.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[peripheral.getType]]({{type|string}} side)|{{type|string}}/{{type|nil}}|&lt;br /&gt;
Returns the type of peripheral connected on ''side'', as a string.&lt;br /&gt;
If no peripheral is connected, returns nil.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[peripheral.getMethods]]({{type|string}} side)|{{type|table}}/{{type|nil}}|&lt;br /&gt;
Returns a list of the names of all the methods of the peripheral connected on ''side''.&lt;br /&gt;
If no peripheral is connected, returns nil.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[peripheral.call]]({{type|string}} side, {{type|string}} method, ...)|any|&lt;br /&gt;
Calls a method on a peripheral. The arguments (apart from ''side'' and ''method'') and the return values depend on the method being called.&lt;br /&gt;
If no peripheral is connected, returns nil.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[peripheral.wrap]]({{type|string}} side)|{{type|table}}/{{type|nil}}|&lt;br /&gt;
Returns a table of functions, allowing you to call peripheral methods as if they were normal Lua functions.&lt;br /&gt;
If no peripheral is connected, returns nil.&lt;br /&gt;
|odd}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Remote Peripherals using Networking Cables==&lt;br /&gt;
Using Networking Cables, you can attach and use peripherals without having them directly touching the computer. To connect a peripheral in this way, place a Wired Modem on any side of your computer, as you would a [[Wireless Modem]], as well as all the peripherals you wish to connect, connecting all of them with Networking Cables. Then right click each of the wired modems. You should receive messages in your chat bar informing you of a successful connection. Don't forget to connect the [[Computer|computer]] too!&lt;br /&gt;
&lt;br /&gt;
Finally, you need to wrap the wired modem on your [[Computer|computer]] using the methods above. As well as those outlined on the [[Modem_(API)| Modem API]] page, the following additional functions will then become available to you, where ''p'' is the variable the modem is wrapped to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%; border: solid 1px black; margin: 2px; border-spacing: 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 350px; background: #E0E0E0; padding: .4em; font-weight:bold;&amp;quot;&amp;gt;Method Name&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;background: #E0E0E0; padding: .4em; font-weight:bold;&amp;quot;&amp;gt;Description&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;p.getNamesRemote()&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;Returns the names of all connected peripherals. Peripheral names are the type of peripheral followed by an underscore and a unique number, e.g. ''&amp;quot;disk_0&amp;quot;''.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;p.isPresentRemote(peripheral name)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;Returns '''true''' if the specified peripheral is connected; '''false''' otherwise. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;p.getTypeRemote(peripheral name)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;Returns the type of the specified peripheral.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;p.getMethodsRemote(peripheral name)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;Returns a table of all the methods for the specified peripheral. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;p.callRemote(peripheral name, peripheral method)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;Calls the specified method for the specified peripheral.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Monitor==&lt;br /&gt;
[[Monitor#Peripheral_Functions|Monitor Peripheral functions]] have been moved to the [[Monitor]] page.&lt;br /&gt;
In addition, the [[Advanced_Monitor#Peripheral_Functions|Advanced Monitor Peripheral functions]] have been moved to the [[Advanced Monitor]] page.&lt;br /&gt;
&lt;br /&gt;
==Printer==&lt;br /&gt;
[[Printer#Peripheral_Functions|Printer Peripheral functions]] have been moved to the [[Printer]] page.&lt;br /&gt;
&lt;br /&gt;
==Computers==&lt;br /&gt;
[[Computer#Peripheral_Functions|Computer Peripheral functions]] have been moved to the [[Computer]] page.&lt;br /&gt;
In addition, the [[Advanced_Computer#Peripheral_Functions|Advanced Computer Peripheral functions]] have been moved to the [[Advanced Computer]] page.&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Template:API_table&amp;diff=5946</id>
		<title>Template:API table</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Template:API_table&amp;diff=5946"/>
				<updated>2013-08-25T02:43:39Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: shrink return value column&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%; border: solid 1px black; margin: 2px; border-spacing: 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;3&amp;quot; style=&amp;quot;font-weight: bold; font-size: large; padding-bottom: .3em; border-bottom: solid #C9C9C9 1px; background: #D3FFC2; line-height:28px; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
[[File:{{{image}}}|24px]]&amp;amp;nbsp;&amp;amp;nbsp;{{{1}}} (API)&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 350px; background: #E0E0E0; padding: .4em; font-weight:bold;&amp;quot;&amp;gt;Function&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 150px; background: #E0E0E0; padding: .4em; font-weight:bold;&amp;quot;&amp;gt;Return values&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;background: #E0E0E0; padding: .4em; font-weight:bold;&amp;quot;&amp;gt;Description&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
{{{2}}}&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Term_(API)&amp;diff=5945</id>
		<title>Term (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Term_(API)&amp;diff=5945"/>
				<updated>2013-08-25T02:43:14Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: Added return types&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Terminal API provides functions for writing text to the terminal and monitors, and drawing ASCII graphics.&lt;br /&gt;
&lt;br /&gt;
Methods in ''italics'' are available only to [[Advanced Computer|Advanced Computers]] and [[Advanced Monitor|Advanced Monitors]].&lt;br /&gt;
Methods in '''bold''' are available only to [[Monitor|Monitors]].&lt;br /&gt;
&lt;br /&gt;
{{API table|Term|image=Grid disk.png|2=&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.write]]({{type|string}} text)|{{type|nil}}&lt;br /&gt;
|Writes ''text'' to the screen.|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.clear]]()|{{type|nil}}&lt;br /&gt;
|Clears the entire screen}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.clearLine]]()|{{type|nil}}&lt;br /&gt;
|Clears the line the cursor is on|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.getCursorPos]]()|{{type|nil}}&lt;br /&gt;
|Returns two arguments containing the x and the y position of the cursor.}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.setCursorPos]]({{type|number}} x, {{type|number}} y)|{{type|nil}}&lt;br /&gt;
|Sets the cursor's position.|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.setCursorBlink]]({{type|boolean}} bool)|{{type|nil}}&lt;br /&gt;
|Disables the blinking or turns it on.}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.isColor]]()|{{type|boolean}}&lt;br /&gt;
|Returns if the computer supports color. (Used to determine whether or not an [[Advanced Computer]] is being used)|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.getSize]]()|{{type|number}} x, {{type|number}} y&lt;br /&gt;
|Returns two arguments containing the x and the y values stating the size of the screen. (Good for if you're making something to be compatible with both [[Turtle]]s and [[Computer]]s.)}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.scroll]]({{type|number}} n)|{{type|nil}}&lt;br /&gt;
|Scrolls the terminal ''n'' lines.|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.redirect]](target)|{{type|nil}}&lt;br /&gt;
|Redirects terminal output to a monitor or other redirect target. (Use [[peripheral.wrap]] to acquire a monitor &amp;quot;object&amp;quot;.)}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|[[term.restore]]()|{{type|nil}}&lt;br /&gt;
|Restores terminal output to the previous target.|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|''[[term.setTextColor]]({{type|number}} [[Colors (API)|color]])''|{{type|nil}}&lt;br /&gt;
|Sets the text color of the terminal. Available only to [[Advanced Computer|Advanced Computers]] and [[Advanced Monitor]]s.}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|''[[term.setBackgroundColor]]({{type|number}} [[Colors (API)#Colors|color]])''|{{type|nil}}&lt;br /&gt;
|Sets the background color of the terminal. Available only to [[Advanced Computer|Advanced Computers]] and [[Advanced Monitor]]s.|odd}}&lt;br /&gt;
&lt;br /&gt;
{{API table/row|'''[[monitor.setTextScale]]({{type|number}} scale)'''|{{type|nil}}&lt;br /&gt;
|Sets the text scale on a [[Monitor]].}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Template:API_table/row&amp;diff=5943</id>
		<title>Template:API table/row</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Template:API_table/row&amp;diff=5943"/>
				<updated>2013-08-25T02:41:18Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: fixed previous edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;tr style=&amp;quot;background-color: {{#ifeq:{{{4|}}}|odd|#FFFFFF|#E8E8E8}};&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;{{{1}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;{{{2}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;{{{3|}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Template:API_table/row&amp;diff=5942</id>
		<title>Template:API table/row</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Template:API_table/row&amp;diff=5942"/>
				<updated>2013-08-25T02:40:33Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: added return value column&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;tr style=&amp;quot;background-color: {{#ifeq:{{{3|}}}|odd|#FFFFFF|#E8E8E8}};&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;{{{1}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;{{{2}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; padding: .4em;&amp;quot;&amp;gt;{{{3|}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Template:API_table&amp;diff=5941</id>
		<title>Template:API table</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Template:API_table&amp;diff=5941"/>
				<updated>2013-08-25T02:39:58Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: added return value column&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%; border: solid 1px black; margin: 2px; border-spacing: 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;2&amp;quot; style=&amp;quot;font-weight: bold; font-size: large; padding-bottom: .3em; border-bottom: solid #C9C9C9 1px; background: #D3FFC2; line-height:28px; text-align: left&amp;quot;&amp;gt;&lt;br /&gt;
[[File:{{{image}}}|24px]]&amp;amp;nbsp;&amp;amp;nbsp;{{{1}}} (API)&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 350px; background: #E0E0E0; padding: .4em; font-weight:bold;&amp;quot;&amp;gt;Function&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 250px; background: #E0E0E0; padding: .4em; font-weight:bold;&amp;quot;&amp;gt;Return values&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;background: #E0E0E0; padding: .4em; font-weight:bold;&amp;quot;&amp;gt;Description&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
{{{2}}}&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Peripheral&amp;diff=5939</id>
		<title>Peripheral</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Peripheral&amp;diff=5939"/>
				<updated>2013-08-25T02:19:03Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: Created page with &amp;quot;A '''peripheral''' is a Minecraft block which can be controlled using the peripheral API. Sometimes this is the main purpose of the block, e.g. for monito...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A '''peripheral''' is a Minecraft block which can be controlled using the [[Peripheral (API)|peripheral API]].&lt;br /&gt;
Sometimes this is the main purpose of the block, e.g. for monitors and printers.&lt;br /&gt;
Other times, it is merely incidental to the block's main purpose.&lt;br /&gt;
&lt;br /&gt;
== Built-in peripherals ==&lt;br /&gt;
ComputerCraft itself includes some peripherals. Specifically:&lt;br /&gt;
* [[Monitor]]s and [[Advanced Monitor|advanced monitor]]s allow computers to display text in the world.&lt;br /&gt;
* [[Printer]]s allow computers to print text on paper.&lt;br /&gt;
* [[Disk Drive|Disk drive]]s allow computers to access floppy disks.&lt;br /&gt;
* [[Wireless Modem|Wireless]] and [[Wired Modem|wired]] modems allow computers to send messages to each other.&lt;br /&gt;
* [[Computer]]s, [[Advanced Computer|advanced computer]]s, [[turtle]]s and [[Advanced Turtle|advanced turtle]]s can be turned on and off using the peripheral API.&lt;br /&gt;
&lt;br /&gt;
== Mod peripherals ==&lt;br /&gt;
Many mods add blocks which are peripherals. If this is the main purpose of the mod, it is often called a '''peripheral mod'''. Confusingly, this is sometimes shortened to '''peripheral'''.&lt;br /&gt;
&lt;br /&gt;
Some mods, notably [[OpenPeripherals]], add a peripheral ability to blocks which don't normally have it (such as chests).&lt;br /&gt;
&lt;br /&gt;
See [[:Category:User Created Peripherals]].&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Turtle.refuel&amp;diff=5057</id>
		<title>Turtle.refuel</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Turtle.refuel&amp;diff=5057"/>
				<updated>2013-02-04T12:03:03Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=turtle.refuel&lt;br /&gt;
|args=count&lt;br /&gt;
|api=turtle&lt;br /&gt;
|returns=[[boolean_(type)|boolean]] true if fuel, else false.&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|desc=Fills the turtle with fuel.&lt;br /&gt;
|examples=&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Fills the turtle with fuel&lt;br /&gt;
|code=turtle.refuel( 4 )&lt;br /&gt;
|output=Tries to refuel with up to 4 items, returns true if it is a fuel and false if not. &lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Fuel Values ==&lt;br /&gt;
Fuel values for different items.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Item&lt;br /&gt;
! Movement gained&lt;br /&gt;
! Added by&lt;br /&gt;
|-&lt;br /&gt;
| Biofuel Can&lt;br /&gt;
| 520&lt;br /&gt;
| IndustrialCraft&lt;br /&gt;
|- &lt;br /&gt;
| Scrap&lt;br /&gt;
| 15&lt;br /&gt;
| IndustrialCraft&lt;br /&gt;
|-&lt;br /&gt;
| Coalfuel Can&lt;br /&gt;
| 1520&lt;br /&gt;
| IndustrialCraft&lt;br /&gt;
|-&lt;br /&gt;
| Wooden Scaffolding&lt;br /&gt;
| 15&lt;br /&gt;
| IndustrialCraft&lt;br /&gt;
|-&lt;br /&gt;
| Peat&lt;br /&gt;
| 80&lt;br /&gt;
| Forestry&lt;br /&gt;
|- &lt;br /&gt;
| Sugar Cane&lt;br /&gt;
| 0&lt;br /&gt;
| Vanilla&lt;br /&gt;
|-&lt;br /&gt;
| Wooden Tools&lt;br /&gt;
| 10&lt;br /&gt;
| Vanilla &lt;br /&gt;
|-&lt;br /&gt;
| Lava&lt;br /&gt;
| 1000&lt;br /&gt;
| Vanilla &lt;br /&gt;
|-&lt;br /&gt;
| Blaze Rod&lt;br /&gt;
| 120&lt;br /&gt;
| Vanilla &lt;br /&gt;
|-&lt;br /&gt;
| Wood Blocks&lt;br /&gt;
| 15&lt;br /&gt;
| Vanilla &lt;br /&gt;
|-&lt;br /&gt;
| Sticks&lt;br /&gt;
| 5&lt;br /&gt;
| Vanilla &lt;br /&gt;
|-&lt;br /&gt;
| Coal/Charcoal&lt;br /&gt;
| 80&lt;br /&gt;
| Vanilla &lt;br /&gt;
|-&lt;br /&gt;
| Mushroom Blocks&lt;br /&gt;
| 15&lt;br /&gt;
| Vanilla &lt;br /&gt;
|-&lt;br /&gt;
| Coal Coke&lt;br /&gt;
| 320&lt;br /&gt;
| Railcraft&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
1.41:&lt;br /&gt;
&lt;br /&gt;
The formula for calculating the movement gain from a fuel is &amp;quot;((fuel / 100) * 6)&amp;quot;.&lt;br /&gt;
Where fuel is the items burn time in ticks in a regular furnace and &amp;quot;/&amp;quot; is integer division.&lt;br /&gt;
&lt;br /&gt;
1.42+:&lt;br /&gt;
&lt;br /&gt;
Formula changed to ((fuel * 6) / 100).&lt;br /&gt;
This will give more accurate movement values.&lt;br /&gt;
&lt;br /&gt;
1.48:&lt;br /&gt;
&lt;br /&gt;
Formula changed to ((fuel * 5) / 100)&lt;br /&gt;
== Trivia == &lt;br /&gt;
&lt;br /&gt;
[[Category:Lua_Core_Functions]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Monitor&amp;diff=4919</id>
		<title>Monitor</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Monitor&amp;diff=4919"/>
				<updated>2013-01-09T18:27:40Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: I think this is what &amp;quot;damage value: un-used&amp;quot; actually means.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Block&lt;br /&gt;
|name=Monitor&lt;br /&gt;
|image=Iso_Monitor.png&lt;br /&gt;
|id=4094&lt;br /&gt;
|damage-value=0&lt;br /&gt;
|is-peripheral=Yes&lt;br /&gt;
}}&lt;br /&gt;
The '''Monitor''' is a block that can display text on its front side. When several screen blocks are placed on the same plane, it will form a single monitor. It is useful for displaying information at a server spawn, showing a program on the monitor, and even showing the status of an IC2 reactor! (provided you have [[CcSensors]] installed)&lt;br /&gt;
&lt;br /&gt;
==Recipe==&lt;br /&gt;
{{Crafting grid&lt;br /&gt;
 |A1=stone |B1=stone      |C1=stone&lt;br /&gt;
 |A2=stone |B2=glass_pane |C2=stone&lt;br /&gt;
 |A3=stone |B3=stone      |C3=stone&lt;br /&gt;
 |Output=Monitor&lt;br /&gt;
 }}&lt;br /&gt;
[[Category:Blocks]]&lt;br /&gt;
&lt;br /&gt;
==Using the Monitor==&lt;br /&gt;
[[File:Computer_w_DiskDrive_w_Monitor.png|frame|428x241px|right|A 2x2 [[Monitor]], connected to a [[Computer]], with a [[Disk Drive]] connected.]]&lt;br /&gt;
The command used to control a monitor: monitor [top, bottom, left, right, front or back] [the name of the command to display]&lt;br /&gt;
&lt;br /&gt;
So, in this case, if you typed &amp;quot;hello&amp;quot; in the name of the program part, the monitor would display &amp;quot;Hello World!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Using the Monitor within the Lua interface==&lt;br /&gt;
The monitor can be summoned through a command or through coding with the Lua command.&lt;br /&gt;
&lt;br /&gt;
The command used to control a monitor within the Lua interface: shell.run(&amp;quot;monitor&amp;quot; &amp;quot;[top, bottom, left, right, front or back]&amp;quot; &amp;quot;[the name of the command to display]&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
For example, here is a way of summoning the monitor through a command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;[[print]](&amp;quot;Hello Monitor!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
[[Shell (API)|shell]].[[Shell.run|run]](&amp;quot;monitor&amp;quot;, &amp;quot;right&amp;quot;, &amp;quot;hello&amp;quot;)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Peripheral Functions ==&lt;br /&gt;
'''''monitor'' stands for the variable you wrapped the monitor to.'''&lt;br /&gt;
''Example:'' monitor = peripheral.wrap( &amp;quot;top&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
Methods in ''italic'' are available on [[Advanced Monitor|Advanced Monitors]] only.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;210px&amp;quot;|Method name&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;*&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
|[[term.write|monitor.write]]()&lt;br /&gt;
|Write to the Monitor's screen.&lt;br /&gt;
|-&lt;br /&gt;
|[[term.scroll|monitor.scroll]](n)&lt;br /&gt;
|Scrolls the monitor screen.&lt;br /&gt;
|-&lt;br /&gt;
|[[term.setCursorPos|monitor.setCursorPos]](x, y)&lt;br /&gt;
|Sets the cursor position on the Monitor.&lt;br /&gt;
|-&lt;br /&gt;
|[[term.setCursorBlink|monitor.setCursorBlink]](b)&lt;br /&gt;
|Enables or disables cursor blinking.&lt;br /&gt;
|-&lt;br /&gt;
|[[term.getCursorPos|monitor.getCursorPos]]()&lt;br /&gt;
|Returns two arguments containing the x and the y position of the cursor on the Monitor.&lt;br /&gt;
|-&lt;br /&gt;
|[[term.getSize|monitor.getSize]]()&lt;br /&gt;
|Returns two arguments containing the x and the y values stating the size of the Monitor. &lt;br /&gt;
|-&lt;br /&gt;
|[[term.clear|monitor.clear]]()&lt;br /&gt;
|Clears the Monitor.&lt;br /&gt;
|-&lt;br /&gt;
|[[term.clearLine|monitor.clearLine]]()&lt;br /&gt;
|Clears the line the cursor is on.&lt;br /&gt;
|-&lt;br /&gt;
|[[monitor.setTextScale|monitor.setTextScale]](scale)&lt;br /&gt;
|Sets the size of the text on the Monitor. Textscale can be between 0.5 and 5.0, with increments of 0.5&lt;br /&gt;
|-&lt;br /&gt;
|''[[term.setTextColor|monitor.setTextColor]]([[colors (API)#colors|color]])''&lt;br /&gt;
|Sets the text-color of the [[Advanced Monitor]]. Available only to [[Advanced Monitor|Advanced Monitors]]&lt;br /&gt;
|-&lt;br /&gt;
|''[[term.setBackgroundColor|monitor.setBackgroundColor]]([[colors (API)#colors|color]])''&lt;br /&gt;
|Sets the background-color of the [[Advanced Monitor]]. Available only to [[Advanced Monitor|Advanced Monitors]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Blocks]][[Category:Peripherals]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=User:Immibis/Sandbox&amp;diff=4901</id>
		<title>User:Immibis/Sandbox</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=User:Immibis/Sandbox&amp;diff=4901"/>
				<updated>2013-01-07T18:48:09Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%; border: solid 1px black; margin: 2px; border-spacing: 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;font-weight: bold; font-size: large; padding-bottom: .3em; border-bottom: solid #C9C9C9 1px; background: #DBE5FF; line-height:28px;&amp;quot;&amp;gt;[[File:Grid_Redstone.png|24px]]&amp;amp;nbsp;&amp;amp;nbsp;Function {{{name}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;padding: .4em; padding-bottom: .8em;&amp;quot;&amp;gt;{{{desc|No description provided.}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; border-right: solid #C9C9C9 1px; padding: .4em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Syntax&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; border-color: #C9C9C9; padding: .4em; padding-left: .8em;&amp;quot;&amp;gt;{{{name}}}({{{args|}}})&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid #C9C9C9 1px; padding: .4em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Returns&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: #C9C9C9; padding: .4em; padding-left: .8em;&amp;quot;&amp;gt;{{{returns|[[nil]]}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid #C9C9C9 1px; padding: .4em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Part of&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: #C9C9C9; padding: .4em; padding-left: .8em;&amp;quot;&amp;gt;[[{{{addon|ComputerCraft}}}]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid #C9C9C9 1px; padding: .4em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;API&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: #C9C9C9; padding: .4em; padding-left: .8em;&amp;quot;&amp;gt;{{#if: {{{api}}} | [[{{{api}}} (API)|{{{api}}}]] | none }}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;{{#if:{{{examples|}}}|&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span class=&amp;quot;mw-headline&amp;quot;&amp;gt;Examples&amp;lt;/span&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{{examples|}}}&lt;br /&gt;
|}}{{#if:{{{notes|}}}|&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span class=&amp;quot;mw-headline&amp;quot;&amp;gt;Additional Notes&amp;lt;/span&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{{notes}}}&lt;br /&gt;
|}} test&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== Wiki code ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{Function&lt;br /&gt;
 |name=redstone.setOutput&lt;br /&gt;
 |args=[[string]] side, [[boolean]] value&lt;br /&gt;
 |api=redstone&lt;br /&gt;
 |returns=[[nil]]&lt;br /&gt;
 |addon=ComputerCraft&lt;br /&gt;
 |desc=Sets a redstone output&lt;br /&gt;
 |examples=Examples go here (use [[Template:Example]])&lt;br /&gt;
 |notes=&lt;br /&gt;
 * Note 1&lt;br /&gt;
 * Note 2&lt;br /&gt;
 }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that ''args'', ''returns'', ''addon'', ''examples'' and ''notes'' are optional.&lt;br /&gt;
&lt;br /&gt;
== Result ==&lt;br /&gt;
{{:User:Immibis/Sandbox&lt;br /&gt;
|name=redstone.setOutput&lt;br /&gt;
|args=[[string_(type)|string]] side, [[boolean_(type)|boolean]] value&lt;br /&gt;
|api=redstone&lt;br /&gt;
|returns=[[nil]]&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|desc=Sets a redstone output&lt;br /&gt;
|examples=Examples go here (use [[Template:Example]])&lt;br /&gt;
|notes=&lt;br /&gt;
* Note 1&lt;br /&gt;
* Note 2&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=User:Immibis/Sandbox&amp;diff=4900</id>
		<title>User:Immibis/Sandbox</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=User:Immibis/Sandbox&amp;diff=4900"/>
				<updated>2013-01-07T18:47:53Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: Created page with &amp;quot;&amp;lt;includeonly&amp;gt; &amp;lt;table style=&amp;quot;width: 100%; border: solid 1px black; margin: 2px; border-spacing: 0px;&amp;quot;&amp;gt;  &amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;font-weight: bold; font-size: large; padding-...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%; border: solid 1px black; margin: 2px; border-spacing: 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;font-weight: bold; font-size: large; padding-bottom: .3em; border-bottom: solid #C9C9C9 1px; background: #DBE5FF; line-height:28px;&amp;quot;&amp;gt;[[File:Grid_Redstone.png|24px]]&amp;amp;nbsp;&amp;amp;nbsp;Function {{{name}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;padding: .4em; padding-bottom: .8em;&amp;quot;&amp;gt;{{{desc|No description provided.}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; border-right: solid #C9C9C9 1px; padding: .4em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Syntax&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: solid #C9C9C9 1px; border-color: #C9C9C9; padding: .4em; padding-left: .8em;&amp;quot;&amp;gt;{{{name}}}({{{args|}}})&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid #C9C9C9 1px; padding: .4em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Returns&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: #C9C9C9; padding: .4em; padding-left: .8em;&amp;quot;&amp;gt;{{{returns|[[nil]]}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid #C9C9C9 1px; padding: .4em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Part of&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: #C9C9C9; padding: .4em; padding-left: .8em;&amp;quot;&amp;gt;[[{{{addon|ComputerCraft}}}]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid #C9C9C9 1px; padding: .4em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;API&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: #C9C9C9; padding: .4em; padding-left: .8em;&amp;quot;&amp;gt;{{#if: {{{api}}} | [[{{{api}}} (API)|{{{api}}}]] | none }}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;{{#if:{{{examples|}}}|&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span class=&amp;quot;mw-headline&amp;quot;&amp;gt;Examples&amp;lt;/span&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{{examples|}}}&lt;br /&gt;
|}}{{#if:{{{notes|}}}|&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span class=&amp;quot;mw-headline&amp;quot;&amp;gt;Additional Notes&amp;lt;/span&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{{notes}}}&lt;br /&gt;
|}} test&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== Wiki code ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{Function&lt;br /&gt;
 |name=redstone.setOutput&lt;br /&gt;
 |args=[[string]] side, [[boolean]] value&lt;br /&gt;
 |api=redstone&lt;br /&gt;
 |returns=[[nil]]&lt;br /&gt;
 |addon=ComputerCraft&lt;br /&gt;
 |desc=Sets a redstone output&lt;br /&gt;
 |examples=Examples go here (use [[Template:Example]])&lt;br /&gt;
 |notes=&lt;br /&gt;
 * Note 1&lt;br /&gt;
 * Note 2&lt;br /&gt;
 }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that ''args'', ''returns'', ''addon'', ''examples'' and ''notes'' are optional.&lt;br /&gt;
&lt;br /&gt;
== Result ==&lt;br /&gt;
{{User:Immibis/Sandbox&lt;br /&gt;
|name=redstone.setOutput&lt;br /&gt;
|args=[[string_(type)|string]] side, [[boolean_(type)|boolean]] value&lt;br /&gt;
|api=redstone&lt;br /&gt;
|returns=[[nil]]&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|desc=Sets a redstone output&lt;br /&gt;
|examples=Examples go here (use [[Template:Example]])&lt;br /&gt;
|notes=&lt;br /&gt;
* Note 1&lt;br /&gt;
* Note 2&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Os.pullEvent&amp;diff=4898</id>
		<title>Os.pullEvent</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Os.pullEvent&amp;diff=4898"/>
				<updated>2013-01-07T17:08:01Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: Expanded/rewrote &amp;quot;how it works&amp;quot; more like a tutorial, moved &amp;quot;common syntax&amp;quot; above &amp;quot;how it works&amp;quot;, added a note about multiple return values, added a note to events that won't normally be seen by programs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{Function&lt;br /&gt;
 |name=os.pullEvent&lt;br /&gt;
 |args=([[string]]) filter&lt;br /&gt;
 |api=OS&lt;br /&gt;
 |returns=(string)event, variable parameters(see table below)&lt;br /&gt;
 |addon=ComputerCraft&lt;br /&gt;
 |desc=Waits (yields) until an event occurs&lt;br /&gt;
 |examples=&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=The program requires to wait for a keypress to do something:&lt;br /&gt;
|code=[[Function (type)|function]] clear()&lt;br /&gt;
    [[term.clear]]()&lt;br /&gt;
    [[term.setCursorPos]] (1,1)&lt;br /&gt;
 end&lt;br /&gt;
 while true do&lt;br /&gt;
    clear()&lt;br /&gt;
    [[print]] (&amp;quot;Press E to do something.&amp;quot;)&lt;br /&gt;
    local event, param1 = os.pullEvent (&amp;quot;char&amp;quot;) -- limit os.pullEvent to the char event&lt;br /&gt;
    if param1 == &amp;quot;e&amp;quot; then -- if the returned value was 'e'&lt;br /&gt;
        clear()&lt;br /&gt;
        [[write]] (&amp;quot;Name: &amp;quot;)&lt;br /&gt;
        local name = [[read]]()&lt;br /&gt;
        [[print]] (name)&lt;br /&gt;
        break&lt;br /&gt;
    else&lt;br /&gt;
        clear()&lt;br /&gt;
        [[print]] (&amp;quot;Wrong button!&amp;quot;)&lt;br /&gt;
        [[os.sleep|sleep]] (1.5) -- I don't like a whole 2 seconds but 1 second is too short&lt;br /&gt;
    end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Common syntax ===&lt;br /&gt;
&lt;br /&gt;
  event, param1, param2, param3 = os.pullEvent()&lt;br /&gt;
&lt;br /&gt;
Note: This is one of the most commonly used functions that can return multiple values.&lt;br /&gt;
It works like any other function call (such as &amp;quot;input = read()&amp;quot;) except that you can get more than one piece of information back.&lt;br /&gt;
&lt;br /&gt;
== How it works ==&lt;br /&gt;
When os.pullEvent() is called, the computer waits until an event occurs.&lt;br /&gt;
Events can be triggered by several different things, such as a key being pressed or a redstone input changing.&lt;br /&gt;
They are usually triggered by ComputerCraft itself, when it needs to notify the computer that something happened.&lt;br /&gt;
They can also be triggered by peripherals, or by your program calling [[os.queueEvent]].&lt;br /&gt;
&lt;br /&gt;
More complicated input, such as &amp;quot;the user typing a line of text,&amp;quot; does ''not'' correspond to an event.&lt;br /&gt;
[[read]] handles this inside itself by waiting for the user to press a key, then updating the screen, moving the cursor, etc.&lt;br /&gt;
&lt;br /&gt;
Events have a type (which is a string) and 0-5 parameters (which are often but not always strings).&lt;br /&gt;
No built-in events use more than 3 parameters.&lt;br /&gt;
&lt;br /&gt;
When an event occurs, the event type, followed by the parameters, will be returned. If you have:&lt;br /&gt;
&lt;br /&gt;
  event, button, x, y = os.pullEvent()&lt;br /&gt;
&lt;br /&gt;
and the user clicks the mouse at coordinates 5,4 then:&lt;br /&gt;
* event will be set to &amp;quot;mouse_click&amp;quot; (the event type)&lt;br /&gt;
* button will be set to 0 (the first parameter)&lt;br /&gt;
* x will be set to 5 (the second parameter)&lt;br /&gt;
* y will be set to 4 (the third parameter)&lt;br /&gt;
&lt;br /&gt;
Note that in this example, we didn't specify a filter. If you specify a filter, then all events of different types will be ignored.&lt;br /&gt;
If the user inserts a disk, instead of clicking the mouse, then event will be &amp;quot;disk&amp;quot;, button will be the side the disk drive is on, and x and y will be nil.&lt;br /&gt;
&lt;br /&gt;
If we wanted to only wait for mouse clicks we could use:&lt;br /&gt;
&lt;br /&gt;
  event, button, x, y = os.pullEvent(&amp;quot;mouse_click&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
which will ignore any events that are not mouse clicks.&lt;br /&gt;
&lt;br /&gt;
If you assign more variables than necessary, the extra ones will be set to nil.&lt;br /&gt;
If you assign less variables than necessary, the extra parameters will be discarded.&lt;br /&gt;
&lt;br /&gt;
==Event types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Name&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Description&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Parameters&lt;br /&gt;
|-&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! 3&lt;br /&gt;
|-&lt;br /&gt;
![[char (event)|char]]&lt;br /&gt;
|Fired when text is typed on the keyboard&lt;br /&gt;
|(string)the letter typed&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
![[key (event)|key]]&lt;br /&gt;
|Fired when a key is pressed on the keyboard&lt;br /&gt;
|(number)numerical keycode&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
![[timer (event)|timer]]&lt;br /&gt;
|Fired when a timeout started by [[os.startTimer]]() completes&lt;br /&gt;
|(number)Value of the timer as returned by os.startTimer()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
![[alarm (event)|alarm]]&lt;br /&gt;
|Fired when a time passed to [[os.setAlarm]]() is reached&lt;br /&gt;
|(number)Value of the alarm as returned by os.setAlarm()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
![[redstone (event)|redstone]]&lt;br /&gt;
|Fired when the state of any of the redstone inputs change&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
![[terminate (event)|terminate]]&lt;br /&gt;
|Fired when a combination of keys CTRL and T is pressed and held for three seconds.&lt;br /&gt;
You will not normally see this event, as it is handled inside os.pullEvent.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
![[disk (event)|disk]]&lt;br /&gt;
|Fired when a disk is inserted into an adjacent disk drive&lt;br /&gt;
|(string)side&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
![[disk_eject (event)|disk_eject]]&lt;br /&gt;
|Fired when a disk is removed from an adjacent disk drive&lt;br /&gt;
|(string)side&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
![[peripheral (event)|peripheral]]&lt;br /&gt;
|Fired when peripheral is attached&lt;br /&gt;
|(string)side&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
![[peripheral_detach (event)| peripheral_detach]]&lt;br /&gt;
|Fired when peripheral is removed&lt;br /&gt;
|(string)side&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
![[rednet_message (event)|rednet_message]]&lt;br /&gt;
|Fired when a rednet message is received from the [[Rednet_(API)|rednet API]]&lt;br /&gt;
|(number)senderID&lt;br /&gt;
|(string)message&lt;br /&gt;
|(number)distance travelled&lt;br /&gt;
|-&lt;br /&gt;
![[http_success (event)|http_success]]&lt;br /&gt;
|Fired when an attempt to receive text from / post text on a website is successful.&lt;br /&gt;
You will not normally see this event as it is handled inside http.get.&lt;br /&gt;
|(string)url of the site&lt;br /&gt;
|(table)text on the site&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
![[http_failure (event)|http_failure]]&lt;br /&gt;
|Fired when an attempt to receive text from / post text on a website is unsuccessful&lt;br /&gt;
You will not normally see this event as it is handled inside http.get.&lt;br /&gt;
|(string)url of the site&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
![[mouse_click (event)|mouse_click]]&lt;br /&gt;
|Fired when a mouse button is pressed&lt;br /&gt;
|(number)mouse button&lt;br /&gt;
|(number)x coordinate&lt;br /&gt;
|(number)y coordinate&lt;br /&gt;
|-&lt;br /&gt;
![[mouse_scroll (event)|mouse_scroll]]&lt;br /&gt;
|Fired when a mousewheel is scrolled.&lt;br /&gt;
|(number)scroll direction (-1 for up, 1 for down)&lt;br /&gt;
|(number)x coordinate(in screen chars)&lt;br /&gt;
|(number)y coordinate(in screen chars)&lt;br /&gt;
|-&lt;br /&gt;
![[mouse_drag (event)|mouse_drag]]&lt;br /&gt;
|Fired when the mouse is moved after clicking.&lt;br /&gt;
|(number)mouse button&lt;br /&gt;
|(number)x coordinate(in screen chars)&lt;br /&gt;
|(number)y coordinate(in screen chars)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Guides ==&lt;br /&gt;
[http://www.computercraft.info/forums2/index.php?/topic/1516-ospullevent-what-is-it-and-how-is-it-useful/page__view__findpost__p__11156 ''Onionnion's Guide on os.pullEvent()'']&lt;br /&gt;
&lt;br /&gt;
[[Category:Lua_Core_Functions]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Fs.open&amp;diff=4895</id>
		<title>Fs.open</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Fs.open&amp;diff=4895"/>
				<updated>2013-01-03T14:17:56Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=fs.open&lt;br /&gt;
|args=[[string (type)|string]] path, [[string (type)|string]]&lt;br /&gt;
 mode&lt;br /&gt;
|api=fs&lt;br /&gt;
|returns=[[Table_(type)|Table]] the file handle, or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; if the mode was read-only and the file did not exist&lt;br /&gt;
|desc=Opens a file; &amp;lt;var&amp;gt;mode&amp;lt;/var&amp;gt; consists of a first character which is one of &lt;br /&gt;
&amp;quot;r&amp;quot; to open the file read-only, &lt;br /&gt;
&lt;br /&gt;
&amp;quot;w&amp;quot; to open it for writing and remove any existing data, or &lt;br /&gt;
&lt;br /&gt;
&amp;quot;a&amp;quot; to open for writing but keep existing data and append any writes to the end of the file, plus optionally the second character &lt;br /&gt;
&lt;br /&gt;
&amp;quot;b&amp;quot; to open the file for binary access instead of text access &lt;br /&gt;
(text mode will perform end-of-line conversions necessary to move text files between Windows, Linux, and Mac OS systems; binary files should not have these conversions applied as they will be corrupted)&lt;br /&gt;
|examples=&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Creates the file &amp;quot;abcd&amp;quot; and holds a file handle to it&lt;br /&gt;
|code=h = fs.open(&amp;quot;abcd&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== File Handles ==&lt;br /&gt;
&lt;br /&gt;
A file handle allows access to a file. A file handle is a table; the functions within the table are accessed with the dot operator (&amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; the colon operator, as may be more intuitive!). The examples below assume a file has already been opened and the handle stored in the variable &amp;lt;var&amp;gt;h&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Files opened in text read mode ===&lt;br /&gt;
&lt;br /&gt;
A file opened in mode &amp;quot;r&amp;quot; (text read mode) exposes the following functions.&lt;br /&gt;
&lt;br /&gt;
{{Function&lt;br /&gt;
|name=&amp;lt;var&amp;gt;h&amp;lt;/var&amp;gt;.readLine&lt;br /&gt;
|api=fs&lt;br /&gt;
|returns=[[string]] the next line read from the file, with the end-of-line character stripped; or nil if there are no more lines in the file&lt;br /&gt;
|desc=Reads the next line from the file&lt;br /&gt;
}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=&amp;lt;var&amp;gt;h&amp;lt;/var&amp;gt;.readAll&lt;br /&gt;
|api=fs&lt;br /&gt;
|returns=[[string]] the entire rest of the file, with the end-of-line character on the very last line (if present) stripped&lt;br /&gt;
|desc=Reads the rest of the text in the file&lt;br /&gt;
}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=&amp;lt;var&amp;gt;h&amp;lt;/var&amp;gt;.close&lt;br /&gt;
|api=fs&lt;br /&gt;
|desc=Closes the file handle, after which it can no longer be used&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Files opened in text write/append mode ===&lt;br /&gt;
&lt;br /&gt;
A file opened in mode &amp;quot;w&amp;quot; (text write mode) or &amp;quot;a&amp;quot; (text append mode) exposes the following functions:&lt;br /&gt;
&lt;br /&gt;
{{Function&lt;br /&gt;
|name=&amp;lt;var&amp;gt;h&amp;lt;/var&amp;gt;.write&lt;br /&gt;
|args=[[string (type)|string]] data&lt;br /&gt;
|api=fs&lt;br /&gt;
|desc=Writes a string of characters to the file exactly as they appear in the string &amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=&amp;lt;var&amp;gt;h&amp;lt;/var&amp;gt;.writeLine&lt;br /&gt;
|args=[[string (type)|string]] data&lt;br /&gt;
|api=fs&lt;br /&gt;
|desc=Writes a string of characters to the file, then appends an end-of-line character&lt;br /&gt;
}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=&amp;lt;var&amp;gt;h&amp;lt;/var&amp;gt;.close&lt;br /&gt;
|api=fs&lt;br /&gt;
|desc=Closes the file handle, after which it can no longer be used&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Files opened in binary read mode ===&lt;br /&gt;
&lt;br /&gt;
A file opened in mode &amp;quot;rb&amp;quot; (binary read mode) exposes the following functions:&lt;br /&gt;
&lt;br /&gt;
{{Function&lt;br /&gt;
|name=&amp;lt;var&amp;gt;h&amp;lt;/var&amp;gt;.read&lt;br /&gt;
|api=fs&lt;br /&gt;
|returns=[[int (type)|int]] the byte read from the file, or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; if there are no more bytes&lt;br /&gt;
|desc=Reads a single byte from the file and returns it&lt;br /&gt;
}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=&amp;lt;var&amp;gt;h&amp;lt;/var&amp;gt;.close&lt;br /&gt;
|api=fs&lt;br /&gt;
|desc=Closes the file handle, after which it can no longer be used&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Files opened in binary write/append mode ===&lt;br /&gt;
&lt;br /&gt;
A file opened in mode &amp;quot;wb&amp;quot; (binary write mode) or &amp;quot;ab&amp;quot; (binary append mode) exposes the following functions:&lt;br /&gt;
&lt;br /&gt;
{{Function&lt;br /&gt;
|name=&amp;lt;var&amp;gt;h&amp;lt;/var&amp;gt;.write&lt;br /&gt;
|args=[[int (type)|int]] byte&lt;br /&gt;
|api=fs&lt;br /&gt;
|desc=Writes a single byte into the file&lt;br /&gt;
}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=&amp;lt;var&amp;gt;h&amp;lt;/var&amp;gt;.close&lt;br /&gt;
|api=fs&lt;br /&gt;
|desc=Closes the file handle, after which it can no longer be used&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Lua_Core_Functions]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Download&amp;diff=4698</id>
		<title>Download</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Download&amp;diff=4698"/>
				<updated>2012-12-07T02:05:03Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: Undo revision 4697 by 50.201.57.183 (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== You can download the latest version of ComputerCraft [http://www.minecraftforum.net/topic/892282- here]. ===&lt;br /&gt;
&lt;br /&gt;
==Changelog:==&lt;br /&gt;
&lt;br /&gt;
{{Changelog}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Lists]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=String_(API)&amp;diff=4693</id>
		<title>String (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=String_(API)&amp;diff=4693"/>
				<updated>2012-12-07T00:45:49Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: Undo revision 4692 by 165.30.102.113 (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The string API is a default Lua 5.1 API as defined [http://www.lua.org/manual/5.1/manual.html#5.4 here]. Please list any non-working functions below.&lt;br /&gt;
&lt;br /&gt;
==Non-Working Functions==&lt;br /&gt;
&lt;br /&gt;
===string.gmatch(string, pattern)===&lt;br /&gt;
&lt;br /&gt;
Using any quantifier other than + will cause it to hang if that quantifier applies to the whole pattern and that pattern does not match the whole string.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;abcdef&amp;quot;:gmatch(&amp;quot;%a*&amp;quot;)   -- Works&lt;br /&gt;
&amp;quot;abc=def&amp;quot;:gmatch(&amp;quot;%a*&amp;quot;)   -- Hang&lt;br /&gt;
&amp;quot;abc=def&amp;quot;:gmatch(&amp;quot;%a.*&amp;quot;)  -- Works&lt;br /&gt;
&amp;quot;abc=def&amp;quot;:gmatch(&amp;quot;[%a.]*&amp;quot;)  -- Hang&lt;br /&gt;
&amp;quot;abc=def&amp;quot;:gmatch(&amp;quot;[^=]*&amp;quot;)  -- Hang&lt;br /&gt;
&amp;quot;abc=def&amp;quot;:gmatch(&amp;quot;([^=]*)=?&amp;quot;) -- Works (Note: This produces the same result as the above pattern should)&lt;br /&gt;
&amp;quot;abcdef&amp;quot;:gmatch(&amp;quot;[^=]*&amp;quot;)  -- Works&lt;br /&gt;
&amp;quot;abc=def&amp;quot;:gmatch(&amp;quot;[^=]*=&amp;quot;)  -- Works&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===string.sub / string.find ===&lt;br /&gt;
&lt;br /&gt;
Both string.sub and string.find work on their own, but calling string.find on a string returned by string.sub will return the index of the character in the original string, not the sub string you are referencing.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
local testString = &amp;quot;This is a sample string&amp;quot;;&lt;br /&gt;
local testSubString = string.sub(testString,5);&lt;br /&gt;
&lt;br /&gt;
local indexOfSample = string.find(testSubString,&amp;quot;sample&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
indexOfSample is returned 11 instead of the expected 7&lt;br /&gt;
&lt;br /&gt;
Concatenating a blank string onto the end of the string causes new memory to be allocated and works properly again&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
local testString = &amp;quot;This is a sample string&amp;quot;;&lt;br /&gt;
local testSubString = string.sub(testString,5);&lt;br /&gt;
&lt;br /&gt;
local indexOfSample = string.find(testSubString..&amp;quot;&amp;quot;,&amp;quot;sample&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is also a problem with using string.find on command line arguments, as this returns the index in the full command path instead of the specific argument.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Parallel_(API)&amp;diff=3326</id>
		<title>Parallel (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Parallel_(API)&amp;diff=3326"/>
				<updated>2012-10-06T23:48:58Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Parallel is an API which allows you to multitask.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;200px&amp;quot;|Method name&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;*&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
|[[parallel.waitForAny]]( function1, function2, so on)&lt;br /&gt;
|Runs all the functions at the same time, and stops when any of them returns.&lt;br /&gt;
|-&lt;br /&gt;
|[[parallel.waitForAll]]( function1, function2, so on)&lt;br /&gt;
|Runs all the functions at the same time, and stops when all of them have returned.&lt;br /&gt;
|}&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Turtle.back&amp;diff=720</id>
		<title>Turtle.back</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Turtle.back&amp;diff=720"/>
				<updated>2012-03-02T09:03:12Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: Created page with &amp;quot;{{lowercase}} {{Function |name=turtle.back |args= |api=turtle |returns=boolean whether the turtle succeeded in moving backwards |addon=ComputerCraft |desc=Attempts to move...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=turtle.back&lt;br /&gt;
|args=&lt;br /&gt;
|api=turtle&lt;br /&gt;
|returns=[[boolean]] whether the turtle succeeded in moving backwards&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|desc=Attempts to move the turtle backwards.&lt;br /&gt;
|examples=&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Moves the turtle backwards&lt;br /&gt;
|code=print(turtle.back())&lt;br /&gt;
|output=true if the turtle could move backwards, false if there was something in the way&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Template:Function&amp;diff=719</id>
		<title>Template:Function</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Template:Function&amp;diff=719"/>
				<updated>2012-03-02T09:02:01Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: fixed typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 70%; border: solid 2px black; margin: 2px; padding: .3em; border-spacing: 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;font-weight: bold; font-size: large; padding-bottom: .3em; border-bottom: solid black 1px;&amp;quot;&amp;gt;Function {{{name}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Syntax&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;{{{name}}}({{{args|}}})&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Returns&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;{{{returns|[[nil]]}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Part of&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;[[{{{addon|ComputerCraft}}}]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;API&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;[[{{{api}}} (API)|{{{api}}}]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Description&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;{{{desc|No description provided.}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
{{{examples|There are no examples for this function.}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{{notes|}}}|&lt;br /&gt;
== Additional Notes ==&lt;br /&gt;
{{{notes}}}&lt;br /&gt;
|}}&lt;br /&gt;
[[Category:{{{category|Methods}}}]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== Wiki code ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{Function&lt;br /&gt;
 |name=redstone.setOutput&lt;br /&gt;
 |args=[[string]] side, [[boolean]] value&lt;br /&gt;
 |api=redstone&lt;br /&gt;
 |returns=[[nil]]&lt;br /&gt;
 |addon=ComputerCraft&lt;br /&gt;
 |desc=Sets a redstone output&lt;br /&gt;
 |examples=Examples go here&lt;br /&gt;
 |notes=&lt;br /&gt;
 * Note 1&lt;br /&gt;
 * Note 2&lt;br /&gt;
 }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that ''returns'', ''addon'', ''examples'' and ''notes'' are optional.&lt;br /&gt;
&lt;br /&gt;
== Result ==&lt;br /&gt;
{{Function&lt;br /&gt;
|name=redstone.setOutput&lt;br /&gt;
|args=[[string]] side, [[boolean]] value&lt;br /&gt;
|api=redstone&lt;br /&gt;
|returns=[[nil]]&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|desc=Sets a redstone output&lt;br /&gt;
|examples=Examples go here&lt;br /&gt;
|notes=&lt;br /&gt;
* Note 1&lt;br /&gt;
* Note 2&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Template:Function&amp;diff=718</id>
		<title>Template:Function</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Template:Function&amp;diff=718"/>
				<updated>2012-03-02T09:01:18Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: moved description field&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 70%; border: solid 2px black; margin: 2px; padding: .3em; border-spacing: 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;font-weight: bold; font-size: large; padding-bottom: .3em; border-bottom: solid black 1px;&amp;quot;&amp;gt;Function {{{name}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Syntax&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;{{{name}}}({{{args|}}})&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Returns&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;{{{returns|[[nil]]}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Part of&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;[[{{{addon|ComputerCraft}}}]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;API&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;[[{{{api}}} (API)|{{{api}}}]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Description&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;{{desc|No description provided.}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
{{{examples|There are no examples for this function.}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{{notes|}}}|&lt;br /&gt;
== Additional Notes ==&lt;br /&gt;
{{{notes}}}&lt;br /&gt;
|}}&lt;br /&gt;
[[Category:{{{category|Methods}}}]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== Wiki code ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{Function&lt;br /&gt;
 |name=redstone.setOutput&lt;br /&gt;
 |args=[[string]] side, [[boolean]] value&lt;br /&gt;
 |api=redstone&lt;br /&gt;
 |returns=[[nil]]&lt;br /&gt;
 |addon=ComputerCraft&lt;br /&gt;
 |desc=Sets a redstone output&lt;br /&gt;
 |examples=Examples go here&lt;br /&gt;
 |notes=&lt;br /&gt;
 * Note 1&lt;br /&gt;
 * Note 2&lt;br /&gt;
 }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that ''returns'', ''addon'', ''examples'' and ''notes'' are optional.&lt;br /&gt;
&lt;br /&gt;
== Result ==&lt;br /&gt;
{{Function&lt;br /&gt;
|name=redstone.setOutput&lt;br /&gt;
|args=[[string]] side, [[boolean]] value&lt;br /&gt;
|api=redstone&lt;br /&gt;
|returns=[[nil]]&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|desc=Sets a redstone output&lt;br /&gt;
|examples=Examples go here&lt;br /&gt;
|notes=&lt;br /&gt;
* Note 1&lt;br /&gt;
* Note 2&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Template:Function&amp;diff=717</id>
		<title>Template:Function</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Template:Function&amp;diff=717"/>
				<updated>2012-03-02T08:58:19Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: added description field&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 70%; border: solid 2px black; margin: 2px; padding: .3em; border-spacing: 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;font-weight: bold; font-size: large; padding-bottom: .3em; border-bottom: solid black 1px;&amp;quot;&amp;gt;Function {{{name}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Syntax&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;{{{name}}}({{{args|}}})&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Returns&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;{{{returns|[[nil]]}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #E8E8E8;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;Part of&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;[[{{{addon|ComputerCraft}}}]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background-color: #FFFFFF;&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-right: solid black 1px; padding: .2em; width: 10%; font-weight: bold;&amp;quot;&amp;gt;API&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-color: black; padding: .2em; padding-left: .4em;&amp;quot;&amp;gt;[[{{{api}}} (API)|{{{api}}}]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{{desc|}}}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
{{{examples|There are no examples for this function.}}}&lt;br /&gt;
&lt;br /&gt;
{{#if:{{{notes|}}}|&lt;br /&gt;
== Additional Notes ==&lt;br /&gt;
{{{notes}}}&lt;br /&gt;
|}}&lt;br /&gt;
[[Category:{{{category|Methods}}}]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== Wiki code ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{Function&lt;br /&gt;
 |name=redstone.setOutput&lt;br /&gt;
 |args=[[string]] side, [[boolean]] value&lt;br /&gt;
 |api=redstone&lt;br /&gt;
 |returns=[[nil]]&lt;br /&gt;
 |addon=ComputerCraft&lt;br /&gt;
 |desc=Sets a redstone output&lt;br /&gt;
 |examples=Examples go here&lt;br /&gt;
 |notes=&lt;br /&gt;
 * Note 1&lt;br /&gt;
 * Note 2&lt;br /&gt;
 }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that ''returns'', ''addon'', ''examples'' and ''notes'' are optional.&lt;br /&gt;
&lt;br /&gt;
== Result ==&lt;br /&gt;
{{Function&lt;br /&gt;
|name=redstone.setOutput&lt;br /&gt;
|args=[[string]] side, [[boolean]] value&lt;br /&gt;
|api=redstone&lt;br /&gt;
|returns=[[nil]]&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|desc=Sets a redstone output&lt;br /&gt;
|examples=Examples go here&lt;br /&gt;
|notes=&lt;br /&gt;
* Note 1&lt;br /&gt;
* Note 2&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=User_talk:Immibis&amp;diff=716</id>
		<title>User talk:Immibis</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=User_talk:Immibis&amp;diff=716"/>
				<updated>2012-03-02T08:55:04Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the wiki. I see you've found templates are all sorts of weirded out. :P {{User:Scarfacial/Signature|03:42 - 26 February 2012}}&lt;br /&gt;
:Lol. As it turns out, it was because I thought parser functions were enabled when they weren't, and was using the wrong syntax for them, and then had all sorts of problems when every #if acted as if it was true. [[User:Immibis|Immibis]] 10:11, 28 February 2012 (UTC)&lt;br /&gt;
::Yeah. No clue how you fixed them (I assume it was you from your summary comments :P), but thanks :3 {{User:Scarfacial/Signature|17:22 - 28 February 2012}}&lt;br /&gt;
:::I got Casper to enable them, in IRC. That's how. [[User:Immibis|Immibis]] 08:55, 2 March 2012 (UTC)&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=User_talk:Immibis&amp;diff=700</id>
		<title>User talk:Immibis</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=User_talk:Immibis&amp;diff=700"/>
				<updated>2012-02-28T10:11:55Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the wiki. I see you've found templates are all sorts of weirded out. :P {{User:Scarfacial/Signature|03:42 - 26 February 2012}}&lt;br /&gt;
:Lol. As it turns out, it was because I thought parser functions were enabled when they weren't, and was using the wrong syntax for them, and then had all sorts of problems when every #if acted as if it was true. [[User:Immibis|Immibis]] 10:11, 28 February 2012 (UTC)&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Fs.list&amp;diff=661</id>
		<title>Fs.list</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Fs.list&amp;diff=661"/>
				<updated>2012-02-26T21:30:05Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Function&lt;br /&gt;
|name=fs.list&lt;br /&gt;
|args=[[string (type)|string]] path&lt;br /&gt;
|api=fs&lt;br /&gt;
|returns=[[table (type)|table]] list of files and folders in that path&lt;br /&gt;
|examples=&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Displays a list of all files and folders in the root directory of a computer&lt;br /&gt;
|code=for k,v in ipairs(fs.list(&amp;quot;/&amp;quot;)) do&lt;br /&gt;
  print(v)&lt;br /&gt;
 end&lt;br /&gt;
|output=A list of all files and folders in /&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Fs.list&amp;diff=660</id>
		<title>Fs.list</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Fs.list&amp;diff=660"/>
				<updated>2012-02-26T21:29:28Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: Created page with &amp;quot;{{Function |name=fs.list |args=string path |api=fs |examples= {{Example |desc=Displays a list of all files and folders in the root directory of a computer |c...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Function&lt;br /&gt;
|name=fs.list&lt;br /&gt;
|args=[[string (type)|string]] path&lt;br /&gt;
|api=fs&lt;br /&gt;
|examples=&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Displays a list of all files and folders in the root directory of a computer&lt;br /&gt;
|code=for k,v in ipairs(fs.list(&amp;quot;/&amp;quot;)) do&lt;br /&gt;
  print(v)&lt;br /&gt;
 end&lt;br /&gt;
|output=A list of all files and folders in /&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Fs_(API)&amp;diff=659</id>
		<title>Fs (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Fs_(API)&amp;diff=659"/>
				<updated>2012-02-26T21:26:59Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The FS API allows you to mess around with the filesystem.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;200px&amp;quot;|Method name&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;*&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
|[[fs.list]]( path )&lt;br /&gt;
|&amp;lt;no description given&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[fs.exists]]( path )&lt;br /&gt;
|Checks if the given path exists&lt;br /&gt;
|-&lt;br /&gt;
|[[fs.isDir]]( path )&lt;br /&gt;
|Checks if the given path is a directory.&lt;br /&gt;
|-&lt;br /&gt;
|[[fs.isReadOnly]]( path )&lt;br /&gt;
|Checks if you can only read to a directory.&lt;br /&gt;
|-&lt;br /&gt;
|[[fs.getName]]( path )&lt;br /&gt;
|&amp;lt;no description given&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[fs.getDrive]]( path )&lt;br /&gt;
|&amp;lt;no description given&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[fs.makeDir]]( path )&lt;br /&gt;
|Makes a directory.&lt;br /&gt;
|-&lt;br /&gt;
|[[fs.move]]( path, path )&lt;br /&gt;
|Moves path 1 to path 2.&lt;br /&gt;
|-&lt;br /&gt;
|[[fs.copy]]( path, path )&lt;br /&gt;
|Copies path 1 to path 2.&lt;br /&gt;
|-&lt;br /&gt;
|[[fs.delete]]( path )&lt;br /&gt;
|Deletes the given path.&lt;br /&gt;
|-&lt;br /&gt;
|[[fs.combine]]( path, localpath )&lt;br /&gt;
|Adds the given path and the local path together to make a new path. Like if localpath is C\ and path is programs\, it will make C\programs\ and return it.&lt;br /&gt;
|-&lt;br /&gt;
|[[fs.open]]( path, mode )&lt;br /&gt;
|Opens the given path. Modes: &amp;quot;r&amp;quot;, &amp;quot;w&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;rb&amp;quot;, &amp;quot;wb&amp;quot;, &amp;quot;ab&amp;quot;. Meaning: &amp;lt;no description given&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Color_(API)&amp;diff=658</id>
		<title>Color (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Color_(API)&amp;diff=658"/>
				<updated>2012-02-26T21:25:33Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: added function links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Colors API allows you to mess with colors. For the British just replace 'color' with 'colour' and it will use the other API, colours, which is just a British version.&lt;br /&gt;
&lt;br /&gt;
Its functions are:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;200px&amp;quot;|Method name&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;*&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
|[[colors.combine]]( color1, color2, color3, so on)&lt;br /&gt;
|combines the colors&lt;br /&gt;
|-&lt;br /&gt;
|[[colors.subtract]]( colors, color1, color2, so on)&lt;br /&gt;
|subtracts the given colors&lt;br /&gt;
|-&lt;br /&gt;
|[[colors.test]]( colors, color )&lt;br /&gt;
|&amp;lt;no description given&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Color constants include, in ascending bit order:&lt;br /&gt;
&lt;br /&gt;
* colors.white&lt;br /&gt;
* colors.orange&lt;br /&gt;
* colors.magenta&lt;br /&gt;
* colors.lightBlue&lt;br /&gt;
* colors.yellow &lt;br /&gt;
* colors.lime&lt;br /&gt;
* colors.pink&lt;br /&gt;
* colors.gray&lt;br /&gt;
* colors.lightGray&lt;br /&gt;
* colors.cyan&lt;br /&gt;
* colors.purple&lt;br /&gt;
* colors.blue&lt;br /&gt;
* colors.brown&lt;br /&gt;
* colors.green&lt;br /&gt;
* colors.red&lt;br /&gt;
* colors.black&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Bit_(API)&amp;diff=657</id>
		<title>Bit (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Bit_(API)&amp;diff=657"/>
				<updated>2012-02-26T21:24:33Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: added function links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Bit API is for manipulating bits of variables.&lt;br /&gt;
&lt;br /&gt;
A list of functions:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;200px&amp;quot;|Method name&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;*&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
|[[bit.tobits]](n)&lt;br /&gt;
|&amp;lt;no description given&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[bit.blshift]](n, bits)&lt;br /&gt;
|&amp;lt;no description given&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[bit.brshift]](n, bits)&lt;br /&gt;
|&amp;lt;no description given&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[bit.bxor]](m, n)&lt;br /&gt;
|&amp;lt;no description given&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[bit.bor]](m, n)&lt;br /&gt;
|&amp;lt;no description given&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[bit.band]](m, n)&lt;br /&gt;
|&amp;lt;no description given&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[bit.bnot]](n)&lt;br /&gt;
|&amp;lt;no description given&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[bit.tonumb]](bit_tbl)&lt;br /&gt;
|&amp;lt;no description given&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Turtle_(API)&amp;diff=655</id>
		<title>Turtle (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Turtle_(API)&amp;diff=655"/>
				<updated>2012-02-26T21:23:05Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: add function links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Turtle API is used to Work with your Turtles.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;200px&amp;quot;|Method name&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;*&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.forward]]()&lt;br /&gt;
|Let the Turtle move forward&lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.back]]()&lt;br /&gt;
|Let the Turtle move back&lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.up]]()&lt;br /&gt;
|Let the Turtle move up&lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.down]]()&lt;br /&gt;
|Let the Turtle move down &lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.turnLeft]]()&lt;br /&gt;
|The Turtle turns left&lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.turnRight]]()&lt;br /&gt;
|The Turtle turns right&lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.select]]( slotNum )&lt;br /&gt;
|The Turtle selects the given Slot (1 is top left, 9 is bottom right)&lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.getItemCount]]( slotNum )&lt;br /&gt;
|Counts how many items are in the given Slot&lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.getItemSpace]]( slotNum )&lt;br /&gt;
|Counts how many items you need to fill the stack in the given Slot&lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.dig]]()&lt;br /&gt;
|Breaks the Block in front&lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.digUp]]()&lt;br /&gt;
|Breaks the Block above&lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.digDown]]()&lt;br /&gt;
|Breaks the Block below&lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.place]]()&lt;br /&gt;
|Places a Block of the selected Slot in front&lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.placeUp]]()&lt;br /&gt;
|Places a Block of the selected Slot above&lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.placeDown]]()&lt;br /&gt;
|Places a Block of the selected Slot below&lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.detect]]()&lt;br /&gt;
|Detects if there is a Block in front&lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.detectUp]]()&lt;br /&gt;
|Detects if there is a Block above&lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.detectDown]]()&lt;br /&gt;
|Detects if there is a Block below&lt;br /&gt;
|-&lt;br /&gt;
|[[turtle.drop]]()&lt;br /&gt;
|Drops everything of the selected Slot&lt;br /&gt;
|}&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Redstone.getBundledInput&amp;diff=594</id>
		<title>Redstone.getBundledInput</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Redstone.getBundledInput&amp;diff=594"/>
				<updated>2012-02-26T04:19:46Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Function&lt;br /&gt;
|name=redstone.getBundledInput&lt;br /&gt;
|args=[[string]] side&lt;br /&gt;
|api=redstone&lt;br /&gt;
|returns=[[colors (type)|colors]] the colours that are activated on that side&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|examples=&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Checks whether the blue part of the back input is active&lt;br /&gt;
|code=print(colors.test(redstone.getBundledInput(&amp;quot;back&amp;quot;), colors.blue))&lt;br /&gt;
|output=true if the blue part of the back input is active, otherwise false&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Redstone.getBundledInput&amp;diff=593</id>
		<title>Redstone.getBundledInput</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Redstone.getBundledInput&amp;diff=593"/>
				<updated>2012-02-26T04:19:25Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: Created page with &amp;quot;{{Function |name=redstone.getBundledInput |args=string side |api=redstone |returns=colors the colours that are activated on that side |addon=ComputerCraft |examples= {...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Function&lt;br /&gt;
|name=redstone.getBundledInput&lt;br /&gt;
|args=[[string]] side&lt;br /&gt;
|api=redstone&lt;br /&gt;
|returns=[[colors]] the colours that are activated on that side&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|examples=&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Checks whether the blue part of the back input is active&lt;br /&gt;
|code=print(colors.test(redstone.getBundledInput(&amp;quot;back&amp;quot;), colors.blue))&lt;br /&gt;
|output=true if the blue part of the back input is active, otherwise false&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Redstone_(API)&amp;diff=591</id>
		<title>Redstone (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Redstone_(API)&amp;diff=591"/>
				<updated>2012-02-26T04:02:02Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: fixed link, added types&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
The redstone API contains methods to control attached RedPower cables/bundled cables&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;200px&amp;quot;|Method name&lt;br /&gt;
!style=&amp;quot;background:#EEE&amp;quot; width=&amp;quot;*&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
|[[redstone.getBundledInput|getBundledInput]]([[string]] side)&lt;br /&gt;
|Returns the state of a redpower wire inside a bundle connected to ''side''&lt;br /&gt;
|-&lt;br /&gt;
|[[redstone.getBundledOutput|getBundledOutput]]([[string]] side)&lt;br /&gt;
|Returns the set of redpower wires inside a bundle on ''side'' that are being driven high by the local console (not those that are driven high by another device on the bundle but not driven high by the local console)&lt;br /&gt;
|-&lt;br /&gt;
|[[redstone.setBundledOutput|setBundledOutput]]([[string]] side, [[int]] colors)&lt;br /&gt;
|Sets one or multiple colored signals in a redpower bundled wire connected to ''Side''&lt;br /&gt;
|-&lt;br /&gt;
|[[redstone.testBundledInput|testBundledInput]]([[string]] side, [[int]] color)&lt;br /&gt;
|Returns true or false whether or not a colored signal is active in a redpower bundled wire connected to ''Side''&lt;br /&gt;
|-&lt;br /&gt;
|[[redstone.getInput|getInput]]([[string]] side)&lt;br /&gt;
|Returns the current redstone signal state on ''side''&lt;br /&gt;
|-&lt;br /&gt;
|[[redstone.getSides|getSides]]()&lt;br /&gt;
|Returns an array of possible sides&lt;br /&gt;
|-&lt;br /&gt;
|[[redstone.setOutput|setOutput]]([[string]] side, [[boolean]] value)&lt;br /&gt;
|Set or reset a redstone signal on ''side'' &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Redstone.getSides&amp;diff=590</id>
		<title>Redstone.getSides</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Redstone.getSides&amp;diff=590"/>
				<updated>2012-02-26T03:59:29Z</updated>
		
		<summary type="html">&lt;p&gt;Immibis: Created page with &amp;quot;{{lowercase}} {{Function |name=redstone.getSides |args= |returns=table list of valid sides |api=redstone |examples= {{Example |desc=Prints all valid sides |code=for k,v in...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{Function&lt;br /&gt;
|name=redstone.getSides&lt;br /&gt;
|args=&lt;br /&gt;
|returns=[[table]] list of valid sides&lt;br /&gt;
|api=redstone&lt;br /&gt;
|examples=&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Prints all valid sides&lt;br /&gt;
|code=for k,v in ipairs(redstone.getSides()) do&lt;br /&gt;
  print(v)&lt;br /&gt;
 end&lt;br /&gt;
|output=A list of all valid sides (top, bottom, left, right, front and back)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Immibis</name></author>	</entry>

	</feed>