<?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=LBPHacker</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=LBPHacker"/>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/Special:Contributions/LBPHacker"/>
		<updated>2026-07-11T10:50:45Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=OS_(API)&amp;diff=6084</id>
		<title>OS (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=OS_(API)&amp;diff=6084"/>
				<updated>2014-01-05T11:29:52Z</updated>
		
		<summary type="html">&lt;p&gt;LBPHacker: os.pullEvenRaw accepts the target-event parameter, just like os.pullEvent.&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]]({{type|string}}/{{type|nil}} target-event)|any&lt;br /&gt;
|Advanced version of pullEvent(). 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. [[#pullEvent|os.pullEventRaw]](target-event) returns the event and 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>LBPHacker</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Modem.isOpen&amp;diff=6083</id>
		<title>Modem.isOpen</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Modem.isOpen&amp;diff=6083"/>
				<updated>2014-01-05T11:22:27Z</updated>
		
		<summary type="html">&lt;p&gt;LBPHacker: Added &amp;quot; |returns={{type|bool}} isOpen &amp;quot; line.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Function&lt;br /&gt;
|name=modem.isOpen&lt;br /&gt;
|args={{type|int}} channel&lt;br /&gt;
|returns={{type|bool}} isOpen&lt;br /&gt;
|api=Modem&lt;br /&gt;
|addon=ComputerCraft&lt;br /&gt;
|desc=Checks whether or not a certain channel is open. &lt;br /&gt;
|examples=&lt;br /&gt;
{{Example&lt;br /&gt;
|desc=Checks whether the computer is listening on this channel. &lt;br /&gt;
|code=modem.isOpen(1)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>LBPHacker</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Computer_(API)&amp;diff=5994</id>
		<title>Computer (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Computer_(API)&amp;diff=5994"/>
				<updated>2013-09-08T13:37:43Z</updated>
		
		<summary type="html">&lt;p&gt;LBPHacker: Stating that computer.getID returns nothing if the observed computer/turtle is not running.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''''computer'' stands for the variable you wrapped the computer to.'''&lt;br /&gt;
''Example:'' computer = peripheral.wrap( &amp;quot;top&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Method name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|computer.turnOn()&lt;br /&gt;
|Turns on the Computer or Turtle.&lt;br /&gt;
|-&lt;br /&gt;
|computer.shutdown()&lt;br /&gt;
|Shuts off the Computer or Turtle.&lt;br /&gt;
|-&lt;br /&gt;
|computer.reboot()&lt;br /&gt;
|Reboots the Computer or Turtle.&lt;br /&gt;
|-&lt;br /&gt;
|computer.getID()&lt;br /&gt;
|Gets the ID of the Computer or Turtle if it is running, otherwise returns nothing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category: Peripheral APIs]]&lt;/div&gt;</summary>
		<author><name>LBPHacker</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Rednet_(API)&amp;diff=5980</id>
		<title>Rednet (API)</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Rednet_(API)&amp;diff=5980"/>
				<updated>2013-09-04T07:40:05Z</updated>
		
		<summary type="html">&lt;p&gt;LBPHacker: Some grammar (like &amp;quot;its&amp;quot; vs. &amp;quot;it's&amp;quot;)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{msgbox&lt;br /&gt;
|title=Please Note&lt;br /&gt;
|text=As of ComputerCraft 1.5, [[Modem_(API)|channels]] have been added, and no longer supports&amp;lt;br&amp;gt;transmitting data through Bundled Cables. However interacting with Bundled Cables is still available via the [[Redstone_(API)|Redstone API]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The Rednet API allows computers to communicate between themselves without using redstone wires. In order to send and receive data, a [[modem]] is required. The data is received immediately after sending it, but only by computers within a certain range. That range depends on the altitude of the sending computer increasing with higher altitudes to a max of 384.&lt;br /&gt;
'''NOTE:''' The distance variable that is sent/received through the Rednet API is based off of the computer location, not the modem location. &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;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;
Rednet (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;[[rednet.open]]({{type|string}} side)&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;Tells the computer that the side can be used for networking.&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;[[rednet.close]]({{type|string}} side)&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;Tells the computer that the side can no longer be used for networking.&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;[[rednet.announce]]()&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;Broadcasts an empty rednet message.&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;[[rednet.send]]({{type|number}} receiverID, {{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;Sends a message to the computer using the opened sides. The receiver ID is the ID (number, not string) of the computer you're sending the message to. ID as nil will do the same as a broadcast. The message must be a string to send across rednet, if you are wanting to send a table see [[textutils.serialize]]&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;[[rednet.broadcast]]({{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;Sends the message to ALL connected and open computers.&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;[[rednet.receive]]({{type|number}} timeout)&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;Waits until it received a rednet message or &amp;lt;var&amp;gt;timeout&amp;lt;/var&amp;gt; has passed. Leave args empty to wait for a message forever.&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;[[rednet.isOpen]]({{type|string}} side)&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 wireless modem is open.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Events==&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; | rednet_message&lt;br /&gt;
|Fired when a rednet message is received (can be used as alternative for rednet.receive())&lt;br /&gt;
|{{type|number}} senderId, {{type|string}} message, {{type|number}} distance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
Before the creation of the in-game wireless networking API, the term &amp;quot;Rednet&amp;quot; referred to a system created by one of the ComputerCraft users based on bundled cables from a popular Minecraft mod - RedPower. It also allowed communication between computers, but the data was transferred slowly - every bit was converted to redstone signal, that lasted about 0,05 seconds. On the release of ComputerCraft 1.3, the system became useless, as the wireless networking was officially implemented to the mod.&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
'''ID Whitelists are useless, and messages sent by Rednet can be viewed by anyone, even if they are not the target computer.'''&lt;br /&gt;
&lt;br /&gt;
Rednet alone is completely insecure. Any messages sent via rednet can actually be sniffed, contrary to popular belief, and people can pretend to be a certain computer and fool rednet easily. &lt;br /&gt;
&lt;br /&gt;
Rednet simply utilizes the Modem API. A user can easily sniff and find out what messages a computer is receiving if he knows its ID. All he has to do is use the [[Modem_(API)|Modem API]] to listen, where the channel to listen on is the target computer's ID. Additionally, a malicious user can 'pretend' to be a certain computer by using the Modem API to send a message to the target computer's ID with the message, but using the ID of the computer to pretend to be for the reply channel parameter. If they do so, the computer receiving the message with rednet will be fooled into thinking it came from a different computer.&lt;br /&gt;
&lt;br /&gt;
When using rednet for anything with security critical, be sure to implement your own security measures.&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
'''Overview''': Rednet functions by having a modem listen on the channel of the computer's ID, and the rednet broadcast channel for messages. It uses the ''replyChannel'' parameter of the modem_message event as the sender computer's ID. It broadcasts by sending a simple modem message on the rednet broadcast channel, and receives by receiving a modem message on the broadcast channel or the channel of its computer's ID. &lt;br /&gt;
&lt;br /&gt;
'''CHANNEL_BROADCAST''': 65535&lt;br /&gt;
&lt;br /&gt;
(local) '''tValidSides''': Contains valid values of strings containing computer sides, used by ''open'' and ''close''&lt;br /&gt;
&lt;br /&gt;
'''rednet.open(sSide)''': Checks if ''sSide'' is a string, a valid side, and a side with a modem on it. Then it opens the modem on ''CHANNEL_BROADCAST'' and ''os.getComputerID()''&lt;br /&gt;
&lt;br /&gt;
'''rednet.close(sSide)''': Checks if ''sSide'' is a string, a valid side, and a side with a modem on it. Then it closes the modem on ''CHANNEL_BROADCAST'' and ''os.getComputerID()''&lt;br /&gt;
&lt;br /&gt;
'''rednet.isOpen(sSide)''': Checks if ''sSide'' is a string, a valid side, and a side with a modem on it. Then it returns true if the modem on ''sSide'' is open on both ''CHANNEL_BROADCAST'' and ''os.getComputerID()''&lt;br /&gt;
&lt;br /&gt;
'''rednet.send(nRecipient, sMessage)''': For each side ''sSide'' in ''rs.getSides()'', it calls ''isOpen(sSide)''. If the result is true, it executes&lt;br /&gt;
 peripheral.call( sSide, &amp;quot;transmit&amp;quot;, nRecipient, os.getComputerID(), sMessage )&lt;br /&gt;
&lt;br /&gt;
'''rednet.broadcast(sMessage)''': Calls ''send(CHANNEL_BROADCAST, sMessage)''&lt;br /&gt;
&lt;br /&gt;
'''rednet.receive(nTimeout)''': If ''nTimeout'' is there, it starts a timer for ''nTimeout'' seconds-stored in ''timer'', and sets ''sFilter'' to nil. Otherwise, ''sFilter'' is set to &amp;quot;rednet_message&amp;quot;. In a loop, &lt;br /&gt;
 local e, p1, p2, p3, p4, p5 = os.pullEvent( sFilter )&lt;br /&gt;
is called. If ''e'' is &amp;quot;rednet_message&amp;quot; then it returns ''p1'', ''p2'', and ''p3'', but if ''e'' is &amp;quot;timer&amp;quot;, and ''p1'' is ''timer'' then it returns nil.&lt;br /&gt;
&lt;br /&gt;
(local) '''bRunning''': false&lt;br /&gt;
&lt;br /&gt;
'''rednet.run()''': If ''bRunning'' is true, then it errors &amp;quot;rednet is already running&amp;quot;. It then sets ''bRunning'' to true to indicate that it is running. Looping while ''bRunning'', it pulls&lt;br /&gt;
 local sEvent, sSide, sChannel, sReplyChannel, sMessage, nDistance = os.pullEventRaw( &amp;quot;modem_message&amp;quot; )&lt;br /&gt;
Then if ''sEvent'' is &amp;quot;modem_message&amp;quot;, ''isOpen(sSide)'' is true, and ''sChannel'' is ''os.getComputerID()'' or it is ''CHANNEL_BROADCAST'', then it queues &lt;br /&gt;
 os.queueEvent( &amp;quot;rednet_message&amp;quot;, sReplyChannel, sMessage, nDistance )&lt;br /&gt;
&lt;br /&gt;
[[Category:APIs]]&lt;/div&gt;</summary>
		<author><name>LBPHacker</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Os.setAlarm&amp;diff=5913</id>
		<title>Os.setAlarm</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Os.setAlarm&amp;diff=5913"/>
				<updated>2013-07-27T03:43:38Z</updated>
		
		<summary type="html">&lt;p&gt;LBPHacker: Replacing os.startAlarm with os.setAlarm in the example.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{Function&lt;br /&gt;
 |name=os.setAlarm&lt;br /&gt;
 |args={{type|number}} time&lt;br /&gt;
 |api=OS&lt;br /&gt;
 |returns={{type|table}} alarmID&lt;br /&gt;
 |addon=ComputerCraft&lt;br /&gt;
 |desc=Adds an alarm which will fire an &amp;quot;alarm&amp;quot; event at the specified Minecraft world time. The returned table acts as a unique ID for the alarm.&lt;br /&gt;
 |examples=&lt;br /&gt;
}}&lt;br /&gt;
== Explanation ==&lt;br /&gt;
([http://www.computercraft.info/forums2/index.php?/topic/5599-ossetalarm/page__view__findpost__p__46168 Forum Post] by jag_e_nummer_ett:)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    --(( Basic format ))--&lt;br /&gt;
    os.setAlarm(time)&lt;br /&gt;
    --(( Will timeout when it's 18 o'clock in the world ))--&lt;br /&gt;
    os.setAlarm(18.00)&lt;br /&gt;
    --(( Will timeout 2 (in-game) hours later ))--&lt;br /&gt;
    os.setAlarm(os.time()+2)&lt;br /&gt;
    --(( Basic event layout ))--&lt;br /&gt;
    local ev,p1 = os.pullEvent(&amp;quot;alarm&amp;quot;)&lt;br /&gt;
    --(( Event output ))--&lt;br /&gt;
    Name: alarm&lt;br /&gt;
    Parameter 1: A table that acts like it's unique ID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
([http://www.computercraft.info/forums2/index.php?/topic/5599-ossetalarm/page__view__findpost__p__46167 Forum Post] by MysticT):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    local alarm = os.setAlarm(5)&lt;br /&gt;
    while true do&lt;br /&gt;
        local evt, arg = os.pullEvent(&amp;quot;alarm&amp;quot;)&lt;br /&gt;
        if arg == alarm then&lt;br /&gt;
            print(&amp;quot;It's 5:00, wake up!&amp;quot;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Lua_Core_Functions]]&lt;/div&gt;</summary>
		<author><name>LBPHacker</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=Talk:Coroutine.yield&amp;diff=4518</id>
		<title>Talk:Coroutine.yield</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=Talk:Coroutine.yield&amp;diff=4518"/>
				<updated>2012-12-03T09:16:21Z</updated>
		
		<summary type="html">&lt;p&gt;LBPHacker: Created page with &amp;quot;So it says 'coroutine.yield(coroutine, var1, var2, ...)' stops the coroutine ''coroutine'', while the Coroutine API page says coroutine.yield() can only stop the running corou...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So it says 'coroutine.yield(coroutine, var1, var2, ...)' stops the coroutine ''coroutine'', while the Coroutine API page says coroutine.yield() can only stop the running coroutine. Anyways, I have one question. Can I yield a coroutine from another coroutine?&lt;br /&gt;
&lt;br /&gt;
LBPHacker&lt;/div&gt;</summary>
		<author><name>LBPHacker</name></author>	</entry>

	</feed>